@splinetool/viewer 0.0.29 → 0.0.31

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.
@@ -5199,7 +5199,7 @@ outputColor=vec4(color,inputColor.a);}`,Wc={DEFAULT:0,ESKIL:1},WG=class extends
5199
5199
  void main() {
5200
5200
  gl_FragColor = vec4(0.0);
5201
5201
  }
5202
- `}),bf=class extends mr{constructor(e,t){super("OpaquePass",e??Db,t),this.hasTransmissionPass=!1,this.clear=!0,this.needsSwap=!1,this.originalMaterials=new Map}setCamera(e){this.camera=e}setScene(e){this.scene=e??Db}getScene(){return this.scene}render(e,t){this.originalMaterials.clear(),this.camera.layers.enable(3),this.hasTransmissionPass&&this.scene.traverse(r=>{r.layers.isEnabled(3)&&r instanceof Zi&&(this.originalMaterials.set(r.id,r.material),r.material=iV)}),this.camera.layers.enable(8),e.shadowMap.needsUpdate=!0,e.shadowMap.autoUpdate=!0;let i=this.renderToScreen?null:t;e.setRenderTarget(i),this.clear&&e.clear(),e.render(this.scene,this.camera),this.hasTransmissionPass&&this.originalMaterials.forEach((r,s)=>{let n=this.scene.getObjectById(s);n&&(n.material=r)})}};function Ob(e,t){return t&&t.enabled&&e.push(t.effect),e}var rV=class extends zi{constructor(e){super(),this.postprocessingState=ah.defaultData,this._scene=new Kn,this._camera=new Ls,this.effects=new Map,this._renderToScreen=!0,this.clock=new mD,this.renderer=e,this.debug=!1,this.effects.set("bloom",new XG),this.effects.set("chromaticAberration",new qG),this.effects.set("vignette",new JG),this.effects.set("noise",new KG),this.effects.set("colorAverage",new QG),this.effects.set("hueSaturation",new ZG),this.effects.set("brightnessContrast",new YG),this.effects.set("depthOfField",new $G),this.effects.set("pixelation",new eV),this.effectComposer=new SG(this.renderer),this.opaquePass=new bf(this.scene,this.camera),this.transmissionPass=new tV(this.scene,this.camera,this.renderer),this.helperPass=new bf(void 0,this.camera),this.helperPass.hasTransmissionPass=!1,this.helperPass.clear=!1,this.helperClearPass=new Mu(!1,!0,!1),this.helperPassOnTop=new bf(void 0,this.camera),this.helperPassOnTop.hasTransmissionPass=!1,this.helperPassOnTop.clear=!1,this._initCopyPass(),this._initSmaa(),this._initPasses()}get scene(){return this._scene}set scene(e){this._scene=e,this.opaquePass.setScene(e),this.transmissionPass.setScene(e)}set sceneHelpers(e){this.helperPass.setScene(e)}get sceneHelpers(){return this.helperPass.getScene()}set sceneHelpersOnTop(e){this.helperPassOnTop.setScene(e)}get sceneHelpersOnTop(){return this.helperPassOnTop.getScene()}get camera(){return this._camera}set camera(e){this._camera=e,this.opaquePass.setCamera(e),this.transmissionPass.setCamera(e),this.helperPass.setCamera(e),this.helperPassOnTop.setCamera(e)}setTransmissionPassEnabled(e){this.transmissionPass.enabled=e,this.opaquePass.hasTransmissionPass=e}disableHelpers(){this.helperPass.enabled=!1,this.helperClearPass.enabled=!1,this.helperPassOnTop.enabled=!1}enableHelpers(){this.helperPass.enabled=!0,this.helperClearPass.enabled=!0,this.helperPassOnTop.enabled=!0}_initSmaa(){let e=new GG({preset:Za.ULTRA,edgeDetectionMode:dv.COLOR}),t=()=>{e.removeEventListener("load",t),this.dispatchEvent({type:"smaaloaded"})};e.addEventListener("load",t),e.edgeDetectionMaterial.predicationMode=TA.DEPTH,e.edgeDetectionMaterial.edgeDetectionThreshold=.05,e.edgeDetectionMaterial.predicationThreshold=.002,e.edgeDetectionMaterial.predicationScale=1,this.smaaPass=new vf(this.camera,e)}_initPasses(){if(this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.removeAllPasses(),this.transmissionPass.updatePasses(this.renderer),this.effectComposer.addPass(this.opaquePass),this.effectComposer.addPass(this.transmissionPass),this.postprocessingState.enabled){let e=[this.effects.get("pixelation")].reduce(Ob,[]);e.length>0&&(this.uvEffectPass=new vf(this.camera,...e),this.effectComposer.addPass(this.uvEffectPass));let t=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(Ob,[]);t.length>0&&(this.effectPass=new vf(this.camera,...t),this.effectComposer.addPass(this.effectPass))}this.effectComposer.addPass(this.helperPass),this.effectComposer.addPass(this.helperClearPass),this.effectComposer.addPass(this.helperPassOnTop),this.effectComposer.addPass(this.smaaPass)}_initCopyPass(){if(this._savePass)return;let e=new H;this.renderer.getDrawingBufferSize(e),this._rt=new Ut(e.x,e.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:ql,wrapT:ql}),this._rt.samples=0,this._savePass=new Kd(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(e){if(this._renderToScreen===e)return;let t=this.effectComposer;!t||(e===!0?(t.removePass(this._savePass),t.passes[t.passes.length-1].renderToScreen=!0,t.autoRenderToScreen=!0):(t.autoRenderToScreen=!1,t.passes[t.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,this.postprocessingState.enabled||(this._savePass.needsDepthTexture=!0),t.addPass(this._savePass)),this._renderToScreen=e)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}updatePostprocessing(e){let{enabled:t,...i}=e,r=!1;t!==this.postprocessingState.enabled&&(r=!0);for(let s of Object.entries(i)){let n=s[1],a=this.effects.get(s[0]);if(a){a.enabled!==n.enabled&&(r=!0),a.enabled=n.enabled;for(let[o,l]of Object.entries(n))a[o]=l}}this.postprocessingState=e,r&&this._initPasses()}render(){this.effectComposer.render(this.clock.getDelta())}setScissor(e,t,i,r){e instanceof tt?(this.effectComposer.inputBuffer.scissor.set(e.x,e.y,e.z,e.w),this.effectComposer.outputBuffer.scissor.set(e.x,e.y,e.z,e.w)):(this.effectComposer.inputBuffer.scissor.set(e,t,i,r),this.effectComposer.outputBuffer.scissor.set(e,t,i,r));let s=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(s),this.effectComposer.outputBuffer.scissor.multiplyScalar(s),this.renderer.setScissor(e,t,i,r)}setScissorTest(e){this.effectComposer.inputBuffer.scissorTest=e,this.effectComposer.outputBuffer.scissorTest=e,this.renderer.setScissorTest(e)}setViewport(e,t,i,r){e instanceof tt?(this.effectComposer.inputBuffer.viewport.copy(e),this.effectComposer.outputBuffer.viewport.copy(e)):(this.effectComposer.inputBuffer.viewport.set(e,t,i,r),this.effectComposer.outputBuffer.viewport.set(e,t,i,r))}resize(e,t,i){if(this.effectComposer.setSize(e,t,i),this._rt){let r=this.renderer.getPixelRatio();this._rt.setSize(e*r,t*r)}}dispose(){this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.dispose()}},Lb=new gi,sV=class extends ew{constructor(e){super(e),this._pixelRatio=this.getPixelRatio(),this.viewportWidth=1,this.viewportHeight=1,this.resolution=new H,this.pipeline=new rV(this),this.overrideTransmission=e?.overrideTransmission,this.autoClear=!1;let t=this.setPixelRatio.bind(this),i=this.setSize.bind(this),r=this.getContext();if(r&&"drawingBufferColorSpace"in r)try{r.drawingBufferColorSpace="display-p3"}catch(s){console.warn(s)}this.setPixelRatio=s=>{this._pixelRatio=s,t(s)},this.setSize=(s,n,a=!0)=>{(this.viewportWidth!==s||this.viewportHeight!==n)&&(this.viewportWidth=s,this.viewportHeight=n,i(s,n,a),this.normalRenderTarget?.setSize(s*this._pixelRatio,n*this._pixelRatio),this.transmissionRenderTarget?.setSize(s*this._pixelRatio/2,n*this._pixelRatio/2),this.transmissionDepthTarget?.setSize(s*this._pixelRatio/2,n*this._pixelRatio/2),this.pipeline.resize(s,n,a))},this._superDispose=this.dispose,this.dispose=this._currentDispose}createTransmissionRenderTarget(){this.transmissionRenderTarget===void 0&&(this.transmissionRenderTarget=new Ut(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{generateMipmaps:!0,minFilter:fh,magFilter:ft,wrapS:Gi,wrapT:Gi,depthBuffer:!1}),this.transmissionDepthTarget=new Ut(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{minFilter:Lt,magFilter:Lt,depthBuffer:!1}))}createNormalRenderTarget(){this.normalRenderTarget===void 0&&(this.normalRenderTarget=new Ut(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio,{generateMipmaps:!1,minFilter:Lt,magFilter:Lt,type:sn,depthTexture:new Zm(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio)}))}renderNormal(e,t){this.normalRenderTarget&&(this.setClearColor(0),t.layers.enable(8),t.layers.disable(0),t.layers.disable(3),this.setRenderTarget(this.normalRenderTarget),this.clear(),t instanceof Ls?$p.uniforms.depthContrast.value=(t.far-t.near)/1e4:$p.uniforms.depthContrast.value=1,e.overrideMaterial=$p,this.render(e,t),this.setClearColor(e.bgColor,e.bgColor.a),this.setRenderTarget(null),e.overrideMaterial=e.wireframeState?Pm:null,t.layers.enable(0),t.layers.enable(3))}renderSplineScene(e,t,i,r,s){this.setClearColor(e.bgColor,e.bgColor.a),i.penumbraSize.forEach((a,o)=>{Ct.penumbraSize.value[o]=a}),Ct.pixelRatioNode.value=this.getPixelRatio(),this.resolution.x!==0&&this.resolution.y!==0?Ct.resolution.value.set(this.resolution.x,this.resolution.y):Ct.resolution.value.set(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio),this.overrideNormal!==void 0?(Ct.normalRenderTarget.value=this.overrideNormal,Ct.normalRenderTargetDepth.value=Lb):e.needsNormal()&&(this.createNormalRenderTarget(),Ct.normalRenderTarget.value=this.normalRenderTarget.texture,Ct.normalRenderTargetDepth.value=this.normalRenderTarget.depthTexture,this.renderNormal(e,t));let n=!1;if(this.overrideTransmission!==void 0)Ct.transmissionRenderTarget.value=this.overrideTransmission,Ct.transmissionRenderTargetDepth.value=Lb,this.pipeline.setTransmissionPassEnabled(!1);else{let a=e.needsTransmission();a&&(this.transmissionRenderTarget===void 0&&(n=!0),this.createTransmissionRenderTarget(),Ct.transmissionRenderTarget.value=this.transmissionRenderTarget.texture,Ct.transmissionRenderTargetDepth.value=this.transmissionDepthTarget.texture),this.pipeline.setTransmissionPassEnabled(a)}t.layers.enable(3),t.layers.enable(8),this.pipeline.sceneHelpers=r,this.pipeline.sceneHelpersOnTop=s,this.pipeline.scene=e,this.pipeline.camera=t,n&&this.pipeline.transmissionPass.updatePasses(this),this.pipeline.postprocessingState!==e.postprocessing&&this.pipeline.updatePostprocessing(e.postprocessing),this.clearAlphaOverride!==void 0&&this.setClearAlpha(this.clearAlphaOverride),e.overrideMaterial=e.wireframeState?Pm:null,this.pipeline.render()}_currentDispose(){this._superDispose(),this.pipeline.dispose(),this.transmissionRenderTarget?.dispose(),this.transmissionDepthTarget?.dispose(),this.normalRenderTarget?.dispose(),this.normalRenderTarget?.depthTexture?.dispose()}},nV=class{get sharedAssets(){return this.shared}constructor(e,t={}){this.shared=new vu(e.shared,t),this.scene=new bu(e.scene,this.sharedAssets),this.scene.switchActiveCamera(this.scene.activeCamera)}reset(e,t){this.scene.clearScene(),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}dispose(){this.scene.dispose(),this.shared.dispose()}gc(){this.shared.geometryCache.startGc(),this.shared.geometryCache2.startGc(),this.scene.traverseEntity(e=>{e instanceof Or&&e.markGeometryAsReachable(this.shared)}),this.shared.geometryCache.endGc(),this.shared.geometryCache2.endGc()}},aV=class{constructor({x:e=10,y:t=10}){this._startTime=0;let i=document.getElementById("spe-perfs");i?this.element=i:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){this.element.parentElement?.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let e=performance.now()-this._startTime;this.element.innerHTML=e.toFixed(3)+" ms"}};function oV(e){let t;if(e.index)for(let i=0;i<e.index.array.length;i+=3)t=e.index.array[i],e.index.array[i]=e.index.array[i+2],e.index.array[i+2]=t}function Yl(e){return e instanceof ch?"SubdivObject":e.geometry.type==="NonParametricGeometry"?"NonParametric":"Mesh"}function lV(e,t){let i={};return e.traverseEntity(r=>{if(!r.visible||!(r instanceof Zi)||r.type!=="Mesh"||Array.isArray(r.material)||r.states&&Object.keys(r.states).length)return;let s=r.parent;for(;s;){if(s instanceof Zi&&r.states&&Object.keys(r.states).length)return;s=s.parent}let n=r.material.uuid,a=t.shared.materials[n];if(a){if(!Qi.isMergable(a))return}else{let l=t.scene.objects.get(r.uuid)?.data;if(l&&"material"in l&&typeof l.material!="string"){if(!Qi.isMergable(l.material))return;n=Qi.getHash(l.material)}}i[n]||(i[n]={});let o=i[n][Yl(r)];if(o){if(o.push(r),r.cloner)for(let l of r.cloner.children)o.push(l)}else if(i[n][Yl(r)]=[r],r.cloner)for(let l of r.cloner.children)i[n][Yl(r)].push(l)}),i}function hV(e){let t=0;return Object.values(e).forEach(i=>{Object.values(i).forEach(r=>{let s=r.length;s>t&&(t=s)})}),t}function cV(e,t){let i=lV(t,e),r=hV(i),s=new Array(r),n=0,a=new Array(r),o=0,l=new Array(r),h=0,u=new Array(r),c=0;for(let[d,p]of Object.entries(i))for(let m of Object.values(p)){if(o=0,h=0,m.forEach(f=>{f instanceof Zi&&(a[o++]=f.geometry.clone(),l[h++]=f)}),h<2)continue;for(let f=0;f<h;f++)l[f].updateWorldMatrix(!0,!1),a[f].applyMatrix4(l[f].matrixWorld),l[f].matrixWorld.determinant()<0&&oV(a[f]);let g=to(a.slice(0,o),!1);if(g){let f;switch(d){case"SubdivObject":{console.warn("Turning subdiv object into mesh"),f=new Xi(g,l[0].material);break}default:{f=new Xi(g,l[0].material);break}}f.castShadow=l[0].castShadow,f.receiveShadow=l[0].receiveShadow,t.add(f);let v=y=>{c=0;for(let b of y)b.children&&v(b.children),b instanceof Zi&&(Array.isArray(b.material)||i[b.material.uuid]&&i[b.material.uuid][Yl(b)]&&i[b.material.uuid][Yl(b)].length>1||(u[c++]=b));for(let b=0;b<c;b++)t.attach(u[b])};for(let y=0;y<h;y++){let b=l[y];v(b.children),s[n++]=b}}}for(let d=0;d<n;d++)s[d].removeFromParent()}var dV=new H;function uV(e){let t="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.";e.endsWith(".spline")?console.warn(t+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(t)}var pv=class{constructor(e,{renderOnDemand:t=!0}={}){this._viewportMode=1,this._viewportWidth=window.innerWidth,this._viewportHeight=window.innerHeight,this._proxyObjectCache=new Map,this._lastTime=performance.now(),this.time=performance.now(),this.dt=0,this._skipRender=!1,this.renderOnDemand=!0,this.disposed=!1,this.requestRender=()=>{this._skipRender=!1},this.render=i=>{!this._renderer||(this._rafId=requestAnimationFrame(this.render),this.time=i,this.dt=this.time-this._lastTime,this._lastTime=this.time,this._perfs?.start(),!(this.renderOnDemand&&this._skipRender)&&(this._skipRender=this._controls?.update(this.dt)??!0,this._eventManager&&(this._eventManager.isEnable||this._eventManager.activate(),this._eventManager.handlers.Follow.onAnimationFrameDamping(),this._eventManager.handlers.LookAt.onAnimationFrameDamping(),(this._eventManager.handlers.Start.hasVideoAction||this._eventManager.handlers.Basic.hasVideoAction||this._eventManager.handlers.Conditional.hasVideoAction)&&(this._skipRender=!1)),this._scene&&this._camera&&this._renderer.renderSplineScene(this._scene,this._camera,this._sharedAssetsManager),this._perfs?.end()))},this._resize=Zw(()=>{!this._renderer||(this._viewportMode===1&&this._frameView&&(this._frameView.frameSize=dV.set(this._viewportWidth,this._viewportHeight)),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._viewportMode!==1&&this._frameView?.updateViewport(),this._camera&&(this._frameView?.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()),this.requestRender())},10),this.canvas=e,this.renderOnDemand=t,window.location.search.includes("perfs")&&(this._perfs=new aV({x:10,y:10})),Ez(e)}async load(e,t){uV(e),this.disposed=!1;let i=await(await fetch(e,t)).arrayBuffer();await this.start(i)}async start(e,{interactive:t=!0}={}){if(this.disposed)return;let i=await AH(e);this._data=i,await Promise.all([Lx(i)&&JU(),ck(i)&&QU(),i.scene.environment.usePhysics&&GN(),Cx(i)&&K6()].filter(Boolean)),this._eventManager&&this._eventManager.deactivate(),this._controls&&this._controls.dispose(),this._scene?.dispose();let r=new nV(i);if(this._scene=r.scene,this._sharedAssetsManager=r.sharedAssets,this._camera=this._scene.activeCamera,window.location.search.includes("merge-geometries")){let s=performance.now();cV(i,r.scene);let n=performance.now();console.log("Merged geometries in ",n-s," ms")}if(Lx(i)&&this._scene.traverse(s=>{cn(s)&&s.recomputeBoolean()}),this._sharedAssetsManager.setRequestRender(()=>{this.requestRender(),this._scene?.traverse(s=>{s instanceof Xd&&s.pendingMediaLoad&&s.update()})}),Cx(i)&&eH(i)){let s=Object.keys(i.shared.fonts).map(n=>this._sharedAssetsManager.getFont(n)).map(n=>n.loadingPromise);await Promise.all(s)}if(this._scene.rewriteEventsBeforeGoToPlayMode(),wA(i.scene,this._scene,this._sharedAssetsManager),this._renderer||(this._renderer=new sV({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.pipeline.addEventListener("smaaloaded",this.requestRender),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=i.scene.environment.ambientLight.softShadows?Vm:Bb,Kk(i.scene.environment.ambientLight.softShadowQuality)),this._frameView)this._frameView.setCamera(this._camera);else{let s=Object.values(i.frames)[0];if(s.preset==="fullscreen"){this._viewportMode=1;let{width:n,height:a}=window.getComputedStyle(this.canvas);this.canvas.parentElement&&(n==="300px"||n==="auto")?(this._viewportWidth=this.canvas.parentElement.clientWidth||300,this.canvas.style.width="100%"):this._viewportWidth=this.canvas.clientWidth,this.canvas.parentElement&&(a==="150px"||a==="auto")?(this._viewportHeight=this.canvas.parentElement.clientHeight||150,this.canvas.style.height="100%"):this._viewportHeight=this.canvas.clientHeight}else this._viewportMode=2,this._viewportWidth=s.size[0],this._viewportHeight=s.size[1],this.canvas.style.width=`${this._viewportWidth}px`,this.canvas.style.height=`${this._viewportHeight}px`;this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._frameView=new EH(this._renderer,this._camera,new H(this._viewportWidth,this._viewportHeight),new H(window.innerWidth,window.innerHeight))}if(t&&(this._scene.updateMatrixWorld(!0),this._controls=new tH(i,this._scene,this._renderer,this.requestRender,this._sharedAssetsManager,!0),this._eventManager=new MH(this._renderer,this._scene,this._camera,i.scene.publish.stopRaycast,i.scene.publish.preventScroll,i.scene.publish.hideCursor,this._sharedAssetsManager,this.requestRender,this._controls,!0)),this._resize(),!this._resizeObserver&&this.canvas.parentElement){let s=!0;this._resizeObserver=new ResizeObserver(()=>{if(s){s=!1;return}this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this._resize()}),this._resizeObserver.observe(this.canvas.parentElement)}this._rafId===void 0?this.render(performance.now()):this.requestRender()}findObjectById(e){let t=this._scene?.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){let t=this._scene?.getObjectByName(e);return this._createProxyObject(t)}getSplineEvents(){return(this._eventManager?.handlers.Spline).splineEvents}emitEvent(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEvent(e)}emitEventReverse(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEventReverse(e)}addEventListener(e,t){this.canvas.addEventListener(e,t)}removeEventListener(e,t){this.canvas.removeEventListener(e,t)}setZoom(e){this._controls?.orbitControls instanceof EA&&this._controls?.orbitControls.zoomOut(e)}get eventManager(){return this._eventManager}get controls(){return this._controls}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this._resize()}setBackgroundColor(e){let{r:t,g:i,b:r,a:s}={r:0,g:0,b:0,a:1},n=new Ni(t,i,r,s);try{n.setStyle(e)}catch{console.error("This is not a valid css color",e)}this._scene?.setBackgroundColor(n)}dispose(){this.disposed=!0,this._eventManager?.deactivate(),this._scene?.dispose(),this._sharedAssetsManager?.dispose(),this._rafId&&cancelAnimationFrame(this._rafId),this._proxyObjectCache.forEach(e=>{vy.unsubscribe(e)}),this._renderer?.dispose(),this._sharedAssetsManager?.dispose(),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=void 0),this.canvas.style.width="",this.canvas.style.height="",this.canvas.removeAttribute("width"),this.canvas.removeAttribute("height"),this._frameView&&(this._frameView=void 0),this._controls?.dispose(),Cz(this.canvas)}get data(){return this._data}_createProxyObject(e){if(e==null)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);let t={name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,emitEvent(r){e.dispatchEvent({type:"userEvent",eventName:r})},emitEventReverse(r){e.dispatchEvent({type:"userEvent",eventName:r,reverse:!0})}},i=vy(t,(r,s)=>{typeof e[r]!="object"&&Object.getOwnPropertyDescriptor(e,r)?.writable&&(e[r]=s),this.requestRender(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,i),i}};var Eu=window,Cu=Eu.ShadowRoot&&(Eu.ShadyCSS===void 0||Eu.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,fv=Symbol(),OA=new WeakMap,Ch=class{constructor(t,i,r){if(this._$cssResult$=!0,r!==fv)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=i}get styleSheet(){let t=this.o,i=this.t;if(Cu&&t===void 0){let r=i!==void 0&&i.length===1;r&&(t=OA.get(i)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&OA.set(i,t))}return t}toString(){return this.cssText}},LA=e=>new Ch(typeof e=="string"?e:e+"",void 0,fv),mv=(e,...t)=>{let i=e.length===1?e[0]:t.reduce((r,s,n)=>r+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[n+1],e[0]);return new Ch(i,e,fv)},gv=(e,t)=>{Cu?e.adoptedStyleSheets=t.map(i=>i instanceof CSSStyleSheet?i:i.styleSheet):t.forEach(i=>{let r=document.createElement("style"),s=Eu.litNonce;s!==void 0&&r.setAttribute("nonce",s),r.textContent=i.cssText,e.appendChild(r)})},Tu=Cu?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let i="";for(let r of t.cssRules)i+=r.cssText;return LA(i)})(e):e;var vv,Pu=window,IA=Pu.trustedTypes,pV=IA?IA.emptyScript:"",BA=Pu.reactiveElementPolyfillSupport,xv={toAttribute(e,t){switch(t){case Boolean:e=e?pV:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=e!==null;break;case Number:i=e===null?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch{i=null}}return i}},RA=(e,t)=>t!==e&&(t==t||e==e),yv={attribute:!0,type:String,converter:xv,reflect:!1,hasChanged:RA},Ns=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var i;this.finalize(),((i=this.h)!==null&&i!==void 0?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();let t=[];return this.elementProperties.forEach((i,r)=>{let s=this._$Ep(r,i);s!==void 0&&(this._$Ev.set(s,r),t.push(s))}),t}static createProperty(t,i=yv){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){let r=typeof t=="symbol"?Symbol():"__"+t,s=this.getPropertyDescriptor(t,r,i);s!==void 0&&Object.defineProperty(this.prototype,t,s)}}static getPropertyDescriptor(t,i,r){return{get(){return this[i]},set(s){let n=this[t];this[i]=s,this.requestUpdate(t,n,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||yv}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;let t=Object.getPrototypeOf(this);if(t.finalize(),t.h!==void 0&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){let i=this.properties,r=[...Object.getOwnPropertyNames(i),...Object.getOwnPropertySymbols(i)];for(let s of r)this.createProperty(s,i[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){let i=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let s of r)i.unshift(Tu(s))}else t!==void 0&&i.push(Tu(t));return i}static _$Ep(t,i){let r=i.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise(i=>this.enableUpdating=i),this._$AL=new Map,this._$Eg(),this.requestUpdate(),(t=this.constructor.h)===null||t===void 0||t.forEach(i=>i(this))}addController(t){var i,r;((i=this._$ES)!==null&&i!==void 0?i:this._$ES=[]).push(t),this.renderRoot!==void 0&&this.isConnected&&((r=t.hostConnected)===null||r===void 0||r.call(t))}removeController(t){var i;(i=this._$ES)===null||i===void 0||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])})}createRenderRoot(){var t;let i=(t=this.shadowRoot)!==null&&t!==void 0?t:this.attachShadow(this.constructor.shadowRootOptions);return gv(i,this.constructor.elementStyles),i}connectedCallback(){var t;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$ES)===null||t===void 0||t.forEach(i=>{var r;return(r=i.hostConnected)===null||r===void 0?void 0:r.call(i)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$ES)===null||t===void 0||t.forEach(i=>{var r;return(r=i.hostDisconnected)===null||r===void 0?void 0:r.call(i)})}attributeChangedCallback(t,i,r){this._$AK(t,r)}_$EO(t,i,r=yv){var s;let n=this.constructor._$Ep(t,r);if(n!==void 0&&r.reflect===!0){let a=(((s=r.converter)===null||s===void 0?void 0:s.toAttribute)!==void 0?r.converter:xv).toAttribute(i,r.type);this._$El=t,a==null?this.removeAttribute(n):this.setAttribute(n,a),this._$El=null}}_$AK(t,i){var r;let s=this.constructor,n=s._$Ev.get(t);if(n!==void 0&&this._$El!==n){let a=s.getPropertyOptions(n),o=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)===null||r===void 0?void 0:r.fromAttribute)!==void 0?a.converter:xv;this._$El=n,this[n]=o.fromAttribute(i,a.type),this._$El=null}}requestUpdate(t,i,r){let s=!0;t!==void 0&&(((r=r||this.constructor.getPropertyOptions(t)).hasChanged||RA)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),r.reflect===!0&&this._$El!==t&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(t,r))):s=!1),!this.isUpdatePending&&s&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(i){Promise.reject(i)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach((s,n)=>this[n]=s),this._$Ei=void 0);let i=!1,r=this._$AL;try{i=this.shouldUpdate(r),i?(this.willUpdate(r),(t=this._$ES)===null||t===void 0||t.forEach(s=>{var n;return(n=s.hostUpdate)===null||n===void 0?void 0:n.call(s)}),this.update(r)):this._$Ek()}catch(s){throw i=!1,this._$Ek(),s}i&&this._$AE(r)}willUpdate(t){}_$AE(t){var i;(i=this._$ES)===null||i===void 0||i.forEach(r=>{var s;return(s=r.hostUpdated)===null||s===void 0?void 0:s.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){this._$EC!==void 0&&(this._$EC.forEach((i,r)=>this._$EO(r,this[r],i)),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};Ns.finalized=!0,Ns.elementProperties=new Map,Ns.elementStyles=[],Ns.shadowRootOptions={mode:"open"},BA?.({ReactiveElement:Ns}),((vv=Pu.reactiveElementVersions)!==null&&vv!==void 0?vv:Pu.reactiveElementVersions=[]).push("1.6.0");var bv,Du=window,Wo=Du.trustedTypes,NA=Wo?Wo.createPolicy("lit-html",{createHTML:e=>e}):void 0,Sn=`lit$${(Math.random()+"").slice(9)}$`,GA="?"+Sn,fV=`<${GA}>`,Xo=document,Ph=(e="")=>Xo.createComment(e),Dh=e=>e===null||typeof e!="object"&&typeof e!="function",VA=Array.isArray,mV=e=>VA(e)||typeof e?.[Symbol.iterator]=="function",Th=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,zA=/-->/g,FA=/>/g,fa=RegExp(`>|[
5202
+ `}),bf=class extends mr{constructor(e,t){super("OpaquePass",e??Db,t),this.hasTransmissionPass=!1,this.clear=!0,this.needsSwap=!1,this.originalMaterials=new Map}setCamera(e){this.camera=e}setScene(e){this.scene=e??Db}getScene(){return this.scene}render(e,t){this.originalMaterials.clear(),this.camera.layers.enable(3),this.hasTransmissionPass&&this.scene.traverse(r=>{r.layers.isEnabled(3)&&r instanceof Zi&&(this.originalMaterials.set(r.id,r.material),r.material=iV)}),this.camera.layers.enable(8),e.shadowMap.needsUpdate=!0,e.shadowMap.autoUpdate=!0;let i=this.renderToScreen?null:t;e.setRenderTarget(i),this.clear&&e.clear(),e.render(this.scene,this.camera),this.hasTransmissionPass&&this.originalMaterials.forEach((r,s)=>{let n=this.scene.getObjectById(s);n&&(n.material=r)})}};function Ob(e,t){return t&&t.enabled&&e.push(t.effect),e}var rV=class extends zi{constructor(e){super(),this.postprocessingState=ah.defaultData,this._scene=new Kn,this._camera=new Ls,this.effects=new Map,this._renderToScreen=!0,this.clock=new mD,this.renderer=e,this.debug=!1,this.effects.set("bloom",new XG),this.effects.set("chromaticAberration",new qG),this.effects.set("vignette",new JG),this.effects.set("noise",new KG),this.effects.set("colorAverage",new QG),this.effects.set("hueSaturation",new ZG),this.effects.set("brightnessContrast",new YG),this.effects.set("depthOfField",new $G),this.effects.set("pixelation",new eV),this.effectComposer=new SG(this.renderer),this.opaquePass=new bf(this.scene,this.camera),this.transmissionPass=new tV(this.scene,this.camera,this.renderer),this.helperPass=new bf(void 0,this.camera),this.helperPass.hasTransmissionPass=!1,this.helperPass.clear=!1,this.helperClearPass=new Mu(!1,!0,!1),this.helperPassOnTop=new bf(void 0,this.camera),this.helperPassOnTop.hasTransmissionPass=!1,this.helperPassOnTop.clear=!1,this._initCopyPass(),this._initSmaa(),this._initPasses()}get scene(){return this._scene}set scene(e){this._scene=e,this.opaquePass.setScene(e),this.transmissionPass.setScene(e)}set sceneHelpers(e){this.helperPass.setScene(e)}get sceneHelpers(){return this.helperPass.getScene()}set sceneHelpersOnTop(e){this.helperPassOnTop.setScene(e)}get sceneHelpersOnTop(){return this.helperPassOnTop.getScene()}get camera(){return this._camera}set camera(e){this._camera=e,this.opaquePass.setCamera(e),this.transmissionPass.setCamera(e),this.helperPass.setCamera(e),this.helperPassOnTop.setCamera(e)}setTransmissionPassEnabled(e){this.transmissionPass.enabled=e,this.opaquePass.hasTransmissionPass=e}disableHelpers(){this.helperPass.enabled=!1,this.helperClearPass.enabled=!1,this.helperPassOnTop.enabled=!1}enableHelpers(){this.helperPass.enabled=!0,this.helperClearPass.enabled=!0,this.helperPassOnTop.enabled=!0}_initSmaa(){let e=new GG({preset:Za.ULTRA,edgeDetectionMode:dv.COLOR}),t=()=>{e.removeEventListener("load",t),this.dispatchEvent({type:"smaaloaded"})};e.addEventListener("load",t),e.edgeDetectionMaterial.predicationMode=TA.DEPTH,e.edgeDetectionMaterial.edgeDetectionThreshold=.05,e.edgeDetectionMaterial.predicationThreshold=.002,e.edgeDetectionMaterial.predicationScale=1,this.smaaPass=new vf(this.camera,e)}_initPasses(){if(this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.removeAllPasses(),this.transmissionPass.updatePasses(this.renderer),this.effectComposer.addPass(this.opaquePass),this.effectComposer.addPass(this.transmissionPass),this.postprocessingState.enabled){let e=[this.effects.get("pixelation")].reduce(Ob,[]);e.length>0&&(this.uvEffectPass=new vf(this.camera,...e),this.effectComposer.addPass(this.uvEffectPass));let t=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(Ob,[]);t.length>0&&(this.effectPass=new vf(this.camera,...t),this.effectComposer.addPass(this.effectPass))}this.effectComposer.addPass(this.helperPass),this.effectComposer.addPass(this.helperClearPass),this.effectComposer.addPass(this.helperPassOnTop),this.effectComposer.addPass(this.smaaPass)}_initCopyPass(){if(this._savePass)return;let e=new H;this.renderer.getDrawingBufferSize(e),this._rt=new Ut(e.x,e.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:ql,wrapT:ql}),this._rt.samples=0,this._savePass=new Kd(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(e){if(this._renderToScreen===e)return;let t=this.effectComposer;!t||(e===!0?(t.removePass(this._savePass),t.passes[t.passes.length-1].renderToScreen=!0,t.autoRenderToScreen=!0):(t.autoRenderToScreen=!1,t.passes[t.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,this.postprocessingState.enabled||(this._savePass.needsDepthTexture=!0),t.addPass(this._savePass)),this._renderToScreen=e)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}updatePostprocessing(e){let{enabled:t,...i}=e,r=!1;t!==this.postprocessingState.enabled&&(r=!0);for(let s of Object.entries(i)){let n=s[1],a=this.effects.get(s[0]);if(a){a.enabled!==n.enabled&&(r=!0),a.enabled=n.enabled;for(let[o,l]of Object.entries(n))a[o]=l}}this.postprocessingState=e,r&&this._initPasses()}render(){this.effectComposer.render(this.clock.getDelta())}setScissor(e,t,i,r){e instanceof tt?(this.effectComposer.inputBuffer.scissor.set(e.x,e.y,e.z,e.w),this.effectComposer.outputBuffer.scissor.set(e.x,e.y,e.z,e.w)):(this.effectComposer.inputBuffer.scissor.set(e,t,i,r),this.effectComposer.outputBuffer.scissor.set(e,t,i,r));let s=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(s),this.effectComposer.outputBuffer.scissor.multiplyScalar(s),this.renderer.setScissor(e,t,i,r)}setScissorTest(e){this.effectComposer.inputBuffer.scissorTest=e,this.effectComposer.outputBuffer.scissorTest=e,this.renderer.setScissorTest(e)}setViewport(e,t,i,r){e instanceof tt?(this.effectComposer.inputBuffer.viewport.copy(e),this.effectComposer.outputBuffer.viewport.copy(e)):(this.effectComposer.inputBuffer.viewport.set(e,t,i,r),this.effectComposer.outputBuffer.viewport.set(e,t,i,r))}resize(e,t,i){if(this.effectComposer.setSize(e,t,i),this._rt){let r=this.renderer.getPixelRatio();this._rt.setSize(e*r,t*r)}}dispose(){this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.dispose()}},Lb=new gi,sV=class extends ew{constructor(e){super(e),this._pixelRatio=this.getPixelRatio(),this.viewportWidth=1,this.viewportHeight=1,this.resolution=new H,this.pipeline=new rV(this),this.overrideTransmission=e?.overrideTransmission,this.autoClear=!1;let t=this.setPixelRatio.bind(this),i=this.setSize.bind(this),r=this.getContext();if(r&&"drawingBufferColorSpace"in r)try{r.drawingBufferColorSpace="display-p3"}catch(s){console.warn(s)}this.setPixelRatio=s=>{this._pixelRatio=s,t(s)},this.setSize=(s,n,a=!0)=>{(this.viewportWidth!==s||this.viewportHeight!==n)&&(this.viewportWidth=s,this.viewportHeight=n,i(s,n,a),this.normalRenderTarget?.setSize(s*this._pixelRatio,n*this._pixelRatio),this.transmissionRenderTarget?.setSize(s*this._pixelRatio/2,n*this._pixelRatio/2),this.transmissionDepthTarget?.setSize(s*this._pixelRatio/2,n*this._pixelRatio/2),this.pipeline.resize(s,n,a))},this._superDispose=this.dispose,this.dispose=this._currentDispose}createTransmissionRenderTarget(){this.transmissionRenderTarget===void 0&&(this.transmissionRenderTarget=new Ut(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{generateMipmaps:!0,minFilter:fh,magFilter:ft,wrapS:Gi,wrapT:Gi,depthBuffer:!1}),this.transmissionDepthTarget=new Ut(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{minFilter:Lt,magFilter:Lt,depthBuffer:!1}))}createNormalRenderTarget(){this.normalRenderTarget===void 0&&(this.normalRenderTarget=new Ut(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio,{generateMipmaps:!1,minFilter:Lt,magFilter:Lt,type:sn,depthTexture:new Zm(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio)}))}renderNormal(e,t){this.normalRenderTarget&&(this.setClearColor(0),t.layers.enable(8),t.layers.disable(0),t.layers.disable(3),this.setRenderTarget(this.normalRenderTarget),this.clear(),t instanceof Ls?$p.uniforms.depthContrast.value=(t.far-t.near)/1e4:$p.uniforms.depthContrast.value=1,e.overrideMaterial=$p,this.render(e,t),this.setClearColor(e.bgColor,e.bgColor.a),this.setRenderTarget(null),e.overrideMaterial=e.wireframeState?Pm:null,t.layers.enable(0),t.layers.enable(3))}renderSplineScene(e,t,i,r,s){this.setClearColor(e.bgColor,e.bgColor.a),i.penumbraSize.forEach((a,o)=>{Ct.penumbraSize.value[o]=a}),Ct.pixelRatioNode.value=this.getPixelRatio(),this.resolution.x!==0&&this.resolution.y!==0?Ct.resolution.value.set(this.resolution.x,this.resolution.y):Ct.resolution.value.set(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio),this.overrideNormal!==void 0?(Ct.normalRenderTarget.value=this.overrideNormal,Ct.normalRenderTargetDepth.value=Lb):e.needsNormal()&&(this.createNormalRenderTarget(),Ct.normalRenderTarget.value=this.normalRenderTarget.texture,Ct.normalRenderTargetDepth.value=this.normalRenderTarget.depthTexture,this.renderNormal(e,t));let n=!1;if(this.overrideTransmission!==void 0)Ct.transmissionRenderTarget.value=this.overrideTransmission,Ct.transmissionRenderTargetDepth.value=Lb,this.pipeline.setTransmissionPassEnabled(!1);else{let a=e.needsTransmission();a&&(this.transmissionRenderTarget===void 0&&(n=!0),this.createTransmissionRenderTarget(),Ct.transmissionRenderTarget.value=this.transmissionRenderTarget.texture,Ct.transmissionRenderTargetDepth.value=this.transmissionDepthTarget.texture),this.pipeline.setTransmissionPassEnabled(a)}t.layers.enable(3),t.layers.enable(8),this.pipeline.sceneHelpers=r,this.pipeline.sceneHelpersOnTop=s,this.pipeline.scene=e,this.pipeline.camera=t,n&&this.pipeline.transmissionPass.updatePasses(this),this.pipeline.postprocessingState!==e.postprocessing&&this.pipeline.updatePostprocessing(e.postprocessing),this.clearAlphaOverride!==void 0&&this.setClearAlpha(this.clearAlphaOverride),e.overrideMaterial=e.wireframeState?Pm:null,this.pipeline.render()}_currentDispose(){this._superDispose(),this.pipeline.dispose(),this.transmissionRenderTarget?.dispose(),this.transmissionDepthTarget?.dispose(),this.normalRenderTarget?.dispose(),this.normalRenderTarget?.depthTexture?.dispose()}},nV=class{get sharedAssets(){return this.shared}constructor(e,t={}){this.shared=new vu(e.shared,t),this.scene=new bu(e.scene,this.sharedAssets),this.scene.switchActiveCamera(this.scene.activeCamera)}reset(e,t){this.scene.clearScene(),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}dispose(){this.scene.dispose(),this.shared.dispose()}gc(){this.shared.geometryCache.startGc(),this.shared.geometryCache2.startGc(),this.scene.traverseEntity(e=>{e instanceof Or&&e.markGeometryAsReachable(this.shared)}),this.shared.geometryCache.endGc(),this.shared.geometryCache2.endGc()}},aV=class{constructor({x:e=10,y:t=10}){this._startTime=0;let i=document.getElementById("spe-perfs");i?this.element=i:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){this.element.parentElement?.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let e=performance.now()-this._startTime;this.element.innerHTML=e.toFixed(3)+" ms"}};function oV(e){let t;if(e.index)for(let i=0;i<e.index.array.length;i+=3)t=e.index.array[i],e.index.array[i]=e.index.array[i+2],e.index.array[i+2]=t}function Yl(e){return e instanceof ch?"SubdivObject":e.geometry.type==="NonParametricGeometry"?"NonParametric":"Mesh"}function lV(e,t){let i={};return e.traverseEntity(r=>{if(!r.visible||!(r instanceof Zi)||r.type!=="Mesh"||Array.isArray(r.material)||r.states&&Object.keys(r.states).length)return;let s=r.parent;for(;s;){if(s instanceof Zi&&r.states&&Object.keys(r.states).length)return;s=s.parent}let n=r.material.uuid,a=t.shared.materials[n];if(a){if(!Qi.isMergable(a))return}else{let l=t.scene.objects.get(r.uuid)?.data;if(l&&"material"in l&&typeof l.material!="string"){if(!Qi.isMergable(l.material))return;n=Qi.getHash(l.material)}}i[n]||(i[n]={});let o=i[n][Yl(r)];if(o){if(o.push(r),r.cloner)for(let l of r.cloner.children)o.push(l)}else if(i[n][Yl(r)]=[r],r.cloner)for(let l of r.cloner.children)i[n][Yl(r)].push(l)}),i}function hV(e){let t=0;return Object.values(e).forEach(i=>{Object.values(i).forEach(r=>{let s=r.length;s>t&&(t=s)})}),t}function cV(e,t){let i=lV(t,e),r=hV(i),s=new Array(r),n=0,a=new Array(r),o=0,l=new Array(r),h=0,u=new Array(r),c=0;for(let[d,p]of Object.entries(i))for(let m of Object.values(p)){if(o=0,h=0,m.forEach(f=>{f instanceof Zi&&(a[o++]=f.geometry.clone(),l[h++]=f)}),h<2)continue;for(let f=0;f<h;f++)l[f].updateWorldMatrix(!0,!1),a[f].applyMatrix4(l[f].matrixWorld),l[f].matrixWorld.determinant()<0&&oV(a[f]);let g=to(a.slice(0,o),!1);if(g){let f;switch(d){case"SubdivObject":{console.warn("Turning subdiv object into mesh"),f=new Xi(g,l[0].material);break}default:{f=new Xi(g,l[0].material);break}}f.castShadow=l[0].castShadow,f.receiveShadow=l[0].receiveShadow,t.add(f);let v=y=>{c=0;for(let b of y)b.children&&v(b.children),b instanceof Zi&&(Array.isArray(b.material)||i[b.material.uuid]&&i[b.material.uuid][Yl(b)]&&i[b.material.uuid][Yl(b)].length>1||(u[c++]=b));for(let b=0;b<c;b++)t.attach(u[b])};for(let y=0;y<h;y++){let b=l[y];v(b.children),s[n++]=b}}}for(let d=0;d<n;d++)s[d].removeFromParent()}var dV=new H;function uV(e){let t="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.";e.endsWith(".spline")?console.warn(t+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(t)}var pv=class{constructor(e,{renderOnDemand:t=!0}={}){this._viewportMode=1,this._viewportWidth=window.innerWidth,this._viewportHeight=window.innerHeight,this._proxyObjectCache=new Map,this._lastTime=performance.now(),this.time=performance.now(),this.dt=0,this._skipRender=!1,this.renderOnDemand=!0,this.disposed=!1,this.requestRender=()=>{this._skipRender=!1},this.render=i=>{!this._renderer||(this._rafId=requestAnimationFrame(this.render),this.time=i,this.dt=this.time-this._lastTime,this._lastTime=this.time,this._perfs?.start(),!(this.renderOnDemand&&this._skipRender)&&(this._skipRender=this._controls?.update(this.dt)??!0,this._eventManager&&(this._eventManager.isEnable||this._eventManager.activate(),this._eventManager.handlers.Follow.onAnimationFrameDamping(),this._eventManager.handlers.LookAt.onAnimationFrameDamping(),(this._eventManager.handlers.Start.hasVideoAction||this._eventManager.handlers.Basic.hasVideoAction||this._eventManager.handlers.Conditional.hasVideoAction)&&(this._skipRender=!1)),this._scene&&this._camera&&this._renderer.renderSplineScene(this._scene,this._camera,this._sharedAssetsManager),this._perfs?.end()))},this._resize=Zw(()=>{!this._renderer||(this._viewportMode===1&&this._frameView&&(this._frameView.frameSize=dV.set(this._viewportWidth,this._viewportHeight)),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._viewportMode!==1&&this._frameView?.updateViewport(),this._camera&&(this._frameView?.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()),this.requestRender())},10),this.canvas=e,this.renderOnDemand=t,window.location.search.includes("perfs")&&(this._perfs=new aV({x:10,y:10})),Ez(e)}async load(e,t){uV(e),this.disposed=!1;let i=await(await fetch(e,t)).arrayBuffer();await this.start(i)}async start(e,{interactive:t=!0}={}){if(this.disposed)return;let i=await AH(e);this._data=i,await Promise.all([Lx(i)&&JU(),ck(i)&&QU(),i.scene.environment.usePhysics&&GN(),Cx(i)&&K6()].filter(Boolean)),this._eventManager&&this._eventManager.deactivate(),this._controls&&this._controls.dispose(),this._scene?.dispose();let r=new nV(i);if(this._scene=r.scene,this._sharedAssetsManager=r.sharedAssets,this._camera=this._scene.activeCamera,window.location.search.includes("merge-geometries")){let s=performance.now();cV(i,r.scene);let n=performance.now();console.log("Merged geometries in ",n-s," ms")}if(Lx(i)&&this._scene.traverse(s=>{cn(s)&&s.recomputeBoolean()}),this._sharedAssetsManager.setRequestRender(()=>{this.requestRender(),this._scene?.traverse(s=>{s instanceof Xd&&s.pendingMediaLoad&&s.update()})}),Cx(i)&&eH(i)){let s=Object.keys(i.shared.fonts).map(n=>this._sharedAssetsManager.getFont(n)).map(n=>n.loadingPromise);await Promise.all(s)}if(this._scene.rewriteEventsBeforeGoToPlayMode(),wA(i.scene,this._scene,this._sharedAssetsManager),this._renderer||(this._renderer=new sV({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.pipeline.addEventListener("smaaloaded",this.requestRender),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=i.scene.environment.ambientLight.softShadows?Vm:Bb,Kk(i.scene.environment.ambientLight.softShadowQuality)),this._frameView)this._frameView.setCamera(this._camera);else{let s=Object.values(i.frames)[0];if(s.preset==="fullscreen"){this._viewportMode=1;let{width:n,height:a}=window.getComputedStyle(this.canvas);this.canvas.parentElement&&(n==="300px"||n==="auto")?(this._viewportWidth=this.canvas.parentElement.clientWidth||300,this.canvas.style.width="100%"):this._viewportWidth=this.canvas.clientWidth,this.canvas.parentElement&&(a==="150px"||a==="auto")?(this._viewportHeight=this.canvas.parentElement.clientHeight||150,this.canvas.style.height="100%"):this._viewportHeight=this.canvas.clientHeight}else this._viewportMode=2,this._viewportWidth=s.size[0],this._viewportHeight=s.size[1],this.canvas.style.width=`${this._viewportWidth}px`,this.canvas.style.height=`${this._viewportHeight}px`;this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._frameView=new EH(this._renderer,this._camera,new H(this._viewportWidth,this._viewportHeight),new H(window.innerWidth,window.innerHeight))}if(t&&(this._scene.updateMatrixWorld(!0),this._controls=new tH(i,this._scene,this._renderer,this.requestRender,this._sharedAssetsManager,!0),this._eventManager=new MH(this._renderer,this._scene,this._camera,i.scene.publish.stopRaycast,i.scene.publish.preventScroll,i.scene.publish.hideCursor,this._sharedAssetsManager,this.requestRender,this._controls,!0)),this._resize(),!this._resizeObserver&&this.canvas.parentElement){let s=!0;this._resizeObserver=new ResizeObserver(()=>{if(s){s=!1;return}this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this._resize()}),this._resizeObserver.observe(this.canvas.parentElement)}this._rafId===void 0?this.render(performance.now()):this.requestRender()}findObjectById(e){let t=this._scene?.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){let t=this._scene?.getObjectByName(e);return this._createProxyObject(t)}getSplineEvents(){return(this._eventManager?.handlers.Spline).splineEvents}emitEvent(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEvent(e)}emitEventReverse(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEventReverse(e)}addEventListener(e,t){this.canvas.addEventListener(e,t)}removeEventListener(e,t){this.canvas.removeEventListener(e,t)}setZoom(e){this._controls?.orbitControls instanceof EA&&this._controls?.orbitControls.zoomOut(e)}get eventManager(){return this._eventManager}get controls(){return this._controls}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this._resize()}setBackgroundColor(e){let{r:t,g:i,b:r,a:s}={r:0,g:0,b:0,a:1},n=new Ni(t,i,r,s);try{n.setStyle(e)}catch{console.error("This is not a valid css color",e)}this._scene?.setBackgroundColor(n),this.requestRender()}dispose(){this.disposed=!0,this._eventManager?.deactivate(),this._scene?.dispose(),this._sharedAssetsManager?.dispose(),this._rafId&&cancelAnimationFrame(this._rafId),this._proxyObjectCache.forEach(e=>{vy.unsubscribe(e)}),this._renderer?.dispose(),this._sharedAssetsManager?.dispose(),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=void 0),this.canvas.style.width="",this.canvas.style.height="",this.canvas.removeAttribute("width"),this.canvas.removeAttribute("height"),this._frameView&&(this._frameView=void 0),this._controls?.dispose(),Cz(this.canvas)}get data(){return this._data}_createProxyObject(e){if(e==null)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);let t={name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,emitEvent(r){e.dispatchEvent({type:"userEvent",eventName:r})},emitEventReverse(r){e.dispatchEvent({type:"userEvent",eventName:r,reverse:!0})}},i=vy(t,(r,s)=>{typeof e[r]!="object"&&Object.getOwnPropertyDescriptor(e,r)?.writable&&(e[r]=s),this.requestRender(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,i),i}};var Eu=window,Cu=Eu.ShadowRoot&&(Eu.ShadyCSS===void 0||Eu.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,fv=Symbol(),OA=new WeakMap,Ch=class{constructor(t,i,r){if(this._$cssResult$=!0,r!==fv)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=i}get styleSheet(){let t=this.o,i=this.t;if(Cu&&t===void 0){let r=i!==void 0&&i.length===1;r&&(t=OA.get(i)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&OA.set(i,t))}return t}toString(){return this.cssText}},LA=e=>new Ch(typeof e=="string"?e:e+"",void 0,fv),mv=(e,...t)=>{let i=e.length===1?e[0]:t.reduce((r,s,n)=>r+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[n+1],e[0]);return new Ch(i,e,fv)},gv=(e,t)=>{Cu?e.adoptedStyleSheets=t.map(i=>i instanceof CSSStyleSheet?i:i.styleSheet):t.forEach(i=>{let r=document.createElement("style"),s=Eu.litNonce;s!==void 0&&r.setAttribute("nonce",s),r.textContent=i.cssText,e.appendChild(r)})},Tu=Cu?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let i="";for(let r of t.cssRules)i+=r.cssText;return LA(i)})(e):e;var vv,Pu=window,IA=Pu.trustedTypes,pV=IA?IA.emptyScript:"",BA=Pu.reactiveElementPolyfillSupport,xv={toAttribute(e,t){switch(t){case Boolean:e=e?pV:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=e!==null;break;case Number:i=e===null?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch{i=null}}return i}},RA=(e,t)=>t!==e&&(t==t||e==e),yv={attribute:!0,type:String,converter:xv,reflect:!1,hasChanged:RA},Ns=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var i;this.finalize(),((i=this.h)!==null&&i!==void 0?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();let t=[];return this.elementProperties.forEach((i,r)=>{let s=this._$Ep(r,i);s!==void 0&&(this._$Ev.set(s,r),t.push(s))}),t}static createProperty(t,i=yv){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){let r=typeof t=="symbol"?Symbol():"__"+t,s=this.getPropertyDescriptor(t,r,i);s!==void 0&&Object.defineProperty(this.prototype,t,s)}}static getPropertyDescriptor(t,i,r){return{get(){return this[i]},set(s){let n=this[t];this[i]=s,this.requestUpdate(t,n,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||yv}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;let t=Object.getPrototypeOf(this);if(t.finalize(),t.h!==void 0&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){let i=this.properties,r=[...Object.getOwnPropertyNames(i),...Object.getOwnPropertySymbols(i)];for(let s of r)this.createProperty(s,i[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){let i=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let s of r)i.unshift(Tu(s))}else t!==void 0&&i.push(Tu(t));return i}static _$Ep(t,i){let r=i.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise(i=>this.enableUpdating=i),this._$AL=new Map,this._$Eg(),this.requestUpdate(),(t=this.constructor.h)===null||t===void 0||t.forEach(i=>i(this))}addController(t){var i,r;((i=this._$ES)!==null&&i!==void 0?i:this._$ES=[]).push(t),this.renderRoot!==void 0&&this.isConnected&&((r=t.hostConnected)===null||r===void 0||r.call(t))}removeController(t){var i;(i=this._$ES)===null||i===void 0||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])})}createRenderRoot(){var t;let i=(t=this.shadowRoot)!==null&&t!==void 0?t:this.attachShadow(this.constructor.shadowRootOptions);return gv(i,this.constructor.elementStyles),i}connectedCallback(){var t;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$ES)===null||t===void 0||t.forEach(i=>{var r;return(r=i.hostConnected)===null||r===void 0?void 0:r.call(i)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$ES)===null||t===void 0||t.forEach(i=>{var r;return(r=i.hostDisconnected)===null||r===void 0?void 0:r.call(i)})}attributeChangedCallback(t,i,r){this._$AK(t,r)}_$EO(t,i,r=yv){var s;let n=this.constructor._$Ep(t,r);if(n!==void 0&&r.reflect===!0){let a=(((s=r.converter)===null||s===void 0?void 0:s.toAttribute)!==void 0?r.converter:xv).toAttribute(i,r.type);this._$El=t,a==null?this.removeAttribute(n):this.setAttribute(n,a),this._$El=null}}_$AK(t,i){var r;let s=this.constructor,n=s._$Ev.get(t);if(n!==void 0&&this._$El!==n){let a=s.getPropertyOptions(n),o=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)===null||r===void 0?void 0:r.fromAttribute)!==void 0?a.converter:xv;this._$El=n,this[n]=o.fromAttribute(i,a.type),this._$El=null}}requestUpdate(t,i,r){let s=!0;t!==void 0&&(((r=r||this.constructor.getPropertyOptions(t)).hasChanged||RA)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),r.reflect===!0&&this._$El!==t&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(t,r))):s=!1),!this.isUpdatePending&&s&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(i){Promise.reject(i)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach((s,n)=>this[n]=s),this._$Ei=void 0);let i=!1,r=this._$AL;try{i=this.shouldUpdate(r),i?(this.willUpdate(r),(t=this._$ES)===null||t===void 0||t.forEach(s=>{var n;return(n=s.hostUpdate)===null||n===void 0?void 0:n.call(s)}),this.update(r)):this._$Ek()}catch(s){throw i=!1,this._$Ek(),s}i&&this._$AE(r)}willUpdate(t){}_$AE(t){var i;(i=this._$ES)===null||i===void 0||i.forEach(r=>{var s;return(s=r.hostUpdated)===null||s===void 0?void 0:s.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){this._$EC!==void 0&&(this._$EC.forEach((i,r)=>this._$EO(r,this[r],i)),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};Ns.finalized=!0,Ns.elementProperties=new Map,Ns.elementStyles=[],Ns.shadowRootOptions={mode:"open"},BA?.({ReactiveElement:Ns}),((vv=Pu.reactiveElementVersions)!==null&&vv!==void 0?vv:Pu.reactiveElementVersions=[]).push("1.6.0");var bv,Du=window,Wo=Du.trustedTypes,NA=Wo?Wo.createPolicy("lit-html",{createHTML:e=>e}):void 0,Sn=`lit$${(Math.random()+"").slice(9)}$`,GA="?"+Sn,fV=`<${GA}>`,Xo=document,Ph=(e="")=>Xo.createComment(e),Dh=e=>e===null||typeof e!="object"&&typeof e!="function",VA=Array.isArray,mV=e=>VA(e)||typeof e?.[Symbol.iterator]=="function",Th=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,zA=/-->/g,FA=/>/g,fa=RegExp(`>|[
5203
5203
  \f\r](?:([^\\s"'>=/]+)([
5204
5204
  \f\r]*=[
5205
5205
  \f\r]*(?:[^
@@ -5279,7 +5279,7 @@ outputColor=vec4(color,inputColor.a);}`,Wc={DEFAULT:0,ESKIL:1},WG=class extends
5279
5279
  />
5280
5280
  </svg>
5281
5281
  </a>
5282
- </div>`,Ti=class extends An{constructor(){super();this.url=null;this.width=void 0;this.height=void 0;this.background=void 0;this.loading="auto";this.unloadable=!1;this.eventsTarget=void 0;this.preloader=!1;this._intersectionObserver=null;this._isElementInViewport=!1;this._loaded=!1;this._loadedUrl=null;this._wasContextLost=!1;this._handleContextLost=()=>{this._wasContextLost=!0,this._loadedUrl=null,this._spline.dispose(),this._isElementInViewport&&this.load(),this.dispatchEvent(new CustomEvent("context-loss",{detail:{}}))};this._handleContextRestored=()=>{};this.onLoaded=()=>{this._loaded=!0,this.eventsTarget!==void 0&&this._spline.eventManager.updateUseWindowEvents(this.eventsTarget==="global"),this.background!==void 0&&this._spline?.setBackgroundColor(this.background),this._spline?.data.scene.publish.settings.web.logo!==!1&&(this._logo.style.display="flex"),this.preloader&&(this._preloader.style.display="none"),setTimeout(()=>{this._canvas.style.visibility="visible"}),this.dispatchEvent(new CustomEvent("load-complete",{detail:{url:this.url}})),(this.hint??this._spline.data.scene.publish.settings.web.hint)&&(this._canvas.addEventListener("pointerdown",this.onInteract),this._canvas.addEventListener("pointerup",this.onInteract),this._hintDrag.style.display="block")};this.onInteract=()=>{this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none"};this.attachShadow({mode:"open"});let i=this.shadowRoot;Ou(xV,i),this._container=i.querySelector("#container"),this._canvas=i.querySelector("#spline"),this._logo=i.querySelector("#logo"),this._hintDrag=i.querySelector("#hint-drag"),this._preloader=i.querySelector("#preloader"),this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new pv(this._canvas),Lu?this._intersectionObserver=new IntersectionObserver(r=>{for(let s of r)s.target===this&&(this._isElementInViewport=s.isIntersecting,this._isElementInViewport&&(!this._loaded||this._wasContextLost)?this.load():this.unloadable&&!this._isElementInViewport&&this._loaded&&this.unload(),this.dispatchEvent(new CustomEvent("viewport-intersection",{detail:{intersection:this._isElementInViewport}})))},{root:null,rootMargin:"0px",threshold:1e-5}):this._isElementInViewport=!0}unload(){!this._loaded||(this._loaded=!1,this._loadedUrl=null,this._spline.dispose(),this.dispatchEvent(new CustomEvent("unload",{detail:{}})))}recreateCanvas(){let i=this._canvas;i.removeEventListener("pointerdown",this.onInteract),i.removeEventListener("pointerup",this.onInteract),i.removeEventListener("webglcontextlost",this._handleContextLost),i.removeEventListener("webglcontextrestored",this._handleContextRestored);let r=document.createElement("canvas");this._container.insertBefore(r,this._canvas),this._container.removeChild(this._canvas),r.setAttribute("id","spline"),this._canvas=r,this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new pv(this._canvas)}load(){this._loaded&&!this._wasContextLost||!this._isElementInViewport&&this.loading!=="eager"||!this.url||this.url===this._loadedUrl||(this.preloader&&(this._preloader.style.display="flex"),this._canvas.style.visibility="hidden",this.dispatchEvent(new CustomEvent("load-start",{detail:{url:this.url}})),this._wasContextLost&&this.recreateCanvas(),this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none",this._loadedUrl=this.url,this._spline.load(this.url).then(this.onLoaded))}updated(i){if(super.updated(i),i.has("url")&&(this.url==null&&this._loaded?this.unload():this.url!==this._loadedUrl&&this.load()),i.has("width")&&this.width!==void 0&&(this._container.style.width=this.width+"px"),i.has("height")&&this.height!==void 0&&(this._container.style.height=this.height+"px"),i.has("eventsTarget")&&this.eventsTarget!==void 0){let r=this.eventsTarget==="global";this._spline?.eventManager?.updateUseWindowEvents(r),this._spline?.controls?.updateUseWindowEvents(r)}}connectedCallback(){super.connectedCallback(),Lu&&this._intersectionObserver.observe(this)}disconnectedCallback(){Lu&&this._intersectionObserver.unobserve(this),super.disconnectedCallback()}};Ti.styles=mv`
5282
+ </div>`,Ti=class extends An{constructor(){super();this.url=null;this.width=void 0;this.height=void 0;this.background=void 0;this.loading="auto";this.unloadable=!1;this.eventsTarget=void 0;this.preloader=!1;this._intersectionObserver=null;this._isElementInViewport=!1;this._loaded=!1;this._loadedUrl=null;this._wasContextLost=!1;this._handleContextLost=()=>{this._wasContextLost=!0,this._loadedUrl=null,this._spline.dispose(),this._isElementInViewport&&this.load(),this.dispatchEvent(new CustomEvent("context-loss",{detail:{}}))};this._handleContextRestored=()=>{};this.onLoaded=()=>{this._loaded=!0,this.eventsTarget!==void 0&&this._spline.eventManager.updateUseWindowEvents(this.eventsTarget==="global"),this.background!==void 0&&this._spline?.setBackgroundColor(this.background),this._spline?.data.scene.publish.settings.web.logo!==!1&&(this._logo.style.display="flex"),this.preloader&&(this._preloader.style.display="none"),setTimeout(()=>{this._canvas.style.visibility="visible"}),this.dispatchEvent(new CustomEvent("load-complete",{detail:{url:this.url}})),(this.hint??this._spline.data.scene.publish.settings.web.hint)&&(this._canvas.addEventListener("pointerdown",this.onInteract),this._canvas.addEventListener("pointerup",this.onInteract),this._hintDrag.style.display="block")};this.onInteract=()=>{this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none"};this.attachShadow({mode:"open"});let i=this.shadowRoot;Ou(xV,i),this._container=i.querySelector("#container"),this._canvas=i.querySelector("#spline"),this._logo=i.querySelector("#logo"),this._hintDrag=i.querySelector("#hint-drag"),this._preloader=i.querySelector("#preloader"),this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new pv(this._canvas),Lu?this._intersectionObserver=new IntersectionObserver(r=>{for(let s of r)s.target===this&&(this._isElementInViewport=s.isIntersecting,this._isElementInViewport&&(!this._loaded||this._wasContextLost)?this.load():this.unloadable&&!this._isElementInViewport&&this._loaded&&this.unload(),this.dispatchEvent(new CustomEvent("viewport-intersection",{detail:{intersection:this._isElementInViewport}})))},{root:null,rootMargin:"0px",threshold:1e-5}):this._isElementInViewport=!0}unload(){!this._loaded||(this._loaded=!1,this._loadedUrl=null,this._spline.dispose(),this.dispatchEvent(new CustomEvent("unload",{detail:{}})))}recreateCanvas(){let i=this._canvas;i.removeEventListener("pointerdown",this.onInteract),i.removeEventListener("pointerup",this.onInteract),i.removeEventListener("webglcontextlost",this._handleContextLost),i.removeEventListener("webglcontextrestored",this._handleContextRestored);let r=document.createElement("canvas");this._container.insertBefore(r,this._canvas),this._container.removeChild(this._canvas),r.setAttribute("id","spline"),this._canvas=r,this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new pv(this._canvas)}load(){this._loaded&&!this._wasContextLost||!this._isElementInViewport&&this.loading!=="eager"||!this.url||this.url===this._loadedUrl||(this.preloader&&(this._preloader.style.display="flex"),this._canvas.style.visibility="hidden",this.dispatchEvent(new CustomEvent("load-start",{detail:{url:this.url}})),this._wasContextLost&&this.recreateCanvas(),this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none",this._loadedUrl=this.url,this._spline.load(this.url).then(this.onLoaded))}updated(i){if(super.updated(i),i.has("url")&&(this.url==null&&this._loaded?this.unload():this.url!==this._loadedUrl&&this.load()),i.has("width")&&this.width!==void 0&&(this._container.style.width=this.width+"px"),i.has("height")&&this.height!==void 0&&(this._container.style.height=this.height+"px"),i.has("background")&&this.background!==void 0&&this._spline?.setBackgroundColor(this.background),i.has("eventsTarget")&&this.eventsTarget!==void 0){let r=this.eventsTarget==="global";this._spline?.eventManager?.updateUseWindowEvents(r),this._spline?.controls?.updateUseWindowEvents(r)}}connectedCallback(){super.connectedCallback(),Lu&&this._intersectionObserver.observe(this)}disconnectedCallback(){Lu&&this._intersectionObserver.unobserve(this),super.disconnectedCallback()}};Ti.styles=mv`
5283
5283
  :host {
5284
5284
  display: block;
5285
5285
  }
@@ -5199,7 +5199,7 @@ outputColor=vec4(color,inputColor.a);}`,Gc={DEFAULT:0,ESKIL:1},zG=class extends
5199
5199
  void main() {
5200
5200
  gl_FragColor = vec4(0.0);
5201
5201
  }
5202
- `}),yf=class extends mr{constructor(e,t){super("OpaquePass",e??Eb,t),this.hasTransmissionPass=!1,this.clear=!0,this.needsSwap=!1,this.originalMaterials=new Map}setCamera(e){this.camera=e}setScene(e){this.scene=e??Eb}getScene(){return this.scene}render(e,t){this.originalMaterials.clear(),this.camera.layers.enable(3),this.hasTransmissionPass&&this.scene.traverse(r=>{r.layers.isEnabled(3)&&r instanceof Zi&&(this.originalMaterials.set(r.id,r.material),r.material=qG)}),this.camera.layers.enable(8),e.shadowMap.needsUpdate=!0,e.shadowMap.autoUpdate=!0;let i=this.renderToScreen?null:t;e.setRenderTarget(i),this.clear&&e.clear(),e.render(this.scene,this.camera),this.hasTransmissionPass&&this.originalMaterials.forEach((r,s)=>{let n=this.scene.getObjectById(s);n&&(n.material=r)})}};function Cb(e,t){return t&&t.enabled&&e.push(t.effect),e}var QG=class extends Ni{constructor(e){super(),this.postprocessingState=nh.defaultData,this._scene=new Kn,this._camera=new Ls,this.effects=new Map,this._renderToScreen=!0,this.clock=new oD,this.renderer=e,this.debug=!1,this.effects.set("bloom",new FG),this.effects.set("chromaticAberration",new kG),this.effects.set("vignette",new VG),this.effects.set("noise",new GG),this.effects.set("colorAverage",new jG),this.effects.set("hueSaturation",new HG),this.effects.set("brightnessContrast",new UG),this.effects.set("depthOfField",new WG),this.effects.set("pixelation",new XG),this.effectComposer=new mG(this.renderer),this.opaquePass=new yf(this.scene,this.camera),this.transmissionPass=new YG(this.scene,this.camera,this.renderer),this.helperPass=new yf(void 0,this.camera),this.helperPass.hasTransmissionPass=!1,this.helperPass.clear=!1,this.helperClearPass=new Su(!1,!0,!1),this.helperPassOnTop=new yf(void 0,this.camera),this.helperPassOnTop.hasTransmissionPass=!1,this.helperPassOnTop.clear=!1,this._initCopyPass(),this._initSmaa(),this._initPasses()}get scene(){return this._scene}set scene(e){this._scene=e,this.opaquePass.setScene(e),this.transmissionPass.setScene(e)}set sceneHelpers(e){this.helperPass.setScene(e)}get sceneHelpers(){return this.helperPass.getScene()}set sceneHelpersOnTop(e){this.helperPassOnTop.setScene(e)}get sceneHelpersOnTop(){return this.helperPassOnTop.getScene()}get camera(){return this._camera}set camera(e){this._camera=e,this.opaquePass.setCamera(e),this.transmissionPass.setCamera(e),this.helperPass.setCamera(e),this.helperPassOnTop.setCamera(e)}setTransmissionPassEnabled(e){this.transmissionPass.enabled=e,this.opaquePass.hasTransmissionPass=e}disableHelpers(){this.helperPass.enabled=!1,this.helperClearPass.enabled=!1,this.helperPassOnTop.enabled=!1}enableHelpers(){this.helperPass.enabled=!0,this.helperClearPass.enabled=!0,this.helperPassOnTop.enabled=!0}_initSmaa(){let e=new RG({preset:Za.ULTRA,edgeDetectionMode:hv.COLOR}),t=()=>{e.removeEventListener("load",t),this.dispatchEvent({type:"smaaloaded"})};e.addEventListener("load",t),e.edgeDetectionMaterial.predicationMode=AA.DEPTH,e.edgeDetectionMaterial.edgeDetectionThreshold=.05,e.edgeDetectionMaterial.predicationThreshold=.002,e.edgeDetectionMaterial.predicationScale=1,this.smaaPass=new mf(this.camera,e)}_initPasses(){if(this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.removeAllPasses(),this.transmissionPass.updatePasses(this.renderer),this.effectComposer.addPass(this.opaquePass),this.effectComposer.addPass(this.transmissionPass),this.postprocessingState.enabled){let e=[this.effects.get("pixelation")].reduce(Cb,[]);e.length>0&&(this.uvEffectPass=new mf(this.camera,...e),this.effectComposer.addPass(this.uvEffectPass));let t=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(Cb,[]);t.length>0&&(this.effectPass=new mf(this.camera,...t),this.effectComposer.addPass(this.effectPass))}this.effectComposer.addPass(this.helperPass),this.effectComposer.addPass(this.helperClearPass),this.effectComposer.addPass(this.helperPassOnTop),this.effectComposer.addPass(this.smaaPass)}_initCopyPass(){if(this._savePass)return;let e=new H;this.renderer.getDrawingBufferSize(e),this._rt=new Ut(e.x,e.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:Yl,wrapT:Yl}),this._rt.samples=0,this._savePass=new Qd(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(e){if(this._renderToScreen===e)return;let t=this.effectComposer;!t||(e===!0?(t.removePass(this._savePass),t.passes[t.passes.length-1].renderToScreen=!0,t.autoRenderToScreen=!0):(t.autoRenderToScreen=!1,t.passes[t.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,this.postprocessingState.enabled||(this._savePass.needsDepthTexture=!0),t.addPass(this._savePass)),this._renderToScreen=e)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}updatePostprocessing(e){let{enabled:t,...i}=e,r=!1;t!==this.postprocessingState.enabled&&(r=!0);for(let s of Object.entries(i)){let n=s[1],a=this.effects.get(s[0]);if(a){a.enabled!==n.enabled&&(r=!0),a.enabled=n.enabled;for(let[o,l]of Object.entries(n))a[o]=l}}this.postprocessingState=e,r&&this._initPasses()}render(){this.effectComposer.render(this.clock.getDelta())}setScissor(e,t,i,r){e instanceof tt?(this.effectComposer.inputBuffer.scissor.set(e.x,e.y,e.z,e.w),this.effectComposer.outputBuffer.scissor.set(e.x,e.y,e.z,e.w)):(this.effectComposer.inputBuffer.scissor.set(e,t,i,r),this.effectComposer.outputBuffer.scissor.set(e,t,i,r));let s=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(s),this.effectComposer.outputBuffer.scissor.multiplyScalar(s),this.renderer.setScissor(e,t,i,r)}setScissorTest(e){this.effectComposer.inputBuffer.scissorTest=e,this.effectComposer.outputBuffer.scissorTest=e,this.renderer.setScissorTest(e)}setViewport(e,t,i,r){e instanceof tt?(this.effectComposer.inputBuffer.viewport.copy(e),this.effectComposer.outputBuffer.viewport.copy(e)):(this.effectComposer.inputBuffer.viewport.set(e,t,i,r),this.effectComposer.outputBuffer.viewport.set(e,t,i,r))}resize(e,t,i){if(this.effectComposer.setSize(e,t,i),this._rt){let r=this.renderer.getPixelRatio();this._rt.setSize(e*r,t*r)}}dispose(){this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.dispose()}},Tb=new gi,ZG=class extends Zb{constructor(e){super(e),this._pixelRatio=this.getPixelRatio(),this.viewportWidth=1,this.viewportHeight=1,this.resolution=new H,this.pipeline=new QG(this),this.overrideTransmission=e?.overrideTransmission,this.autoClear=!1;let t=this.setPixelRatio.bind(this),i=this.setSize.bind(this),r=this.getContext();if(r&&"drawingBufferColorSpace"in r)try{r.drawingBufferColorSpace="display-p3"}catch(s){console.warn(s)}this.setPixelRatio=s=>{this._pixelRatio=s,t(s)},this.setSize=(s,n,a=!0)=>{(this.viewportWidth!==s||this.viewportHeight!==n)&&(this.viewportWidth=s,this.viewportHeight=n,i(s,n,a),this.normalRenderTarget?.setSize(s*this._pixelRatio,n*this._pixelRatio),this.transmissionRenderTarget?.setSize(s*this._pixelRatio/2,n*this._pixelRatio/2),this.transmissionDepthTarget?.setSize(s*this._pixelRatio/2,n*this._pixelRatio/2),this.pipeline.resize(s,n,a))},this._superDispose=this.dispose,this.dispose=this._currentDispose}createTransmissionRenderTarget(){this.transmissionRenderTarget===void 0&&(this.transmissionRenderTarget=new Ut(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{generateMipmaps:!0,minFilter:ph,magFilter:ft,wrapS:Gi,wrapT:Gi,depthBuffer:!1}),this.transmissionDepthTarget=new Ut(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{minFilter:Lt,magFilter:Lt,depthBuffer:!1}))}createNormalRenderTarget(){this.normalRenderTarget===void 0&&(this.normalRenderTarget=new Ut(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio,{generateMipmaps:!1,minFilter:Lt,magFilter:Lt,type:sn,depthTexture:new qm(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio)}))}renderNormal(e,t){this.normalRenderTarget&&(this.setClearColor(0),t.layers.enable(8),t.layers.disable(0),t.layers.disable(3),this.setRenderTarget(this.normalRenderTarget),this.clear(),t instanceof Ls?Kp.uniforms.depthContrast.value=(t.far-t.near)/1e4:Kp.uniforms.depthContrast.value=1,e.overrideMaterial=Kp,this.render(e,t),this.setClearColor(e.bgColor,e.bgColor.a),this.setRenderTarget(null),e.overrideMaterial=e.wireframeState?Cm:null,t.layers.enable(0),t.layers.enable(3))}renderSplineScene(e,t,i,r,s){this.setClearColor(e.bgColor,e.bgColor.a),i.penumbraSize.forEach((a,o)=>{Ct.penumbraSize.value[o]=a}),Ct.pixelRatioNode.value=this.getPixelRatio(),this.resolution.x!==0&&this.resolution.y!==0?Ct.resolution.value.set(this.resolution.x,this.resolution.y):Ct.resolution.value.set(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio),this.overrideNormal!==void 0?(Ct.normalRenderTarget.value=this.overrideNormal,Ct.normalRenderTargetDepth.value=Tb):e.needsNormal()&&(this.createNormalRenderTarget(),Ct.normalRenderTarget.value=this.normalRenderTarget.texture,Ct.normalRenderTargetDepth.value=this.normalRenderTarget.depthTexture,this.renderNormal(e,t));let n=!1;if(this.overrideTransmission!==void 0)Ct.transmissionRenderTarget.value=this.overrideTransmission,Ct.transmissionRenderTargetDepth.value=Tb,this.pipeline.setTransmissionPassEnabled(!1);else{let a=e.needsTransmission();a&&(this.transmissionRenderTarget===void 0&&(n=!0),this.createTransmissionRenderTarget(),Ct.transmissionRenderTarget.value=this.transmissionRenderTarget.texture,Ct.transmissionRenderTargetDepth.value=this.transmissionDepthTarget.texture),this.pipeline.setTransmissionPassEnabled(a)}t.layers.enable(3),t.layers.enable(8),this.pipeline.sceneHelpers=r,this.pipeline.sceneHelpersOnTop=s,this.pipeline.scene=e,this.pipeline.camera=t,n&&this.pipeline.transmissionPass.updatePasses(this),this.pipeline.postprocessingState!==e.postprocessing&&this.pipeline.updatePostprocessing(e.postprocessing),this.clearAlphaOverride!==void 0&&this.setClearAlpha(this.clearAlphaOverride),e.overrideMaterial=e.wireframeState?Cm:null,this.pipeline.render()}_currentDispose(){this._superDispose(),this.pipeline.dispose(),this.transmissionRenderTarget?.dispose(),this.transmissionDepthTarget?.dispose(),this.normalRenderTarget?.dispose(),this.normalRenderTarget?.depthTexture?.dispose()}},KG=class{get sharedAssets(){return this.shared}constructor(e,t={}){this.shared=new mu(e.shared,t),this.scene=new yu(e.scene,this.sharedAssets),this.scene.switchActiveCamera(this.scene.activeCamera)}reset(e,t){this.scene.clearScene(),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}dispose(){this.scene.dispose(),this.shared.dispose()}gc(){this.shared.geometryCache.startGc(),this.shared.geometryCache2.startGc(),this.scene.traverseEntity(e=>{e instanceof Or&&e.markGeometryAsReachable(this.shared)}),this.shared.geometryCache.endGc(),this.shared.geometryCache2.endGc()}},JG=class{constructor({x:e=10,y:t=10}){this._startTime=0;let i=document.getElementById("spe-perfs");i?this.element=i:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){this.element.parentElement?.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let e=performance.now()-this._startTime;this.element.innerHTML=e.toFixed(3)+" ms"}};function $G(e){let t;if(e.index)for(let i=0;i<e.index.array.length;i+=3)t=e.index.array[i],e.index.array[i]=e.index.array[i+2],e.index.array[i+2]=t}function Xl(e){return e instanceof hh?"SubdivObject":e.geometry.type==="NonParametricGeometry"?"NonParametric":"Mesh"}function eV(e,t){let i={};return e.traverseEntity(r=>{if(!r.visible||!(r instanceof Zi)||r.type!=="Mesh"||Array.isArray(r.material)||r.states&&Object.keys(r.states).length)return;let s=r.parent;for(;s;){if(s instanceof Zi&&r.states&&Object.keys(r.states).length)return;s=s.parent}let n=r.material.uuid,a=t.shared.materials[n];if(a){if(!Qi.isMergable(a))return}else{let l=t.scene.objects.get(r.uuid)?.data;if(l&&"material"in l&&typeof l.material!="string"){if(!Qi.isMergable(l.material))return;n=Qi.getHash(l.material)}}i[n]||(i[n]={});let o=i[n][Xl(r)];if(o){if(o.push(r),r.cloner)for(let l of r.cloner.children)o.push(l)}else if(i[n][Xl(r)]=[r],r.cloner)for(let l of r.cloner.children)i[n][Xl(r)].push(l)}),i}function tV(e){let t=0;return Object.values(e).forEach(i=>{Object.values(i).forEach(r=>{let s=r.length;s>t&&(t=s)})}),t}function iV(e,t){let i=eV(t,e),r=tV(i),s=new Array(r),n=0,a=new Array(r),o=0,l=new Array(r),h=0,u=new Array(r),c=0;for(let[d,p]of Object.entries(i))for(let m of Object.values(p)){if(o=0,h=0,m.forEach(f=>{f instanceof Zi&&(a[o++]=f.geometry.clone(),l[h++]=f)}),h<2)continue;for(let f=0;f<h;f++)l[f].updateWorldMatrix(!0,!1),a[f].applyMatrix4(l[f].matrixWorld),l[f].matrixWorld.determinant()<0&&$G(a[f]);let g=to(a.slice(0,o),!1);if(g){let f;switch(d){case"SubdivObject":{console.warn("Turning subdiv object into mesh"),f=new Xi(g,l[0].material);break}default:{f=new Xi(g,l[0].material);break}}f.castShadow=l[0].castShadow,f.receiveShadow=l[0].receiveShadow,t.add(f);let v=y=>{c=0;for(let b of y)b.children&&v(b.children),b instanceof Zi&&(Array.isArray(b.material)||i[b.material.uuid]&&i[b.material.uuid][Xl(b)]&&i[b.material.uuid][Xl(b)].length>1||(u[c++]=b));for(let b=0;b<c;b++)t.attach(u[b])};for(let y=0;y<h;y++){let b=l[y];v(b.children),s[n++]=b}}}for(let d=0;d<n;d++)s[d].removeFromParent()}var rV=new H;function sV(e){let t="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.";e.endsWith(".spline")?console.warn(t+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(t)}var dv=class{constructor(e,{renderOnDemand:t=!0}={}){this._viewportMode=1,this._viewportWidth=window.innerWidth,this._viewportHeight=window.innerHeight,this._proxyObjectCache=new Map,this._lastTime=performance.now(),this.time=performance.now(),this.dt=0,this._skipRender=!1,this.renderOnDemand=!0,this.disposed=!1,this.requestRender=()=>{this._skipRender=!1},this.render=i=>{!this._renderer||(this._rafId=requestAnimationFrame(this.render),this.time=i,this.dt=this.time-this._lastTime,this._lastTime=this.time,this._perfs?.start(),!(this.renderOnDemand&&this._skipRender)&&(this._skipRender=this._controls?.update(this.dt)??!0,this._eventManager&&(this._eventManager.isEnable||this._eventManager.activate(),this._eventManager.handlers.Follow.onAnimationFrameDamping(),this._eventManager.handlers.LookAt.onAnimationFrameDamping(),(this._eventManager.handlers.Start.hasVideoAction||this._eventManager.handlers.Basic.hasVideoAction||this._eventManager.handlers.Conditional.hasVideoAction)&&(this._skipRender=!1)),this._scene&&this._camera&&this._renderer.renderSplineScene(this._scene,this._camera,this._sharedAssetsManager),this._perfs?.end()))},this._resize=Xw(()=>{!this._renderer||(this._viewportMode===1&&this._frameView&&(this._frameView.frameSize=rV.set(this._viewportWidth,this._viewportHeight)),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._viewportMode!==1&&this._frameView?.updateViewport(),this._camera&&(this._frameView?.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()),this.requestRender())},10),this.canvas=e,this.renderOnDemand=t,window.location.search.includes("perfs")&&(this._perfs=new JG({x:10,y:10})),yz(e)}async load(e,t){sV(e),this.disposed=!1;let i=await(await fetch(e,t)).arrayBuffer();await this.start(i)}async start(e,{interactive:t=!0}={}){if(this.disposed)return;let i=await gH(e);this._data=i,await Promise.all([Tx(i)&&VU(),ik(i)&&jU(),i.scene.environment.usePhysics&&RN(),Sx(i)&&G6()].filter(Boolean)),this._eventManager&&this._eventManager.deactivate(),this._controls&&this._controls.dispose(),this._scene?.dispose();let r=new KG(i);if(this._scene=r.scene,this._sharedAssetsManager=r.sharedAssets,this._camera=this._scene.activeCamera,window.location.search.includes("merge-geometries")){let s=performance.now();iV(i,r.scene);let n=performance.now();console.log("Merged geometries in ",n-s," ms")}if(Tx(i)&&this._scene.traverse(s=>{cn(s)&&s.recomputeBoolean()}),this._sharedAssetsManager.setRequestRender(()=>{this.requestRender(),this._scene?.traverse(s=>{s instanceof Vd&&s.pendingMediaLoad&&s.update()})}),Sx(i)&&Xj(i)){let s=Object.keys(i.shared.fonts).map(n=>this._sharedAssetsManager.getFont(n)).map(n=>n.loadingPromise);await Promise.all(s)}if(this._scene.rewriteEventsBeforeGoToPlayMode(),vA(i.scene,this._scene,this._sharedAssetsManager),this._renderer||(this._renderer=new ZG({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.pipeline.addEventListener("smaaloaded",this.requestRender),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=i.scene.environment.ambientLight.softShadows?Hm:Db,Gk(i.scene.environment.ambientLight.softShadowQuality)),this._frameView)this._frameView.setCamera(this._camera);else{let s=Object.values(i.frames)[0];if(s.preset==="fullscreen"){this._viewportMode=1;let{width:n,height:a}=window.getComputedStyle(this.canvas);this.canvas.parentElement&&(n==="300px"||n==="auto")?(this._viewportWidth=this.canvas.parentElement.clientWidth||300,this.canvas.style.width="100%"):this._viewportWidth=this.canvas.clientWidth,this.canvas.parentElement&&(a==="150px"||a==="auto")?(this._viewportHeight=this.canvas.parentElement.clientHeight||150,this.canvas.style.height="100%"):this._viewportHeight=this.canvas.clientHeight}else this._viewportMode=2,this._viewportWidth=s.size[0],this._viewportHeight=s.size[1],this.canvas.style.width=`${this._viewportWidth}px`,this.canvas.style.height=`${this._viewportHeight}px`;this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._frameView=new yH(this._renderer,this._camera,new H(this._viewportWidth,this._viewportHeight),new H(window.innerWidth,window.innerHeight))}if(t&&(this._scene.updateMatrixWorld(!0),this._controls=new Yj(i,this._scene,this._renderer,this.requestRender,this._sharedAssetsManager,!0),this._eventManager=new vH(this._renderer,this._scene,this._camera,i.scene.publish.stopRaycast,i.scene.publish.preventScroll,i.scene.publish.hideCursor,this._sharedAssetsManager,this.requestRender,this._controls,!0)),this._resize(),!this._resizeObserver&&this.canvas.parentElement){let s=!0;this._resizeObserver=new ResizeObserver(()=>{if(s){s=!1;return}this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this._resize()}),this._resizeObserver.observe(this.canvas.parentElement)}this._rafId===void 0?this.render(performance.now()):this.requestRender()}findObjectById(e){let t=this._scene?.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){let t=this._scene?.getObjectByName(e);return this._createProxyObject(t)}getSplineEvents(){return(this._eventManager?.handlers.Spline).splineEvents}emitEvent(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEvent(e)}emitEventReverse(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEventReverse(e)}addEventListener(e,t){this.canvas.addEventListener(e,t)}removeEventListener(e,t){this.canvas.removeEventListener(e,t)}setZoom(e){this._controls?.orbitControls instanceof _A&&this._controls?.orbitControls.zoomOut(e)}get eventManager(){return this._eventManager}get controls(){return this._controls}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this._resize()}setBackgroundColor(e){let{r:t,g:i,b:r,a:s}={r:0,g:0,b:0,a:1},n=new Ri(t,i,r,s);try{n.setStyle(e)}catch{console.error("This is not a valid css color",e)}this._scene?.setBackgroundColor(n)}dispose(){this.disposed=!0,this._eventManager?.deactivate(),this._scene?.dispose(),this._sharedAssetsManager?.dispose(),this._rafId&&cancelAnimationFrame(this._rafId),this._proxyObjectCache.forEach(e=>{py.unsubscribe(e)}),this._renderer?.dispose(),this._sharedAssetsManager?.dispose(),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=void 0),this.canvas.style.width="",this.canvas.style.height="",this.canvas.removeAttribute("width"),this.canvas.removeAttribute("height"),this._frameView&&(this._frameView=void 0),this._controls?.dispose(),xz(this.canvas)}get data(){return this._data}_createProxyObject(e){if(e==null)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);let t={name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,emitEvent(r){e.dispatchEvent({type:"userEvent",eventName:r})},emitEventReverse(r){e.dispatchEvent({type:"userEvent",eventName:r,reverse:!0})}},i=py(t,(r,s)=>{typeof e[r]!="object"&&Object.getOwnPropertyDescriptor(e,r)?.writable&&(e[r]=s),this.requestRender(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,i),i}};var Au=window,Mu=Au.ShadowRoot&&(Au.ShadyCSS===void 0||Au.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,uv=Symbol(),CA=new WeakMap,Eh=class{constructor(t,i,r){if(this._$cssResult$=!0,r!==uv)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=i}get styleSheet(){let t=this.o,i=this.t;if(Mu&&t===void 0){let r=i!==void 0&&i.length===1;r&&(t=CA.get(i)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&CA.set(i,t))}return t}toString(){return this.cssText}},TA=e=>new Eh(typeof e=="string"?e:e+"",void 0,uv),pv=(e,...t)=>{let i=e.length===1?e[0]:t.reduce((r,s,n)=>r+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[n+1],e[0]);return new Eh(i,e,uv)},fv=(e,t)=>{Mu?e.adoptedStyleSheets=t.map(i=>i instanceof CSSStyleSheet?i:i.styleSheet):t.forEach(i=>{let r=document.createElement("style"),s=Au.litNonce;s!==void 0&&r.setAttribute("nonce",s),r.textContent=i.cssText,e.appendChild(r)})},Eu=Mu?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let i="";for(let r of t.cssRules)i+=r.cssText;return TA(i)})(e):e;var mv,Cu=window,PA=Cu.trustedTypes,nV=PA?PA.emptyScript:"",DA=Cu.reactiveElementPolyfillSupport,vv={toAttribute(e,t){switch(t){case Boolean:e=e?nV:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=e!==null;break;case Number:i=e===null?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch{i=null}}return i}},OA=(e,t)=>t!==e&&(t==t||e==e),gv={attribute:!0,type:String,converter:vv,reflect:!1,hasChanged:OA},Ns=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var i;this.finalize(),((i=this.h)!==null&&i!==void 0?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();let t=[];return this.elementProperties.forEach((i,r)=>{let s=this._$Ep(r,i);s!==void 0&&(this._$Ev.set(s,r),t.push(s))}),t}static createProperty(t,i=gv){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){let r=typeof t=="symbol"?Symbol():"__"+t,s=this.getPropertyDescriptor(t,r,i);s!==void 0&&Object.defineProperty(this.prototype,t,s)}}static getPropertyDescriptor(t,i,r){return{get(){return this[i]},set(s){let n=this[t];this[i]=s,this.requestUpdate(t,n,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||gv}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;let t=Object.getPrototypeOf(this);if(t.finalize(),t.h!==void 0&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){let i=this.properties,r=[...Object.getOwnPropertyNames(i),...Object.getOwnPropertySymbols(i)];for(let s of r)this.createProperty(s,i[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){let i=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let s of r)i.unshift(Eu(s))}else t!==void 0&&i.push(Eu(t));return i}static _$Ep(t,i){let r=i.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise(i=>this.enableUpdating=i),this._$AL=new Map,this._$Eg(),this.requestUpdate(),(t=this.constructor.h)===null||t===void 0||t.forEach(i=>i(this))}addController(t){var i,r;((i=this._$ES)!==null&&i!==void 0?i:this._$ES=[]).push(t),this.renderRoot!==void 0&&this.isConnected&&((r=t.hostConnected)===null||r===void 0||r.call(t))}removeController(t){var i;(i=this._$ES)===null||i===void 0||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])})}createRenderRoot(){var t;let i=(t=this.shadowRoot)!==null&&t!==void 0?t:this.attachShadow(this.constructor.shadowRootOptions);return fv(i,this.constructor.elementStyles),i}connectedCallback(){var t;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$ES)===null||t===void 0||t.forEach(i=>{var r;return(r=i.hostConnected)===null||r===void 0?void 0:r.call(i)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$ES)===null||t===void 0||t.forEach(i=>{var r;return(r=i.hostDisconnected)===null||r===void 0?void 0:r.call(i)})}attributeChangedCallback(t,i,r){this._$AK(t,r)}_$EO(t,i,r=gv){var s;let n=this.constructor._$Ep(t,r);if(n!==void 0&&r.reflect===!0){let a=(((s=r.converter)===null||s===void 0?void 0:s.toAttribute)!==void 0?r.converter:vv).toAttribute(i,r.type);this._$El=t,a==null?this.removeAttribute(n):this.setAttribute(n,a),this._$El=null}}_$AK(t,i){var r;let s=this.constructor,n=s._$Ev.get(t);if(n!==void 0&&this._$El!==n){let a=s.getPropertyOptions(n),o=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)===null||r===void 0?void 0:r.fromAttribute)!==void 0?a.converter:vv;this._$El=n,this[n]=o.fromAttribute(i,a.type),this._$El=null}}requestUpdate(t,i,r){let s=!0;t!==void 0&&(((r=r||this.constructor.getPropertyOptions(t)).hasChanged||OA)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),r.reflect===!0&&this._$El!==t&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(t,r))):s=!1),!this.isUpdatePending&&s&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(i){Promise.reject(i)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach((s,n)=>this[n]=s),this._$Ei=void 0);let i=!1,r=this._$AL;try{i=this.shouldUpdate(r),i?(this.willUpdate(r),(t=this._$ES)===null||t===void 0||t.forEach(s=>{var n;return(n=s.hostUpdate)===null||n===void 0?void 0:n.call(s)}),this.update(r)):this._$Ek()}catch(s){throw i=!1,this._$Ek(),s}i&&this._$AE(r)}willUpdate(t){}_$AE(t){var i;(i=this._$ES)===null||i===void 0||i.forEach(r=>{var s;return(s=r.hostUpdated)===null||s===void 0?void 0:s.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){this._$EC!==void 0&&(this._$EC.forEach((i,r)=>this._$EO(r,this[r],i)),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};Ns.finalized=!0,Ns.elementProperties=new Map,Ns.elementStyles=[],Ns.shadowRootOptions={mode:"open"},DA?.({ReactiveElement:Ns}),((mv=Cu.reactiveElementVersions)!==null&&mv!==void 0?mv:Cu.reactiveElementVersions=[]).push("1.6.0");var yv,Tu=window,Wo=Tu.trustedTypes,LA=Wo?Wo.createPolicy("lit-html",{createHTML:e=>e}):void 0,Sn=`lit$${(Math.random()+"").slice(9)}$`,UA="?"+Sn,aV=`<${UA}>`,Xo=document,Th=(e="")=>Xo.createComment(e),Ph=e=>e===null||typeof e!="object"&&typeof e!="function",kA=Array.isArray,oV=e=>kA(e)||typeof e?.[Symbol.iterator]=="function",Ch=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,IA=/-->/g,BA=/>/g,fa=RegExp(`>|[
5202
+ `}),yf=class extends mr{constructor(e,t){super("OpaquePass",e??Eb,t),this.hasTransmissionPass=!1,this.clear=!0,this.needsSwap=!1,this.originalMaterials=new Map}setCamera(e){this.camera=e}setScene(e){this.scene=e??Eb}getScene(){return this.scene}render(e,t){this.originalMaterials.clear(),this.camera.layers.enable(3),this.hasTransmissionPass&&this.scene.traverse(r=>{r.layers.isEnabled(3)&&r instanceof Zi&&(this.originalMaterials.set(r.id,r.material),r.material=qG)}),this.camera.layers.enable(8),e.shadowMap.needsUpdate=!0,e.shadowMap.autoUpdate=!0;let i=this.renderToScreen?null:t;e.setRenderTarget(i),this.clear&&e.clear(),e.render(this.scene,this.camera),this.hasTransmissionPass&&this.originalMaterials.forEach((r,s)=>{let n=this.scene.getObjectById(s);n&&(n.material=r)})}};function Cb(e,t){return t&&t.enabled&&e.push(t.effect),e}var QG=class extends Ni{constructor(e){super(),this.postprocessingState=nh.defaultData,this._scene=new Kn,this._camera=new Ls,this.effects=new Map,this._renderToScreen=!0,this.clock=new oD,this.renderer=e,this.debug=!1,this.effects.set("bloom",new FG),this.effects.set("chromaticAberration",new kG),this.effects.set("vignette",new VG),this.effects.set("noise",new GG),this.effects.set("colorAverage",new jG),this.effects.set("hueSaturation",new HG),this.effects.set("brightnessContrast",new UG),this.effects.set("depthOfField",new WG),this.effects.set("pixelation",new XG),this.effectComposer=new mG(this.renderer),this.opaquePass=new yf(this.scene,this.camera),this.transmissionPass=new YG(this.scene,this.camera,this.renderer),this.helperPass=new yf(void 0,this.camera),this.helperPass.hasTransmissionPass=!1,this.helperPass.clear=!1,this.helperClearPass=new Su(!1,!0,!1),this.helperPassOnTop=new yf(void 0,this.camera),this.helperPassOnTop.hasTransmissionPass=!1,this.helperPassOnTop.clear=!1,this._initCopyPass(),this._initSmaa(),this._initPasses()}get scene(){return this._scene}set scene(e){this._scene=e,this.opaquePass.setScene(e),this.transmissionPass.setScene(e)}set sceneHelpers(e){this.helperPass.setScene(e)}get sceneHelpers(){return this.helperPass.getScene()}set sceneHelpersOnTop(e){this.helperPassOnTop.setScene(e)}get sceneHelpersOnTop(){return this.helperPassOnTop.getScene()}get camera(){return this._camera}set camera(e){this._camera=e,this.opaquePass.setCamera(e),this.transmissionPass.setCamera(e),this.helperPass.setCamera(e),this.helperPassOnTop.setCamera(e)}setTransmissionPassEnabled(e){this.transmissionPass.enabled=e,this.opaquePass.hasTransmissionPass=e}disableHelpers(){this.helperPass.enabled=!1,this.helperClearPass.enabled=!1,this.helperPassOnTop.enabled=!1}enableHelpers(){this.helperPass.enabled=!0,this.helperClearPass.enabled=!0,this.helperPassOnTop.enabled=!0}_initSmaa(){let e=new RG({preset:Za.ULTRA,edgeDetectionMode:hv.COLOR}),t=()=>{e.removeEventListener("load",t),this.dispatchEvent({type:"smaaloaded"})};e.addEventListener("load",t),e.edgeDetectionMaterial.predicationMode=AA.DEPTH,e.edgeDetectionMaterial.edgeDetectionThreshold=.05,e.edgeDetectionMaterial.predicationThreshold=.002,e.edgeDetectionMaterial.predicationScale=1,this.smaaPass=new mf(this.camera,e)}_initPasses(){if(this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.removeAllPasses(),this.transmissionPass.updatePasses(this.renderer),this.effectComposer.addPass(this.opaquePass),this.effectComposer.addPass(this.transmissionPass),this.postprocessingState.enabled){let e=[this.effects.get("pixelation")].reduce(Cb,[]);e.length>0&&(this.uvEffectPass=new mf(this.camera,...e),this.effectComposer.addPass(this.uvEffectPass));let t=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(Cb,[]);t.length>0&&(this.effectPass=new mf(this.camera,...t),this.effectComposer.addPass(this.effectPass))}this.effectComposer.addPass(this.helperPass),this.effectComposer.addPass(this.helperClearPass),this.effectComposer.addPass(this.helperPassOnTop),this.effectComposer.addPass(this.smaaPass)}_initCopyPass(){if(this._savePass)return;let e=new H;this.renderer.getDrawingBufferSize(e),this._rt=new Ut(e.x,e.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:Yl,wrapT:Yl}),this._rt.samples=0,this._savePass=new Qd(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(e){if(this._renderToScreen===e)return;let t=this.effectComposer;!t||(e===!0?(t.removePass(this._savePass),t.passes[t.passes.length-1].renderToScreen=!0,t.autoRenderToScreen=!0):(t.autoRenderToScreen=!1,t.passes[t.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,this.postprocessingState.enabled||(this._savePass.needsDepthTexture=!0),t.addPass(this._savePass)),this._renderToScreen=e)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}updatePostprocessing(e){let{enabled:t,...i}=e,r=!1;t!==this.postprocessingState.enabled&&(r=!0);for(let s of Object.entries(i)){let n=s[1],a=this.effects.get(s[0]);if(a){a.enabled!==n.enabled&&(r=!0),a.enabled=n.enabled;for(let[o,l]of Object.entries(n))a[o]=l}}this.postprocessingState=e,r&&this._initPasses()}render(){this.effectComposer.render(this.clock.getDelta())}setScissor(e,t,i,r){e instanceof tt?(this.effectComposer.inputBuffer.scissor.set(e.x,e.y,e.z,e.w),this.effectComposer.outputBuffer.scissor.set(e.x,e.y,e.z,e.w)):(this.effectComposer.inputBuffer.scissor.set(e,t,i,r),this.effectComposer.outputBuffer.scissor.set(e,t,i,r));let s=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(s),this.effectComposer.outputBuffer.scissor.multiplyScalar(s),this.renderer.setScissor(e,t,i,r)}setScissorTest(e){this.effectComposer.inputBuffer.scissorTest=e,this.effectComposer.outputBuffer.scissorTest=e,this.renderer.setScissorTest(e)}setViewport(e,t,i,r){e instanceof tt?(this.effectComposer.inputBuffer.viewport.copy(e),this.effectComposer.outputBuffer.viewport.copy(e)):(this.effectComposer.inputBuffer.viewport.set(e,t,i,r),this.effectComposer.outputBuffer.viewport.set(e,t,i,r))}resize(e,t,i){if(this.effectComposer.setSize(e,t,i),this._rt){let r=this.renderer.getPixelRatio();this._rt.setSize(e*r,t*r)}}dispose(){this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.dispose()}},Tb=new gi,ZG=class extends Zb{constructor(e){super(e),this._pixelRatio=this.getPixelRatio(),this.viewportWidth=1,this.viewportHeight=1,this.resolution=new H,this.pipeline=new QG(this),this.overrideTransmission=e?.overrideTransmission,this.autoClear=!1;let t=this.setPixelRatio.bind(this),i=this.setSize.bind(this),r=this.getContext();if(r&&"drawingBufferColorSpace"in r)try{r.drawingBufferColorSpace="display-p3"}catch(s){console.warn(s)}this.setPixelRatio=s=>{this._pixelRatio=s,t(s)},this.setSize=(s,n,a=!0)=>{(this.viewportWidth!==s||this.viewportHeight!==n)&&(this.viewportWidth=s,this.viewportHeight=n,i(s,n,a),this.normalRenderTarget?.setSize(s*this._pixelRatio,n*this._pixelRatio),this.transmissionRenderTarget?.setSize(s*this._pixelRatio/2,n*this._pixelRatio/2),this.transmissionDepthTarget?.setSize(s*this._pixelRatio/2,n*this._pixelRatio/2),this.pipeline.resize(s,n,a))},this._superDispose=this.dispose,this.dispose=this._currentDispose}createTransmissionRenderTarget(){this.transmissionRenderTarget===void 0&&(this.transmissionRenderTarget=new Ut(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{generateMipmaps:!0,minFilter:ph,magFilter:ft,wrapS:Gi,wrapT:Gi,depthBuffer:!1}),this.transmissionDepthTarget=new Ut(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{minFilter:Lt,magFilter:Lt,depthBuffer:!1}))}createNormalRenderTarget(){this.normalRenderTarget===void 0&&(this.normalRenderTarget=new Ut(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio,{generateMipmaps:!1,minFilter:Lt,magFilter:Lt,type:sn,depthTexture:new qm(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio)}))}renderNormal(e,t){this.normalRenderTarget&&(this.setClearColor(0),t.layers.enable(8),t.layers.disable(0),t.layers.disable(3),this.setRenderTarget(this.normalRenderTarget),this.clear(),t instanceof Ls?Kp.uniforms.depthContrast.value=(t.far-t.near)/1e4:Kp.uniforms.depthContrast.value=1,e.overrideMaterial=Kp,this.render(e,t),this.setClearColor(e.bgColor,e.bgColor.a),this.setRenderTarget(null),e.overrideMaterial=e.wireframeState?Cm:null,t.layers.enable(0),t.layers.enable(3))}renderSplineScene(e,t,i,r,s){this.setClearColor(e.bgColor,e.bgColor.a),i.penumbraSize.forEach((a,o)=>{Ct.penumbraSize.value[o]=a}),Ct.pixelRatioNode.value=this.getPixelRatio(),this.resolution.x!==0&&this.resolution.y!==0?Ct.resolution.value.set(this.resolution.x,this.resolution.y):Ct.resolution.value.set(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio),this.overrideNormal!==void 0?(Ct.normalRenderTarget.value=this.overrideNormal,Ct.normalRenderTargetDepth.value=Tb):e.needsNormal()&&(this.createNormalRenderTarget(),Ct.normalRenderTarget.value=this.normalRenderTarget.texture,Ct.normalRenderTargetDepth.value=this.normalRenderTarget.depthTexture,this.renderNormal(e,t));let n=!1;if(this.overrideTransmission!==void 0)Ct.transmissionRenderTarget.value=this.overrideTransmission,Ct.transmissionRenderTargetDepth.value=Tb,this.pipeline.setTransmissionPassEnabled(!1);else{let a=e.needsTransmission();a&&(this.transmissionRenderTarget===void 0&&(n=!0),this.createTransmissionRenderTarget(),Ct.transmissionRenderTarget.value=this.transmissionRenderTarget.texture,Ct.transmissionRenderTargetDepth.value=this.transmissionDepthTarget.texture),this.pipeline.setTransmissionPassEnabled(a)}t.layers.enable(3),t.layers.enable(8),this.pipeline.sceneHelpers=r,this.pipeline.sceneHelpersOnTop=s,this.pipeline.scene=e,this.pipeline.camera=t,n&&this.pipeline.transmissionPass.updatePasses(this),this.pipeline.postprocessingState!==e.postprocessing&&this.pipeline.updatePostprocessing(e.postprocessing),this.clearAlphaOverride!==void 0&&this.setClearAlpha(this.clearAlphaOverride),e.overrideMaterial=e.wireframeState?Cm:null,this.pipeline.render()}_currentDispose(){this._superDispose(),this.pipeline.dispose(),this.transmissionRenderTarget?.dispose(),this.transmissionDepthTarget?.dispose(),this.normalRenderTarget?.dispose(),this.normalRenderTarget?.depthTexture?.dispose()}},KG=class{get sharedAssets(){return this.shared}constructor(e,t={}){this.shared=new mu(e.shared,t),this.scene=new yu(e.scene,this.sharedAssets),this.scene.switchActiveCamera(this.scene.activeCamera)}reset(e,t){this.scene.clearScene(),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}dispose(){this.scene.dispose(),this.shared.dispose()}gc(){this.shared.geometryCache.startGc(),this.shared.geometryCache2.startGc(),this.scene.traverseEntity(e=>{e instanceof Or&&e.markGeometryAsReachable(this.shared)}),this.shared.geometryCache.endGc(),this.shared.geometryCache2.endGc()}},JG=class{constructor({x:e=10,y:t=10}){this._startTime=0;let i=document.getElementById("spe-perfs");i?this.element=i:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){this.element.parentElement?.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let e=performance.now()-this._startTime;this.element.innerHTML=e.toFixed(3)+" ms"}};function $G(e){let t;if(e.index)for(let i=0;i<e.index.array.length;i+=3)t=e.index.array[i],e.index.array[i]=e.index.array[i+2],e.index.array[i+2]=t}function Xl(e){return e instanceof hh?"SubdivObject":e.geometry.type==="NonParametricGeometry"?"NonParametric":"Mesh"}function eV(e,t){let i={};return e.traverseEntity(r=>{if(!r.visible||!(r instanceof Zi)||r.type!=="Mesh"||Array.isArray(r.material)||r.states&&Object.keys(r.states).length)return;let s=r.parent;for(;s;){if(s instanceof Zi&&r.states&&Object.keys(r.states).length)return;s=s.parent}let n=r.material.uuid,a=t.shared.materials[n];if(a){if(!Qi.isMergable(a))return}else{let l=t.scene.objects.get(r.uuid)?.data;if(l&&"material"in l&&typeof l.material!="string"){if(!Qi.isMergable(l.material))return;n=Qi.getHash(l.material)}}i[n]||(i[n]={});let o=i[n][Xl(r)];if(o){if(o.push(r),r.cloner)for(let l of r.cloner.children)o.push(l)}else if(i[n][Xl(r)]=[r],r.cloner)for(let l of r.cloner.children)i[n][Xl(r)].push(l)}),i}function tV(e){let t=0;return Object.values(e).forEach(i=>{Object.values(i).forEach(r=>{let s=r.length;s>t&&(t=s)})}),t}function iV(e,t){let i=eV(t,e),r=tV(i),s=new Array(r),n=0,a=new Array(r),o=0,l=new Array(r),h=0,u=new Array(r),c=0;for(let[d,p]of Object.entries(i))for(let m of Object.values(p)){if(o=0,h=0,m.forEach(f=>{f instanceof Zi&&(a[o++]=f.geometry.clone(),l[h++]=f)}),h<2)continue;for(let f=0;f<h;f++)l[f].updateWorldMatrix(!0,!1),a[f].applyMatrix4(l[f].matrixWorld),l[f].matrixWorld.determinant()<0&&$G(a[f]);let g=to(a.slice(0,o),!1);if(g){let f;switch(d){case"SubdivObject":{console.warn("Turning subdiv object into mesh"),f=new Xi(g,l[0].material);break}default:{f=new Xi(g,l[0].material);break}}f.castShadow=l[0].castShadow,f.receiveShadow=l[0].receiveShadow,t.add(f);let v=y=>{c=0;for(let b of y)b.children&&v(b.children),b instanceof Zi&&(Array.isArray(b.material)||i[b.material.uuid]&&i[b.material.uuid][Xl(b)]&&i[b.material.uuid][Xl(b)].length>1||(u[c++]=b));for(let b=0;b<c;b++)t.attach(u[b])};for(let y=0;y<h;y++){let b=l[y];v(b.children),s[n++]=b}}}for(let d=0;d<n;d++)s[d].removeFromParent()}var rV=new H;function sV(e){let t="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.";e.endsWith(".spline")?console.warn(t+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(t)}var dv=class{constructor(e,{renderOnDemand:t=!0}={}){this._viewportMode=1,this._viewportWidth=window.innerWidth,this._viewportHeight=window.innerHeight,this._proxyObjectCache=new Map,this._lastTime=performance.now(),this.time=performance.now(),this.dt=0,this._skipRender=!1,this.renderOnDemand=!0,this.disposed=!1,this.requestRender=()=>{this._skipRender=!1},this.render=i=>{!this._renderer||(this._rafId=requestAnimationFrame(this.render),this.time=i,this.dt=this.time-this._lastTime,this._lastTime=this.time,this._perfs?.start(),!(this.renderOnDemand&&this._skipRender)&&(this._skipRender=this._controls?.update(this.dt)??!0,this._eventManager&&(this._eventManager.isEnable||this._eventManager.activate(),this._eventManager.handlers.Follow.onAnimationFrameDamping(),this._eventManager.handlers.LookAt.onAnimationFrameDamping(),(this._eventManager.handlers.Start.hasVideoAction||this._eventManager.handlers.Basic.hasVideoAction||this._eventManager.handlers.Conditional.hasVideoAction)&&(this._skipRender=!1)),this._scene&&this._camera&&this._renderer.renderSplineScene(this._scene,this._camera,this._sharedAssetsManager),this._perfs?.end()))},this._resize=Xw(()=>{!this._renderer||(this._viewportMode===1&&this._frameView&&(this._frameView.frameSize=rV.set(this._viewportWidth,this._viewportHeight)),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._viewportMode!==1&&this._frameView?.updateViewport(),this._camera&&(this._frameView?.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()),this.requestRender())},10),this.canvas=e,this.renderOnDemand=t,window.location.search.includes("perfs")&&(this._perfs=new JG({x:10,y:10})),yz(e)}async load(e,t){sV(e),this.disposed=!1;let i=await(await fetch(e,t)).arrayBuffer();await this.start(i)}async start(e,{interactive:t=!0}={}){if(this.disposed)return;let i=await gH(e);this._data=i,await Promise.all([Tx(i)&&VU(),ik(i)&&jU(),i.scene.environment.usePhysics&&RN(),Sx(i)&&G6()].filter(Boolean)),this._eventManager&&this._eventManager.deactivate(),this._controls&&this._controls.dispose(),this._scene?.dispose();let r=new KG(i);if(this._scene=r.scene,this._sharedAssetsManager=r.sharedAssets,this._camera=this._scene.activeCamera,window.location.search.includes("merge-geometries")){let s=performance.now();iV(i,r.scene);let n=performance.now();console.log("Merged geometries in ",n-s," ms")}if(Tx(i)&&this._scene.traverse(s=>{cn(s)&&s.recomputeBoolean()}),this._sharedAssetsManager.setRequestRender(()=>{this.requestRender(),this._scene?.traverse(s=>{s instanceof Vd&&s.pendingMediaLoad&&s.update()})}),Sx(i)&&Xj(i)){let s=Object.keys(i.shared.fonts).map(n=>this._sharedAssetsManager.getFont(n)).map(n=>n.loadingPromise);await Promise.all(s)}if(this._scene.rewriteEventsBeforeGoToPlayMode(),vA(i.scene,this._scene,this._sharedAssetsManager),this._renderer||(this._renderer=new ZG({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.pipeline.addEventListener("smaaloaded",this.requestRender),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=i.scene.environment.ambientLight.softShadows?Hm:Db,Gk(i.scene.environment.ambientLight.softShadowQuality)),this._frameView)this._frameView.setCamera(this._camera);else{let s=Object.values(i.frames)[0];if(s.preset==="fullscreen"){this._viewportMode=1;let{width:n,height:a}=window.getComputedStyle(this.canvas);this.canvas.parentElement&&(n==="300px"||n==="auto")?(this._viewportWidth=this.canvas.parentElement.clientWidth||300,this.canvas.style.width="100%"):this._viewportWidth=this.canvas.clientWidth,this.canvas.parentElement&&(a==="150px"||a==="auto")?(this._viewportHeight=this.canvas.parentElement.clientHeight||150,this.canvas.style.height="100%"):this._viewportHeight=this.canvas.clientHeight}else this._viewportMode=2,this._viewportWidth=s.size[0],this._viewportHeight=s.size[1],this.canvas.style.width=`${this._viewportWidth}px`,this.canvas.style.height=`${this._viewportHeight}px`;this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._frameView=new yH(this._renderer,this._camera,new H(this._viewportWidth,this._viewportHeight),new H(window.innerWidth,window.innerHeight))}if(t&&(this._scene.updateMatrixWorld(!0),this._controls=new Yj(i,this._scene,this._renderer,this.requestRender,this._sharedAssetsManager,!0),this._eventManager=new vH(this._renderer,this._scene,this._camera,i.scene.publish.stopRaycast,i.scene.publish.preventScroll,i.scene.publish.hideCursor,this._sharedAssetsManager,this.requestRender,this._controls,!0)),this._resize(),!this._resizeObserver&&this.canvas.parentElement){let s=!0;this._resizeObserver=new ResizeObserver(()=>{if(s){s=!1;return}this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this._resize()}),this._resizeObserver.observe(this.canvas.parentElement)}this._rafId===void 0?this.render(performance.now()):this.requestRender()}findObjectById(e){let t=this._scene?.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){let t=this._scene?.getObjectByName(e);return this._createProxyObject(t)}getSplineEvents(){return(this._eventManager?.handlers.Spline).splineEvents}emitEvent(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEvent(e)}emitEventReverse(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEventReverse(e)}addEventListener(e,t){this.canvas.addEventListener(e,t)}removeEventListener(e,t){this.canvas.removeEventListener(e,t)}setZoom(e){this._controls?.orbitControls instanceof _A&&this._controls?.orbitControls.zoomOut(e)}get eventManager(){return this._eventManager}get controls(){return this._controls}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this._resize()}setBackgroundColor(e){let{r:t,g:i,b:r,a:s}={r:0,g:0,b:0,a:1},n=new Ri(t,i,r,s);try{n.setStyle(e)}catch{console.error("This is not a valid css color",e)}this._scene?.setBackgroundColor(n),this.requestRender()}dispose(){this.disposed=!0,this._eventManager?.deactivate(),this._scene?.dispose(),this._sharedAssetsManager?.dispose(),this._rafId&&cancelAnimationFrame(this._rafId),this._proxyObjectCache.forEach(e=>{py.unsubscribe(e)}),this._renderer?.dispose(),this._sharedAssetsManager?.dispose(),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=void 0),this.canvas.style.width="",this.canvas.style.height="",this.canvas.removeAttribute("width"),this.canvas.removeAttribute("height"),this._frameView&&(this._frameView=void 0),this._controls?.dispose(),xz(this.canvas)}get data(){return this._data}_createProxyObject(e){if(e==null)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);let t={name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,emitEvent(r){e.dispatchEvent({type:"userEvent",eventName:r})},emitEventReverse(r){e.dispatchEvent({type:"userEvent",eventName:r,reverse:!0})}},i=py(t,(r,s)=>{typeof e[r]!="object"&&Object.getOwnPropertyDescriptor(e,r)?.writable&&(e[r]=s),this.requestRender(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,i),i}};var Au=window,Mu=Au.ShadowRoot&&(Au.ShadyCSS===void 0||Au.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,uv=Symbol(),CA=new WeakMap,Eh=class{constructor(t,i,r){if(this._$cssResult$=!0,r!==uv)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=i}get styleSheet(){let t=this.o,i=this.t;if(Mu&&t===void 0){let r=i!==void 0&&i.length===1;r&&(t=CA.get(i)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&CA.set(i,t))}return t}toString(){return this.cssText}},TA=e=>new Eh(typeof e=="string"?e:e+"",void 0,uv),pv=(e,...t)=>{let i=e.length===1?e[0]:t.reduce((r,s,n)=>r+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[n+1],e[0]);return new Eh(i,e,uv)},fv=(e,t)=>{Mu?e.adoptedStyleSheets=t.map(i=>i instanceof CSSStyleSheet?i:i.styleSheet):t.forEach(i=>{let r=document.createElement("style"),s=Au.litNonce;s!==void 0&&r.setAttribute("nonce",s),r.textContent=i.cssText,e.appendChild(r)})},Eu=Mu?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let i="";for(let r of t.cssRules)i+=r.cssText;return TA(i)})(e):e;var mv,Cu=window,PA=Cu.trustedTypes,nV=PA?PA.emptyScript:"",DA=Cu.reactiveElementPolyfillSupport,vv={toAttribute(e,t){switch(t){case Boolean:e=e?nV:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=e!==null;break;case Number:i=e===null?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch{i=null}}return i}},OA=(e,t)=>t!==e&&(t==t||e==e),gv={attribute:!0,type:String,converter:vv,reflect:!1,hasChanged:OA},Ns=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var i;this.finalize(),((i=this.h)!==null&&i!==void 0?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();let t=[];return this.elementProperties.forEach((i,r)=>{let s=this._$Ep(r,i);s!==void 0&&(this._$Ev.set(s,r),t.push(s))}),t}static createProperty(t,i=gv){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){let r=typeof t=="symbol"?Symbol():"__"+t,s=this.getPropertyDescriptor(t,r,i);s!==void 0&&Object.defineProperty(this.prototype,t,s)}}static getPropertyDescriptor(t,i,r){return{get(){return this[i]},set(s){let n=this[t];this[i]=s,this.requestUpdate(t,n,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||gv}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;let t=Object.getPrototypeOf(this);if(t.finalize(),t.h!==void 0&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){let i=this.properties,r=[...Object.getOwnPropertyNames(i),...Object.getOwnPropertySymbols(i)];for(let s of r)this.createProperty(s,i[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){let i=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let s of r)i.unshift(Eu(s))}else t!==void 0&&i.push(Eu(t));return i}static _$Ep(t,i){let r=i.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise(i=>this.enableUpdating=i),this._$AL=new Map,this._$Eg(),this.requestUpdate(),(t=this.constructor.h)===null||t===void 0||t.forEach(i=>i(this))}addController(t){var i,r;((i=this._$ES)!==null&&i!==void 0?i:this._$ES=[]).push(t),this.renderRoot!==void 0&&this.isConnected&&((r=t.hostConnected)===null||r===void 0||r.call(t))}removeController(t){var i;(i=this._$ES)===null||i===void 0||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])})}createRenderRoot(){var t;let i=(t=this.shadowRoot)!==null&&t!==void 0?t:this.attachShadow(this.constructor.shadowRootOptions);return fv(i,this.constructor.elementStyles),i}connectedCallback(){var t;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$ES)===null||t===void 0||t.forEach(i=>{var r;return(r=i.hostConnected)===null||r===void 0?void 0:r.call(i)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$ES)===null||t===void 0||t.forEach(i=>{var r;return(r=i.hostDisconnected)===null||r===void 0?void 0:r.call(i)})}attributeChangedCallback(t,i,r){this._$AK(t,r)}_$EO(t,i,r=gv){var s;let n=this.constructor._$Ep(t,r);if(n!==void 0&&r.reflect===!0){let a=(((s=r.converter)===null||s===void 0?void 0:s.toAttribute)!==void 0?r.converter:vv).toAttribute(i,r.type);this._$El=t,a==null?this.removeAttribute(n):this.setAttribute(n,a),this._$El=null}}_$AK(t,i){var r;let s=this.constructor,n=s._$Ev.get(t);if(n!==void 0&&this._$El!==n){let a=s.getPropertyOptions(n),o=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)===null||r===void 0?void 0:r.fromAttribute)!==void 0?a.converter:vv;this._$El=n,this[n]=o.fromAttribute(i,a.type),this._$El=null}}requestUpdate(t,i,r){let s=!0;t!==void 0&&(((r=r||this.constructor.getPropertyOptions(t)).hasChanged||OA)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),r.reflect===!0&&this._$El!==t&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(t,r))):s=!1),!this.isUpdatePending&&s&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(i){Promise.reject(i)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach((s,n)=>this[n]=s),this._$Ei=void 0);let i=!1,r=this._$AL;try{i=this.shouldUpdate(r),i?(this.willUpdate(r),(t=this._$ES)===null||t===void 0||t.forEach(s=>{var n;return(n=s.hostUpdate)===null||n===void 0?void 0:n.call(s)}),this.update(r)):this._$Ek()}catch(s){throw i=!1,this._$Ek(),s}i&&this._$AE(r)}willUpdate(t){}_$AE(t){var i;(i=this._$ES)===null||i===void 0||i.forEach(r=>{var s;return(s=r.hostUpdated)===null||s===void 0?void 0:s.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){this._$EC!==void 0&&(this._$EC.forEach((i,r)=>this._$EO(r,this[r],i)),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};Ns.finalized=!0,Ns.elementProperties=new Map,Ns.elementStyles=[],Ns.shadowRootOptions={mode:"open"},DA?.({ReactiveElement:Ns}),((mv=Cu.reactiveElementVersions)!==null&&mv!==void 0?mv:Cu.reactiveElementVersions=[]).push("1.6.0");var yv,Tu=window,Wo=Tu.trustedTypes,LA=Wo?Wo.createPolicy("lit-html",{createHTML:e=>e}):void 0,Sn=`lit$${(Math.random()+"").slice(9)}$`,UA="?"+Sn,aV=`<${UA}>`,Xo=document,Th=(e="")=>Xo.createComment(e),Ph=e=>e===null||typeof e!="object"&&typeof e!="function",kA=Array.isArray,oV=e=>kA(e)||typeof e?.[Symbol.iterator]=="function",Ch=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,IA=/-->/g,BA=/>/g,fa=RegExp(`>|[
5203
5203
  \f\r](?:([^\\s"'>=/]+)([
5204
5204
  \f\r]*=[
5205
5205
  \f\r]*(?:[^
@@ -5279,7 +5279,7 @@ outputColor=vec4(color,inputColor.a);}`,Gc={DEFAULT:0,ESKIL:1},zG=class extends
5279
5279
  />
5280
5280
  </svg>
5281
5281
  </a>
5282
- </div>`,zi=class extends An{constructor(){super();this.url=null;this.width=void 0;this.height=void 0;this.background=void 0;this.loading="auto";this.unloadable=!1;this.eventsTarget=void 0;this.preloader=!1;this._intersectionObserver=null;this._isElementInViewport=!1;this._loaded=!1;this._loadedUrl=null;this._wasContextLost=!1;this._handleContextLost=()=>{this._wasContextLost=!0,this._loadedUrl=null,this._spline.dispose(),this._isElementInViewport&&this.load(),this.dispatchEvent(new CustomEvent("context-loss",{detail:{}}))};this._handleContextRestored=()=>{};this.onLoaded=()=>{this._loaded=!0,this.eventsTarget!==void 0&&this._spline.eventManager.updateUseWindowEvents(this.eventsTarget==="global"),this.background!==void 0&&this._spline?.setBackgroundColor(this.background),this._spline?.data.scene.publish.settings.web.logo!==!1&&(this._logo.style.display="flex"),this.preloader&&(this._preloader.style.display="none"),setTimeout(()=>{this._canvas.style.visibility="visible"}),this.dispatchEvent(new CustomEvent("load-complete",{detail:{url:this.url}})),(this.hint??this._spline.data.scene.publish.settings.web.hint)&&(this._canvas.addEventListener("pointerdown",this.onInteract),this._canvas.addEventListener("pointerup",this.onInteract),this._hintDrag.style.display="block")};this.onInteract=()=>{this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none"};this.attachShadow({mode:"open"});let i=this.shadowRoot;Pu(dV,i),this._container=i.querySelector("#container"),this._canvas=i.querySelector("#spline"),this._logo=i.querySelector("#logo"),this._hintDrag=i.querySelector("#hint-drag"),this._preloader=i.querySelector("#preloader"),this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new dv(this._canvas),Du?this._intersectionObserver=new IntersectionObserver(r=>{for(let s of r)s.target===this&&(this._isElementInViewport=s.isIntersecting,this._isElementInViewport&&(!this._loaded||this._wasContextLost)?this.load():this.unloadable&&!this._isElementInViewport&&this._loaded&&this.unload(),this.dispatchEvent(new CustomEvent("viewport-intersection",{detail:{intersection:this._isElementInViewport}})))},{root:null,rootMargin:"0px",threshold:1e-5}):this._isElementInViewport=!0}unload(){!this._loaded||(this._loaded=!1,this._loadedUrl=null,this._spline.dispose(),this.dispatchEvent(new CustomEvent("unload",{detail:{}})))}recreateCanvas(){let i=this._canvas;i.removeEventListener("pointerdown",this.onInteract),i.removeEventListener("pointerup",this.onInteract),i.removeEventListener("webglcontextlost",this._handleContextLost),i.removeEventListener("webglcontextrestored",this._handleContextRestored);let r=document.createElement("canvas");this._container.insertBefore(r,this._canvas),this._container.removeChild(this._canvas),r.setAttribute("id","spline"),this._canvas=r,this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new dv(this._canvas)}load(){this._loaded&&!this._wasContextLost||!this._isElementInViewport&&this.loading!=="eager"||!this.url||this.url===this._loadedUrl||(this.preloader&&(this._preloader.style.display="flex"),this._canvas.style.visibility="hidden",this.dispatchEvent(new CustomEvent("load-start",{detail:{url:this.url}})),this._wasContextLost&&this.recreateCanvas(),this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none",this._loadedUrl=this.url,this._spline.load(this.url).then(this.onLoaded))}updated(i){if(super.updated(i),i.has("url")&&(this.url==null&&this._loaded?this.unload():this.url!==this._loadedUrl&&this.load()),i.has("width")&&this.width!==void 0&&(this._container.style.width=this.width+"px"),i.has("height")&&this.height!==void 0&&(this._container.style.height=this.height+"px"),i.has("eventsTarget")&&this.eventsTarget!==void 0){let r=this.eventsTarget==="global";this._spline?.eventManager?.updateUseWindowEvents(r),this._spline?.controls?.updateUseWindowEvents(r)}}connectedCallback(){super.connectedCallback(),Du&&this._intersectionObserver.observe(this)}disconnectedCallback(){Du&&this._intersectionObserver.unobserve(this),super.disconnectedCallback()}};zi.styles=pv`
5282
+ </div>`,zi=class extends An{constructor(){super();this.url=null;this.width=void 0;this.height=void 0;this.background=void 0;this.loading="auto";this.unloadable=!1;this.eventsTarget=void 0;this.preloader=!1;this._intersectionObserver=null;this._isElementInViewport=!1;this._loaded=!1;this._loadedUrl=null;this._wasContextLost=!1;this._handleContextLost=()=>{this._wasContextLost=!0,this._loadedUrl=null,this._spline.dispose(),this._isElementInViewport&&this.load(),this.dispatchEvent(new CustomEvent("context-loss",{detail:{}}))};this._handleContextRestored=()=>{};this.onLoaded=()=>{this._loaded=!0,this.eventsTarget!==void 0&&this._spline.eventManager.updateUseWindowEvents(this.eventsTarget==="global"),this.background!==void 0&&this._spline?.setBackgroundColor(this.background),this._spline?.data.scene.publish.settings.web.logo!==!1&&(this._logo.style.display="flex"),this.preloader&&(this._preloader.style.display="none"),setTimeout(()=>{this._canvas.style.visibility="visible"}),this.dispatchEvent(new CustomEvent("load-complete",{detail:{url:this.url}})),(this.hint??this._spline.data.scene.publish.settings.web.hint)&&(this._canvas.addEventListener("pointerdown",this.onInteract),this._canvas.addEventListener("pointerup",this.onInteract),this._hintDrag.style.display="block")};this.onInteract=()=>{this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none"};this.attachShadow({mode:"open"});let i=this.shadowRoot;Pu(dV,i),this._container=i.querySelector("#container"),this._canvas=i.querySelector("#spline"),this._logo=i.querySelector("#logo"),this._hintDrag=i.querySelector("#hint-drag"),this._preloader=i.querySelector("#preloader"),this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new dv(this._canvas),Du?this._intersectionObserver=new IntersectionObserver(r=>{for(let s of r)s.target===this&&(this._isElementInViewport=s.isIntersecting,this._isElementInViewport&&(!this._loaded||this._wasContextLost)?this.load():this.unloadable&&!this._isElementInViewport&&this._loaded&&this.unload(),this.dispatchEvent(new CustomEvent("viewport-intersection",{detail:{intersection:this._isElementInViewport}})))},{root:null,rootMargin:"0px",threshold:1e-5}):this._isElementInViewport=!0}unload(){!this._loaded||(this._loaded=!1,this._loadedUrl=null,this._spline.dispose(),this.dispatchEvent(new CustomEvent("unload",{detail:{}})))}recreateCanvas(){let i=this._canvas;i.removeEventListener("pointerdown",this.onInteract),i.removeEventListener("pointerup",this.onInteract),i.removeEventListener("webglcontextlost",this._handleContextLost),i.removeEventListener("webglcontextrestored",this._handleContextRestored);let r=document.createElement("canvas");this._container.insertBefore(r,this._canvas),this._container.removeChild(this._canvas),r.setAttribute("id","spline"),this._canvas=r,this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new dv(this._canvas)}load(){this._loaded&&!this._wasContextLost||!this._isElementInViewport&&this.loading!=="eager"||!this.url||this.url===this._loadedUrl||(this.preloader&&(this._preloader.style.display="flex"),this._canvas.style.visibility="hidden",this.dispatchEvent(new CustomEvent("load-start",{detail:{url:this.url}})),this._wasContextLost&&this.recreateCanvas(),this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none",this._loadedUrl=this.url,this._spline.load(this.url).then(this.onLoaded))}updated(i){if(super.updated(i),i.has("url")&&(this.url==null&&this._loaded?this.unload():this.url!==this._loadedUrl&&this.load()),i.has("width")&&this.width!==void 0&&(this._container.style.width=this.width+"px"),i.has("height")&&this.height!==void 0&&(this._container.style.height=this.height+"px"),i.has("background")&&this.background!==void 0&&this._spline?.setBackgroundColor(this.background),i.has("eventsTarget")&&this.eventsTarget!==void 0){let r=this.eventsTarget==="global";this._spline?.eventManager?.updateUseWindowEvents(r),this._spline?.controls?.updateUseWindowEvents(r)}}connectedCallback(){super.connectedCallback(),Du&&this._intersectionObserver.observe(this)}disconnectedCallback(){Du&&this._intersectionObserver.unobserve(this),super.disconnectedCallback()}};zi.styles=pv`
5283
5283
  :host {
5284
5284
  display: block;
5285
5285
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splinetool/viewer",
3
- "version": "0.0.29",
3
+ "version": "0.0.31",
4
4
  "description": "Spline viewer",
5
5
  "type": "module",
6
6
  "main": "./build/spline-viewer.js",