@tomorrowevening/hermes 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hermes.cjs.js +1 -1
- package/dist/hermes.es.js +457 -455
- package/package.json +1 -1
- package/types/utils/post.d.ts +1 -1
package/dist/hermes.cjs.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);
|
|
16
16
|
gl_FragColor = enc;
|
|
17
17
|
}
|
|
18
|
-
`,d=c.createShader(35633),p=c.createShader(35632),f=c.createProgram();if(!(p&&d&&f))return;c.shaderSource(d,h),c.shaderSource(p,u),c.compileShader(d),c.compileShader(p),c.attachShader(f,d),c.attachShader(f,p),c.linkProgram(f),c.detachShader(f,d),c.detachShader(f,p),c.deleteShader(d),c.deleteShader(p),c.useProgram(f);const m=c.createBuffer();c.bindBuffer(34962,m),c.bufferData(34962,new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),35044);const y=c.getAttribLocation(f,"aPosition");c.vertexAttribPointer(y,3,5126,!1,0,0),c.enableVertexAttribArray(y),c.clearColor(1,1,1,1),c.clear(16384),c.viewport(0,0,1,1),c.drawArrays(4,0,3);const g=new Uint8Array(4);return c.readPixels(0,0,1,1,6408,5121,g),c.deleteProgram(f),c.deleteBuffer(m),g.join("")}(o),i="801621810",n="8016218135",r="80162181161",a=Fs?.isIpad?[["a7",r,12],["a8",n,15],["a8x",n,15],["a9",n,15],["a9x",n,15],["a10",n,15],["a10x",n,15],["a12",i,15],["a12x",i,15],["a12z",i,15],["a14",i,15],["a15",i,15],["m1",i,15],["m2",i,15]]:[["a7",r,12],["a8",n,12],["a9",n,15],["a10",n,15],["a11",i,15],["a12",i,15],["a13",i,15],["a14",i,15],["a15",i,15],["a16",i,15],["a17",i,15]];let l;return s==="80162181255"?l=a.filter(([,,c])=>c>=14):(l=a.filter(([,c])=>c===s),l.length||(l=a)),l.map(([c])=>`apple ${c} gpu`)}class gd extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype)}}const Ll=[],yd=[];function M0(o,e){if(o===e)return 0;const t=o;o.length>e.length&&(o=e,e=t);let s=o.length,i=e.length;for(;s>0&&o.charCodeAt(~-s)===e.charCodeAt(~-i);)s--,i--;let n,r=0;for(;r<s&&o.charCodeAt(r)===e.charCodeAt(r);)r++;if(s-=r,i-=r,s===0)return i;let a,l,c=0,h=0,u=0;for(;h<s;)yd[h]=o.charCodeAt(r+h),Ll[h]=++h;for(;u<i;)for(n=e.charCodeAt(r+u),a=u++,c=u,h=0;h<s;h++)l=n===yd[h]?a:a+1,a=Ll[h],c=Ll[h]=a>c?l>c?c+1:l:l>a?a+1:l;return c}function C0(o){return o!=null}const E0=({mobileTiers:o=[0,15,30,60],desktopTiers:e=[0,15,30,60],override:t={},glContext:s,failIfMajorPerformanceCaveat:i=!1,benchmarksURL:n="https://unpkg.com/detect-gpu@5.0.70/dist/benchmarks"}={})=>Il(void 0,void 0,void 0,function*(){const r={};if(tm)return{tier:0,type:"SSR"};const{isIpad:a=!!Fs?.isIpad,isMobile:l=!!Fs?.isMobile,screenSize:c=window.screen,loadBenchmarks:h=S=>Il(void 0,void 0,void 0,function*(){const C=yield fetch(`${n}/${S}`).then(w=>w.json());if(parseInt(C.shift().split(".")[0],10)<4)throw new gd("Detect GPU benchmark data is out of date. Please update to version 4x");return C})}=t;let{renderer:u}=t;const d=(S,C,w,R,P)=>({device:P,fps:R,gpu:w,isMobile:l,tier:S,type:C});let p,f="";if(u)u=md(u),p=[u];else{const S=s||function(w,R=!1){const P={alpha:!1,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:R,powerPreference:"high-performance",stencil:!1};w&&delete P.powerPreference;const z=window.document.createElement("canvas"),$=z.getContext("webgl",P)||z.getContext("experimental-webgl",P);return $??void 0}(Fs?.isSafari12,i);if(!S)return d(0,"WEBGL_UNSUPPORTED");const C=Fs?.isFirefox?null:S.getExtension("WEBGL_debug_renderer_info");if(u=C?S.getParameter(C.UNMASKED_RENDERER_WEBGL):S.getParameter(S.RENDERER),!u)return d(1,"FALLBACK");f=u,u=md(u),p=function(w,R,P){return R==="apple gpu"?w0(w,R,P):[R]}(S,u,l)}const m=(yield Promise.all(p.map(function(S){var C;return Il(this,void 0,void 0,function*(){const w=(be=>{const at=l?["adreno","apple","mali-t","mali","nvidia","powervr","samsung"]:["intel","apple","amd","radeon","nvidia","geforce","adreno"];for(const Ot of at)if(be.includes(Ot))return Ot})(S);if(!w)return;const R=`${l?"m":"d"}-${w}${a?"-ipad":""}.json`,P=r[R]=(C=r[R])!==null&&C!==void 0?C:h(R);let z;try{z=yield P}catch(be){if(be instanceof gd)throw be;return}const $=function(be){var at;const Ot=(be=be.replace(/\([^)]+\)/,"")).match(/\d+/)||be.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);return(at=Ot?.join("").replace(/\W|amd/g,""))!==null&&at!==void 0?at:""}(S);let q=z.filter(([,be])=>be===$);q.length||(q=z.filter(([be])=>be.includes(S)));const j=q.length;if(j===0)return;const X=S.split(/[.,()\[\]/\s]/g).sort().filter((be,at,Ot)=>at===0||be!==Ot[at-1]).join(" ");let Z,[we,,,,ue]=j>1?q.map(be=>[be,M0(X,be[2])]).sort(([,be],[,at])=>be-at)[0][0]:q[0],ye=Number.MAX_VALUE;const{devicePixelRatio:se}=window,Me=c.width*se*c.height*se;for(const be of ue){const[at,Ot]=be,br=at*Ot,yn=Math.abs(Me-br);yn<ye&&(ye=yn,Z=be)}if(!Z)return;const[,,ze,ot]=Z;return[ye,ze,we,ot]})}))).filter(C0).sort(([S=Number.MAX_VALUE,C],[w=Number.MAX_VALUE,R])=>S===w?C-R:S-w);if(!m.length){const S=v0.find(C=>u.includes(C));return S?d(0,"BLOCKLISTED",S):d(1,"FALLBACK",`${u} (${f})`)}const[,y,g,_]=m[0];if(y===-1)return d(0,"BLOCKLISTED",g,y,_);const b=l?o:e;let T=0;for(let S=0;S<b.length;S++)y>=b[S]&&(T=S);return d(T,"BENCHMARK",g,y,_)});function sm(o){let e=0;const t=performance.now();function s(){e++;const i=performance.now();if(i-t>=100){const n=e/((i-t)/1e3),r=Math.round(n/30)*30;o(r)}else requestAnimationFrame(s)}requestAnimationFrame(s)}function im(o=!1,e=!1){return new Promise(t=>{E0().then(s=>{let i=!1;const n=document.createElement("canvas"),r=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);if(i="transferControlToOffscreen"in n,r){const l=navigator.userAgent.match(/version\/(\d+)/i);i=(l?parseInt(l[1]):0)>=17}const a={dpr:devicePixelRatio,fps:30,width:innerWidth,height:innerHeight,mobile:s.isMobile!==void 0?s.isMobile:!1,supportOffScreenCanvas:i,supportWebGPU:!!navigator.gpu,quality:"Low",dev:o,editor:e};s.tier===3?a.quality="High":s.tier===2&&(a.quality="Medium"),sm(l=>{a.fps=l,t(a)})})})}function Si(o,e,t){return Math.min(e,Math.max(o,t))}function za(o,e,t){return(t-o)/(e-o)}function or(o,e,t){return o*(1-t)+e*t}function A0(o,e,t,s,i){return or(t,s,za(o,e,i))}function R0(o,e){const t=o-e;return Math.sqrt(t*t)}function is(o,e=1){return Number(o.toFixed(e))}function N0(o,e,t,s){return or(o,e,1-Math.exp(-t*s))}function P0(o,e=1){return Number(o.toFixed(e))}function F0(o,e,t,s){return o===e&&t===s}function D0(o,e,t,s){return 1/(3*e*o*o+2*t*o+s)}function O0(o,e,t,s,i){return e*(o*o*o)+t*(o*o)+s*o+i}function B0(o,e,t,s,i){const n=o*o;return e*(n*o)+t*n+s*o+i}function I0(o,e,t,s,i){if(o<=0)return 0;if(o>=1)return 1;if(F0(e,t,s,i))return o;const n=0,r=0,a=e,l=t,c=s,h=i,u=1,d=1,p=u-3*c+3*a-n,f=3*c-6*a+3*n,m=3*a-3*n,y=n,g=d-3*h+3*l-r,_=3*h-6*l+3*r,b=3*l-3*r,T=r;let S=o;for(let C=0;C<5;C++){const w=O0(S,p,f,m,y);let R=D0(S,p,f,m);R===1/0&&(R=o),S-=(w-o)*R,S=Math.min(Math.max(S,0),1)}return B0(S,g,_,b,T)}const Oo=o=>Math.round(Math.min(1,Math.max(0,o))*255).toString(16).padStart(2,"0");function L0({r:o,g:e,b:t,a:s=1}){const i=`#${Oo(o)}${Oo(e)}${Oo(t)}`;return s<1?`${i}${Oo(s)}`:i}async function U0(){for(;!document.getElementById("theatrejs-studio-root");)await new Promise(s=>setTimeout(s,100));const o=document.getElementById("theatrejs-studio-root");if(o===null||o.shadowRoot===null)return;const e=o.shadowRoot.getElementById("pointer-root");if(e===null)return;const t=e.children[0];if(t!==null){try{const i=t.children[1].children[1];i.parentElement?.removeChild(i)}catch{}try{const s=t.children[3];s.style.top="0",s.style.right="300px"}catch{}}}function k0(o,e,t,s){s.sheetObject(o,e,{transform:{position:{x:t.position.x,y:t.position.y,z:t.position.z},rotation:{x:t.rotation.x,y:t.rotation.y,z:t.rotation.z},scale:{x:t.scale.x,y:t.scale.y,z:t.scale.z},visible:t.visible}},i=>{const n=i.transform;t.position.copy(n.position),t.rotation.copy(n.rotation),t.scale.copy(n.scale),t.visible=n.visible})}const z0=["allowOverride","alphaHash","alphaTest","alphaToCoverage","blendAlpha","blendColor","blendDst","blendDstAlpha","blendEquation","blendEquationAlpha","blendSrc","blendSrcAlpha","blending","clipIntersection","clipShadows","clipping","clippingPlanes","colorWrite","combine","defaultAttributeValues","defines","depthFunc","depthTest","depthWrite","dithering","extensions","fog","forceSinglePass","fragmentShader","glslVersion","id","index0AttributeName","index1AttributeName","index2AttributeName","index3AttributeName","index4AttributeName","isMaterial","lights","linewidth","name","needsUpdate","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","precision","premultipliedAlpha","shadowSide","side","stencilFail","stencilFunc","stencilFuncMask","stencilRef","stencilWrite","stencilWriteMask","stencilZFail","stencilZPass","toneMapped","transparent","type","uniformsGroups","uniformsNeedUpdate","userData","uuid","version","vertexColors","vertexShader","visible","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin"];function xd(o){const e=typeof o;if(o===null||o.isTexture)return"texture";if(e==="boolean")return"boolean";if(e==="number")return"number";if(e==="string")return"string";if(e==="object"){if(o.isColor)return"color";if(o.isVector2)return"vector2";if(o.isVector3)return"vector3";if(o.isVector4)return"vector4";if(o.isMatrix2)return"matrix2";if(o.isMatrix3)return"matrix3";if(o.isMatrix4)return"matrix4";if(o.isEuler)return"euler";if(Array.isArray(o))return"array"}return"object"}function nm(o){const e=[];for(const s in o){const i=z0.find(a=>a===s),n=s.indexOf("_")===0||s.indexOf("is")===0;if(!(i||n))if(s==="uniforms"){const a=o.uniforms;for(const l in a){const c=a[l].value,h=xd(c);h==="array"||h==="object"||e.push({name:`uniforms.${l}.value`,type:h,value:c})}}else{const a=xd(o[s]);e.push({name:s,type:a,value:o[s]})}}return e.filter(s=>s.type!=="array"&&s.type!=="object"&&s.type!=="texture")}function rm(o){const e={},t={nudgeMultiplier:.01};return o.forEach(s=>{let i=s.value;switch(s.type){case"color":i=le.types.rgba({r:i.r,g:i.g,b:i.b,a:1});break;case"number":i=le.types.number(i,t);break;case"euler":case"vector3":i={x:le.types.number(i.x,t),y:le.types.number(i.y,t),z:le.types.number(i.z,t)};break;case"vector2":i={x:le.types.number(i.x,t),y:le.types.number(i.y,t)};break;case"vector4":i={x:le.types.number(i.x,t),y:le.types.number(i.y,t),z:le.types.number(i.z,t),w:le.types.number(i.w,t)};break;case"matrix2":i={0:le.types.number(i.elements[0],t),1:le.types.number(i.elements[1],t),2:le.types.number(i.elements[2],t),3:le.types.number(i.elements[3],t)};break;case"matrix3":i={0:le.types.number(i.elements[0],t),1:le.types.number(i.elements[1],t),2:le.types.number(i.elements[2],t),3:le.types.number(i.elements[3],t),4:le.types.number(i.elements[4],t),5:le.types.number(i.elements[5],t),6:le.types.number(i.elements[6],t),7:le.types.number(i.elements[7],t),8:le.types.number(i.elements[8],t)};break;case"matrix4":i={0:le.types.number(i.elements[0],t),1:le.types.number(i.elements[1],t),2:le.types.number(i.elements[2],t),3:le.types.number(i.elements[3],t),4:le.types.number(i.elements[4],t),5:le.types.number(i.elements[5],t),6:le.types.number(i.elements[6],t),7:le.types.number(i.elements[7],t),8:le.types.number(i.elements[8],t),9:le.types.number(i.elements[9],t),10:le.types.number(i.elements[10],t),11:le.types.number(i.elements[11],t),12:le.types.number(i.elements[12],t),13:le.types.number(i.elements[13],t),14:le.types.number(i.elements[14],t),15:le.types.number(i.elements[15],t)};break}if(s.name.includes(".")){const n=s.name.split(".");let r=e;for(let a=0;a<n.length-1;a++){const l=n[a];r[l]||(r[l]={}),r=r[l]}r[n[n.length-1]]=i}else e[s.name]=i}),e}function om(o,e,t){e.forEach(s=>{if(o[s.name]!==void 0)switch(s.type){case"boolean":case"number":o[s.name]=t.material[s.name];break;case"color":case"euler":case"matrix2":case"matrix3":case"matrix4":case"vector2":case"vector3":case"vector4":o[s.name].copy(t.material[s.name]);break}})}function V0(o,e,t,s){if(!t.isMaterial)return;const i=nm(t),n=rm(i);s.sheetObject(o,e,{material:n},r=>{om(t,i,r)})}const ch=o=>{o?.dispose()},qh=o=>{if(o)if(Array.isArray(o))o.forEach(e=>qh(e));else{for(const e in o){const t=o[e];t!==null&&t instanceof x.Texture&&ch(t)}if(o.isShaderMaterial===!0){const e=o;for(const t in e.uniforms){const s=e.uniforms[t];s.value!==null&&s.value instanceof x.Texture&&ch(s.value)}}o.dispose()}},Ls=o=>{if(o){for(;o.children.length>0;){const e=o.children[0];e.type==="Audio"?(e.pause(),e.parent&&e.parent.remove(e)):Ls(e)}if(o.parent&&o.parent.remove(o),o.isMesh){const e=o;e.geometry?.dispose(),qh(e.material)}o.dispose!==void 0&&o.dispose()}};exports.totalThreeObjects=0;const hh=()=>{exports.totalThreeObjects=0},Va=o=>{if(!o)return;let e=o.name.replaceAll(" ","").replaceAll("/",".");if(e.length===0&&(e=`obj_${exports.totalThreeObjects}`,exports.totalThreeObjects++),o.parent!==null&&o.parent.uuid.length>0&&(e=`${o.parent.uuid}.${e}`),o.uuid=e,o.isMesh!==void 0){const t=o;if(Array.isArray(t.material))t.material.forEach((s,i)=>{s.uuid=`${e}.material.${i}`});else{const s=t.material;s.uuid=`${e}.material`}}o.children.forEach(t=>Va(t))};class Ni{static renderer;static canvas;static context=null;static scene=null;static camera=null;static material=null;static inited=!1;static width=100;static height=100;static init(){this.inited||(this.canvas=document.createElement("canvas"),this.canvas.width=this.width,this.canvas.height=this.height,this.context=this.canvas.getContext("2d"),this.inited=!0)}static renderToBlob(e){this.init();const t=e.repeat.clone(),s=e.offset.clone();if(e.repeat.set(1,1),e.offset.set(0,0),this.context!==null){this.context.clearRect(0,0,this.width,this.height);const i=e.image;if(i!=null&&i.width>0){this.canvas.title=e.sourceFile;const n=this.canvas.width/i.width,r=this.renderToCanvas(e);this.context.drawImage(r,0,0,i.width*n,i.height*n)}}return e.repeat.copy(t),e.offset.copy(s),this.canvas.toDataURL("image/png")}static renderToCanvas(e){if(this.material===null){this.camera=new x.OrthographicCamera(-.5,.5,.5,-.5,0,100),this.scene=new x.Scene,this.material=new x.MeshBasicMaterial;const t=new x.BufferGeometry;t.setAttribute("position",new x.Float32BufferAttribute([-.5,-.5,0,1.5,-.5,0,-.5,1.5,0],3)),t.setAttribute("normal",new x.Float32BufferAttribute([0,0,1,0,0,1],3)),t.setAttribute("uv",new x.Float32BufferAttribute([0,0,2,0,0,2],2));const s=new x.Mesh(t,this.material);this.scene.add(s)}if(e.isRenderTargetTexture)this.material.map=e,this.renderer.render(this.scene,this.camera);else{const t=this.renderer.outputColorSpace,s=e.colorSpace;this.renderer.outputColorSpace=x.LinearSRGBColorSpace,e.colorSpace=x.LinearSRGBColorSpace,this.material.map=e,this.renderer.render(this.scene,this.camera),this.renderer.outputColorSpace=t,e.colorSpace=s}return this.renderer.domElement}}function G0(o){return new Promise(e=>{const t=new x.ObjectLoader;t.parseAsync(o.scene).then(s=>{const i=new x.AnimationMixer(s);if(o.animations.length>0){const r=o.animations.map(l=>x.AnimationClip.parse(l));i.clipAction(r[0]).play(),i.getRoot().animations=o.animations,i.getRoot().mixer=i}const n=[];o.cameras&&o.cameras.length>0&&o.cameras.forEach(r=>{const a=t.parse(r);n.push(a)}),e({animations:o.animations,model:s,mixer:i,cameras:n})})})}let uh=[];function am(o,e){Ni.renderer=e.renderer;const t=[];t.push({type:"boolean",prop:"Enabled",value:o.enabled});let s=(n,r)=>{console.log("Default Handle Pass:",n,r)};if(o.name==="EffectPass")o.effects.forEach(n=>{n.uniforms.size>0&&n.uniforms.forEach((r,a)=>{const l=`${n.name.replace("Effect","")} ${a}`;if(r.value===null)t.push({prop:a,title:l,type:"image",value:{offset:[0,0],repeat:[1,1],src:""}});else if(r.value.isTexture){const c=r.value,h=Ni.renderToBlob(c);t.push({prop:a,title:l,type:"image",value:{offset:[c.offset.x,c.offset.y],repeat:[c.repeat.x,c.repeat.y],src:h}})}else typeof r.value=="number"?t.push({prop:a,title:l,type:"number",value:r.value,step:.01}):typeof r.value=="string"?t.push({prop:a,title:l,type:"string",value:r.value}):typeof r.value=="boolean"&&t.push({prop:a,title:l,type:"boolean",value:r.value})})}),s=(n,r)=>{o.effects.forEach(a=>{a.uniforms.size>0&&a.uniforms.forEach((l,c)=>{c===n&&(l.value=r)})})};else if(o.name==="ShaderPass"){const n=o.fullscreenMaterial;for(const r in n.uniforms){const a=n.uniforms[r],l=`${n.name.replace("Material","")} ${r}`;if(a.value===null)t.push({title:l,prop:r,type:"image",value:{offset:[0,0],repeat:[1,1],src:""}});else if(a.value.isTexture){const c=a.value,h=Ni.renderToBlob(c);t.push({title:l,prop:r,type:"image",value:{offset:[c.offset.x,c.offset.y],repeat:[c.repeat.x,c.repeat.y],src:h}})}else typeof a.value=="number"?t.push({title:l,prop:r,type:"number",value:a.value,step:.01}):typeof a.value=="string"?t.push({title:l,prop:r,type:"string",value:a.value}):typeof a.value=="boolean"&&t.push({title:l,prop:r,type:"boolean",value:a.value})}s=(r,a)=>{const l=n.uniforms[r];l.value=a}}else return;const i=`${o.name}: ${o.scene.name}`;e.addGroup({title:i,items:t,onUpdate:(n,r)=>{n==="Enabled"?o.enabled=r:s(n,r)}}),uh.push(i)}function H0(o,e){o.passes.forEach(t=>{am(t,e)})}function W0(o){uh.forEach(e=>{o.removeGroup(e)}),uh=[]}function $0(o,e,t,s=1024){return new Promise(i=>{const n=e.aspect,r=e.fov,a=e.rotation.clone(),l=t.outputBuffer;e.aspect=1,e.fov=90,e.updateProjectionMatrix();const c=new x.WebGLRenderTarget(s,s,{format:x.RGBAFormat,depthBuffer:!0,stencilBuffer:!1});t.outputBuffer=c,bn(o,c,e,"nx",t,s).then(()=>{bn(o,c,e,"ny",t,s).then(()=>{bn(o,c,e,"nz",t,s).then(()=>{bn(o,c,e,"px",t,s).then(()=>{bn(o,c,e,"py",t,s).then(()=>{bn(o,c,e,"pz",t,s).then(()=>{e.aspect=n,e.fov=r,e.rotation.copy(a),e.updateMatrixWorld(),e.updateProjectionMatrix(),t.outputBuffer=l,c.dispose(),i()})})})})})})})}function bn(o,e,t,s,i,n){return new Promise(r=>{const a=Math.PI/2;switch(s){case"nx":t.rotation.set(0,-a,0);break;case"ny":t.rotation.set(-a,0,Math.PI);break;case"nz":t.rotation.set(0,0,0);break;case"px":t.rotation.set(0,a,0);break;case"py":t.rotation.set(a,0,Math.PI);break;case"pz":t.rotation.set(0,Math.PI,0);break}t.updateMatrixWorld(),i.render();const l=new Uint8Array(n*n*4);o.readRenderTargetPixels(e,0,0,n,n,l);const c=document.createElement("canvas");c.width=c.height=n;const h=c.getContext("2d"),u=h.createImageData(n,n);u.data.set(l),h.putImageData(u,0,0);const d=document.createElement("canvas");d.width=d.height=n;const p=d.getContext("2d");p.translate(0,n),p.scale(1,-1),p.drawImage(c,0,0);const f=d.toDataURL("image/png"),m=document.createElement("a");m.href=f,m.download=`${t.name}_${s}.png`,document.body.appendChild(m),m.click(),m.remove(),r()})}const Tn=Yh(["ctrlKey","metaKey","shiftKey","button","pointerId","pointerType","clientX","clientY","pageX","pageY"]),j0=Yh(["clientX","clientY","deltaX","deltaY","deltaMode"]),q0=Yh(["ctrlKey","metaKey","shiftKey","keyCode"]);function Y0(o,e){o.preventDefault(),j0(o,e)}function X0(o){o.preventDefault()}function Z0(o,e,t){for(const s of e)t[s]=o[s]}function Yh(o){return function(t,s){const i={type:t.type};Z0(t,o,i),s(i)}}function Ul(o,e){const t=[],s={type:o.type,touches:t};for(let i=0;i<o.touches.length;++i){const n=o.touches[i];t.push({pageX:n.pageX,pageY:n.pageY})}e(s)}const Q0={37:!0,38:!0,39:!0,40:!0};function K0(o,e){const{keyCode:t}=o;Q0[t]&&(o.preventDefault(),q0(o,e))}const J0={contextmenu:X0,mousedown:Tn,mousemove:Tn,mouseup:Tn,pointerdown:Tn,pointermove:Tn,pointerup:Tn,touchstart:Ul,touchmove:Ul,touchend:Ul,wheel:Y0,keydown:K0};let ex=0;class tx{id;worker;constructor(e,t,s){this.id=ex++,this.worker=t;const i=r=>{this.worker.postMessage({type:"event",id:this.id,data:r})};t.postMessage({type:"makeProxy",id:this.id});for(const[r,a]of Object.entries(s))e.addEventListener(r,l=>{a(l,i)});function n(){i({type:"resize",left:0,top:0,width:innerWidth,height:innerHeight})}window.addEventListener("resize",n),n()}}class lm extends x.EventDispatcher{style={};left=0;top=0;width=0;height=0;ownerDocument=void 0;constructor(){super(),this.ownerDocument=this}get clientWidth(){return this.width}set clientWidth(e){this.width=e}get clientHeight(){return this.height}set clientHeight(e){this.height=e}setPointerCapture(){}releasePointerCapture(){}getBoundingClientRect(){return{x:this.left,y:this.top,left:this.left,top:this.top,width:this.width,height:this.height,right:this.left+this.width,bottom:this.top+this.height,toJSON:()=>({})}}handleEvent(e){if(e.type==="size"){this.left=e.left,this.top=e.top,this.width=e.width,this.height=e.height;return}e.preventDefault=fo,e.stopPropagation=fo,this.dispatchEvent(e)}focus(){}getRootNode(){return this}}class sx{targets={};constructor(){this.handleEvent=this.handleEvent.bind(this)}makeProxy(e){const{id:t}=e,s=new lm;this.targets[t]=s}getProxy(e){return this.targets[e]}handleEvent(e){this.targets[e.id]?.handleEvent(e.data)}}class ix{assets={audio:new Map,image:new Map,json:new Map,model:new Map,video:new Map};components=new Map;settings={dpr:1,fps:30,width:0,height:0,mobile:!1,supportOffScreenCanvas:!1,supportWebGPU:!1,quality:"Low",dev:!1,editor:!1};onUpdateCallback;playing=!1;rafID=-1;dispose(){this.components.forEach(e=>{e.dispose()}),this.components.clear()}detectSettings(e=!1,t=!1){return new Promise(s=>{im(e,t).then(i=>{this.settings=i,s()})})}update(){}draw(){}play=()=>{this.playing||(this.playing=!0,this.onUpdate())};pause=()=>{this.playing&&(this.playing=!1,cancelAnimationFrame(this.rafID),this.rafID=-1)};onUpdate=()=>{this.update(),this.isApp&&this.draw(),this.onUpdateCallback&&this.onUpdateCallback(),this.rafID=requestAnimationFrame(this.onUpdate)};addComponent(e,t){this.components.set(e,t)}get debugEnabled(){return this.settings.dev}get isApp(){return!this.editor}set isApp(e){this.editor=!e}get editor(){return this.settings.editor}set editor(e){this.settings.editor=e}}class nx{canvas;inputElement;settings;playing=!1;rafID=-1;constructor(e,t,s){this.canvas=e,this.inputElement=t,this.settings=s}dispose(){this.stop()}play(){this.playing||(this.playing=!0,this.onUpdate())}stop(){this.playing&&(this.playing=!1,cancelAnimationFrame(this.rafID),this.rafID=-1)}update(){}draw(){}resize(e,t){this.settings.supportOffScreenCanvas&&(this.inputElement.clientWidth=e,this.inputElement.clientHeight=t,this.inputElement.width=e,this.inputElement.height=t)}onResize=e=>{this.resize(e.width,e.height)};onUpdate=()=>{this.update(),this.draw(),this.rafID=requestAnimationFrame(this.onUpdate)}}class Xh{name;_debug=!1;_editor=!1;broadcastChannel;constructor(e,t=!1,s=!1){this.name=e,this._debug=t,this._editor=s,t&&(this.broadcastChannel=new BroadcastChannel(e),this.broadcastChannel.addEventListener("message",this.messageHandler.bind(this)))}dispose(){this.broadcastChannel?.removeEventListener("message",this.messageHandler.bind(this)),this.broadcastChannel?.close()}get debug(){return this._debug}get editor(){return this._editor}send(e){if(this.editor&&e.target==="app"||!this.editor&&e.target==="editor")try{this.broadcastChannel?.postMessage(e)}catch(s){console.log("Hermes - Error sending message:"),console.log(s),console.log(e)}}messageHandler(e){const t=e.data;t.target==="app"?this.handleApp(t):this.handleEditor(t)}handleApp(e){}handleEditor(e){}}function rx(o,e,t,s,i){const n=1-o;return n*n*n*e+3*n*n*o*t+3*n*o*o*s+o*o*o*i}function ox(o,e,t){if(o.type!=="bezier"||o.handles.length!==4)throw new Error("Invalid keyframe data for Bézier interpolation.");const[s,i]=o.handles,n=(t-o.position)/(e.position-o.position);return rx(n,o.value,o.value+s,e.value+i,e.value)}class ax extends Xh{project;sheets=new Map;sheetObjects=new Map;sheetObjectCBs=new Map;sheetObjectUnsubscribe=new Map;activeSheet;studio=void 0;constructor(e=!1,t=!1){super("RemoteTheatre",e,t)}dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}loadProject(e,t){return this.project=le.getProject(e,{state:t}),new Promise((s,i)=>{this.project?.ready.then(()=>{if(t){const n=t.sheetsById;for(const r in n)this.sheet(r)}s()}).catch(()=>i())})}getSheetInstance(e,t){return t!==void 0?`${e}-${t}`:e}sheet(e,t){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const s=this.getSheetInstance(e,t);let i=this.sheets.get(s);return i!==void 0||(i=this.project?.sheet(e,t),this.sheets.set(s,i)),i}playSheet(e,t,s){return new Promise(i=>{const n=t!==void 0?{...t}:{};this.sheet(e,s)?.sequence.play(n).then(r=>i(r)),this.send({event:"playSheet",target:"editor",data:{sheet:e,instance:s,value:t}})})}pauseSheet(e,t){this.sheet(e,t)?.sequence.pause(),this.send({event:"pauseSheet",target:"editor",data:{sheet:e,instance:t}})}clearSheetObjects(e){this.sheetObjects.forEach((t,s)=>{s.search(`${e}_`)>-1&&this.unsubscribe(t)})}sheetObject(e,t,s,i,n){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const r=this.sheet(e,n);if(r===void 0)return;const l=`${this.getSheetInstance(e,n)}_${t}`;let c=this.sheetObjects.get(l),h=s;c!==void 0&&(h={...s,...c.value}),c=r.object(t,h,{reconfigure:!0}),this.sheetObjects.set(l,c),this.sheetObjectCBs.set(l,i!==void 0?i:fo);function u(p,f,m){if(typeof m=="object")if(em(m))p[f]={r:m.r,g:m.g,b:m.b,a:m.a};else for(const y in m){const g=m[y];typeof g=="object"&&u(m,y,g)}}const d=c.onValuesChange(p=>{const f=this.sheetObjectCBs.get(l);if(this.editor){for(const m in p){const y=p[m];typeof y=="object"&&u(p,m,y)}this.send({event:"updateSheetObject",target:"app",data:{sheet:e,sheetObject:l,values:p}}),f&&f(p)}else f&&f(p)});return this.sheetObjectUnsubscribe.set(l,d),c}getSheetObjectKeyframes(e,t,s){const i=this.sheet(e);if(i===void 0)return[];const n=`${e}_${t}`,r=this.sheetObjects.get(n);return r===void 0?[]:i.sequence.__experimental_getKeyframes(r.props[s])}getSheetObjectVectors(e,t){const s=this.sheet(e);if(s===void 0)return[];const i=`${e}_${t}`,n=this.sheetObjects.get(i);if(n===void 0)return[];const r=[],a=s.sequence.__experimental_getKeyframes(n.props.x),l=s.sequence.__experimental_getKeyframes(n.props.y),c=s.sequence.__experimental_getKeyframes(n.props.z),h=new Set;return a.forEach(d=>h.add(d.position)),l.forEach(d=>h.add(d.position)),c.forEach(d=>h.add(d.position)),Array.from(h).sort((d,p)=>d-p).forEach(d=>{const p=(f,m)=>{const y=f.find((b,T)=>b.position<=m&&(f[T+1]?.position||1/0)>m),g=f.find(b=>b.position>m);if(!y)return g?.value||0;if(!g||y.position===m)return y.value;if(y.type==="bezier")return ox(y,g,m);const _=(m-y.position)/(g.position-y.position);return y.value+_*(g.value-y.value)};r.push({position:d,x:p(a,d),y:p(l,d),z:p(c,d)})}),r}unsubscribe(e){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const t=e.address.sheetId,s=e.address.objectKey;this.sheets.get(t)?.detachObject(s);const n=`${t}_${s}`,r=this.sheetObjectUnsubscribe.get(n);r!==void 0&&(this.sheetObjects.delete(n),this.sheetObjectCBs.delete(n),this.sheetObjectUnsubscribe.delete(n),r())}handleApp(e){let t;switch(e.event){case"setSheet":t=this.sheets.get(e.data.sheet),t!==void 0?this.studio?.setSelection([t]):console.log(`Hermes - Can't set Sheet: ${e.data.sheet}`,t);break;case"setSheetObject":t=this.sheetObjects.get(`${e.data.sheet}_${e.data.key}`),t!==void 0?this.studio?.setSelection([t]):console.log(`Hermes - Can't set Sheet Object: ${e.data.sheet}, ${e.data.key}: ${e.data.sheet}_${e.data.key}`,t);break;case"updateSheetObject":t=this.sheets.get(e.data.sheet),t!==void 0&&t.sequence.pause(),t=this.sheetObjectCBs.get(e.data.sheetObject),t!==void 0?t(e.data.values):console.log(`Hermes - Can't update Sheet Object: ${e.data.sheetObject}, ${e.data.sheet}`,t);break;case"updateTimeline":t=this.sheets.get(e.data.sheet),t!==void 0?t.sequence.position=e.data.position:console.log(`Hermes - Can't update sheet position: ${e.data.sheet}, ${e.data.position}`);break}}handleEditor(e){switch(e.event){case"playSheet":this.sheet(e.data.sheet,e.data.instance)?.sequence.play(e.data.value);break;case"pauseSheet":this.sheet(e.data.sheet,e.data.instance)?.sequence.pause();break}}getSheetNames(){const e=[];return this.sheets.forEach((t,s)=>{e.push(s)}),e}handleEditorApp(){if(this.editor){this.studio?.ui.restore(),this.studio?.onSelectionChange(i=>{i.length<1||i.forEach(n=>{let r=n.address.sheetId,a="setSheet",l={};switch(n.type){case"Theatre_Sheet_PublicAPI":a="setSheet",l={sheet:n.address.sheetId},this.activeSheet=this.sheets.get(n.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":a="setSheetObject",r+=`_${n.address.objectKey}`,l={id:r,sheet:n.address.sheetId,key:n.address.objectKey},this.activeSheet=this.sheets.get(n.address.sheetId);break}this.send({event:a,target:"app",data:l})})});let e=-1;const t=()=>{if(this.activeSheet!==void 0&&e!==this.activeSheet.sequence.position){e=this.activeSheet.sequence.position;const i=this.activeSheet;this.send({event:"updateTimeline",target:"app",data:{position:e,sheet:i.address.sheetId}})}},s=()=>{t(),requestAnimationFrame(s)};t(),s()}else this.studio?.ui.hide()}}function lx(o){if(o.name==="cameras")return"camera";if(o.name==="interactive")return"interactive";if(o.name==="lights")return"light";if(o.name==="ui")return"ui";if(o.name==="utils")return"utils";const e=o.type;return e.search("Helper")>-1?"icon_utils":e.search("Camera")>-1?"camera":e.search("Light")>-1?"light":"obj3D"}function Wn(o){const e={name:o.name,type:o.type,uuid:o.uuid,children:[]};return o.children.forEach(t=>{e.children.push(Wn(t))}),e}function cx(o){const e={};for(const t in o){const s=o[t].value;e[t]={value:s},s===null?e[t].value={src:"",offset:[0,0],repeat:[1,1]}:s!==void 0&&s.isTexture&&(e[t].value={src:s.image.src,offset:[s.offset.x,s.offset.y],repeat:[s.repeat.x,s.repeat.y]})}return e}function hx(o){switch(o){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function Sn(o){const e={};for(const t in o){if(t.substring(0,1)==="_"||t.substring(0,2)==="is"||hx(t))continue;const s=typeof o[t],i=o[t];switch(s){case"boolean":case"number":case"string":e[t]=i;break;case"object":i!==null?(e[t]=i,i.isTexture?e[t]={src:Ni.renderToBlob(i),offset:[i.offset.x,i.offset.y],repeat:[i.repeat.x,i.repeat.y]}:t==="uniforms"&&(e[t]=cx(e[t]))):t==="glslVersion"?e[t]="":e[t]={src:"",offset:[0,0],repeat:[1,1]};break}}return o.anisotropy!==void 0&&(e.anisotropy=o.anisotropy),o.clearcoat!==void 0&&(e.clearcoat=o.clearcoat),o.iridescence!==void 0&&(e.iridescence=o.iridescence),o.dispersion!==void 0&&(e.dispersion=o.dispersion),o.sheen!==void 0&&(e.sheen=o.sheen),o.transmission!==void 0&&(e.transmission=o.transmission),o.transmission!==void 0&&(e.transmission=o.transmission),e}function kl(o){o.updateMatrix();const e={name:o.name,type:o.type,uuid:o.uuid,visible:o.visible,matrix:o.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0,children:[]};o.animations.forEach(s=>{e.animations.push({name:s.name,duration:s.duration,blendMode:s.blendMode})});const t=o.type.toLowerCase();if(t.search("mesh")>-1){const s=o;if(Array.isArray(s.material)){const i=[];s.material.forEach(n=>{i.push(Sn(n))}),e.material=i}else e.material=Sn(s.material)}else if(t.search("points")>-1){const s=o;if(Array.isArray(s.material)){const i=[];s.material.forEach(n=>{i.push(Sn(n))}),e.material=i}else e.material=Sn(s.material)}else if(t.search("line")>-1){const s=o;if(Array.isArray(s.material)){const i=[];s.material.forEach(n=>{i.push(Sn(n))}),e.material=i}else e.material=Sn(s.material)}else t.search("camera")>-1?o.type==="PerspectiveCamera"?e.perspectiveCameraInfo={fov:o.fov,zoom:o.zoom,near:o.near,far:o.far,focus:o.focus,aspect:o.aspect,filmGauge:o.filmGauge,filmOffset:o.filmOffset}:o.type==="OrthographicCamera"&&(e.orthographicCameraInfo={zoom:o.zoom,near:o.near,far:o.far,left:o.left,right:o.right,top:o.top,bottom:o.bottom}):t.search("light")>-1&&(e.lightInfo={color:o.color,intensity:o.intensity,decay:o.decay,distance:o.distance,angle:o.angle,penumbra:o.penumbra,groundColor:o.groundColor,width:o.width,height:o.height});return e}function ux(o,e){const t=e.split(".");switch(t.length){case 1:return o[t[0]];case 2:return o[t[0]][t[1]];case 3:return o[t[0]][t[1]][t[2]];case 4:return o[t[0]][t[1]][t[2]][t[3]];case 5:return o[t[0]][t[1]][t[2]][t[3]][t[4]];case 6:return o[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]]}}function dx(o,e){for(const t in e)o[t]=e[t]}function Ye(o,e,t){if(o===void 0){console.log(`Hermes - Can't set props: ${e}`,t);return}const s=e.split("."),i=s.length;if(typeof t!="object")switch(i){case 1:o[s[0]]=t;break;case 2:o[s[0]][s[1]]=t;break;case 3:o[s[0]][s[1]][s[2]]=t;break;case 4:o[s[0]][s[1]][s[2]][s[3]]=t;break;case 5:o[s[0]][s[1]][s[2]][s[3]][s[4]]=t;break}else{let r;switch(i){case 1:r=o[s[0]];break;case 2:r=o[s[0]][s[1]];break;case 3:r=o[s[0]][s[1]][s[2]];break;case 4:r=o[s[0]][s[1]][s[2]][s[3]];break;case 5:r=o[s[0]][s[1]][s[2]][s[3]][s[4]];break}r!=null?dx(r,t):console.log(`Hermes - Can't set props because target isn't found: ${e}`,t)}}function cm(o){return new Promise((e,t)=>{const s=new Image;s.onload=()=>{const i=new x.Texture(s);i.wrapS=x.RepeatWrapping,i.wrapT=x.RepeatWrapping,i.needsUpdate=!0,e(i)},s.onerror=t,s.src=o})}var de=(o=>(o.CUSTOM="ToolEvents::custom",o.SELECT_DROPDOWN="ToolEvents::selectDropdown",o.DRAG_UPDATE="ToolEvents::dragUpdate",o.ADD_SCENE="ToolEvents::addScene",o.REFRESH_SCENE="ToolEvents::refreshScene",o.REMOVE_SCENE="ToolEvents::removeScene",o.SET_SCENE="ToolEvents::setScene",o.SET_OBJECT="ToolEvents::setObject",o.CLEAR_OBJECT="ToolEvents::clearObject",o.ADD_CAMERA="ToolEvents::addCamera",o.REMOVE_CAMERA="ToolEvents::removeCamera",o.ADD_GROUP="ToolEvents::addGroup",o.REMOVE_GROUP="ToolEvents::removeGroup",o.ADD_SPLINE="ToolEvents::addSpline",o.ADD_RENDERER="ToolEvents::addRenderer",o.UPDATE_RENDERER="ToolEvents::updateRenderer",o))(de||{});class px extends Xh{name;canvas=null;inputElement=null;scene=void 0;scenes=new Map;renderer=void 0;renderTargets=new Map;renderTargetsResize=new Map;groups=new Map;_listeners={};constructor(e,t=!1,s=!1){super("RemoteThree",t,s),this.name=e}dispose(){this.scenes.forEach(e=>{Ls(e)}),this.scenes.clear(),this.scene&&Ls(this.scene),this.renderTargets.forEach(e=>{e.dispose()}),this.renderTargets.clear(),this.renderer?.dispose()}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const s=this._listeners;s[e]===void 0&&(s[e]=[]),s[e].indexOf(t)===-1&&s[e].push(t)}hasEventListener(e,t){const s=this._listeners;return s===void 0?!1:s[e]!==void 0&&s[e].indexOf(t)!==-1}removeEventListener(e,t){const s=this._listeners;if(s===void 0)return;const i=s[e];if(i!==void 0){const n=i.indexOf(t);n!==-1&&i.splice(n,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const s=t[e.type];if(s!==void 0){const i={...e,target:this},n=s.slice(0);for(let r=0,a=n.length;r<a;r++)n[r].call(this,i)}}getObjectByUUID(e){const t=e.split(".")[0],s=this.scenes.get(t);if(s!==void 0)return s.getObjectByProperty("uuid",e)}getObject(e){if(!this.debug)return;this.renderer!==void 0&&(Ni.renderer=this.renderer);const t=this.getObjectByUUID(e);t&&this.setObject(t)}setObject(e){this.renderer!==void 0&&(Ni.renderer=this.renderer);const t=kl(e);this.dispatchEvent({type:"ToolEvents::setObject",value:t})}requestMethod(e,t,s,i){const n=this.getObjectByUUID(e);if(n)try{i!==void 0?ux(n,i)[t](s):n[t](s)}catch(r){console.log("Hermes - Error requesting method:",e,t,s),console.log(r)}}updateObject(e,t,s){this.send({event:"updateObject",target:"app",data:{uuid:e,key:t,value:s}})}createTexture(e,t,s){this.send({event:"createTexture",target:"app",data:{uuid:e,key:t,value:s}})}onUpdateObject(e,t,s){const i=this.getObjectByUUID(e);i&&Ye(i,t,s)}onCreateTexture(e,t,s){const i=this.getObjectByUUID(e);if(i){const n=r=>{const a=t.split(".");switch(a.length){case 1:i[a[0]]=r;break;case 2:i[a[0]][a[1]]=r;break;case 3:i[a[0]][a[1]][a[2]]=r;break;case 4:i[a[0]][a[1]][a[2]][a[3]]=r;break;case 5:i[a[0]][a[1]][a[2]][a[3]][a[4]]=r;break}i.material.needsUpdate=!0};s.src.length>0?cm(s.src).then(r=>{r.offset.set(s.offset[0],s.offset[1]),r.repeat.set(s.repeat[0],s.repeat[1]),n(r)}):n(null)}}addGroup(e){this.groups.get(e.title)===void 0&&(this.groups.set(e.title,{title:e.title,onUpdate:e.onUpdate}),this.send({event:"addGroup",target:"editor",data:JSON.stringify(e)}))}removeGroup(e){this.groups.get(e)!==void 0&&(this.groups.delete(e),this.send({event:"removeGroup",target:"editor",data:e}))}updateGroup(e,t,s){this.send({event:"updateGroup",target:"app",data:JSON.stringify({group:e,prop:t,value:s})})}addSpline(e){setTimeout(()=>{this.send({event:"addSpline",target:"editor",data:JSON.stringify(e.toJSON())})},1)}setRenderer(e,t=null){if(this.renderer=e,this.canvas=e.domElement,this.inputElement=t!==null?t:this.canvas,!this.debug)return;const s=`#${e.getClearColor(new x.Color).getHexString()}`;this.send({event:"addRenderer",target:"editor",data:{autoClear:e.autoClear,autoClearColor:e.autoClearColor,autoClearDepth:e.autoClearDepth,autoClearStencil:e.autoClearStencil,outputColorSpace:e.outputColorSpace,localClippingEnabled:e.localClippingEnabled,clearColor:s,clearAlpha:e.getClearAlpha(),colorManagement:x.ColorManagement.enabled,toneMapping:e.toneMapping,toneMappingExposure:e.toneMappingExposure,type:e.isWebGLRenderer?"WebGLRenderer":"WebGPURenderer"}})}updateRenderer(e){this.send({event:"updateRenderer",target:"app",data:e})}addScene(e){if(e===void 0||(this.scenes.set(e.name,e),!this.debug))return;hh(),Va(e);const t=Wn(e);this.send({event:"addScene",target:"editor",data:t})}refreshScene(e){if(!this.debug)return;const t=this.scenes.get(e);if(t!==void 0){const s=Wn(t);this.send({event:"refreshScene",target:"app",data:s})}}removeScene(e){if(e===void 0||(this.scenes.delete(e.name),!this.debug))return;const t=Wn(e);this.send({event:"removeScene",target:"editor",data:t})}removeAllScenes(){this.scenes.forEach(e=>this.removeScene(e))}getScene(e){let t=null;return this.scene!==void 0&&this.scene.uuid.search(e)>-1?this.scene:(this.scenes.forEach((s,i)=>{e.search(i)>-1&&(t=s)}),t)}setScene(e){if(e===void 0||(this.scene=e,!this.debug))return;this.renderer!==void 0&&(Ni.renderer=this.renderer),hh(),Va(e);const t=Wn(e);this.send({event:"setScene",target:"editor",data:t})}addCamera(e){if(!this.debug)return;const t=kl(e);this.send({event:"addCamera",target:"editor",data:t})}removeCamera(e){if(!this.debug)return;const t=kl(e);this.send({event:"removeCamera",target:"editor",data:t})}handleApp(e){switch(e.event){case"refreshScene":this.send({event:"refreshScene",target:"editor",data:Wn(this.scenes.get(e.data.name))});break;case"updateRenderer":this.renderer&&(this.renderer.autoClearColor=e.data.autoClearColor,this.renderer.outputColorSpace=e.data.outputColorSpace,this.renderer.localClippingEnabled=e.data.localClippingEnabled,this.renderer.setClearColor(e.data.clearColor,e.data.clearAlpha),this.renderer.toneMapping=e.data.toneMapping,this.renderer.toneMappingExposure=e.data.toneMappingExposure,x.ColorManagement.enabled=e.data.colorManagement);break}if(e.event==="updateGroup"){const t=JSON.parse(e.data);this.groups.get(t.group)?.onUpdate(t.prop,t.value)}}handleEditor(e){switch(e.event){case"addScene":this.dispatchEvent({type:"ToolEvents::addScene",value:e.data});break;case"refreshScene":this.dispatchEvent({type:"ToolEvents::refreshScene",value:e.data});break;case"removeScene":this.dispatchEvent({type:"ToolEvents::removeScene",value:e.data});break;case"setScene":this.dispatchEvent({type:"ToolEvents::setScene",value:e.data});break;case"addCamera":this.dispatchEvent({type:"ToolEvents::addCamera",value:e.data});break;case"removeCamera":this.dispatchEvent({type:"ToolEvents::removeCamera",value:e.data});break;case"addGroup":this.dispatchEvent({type:"ToolEvents::addGroup",value:e.data});break;case"removeGroup":this.dispatchEvent({type:"ToolEvents::removeGroup",value:e.data});break;case"addSpline":this.dispatchEvent({type:"ToolEvents::addSpline",value:e.data});break;case"addRenderer":this.dispatchEvent({type:"ToolEvents::addRenderer",value:e.data})}}messageHandler(e){const t=e.data;if(t.event==="updateObject"){this.onUpdateObject(t.data.uuid,t.data.key,t.data.value);return}else if(t.event==="createTexture"){this.onCreateTexture(t.data.uuid,t.data.key,t.data.value);return}t.target==="app"?this.handleApp(t):this.handleEditor(t)}addRT(e,t=!0,s){const i=new x.WebGLRenderTarget(32,32,s);i.texture.name=e,this.renderTargets.set(e,i),this.renderTargetsResize.set(e,t)}removeRT(e){this.renderTargets.delete(e),this.renderTargetsResize.delete(e)}resize(e,t){const s=this.dpr;this.renderTargets.forEach((n,r)=>{this.renderTargetsResize.get(r)&&n.setSize(e*s,t*s)});const i=!(this.renderer?.domElement instanceof OffscreenCanvas);this.renderer?.setSize(e,t,i)}set dpr(e){this.renderer?.setPixelRatio(Si(1,2,e))}get dpr(){return this.renderer!==void 0?this.renderer?.getPixelRatio():1}get width(){return this.renderer!==void 0?this.renderer.domElement.width/this.dpr:0}get height(){return this.renderer!==void 0?this.renderer.domElement.height/this.dpr:0}}var Bo={exports:{}},Sr={};/**
|
|
18
|
+
`,d=c.createShader(35633),p=c.createShader(35632),f=c.createProgram();if(!(p&&d&&f))return;c.shaderSource(d,h),c.shaderSource(p,u),c.compileShader(d),c.compileShader(p),c.attachShader(f,d),c.attachShader(f,p),c.linkProgram(f),c.detachShader(f,d),c.detachShader(f,p),c.deleteShader(d),c.deleteShader(p),c.useProgram(f);const m=c.createBuffer();c.bindBuffer(34962,m),c.bufferData(34962,new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),35044);const y=c.getAttribLocation(f,"aPosition");c.vertexAttribPointer(y,3,5126,!1,0,0),c.enableVertexAttribArray(y),c.clearColor(1,1,1,1),c.clear(16384),c.viewport(0,0,1,1),c.drawArrays(4,0,3);const g=new Uint8Array(4);return c.readPixels(0,0,1,1,6408,5121,g),c.deleteProgram(f),c.deleteBuffer(m),g.join("")}(o),i="801621810",n="8016218135",r="80162181161",a=Fs?.isIpad?[["a7",r,12],["a8",n,15],["a8x",n,15],["a9",n,15],["a9x",n,15],["a10",n,15],["a10x",n,15],["a12",i,15],["a12x",i,15],["a12z",i,15],["a14",i,15],["a15",i,15],["m1",i,15],["m2",i,15]]:[["a7",r,12],["a8",n,12],["a9",n,15],["a10",n,15],["a11",i,15],["a12",i,15],["a13",i,15],["a14",i,15],["a15",i,15],["a16",i,15],["a17",i,15]];let l;return s==="80162181255"?l=a.filter(([,,c])=>c>=14):(l=a.filter(([,c])=>c===s),l.length||(l=a)),l.map(([c])=>`apple ${c} gpu`)}class gd extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype)}}const Ll=[],yd=[];function M0(o,e){if(o===e)return 0;const t=o;o.length>e.length&&(o=e,e=t);let s=o.length,i=e.length;for(;s>0&&o.charCodeAt(~-s)===e.charCodeAt(~-i);)s--,i--;let n,r=0;for(;r<s&&o.charCodeAt(r)===e.charCodeAt(r);)r++;if(s-=r,i-=r,s===0)return i;let a,l,c=0,h=0,u=0;for(;h<s;)yd[h]=o.charCodeAt(r+h),Ll[h]=++h;for(;u<i;)for(n=e.charCodeAt(r+u),a=u++,c=u,h=0;h<s;h++)l=n===yd[h]?a:a+1,a=Ll[h],c=Ll[h]=a>c?l>c?c+1:l:l>a?a+1:l;return c}function C0(o){return o!=null}const E0=({mobileTiers:o=[0,15,30,60],desktopTiers:e=[0,15,30,60],override:t={},glContext:s,failIfMajorPerformanceCaveat:i=!1,benchmarksURL:n="https://unpkg.com/detect-gpu@5.0.70/dist/benchmarks"}={})=>Il(void 0,void 0,void 0,function*(){const r={};if(tm)return{tier:0,type:"SSR"};const{isIpad:a=!!Fs?.isIpad,isMobile:l=!!Fs?.isMobile,screenSize:c=window.screen,loadBenchmarks:h=S=>Il(void 0,void 0,void 0,function*(){const C=yield fetch(`${n}/${S}`).then(w=>w.json());if(parseInt(C.shift().split(".")[0],10)<4)throw new gd("Detect GPU benchmark data is out of date. Please update to version 4x");return C})}=t;let{renderer:u}=t;const d=(S,C,w,R,P)=>({device:P,fps:R,gpu:w,isMobile:l,tier:S,type:C});let p,f="";if(u)u=md(u),p=[u];else{const S=s||function(w,R=!1){const P={alpha:!1,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:R,powerPreference:"high-performance",stencil:!1};w&&delete P.powerPreference;const z=window.document.createElement("canvas"),$=z.getContext("webgl",P)||z.getContext("experimental-webgl",P);return $??void 0}(Fs?.isSafari12,i);if(!S)return d(0,"WEBGL_UNSUPPORTED");const C=Fs?.isFirefox?null:S.getExtension("WEBGL_debug_renderer_info");if(u=C?S.getParameter(C.UNMASKED_RENDERER_WEBGL):S.getParameter(S.RENDERER),!u)return d(1,"FALLBACK");f=u,u=md(u),p=function(w,R,P){return R==="apple gpu"?w0(w,R,P):[R]}(S,u,l)}const m=(yield Promise.all(p.map(function(S){var C;return Il(this,void 0,void 0,function*(){const w=(be=>{const at=l?["adreno","apple","mali-t","mali","nvidia","powervr","samsung"]:["intel","apple","amd","radeon","nvidia","geforce","adreno"];for(const Ot of at)if(be.includes(Ot))return Ot})(S);if(!w)return;const R=`${l?"m":"d"}-${w}${a?"-ipad":""}.json`,P=r[R]=(C=r[R])!==null&&C!==void 0?C:h(R);let z;try{z=yield P}catch(be){if(be instanceof gd)throw be;return}const $=function(be){var at;const Ot=(be=be.replace(/\([^)]+\)/,"")).match(/\d+/)||be.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);return(at=Ot?.join("").replace(/\W|amd/g,""))!==null&&at!==void 0?at:""}(S);let q=z.filter(([,be])=>be===$);q.length||(q=z.filter(([be])=>be.includes(S)));const j=q.length;if(j===0)return;const X=S.split(/[.,()\[\]/\s]/g).sort().filter((be,at,Ot)=>at===0||be!==Ot[at-1]).join(" ");let Z,[we,,,,ue]=j>1?q.map(be=>[be,M0(X,be[2])]).sort(([,be],[,at])=>be-at)[0][0]:q[0],ye=Number.MAX_VALUE;const{devicePixelRatio:se}=window,Me=c.width*se*c.height*se;for(const be of ue){const[at,Ot]=be,br=at*Ot,yn=Math.abs(Me-br);yn<ye&&(ye=yn,Z=be)}if(!Z)return;const[,,ze,ot]=Z;return[ye,ze,we,ot]})}))).filter(C0).sort(([S=Number.MAX_VALUE,C],[w=Number.MAX_VALUE,R])=>S===w?C-R:S-w);if(!m.length){const S=v0.find(C=>u.includes(C));return S?d(0,"BLOCKLISTED",S):d(1,"FALLBACK",`${u} (${f})`)}const[,y,g,_]=m[0];if(y===-1)return d(0,"BLOCKLISTED",g,y,_);const b=l?o:e;let T=0;for(let S=0;S<b.length;S++)y>=b[S]&&(T=S);return d(T,"BENCHMARK",g,y,_)});function sm(o){let e=0;const t=performance.now();function s(){e++;const i=performance.now();if(i-t>=100){const n=e/((i-t)/1e3),r=Math.round(n/30)*30;o(r)}else requestAnimationFrame(s)}requestAnimationFrame(s)}function im(o=!1,e=!1){return new Promise(t=>{E0().then(s=>{let i=!1;const n=document.createElement("canvas"),r=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);if(i="transferControlToOffscreen"in n,r){const l=navigator.userAgent.match(/version\/(\d+)/i);i=(l?parseInt(l[1]):0)>=17}const a={dpr:devicePixelRatio,fps:30,width:innerWidth,height:innerHeight,mobile:s.isMobile!==void 0?s.isMobile:!1,supportOffScreenCanvas:i,supportWebGPU:!!navigator.gpu,quality:"Low",dev:o,editor:e};s.tier===3?a.quality="High":s.tier===2&&(a.quality="Medium"),sm(l=>{a.fps=l,t(a)})})})}function Si(o,e,t){return Math.min(e,Math.max(o,t))}function za(o,e,t){return(t-o)/(e-o)}function or(o,e,t){return o*(1-t)+e*t}function A0(o,e,t,s,i){return or(t,s,za(o,e,i))}function R0(o,e){const t=o-e;return Math.sqrt(t*t)}function is(o,e=1){return Number(o.toFixed(e))}function N0(o,e,t,s){return or(o,e,1-Math.exp(-t*s))}function P0(o,e=1){return Number(o.toFixed(e))}function F0(o,e,t,s){return o===e&&t===s}function D0(o,e,t,s){return 1/(3*e*o*o+2*t*o+s)}function O0(o,e,t,s,i){return e*(o*o*o)+t*(o*o)+s*o+i}function B0(o,e,t,s,i){const n=o*o;return e*(n*o)+t*n+s*o+i}function I0(o,e,t,s,i){if(o<=0)return 0;if(o>=1)return 1;if(F0(e,t,s,i))return o;const n=0,r=0,a=e,l=t,c=s,h=i,u=1,d=1,p=u-3*c+3*a-n,f=3*c-6*a+3*n,m=3*a-3*n,y=n,g=d-3*h+3*l-r,_=3*h-6*l+3*r,b=3*l-3*r,T=r;let S=o;for(let C=0;C<5;C++){const w=O0(S,p,f,m,y);let R=D0(S,p,f,m);R===1/0&&(R=o),S-=(w-o)*R,S=Math.min(Math.max(S,0),1)}return B0(S,g,_,b,T)}const Oo=o=>Math.round(Math.min(1,Math.max(0,o))*255).toString(16).padStart(2,"0");function L0({r:o,g:e,b:t,a:s=1}){const i=`#${Oo(o)}${Oo(e)}${Oo(t)}`;return s<1?`${i}${Oo(s)}`:i}async function U0(){for(;!document.getElementById("theatrejs-studio-root");)await new Promise(s=>setTimeout(s,100));const o=document.getElementById("theatrejs-studio-root");if(o===null||o.shadowRoot===null)return;const e=o.shadowRoot.getElementById("pointer-root");if(e===null)return;const t=e.children[0];if(t!==null){try{const i=t.children[1].children[1];i.parentElement?.removeChild(i)}catch{}try{const s=t.children[3];s.style.top="0",s.style.right="300px"}catch{}}}function k0(o,e,t,s){s.sheetObject(o,e,{transform:{position:{x:t.position.x,y:t.position.y,z:t.position.z},rotation:{x:t.rotation.x,y:t.rotation.y,z:t.rotation.z},scale:{x:t.scale.x,y:t.scale.y,z:t.scale.z},visible:t.visible}},i=>{const n=i.transform;t.position.copy(n.position),t.rotation.copy(n.rotation),t.scale.copy(n.scale),t.visible=n.visible})}const z0=["allowOverride","alphaHash","alphaTest","alphaToCoverage","blendAlpha","blendColor","blendDst","blendDstAlpha","blendEquation","blendEquationAlpha","blendSrc","blendSrcAlpha","blending","clipIntersection","clipShadows","clipping","clippingPlanes","colorWrite","combine","defaultAttributeValues","defines","depthFunc","depthTest","depthWrite","dithering","extensions","fog","forceSinglePass","fragmentShader","glslVersion","id","index0AttributeName","index1AttributeName","index2AttributeName","index3AttributeName","index4AttributeName","isMaterial","lights","linewidth","name","needsUpdate","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","precision","premultipliedAlpha","shadowSide","side","stencilFail","stencilFunc","stencilFuncMask","stencilRef","stencilWrite","stencilWriteMask","stencilZFail","stencilZPass","toneMapped","transparent","type","uniformsGroups","uniformsNeedUpdate","userData","uuid","version","vertexColors","vertexShader","visible","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin"];function xd(o){const e=typeof o;if(o===null||o.isTexture)return"texture";if(e==="boolean")return"boolean";if(e==="number")return"number";if(e==="string")return"string";if(e==="object"){if(o.isColor)return"color";if(o.isVector2)return"vector2";if(o.isVector3)return"vector3";if(o.isVector4)return"vector4";if(o.isMatrix2)return"matrix2";if(o.isMatrix3)return"matrix3";if(o.isMatrix4)return"matrix4";if(o.isEuler)return"euler";if(Array.isArray(o))return"array"}return"object"}function nm(o){const e=[];for(const s in o){const i=z0.find(a=>a===s),n=s.indexOf("_")===0||s.indexOf("is")===0;if(!(i||n))if(s==="uniforms"){const a=o.uniforms;for(const l in a){const c=a[l].value,h=xd(c);h==="array"||h==="object"||e.push({name:`uniforms.${l}.value`,type:h,value:c})}}else{const a=xd(o[s]);e.push({name:s,type:a,value:o[s]})}}return e.filter(s=>s.type!=="array"&&s.type!=="object"&&s.type!=="texture")}function rm(o){const e={},t={nudgeMultiplier:.01};return o.forEach(s=>{let i=s.value;switch(s.type){case"color":i=le.types.rgba({r:i.r,g:i.g,b:i.b,a:1});break;case"number":i=le.types.number(i,t);break;case"euler":case"vector3":i={x:le.types.number(i.x,t),y:le.types.number(i.y,t),z:le.types.number(i.z,t)};break;case"vector2":i={x:le.types.number(i.x,t),y:le.types.number(i.y,t)};break;case"vector4":i={x:le.types.number(i.x,t),y:le.types.number(i.y,t),z:le.types.number(i.z,t),w:le.types.number(i.w,t)};break;case"matrix2":i={0:le.types.number(i.elements[0],t),1:le.types.number(i.elements[1],t),2:le.types.number(i.elements[2],t),3:le.types.number(i.elements[3],t)};break;case"matrix3":i={0:le.types.number(i.elements[0],t),1:le.types.number(i.elements[1],t),2:le.types.number(i.elements[2],t),3:le.types.number(i.elements[3],t),4:le.types.number(i.elements[4],t),5:le.types.number(i.elements[5],t),6:le.types.number(i.elements[6],t),7:le.types.number(i.elements[7],t),8:le.types.number(i.elements[8],t)};break;case"matrix4":i={0:le.types.number(i.elements[0],t),1:le.types.number(i.elements[1],t),2:le.types.number(i.elements[2],t),3:le.types.number(i.elements[3],t),4:le.types.number(i.elements[4],t),5:le.types.number(i.elements[5],t),6:le.types.number(i.elements[6],t),7:le.types.number(i.elements[7],t),8:le.types.number(i.elements[8],t),9:le.types.number(i.elements[9],t),10:le.types.number(i.elements[10],t),11:le.types.number(i.elements[11],t),12:le.types.number(i.elements[12],t),13:le.types.number(i.elements[13],t),14:le.types.number(i.elements[14],t),15:le.types.number(i.elements[15],t)};break}if(s.name.includes(".")){const n=s.name.split(".");let r=e;for(let a=0;a<n.length-1;a++){const l=n[a];r[l]||(r[l]={}),r=r[l]}r[n[n.length-1]]=i}else e[s.name]=i}),e}function om(o,e,t){e.forEach(s=>{if(o[s.name]!==void 0)switch(s.type){case"boolean":case"number":o[s.name]=t.material[s.name];break;case"color":case"euler":case"matrix2":case"matrix3":case"matrix4":case"vector2":case"vector3":case"vector4":o[s.name].copy(t.material[s.name]);break}})}function V0(o,e,t,s){if(!t.isMaterial)return;const i=nm(t),n=rm(i);s.sheetObject(o,e,{material:n},r=>{om(t,i,r)})}const ch=o=>{o?.dispose()},qh=o=>{if(o)if(Array.isArray(o))o.forEach(e=>qh(e));else{for(const e in o){const t=o[e];t!==null&&t instanceof x.Texture&&ch(t)}if(o.isShaderMaterial===!0){const e=o;for(const t in e.uniforms){const s=e.uniforms[t];s.value!==null&&s.value instanceof x.Texture&&ch(s.value)}}o.dispose()}},Ls=o=>{if(o){for(;o.children.length>0;){const e=o.children[0];e.type==="Audio"?(e.pause(),e.parent&&e.parent.remove(e)):Ls(e)}if(o.parent&&o.parent.remove(o),o.isMesh){const e=o;e.geometry?.dispose(),qh(e.material)}o.dispose!==void 0&&o.dispose()}};exports.totalThreeObjects=0;const hh=()=>{exports.totalThreeObjects=0},Va=o=>{if(!o)return;let e=o.name.replaceAll(" ","").replaceAll("/",".");if(e.length===0&&(e=`obj_${exports.totalThreeObjects}`,exports.totalThreeObjects++),o.parent!==null&&o.parent.uuid.length>0&&(e=`${o.parent.uuid}.${e}`),o.uuid=e,o.isMesh!==void 0){const t=o;if(Array.isArray(t.material))t.material.forEach((s,i)=>{s.uuid=`${e}.material.${i}`});else{const s=t.material;s.uuid=`${e}.material`}}o.children.forEach(t=>Va(t))};class Ni{static renderer;static canvas;static context=null;static scene=null;static camera=null;static material=null;static inited=!1;static width=100;static height=100;static init(){this.inited||(this.canvas=document.createElement("canvas"),this.canvas.width=this.width,this.canvas.height=this.height,this.context=this.canvas.getContext("2d"),this.inited=!0)}static renderToBlob(e){this.init();const t=e.repeat.clone(),s=e.offset.clone();if(e.repeat.set(1,1),e.offset.set(0,0),this.context!==null){this.context.clearRect(0,0,this.width,this.height);const i=e.image;if(i!=null&&i.width>0){this.canvas.title=e.sourceFile;const n=this.canvas.width/i.width,r=this.renderToCanvas(e);this.context.drawImage(r,0,0,i.width*n,i.height*n)}}return e.repeat.copy(t),e.offset.copy(s),this.canvas.toDataURL("image/png")}static renderToCanvas(e){if(this.material===null){this.camera=new x.OrthographicCamera(-.5,.5,.5,-.5,0,100),this.scene=new x.Scene,this.material=new x.MeshBasicMaterial;const t=new x.BufferGeometry;t.setAttribute("position",new x.Float32BufferAttribute([-.5,-.5,0,1.5,-.5,0,-.5,1.5,0],3)),t.setAttribute("normal",new x.Float32BufferAttribute([0,0,1,0,0,1],3)),t.setAttribute("uv",new x.Float32BufferAttribute([0,0,2,0,0,2],2));const s=new x.Mesh(t,this.material);this.scene.add(s)}if(e.isRenderTargetTexture)this.material.map=e,this.renderer.render(this.scene,this.camera);else{const t=this.renderer.outputColorSpace,s=e.colorSpace;this.renderer.outputColorSpace=x.LinearSRGBColorSpace,e.colorSpace=x.LinearSRGBColorSpace,this.material.map=e,this.renderer.render(this.scene,this.camera),this.renderer.outputColorSpace=t,e.colorSpace=s}return this.renderer.domElement}}function G0(o){return new Promise(e=>{const t=new x.ObjectLoader;t.parseAsync(o.scene).then(s=>{const i=new x.AnimationMixer(s);if(o.animations.length>0){const r=o.animations.map(l=>x.AnimationClip.parse(l));i.clipAction(r[0]).play(),i.getRoot().animations=o.animations,i.getRoot().mixer=i}const n=[];o.cameras&&o.cameras.length>0&&o.cameras.forEach(r=>{const a=t.parse(r);n.push(a)}),e({animations:o.animations,model:s,mixer:i,cameras:n})})})}let uh=[];function am(o,e,t=!0){Ni.renderer=e.renderer;const s=[];s.push({type:"boolean",prop:"Enabled",value:o.enabled});let i=(r,a)=>{console.log("Default Handle Pass:",r,a)};if(o.name==="EffectPass")o.effects.forEach(r=>{r.uniforms.size>0&&r.uniforms.forEach((a,l)=>{if(l==="map")return;const c=`${r.name.replace("Effect","")} ${l}`;if(a.value===null&&t)s.push({prop:l,title:c,type:"image",value:{offset:[0,0],repeat:[1,1],src:""}});else if(a.value.isTexture&&t){const h=a.value,u=Ni.renderToBlob(h);s.push({prop:l,title:c,type:"image",value:{offset:[h.offset.x,h.offset.y],repeat:[h.repeat.x,h.repeat.y],src:u}})}else typeof a.value=="number"?s.push({prop:l,title:c,type:"number",value:a.value,step:.01}):typeof a.value=="string"?s.push({prop:l,title:c,type:"string",value:a.value}):typeof a.value=="boolean"&&s.push({prop:l,title:c,type:"boolean",value:a.value})})}),i=(r,a)=>{o.effects.forEach(l=>{l.uniforms.size>0&&l.uniforms.forEach((c,h)=>{h===r&&(c.value=a)})})};else if(o.name==="ShaderPass"){const r=o.fullscreenMaterial;for(const a in r.uniforms){if(a==="inputBuffer"||a==="map")continue;const l=r.uniforms[a],c=`${r.name.replace("Material","")} ${a}`;if(l.value===null&&t)s.push({title:c,prop:a,type:"image",value:{offset:[0,0],repeat:[1,1],src:""}});else if(l.value.isTexture&&t){const h=l.value,u=Ni.renderToBlob(h);s.push({title:c,prop:a,type:"image",value:{offset:[h.offset.x,h.offset.y],repeat:[h.repeat.x,h.repeat.y],src:u}})}else typeof l.value=="number"?s.push({title:c,prop:a,type:"number",value:l.value,step:.01}):typeof l.value=="string"?s.push({title:c,prop:a,type:"string",value:l.value}):typeof l.value=="boolean"&&s.push({title:c,prop:a,type:"boolean",value:l.value})}i=(a,l)=>{const c=r.uniforms[a];c.value=l}}else return;const n=`${o.name}: ${o.scene.name}`;e.addGroup({title:n,items:s,onUpdate:(r,a)=>{r==="Enabled"?o.enabled=a:i(r,a)}}),uh.push(n)}function H0(o,e){o.passes.forEach(t=>{am(t,e)})}function W0(o){uh.forEach(e=>{o.removeGroup(e)}),uh=[]}function $0(o,e,t,s=1024){return new Promise(i=>{const n=e.aspect,r=e.fov,a=e.rotation.clone(),l=t.outputBuffer;e.aspect=1,e.fov=90,e.updateProjectionMatrix();const c=new x.WebGLRenderTarget(s,s,{format:x.RGBAFormat,depthBuffer:!0,stencilBuffer:!1});t.outputBuffer=c,bn(o,c,e,"nx",t,s).then(()=>{bn(o,c,e,"ny",t,s).then(()=>{bn(o,c,e,"nz",t,s).then(()=>{bn(o,c,e,"px",t,s).then(()=>{bn(o,c,e,"py",t,s).then(()=>{bn(o,c,e,"pz",t,s).then(()=>{e.aspect=n,e.fov=r,e.rotation.copy(a),e.updateMatrixWorld(),e.updateProjectionMatrix(),t.outputBuffer=l,c.dispose(),i()})})})})})})})}function bn(o,e,t,s,i,n){return new Promise(r=>{const a=Math.PI/2;switch(s){case"nx":t.rotation.set(0,-a,0);break;case"ny":t.rotation.set(-a,0,Math.PI);break;case"nz":t.rotation.set(0,0,0);break;case"px":t.rotation.set(0,a,0);break;case"py":t.rotation.set(a,0,Math.PI);break;case"pz":t.rotation.set(0,Math.PI,0);break}t.updateMatrixWorld(),i.render();const l=new Uint8Array(n*n*4);o.readRenderTargetPixels(e,0,0,n,n,l);const c=document.createElement("canvas");c.width=c.height=n;const h=c.getContext("2d"),u=h.createImageData(n,n);u.data.set(l),h.putImageData(u,0,0);const d=document.createElement("canvas");d.width=d.height=n;const p=d.getContext("2d");p.translate(0,n),p.scale(1,-1),p.drawImage(c,0,0);const f=d.toDataURL("image/png"),m=document.createElement("a");m.href=f,m.download=`${t.name}_${s}.png`,document.body.appendChild(m),m.click(),m.remove(),r()})}const Tn=Yh(["ctrlKey","metaKey","shiftKey","button","pointerId","pointerType","clientX","clientY","pageX","pageY"]),j0=Yh(["clientX","clientY","deltaX","deltaY","deltaMode"]),q0=Yh(["ctrlKey","metaKey","shiftKey","keyCode"]);function Y0(o,e){o.preventDefault(),j0(o,e)}function X0(o){o.preventDefault()}function Z0(o,e,t){for(const s of e)t[s]=o[s]}function Yh(o){return function(t,s){const i={type:t.type};Z0(t,o,i),s(i)}}function Ul(o,e){const t=[],s={type:o.type,touches:t};for(let i=0;i<o.touches.length;++i){const n=o.touches[i];t.push({pageX:n.pageX,pageY:n.pageY})}e(s)}const Q0={37:!0,38:!0,39:!0,40:!0};function K0(o,e){const{keyCode:t}=o;Q0[t]&&(o.preventDefault(),q0(o,e))}const J0={contextmenu:X0,mousedown:Tn,mousemove:Tn,mouseup:Tn,pointerdown:Tn,pointermove:Tn,pointerup:Tn,touchstart:Ul,touchmove:Ul,touchend:Ul,wheel:Y0,keydown:K0};let ex=0;class tx{id;worker;constructor(e,t,s){this.id=ex++,this.worker=t;const i=r=>{this.worker.postMessage({type:"event",id:this.id,data:r})};t.postMessage({type:"makeProxy",id:this.id});for(const[r,a]of Object.entries(s))e.addEventListener(r,l=>{a(l,i)});function n(){i({type:"resize",left:0,top:0,width:innerWidth,height:innerHeight})}window.addEventListener("resize",n),n()}}class lm extends x.EventDispatcher{style={};left=0;top=0;width=0;height=0;ownerDocument=void 0;constructor(){super(),this.ownerDocument=this}get clientWidth(){return this.width}set clientWidth(e){this.width=e}get clientHeight(){return this.height}set clientHeight(e){this.height=e}setPointerCapture(){}releasePointerCapture(){}getBoundingClientRect(){return{x:this.left,y:this.top,left:this.left,top:this.top,width:this.width,height:this.height,right:this.left+this.width,bottom:this.top+this.height,toJSON:()=>({})}}handleEvent(e){if(e.type==="size"){this.left=e.left,this.top=e.top,this.width=e.width,this.height=e.height;return}e.preventDefault=fo,e.stopPropagation=fo,this.dispatchEvent(e)}focus(){}getRootNode(){return this}}class sx{targets={};constructor(){this.handleEvent=this.handleEvent.bind(this)}makeProxy(e){const{id:t}=e,s=new lm;this.targets[t]=s}getProxy(e){return this.targets[e]}handleEvent(e){this.targets[e.id]?.handleEvent(e.data)}}class ix{assets={audio:new Map,image:new Map,json:new Map,model:new Map,video:new Map};components=new Map;settings={dpr:1,fps:30,width:0,height:0,mobile:!1,supportOffScreenCanvas:!1,supportWebGPU:!1,quality:"Low",dev:!1,editor:!1};onUpdateCallback;playing=!1;rafID=-1;dispose(){this.components.forEach(e=>{e.dispose()}),this.components.clear()}detectSettings(e=!1,t=!1){return new Promise(s=>{im(e,t).then(i=>{this.settings=i,s()})})}update(){}draw(){}play=()=>{this.playing||(this.playing=!0,this.onUpdate())};pause=()=>{this.playing&&(this.playing=!1,cancelAnimationFrame(this.rafID),this.rafID=-1)};onUpdate=()=>{this.update(),this.isApp&&this.draw(),this.onUpdateCallback&&this.onUpdateCallback(),this.rafID=requestAnimationFrame(this.onUpdate)};addComponent(e,t){this.components.set(e,t)}get debugEnabled(){return this.settings.dev}get isApp(){return!this.editor}set isApp(e){this.editor=!e}get editor(){return this.settings.editor}set editor(e){this.settings.editor=e}}class nx{canvas;inputElement;settings;playing=!1;rafID=-1;constructor(e,t,s){this.canvas=e,this.inputElement=t,this.settings=s}dispose(){this.stop()}play(){this.playing||(this.playing=!0,this.onUpdate())}stop(){this.playing&&(this.playing=!1,cancelAnimationFrame(this.rafID),this.rafID=-1)}update(){}draw(){}resize(e,t){this.settings.supportOffScreenCanvas&&(this.inputElement.clientWidth=e,this.inputElement.clientHeight=t,this.inputElement.width=e,this.inputElement.height=t)}onResize=e=>{this.resize(e.width,e.height)};onUpdate=()=>{this.update(),this.draw(),this.rafID=requestAnimationFrame(this.onUpdate)}}class Xh{name;_debug=!1;_editor=!1;broadcastChannel;constructor(e,t=!1,s=!1){this.name=e,this._debug=t,this._editor=s,t&&(this.broadcastChannel=new BroadcastChannel(e),this.broadcastChannel.addEventListener("message",this.messageHandler.bind(this)))}dispose(){this.broadcastChannel?.removeEventListener("message",this.messageHandler.bind(this)),this.broadcastChannel?.close()}get debug(){return this._debug}get editor(){return this._editor}send(e){if(this.editor&&e.target==="app"||!this.editor&&e.target==="editor")try{this.broadcastChannel?.postMessage(e)}catch(s){console.log("Hermes - Error sending message:"),console.log(s),console.log(e)}}messageHandler(e){const t=e.data;t.target==="app"?this.handleApp(t):this.handleEditor(t)}handleApp(e){}handleEditor(e){}}function rx(o,e,t,s,i){const n=1-o;return n*n*n*e+3*n*n*o*t+3*n*o*o*s+o*o*o*i}function ox(o,e,t){if(o.type!=="bezier"||o.handles.length!==4)throw new Error("Invalid keyframe data for Bézier interpolation.");const[s,i]=o.handles,n=(t-o.position)/(e.position-o.position);return rx(n,o.value,o.value+s,e.value+i,e.value)}class ax extends Xh{project;sheets=new Map;sheetObjects=new Map;sheetObjectCBs=new Map;sheetObjectUnsubscribe=new Map;activeSheet;studio=void 0;constructor(e=!1,t=!1){super("RemoteTheatre",e,t)}dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}loadProject(e,t){return this.project=le.getProject(e,{state:t}),new Promise((s,i)=>{this.project?.ready.then(()=>{if(t){const n=t.sheetsById;for(const r in n)this.sheet(r)}s()}).catch(()=>i())})}getSheetInstance(e,t){return t!==void 0?`${e}-${t}`:e}sheet(e,t){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const s=this.getSheetInstance(e,t);let i=this.sheets.get(s);return i!==void 0||(i=this.project?.sheet(e,t),this.sheets.set(s,i)),i}playSheet(e,t,s){return new Promise(i=>{const n=t!==void 0?{...t}:{};this.sheet(e,s)?.sequence.play(n).then(r=>i(r)),this.send({event:"playSheet",target:"editor",data:{sheet:e,instance:s,value:t}})})}pauseSheet(e,t){this.sheet(e,t)?.sequence.pause(),this.send({event:"pauseSheet",target:"editor",data:{sheet:e,instance:t}})}clearSheetObjects(e){this.sheetObjects.forEach((t,s)=>{s.search(`${e}_`)>-1&&this.unsubscribe(t)})}sheetObject(e,t,s,i,n){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const r=this.sheet(e,n);if(r===void 0)return;const l=`${this.getSheetInstance(e,n)}_${t}`;let c=this.sheetObjects.get(l),h=s;c!==void 0&&(h={...s,...c.value}),c=r.object(t,h,{reconfigure:!0}),this.sheetObjects.set(l,c),this.sheetObjectCBs.set(l,i!==void 0?i:fo);function u(p,f,m){if(typeof m=="object")if(em(m))p[f]={r:m.r,g:m.g,b:m.b,a:m.a};else for(const y in m){const g=m[y];typeof g=="object"&&u(m,y,g)}}const d=c.onValuesChange(p=>{const f=this.sheetObjectCBs.get(l);if(this.editor){for(const m in p){const y=p[m];typeof y=="object"&&u(p,m,y)}this.send({event:"updateSheetObject",target:"app",data:{sheet:e,sheetObject:l,values:p}}),f&&f(p)}else f&&f(p)});return this.sheetObjectUnsubscribe.set(l,d),c}getSheetObjectKeyframes(e,t,s){const i=this.sheet(e);if(i===void 0)return[];const n=`${e}_${t}`,r=this.sheetObjects.get(n);return r===void 0?[]:i.sequence.__experimental_getKeyframes(r.props[s])}getSheetObjectVectors(e,t){const s=this.sheet(e);if(s===void 0)return[];const i=`${e}_${t}`,n=this.sheetObjects.get(i);if(n===void 0)return[];const r=[],a=s.sequence.__experimental_getKeyframes(n.props.x),l=s.sequence.__experimental_getKeyframes(n.props.y),c=s.sequence.__experimental_getKeyframes(n.props.z),h=new Set;return a.forEach(d=>h.add(d.position)),l.forEach(d=>h.add(d.position)),c.forEach(d=>h.add(d.position)),Array.from(h).sort((d,p)=>d-p).forEach(d=>{const p=(f,m)=>{const y=f.find((b,T)=>b.position<=m&&(f[T+1]?.position||1/0)>m),g=f.find(b=>b.position>m);if(!y)return g?.value||0;if(!g||y.position===m)return y.value;if(y.type==="bezier")return ox(y,g,m);const _=(m-y.position)/(g.position-y.position);return y.value+_*(g.value-y.value)};r.push({position:d,x:p(a,d),y:p(l,d),z:p(c,d)})}),r}unsubscribe(e){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const t=e.address.sheetId,s=e.address.objectKey;this.sheets.get(t)?.detachObject(s);const n=`${t}_${s}`,r=this.sheetObjectUnsubscribe.get(n);r!==void 0&&(this.sheetObjects.delete(n),this.sheetObjectCBs.delete(n),this.sheetObjectUnsubscribe.delete(n),r())}handleApp(e){let t;switch(e.event){case"setSheet":t=this.sheets.get(e.data.sheet),t!==void 0?this.studio?.setSelection([t]):console.log(`Hermes - Can't set Sheet: ${e.data.sheet}`,t);break;case"setSheetObject":t=this.sheetObjects.get(`${e.data.sheet}_${e.data.key}`),t!==void 0?this.studio?.setSelection([t]):console.log(`Hermes - Can't set Sheet Object: ${e.data.sheet}, ${e.data.key}: ${e.data.sheet}_${e.data.key}`,t);break;case"updateSheetObject":t=this.sheets.get(e.data.sheet),t!==void 0&&t.sequence.pause(),t=this.sheetObjectCBs.get(e.data.sheetObject),t!==void 0?t(e.data.values):console.log(`Hermes - Can't update Sheet Object: ${e.data.sheetObject}, ${e.data.sheet}`,t);break;case"updateTimeline":t=this.sheets.get(e.data.sheet),t!==void 0?t.sequence.position=e.data.position:console.log(`Hermes - Can't update sheet position: ${e.data.sheet}, ${e.data.position}`);break}}handleEditor(e){switch(e.event){case"playSheet":this.sheet(e.data.sheet,e.data.instance)?.sequence.play(e.data.value);break;case"pauseSheet":this.sheet(e.data.sheet,e.data.instance)?.sequence.pause();break}}getSheetNames(){const e=[];return this.sheets.forEach((t,s)=>{e.push(s)}),e}handleEditorApp(){if(this.editor){this.studio?.ui.restore(),this.studio?.onSelectionChange(i=>{i.length<1||i.forEach(n=>{let r=n.address.sheetId,a="setSheet",l={};switch(n.type){case"Theatre_Sheet_PublicAPI":a="setSheet",l={sheet:n.address.sheetId},this.activeSheet=this.sheets.get(n.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":a="setSheetObject",r+=`_${n.address.objectKey}`,l={id:r,sheet:n.address.sheetId,key:n.address.objectKey},this.activeSheet=this.sheets.get(n.address.sheetId);break}this.send({event:a,target:"app",data:l})})});let e=-1;const t=()=>{if(this.activeSheet!==void 0&&e!==this.activeSheet.sequence.position){e=this.activeSheet.sequence.position;const i=this.activeSheet;this.send({event:"updateTimeline",target:"app",data:{position:e,sheet:i.address.sheetId}})}},s=()=>{t(),requestAnimationFrame(s)};t(),s()}else this.studio?.ui.hide()}}function lx(o){if(o.name==="cameras")return"camera";if(o.name==="interactive")return"interactive";if(o.name==="lights")return"light";if(o.name==="ui")return"ui";if(o.name==="utils")return"utils";const e=o.type;return e.search("Helper")>-1?"icon_utils":e.search("Camera")>-1?"camera":e.search("Light")>-1?"light":"obj3D"}function Wn(o){const e={name:o.name,type:o.type,uuid:o.uuid,children:[]};return o.children.forEach(t=>{e.children.push(Wn(t))}),e}function cx(o){const e={};for(const t in o){const s=o[t].value;e[t]={value:s},s===null?e[t].value={src:"",offset:[0,0],repeat:[1,1]}:s!==void 0&&s.isTexture&&(e[t].value={src:s.image.src,offset:[s.offset.x,s.offset.y],repeat:[s.repeat.x,s.repeat.y]})}return e}function hx(o){switch(o){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function Sn(o){const e={};for(const t in o){if(t.substring(0,1)==="_"||t.substring(0,2)==="is"||hx(t))continue;const s=typeof o[t],i=o[t];switch(s){case"boolean":case"number":case"string":e[t]=i;break;case"object":i!==null?(e[t]=i,i.isTexture?e[t]={src:Ni.renderToBlob(i),offset:[i.offset.x,i.offset.y],repeat:[i.repeat.x,i.repeat.y]}:t==="uniforms"&&(e[t]=cx(e[t]))):t==="glslVersion"?e[t]="":e[t]={src:"",offset:[0,0],repeat:[1,1]};break}}return o.anisotropy!==void 0&&(e.anisotropy=o.anisotropy),o.clearcoat!==void 0&&(e.clearcoat=o.clearcoat),o.iridescence!==void 0&&(e.iridescence=o.iridescence),o.dispersion!==void 0&&(e.dispersion=o.dispersion),o.sheen!==void 0&&(e.sheen=o.sheen),o.transmission!==void 0&&(e.transmission=o.transmission),o.transmission!==void 0&&(e.transmission=o.transmission),e}function kl(o){o.updateMatrix();const e={name:o.name,type:o.type,uuid:o.uuid,visible:o.visible,matrix:o.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0,children:[]};o.animations.forEach(s=>{e.animations.push({name:s.name,duration:s.duration,blendMode:s.blendMode})});const t=o.type.toLowerCase();if(t.search("mesh")>-1){const s=o;if(Array.isArray(s.material)){const i=[];s.material.forEach(n=>{i.push(Sn(n))}),e.material=i}else e.material=Sn(s.material)}else if(t.search("points")>-1){const s=o;if(Array.isArray(s.material)){const i=[];s.material.forEach(n=>{i.push(Sn(n))}),e.material=i}else e.material=Sn(s.material)}else if(t.search("line")>-1){const s=o;if(Array.isArray(s.material)){const i=[];s.material.forEach(n=>{i.push(Sn(n))}),e.material=i}else e.material=Sn(s.material)}else t.search("camera")>-1?o.type==="PerspectiveCamera"?e.perspectiveCameraInfo={fov:o.fov,zoom:o.zoom,near:o.near,far:o.far,focus:o.focus,aspect:o.aspect,filmGauge:o.filmGauge,filmOffset:o.filmOffset}:o.type==="OrthographicCamera"&&(e.orthographicCameraInfo={zoom:o.zoom,near:o.near,far:o.far,left:o.left,right:o.right,top:o.top,bottom:o.bottom}):t.search("light")>-1&&(e.lightInfo={color:o.color,intensity:o.intensity,decay:o.decay,distance:o.distance,angle:o.angle,penumbra:o.penumbra,groundColor:o.groundColor,width:o.width,height:o.height});return e}function ux(o,e){const t=e.split(".");switch(t.length){case 1:return o[t[0]];case 2:return o[t[0]][t[1]];case 3:return o[t[0]][t[1]][t[2]];case 4:return o[t[0]][t[1]][t[2]][t[3]];case 5:return o[t[0]][t[1]][t[2]][t[3]][t[4]];case 6:return o[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]]}}function dx(o,e){for(const t in e)o[t]=e[t]}function Ye(o,e,t){if(o===void 0){console.log(`Hermes - Can't set props: ${e}`,t);return}const s=e.split("."),i=s.length;if(typeof t!="object")switch(i){case 1:o[s[0]]=t;break;case 2:o[s[0]][s[1]]=t;break;case 3:o[s[0]][s[1]][s[2]]=t;break;case 4:o[s[0]][s[1]][s[2]][s[3]]=t;break;case 5:o[s[0]][s[1]][s[2]][s[3]][s[4]]=t;break}else{let r;switch(i){case 1:r=o[s[0]];break;case 2:r=o[s[0]][s[1]];break;case 3:r=o[s[0]][s[1]][s[2]];break;case 4:r=o[s[0]][s[1]][s[2]][s[3]];break;case 5:r=o[s[0]][s[1]][s[2]][s[3]][s[4]];break}r!=null?dx(r,t):console.log(`Hermes - Can't set props because target isn't found: ${e}`,t)}}function cm(o){return new Promise((e,t)=>{const s=new Image;s.onload=()=>{const i=new x.Texture(s);i.wrapS=x.RepeatWrapping,i.wrapT=x.RepeatWrapping,i.needsUpdate=!0,e(i)},s.onerror=t,s.src=o})}var de=(o=>(o.CUSTOM="ToolEvents::custom",o.SELECT_DROPDOWN="ToolEvents::selectDropdown",o.DRAG_UPDATE="ToolEvents::dragUpdate",o.ADD_SCENE="ToolEvents::addScene",o.REFRESH_SCENE="ToolEvents::refreshScene",o.REMOVE_SCENE="ToolEvents::removeScene",o.SET_SCENE="ToolEvents::setScene",o.SET_OBJECT="ToolEvents::setObject",o.CLEAR_OBJECT="ToolEvents::clearObject",o.ADD_CAMERA="ToolEvents::addCamera",o.REMOVE_CAMERA="ToolEvents::removeCamera",o.ADD_GROUP="ToolEvents::addGroup",o.REMOVE_GROUP="ToolEvents::removeGroup",o.ADD_SPLINE="ToolEvents::addSpline",o.ADD_RENDERER="ToolEvents::addRenderer",o.UPDATE_RENDERER="ToolEvents::updateRenderer",o))(de||{});class px extends Xh{name;canvas=null;inputElement=null;scene=void 0;scenes=new Map;renderer=void 0;renderTargets=new Map;renderTargetsResize=new Map;groups=new Map;_listeners={};constructor(e,t=!1,s=!1){super("RemoteThree",t,s),this.name=e}dispose(){this.scenes.forEach(e=>{Ls(e)}),this.scenes.clear(),this.scene&&Ls(this.scene),this.renderTargets.forEach(e=>{e.dispose()}),this.renderTargets.clear(),this.renderer?.dispose()}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const s=this._listeners;s[e]===void 0&&(s[e]=[]),s[e].indexOf(t)===-1&&s[e].push(t)}hasEventListener(e,t){const s=this._listeners;return s===void 0?!1:s[e]!==void 0&&s[e].indexOf(t)!==-1}removeEventListener(e,t){const s=this._listeners;if(s===void 0)return;const i=s[e];if(i!==void 0){const n=i.indexOf(t);n!==-1&&i.splice(n,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const s=t[e.type];if(s!==void 0){const i={...e,target:this},n=s.slice(0);for(let r=0,a=n.length;r<a;r++)n[r].call(this,i)}}getObjectByUUID(e){const t=e.split(".")[0],s=this.scenes.get(t);if(s!==void 0)return s.getObjectByProperty("uuid",e)}getObject(e){if(!this.debug)return;this.renderer!==void 0&&(Ni.renderer=this.renderer);const t=this.getObjectByUUID(e);t&&this.setObject(t)}setObject(e){this.renderer!==void 0&&(Ni.renderer=this.renderer);const t=kl(e);this.dispatchEvent({type:"ToolEvents::setObject",value:t})}requestMethod(e,t,s,i){const n=this.getObjectByUUID(e);if(n)try{i!==void 0?ux(n,i)[t](s):n[t](s)}catch(r){console.log("Hermes - Error requesting method:",e,t,s),console.log(r)}}updateObject(e,t,s){this.send({event:"updateObject",target:"app",data:{uuid:e,key:t,value:s}})}createTexture(e,t,s){this.send({event:"createTexture",target:"app",data:{uuid:e,key:t,value:s}})}onUpdateObject(e,t,s){const i=this.getObjectByUUID(e);i&&Ye(i,t,s)}onCreateTexture(e,t,s){const i=this.getObjectByUUID(e);if(i){const n=r=>{const a=t.split(".");switch(a.length){case 1:i[a[0]]=r;break;case 2:i[a[0]][a[1]]=r;break;case 3:i[a[0]][a[1]][a[2]]=r;break;case 4:i[a[0]][a[1]][a[2]][a[3]]=r;break;case 5:i[a[0]][a[1]][a[2]][a[3]][a[4]]=r;break}i.material.needsUpdate=!0};s.src.length>0?cm(s.src).then(r=>{r.offset.set(s.offset[0],s.offset[1]),r.repeat.set(s.repeat[0],s.repeat[1]),n(r)}):n(null)}}addGroup(e){this.groups.get(e.title)===void 0&&(this.groups.set(e.title,{title:e.title,onUpdate:e.onUpdate}),this.send({event:"addGroup",target:"editor",data:JSON.stringify(e)}))}removeGroup(e){this.groups.get(e)!==void 0&&(this.groups.delete(e),this.send({event:"removeGroup",target:"editor",data:e}))}updateGroup(e,t,s){this.send({event:"updateGroup",target:"app",data:JSON.stringify({group:e,prop:t,value:s})})}addSpline(e){setTimeout(()=>{this.send({event:"addSpline",target:"editor",data:JSON.stringify(e.toJSON())})},1)}setRenderer(e,t=null){if(this.renderer=e,this.canvas=e.domElement,this.inputElement=t!==null?t:this.canvas,!this.debug)return;const s=`#${e.getClearColor(new x.Color).getHexString()}`;this.send({event:"addRenderer",target:"editor",data:{autoClear:e.autoClear,autoClearColor:e.autoClearColor,autoClearDepth:e.autoClearDepth,autoClearStencil:e.autoClearStencil,outputColorSpace:e.outputColorSpace,localClippingEnabled:e.localClippingEnabled,clearColor:s,clearAlpha:e.getClearAlpha(),colorManagement:x.ColorManagement.enabled,toneMapping:e.toneMapping,toneMappingExposure:e.toneMappingExposure,type:e.isWebGLRenderer?"WebGLRenderer":"WebGPURenderer"}})}updateRenderer(e){this.send({event:"updateRenderer",target:"app",data:e})}addScene(e){if(e===void 0||(this.scenes.set(e.name,e),!this.debug))return;hh(),Va(e);const t=Wn(e);this.send({event:"addScene",target:"editor",data:t})}refreshScene(e){if(!this.debug)return;const t=this.scenes.get(e);if(t!==void 0){const s=Wn(t);this.send({event:"refreshScene",target:"app",data:s})}}removeScene(e){if(e===void 0||(this.scenes.delete(e.name),!this.debug))return;const t=Wn(e);this.send({event:"removeScene",target:"editor",data:t})}removeAllScenes(){this.scenes.forEach(e=>this.removeScene(e))}getScene(e){let t=null;return this.scene!==void 0&&this.scene.uuid.search(e)>-1?this.scene:(this.scenes.forEach((s,i)=>{e.search(i)>-1&&(t=s)}),t)}setScene(e){if(e===void 0||(this.scene=e,!this.debug))return;this.renderer!==void 0&&(Ni.renderer=this.renderer),hh(),Va(e);const t=Wn(e);this.send({event:"setScene",target:"editor",data:t})}addCamera(e){if(!this.debug)return;const t=kl(e);this.send({event:"addCamera",target:"editor",data:t})}removeCamera(e){if(!this.debug)return;const t=kl(e);this.send({event:"removeCamera",target:"editor",data:t})}handleApp(e){switch(e.event){case"refreshScene":this.send({event:"refreshScene",target:"editor",data:Wn(this.scenes.get(e.data.name))});break;case"updateRenderer":this.renderer&&(this.renderer.autoClearColor=e.data.autoClearColor,this.renderer.outputColorSpace=e.data.outputColorSpace,this.renderer.localClippingEnabled=e.data.localClippingEnabled,this.renderer.setClearColor(e.data.clearColor,e.data.clearAlpha),this.renderer.toneMapping=e.data.toneMapping,this.renderer.toneMappingExposure=e.data.toneMappingExposure,x.ColorManagement.enabled=e.data.colorManagement);break}if(e.event==="updateGroup"){const t=JSON.parse(e.data);this.groups.get(t.group)?.onUpdate(t.prop,t.value)}}handleEditor(e){switch(e.event){case"addScene":this.dispatchEvent({type:"ToolEvents::addScene",value:e.data});break;case"refreshScene":this.dispatchEvent({type:"ToolEvents::refreshScene",value:e.data});break;case"removeScene":this.dispatchEvent({type:"ToolEvents::removeScene",value:e.data});break;case"setScene":this.dispatchEvent({type:"ToolEvents::setScene",value:e.data});break;case"addCamera":this.dispatchEvent({type:"ToolEvents::addCamera",value:e.data});break;case"removeCamera":this.dispatchEvent({type:"ToolEvents::removeCamera",value:e.data});break;case"addGroup":this.dispatchEvent({type:"ToolEvents::addGroup",value:e.data});break;case"removeGroup":this.dispatchEvent({type:"ToolEvents::removeGroup",value:e.data});break;case"addSpline":this.dispatchEvent({type:"ToolEvents::addSpline",value:e.data});break;case"addRenderer":this.dispatchEvent({type:"ToolEvents::addRenderer",value:e.data})}}messageHandler(e){const t=e.data;if(t.event==="updateObject"){this.onUpdateObject(t.data.uuid,t.data.key,t.data.value);return}else if(t.event==="createTexture"){this.onCreateTexture(t.data.uuid,t.data.key,t.data.value);return}t.target==="app"?this.handleApp(t):this.handleEditor(t)}addRT(e,t=!0,s){const i=new x.WebGLRenderTarget(32,32,s);i.texture.name=e,this.renderTargets.set(e,i),this.renderTargetsResize.set(e,t)}removeRT(e){this.renderTargets.delete(e),this.renderTargetsResize.delete(e)}resize(e,t){const s=this.dpr;this.renderTargets.forEach((n,r)=>{this.renderTargetsResize.get(r)&&n.setSize(e*s,t*s)});const i=!(this.renderer?.domElement instanceof OffscreenCanvas);this.renderer?.setSize(e,t,i)}set dpr(e){this.renderer?.setPixelRatio(Si(1,2,e))}get dpr(){return this.renderer!==void 0?this.renderer?.getPixelRatio():1}get width(){return this.renderer!==void 0?this.renderer.domElement.width/this.dpr:0}get height(){return this.renderer!==void 0?this.renderer.domElement.height/this.dpr:0}}var Bo={exports:{}},Sr={};/**
|
|
19
19
|
* @license React
|
|
20
20
|
* react-jsx-runtime.production.min.js
|
|
21
21
|
*
|