@splinetool/viewer 0.0.43 → 0.0.44

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.
@@ -4911,7 +4911,7 @@ gl_FragColor = vec4(resultColor, vColor.r);
4911
4911
  }
4912
4912
  `,uf=new ti({vertexShader:P8,fragmentShader:D8,uniforms:{depthContrast:{value:1}}}),Gm=new wh;Gm.wireframe=!0;var nb=new E,wS=class extends aa{constructor(e,t){super(),this.data=e,this.backupFog=new _w(16777215,.1,2e3),this.fogUseBGColor=!1,this.enableHelpers=!1,this.wireframeState=!1,this.needsTransmissionDirty=!0,this.needsNormalDirty=!0,this._needsTransmission=!1,this._needsNormal=!1,this.geometryCacheChanged=!1,this.bgColor=new ji(1,1,1,1),this.entityByUuid={},this.entityIdentityToEntity={},this.toExpandCloner=new Set,this.toUpdateCloner=new Set,this.pendingCommands=[],this.needsRecomputeInstances=!1,this.ambientLight=new UD(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=x8(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=y8(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),i=this.entityIdentityToEntity[t];i&&(e.uuid=i.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let i=[],r=t;for(;r!==this;){let s=r;r=r.parent;let n=r.children.indexOf(s);i.splice(0,0,n)}return{entity:t,sortKey:i}}getAllSorted(e){let t=[];for(let i of e){let r=this.getWithSortKey(i.id);r!==void 0&&t.push(r)}return t.sort((i,r)=>$z(i.sortKey,r.sortKey)),t.map(i=>i.entity)}nonExistOrDescendantOf(e,t){let i=this.find(e);if(i===void 0)return!0;for(;i;){if(i.uuid===t)return!0;i=i.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let i=e.parent===null?this:this.find(e.parent);if(i===void 0)throw new Error("unexpected");let r=this.createObject(e.id,e.data,e.children,i,e.localIndex,t);r.updateVisible(),r.resetBBoxNeedsUpdate(),Rs(r)&&vn(r.parent)&&(r.invalidateUpstreamBooleanData(),r.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(r),this.markToExpandCloner(r)}else if(e.path.length===0&&e.type===8){let i=this.find(e.id);if(i===void 0)throw new Error("unexpected");this.markToExpandCloner(i),i.resetBBoxNeedsUpdate(),this.unregisterObject(i);let r=i.parent;this.markNeedsRecomputeInstancesForAncessors(r),this.markNeedsRecomputeInstancesForChildren(i),i.parent.remove(i),vn(i.parent)&&(i.parent.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Rs(i)&&(i.freeBooleanPointer(),r instanceof No&&r.invalidateDownstreamBooleanData().recomputeBoolean()),i instanceof cv&&i.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i)}else if(e.path.length===0&&e.type===9){let i=this.find(e.id);if(i===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(i);let r=i.parent;this.markNeedsRecomputeInstancesForAncessors(r),i.cloner?.resetOnMove(),this.markToExpandCloner(i);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(i),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(i),i.invalidateClonerTransform(i),i.updateVisible(),i.resetBBoxNeedsUpdate();let n=e.localIndex;s.children.splice(n,0,s.children.pop()),Rs(i)&&(i.invalidateUpstreamBooleanData(),vn(i.parent)?i.parent.invalidateDownstreamBooleanData().recomputeBoolean():r instanceof No&&r.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,i,r){if(t.type===0&&(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props)){let{states:n,rest:a}=t.props;t={...t,props:a},this.markNeedsRecomputeInstances()}let s=this.find(e);if(s)try{v8(s,t,i,{scene:this,shared:r}),s instanceof Sr&&s.updateGeometryGroupsIfNeeded()}catch(n){console.error(n)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(tr(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let i=this.find(e.publish.playCamera);i instanceof sr&&this.switchActiveCamera(i)}this.expandInstances(t,!0),this.traverseEntity(i=>{vn(i)&&i.recomputeBoolean()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ct.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ct.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,i,r,s,n,a){e&&e!==r.uuid&&r.find(e)&&s.forInstancesRec(o=>{o.isInstanceRoot||(o.data=Mu(o.data,l=>{let h=l.events.data(a.id),d=o.goUp(n);if(d){let c=[...J_(d.identity),e].join("-"),u=this.entityIdentityToEntity[c];if(u){let p=u.uuid;cs.zoom(h,t)[i]=p}else console.warn("cannot find instance")}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Eo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,i)=>{t.data.events.forEach(r=>{r.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=Mu(s.data,n=>{n.events.delete(r.id)}).data)}):r.data.type==="Conditional"?(r.data.condition.type==="Distance"?(this.relativeizeInner(r.data.condition.fromObject,["condition"],"fromObject",e,t,i,r),this.relativeizeInner(r.data.condition.toObject,["condition"],"toObject",e,t,i,r)):r.data.condition.type==="State"?this.relativeizeInner(r.data.condition.object,["condition"],"object",e,t,i,r):r.data.condition.type==="Comparison"&&(r.data.condition.lOperand.type==="Property"&&this.relativeizeInner(r.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,i,r),r.data.condition.rOperand.type==="Property"&&this.relativeizeInner(r.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,i,r)),r.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,i,r)}),r.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,i,r)})):"actions"in r.data&&r.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,i,r)})})}),!0})}expandInstances(e,t){let i=new Set;this.traverseEntity(r=>{if(r instanceof Eo&&r.isInstanceRoot)return r.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||r.resetBBoxNeedsUpdate(),!0});for(let r of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(r),uv(r)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof Eo&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let i=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[i]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[i]),t.dispose()})}clearScene(){for(let e of this.children)Ct.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new sr(wS.PERSONAL_CAMERA_ID,{...Ru.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],i=r=>{for(let s of r.children){let n=s.cloner;Ct.is(s)&&!s.raycastLock&&(s.visible||n?.object.data.visible)&&((Rs(s)||h8(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),A8(s,e,t)),i(s))}};return i(this),t}forEachEntity(e){for(let t of this.children)Ct.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ct.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Xu.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ct.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=tr(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=tr(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=tr(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,t,i){let r=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,r,i),r+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,i,r,s,n){let a={scene:this,shared:n},o=dv(e,t,a);return o&&(this.entityByUuid[e]=o,r.add(o),r.children.splice(s,0,r.children.pop()),i.length>0&&(o.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(i,o,n)),o.updateState(t,a),o instanceof Sr&&o.updateGeometryGroupsIfNeeded(),o.updateVisible(),o.cloner&&this.toExpandCloner.add(o)),o}getCenter(e){let t=[];for(let r=0,s=e.length;r<s;++r){let{id:n,recursive:a}=e[r],o=this.find(n),l=a?o.recursiveBBox:o.singleBBox;t.push(...l.vertices)}let i=new Zt;return i.setFromPoints(t),i.getCenter(nb),nb}copyMatrixWorld(e,t){if(e===null){t.identity();return}let i=this.find(e);i?t.copy(i.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let i=this.find(e)?.parent;i?t.copy(i.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof rr)if(Array.isArray(t.material))for(let i=0;i<t.material.length;i++)t.material[i]instanceof Sn&&e(t.material[i]);else t.material instanceof Sn&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let i,r;e>=t?(i=t/e,r=1):(i=1,r=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(n=>{n.uniforms[`f${n.id}_aspectRatio`].value.x=i,n.uniforms[`f${n.id}_aspectRatio`].value.y=r})})}},Cd=wS;Cd.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var su=(e,t)=>{let i=t.x-e.x,r=t.y-e.y;return Math.sqrt(i*i+r*r)},O8=(e,t)=>{let i=t.x-e.x,r=t.y-e.y;return I8(Math.atan2(r,i))},L8=(e,t,i)=>{let r={x:0,y:0};return i=Vm(i),r.x=e.x-t*Math.cos(i),r.y=e.y-t*Math.sin(i),r},Vm=e=>e*(Math.PI/180),I8=e=>e*(180/Math.PI),R8=e=>isNaN(e.buttons)?e.pressure!==0:e.buttons!==0,df=new Map,ab=e=>{df.has(e)&&clearTimeout(df.get(e)),df.set(e,setTimeout(e,100))},$u=(e,t,i)=>{let r=t.split(/[ ,]+/g),s;for(let n=0;n<r.length;n+=1)s=r[n],e.addEventListener?e.addEventListener(s,i,!1):e.attachEvent&&e.attachEvent(s,i)},ob=(e,t,i)=>{let r=t.split(/[ ,]+/g),s;for(let n=0;n<r.length;n+=1)s=r[n],e.removeEventListener?e.removeEventListener(s,i):e.detachEvent&&e.detachEvent(s,i)},_S=e=>(e.preventDefault(),e.type.match(/^touch/)?e.changedTouches:e),lb=()=>{if(typeof window>"u")return;let e=window.pageXOffset!==void 0?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,t=window.pageYOffset!==void 0?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;return{x:e,y:t}},Hm=(e,t)=>{t.top||t.right||t.bottom||t.left?(e.style.top=t.top,e.style.right=t.right,e.style.bottom=t.bottom,e.style.left=t.left):(e.style.left=t.x+"px",e.style.top=t.y+"px")},pv=(e,t,i)=>{let r=AS(e);for(let s in r)if(r.hasOwnProperty(s))if(typeof t=="string")r[s]=t+" "+i;else{let n="";for(let a=0,o=t.length;a<o;a+=1)n+=t[a]+" "+i+", ";r[s]=n.slice(0,-2)}return r},B8=(e,t)=>{let i=AS(e);for(let r in i)i.hasOwnProperty(r)&&(i[r]=t);return i},AS=e=>{let t={};return t[e]="",["webkit","Moz","o"].forEach(function(i){t[i+e.charAt(0).toUpperCase()+e.slice(1)]=""}),t},pf=(e,t)=>{for(let i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},N8=(e,t)=>{let i={};for(let r in e)e.hasOwnProperty(r)&&t.hasOwnProperty(r)?i[r]=t[r]:e.hasOwnProperty(r)&&(i[r]=e[r]);return i},Wm=(e,t)=>{if(e.length)for(let i=0,r=e.length;i<r;i+=1)t(e[i]);else t(e)},z8=(e,t,i)=>({x:Math.min(Math.max(e.x,t.x-i),t.x+i),y:Math.min(Math.max(e.y,t.y-i),t.y+i)});typeof window<"u"&&(SS="ontouchstart"in window,MS=!!window.PointerEvent,ES=!!window.MSPointerEvent);var SS,MS,ES,Tl={touch:{start:"touchstart",move:"touchmove",end:"touchend, touchcancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup, pointercancel"},MSPointer:{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}},co,vh={};MS?co=Tl.pointer:ES?co=Tl.MSPointer:SS?(co=Tl.touch,vh=Tl.mouse):co=Tl.mouse;function wa(){}wa.prototype.on=function(e,t){var i=this,r=e.split(/[ ,]+/g),s;i._handlers_=i._handlers_||{};for(var n=0;n<r.length;n+=1)s=r[n],i._handlers_[s]=i._handlers_[s]||[],i._handlers_[s].push(t);return i};wa.prototype.off=function(e,t){var i=this;return i._handlers_=i._handlers_||{},e===void 0?i._handlers_={}:t===void 0?i._handlers_[e]=null:i._handlers_[e]&&i._handlers_[e].indexOf(t)>=0&&i._handlers_[e].splice(i._handlers_[e].indexOf(t),1),i};wa.prototype.trigger=function(e,t){var i=this,r=e.split(/[ ,]+/g),s;i._handlers_=i._handlers_||{};for(var n=0;n<r.length;n+=1)s=r[n],i._handlers_[s]&&i._handlers_[s].length&&i._handlers_[s].forEach(function(a){a.call(i,{type:s,target:i},t)})};wa.prototype.config=function(e){var t=this;t.options=t.defaults||{},e&&(t.options=N8(t.options,e))};wa.prototype.bindEvt=function(e,t){var i=this;return i._domHandlers_=i._domHandlers_||{},i._domHandlers_[t]=function(){typeof i["on"+t]=="function"?i["on"+t].apply(i,arguments):console.warn('[WARNING] : Missing "on'+t+'" handler.')},$u(e,co[t],i._domHandlers_[t]),vh[t]&&$u(e,vh[t],i._domHandlers_[t]),i};wa.prototype.unbindEvt=function(e,t){var i=this;return i._domHandlers_=i._domHandlers_||{},ob(e,co[t],i._domHandlers_[t]),vh[t]&&ob(e,vh[t],i._domHandlers_[t]),delete i._domHandlers_[t],this};var fv=wa;function si(e,t){return this.identifier=t.identifier,this.position=t.position,this.frontPosition=t.frontPosition,this.collection=e,this.defaults={size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:1,mode:"dynamic",zone:document.body,lockX:!1,lockY:!1,shape:"circle"},this.config(t),this.options.mode==="dynamic"&&(this.options.restOpacity=0),this.id=si.id,si.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}si.prototype=new fv;si.constructor=si;si.id=0;si.prototype.buildEl=function(e){return this.ui={},this.options.dataOnly?this:(this.ui.el=document.createElement("div"),this.ui.back=document.createElement("div"),this.ui.front=document.createElement("div"),this.ui.el.className="nipple collection_"+this.collection.id,this.ui.back.className="back",this.ui.front.className="front",this.ui.el.setAttribute("id","nipple_"+this.collection.id+"_"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front),this)};si.prototype.stylize=function(){if(this.options.dataOnly)return this;var e=this.options.fadeTime+"ms",t=B8("borderRadius","50%"),i=pv("transition","opacity",e),r={};return r.el={position:"absolute",opacity:this.options.restOpacity,display:"block",zIndex:999},r.back={position:"absolute",display:"block",width:this.options.size+"px",height:this.options.size+"px",marginLeft:-this.options.size/2+"px",marginTop:-this.options.size/2+"px",background:"rgba(255, 255, 255, .4)",border:"solid 2px rgba(0, 0, 0, .1)"},r.front={width:this.options.size/2+"px",height:this.options.size/2+"px",position:"absolute",display:"block",marginLeft:-this.options.size/4+"px",marginTop:-this.options.size/4+"px",background:"rgba(255, 255, 255, .8)",border:"solid 2px rgba(0, 0, 0, .1)"},pf(r.el,i),this.options.shape==="circle"&&pf(r.back,t),pf(r.front,t),this.applyStyles(r),this};si.prototype.applyStyles=function(e){for(var t in this.ui)if(this.ui.hasOwnProperty(t))for(var i in e[t])this.ui[t].style[i]=e[t][i];return this};si.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)?this:(this.options.zone.appendChild(this.ui.el),this)};si.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)?this:(this.options.zone.removeChild(this.ui.el),this)};si.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger("destroyed",this.instance),this.removeFromDom(),this.off()};si.prototype.show=function(e){var t=this;return t.options.dataOnly||(clearTimeout(t.removeTimeout),clearTimeout(t.showTimeout),clearTimeout(t.restTimeout),t.addToDom(),t.restCallback(),setTimeout(function(){t.ui.el.style.opacity=1},0),t.showTimeout=setTimeout(function(){t.trigger("shown",t.instance),typeof e=="function"&&e.call(this)},t.options.fadeTime)),t};si.prototype.hide=function(e){var t=this;if(t.options.dataOnly)return t;if(t.ui.el.style.opacity=t.options.restOpacity,clearTimeout(t.removeTimeout),clearTimeout(t.showTimeout),clearTimeout(t.restTimeout),t.removeTimeout=setTimeout(function(){var i=t.options.mode==="dynamic"?"none":"block";t.ui.el.style.display=i,typeof e=="function"&&e.call(t),t.trigger("hidden",t.instance)},t.options.fadeTime),t.options.restJoystick){let i=t.options.restJoystick,r={};r.x=i===!0||i.x!==!1?0:t.instance.frontPosition.x,r.y=i===!0||i.y!==!1?0:t.instance.frontPosition.y,t.setPosition(e,r)}return t};si.prototype.setPosition=function(e,t){var i=this;i.frontPosition={x:t.x,y:t.y};var r=i.options.fadeTime+"ms",s={};s.front=pv("transition",["top","left"],r);var n={front:{}};n.front={left:i.frontPosition.x+"px",top:i.frontPosition.y+"px"},i.applyStyles(s),i.applyStyles(n),i.restTimeout=setTimeout(function(){typeof e=="function"&&e.call(i),i.restCallback()},i.options.fadeTime)};si.prototype.restCallback=function(){var e=this,t={};t.front=pv("transition","none",""),e.applyStyles(t),e.trigger("rested",e.instance)};si.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}};si.prototype.computeDirection=function(e){var t=e.angle.radian,i=Math.PI/4,r=Math.PI/2,s,n,a;if(t>i&&t<i*3&&!e.lockX?s="up":t>-i&&t<=i&&!e.lockY?s="left":t>-i*3&&t<=-i&&!e.lockX?s="down":e.lockY||(s="right"),e.lockY||(t>-r&&t<r?n="left":n="right"),e.lockX||(t>0?a="up":a="down"),e.force>this.options.threshold){var o={},l;for(l in this.direction)this.direction.hasOwnProperty(l)&&(o[l]=this.direction[l]);var h={};this.direction={x:n,y:a,angle:s},e.direction=this.direction;for(l in o)o[l]===this.direction[l]&&(h[l]=!0);if(h.x&&h.y&&h.angle)return e;(!h.x||!h.y)&&this.trigger("plain",e),h.x||this.trigger("plain:"+n,e),h.y||this.trigger("plain:"+a,e),h.angle||this.trigger("dir dir:"+s,e)}else this.resetDirection();return e};var U8=si;function Vt(e,t){var i=this;i.nipples=[],i.idles=[],i.actives=[],i.ids=[],i.pressureIntervals={},i.manager=e,i.id=Vt.id,Vt.id+=1,i.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:1,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1,follow:!1},i.config(t),(i.options.mode==="static"||i.options.mode==="semi")&&(i.options.multitouch=!1),i.options.multitouch||(i.options.maxNumberOfNipples=1);let r=getComputedStyle(i.options.zone.parentElement);return r&&r.display==="flex"&&(i.parentIsFlex=!0),i.updateBox(),i.prepareNipples(),i.bindings(),i.begin(),i.nipples}Vt.prototype=new fv;Vt.constructor=Vt;Vt.id=0;Vt.prototype.prepareNipples=function(){var e=this,t=e.nipples;t.on=e.on.bind(e),t.off=e.off.bind(e),t.options=e.options,t.destroy=e.destroy.bind(e),t.ids=e.ids,t.id=e.id,t.processOnMove=e.processOnMove.bind(e),t.processOnEnd=e.processOnEnd.bind(e),t.get=function(i){if(i===void 0)return t[0];for(var r=0,s=t.length;r<s;r+=1)if(t[r].identifier===i)return t[r];return!1}};Vt.prototype.bindings=function(){var e=this;e.bindEvt(e.options.zone,"start"),e.options.zone.style.touchAction="none",e.options.zone.style.msTouchAction="none"};Vt.prototype.begin=function(){var e=this,t=e.options;if(t.mode==="static"){var i=e.createNipple(t.position,e.manager.getIdentifier());i.add(),e.idles.push(i)}};Vt.prototype.createNipple=function(e,t){var i=this,r=i.manager.scroll,s={},n=i.options,a={x:i.parentIsFlex?r.x:r.x+i.box.left,y:i.parentIsFlex?r.y:r.y+i.box.top};if(e.x&&e.y)s={x:e.x-a.x,y:e.y-a.y};else if(e.top||e.right||e.bottom||e.left){var o=document.createElement("DIV");o.style.display="hidden",o.style.top=e.top,o.style.right=e.right,o.style.bottom=e.bottom,o.style.left=e.left,o.style.position="absolute",n.zone.appendChild(o);var l=o.getBoundingClientRect();n.zone.removeChild(o),s=e,e={x:l.left+r.x,y:l.top+r.y}}var h=new U8(i,{color:n.color,size:n.size,threshold:n.threshold,fadeTime:n.fadeTime,dataOnly:n.dataOnly,restJoystick:n.restJoystick,restOpacity:n.restOpacity,mode:n.mode,identifier:t,position:e,zone:n.zone,frontPosition:{x:0,y:0},shape:n.shape});return n.dataOnly||(Hm(h.ui.el,s),Hm(h.ui.front,h.frontPosition)),i.nipples.push(h),i.trigger("added "+h.identifier+":added",h),i.manager.trigger("added "+h.identifier+":added",h),i.bindNipple(h),h};Vt.prototype.updateBox=function(){var e=this;e.box=e.options.zone.getBoundingClientRect()};Vt.prototype.bindNipple=function(e){var t=this,i,r=function(s,n){i=s.type+" "+n.id+":"+s.type,t.trigger(i,n)};e.on("destroyed",t.onDestroyed.bind(t)),e.on("shown hidden rested dir plain",r),e.on("dir:up dir:right dir:down dir:left",r),e.on("plain:up plain:right plain:down plain:left",r)};Vt.prototype.pressureFn=function(e,t,i){var r=this,s=0;clearInterval(r.pressureIntervals[i]),r.pressureIntervals[i]=setInterval(function(){var n=e.force||e.pressure||e.webkitForce||0;n!==s&&(t.trigger("pressure",n),r.trigger("pressure "+t.identifier+":pressure",n),s=n)}.bind(r),100)};Vt.prototype.onstart=function(e){var t=this,i=t.options,r=e;e=_S(e),t.updateBox();var s=function(n){t.actives.length<i.maxNumberOfNipples?t.processOnStart(n):r.type.match(/^touch/)&&(Object.keys(t.manager.ids).forEach(function(a){if(Object.values(r.touches).findIndex(function(l){return l.identifier===a})<0){var o=[e[0]];o.identifier=a,t.processOnEnd(o)}}),t.actives.length<i.maxNumberOfNipples&&t.processOnStart(n))};return Wm(e,s),t.manager.bindDocument(),!1};Vt.prototype.processOnStart=function(e){var t=this,i=t.options,r,s=t.manager.getIdentifier(e),n=e.force||e.pressure||e.webkitForce||0,a={x:e.pageX,y:e.pageY},o=t.getOrCreate(s,a);o.identifier!==s&&t.manager.removeIdentifier(o.identifier),o.identifier=s;var l=function(d){d.trigger("start",d),t.trigger("start "+d.id+":start",d),d.show(),n>0&&t.pressureFn(e,d,d.identifier),t.processOnMove(e)};if((r=t.idles.indexOf(o))>=0&&t.idles.splice(r,1),t.actives.push(o),t.ids.push(o.identifier),i.mode!=="semi")l(o);else{var h=su(a,o.position);if(h<=i.catchDistance)l(o);else{o.destroy(),t.processOnStart(e);return}}return o};Vt.prototype.getOrCreate=function(e,t){var i=this,r=i.options,s;return/(semi|static)/.test(r.mode)?(s=i.idles[0],s?(i.idles.splice(0,1),s):r.mode==="semi"?i.createNipple(t,e):(console.warn("Coudln't find the needed nipple."),!1)):(s=i.createNipple(t,e),s)};Vt.prototype.processOnMove=function(e){var t=this,i=t.options,r=t.manager.getIdentifier(e),s=t.nipples.get(r),n=t.manager.scroll;if(!R8(e)){this.processOnEnd(e);return}if(!s){console.error("Found zombie joystick with ID "+r),t.manager.removeIdentifier(r);return}if(i.dynamicPage){var a=s.el.getBoundingClientRect();s.position={x:n.x+a.left,y:n.y+a.top}}s.identifier=r;var o=s.options.size/2,l={x:e.pageX,y:e.pageY};i.lockX&&(l.y=s.position.y),i.lockY&&(l.x=s.position.x);var h=su(l,s.position),d=O8(l,s.position),c=Vm(d),u=h/o,p={distance:h,position:l},f,g;if(s.options.shape==="circle"?(f=Math.min(h,o),g=L8(s.position,f,d)):(g=z8(l,s.position,o),f=su(g,s.position)),i.follow){if(h>o){let b=l.x-g.x,x=l.y-g.y;s.position.x+=b,s.position.y+=x,s.el.style.top=s.position.y-(t.box.top+n.y)+"px",s.el.style.left=s.position.x-(t.box.left+n.x)+"px",h=su(l,s.position)}}else l=g,h=f;var m=l.x-s.position.x,v=l.y-s.position.y;s.frontPosition={x:m,y:v},i.dataOnly||Hm(s.ui.front,s.frontPosition);var y={identifier:s.identifier,position:l,force:u,pressure:e.force||e.pressure||e.webkitForce||0,distance:h,angle:{radian:c,degree:d},vector:{x:m/o,y:-v/o},raw:p,instance:s,lockX:i.lockX,lockY:i.lockY};y=s.computeDirection(y),y.angle={radian:Vm(180-d),degree:180-d},s.trigger("move",y),t.trigger("move "+s.id+":move",y)};Vt.prototype.processOnEnd=function(e){var t=this,i=t.options,r=t.manager.getIdentifier(e),s=t.nipples.get(r),n=t.manager.removeIdentifier(s.identifier);!s||(i.dataOnly||s.hide(function(){i.mode==="dynamic"&&(s.trigger("removed",s),t.trigger("removed "+s.id+":removed",s),t.manager.trigger("removed "+s.id+":removed",s),s.destroy())}),clearInterval(t.pressureIntervals[s.identifier]),s.resetDirection(),s.trigger("end",s),t.trigger("end "+s.id+":end",s),t.ids.indexOf(s.identifier)>=0&&t.ids.splice(t.ids.indexOf(s.identifier),1),t.actives.indexOf(s)>=0&&t.actives.splice(t.actives.indexOf(s),1),/(semi|static)/.test(i.mode)?t.idles.push(s):t.nipples.indexOf(s)>=0&&t.nipples.splice(t.nipples.indexOf(s),1),t.manager.unbindDocument(),/(semi|static)/.test(i.mode)&&(t.manager.ids[n.id]=n.identifier))};Vt.prototype.onDestroyed=function(e,t){var i=this;i.nipples.indexOf(t)>=0&&i.nipples.splice(i.nipples.indexOf(t),1),i.actives.indexOf(t)>=0&&i.actives.splice(i.actives.indexOf(t),1),i.idles.indexOf(t)>=0&&i.idles.splice(i.idles.indexOf(t),1),i.ids.indexOf(t.identifier)>=0&&i.ids.splice(i.ids.indexOf(t.identifier),1),i.manager.removeIdentifier(t.identifier),i.manager.unbindDocument()};Vt.prototype.destroy=function(){var e=this;e.unbindEvt(e.options.zone,"start"),e.nipples.forEach(function(i){i.destroy()});for(var t in e.pressureIntervals)e.pressureIntervals.hasOwnProperty(t)&&clearInterval(e.pressureIntervals[t]);e.trigger("destroyed",e.nipples),e.manager.unbindDocument(),e.off()};var F8=Vt;function hi(e){var t=this;t.ids={},t.index=0,t.collections=[],t.scroll=lb(),t.config(e),t.prepareCollections();var i=function(){var s;t.collections.forEach(function(n){n.forEach(function(a){s=a.el.getBoundingClientRect(),a.position={x:t.scroll.x+s.left,y:t.scroll.y+s.top}})})};if(typeof window>"u")return t.collections;$u(window,"resize",function(){ab(i)});var r=function(){t.scroll=lb()};return $u(window,"scroll",function(){ab(r)}),t.collections}hi.prototype=new fv;hi.constructor=hi;hi.prototype.prepareCollections=function(){var e=this;e.collections.create=e.create.bind(e),e.collections.on=e.on.bind(e),e.collections.off=e.off.bind(e),e.collections.destroy=e.destroy.bind(e),e.collections.get=function(t){var i;return e.collections.every(function(r){return i=r.get(t),!i}),i}};hi.prototype.create=function(e){return this.createCollection(e)};hi.prototype.createCollection=function(e){var t=this,i=new F8(t,e);return t.bindCollection(i),t.collections.push(i),i};hi.prototype.bindCollection=function(e){var t=this,i,r=function(s,n){i=s.type+" "+n.id+":"+s.type,t.trigger(i,n)};e.on("destroyed",t.onDestroyed.bind(t)),e.on("shown hidden rested dir plain",r),e.on("dir:up dir:right dir:down dir:left",r),e.on("plain:up plain:right plain:down plain:left",r)};hi.prototype.bindDocument=function(){var e=this;e.binded||(e.bindEvt(document,"move").bindEvt(document,"end"),e.binded=!0)};hi.prototype.unbindDocument=function(e){var t=this;(!Object.keys(t.ids).length||e===!0)&&(t.unbindEvt(document,"move").unbindEvt(document,"end"),t.binded=!1)};hi.prototype.getIdentifier=function(e){var t;return e?(t=e.identifier===void 0?e.pointerId:e.identifier,t===void 0&&(t=this.latest||0)):t=this.index,this.ids[t]===void 0&&(this.ids[t]=this.index,this.index+=1),this.latest=t,this.ids[t]};hi.prototype.removeIdentifier=function(e){var t={};for(var i in this.ids)if(this.ids[i]===e){t.id=i,t.identifier=this.ids[i],delete this.ids[i];break}return t};hi.prototype.onmove=function(e){var t=this;return t.onAny("move",e),!1};hi.prototype.onend=function(e){var t=this;return t.onAny("end",e),!1};hi.prototype.oncancel=function(e){var t=this;return t.onAny("end",e),!1};hi.prototype.onAny=function(e,t){var i=this,r,s="processOn"+e.charAt(0).toUpperCase()+e.slice(1);t=_S(t);var n=function(o,l,h){h.ids.indexOf(l)>=0&&(h[s](o),o._found_=!0)},a=function(o){r=i.getIdentifier(o),Wm(i.collections,n.bind(null,o,r)),o._found_||i.removeIdentifier(r)};return Wm(t,a),!1};hi.prototype.destroy=function(){var e=this;e.unbindDocument(!0),e.ids={},e.index=0,e.collections.forEach(function(t){t.destroy()}),e.off()};hi.prototype.onDestroyed=function(e,t){var i=this;if(i.collections.indexOf(t)<0)return!1;i.collections.splice(i.collections.indexOf(t),1)};var k8=hi,hb=new k8,j8={create:function(e){return hb.create(e)},factory:hb},G8=yh(ew());function Xa(e,t){let i=new Ve;if(!e.getAttribute("position"))return i.setAttribute("position",new Ce([],3)),i.setIndex([]),i;let{positions:r,triIndices:s}=tv(e.getAttribute("position"),e.getIndex());return i.setAttribute("position",new Ce(r,3)),i.setIndex(s),t&&i.applyMatrix4(t),i}var V8=new ve,H8=new ve,Zr=[[0,0,0],[0,0,0],[0,0,0]];function CS(e){let t=e.elements;Zr[0][0]=t[0],Zr[0][1]=t[4],Zr[0][2]=t[8],Zr[1][0]=t[1],Zr[1][1]=t[5],Zr[1][2]=t[9],Zr[2][0]=t[2],Zr[2][1]=t[6],Zr[2][2]=t[10];let{u:i,v:r}=(0,G8.SVD)(Zr),s=V8.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),n=H8.set(r[0][0],r[0][1],r[0][2],0,r[1][0],r[1][1],r[1][2],0,r[2][0],r[2][1],r[2][2],0,0,0,0,1);return s.multiply(n.transpose())}var W8=class extends zw{constructor(){super(),this.layers.enable(3),this.layers.enable(8)}setFromCamera(e,t){t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):t.isPerspectiveCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):console.error("Raycaster: Unsupported camera type.")}intersectVisibleObjects(e,t=!0,i=[]){return e.forEach(r=>{r.visible&&this.intersectObject(r,t,i)}),i}createRaycastLineHelper(){let e=new Cn({color:65280,linewidth:10}),t=new E(this.ray.origin.x,this.ray.origin.y,this.ray.origin.z),i=new E(this.ray.direction.x,this.ray.direction.y,this.ray.direction.z),r=this.camera.far-this.camera.near,s=new E().addVectors(t,i.multiplyScalar(r)),n=new Ve;return n.setFromPoints([t,s]),new pu(n,e)}},TS=e=>e instanceof km||e instanceof Eo;function X8(e,t){return e.distance-t.distance}function PS(e,t,i){if(!(!ln(t)||!t.visible)){Rs(t)&&t.raycast(e,i);for(let r of t.children)PS(e,r,i)}}function Xm(e,t,i){if(!i.some(s=>ed(e,s)!==void 0))return[];let r=[];return t.children.forEach(s=>PS(e,s,r)),r.sort(X8),r}function qm(e){let t=[];if(e.length){let i=e[0].object;ln(i)&&t.push(i);let r=i.parent;for(;r;)TS(r)&&t.push(r),r=r.parent}return t}function ed(e,t){if(Rs(t)){if(t.visible){let i=[];return t.raycast(e,i),i.length?i[0]:void 0}}else if(TS(t))return DS(e,t)}function DS(e,t){if(!(!ln(t)||!t.visible)){if(Rs(t)){let i=[];if(t.raycast(e,i),i.length)return i[0]}for(let i of t.children){let r=DS(e,i);if(r)return r}}}function q8(e,t,i){return{x:(e-(i.left+window.scrollX))/i.width*2-1,y:-((t-(i.top+window.scrollY))/i.height)*2+1}}var Y8=class{constructor(e,t,i,r,s,n){this.isExport=n,this.raycaster=new W8,this.raycasterNeedsUpdate=!0,this.stopRaycast=!1,this._useWindowEvents=!1,this.sharedAssets=new Sd(Vu.emptyData()),this.scene=new Cd({...wm.defaultData},this.sharedAssets),this.camera=new sr,this.renderer=e,this._useWindowEvents=t.data.publish.mouseEventTarget==="window",this.domElement=e.domElement,this.eventElement=this._useWindowEvents?window:e.domElement,this.stopRaycast=s,this.sharedAssets=r,this.scene=t,this.camera=i}set useWindowEvents(e){this._useWindowEvents=e,this.eventElement=e?window:this.renderer.domElement}get useWindowEvents(){return this._useWindowEvents}updateRaycaster(e){if(!this.raycasterNeedsUpdate)return;this.raycasterNeedsUpdate=!1;let{pageX:t,pageY:i}=e.touches!==void 0&&e.touches.length>0?e.touches[0]:e,r=this.domElement.getBoundingClientRect();this.raycaster.setFromCamera(q8(t,i,r),this.camera)}},OS=(e=>(e[e.keydown=0]="keydown",e[e.keyup=1]="keyup",e[e.pointerdown=2]="pointerdown",e[e.pointerup=3]="pointerup",e[e.pointermove=4]="pointermove",e[e.wheel=5]="wheel",e[e.scroll=6]="scroll",e))(OS||{}),Pn=class{constructor(e){this.eventContext=e,this.domEventsNeeded=new Set,this.hasVideoAction=!1}connect(){}disconnect(){}},LS=new Map,Yl=new Map,uo=class{constructor(e,t,i,r){this.data=t;let{audio:s,volume:n,delay:a,loop:o}=t;if(!s)throw new Error("Missing property");let l=typeof s=="string"?r.getAudio(s).src:s.data;this.audioPlayer=new kl({src:l,volume:n,delay:a,loop:o}),Yl.has(i.uuid)?Yl.get(i.uuid).push(this):Yl.set(i.uuid,[this]),LS.set(e,this)}playByToggle(){this.data.toggle==="stop"?this.audioPlayer.status==="playing"?this.audioPlayer.stop():(this.audioPlayer.stop(),this.audioPlayer.play()):this.data.toggle==="pause"?this.audioPlayer.status==="playing"?this.audioPlayer.pause():this.audioPlayer.play():(this.audioPlayer.stop(),this.audioPlayer.play())}dispose(){this.audioPlayer.stop()}},Ym=class{constructor(e){this.data=e}dispatch(){this.data.playAudio?this.pauseAudio(this.data.playAudio):this.data.object?this.pauseAllAudiosFromObject(this.data.object):this.pauseAllAudios()}pauseAudio(e){let t=LS.get(e);!t||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.audioPlayer[this.data.interaction](),this.disposeDelay()},this.data.delay)):t.audioPlayer[this.data.interaction]())}pauseAllAudiosFromObject(e){let t=Yl.get(e);!t?.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.forEach(i=>i.audioPlayer[this.data.interaction]()),this.disposeDelay()},this.data.delay)):t.forEach(i=>i.audioPlayer[this.data.interaction]()))}pauseAllAudios(){let e=[...Yl.values()];!e.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{e.forEach(t=>{t.forEach(i=>{i.audioPlayer[this.data.interaction]()})}),this.disposeDelay()},this.data.delay)):e.forEach(t=>{t.forEach(i=>{i.audioPlayer[this.data.interaction]()})}))}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},po=class{constructor(e,t,i,r){if(this.data=t,t.interaction==="play")this.interaction=new uo(e,t,i,r);else if(t.interaction==="pause"||t.interaction==="stop")this.interaction=new Ym(t);else throw new Error("Missing property")}dispatchBasic(){this.interaction instanceof uo?this.interaction.playByToggle():this.interaction.dispatch()}dispatchConditional(){this.interaction instanceof uo?this.interaction.audioPlayer.play():this.interaction.dispatch()}dispatchGameControl(e){this.interaction instanceof uo&&(e==="start"?this.interaction.audioPlayer.play():this.interaction.audioPlayer.stop())}dispose(){this.interaction.dispose()}};function Q8(e,t){let i=e.material.layers.find(r=>r.uuid===t);return i.color.texture.image.img instanceof HTMLVideoElement?i.color.texture.image.img:void 0}var IS=new Map,Ql=new Map,Zl=class{constructor(e,t,i){this.data=t,this.delay=0,this.status="stopped";let{layerId:r,loop:s,volume:n,delay:a}=t;if(this.object=i,r===void 0)throw new Error("Missing property");let o=Q8(i,r);if(o)this.videoElement=o,this.videoElement.loop=s===1/0,this.videoElement.autoplay=!0,n!==void 0&&(this.videoElement.volume=n);else throw new Error("Missing property");a!==void 0&&(this.delay=a),Ql.has(i.uuid)?Ql.get(i.uuid).push(this):Ql.set(i.uuid,[this]),IS.set(e,this),this.pause()}mute(){this.videoElement.muted=!0}unMute(){this.videoElement.muted=!1}play(e){let t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);e?(this.mute(),this.delay+=150):t?(this.mute(),window.setTimeout(()=>{this.unMute()},100)):this.unMute(),this.delayTimerId=window.setTimeout(()=>{this.videoElement.play(),this.clearDelay()},this.delay),this.status="playing"}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}pause(){this.videoElement.pause(),this.status="paused"}stop(){this.videoElement.pause(),this.videoElement.currentTime=0,this.status="stopped",this.clearDelay()}playByToggle(){this.data.toggle==="stop"?this.status==="playing"?this.stop():(this.stop(),this.play()):this.data.toggle==="pause"?this.status==="playing"?this.pause():this.play():(this.stop(),this.play())}dispose(){this.stop(),this.videoElement.muted=!0}},Qm=class{constructor(e){this.data=e}dispatch(){this.data.playVideo?this.pauseVideo(this.data.playVideo):this.data.object?this.pauseAllVideosFromObject(this.data.object):this.pauseAllVideos()}pauseVideo(e){let t=IS.get(e);!t||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t[this.data.interaction](),this.disposeDelay()},this.data.delay)):t[this.data.interaction]())}pauseAllVideosFromObject(e){let t=Ql.get(e);!t?.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.forEach(i=>i[this.data.interaction]()),this.disposeDelay()},this.data.delay)):t.forEach(i=>i[this.data.interaction]()))}pauseAllVideos(){let e=[...Ql.values()];!e.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{e.forEach(t=>{t.forEach(i=>{i[this.data.interaction]()})}),this.disposeDelay()},this.data.delay)):e.forEach(t=>{t.forEach(i=>{i[this.data.interaction]()})}))}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},td=class{constructor(e,t,i){if(this.data=t,t.interaction==="play")this.interaction=new Zl(e,t,i);else if(t.interaction==="pause"||t.interaction==="stop")this.interaction=new Qm(t);else throw new Error("Missing property")}dispatchBasic(){this.interaction instanceof Zl?this.interaction.playByToggle():this.interaction.dispatch()}dispatchConditional(){this.interaction instanceof Zl?this.interaction.play():this.interaction.dispatch()}dispose(){this.interaction.dispose()}},Z8="text/plain",K8="us-ascii",cb=(e,t)=>t.some(i=>i instanceof RegExp?i.test(e):i===e),J8=(e,{stripHash:t})=>{let i=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(e);if(!i)throw new Error(`Invalid URL: ${e}`);let{type:r,data:s,hash:n}=i.groups,a=r.split(";");n=t?"":n;let o=!1;a[a.length-1]==="base64"&&(a.pop(),o=!0);let l=(a.shift()||"").toLowerCase(),h=[...a.map(d=>{let[c,u=""]=d.split("=").map(p=>p.trim());return c==="charset"&&(u=u.toLowerCase(),u===K8)?"":`${c}${u?`=${u}`:""}`}).filter(Boolean)];return o&&h.push("base64"),(h.length>0||l&&l!==Z8)&&h.unshift(l),`data:${h.join(";")},${o?s.trim():s}${n?`#${n}`:""}`};function $8(e,t){if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},e=e.trim(),/^data:/i.test(e))return J8(e,t);if(/^view-source:/i.test(e))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let i=e.startsWith("//");!i&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let r=new URL(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&r.protocol==="https:"&&(r.protocol="http:"),t.forceHttps&&r.protocol==="http:"&&(r.protocol="https:"),t.stripAuthentication&&(r.username="",r.password=""),t.stripHash?r.hash="":t.stripTextFragment&&(r.hash=r.hash.replace(/#?:~:text.*?$/i,"")),r.pathname){let n=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,a=0,o="";for(;;){let h=n.exec(r.pathname);if(!h)break;let d=h[0],c=h.index,u=r.pathname.slice(a,c);o+=u.replace(/\/{2,}/g,"/"),o+=d,a=c+d.length}let l=r.pathname.slice(a,r.pathname.length);o+=l.replace(/\/{2,}/g,"/"),r.pathname=o}if(r.pathname)try{r.pathname=decodeURI(r.pathname)}catch{}if(t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let n=r.pathname.split("/"),a=n[n.length-1];cb(a,t.removeDirectoryIndex)&&(n=n.slice(0,-1),r.pathname=n.slice(1).join("/")+"/")}if(r.hostname&&(r.hostname=r.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(r.hostname)&&(r.hostname=r.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let n of[...r.searchParams.keys()])cb(n,t.removeQueryParameters)&&r.searchParams.delete(n);if(t.removeQueryParameters===!0&&(r.search=""),t.sortQueryParameters){r.searchParams.sort();try{r.search=decodeURIComponent(r.search)}catch{}}t.removeTrailingSlash&&(r.pathname=r.pathname.replace(/\/$/,""));let s=e;return e=r.toString(),!t.removeSingleSlash&&r.pathname==="/"&&!s.endsWith("/")&&r.hash===""&&(e=e.replace(/\/$/,"")),(t.removeTrailingSlash||r.pathname==="/")&&r.hash===""&&t.removeSingleSlash&&(e=e.replace(/\/$/,"")),i&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e}var ej=class{constructor({url:e,context:t},i){if(this.managers=i,!e)throw new Error("Missing property");this.url=e.startsWith("mailto:")?e:$8(e,{removeTrailingSlash:!1,removeSingleSlash:!1}),this.context=t??"tab"}dispatch(){bm?window.location.assign(this.url):(this.context==="tab"?window.open(this.url,"_blank"):this.context==="window"?window.open(this.url,"_blank",`width=${window.innerWidth}, height=${window.innerHeight}`):window.open(this.url,"_parent"),this.managers.controlsManager.orbitControls?.onPointerUp(Qe[0]),eU())}},tj=class{constructor(e,t,i,r){this.scene=t,this.sharedAssets=i,this.sceneData=e,this.managers=r}dispatch(){KS(this.sceneData,this.scene,this.sharedAssets,!0),this.managers.eventManager?.reset(),this.managers.controlsManager.orbitControls?.reset(),this.managers.controlsManager?.gameControls.forEach(e=>e.reset(!0))}},RS={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,timelineChangeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},mv={duration:1e3,delay:0,endDelay:0,startOnceDelay:0,pingPongDelayCorrection:0,easing:"easeOutElastic(1, .5)",round:0},ij=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],id={CSS:{},springs:{}};function os(e,t,i){return Math.min(Math.max(e,t),i)}function Kl(e,t){return e.indexOf(t)>-1}function ff(e,t){return e.apply(null,t)}var je={arr:function(e){return Array.isArray(e)},obj:function(e){return Kl(Object.prototype.toString.call(e),"Object")},pth:function(e){return je.obj(e)&&e.hasOwnProperty("totalLength")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return!("isNode"in e)&&(e.nodeType||je.svg(e))},str:function(e){return typeof e=="string"},fnc:function(e){return typeof e=="function"},und:function(e){return typeof e>"u"},hex:function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},rgb:function(e){return/^rgb/.test(e)},hsl:function(e){return/^hsl/.test(e)},col:function(e){return je.hex(e)||je.rgb(e)||je.hsl(e)},key:function(e){return!RS.hasOwnProperty(e)&&!mv.hasOwnProperty(e)&&e!=="targets"&&e!=="keyframes"}};function BS(e){var t=/\(([^)]+)\)/.exec(e);return t?t[1].split(",").map(function(i){return parseFloat(i)}):[]}function NS(e,t){var i=BS(e),r=os(je.und(i[0])?1:i[0],.1,100),s=os(je.und(i[1])?100:i[1],.1,100),n=os(je.und(i[2])?10:i[2],.1,100),a=os(je.und(i[3])?0:i[3],.1,100),o=Math.sqrt(s/r),l=n/(2*Math.sqrt(s*r)),h=l<1?o*Math.sqrt(1-l*l):0,d=1,c=l<1?(l*o+-a)/h:-a+o;function u(f){var g=t?t*f/1e3:f;return l<1?g=Math.exp(-g*l*o)*(d*Math.cos(h*g)+c*Math.sin(h*g)):g=(d+c*g)*Math.exp(-g*o),f===0||f===1?f:1-g}function p(){var f=id.springs[e];if(f)return f;for(var g=1/6,m=0,v=0;;)if(m+=g,u(m)===1){if(v++,v>=16)break}else v=0;var y=m*g*1e3;return id.springs[e]=y,y}return t?u:p}function rj(e){return e===void 0&&(e=10),function(t){return Math.ceil(os(t,1e-6,1)*e)*(1/e)}}var sj=function(){var e=11,t=1/(e-1);function i(d,c){return 1-3*c+3*d}function r(d,c){return 3*c-6*d}function s(d){return 3*d}function n(d,c,u){return((i(c,u)*d+r(c,u))*d+s(c))*d}function a(d,c,u){return 3*i(c,u)*d*d+2*r(c,u)*d+s(c)}function o(d,c,u,p,f){var g,m,v=0;do m=c+(u-c)/2,g=n(m,p,f)-d,g>0?u=m:c=m;while(Math.abs(g)>1e-7&&++v<10);return m}function l(d,c,u,p){for(var f=0;f<4;++f){var g=a(c,u,p);if(g===0)return c;var m=n(c,u,p)-d;c-=m/g}return c}function h(d,c,u,p){if(!(0<=d&&d<=1&&0<=u&&u<=1))return;var f=new Float32Array(e);if(d!==c||u!==p)for(var g=0;g<e;++g)f[g]=n(g*t,d,u);function m(v){for(var y=0,b=1,x=e-1;b!==x&&f[b]<=v;++b)y+=t;--b;var w=(v-f[b])/(f[b+1]-f[b]),A=y+w*t,S=a(A,d,u);return S>=.001?l(v,A,d,u):S===0?A:o(v,y,y+t,d,u)}return function(v){return d===c&&u===p||v===0||v===1?v:n(m(v),c,p)}}return h}(),zS=function(){var e={linear:function(){return function(r){return r}}},t={Sine:function(){return function(r){return 1-Math.cos(r*Math.PI/2)}},Circ:function(){return function(r){return 1-Math.sqrt(1-r*r)}},Back:function(){return function(r){return r*r*(3*r-2)}},Bounce:function(){return function(r){for(var s,n=4;r<((s=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((s*3-2)/22-r,2)}},Elastic:function(r,s){r===void 0&&(r=1),s===void 0&&(s=.5);var n=os(r,1,10),a=os(s,.1,2);return function(o){return o===0||o===1?o:-n*Math.pow(2,10*(o-1))*Math.sin((o-1-a/(Math.PI*2)*Math.asin(1/n))*(Math.PI*2)/a)}}},i=["Quad","Cubic","Quart","Quint","Expo"];return i.forEach(function(r,s){t[r]=function(){return function(n){return Math.pow(n,s+2)}}}),Object.keys(t).forEach(function(r){var s=t[r];e["easeIn"+r]=s,e["easeOut"+r]=function(n,a){return function(o){return 1-s(n,a)(1-o)}},e["easeInOut"+r]=function(n,a){return function(o){return o<.5?s(n,a)(o*2)/2:1-s(n,a)(o*-2+2)/2}}}),e}();function gv(e,t){if(je.fnc(e))return e;var i=e.split("(")[0],r=zS[i],s=BS(e);switch(i){case"spring":return NS(e,t);case"cubicBezier":return ff(sj,s);case"steps":return ff(rj,s);default:return ff(r,s)}}function US(e){try{var t=document.querySelectorAll(e);return t}catch{return}}function Td(e,t){for(var i=e.length,r=arguments.length>=2?arguments[1]:void 0,s=[],n=0;n<i;n++)if(n in e){var a=e[n];t.call(r,a,n,e)&&s.push(a)}return s}function Pd(e){return e.reduce(function(t,i){return t.concat(je.arr(i)?Pd(i):i)},[])}function ub(e){return je.arr(e)?e:(je.str(e)&&(e=US(e)||e),e instanceof NodeList||e instanceof HTMLCollection?[].slice.call(e):[e])}function vv(e,t){return e.some(function(i){return i===t})}function yv(e){var t={};for(var i in e)t[i]=e[i];return t}function Zm(e,t){var i=yv(e);for(var r in e)i[r]=t.hasOwnProperty(r)?t[r]:e[r];return i}function Dd(e,t){var i=yv(e);for(var r in t)i[r]=je.und(e[r])?t[r]:e[r];return i}function nj(e){var t=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(e);return t?"rgba("+t[1]+",1)":e}function aj(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,i=e.replace(t,function(o,l,h,d){return l+l+h+h+d+d}),r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i),s=parseInt(r[1],16),n=parseInt(r[2],16),a=parseInt(r[3],16);return"rgba("+s+","+n+","+a+",1)"}function oj(e){var t=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(e)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(e),i=parseInt(t[1],10)/360,r=parseInt(t[2],10)/100,s=parseInt(t[3],10)/100,n=t[4]||1;function a(u,p,f){return f<0&&(f+=1),f>1&&(f-=1),f<1/6?u+(p-u)*6*f:f<1/2?p:f<2/3?u+(p-u)*(2/3-f)*6:u}var o,l,h;if(r==0)o=l=h=s;else{var d=s<.5?s*(1+r):s+r-s*r,c=2*s-d;o=a(c,d,i+1/3),l=a(c,d,i),h=a(c,d,i-1/3)}return"rgba("+o*255+","+l*255+","+h*255+","+n+")"}function lj(e){if(je.rgb(e))return nj(e);if(je.hex(e))return aj(e);if(je.hsl(e))return oj(e)}function zs(e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);if(t)return t[1]}function hj(e){if(Kl(e,"translate")||e==="perspective")return"px";if(Kl(e,"rotate")||Kl(e,"skew"))return"deg"}function Km(e,t){return je.fnc(e)?e(t.target,t.id,t.total):e}function ls(e,t){return e.getAttribute(t)}function xv(e,t,i){var r=zs(t);if(vv([i,"deg","rad","turn"],r))return t;var s=id.CSS[t+i];if(!je.und(s))return s;var n=100,a=document.createElement(e.tagName),o=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;o.appendChild(a),a.style.position="absolute",a.style.width=n+i;var l=n/a.offsetWidth;o.removeChild(a);var h=l*parseFloat(t);return id.CSS[t+i]=h,h}function FS(e,t,i){if(t in e.style){var r=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),s=e.style[t]||getComputedStyle(e).getPropertyValue(r)||"0";return i?xv(e,s,i):s}}function bv(e,t){if(je.dom(e)&&!je.inp(e)&&(ls(e,t)||je.svg(e)&&e[t]))return"attribute";if(je.dom(e)&&vv(ij,t))return"transform";if(je.dom(e)&&t!=="transform"&&FS(e,t))return"css";if(e[t]!=null)return"object"}function kS(e){if(je.dom(e)){for(var t=e.style.transform||"",i=/(\w+)\(([^)]*)\)/g,r=new Map,s;s=i.exec(t);)r.set(s[1],s[2]);return r}}function cj(e,t,i,r){var s=Kl(t,"scale")?1:0+hj(t),n=kS(e).get(t)||s;return i&&(i.transforms.list.set(t,n),i.transforms.last=t),r?xv(e,n,r):n}function wv(e,t,i,r){switch(bv(e,t)){case"transform":return cj(e,t,r,i);case"css":return FS(e,t,i);case"attribute":return ls(e,t);default:return e[t]||0}}function _v(e,t){var i=/^(\*=|\+=|-=)/.exec(e);if(!i)return e;var r=zs(e)||0,s=parseFloat(t),n=parseFloat(e.replace(i[0],""));switch(i[0][0]){case"+":return s+n+r;case"-":return s-n+r;case"*":return s*n+r}}function jS(e,t){if(je.col(e))return lj(e);if(/\s/g.test(e))return e;var i=zs(e),r=i?e.substr(0,e.length-i.length):e;return t?r+t:r}function Av(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function uj(e){return Math.PI*2*ls(e,"r")}function dj(e){return ls(e,"width")*2+ls(e,"height")*2}function pj(e){return Av({x:ls(e,"x1"),y:ls(e,"y1")},{x:ls(e,"x2"),y:ls(e,"y2")})}function GS(e){for(var t=e.points,i=0,r,s=0;s<t.numberOfItems;s++){var n=t.getItem(s);s>0&&(i+=Av(r,n)),r=n}return i}function fj(e){var t=e.points;return GS(e)+Av(t.getItem(t.numberOfItems-1),t.getItem(0))}function VS(e){if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case"circle":return uj(e);case"rect":return dj(e);case"line":return pj(e);case"polyline":return GS(e);case"polygon":return fj(e)}}function mj(e){var t=VS(e);return e.setAttribute("stroke-dasharray",t),t}function gj(e){for(var t=e.parentNode;je.svg(t)&&je.svg(t.parentNode);)t=t.parentNode;return t}function HS(e,t){var i=t||{},r=i.el||gj(e),s=r.getBoundingClientRect(),n=ls(r,"viewBox"),a=s.width,o=s.height,l=i.viewBox||(n?n.split(" "):[0,0,a,o]);return{el:r,viewBox:l,x:l[0]/1,y:l[1]/1,w:a/l[2],h:o/l[3]}}function vj(e,t){var i=je.str(e)?US(e)[0]:e,r=t||100;return function(s){return{property:s,el:i,svg:HS(i),totalLength:VS(i)*(r/100)}}}function yj(e,t){function i(o){o===void 0&&(o=0);var l=t+o>=1?t+o:0;return e.el.getPointAtLength(l)}var r=HS(e.el,e.svg),s=i(),n=i(-1),a=i(1);switch(e.property){case"x":return(s.x-r.x)*r.w;case"y":return(s.y-r.y)*r.h;case"angle":return Math.atan2(a.y-n.y,a.x-n.x)*180/Math.PI}}function db(e,t){var i=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=jS(je.pth(e)?e.totalLength:e,t)+"";return{original:r,numbers:r.match(i)?r.match(i).map(Number):[0],strings:je.str(e)||t?r.split(i):[]}}function WS(e){var t=e?Pd(je.arr(e)?e.map(ub):ub(e)):[];return Td(t,function(i,r,s){return s.indexOf(i)===r})}function XS(e){var t=WS(e);return t.map(function(i,r){return{target:i,id:r,total:t.length,transforms:{list:kS(i)}}})}function xj(e,t){var i=yv(t);if(/^spring/.test(i.easing)&&(i.duration=NS(i.easing)),je.arr(e)){var r=e.length,s=r===2&&!je.obj(e[0]);s?e={value:e}:je.fnc(t.duration)||(i.duration=t.duration/r)}var n=je.arr(e)?e:[e];return n.map(function(a,o){var l=je.obj(a)&&!je.pth(a)?a:{value:a};return je.und(l.delay)&&(l.delay=o?0:t.delay),je.und(l.endDelay)&&(l.endDelay=o===n.length-1?t.endDelay:0),l}).map(function(a){return Dd(a,i)})}function bj(e){for(var t=Td(Pd(e.map(function(n){return Object.keys(n)})),function(n){return je.key(n)}).reduce(function(n,a){return n.indexOf(a)<0&&n.push(a),n},[]),i={},r=function(n){var a=t[n];i[a]=e.map(function(o){var l={};for(var h in o)je.key(h)?h==a&&(l.value=o[h]):l[h]=o[h];return l})},s=0;s<t.length;s++)r(s);return i}function wj(e,t){var i=[],r=t.keyframes;r&&(t=Dd(bj(r),t));for(var s in t)je.key(s)&&i.push({name:s,tweens:xj(t[s],e)});return i}function _j(e,t){var i={};for(var r in e){var s=Km(e[r],t);je.arr(s)&&(s=s.map(function(n){return Km(n,t)}),s.length===1&&(s=s[0])),i[r]=s}return i.duration=parseFloat(i.duration),i.delay=parseFloat(i.delay),i}function Aj(e,t){var i;return e.tweens.map(function(r){var s=_j(r,t),n=s.value,a=je.arr(n)?n[1]:n,o=zs(a),l=wv(t.target,e.name,o,t),h=i?i.to.original:l,d=je.arr(n)?n[0]:h,c=zs(d)||zs(l),u=o||c;return je.und(a)&&(a=h),s.from=db(d,u),s.to=db(_v(a,d),u),s.start=i?i.end:0,s.end=s.start+s.delay+s.duration+s.endDelay,s.easing=gv(s.easing,s.duration),s.isPath=je.pth(n),s.isColor=je.col(s.from.original),s.isColor&&(s.round=1),i=s,s})}var qS={css:function(e,t,i){return e.style[t]=i},attribute:function(e,t,i){return e.setAttribute(t,i)},object:function(e,t,i){return e[t]=i},transform:function(e,t,i,r,s){if(r.list.set(t,i),t===r.last||s){var n="";r.list.forEach(function(a,o){n+=o+"("+a+") "}),e.style.transform=n}}};function YS(e,t){var i=XS(e);i.forEach(function(r){for(var s in t){var n=Km(t[s],r),a=r.target,o=zs(n),l=wv(a,s,o,r),h=o||zs(l),d=_v(jS(n,h),l),c=bv(a,s);qS[c](a,s,d,r.transforms,!0)}})}function Sj(e,t){var i=bv(e.target,t.name);if(i){var r=Aj(t,e),s=r[r.length-1];return{type:i,property:t.name,animatable:e,tweens:r,duration:s.end,delay:r[0].delay,endDelay:s.endDelay}}}function Mj(e,t){return Td(Pd(e.map(function(i){return t.map(function(r){return Sj(i,r)})})),function(i){return!je.und(i)})}function QS(e,t){var i=e.length,r=function(n){return n.timelineOffset?n.timelineOffset:0},s={};return s.duration=i?Math.max.apply(Math,e.map(function(n){let a=n.startOnceDelay??0,o=n.pingPongDelayCorrection??0;return r(n)+a+o+n.duration*(n.loop??1)})):t.duration,s.delay=i?Math.min.apply(Math,e.map(function(n){let a=n.startOnceDelay??0,o=n.pingPongDelayCorrection??0;return r(n)+a+o+n.delay})):t.delay,s.endDelay=i?s.duration-Math.max.apply(Math,e.map(function(n){let a=n.startOnceDelay??0,o=n.pingPongDelayCorrection??0;return r(n)+a+o+n.duration*(n.loop??1)-n.endDelay})):t.endDelay,s}var pb=0;function Ej(e){var t=Zm(RS,e),i=Zm(mv,e),r=wj(i,e),s=XS(e.targets),n=Mj(s,r),a=QS(n,i),o=pb;return pb++,Dd(t,{id:o,children:[],animatables:s,animations:n,duration:a.duration,delay:a.delay,endDelay:a.endDelay,startOnceDelay:i.startOnceDelay,pingPongDelayCorrection:i.pingPongDelayCorrection})}var wr=[],fb=[],nu,Cj=function(){function e(){nu=requestAnimationFrame(t)}function t(i){var r=wr.length;if(r){for(var s=0;s<r;){var n=wr[s];n.paused?(wr.splice(s,1),r-=1):(n.tick(i),s++)}e()}else nu=cancelAnimationFrame(nu)}return e}();function Tj(e){document.hidden?(wr.forEach(function(t){return t.pause(e.timeStamp)}),fb=wr.slice(0),Gt.running=wr=[]):fb.forEach(function(t){return t.play(e.timeStamp)})}typeof document<"u"&&document.addEventListener("visibilitychange",Tj);function Gt(e){e===void 0&&(e={});var t=0,i=0,r=0,s,n,a=0,o=null;function l(x){var w=window.Promise&&new Promise(function(A){return o=A});return x.finished=w,w}var h=Ej(e),d=l(h);function c(){var x=h.direction;x!=="alternate"&&(h.direction=x!=="normal"?"normal":"reverse"),h.reversed=!h.reversed,n.forEach(function(w){return w.reversed=h.reversed})}function u(x){return h.reversed?h.duration-x:x}function p(){t=0,i=u(h.currentTime)*(1/Gt.speed)}function f(x,w){w&&(h.reversed?w.seek(w.duration*w.loop-(x-w.timelineOffset-w.pingPongDelayCorrection)):w.seek(x-w.timelineOffset-w.startOnceDelay-w.pingPongDelayCorrection))}function g(x){if(h.reversed)for(var w=a;w--;)f(x,n[w]);else for(var A=0;A<a;A++)f(x,n[A])}function m(x){var w=0,A=h.animations,S=A.length;for(h.reversePlayback===!0&&h.rewind===!1&&(x=h.duration+h.delay-h.endDelay-x);w<S;){var _=A[w],M=_.animatable,C=_.tweens,T=C.length-1,P=C[T];T&&(P=Td(C,function(ee){return x<ee.end})[0]||P);for(var O=os(x-P.start-P.delay,0,P.duration)/P.duration,D=isNaN(O)?1:P.easing(O),k=P.to.strings,W=P.round,X=[],N=P.to.numbers.length,j=void 0,F=0;F<N;F++){var z=void 0;if(h.reversePlayback===!0&&h.rewind===!1)var V=P.to.numbers[F],B=P.from.numbers[F]||0;else var B=P.to.numbers[F],V=P.from.numbers[F]||0;P.isPath?z=yj(P.value,D*B):z=V+D*(B-V),W&&(P.isColor&&F>2||(z=Math.round(z*W)/W)),X.push(z)}var Q=k.length;if(!Q)j=X[0];else{j=k[0];for(var Y=0;Y<Q;Y++){var U=k[Y],se=k[Y+1],H=X[Y];isNaN(H)||(se?j+=H+se:j+=H+" ")}}qS[_.type](M.target,_.property,j,M.transforms),_.currentValue=j,w++}}function v(x){h[x]&&!h.passThrough&&h[x](h)}function y(){h.remaining&&h.remaining!==!0&&h.remaining--}function b(x){var w=h.duration,A=h.delay,S=w-h.endDelay,_=u(x);if(h.progress=os(_/w*100,0,100),h.reversePlayback=_<h.currentTime,a&&g(_),!h.began&&h.currentTime>=0&&(h.began=!0,v("begin")),!h.loopBegan&&h.currentTime>0&&(h.loopBegan=!0,v("loopBegin")),(h.reversed||_>=0)&&_<=A&&h.currentTime!==0&&(m(0),v("change")),(_>=S&&h.currentTime!==w||!w)&&(m(w),v("change")),_>A&&_<S?(h.changeBegan||(h.changeBegan=!0,h.changeCompleted=!1,v("changeBegin")),m(_),v("change")):h.changeBegan?(h.changeCompleted=!0,h.changeBegan=!1,v("change"),a&&v("timelineChangeComplete")):h.began&&_>S&&v("changeComplete"),h.currentTime=os(_,0,w),h.began&&v("update"),x>=w)if(y(),!h.remaining)h.paused=!0,h.completed||(h.completed=!0,v("loopComplete"),v("complete"),!h.passThrough&&"Promise"in window&&(o(),d=l(h)));else{a?t+=h.duration/Gt.speed:t+=h.duration;for(let M of n)M.setStartTime(0),M.remaining=M.loop;v("loopComplete"),h.loopBegan=!1,h.direction==="alternate"&&c()}}return h.reset=function(){var x=h.direction;h.passThrough=!1,h.currentTime=0,h.progress=0,h.paused=!0,h.began=!1,h.loopBegan=!1,h.changeBegan=!1,h.completed=!1,h.changeCompleted=!1,h.reversePlayback=!1,h.reversed=x==="reverse",h.remaining=h.loop,n=h.children,a=n.length;for(var w=a;w--;)h.children[w].reset();(h.reversed&&h.loop!==!0||x==="alternate"&&h.loop===1)&&h.remaining++,m(h.reversed?h.duration:0)},h.setStartTime=function(x){t=x},h.set=function(x,w){return YS(x,w),h},h.tick=function(x){r=x,t||(t=r),b((r+(i-t))*Gt.speed)},h.seek=function(x){b(x-t)},h.pause=function(x){h.paused=!0,a&&(s=x??performance.now())},h.play=function(x){!h.paused||(h.completed&&h.reset(),h.paused=!1,wr.push(h),a&&s!==void 0&&(t+=(x??performance.now())-s),nu||Cj())},h.reverse=function(){c(),h.completed=!h.reversed,p()},h.restart=function(){h.reset(),h.play()},h.reset(),h.autoplay&&h.play(),h}function mb(e,t){for(var i=t.length;i--;)vv(e,t[i].animatable.target)&&t.splice(i,1)}function Pj(e){for(var t=WS(e),i=wr.length;i--;){var r=wr[i],s=r.animations,n=r.children;mb(t,s);for(var a=n.length;a--;){var o=n[a],l=o.animations;mb(t,l),!l.length&&!o.children.length&&n.splice(a,1)}!s.length&&!n.length&&r.pause()}}function Dj(e,t){t===void 0&&(t={});var i=t.direction||"normal",r=t.easing?gv(t.easing):null,s=t.grid,n=t.axis,a=t.from||0,o=a==="first",l=a==="center",h=a==="last",d=je.arr(e),c=parseFloat(d?e[0]:e),u=d?parseFloat(e[1]):0,p=zs(d?e[1]:e)||0,f=t.start||0+(d?c:0),g=[],m=0;return function(v,y,b){if(o&&(a=0),l&&(a=(b-1)/2),h&&(a=b-1),!g.length){for(var x=0;x<b;x++){if(!s)g.push(Math.abs(a-x));else{var w=l?(s[0]-1)/2:a%s[0],A=l?(s[1]-1)/2:Math.floor(a/s[0]),S=x%s[0],_=Math.floor(x/s[0]),M=w-S,C=A-_,T=Math.sqrt(M*M+C*C);n==="x"&&(T=-M),n==="y"&&(T=-C),g.push(T)}m=Math.max.apply(Math,g)}r&&(g=g.map(function(O){return r(O/m)*m})),i==="reverse"&&(g=g.map(function(O){return n?O<0?O*-1:-O:Math.abs(m-O)}))}var P=d?(u-c)/m:c;return f+P*(Math.round(g[y]*100)/100)+p}}function Oj(e){e===void 0&&(e={});var t=Gt(e);return t.duration=0,t.add=function(i,r){var s=wr.indexOf(t),n=t.children;s>-1&&wr.splice(s,1);function a(u){u.passThrough=!0}for(var o=0;o<n.length;o++)a(n[o]);var l=Dd(i,Zm(mv,e));l.targets=l.targets||e.targets;var h=t.duration;l.autoplay=!1,l.timelineOffset=je.und(r)?h:_v(r,h),a(t);var d=Gt(l);a(d),n.push(d);var c=QS(n,e);return t.delay=c.delay,t.endDelay=c.endDelay,t.duration=c.duration,d.loop===!0&&(t.duration=1/0),t.seek(0),t.reset(),t.autoplay&&t.play(),t},t}Gt.version="3.2.0";Gt.speed=1;Gt.running=wr;Gt.remove=Pj;Gt.get=wv;Gt.set=YS;Gt.convertPx=xv;Gt.path=vj;Gt.setDashoffset=mj;Gt.stagger=Dj;Gt.timeline=Oj;Gt.easing=gv;Gt.penner=zS;Gt.random=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};var Lj=Gt,gb=new E,vb=new E,yb=new ct;function Ij(e,t,i,r){if(r===0)return i.copy(e);if(r===1)return i.copy(t);let s=e.w*t.w+e.x*t.x+e.y*t.y+e.z*t.z;if(s>=1)return i.copy(e);let n=1-s*s;if(n<=Number.EPSILON){let d=1-r;return i.w=d*e.w+r*t.w,i.x=d*e.x+r*t.x,i.y=d*e.y+r*t.y,i.z=d*e.z+r*t.z,i.normalize(),i}let a=Math.sqrt(n),o=Math.atan2(a,s),l=Math.sin((1-r)*o)/a,h=Math.sin(r*o)/a;return i.w=e.w*l+t.w*h,i.x=e.x*l+t.x*h,i.y=e.y*l+t.y*h,i.z=e.z*l+t.z*h,i}function Zo(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(a==null)return;let o=n??t[e],l=a;if(o!==l)return{update:h=>{let d=rt.lerp(o,l,h);s?t[e]=Math.trunc(d):t[e]=d},start:()=>{t[e]=o},end:()=>{t[e]=l}}}function ZS(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(!a)return;let o=t[e],l=[...n??o],h=[...a];if(!(l.length!==h.length||Ng(l,h)))return{update:d=>{l.forEach((c,u)=>{let p=rt.lerp(c,h[u],d);t[e][u]=s?Math.trunc(p):p})},start:()=>{Object.assign(t[e],l)},end:()=>{Object.assign(t[e],h)}}}function xb(e,t,i,r){let s=i[e]?i[e]:void 0,n=r[e];if(!n)return;let a=t[e],o=s?new E().fromArray(s):a.clone(),l=new E().fromArray(n);if(!o.equals(l))return{update:h=>{a.lerpVectors(o,l,h)},start:()=>{a.copy(o)},end:()=>{a.copy(l)}}}function Rj(e,t,i,r){let s=i[e]?i[e]:void 0,n=r[e];if(!n)return;let a=t[e],o=s?new ve().fromArray(s):a.clone(),l=new E,h=new ct,d=new E;o.decompose(l,h,d);let c=new ve().fromArray(n),u=new E,p=new ct,f=new E;if(c.decompose(u,p,f),!o.equals(c))return{update:g=>{yb.slerpQuaternions(h,p,g),gb.lerpVectors(l,u,g),vb.lerpVectors(d,f,g),a.compose(gb,yb,vb)},start:()=>{a.compose(l,h,d)},end:()=>{a.compose(u,p,f)}}}function Bj(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(!a)return;let o=t[e],l=n?typeof n=="string"?s.getColor(n).clone():new Ge().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new Ge().setRGB(a.r,a.g,a.b);if(l.equals(h))return;let d=o.clone();return t[e]=d,{update:c=>{d.lerpColors(l,h,c)},start:()=>{d.copy(l)},end:()=>{d.copy(h)}}}function Dn(e,t,i,r){if(typeof t[e]=="number")return Zo(e,t,i??{},r);if(Array.isArray(t[e]))return ZS(e,t,i??{},r)}function Nj(e,t,i){let r=[],s=e.cameraType==="OrthographicCamera"?t.orthographic?.zoom:t.perspective?.zoom,n=e.cameraType==="OrthographicCamera"?i.orthographic?.zoom:i.perspective?.zoom;if(n!==void 0){let a=s??e.zoom,o=n;a!==o&&r.push({update:l=>{e.zoom=rt.lerp(a,o,l),e.updateProjectionMatrix()},start:()=>{e.zoom=a,e.updateProjectionMatrix()},end:()=>{e.zoom=o,e.updateProjectionMatrix()}})}if(i.targetOffset!==void 0){let a=Zo("targetOffset",e,t,i);a&&r.push(a)}return r}function zj(e,t,i,r){if(i.scaleBaked===void 0)return;let s=t.scaleBaked??e.data.geometry.scaleBaked,n=i.scaleBaked;if(la.isEqual(s,n))return;let a=[];return a.push({update:o=>{e.updateGeometryInteractions({scaleBaked:[rt.lerp(s[0],n[0],o),rt.lerp(s[1],n[1],o),rt.lerp(s[2],n[2],o)]},r),e.invalidateDownstreamBooleanData()},start:()=>{e.updateGeometryInteractions({scaleBaked:s},r),e.invalidateDownstreamBooleanData()},end:()=>{e.updateGeometryInteractions({scaleBaked:n},r),e.invalidateDownstreamBooleanData()}}),a}function Uj(e,t,i){if(!i.extrusion)return;let r=e.extrusion,s=t.extrusion??{},n=i.extrusion,a=[];return K_.forEach(o=>{let l=Dn(o,r,s,n);l&&a.push(l)}),a}function Fj(e,t,i,r){let s=[];if(!("geometry"in i))return s;let n=e.geometry.userData.parameters,a="geometry"in t?t.geometry:{},o=i.geometry;if(e instanceof gh){let l=zj(e,a,o,r);l&&s.push(...l)}else{let l={};if(Object.assign(l,lh(n,B1)),B1.forEach(h=>{let d=Dn(h,l,a,o);d&&s.push(d)}),e instanceof cv){Object.assign(l,{extrusion:{...n.extrusion}});let h=Uj(l,a,o);h&&s.push(...h)}s.length&&s.push({update:h=>{e.updateGeometryInteractions(l,r),e.updateGeometryGroupsIfNeeded()},start:h=>{e.updateGeometryInteractions(l,r),e.updateGeometryGroupsIfNeeded()},end:h=>{e.updateGeometryInteractions(l,r),e.updateGeometryGroupsIfNeeded()}})}return s}function kj(e,t,i,r){let s=[];if(i.intensity!==void 0){let n=Zo("intensity",e,t,i);n&&s.push(n)}if(i.color!==void 0){let n=Bj("color",e,t,i,r);n&&s.push(n)}return s}function jj(e,t,i,r){let s=[];if(Array.isArray(e.material)){if(!("materials"in i&&i.materials))return s;let n="materials"in t&&t.materials?t.materials:[],a=i.materials;e.material.forEach((o,l)=>{if(!a[l])return;let h=n[l]??{},d=a[l];typeof h=="string"||typeof d=="string"||s.push(...bb(o,h,d,r))})}else{if(!("material"in i&&i.material))return s;let n="material"in t&&t.material?t.material:{},a=i.material;if(typeof n=="string"||typeof a=="string")return s;s.push(...bb(e.material,n,a,r))}return s}function bb(e,t,i,r){let s=[];e.transparent=Zu(i,r)||!!t.layers&&Zu(t,r);for(let n of e.layers){let a=t.layers?.data(n.uuid),o=i.layers.data(n.uuid);if(!o||!(n.visible??!0)||!(o.visible??!0))continue;let l=n.getNames().filter(h=>!Y_.some(d=>h.includes(d)));for(let h of l)try{let d=n.getValue(h),c;if(h==="colors")c=Yj(n,a,o,h);else if(Array.isArray(d))h==="steps"&&(c=qj(n,a,o,h));else if(typeof d=="number")c=Gj(n,a,o,h);else{if(typeof d=="boolean")continue;d instanceof G?c=Vj(n,a,o,h):d instanceof E?c=Hj(n,a,o,h):d instanceof ji?c=Xj(n,a,o,h,r):d instanceof Ge?c=Wj(n,a,o,h,r):"isTexture"in d&&(c=Qj(n,a,o,h))}c&&(Array.isArray(c)?s.push(...c):s.push(c))}catch(d){console.error(`lerpMaterial: unexpected material layer for ${h}`,d)}}return s}function Gj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=t?t[r]:e.getValue(r),n=i[r];if(s!==n)return{update:a=>{e.setValue(r,rt.lerp(s,n,a))},start:()=>{e.setValue(r,s)},end:()=>{e.setValue(r,n)}}}function Vj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=e.getValue(r),n=t?new G().fromArray(t[r]):s.clone(),a=new G().fromArray(i[r]);if(!n.equals(a))return{update:o=>{s.lerpVectors(n,a,o)},start:()=>{s.copy(n)},end:()=>{s.copy(a)}}}function Hj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=e.getValue(r),n=t?new E().fromArray(t[r]):s.clone(),a=new E().fromArray(i[r]);if(!n.equals(a))return{update:o=>{s.lerpVectors(n,a,o)},start:()=>{s.copy(n)},end:()=>{s.copy(a)}}}function Wj(e,t,i,r,s){if(!e.hasValue(r)||!(r in i))return;let n=t?t[r]:void 0,a=i[r],o=e.getValue(r),l=n?typeof n=="string"?s.getColor(n).clone():new Ge().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new Ge().setRGB(a.r,a.g,a.b);if(l.equals(h))return;let d=o.clone();return e.setValue(r,d),{update:c=>{d.lerpColors(l,h,c)},start:()=>{d.copy(l)},end:()=>{d.copy(h)}}}function Xj(e,t,i,r,s){if(!e.hasValue(r)||!(r in i))return;let n=t?t[r]:void 0,a=i[r],o=e.getValue(r),l=n?typeof n=="string"?s.getColor(n).clone():new Ge().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new ji(a.r,a.g,a.b,a.a);if(l.equals(h))return;let d=o.clone();return e.setValue(r,d),{update:c=>{d.lerpColors(l,h,c)},start:()=>{d.copy(l)},end:()=>{d.copy(h)}}}function qj(e,t,i,r="steps"){if(!e.hasValue(r)||!(r in i))return;let s=[],n=e.getValue(r),a=t?t[r]:n,o=i[r];for(let l=0;l<n.length;++l){let h=a[l],d=o[l];h!==d&&s.push({update:c=>{n[l]=rt.lerp(h,d,c)},start:()=>{n[l]=h},end:()=>{n[l]=d}})}return s.length?s:void 0}function Yj(e,t,i,r="colors"){if(!e.hasValue(r)||!(r in i))return;let s=[],n=e.getValue(r),a=t?t[r]:n.map(l=>l.toArray()),o=i[r];for(let l=0;l<n.length;++l){let h=[...a[l]],d=[...o[l]];Pu.isEqual(h,d)||s.push({update:c=>{n[l].fromArray(Pu.lerp(h,d,c))},start:()=>{n[l].fromArray(h)},end:()=>{n[l].fromArray(d)}})}return s.length?s:void 0}function Qj(e,t,i,r="texture"){if(!e.hasValue(r)||!(r in i))return;let s=e.getNode("mat");if(!s)return;let n=t?t[r]:s,a=i[r],o=[...n.repeat],l=[...n.offset],h=[...a.repeat],d=[...a.offset];if(!ao.isEqual(o,h)||!ao.isEqual(l,d))return{update:c=>{s.repeat=ao.lerp(o,h,c),s.offset=ao.lerp(l,d,c),s.updateMatrix()},start:()=>{s.repeat=[...o],s.offset=[...l],s.updateMatrix()},end:()=>{s.repeat=[...h],s.offset=[...d],s.updateMatrix()}}}var mf=new E,wb=new bi;function Zj(e,t,i,r){let s=[],n=xb("position",e,t,i);n&&s.push(n);let a=xb("scale",e,t,i);a&&s.push(a);let o=Kj(e,t,i,r);o&&s.push(o);let l=Rj("hiddenMatrix",e,t,i);l&&s.push(l);let h={slide:(t.pathSnapping??e.dataPatched.pathSnapping).slide},d=Zo("slide",h,t.pathSnapping??e.dataPatched.pathSnapping,i.pathSnapping??e.dataPatched.pathSnapping);if(d&&s.push(d),n||a||o||l||d){let c=()=>{e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD()),e.parent?.matrixWorldFusedFalse&&(e.matrixWorld.multiplyMatrices(e.parent.matrixWorldFusedFalse,e.matrix),e.matrixWorldNeedsUpdate=!1),Rs(e)&&vn(e.parent)&&e.invalidateDownstreamBooleanData(!0),e.updatePathSnappingSlide(Object.assign({},t.pathSnapping,h))};s.push({update:c,start:c,end:c})}return s}function Kj(e,t,i,r){let s=t?.rotation?t.rotation:void 0,n=i.rotation;if(!n)return;let a=s?new E().fromArray(s):new E().setFromEuler(e.rotation),o=new E().fromArray(n);if(a.equals(o))return;let l=mf.subVectors(o,a);if(r&&l.toArray().every(h=>Math.abs(h)<2*Math.PI)){let h=new ct().setFromEuler(wb.setFromVector3(a)),d=new ct().setFromEuler(wb.setFromVector3(o));return{update:c=>{Ij(h,d,e.quaternion,c),c===1&&e instanceof sr&&(e.updateUp(),e.isUpVectorFlipped=!1)},start:()=>{e.rotation.setFromVector3(a)},end:()=>{e.rotation.setFromVector3(o)}}}else return{update:h=>{mf.lerpVectors(a,o,h),e.rotation.setFromVector3(mf),h===1&&e instanceof sr&&(e.updateUp(),e.isUpVectorFlipped=!1)},start:()=>{e.rotation.setFromVector3(a)},end:()=>{e.rotation.setFromVector3(o)}}}function Jj(e,t,i){let r=[];if(!("cloner"in i)||!e.cloner)return r;let s=e.cloner,n="cloner"in t?t.cloner:{},a=i.cloner;G_.forEach(u=>{let p;u==="count"?p=Zo("count",s.parameters,n,a,!0):p=Dn(u,s.parameters,n??{},a),p&&r.push(p)});let o=$j(s,n,a);o?.length&&r.push(...o);let l=eG(s,n,a);l?.length&&r.push(...l);let h=tG(s,n,a);h?.length&&r.push(...h);let d=iG(s,n,a);d?.length&&r.push(...d);let c=rG(s,n,a);return c?.length&&r.push(...c),r.length&&r.push({update:()=>{s.update()}}),r}function $j(e,t,i){if(e.parameters.type!=="radial")return;let r=t.radial,s=i.radial;if(!s)return;let n=e.parameters.radial,a=[];return V_.forEach(o=>{let l=Dn(o,n,r??{},s);l&&a.push(l)}),a}function eG(e,t,i){if(e.parameters.type!=="linear")return;let r=t.linear,s=i.linear;if(!s)return;let n=[],a=e.parameters.linear;return H_.forEach(o=>{let l=Dn(o,a,r??{},s);l&&n.push(l)}),n}function tG(e,t,i){if(e.parameters.type!=="grid")return;let r=t.grid,s=i.grid;if(!s)return;let n=[],a=e.parameters.grid;return W_.forEach(o=>{let l;o==="count"?l=ZS(o,a,r??{},s,!0):l=Dn(o,a,r??{},s),l&&n.push(l)}),n}function iG(e,t,i){if(e.parameters.type!=="toObject")return;let r=t.toObject,s=i.toObject;if(!s)return;let n=[],a=e.parameters.toObject;return X_.forEach(o=>{let l;o==="count"?l=Zo(o,a,r??{},s,!0):l=Dn(o,a,r??{},s),l&&n.push(l)}),n}function rG(e,t,i){if(!e.parameters.randomness)return;let r=t.randomnessObject,s=i.randomnessObject;if(!s)return;let n=[],a=e.parameters.randomnessObject;return q_.forEach(o=>{let l=Dn(o,a,r??{},s);l&&n.push(l)}),n}function _b(e,t,i,r,s){let n=[];return e.data.visible&&n.push(...Zj(e,t,i,s)),e.data.visible&&n.push(...Jj(e,t,i)),Rs(e)?(e instanceof Sr&&e.data.visible&&n.push(...Fj(e,t,i,r)),e.data.visible&&n.push(...jj(e,t,i,r))):l8(e)?e.data.visible&&n.push(...kj(e,t,i,r)):o8(e)&&n.push(...Nj(e,t,i)),n.length?{update:a=>{n.forEach(o=>o.update(a))},start:a=>{n.forEach(o=>o.start?.(a))},end:a=>{n.forEach(o=>o.end?.(a))}}:void 0}var Ab=new E;function KS(e,t,i,r=!1){let s=[];t.traverseObject(n=>{if(r&&(n.rigidBody?.setTranslation(n.position0,!0),n.rigidBody?.setRotation(n.rotation0,!0),n.rigidBody?.setLinvel(Ab,!0),n.rigidBody?.setAngvel(Ab,!0)),!Ct.is(n))return;let a=n.uuid,o=n.data;if(delete n.states,!o.states)return;let l=!1;s.some(h=>e.objects.isDescendantOf(a,h))?l=!0:o.physics?.fusedBody===!0&&o.physics.rigidBody==="dynamic"&&s.push(a),n.data=o,n.currentState=null,n.reversibleToState=null,n.currentTransitionEvent=null;for(let h of o.states)e.environment.usePhysics===!0&&o.physics&&(o.physics.rigidBody==="dynamic"||l)&&(h.data.position!==void 0||h.data.rotation!==void 0||h.data.hiddenMatrix!==void 0)||(n.states||(n.states={}),n.states[h.id]=ea.patch(o,h.data));sG(t,n,null,i,o.events.find(h=>h.data.type==="Follow"||h.data.type==="LookAt")!==void 0)})}function sG(e,t,i,r,s=!1){t instanceof Sr&&t.removeInteractionGeometry(),t.changeSelectedState(i,{scene:e,shared:r},s),t instanceof Sr&&t.updateGeometryGroupsIfNeeded()}function nG(e){let t;switch(e.easing){case 0:t="cubicBezier( 0, 0, 1, 1 )";break;case 1:t="cubicBezier( .25, .1, .25, 1 )";break;case 2:t="cubicBezier( .42, 0, 1, 1 )";break;case 3:t="cubicBezier( 0, 0, .58, 1 )";break;case 4:t="cubicBezier( .42, 0, .58, 1 )";break;case 5:let{control1:i,control2:r}=e;t=`cubicBezier(
4913
4913
  ${i[0]}, ${i[1]}, ${r[0]}, ${r[1]}
4914
- )`;break;case 6:let{mass:s,stiffness:n,damping:a,velocity:o}=e;t=`spring( ${s}, ${n}, ${a}, ${o} )`;break;default:t="linear"}return{duration:e.duration,easing:t}}function JS(e){let t={delay:0,loop:e.repeat===-1?!0:e.repeat+1};if(e.repeat===0)t.direction="normal",t.rewind=e.direction==="pingpong-rewind";else switch(e.direction){case"pingpong":t.direction="alternate",t.rewind=!1;break;case"pingpong-rewind":t.direction="alternate",t.rewind=!0;break;default:t.direction="normal",t.rewind=!1;break}switch(t.delay=0,t.endDelay=0,t.startOnceDelay=0,t.pingPongDelayCorrection=0,e.delayDirection){case"start-once":t.startOnceDelay=e.delay;break;case"start":t.delay=e.delay;break;case"end":t.endDelay=e.delay;break;case"start-end":case void 0:t.delay=e.delay,t.endDelay=e.delay;break}return t.direction==="alternate"&&(t.delay/=2,t.endDelay/=2,t.delay!==0&&(t.pingPongDelayCorrection=t.delay)),t}var Sb=class{constructor(e,t,i,r,s,n){if(this.object=e,this.data=r,this.sharedAssets=s,this.allowSlerp=n,this.targets={t:0},this.firstLoop=!0,this._changeBegan=!1,this._changeCompleted=!0,this.onChange=()=>{this.callback&&(this.callback.update(this.targets.t),this.object.dispatchEvent({type:"requestRender"})),this.targets.t===0||this.targets.t===1?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):(this._changeCompleted&&(this._changeCompleted=!1),this._changeBegan||(this._changeBegan=!0,this.onChangeBegin()))},this.onChangeBegin=()=>{this.object.reversibleToState=this.to.id;let a=this.targets.t>.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=a,this.object.dispatchEvent({type:"beginState",state:a})},this.onChangeComplete=()=>{this.firstLoop&&(this.onFirstLoop(),this.firstLoop=!1),this.object.reversibleToState=this.to.id;let a=this.targets.t<.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=a,this.object.dispatchEvent({type:"completeState",state:a})},this.onFirstLoop=()=>{this.useCurrentState&&(this.callback=_b(this.object,this.from.data,this.to.data,this.sharedAssets,this.allowSlerp))},t===void 0){let a=au(this.object,this.object.currentState===i?this.object.prevState:this.object.currentState);if(!a)throw new Error("Missing property");this.from=a}else{let a=au(this.object,t);if(!a)throw new Error("Missing property");this.from=a}if(i===void 0)throw new Error("Missing property");{let a=au(this.object,i);if(!a)throw new Error("Missing property");this.to=a}this.useCurrentState=t===void 0||i===void 0,this.params={targets:this.targets,t:1,autoplay:!1,...JS(r),...nG(r),change:this.onChange},this.callback=_b(this.object,t===void 0?{}:this.from.data,i===void 0?{}:this.to.data,this.sharedAssets,this.allowSlerp)}get changeBegan(){return this._changeBegan}get changeCompleted(){return this._changeCompleted}},fo=class extends Gi{constructor(e,t,i){if(super(),this.data=e,this.scene=t,this.sharedAssets=i,this.toggleIsForward=!1,this.timelineNeedsRebuild=!1,this.useToggle=!1,this.onTimelineChangeComplete=()=>{this.data.tweens[0].data.direction!=="normal"&&(this.toggleIsForward=!this.toggleIsForward),this.timelineNeedsRebuild!==!1&&(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward,isRebuild:!0}),this.timeline.play())},!e.object)throw new Error("Missing property");let r=t.find(e.object);if(!r)throw new Error("Missing property");if(!r.states)throw new Error("Missing property");if(this.object=r,e.tweens.length<2)throw new Error("Missing property");this.tweens=Array(this.data.tweens.length-1),this.startOnceDelay=e.tweens[0].data.delayDirection==="start-once"?e.tweens[0].data.delay:0,this.init()}get playing(){return this.tweens.some(e=>e.changeBegan)??!1}init(){this.initialCurrentState=au(this.object,this.object.currentState).id,this.toggleIsForward=!1}get currentState(){return this.useToggle?this.initialCurrentState:this.object.currentState}buildTimeline({isForward:e=!0,isRebuild:t=!1}={}){try{let i=JS(this.data.tweens[0].data),r=i.loop;t&&typeof i.loop=="number"&&i.loop--,this.timeline?.pause(),this.timeline=Lj.timeline({autoplay:!1,...i,...r===!0||r>1?{timelineChangeComplete:this.onTimelineChangeComplete}:{}});let s=this.tweens.findIndex(n=>n?.changeBegan);if(this.timelineNeedsRebuild=s!==-1&&(r===!0||r>1),i.pingPongDelayCorrection&&t===!1&&(this.timelineNeedsRebuild=!0),e){let n=s===-1?0:s;for(let a=n;a<this.data.tweens.length-1;a++){let o=this.data.tweens[a],l=this.data.tweens[a+1],h;a===n&&(this.object.wasMovedByUser===!0||this.object.previousAction?.playing===!0)?(h=void 0,this.object instanceof sr&&(this.object.wasMovedByUser=!1)):h=o.data.state===void 0?this.currentState:o.data.state;let d=new Sb(this.object,h,l.data.state===void 0?this.currentState:l.data.state,l.data,this.sharedAssets,this.data.allowSlerp??!1);s!==-1&&a===n&&Object.assign(d.params,{startOnceDelay:0}),this.tweens[a]=d,this.timeline.add(d.params,this.timeline.duration+(a===n?i.delay:0)+(a===n&&!t?i.pingPongDelayCorrection:0))}this.timeline.duration+=i.endDelay}else{let n=s===-1?this.data.tweens.length-1:s+1;for(let a=n;a>0;a--){let o=this.data.tweens[a],l=this.data.tweens[a-1],h;a===n&&(this.object.wasMovedByUser===!0||this.object.previousAction?.playing===!0)?(h=void 0,this.object instanceof sr&&(this.object.wasMovedByUser=!1)):h=o.data.state===void 0?this.currentState:o.data.state;let d=new Sb(this.object,h,l.data.state===void 0?this.currentState:l.data.state,o.data,this.sharedAssets,this.data.allowSlerp??!1);s!==-1&&a===n&&Object.assign(d.params,{startOnceDelay:0}),this.tweens[a-1]=d,this.timeline.add(d.params,this.timeline.duration+(a===n?i.endDelay:0))}this.timeline.duration+=i.delay+(t?0:i.pingPongDelayCorrection)}}catch(i){i instanceof Error&&console.error(i.message)}this.object.previousAction?.playing===!0&&this.object.previousAction.pause(),this.object.previousAction=this}play(){if(this.playing)return!1;clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{try{this.buildTimeline(),this.timeline.play()}catch(e){e instanceof Error&&console.error(e.message)}},this.startOnceDelay)}pause(){this.timeline?.pause(),clearTimeout(this.timeoutId),this.tweens=Array(this.data.tweens.length-1),delete this.timeoutId}stop(){this.pause(),this.object.changeSelectedState(this.data.tweens[0].data.state===void 0?this.initialCurrentState:this.data.tweens[0].data.state,{scene:this.scene,shared:this.sharedAssets})}seek(e){this.timeline===void 0&&this.buildTimeline(),this.timeline?.seek(e*this.timeline.duration)}toggle(e){this.useToggle=!0,clearTimeout(this.timeoutId),this.toggleIsForward=e??!this.toggleIsForward,this.playing?(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()):this.timeoutId=window.setTimeout(()=>{this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()},this.startOnceDelay)}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause()}};function au(e,t){let i,r;if(typeof t=="string"?(i=t,r=e.states?.[i]):t===null&&(i=null,r=e.data),!(i===void 0||r===void 0))return{id:i,data:r}}function Mn(e,t,i,r,s,n){let a={Audio:[],Video:[],Link:[],Reset:[],Transition:[]};return t.forEach(({id:o,data:l})=>{try{l.type==="Audio"?ml[e.type].includes("Audio")&&a.Audio.push(new po(o,l,i,s)):l.type==="Video"?ml[e.type].includes("Video")&&a.Video.push(new td(o,l,i)):l.type==="Link"?ml[e.type].includes("Link")&&a.Link.push(new ej(l,n)):l.type==="Reset"?ml[e.type].includes("Reset")&&a.Reset.push(new tj(r.data,r,s,n)):l.type==="Transition"&&ml[e.type].includes("Transition")&&a.Transition.push(new fo(l,r,s))}catch{}}),a}function En(e){Object.values(e).forEach(t=>{t.forEach(i=>{(i instanceof po||i instanceof td||i instanceof fo)&&i.dispose()})})}var Sv=[["start","Start"],["keyDown","KeyDown"],["keyUp","KeyUp"],["mouseDown","MouseDown"],["mouseUp","MouseUp"],["mouseHover","MouseHover"],["collision","Collision"],["lookAt","LookAt"],["follow","Follow"],["scroll","Scroll"]],$S=e=>Sv.find(([t,i])=>i===e)?.[0],Od=e=>Sv.find(([t])=>t===e)?.[1],aG=(e,t)=>{let i=$S(e);if(i){let r=new CustomEvent(i,{bubbles:!0});return Object.defineProperty(r,"target",{writable:!1,value:t}),r}},oG=class extends Pn{constructor(e){super(e),this.objectsPerEvents=new Map,this.splineEvents={},this.onBeginEvent=i=>{if(!i.eventName||!i.target||i.eventName==="Scroll")return;let r=this.splineEvents[$S(i.eventName)]?.[i.target.uuid];if(!r)return;i.eventName==="Scroll"&&i.deltaY!==void 0&&Object.assign(r,{deltaY:i.deltaY});let{domElement:s}=this.eventContext;s.dispatchEvent(r)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{if(i.data?.events.length){for(let[r,s]of Sv)if(i.data.events.some(n=>n.data.type===s&&!n.data.disabled)){this.objectsPerEvents.has(r)?this.objectsPerEvents.get(r)?.push(i):this.objectsPerEvents.set(r,[i]);let n={id:i.uuid,name:i.name},a=aG(s,n),o=this.splineEvents[r];o?o[i.uuid]=a:this.splineEvents[r]={[i.uuid]:a}}}})}connect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.addEventListener("beginEvent",this.onBeginEvent)})})}disconnect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.removeEventListener("beginEvent",this.onBeginEvent)})})}},lG=class{constructor(e,t,i,r,s,n){if(this.id=e,this.data=t,this.object=i,this.entered=!1,this.useToggle=t.toggle,(t.type==="KeyDown"||t.type==="KeyUp"||t.type==="KeyPress")&&!t.key)throw new Error("Missing property");this.actions=Mn(t,t.actions,i,r,s,n)}disconnect(){En(this.actions)}dispatch(){let e=new Set;this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this?(t.object.currentTransitionEvent=this,t.init()):this.useToggle===!1&&e.add(t)}),this.useToggle?this.actions.Transition.forEach(t=>{t.toggle()}):this.data.type==="MousePress"||this.data.type==="KeyPress"?this.entered||(this.entered=!0,this.actions.Transition.forEach(t=>t.playFromCurrent())):this.actions.Transition.some(t=>t.playing)||this.actions.Transition.forEach(t=>{e.has(t)===!1&&t.play()}),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}dispatchRelease(){this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}},hG=class extends Pn{constructor(e,t,i){super(e),this.objectsPerTypes={MouseDown:[],MouseUp:[],MousePress:[],KeyDown:[],KeyUp:[],KeyPress:[]},this.eventsPerObjects={MouseDown:{},MouseUp:{},MousePress:{},KeyDown:{},KeyUp:{},KeyPress:{}},this.heldKeys={},this.heldKeysPress={},this._prevObjects=[],this.onMouseDown=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseDown"))},this.onMouseUp=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseUp"))},this.onMousePressDown=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent())},this.onMousePressRelease=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent(!0))},this.onKeyDown=n=>{this.heldKeys[n.key]||this.handleKeyEvent(n,"KeyDown"),this.heldKeys[n.key]=!0},this.onKeyUp=n=>{this.handleKeyEvent(n,"KeyUp")},this.onKeyPressDown=n=>{this.heldKeysPress[n.key]||this.handleKeyEvent(n,"KeyPress"),this.heldKeysPress[n.key]=!0},this.onKeyPressUp=n=>{this.handleKeyEvent(n,"KeyPress",!0)},this.releaseHeldKey=n=>{delete this.heldKeys[n.key]},this.releaseHeldKeyPress=n=>{delete this.heldKeysPress[n.key]},this._onUserEvent=({eventName:n,target:a,reverse:o})=>{if(!n||!a)return;let l=Od(n);l&&(l==="MouseDown"||l==="MouseUp"||l==="MousePress"?(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent(o)})):(l==="KeyDown"||l==="KeyUp"||l==="KeyPress")&&(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent()})))};let{scene:r,sharedAssets:s}=this.eventContext;r.traverseEntity(n=>{if(!n.data?.events.length)return;let a=n.visible?["MouseDown","MouseUp","MousePress","KeyDown","KeyUp","KeyPress"]:["KeyDown","KeyUp","KeyPress"];for(let o of a){let l=this.eventsPerObjects[o];n.data.events.filter(({data:h})=>h.type===o&&h.disabled!==!0).forEach(({id:h,data:d})=>{try{let c=new lG(h,d,n,r,s,{controlsManager:t,eventManager:i});c.actions.Video.length&&(this.hasVideoAction=!0),l[n.uuid]?l[n.uuid].push(c):l[n.uuid]=[c]}catch{}}),l[n.uuid]?.length&&this.objectsPerTypes[o].push(n)}})}connect(){let{domElement:e}=this.eventContext;this.heldKeys={},this.heldKeysPress={},this.domEventsNeeded.clear(),this.objectsPerTypes.MouseDown?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown)),this.objectsPerTypes.MouseUp?.length&&(this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.objectsPerTypes.MousePress?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMousePressDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMousePressRelease)),this.objectsPerTypes.KeyDown?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.objectsPerTypes.KeyUp?.length&&(this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyUp)),this.objectsPerTypes.KeyPress?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyPressDown),document.addEventListener("keyup",this.releaseHeldKeyPress),this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyPressUp)),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.addEventListener("userEvent",this._onUserEvent)})})}disconnect(){let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),this.heldKeys={},this.heldKeysPress={},e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerdown",this.onMousePressDown),e.removeEventListener("pointerup",this.onMouseUp),e.removeEventListener("pointerup",this.onMousePressRelease),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyPressDown),document.removeEventListener("keyup",this.onKeyPressUp),document.removeEventListener("keyup",this.releaseHeldKey),Object.values(this.eventsPerObjects).forEach(t=>{Object.values(t).forEach(i=>{i.forEach(r=>{r.disconnect()})})}),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.removeEventListener("userEvent",this._onUserEvent)})})}handleMouseEvent(e){let{stopRaycast:t,raycaster:i,scene:r}=this.eventContext,s=this.objectsPerTypes[e];if(s.length)if(t){let n=Xm(i,r,s);qm(n).forEach(a=>{this.eventsPerObjects[e][a.uuid]&&this.handleObjectMouseEventDispatch(a,e)})}else s.forEach(n=>{ed(i,n)&&this.handleObjectMouseEventDispatch(n,e)})}handleMousePressEvent(e=!1){let t="MousePress",i=this.objectsPerTypes[t],r=[];if(i.length){if(!e){let{stopRaycast:s,raycaster:n,scene:a}=this.eventContext;if(s){let o=Xm(n,a,i);r=qm(o)}else i.forEach(o=>{ed(n,o)&&r.push(o)})}this._prevObjects.length&&this._prevObjects.forEach(s=>{r.includes(s)||this.handleObjectMouseEventDispatchRelease(s,t)}),r.length&&r.forEach(s=>{this.handleObjectMouseEventDispatch(s,t)}),this._prevObjects=r}}handleObjectMouseEventDispatch(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatch()})}handleObjectMouseEventDispatchRelease(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatchRelease()})}handleKeyEvent(e,t,i=!1){this.objectsPerTypes[t].forEach(r=>{let s=this.eventsPerObjects[t][r.uuid];s.some(({data:n})=>"key"in n&&n.key===e.key)&&r.dispatchEvent({type:"beginEvent",eventName:t}),s.forEach(n=>{"key"in n.data&&n.data.key===e.key&&(i?n.dispatchRelease():n.dispatch())})})}},cG=new E,uG=new E,e2=class{constructor(e,t,i,r){this.actionsIn=Mn(e,e.inActions,t,i,r),this.actionsOut=Mn(e,e.outActions,t,i,r)}disconnect(){En(this.actionsIn),En(this.actionsOut)}},dG=class extends e2{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.stage="out",this.objects=[],this.onUpdateMatrix=()=>{let l=cG.setFromMatrixPosition(this.objects[0].matrixWorld),h=uG.setFromMatrixPosition(this.objects[1].matrixWorld),d=l.distanceTo(h)<=this.distance?"in":"out";if(this.stage!==d){let c=d==="in"?this.actionsIn:this.actionsOut;c.Audio.forEach(u=>u.dispatchConditional()),c.Video.forEach(u=>u.dispatchConditional()),c.Transition.forEach(u=>{u.object.currentTransitionEvent!==this&&(u.object.currentTransitionEvent=this),u.init()}),c.Transition.forEach(u=>u.play()),this.stage=d}};let{distance:n,fromObject:a,toObject:o}=t.condition;this.distance=n;for(let l of[a,o]){if(!l)throw new Error("Missing property");let h=r.find(l);if(!h)throw new Error("Missing property");this.objects.push(h)}}connect(){this.objects.forEach(e=>{e.addEventListener("updateMatrix",this.onUpdateMatrix)}),this.onUpdateMatrix()}disconnect(){super.disconnect(),this.stage="out",this.objects.forEach(e=>{e.removeEventListener("updateMatrix",this.onUpdateMatrix)})}},pG=class extends e2{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.onBegin=({target:o,state:l})=>{this.toState!==l&&(this.actionsOut.Audio.forEach(h=>h.dispatchConditional()),this.actionsOut.Video.forEach(h=>h.dispatchConditional()),this.actionsIn.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this,this.actionsOut.Transition.forEach(h=>h.play()))},this.onComplete=({target:o,state:l})=>{this.toState===l&&(this.actionsIn.Audio.forEach(h=>h.dispatchConditional()),this.actionsIn.Video.forEach(h=>h.dispatchConditional()),this.actionsOut.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this,this.actionsIn.Transition.forEach(h=>h.play()))};let{condition:n}=t;if(!n.object)throw new Error("Missing property");let a=r.find(n.object);if(!a)throw new Error("Missing property");if(this.toObject=a,n.state&&!this.toObject.states?.[n.state])throw new Error("Missing property");this.toState=n.state}connect(){(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.addEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.addEventListener("completeState",this.onComplete)}disconnect(){super.disconnect(),(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.removeEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.removeEventListener("completeState",this.onComplete)}},fG=class extends Pn{constructor(e){super(e),this.eventsPerConditions={Comparison:[],Distance:[],State:[]},this.hasVideoAction=!1;let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="Conditional")try{let a;n.condition.type==="Comparison"||(n.condition.type==="Distance"?a=new dG(s,n,r,t,i):n.condition.type==="State"&&(a=new pG(s,n,r,t,i))),a&&(this.eventsPerConditions[n.condition.type].push(a),(a.actionsIn.Video.length||a.actionsOut.Video.length)&&(this.hasVideoAction=!0))}catch{}}})}connect(){super.connect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.connect()))}disconnect(){super.disconnect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.disconnect()))}},qa=new E,gf=new E,vf=new E,Uc=new E,Mb=new mr,Eb=.01,mG={type:"requestRender"},gG=function(){let e=new E,t=new E;return(i,r,s)=>s>0?(e.subVectors(i,r),e.length()<=s?i:t.copy(r).add(e.normalize().multiplyScalar(s))):r}(),Cb=function(){let e=new ve;return(t,i)=>{t.position.copy(i),t.parent!==null&&(e.copy(t.parent.matrixWorld).invert(),t.position.applyMatrix4(e)),e.copy(t.hiddenMatrix).invert(),t.position.applyMatrix4(e),t.updateMatrix(),t.hasNonUniformScale&&(t.updateMatrixWorld(),t.updateMatrixWorldSVD()),t instanceof rr&&vn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),vG=class{constructor(e,t,i){this.data=e,this.object=t,this.tempPosition=new E,this.started=!1,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldPosition0=new E,this.target=e.target?i.find(e.target):void 0,this.maxDelta=e.maxDelta??0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.snapDampingFactor,this.object.getWorldPosition(this.worldPosition0)}},yG=class extends Pn{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(Qe.length>1)){this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="Follow"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new vG(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents||(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.started=!1,i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{tempPosition:t,object:i,maxDelta:r,plane:s}=e;if(i.getWorldPosition(vf),e.isReset)Uc.copy(e.worldPosition0);else if(e.target)e.target.getWorldPosition(Uc);else{let{camera:a,raycaster:o}=this.eventContext;if(s==="custom"?(a.getWorldDirection(gf),gf.negate(),qa.copy(gf)):s==="xy"?qa.set(0,0,1):s==="xz"?qa.set(0,1,0):s==="yz"&&qa.set(1,0,0),Mb.setFromNormalAndCoplanarPoint(qa,vf),!o.ray.intersectPlane(Mb,Uc))return}let n=gG(vf,Uc,r);if(e.currentDampingFactor>1||e.snapComplete===!1){e.started||(e.started=!0,t.copy(n));let a=qa.subVectors(n,t).divideScalar(e.currentDampingFactor);t.add(a),Cb(i,t),e.paused=a.length()<Eb,e.snapComplete=a.length()<Eb*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)}else Cb(i,n),e.paused=!0;e.object?.dispatchEvent({type:"beginEvent",eventName:"Follow"}),i.dispatchEvent(mG)}},Pl=new E,Fc=new E,Vn=new ve,Dl=new ct,Ya=new ct,kc=new E,yf=new E,Ol=new E,jc=new mr,Tb=1e-5,xG={type:"requestRender"},bG={type:"changeRotation"},wG=function(){let e=new ve,t=new E,i=new E,r=new E;return(s,n)=>(n==="x"?(t.set(0,0,1),i.set(0,1,0),r.set(-1,0,0)):n==="y"?(t.set(1,0,0),i.set(0,0,1),r.set(0,-1,0)):(t.set(1,0,0),i.set(0,1,0),r.set(0,0,1)),t.applyMatrix4(s),i.applyMatrix4(s),r.applyMatrix4(s),e.makeBasis(t,i,r))}(),Pb=function(){let e=new ve;return function(t,i){t.parent!==null?e.multiplyMatrices(t.parent.matrixWorld,t.hiddenMatrix):e.copy(t.hiddenMatrix),i.premultiply(CS(e).invert()),t.rotation.setFromRotationMatrix(i),t.updateMatrix(),t instanceof rr&&vn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),_G=class{constructor(e,t,i){this.data=e,this.object=t,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldQuaternion0=new ct,this.target=e.target?i.find(e.target):void 0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.distance=e.distance??0,this.tilt=e.tilt??"up",this.axis=e.axis??"z",this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.dampingFactor,this.object.getWorldQuaternion(this.worldQuaternion0)}},AG=class extends Pn{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(Qe.length>1)){this._lastMouseEvent=i,this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onScroll=i=>{if(this._lastMouseEvent){let r=new PointerEvent("pointermove",{clientX:this._lastMouseEvent.clientX,clientY:this._lastMouseEvent.clientY,bubbles:!0,cancelable:!0,view:window});this.eventContext.eventElement.dispatchEvent(r)}},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="LookAt"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new _G(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents?t.addEventListener("scroll",this.onScroll):(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave),t.removeEventListener("scroll",this.onScroll);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{target:t,tilt:i,axis:r,distance:s,plane:n,object:a}=e,{camera:o,raycaster:l}=this.eventContext;if(a.getWorldPosition(kc),!e.isReset){if(e.target)e.target.getWorldPosition(yf);else if(n==="custom"?(o.getWorldDirection(Fc),Fc.negate(),s>0?jc.set(Fc,-s):jc.setFromNormalAndCoplanarPoint(Fc,kc)):(n==="xy"?Pl.set(0,0,1):n==="xz"?Pl.set(0,1,0):n==="yz"&&Pl.set(1,0,0),jc.setFromNormalAndCoplanarPoint(Pl,kc)),!l.ray.intersectPlane(jc,yf))return}e.isReset||(t?i==="up"?Ol.set(0,1,0):i==="target"&&Ol.copy(t.up).applyMatrix4(Vn.extractRotation(t.matrixWorld)).normalize():n==="custom"?Ol.set(0,1,0):Ol.copy(Pl)),e.isReset?Ya.copy(e.worldQuaternion0):(Vn.lookAt(yf,kc,Ol),Vn.copy(wG(Vn,r)),Ya.setFromRotationMatrix(Vn)),e.currentDampingFactor>1||e.snapComplete===!1?(a.updateWorldMatrix(!0,!1),Dl.setFromRotationMatrix(CS(a.matrixWorld)),Dl.slerp(Ya,1/e.currentDampingFactor),Pb(a,Vn.makeRotationFromQuaternion(Dl)),e.paused=8*(1-Dl.dot(Ya))<Tb,e.snapComplete=8*(1-Dl.dot(Ya))<Tb*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)):(Pb(a,Vn.makeRotationFromQuaternion(Ya)),e.paused=!0),e.object?.dispatchEvent({type:"beginEvent",eventName:"LookAt"}),a.dispatchEvent(xG),a.dispatchEvent(bG)}},SG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.entered=!1,this.actions=Mn(t,t.actions,i,r,s)}disconnect(){En(this.actions)}dispatchEnter(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()))}dispatchLeave(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent())}},MG=class extends Pn{constructor(e){super(e),this.eventsPerObjects={},this.objects=[],this._prevObjects=[],this.onMouseDown=r=>{Qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onMouseUp=r=>{Qe.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=r=>{Qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Od(r);a&&a==="MouseHover"&&(s.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[s.uuid]?.forEach(o=>o.dispatchUserEvent(n)))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(!(!r.visible||!r.data?.events.length)){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="MouseHover")try{let a=new SG(s,n,r,t,i);this.eventsPerObjects[r.uuid]?this.eventsPerObjects[r.uuid].push(a):this.eventsPerObjects[r.uuid]=[a]}catch{}this.eventsPerObjects[r.uuid]?.length&&this.objects.push(r)}})}connect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),e.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(t=>{t.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Li&&(e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerup",this.onMouseUp)),e.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(t=>{t.forEach(i=>{i.disconnect()})}),this.objects.forEach(t=>{t.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(e=!1){let t=[];if(!e){let{stopRaycast:i,raycaster:r,scene:s}=this.eventContext;if(i){let n=Xm(r,s,this.objects);t=qm(n)}else this.objects.forEach(n=>{ed(r,n)&&t.push(n)})}this._prevObjects.length&&this._prevObjects.forEach(i=>{t.includes(i)||(i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchLeave()))}),t.length&&t.forEach(i=>{i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchEnter())}),this._prevObjects=t}},EG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.scrollCounter=0,this.actions=Mn(t,t.actions,i,r,s)}connect(){this.scrollCounter=0}disconnect(){En(this.actions)}dispatch(e){this.actions.Transition.forEach(r=>{r.object.currentTransitionEvent!==this&&(r.object.currentTransitionEvent=this,r.init())});let t=e>0?1:-1;this.scrollCounter+=t,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(r=>r.seek(i))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},CG=class{constructor(e,t,i,r,s,n){this.id=e,this.data=t,this.object=i,this.domElement=n,this.scrollStart=0,this.scrollEnd=0,this.actions=Mn(t,t.actions,i,r,s)}computeScrollBounds(){let e=this.domElement.getBoundingClientRect(),t=document.body,i=document.documentElement,r=window.pageYOffset||i.scrollTop||t.scrollTop,s=i.clientTop||t.clientTop||0,n=Math.round(e.top+r-s);if(this.data.startFrom==="enter"){let a=window.innerHeight,o=e.height,l=this.data.enterAnchor,h=l==="top"?a:l==="bottom"?a-o:a-o*.5;this.scrollStart=n-h}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.dispatch({x:window.scrollX,y:window.scrollY})}connect(){this.computeScrollBounds()}disconnect(){En(this.actions)}handleResize(){this.computeScrollBounds()}dispatch({x:e,y:t}){this.actions.Transition.forEach(s=>{s.object.currentTransitionEvent!==this&&(s.object.currentTransitionEvent=this,s.init())});let i=this.scrollEnd-this.scrollStart,r=Math.min(1,Math.max(0,(t-this.scrollStart)/i));this.actions.Transition.forEach(s=>s.seek(r))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},TG=class extends Pn{constructor(e){super(e),this.wheelEventsPerObject=new Map,this.scrollEventsPerObject=new Map,this.handleResize=()=>{[...this.scrollEventsPerObject.entries()].forEach(([s,n])=>{n.forEach(a=>a.handleResize())})},this.onScroll=s=>{let n={y:window.scrollY,x:window.scrollX};[...this.scrollEventsPerObject.entries()].forEach(([a,o])=>{a.dispatchEvent({type:"beginEvent",eventName:"Scroll",scroll:n}),o.forEach(l=>l.dispatch(n))})},this.onWheel=s=>{s.ctrlKey||[...this.wheelEventsPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:s.deltaY}),a.forEach(o=>o.dispatch(s.deltaY))})},this.onUserEvent=({eventName:s,target:n,reverse:a})=>{if(!s||!n)return;let o=Od(s);o&&o==="Scroll"&&(n.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(n)?.forEach(l=>{l.dispatchUserEvent(a)}))};let{scene:t,sharedAssets:i,domElement:r}=this.eventContext;t.traverseEntity(s=>{if(s.data?.events.length){for(let{id:n,data:a}of s.data.events)if(!a.disabled&&a.type==="Scroll")if(a.trigger==="load"){let o=new EG(n,a,s,t,i);this.wheelEventsPerObject.has(s)?this.wheelEventsPerObject.get(s)?.push(o):this.wheelEventsPerObject.set(s,[o])}else{let o=new CG(n,a,s,t,i,r);this.scrollEventsPerObject.has(s)?this.scrollEventsPerObject.get(s)?.push(o):this.scrollEventsPerObject.set(s,[o])}}})}connect(){[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.wheelEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel)),[...this.scrollEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("scroll"),window.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.handleResize))}disconnect(){window.removeEventListener("wheel",this.onWheel),window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.handleResize),this.domEventsNeeded.clear(),[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)})}},PG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.actions=Mn(t,t.actions,i,r,s)}disconnect(){En(this.actions)}dispatch(){this.actions.Transition.forEach(e=>{e.play()})}dispatchAfter(e){this.actions.Audio.forEach(t=>{(t.interaction.data.triggerAfter??"any")===e&&(t.interaction instanceof uo?t.interaction.audioPlayer.play():t.interaction instanceof Ym&&t.interaction.dispatch())}),this.actions.Video.forEach(t=>{let i=t.interaction.data.triggerAfter??"autoplay";i===e&&(t.interaction instanceof Zl?t.interaction.play(i==="autoplay"):t.interaction instanceof Qm&&t.interaction.dispatch())})}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Audio.forEach(t=>{t.interaction instanceof uo?t.interaction.audioPlayer.play():t.interaction instanceof Ym&&t.interaction.dispatch()}),this.actions.Video.forEach(t=>{t.interaction instanceof Zl?t.interaction.play():t.interaction instanceof Qm&&t.interaction.dispatch()})}},DG=class extends Pn{constructor(e){super(e),this.eventsPerObject=new Map,this.eventsAfterPerObject=new Map,this.onMouseDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("mouseDown")})})},this.onKeyDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("keyDown")})})},this.onAny=()=>{let{domElement:r,isExport:s}=this.eventContext;(s?document:r).removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Start"}),a.forEach(o=>{o.dispatchAfter("any")})})},this.onPlay=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("autoplay")})})},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Od(r);a&&a==="Start"&&(s.dispatchEvent({type:"beginEvent",eventName:"Start"}),this.eventsPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}),this.eventsAfterPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length)for(let{id:s,data:n}of r.data.events){if(n.disabled||n.type!=="Start")continue;let a=new PG(s,n,r,t,i);a.actions.Transition.length&&(this.eventsPerObject.has(r)?this.eventsPerObject.get(r)?.push(a):this.eventsPerObject.set(r,[a])),a.actions.Audio.length&&(this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a])),a.actions.Video.length&&(this.hasVideoAction=!0,this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a]))}})}connect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.addEventListener("pointerdown",this.onMouseDown,{once:!0}),document.addEventListener("keydown",this.onKeyDown,{once:!0}),i.addEventListener("pointerdown",this.onAny),document.addEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.addEventListener("userEvent",this.onUserEvent)}),this.onPlay()}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(i=>i.dispatch()),e.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.removeEventListener("pointerdown",this.onMouseDown),document.removeEventListener("keydown",this.onKeyDown),i.removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.removeEventListener("userEvent",this.onUserEvent),s.forEach(n=>n.disconnect())})}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.removeEventListener("userEvent",this.onUserEvent),t.forEach(i=>i.disconnect())})}},OG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.disabled=!0,this.actions=Mn(t,t.actions,i,r,s),this.target=t.target,this.useToggle=t.toggle}disconnect(){En(this.actions)}dispatch(){this.disabled||(this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.object.dispatchEvent({type:"beginEvent",eventName:"Collision"}),this.useToggle?this.actions.Transition.forEach(e=>{e.toggle()}):this.actions.Transition.forEach(e=>{e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}))}},Bt;vz.then(e=>Bt=e);var Ti=new E,Js=new ct,Hn=new E,xf=new bi(0,0,0,"YXZ"),LG={type:"updateMatrix"},t2={type:"beginEvent",eventName:"Collision"};function IG(e){if(e.scene.environment.usePhysics)return!0;let t=!1;return e.scene.objects.traverse((i,r)=>{for(let s of r.events)if(s.data.disabled!==!0&&s.data.type==="GameControl"&&s.data.collisionEnabled){t=!0;break}}),t}var Db=e=>e.states.some(t=>t.data.position!==void 0||t.data.rotation!==void 0||t.data.hiddenMatrix!==void 0||t.data.cloner!==void 0||t.data.pathSnapping!==void 0),RG=e=>e.events.find(t=>t.data.disabled!==!0&&t.data.type==="Follow"),BG=class{constructor(e,t,i,r,s,n=!1){this.scene=t,this.sharedAssets=s,this.isExport=n,this.orbitControlsNeedsUpdate=!0,this.gameControls=[],this.gameControlStates=[],this.joysticks=[],this.joystickToGameControls=[],this.sharedGameControlGlobals={entitiesWithTransformAnim:[],eventsPerObjects:{},colliderToEntity:{},gamePads:[]},this.needsCollisionDetection=!1,this.initializationCounter=-1,this.rigidBodyToMesh=new Map,this.nActiveRigidBodies=0,this.collisionEvents=[],this.processRigidBody=m=>{if(m.bodyType()!==Bt.RigidBodyType.Dynamic)return;m.isSleeping()||this.nActiveRigidBodies++;let[v,y,b]=this.rigidBodyToMesh.get(m.handle);if(Ti.copy(m.translation()).multiplyScalar(this.pixelsPerMeter),Js.copy(m.rotation()),v.matrixWorld.compose(Ti,Js,y),v.hasNonUniformScale&&v.matrixWorld.multiply(v.shearScale),v.dispatchEvent(LG),b){let x=v.cloner;if(x&&x.objectForSample===void 0){x.matrixWorld.copy(v.matrixWorld);for(let w of x.children)w.updateMatrixWorld(!0)}for(let w of v.children)w.updateMatrixWorld(!0)}},this.handleCollisionEvents=(m,v,y)=>{if(y!==!1)if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[m])){let b=this.sharedGameControlGlobals.colliderToEntity[v],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[v])){let b=this.sharedGameControlGlobals.colliderToEntity[m],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else{let b=this.sharedGameControlGlobals.colliderToEntity[m],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x!==void 0)for(let S of x)S.data.target==="scene"&&this.dispatchCollisionEvent(S,b);let w=this.sharedGameControlGlobals.colliderToEntity[v],A=this.sharedGameControlGlobals.eventsPerObjects[w?.uuid];if(A!==void 0)for(let S of A)S.data.target==="scene"&&this.dispatchCollisionEvent(S,w)}},this.onBeginState=()=>{this.orbitControls&&(this.orbitControls.enabled=!1,this.orbitControlsNeedsUpdate=!1)},this.onCompleteState=({target:m})=>{this.orbitControls&&(this.orbitControls.enabled=!0,this.orbitControls.resetTo(m.getTarget(Ti),m.position,m.zoom,m.isUpVectorFlipped),this.orbitControlsNeedsUpdate=!0)},this.domElement=i.domElement;let a;e.scene.publish.playCamera===null?a=Cd.PERSONAL_CAMERA_ID:a=e.scene.publish.playCamera;let o=this.scene.find(a),l=!1,h,d=5,c=8,u=9,p="drag";if(this.usePhysics=e.scene.environment.usePhysics??Qi.defaultData.usePhysics,this.pixelsPerMeter=e.scene.environment.pixelsPerMeter??Qi.defaultData.pixelsPerMeter,e.scene.objects.data(e.scene.publish.gameControlObject)?.events.forEach(m=>{m.data.disabled!==!0&&m.data.type==="GameControl"&&(h=m.data.keyAssignments,d=m.data.joystickPosLoc,c=m.data.joystickRotLoc,u=m.data.jumpTouchButtonLoc,p=m.data.rotByTouch)}),this.scene.traverseEntity(m=>{m.dataPatched.events.forEach(v=>{if(v.data.disabled||v.data.type!=="GameControl")return;let y=m;for(;(y=y.parent)?.parent!==null;)if(y.dataPatched.physics?.fusedBody)return;v.data.collisionEnabled&&(this.needsCollisionDetection=!0),this.gameControlStates.push([m,v.data])})}),this.usePhysics&&this.initPhysics(e.scene.environment.gravity??Qi.defaultData.gravity),this.gameControlStates.forEach(([m,v])=>{l=l||v.camera===o.uuid||m.uuid===o.uuid;let y=new i2(m,i.domElement,{...v,keyAssignments:h},e.scene.environment,this.sharedGameControlGlobals,m.uuid!==o.uuid&&v.camera===o.uuid,o,this.scene,s);y.addEventListener("change",r),y.addEventListener("end",r),y.addEventListener("start",r),this.gameControls.push(y),Li&&v.touchControl&&(this.joystickToGameControls[d]!==void 0?this.joystickToGameControls[d].push([y,"pos"]):this.joystickToGameControls[d]=[[y,"pos"]],v.moveMode==="walk"&&(this.joystickToGameControls[u]!==void 0?this.joystickToGameControls[u].push([y,"jmp"]):this.joystickToGameControls[u]=[[y,"jmp"]]),p==="joystick"&&(this.joystickToGameControls[c]!==void 0?this.joystickToGameControls[c].push([y,"rot"]):this.joystickToGameControls[c]=[[y,"rot"]]))}),l===!1){let{enableRotate:m,enablePan:v,enableZoom:y,autoRotate:b,hoverRotatePanMode:x}=e.scene.publish.orbitControls;if(m||v||y||b||x!==0){this.orbitControls=new r2(o,i.domElement,this.isExport),this.orbitControls.addEventListener("change",r),this.orbitControls.addEventListener("end",r),this.orbitControls.addEventListener("start",r),this.orbitControls.fromJSON(e.scene.publish.orbitControls,e.scene.publish.mouseEventTarget),this.orbitControls.useKeyEvents=!1,this.orbitControls.connect(),this.orbitControls.update();let w=this.orbitControls.object;w.addEventListener("beginState",this.onBeginState),w.addEventListener("completeState",this.onCompleteState)}}let f=i.domElement.width/i.getPixelRatio(),g=i.domElement.height/i.getPixelRatio();this.joystickToGameControls.forEach((m,v)=>{let y=document.body.appendChild(document.createElement("div")),[b,x,w]=(e.scene.publish.joystickSizeAndXYOffset??Bo.defaultData.joystickSizeAndXYOffset)[v],A=(f-5*b)/4+b,S={},_=m.some(P=>P[1]==="jmp"),M=_?0:b;v<10?(v<5?S.top=M/2:S.bottom=M/2,S.left=M/2+v%5*A):v===10?(S.left=M/2,S.top=g/2):(S.right=M/2,S.top=g/2),S.top?S.top-=x[1]:S.bottom+=x[1],S.left?S.left+=x[0]:S.right-=x[0];for(let P in S)S[P]+="px";if(_){let P=y.appendChild(document.createElement("div"));Object.assign(P.style,S,{position:"absolute",width:b+"px",height:b+"px",backgroundColor:`rgba(255,255,255,${w==="show"?.4:0})`,zIndex:"9999",borderRadius:b+"px",border:w==="show"?"solid 2px rgba(0, 0, 0, .1)":"none",display:"flex",alignItems:"center",justifyContent:"center",touchAction:"none"});let O=b/16*16*.4;w==="show"&&(P.innerHTML=`
4914
+ )`;break;case 6:let{mass:s,stiffness:n,damping:a,velocity:o}=e;t=`spring( ${s}, ${n}, ${a}, ${o} )`;break;default:t="linear"}return{duration:e.duration,easing:t}}function JS(e){let t={delay:0,loop:e.repeat===-1?!0:e.repeat+1};if(e.repeat===0)t.direction="normal",t.rewind=e.direction==="pingpong-rewind";else switch(e.direction){case"pingpong":t.direction="alternate",t.rewind=!1;break;case"pingpong-rewind":t.direction="alternate",t.rewind=!0;break;default:t.direction="normal",t.rewind=!1;break}switch(t.delay=0,t.endDelay=0,t.startOnceDelay=0,t.pingPongDelayCorrection=0,e.delayDirection){case"start-once":t.startOnceDelay=e.delay;break;case"start":t.delay=e.delay;break;case"end":t.endDelay=e.delay;break;case"start-end":case void 0:t.delay=e.delay,t.endDelay=e.delay;break}return t.direction==="alternate"&&(t.delay/=2,t.endDelay/=2,t.delay!==0&&(t.pingPongDelayCorrection=t.delay)),t}var Sb=class{constructor(e,t,i,r,s,n){if(this.object=e,this.data=r,this.sharedAssets=s,this.allowSlerp=n,this.targets={t:0},this.firstLoop=!0,this._changeBegan=!1,this._changeCompleted=!0,this.onChange=()=>{this.callback&&(this.callback.update(this.targets.t),this.object.dispatchEvent({type:"requestRender"})),this.targets.t===0||this.targets.t===1?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):(this._changeCompleted&&(this._changeCompleted=!1),this._changeBegan||(this._changeBegan=!0,this.onChangeBegin()))},this.onChangeBegin=()=>{this.object.reversibleToState=this.to.id;let a=this.targets.t>.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=a,this.object.dispatchEvent({type:"beginState",state:a})},this.onChangeComplete=()=>{this.firstLoop&&(this.onFirstLoop(),this.firstLoop=!1),this.object.reversibleToState=this.to.id;let a=this.targets.t<.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=a,this.object.dispatchEvent({type:"completeState",state:a})},this.onFirstLoop=()=>{this.useCurrentState&&(this.callback=_b(this.object,this.from.data,this.to.data,this.sharedAssets,this.allowSlerp))},t===void 0){let a=au(this.object,this.object.currentState===i?this.object.prevState:this.object.currentState);if(!a)throw new Error("Missing property");this.from=a}else{let a=au(this.object,t);if(!a)throw new Error("Missing property");this.from=a}if(i===void 0)throw new Error("Missing property");{let a=au(this.object,i);if(!a)throw new Error("Missing property");this.to=a}this.useCurrentState=t===void 0||i===void 0,this.params={targets:this.targets,t:1,autoplay:!1,...JS(r),...nG(r),change:this.onChange},this.callback=_b(this.object,t===void 0?{}:this.from.data,i===void 0?{}:this.to.data,this.sharedAssets,this.allowSlerp)}get changeBegan(){return this._changeBegan}get changeCompleted(){return this._changeCompleted}},fo=class extends Gi{constructor(e,t,i){if(super(),this.data=e,this.scene=t,this.sharedAssets=i,this.toggleIsForward=!1,this.timelineNeedsRebuild=!1,this.useToggle=!1,this.onTimelineChangeComplete=()=>{this.data.tweens[0].data.direction!=="normal"&&(this.toggleIsForward=!this.toggleIsForward),this.timelineNeedsRebuild!==!1&&(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward,isRebuild:!0}),this.timeline.play())},!e.object)throw new Error("Missing property");let r=t.find(e.object);if(!r)throw new Error("Missing property");if(!r.states)throw new Error("Missing property");if(this.object=r,e.tweens.length<2)throw new Error("Missing property");this.tweens=Array(this.data.tweens.length-1),this.startOnceDelay=e.tweens[0].data.delayDirection==="start-once"?e.tweens[0].data.delay:0,this.init()}get playing(){return this.tweens.some(e=>e.changeBegan)??!1}init(){this.initialCurrentState=au(this.object,this.object.currentState).id,this.toggleIsForward=!1}get currentState(){return this.useToggle?this.initialCurrentState:this.object.currentState}buildTimeline({isForward:e=!0,isRebuild:t=!1}={}){try{let i=JS(this.data.tweens[0].data),r=i.loop;t&&typeof i.loop=="number"&&i.loop--,this.timeline?.pause(),this.timeline=Lj.timeline({autoplay:!1,...i,...r===!0||r>1?{timelineChangeComplete:this.onTimelineChangeComplete}:{}});let s=this.tweens.findIndex(n=>n?.changeBegan);if(this.timelineNeedsRebuild=s!==-1&&(r===!0||r>1),i.pingPongDelayCorrection&&t===!1&&(this.timelineNeedsRebuild=!0),e){let n=s===-1?0:s;for(let a=n;a<this.data.tweens.length-1;a++){let o=this.data.tweens[a],l=this.data.tweens[a+1],h;a===n&&(this.object.wasMovedByUser===!0||this.object.previousAction?.playing===!0)?(h=void 0,this.object instanceof sr&&(this.object.wasMovedByUser=!1)):h=o.data.state===void 0?this.currentState:o.data.state;let d=new Sb(this.object,h,l.data.state===void 0?this.currentState:l.data.state,l.data,this.sharedAssets,this.data.allowSlerp??!1);s!==-1&&a===n&&Object.assign(d.params,{startOnceDelay:0}),this.tweens[a]=d,this.timeline.add(d.params,this.timeline.duration+(a===n?i.delay:0)+(a===n&&!t?i.pingPongDelayCorrection:0))}this.timeline.duration+=i.endDelay}else{let n=s===-1?this.data.tweens.length-1:s+1;for(let a=n;a>0;a--){let o=this.data.tweens[a],l=this.data.tweens[a-1],h;a===n&&(this.object.wasMovedByUser===!0||this.object.previousAction?.playing===!0)?(h=void 0,this.object instanceof sr&&(this.object.wasMovedByUser=!1)):h=o.data.state===void 0?this.currentState:o.data.state;let d=new Sb(this.object,h,l.data.state===void 0?this.currentState:l.data.state,o.data,this.sharedAssets,this.data.allowSlerp??!1);s!==-1&&a===n&&Object.assign(d.params,{startOnceDelay:0}),this.tweens[a-1]=d,this.timeline.add(d.params,this.timeline.duration+(a===n?i.endDelay:0))}this.timeline.duration+=i.delay+(t?0:i.pingPongDelayCorrection)}}catch(i){i instanceof Error&&console.error(i.message)}this.object.previousAction?.playing===!0&&this.object.previousAction.pause(),this.object.previousAction=this}play(){if(this.playing)return!1;clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{try{this.buildTimeline(),this.timeline.play()}catch(e){e instanceof Error&&console.error(e.message)}},this.startOnceDelay)}pause(){this.timeline?.pause(),clearTimeout(this.timeoutId),this.tweens=Array(this.data.tweens.length-1),delete this.timeoutId}stop(){this.pause(),this.object.changeSelectedState(this.data.tweens[0].data.state===void 0?this.initialCurrentState:this.data.tweens[0].data.state,{scene:this.scene,shared:this.sharedAssets})}seek(e){this.timeline===void 0&&this.buildTimeline(),this.timeline?.seek(e*this.timeline.duration)}toggle(e){this.useToggle=!0,clearTimeout(this.timeoutId),this.toggleIsForward=e??!this.toggleIsForward,this.playing?(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()):this.timeoutId=window.setTimeout(()=>{this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()},this.startOnceDelay)}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause()}};function au(e,t){let i,r;if(typeof t=="string"?(i=t,r=e.states?.[i]):t===null&&(i=null,r=e.data),!(i===void 0||r===void 0))return{id:i,data:r}}function Mn(e,t,i,r,s,n){let a={Audio:[],Video:[],Link:[],Reset:[],Transition:[]};return t.forEach(({id:o,data:l})=>{try{l.type==="Audio"?ml[e.type].includes("Audio")&&a.Audio.push(new po(o,l,i,s)):l.type==="Video"?ml[e.type].includes("Video")&&a.Video.push(new td(o,l,i)):l.type==="Link"?ml[e.type].includes("Link")&&a.Link.push(new ej(l,n)):l.type==="Reset"?ml[e.type].includes("Reset")&&a.Reset.push(new tj(r.data,r,s,n)):l.type==="Transition"&&ml[e.type].includes("Transition")&&a.Transition.push(new fo(l,r,s))}catch{}}),a}function En(e){Object.values(e).forEach(t=>{t.forEach(i=>{(i instanceof po||i instanceof td||i instanceof fo)&&i.dispose()})})}var Sv=[["start","Start"],["keyDown","KeyDown"],["keyUp","KeyUp"],["mouseDown","MouseDown"],["mouseUp","MouseUp"],["mouseHover","MouseHover"],["collision","Collision"],["lookAt","LookAt"],["follow","Follow"],["scroll","Scroll"]],$S=e=>Sv.find(([t,i])=>i===e)?.[0],Od=e=>Sv.find(([t])=>t===e)?.[1],aG=(e,t)=>{let i=$S(e);if(i){let r=new CustomEvent(i,{bubbles:!0});return Object.defineProperty(r,"target",{writable:!1,value:t}),r}},oG=class extends Pn{constructor(e){super(e),this.objectsPerEvents=new Map,this.splineEvents={},this.onBeginEvent=i=>{if(!i.eventName||!i.target||i.eventName==="Scroll")return;let r=this.splineEvents[$S(i.eventName)]?.[i.target.uuid];if(!r)return;i.eventName==="Scroll"&&i.deltaY!==void 0&&Object.assign(r,{deltaY:i.deltaY});let{domElement:s}=this.eventContext;s.dispatchEvent(r)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{if(i.data?.events.length){for(let[r,s]of Sv)if(i.data.events.some(n=>n.data.type===s&&!n.data.disabled)){this.objectsPerEvents.has(r)?this.objectsPerEvents.get(r)?.push(i):this.objectsPerEvents.set(r,[i]);let n={id:i.uuid,name:i.name},a=aG(s,n),o=this.splineEvents[r];o?o[i.uuid]=a:this.splineEvents[r]={[i.uuid]:a}}}})}connect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.addEventListener("beginEvent",this.onBeginEvent)})})}disconnect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.removeEventListener("beginEvent",this.onBeginEvent)})})}},lG=class{constructor(e,t,i,r,s,n){if(this.id=e,this.data=t,this.object=i,this.entered=!1,this.useToggle=t.toggle,(t.type==="KeyDown"||t.type==="KeyUp"||t.type==="KeyPress")&&!t.key)throw new Error("Missing property");this.actions=Mn(t,t.actions,i,r,s,n)}disconnect(){En(this.actions)}dispatch(){let e=new Set;this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this?(t.object.currentTransitionEvent=this,t.init()):this.useToggle===!1&&e.add(t)}),this.useToggle?this.actions.Transition.forEach(t=>{t.toggle()}):this.data.type==="MousePress"||this.data.type==="KeyPress"?this.entered||(this.entered=!0,this.actions.Transition.forEach(t=>t.playFromCurrent())):this.actions.Transition.some(t=>t.playing)||this.actions.Transition.forEach(t=>{e.has(t)===!1&&t.play()}),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}dispatchRelease(){this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}},hG=class extends Pn{constructor(e,t,i){super(e),this.objectsPerTypes={MouseDown:[],MouseUp:[],MousePress:[],KeyDown:[],KeyUp:[],KeyPress:[]},this.eventsPerObjects={MouseDown:{},MouseUp:{},MousePress:{},KeyDown:{},KeyUp:{},KeyPress:{}},this.heldKeys={},this.heldKeysPress={},this._prevObjects=[],this.onMouseDown=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseDown"))},this.onMouseUp=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseUp"))},this.onMousePressDown=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent())},this.onMousePressRelease=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent(!0))},this.onKeyDown=n=>{this.heldKeys[n.key]||this.handleKeyEvent(n,"KeyDown"),this.heldKeys[n.key]=!0},this.onKeyUp=n=>{this.handleKeyEvent(n,"KeyUp")},this.onKeyPressDown=n=>{this.heldKeysPress[n.key]||this.handleKeyEvent(n,"KeyPress"),this.heldKeysPress[n.key]=!0},this.onKeyPressUp=n=>{this.handleKeyEvent(n,"KeyPress",!0)},this.releaseHeldKey=n=>{delete this.heldKeys[n.key]},this.releaseHeldKeyPress=n=>{delete this.heldKeysPress[n.key]},this._onUserEvent=({eventName:n,target:a,reverse:o})=>{if(!n||!a)return;let l=Od(n);l&&(l==="MouseDown"||l==="MouseUp"||l==="MousePress"?(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent(o)})):(l==="KeyDown"||l==="KeyUp"||l==="KeyPress")&&(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent()})))};let{scene:r,sharedAssets:s}=this.eventContext;r.traverseEntity(n=>{if(!n.data?.events.length)return;let a=n.visible?["MouseDown","MouseUp","MousePress","KeyDown","KeyUp","KeyPress"]:["KeyDown","KeyUp","KeyPress"];for(let o of a){let l=this.eventsPerObjects[o];n.data.events.filter(({data:h})=>h.type===o&&h.disabled!==!0).forEach(({id:h,data:d})=>{try{let c=new lG(h,d,n,r,s,{controlsManager:t,eventManager:i});c.actions.Video.length&&(this.hasVideoAction=!0),l[n.uuid]?l[n.uuid].push(c):l[n.uuid]=[c]}catch{}}),l[n.uuid]?.length&&this.objectsPerTypes[o].push(n)}})}connect(){let{domElement:e}=this.eventContext;this.heldKeys={},this.heldKeysPress={},this.domEventsNeeded.clear(),this.objectsPerTypes.MouseDown?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown)),this.objectsPerTypes.MouseUp?.length&&(this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.objectsPerTypes.MousePress?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMousePressDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMousePressRelease)),this.objectsPerTypes.KeyDown?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.objectsPerTypes.KeyUp?.length&&(this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyUp)),this.objectsPerTypes.KeyPress?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyPressDown),document.addEventListener("keyup",this.releaseHeldKeyPress),this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyPressUp)),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.addEventListener("userEvent",this._onUserEvent)})})}disconnect(){let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),this.heldKeys={},this.heldKeysPress={},e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerdown",this.onMousePressDown),e.removeEventListener("pointerup",this.onMouseUp),e.removeEventListener("pointerup",this.onMousePressRelease),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyPressDown),document.removeEventListener("keyup",this.onKeyPressUp),document.removeEventListener("keyup",this.releaseHeldKey),Object.values(this.eventsPerObjects).forEach(t=>{Object.values(t).forEach(i=>{i.forEach(r=>{r.disconnect()})})}),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.removeEventListener("userEvent",this._onUserEvent)})})}handleMouseEvent(e){let{stopRaycast:t,raycaster:i,scene:r}=this.eventContext,s=this.objectsPerTypes[e];if(s.length)if(t){let n=Xm(i,r,s);qm(n).forEach(a=>{this.eventsPerObjects[e][a.uuid]&&this.handleObjectMouseEventDispatch(a,e)})}else s.forEach(n=>{ed(i,n)&&this.handleObjectMouseEventDispatch(n,e)})}handleMousePressEvent(e=!1){let t="MousePress",i=this.objectsPerTypes[t],r=[];if(i.length){if(!e){let{stopRaycast:s,raycaster:n,scene:a}=this.eventContext;if(s){let o=Xm(n,a,i);r=qm(o)}else i.forEach(o=>{ed(n,o)&&r.push(o)})}this._prevObjects.length&&this._prevObjects.forEach(s=>{r.includes(s)||this.handleObjectMouseEventDispatchRelease(s,t)}),r.length&&r.forEach(s=>{this.handleObjectMouseEventDispatch(s,t)}),this._prevObjects=r}}handleObjectMouseEventDispatch(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatch()})}handleObjectMouseEventDispatchRelease(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatchRelease()})}handleKeyEvent(e,t,i=!1){this.objectsPerTypes[t].forEach(r=>{let s=this.eventsPerObjects[t][r.uuid];s.some(({data:n})=>"key"in n&&n.key===e.key)&&r.dispatchEvent({type:"beginEvent",eventName:t}),s.forEach(n=>{"key"in n.data&&n.data.key===e.key&&(i?n.dispatchRelease():n.dispatch())})})}},cG=new E,uG=new E,e2=class{constructor(e,t,i,r){this.actionsIn=Mn(e,e.inActions,t,i,r),this.actionsOut=Mn(e,e.outActions,t,i,r)}disconnect(){En(this.actionsIn),En(this.actionsOut)}},dG=class extends e2{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.stage="out",this.objects=[],this.onUpdateMatrix=()=>{let l=cG.setFromMatrixPosition(this.objects[0].matrixWorld),h=uG.setFromMatrixPosition(this.objects[1].matrixWorld),d=l.distanceTo(h)<=this.distance?"in":"out";if(this.stage!==d){let c=d==="in"?this.actionsIn:this.actionsOut;c.Audio.forEach(u=>u.dispatchConditional()),c.Video.forEach(u=>u.dispatchConditional()),c.Transition.forEach(u=>{u.object.currentTransitionEvent!==this&&(u.object.currentTransitionEvent=this),u.init()}),c.Transition.forEach(u=>u.play()),this.stage=d}};let{distance:n,fromObject:a,toObject:o}=t.condition;this.distance=n;for(let l of[a,o]){if(!l)throw new Error("Missing property");let h=r.find(l);if(!h)throw new Error("Missing property");this.objects.push(h)}}connect(){this.objects.forEach(e=>{e.addEventListener("updateMatrix",this.onUpdateMatrix)}),this.onUpdateMatrix()}disconnect(){super.disconnect(),this.stage="out",this.objects.forEach(e=>{e.removeEventListener("updateMatrix",this.onUpdateMatrix)})}},pG=class extends e2{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.onBegin=({target:o,state:l})=>{this.toState!==l&&(this.actionsOut.Audio.forEach(h=>h.dispatchConditional()),this.actionsOut.Video.forEach(h=>h.dispatchConditional()),this.actionsIn.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this,this.actionsOut.Transition.forEach(h=>h.play()))},this.onComplete=({target:o,state:l})=>{this.toState===l&&(this.actionsIn.Audio.forEach(h=>h.dispatchConditional()),this.actionsIn.Video.forEach(h=>h.dispatchConditional()),this.actionsOut.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this,this.actionsIn.Transition.forEach(h=>h.play()))};let{condition:n}=t;if(!n.object)throw new Error("Missing property");let a=r.find(n.object);if(!a)throw new Error("Missing property");if(this.toObject=a,n.state&&!this.toObject.states?.[n.state])throw new Error("Missing property");this.toState=n.state}connect(){(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.addEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.addEventListener("completeState",this.onComplete)}disconnect(){super.disconnect(),(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.removeEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.removeEventListener("completeState",this.onComplete)}},fG=class extends Pn{constructor(e){super(e),this.eventsPerConditions={Comparison:[],Distance:[],State:[]},this.hasVideoAction=!1;let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="Conditional")try{let a;n.condition.type==="Comparison"||(n.condition.type==="Distance"?a=new dG(s,n,r,t,i):n.condition.type==="State"&&(a=new pG(s,n,r,t,i))),a&&(this.eventsPerConditions[n.condition.type].push(a),(a.actionsIn.Video.length||a.actionsOut.Video.length)&&(this.hasVideoAction=!0))}catch{}}})}connect(){super.connect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.connect()))}disconnect(){super.disconnect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.disconnect()))}},qa=new E,gf=new E,vf=new E,Uc=new E,Mb=new mr,Eb=.01,mG={type:"requestRender"},gG=function(){let e=new E,t=new E;return(i,r,s)=>s>0?(e.subVectors(i,r),e.length()<=s?i:t.copy(r).add(e.normalize().multiplyScalar(s))):r}(),Cb=function(){let e=new ve;return(t,i)=>{t.position.copy(i),t.parent!==null&&(e.copy(t.parent.matrixWorld).invert(),t.position.applyMatrix4(e)),e.copy(t.hiddenMatrix).invert(),t.position.applyMatrix4(e),t.updateMatrix(),t.hasNonUniformScale&&(t.updateMatrixWorld(),t.updateMatrixWorldSVD()),t instanceof rr&&vn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),vG=class{constructor(e,t,i){this.data=e,this.object=t,this.tempPosition=new E,this.started=!1,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldPosition0=new E,this.target=e.target?i.find(e.target):void 0,this.maxDelta=e.maxDelta??0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.snapDampingFactor,this.object.getWorldPosition(this.worldPosition0)}},yG=class extends Pn{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(Qe.length>1)){this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="Follow"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new vG(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents||(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.started=!1,i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{tempPosition:t,object:i,maxDelta:r,plane:s}=e;if(i.getWorldPosition(vf),e.isReset)Uc.copy(e.worldPosition0);else if(e.target)e.target.getWorldPosition(Uc);else{let{camera:a,raycaster:o}=this.eventContext;if(s==="custom"?(a.getWorldDirection(gf),gf.negate(),qa.copy(gf)):s==="xy"?qa.set(0,0,1):s==="xz"?qa.set(0,1,0):s==="yz"&&qa.set(1,0,0),Mb.setFromNormalAndCoplanarPoint(qa,vf),!o.ray.intersectPlane(Mb,Uc))return}let n=gG(vf,Uc,r);if(e.currentDampingFactor>1||e.snapComplete===!1){e.started||(e.started=!0,t.copy(n));let a=qa.subVectors(n,t).divideScalar(e.currentDampingFactor);t.add(a),Cb(i,t),e.paused=a.length()<Eb,e.snapComplete=a.length()<Eb*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)}else Cb(i,n),e.paused=!0;e.object?.dispatchEvent({type:"beginEvent",eventName:"Follow"}),i.dispatchEvent(mG)}},Pl=new E,Fc=new E,Vn=new ve,Dl=new ct,Ya=new ct,kc=new E,yf=new E,Ol=new E,jc=new mr,Tb=1e-5,xG={type:"requestRender"},bG={type:"changeRotation"},wG=function(){let e=new ve,t=new E,i=new E,r=new E;return(s,n)=>(n==="x"?(t.set(0,0,1),i.set(0,1,0),r.set(-1,0,0)):n==="y"?(t.set(1,0,0),i.set(0,0,1),r.set(0,-1,0)):(t.set(1,0,0),i.set(0,1,0),r.set(0,0,1)),t.applyMatrix4(s),i.applyMatrix4(s),r.applyMatrix4(s),e.makeBasis(t,i,r))}(),Pb=function(){let e=new ve;return function(t,i){t.parent!==null?e.multiplyMatrices(t.parent.matrixWorld,t.hiddenMatrix):e.copy(t.hiddenMatrix),i.premultiply(CS(e).invert()),t.rotation.setFromRotationMatrix(i),t.updateMatrix(),t instanceof rr&&vn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),_G=class{constructor(e,t,i){this.data=e,this.object=t,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldQuaternion0=new ct,this.target=e.target?i.find(e.target):void 0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.distance=e.distance??0,this.tilt=e.tilt??"up",this.axis=e.axis??"z",this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.dampingFactor,this.object.getWorldQuaternion(this.worldQuaternion0)}},AG=class extends Pn{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(Qe.length>1)){this._lastMouseEvent=i,this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onScroll=i=>{if(this._lastMouseEvent){let r=new PointerEvent("pointermove",{clientX:this._lastMouseEvent.clientX,clientY:this._lastMouseEvent.clientY,bubbles:!0,cancelable:!0,view:window});this.eventContext.eventElement.dispatchEvent(r)}},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="LookAt"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new _G(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents?t.addEventListener("scroll",this.onScroll):(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave),t.removeEventListener("scroll",this.onScroll);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{target:t,tilt:i,axis:r,distance:s,plane:n,object:a}=e,{camera:o,raycaster:l}=this.eventContext;if(a.getWorldPosition(kc),!e.isReset){if(e.target)e.target.getWorldPosition(yf);else if(n==="custom"?(o.getWorldDirection(Fc),Fc.negate(),s>0?jc.set(Fc,-s):jc.setFromNormalAndCoplanarPoint(Fc,kc)):(n==="xy"?Pl.set(0,0,1):n==="xz"?Pl.set(0,1,0):n==="yz"&&Pl.set(1,0,0),jc.setFromNormalAndCoplanarPoint(Pl,kc)),!l.ray.intersectPlane(jc,yf))return}e.isReset||(t?i==="up"?Ol.set(0,1,0):i==="target"&&Ol.copy(t.up).applyMatrix4(Vn.extractRotation(t.matrixWorld)).normalize():n==="custom"?Ol.set(0,1,0):Ol.copy(Pl)),e.isReset?Ya.copy(e.worldQuaternion0):(Vn.lookAt(yf,kc,Ol),Vn.copy(wG(Vn,r)),Ya.setFromRotationMatrix(Vn)),e.currentDampingFactor>1||e.snapComplete===!1?(a.updateWorldMatrix(!0,!1),Dl.setFromRotationMatrix(CS(a.matrixWorld)),Dl.slerp(Ya,1/e.currentDampingFactor),Pb(a,Vn.makeRotationFromQuaternion(Dl)),e.paused=8*(1-Dl.dot(Ya))<Tb,e.snapComplete=8*(1-Dl.dot(Ya))<Tb*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)):(Pb(a,Vn.makeRotationFromQuaternion(Ya)),e.paused=!0),e.object?.dispatchEvent({type:"beginEvent",eventName:"LookAt"}),a.dispatchEvent(xG),a.dispatchEvent(bG)}},SG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.entered=!1,this.actions=Mn(t,t.actions,i,r,s)}disconnect(){En(this.actions)}dispatchEnter(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()))}dispatchLeave(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent())}},MG=class extends Pn{constructor(e){super(e),this.eventsPerObjects={},this.objects=[],this._prevObjects=[],this.onMouseDown=r=>{Qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onMouseUp=r=>{Qe.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=r=>{Qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Od(r);a&&a==="MouseHover"&&(s.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[s.uuid]?.forEach(o=>o.dispatchUserEvent(n)))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(!(!r.visible||!r.data?.events.length)){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="MouseHover")try{let a=new SG(s,n,r,t,i);this.eventsPerObjects[r.uuid]?this.eventsPerObjects[r.uuid].push(a):this.eventsPerObjects[r.uuid]=[a]}catch{}this.eventsPerObjects[r.uuid]?.length&&this.objects.push(r)}})}connect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),e.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(t=>{t.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Li&&(e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerup",this.onMouseUp)),e.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(t=>{t.forEach(i=>{i.disconnect()})}),this.objects.forEach(t=>{t.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(e=!1){let t=[];if(!e){let{stopRaycast:i,raycaster:r,scene:s}=this.eventContext;if(i){let n=Xm(r,s,this.objects);t=qm(n)}else this.objects.forEach(n=>{ed(r,n)&&t.push(n)})}this._prevObjects.length&&this._prevObjects.forEach(i=>{t.includes(i)||(i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchLeave()))}),t.length&&t.forEach(i=>{i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchEnter())}),this._prevObjects=t}},EG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.scrollCounter=0,this.actions=Mn(t,t.actions,i,r,s)}connect(){this.scrollCounter=0}disconnect(){En(this.actions)}dispatch(e){this.actions.Transition.forEach(r=>{r.object.currentTransitionEvent!==this&&(r.object.currentTransitionEvent=this,r.init())});let t=e>0?1:-1;this.scrollCounter+=t,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(r=>r.seek(i))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},CG=class{constructor(e,t,i,r,s,n){this.id=e,this.data=t,this.object=i,this.domElement=n,this.scrollStart=0,this.scrollEnd=0,this.actions=Mn(t,t.actions,i,r,s)}computeScrollBounds(){let e=this.domElement.getBoundingClientRect(),t=document.body,i=document.documentElement,r=window.pageYOffset||i.scrollTop||t.scrollTop,s=i.clientTop||t.clientTop||0,n=Math.round(e.top+r-s);if(this.data.startFrom==="enter"){let a=window.innerHeight,o=e.height,l=this.data.enterAnchor,h=l==="top"?a:l==="bottom"?a-o:a-o*.5;this.scrollStart=n-h}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.dispatch({x:window.scrollX,y:window.scrollY})}connect(){this.computeScrollBounds()}disconnect(){En(this.actions)}handleResize(){this.computeScrollBounds()}dispatch({x:e,y:t}){this.actions.Transition.forEach(s=>{s.object.currentTransitionEvent!==this&&(s.object.currentTransitionEvent=this,s.init())});let i=this.scrollEnd-this.scrollStart,r=Math.min(1,Math.max(0,(t-this.scrollStart)/i));this.actions.Transition.forEach(s=>s.seek(r))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},TG=class extends Pn{constructor(e){super(e),this.wheelEventsPerObject=new Map,this.scrollEventsPerObject=new Map,this.handleResize=()=>{[...this.scrollEventsPerObject.entries()].forEach(([s,n])=>{n.forEach(a=>a.handleResize())})},this.onScroll=s=>{let n={y:window.scrollY,x:window.scrollX};[...this.scrollEventsPerObject.entries()].forEach(([a,o])=>{a.dispatchEvent({type:"beginEvent",eventName:"Scroll",scroll:n}),o.forEach(l=>l.dispatch(n))})},this.onWheel=s=>{s.ctrlKey||[...this.wheelEventsPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:s.deltaY}),a.forEach(o=>o.dispatch(s.deltaY))})},this.onUserEvent=({eventName:s,target:n,reverse:a})=>{if(!s||!n)return;let o=Od(s);o&&o==="Scroll"&&(n.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(n)?.forEach(l=>{l.dispatchUserEvent(a)}))};let{scene:t,sharedAssets:i,domElement:r}=this.eventContext;t.traverseEntity(s=>{if(s.data?.events.length){for(let{id:n,data:a}of s.data.events)if(!a.disabled&&a.type==="Scroll")if(a.trigger==="load"){let o=new EG(n,a,s,t,i);this.wheelEventsPerObject.has(s)?this.wheelEventsPerObject.get(s)?.push(o):this.wheelEventsPerObject.set(s,[o])}else{let o=new CG(n,a,s,t,i,r);this.scrollEventsPerObject.has(s)?this.scrollEventsPerObject.get(s)?.push(o):this.scrollEventsPerObject.set(s,[o])}}})}connect(){[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.wheelEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel)),[...this.scrollEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("scroll"),window.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.handleResize))}disconnect(){window.removeEventListener("wheel",this.onWheel),window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.handleResize),this.domEventsNeeded.clear(),[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)})}},PG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.actions=Mn(t,t.actions,i,r,s)}disconnect(){En(this.actions)}dispatch(){this.actions.Transition.forEach(e=>{e.play()})}dispatchAfter(e){this.actions.Audio.forEach(t=>{(t.interaction.data.triggerAfter??"any")===e&&(t.interaction instanceof uo?t.interaction.audioPlayer.play():t.interaction instanceof Ym&&t.interaction.dispatch())}),this.actions.Video.forEach(t=>{let i=t.interaction.data.triggerAfter??"autoplay";i===e&&(t.interaction instanceof Zl?t.interaction.play(i==="autoplay"):t.interaction instanceof Qm&&t.interaction.dispatch())})}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Audio.forEach(t=>{t.interaction instanceof uo?t.interaction.audioPlayer.play():t.interaction instanceof Ym&&t.interaction.dispatch()}),this.actions.Video.forEach(t=>{t.interaction instanceof Zl?t.interaction.play():t.interaction instanceof Qm&&t.interaction.dispatch()})}},DG=class extends Pn{constructor(e){super(e),this.eventsPerObject=new Map,this.eventsAfterPerObject=new Map,this.onMouseDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("mouseDown")})})},this.onKeyDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("keyDown")})})},this.onAny=()=>{let{domElement:r,isExport:s}=this.eventContext;(s?document:r).removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Start"}),a.forEach(o=>{o.dispatchAfter("any")})})},this.onPlay=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("autoplay")})})},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Od(r);a&&a==="Start"&&(s.dispatchEvent({type:"beginEvent",eventName:"Start"}),this.eventsPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}),this.eventsAfterPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length)for(let{id:s,data:n}of r.data.events){if(n.disabled||n.type!=="Start")continue;let a=new PG(s,n,r,t,i);a.actions.Transition.length&&(this.eventsPerObject.has(r)?this.eventsPerObject.get(r)?.push(a):this.eventsPerObject.set(r,[a])),a.actions.Audio.length&&(this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a])),a.actions.Video.length&&(this.hasVideoAction=!0,this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a]))}})}connect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.addEventListener("pointerdown",this.onMouseDown,{once:!0}),document.addEventListener("keydown",this.onKeyDown,{once:!0}),i.addEventListener("pointerdown",this.onAny),document.addEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.addEventListener("userEvent",this.onUserEvent)}),this.onPlay()}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(i=>i.dispatch()),e.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.removeEventListener("pointerdown",this.onMouseDown),document.removeEventListener("keydown",this.onKeyDown),i.removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.removeEventListener("userEvent",this.onUserEvent),s.forEach(n=>n.disconnect())})}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.removeEventListener("userEvent",this.onUserEvent),t.forEach(i=>i.disconnect())})}},OG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.disabled=!0,this.actions=Mn(t,t.actions,i,r,s),this.target=t.target,this.useToggle=t.toggle}disconnect(){En(this.actions)}dispatch(){this.disabled||(this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.object.dispatchEvent({type:"beginEvent",eventName:"Collision"}),this.useToggle?this.actions.Transition.forEach(e=>{e.toggle()}):this.actions.Transition.forEach(e=>{e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}))}},Bt;vz.then(e=>Bt=e);var Ti=new E,Js=new ct,Hn=new E,xf=new bi(0,0,0,"YXZ"),LG={type:"updateMatrix"},t2={type:"beginEvent",eventName:"Collision"};function IG(e){if(e.scene.environment.usePhysics)return!0;let t=!1;return e.scene.objects.traverse((i,r)=>{for(let s of r.events)if(s.data.disabled!==!0&&s.data.type==="GameControl"&&s.data.collisionEnabled){t=!0;break}}),t}var Db=e=>e.states.some(t=>t.data.position!==void 0||t.data.rotation!==void 0||t.data.hiddenMatrix!==void 0||t.data.cloner!==void 0||t.data.pathSnapping!==void 0),RG=e=>e.events.find(t=>t.data.disabled!==!0&&t.data.type==="Follow"),BG=class{constructor(e,t,i,r,s,n=!1){this.scene=t,this.sharedAssets=s,this.isExport=n,this.orbitControlsNeedsUpdate=!0,this.gameControls=[],this.gameControlStates=[],this.joysticks=[],this.joystickToGameControls=[],this.sharedGameControlGlobals={entitiesWithTransformAnim:[],eventsPerObjects:{},colliderToEntity:{},gamePads:[]},this.needsCollisionDetection=!1,this.initializationCounter=-1,this.rigidBodyToMesh=new Map,this.nActiveRigidBodies=0,this.collisionEvents=[],this.processRigidBody=m=>{if(m.bodyType()!==Bt.RigidBodyType.Dynamic)return;m.isSleeping()||this.nActiveRigidBodies++;let[v,y,b]=this.rigidBodyToMesh.get(m.handle);if(Ti.copy(m.translation()).multiplyScalar(this.pixelsPerMeter),Js.copy(m.rotation()),v.matrixWorld.compose(Ti,Js,y),v.hasNonUniformScale&&v.matrixWorld.multiply(v.shearScale),v.dispatchEvent(LG),b){let x=v.cloner;if(x&&x.objectForSample===void 0){x.matrixWorld.copy(v.matrixWorld);for(let w of x.children)w.updateMatrixWorld(!0)}for(let w of v.children)w.updateMatrixWorld(!0)}},this.handleCollisionEvents=(m,v,y)=>{if(y!==!1)if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[m])){let b=this.sharedGameControlGlobals.colliderToEntity[v],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[v])){let b=this.sharedGameControlGlobals.colliderToEntity[m],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else{let b=this.sharedGameControlGlobals.colliderToEntity[m],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x!==void 0)for(let S of x)S.data.target==="scene"&&this.dispatchCollisionEvent(S,b);let w=this.sharedGameControlGlobals.colliderToEntity[v],A=this.sharedGameControlGlobals.eventsPerObjects[w?.uuid];if(A!==void 0)for(let S of A)S.data.target==="scene"&&this.dispatchCollisionEvent(S,w)}},this.onBeginState=()=>{this.orbitControls&&(this.orbitControls.enabled=!1,this.orbitControlsNeedsUpdate=!1)},this.onCompleteState=({target:m})=>{this.orbitControls&&(this.orbitControls.enabled=!0,this.orbitControls.resetTo(m.getTarget(Ti),m.position,m.zoom,m.isUpVectorFlipped),this.orbitControlsNeedsUpdate=!0)},this.domElement=i.domElement;let a;e.scene.publish.playCamera===null?a=Cd.PERSONAL_CAMERA_ID:a=e.scene.publish.playCamera;let o=this.scene.find(a),l=!1,h,d=5,c=8,u=9,p="drag";if(this.usePhysics=e.scene.environment.usePhysics??Qi.defaultData.usePhysics,this.pixelsPerMeter=e.scene.environment.pixelsPerMeter??Qi.defaultData.pixelsPerMeter,e.scene.objects.data(e.scene.publish.gameControlObject)?.events.forEach(m=>{m.data.disabled!==!0&&m.data.type==="GameControl"&&(h=m.data.keyAssignments,d=m.data.joystickPosLoc,c=m.data.joystickRotLoc,u=m.data.jumpTouchButtonLoc,p=m.data.rotByTouch)}),this.scene.traverseEntity(m=>{m.dataPatched.events.forEach(v=>{if(v.data.disabled||v.data.type!=="GameControl")return;let y=m;for(;(y=y.parent)?.parent!==null;)if(y.dataPatched.physics?.fusedBody)return;v.data.collisionEnabled&&(this.needsCollisionDetection=!0),this.gameControlStates.push([m,v.data])})}),this.usePhysics&&this.initPhysics(e.scene.environment.gravity??Qi.defaultData.gravity),this.gameControlStates.forEach(([m,v])=>{l=l||v.camera===o.uuid||m.uuid===o.uuid;let y=new i2(m,i.domElement,{...v,keyAssignments:h},e.scene.environment,this.sharedGameControlGlobals,m.uuid!==o.uuid&&v.camera===o.uuid,o,this.scene,s);y.addEventListener("change",r),y.addEventListener("end",r),y.addEventListener("start",r),this.gameControls.push(y),Li&&v.touchControl&&(this.joystickToGameControls[d]!==void 0?this.joystickToGameControls[d].push([y,"pos"]):this.joystickToGameControls[d]=[[y,"pos"]],v.moveMode==="walk"&&(this.joystickToGameControls[u]!==void 0?this.joystickToGameControls[u].push([y,"jmp"]):this.joystickToGameControls[u]=[[y,"jmp"]]),p==="joystick"&&(this.joystickToGameControls[c]!==void 0?this.joystickToGameControls[c].push([y,"rot"]):this.joystickToGameControls[c]=[[y,"rot"]]))}),l===!1){let{enableRotate:m,enablePan:v,enableZoom:y,autoRotate:b,hoverRotatePanMode:x}=e.scene.publish.orbitControls;if(m||v||y||b||x!==0){this.orbitControls=new r2(o,i.domElement,this.isExport),console.log("ControlsManager.pre",e),this.orbitControls.addEventListener("change",r),this.orbitControls.addEventListener("end",r),this.orbitControls.addEventListener("start",r),this.orbitControls.fromJSON(e.scene.publish.orbitControls,e.scene.publish.mouseEventTarget),this.orbitControls.useKeyEvents=!1,this.orbitControls.connect(),this.orbitControls.update();let w=this.orbitControls.object;w.addEventListener("beginState",this.onBeginState),w.addEventListener("completeState",this.onCompleteState)}}let f=i.domElement.width/i.getPixelRatio(),g=i.domElement.height/i.getPixelRatio();this.joystickToGameControls.forEach((m,v)=>{let y=document.body.appendChild(document.createElement("div")),[b,x,w]=(e.scene.publish.joystickSizeAndXYOffset??Bo.defaultData.joystickSizeAndXYOffset)[v],A=(f-5*b)/4+b,S={},_=m.some(P=>P[1]==="jmp"),M=_?0:b;v<10?(v<5?S.top=M/2:S.bottom=M/2,S.left=M/2+v%5*A):v===10?(S.left=M/2,S.top=g/2):(S.right=M/2,S.top=g/2),S.top?S.top-=x[1]:S.bottom+=x[1],S.left?S.left+=x[0]:S.right-=x[0];for(let P in S)S[P]+="px";if(_){let P=y.appendChild(document.createElement("div"));Object.assign(P.style,S,{position:"absolute",width:b+"px",height:b+"px",backgroundColor:`rgba(255,255,255,${w==="show"?.4:0})`,zIndex:"9999",borderRadius:b+"px",border:w==="show"?"solid 2px rgba(0, 0, 0, .1)":"none",display:"flex",alignItems:"center",justifyContent:"center",touchAction:"none"});let O=b/16*16*.4;w==="show"&&(P.innerHTML=`
4915
4915
  <svg width="${O}" height="${b*.4}" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
4916
4916
  <path d="M2 10L8 4L14 10" stroke="black" stroke-opacity="40%" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4917
4917
  </svg>
@@ -4911,7 +4911,7 @@ gl_FragColor = vec4(resultColor, vColor.r);
4911
4911
  }
4912
4912
  `,hf=new ti({vertexShader:w8,fragmentShader:_8,uniforms:{depthContrast:{value:1}}}),km=new bh;km.wireframe=!0;var tb=new E,vS=class extends aa{constructor(e,t){super(),this.data=e,this.backupFog=new yw(16777215,.1,2e3),this.fogUseBGColor=!1,this.enableHelpers=!1,this.wireframeState=!1,this.needsTransmissionDirty=!0,this.needsNormalDirty=!0,this._needsTransmission=!1,this._needsNormal=!1,this.geometryCacheChanged=!1,this.bgColor=new ki(1,1,1,1),this.entityByUuid={},this.entityIdentityToEntity={},this.toExpandCloner=new Set,this.toUpdateCloner=new Set,this.pendingCommands=[],this.needsRecomputeInstances=!1,this.ambientLight=new DD(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=u8(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=c8(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),i=this.entityIdentityToEntity[t];i&&(e.uuid=i.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let i=[],r=t;for(;r!==this;){let s=r;r=r.parent;let n=r.children.indexOf(s);i.splice(0,0,n)}return{entity:t,sortKey:i}}getAllSorted(e){let t=[];for(let i of e){let r=this.getWithSortKey(i.id);r!==void 0&&t.push(r)}return t.sort((i,r)=>Wz(i.sortKey,r.sortKey)),t.map(i=>i.entity)}nonExistOrDescendantOf(e,t){let i=this.find(e);if(i===void 0)return!0;for(;i;){if(i.uuid===t)return!0;i=i.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let i=e.parent===null?this:this.find(e.parent);if(i===void 0)throw new Error("unexpected");let r=this.createObject(e.id,e.data,e.children,i,e.localIndex,t);r.updateVisible(),r.resetBBoxNeedsUpdate(),Rs(r)&&vn(r.parent)&&(r.invalidateUpstreamBooleanData(),r.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(r),this.markToExpandCloner(r)}else if(e.path.length===0&&e.type===8){let i=this.find(e.id);if(i===void 0)throw new Error("unexpected");this.markToExpandCloner(i),i.resetBBoxNeedsUpdate(),this.unregisterObject(i);let r=i.parent;this.markNeedsRecomputeInstancesForAncessors(r),this.markNeedsRecomputeInstancesForChildren(i),i.parent.remove(i),vn(i.parent)&&(i.parent.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Rs(i)&&(i.freeBooleanPointer(),r instanceof No&&r.invalidateDownstreamBooleanData().recomputeBoolean()),i instanceof lv&&i.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i)}else if(e.path.length===0&&e.type===9){let i=this.find(e.id);if(i===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(i);let r=i.parent;this.markNeedsRecomputeInstancesForAncessors(r),i.cloner?.resetOnMove(),this.markToExpandCloner(i);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(i),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(i),i.invalidateClonerTransform(i),i.updateVisible(),i.resetBBoxNeedsUpdate();let n=e.localIndex;s.children.splice(n,0,s.children.pop()),Rs(i)&&(i.invalidateUpstreamBooleanData(),vn(i.parent)?i.parent.invalidateDownstreamBooleanData().recomputeBoolean():r instanceof No&&r.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,i,r){if(t.type===0&&(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props)){let{states:n,rest:a}=t.props;t={...t,props:a},this.markNeedsRecomputeInstances()}let s=this.find(e);if(s)try{h8(s,t,i,{scene:this,shared:r}),s instanceof Sr&&s.updateGeometryGroupsIfNeeded()}catch(n){console.error(n)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(tr(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let i=this.find(e.publish.playCamera);i instanceof sr&&this.switchActiveCamera(i)}this.expandInstances(t,!0),this.traverseEntity(i=>{vn(i)&&i.recomputeBoolean()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ct.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ct.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,i,r,s,n,a){e&&e!==r.uuid&&r.find(e)&&s.forInstancesRec(o=>{o.isInstanceRoot||(o.data=Au(o.data,l=>{let h=l.events.data(a.id),d=o.goUp(n);if(d){let c=[...Y_(d.identity),e].join("-"),u=this.entityIdentityToEntity[c];if(u){let p=u.uuid;cs.zoom(h,t)[i]=p}else console.warn("cannot find instance")}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Eo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,i)=>{t.data.events.forEach(r=>{r.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=Au(s.data,n=>{n.events.delete(r.id)}).data)}):r.data.type==="Conditional"?(r.data.condition.type==="Distance"?(this.relativeizeInner(r.data.condition.fromObject,["condition"],"fromObject",e,t,i,r),this.relativeizeInner(r.data.condition.toObject,["condition"],"toObject",e,t,i,r)):r.data.condition.type==="State"?this.relativeizeInner(r.data.condition.object,["condition"],"object",e,t,i,r):r.data.condition.type==="Comparison"&&(r.data.condition.lOperand.type==="Property"&&this.relativeizeInner(r.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,i,r),r.data.condition.rOperand.type==="Property"&&this.relativeizeInner(r.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,i,r)),r.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,i,r)}),r.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,i,r)})):"actions"in r.data&&r.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,i,r)})})}),!0})}expandInstances(e,t){let i=new Set;this.traverseEntity(r=>{if(r instanceof Eo&&r.isInstanceRoot)return r.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||r.resetBBoxNeedsUpdate(),!0});for(let r of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(r),hv(r)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof Eo&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let i=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[i]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[i]),t.dispose()})}clearScene(){for(let e of this.children)Ct.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new sr(vS.PERSONAL_CAMERA_ID,{...Lu.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],i=r=>{for(let s of r.children){let n=s.cloner;Ct.is(s)&&!s.raycastLock&&(s.visible||n?.object.data.visible)&&((Rs(s)||t8(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),m8(s,e,t)),i(s))}};return i(this),t}forEachEntity(e){for(let t of this.children)Ct.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ct.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Hu.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ct.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=tr(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=tr(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=tr(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,t,i){let r=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,r,i),r+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,i,r,s,n){let a={scene:this,shared:n},o=cv(e,t,a);return o&&(this.entityByUuid[e]=o,r.add(o),r.children.splice(s,0,r.children.pop()),i.length>0&&(o.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(i,o,n)),o.updateState(t,a),o instanceof Sr&&o.updateGeometryGroupsIfNeeded(),o.updateVisible(),o.cloner&&this.toExpandCloner.add(o)),o}getCenter(e){let t=[];for(let r=0,s=e.length;r<s;++r){let{id:n,recursive:a}=e[r],o=this.find(n),l=a?o.recursiveBBox:o.singleBBox;t.push(...l.vertices)}let i=new Zt;return i.setFromPoints(t),i.getCenter(tb),tb}copyMatrixWorld(e,t){if(e===null){t.identity();return}let i=this.find(e);i?t.copy(i.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let i=this.find(e)?.parent;i?t.copy(i.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof rr)if(Array.isArray(t.material))for(let i=0;i<t.material.length;i++)t.material[i]instanceof Sn&&e(t.material[i]);else t.material instanceof Sn&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let i,r;e>=t?(i=t/e,r=1):(i=1,r=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(n=>{n.uniforms[`f${n.id}_aspectRatio`].value.x=i,n.uniforms[`f${n.id}_aspectRatio`].value.y=r})})}},Md=vS;Md.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var iu=(e,t)=>{let i=t.x-e.x,r=t.y-e.y;return Math.sqrt(i*i+r*r)},A8=(e,t)=>{let i=t.x-e.x,r=t.y-e.y;return M8(Math.atan2(r,i))},S8=(e,t,i)=>{let r={x:0,y:0};return i=jm(i),r.x=e.x-t*Math.cos(i),r.y=e.y-t*Math.sin(i),r},jm=e=>e*(Math.PI/180),M8=e=>e*(180/Math.PI),E8=e=>isNaN(e.buttons)?e.pressure!==0:e.buttons!==0,cf=new Map,ib=e=>{cf.has(e)&&clearTimeout(cf.get(e)),cf.set(e,setTimeout(e,100))},Ku=(e,t,i)=>{let r=t.split(/[ ,]+/g),s;for(let n=0;n<r.length;n+=1)s=r[n],e.addEventListener?e.addEventListener(s,i,!1):e.attachEvent&&e.attachEvent(s,i)},rb=(e,t,i)=>{let r=t.split(/[ ,]+/g),s;for(let n=0;n<r.length;n+=1)s=r[n],e.removeEventListener?e.removeEventListener(s,i):e.detachEvent&&e.detachEvent(s,i)},yS=e=>(e.preventDefault(),e.type.match(/^touch/)?e.changedTouches:e),sb=()=>{if(typeof window>"u")return;let e=window.pageXOffset!==void 0?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,t=window.pageYOffset!==void 0?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;return{x:e,y:t}},Gm=(e,t)=>{t.top||t.right||t.bottom||t.left?(e.style.top=t.top,e.style.right=t.right,e.style.bottom=t.bottom,e.style.left=t.left):(e.style.left=t.x+"px",e.style.top=t.y+"px")},uv=(e,t,i)=>{let r=xS(e);for(let s in r)if(r.hasOwnProperty(s))if(typeof t=="string")r[s]=t+" "+i;else{let n="";for(let a=0,o=t.length;a<o;a+=1)n+=t[a]+" "+i+", ";r[s]=n.slice(0,-2)}return r},C8=(e,t)=>{let i=xS(e);for(let r in i)i.hasOwnProperty(r)&&(i[r]=t);return i},xS=e=>{let t={};return t[e]="",["webkit","Moz","o"].forEach(function(i){t[i+e.charAt(0).toUpperCase()+e.slice(1)]=""}),t},uf=(e,t)=>{for(let i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},T8=(e,t)=>{let i={};for(let r in e)e.hasOwnProperty(r)&&t.hasOwnProperty(r)?i[r]=t[r]:e.hasOwnProperty(r)&&(i[r]=e[r]);return i},Vm=(e,t)=>{if(e.length)for(let i=0,r=e.length;i<r;i+=1)t(e[i]);else t(e)},P8=(e,t,i)=>({x:Math.min(Math.max(e.x,t.x-i),t.x+i),y:Math.min(Math.max(e.y,t.y-i),t.y+i)});typeof window<"u"&&(bS="ontouchstart"in window,wS=!!window.PointerEvent,_S=!!window.MSPointerEvent);var bS,wS,_S,Cl={touch:{start:"touchstart",move:"touchmove",end:"touchend, touchcancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup, pointercancel"},MSPointer:{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}},co,gh={};wS?co=Cl.pointer:_S?co=Cl.MSPointer:bS?(co=Cl.touch,gh=Cl.mouse):co=Cl.mouse;function wa(){}wa.prototype.on=function(e,t){var i=this,r=e.split(/[ ,]+/g),s;i._handlers_=i._handlers_||{};for(var n=0;n<r.length;n+=1)s=r[n],i._handlers_[s]=i._handlers_[s]||[],i._handlers_[s].push(t);return i};wa.prototype.off=function(e,t){var i=this;return i._handlers_=i._handlers_||{},e===void 0?i._handlers_={}:t===void 0?i._handlers_[e]=null:i._handlers_[e]&&i._handlers_[e].indexOf(t)>=0&&i._handlers_[e].splice(i._handlers_[e].indexOf(t),1),i};wa.prototype.trigger=function(e,t){var i=this,r=e.split(/[ ,]+/g),s;i._handlers_=i._handlers_||{};for(var n=0;n<r.length;n+=1)s=r[n],i._handlers_[s]&&i._handlers_[s].length&&i._handlers_[s].forEach(function(a){a.call(i,{type:s,target:i},t)})};wa.prototype.config=function(e){var t=this;t.options=t.defaults||{},e&&(t.options=T8(t.options,e))};wa.prototype.bindEvt=function(e,t){var i=this;return i._domHandlers_=i._domHandlers_||{},i._domHandlers_[t]=function(){typeof i["on"+t]=="function"?i["on"+t].apply(i,arguments):console.warn('[WARNING] : Missing "on'+t+'" handler.')},Ku(e,co[t],i._domHandlers_[t]),gh[t]&&Ku(e,gh[t],i._domHandlers_[t]),i};wa.prototype.unbindEvt=function(e,t){var i=this;return i._domHandlers_=i._domHandlers_||{},rb(e,co[t],i._domHandlers_[t]),gh[t]&&rb(e,gh[t],i._domHandlers_[t]),delete i._domHandlers_[t],this};var dv=wa;function si(e,t){return this.identifier=t.identifier,this.position=t.position,this.frontPosition=t.frontPosition,this.collection=e,this.defaults={size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:1,mode:"dynamic",zone:document.body,lockX:!1,lockY:!1,shape:"circle"},this.config(t),this.options.mode==="dynamic"&&(this.options.restOpacity=0),this.id=si.id,si.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}si.prototype=new dv;si.constructor=si;si.id=0;si.prototype.buildEl=function(e){return this.ui={},this.options.dataOnly?this:(this.ui.el=document.createElement("div"),this.ui.back=document.createElement("div"),this.ui.front=document.createElement("div"),this.ui.el.className="nipple collection_"+this.collection.id,this.ui.back.className="back",this.ui.front.className="front",this.ui.el.setAttribute("id","nipple_"+this.collection.id+"_"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front),this)};si.prototype.stylize=function(){if(this.options.dataOnly)return this;var e=this.options.fadeTime+"ms",t=C8("borderRadius","50%"),i=uv("transition","opacity",e),r={};return r.el={position:"absolute",opacity:this.options.restOpacity,display:"block",zIndex:999},r.back={position:"absolute",display:"block",width:this.options.size+"px",height:this.options.size+"px",marginLeft:-this.options.size/2+"px",marginTop:-this.options.size/2+"px",background:"rgba(255, 255, 255, .4)",border:"solid 2px rgba(0, 0, 0, .1)"},r.front={width:this.options.size/2+"px",height:this.options.size/2+"px",position:"absolute",display:"block",marginLeft:-this.options.size/4+"px",marginTop:-this.options.size/4+"px",background:"rgba(255, 255, 255, .8)",border:"solid 2px rgba(0, 0, 0, .1)"},uf(r.el,i),this.options.shape==="circle"&&uf(r.back,t),uf(r.front,t),this.applyStyles(r),this};si.prototype.applyStyles=function(e){for(var t in this.ui)if(this.ui.hasOwnProperty(t))for(var i in e[t])this.ui[t].style[i]=e[t][i];return this};si.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)?this:(this.options.zone.appendChild(this.ui.el),this)};si.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)?this:(this.options.zone.removeChild(this.ui.el),this)};si.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger("destroyed",this.instance),this.removeFromDom(),this.off()};si.prototype.show=function(e){var t=this;return t.options.dataOnly||(clearTimeout(t.removeTimeout),clearTimeout(t.showTimeout),clearTimeout(t.restTimeout),t.addToDom(),t.restCallback(),setTimeout(function(){t.ui.el.style.opacity=1},0),t.showTimeout=setTimeout(function(){t.trigger("shown",t.instance),typeof e=="function"&&e.call(this)},t.options.fadeTime)),t};si.prototype.hide=function(e){var t=this;if(t.options.dataOnly)return t;if(t.ui.el.style.opacity=t.options.restOpacity,clearTimeout(t.removeTimeout),clearTimeout(t.showTimeout),clearTimeout(t.restTimeout),t.removeTimeout=setTimeout(function(){var i=t.options.mode==="dynamic"?"none":"block";t.ui.el.style.display=i,typeof e=="function"&&e.call(t),t.trigger("hidden",t.instance)},t.options.fadeTime),t.options.restJoystick){let i=t.options.restJoystick,r={};r.x=i===!0||i.x!==!1?0:t.instance.frontPosition.x,r.y=i===!0||i.y!==!1?0:t.instance.frontPosition.y,t.setPosition(e,r)}return t};si.prototype.setPosition=function(e,t){var i=this;i.frontPosition={x:t.x,y:t.y};var r=i.options.fadeTime+"ms",s={};s.front=uv("transition",["top","left"],r);var n={front:{}};n.front={left:i.frontPosition.x+"px",top:i.frontPosition.y+"px"},i.applyStyles(s),i.applyStyles(n),i.restTimeout=setTimeout(function(){typeof e=="function"&&e.call(i),i.restCallback()},i.options.fadeTime)};si.prototype.restCallback=function(){var e=this,t={};t.front=uv("transition","none",""),e.applyStyles(t),e.trigger("rested",e.instance)};si.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}};si.prototype.computeDirection=function(e){var t=e.angle.radian,i=Math.PI/4,r=Math.PI/2,s,n,a;if(t>i&&t<i*3&&!e.lockX?s="up":t>-i&&t<=i&&!e.lockY?s="left":t>-i*3&&t<=-i&&!e.lockX?s="down":e.lockY||(s="right"),e.lockY||(t>-r&&t<r?n="left":n="right"),e.lockX||(t>0?a="up":a="down"),e.force>this.options.threshold){var o={},l;for(l in this.direction)this.direction.hasOwnProperty(l)&&(o[l]=this.direction[l]);var h={};this.direction={x:n,y:a,angle:s},e.direction=this.direction;for(l in o)o[l]===this.direction[l]&&(h[l]=!0);if(h.x&&h.y&&h.angle)return e;(!h.x||!h.y)&&this.trigger("plain",e),h.x||this.trigger("plain:"+n,e),h.y||this.trigger("plain:"+a,e),h.angle||this.trigger("dir dir:"+s,e)}else this.resetDirection();return e};var D8=si;function Vt(e,t){var i=this;i.nipples=[],i.idles=[],i.actives=[],i.ids=[],i.pressureIntervals={},i.manager=e,i.id=Vt.id,Vt.id+=1,i.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:1,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1,follow:!1},i.config(t),(i.options.mode==="static"||i.options.mode==="semi")&&(i.options.multitouch=!1),i.options.multitouch||(i.options.maxNumberOfNipples=1);let r=getComputedStyle(i.options.zone.parentElement);return r&&r.display==="flex"&&(i.parentIsFlex=!0),i.updateBox(),i.prepareNipples(),i.bindings(),i.begin(),i.nipples}Vt.prototype=new dv;Vt.constructor=Vt;Vt.id=0;Vt.prototype.prepareNipples=function(){var e=this,t=e.nipples;t.on=e.on.bind(e),t.off=e.off.bind(e),t.options=e.options,t.destroy=e.destroy.bind(e),t.ids=e.ids,t.id=e.id,t.processOnMove=e.processOnMove.bind(e),t.processOnEnd=e.processOnEnd.bind(e),t.get=function(i){if(i===void 0)return t[0];for(var r=0,s=t.length;r<s;r+=1)if(t[r].identifier===i)return t[r];return!1}};Vt.prototype.bindings=function(){var e=this;e.bindEvt(e.options.zone,"start"),e.options.zone.style.touchAction="none",e.options.zone.style.msTouchAction="none"};Vt.prototype.begin=function(){var e=this,t=e.options;if(t.mode==="static"){var i=e.createNipple(t.position,e.manager.getIdentifier());i.add(),e.idles.push(i)}};Vt.prototype.createNipple=function(e,t){var i=this,r=i.manager.scroll,s={},n=i.options,a={x:i.parentIsFlex?r.x:r.x+i.box.left,y:i.parentIsFlex?r.y:r.y+i.box.top};if(e.x&&e.y)s={x:e.x-a.x,y:e.y-a.y};else if(e.top||e.right||e.bottom||e.left){var o=document.createElement("DIV");o.style.display="hidden",o.style.top=e.top,o.style.right=e.right,o.style.bottom=e.bottom,o.style.left=e.left,o.style.position="absolute",n.zone.appendChild(o);var l=o.getBoundingClientRect();n.zone.removeChild(o),s=e,e={x:l.left+r.x,y:l.top+r.y}}var h=new D8(i,{color:n.color,size:n.size,threshold:n.threshold,fadeTime:n.fadeTime,dataOnly:n.dataOnly,restJoystick:n.restJoystick,restOpacity:n.restOpacity,mode:n.mode,identifier:t,position:e,zone:n.zone,frontPosition:{x:0,y:0},shape:n.shape});return n.dataOnly||(Gm(h.ui.el,s),Gm(h.ui.front,h.frontPosition)),i.nipples.push(h),i.trigger("added "+h.identifier+":added",h),i.manager.trigger("added "+h.identifier+":added",h),i.bindNipple(h),h};Vt.prototype.updateBox=function(){var e=this;e.box=e.options.zone.getBoundingClientRect()};Vt.prototype.bindNipple=function(e){var t=this,i,r=function(s,n){i=s.type+" "+n.id+":"+s.type,t.trigger(i,n)};e.on("destroyed",t.onDestroyed.bind(t)),e.on("shown hidden rested dir plain",r),e.on("dir:up dir:right dir:down dir:left",r),e.on("plain:up plain:right plain:down plain:left",r)};Vt.prototype.pressureFn=function(e,t,i){var r=this,s=0;clearInterval(r.pressureIntervals[i]),r.pressureIntervals[i]=setInterval(function(){var n=e.force||e.pressure||e.webkitForce||0;n!==s&&(t.trigger("pressure",n),r.trigger("pressure "+t.identifier+":pressure",n),s=n)}.bind(r),100)};Vt.prototype.onstart=function(e){var t=this,i=t.options,r=e;e=yS(e),t.updateBox();var s=function(n){t.actives.length<i.maxNumberOfNipples?t.processOnStart(n):r.type.match(/^touch/)&&(Object.keys(t.manager.ids).forEach(function(a){if(Object.values(r.touches).findIndex(function(l){return l.identifier===a})<0){var o=[e[0]];o.identifier=a,t.processOnEnd(o)}}),t.actives.length<i.maxNumberOfNipples&&t.processOnStart(n))};return Vm(e,s),t.manager.bindDocument(),!1};Vt.prototype.processOnStart=function(e){var t=this,i=t.options,r,s=t.manager.getIdentifier(e),n=e.force||e.pressure||e.webkitForce||0,a={x:e.pageX,y:e.pageY},o=t.getOrCreate(s,a);o.identifier!==s&&t.manager.removeIdentifier(o.identifier),o.identifier=s;var l=function(d){d.trigger("start",d),t.trigger("start "+d.id+":start",d),d.show(),n>0&&t.pressureFn(e,d,d.identifier),t.processOnMove(e)};if((r=t.idles.indexOf(o))>=0&&t.idles.splice(r,1),t.actives.push(o),t.ids.push(o.identifier),i.mode!=="semi")l(o);else{var h=iu(a,o.position);if(h<=i.catchDistance)l(o);else{o.destroy(),t.processOnStart(e);return}}return o};Vt.prototype.getOrCreate=function(e,t){var i=this,r=i.options,s;return/(semi|static)/.test(r.mode)?(s=i.idles[0],s?(i.idles.splice(0,1),s):r.mode==="semi"?i.createNipple(t,e):(console.warn("Coudln't find the needed nipple."),!1)):(s=i.createNipple(t,e),s)};Vt.prototype.processOnMove=function(e){var t=this,i=t.options,r=t.manager.getIdentifier(e),s=t.nipples.get(r),n=t.manager.scroll;if(!E8(e)){this.processOnEnd(e);return}if(!s){console.error("Found zombie joystick with ID "+r),t.manager.removeIdentifier(r);return}if(i.dynamicPage){var a=s.el.getBoundingClientRect();s.position={x:n.x+a.left,y:n.y+a.top}}s.identifier=r;var o=s.options.size/2,l={x:e.pageX,y:e.pageY};i.lockX&&(l.y=s.position.y),i.lockY&&(l.x=s.position.x);var h=iu(l,s.position),d=A8(l,s.position),c=jm(d),u=h/o,p={distance:h,position:l},f,g;if(s.options.shape==="circle"?(f=Math.min(h,o),g=S8(s.position,f,d)):(g=P8(l,s.position,o),f=iu(g,s.position)),i.follow){if(h>o){let b=l.x-g.x,x=l.y-g.y;s.position.x+=b,s.position.y+=x,s.el.style.top=s.position.y-(t.box.top+n.y)+"px",s.el.style.left=s.position.x-(t.box.left+n.x)+"px",h=iu(l,s.position)}}else l=g,h=f;var m=l.x-s.position.x,v=l.y-s.position.y;s.frontPosition={x:m,y:v},i.dataOnly||Gm(s.ui.front,s.frontPosition);var y={identifier:s.identifier,position:l,force:u,pressure:e.force||e.pressure||e.webkitForce||0,distance:h,angle:{radian:c,degree:d},vector:{x:m/o,y:-v/o},raw:p,instance:s,lockX:i.lockX,lockY:i.lockY};y=s.computeDirection(y),y.angle={radian:jm(180-d),degree:180-d},s.trigger("move",y),t.trigger("move "+s.id+":move",y)};Vt.prototype.processOnEnd=function(e){var t=this,i=t.options,r=t.manager.getIdentifier(e),s=t.nipples.get(r),n=t.manager.removeIdentifier(s.identifier);!s||(i.dataOnly||s.hide(function(){i.mode==="dynamic"&&(s.trigger("removed",s),t.trigger("removed "+s.id+":removed",s),t.manager.trigger("removed "+s.id+":removed",s),s.destroy())}),clearInterval(t.pressureIntervals[s.identifier]),s.resetDirection(),s.trigger("end",s),t.trigger("end "+s.id+":end",s),t.ids.indexOf(s.identifier)>=0&&t.ids.splice(t.ids.indexOf(s.identifier),1),t.actives.indexOf(s)>=0&&t.actives.splice(t.actives.indexOf(s),1),/(semi|static)/.test(i.mode)?t.idles.push(s):t.nipples.indexOf(s)>=0&&t.nipples.splice(t.nipples.indexOf(s),1),t.manager.unbindDocument(),/(semi|static)/.test(i.mode)&&(t.manager.ids[n.id]=n.identifier))};Vt.prototype.onDestroyed=function(e,t){var i=this;i.nipples.indexOf(t)>=0&&i.nipples.splice(i.nipples.indexOf(t),1),i.actives.indexOf(t)>=0&&i.actives.splice(i.actives.indexOf(t),1),i.idles.indexOf(t)>=0&&i.idles.splice(i.idles.indexOf(t),1),i.ids.indexOf(t.identifier)>=0&&i.ids.splice(i.ids.indexOf(t.identifier),1),i.manager.removeIdentifier(t.identifier),i.manager.unbindDocument()};Vt.prototype.destroy=function(){var e=this;e.unbindEvt(e.options.zone,"start"),e.nipples.forEach(function(i){i.destroy()});for(var t in e.pressureIntervals)e.pressureIntervals.hasOwnProperty(t)&&clearInterval(e.pressureIntervals[t]);e.trigger("destroyed",e.nipples),e.manager.unbindDocument(),e.off()};var O8=Vt;function hi(e){var t=this;t.ids={},t.index=0,t.collections=[],t.scroll=sb(),t.config(e),t.prepareCollections();var i=function(){var s;t.collections.forEach(function(n){n.forEach(function(a){s=a.el.getBoundingClientRect(),a.position={x:t.scroll.x+s.left,y:t.scroll.y+s.top}})})};if(typeof window>"u")return t.collections;Ku(window,"resize",function(){ib(i)});var r=function(){t.scroll=sb()};return Ku(window,"scroll",function(){ib(r)}),t.collections}hi.prototype=new dv;hi.constructor=hi;hi.prototype.prepareCollections=function(){var e=this;e.collections.create=e.create.bind(e),e.collections.on=e.on.bind(e),e.collections.off=e.off.bind(e),e.collections.destroy=e.destroy.bind(e),e.collections.get=function(t){var i;return e.collections.every(function(r){return i=r.get(t),!i}),i}};hi.prototype.create=function(e){return this.createCollection(e)};hi.prototype.createCollection=function(e){var t=this,i=new O8(t,e);return t.bindCollection(i),t.collections.push(i),i};hi.prototype.bindCollection=function(e){var t=this,i,r=function(s,n){i=s.type+" "+n.id+":"+s.type,t.trigger(i,n)};e.on("destroyed",t.onDestroyed.bind(t)),e.on("shown hidden rested dir plain",r),e.on("dir:up dir:right dir:down dir:left",r),e.on("plain:up plain:right plain:down plain:left",r)};hi.prototype.bindDocument=function(){var e=this;e.binded||(e.bindEvt(document,"move").bindEvt(document,"end"),e.binded=!0)};hi.prototype.unbindDocument=function(e){var t=this;(!Object.keys(t.ids).length||e===!0)&&(t.unbindEvt(document,"move").unbindEvt(document,"end"),t.binded=!1)};hi.prototype.getIdentifier=function(e){var t;return e?(t=e.identifier===void 0?e.pointerId:e.identifier,t===void 0&&(t=this.latest||0)):t=this.index,this.ids[t]===void 0&&(this.ids[t]=this.index,this.index+=1),this.latest=t,this.ids[t]};hi.prototype.removeIdentifier=function(e){var t={};for(var i in this.ids)if(this.ids[i]===e){t.id=i,t.identifier=this.ids[i],delete this.ids[i];break}return t};hi.prototype.onmove=function(e){var t=this;return t.onAny("move",e),!1};hi.prototype.onend=function(e){var t=this;return t.onAny("end",e),!1};hi.prototype.oncancel=function(e){var t=this;return t.onAny("end",e),!1};hi.prototype.onAny=function(e,t){var i=this,r,s="processOn"+e.charAt(0).toUpperCase()+e.slice(1);t=yS(t);var n=function(o,l,h){h.ids.indexOf(l)>=0&&(h[s](o),o._found_=!0)},a=function(o){r=i.getIdentifier(o),Vm(i.collections,n.bind(null,o,r)),o._found_||i.removeIdentifier(r)};return Vm(t,a),!1};hi.prototype.destroy=function(){var e=this;e.unbindDocument(!0),e.ids={},e.index=0,e.collections.forEach(function(t){t.destroy()}),e.off()};hi.prototype.onDestroyed=function(e,t){var i=this;if(i.collections.indexOf(t)<0)return!1;i.collections.splice(i.collections.indexOf(t),1)};var L8=hi,nb=new L8,I8={create:function(e){return nb.create(e)},factory:nb},R8=vh(Zb());function Xa(e,t){let i=new Ve;if(!e.getAttribute("position"))return i.setAttribute("position",new Ce([],3)),i.setIndex([]),i;let{positions:r,triIndices:s}=$g(e.getAttribute("position"),e.getIndex());return i.setAttribute("position",new Ce(r,3)),i.setIndex(s),t&&i.applyMatrix4(t),i}var B8=new ve,N8=new ve,Zr=[[0,0,0],[0,0,0],[0,0,0]];function AS(e){let t=e.elements;Zr[0][0]=t[0],Zr[0][1]=t[4],Zr[0][2]=t[8],Zr[1][0]=t[1],Zr[1][1]=t[5],Zr[1][2]=t[9],Zr[2][0]=t[2],Zr[2][1]=t[6],Zr[2][2]=t[10];let{u:i,v:r}=(0,R8.SVD)(Zr),s=B8.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),n=N8.set(r[0][0],r[0][1],r[0][2],0,r[1][0],r[1][1],r[1][2],0,r[2][0],r[2][1],r[2][2],0,0,0,0,1);return s.multiply(n.transpose())}var z8=class extends Iw{constructor(){super(),this.layers.enable(3),this.layers.enable(8)}setFromCamera(e,t){t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):t.isPerspectiveCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):console.error("Raycaster: Unsupported camera type.")}intersectVisibleObjects(e,t=!0,i=[]){return e.forEach(r=>{r.visible&&this.intersectObject(r,t,i)}),i}createRaycastLineHelper(){let e=new Cn({color:65280,linewidth:10}),t=new E(this.ray.origin.x,this.ray.origin.y,this.ray.origin.z),i=new E(this.ray.direction.x,this.ray.direction.y,this.ray.direction.z),r=this.camera.far-this.camera.near,s=new E().addVectors(t,i.multiplyScalar(r)),n=new Ve;return n.setFromPoints([t,s]),new uu(n,e)}},SS=e=>e instanceof Um||e instanceof Eo;function U8(e,t){return e.distance-t.distance}function MS(e,t,i){if(!(!ln(t)||!t.visible)){Rs(t)&&t.raycast(e,i);for(let r of t.children)MS(e,r,i)}}function Hm(e,t,i){if(!i.some(s=>Ju(e,s)!==void 0))return[];let r=[];return t.children.forEach(s=>MS(e,s,r)),r.sort(U8),r}function Wm(e){let t=[];if(e.length){let i=e[0].object;ln(i)&&t.push(i);let r=i.parent;for(;r;)SS(r)&&t.push(r),r=r.parent}return t}function Ju(e,t){if(Rs(t)){if(t.visible){let i=[];return t.raycast(e,i),i.length?i[0]:void 0}}else if(SS(t))return ES(e,t)}function ES(e,t){if(!(!ln(t)||!t.visible)){if(Rs(t)){let i=[];if(t.raycast(e,i),i.length)return i[0]}for(let i of t.children){let r=ES(e,i);if(r)return r}}}function F8(e,t,i){return{x:(e-(i.left+window.scrollX))/i.width*2-1,y:-((t-(i.top+window.scrollY))/i.height)*2+1}}var k8=class{constructor(e,t,i,r,s,n){this.isExport=n,this.raycaster=new z8,this.raycasterNeedsUpdate=!0,this.stopRaycast=!1,this._useWindowEvents=!1,this.sharedAssets=new _d(ju.emptyData()),this.scene=new Md({...xm.defaultData},this.sharedAssets),this.camera=new sr,this.renderer=e,this._useWindowEvents=t.data.publish.mouseEventTarget==="window",this.domElement=e.domElement,this.eventElement=this._useWindowEvents?window:e.domElement,this.stopRaycast=s,this.sharedAssets=r,this.scene=t,this.camera=i}set useWindowEvents(e){this._useWindowEvents=e,this.eventElement=e?window:this.renderer.domElement}get useWindowEvents(){return this._useWindowEvents}updateRaycaster(e){if(!this.raycasterNeedsUpdate)return;this.raycasterNeedsUpdate=!1;let{pageX:t,pageY:i}=e.touches!==void 0&&e.touches.length>0?e.touches[0]:e,r=this.domElement.getBoundingClientRect();this.raycaster.setFromCamera(F8(t,i,r),this.camera)}},CS=(e=>(e[e.keydown=0]="keydown",e[e.keyup=1]="keyup",e[e.pointerdown=2]="pointerdown",e[e.pointerup=3]="pointerup",e[e.pointermove=4]="pointermove",e[e.wheel=5]="wheel",e[e.scroll=6]="scroll",e))(CS||{}),Pn=class{constructor(e){this.eventContext=e,this.domEventsNeeded=new Set,this.hasVideoAction=!1}connect(){}disconnect(){}},TS=new Map,ql=new Map,uo=class{constructor(e,t,i,r){this.data=t;let{audio:s,volume:n,delay:a,loop:o}=t;if(!s)throw new Error("Missing property");let l=typeof s=="string"?r.getAudio(s).src:s.data;this.audioPlayer=new Fl({src:l,volume:n,delay:a,loop:o}),ql.has(i.uuid)?ql.get(i.uuid).push(this):ql.set(i.uuid,[this]),TS.set(e,this)}playByToggle(){this.data.toggle==="stop"?this.audioPlayer.status==="playing"?this.audioPlayer.stop():(this.audioPlayer.stop(),this.audioPlayer.play()):this.data.toggle==="pause"?this.audioPlayer.status==="playing"?this.audioPlayer.pause():this.audioPlayer.play():(this.audioPlayer.stop(),this.audioPlayer.play())}dispose(){this.audioPlayer.stop()}},Xm=class{constructor(e){this.data=e}dispatch(){this.data.playAudio?this.pauseAudio(this.data.playAudio):this.data.object?this.pauseAllAudiosFromObject(this.data.object):this.pauseAllAudios()}pauseAudio(e){let t=TS.get(e);!t||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.audioPlayer[this.data.interaction](),this.disposeDelay()},this.data.delay)):t.audioPlayer[this.data.interaction]())}pauseAllAudiosFromObject(e){let t=ql.get(e);!t?.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.forEach(i=>i.audioPlayer[this.data.interaction]()),this.disposeDelay()},this.data.delay)):t.forEach(i=>i.audioPlayer[this.data.interaction]()))}pauseAllAudios(){let e=[...ql.values()];!e.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{e.forEach(t=>{t.forEach(i=>{i.audioPlayer[this.data.interaction]()})}),this.disposeDelay()},this.data.delay)):e.forEach(t=>{t.forEach(i=>{i.audioPlayer[this.data.interaction]()})}))}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},po=class{constructor(e,t,i,r){if(this.data=t,t.interaction==="play")this.interaction=new uo(e,t,i,r);else if(t.interaction==="pause"||t.interaction==="stop")this.interaction=new Xm(t);else throw new Error("Missing property")}dispatchBasic(){this.interaction instanceof uo?this.interaction.playByToggle():this.interaction.dispatch()}dispatchConditional(){this.interaction instanceof uo?this.interaction.audioPlayer.play():this.interaction.dispatch()}dispatchGameControl(e){this.interaction instanceof uo&&(e==="start"?this.interaction.audioPlayer.play():this.interaction.audioPlayer.stop())}dispose(){this.interaction.dispose()}};function j8(e,t){let i=e.material.layers.find(r=>r.uuid===t);return i.color.texture.image.img instanceof HTMLVideoElement?i.color.texture.image.img:void 0}var PS=new Map,Yl=new Map,Ql=class{constructor(e,t,i){this.data=t,this.delay=0,this.status="stopped";let{layerId:r,loop:s,volume:n,delay:a}=t;if(this.object=i,r===void 0)throw new Error("Missing property");let o=j8(i,r);if(o)this.videoElement=o,this.videoElement.loop=s===1/0,this.videoElement.autoplay=!0,n!==void 0&&(this.videoElement.volume=n);else throw new Error("Missing property");a!==void 0&&(this.delay=a),Yl.has(i.uuid)?Yl.get(i.uuid).push(this):Yl.set(i.uuid,[this]),PS.set(e,this),this.pause()}mute(){this.videoElement.muted=!0}unMute(){this.videoElement.muted=!1}play(e){let t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);e?(this.mute(),this.delay+=150):t?(this.mute(),window.setTimeout(()=>{this.unMute()},100)):this.unMute(),this.delayTimerId=window.setTimeout(()=>{this.videoElement.play(),this.clearDelay()},this.delay),this.status="playing"}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}pause(){this.videoElement.pause(),this.status="paused"}stop(){this.videoElement.pause(),this.videoElement.currentTime=0,this.status="stopped",this.clearDelay()}playByToggle(){this.data.toggle==="stop"?this.status==="playing"?this.stop():(this.stop(),this.play()):this.data.toggle==="pause"?this.status==="playing"?this.pause():this.play():(this.stop(),this.play())}dispose(){this.stop(),this.videoElement.muted=!0}},qm=class{constructor(e){this.data=e}dispatch(){this.data.playVideo?this.pauseVideo(this.data.playVideo):this.data.object?this.pauseAllVideosFromObject(this.data.object):this.pauseAllVideos()}pauseVideo(e){let t=PS.get(e);!t||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t[this.data.interaction](),this.disposeDelay()},this.data.delay)):t[this.data.interaction]())}pauseAllVideosFromObject(e){let t=Yl.get(e);!t?.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.forEach(i=>i[this.data.interaction]()),this.disposeDelay()},this.data.delay)):t.forEach(i=>i[this.data.interaction]()))}pauseAllVideos(){let e=[...Yl.values()];!e.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{e.forEach(t=>{t.forEach(i=>{i[this.data.interaction]()})}),this.disposeDelay()},this.data.delay)):e.forEach(t=>{t.forEach(i=>{i[this.data.interaction]()})}))}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},$u=class{constructor(e,t,i){if(this.data=t,t.interaction==="play")this.interaction=new Ql(e,t,i);else if(t.interaction==="pause"||t.interaction==="stop")this.interaction=new qm(t);else throw new Error("Missing property")}dispatchBasic(){this.interaction instanceof Ql?this.interaction.playByToggle():this.interaction.dispatch()}dispatchConditional(){this.interaction instanceof Ql?this.interaction.play():this.interaction.dispatch()}dispose(){this.interaction.dispose()}},G8="text/plain",V8="us-ascii",ab=(e,t)=>t.some(i=>i instanceof RegExp?i.test(e):i===e),H8=(e,{stripHash:t})=>{let i=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(e);if(!i)throw new Error(`Invalid URL: ${e}`);let{type:r,data:s,hash:n}=i.groups,a=r.split(";");n=t?"":n;let o=!1;a[a.length-1]==="base64"&&(a.pop(),o=!0);let l=(a.shift()||"").toLowerCase(),h=[...a.map(d=>{let[c,u=""]=d.split("=").map(p=>p.trim());return c==="charset"&&(u=u.toLowerCase(),u===V8)?"":`${c}${u?`=${u}`:""}`}).filter(Boolean)];return o&&h.push("base64"),(h.length>0||l&&l!==G8)&&h.unshift(l),`data:${h.join(";")},${o?s.trim():s}${n?`#${n}`:""}`};function W8(e,t){if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},e=e.trim(),/^data:/i.test(e))return H8(e,t);if(/^view-source:/i.test(e))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let i=e.startsWith("//");!i&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let r=new URL(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&r.protocol==="https:"&&(r.protocol="http:"),t.forceHttps&&r.protocol==="http:"&&(r.protocol="https:"),t.stripAuthentication&&(r.username="",r.password=""),t.stripHash?r.hash="":t.stripTextFragment&&(r.hash=r.hash.replace(/#?:~:text.*?$/i,"")),r.pathname){let n=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,a=0,o="";for(;;){let h=n.exec(r.pathname);if(!h)break;let d=h[0],c=h.index,u=r.pathname.slice(a,c);o+=u.replace(/\/{2,}/g,"/"),o+=d,a=c+d.length}let l=r.pathname.slice(a,r.pathname.length);o+=l.replace(/\/{2,}/g,"/"),r.pathname=o}if(r.pathname)try{r.pathname=decodeURI(r.pathname)}catch{}if(t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let n=r.pathname.split("/"),a=n[n.length-1];ab(a,t.removeDirectoryIndex)&&(n=n.slice(0,-1),r.pathname=n.slice(1).join("/")+"/")}if(r.hostname&&(r.hostname=r.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(r.hostname)&&(r.hostname=r.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let n of[...r.searchParams.keys()])ab(n,t.removeQueryParameters)&&r.searchParams.delete(n);if(t.removeQueryParameters===!0&&(r.search=""),t.sortQueryParameters){r.searchParams.sort();try{r.search=decodeURIComponent(r.search)}catch{}}t.removeTrailingSlash&&(r.pathname=r.pathname.replace(/\/$/,""));let s=e;return e=r.toString(),!t.removeSingleSlash&&r.pathname==="/"&&!s.endsWith("/")&&r.hash===""&&(e=e.replace(/\/$/,"")),(t.removeTrailingSlash||r.pathname==="/")&&r.hash===""&&t.removeSingleSlash&&(e=e.replace(/\/$/,"")),i&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e}var X8=class{constructor({url:e,context:t},i){if(this.managers=i,!e)throw new Error("Missing property");this.url=e.startsWith("mailto:")?e:W8(e,{removeTrailingSlash:!1,removeSingleSlash:!1}),this.context=t??"tab"}dispatch(){ym?window.location.assign(this.url):(this.context==="tab"?window.open(this.url,"_blank"):this.context==="window"?window.open(this.url,"_blank",`width=${window.innerWidth}, height=${window.innerHeight}`):window.open(this.url,"_parent"),this.managers.controlsManager.orbitControls?.onPointerUp(Qe[0]),Xz())}},q8=class{constructor(e,t,i,r){this.scene=t,this.sharedAssets=i,this.sceneData=e,this.managers=r}dispatch(){qS(this.sceneData,this.scene,this.sharedAssets,!0),this.managers.eventManager?.reset(),this.managers.controlsManager.orbitControls?.reset(),this.managers.controlsManager?.gameControls.forEach(e=>e.reset(!0))}},DS={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,timelineChangeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},pv={duration:1e3,delay:0,endDelay:0,startOnceDelay:0,pingPongDelayCorrection:0,easing:"easeOutElastic(1, .5)",round:0},Y8=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],ed={CSS:{},springs:{}};function os(e,t,i){return Math.min(Math.max(e,t),i)}function Zl(e,t){return e.indexOf(t)>-1}function df(e,t){return e.apply(null,t)}var je={arr:function(e){return Array.isArray(e)},obj:function(e){return Zl(Object.prototype.toString.call(e),"Object")},pth:function(e){return je.obj(e)&&e.hasOwnProperty("totalLength")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return!("isNode"in e)&&(e.nodeType||je.svg(e))},str:function(e){return typeof e=="string"},fnc:function(e){return typeof e=="function"},und:function(e){return typeof e>"u"},hex:function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},rgb:function(e){return/^rgb/.test(e)},hsl:function(e){return/^hsl/.test(e)},col:function(e){return je.hex(e)||je.rgb(e)||je.hsl(e)},key:function(e){return!DS.hasOwnProperty(e)&&!pv.hasOwnProperty(e)&&e!=="targets"&&e!=="keyframes"}};function OS(e){var t=/\(([^)]+)\)/.exec(e);return t?t[1].split(",").map(function(i){return parseFloat(i)}):[]}function LS(e,t){var i=OS(e),r=os(je.und(i[0])?1:i[0],.1,100),s=os(je.und(i[1])?100:i[1],.1,100),n=os(je.und(i[2])?10:i[2],.1,100),a=os(je.und(i[3])?0:i[3],.1,100),o=Math.sqrt(s/r),l=n/(2*Math.sqrt(s*r)),h=l<1?o*Math.sqrt(1-l*l):0,d=1,c=l<1?(l*o+-a)/h:-a+o;function u(f){var g=t?t*f/1e3:f;return l<1?g=Math.exp(-g*l*o)*(d*Math.cos(h*g)+c*Math.sin(h*g)):g=(d+c*g)*Math.exp(-g*o),f===0||f===1?f:1-g}function p(){var f=ed.springs[e];if(f)return f;for(var g=1/6,m=0,v=0;;)if(m+=g,u(m)===1){if(v++,v>=16)break}else v=0;var y=m*g*1e3;return ed.springs[e]=y,y}return t?u:p}function Q8(e){return e===void 0&&(e=10),function(t){return Math.ceil(os(t,1e-6,1)*e)*(1/e)}}var Z8=function(){var e=11,t=1/(e-1);function i(d,c){return 1-3*c+3*d}function r(d,c){return 3*c-6*d}function s(d){return 3*d}function n(d,c,u){return((i(c,u)*d+r(c,u))*d+s(c))*d}function a(d,c,u){return 3*i(c,u)*d*d+2*r(c,u)*d+s(c)}function o(d,c,u,p,f){var g,m,v=0;do m=c+(u-c)/2,g=n(m,p,f)-d,g>0?u=m:c=m;while(Math.abs(g)>1e-7&&++v<10);return m}function l(d,c,u,p){for(var f=0;f<4;++f){var g=a(c,u,p);if(g===0)return c;var m=n(c,u,p)-d;c-=m/g}return c}function h(d,c,u,p){if(!(0<=d&&d<=1&&0<=u&&u<=1))return;var f=new Float32Array(e);if(d!==c||u!==p)for(var g=0;g<e;++g)f[g]=n(g*t,d,u);function m(v){for(var y=0,b=1,x=e-1;b!==x&&f[b]<=v;++b)y+=t;--b;var w=(v-f[b])/(f[b+1]-f[b]),A=y+w*t,S=a(A,d,u);return S>=.001?l(v,A,d,u):S===0?A:o(v,y,y+t,d,u)}return function(v){return d===c&&u===p||v===0||v===1?v:n(m(v),c,p)}}return h}(),IS=function(){var e={linear:function(){return function(r){return r}}},t={Sine:function(){return function(r){return 1-Math.cos(r*Math.PI/2)}},Circ:function(){return function(r){return 1-Math.sqrt(1-r*r)}},Back:function(){return function(r){return r*r*(3*r-2)}},Bounce:function(){return function(r){for(var s,n=4;r<((s=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((s*3-2)/22-r,2)}},Elastic:function(r,s){r===void 0&&(r=1),s===void 0&&(s=.5);var n=os(r,1,10),a=os(s,.1,2);return function(o){return o===0||o===1?o:-n*Math.pow(2,10*(o-1))*Math.sin((o-1-a/(Math.PI*2)*Math.asin(1/n))*(Math.PI*2)/a)}}},i=["Quad","Cubic","Quart","Quint","Expo"];return i.forEach(function(r,s){t[r]=function(){return function(n){return Math.pow(n,s+2)}}}),Object.keys(t).forEach(function(r){var s=t[r];e["easeIn"+r]=s,e["easeOut"+r]=function(n,a){return function(o){return 1-s(n,a)(1-o)}},e["easeInOut"+r]=function(n,a){return function(o){return o<.5?s(n,a)(o*2)/2:1-s(n,a)(o*-2+2)/2}}}),e}();function fv(e,t){if(je.fnc(e))return e;var i=e.split("(")[0],r=IS[i],s=OS(e);switch(i){case"spring":return LS(e,t);case"cubicBezier":return df(Z8,s);case"steps":return df(Q8,s);default:return df(r,s)}}function RS(e){try{var t=document.querySelectorAll(e);return t}catch{return}}function Ed(e,t){for(var i=e.length,r=arguments.length>=2?arguments[1]:void 0,s=[],n=0;n<i;n++)if(n in e){var a=e[n];t.call(r,a,n,e)&&s.push(a)}return s}function Cd(e){return e.reduce(function(t,i){return t.concat(je.arr(i)?Cd(i):i)},[])}function ob(e){return je.arr(e)?e:(je.str(e)&&(e=RS(e)||e),e instanceof NodeList||e instanceof HTMLCollection?[].slice.call(e):[e])}function mv(e,t){return e.some(function(i){return i===t})}function gv(e){var t={};for(var i in e)t[i]=e[i];return t}function Ym(e,t){var i=gv(e);for(var r in e)i[r]=t.hasOwnProperty(r)?t[r]:e[r];return i}function Td(e,t){var i=gv(e);for(var r in t)i[r]=je.und(e[r])?t[r]:e[r];return i}function K8(e){var t=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(e);return t?"rgba("+t[1]+",1)":e}function J8(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,i=e.replace(t,function(o,l,h,d){return l+l+h+h+d+d}),r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i),s=parseInt(r[1],16),n=parseInt(r[2],16),a=parseInt(r[3],16);return"rgba("+s+","+n+","+a+",1)"}function $8(e){var t=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(e)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(e),i=parseInt(t[1],10)/360,r=parseInt(t[2],10)/100,s=parseInt(t[3],10)/100,n=t[4]||1;function a(u,p,f){return f<0&&(f+=1),f>1&&(f-=1),f<1/6?u+(p-u)*6*f:f<1/2?p:f<2/3?u+(p-u)*(2/3-f)*6:u}var o,l,h;if(r==0)o=l=h=s;else{var d=s<.5?s*(1+r):s+r-s*r,c=2*s-d;o=a(c,d,i+1/3),l=a(c,d,i),h=a(c,d,i-1/3)}return"rgba("+o*255+","+l*255+","+h*255+","+n+")"}function ej(e){if(je.rgb(e))return K8(e);if(je.hex(e))return J8(e);if(je.hsl(e))return $8(e)}function zs(e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);if(t)return t[1]}function tj(e){if(Zl(e,"translate")||e==="perspective")return"px";if(Zl(e,"rotate")||Zl(e,"skew"))return"deg"}function Qm(e,t){return je.fnc(e)?e(t.target,t.id,t.total):e}function ls(e,t){return e.getAttribute(t)}function vv(e,t,i){var r=zs(t);if(mv([i,"deg","rad","turn"],r))return t;var s=ed.CSS[t+i];if(!je.und(s))return s;var n=100,a=document.createElement(e.tagName),o=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;o.appendChild(a),a.style.position="absolute",a.style.width=n+i;var l=n/a.offsetWidth;o.removeChild(a);var h=l*parseFloat(t);return ed.CSS[t+i]=h,h}function BS(e,t,i){if(t in e.style){var r=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),s=e.style[t]||getComputedStyle(e).getPropertyValue(r)||"0";return i?vv(e,s,i):s}}function yv(e,t){if(je.dom(e)&&!je.inp(e)&&(ls(e,t)||je.svg(e)&&e[t]))return"attribute";if(je.dom(e)&&mv(Y8,t))return"transform";if(je.dom(e)&&t!=="transform"&&BS(e,t))return"css";if(e[t]!=null)return"object"}function NS(e){if(je.dom(e)){for(var t=e.style.transform||"",i=/(\w+)\(([^)]*)\)/g,r=new Map,s;s=i.exec(t);)r.set(s[1],s[2]);return r}}function ij(e,t,i,r){var s=Zl(t,"scale")?1:0+tj(t),n=NS(e).get(t)||s;return i&&(i.transforms.list.set(t,n),i.transforms.last=t),r?vv(e,n,r):n}function xv(e,t,i,r){switch(yv(e,t)){case"transform":return ij(e,t,r,i);case"css":return BS(e,t,i);case"attribute":return ls(e,t);default:return e[t]||0}}function bv(e,t){var i=/^(\*=|\+=|-=)/.exec(e);if(!i)return e;var r=zs(e)||0,s=parseFloat(t),n=parseFloat(e.replace(i[0],""));switch(i[0][0]){case"+":return s+n+r;case"-":return s-n+r;case"*":return s*n+r}}function zS(e,t){if(je.col(e))return ej(e);if(/\s/g.test(e))return e;var i=zs(e),r=i?e.substr(0,e.length-i.length):e;return t?r+t:r}function wv(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function rj(e){return Math.PI*2*ls(e,"r")}function sj(e){return ls(e,"width")*2+ls(e,"height")*2}function nj(e){return wv({x:ls(e,"x1"),y:ls(e,"y1")},{x:ls(e,"x2"),y:ls(e,"y2")})}function US(e){for(var t=e.points,i=0,r,s=0;s<t.numberOfItems;s++){var n=t.getItem(s);s>0&&(i+=wv(r,n)),r=n}return i}function aj(e){var t=e.points;return US(e)+wv(t.getItem(t.numberOfItems-1),t.getItem(0))}function FS(e){if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case"circle":return rj(e);case"rect":return sj(e);case"line":return nj(e);case"polyline":return US(e);case"polygon":return aj(e)}}function oj(e){var t=FS(e);return e.setAttribute("stroke-dasharray",t),t}function lj(e){for(var t=e.parentNode;je.svg(t)&&je.svg(t.parentNode);)t=t.parentNode;return t}function kS(e,t){var i=t||{},r=i.el||lj(e),s=r.getBoundingClientRect(),n=ls(r,"viewBox"),a=s.width,o=s.height,l=i.viewBox||(n?n.split(" "):[0,0,a,o]);return{el:r,viewBox:l,x:l[0]/1,y:l[1]/1,w:a/l[2],h:o/l[3]}}function hj(e,t){var i=je.str(e)?RS(e)[0]:e,r=t||100;return function(s){return{property:s,el:i,svg:kS(i),totalLength:FS(i)*(r/100)}}}function cj(e,t){function i(o){o===void 0&&(o=0);var l=t+o>=1?t+o:0;return e.el.getPointAtLength(l)}var r=kS(e.el,e.svg),s=i(),n=i(-1),a=i(1);switch(e.property){case"x":return(s.x-r.x)*r.w;case"y":return(s.y-r.y)*r.h;case"angle":return Math.atan2(a.y-n.y,a.x-n.x)*180/Math.PI}}function lb(e,t){var i=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=zS(je.pth(e)?e.totalLength:e,t)+"";return{original:r,numbers:r.match(i)?r.match(i).map(Number):[0],strings:je.str(e)||t?r.split(i):[]}}function jS(e){var t=e?Cd(je.arr(e)?e.map(ob):ob(e)):[];return Ed(t,function(i,r,s){return s.indexOf(i)===r})}function GS(e){var t=jS(e);return t.map(function(i,r){return{target:i,id:r,total:t.length,transforms:{list:NS(i)}}})}function uj(e,t){var i=gv(t);if(/^spring/.test(i.easing)&&(i.duration=LS(i.easing)),je.arr(e)){var r=e.length,s=r===2&&!je.obj(e[0]);s?e={value:e}:je.fnc(t.duration)||(i.duration=t.duration/r)}var n=je.arr(e)?e:[e];return n.map(function(a,o){var l=je.obj(a)&&!je.pth(a)?a:{value:a};return je.und(l.delay)&&(l.delay=o?0:t.delay),je.und(l.endDelay)&&(l.endDelay=o===n.length-1?t.endDelay:0),l}).map(function(a){return Td(a,i)})}function dj(e){for(var t=Ed(Cd(e.map(function(n){return Object.keys(n)})),function(n){return je.key(n)}).reduce(function(n,a){return n.indexOf(a)<0&&n.push(a),n},[]),i={},r=function(n){var a=t[n];i[a]=e.map(function(o){var l={};for(var h in o)je.key(h)?h==a&&(l.value=o[h]):l[h]=o[h];return l})},s=0;s<t.length;s++)r(s);return i}function pj(e,t){var i=[],r=t.keyframes;r&&(t=Td(dj(r),t));for(var s in t)je.key(s)&&i.push({name:s,tweens:uj(t[s],e)});return i}function fj(e,t){var i={};for(var r in e){var s=Qm(e[r],t);je.arr(s)&&(s=s.map(function(n){return Qm(n,t)}),s.length===1&&(s=s[0])),i[r]=s}return i.duration=parseFloat(i.duration),i.delay=parseFloat(i.delay),i}function mj(e,t){var i;return e.tweens.map(function(r){var s=fj(r,t),n=s.value,a=je.arr(n)?n[1]:n,o=zs(a),l=xv(t.target,e.name,o,t),h=i?i.to.original:l,d=je.arr(n)?n[0]:h,c=zs(d)||zs(l),u=o||c;return je.und(a)&&(a=h),s.from=lb(d,u),s.to=lb(bv(a,d),u),s.start=i?i.end:0,s.end=s.start+s.delay+s.duration+s.endDelay,s.easing=fv(s.easing,s.duration),s.isPath=je.pth(n),s.isColor=je.col(s.from.original),s.isColor&&(s.round=1),i=s,s})}var VS={css:function(e,t,i){return e.style[t]=i},attribute:function(e,t,i){return e.setAttribute(t,i)},object:function(e,t,i){return e[t]=i},transform:function(e,t,i,r,s){if(r.list.set(t,i),t===r.last||s){var n="";r.list.forEach(function(a,o){n+=o+"("+a+") "}),e.style.transform=n}}};function HS(e,t){var i=GS(e);i.forEach(function(r){for(var s in t){var n=Qm(t[s],r),a=r.target,o=zs(n),l=xv(a,s,o,r),h=o||zs(l),d=bv(zS(n,h),l),c=yv(a,s);VS[c](a,s,d,r.transforms,!0)}})}function gj(e,t){var i=yv(e.target,t.name);if(i){var r=mj(t,e),s=r[r.length-1];return{type:i,property:t.name,animatable:e,tweens:r,duration:s.end,delay:r[0].delay,endDelay:s.endDelay}}}function vj(e,t){return Ed(Cd(e.map(function(i){return t.map(function(r){return gj(i,r)})})),function(i){return!je.und(i)})}function WS(e,t){var i=e.length,r=function(n){return n.timelineOffset?n.timelineOffset:0},s={};return s.duration=i?Math.max.apply(Math,e.map(function(n){let a=n.startOnceDelay??0,o=n.pingPongDelayCorrection??0;return r(n)+a+o+n.duration*(n.loop??1)})):t.duration,s.delay=i?Math.min.apply(Math,e.map(function(n){let a=n.startOnceDelay??0,o=n.pingPongDelayCorrection??0;return r(n)+a+o+n.delay})):t.delay,s.endDelay=i?s.duration-Math.max.apply(Math,e.map(function(n){let a=n.startOnceDelay??0,o=n.pingPongDelayCorrection??0;return r(n)+a+o+n.duration*(n.loop??1)-n.endDelay})):t.endDelay,s}var hb=0;function yj(e){var t=Ym(DS,e),i=Ym(pv,e),r=pj(i,e),s=GS(e.targets),n=vj(s,r),a=WS(n,i),o=hb;return hb++,Td(t,{id:o,children:[],animatables:s,animations:n,duration:a.duration,delay:a.delay,endDelay:a.endDelay,startOnceDelay:i.startOnceDelay,pingPongDelayCorrection:i.pingPongDelayCorrection})}var wr=[],cb=[],ru,xj=function(){function e(){ru=requestAnimationFrame(t)}function t(i){var r=wr.length;if(r){for(var s=0;s<r;){var n=wr[s];n.paused?(wr.splice(s,1),r-=1):(n.tick(i),s++)}e()}else ru=cancelAnimationFrame(ru)}return e}();function bj(e){document.hidden?(wr.forEach(function(t){return t.pause(e.timeStamp)}),cb=wr.slice(0),Gt.running=wr=[]):cb.forEach(function(t){return t.play(e.timeStamp)})}typeof document<"u"&&document.addEventListener("visibilitychange",bj);function Gt(e){e===void 0&&(e={});var t=0,i=0,r=0,s,n,a=0,o=null;function l(x){var w=window.Promise&&new Promise(function(A){return o=A});return x.finished=w,w}var h=yj(e),d=l(h);function c(){var x=h.direction;x!=="alternate"&&(h.direction=x!=="normal"?"normal":"reverse"),h.reversed=!h.reversed,n.forEach(function(w){return w.reversed=h.reversed})}function u(x){return h.reversed?h.duration-x:x}function p(){t=0,i=u(h.currentTime)*(1/Gt.speed)}function f(x,w){w&&(h.reversed?w.seek(w.duration*w.loop-(x-w.timelineOffset-w.pingPongDelayCorrection)):w.seek(x-w.timelineOffset-w.startOnceDelay-w.pingPongDelayCorrection))}function g(x){if(h.reversed)for(var w=a;w--;)f(x,n[w]);else for(var A=0;A<a;A++)f(x,n[A])}function m(x){var w=0,A=h.animations,S=A.length;for(h.reversePlayback===!0&&h.rewind===!1&&(x=h.duration+h.delay-h.endDelay-x);w<S;){var _=A[w],M=_.animatable,C=_.tweens,T=C.length-1,P=C[T];T&&(P=Ed(C,function(ee){return x<ee.end})[0]||P);for(var O=os(x-P.start-P.delay,0,P.duration)/P.duration,D=isNaN(O)?1:P.easing(O),k=P.to.strings,W=P.round,X=[],N=P.to.numbers.length,j=void 0,F=0;F<N;F++){var z=void 0;if(h.reversePlayback===!0&&h.rewind===!1)var V=P.to.numbers[F],B=P.from.numbers[F]||0;else var B=P.to.numbers[F],V=P.from.numbers[F]||0;P.isPath?z=cj(P.value,D*B):z=V+D*(B-V),W&&(P.isColor&&F>2||(z=Math.round(z*W)/W)),X.push(z)}var Q=k.length;if(!Q)j=X[0];else{j=k[0];for(var Y=0;Y<Q;Y++){var U=k[Y],se=k[Y+1],H=X[Y];isNaN(H)||(se?j+=H+se:j+=H+" ")}}VS[_.type](M.target,_.property,j,M.transforms),_.currentValue=j,w++}}function v(x){h[x]&&!h.passThrough&&h[x](h)}function y(){h.remaining&&h.remaining!==!0&&h.remaining--}function b(x){var w=h.duration,A=h.delay,S=w-h.endDelay,_=u(x);if(h.progress=os(_/w*100,0,100),h.reversePlayback=_<h.currentTime,a&&g(_),!h.began&&h.currentTime>=0&&(h.began=!0,v("begin")),!h.loopBegan&&h.currentTime>0&&(h.loopBegan=!0,v("loopBegin")),(h.reversed||_>=0)&&_<=A&&h.currentTime!==0&&(m(0),v("change")),(_>=S&&h.currentTime!==w||!w)&&(m(w),v("change")),_>A&&_<S?(h.changeBegan||(h.changeBegan=!0,h.changeCompleted=!1,v("changeBegin")),m(_),v("change")):h.changeBegan?(h.changeCompleted=!0,h.changeBegan=!1,v("change"),a&&v("timelineChangeComplete")):h.began&&_>S&&v("changeComplete"),h.currentTime=os(_,0,w),h.began&&v("update"),x>=w)if(y(),!h.remaining)h.paused=!0,h.completed||(h.completed=!0,v("loopComplete"),v("complete"),!h.passThrough&&"Promise"in window&&(o(),d=l(h)));else{a?t+=h.duration/Gt.speed:t+=h.duration;for(let M of n)M.setStartTime(0),M.remaining=M.loop;v("loopComplete"),h.loopBegan=!1,h.direction==="alternate"&&c()}}return h.reset=function(){var x=h.direction;h.passThrough=!1,h.currentTime=0,h.progress=0,h.paused=!0,h.began=!1,h.loopBegan=!1,h.changeBegan=!1,h.completed=!1,h.changeCompleted=!1,h.reversePlayback=!1,h.reversed=x==="reverse",h.remaining=h.loop,n=h.children,a=n.length;for(var w=a;w--;)h.children[w].reset();(h.reversed&&h.loop!==!0||x==="alternate"&&h.loop===1)&&h.remaining++,m(h.reversed?h.duration:0)},h.setStartTime=function(x){t=x},h.set=function(x,w){return HS(x,w),h},h.tick=function(x){r=x,t||(t=r),b((r+(i-t))*Gt.speed)},h.seek=function(x){b(x-t)},h.pause=function(x){h.paused=!0,a&&(s=x??performance.now())},h.play=function(x){!h.paused||(h.completed&&h.reset(),h.paused=!1,wr.push(h),a&&s!==void 0&&(t+=(x??performance.now())-s),ru||xj())},h.reverse=function(){c(),h.completed=!h.reversed,p()},h.restart=function(){h.reset(),h.play()},h.reset(),h.autoplay&&h.play(),h}function ub(e,t){for(var i=t.length;i--;)mv(e,t[i].animatable.target)&&t.splice(i,1)}function wj(e){for(var t=jS(e),i=wr.length;i--;){var r=wr[i],s=r.animations,n=r.children;ub(t,s);for(var a=n.length;a--;){var o=n[a],l=o.animations;ub(t,l),!l.length&&!o.children.length&&n.splice(a,1)}!s.length&&!n.length&&r.pause()}}function _j(e,t){t===void 0&&(t={});var i=t.direction||"normal",r=t.easing?fv(t.easing):null,s=t.grid,n=t.axis,a=t.from||0,o=a==="first",l=a==="center",h=a==="last",d=je.arr(e),c=parseFloat(d?e[0]:e),u=d?parseFloat(e[1]):0,p=zs(d?e[1]:e)||0,f=t.start||0+(d?c:0),g=[],m=0;return function(v,y,b){if(o&&(a=0),l&&(a=(b-1)/2),h&&(a=b-1),!g.length){for(var x=0;x<b;x++){if(!s)g.push(Math.abs(a-x));else{var w=l?(s[0]-1)/2:a%s[0],A=l?(s[1]-1)/2:Math.floor(a/s[0]),S=x%s[0],_=Math.floor(x/s[0]),M=w-S,C=A-_,T=Math.sqrt(M*M+C*C);n==="x"&&(T=-M),n==="y"&&(T=-C),g.push(T)}m=Math.max.apply(Math,g)}r&&(g=g.map(function(O){return r(O/m)*m})),i==="reverse"&&(g=g.map(function(O){return n?O<0?O*-1:-O:Math.abs(m-O)}))}var P=d?(u-c)/m:c;return f+P*(Math.round(g[y]*100)/100)+p}}function Aj(e){e===void 0&&(e={});var t=Gt(e);return t.duration=0,t.add=function(i,r){var s=wr.indexOf(t),n=t.children;s>-1&&wr.splice(s,1);function a(u){u.passThrough=!0}for(var o=0;o<n.length;o++)a(n[o]);var l=Td(i,Ym(pv,e));l.targets=l.targets||e.targets;var h=t.duration;l.autoplay=!1,l.timelineOffset=je.und(r)?h:bv(r,h),a(t);var d=Gt(l);a(d),n.push(d);var c=WS(n,e);return t.delay=c.delay,t.endDelay=c.endDelay,t.duration=c.duration,d.loop===!0&&(t.duration=1/0),t.seek(0),t.reset(),t.autoplay&&t.play(),t},t}Gt.version="3.2.0";Gt.speed=1;Gt.running=wr;Gt.remove=wj;Gt.get=xv;Gt.set=HS;Gt.convertPx=vv;Gt.path=hj;Gt.setDashoffset=oj;Gt.stagger=_j;Gt.timeline=Aj;Gt.easing=fv;Gt.penner=IS;Gt.random=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};var Sj=Gt,db=new E,pb=new E,fb=new ct;function Mj(e,t,i,r){if(r===0)return i.copy(e);if(r===1)return i.copy(t);let s=e.w*t.w+e.x*t.x+e.y*t.y+e.z*t.z;if(s>=1)return i.copy(e);let n=1-s*s;if(n<=Number.EPSILON){let d=1-r;return i.w=d*e.w+r*t.w,i.x=d*e.x+r*t.x,i.y=d*e.y+r*t.y,i.z=d*e.z+r*t.z,i.normalize(),i}let a=Math.sqrt(n),o=Math.atan2(a,s),l=Math.sin((1-r)*o)/a,h=Math.sin(r*o)/a;return i.w=e.w*l+t.w*h,i.x=e.x*l+t.x*h,i.y=e.y*l+t.y*h,i.z=e.z*l+t.z*h,i}function Zo(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(a==null)return;let o=n??t[e],l=a;if(o!==l)return{update:h=>{let d=rt.lerp(o,l,h);s?t[e]=Math.trunc(d):t[e]=d},start:()=>{t[e]=o},end:()=>{t[e]=l}}}function XS(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(!a)return;let o=t[e],l=[...n??o],h=[...a];if(!(l.length!==h.length||Rg(l,h)))return{update:d=>{l.forEach((c,u)=>{let p=rt.lerp(c,h[u],d);t[e][u]=s?Math.trunc(p):p})},start:()=>{Object.assign(t[e],l)},end:()=>{Object.assign(t[e],h)}}}function mb(e,t,i,r){let s=i[e]?i[e]:void 0,n=r[e];if(!n)return;let a=t[e],o=s?new E().fromArray(s):a.clone(),l=new E().fromArray(n);if(!o.equals(l))return{update:h=>{a.lerpVectors(o,l,h)},start:()=>{a.copy(o)},end:()=>{a.copy(l)}}}function Ej(e,t,i,r){let s=i[e]?i[e]:void 0,n=r[e];if(!n)return;let a=t[e],o=s?new ve().fromArray(s):a.clone(),l=new E,h=new ct,d=new E;o.decompose(l,h,d);let c=new ve().fromArray(n),u=new E,p=new ct,f=new E;if(c.decompose(u,p,f),!o.equals(c))return{update:g=>{fb.slerpQuaternions(h,p,g),db.lerpVectors(l,u,g),pb.lerpVectors(d,f,g),a.compose(db,fb,pb)},start:()=>{a.compose(l,h,d)},end:()=>{a.compose(u,p,f)}}}function Cj(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(!a)return;let o=t[e],l=n?typeof n=="string"?s.getColor(n).clone():new Ge().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new Ge().setRGB(a.r,a.g,a.b);if(l.equals(h))return;let d=o.clone();return t[e]=d,{update:c=>{d.lerpColors(l,h,c)},start:()=>{d.copy(l)},end:()=>{d.copy(h)}}}function Dn(e,t,i,r){if(typeof t[e]=="number")return Zo(e,t,i??{},r);if(Array.isArray(t[e]))return XS(e,t,i??{},r)}function Tj(e,t,i){let r=[],s=e.cameraType==="OrthographicCamera"?t.orthographic?.zoom:t.perspective?.zoom,n=e.cameraType==="OrthographicCamera"?i.orthographic?.zoom:i.perspective?.zoom;if(n!==void 0){let a=s??e.zoom,o=n;a!==o&&r.push({update:l=>{e.zoom=rt.lerp(a,o,l),e.updateProjectionMatrix()},start:()=>{e.zoom=a,e.updateProjectionMatrix()},end:()=>{e.zoom=o,e.updateProjectionMatrix()}})}if(i.targetOffset!==void 0){let a=Zo("targetOffset",e,t,i);a&&r.push(a)}return r}function Pj(e,t,i,r){if(i.scaleBaked===void 0)return;let s=t.scaleBaked??e.data.geometry.scaleBaked,n=i.scaleBaked;if(la.isEqual(s,n))return;let a=[];return a.push({update:o=>{e.updateGeometryInteractions({scaleBaked:[rt.lerp(s[0],n[0],o),rt.lerp(s[1],n[1],o),rt.lerp(s[2],n[2],o)]},r),e.invalidateDownstreamBooleanData()},start:()=>{e.updateGeometryInteractions({scaleBaked:s},r),e.invalidateDownstreamBooleanData()},end:()=>{e.updateGeometryInteractions({scaleBaked:n},r),e.invalidateDownstreamBooleanData()}}),a}function Dj(e,t,i){if(!i.extrusion)return;let r=e.extrusion,s=t.extrusion??{},n=i.extrusion,a=[];return q_.forEach(o=>{let l=Dn(o,r,s,n);l&&a.push(l)}),a}function Oj(e,t,i,r){let s=[];if(!("geometry"in i))return s;let n=e.geometry.userData.parameters,a="geometry"in t?t.geometry:{},o=i.geometry;if(e instanceof mh){let l=Pj(e,a,o,r);l&&s.push(...l)}else{let l={};if(Object.assign(l,oh(n,O1)),O1.forEach(h=>{let d=Dn(h,l,a,o);d&&s.push(d)}),e instanceof lv){Object.assign(l,{extrusion:{...n.extrusion}});let h=Dj(l,a,o);h&&s.push(...h)}s.length&&s.push({update:h=>{e.updateGeometryInteractions(l,r),e.updateGeometryGroupsIfNeeded()},start:h=>{e.updateGeometryInteractions(l,r),e.updateGeometryGroupsIfNeeded()},end:h=>{e.updateGeometryInteractions(l,r),e.updateGeometryGroupsIfNeeded()}})}return s}function Lj(e,t,i,r){let s=[];if(i.intensity!==void 0){let n=Zo("intensity",e,t,i);n&&s.push(n)}if(i.color!==void 0){let n=Cj("color",e,t,i,r);n&&s.push(n)}return s}function Ij(e,t,i,r){let s=[];if(Array.isArray(e.material)){if(!("materials"in i&&i.materials))return s;let n="materials"in t&&t.materials?t.materials:[],a=i.materials;e.material.forEach((o,l)=>{if(!a[l])return;let h=n[l]??{},d=a[l];typeof h=="string"||typeof d=="string"||s.push(...gb(o,h,d,r))})}else{if(!("material"in i&&i.material))return s;let n="material"in t&&t.material?t.material:{},a=i.material;if(typeof n=="string"||typeof a=="string")return s;s.push(...gb(e.material,n,a,r))}return s}function gb(e,t,i,r){let s=[];e.transparent=Yu(i,r)||!!t.layers&&Yu(t,r);for(let n of e.layers){let a=t.layers?.data(n.uuid),o=i.layers.data(n.uuid);if(!o||!(n.visible??!0)||!(o.visible??!0))continue;let l=n.getNames().filter(h=>!H_.some(d=>h.includes(d)));for(let h of l)try{let d=n.getValue(h),c;if(h==="colors")c=kj(n,a,o,h);else if(Array.isArray(d))h==="steps"&&(c=Fj(n,a,o,h));else if(typeof d=="number")c=Rj(n,a,o,h);else{if(typeof d=="boolean")continue;d instanceof G?c=Bj(n,a,o,h):d instanceof E?c=Nj(n,a,o,h):d instanceof ki?c=Uj(n,a,o,h,r):d instanceof Ge?c=zj(n,a,o,h,r):"isTexture"in d&&(c=jj(n,a,o,h))}c&&(Array.isArray(c)?s.push(...c):s.push(c))}catch(d){console.error(`lerpMaterial: unexpected material layer for ${h}`,d)}}return s}function Rj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=t?t[r]:e.getValue(r),n=i[r];if(s!==n)return{update:a=>{e.setValue(r,rt.lerp(s,n,a))},start:()=>{e.setValue(r,s)},end:()=>{e.setValue(r,n)}}}function Bj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=e.getValue(r),n=t?new G().fromArray(t[r]):s.clone(),a=new G().fromArray(i[r]);if(!n.equals(a))return{update:o=>{s.lerpVectors(n,a,o)},start:()=>{s.copy(n)},end:()=>{s.copy(a)}}}function Nj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=e.getValue(r),n=t?new E().fromArray(t[r]):s.clone(),a=new E().fromArray(i[r]);if(!n.equals(a))return{update:o=>{s.lerpVectors(n,a,o)},start:()=>{s.copy(n)},end:()=>{s.copy(a)}}}function zj(e,t,i,r,s){if(!e.hasValue(r)||!(r in i))return;let n=t?t[r]:void 0,a=i[r],o=e.getValue(r),l=n?typeof n=="string"?s.getColor(n).clone():new Ge().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new Ge().setRGB(a.r,a.g,a.b);if(l.equals(h))return;let d=o.clone();return e.setValue(r,d),{update:c=>{d.lerpColors(l,h,c)},start:()=>{d.copy(l)},end:()=>{d.copy(h)}}}function Uj(e,t,i,r,s){if(!e.hasValue(r)||!(r in i))return;let n=t?t[r]:void 0,a=i[r],o=e.getValue(r),l=n?typeof n=="string"?s.getColor(n).clone():new Ge().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new ki(a.r,a.g,a.b,a.a);if(l.equals(h))return;let d=o.clone();return e.setValue(r,d),{update:c=>{d.lerpColors(l,h,c)},start:()=>{d.copy(l)},end:()=>{d.copy(h)}}}function Fj(e,t,i,r="steps"){if(!e.hasValue(r)||!(r in i))return;let s=[],n=e.getValue(r),a=t?t[r]:n,o=i[r];for(let l=0;l<n.length;++l){let h=a[l],d=o[l];h!==d&&s.push({update:c=>{n[l]=rt.lerp(h,d,c)},start:()=>{n[l]=h},end:()=>{n[l]=d}})}return s.length?s:void 0}function kj(e,t,i,r="colors"){if(!e.hasValue(r)||!(r in i))return;let s=[],n=e.getValue(r),a=t?t[r]:n.map(l=>l.toArray()),o=i[r];for(let l=0;l<n.length;++l){let h=[...a[l]],d=[...o[l]];Cu.isEqual(h,d)||s.push({update:c=>{n[l].fromArray(Cu.lerp(h,d,c))},start:()=>{n[l].fromArray(h)},end:()=>{n[l].fromArray(d)}})}return s.length?s:void 0}function jj(e,t,i,r="texture"){if(!e.hasValue(r)||!(r in i))return;let s=e.getNode("mat");if(!s)return;let n=t?t[r]:s,a=i[r],o=[...n.repeat],l=[...n.offset],h=[...a.repeat],d=[...a.offset];if(!ao.isEqual(o,h)||!ao.isEqual(l,d))return{update:c=>{s.repeat=ao.lerp(o,h,c),s.offset=ao.lerp(l,d,c),s.updateMatrix()},start:()=>{s.repeat=[...o],s.offset=[...l],s.updateMatrix()},end:()=>{s.repeat=[...h],s.offset=[...d],s.updateMatrix()}}}var pf=new E,vb=new bi;function Gj(e,t,i,r){let s=[],n=mb("position",e,t,i);n&&s.push(n);let a=mb("scale",e,t,i);a&&s.push(a);let o=Vj(e,t,i,r);o&&s.push(o);let l=Ej("hiddenMatrix",e,t,i);l&&s.push(l);let h={slide:(t.pathSnapping??e.dataPatched.pathSnapping).slide},d=Zo("slide",h,t.pathSnapping??e.dataPatched.pathSnapping,i.pathSnapping??e.dataPatched.pathSnapping);if(d&&s.push(d),n||a||o||l||d){let c=()=>{e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD()),e.parent?.matrixWorldFusedFalse&&(e.matrixWorld.multiplyMatrices(e.parent.matrixWorldFusedFalse,e.matrix),e.matrixWorldNeedsUpdate=!1),Rs(e)&&vn(e.parent)&&e.invalidateDownstreamBooleanData(!0),e.updatePathSnappingSlide(Object.assign({},t.pathSnapping,h))};s.push({update:c,start:c,end:c})}return s}function Vj(e,t,i,r){let s=t?.rotation?t.rotation:void 0,n=i.rotation;if(!n)return;let a=s?new E().fromArray(s):new E().setFromEuler(e.rotation),o=new E().fromArray(n);if(a.equals(o))return;let l=pf.subVectors(o,a);if(r&&l.toArray().every(h=>Math.abs(h)<2*Math.PI)){let h=new ct().setFromEuler(vb.setFromVector3(a)),d=new ct().setFromEuler(vb.setFromVector3(o));return{update:c=>{Mj(h,d,e.quaternion,c),c===1&&e instanceof sr&&(e.updateUp(),e.isUpVectorFlipped=!1)},start:()=>{e.rotation.setFromVector3(a)},end:()=>{e.rotation.setFromVector3(o)}}}else return{update:h=>{pf.lerpVectors(a,o,h),e.rotation.setFromVector3(pf),h===1&&e instanceof sr&&(e.updateUp(),e.isUpVectorFlipped=!1)},start:()=>{e.rotation.setFromVector3(a)},end:()=>{e.rotation.setFromVector3(o)}}}function Hj(e,t,i){let r=[];if(!("cloner"in i)||!e.cloner)return r;let s=e.cloner,n="cloner"in t?t.cloner:{},a=i.cloner;U_.forEach(u=>{let p;u==="count"?p=Zo("count",s.parameters,n,a,!0):p=Dn(u,s.parameters,n??{},a),p&&r.push(p)});let o=Wj(s,n,a);o?.length&&r.push(...o);let l=Xj(s,n,a);l?.length&&r.push(...l);let h=qj(s,n,a);h?.length&&r.push(...h);let d=Yj(s,n,a);d?.length&&r.push(...d);let c=Qj(s,n,a);return c?.length&&r.push(...c),r.length&&r.push({update:()=>{s.update()}}),r}function Wj(e,t,i){if(e.parameters.type!=="radial")return;let r=t.radial,s=i.radial;if(!s)return;let n=e.parameters.radial,a=[];return F_.forEach(o=>{let l=Dn(o,n,r??{},s);l&&a.push(l)}),a}function Xj(e,t,i){if(e.parameters.type!=="linear")return;let r=t.linear,s=i.linear;if(!s)return;let n=[],a=e.parameters.linear;return k_.forEach(o=>{let l=Dn(o,a,r??{},s);l&&n.push(l)}),n}function qj(e,t,i){if(e.parameters.type!=="grid")return;let r=t.grid,s=i.grid;if(!s)return;let n=[],a=e.parameters.grid;return j_.forEach(o=>{let l;o==="count"?l=XS(o,a,r??{},s,!0):l=Dn(o,a,r??{},s),l&&n.push(l)}),n}function Yj(e,t,i){if(e.parameters.type!=="toObject")return;let r=t.toObject,s=i.toObject;if(!s)return;let n=[],a=e.parameters.toObject;return G_.forEach(o=>{let l;o==="count"?l=Zo(o,a,r??{},s,!0):l=Dn(o,a,r??{},s),l&&n.push(l)}),n}function Qj(e,t,i){if(!e.parameters.randomness)return;let r=t.randomnessObject,s=i.randomnessObject;if(!s)return;let n=[],a=e.parameters.randomnessObject;return V_.forEach(o=>{let l=Dn(o,a,r??{},s);l&&n.push(l)}),n}function yb(e,t,i,r,s){let n=[];return e.data.visible&&n.push(...Gj(e,t,i,s)),e.data.visible&&n.push(...Hj(e,t,i)),Rs(e)?(e instanceof Sr&&e.data.visible&&n.push(...Oj(e,t,i,r)),e.data.visible&&n.push(...Ij(e,t,i,r))):e8(e)?e.data.visible&&n.push(...Lj(e,t,i,r)):$k(e)&&n.push(...Tj(e,t,i)),n.length?{update:a=>{n.forEach(o=>o.update(a))},start:a=>{n.forEach(o=>o.start?.(a))},end:a=>{n.forEach(o=>o.end?.(a))}}:void 0}var xb=new E;function qS(e,t,i,r=!1){let s=[];t.traverseObject(n=>{if(r&&(n.rigidBody?.setTranslation(n.position0,!0),n.rigidBody?.setRotation(n.rotation0,!0),n.rigidBody?.setLinvel(xb,!0),n.rigidBody?.setAngvel(xb,!0)),!Ct.is(n))return;let a=n.uuid,o=n.data;if(delete n.states,!o.states)return;let l=!1;s.some(h=>e.objects.isDescendantOf(a,h))?l=!0:o.physics?.fusedBody===!0&&o.physics.rigidBody==="dynamic"&&s.push(a),n.data=o,n.currentState=null,n.reversibleToState=null,n.currentTransitionEvent=null;for(let h of o.states)e.environment.usePhysics===!0&&o.physics&&(o.physics.rigidBody==="dynamic"||l)&&(h.data.position!==void 0||h.data.rotation!==void 0||h.data.hiddenMatrix!==void 0)||(n.states||(n.states={}),n.states[h.id]=ea.patch(o,h.data));Zj(t,n,null,i,o.events.find(h=>h.data.type==="Follow"||h.data.type==="LookAt")!==void 0)})}function Zj(e,t,i,r,s=!1){t instanceof Sr&&t.removeInteractionGeometry(),t.changeSelectedState(i,{scene:e,shared:r},s),t instanceof Sr&&t.updateGeometryGroupsIfNeeded()}function Kj(e){let t;switch(e.easing){case 0:t="cubicBezier( 0, 0, 1, 1 )";break;case 1:t="cubicBezier( .25, .1, .25, 1 )";break;case 2:t="cubicBezier( .42, 0, 1, 1 )";break;case 3:t="cubicBezier( 0, 0, .58, 1 )";break;case 4:t="cubicBezier( .42, 0, .58, 1 )";break;case 5:let{control1:i,control2:r}=e;t=`cubicBezier(
4913
4913
  ${i[0]}, ${i[1]}, ${r[0]}, ${r[1]}
4914
- )`;break;case 6:let{mass:s,stiffness:n,damping:a,velocity:o}=e;t=`spring( ${s}, ${n}, ${a}, ${o} )`;break;default:t="linear"}return{duration:e.duration,easing:t}}function YS(e){let t={delay:0,loop:e.repeat===-1?!0:e.repeat+1};if(e.repeat===0)t.direction="normal",t.rewind=e.direction==="pingpong-rewind";else switch(e.direction){case"pingpong":t.direction="alternate",t.rewind=!1;break;case"pingpong-rewind":t.direction="alternate",t.rewind=!0;break;default:t.direction="normal",t.rewind=!1;break}switch(t.delay=0,t.endDelay=0,t.startOnceDelay=0,t.pingPongDelayCorrection=0,e.delayDirection){case"start-once":t.startOnceDelay=e.delay;break;case"start":t.delay=e.delay;break;case"end":t.endDelay=e.delay;break;case"start-end":case void 0:t.delay=e.delay,t.endDelay=e.delay;break}return t.direction==="alternate"&&(t.delay/=2,t.endDelay/=2,t.delay!==0&&(t.pingPongDelayCorrection=t.delay)),t}var bb=class{constructor(e,t,i,r,s,n){if(this.object=e,this.data=r,this.sharedAssets=s,this.allowSlerp=n,this.targets={t:0},this.firstLoop=!0,this._changeBegan=!1,this._changeCompleted=!0,this.onChange=()=>{this.callback&&(this.callback.update(this.targets.t),this.object.dispatchEvent({type:"requestRender"})),this.targets.t===0||this.targets.t===1?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):(this._changeCompleted&&(this._changeCompleted=!1),this._changeBegan||(this._changeBegan=!0,this.onChangeBegin()))},this.onChangeBegin=()=>{this.object.reversibleToState=this.to.id;let a=this.targets.t>.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=a,this.object.dispatchEvent({type:"beginState",state:a})},this.onChangeComplete=()=>{this.firstLoop&&(this.onFirstLoop(),this.firstLoop=!1),this.object.reversibleToState=this.to.id;let a=this.targets.t<.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=a,this.object.dispatchEvent({type:"completeState",state:a})},this.onFirstLoop=()=>{this.useCurrentState&&(this.callback=yb(this.object,this.from.data,this.to.data,this.sharedAssets,this.allowSlerp))},t===void 0){let a=su(this.object,this.object.currentState===i?this.object.prevState:this.object.currentState);if(!a)throw new Error("Missing property");this.from=a}else{let a=su(this.object,t);if(!a)throw new Error("Missing property");this.from=a}if(i===void 0)throw new Error("Missing property");{let a=su(this.object,i);if(!a)throw new Error("Missing property");this.to=a}this.useCurrentState=t===void 0||i===void 0,this.params={targets:this.targets,t:1,autoplay:!1,...YS(r),...Kj(r),change:this.onChange},this.callback=yb(this.object,t===void 0?{}:this.from.data,i===void 0?{}:this.to.data,this.sharedAssets,this.allowSlerp)}get changeBegan(){return this._changeBegan}get changeCompleted(){return this._changeCompleted}},fo=class extends ji{constructor(e,t,i){if(super(),this.data=e,this.scene=t,this.sharedAssets=i,this.toggleIsForward=!1,this.timelineNeedsRebuild=!1,this.useToggle=!1,this.onTimelineChangeComplete=()=>{this.data.tweens[0].data.direction!=="normal"&&(this.toggleIsForward=!this.toggleIsForward),this.timelineNeedsRebuild!==!1&&(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward,isRebuild:!0}),this.timeline.play())},!e.object)throw new Error("Missing property");let r=t.find(e.object);if(!r)throw new Error("Missing property");if(!r.states)throw new Error("Missing property");if(this.object=r,e.tweens.length<2)throw new Error("Missing property");this.tweens=Array(this.data.tweens.length-1),this.startOnceDelay=e.tweens[0].data.delayDirection==="start-once"?e.tweens[0].data.delay:0,this.init()}get playing(){return this.tweens.some(e=>e.changeBegan)??!1}init(){this.initialCurrentState=su(this.object,this.object.currentState).id,this.toggleIsForward=!1}get currentState(){return this.useToggle?this.initialCurrentState:this.object.currentState}buildTimeline({isForward:e=!0,isRebuild:t=!1}={}){try{let i=YS(this.data.tweens[0].data),r=i.loop;t&&typeof i.loop=="number"&&i.loop--,this.timeline?.pause(),this.timeline=Sj.timeline({autoplay:!1,...i,...r===!0||r>1?{timelineChangeComplete:this.onTimelineChangeComplete}:{}});let s=this.tweens.findIndex(n=>n?.changeBegan);if(this.timelineNeedsRebuild=s!==-1&&(r===!0||r>1),i.pingPongDelayCorrection&&t===!1&&(this.timelineNeedsRebuild=!0),e){let n=s===-1?0:s;for(let a=n;a<this.data.tweens.length-1;a++){let o=this.data.tweens[a],l=this.data.tweens[a+1],h;a===n&&(this.object.wasMovedByUser===!0||this.object.previousAction?.playing===!0)?(h=void 0,this.object instanceof sr&&(this.object.wasMovedByUser=!1)):h=o.data.state===void 0?this.currentState:o.data.state;let d=new bb(this.object,h,l.data.state===void 0?this.currentState:l.data.state,l.data,this.sharedAssets,this.data.allowSlerp??!1);s!==-1&&a===n&&Object.assign(d.params,{startOnceDelay:0}),this.tweens[a]=d,this.timeline.add(d.params,this.timeline.duration+(a===n?i.delay:0)+(a===n&&!t?i.pingPongDelayCorrection:0))}this.timeline.duration+=i.endDelay}else{let n=s===-1?this.data.tweens.length-1:s+1;for(let a=n;a>0;a--){let o=this.data.tweens[a],l=this.data.tweens[a-1],h;a===n&&(this.object.wasMovedByUser===!0||this.object.previousAction?.playing===!0)?(h=void 0,this.object instanceof sr&&(this.object.wasMovedByUser=!1)):h=o.data.state===void 0?this.currentState:o.data.state;let d=new bb(this.object,h,l.data.state===void 0?this.currentState:l.data.state,o.data,this.sharedAssets,this.data.allowSlerp??!1);s!==-1&&a===n&&Object.assign(d.params,{startOnceDelay:0}),this.tweens[a-1]=d,this.timeline.add(d.params,this.timeline.duration+(a===n?i.endDelay:0))}this.timeline.duration+=i.delay+(t?0:i.pingPongDelayCorrection)}}catch(i){i instanceof Error&&console.error(i.message)}this.object.previousAction?.playing===!0&&this.object.previousAction.pause(),this.object.previousAction=this}play(){if(this.playing)return!1;clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{try{this.buildTimeline(),this.timeline.play()}catch(e){e instanceof Error&&console.error(e.message)}},this.startOnceDelay)}pause(){this.timeline?.pause(),clearTimeout(this.timeoutId),this.tweens=Array(this.data.tweens.length-1),delete this.timeoutId}stop(){this.pause(),this.object.changeSelectedState(this.data.tweens[0].data.state===void 0?this.initialCurrentState:this.data.tweens[0].data.state,{scene:this.scene,shared:this.sharedAssets})}seek(e){this.timeline===void 0&&this.buildTimeline(),this.timeline?.seek(e*this.timeline.duration)}toggle(e){this.useToggle=!0,clearTimeout(this.timeoutId),this.toggleIsForward=e??!this.toggleIsForward,this.playing?(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()):this.timeoutId=window.setTimeout(()=>{this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()},this.startOnceDelay)}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause()}};function su(e,t){let i,r;if(typeof t=="string"?(i=t,r=e.states?.[i]):t===null&&(i=null,r=e.data),!(i===void 0||r===void 0))return{id:i,data:r}}function Mn(e,t,i,r,s,n){let a={Audio:[],Video:[],Link:[],Reset:[],Transition:[]};return t.forEach(({id:o,data:l})=>{try{l.type==="Audio"?fl[e.type].includes("Audio")&&a.Audio.push(new po(o,l,i,s)):l.type==="Video"?fl[e.type].includes("Video")&&a.Video.push(new $u(o,l,i)):l.type==="Link"?fl[e.type].includes("Link")&&a.Link.push(new X8(l,n)):l.type==="Reset"?fl[e.type].includes("Reset")&&a.Reset.push(new q8(r.data,r,s,n)):l.type==="Transition"&&fl[e.type].includes("Transition")&&a.Transition.push(new fo(l,r,s))}catch{}}),a}function En(e){Object.values(e).forEach(t=>{t.forEach(i=>{(i instanceof po||i instanceof $u||i instanceof fo)&&i.dispose()})})}var _v=[["start","Start"],["keyDown","KeyDown"],["keyUp","KeyUp"],["mouseDown","MouseDown"],["mouseUp","MouseUp"],["mouseHover","MouseHover"],["collision","Collision"],["lookAt","LookAt"],["follow","Follow"],["scroll","Scroll"]],QS=e=>_v.find(([t,i])=>i===e)?.[0],Pd=e=>_v.find(([t])=>t===e)?.[1],Jj=(e,t)=>{let i=QS(e);if(i){let r=new CustomEvent(i,{bubbles:!0});return Object.defineProperty(r,"target",{writable:!1,value:t}),r}},$j=class extends Pn{constructor(e){super(e),this.objectsPerEvents=new Map,this.splineEvents={},this.onBeginEvent=i=>{if(!i.eventName||!i.target||i.eventName==="Scroll")return;let r=this.splineEvents[QS(i.eventName)]?.[i.target.uuid];if(!r)return;i.eventName==="Scroll"&&i.deltaY!==void 0&&Object.assign(r,{deltaY:i.deltaY});let{domElement:s}=this.eventContext;s.dispatchEvent(r)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{if(i.data?.events.length){for(let[r,s]of _v)if(i.data.events.some(n=>n.data.type===s&&!n.data.disabled)){this.objectsPerEvents.has(r)?this.objectsPerEvents.get(r)?.push(i):this.objectsPerEvents.set(r,[i]);let n={id:i.uuid,name:i.name},a=Jj(s,n),o=this.splineEvents[r];o?o[i.uuid]=a:this.splineEvents[r]={[i.uuid]:a}}}})}connect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.addEventListener("beginEvent",this.onBeginEvent)})})}disconnect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.removeEventListener("beginEvent",this.onBeginEvent)})})}},eG=class{constructor(e,t,i,r,s,n){if(this.id=e,this.data=t,this.object=i,this.entered=!1,this.useToggle=t.toggle,(t.type==="KeyDown"||t.type==="KeyUp"||t.type==="KeyPress")&&!t.key)throw new Error("Missing property");this.actions=Mn(t,t.actions,i,r,s,n)}disconnect(){En(this.actions)}dispatch(){let e=new Set;this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this?(t.object.currentTransitionEvent=this,t.init()):this.useToggle===!1&&e.add(t)}),this.useToggle?this.actions.Transition.forEach(t=>{t.toggle()}):this.data.type==="MousePress"||this.data.type==="KeyPress"?this.entered||(this.entered=!0,this.actions.Transition.forEach(t=>t.playFromCurrent())):this.actions.Transition.some(t=>t.playing)||this.actions.Transition.forEach(t=>{e.has(t)===!1&&t.play()}),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}dispatchRelease(){this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}},tG=class extends Pn{constructor(e,t,i){super(e),this.objectsPerTypes={MouseDown:[],MouseUp:[],MousePress:[],KeyDown:[],KeyUp:[],KeyPress:[]},this.eventsPerObjects={MouseDown:{},MouseUp:{},MousePress:{},KeyDown:{},KeyUp:{},KeyPress:{}},this.heldKeys={},this.heldKeysPress={},this._prevObjects=[],this.onMouseDown=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseDown"))},this.onMouseUp=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseUp"))},this.onMousePressDown=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent())},this.onMousePressRelease=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent(!0))},this.onKeyDown=n=>{this.heldKeys[n.key]||this.handleKeyEvent(n,"KeyDown"),this.heldKeys[n.key]=!0},this.onKeyUp=n=>{this.handleKeyEvent(n,"KeyUp")},this.onKeyPressDown=n=>{this.heldKeysPress[n.key]||this.handleKeyEvent(n,"KeyPress"),this.heldKeysPress[n.key]=!0},this.onKeyPressUp=n=>{this.handleKeyEvent(n,"KeyPress",!0)},this.releaseHeldKey=n=>{delete this.heldKeys[n.key]},this.releaseHeldKeyPress=n=>{delete this.heldKeysPress[n.key]},this._onUserEvent=({eventName:n,target:a,reverse:o})=>{if(!n||!a)return;let l=Pd(n);l&&(l==="MouseDown"||l==="MouseUp"||l==="MousePress"?(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent(o)})):(l==="KeyDown"||l==="KeyUp"||l==="KeyPress")&&(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent()})))};let{scene:r,sharedAssets:s}=this.eventContext;r.traverseEntity(n=>{if(!n.data?.events.length)return;let a=n.visible?["MouseDown","MouseUp","MousePress","KeyDown","KeyUp","KeyPress"]:["KeyDown","KeyUp","KeyPress"];for(let o of a){let l=this.eventsPerObjects[o];n.data.events.filter(({data:h})=>h.type===o&&h.disabled!==!0).forEach(({id:h,data:d})=>{try{let c=new eG(h,d,n,r,s,{controlsManager:t,eventManager:i});c.actions.Video.length&&(this.hasVideoAction=!0),l[n.uuid]?l[n.uuid].push(c):l[n.uuid]=[c]}catch{}}),l[n.uuid]?.length&&this.objectsPerTypes[o].push(n)}})}connect(){let{domElement:e}=this.eventContext;this.heldKeys={},this.heldKeysPress={},this.domEventsNeeded.clear(),this.objectsPerTypes.MouseDown?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown)),this.objectsPerTypes.MouseUp?.length&&(this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.objectsPerTypes.MousePress?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMousePressDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMousePressRelease)),this.objectsPerTypes.KeyDown?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.objectsPerTypes.KeyUp?.length&&(this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyUp)),this.objectsPerTypes.KeyPress?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyPressDown),document.addEventListener("keyup",this.releaseHeldKeyPress),this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyPressUp)),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.addEventListener("userEvent",this._onUserEvent)})})}disconnect(){let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),this.heldKeys={},this.heldKeysPress={},e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerdown",this.onMousePressDown),e.removeEventListener("pointerup",this.onMouseUp),e.removeEventListener("pointerup",this.onMousePressRelease),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyPressDown),document.removeEventListener("keyup",this.onKeyPressUp),document.removeEventListener("keyup",this.releaseHeldKey),Object.values(this.eventsPerObjects).forEach(t=>{Object.values(t).forEach(i=>{i.forEach(r=>{r.disconnect()})})}),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.removeEventListener("userEvent",this._onUserEvent)})})}handleMouseEvent(e){let{stopRaycast:t,raycaster:i,scene:r}=this.eventContext,s=this.objectsPerTypes[e];if(s.length)if(t){let n=Hm(i,r,s);Wm(n).forEach(a=>{this.eventsPerObjects[e][a.uuid]&&this.handleObjectMouseEventDispatch(a,e)})}else s.forEach(n=>{Ju(i,n)&&this.handleObjectMouseEventDispatch(n,e)})}handleMousePressEvent(e=!1){let t="MousePress",i=this.objectsPerTypes[t],r=[];if(i.length){if(!e){let{stopRaycast:s,raycaster:n,scene:a}=this.eventContext;if(s){let o=Hm(n,a,i);r=Wm(o)}else i.forEach(o=>{Ju(n,o)&&r.push(o)})}this._prevObjects.length&&this._prevObjects.forEach(s=>{r.includes(s)||this.handleObjectMouseEventDispatchRelease(s,t)}),r.length&&r.forEach(s=>{this.handleObjectMouseEventDispatch(s,t)}),this._prevObjects=r}}handleObjectMouseEventDispatch(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatch()})}handleObjectMouseEventDispatchRelease(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatchRelease()})}handleKeyEvent(e,t,i=!1){this.objectsPerTypes[t].forEach(r=>{let s=this.eventsPerObjects[t][r.uuid];s.some(({data:n})=>"key"in n&&n.key===e.key)&&r.dispatchEvent({type:"beginEvent",eventName:t}),s.forEach(n=>{"key"in n.data&&n.data.key===e.key&&(i?n.dispatchRelease():n.dispatch())})})}},iG=new E,rG=new E,ZS=class{constructor(e,t,i,r){this.actionsIn=Mn(e,e.inActions,t,i,r),this.actionsOut=Mn(e,e.outActions,t,i,r)}disconnect(){En(this.actionsIn),En(this.actionsOut)}},sG=class extends ZS{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.stage="out",this.objects=[],this.onUpdateMatrix=()=>{let l=iG.setFromMatrixPosition(this.objects[0].matrixWorld),h=rG.setFromMatrixPosition(this.objects[1].matrixWorld),d=l.distanceTo(h)<=this.distance?"in":"out";if(this.stage!==d){let c=d==="in"?this.actionsIn:this.actionsOut;c.Audio.forEach(u=>u.dispatchConditional()),c.Video.forEach(u=>u.dispatchConditional()),c.Transition.forEach(u=>{u.object.currentTransitionEvent!==this&&(u.object.currentTransitionEvent=this),u.init()}),c.Transition.forEach(u=>u.play()),this.stage=d}};let{distance:n,fromObject:a,toObject:o}=t.condition;this.distance=n;for(let l of[a,o]){if(!l)throw new Error("Missing property");let h=r.find(l);if(!h)throw new Error("Missing property");this.objects.push(h)}}connect(){this.objects.forEach(e=>{e.addEventListener("updateMatrix",this.onUpdateMatrix)}),this.onUpdateMatrix()}disconnect(){super.disconnect(),this.stage="out",this.objects.forEach(e=>{e.removeEventListener("updateMatrix",this.onUpdateMatrix)})}},nG=class extends ZS{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.onBegin=({target:o,state:l})=>{this.toState!==l&&(this.actionsOut.Audio.forEach(h=>h.dispatchConditional()),this.actionsOut.Video.forEach(h=>h.dispatchConditional()),this.actionsIn.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this,this.actionsOut.Transition.forEach(h=>h.play()))},this.onComplete=({target:o,state:l})=>{this.toState===l&&(this.actionsIn.Audio.forEach(h=>h.dispatchConditional()),this.actionsIn.Video.forEach(h=>h.dispatchConditional()),this.actionsOut.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this,this.actionsIn.Transition.forEach(h=>h.play()))};let{condition:n}=t;if(!n.object)throw new Error("Missing property");let a=r.find(n.object);if(!a)throw new Error("Missing property");if(this.toObject=a,n.state&&!this.toObject.states?.[n.state])throw new Error("Missing property");this.toState=n.state}connect(){(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.addEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.addEventListener("completeState",this.onComplete)}disconnect(){super.disconnect(),(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.removeEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.removeEventListener("completeState",this.onComplete)}},aG=class extends Pn{constructor(e){super(e),this.eventsPerConditions={Comparison:[],Distance:[],State:[]},this.hasVideoAction=!1;let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="Conditional")try{let a;n.condition.type==="Comparison"||(n.condition.type==="Distance"?a=new sG(s,n,r,t,i):n.condition.type==="State"&&(a=new nG(s,n,r,t,i))),a&&(this.eventsPerConditions[n.condition.type].push(a),(a.actionsIn.Video.length||a.actionsOut.Video.length)&&(this.hasVideoAction=!0))}catch{}}})}connect(){super.connect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.connect()))}disconnect(){super.disconnect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.disconnect()))}},qa=new E,ff=new E,mf=new E,Nc=new E,wb=new mr,_b=.01,oG={type:"requestRender"},lG=function(){let e=new E,t=new E;return(i,r,s)=>s>0?(e.subVectors(i,r),e.length()<=s?i:t.copy(r).add(e.normalize().multiplyScalar(s))):r}(),Ab=function(){let e=new ve;return(t,i)=>{t.position.copy(i),t.parent!==null&&(e.copy(t.parent.matrixWorld).invert(),t.position.applyMatrix4(e)),e.copy(t.hiddenMatrix).invert(),t.position.applyMatrix4(e),t.updateMatrix(),t.hasNonUniformScale&&(t.updateMatrixWorld(),t.updateMatrixWorldSVD()),t instanceof rr&&vn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),hG=class{constructor(e,t,i){this.data=e,this.object=t,this.tempPosition=new E,this.started=!1,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldPosition0=new E,this.target=e.target?i.find(e.target):void 0,this.maxDelta=e.maxDelta??0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.snapDampingFactor,this.object.getWorldPosition(this.worldPosition0)}},cG=class extends Pn{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(Qe.length>1)){this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="Follow"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new hG(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents||(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.started=!1,i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{tempPosition:t,object:i,maxDelta:r,plane:s}=e;if(i.getWorldPosition(mf),e.isReset)Nc.copy(e.worldPosition0);else if(e.target)e.target.getWorldPosition(Nc);else{let{camera:a,raycaster:o}=this.eventContext;if(s==="custom"?(a.getWorldDirection(ff),ff.negate(),qa.copy(ff)):s==="xy"?qa.set(0,0,1):s==="xz"?qa.set(0,1,0):s==="yz"&&qa.set(1,0,0),wb.setFromNormalAndCoplanarPoint(qa,mf),!o.ray.intersectPlane(wb,Nc))return}let n=lG(mf,Nc,r);if(e.currentDampingFactor>1||e.snapComplete===!1){e.started||(e.started=!0,t.copy(n));let a=qa.subVectors(n,t).divideScalar(e.currentDampingFactor);t.add(a),Ab(i,t),e.paused=a.length()<_b,e.snapComplete=a.length()<_b*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)}else Ab(i,n),e.paused=!0;e.object?.dispatchEvent({type:"beginEvent",eventName:"Follow"}),i.dispatchEvent(oG)}},Tl=new E,zc=new E,Vn=new ve,Pl=new ct,Ya=new ct,Uc=new E,gf=new E,Dl=new E,Fc=new mr,Sb=1e-5,uG={type:"requestRender"},dG={type:"changeRotation"},pG=function(){let e=new ve,t=new E,i=new E,r=new E;return(s,n)=>(n==="x"?(t.set(0,0,1),i.set(0,1,0),r.set(-1,0,0)):n==="y"?(t.set(1,0,0),i.set(0,0,1),r.set(0,-1,0)):(t.set(1,0,0),i.set(0,1,0),r.set(0,0,1)),t.applyMatrix4(s),i.applyMatrix4(s),r.applyMatrix4(s),e.makeBasis(t,i,r))}(),Mb=function(){let e=new ve;return function(t,i){t.parent!==null?e.multiplyMatrices(t.parent.matrixWorld,t.hiddenMatrix):e.copy(t.hiddenMatrix),i.premultiply(AS(e).invert()),t.rotation.setFromRotationMatrix(i),t.updateMatrix(),t instanceof rr&&vn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),fG=class{constructor(e,t,i){this.data=e,this.object=t,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldQuaternion0=new ct,this.target=e.target?i.find(e.target):void 0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.distance=e.distance??0,this.tilt=e.tilt??"up",this.axis=e.axis??"z",this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.dampingFactor,this.object.getWorldQuaternion(this.worldQuaternion0)}},mG=class extends Pn{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(Qe.length>1)){this._lastMouseEvent=i,this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onScroll=i=>{if(this._lastMouseEvent){let r=new PointerEvent("pointermove",{clientX:this._lastMouseEvent.clientX,clientY:this._lastMouseEvent.clientY,bubbles:!0,cancelable:!0,view:window});this.eventContext.eventElement.dispatchEvent(r)}},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="LookAt"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new fG(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents?t.addEventListener("scroll",this.onScroll):(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave),t.removeEventListener("scroll",this.onScroll);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{target:t,tilt:i,axis:r,distance:s,plane:n,object:a}=e,{camera:o,raycaster:l}=this.eventContext;if(a.getWorldPosition(Uc),!e.isReset){if(e.target)e.target.getWorldPosition(gf);else if(n==="custom"?(o.getWorldDirection(zc),zc.negate(),s>0?Fc.set(zc,-s):Fc.setFromNormalAndCoplanarPoint(zc,Uc)):(n==="xy"?Tl.set(0,0,1):n==="xz"?Tl.set(0,1,0):n==="yz"&&Tl.set(1,0,0),Fc.setFromNormalAndCoplanarPoint(Tl,Uc)),!l.ray.intersectPlane(Fc,gf))return}e.isReset||(t?i==="up"?Dl.set(0,1,0):i==="target"&&Dl.copy(t.up).applyMatrix4(Vn.extractRotation(t.matrixWorld)).normalize():n==="custom"?Dl.set(0,1,0):Dl.copy(Tl)),e.isReset?Ya.copy(e.worldQuaternion0):(Vn.lookAt(gf,Uc,Dl),Vn.copy(pG(Vn,r)),Ya.setFromRotationMatrix(Vn)),e.currentDampingFactor>1||e.snapComplete===!1?(a.updateWorldMatrix(!0,!1),Pl.setFromRotationMatrix(AS(a.matrixWorld)),Pl.slerp(Ya,1/e.currentDampingFactor),Mb(a,Vn.makeRotationFromQuaternion(Pl)),e.paused=8*(1-Pl.dot(Ya))<Sb,e.snapComplete=8*(1-Pl.dot(Ya))<Sb*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)):(Mb(a,Vn.makeRotationFromQuaternion(Ya)),e.paused=!0),e.object?.dispatchEvent({type:"beginEvent",eventName:"LookAt"}),a.dispatchEvent(uG),a.dispatchEvent(dG)}},gG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.entered=!1,this.actions=Mn(t,t.actions,i,r,s)}disconnect(){En(this.actions)}dispatchEnter(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()))}dispatchLeave(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent())}},vG=class extends Pn{constructor(e){super(e),this.eventsPerObjects={},this.objects=[],this._prevObjects=[],this.onMouseDown=r=>{Qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onMouseUp=r=>{Qe.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=r=>{Qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Pd(r);a&&a==="MouseHover"&&(s.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[s.uuid]?.forEach(o=>o.dispatchUserEvent(n)))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(!(!r.visible||!r.data?.events.length)){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="MouseHover")try{let a=new gG(s,n,r,t,i);this.eventsPerObjects[r.uuid]?this.eventsPerObjects[r.uuid].push(a):this.eventsPerObjects[r.uuid]=[a]}catch{}this.eventsPerObjects[r.uuid]?.length&&this.objects.push(r)}})}connect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),e.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(t=>{t.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Li&&(e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerup",this.onMouseUp)),e.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(t=>{t.forEach(i=>{i.disconnect()})}),this.objects.forEach(t=>{t.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(e=!1){let t=[];if(!e){let{stopRaycast:i,raycaster:r,scene:s}=this.eventContext;if(i){let n=Hm(r,s,this.objects);t=Wm(n)}else this.objects.forEach(n=>{Ju(r,n)&&t.push(n)})}this._prevObjects.length&&this._prevObjects.forEach(i=>{t.includes(i)||(i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchLeave()))}),t.length&&t.forEach(i=>{i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchEnter())}),this._prevObjects=t}},yG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.scrollCounter=0,this.actions=Mn(t,t.actions,i,r,s)}connect(){this.scrollCounter=0}disconnect(){En(this.actions)}dispatch(e){this.actions.Transition.forEach(r=>{r.object.currentTransitionEvent!==this&&(r.object.currentTransitionEvent=this,r.init())});let t=e>0?1:-1;this.scrollCounter+=t,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(r=>r.seek(i))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},xG=class{constructor(e,t,i,r,s,n){this.id=e,this.data=t,this.object=i,this.domElement=n,this.scrollStart=0,this.scrollEnd=0,this.actions=Mn(t,t.actions,i,r,s)}computeScrollBounds(){let e=this.domElement.getBoundingClientRect(),t=document.body,i=document.documentElement,r=window.pageYOffset||i.scrollTop||t.scrollTop,s=i.clientTop||t.clientTop||0,n=Math.round(e.top+r-s);if(this.data.startFrom==="enter"){let a=window.innerHeight,o=e.height,l=this.data.enterAnchor,h=l==="top"?a:l==="bottom"?a-o:a-o*.5;this.scrollStart=n-h}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.dispatch({x:window.scrollX,y:window.scrollY})}connect(){this.computeScrollBounds()}disconnect(){En(this.actions)}handleResize(){this.computeScrollBounds()}dispatch({x:e,y:t}){this.actions.Transition.forEach(s=>{s.object.currentTransitionEvent!==this&&(s.object.currentTransitionEvent=this,s.init())});let i=this.scrollEnd-this.scrollStart,r=Math.min(1,Math.max(0,(t-this.scrollStart)/i));this.actions.Transition.forEach(s=>s.seek(r))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},bG=class extends Pn{constructor(e){super(e),this.wheelEventsPerObject=new Map,this.scrollEventsPerObject=new Map,this.handleResize=()=>{[...this.scrollEventsPerObject.entries()].forEach(([s,n])=>{n.forEach(a=>a.handleResize())})},this.onScroll=s=>{let n={y:window.scrollY,x:window.scrollX};[...this.scrollEventsPerObject.entries()].forEach(([a,o])=>{a.dispatchEvent({type:"beginEvent",eventName:"Scroll",scroll:n}),o.forEach(l=>l.dispatch(n))})},this.onWheel=s=>{s.ctrlKey||[...this.wheelEventsPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:s.deltaY}),a.forEach(o=>o.dispatch(s.deltaY))})},this.onUserEvent=({eventName:s,target:n,reverse:a})=>{if(!s||!n)return;let o=Pd(s);o&&o==="Scroll"&&(n.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(n)?.forEach(l=>{l.dispatchUserEvent(a)}))};let{scene:t,sharedAssets:i,domElement:r}=this.eventContext;t.traverseEntity(s=>{if(s.data?.events.length){for(let{id:n,data:a}of s.data.events)if(!a.disabled&&a.type==="Scroll")if(a.trigger==="load"){let o=new yG(n,a,s,t,i);this.wheelEventsPerObject.has(s)?this.wheelEventsPerObject.get(s)?.push(o):this.wheelEventsPerObject.set(s,[o])}else{let o=new xG(n,a,s,t,i,r);this.scrollEventsPerObject.has(s)?this.scrollEventsPerObject.get(s)?.push(o):this.scrollEventsPerObject.set(s,[o])}}})}connect(){[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.wheelEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel)),[...this.scrollEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("scroll"),window.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.handleResize))}disconnect(){window.removeEventListener("wheel",this.onWheel),window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.handleResize),this.domEventsNeeded.clear(),[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)})}},wG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.actions=Mn(t,t.actions,i,r,s)}disconnect(){En(this.actions)}dispatch(){this.actions.Transition.forEach(e=>{e.play()})}dispatchAfter(e){this.actions.Audio.forEach(t=>{(t.interaction.data.triggerAfter??"any")===e&&(t.interaction instanceof uo?t.interaction.audioPlayer.play():t.interaction instanceof Xm&&t.interaction.dispatch())}),this.actions.Video.forEach(t=>{let i=t.interaction.data.triggerAfter??"autoplay";i===e&&(t.interaction instanceof Ql?t.interaction.play(i==="autoplay"):t.interaction instanceof qm&&t.interaction.dispatch())})}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Audio.forEach(t=>{t.interaction instanceof uo?t.interaction.audioPlayer.play():t.interaction instanceof Xm&&t.interaction.dispatch()}),this.actions.Video.forEach(t=>{t.interaction instanceof Ql?t.interaction.play():t.interaction instanceof qm&&t.interaction.dispatch()})}},_G=class extends Pn{constructor(e){super(e),this.eventsPerObject=new Map,this.eventsAfterPerObject=new Map,this.onMouseDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("mouseDown")})})},this.onKeyDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("keyDown")})})},this.onAny=()=>{let{domElement:r,isExport:s}=this.eventContext;(s?document:r).removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Start"}),a.forEach(o=>{o.dispatchAfter("any")})})},this.onPlay=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("autoplay")})})},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Pd(r);a&&a==="Start"&&(s.dispatchEvent({type:"beginEvent",eventName:"Start"}),this.eventsPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}),this.eventsAfterPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length)for(let{id:s,data:n}of r.data.events){if(n.disabled||n.type!=="Start")continue;let a=new wG(s,n,r,t,i);a.actions.Transition.length&&(this.eventsPerObject.has(r)?this.eventsPerObject.get(r)?.push(a):this.eventsPerObject.set(r,[a])),a.actions.Audio.length&&(this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a])),a.actions.Video.length&&(this.hasVideoAction=!0,this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a]))}})}connect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.addEventListener("pointerdown",this.onMouseDown,{once:!0}),document.addEventListener("keydown",this.onKeyDown,{once:!0}),i.addEventListener("pointerdown",this.onAny),document.addEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.addEventListener("userEvent",this.onUserEvent)}),this.onPlay()}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(i=>i.dispatch()),e.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.removeEventListener("pointerdown",this.onMouseDown),document.removeEventListener("keydown",this.onKeyDown),i.removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.removeEventListener("userEvent",this.onUserEvent),s.forEach(n=>n.disconnect())})}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.removeEventListener("userEvent",this.onUserEvent),t.forEach(i=>i.disconnect())})}},AG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.disabled=!0,this.actions=Mn(t,t.actions,i,r,s),this.target=t.target,this.useToggle=t.toggle}disconnect(){En(this.actions)}dispatch(){this.disabled||(this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.object.dispatchEvent({type:"beginEvent",eventName:"Collision"}),this.useToggle?this.actions.Transition.forEach(e=>{e.toggle()}):this.actions.Transition.forEach(e=>{e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}))}},Bt;hz.then(e=>Bt=e);var Ti=new E,Js=new ct,Hn=new E,vf=new bi(0,0,0,"YXZ"),SG={type:"updateMatrix"},KS={type:"beginEvent",eventName:"Collision"};function MG(e){if(e.scene.environment.usePhysics)return!0;let t=!1;return e.scene.objects.traverse((i,r)=>{for(let s of r.events)if(s.data.disabled!==!0&&s.data.type==="GameControl"&&s.data.collisionEnabled){t=!0;break}}),t}var Eb=e=>e.states.some(t=>t.data.position!==void 0||t.data.rotation!==void 0||t.data.hiddenMatrix!==void 0||t.data.cloner!==void 0||t.data.pathSnapping!==void 0),EG=e=>e.events.find(t=>t.data.disabled!==!0&&t.data.type==="Follow"),CG=class{constructor(e,t,i,r,s,n=!1){this.scene=t,this.sharedAssets=s,this.isExport=n,this.orbitControlsNeedsUpdate=!0,this.gameControls=[],this.gameControlStates=[],this.joysticks=[],this.joystickToGameControls=[],this.sharedGameControlGlobals={entitiesWithTransformAnim:[],eventsPerObjects:{},colliderToEntity:{},gamePads:[]},this.needsCollisionDetection=!1,this.initializationCounter=-1,this.rigidBodyToMesh=new Map,this.nActiveRigidBodies=0,this.collisionEvents=[],this.processRigidBody=m=>{if(m.bodyType()!==Bt.RigidBodyType.Dynamic)return;m.isSleeping()||this.nActiveRigidBodies++;let[v,y,b]=this.rigidBodyToMesh.get(m.handle);if(Ti.copy(m.translation()).multiplyScalar(this.pixelsPerMeter),Js.copy(m.rotation()),v.matrixWorld.compose(Ti,Js,y),v.hasNonUniformScale&&v.matrixWorld.multiply(v.shearScale),v.dispatchEvent(SG),b){let x=v.cloner;if(x&&x.objectForSample===void 0){x.matrixWorld.copy(v.matrixWorld);for(let w of x.children)w.updateMatrixWorld(!0)}for(let w of v.children)w.updateMatrixWorld(!0)}},this.handleCollisionEvents=(m,v,y)=>{if(y!==!1)if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[m])){let b=this.sharedGameControlGlobals.colliderToEntity[v],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[v])){let b=this.sharedGameControlGlobals.colliderToEntity[m],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else{let b=this.sharedGameControlGlobals.colliderToEntity[m],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x!==void 0)for(let S of x)S.data.target==="scene"&&this.dispatchCollisionEvent(S,b);let w=this.sharedGameControlGlobals.colliderToEntity[v],A=this.sharedGameControlGlobals.eventsPerObjects[w?.uuid];if(A!==void 0)for(let S of A)S.data.target==="scene"&&this.dispatchCollisionEvent(S,w)}},this.onBeginState=()=>{this.orbitControls&&(this.orbitControls.enabled=!1,this.orbitControlsNeedsUpdate=!1)},this.onCompleteState=({target:m})=>{this.orbitControls&&(this.orbitControls.enabled=!0,this.orbitControls.resetTo(m.getTarget(Ti),m.position,m.zoom,m.isUpVectorFlipped),this.orbitControlsNeedsUpdate=!0)},this.domElement=i.domElement;let a;e.scene.publish.playCamera===null?a=Md.PERSONAL_CAMERA_ID:a=e.scene.publish.playCamera;let o=this.scene.find(a),l=!1,h,d=5,c=8,u=9,p="drag";if(this.usePhysics=e.scene.environment.usePhysics??Qi.defaultData.usePhysics,this.pixelsPerMeter=e.scene.environment.pixelsPerMeter??Qi.defaultData.pixelsPerMeter,e.scene.objects.data(e.scene.publish.gameControlObject)?.events.forEach(m=>{m.data.disabled!==!0&&m.data.type==="GameControl"&&(h=m.data.keyAssignments,d=m.data.joystickPosLoc,c=m.data.joystickRotLoc,u=m.data.jumpTouchButtonLoc,p=m.data.rotByTouch)}),this.scene.traverseEntity(m=>{m.dataPatched.events.forEach(v=>{if(v.data.disabled||v.data.type!=="GameControl")return;let y=m;for(;(y=y.parent)?.parent!==null;)if(y.dataPatched.physics?.fusedBody)return;v.data.collisionEnabled&&(this.needsCollisionDetection=!0),this.gameControlStates.push([m,v.data])})}),this.usePhysics&&this.initPhysics(e.scene.environment.gravity??Qi.defaultData.gravity),this.gameControlStates.forEach(([m,v])=>{l=l||v.camera===o.uuid||m.uuid===o.uuid;let y=new JS(m,i.domElement,{...v,keyAssignments:h},e.scene.environment,this.sharedGameControlGlobals,m.uuid!==o.uuid&&v.camera===o.uuid,o,this.scene,s);y.addEventListener("change",r),y.addEventListener("end",r),y.addEventListener("start",r),this.gameControls.push(y),Li&&v.touchControl&&(this.joystickToGameControls[d]!==void 0?this.joystickToGameControls[d].push([y,"pos"]):this.joystickToGameControls[d]=[[y,"pos"]],v.moveMode==="walk"&&(this.joystickToGameControls[u]!==void 0?this.joystickToGameControls[u].push([y,"jmp"]):this.joystickToGameControls[u]=[[y,"jmp"]]),p==="joystick"&&(this.joystickToGameControls[c]!==void 0?this.joystickToGameControls[c].push([y,"rot"]):this.joystickToGameControls[c]=[[y,"rot"]]))}),l===!1){let{enableRotate:m,enablePan:v,enableZoom:y,autoRotate:b,hoverRotatePanMode:x}=e.scene.publish.orbitControls;if(m||v||y||b||x!==0){this.orbitControls=new $S(o,i.domElement,this.isExport),this.orbitControls.addEventListener("change",r),this.orbitControls.addEventListener("end",r),this.orbitControls.addEventListener("start",r),this.orbitControls.fromJSON(e.scene.publish.orbitControls,e.scene.publish.mouseEventTarget),this.orbitControls.useKeyEvents=!1,this.orbitControls.connect(),this.orbitControls.update();let w=this.orbitControls.object;w.addEventListener("beginState",this.onBeginState),w.addEventListener("completeState",this.onCompleteState)}}let f=i.domElement.width/i.getPixelRatio(),g=i.domElement.height/i.getPixelRatio();this.joystickToGameControls.forEach((m,v)=>{let y=document.body.appendChild(document.createElement("div")),[b,x,w]=(e.scene.publish.joystickSizeAndXYOffset??Bo.defaultData.joystickSizeAndXYOffset)[v],A=(f-5*b)/4+b,S={},_=m.some(P=>P[1]==="jmp"),M=_?0:b;v<10?(v<5?S.top=M/2:S.bottom=M/2,S.left=M/2+v%5*A):v===10?(S.left=M/2,S.top=g/2):(S.right=M/2,S.top=g/2),S.top?S.top-=x[1]:S.bottom+=x[1],S.left?S.left+=x[0]:S.right-=x[0];for(let P in S)S[P]+="px";if(_){let P=y.appendChild(document.createElement("div"));Object.assign(P.style,S,{position:"absolute",width:b+"px",height:b+"px",backgroundColor:`rgba(255,255,255,${w==="show"?.4:0})`,zIndex:"9999",borderRadius:b+"px",border:w==="show"?"solid 2px rgba(0, 0, 0, .1)":"none",display:"flex",alignItems:"center",justifyContent:"center",touchAction:"none"});let O=b/16*16*.4;w==="show"&&(P.innerHTML=`
4914
+ )`;break;case 6:let{mass:s,stiffness:n,damping:a,velocity:o}=e;t=`spring( ${s}, ${n}, ${a}, ${o} )`;break;default:t="linear"}return{duration:e.duration,easing:t}}function YS(e){let t={delay:0,loop:e.repeat===-1?!0:e.repeat+1};if(e.repeat===0)t.direction="normal",t.rewind=e.direction==="pingpong-rewind";else switch(e.direction){case"pingpong":t.direction="alternate",t.rewind=!1;break;case"pingpong-rewind":t.direction="alternate",t.rewind=!0;break;default:t.direction="normal",t.rewind=!1;break}switch(t.delay=0,t.endDelay=0,t.startOnceDelay=0,t.pingPongDelayCorrection=0,e.delayDirection){case"start-once":t.startOnceDelay=e.delay;break;case"start":t.delay=e.delay;break;case"end":t.endDelay=e.delay;break;case"start-end":case void 0:t.delay=e.delay,t.endDelay=e.delay;break}return t.direction==="alternate"&&(t.delay/=2,t.endDelay/=2,t.delay!==0&&(t.pingPongDelayCorrection=t.delay)),t}var bb=class{constructor(e,t,i,r,s,n){if(this.object=e,this.data=r,this.sharedAssets=s,this.allowSlerp=n,this.targets={t:0},this.firstLoop=!0,this._changeBegan=!1,this._changeCompleted=!0,this.onChange=()=>{this.callback&&(this.callback.update(this.targets.t),this.object.dispatchEvent({type:"requestRender"})),this.targets.t===0||this.targets.t===1?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):(this._changeCompleted&&(this._changeCompleted=!1),this._changeBegan||(this._changeBegan=!0,this.onChangeBegin()))},this.onChangeBegin=()=>{this.object.reversibleToState=this.to.id;let a=this.targets.t>.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=a,this.object.dispatchEvent({type:"beginState",state:a})},this.onChangeComplete=()=>{this.firstLoop&&(this.onFirstLoop(),this.firstLoop=!1),this.object.reversibleToState=this.to.id;let a=this.targets.t<.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=a,this.object.dispatchEvent({type:"completeState",state:a})},this.onFirstLoop=()=>{this.useCurrentState&&(this.callback=yb(this.object,this.from.data,this.to.data,this.sharedAssets,this.allowSlerp))},t===void 0){let a=su(this.object,this.object.currentState===i?this.object.prevState:this.object.currentState);if(!a)throw new Error("Missing property");this.from=a}else{let a=su(this.object,t);if(!a)throw new Error("Missing property");this.from=a}if(i===void 0)throw new Error("Missing property");{let a=su(this.object,i);if(!a)throw new Error("Missing property");this.to=a}this.useCurrentState=t===void 0||i===void 0,this.params={targets:this.targets,t:1,autoplay:!1,...YS(r),...Kj(r),change:this.onChange},this.callback=yb(this.object,t===void 0?{}:this.from.data,i===void 0?{}:this.to.data,this.sharedAssets,this.allowSlerp)}get changeBegan(){return this._changeBegan}get changeCompleted(){return this._changeCompleted}},fo=class extends ji{constructor(e,t,i){if(super(),this.data=e,this.scene=t,this.sharedAssets=i,this.toggleIsForward=!1,this.timelineNeedsRebuild=!1,this.useToggle=!1,this.onTimelineChangeComplete=()=>{this.data.tweens[0].data.direction!=="normal"&&(this.toggleIsForward=!this.toggleIsForward),this.timelineNeedsRebuild!==!1&&(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward,isRebuild:!0}),this.timeline.play())},!e.object)throw new Error("Missing property");let r=t.find(e.object);if(!r)throw new Error("Missing property");if(!r.states)throw new Error("Missing property");if(this.object=r,e.tweens.length<2)throw new Error("Missing property");this.tweens=Array(this.data.tweens.length-1),this.startOnceDelay=e.tweens[0].data.delayDirection==="start-once"?e.tweens[0].data.delay:0,this.init()}get playing(){return this.tweens.some(e=>e.changeBegan)??!1}init(){this.initialCurrentState=su(this.object,this.object.currentState).id,this.toggleIsForward=!1}get currentState(){return this.useToggle?this.initialCurrentState:this.object.currentState}buildTimeline({isForward:e=!0,isRebuild:t=!1}={}){try{let i=YS(this.data.tweens[0].data),r=i.loop;t&&typeof i.loop=="number"&&i.loop--,this.timeline?.pause(),this.timeline=Sj.timeline({autoplay:!1,...i,...r===!0||r>1?{timelineChangeComplete:this.onTimelineChangeComplete}:{}});let s=this.tweens.findIndex(n=>n?.changeBegan);if(this.timelineNeedsRebuild=s!==-1&&(r===!0||r>1),i.pingPongDelayCorrection&&t===!1&&(this.timelineNeedsRebuild=!0),e){let n=s===-1?0:s;for(let a=n;a<this.data.tweens.length-1;a++){let o=this.data.tweens[a],l=this.data.tweens[a+1],h;a===n&&(this.object.wasMovedByUser===!0||this.object.previousAction?.playing===!0)?(h=void 0,this.object instanceof sr&&(this.object.wasMovedByUser=!1)):h=o.data.state===void 0?this.currentState:o.data.state;let d=new bb(this.object,h,l.data.state===void 0?this.currentState:l.data.state,l.data,this.sharedAssets,this.data.allowSlerp??!1);s!==-1&&a===n&&Object.assign(d.params,{startOnceDelay:0}),this.tweens[a]=d,this.timeline.add(d.params,this.timeline.duration+(a===n?i.delay:0)+(a===n&&!t?i.pingPongDelayCorrection:0))}this.timeline.duration+=i.endDelay}else{let n=s===-1?this.data.tweens.length-1:s+1;for(let a=n;a>0;a--){let o=this.data.tweens[a],l=this.data.tweens[a-1],h;a===n&&(this.object.wasMovedByUser===!0||this.object.previousAction?.playing===!0)?(h=void 0,this.object instanceof sr&&(this.object.wasMovedByUser=!1)):h=o.data.state===void 0?this.currentState:o.data.state;let d=new bb(this.object,h,l.data.state===void 0?this.currentState:l.data.state,o.data,this.sharedAssets,this.data.allowSlerp??!1);s!==-1&&a===n&&Object.assign(d.params,{startOnceDelay:0}),this.tweens[a-1]=d,this.timeline.add(d.params,this.timeline.duration+(a===n?i.endDelay:0))}this.timeline.duration+=i.delay+(t?0:i.pingPongDelayCorrection)}}catch(i){i instanceof Error&&console.error(i.message)}this.object.previousAction?.playing===!0&&this.object.previousAction.pause(),this.object.previousAction=this}play(){if(this.playing)return!1;clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{try{this.buildTimeline(),this.timeline.play()}catch(e){e instanceof Error&&console.error(e.message)}},this.startOnceDelay)}pause(){this.timeline?.pause(),clearTimeout(this.timeoutId),this.tweens=Array(this.data.tweens.length-1),delete this.timeoutId}stop(){this.pause(),this.object.changeSelectedState(this.data.tweens[0].data.state===void 0?this.initialCurrentState:this.data.tweens[0].data.state,{scene:this.scene,shared:this.sharedAssets})}seek(e){this.timeline===void 0&&this.buildTimeline(),this.timeline?.seek(e*this.timeline.duration)}toggle(e){this.useToggle=!0,clearTimeout(this.timeoutId),this.toggleIsForward=e??!this.toggleIsForward,this.playing?(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()):this.timeoutId=window.setTimeout(()=>{this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()},this.startOnceDelay)}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause()}};function su(e,t){let i,r;if(typeof t=="string"?(i=t,r=e.states?.[i]):t===null&&(i=null,r=e.data),!(i===void 0||r===void 0))return{id:i,data:r}}function Mn(e,t,i,r,s,n){let a={Audio:[],Video:[],Link:[],Reset:[],Transition:[]};return t.forEach(({id:o,data:l})=>{try{l.type==="Audio"?fl[e.type].includes("Audio")&&a.Audio.push(new po(o,l,i,s)):l.type==="Video"?fl[e.type].includes("Video")&&a.Video.push(new $u(o,l,i)):l.type==="Link"?fl[e.type].includes("Link")&&a.Link.push(new X8(l,n)):l.type==="Reset"?fl[e.type].includes("Reset")&&a.Reset.push(new q8(r.data,r,s,n)):l.type==="Transition"&&fl[e.type].includes("Transition")&&a.Transition.push(new fo(l,r,s))}catch{}}),a}function En(e){Object.values(e).forEach(t=>{t.forEach(i=>{(i instanceof po||i instanceof $u||i instanceof fo)&&i.dispose()})})}var _v=[["start","Start"],["keyDown","KeyDown"],["keyUp","KeyUp"],["mouseDown","MouseDown"],["mouseUp","MouseUp"],["mouseHover","MouseHover"],["collision","Collision"],["lookAt","LookAt"],["follow","Follow"],["scroll","Scroll"]],QS=e=>_v.find(([t,i])=>i===e)?.[0],Pd=e=>_v.find(([t])=>t===e)?.[1],Jj=(e,t)=>{let i=QS(e);if(i){let r=new CustomEvent(i,{bubbles:!0});return Object.defineProperty(r,"target",{writable:!1,value:t}),r}},$j=class extends Pn{constructor(e){super(e),this.objectsPerEvents=new Map,this.splineEvents={},this.onBeginEvent=i=>{if(!i.eventName||!i.target||i.eventName==="Scroll")return;let r=this.splineEvents[QS(i.eventName)]?.[i.target.uuid];if(!r)return;i.eventName==="Scroll"&&i.deltaY!==void 0&&Object.assign(r,{deltaY:i.deltaY});let{domElement:s}=this.eventContext;s.dispatchEvent(r)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{if(i.data?.events.length){for(let[r,s]of _v)if(i.data.events.some(n=>n.data.type===s&&!n.data.disabled)){this.objectsPerEvents.has(r)?this.objectsPerEvents.get(r)?.push(i):this.objectsPerEvents.set(r,[i]);let n={id:i.uuid,name:i.name},a=Jj(s,n),o=this.splineEvents[r];o?o[i.uuid]=a:this.splineEvents[r]={[i.uuid]:a}}}})}connect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.addEventListener("beginEvent",this.onBeginEvent)})})}disconnect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.removeEventListener("beginEvent",this.onBeginEvent)})})}},eG=class{constructor(e,t,i,r,s,n){if(this.id=e,this.data=t,this.object=i,this.entered=!1,this.useToggle=t.toggle,(t.type==="KeyDown"||t.type==="KeyUp"||t.type==="KeyPress")&&!t.key)throw new Error("Missing property");this.actions=Mn(t,t.actions,i,r,s,n)}disconnect(){En(this.actions)}dispatch(){let e=new Set;this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this?(t.object.currentTransitionEvent=this,t.init()):this.useToggle===!1&&e.add(t)}),this.useToggle?this.actions.Transition.forEach(t=>{t.toggle()}):this.data.type==="MousePress"||this.data.type==="KeyPress"?this.entered||(this.entered=!0,this.actions.Transition.forEach(t=>t.playFromCurrent())):this.actions.Transition.some(t=>t.playing)||this.actions.Transition.forEach(t=>{e.has(t)===!1&&t.play()}),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}dispatchRelease(){this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}},tG=class extends Pn{constructor(e,t,i){super(e),this.objectsPerTypes={MouseDown:[],MouseUp:[],MousePress:[],KeyDown:[],KeyUp:[],KeyPress:[]},this.eventsPerObjects={MouseDown:{},MouseUp:{},MousePress:{},KeyDown:{},KeyUp:{},KeyPress:{}},this.heldKeys={},this.heldKeysPress={},this._prevObjects=[],this.onMouseDown=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseDown"))},this.onMouseUp=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseUp"))},this.onMousePressDown=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent())},this.onMousePressRelease=n=>{Qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent(!0))},this.onKeyDown=n=>{this.heldKeys[n.key]||this.handleKeyEvent(n,"KeyDown"),this.heldKeys[n.key]=!0},this.onKeyUp=n=>{this.handleKeyEvent(n,"KeyUp")},this.onKeyPressDown=n=>{this.heldKeysPress[n.key]||this.handleKeyEvent(n,"KeyPress"),this.heldKeysPress[n.key]=!0},this.onKeyPressUp=n=>{this.handleKeyEvent(n,"KeyPress",!0)},this.releaseHeldKey=n=>{delete this.heldKeys[n.key]},this.releaseHeldKeyPress=n=>{delete this.heldKeysPress[n.key]},this._onUserEvent=({eventName:n,target:a,reverse:o})=>{if(!n||!a)return;let l=Pd(n);l&&(l==="MouseDown"||l==="MouseUp"||l==="MousePress"?(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent(o)})):(l==="KeyDown"||l==="KeyUp"||l==="KeyPress")&&(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent()})))};let{scene:r,sharedAssets:s}=this.eventContext;r.traverseEntity(n=>{if(!n.data?.events.length)return;let a=n.visible?["MouseDown","MouseUp","MousePress","KeyDown","KeyUp","KeyPress"]:["KeyDown","KeyUp","KeyPress"];for(let o of a){let l=this.eventsPerObjects[o];n.data.events.filter(({data:h})=>h.type===o&&h.disabled!==!0).forEach(({id:h,data:d})=>{try{let c=new eG(h,d,n,r,s,{controlsManager:t,eventManager:i});c.actions.Video.length&&(this.hasVideoAction=!0),l[n.uuid]?l[n.uuid].push(c):l[n.uuid]=[c]}catch{}}),l[n.uuid]?.length&&this.objectsPerTypes[o].push(n)}})}connect(){let{domElement:e}=this.eventContext;this.heldKeys={},this.heldKeysPress={},this.domEventsNeeded.clear(),this.objectsPerTypes.MouseDown?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown)),this.objectsPerTypes.MouseUp?.length&&(this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.objectsPerTypes.MousePress?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMousePressDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMousePressRelease)),this.objectsPerTypes.KeyDown?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.objectsPerTypes.KeyUp?.length&&(this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyUp)),this.objectsPerTypes.KeyPress?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyPressDown),document.addEventListener("keyup",this.releaseHeldKeyPress),this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyPressUp)),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.addEventListener("userEvent",this._onUserEvent)})})}disconnect(){let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),this.heldKeys={},this.heldKeysPress={},e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerdown",this.onMousePressDown),e.removeEventListener("pointerup",this.onMouseUp),e.removeEventListener("pointerup",this.onMousePressRelease),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyPressDown),document.removeEventListener("keyup",this.onKeyPressUp),document.removeEventListener("keyup",this.releaseHeldKey),Object.values(this.eventsPerObjects).forEach(t=>{Object.values(t).forEach(i=>{i.forEach(r=>{r.disconnect()})})}),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.removeEventListener("userEvent",this._onUserEvent)})})}handleMouseEvent(e){let{stopRaycast:t,raycaster:i,scene:r}=this.eventContext,s=this.objectsPerTypes[e];if(s.length)if(t){let n=Hm(i,r,s);Wm(n).forEach(a=>{this.eventsPerObjects[e][a.uuid]&&this.handleObjectMouseEventDispatch(a,e)})}else s.forEach(n=>{Ju(i,n)&&this.handleObjectMouseEventDispatch(n,e)})}handleMousePressEvent(e=!1){let t="MousePress",i=this.objectsPerTypes[t],r=[];if(i.length){if(!e){let{stopRaycast:s,raycaster:n,scene:a}=this.eventContext;if(s){let o=Hm(n,a,i);r=Wm(o)}else i.forEach(o=>{Ju(n,o)&&r.push(o)})}this._prevObjects.length&&this._prevObjects.forEach(s=>{r.includes(s)||this.handleObjectMouseEventDispatchRelease(s,t)}),r.length&&r.forEach(s=>{this.handleObjectMouseEventDispatch(s,t)}),this._prevObjects=r}}handleObjectMouseEventDispatch(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatch()})}handleObjectMouseEventDispatchRelease(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatchRelease()})}handleKeyEvent(e,t,i=!1){this.objectsPerTypes[t].forEach(r=>{let s=this.eventsPerObjects[t][r.uuid];s.some(({data:n})=>"key"in n&&n.key===e.key)&&r.dispatchEvent({type:"beginEvent",eventName:t}),s.forEach(n=>{"key"in n.data&&n.data.key===e.key&&(i?n.dispatchRelease():n.dispatch())})})}},iG=new E,rG=new E,ZS=class{constructor(e,t,i,r){this.actionsIn=Mn(e,e.inActions,t,i,r),this.actionsOut=Mn(e,e.outActions,t,i,r)}disconnect(){En(this.actionsIn),En(this.actionsOut)}},sG=class extends ZS{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.stage="out",this.objects=[],this.onUpdateMatrix=()=>{let l=iG.setFromMatrixPosition(this.objects[0].matrixWorld),h=rG.setFromMatrixPosition(this.objects[1].matrixWorld),d=l.distanceTo(h)<=this.distance?"in":"out";if(this.stage!==d){let c=d==="in"?this.actionsIn:this.actionsOut;c.Audio.forEach(u=>u.dispatchConditional()),c.Video.forEach(u=>u.dispatchConditional()),c.Transition.forEach(u=>{u.object.currentTransitionEvent!==this&&(u.object.currentTransitionEvent=this),u.init()}),c.Transition.forEach(u=>u.play()),this.stage=d}};let{distance:n,fromObject:a,toObject:o}=t.condition;this.distance=n;for(let l of[a,o]){if(!l)throw new Error("Missing property");let h=r.find(l);if(!h)throw new Error("Missing property");this.objects.push(h)}}connect(){this.objects.forEach(e=>{e.addEventListener("updateMatrix",this.onUpdateMatrix)}),this.onUpdateMatrix()}disconnect(){super.disconnect(),this.stage="out",this.objects.forEach(e=>{e.removeEventListener("updateMatrix",this.onUpdateMatrix)})}},nG=class extends ZS{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.onBegin=({target:o,state:l})=>{this.toState!==l&&(this.actionsOut.Audio.forEach(h=>h.dispatchConditional()),this.actionsOut.Video.forEach(h=>h.dispatchConditional()),this.actionsIn.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this,this.actionsOut.Transition.forEach(h=>h.play()))},this.onComplete=({target:o,state:l})=>{this.toState===l&&(this.actionsIn.Audio.forEach(h=>h.dispatchConditional()),this.actionsIn.Video.forEach(h=>h.dispatchConditional()),this.actionsOut.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this,this.actionsIn.Transition.forEach(h=>h.play()))};let{condition:n}=t;if(!n.object)throw new Error("Missing property");let a=r.find(n.object);if(!a)throw new Error("Missing property");if(this.toObject=a,n.state&&!this.toObject.states?.[n.state])throw new Error("Missing property");this.toState=n.state}connect(){(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.addEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.addEventListener("completeState",this.onComplete)}disconnect(){super.disconnect(),(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.removeEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.removeEventListener("completeState",this.onComplete)}},aG=class extends Pn{constructor(e){super(e),this.eventsPerConditions={Comparison:[],Distance:[],State:[]},this.hasVideoAction=!1;let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="Conditional")try{let a;n.condition.type==="Comparison"||(n.condition.type==="Distance"?a=new sG(s,n,r,t,i):n.condition.type==="State"&&(a=new nG(s,n,r,t,i))),a&&(this.eventsPerConditions[n.condition.type].push(a),(a.actionsIn.Video.length||a.actionsOut.Video.length)&&(this.hasVideoAction=!0))}catch{}}})}connect(){super.connect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.connect()))}disconnect(){super.disconnect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.disconnect()))}},qa=new E,ff=new E,mf=new E,Nc=new E,wb=new mr,_b=.01,oG={type:"requestRender"},lG=function(){let e=new E,t=new E;return(i,r,s)=>s>0?(e.subVectors(i,r),e.length()<=s?i:t.copy(r).add(e.normalize().multiplyScalar(s))):r}(),Ab=function(){let e=new ve;return(t,i)=>{t.position.copy(i),t.parent!==null&&(e.copy(t.parent.matrixWorld).invert(),t.position.applyMatrix4(e)),e.copy(t.hiddenMatrix).invert(),t.position.applyMatrix4(e),t.updateMatrix(),t.hasNonUniformScale&&(t.updateMatrixWorld(),t.updateMatrixWorldSVD()),t instanceof rr&&vn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),hG=class{constructor(e,t,i){this.data=e,this.object=t,this.tempPosition=new E,this.started=!1,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldPosition0=new E,this.target=e.target?i.find(e.target):void 0,this.maxDelta=e.maxDelta??0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.snapDampingFactor,this.object.getWorldPosition(this.worldPosition0)}},cG=class extends Pn{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(Qe.length>1)){this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="Follow"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new hG(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents||(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.started=!1,i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{tempPosition:t,object:i,maxDelta:r,plane:s}=e;if(i.getWorldPosition(mf),e.isReset)Nc.copy(e.worldPosition0);else if(e.target)e.target.getWorldPosition(Nc);else{let{camera:a,raycaster:o}=this.eventContext;if(s==="custom"?(a.getWorldDirection(ff),ff.negate(),qa.copy(ff)):s==="xy"?qa.set(0,0,1):s==="xz"?qa.set(0,1,0):s==="yz"&&qa.set(1,0,0),wb.setFromNormalAndCoplanarPoint(qa,mf),!o.ray.intersectPlane(wb,Nc))return}let n=lG(mf,Nc,r);if(e.currentDampingFactor>1||e.snapComplete===!1){e.started||(e.started=!0,t.copy(n));let a=qa.subVectors(n,t).divideScalar(e.currentDampingFactor);t.add(a),Ab(i,t),e.paused=a.length()<_b,e.snapComplete=a.length()<_b*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)}else Ab(i,n),e.paused=!0;e.object?.dispatchEvent({type:"beginEvent",eventName:"Follow"}),i.dispatchEvent(oG)}},Tl=new E,zc=new E,Vn=new ve,Pl=new ct,Ya=new ct,Uc=new E,gf=new E,Dl=new E,Fc=new mr,Sb=1e-5,uG={type:"requestRender"},dG={type:"changeRotation"},pG=function(){let e=new ve,t=new E,i=new E,r=new E;return(s,n)=>(n==="x"?(t.set(0,0,1),i.set(0,1,0),r.set(-1,0,0)):n==="y"?(t.set(1,0,0),i.set(0,0,1),r.set(0,-1,0)):(t.set(1,0,0),i.set(0,1,0),r.set(0,0,1)),t.applyMatrix4(s),i.applyMatrix4(s),r.applyMatrix4(s),e.makeBasis(t,i,r))}(),Mb=function(){let e=new ve;return function(t,i){t.parent!==null?e.multiplyMatrices(t.parent.matrixWorld,t.hiddenMatrix):e.copy(t.hiddenMatrix),i.premultiply(AS(e).invert()),t.rotation.setFromRotationMatrix(i),t.updateMatrix(),t instanceof rr&&vn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),fG=class{constructor(e,t,i){this.data=e,this.object=t,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldQuaternion0=new ct,this.target=e.target?i.find(e.target):void 0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.distance=e.distance??0,this.tilt=e.tilt??"up",this.axis=e.axis??"z",this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.dampingFactor,this.object.getWorldQuaternion(this.worldQuaternion0)}},mG=class extends Pn{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(Qe.length>1)){this._lastMouseEvent=i,this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onScroll=i=>{if(this._lastMouseEvent){let r=new PointerEvent("pointermove",{clientX:this._lastMouseEvent.clientX,clientY:this._lastMouseEvent.clientY,bubbles:!0,cancelable:!0,view:window});this.eventContext.eventElement.dispatchEvent(r)}},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="LookAt"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new fG(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents?t.addEventListener("scroll",this.onScroll):(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Li&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave),t.removeEventListener("scroll",this.onScroll);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{target:t,tilt:i,axis:r,distance:s,plane:n,object:a}=e,{camera:o,raycaster:l}=this.eventContext;if(a.getWorldPosition(Uc),!e.isReset){if(e.target)e.target.getWorldPosition(gf);else if(n==="custom"?(o.getWorldDirection(zc),zc.negate(),s>0?Fc.set(zc,-s):Fc.setFromNormalAndCoplanarPoint(zc,Uc)):(n==="xy"?Tl.set(0,0,1):n==="xz"?Tl.set(0,1,0):n==="yz"&&Tl.set(1,0,0),Fc.setFromNormalAndCoplanarPoint(Tl,Uc)),!l.ray.intersectPlane(Fc,gf))return}e.isReset||(t?i==="up"?Dl.set(0,1,0):i==="target"&&Dl.copy(t.up).applyMatrix4(Vn.extractRotation(t.matrixWorld)).normalize():n==="custom"?Dl.set(0,1,0):Dl.copy(Tl)),e.isReset?Ya.copy(e.worldQuaternion0):(Vn.lookAt(gf,Uc,Dl),Vn.copy(pG(Vn,r)),Ya.setFromRotationMatrix(Vn)),e.currentDampingFactor>1||e.snapComplete===!1?(a.updateWorldMatrix(!0,!1),Pl.setFromRotationMatrix(AS(a.matrixWorld)),Pl.slerp(Ya,1/e.currentDampingFactor),Mb(a,Vn.makeRotationFromQuaternion(Pl)),e.paused=8*(1-Pl.dot(Ya))<Sb,e.snapComplete=8*(1-Pl.dot(Ya))<Sb*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)):(Mb(a,Vn.makeRotationFromQuaternion(Ya)),e.paused=!0),e.object?.dispatchEvent({type:"beginEvent",eventName:"LookAt"}),a.dispatchEvent(uG),a.dispatchEvent(dG)}},gG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.entered=!1,this.actions=Mn(t,t.actions,i,r,s)}disconnect(){En(this.actions)}dispatchEnter(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()))}dispatchLeave(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent())}},vG=class extends Pn{constructor(e){super(e),this.eventsPerObjects={},this.objects=[],this._prevObjects=[],this.onMouseDown=r=>{Qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onMouseUp=r=>{Qe.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=r=>{Qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Pd(r);a&&a==="MouseHover"&&(s.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[s.uuid]?.forEach(o=>o.dispatchUserEvent(n)))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(!(!r.visible||!r.data?.events.length)){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="MouseHover")try{let a=new gG(s,n,r,t,i);this.eventsPerObjects[r.uuid]?this.eventsPerObjects[r.uuid].push(a):this.eventsPerObjects[r.uuid]=[a]}catch{}this.eventsPerObjects[r.uuid]?.length&&this.objects.push(r)}})}connect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Li&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),e.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(t=>{t.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Li&&(e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerup",this.onMouseUp)),e.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(t=>{t.forEach(i=>{i.disconnect()})}),this.objects.forEach(t=>{t.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(e=!1){let t=[];if(!e){let{stopRaycast:i,raycaster:r,scene:s}=this.eventContext;if(i){let n=Hm(r,s,this.objects);t=Wm(n)}else this.objects.forEach(n=>{Ju(r,n)&&t.push(n)})}this._prevObjects.length&&this._prevObjects.forEach(i=>{t.includes(i)||(i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchLeave()))}),t.length&&t.forEach(i=>{i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchEnter())}),this._prevObjects=t}},yG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.scrollCounter=0,this.actions=Mn(t,t.actions,i,r,s)}connect(){this.scrollCounter=0}disconnect(){En(this.actions)}dispatch(e){this.actions.Transition.forEach(r=>{r.object.currentTransitionEvent!==this&&(r.object.currentTransitionEvent=this,r.init())});let t=e>0?1:-1;this.scrollCounter+=t,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(r=>r.seek(i))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},xG=class{constructor(e,t,i,r,s,n){this.id=e,this.data=t,this.object=i,this.domElement=n,this.scrollStart=0,this.scrollEnd=0,this.actions=Mn(t,t.actions,i,r,s)}computeScrollBounds(){let e=this.domElement.getBoundingClientRect(),t=document.body,i=document.documentElement,r=window.pageYOffset||i.scrollTop||t.scrollTop,s=i.clientTop||t.clientTop||0,n=Math.round(e.top+r-s);if(this.data.startFrom==="enter"){let a=window.innerHeight,o=e.height,l=this.data.enterAnchor,h=l==="top"?a:l==="bottom"?a-o:a-o*.5;this.scrollStart=n-h}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.dispatch({x:window.scrollX,y:window.scrollY})}connect(){this.computeScrollBounds()}disconnect(){En(this.actions)}handleResize(){this.computeScrollBounds()}dispatch({x:e,y:t}){this.actions.Transition.forEach(s=>{s.object.currentTransitionEvent!==this&&(s.object.currentTransitionEvent=this,s.init())});let i=this.scrollEnd-this.scrollStart,r=Math.min(1,Math.max(0,(t-this.scrollStart)/i));this.actions.Transition.forEach(s=>s.seek(r))}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},bG=class extends Pn{constructor(e){super(e),this.wheelEventsPerObject=new Map,this.scrollEventsPerObject=new Map,this.handleResize=()=>{[...this.scrollEventsPerObject.entries()].forEach(([s,n])=>{n.forEach(a=>a.handleResize())})},this.onScroll=s=>{let n={y:window.scrollY,x:window.scrollX};[...this.scrollEventsPerObject.entries()].forEach(([a,o])=>{a.dispatchEvent({type:"beginEvent",eventName:"Scroll",scroll:n}),o.forEach(l=>l.dispatch(n))})},this.onWheel=s=>{s.ctrlKey||[...this.wheelEventsPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:s.deltaY}),a.forEach(o=>o.dispatch(s.deltaY))})},this.onUserEvent=({eventName:s,target:n,reverse:a})=>{if(!s||!n)return;let o=Pd(s);o&&o==="Scroll"&&(n.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(n)?.forEach(l=>{l.dispatchUserEvent(a)}))};let{scene:t,sharedAssets:i,domElement:r}=this.eventContext;t.traverseEntity(s=>{if(s.data?.events.length){for(let{id:n,data:a}of s.data.events)if(!a.disabled&&a.type==="Scroll")if(a.trigger==="load"){let o=new yG(n,a,s,t,i);this.wheelEventsPerObject.has(s)?this.wheelEventsPerObject.get(s)?.push(o):this.wheelEventsPerObject.set(s,[o])}else{let o=new xG(n,a,s,t,i,r);this.scrollEventsPerObject.has(s)?this.scrollEventsPerObject.get(s)?.push(o):this.scrollEventsPerObject.set(s,[o])}}})}connect(){[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.wheelEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel)),[...this.scrollEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("scroll"),window.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.handleResize))}disconnect(){window.removeEventListener("wheel",this.onWheel),window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.handleResize),this.domEventsNeeded.clear(),[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)})}},wG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.actions=Mn(t,t.actions,i,r,s)}disconnect(){En(this.actions)}dispatch(){this.actions.Transition.forEach(e=>{e.play()})}dispatchAfter(e){this.actions.Audio.forEach(t=>{(t.interaction.data.triggerAfter??"any")===e&&(t.interaction instanceof uo?t.interaction.audioPlayer.play():t.interaction instanceof Xm&&t.interaction.dispatch())}),this.actions.Video.forEach(t=>{let i=t.interaction.data.triggerAfter??"autoplay";i===e&&(t.interaction instanceof Ql?t.interaction.play(i==="autoplay"):t.interaction instanceof qm&&t.interaction.dispatch())})}dispatchUserEvent(e){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Audio.forEach(t=>{t.interaction instanceof uo?t.interaction.audioPlayer.play():t.interaction instanceof Xm&&t.interaction.dispatch()}),this.actions.Video.forEach(t=>{t.interaction instanceof Ql?t.interaction.play():t.interaction instanceof qm&&t.interaction.dispatch()})}},_G=class extends Pn{constructor(e){super(e),this.eventsPerObject=new Map,this.eventsAfterPerObject=new Map,this.onMouseDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("mouseDown")})})},this.onKeyDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("keyDown")})})},this.onAny=()=>{let{domElement:r,isExport:s}=this.eventContext;(s?document:r).removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Start"}),a.forEach(o=>{o.dispatchAfter("any")})})},this.onPlay=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("autoplay")})})},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Pd(r);a&&a==="Start"&&(s.dispatchEvent({type:"beginEvent",eventName:"Start"}),this.eventsPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}),this.eventsAfterPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length)for(let{id:s,data:n}of r.data.events){if(n.disabled||n.type!=="Start")continue;let a=new wG(s,n,r,t,i);a.actions.Transition.length&&(this.eventsPerObject.has(r)?this.eventsPerObject.get(r)?.push(a):this.eventsPerObject.set(r,[a])),a.actions.Audio.length&&(this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a])),a.actions.Video.length&&(this.hasVideoAction=!0,this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a]))}})}connect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.addEventListener("pointerdown",this.onMouseDown,{once:!0}),document.addEventListener("keydown",this.onKeyDown,{once:!0}),i.addEventListener("pointerdown",this.onAny),document.addEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.addEventListener("userEvent",this.onUserEvent)}),this.onPlay()}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(i=>i.dispatch()),e.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.removeEventListener("pointerdown",this.onMouseDown),document.removeEventListener("keydown",this.onKeyDown),i.removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.removeEventListener("userEvent",this.onUserEvent),s.forEach(n=>n.disconnect())})}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.removeEventListener("userEvent",this.onUserEvent),t.forEach(i=>i.disconnect())})}},AG=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.disabled=!0,this.actions=Mn(t,t.actions,i,r,s),this.target=t.target,this.useToggle=t.toggle}disconnect(){En(this.actions)}dispatch(){this.disabled||(this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.object.dispatchEvent({type:"beginEvent",eventName:"Collision"}),this.useToggle?this.actions.Transition.forEach(e=>{e.toggle()}):this.actions.Transition.forEach(e=>{e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}))}},Bt;hz.then(e=>Bt=e);var Ti=new E,Js=new ct,Hn=new E,vf=new bi(0,0,0,"YXZ"),SG={type:"updateMatrix"},KS={type:"beginEvent",eventName:"Collision"};function MG(e){if(e.scene.environment.usePhysics)return!0;let t=!1;return e.scene.objects.traverse((i,r)=>{for(let s of r.events)if(s.data.disabled!==!0&&s.data.type==="GameControl"&&s.data.collisionEnabled){t=!0;break}}),t}var Eb=e=>e.states.some(t=>t.data.position!==void 0||t.data.rotation!==void 0||t.data.hiddenMatrix!==void 0||t.data.cloner!==void 0||t.data.pathSnapping!==void 0),EG=e=>e.events.find(t=>t.data.disabled!==!0&&t.data.type==="Follow"),CG=class{constructor(e,t,i,r,s,n=!1){this.scene=t,this.sharedAssets=s,this.isExport=n,this.orbitControlsNeedsUpdate=!0,this.gameControls=[],this.gameControlStates=[],this.joysticks=[],this.joystickToGameControls=[],this.sharedGameControlGlobals={entitiesWithTransformAnim:[],eventsPerObjects:{},colliderToEntity:{},gamePads:[]},this.needsCollisionDetection=!1,this.initializationCounter=-1,this.rigidBodyToMesh=new Map,this.nActiveRigidBodies=0,this.collisionEvents=[],this.processRigidBody=m=>{if(m.bodyType()!==Bt.RigidBodyType.Dynamic)return;m.isSleeping()||this.nActiveRigidBodies++;let[v,y,b]=this.rigidBodyToMesh.get(m.handle);if(Ti.copy(m.translation()).multiplyScalar(this.pixelsPerMeter),Js.copy(m.rotation()),v.matrixWorld.compose(Ti,Js,y),v.hasNonUniformScale&&v.matrixWorld.multiply(v.shearScale),v.dispatchEvent(SG),b){let x=v.cloner;if(x&&x.objectForSample===void 0){x.matrixWorld.copy(v.matrixWorld);for(let w of x.children)w.updateMatrixWorld(!0)}for(let w of v.children)w.updateMatrixWorld(!0)}},this.handleCollisionEvents=(m,v,y)=>{if(y!==!1)if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[m])){let b=this.sharedGameControlGlobals.colliderToEntity[v],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[v])){let b=this.sharedGameControlGlobals.colliderToEntity[m],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else{let b=this.sharedGameControlGlobals.colliderToEntity[m],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x!==void 0)for(let S of x)S.data.target==="scene"&&this.dispatchCollisionEvent(S,b);let w=this.sharedGameControlGlobals.colliderToEntity[v],A=this.sharedGameControlGlobals.eventsPerObjects[w?.uuid];if(A!==void 0)for(let S of A)S.data.target==="scene"&&this.dispatchCollisionEvent(S,w)}},this.onBeginState=()=>{this.orbitControls&&(this.orbitControls.enabled=!1,this.orbitControlsNeedsUpdate=!1)},this.onCompleteState=({target:m})=>{this.orbitControls&&(this.orbitControls.enabled=!0,this.orbitControls.resetTo(m.getTarget(Ti),m.position,m.zoom,m.isUpVectorFlipped),this.orbitControlsNeedsUpdate=!0)},this.domElement=i.domElement;let a;e.scene.publish.playCamera===null?a=Md.PERSONAL_CAMERA_ID:a=e.scene.publish.playCamera;let o=this.scene.find(a),l=!1,h,d=5,c=8,u=9,p="drag";if(this.usePhysics=e.scene.environment.usePhysics??Qi.defaultData.usePhysics,this.pixelsPerMeter=e.scene.environment.pixelsPerMeter??Qi.defaultData.pixelsPerMeter,e.scene.objects.data(e.scene.publish.gameControlObject)?.events.forEach(m=>{m.data.disabled!==!0&&m.data.type==="GameControl"&&(h=m.data.keyAssignments,d=m.data.joystickPosLoc,c=m.data.joystickRotLoc,u=m.data.jumpTouchButtonLoc,p=m.data.rotByTouch)}),this.scene.traverseEntity(m=>{m.dataPatched.events.forEach(v=>{if(v.data.disabled||v.data.type!=="GameControl")return;let y=m;for(;(y=y.parent)?.parent!==null;)if(y.dataPatched.physics?.fusedBody)return;v.data.collisionEnabled&&(this.needsCollisionDetection=!0),this.gameControlStates.push([m,v.data])})}),this.usePhysics&&this.initPhysics(e.scene.environment.gravity??Qi.defaultData.gravity),this.gameControlStates.forEach(([m,v])=>{l=l||v.camera===o.uuid||m.uuid===o.uuid;let y=new JS(m,i.domElement,{...v,keyAssignments:h},e.scene.environment,this.sharedGameControlGlobals,m.uuid!==o.uuid&&v.camera===o.uuid,o,this.scene,s);y.addEventListener("change",r),y.addEventListener("end",r),y.addEventListener("start",r),this.gameControls.push(y),Li&&v.touchControl&&(this.joystickToGameControls[d]!==void 0?this.joystickToGameControls[d].push([y,"pos"]):this.joystickToGameControls[d]=[[y,"pos"]],v.moveMode==="walk"&&(this.joystickToGameControls[u]!==void 0?this.joystickToGameControls[u].push([y,"jmp"]):this.joystickToGameControls[u]=[[y,"jmp"]]),p==="joystick"&&(this.joystickToGameControls[c]!==void 0?this.joystickToGameControls[c].push([y,"rot"]):this.joystickToGameControls[c]=[[y,"rot"]]))}),l===!1){let{enableRotate:m,enablePan:v,enableZoom:y,autoRotate:b,hoverRotatePanMode:x}=e.scene.publish.orbitControls;if(m||v||y||b||x!==0){this.orbitControls=new $S(o,i.domElement,this.isExport),console.log("ControlsManager.pre",e),this.orbitControls.addEventListener("change",r),this.orbitControls.addEventListener("end",r),this.orbitControls.addEventListener("start",r),this.orbitControls.fromJSON(e.scene.publish.orbitControls,e.scene.publish.mouseEventTarget),this.orbitControls.useKeyEvents=!1,this.orbitControls.connect(),this.orbitControls.update();let w=this.orbitControls.object;w.addEventListener("beginState",this.onBeginState),w.addEventListener("completeState",this.onCompleteState)}}let f=i.domElement.width/i.getPixelRatio(),g=i.domElement.height/i.getPixelRatio();this.joystickToGameControls.forEach((m,v)=>{let y=document.body.appendChild(document.createElement("div")),[b,x,w]=(e.scene.publish.joystickSizeAndXYOffset??Bo.defaultData.joystickSizeAndXYOffset)[v],A=(f-5*b)/4+b,S={},_=m.some(P=>P[1]==="jmp"),M=_?0:b;v<10?(v<5?S.top=M/2:S.bottom=M/2,S.left=M/2+v%5*A):v===10?(S.left=M/2,S.top=g/2):(S.right=M/2,S.top=g/2),S.top?S.top-=x[1]:S.bottom+=x[1],S.left?S.left+=x[0]:S.right-=x[0];for(let P in S)S[P]+="px";if(_){let P=y.appendChild(document.createElement("div"));Object.assign(P.style,S,{position:"absolute",width:b+"px",height:b+"px",backgroundColor:`rgba(255,255,255,${w==="show"?.4:0})`,zIndex:"9999",borderRadius:b+"px",border:w==="show"?"solid 2px rgba(0, 0, 0, .1)":"none",display:"flex",alignItems:"center",justifyContent:"center",touchAction:"none"});let O=b/16*16*.4;w==="show"&&(P.innerHTML=`
4915
4915
  <svg width="${O}" height="${b*.4}" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
4916
4916
  <path d="M2 10L8 4L14 10" stroke="black" stroke-opacity="40%" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4917
4917
  </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splinetool/viewer",
3
- "version": "0.0.43",
3
+ "version": "0.0.44",
4
4
  "description": "Spline viewer",
5
5
  "type": "module",
6
6
  "main": "./build/spline-viewer.js",