shop-components 0.3.2 → 0.3.3

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.
@@ -3773,7 +3773,7 @@ vec3 texelOld = texture2D(previousShadowMap, vUv).rgb;
3773
3773
  gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);
3774
3774
  #include <tonemapping_fragment>
3775
3775
  #include <colorspace_fragment>
3776
- }`),pc=Ur({},"void main() { }","void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }");class mc extends fe.CSS2DObject{constructor(e){const t=document.createElement("div");super(t),this._controls=e}}const gc="https://cdn2.seer-group.com/libs/hdr/aristea_wreck_512.hdr",vc="https://cdn2.seer-group.com/libs/fonts.type.json",_c=new nn.Font(vc);class es{constructor(e){var t;this._props=e,this.name="",this._defaults={color:""},this.color="",this.name=this._props.name,this.color=this._defaults.color="#"+((t=e.target.color)==null?void 0:t.getHexString())}change(e){var t;this.color=e,(t=this._props.target.color)==null||t.set(e)}reset(){this.change(this._defaults.color)}}var Hr=(n=>(n[n.DEFAULT=0]="DEFAULT",n[n.CAN_INSTALL=1]="CAN_INSTALL",n))(Hr||{});const ar=.15;d.Object3D.DEFAULT_UP.set(0,0,1);let Je,si=0,ts=0;const yc=()=>{Je=void 0,si=0,ts=0},xc=new d.MeshBasicMaterial({colorWrite:!1});class wc{constructor(e){this.props=e,this.stats=new Rt,this.scene=new d.Scene,this.overlayScene=new d.Scene,this.renderer=new d.WebGLRenderer({antialias:!0,alpha:!0,logarithmicDepthBuffer:!0,powerPreference:"high-performance",preserveDrawingBuffer:!0}),this.css2dRenderer=new fe.CSS2DRenderer,this.mousePos=new d.Vector2,this.mouseCoord=new d.Vector2,this.offset=new d.Vector2,this.size=new d.Vector2,this.amr=new Er({showSizeBox:!0,showController:!0}),this._clock=new d.Clock(!0),this._uiHiddenTime=this._clock.getElapsedTime(),this.camera=new d.PerspectiveCamera(39.6,window.innerWidth/window.innerHeight,.1,1e4),this.d=2,this.orthographicCamera=new d.OrthographicCamera(-this.d*(window.innerWidth/window.innerHeight),this.d*(window.innerWidth/window.innerHeight),this.d,-this.d,.1,1e3),this._axisMoving=!1,this._container=new d.Group,this._raycaster=new d.Raycaster,this._selected=[],this._pointerDownTimeout=0,this._dragging=!1,this.maxSample=1024*2,this.sampleCount=0,this._usePathTracing=!1,this._fpsCache=[],this._fpsCacheMax=20,this._emitter=new ct,this.sound=new Va,this._rafId=null,this._destroyed=!1,this._ground=new d.Mesh(new d.PlaneGeometry(100,100),new d.MeshPhysicalMaterial({color:new d.Color("#eee"),metalness:.4,roughness:.1,clearcoat:1,clearcoatRoughness:.1})),this.light=new d.PointLight(16777215,10,30),this._amrRender=new d.WebGLRenderTarget(1024,1024,{format:d.RGBAFormat,type:d.UnsignedByteType,colorSpace:d.SRGBColorSpace,samples:8}),this._lastTarget=new d.Vector3,this._shadowMode=!1,this.addEventListener=this._emitter.on.bind(this._emitter),this.removeEventListener=this._emitter.on.bind(this._emitter),this._showSlots=!0,this._showSize=!0,this._showControls=!0,this._drag=u=>{this._dragging=!0,this._pointermove(u)},this._dragend=u=>{this._dragging=!1},this._pointermove=u=>{if(this._pointerDownTimeout)return clearTimeout(this._pointerDownTimeout),this._pointerDownTimeout=0;let{top:f,left:p}=this.renderer.domElement.getBoundingClientRect();this.offset.set(p,f),this.mousePos.set(u.clientX-p,u.clientY-f),this.mouseCoord.set((u.clientX-p)/this.size.x*2-1,-((u.clientY-f)/this.size.y)*2+1),this._raycaster.setFromCamera(this.mouseCoord,this.camera)},this._pointerdown=u=>{const f=()=>{let p=[...this._outlinePass.selectedObjects];this._outlinePass.selectedObjects=[],this.amr.slots.forEach(h=>h.selected=!1);const l=this._raycaster.intersectObjects(this.amr.slots,!1)[0];l&&this.amr.slots.forEach(h=>{h.traverse(g=>{g==l.object?p!=null&&p.includes(h)?(p=void 0,h.deviceSelected=!1):(this._outlinePass.selectedObjects=[h],h.deviceSelected=!0):h.deviceSelected=!1})}),this._pointerDownTimeout=0};this._pointerDownTimeout=window.setTimeout(f,200)},this._detectTrackpad=()=>{Je||typeof Je<"u"||(si===0&&(ts=performance.now()),si++,performance.now()-ts>66&&(si>5?Je=!0:Je=!1,Je?this.controls.zoomSpeed=.2:this.controls.zoomSpeed=1,setTimeout(yc,2e3)))},this.debounceForkHeightChange=Wa(()=>{var u;(u=this._progressShadow)==null||u.recalculate()},300),this.focusSlots=u=>{var P;if(this.amr.slots.forEach(R=>{R.focused=!1,R.hide()}),!u.length)if(this._lastTarget.set(0,0,this._lastTarget.z),this.amr.slots.forEach(R=>{R.show()}),this._focusRestoreView){const R=this._focusRestoreView;this._focusRestoreView=void 0;const T=this.camera.position.clone(),C=this.controls.target.clone(),D=R.position.clone(),E=R.target.clone(),F={t:0};let O=500;const H=T.distanceTo(D)+C.distanceTo(E);H>.001&&(O=Math.min(1e3,Math.max(450,H*45))),(P=this._fitAnimation)==null||P.stop(),this._fitAnimation=new It(F).to({t:1},O).easing(ye.Easing.Quadratic.InOut).onStart(()=>{this.controls.enabled=!1}).onUpdate(()=>{const W=F.t;this.camera.position.lerpVectors(T,D,W),this.controls.target.lerpVectors(C,E,W)}).onComplete(()=>{this.controls.enabled=!0,this.camera.up.copy(R.up)}).start();return}else{this.fit();return}this._focusRestoreView={position:this.camera.position.clone(),target:new d.Vector3(0,0,this.controls.target.z),up:this.camera.up.clone()};const f=u.flatMap(R=>{if(R.show(),R.focused=!0,!R.parent)return[];const T=new d.Vector3;return R.parent.getWorldPosition(T),[T]});if(!f.length)return;const p=f.reduce((R,T)=>R.add(T),new d.Vector3).multiplyScalar(1/f.length),r=this.controls.target.clone(),l=this.camera.position.clone().sub(r).normalize();let h=0;for(const R of f){const T=R.clone().sub(p),C=T.dot(l),D=Math.sqrt(Math.max(0,T.lengthSq()-C*C));D>h&&(h=D)}h=h+.4;const g=this.camera.fov*Math.PI/180,_=2*Math.atan(Math.tan(g/2)*this.camera.aspect),m=h/Math.tan(_/2),v=h/Math.tan(g/2),y=Math.max(m,v),x=p.clone(),w=p.clone().add(l.clone().multiplyScalar(y<1?1:y)),b=this.camera.position.clone(),A=r.clone(),S={t:0};let I=500;const M=b.distanceTo(w)+A.distanceTo(x);M>.001&&(I=Math.min(1e3,Math.max(450,M*45))),this._lastTarget=x.clone(),this._fitAnimation=new It(S).to({t:1},I).easing(ye.Easing.Quadratic.InOut).onStart(()=>{this.controls.enabled=!1}).onUpdate(()=>{const R=S.t;this.camera.position.lerpVectors(b,w,R),this.controls.target.lerpVectors(A,x,R)}).onComplete(()=>{this.controls.enabled=!0}).start()},this.fit=()=>{new d.Box3().setFromObject(this._container);const f=this.amr.sizeBox.size.getSize(new d.Vector3),p=f.clone().multiplyScalar(.5),r=new d.Vector3(0,0,p.z);let l=p.clone().sub(r);l.lengthSq()<1e-6&&(l=new d.Vector3(1,0,0));const h=l.clone().normalize(),g=f.clone().multiplyScalar(.5),_=[new d.Vector3(g.x,g.y,g.z),new d.Vector3(g.x,g.y,-g.z),new d.Vector3(g.x,-g.y,g.z),new d.Vector3(g.x,-g.y,-g.z),new d.Vector3(-g.x,g.y,g.z),new d.Vector3(-g.x,g.y,-g.z),new d.Vector3(-g.x,-g.y,g.z),new d.Vector3(-g.x,-g.y,-g.z)];let m=0;for(const E of _){const F=E.dot(h),O=Math.sqrt(Math.max(0,E.lengthSq()-F*F));O>m&&(m=O)}m=m*1.05;const v=this.camera.fov*Math.PI/180,y=2*Math.atan(Math.tan(v/2)*this.camera.aspect),x=m/Math.tan(y/2),w=m/Math.tan(v/2),b=Math.max(x,w),A=p.clone();let S=f.z/3;f.z<f.x&&f.z<f.y&&(S=f.x*.8),f.z>f.x&&f.z>f.y&&(S=0),A.z+=S;const I=l.clone().normalize().multiplyScalar(b<1?1:b).add(A),M=Math.max(f.x*2,5);this.light.position.set(M,0,f.z*2);const P=this.camera.position.clone(),R=this.controls.target.clone(),T={t:0};let C=600;const D=P.distanceTo(I)+R.distanceTo(r);D>.001&&(C=Math.min(800,Math.max(650,D*45))),this._fitAnimation=new It(T).to({t:1},C).easing(ye.Easing.Quadratic.InOut).onStart(()=>{this.controls.enabled=!1}).onUpdate(()=>{const E=T.t;this.camera.position.lerpVectors(P,I,E),this.controls.target.lerpVectors(R,r,E)}).onComplete(()=>{this.controls.enabled=!0,!this.shadowMode&&(this._progressShadow.visible=!0,this._progressShadow.isFinished||this._progressShadow.recalculate())}).start(),this.controls.minDistance=Math.max(.2,Math.min(b*.25,b-.1)),this.controls.maxDistance=b*4},this.resize=()=>{var h;const u=this.renderer.domElement.parentElement;if(!u)return;u.style.display="flex",this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%",this.renderer.domElement.style.flexGrow="1";const f=u.clientWidth,p=u.clientHeight;this.size.set(f,p),this.camera.aspect=f/p,this.camera.updateProjectionMatrix(),this._amrRender.setSize(f,p),this._updateCamera(),this.css2dRenderer.setSize(f,p);const r=this.renderer.getPixelRatio();(h=this.pathTracer)==null||h.updateCamera(),this.sampleCount=0,this.renderer.setSize(f,p),this._composer.setSize(f,p),this._composer.passes.forEach(g=>g.setSize(f,p));const l=this._fxaaPass.material.uniforms;l.resolution.value.x=1/(f*r),l.resolution.value.y=1/(p*r),this._bloomPass&&this._bloomPass.setSize(f,p)},this.ticker=()=>{if(!this._destroyed){if(this.stats.begin(),this.renderer.domElement.dispatchEvent(new CustomEvent("ticker")),this._rafId=requestAnimationFrame(this.ticker),this.renderer.autoClear=!1,this.renderer.clear(),this.usePathTracing){this.hideAmrUI(),this.sampleCount<this.maxSample?this.sampleCount++:this.pathTracer.pausePathTracing=!0,this.pathTracer.renderSample();const u=this.renderer.autoClear;this.renderer.autoClear=!1,this.scene.overrideMaterial=xc,this.renderer.clearDepth(),this.renderer.render(this.scene,this.mainCamera),this.scene.overrideMaterial=null,this.renderer.render(this.overlayScene,this.mainCamera),this.renderer.autoClear=u}else{this._clock.getElapsedTime()-this._uiHiddenTime>.15?this.showControls&&this.amr.controllers.forEach(p=>p.show()):this.amr.controllers.forEach(p=>p.hide());const f=this.stats.fps();this.usePathTracing||(this._fpsCache.length>this._fpsCacheMax&&this._fpsCache.shift(),this._fpsCache.push(f)),this.amr.slots.forEach(p=>{this._dragging?p.getCanInstall()&&p.render(this):p.render(this)}),ye.update(),this.controls.update(),this._progressShadow.update(this.mainCamera),this.css2dRenderer.render(this.scene,this.mainCamera),this.updatePosition(),this.scene.overrideMaterial=null,this.renderer.render(this.scene,this.mainCamera)}this.stats.end()}},this.stats.showPanel(0),this.hideState(),e.fov&&(this.camera.fov=e.fov,this.camera.updateProjectionMatrix()),Tr(lt,this.renderer),this._ground.visible=!1,this.controls=new tn.OrbitControls(this.camera,this.renderer.domElement),this.controls.enablePan=!0,this.controls.rotateSpeed=this.props.isMobile?.6:.5,this.controls.dampingFactor=ar,this.controls.enableDamping=!0,this.controls.maxDistance=10,this.controls.minDistance=1,this.controls.zoomSpeed=this.props.isMobile?.3:Ir()?.2:1,this._cameraPositionUI=new mc(this.controls),this.renderer.setPixelRatio(window.devicePixelRatio||1),this.renderer.autoClear=!0,this.renderer.toneMapping=d.ACESFilmicToneMapping,this.renderer.toneMappingExposure=1.4,this.renderer.outputColorSpace=d.SRGBColorSpace,this.renderer.localClippingEnabled=!0,this.renderer.shadowMap.enabled=!0,this.css2dRenderer.domElement.style.pointerEvents="none",this.css2dRenderer.domElement.style.position="absolute",this.css2dRenderer.domElement.style.top="0px",d.ShaderChunk.tonemapping_pars_fragment=d.ShaderChunk.tonemapping_pars_fragment.replace("vec3 CustomToneMapping( vec3 color ) { return color; }",`
3776
+ }`),pc=Ur({},"void main() { }","void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }");class mc extends fe.CSS2DObject{constructor(e){const t=document.createElement("div");super(t),this._controls=e}}const gc="https://cdn2.seer-group.com/libs/hdr/aristea_wreck_512.hdr",vc="https://cdn2.seer-group.com/libs/fonts.type.json",_c=new nn.Font(vc);class es{constructor(e){var t;this._props=e,this.name="",this._defaults={color:""},this.color="",this.name=this._props.name,this.color=this._defaults.color="#"+((t=e.target.color)==null?void 0:t.getHexString())}change(e){var t;this.color=e,(t=this._props.target.color)==null||t.set(e)}reset(){this.change(this._defaults.color)}}var Hr=(n=>(n[n.DEFAULT=0]="DEFAULT",n[n.CAN_INSTALL=1]="CAN_INSTALL",n))(Hr||{});const ar=.15;d.Object3D.DEFAULT_UP.set(0,0,1);let Je,si=0,ts=0;const yc=()=>{Je=void 0,si=0,ts=0},xc=new d.MeshBasicMaterial({colorWrite:!1});class wc{constructor(e){this.props=e,this.stats=new Rt,this.scene=new d.Scene,this.overlayScene=new d.Scene,this.renderer=new d.WebGLRenderer({antialias:!0,alpha:!0,logarithmicDepthBuffer:!0,powerPreference:"high-performance",preserveDrawingBuffer:!0}),this.css2dRenderer=new fe.CSS2DRenderer,this.mousePos=new d.Vector2,this.mouseCoord=new d.Vector2,this.offset=new d.Vector2,this.size=new d.Vector2,this.amr=new Er({showSizeBox:!0,showController:!0}),this._clock=new d.Clock(!0),this._uiHiddenTime=this._clock.getElapsedTime(),this.camera=new d.PerspectiveCamera(39.6,window.innerWidth/window.innerHeight,.1,1e4),this.d=2,this.orthographicCamera=new d.OrthographicCamera(-this.d*(window.innerWidth/window.innerHeight),this.d*(window.innerWidth/window.innerHeight),this.d,-this.d,.1,1e3),this._axisMoving=!1,this._container=new d.Group,this._raycaster=new d.Raycaster,this._selected=[],this._pointerDownTimeout=0,this._dragging=!1,this.maxSample=1024*2,this.sampleCount=0,this._usePathTracing=!1,this._fpsCache=[],this._fpsCacheMax=20,this._emitter=new ct,this.sound=new Va,this._rafId=null,this._destroyed=!1,this._ground=new d.Mesh(new d.PlaneGeometry(100,100),new d.MeshPhysicalMaterial({color:new d.Color("#eee"),metalness:.4,roughness:.1,clearcoat:1,clearcoatRoughness:.1})),this.light=new d.PointLight(16777215,10,30),this._amrRender=new d.WebGLRenderTarget(1024,1024,{format:d.RGBAFormat,type:d.UnsignedByteType,colorSpace:d.SRGBColorSpace,samples:8}),this._lastTarget=new d.Vector3,this._shadowMode=!1,this.addEventListener=this._emitter.on.bind(this._emitter),this.removeEventListener=this._emitter.on.bind(this._emitter),this._showSlots=!0,this._showSize=!0,this._showControls=!0,this._drag=u=>{this._dragging=!0,this._pointermove(u)},this._dragend=u=>{this._dragging=!1},this._pointermove=u=>{if(this._pointerDownTimeout)return clearTimeout(this._pointerDownTimeout),this._pointerDownTimeout=0;let{top:f,left:p}=this.renderer.domElement.getBoundingClientRect();this.offset.set(p,f),this.mousePos.set(u.clientX-p,u.clientY-f),this.mouseCoord.set((u.clientX-p)/this.size.x*2-1,-((u.clientY-f)/this.size.y)*2+1),this._raycaster.setFromCamera(this.mouseCoord,this.camera)},this._pointerdown=u=>{const f=()=>{let p=[...this._outlinePass.selectedObjects];this._outlinePass.selectedObjects=[],this.amr.slots.forEach(h=>h.selected=!1);const l=this._raycaster.intersectObjects(this.amr.slots,!1)[0];l&&this.amr.slots.forEach(h=>{h.traverse(g=>{g==l.object?p!=null&&p.includes(h)?(p=void 0,h.deviceSelected=!1):(this._outlinePass.selectedObjects=[h],h.deviceSelected=!0):h.deviceSelected=!1})}),this._pointerDownTimeout=0};this._pointerDownTimeout=window.setTimeout(f,200)},this._detectTrackpad=()=>{Je||typeof Je<"u"||(si===0&&(ts=performance.now()),si++,performance.now()-ts>66&&(si>5?Je=!0:Je=!1,Je?this.controls.zoomSpeed=.2:this.controls.zoomSpeed=1,setTimeout(yc,2e3)))},this.debounceForkHeightChange=Wa(()=>{var u;(u=this._progressShadow)==null||u.recalculate()},300),this.focusSlots=u=>{var P;if(this.amr.slots.forEach(R=>{R.focused=!1,R.hide()}),!u.length)if(this._lastTarget.set(0,0,this._lastTarget.z),this.amr.slots.forEach(R=>{R.show()}),this._focusRestoreView){const R=this._focusRestoreView;this._focusRestoreView=void 0;const T=this.camera.position.clone(),C=this.controls.target.clone(),D=R.position.clone(),E=R.target.clone(),F={t:0};let O=500;const H=T.distanceTo(D)+C.distanceTo(E);H>.001&&(O=Math.min(1e3,Math.max(450,H*45))),(P=this._fitAnimation)==null||P.stop(),this._fitAnimation=new It(F).to({t:1},O).easing(ye.Easing.Quadratic.InOut).onStart(()=>{this.controls.enabled=!1}).onUpdate(()=>{const W=F.t;this.camera.position.lerpVectors(T,D,W),this.controls.target.lerpVectors(C,E,W)}).onComplete(()=>{this.controls.enabled=!0,this.camera.up.copy(R.up)}).start();return}else{this.fit();return}this._focusRestoreView={position:this.camera.position.clone(),target:new d.Vector3(0,0,this.controls.target.z),up:this.camera.up.clone()};const f=u.flatMap(R=>{if(R.show(),R.focused=!0,!R.parent)return[];const T=new d.Vector3;return R.parent.getWorldPosition(T),[T]});if(!f.length)return;const p=f.reduce((R,T)=>R.add(T),new d.Vector3).multiplyScalar(1/f.length),r=this.controls.target.clone(),l=this.camera.position.clone().sub(r).normalize();let h=0;for(const R of f){const T=R.clone().sub(p),C=T.dot(l),D=Math.sqrt(Math.max(0,T.lengthSq()-C*C));D>h&&(h=D)}h=h+.4;const g=this.camera.fov*Math.PI/180,_=2*Math.atan(Math.tan(g/2)*this.camera.aspect),m=h/Math.tan(_/2),v=h/Math.tan(g/2),y=Math.max(m,v),x=p.clone(),w=p.clone().add(l.clone().multiplyScalar(y<1?1:y)),b=this.camera.position.clone(),A=r.clone(),S={t:0};let I=500;const M=b.distanceTo(w)+A.distanceTo(x);M>.001&&(I=Math.min(1e3,Math.max(450,M*45))),this._lastTarget=x.clone(),this._fitAnimation=new It(S).to({t:1},I).easing(ye.Easing.Quadratic.InOut).onStart(()=>{this.controls.enabled=!1}).onUpdate(()=>{const R=S.t;this.camera.position.lerpVectors(b,w,R),this.controls.target.lerpVectors(A,x,R)}).onComplete(()=>{this.controls.enabled=!0}).start()},this.fit=()=>{new d.Box3().setFromObject(this._container);const f=this.amr.sizeBox.size.getSize(new d.Vector3),p=f.clone().multiplyScalar(.5),r=new d.Vector3(0,0,p.z);this._lastTarget.copy(r);let l=p.clone().sub(r);l.lengthSq()<1e-6&&(l=new d.Vector3(1,0,0));const h=l.clone().normalize(),g=f.clone().multiplyScalar(.5),_=[new d.Vector3(g.x,g.y,g.z),new d.Vector3(g.x,g.y,-g.z),new d.Vector3(g.x,-g.y,g.z),new d.Vector3(g.x,-g.y,-g.z),new d.Vector3(-g.x,g.y,g.z),new d.Vector3(-g.x,g.y,-g.z),new d.Vector3(-g.x,-g.y,g.z),new d.Vector3(-g.x,-g.y,-g.z)];let m=0;for(const E of _){const F=E.dot(h),O=Math.sqrt(Math.max(0,E.lengthSq()-F*F));O>m&&(m=O)}m=m*1.05;const v=this.camera.fov*Math.PI/180,y=2*Math.atan(Math.tan(v/2)*this.camera.aspect),x=m/Math.tan(y/2),w=m/Math.tan(v/2),b=Math.max(x,w),A=p.clone();let S=f.z/3;f.z<f.x&&f.z<f.y&&(S=f.x*.8),f.z>f.x&&f.z>f.y&&(S=0),A.z+=S;const I=l.clone().normalize().multiplyScalar(b<1?1:b).add(A),M=Math.max(f.x*2,5);this.light.position.set(M,0,f.z*2);const P=this.camera.position.clone(),R=this.controls.target.clone(),T={t:0};let C=600;const D=P.distanceTo(I)+R.distanceTo(r);D>.001&&(C=Math.min(800,Math.max(650,D*45))),this._fitAnimation=new It(T).to({t:1},C).easing(ye.Easing.Quadratic.InOut).onStart(()=>{this.controls.enabled=!1}).onUpdate(()=>{const E=T.t;this.camera.position.lerpVectors(P,I,E),this.controls.target.lerpVectors(R,r,E)}).onComplete(()=>{this.controls.enabled=!0,!this.shadowMode&&(this._progressShadow.visible=!0,this._progressShadow.isFinished||this._progressShadow.recalculate())}).start(),this.controls.minDistance=Math.max(.2,Math.min(b*.25,b-.1)),this.controls.maxDistance=b*4},this.resize=()=>{var h;const u=this.renderer.domElement.parentElement;if(!u)return;u.style.display="flex",this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%",this.renderer.domElement.style.flexGrow="1";const f=u.clientWidth,p=u.clientHeight;this.size.set(f,p),this.camera.aspect=f/p,this.camera.updateProjectionMatrix(),this._amrRender.setSize(f,p),this._updateCamera(),this.css2dRenderer.setSize(f,p);const r=this.renderer.getPixelRatio();(h=this.pathTracer)==null||h.updateCamera(),this.sampleCount=0,this.renderer.setSize(f,p),this._composer.setSize(f,p),this._composer.passes.forEach(g=>g.setSize(f,p));const l=this._fxaaPass.material.uniforms;l.resolution.value.x=1/(f*r),l.resolution.value.y=1/(p*r),this._bloomPass&&this._bloomPass.setSize(f,p)},this.ticker=()=>{if(!this._destroyed){if(this.stats.begin(),this.renderer.domElement.dispatchEvent(new CustomEvent("ticker")),this._rafId=requestAnimationFrame(this.ticker),this.renderer.autoClear=!1,this.renderer.clear(),this.usePathTracing){this.hideAmrUI(),this.sampleCount<this.maxSample?this.sampleCount++:this.pathTracer.pausePathTracing=!0,this.pathTracer.renderSample();const u=this.renderer.autoClear;this.renderer.autoClear=!1,this.scene.overrideMaterial=xc,this.renderer.clearDepth(),this.renderer.render(this.scene,this.mainCamera),this.scene.overrideMaterial=null,this.renderer.render(this.overlayScene,this.mainCamera),this.renderer.autoClear=u}else{this._clock.getElapsedTime()-this._uiHiddenTime>.15?this.showControls&&this.amr.controllers.forEach(p=>p.show()):this.amr.controllers.forEach(p=>p.hide());const f=this.stats.fps();this.usePathTracing||(this._fpsCache.length>this._fpsCacheMax&&this._fpsCache.shift(),this._fpsCache.push(f)),this.amr.slots.forEach(p=>{this._dragging?p.getCanInstall()&&p.render(this):p.render(this)}),ye.update(),this.controls.update(),this._progressShadow.update(this.mainCamera),this.css2dRenderer.render(this.scene,this.mainCamera),this.updatePosition(),this.scene.overrideMaterial=null,this.renderer.render(this.scene,this.mainCamera)}this.stats.end()}},this.stats.showPanel(0),this.hideState(),e.fov&&(this.camera.fov=e.fov,this.camera.updateProjectionMatrix()),Tr(lt,this.renderer),this._ground.visible=!1,this.controls=new tn.OrbitControls(this.camera,this.renderer.domElement),this.controls.enablePan=!0,this.controls.rotateSpeed=this.props.isMobile?.6:.5,this.controls.dampingFactor=ar,this.controls.enableDamping=!0,this.controls.maxDistance=10,this.controls.minDistance=1,this.controls.zoomSpeed=this.props.isMobile?.3:Ir()?.2:1,this._cameraPositionUI=new mc(this.controls),this.renderer.setPixelRatio(window.devicePixelRatio||1),this.renderer.autoClear=!0,this.renderer.toneMapping=d.ACESFilmicToneMapping,this.renderer.toneMappingExposure=1.4,this.renderer.outputColorSpace=d.SRGBColorSpace,this.renderer.localClippingEnabled=!0,this.renderer.shadowMap.enabled=!0,this.css2dRenderer.domElement.style.pointerEvents="none",this.css2dRenderer.domElement.style.position="absolute",this.css2dRenderer.domElement.style.top="0px",d.ShaderChunk.tonemapping_pars_fragment=d.ShaderChunk.tonemapping_pars_fragment.replace("vec3 CustomToneMapping( vec3 color ) { return color; }",`
3777
3777
  float startCompression = 0.8;
3778
3778
  float desaturation = 0.5;
3779
3779
  vec3 CustomToneMapping( vec3 color ) {
@@ -3792,9 +3792,9 @@ vec3 texelOld = texture2D(previousShadowMap, vUv).rgb;
3792
3792
  color *= newPeak * invPeak;
3793
3793
  float g = 1. - 3. / (desaturation * extraBrightness + 3.);
3794
3794
  return mix(color, vec3(1, 1, 1), g);
3795
- }`),this.camera.position.set(10,-10,5),this.camera.lookAt(new d.Vector3);const{tiles:t}=Ha();this.pathTracer=new ta(this.renderer),this.pathTracer.filterGlossyFactor=.6;let i=window.devicePixelRatio;i<2&&(i=2),this.pathTracer.renderScale=this.props.isMobile?1:i,this.pathTracer.bounces=this.props.isMobile?8:10,this.pathTracer.transmissiveBounces=this.props.isMobile?1:3,this.pathTracer.tiles.set(t,t),this.pathTracer.fadeDuration=0;const s=new uc(e.workerUrl),a=typeof navigator<"u"?navigator.hardwareConcurrency:4;s.maxWorkerCount=a,this.pathTracer.setBVHWorker(s),this.orthographicCamera.left=-20,this.orthographicCamera.right=20,this.orthographicCamera.top=-20,this.orthographicCamera.bottom=20,this._lastTarget=this.controls.target.clone();const o=()=>{let u=this._lastTarget.x,f=this._lastTarget.y;this.controls.target.x=u,this.controls.target.y=f};this.controls.addEventListener("change",()=>{var u;this.sampleCount=0,o(),this._uiHiddenTime=this._clock.getElapsedTime(),this.orthographicCamera.position.copy(this.camera.position),this.orthographicCamera.lookAt(this.controls.target),this.usePathTracing&&(this.pathTracer.pausePathTracing=!1,(u=this.pathTracer)==null||u.updateCamera()),this._updateCamera(),!(Math.abs(this.camera.position.x)<.001||Math.abs(this.camera.position.y)<.001)&&(this._axisMoving||(this.mainCamera=this.camera,this.usePathTracing&&this.generateBVH().then()))}),this._mainCamera=this.camera,this._composer=new rn.EffectComposer(this.renderer),this._composer.setPixelRatio(window.devicePixelRatio);const c=new ms.RenderPass(this.scene,this.camera);this._composer.addPass(c),this._composer.addPass(new sn.OutputPass),this._outlinePass=new gs.OutlinePass(new d.Vector2(window.innerWidth,window.innerHeight),this.scene,this.camera),this._outlinePass.visibleEdgeColor.set(26367),this._outlinePass.edgeThickness=.5,this._outlinePass.hiddenEdgeColor.set(26367),this._outlinePass.edgeStrength=3,this._outlinePass.edgeGlow=0,this._composer.addPass(this._outlinePass),this._outlinePassError=new gs.OutlinePass(new d.Vector2(window.innerWidth,window.innerHeight),this.scene,this.camera),this._outlinePassError.visibleEdgeColor.set(16711680),this._outlinePassError.edgeThickness=.5,this._outlinePassError.hiddenEdgeColor.set(16711680),this._outlinePassError.edgeStrength=3,this._outlinePassError.edgeGlow=0,this._composer.addPass(this._outlinePassError),this._bloomPass=new en.UnrealBloomPass(new d.Vector2(window.innerWidth,window.innerHeight),.1,.1,.2),this._bloomPass.enabled=!1,this._bloomPass.renderToScreen=!1,this._composer.addPass(this._bloomPass),this._composer.renderTarget1.texture.colorSpace=d.SRGBColorSpace,this._composer.renderTarget2.texture.colorSpace=d.SRGBColorSpace,this._fxaaPass=new Jr.ShaderPass($r.FXAAShader),this._composer.addPass(this._fxaaPass),this._progressShadow=new fc(this.renderer,this.scene,{size:8,lightCount:e.isMobile?6:12,frames:e.isMobile?80:120,lightRadius:8,ambientWeight:.8}),this._progressShadow.lightOrigin.position.set(3,2.5,6),this._progressShadow.visible=!1,this._container.add(this.amr),this.scene.add(this._container),this.ticker(),this._loadEnv(),this._initEvents(),this.scene.add(this._cameraPositionUI),this._ground.rotateX(-Math.PI/2),this.scene.add(this._ground),(typeof e.useAxisBall!="boolean"||e.useAxisBall)&&(this._controlsGizmo=new hc(this.controls,{size:160,padding:12,offset:e.axisBallOffset||new d.Vector2(10,10),fontSize:17,bubbleSizePrimary:18,bubbleSizeSecondary:14}),this._controlsGizmo.addListener("axis-select-start",()=>{this._lastTarget=this.controls.target.clone(),this._axisMoving=!0,this.mainCamera=this.orthographicCamera,this.usePathTracing&&this.generateBVH().then()}),this._controlsGizmo.addListener("axis-select-end",()=>{this._axisMoving=!1})),this.test=new d.Mesh(new d.PlaneGeometry(2,2),new d.MeshBasicMaterial({map:this._amrRender.texture,opacity:.5,transparent:!0,side:d.DoubleSide})),this.test.position.set(0,1,0),this.test.visible=!1,this.scene.add(this.test)}get usePathTracing(){return this._usePathTracing}_clearAmrContent(){const e=this.renderer.getRenderTarget();this.renderer.setRenderTarget(this._amrRender),this.renderer.setClearColor(0,0),this.renderer.clear(!0,!0,!0),this.renderer.setRenderTarget(e)}get shadowMode(){return this._shadowMode}set shadowMode(e){e?(this._progressShadow.visible=!1,this.amr.bodyOpacity=.2):(this._progressShadow.visible=!0,this.amr.bodyOpacity=1,this._progressShadow.isFinished||this._progressShadow.recalculate().then()),this._shadowMode=e}set usePathTracing(e){this._clearAmrContent(),e?(this.scene.add(this.light),this.renderer.toneMappingExposure=1.8,this.overlayScene.add(this._progressShadow.shadowCatcherMesh),this.amr&&(this.amr.bodyOpacity=1),this.hideAmrUI(),this.pathTracer.renderToCanvas=!0,this.scene.background=null):(this.light.removeFromParent(),this.renderer.toneMappingExposure=1.4,this.scene.add(this._progressShadow.shadowCatcherMesh),this.pathTracer.renderToCanvas=!1,this.amr.logos.forEach(t=>{var i;(i=t.parent)==null||i.add(t.target)}),this.showAmrUI(),this.amr&&this.amr.opacityCache!==void 0?(this.amr.bodyOpacity=this.amr.opacityCache,this.amr.opacityCache=void 0):this.amr&&(this.amr.bodyOpacity=1),this.pathTracer.reset(),this._ground.visible=!1,this.scene.background=this.scene.environment),this._usePathTracing=e,this.controls.dampingFactor=e?1:ar,this.sampleCount=0}get fpsAverage(){return Cr(this._fpsCache)}get mainCamera(){return this._mainCamera}set mainCamera(e){this._mainCamera=e,this._composer.passes.forEach(t=>{t instanceof ms.RenderPass&&(t.camera=e)}),e instanceof d.OrthographicCamera?this.scene.background=null:this.scene.background=this.scene.environment}showState(){this.stats.dom.style.display="block"}hideState(){this.stats.dom.style.display="none"}hideAmrUI(e=!0,t=!0){this.shadowMode||this.amr.slots.forEach(i=>i.hide()),this.amr.sizeBox.hide(e),this.amr.controllers.forEach(i=>i.hide()),t&&this.amr.goods.forEach(i=>i.hide())}showAmrUI(e=!0){this.showSlots&&this.amr.slots.forEach(t=>t.show()),this.showSize&&this.amr.sizeBox.show(e),this.showControls&&this.amr.controllers.forEach(t=>t.show()),this.amr.goods.forEach(t=>t.show())}get showSlots(){return this._showSlots}set showSlots(e){this._showSlots=e,this.amr.slots.forEach(t=>e?t.show():t.hide())}get showSize(){return this._showSize}set showSize(e){this._showSize=e,e?this.amr.sizeBox.show(!0):this.amr.sizeBox.hide(!0)}get showControls(){return this._showControls}set showControls(e){this._showControls=e,this.amr.controllers.forEach(t=>e?t.show():t.hide())}_updateCamera(){const e=this.mainCamera.position.distanceTo(this.controls.target),t=2*Math.tan(this.camera.fov*.5*Math.PI/180)*e,i=this.size.x/this.size.y;this.orthographicCamera.left=-t*i/2,this.orthographicCamera.right=t*i/2,this.orthographicCamera.top=t/2,this.orthographicCamera.bottom=-t/2,this.orthographicCamera.updateProjectionMatrix()}_loadEnv(){new Kr.HDRLoader().load(gc,t=>{t.mapping=d.EquirectangularReflectionMapping,this._usePathTracing||(this.scene.background=t,this.scene.backgroundBlurriness=1,this.scene.backgroundIntensity=1,this.scene.backgroundRotation=new d.Euler(Math.PI/2,0,Math.PI*.98*.8),this.scene.environment=t,this.overlayScene.environment=t,this.scene.environmentRotation=this.scene.backgroundRotation,this.overlayScene.environmentRotation=this.scene.environmentRotation,this.scene.environmentIntensity=1.4,this.overlayScene.environmentIntensity=this.scene.environmentIntensity),this.pathTracer.updateEnvironment()},()=>{},()=>{})}_initEvents(){window.addEventListener("drag",this._drag),window.addEventListener("dragend",this._dragend),document.addEventListener("wheel",this._detectTrackpad),window.addEventListener("pointermove",this._pointermove),this.renderer.domElement.addEventListener("pointerdown",this._pointerdown)}switchCamera(){this.mainCamera=this.mainCamera===this.camera?this.orthographicCamera:this.camera}toCameraTop(){const e=this.camera.position.distanceTo(this.controls.target);this.camera.position.copy(new d.Vector3(0,e+this.controls.target.y,0))}toCameraRight(){const e=this.camera.position.distanceTo(this.controls.target);this.camera.position.copy(new d.Vector3(0,this.controls.target.y,e))}toCameraFace(){const e=this.camera.position.distanceTo(this.controls.target);this.camera.position.copy(new d.Vector3(e,this.controls.target.y,0))}async generateBVH(){this.pathTracer.pausePathTracing=!1,this.amr.slots.forEach(e=>e.hide()),this.amr&&(this.amr.opacityCache=this.amr.bodyOpacity,this.amr.bodyOpacity=1,this.overlayScene.clear(),this.amr.logos.forEach(e=>{const t=new d.Group;e.target.updateMatrixWorld(!0),t.applyMatrix4(e.target.matrixWorld),t.add(e.target),this.overlayScene.add(t)})),this.usePathTracing=!0,this.pathTracer.setScene(this.scene,this.mainCamera)}async download(e=!1){if(e&&!this.usePathTracing){const t=this._amrRender.width,i=this._amrRender.height,s=new Uint8Array(t*i*4);this.renderer.setRenderTarget(this._amrRender),this.renderer.readRenderTargetPixels(this._amrRender,0,0,t,i,s),this.renderer.setRenderTarget(null);const a=document.createElement("canvas");a.width=t,a.height=i;const o=a.getContext("2d"),c=new ImageData(t,i);for(let u=0;u<i;u++)for(let f=0;f<t;f++){const p=((i-u-1)*t+f)*4,r=(u*t+f)*4;c.data[r]=s[p],c.data[r+1]=s[p+1],c.data[r+2]=s[p+2],c.data[r+3]=s[p+3]}return o.putImageData(c,0,0),a.toDataURL("image/png")}else return new Promise((t,i)=>{this._uiHiddenTime=this._clock.getElapsedTime(),this.hideAmrUI();const s=this.scene.background;this.scene.background=null,setTimeout(()=>{const a=this.renderer.domElement.toDataURL("image/png");return this.scene.background=s,t(a)},this.fpsAverage)})}async captureTriViews(e){var o;const t=(e==null?void 0:e.subject)??this._container;(o=this._progressShadow)==null||o.visible;const i=this.scene.background,s=this.showSize;return new Nr({renderer:this.renderer,scene:this.scene,overlayScene:this.overlayScene,subject:t,onBeforeCapture:()=>{this.scene.background=null,this.hideAmrUI(),this.showSize=!1,this.usePathTracing&&(this.usePathTracing=!1),this._progressShadow.visible=!1},onAfterCapture:()=>{this.scene.background=i,this.showAmrUI(),this.showSize=s,this._progressShadow.visible=!0}}).capture(e)}clearAMR(){xe(this.overlayScene),this.amr.clean(),this.usePathTracing=!1}async exportAMR(){const e=this._container.clone(!0);return e.traverse(t=>{t.dispose&&(t.dispose(),t.removeFromParent())}),await Pr.parseAsync(e,{onlyVisible:!0,binary:!0})}async addAMR(e,t=""){this.amr.init(this),await this.amr.load(e,t),this._progressShadow.clear(),this.amr.addEventListener("fork-height-change",this.debounceForkHeightChange),this.amr.addEventListener("shape-key-changed",(i,s)=>{this.pathTracer.reset(),this.sampleCount=0,this.pathTracer.setScene(this.scene,this.camera),this.overlayScene.traverse(a=>{if(!Object.keys(a.morphTargetDictionary||{}).includes(i))return;let o=s;a.userData[`origin_${i}`]&&(o-=a.userData[`origin_${i}`]);const c=a.morphTargetDictionary[i];a.morphTargetInfluences&&(a.morphTargetInfluences[c]=o),a instanceof d.Mesh&&a.geometry.translate(0,0,1e-5)}),this._progressShadow.clear(),this._progressShadow.recalculate()})}select(e){typeof e=="string"||(Array.isArray(e)?this._outlinePass.selectedObjects=[...e]:this._outlinePass.selectedObjects=[e])}appendTo(e){e.append(this.renderer.domElement),e.append(this.stats.dom),e.append(this.css2dRenderer.domElement),this.props.isMobile&&(e.classList.add("is-mobile"),e.style.cssText=`
3795
+ }`),this.camera.position.set(10,-10,5),this.camera.lookAt(new d.Vector3);const{tiles:t}=Ha();this.pathTracer=new ta(this.renderer),this.pathTracer.filterGlossyFactor=.6;let i=window.devicePixelRatio;i<2&&(i=2),this.pathTracer.renderScale=this.props.isMobile?1:i,this.pathTracer.bounces=this.props.isMobile?8:10,this.pathTracer.transmissiveBounces=this.props.isMobile?1:3,this.pathTracer.tiles.set(t,t),this.pathTracer.fadeDuration=0;const s=new uc(e.workerUrl),a=typeof navigator<"u"?navigator.hardwareConcurrency:4;s.maxWorkerCount=a,this.pathTracer.setBVHWorker(s),this.orthographicCamera.left=-20,this.orthographicCamera.right=20,this.orthographicCamera.top=-20,this.orthographicCamera.bottom=20,this._lastTarget=this.controls.target.clone();const o=()=>{let u=this._lastTarget.x,f=this._lastTarget.y;this.controls.target.x=u,this.controls.target.y=f};this.controls.addEventListener("change",()=>{var u;this.sampleCount=0,o(),this._uiHiddenTime=this._clock.getElapsedTime(),this.orthographicCamera.position.copy(this.camera.position),this.orthographicCamera.lookAt(this.controls.target),this.usePathTracing&&(this.pathTracer.pausePathTracing=!1,(u=this.pathTracer)==null||u.updateCamera()),this._updateCamera(),!(Math.abs(this.camera.position.x)<.001||Math.abs(this.camera.position.y)<.001)&&(this._axisMoving||(this.mainCamera=this.camera,this.usePathTracing&&this.generateBVH().then()))}),this._mainCamera=this.camera,this._composer=new rn.EffectComposer(this.renderer),this._composer.setPixelRatio(window.devicePixelRatio);const c=new ms.RenderPass(this.scene,this.camera);this._composer.addPass(c),this._composer.addPass(new sn.OutputPass),this._outlinePass=new gs.OutlinePass(new d.Vector2(window.innerWidth,window.innerHeight),this.scene,this.camera),this._outlinePass.visibleEdgeColor.set(26367),this._outlinePass.edgeThickness=.5,this._outlinePass.hiddenEdgeColor.set(26367),this._outlinePass.edgeStrength=3,this._outlinePass.edgeGlow=0,this._composer.addPass(this._outlinePass),this._outlinePassError=new gs.OutlinePass(new d.Vector2(window.innerWidth,window.innerHeight),this.scene,this.camera),this._outlinePassError.visibleEdgeColor.set(16711680),this._outlinePassError.edgeThickness=.5,this._outlinePassError.hiddenEdgeColor.set(16711680),this._outlinePassError.edgeStrength=3,this._outlinePassError.edgeGlow=0,this._composer.addPass(this._outlinePassError),this._bloomPass=new en.UnrealBloomPass(new d.Vector2(window.innerWidth,window.innerHeight),.1,.1,.2),this._bloomPass.enabled=!1,this._bloomPass.renderToScreen=!1,this._composer.addPass(this._bloomPass),this._composer.renderTarget1.texture.colorSpace=d.SRGBColorSpace,this._composer.renderTarget2.texture.colorSpace=d.SRGBColorSpace,this._fxaaPass=new Jr.ShaderPass($r.FXAAShader),this._composer.addPass(this._fxaaPass),this._progressShadow=new fc(this.renderer,this.scene,{size:8,lightCount:e.isMobile?6:12,frames:e.isMobile?80:120,lightRadius:8,ambientWeight:.8}),this._progressShadow.lightOrigin.position.set(3,2.5,6),this._progressShadow.visible=!1,this._container.add(this.amr),this.scene.add(this._container),this.ticker(),this._loadEnv(),this._initEvents(),this.scene.add(this._cameraPositionUI),this._ground.rotateX(-Math.PI/2),this.scene.add(this._ground),(typeof e.useAxisBall!="boolean"||e.useAxisBall)&&(this._controlsGizmo=new hc(this.controls,{size:160,padding:12,offset:e.axisBallOffset||new d.Vector2(10,10),fontSize:17,bubbleSizePrimary:18,bubbleSizeSecondary:14}),this._controlsGizmo.addListener("axis-select-start",()=>{this._axisMoving=!0,this.mainCamera=this.orthographicCamera,this.usePathTracing&&this.generateBVH().then()}),this._controlsGizmo.addListener("axis-select-end",()=>{this._axisMoving=!1})),this.test=new d.Mesh(new d.PlaneGeometry(2,2),new d.MeshBasicMaterial({map:this._amrRender.texture,opacity:.5,transparent:!0,side:d.DoubleSide})),this.test.position.set(0,1,0),this.test.visible=!1,this.scene.add(this.test)}get usePathTracing(){return this._usePathTracing}_clearAmrContent(){const e=this.renderer.getRenderTarget();this.renderer.setRenderTarget(this._amrRender),this.renderer.setClearColor(0,0),this.renderer.clear(!0,!0,!0),this.renderer.setRenderTarget(e)}get shadowMode(){return this._shadowMode}set shadowMode(e){e?(this._progressShadow.visible=!1,this.amr.bodyOpacity=.2):(this._progressShadow.visible=!0,this.amr.bodyOpacity=1,this._progressShadow.isFinished||this._progressShadow.recalculate().then()),this._shadowMode=e}set usePathTracing(e){this._clearAmrContent(),e?(this.scene.add(this.light),this.renderer.toneMappingExposure=1.8,this.overlayScene.add(this._progressShadow.shadowCatcherMesh),this.amr&&(this.amr.bodyOpacity=1),this.hideAmrUI(),this.pathTracer.renderToCanvas=!0,this.scene.background=null):(this.light.removeFromParent(),this.renderer.toneMappingExposure=1.4,this.scene.add(this._progressShadow.shadowCatcherMesh),this.pathTracer.renderToCanvas=!1,this.amr.logos.forEach(t=>{var i;(i=t.parent)==null||i.add(t.target)}),this.showAmrUI(),this.amr&&this.amr.opacityCache!==void 0?(this.amr.bodyOpacity=this.amr.opacityCache,this.amr.opacityCache=void 0):this.amr&&(this.amr.bodyOpacity=1),this.pathTracer.reset(),this._ground.visible=!1,this.scene.background=this.scene.environment),this._usePathTracing=e,this.controls.dampingFactor=e?1:ar,this.sampleCount=0}get fpsAverage(){return Cr(this._fpsCache)}get mainCamera(){return this._mainCamera}set mainCamera(e){this._mainCamera=e,this._composer.passes.forEach(t=>{t instanceof ms.RenderPass&&(t.camera=e)}),e instanceof d.OrthographicCamera?this.scene.background=null:this.scene.background=this.scene.environment}showState(){this.stats.dom.style.display="block"}hideState(){this.stats.dom.style.display="none"}hideAmrUI(e=!0,t=!0){this.shadowMode||this.amr.slots.forEach(i=>i.hide()),this.amr.sizeBox.hide(e),this.amr.controllers.forEach(i=>i.hide()),t&&this.amr.goods.forEach(i=>i.hide())}showAmrUI(e=!0){this.showSlots&&this.amr.slots.forEach(t=>t.show()),this.showSize&&this.amr.sizeBox.show(e),this.showControls&&this.amr.controllers.forEach(t=>t.show()),this.amr.goods.forEach(t=>t.show())}get showSlots(){return this._showSlots}set showSlots(e){this._showSlots=e,this.amr.slots.forEach(t=>e?t.show():t.hide())}get showSize(){return this._showSize}set showSize(e){this._showSize=e,e?this.amr.sizeBox.show(!0):this.amr.sizeBox.hide(!0)}get showControls(){return this._showControls}set showControls(e){this._showControls=e,this.amr.controllers.forEach(t=>e?t.show():t.hide())}_updateCamera(){const e=this.mainCamera.position.distanceTo(this.controls.target),t=2*Math.tan(this.camera.fov*.5*Math.PI/180)*e,i=this.size.x/this.size.y;this.orthographicCamera.left=-t*i/2,this.orthographicCamera.right=t*i/2,this.orthographicCamera.top=t/2,this.orthographicCamera.bottom=-t/2,this.orthographicCamera.updateProjectionMatrix()}_loadEnv(){new Kr.HDRLoader().load(gc,t=>{t.mapping=d.EquirectangularReflectionMapping,this._usePathTracing||(this.scene.background=t,this.scene.backgroundBlurriness=1,this.scene.backgroundIntensity=1,this.scene.backgroundRotation=new d.Euler(Math.PI/2,0,Math.PI*.98*.8),this.scene.environment=t,this.overlayScene.environment=t,this.scene.environmentRotation=this.scene.backgroundRotation,this.overlayScene.environmentRotation=this.scene.environmentRotation,this.scene.environmentIntensity=1.4,this.overlayScene.environmentIntensity=this.scene.environmentIntensity),this.pathTracer.updateEnvironment()},()=>{},()=>{})}_initEvents(){window.addEventListener("drag",this._drag),window.addEventListener("dragend",this._dragend),document.addEventListener("wheel",this._detectTrackpad),window.addEventListener("pointermove",this._pointermove),this.renderer.domElement.addEventListener("pointerdown",this._pointerdown)}switchCamera(){this.mainCamera=this.mainCamera===this.camera?this.orthographicCamera:this.camera}toCameraTop(){const e=this.camera.position.distanceTo(this.controls.target);this.camera.position.copy(new d.Vector3(0,e+this.controls.target.y,0))}toCameraRight(){const e=this.camera.position.distanceTo(this.controls.target);this.camera.position.copy(new d.Vector3(0,this.controls.target.y,e))}toCameraFace(){const e=this.camera.position.distanceTo(this.controls.target);this.camera.position.copy(new d.Vector3(e,this.controls.target.y,0))}async generateBVH(){this.pathTracer.pausePathTracing=!1,this.amr.slots.forEach(e=>e.hide()),this.amr&&(this.amr.opacityCache=this.amr.bodyOpacity,this.amr.bodyOpacity=1,this.overlayScene.clear(),this.amr.logos.forEach(e=>{const t=new d.Group;e.target.updateMatrixWorld(!0),t.applyMatrix4(e.target.matrixWorld),t.add(e.target),this.overlayScene.add(t)})),this.usePathTracing=!0,this.pathTracer.setScene(this.scene,this.mainCamera)}async download(e=!1){if(e&&!this.usePathTracing){const t=this._amrRender.width,i=this._amrRender.height,s=new Uint8Array(t*i*4);this.renderer.setRenderTarget(this._amrRender),this.renderer.readRenderTargetPixels(this._amrRender,0,0,t,i,s),this.renderer.setRenderTarget(null);const a=document.createElement("canvas");a.width=t,a.height=i;const o=a.getContext("2d"),c=new ImageData(t,i);for(let u=0;u<i;u++)for(let f=0;f<t;f++){const p=((i-u-1)*t+f)*4,r=(u*t+f)*4;c.data[r]=s[p],c.data[r+1]=s[p+1],c.data[r+2]=s[p+2],c.data[r+3]=s[p+3]}return o.putImageData(c,0,0),a.toDataURL("image/png")}else return new Promise((t,i)=>{this._uiHiddenTime=this._clock.getElapsedTime(),this.hideAmrUI();const s=this.scene.background;this.scene.background=null,setTimeout(()=>{const a=this.renderer.domElement.toDataURL("image/png");return this.scene.background=s,t(a)},this.fpsAverage)})}async captureTriViews(e){var o;const t=(e==null?void 0:e.subject)??this._container;(o=this._progressShadow)==null||o.visible;const i=this.scene.background,s=this.showSize;return new Nr({renderer:this.renderer,scene:this.scene,overlayScene:this.overlayScene,subject:t,onBeforeCapture:()=>{this.scene.background=null,this.hideAmrUI(),this.showSize=!1,this.usePathTracing&&(this.usePathTracing=!1),this._progressShadow.visible=!1},onAfterCapture:()=>{this.scene.background=i,this.showAmrUI(),this.showSize=s,this._progressShadow.visible=!0}}).capture(e)}clearAMR(){xe(this.overlayScene),this.amr.clean(),this.usePathTracing=!1}async exportAMR(){const e=this._container.clone(!0);return e.traverse(t=>{t.dispose&&(t.dispose(),t.removeFromParent())}),await Pr.parseAsync(e,{onlyVisible:!0,binary:!0})}async addAMR(e,t=""){this.amr.init(this),await this.amr.load(e,t),this._progressShadow.clear(),this.amr.addEventListener("fork-height-change",this.debounceForkHeightChange),this.amr.addEventListener("shape-key-changed",(i,s)=>{this.pathTracer.reset(),this.sampleCount=0,this.pathTracer.setScene(this.scene,this.camera),this.overlayScene.traverse(a=>{if(!Object.keys(a.morphTargetDictionary||{}).includes(i))return;let o=s;a.userData[`origin_${i}`]&&(o-=a.userData[`origin_${i}`]);const c=a.morphTargetDictionary[i];a.morphTargetInfluences&&(a.morphTargetInfluences[c]=o),a instanceof d.Mesh&&a.geometry.translate(0,0,1e-5)}),this._progressShadow.clear(),this._progressShadow.recalculate()})}select(e){typeof e=="string"||(Array.isArray(e)?this._outlinePass.selectedObjects=[...e]:this._outlinePass.selectedObjects=[e])}appendTo(e){e.append(this.renderer.domElement),e.append(this.stats.dom),e.append(this.css2dRenderer.domElement),this.props.isMobile&&(e.classList.add("is-mobile"),e.style.cssText=`
3796
3796
  -webkit-user-select: none;
3797
3797
  user-select: none;
3798
3798
  touch-action: none;
3799
3799
  -webkit-touch-callout: none;
3800
- `),this._controlsGizmo&&this._controlsGizmo.appendTo(e),this.stats.dom.style.bottom="0",this.stats.dom.style.top="auto",this.resize(),this._resizeObserver=new ResizeObserver(this.resize.bind(this)),this._resizeObserver.observe(e)}add(e){this._container.add(e)}updatePosition(){}removeFromParent(){var t;const e=this.renderer.domElement.parentElement;e&&((t=this._resizeObserver)==null||t.unobserve(e),e.removeChild(this.renderer.domElement))}clean(){this.amr.clean(),this._progressShadow.clear()}destroy(){var t,i,s;this._destroyed=!0,this._rafId!==null&&(cancelAnimationFrame(this._rafId),this._rafId=null),this._clock.stop(),(t=this._controlsGizmo)==null||t.destroy(),this.amr.destroy(),this.amr.removeFromParent(),this._progressShadow.destroy(),ye.removeAll(),this.stats.dom.remove(),this._emitter.removeAllListeners(),(i=this._fitAnimation)==null||i.stop(),window.removeEventListener("drag",this._drag),document.removeEventListener("wheel",this._detectTrackpad),window.removeEventListener("pointermove",this._pointermove),this.renderer.domElement.removeEventListener("pointerdown",this._pointerdown);const e=this.renderer.domElement.parentElement;e&&((s=this._resizeObserver)==null||s.unobserve(e)),this.controls.dispose(),this.renderer.domElement.remove(),this.renderer.dispose(),this._composer.dispose(),xe(this.scene),this.scene.clear()}}class Nr{constructor(e){this.deps=e,this.canvas=null,this.pixelBuffer=null,this.orthoCamera=new d.OrthographicCamera(-1,1,1,-1,.1,1e3),this.orthoCamera.position.set(0,0,5),this.perspectiveCamera=new d.PerspectiveCamera(45,1,.1,2e3)}async capture(e){var g,_,m,v,y,x;const t=this.deps.renderer,i=(e==null?void 0:e.subject)??this.deps.subject;if(!i)throw new Error("TriViewCapture: subject is required.");const s=new d.Vector2;t.getSize(s);const a=((g=e==null?void 0:e.size)==null?void 0:g.width)??Math.round(s.x),o=((_=e==null?void 0:e.size)==null?void 0:_.height)??Math.round(s.y),c=(e==null?void 0:e.margin)??.15,u=(e==null?void 0:e.includeOverlay)??!1,f=a/o||1,p=this.resolveViews(e==null?void 0:e.views),r=new d.WebGLRenderTarget(a,o,{format:d.RGBAFormat,type:d.UnsignedByteType});r.texture.colorSpace=d.SRGBColorSpace,r.texture.generateMipmaps=!1,r.depthBuffer=!0;const l=this.storeRendererState(t),h={};try{(v=(m=this.deps).onBeforeCapture)==null||v.call(m);const w=this.computeBounds(i);this.applyRendererState(t,a,o,e==null?void 0:e.backgroundColor);for(const b of p){const A=this.configureCamera(w,b,f,c,a,o);t.setRenderTarget(r),t.clear(!0,!0,!0),t.render(this.deps.scene,A),u&&this.deps.overlayScene&&(t.clearDepth(),t.render(this.deps.overlayScene,A));const S=this.readPixels(t,r,a,o);h[b.key]=S}}finally{r.dispose(),this.restoreRendererState(t,l),(x=(y=this.deps).onAfterCapture)==null||x.call(y)}return h}resolveViews(e){return e&&e.length?e.map(t=>({key:t.key,direction:t.direction.clone(),up:t.up.clone(),plane:t.plane})):[{key:"top",direction:new d.Vector3(0,0,1),up:new d.Vector3(0,1,0),plane:{width:"x",height:"y",depth:"z"}},{key:"front",direction:new d.Vector3(0,-1,0),up:new d.Vector3(0,0,1),plane:{width:"x",height:"z",depth:"y"}},{key:"side",direction:new d.Vector3(1,0,0),up:new d.Vector3(0,0,1),plane:{width:"y",height:"z",depth:"x"}},{key:"perspective",direction:new d.Vector3(1,1,1),up:new d.Vector3(0,0,1),plane:{width:"x",height:"z",depth:"y"},mode:"perspective",fov:39.6}]}computeBounds(e){const t=new d.Box3,i=new d.Box3,s=new d.Vector3,a=new d.Vector3,o=new d.Sphere;return e.updateMatrixWorld(!0),e.traverse(c=>{if(!c.visible)return;const f=c.geometry;if(!f)return;f.boundingBox||f.computeBoundingBox();const p=f.boundingBox;p&&(i.copy(p).applyMatrix4(c.matrixWorld),t.union(i))}),t.isEmpty()?(t.setFromCenterAndSize(s,new d.Vector3(.001,.001,.001)),a.set(.001,.001,.001),o.center.copy(s),o.radius=.001):(t.getCenter(s),t.getSize(a),t.getBoundingSphere(o)),(!Number.isFinite(o.radius)||o.radius<=0)&&(o.radius=Math.max(a.length()*.5,.001)),{box:t,center:s,size:a,sphere:o}}configureCamera(e,t,i,s,a,o){const c=t.direction.clone().normalize();c.lengthSq()===0&&c.set(0,0,1);const u=t.up.clone().normalize();if(Math.abs(u.dot(c))>.999&&(u.set(0,0,1),Math.abs(u.dot(c))>.999&&u.set(0,1,0)),(t.mode??"orthographic")==="perspective"){const w=this.perspectiveCamera,b=t.fov??45,A=d.MathUtils.degToRad(b),S=Math.max(Math.tan(A/2),1e-4),I=Math.max(S*(i||1),1e-4),M=this.getPerspectiveDirection(t,e.size).normalize(),P=new d.Vector3().crossVectors(M,u).normalize();P.lengthSq()<1e-6&&P.set(1,0,0);const R=new d.Vector3().crossVectors(P,M).normalize(),T=Math.max(e.size.x*.5,1e-4),C=Math.max(e.size.y*.5,1e-4),D=Math.max(e.size.z*.5,1e-4),E=[new d.Vector3(-T,-C,-D),new d.Vector3(-T,-C,D),new d.Vector3(-T,C,-D),new d.Vector3(-T,C,D),new d.Vector3(T,-C,-D),new d.Vector3(T,-C,D),new d.Vector3(T,C,-D),new d.Vector3(T,C,D)];let F=0,O=-1/0;for(const $ of E){const ee=P.dot($),pe=R.dot($),ht=M.dot($);O=Math.max(O,ht);const di=ht+Math.abs(ee)/I,ft=ht+Math.abs(pe)/S;F=Math.max(F,di,ft)}F=Math.max(F,O+.1);const H=F*(1+s);let W=1/0;for(const $ of E){const ee=M.dot($),pe=H-ee;pe>.001&&(W=Math.min(W,pe))}return w.fov=b,w.aspect=i||a/Math.max(o,1),w.near=Math.max(.1,Number.isFinite(W)?W*.5:H*.1),w.far=Math.max(w.near+1,H+e.sphere.radius*3),w.position.copy(e.center).add(M.clone().multiplyScalar(H)),w.up.copy(R),w.lookAt(e.center),w.updateProjectionMatrix(),w.updateMatrixWorld(!0),w}const p=this.orthoCamera,r=e.size,l=e.center,h=Math.max(r[t.plane.width]*.5,.01),g=Math.max(r[t.plane.height]*.5,.01),_=Math.max(r[t.plane.depth]*.5,.01);let m=h*(1+s),v=g*(1+s);m/i>v?v=m/i:m=v*i;const y=_*(1+s)+Math.max(m,v),x=l.clone().add(c.multiplyScalar(y));return p.left=-m,p.right=m,p.top=v,p.bottom=-v,p.near=.1,p.far=y*4,p.zoom=1,p.position.copy(x),p.up.copy(u),p.lookAt(l),p.updateProjectionMatrix(),p.updateMatrixWorld(!0),p}getPerspectiveDirection(e,t){const i=e.direction.clone();i.lengthSq()===0&&i.set(1,1,1);const s=new d.Vector3(Math.abs(i.x)||1,Math.abs(i.y)||1,Math.abs(i.z)||1),a=new d.Vector3(Math.sign(i.x||1),Math.sign(i.y||1),Math.sign(i.z||1)),o=.25,c=new d.Vector3(Math.max(o,s.x)*Math.max(t.x,.001),Math.max(o,s.y)*Math.max(t.y,.001),0),u=Math.max((t.x+t.y)*.5,.001),f=Math.max(t.z,.001),p=Math.max(o,s.z),r=f*.5+u*.5;return c.z=p*r,c.multiply(a),c}storeRendererState(e){const t=new d.Vector2;e.getSize(t);const i=new d.Vector4;e.getViewport(i);const s=new d.Vector4;e.getScissor(s);const a=e.getClearColor(new d.Color),o=e.getClearAlpha();return{size:t,pixelRatio:e.getPixelRatio(),viewport:i,scissor:s,scissorTest:e.getScissorTest(),autoClear:e.autoClear,target:e.getRenderTarget(),clearColor:a,clearAlpha:o}}applyRendererState(e,t,i,s){if(e.setPixelRatio(1),e.setSize(t,i,!1),e.setViewport(0,0,t,i),e.setScissor(0,0,t,i),e.setScissorTest(!1),e.autoClear=!0,s!==void 0)if(s===null){const a=e.getClearColor(new d.Color);e.setClearColor(a,0)}else s instanceof d.Color?e.setClearColor(s,1):e.setClearColor(new d.Color(s),1);else{const a=e.getClearColor(new d.Color);e.setClearColor(a,0)}}restoreRendererState(e,t){e.setPixelRatio(t.pixelRatio),e.setSize(t.size.x,t.size.y,!1),e.setViewport(t.viewport.x,t.viewport.y,t.viewport.z,t.viewport.w),e.setScissor(t.scissor.x,t.scissor.y,t.scissor.z,t.scissor.w),e.setScissorTest(t.scissorTest),e.autoClear=t.autoClear,e.setRenderTarget(t.target),e.setClearColor(t.clearColor,t.clearAlpha)}readPixels(e,t,i,s){const a=i*s*4;(!this.pixelBuffer||this.pixelBuffer.length!==a)&&(this.pixelBuffer=new Uint8Array(a)),e.readRenderTargetPixels(t,0,0,i,s,this.pixelBuffer);const o=this.ensureCanvas(i,s),c=o.getContext("2d");if(!c)throw new Error("TriViewCapture: failed to get 2D context.");const u=c.createImageData(i,s),f=u.data,p=this.pixelBuffer;for(let r=0;r<s;r+=1){const h=(s-r-1)*i*4,g=r*i*4;f.set(p.subarray(h,h+i*4),g)}return c.putImageData(u,0,0),o.toDataURL("image/png")}ensureCanvas(e,t){if(typeof document>"u")throw new Error("TriViewCapture: document is not available in this environment.");return this.canvas||(this.canvas=document.createElement("canvas")),(this.canvas.width!==e||this.canvas.height!==t)&&(this.canvas.width=e,this.canvas.height=t),this.canvas}}const bc="shop-components",Ac="0.3.2",Tc="Shop components",Sc="dist/shop-components.umd.js",Mc="dist/shop-components.mjs",Cc="dist/main.d.ts",Ic={dts:"tsc --emitDeclarationOnly & tsc & storybook build -o dist",test:'echo "Error: no test specified" && exit 1',dev:"vite dev",storybook:"storybook dev -p 6006",build:"storybook build -o dist",vite:"vite build",version:"auto-changelog -p && git add CHANGELOG.md"},Rc=["dist","package.json"],Pc=[],Dc="machengda<machengda@seer-group.com>",Lc="ISC",Ec={"@needle-tools/gltf-progressive":"^3.3.5","auto-changelog":"^2.4.0",vite:"5.1.6","vite-plugin-dts":"^3.7.3"},Fc={"string-width":"4.2.3"},Bc={"@nodetoy/three-nodetoy":"^0.1.36","@tweakpane/core":"^2.0.3","@tweenjs/tween.js":"^23.1.2","@types/bezier-js":"^4.1.1","@types/howler":"^2.2.11","@types/three":"0.180.0","bezier-js":"^6.1.4",eventemitter3:"^5.0.1",howler:"^2.2.4","stats-fps.js":"0.0.6",stylus:"^0.63.0",terser:"^5.44.0",three:"^0.180.0","three-gpu-pathtracer":"^0.0.23","three-mesh-bvh":"^0.7.5","troika-three-text":"^0.49.1",tweakpane:"^4.0.3"},kc={name:bc,version:Ac,description:Tc,main:Sc,module:Mc,types:Cc,scripts:Ic,files:Rc,keywords:Pc,author:Dc,license:Lc,devDependencies:Ec,resolutions:Fc,dependencies:Bc};function lr(){const n="Nebular Engin",e=kc.version,t=`%c ${n} %c v${e} `;console.log(t,"background:#111827;color:#ffffff;padding:4px 10px;border-radius:4px 0 0 4px;font-weight:700;","background:#10B981;color:#ffffff;padding:4px 10px;border-radius:0 4px 4px 0;font-weight:700;")}const cr="__SHOP_COMPONENTS_BANNER_PRINTED__";try{const n=globalThis;n[cr]||(n[cr]=!0,lr())}catch{lr()}exports.Amr=Er;exports.Logo=Gi;exports.SGLBLoader=ni;exports.SLOT_EVENTS=q;exports.Scene3D=wc;exports.Skin=es;exports.Slot=Wi;exports.SlotState=Hr;exports.TriViewCapture=Nr;exports.arrayBufferToUrl=Hi;exports.calculateArrayAverage=Cr;exports.calculateFocalLength=Oa;exports.createSGLBFile=Ya;exports.downloadBlob=ka;exports.dracoExporter=ja;exports.font=_c;exports.gltfExporter=Pr;exports.gltfLoader=lt;exports.imageBitmapToUrl=Ni;exports.isAppleDevice=Ir;exports.textureLoader=us;
3800
+ `),this._controlsGizmo&&this._controlsGizmo.appendTo(e),this.stats.dom.style.bottom="0",this.stats.dom.style.top="auto",this.resize(),this._resizeObserver=new ResizeObserver(this.resize.bind(this)),this._resizeObserver.observe(e)}add(e){this._container.add(e)}updatePosition(){}removeFromParent(){var t;const e=this.renderer.domElement.parentElement;e&&((t=this._resizeObserver)==null||t.unobserve(e),e.removeChild(this.renderer.domElement))}clean(){this.amr.clean(),this._progressShadow.clear()}destroy(){var t,i,s;this._destroyed=!0,this._rafId!==null&&(cancelAnimationFrame(this._rafId),this._rafId=null),this._clock.stop(),(t=this._controlsGizmo)==null||t.destroy(),this.amr.destroy(),this.amr.removeFromParent(),this._progressShadow.destroy(),ye.removeAll(),this.stats.dom.remove(),this._emitter.removeAllListeners(),(i=this._fitAnimation)==null||i.stop(),window.removeEventListener("drag",this._drag),document.removeEventListener("wheel",this._detectTrackpad),window.removeEventListener("pointermove",this._pointermove),this.renderer.domElement.removeEventListener("pointerdown",this._pointerdown);const e=this.renderer.domElement.parentElement;e&&((s=this._resizeObserver)==null||s.unobserve(e)),this.controls.dispose(),this.renderer.domElement.remove(),this.renderer.dispose(),this._composer.dispose(),xe(this.scene),this.scene.clear()}}class Nr{constructor(e){this.deps=e,this.canvas=null,this.pixelBuffer=null,this.orthoCamera=new d.OrthographicCamera(-1,1,1,-1,.1,1e3),this.orthoCamera.position.set(0,0,5),this.perspectiveCamera=new d.PerspectiveCamera(45,1,.1,2e3)}async capture(e){var g,_,m,v,y,x;const t=this.deps.renderer,i=(e==null?void 0:e.subject)??this.deps.subject;if(!i)throw new Error("TriViewCapture: subject is required.");const s=new d.Vector2;t.getSize(s);const a=((g=e==null?void 0:e.size)==null?void 0:g.width)??Math.round(s.x),o=((_=e==null?void 0:e.size)==null?void 0:_.height)??Math.round(s.y),c=(e==null?void 0:e.margin)??.15,u=(e==null?void 0:e.includeOverlay)??!1,f=a/o||1,p=this.resolveViews(e==null?void 0:e.views),r=new d.WebGLRenderTarget(a,o,{format:d.RGBAFormat,type:d.UnsignedByteType});r.texture.colorSpace=d.SRGBColorSpace,r.texture.generateMipmaps=!1,r.depthBuffer=!0;const l=this.storeRendererState(t),h={};try{(v=(m=this.deps).onBeforeCapture)==null||v.call(m);const w=this.computeBounds(i);this.applyRendererState(t,a,o,e==null?void 0:e.backgroundColor);for(const b of p){const A=this.configureCamera(w,b,f,c,a,o);t.setRenderTarget(r),t.clear(!0,!0,!0),t.render(this.deps.scene,A),u&&this.deps.overlayScene&&(t.clearDepth(),t.render(this.deps.overlayScene,A));const S=this.readPixels(t,r,a,o);h[b.key]=S}}finally{r.dispose(),this.restoreRendererState(t,l),(x=(y=this.deps).onAfterCapture)==null||x.call(y)}return h}resolveViews(e){return e&&e.length?e.map(t=>({key:t.key,direction:t.direction.clone(),up:t.up.clone(),plane:t.plane})):[{key:"top",direction:new d.Vector3(0,0,1),up:new d.Vector3(0,1,0),plane:{width:"x",height:"y",depth:"z"}},{key:"front",direction:new d.Vector3(0,-1,0),up:new d.Vector3(0,0,1),plane:{width:"x",height:"z",depth:"y"}},{key:"side",direction:new d.Vector3(1,0,0),up:new d.Vector3(0,0,1),plane:{width:"y",height:"z",depth:"x"}},{key:"perspective",direction:new d.Vector3(1,1,1),up:new d.Vector3(0,0,1),plane:{width:"x",height:"z",depth:"y"},mode:"perspective",fov:39.6}]}computeBounds(e){const t=new d.Box3,i=new d.Box3,s=new d.Vector3,a=new d.Vector3,o=new d.Sphere;return e.updateMatrixWorld(!0),e.traverse(c=>{if(!c.visible)return;const f=c.geometry;if(!f)return;f.boundingBox||f.computeBoundingBox();const p=f.boundingBox;p&&(i.copy(p).applyMatrix4(c.matrixWorld),t.union(i))}),t.isEmpty()?(t.setFromCenterAndSize(s,new d.Vector3(.001,.001,.001)),a.set(.001,.001,.001),o.center.copy(s),o.radius=.001):(t.getCenter(s),t.getSize(a),t.getBoundingSphere(o)),(!Number.isFinite(o.radius)||o.radius<=0)&&(o.radius=Math.max(a.length()*.5,.001)),{box:t,center:s,size:a,sphere:o}}configureCamera(e,t,i,s,a,o){const c=t.direction.clone().normalize();c.lengthSq()===0&&c.set(0,0,1);const u=t.up.clone().normalize();if(Math.abs(u.dot(c))>.999&&(u.set(0,0,1),Math.abs(u.dot(c))>.999&&u.set(0,1,0)),(t.mode??"orthographic")==="perspective"){const w=this.perspectiveCamera,b=t.fov??45,A=d.MathUtils.degToRad(b),S=Math.max(Math.tan(A/2),1e-4),I=Math.max(S*(i||1),1e-4),M=this.getPerspectiveDirection(t,e.size).normalize(),P=new d.Vector3().crossVectors(M,u).normalize();P.lengthSq()<1e-6&&P.set(1,0,0);const R=new d.Vector3().crossVectors(P,M).normalize(),T=Math.max(e.size.x*.5,1e-4),C=Math.max(e.size.y*.5,1e-4),D=Math.max(e.size.z*.5,1e-4),E=[new d.Vector3(-T,-C,-D),new d.Vector3(-T,-C,D),new d.Vector3(-T,C,-D),new d.Vector3(-T,C,D),new d.Vector3(T,-C,-D),new d.Vector3(T,-C,D),new d.Vector3(T,C,-D),new d.Vector3(T,C,D)];let F=0,O=-1/0;for(const $ of E){const ee=P.dot($),pe=R.dot($),ht=M.dot($);O=Math.max(O,ht);const di=ht+Math.abs(ee)/I,ft=ht+Math.abs(pe)/S;F=Math.max(F,di,ft)}F=Math.max(F,O+.1);const H=F*(1+s);let W=1/0;for(const $ of E){const ee=M.dot($),pe=H-ee;pe>.001&&(W=Math.min(W,pe))}return w.fov=b,w.aspect=i||a/Math.max(o,1),w.near=Math.max(.1,Number.isFinite(W)?W*.5:H*.1),w.far=Math.max(w.near+1,H+e.sphere.radius*3),w.position.copy(e.center).add(M.clone().multiplyScalar(H)),w.up.copy(R),w.lookAt(e.center),w.updateProjectionMatrix(),w.updateMatrixWorld(!0),w}const p=this.orthoCamera,r=e.size,l=e.center,h=Math.max(r[t.plane.width]*.5,.01),g=Math.max(r[t.plane.height]*.5,.01),_=Math.max(r[t.plane.depth]*.5,.01);let m=h*(1+s),v=g*(1+s);m/i>v?v=m/i:m=v*i;const y=_*(1+s)+Math.max(m,v),x=l.clone().add(c.multiplyScalar(y));return p.left=-m,p.right=m,p.top=v,p.bottom=-v,p.near=.1,p.far=y*4,p.zoom=1,p.position.copy(x),p.up.copy(u),p.lookAt(l),p.updateProjectionMatrix(),p.updateMatrixWorld(!0),p}getPerspectiveDirection(e,t){const i=e.direction.clone();i.lengthSq()===0&&i.set(1,1,1);const s=new d.Vector3(Math.abs(i.x)||1,Math.abs(i.y)||1,Math.abs(i.z)||1),a=new d.Vector3(Math.sign(i.x||1),Math.sign(i.y||1),Math.sign(i.z||1)),o=.25,c=new d.Vector3(Math.max(o,s.x)*Math.max(t.x,.001),Math.max(o,s.y)*Math.max(t.y,.001),0),u=Math.max((t.x+t.y)*.5,.001),f=Math.max(t.z,.001),p=Math.max(o,s.z),r=f*.5+u*.5;return c.z=p*r,c.multiply(a),c}storeRendererState(e){const t=new d.Vector2;e.getSize(t);const i=new d.Vector4;e.getViewport(i);const s=new d.Vector4;e.getScissor(s);const a=e.getClearColor(new d.Color),o=e.getClearAlpha();return{size:t,pixelRatio:e.getPixelRatio(),viewport:i,scissor:s,scissorTest:e.getScissorTest(),autoClear:e.autoClear,target:e.getRenderTarget(),clearColor:a,clearAlpha:o}}applyRendererState(e,t,i,s){if(e.setPixelRatio(1),e.setSize(t,i,!1),e.setViewport(0,0,t,i),e.setScissor(0,0,t,i),e.setScissorTest(!1),e.autoClear=!0,s!==void 0)if(s===null){const a=e.getClearColor(new d.Color);e.setClearColor(a,0)}else s instanceof d.Color?e.setClearColor(s,1):e.setClearColor(new d.Color(s),1);else{const a=e.getClearColor(new d.Color);e.setClearColor(a,0)}}restoreRendererState(e,t){e.setPixelRatio(t.pixelRatio),e.setSize(t.size.x,t.size.y,!1),e.setViewport(t.viewport.x,t.viewport.y,t.viewport.z,t.viewport.w),e.setScissor(t.scissor.x,t.scissor.y,t.scissor.z,t.scissor.w),e.setScissorTest(t.scissorTest),e.autoClear=t.autoClear,e.setRenderTarget(t.target),e.setClearColor(t.clearColor,t.clearAlpha)}readPixels(e,t,i,s){const a=i*s*4;(!this.pixelBuffer||this.pixelBuffer.length!==a)&&(this.pixelBuffer=new Uint8Array(a)),e.readRenderTargetPixels(t,0,0,i,s,this.pixelBuffer);const o=this.ensureCanvas(i,s),c=o.getContext("2d");if(!c)throw new Error("TriViewCapture: failed to get 2D context.");const u=c.createImageData(i,s),f=u.data,p=this.pixelBuffer;for(let r=0;r<s;r+=1){const h=(s-r-1)*i*4,g=r*i*4;f.set(p.subarray(h,h+i*4),g)}return c.putImageData(u,0,0),o.toDataURL("image/png")}ensureCanvas(e,t){if(typeof document>"u")throw new Error("TriViewCapture: document is not available in this environment.");return this.canvas||(this.canvas=document.createElement("canvas")),(this.canvas.width!==e||this.canvas.height!==t)&&(this.canvas.width=e,this.canvas.height=t),this.canvas}}const bc="shop-components",Ac="0.3.3",Tc="Shop components",Sc="dist/shop-components.umd.js",Mc="dist/shop-components.mjs",Cc="dist/main.d.ts",Ic={dts:"tsc --emitDeclarationOnly & tsc & storybook build -o dist",dev:"vite dev",build:"vite build",v:"auto-changelog -p && git add CHANGELOG.md"},Rc=["dist","package.json"],Pc=[],Dc="machengda<machengda@seer-group.com>",Lc="ISC",Ec={"@needle-tools/gltf-progressive":"^3.3.5","auto-changelog":"^2.4.0",vite:"5.1.6","vite-plugin-dts":"^3.7.3"},Fc={"string-width":"4.2.3"},Bc={"@nodetoy/three-nodetoy":"^0.1.36","@tweakpane/core":"^2.0.3","@tweenjs/tween.js":"^23.1.2","@types/bezier-js":"^4.1.1","@types/howler":"^2.2.11","@types/three":"0.180.0","bezier-js":"^6.1.4",eventemitter3:"^5.0.1",howler:"^2.2.4","stats-fps.js":"0.0.6",stylus:"^0.63.0",terser:"^5.44.0",three:"^0.180.0","three-gpu-pathtracer":"^0.0.23","three-mesh-bvh":"^0.7.5","troika-three-text":"^0.49.1",tweakpane:"^4.0.3"},kc={name:bc,version:Ac,description:Tc,main:Sc,module:Mc,types:Cc,scripts:Ic,files:Rc,keywords:Pc,author:Dc,license:Lc,devDependencies:Ec,resolutions:Fc,dependencies:Bc};function lr(){const n="Nebular Engin",e=kc.version,t=`%c ${n} %c v${e} `;console.log(t,"background:#111827;color:#ffffff;padding:4px 10px;border-radius:4px 0 0 4px;font-weight:700;","background:#10B981;color:#ffffff;padding:4px 10px;border-radius:0 4px 4px 0;font-weight:700;")}const cr="__SHOP_COMPONENTS_BANNER_PRINTED__";try{const n=globalThis;n[cr]||(n[cr]=!0,lr())}catch{lr()}exports.Amr=Er;exports.Logo=Gi;exports.SGLBLoader=ni;exports.SLOT_EVENTS=q;exports.Scene3D=wc;exports.Skin=es;exports.Slot=Wi;exports.SlotState=Hr;exports.TriViewCapture=Nr;exports.arrayBufferToUrl=Hi;exports.calculateArrayAverage=Cr;exports.calculateFocalLength=Oa;exports.createSGLBFile=Ya;exports.downloadBlob=ka;exports.dracoExporter=ja;exports.font=_c;exports.gltfExporter=Pr;exports.gltfLoader=lt;exports.imageBitmapToUrl=Ni;exports.isAppleDevice=Ir;exports.textureLoader=us;
@@ -12709,6 +12709,7 @@ class Rh {
12709
12709
  }, this.fit = () => {
12710
12710
  new Y().setFromObject(this._container);
12711
12711
  const f = this.amr.sizeBox.size.getSize(new b()), d = f.clone().multiplyScalar(0.5), r = new b(0, 0, d.z);
12712
+ this._lastTarget.copy(r);
12712
12713
  let l = d.clone().sub(r);
12713
12714
  l.lengthSq() < 1e-6 && (l = new b(1, 0, 0));
12714
12715
  const h = l.clone().normalize(), m = f.clone().multiplyScalar(0.5), v = [
@@ -12830,7 +12831,7 @@ class Rh {
12830
12831
  bubbleSizePrimary: 18,
12831
12832
  bubbleSizeSecondary: 14
12832
12833
  }), this._controlsGizmo.addListener("axis-select-start", () => {
12833
- this._lastTarget = this.controls.target.clone(), this._axisMoving = !0, this.mainCamera = this.orthographicCamera, this.usePathTracing && this.generateBVH().then();
12834
+ this._axisMoving = !0, this.mainCamera = this.orthographicCamera, this.usePathTracing && this.generateBVH().then();
12834
12835
  }), this._controlsGizmo.addListener("axis-select-end", () => {
12835
12836
  this._axisMoving = !1;
12836
12837
  })), this.test = new j(new Di(2, 2), new Pt({
@@ -13219,14 +13220,11 @@ class Fu {
13219
13220
  return this.canvas || (this.canvas = document.createElement("canvas")), (this.canvas.width !== e || this.canvas.height !== t) && (this.canvas.width = e, this.canvas.height = t), this.canvas;
13220
13221
  }
13221
13222
  }
13222
- const Bu = "shop-components", Ou = "0.3.2", zu = "Shop components", Uu = "dist/shop-components.umd.js", Hu = "dist/shop-components.mjs", Nu = "dist/main.d.ts", Wu = {
13223
+ const Bu = "shop-components", Ou = "0.3.3", zu = "Shop components", Uu = "dist/shop-components.umd.js", Hu = "dist/shop-components.mjs", Nu = "dist/main.d.ts", Wu = {
13223
13224
  dts: "tsc --emitDeclarationOnly & tsc & storybook build -o dist",
13224
- test: 'echo "Error: no test specified" && exit 1',
13225
13225
  dev: "vite dev",
13226
- storybook: "storybook dev -p 6006",
13227
- build: "storybook build -o dist",
13228
- vite: "vite build",
13229
- version: "auto-changelog -p && git add CHANGELOG.md"
13226
+ build: "vite build",
13227
+ v: "auto-changelog -p && git add CHANGELOG.md"
13230
13228
  }, Vu = [
13231
13229
  "dist",
13232
13230
  "package.json"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shop-components",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Shop components",
5
5
  "main": "dist/shop-components.umd.js",
6
6
  "module": "dist/shop-components.mjs",