@tomorrowevening/hermes 0.0.72 → 0.0.73

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.
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("three"),vn=require("tweakpane"),bn=require("@tweakpane/plugin-essentials"),E=require("react"),en=require("framer-motion");function yn(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const t=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(n,a,t.get?t:{enumerable:!0,get:()=>e[a]})}}return n.default=e,Object.freeze(n)}const En=yn(bn),wt=()=>{},Sn=()=>{};function ot(e){return e.substring(0,1).toUpperCase()+e.substring(1)}function Ve(e,n,a){return Math.min(n,Math.max(e,a))}function jt(e,n,a){return(a-e)/(n-e)}function It(e,n,a){return e*(1-a)+n*a}function xn(e,n){const a=e-n;return Math.sqrt(a*a)}function tn(){return Math.round(Math.random()*1e6).toString()}function nn(e){return e.r!==void 0&&e.g!==void 0&&e.b!==void 0}function an(e){const n=Math.round(e.r*255),a=Math.round(e.g*255),t=Math.round(e.b*255),i=h=>{const u=h.toString(16);return u.length===1?"0"+u:u},o=i(n),d=i(a),r=i(t);return"#"+o+d+r}function Nt(e,n=1){return Number(e.toFixed(n))}exports.totalThreeObjects=0;const Lt=()=>{exports.totalThreeObjects=0},Ct=e=>{if(!e)return;let n=e.name.replaceAll(" ","").replaceAll("/",".");if(n.length===0&&(n=`obj_${exports.totalThreeObjects}`,exports.totalThreeObjects++),e.parent!==null&&e.parent.uuid.length>0&&(n=`${e.parent.uuid}.${n}`),e.uuid=n,e.isMesh!==void 0){const a=e;if(Array.isArray(a.material))a.material.forEach((t,i)=>{t.uuid=`${n}.material.${i}`});else{const t=a.material;t.uuid=`${n}.material`}}e.children.forEach(a=>Ct(a))},Cn=e=>{e?.dispose()},rn=e=>{e&&(Array.isArray(e)?e.forEach(n=>n.dispose()):e.dispose())},ct=e=>{if(e){for(;e.children.length>0;){const n=e.children[0];n.type==="Audio"?(n.pause(),n.parent&&n.parent.remove(n)):ct(n)}if(e.parent&&e.parent.remove(e),e.isMesh){const n=e;n.geometry?.dispose(),rn(n.material)}e.dispose!==void 0&&e.dispose()}};class wn{components=new Map;listen;_appID="";_debugEnabled;_broadcastChannel=void 0;_webSocket=void 0;_mode="app";_connected=!1;_useBC=!1;constructor(n,a,t=!0){this._appID=n,this._debugEnabled=a,a&&(this._useBC=t,t?(this._broadcastChannel=new BroadcastChannel(n),this._broadcastChannel.addEventListener("message",this.messageHandler)):(this._webSocket=new WebSocket(n),this._webSocket.addEventListener("open",this.openHandler),this._webSocket.addEventListener("close",this.closeHandler),this._webSocket.addEventListener("message",this.messageHandler)))}addComponent(n,a){this.components.set(n,a)}dispose(){this._broadcastChannel!==void 0&&this._broadcastChannel.removeEventListener("message",this.messageHandler),this._webSocket!==void 0&&(this._webSocket.removeEventListener("open",this.openHandler),this._webSocket.removeEventListener("close",this.closeHandler),this._webSocket.removeEventListener("message",this.messageHandler)),this.components.forEach(n=>{n.dispose()}),this.components.clear()}send(n){this._mode!==n.target&&(this._useBC?this._broadcastChannel?.postMessage(n):this._connected&&this._webSocket?.send(JSON.stringify(n)))}messageHandler=n=>{this.listen!==void 0&&(this._useBC?this.listen(n.data):this.listen(JSON.parse(n.data)))};openHandler=()=>{this._connected=!0};closeHandler=()=>{this._connected=!1};get appID(){return this._appID}get connected(){return this._connected}get debugEnabled(){return this._debugEnabled}get mode(){return this._mode}get isApp(){return this._mode==="app"}get editor(){return this._mode==="editor"}set editor(n){n&&(this._mode="editor")}}const P=new f.EventDispatcher,j={CUSTOM:"ToolEvents::custom",SELECT_DROPDOWN:"ToolEvents::selectDropdown",DRAG_UPDATE:"ToolEvents::dragUpdate",ADD_SCENE:"ToolEvents::addScene",REMOVE_SCENE:"ToolEvents::removeScene",SET_SCENE:"ToolEvents::setScene",GET_OBJECT:"ToolEvents::getObject",SET_OBJECT:"ToolEvents::setObject",UPDATE_OBJECT:"ToolEvents::updateObject",CREATE_TEXTURE:"ToolEvents::createTexture",REQUEST_METHOD:"ToolEvents::requestMethod",ADD_CAMERA:"ToolEvents::addCamera",REMOVE_CAMERA:"ToolEvents::removeCamera"};class lt{app;constructor(n){this.app=n}dispose(){}handleApp(n,a,t){}handleEditor(n,a,t){}}class Mn extends lt{selectDropdown(n,a){this.app.send({event:"selectComponent",target:"app",data:{dropdown:n,value:a}})}updateDropdown(n,a){this.app.send({event:"draggableListUpdate",target:"app",data:{dropdown:n,value:a}})}handleApp(n,a,t){switch(t.event){case"selectComponent":P.dispatchEvent({type:j.SELECT_DROPDOWN,value:t.data});break;case"draggableListUpdate":P.dispatchEvent({type:j.DRAG_UPDATE,value:t.data});break}}}class Mt extends lt{project;sheets=new Map;sheetObjects=new Map;sheetObjectCBs=new Map;sheetObjectUnsubscribe=new Map;activeSheet;studio=void 0;static rafDriver=void 0;dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}getSheetInstance(n,a){return a!==void 0?`${n}-${a}`:n}sheet(n,a){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const t=this.getSheetInstance(n,a);let i=this.sheets.get(t);return i!==void 0||(i=this.project?.sheet(n,a),this.sheets.set(t,i)),i}playSheet(n,a,t){this.sheet(n,t)?.sequence.play(a),this.app.send({event:"playSheet",target:"editor",data:{sheet:n,instance:t,value:a}})}pauseSheet(n,a){this.sheet(n)?.sequence.pause(),this.app.send({event:"pauseSheet",target:"editor",data:{sheet:n,instance:a}})}clearSheetObjects(n){this.sheetObjects.forEach((a,t)=>{t.search(`${n}_`)>-1&&this.unsubscribe(a)})}sheetObject(n,a,t,i,o){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const d=this.sheet(n,o);if(d===void 0)return;const h=`${this.getSheetInstance(n,o)}_${a}`;let u=this.sheetObjects.get(h);u!==void 0?u=d.object(a,{...t,...u.value},{reconfigure:!0}):u=d.object(a,t),this.sheetObjects.set(h,u),this.sheetObjectCBs.set(h,i!==void 0?i:wt);const m=u.onValuesChange(p=>{if(this.app.editor){for(const w in p){const I=p[w];typeof I=="object"&&nn(I)&&(p[w]={r:I.r,g:I.g,b:I.b,a:I.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheet:n,sheetObject:h,values:p}})}const b=this.sheetObjectCBs.get(h);b!==void 0&&b(p)});return this.sheetObjectUnsubscribe.set(h,m),u}unsubscribe(n){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const a=n.address.sheetId,t=n.address.objectKey;this.sheets.get(a)?.detachObject(t);const o=`${a}_${t}`,d=this.sheetObjectUnsubscribe.get(o);d!==void 0&&(this.sheetObjects.delete(o),this.sheetObjectCBs.delete(o),this.sheetObjectUnsubscribe.delete(o),d())}handleApp(n,a,t){const i=a;let o;switch(t.event){case"setSheet":o=i.sheets.get(t.data.sheet),o!==void 0&&(i.activeSheet=o,this.studio?.setSelection([o]));break;case"setSheetObject":o=i.sheetObjects.get(`${t.data.sheet}_${t.data.key}`),o!==void 0&&this.studio?.setSelection([o]);break;case"updateSheetObject":o=i.sheets.get(t.data.sheet),o!==void 0&&o.sequence.pause(),o=i.sheetObjectCBs.get(t.data.sheetObject),o!==void 0&&o(t.data.values);break;case"updateTimeline":o=i.sheets.get(t.data.sheet),i.activeSheet!==void 0&&(i.activeSheet.sequence.position=t.data.position);break}}handleEditor(n,a,t){if(n.editor){const i=a;switch(t.event){case"playSheet":i.sheet(t.data.sheet,t.data.instance)?.sequence.play(t.data.value);break;case"pauseSheet":i.sheet(t.data.sheet,t.data.instance)?.sequence.pause();break}}}handleEditorApp(n,a){if(n.editor){this.studio?.ui.restore(),this.studio?.onSelectionChange(d=>{d.length<1||d.forEach(r=>{let h=r.address.sheetId,u="setSheet",m={};switch(r.type){case"Theatre_Sheet_PublicAPI":u="setSheet",m={sheet:r.address.sheetId},a.activeSheet=a.sheets.get(r.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":u="setSheetObject",h+=`_${r.address.objectKey}`,m={id:h,sheet:r.address.sheetId,key:r.address.objectKey},a.activeSheet=a.sheets.get(r.address.sheetId);break}n.send({event:u,target:"app",data:m})})});let t=-1;const i=()=>{if(Mt.rafDriver?.tick(performance.now()),a.activeSheet!==void 0&&t!==a.activeSheet.sequence.position){t=a.activeSheet.sequence.position;const d=a.activeSheet;n.send({event:"updateTimeline",target:"app",data:{position:t,sheet:d.address.sheetId}})}},o=()=>{i(),requestAnimationFrame(o)};i(),o()}else this.studio?.ui.hide()}}function On(e,n,a){if(e.editor){a.ui.restore(),a.onSelectionChange(d=>{d.length<1||d.forEach(r=>{let h=r.address.sheetId,u="setSheet",m={};switch(r.type){case"Theatre_Sheet_PublicAPI":u="setSheet",m={sheet:r.address.sheetId},n.activeSheet=n.sheets.get(r.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":u="setSheetObject",h+=`_${r.address.objectKey}`,m={id:h,sheet:r.address.sheetId,key:r.address.objectKey},n.activeSheet=n.sheets.get(r.address.sheetId);break}e.send({event:u,target:"app",data:m})})});let t=-1;const i=()=>{if(Mt.rafDriver?.tick(performance.now()),n.activeSheet!==void 0&&t!==n.activeSheet.sequence.position){t=n.activeSheet.sequence.position;const d=n.activeSheet;e.send({event:"updateTimeline",target:"app",data:{position:t,sheet:d.address.sheetId}})}},o=()=>{i(),requestAnimationFrame(o)};i(),o()}else a.ui.hide()}function Rn(e){if(e.name==="cameras")return"camera";if(e.name==="interactive")return"interactive";if(e.name==="lights")return"light";if(e.name==="ui")return"ui";if(e.name==="utils")return"utils";const n=e.type;return n.search("Helper")>-1?"icon_utils":n.search("Camera")>-1?"camera":n.search("Light")>-1?"light":"obj3D"}function Et(e){const n={name:e.name,type:e.type,uuid:e.uuid,children:[]};return e.children.forEach(a=>{n.children.push(Et(a))}),n}function Tn(e){const n={};for(const a in e){const t=e[a].value;n[a]={value:t},t===null?n[a].value={src:"",offset:[0,0],repeat:[1,1]}:t.isTexture&&(n[a].value={src:t.image.src,offset:[t.offset.x,t.offset.y],repeat:[t.repeat.x,t.repeat.y]})}return n}function _n(e){switch(e){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function Je(e){const n={};for(const a in e){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||_n(a))continue;const t=typeof e[a],i=e[a];switch(t){case"boolean":case"number":case"string":n[a]=i;break;case"object":if(i!==null)if(n[a]=i,i.isTexture)if(i instanceof f.Texture){const d=i.source.toJSON().url;n[a]={src:d,offset:[i.offset.x,i.offset.y],repeat:[i.repeat.x,i.repeat.y]}}else i instanceof f.CubeTexture&&(console.log("env map"),console.log(i.source.data),console.log(i.source.toJSON()),n[a]={src:"",offset:[i.offset.x,i.offset.y],repeat:[i.repeat.x,i.repeat.y]});else a==="uniforms"&&(n[a]=Tn(n[a]));else n[a]={src:"",offset:[0,0],repeat:[1,1]};break}}return n}function Dt(e){e.updateMatrix();const n={name:e.name,type:e.type,uuid:e.uuid,visible:e.visible,matrix:e.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0,children:[]};e.animations.forEach(t=>{n.animations.push({name:t.name,duration:t.duration,blendMode:t.blendMode})});const a=e.type.toLowerCase();if(a.search("mesh")>-1){const t=e;if(Array.isArray(t.material)){const i=[];t.material.forEach(o=>{i.push(Je(o))}),n.material=i}else n.material=Je(t.material)}else if(a.search("points")>-1){const t=e;if(Array.isArray(t.material)){const i=[];t.material.forEach(o=>{i.push(Je(o))}),n.material=i}else n.material=Je(t.material)}else if(a.search("line")>-1){const t=e;if(Array.isArray(t.material)){const i=[];t.material.forEach(o=>{i.push(Je(o))}),n.material=i}else n.material=Je(t.material)}else a.search("camera")>-1?e.type==="PerspectiveCamera"?n.perspectiveCameraInfo={fov:e.fov,zoom:e.zoom,near:e.near,far:e.far,focus:e.focus,aspect:e.aspect,filmGauge:e.filmGauge,filmOffset:e.filmOffset}:e.type==="OrthographicCamera"&&(n.orthographicCameraInfo={zoom:e.zoom,near:e.near,far:e.far,left:e.left,right:e.right,top:e.top,bottom:e.bottom}):a.search("light")>-1&&(n.lightInfo={color:e.color,intensity:e.intensity,decay:e.decay,distance:e.distance,angle:e.angle,penumbra:e.penumbra,groundColor:e.groundColor,width:e.width,height:e.height});return n}function kn(e,n){const a=n.split(".");switch(a.length){case 1:return e[a[0]];case 2:return e[a[0]][a[1]];case 3:return e[a[0]][a[1]][a[2]];case 4:return e[a[0]][a[1]][a[2]][a[3]];case 5:return e[a[0]][a[1]][a[2]][a[3]][a[4]];case 6:return e[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]}}function Dn(e,n){for(const a in n)e[a]=n[a]}function Q(e,n,a){if(e===void 0){console.log(`Hermes - Can't set props: ${n}`,a);return}const t=n.split("."),i=t.length;if(typeof a!="object")switch(i){case 1:e[t[0]]=a;break;case 2:e[t[0]][t[1]]=a;break;case 3:e[t[0]][t[1]][t[2]]=a;break;case 4:e[t[0]][t[1]][t[2]][t[3]]=a;break;case 5:e[t[0]][t[1]][t[2]][t[3]][t[4]]=a;break}else{let d;switch(i){case 1:d=e[t[0]];break;case 2:d=e[t[0]][t[1]];break;case 3:d=e[t[0]][t[1]][t[2]];break;case 4:d=e[t[0]][t[1]][t[2]][t[3]];break;case 5:d=e[t[0]][t[1]][t[2]][t[3]][t[4]];break}d!=null&&Dn(d,a)}}function sn(e){return new Promise((n,a)=>{const t=new Image;t.onload=()=>{const i=new f.Texture(t);i.wrapS=f.RepeatWrapping,i.wrapT=f.RepeatWrapping,i.needsUpdate=!0,n(i)},t.onerror=a,t.src=e})}class An extends lt{scene=void 0;scenes=new Map;renderer=void 0;renderTargets=new Map;dispose(){this.scenes.forEach(n=>{ct(n)}),this.scenes.clear(),this.scene&&ct(this.scene),this.renderTargets.forEach(n=>{n.dispose()}),this.renderTargets.clear(),this.renderer?.dispose()}getObject(n){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:n})}setObject(n){const a=Dt(n);this.app.send({event:"setObject",target:"editor",data:a})}requestMethod(n,a,t,i){this.app.send({event:"requestMethod",target:"app",data:{uuid:n,key:a,value:t,subitem:i}})}updateObject(n,a,t){this.app.send({event:"updateObject",target:"app",data:{uuid:n,key:a,value:t}})}createTexture(n,a,t){this.app.send({event:"createTexture",target:"app",data:{uuid:n,key:a,value:t}})}addScene(n){if(n===void 0||(this.scenes.set(n.name,n),!this.app.debugEnabled))return;Lt(),Ct(n);const a=Et(n);this.app.send({event:"addScene",target:"editor",data:a})}removeScene(n){if(n===void 0||(this.scenes.delete(n.name),!this.app.debugEnabled))return;const a=Et(n);this.app.send({event:"removeScene",target:"editor",data:a})}removeAllScenes(){this.scenes.forEach(n=>this.removeScene(n))}getScene(n){let a=null;return this.scenes.forEach((t,i)=>{n.search(i)>-1&&(a=t)}),a}setScene(n){if(n===void 0||(this.scene=n,!this.app.debugEnabled))return;Lt(),Ct(n);const a=Et(n);this.app.send({event:"setScene",target:"editor",data:a})}addCamera(n){if(!this.app.debugEnabled)return;const a=Dt(n);this.app.send({event:"addCamera",target:"editor",data:a})}removeCamera(n){if(!this.app.debugEnabled)return;const a=Dt(n);this.app.send({event:"removeCamera",target:"editor",data:a})}handleApp(n,a,t){switch(t.event){case"getObject":P.dispatchEvent({type:j.GET_OBJECT,value:t.data});break;case"updateObject":P.dispatchEvent({type:j.UPDATE_OBJECT,value:t.data});break;case"createTexture":P.dispatchEvent({type:j.CREATE_TEXTURE,value:t.data});break;case"requestMethod":P.dispatchEvent({type:j.REQUEST_METHOD,value:t.data});break}}handleEditor(n,a,t){switch(t.event){case"setObject":P.dispatchEvent({type:j.SET_OBJECT,value:t.data});break;case"addScene":P.dispatchEvent({type:j.ADD_SCENE,value:t.data});break;case"removeScene":P.dispatchEvent({type:j.REMOVE_SCENE,value:t.data});break;case"setScene":P.dispatchEvent({type:j.SET_SCENE,value:t.data});break;case"addCamera":P.dispatchEvent({type:j.ADD_CAMERA,value:t.data});break;case"removeCamera":P.dispatchEvent({type:j.REMOVE_CAMERA,value:t.data});break}}rendererWidth=300;rendererHeight=150;addRT(n,a){const t=new f.WebGLRenderTarget(32,32,a);t.texture.name=n,this.renderTargets.set(n,t)}resize(n,a){const t=this.dpr;this.rendererWidth=n,this.rendererHeight=a,this.renderTargets.forEach(i=>{i.setSize(n*t,a*t)}),this.renderer?.setSize(n,a)}set dpr(n){this.renderer?.setPixelRatio(Ve(1,2,n))}get dpr(){return this.renderer!==void 0?this.renderer?.getPixelRatio():1}get width(){return this.rendererWidth}get height(){return this.rendererHeight}get canvas(){return this.renderer!==void 0?this.renderer?.domElement:null}}class Pn extends lt{bindCBs;buttonCBs;pane=void 0;appCallbacks=0;editorCallbacks=0;inspectorFolder=void 0;constructor(n){super(n),this.bindCBs=new Map,this.buttonCBs=new Map,n.editor&&this.createGUI()}createGUI(){this.pane=new vn.Pane({title:"GUI"}),this.pane.registerPlugin(En)}dispose(){this.bindCBs.clear(),this.buttonCBs.clear(),this.appCallbacks=0,this.editorCallbacks=0,this.app.editor&&(this.pane?.dispose(),this.pane=void 0)}addFolder(n,a=void 0,t=void 0){if(this.app.editor)return this.pane===void 0&&this.createGUI(),(t!==void 0?t:this.pane).addFolder({title:n,...a});this.app.send({event:"addFolder",target:"app",data:{name:n,params:a,parent:t}})}get bindID(){return`debug_${Math.max(this.appCallbacks,this.editorCallbacks)}`}bind(n,a,t,i=void 0){const o=this.bindID,d=t.onChange!==void 0?t.onChange:wt;this.bindCBs.set(o,d),this.app.editor?(this.pane===void 0&&this.createGUI(),(i!==void 0?i:this.pane).addBinding(n,a,t).on("change",h=>{this.app.send({event:"updateBind",target:"app",data:{id:o,value:h.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:o,name:a,params:t,parent:i}}),this.appCallbacks++)}triggerBind(n,a){const t=this.bindCBs.get(n);t!==void 0?t(a):console.warn(`No callback for: ${n}`,a)}button(n,a,t=void 0){const i=this.bindID;this.buttonCBs.set(i,a),this.app.editor?(this.pane===void 0&&this.createGUI(),(t!==void 0?t:this.pane).addButton({title:n}).on("click",()=>{this.app.send({event:"clickButton",target:"app",data:{id:i}})}),this.editorCallbacks++):(this.app.send({event:"addButton",target:"app",data:{id:i,name:n,callback:a,parent:t}}),this.appCallbacks++)}triggerButton(n){const a=this.buttonCBs.get(n);a!==void 0&&a()}createInspector(){this.inspectorFolder=this.addFolder("Inspector",this.pane)}clearInspector(){const n=this.inspectorFolder.children.length-1;for(let a=n;a>-1;--a)this.inspectorFolder.remove(this.inspectorFolder.children[a])}handleApp(n,a,t){const i=a;switch(t.event){case"addFolder":i.addFolder(t.data.name,t.data.params,t.data.parent);break;case"bindObject":i.bind(t.data.name,t.data.params,t.data.parent);break;case"updateBind":i.triggerBind(t.data.id,t.data.value);break;case"addButton":i.button(t.data.name,t.data.callback,t.data.parent);break;case"clickButton":i.triggerButton(t.data.id);break}}}var Ft={exports:{}},at={};/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("three"),gn=require("tweakpane"),vn=require("@tweakpane/plugin-essentials"),E=require("react"),Qt=require("framer-motion");function bn(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const t=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(n,a,t.get?t:{enumerable:!0,get:()=>e[a]})}}return n.default=e,Object.freeze(n)}const yn=bn(vn),Ct=()=>{},En=()=>{};function lt(e){return e.substring(0,1).toUpperCase()+e.substring(1)}function He(e,n,a){return Math.min(n,Math.max(e,a))}function Pt(e,n,a){return(a-e)/(n-e)}function jt(e,n,a){return e*(1-a)+n*a}function Sn(e,n){const a=e-n;return Math.sqrt(a*a)}function en(){return Math.round(Math.random()*1e6).toString()}function tn(e){return e.r!==void 0&&e.g!==void 0&&e.b!==void 0}function nn(e){const n=Math.round(e.r*255),a=Math.round(e.g*255),t=Math.round(e.b*255),i=h=>{const u=h.toString(16);return u.length===1?"0"+u:u},o=i(n),d=i(a),r=i(t);return"#"+o+d+r}function It(e,n=1){return Number(e.toFixed(n))}exports.totalThreeObjects=0;const Nt=()=>{exports.totalThreeObjects=0},xt=e=>{if(!e)return;let n=e.name.replaceAll(" ","").replaceAll("/",".");if(n.length===0&&(n=`obj_${exports.totalThreeObjects}`,exports.totalThreeObjects++),e.parent!==null&&e.parent.uuid.length>0&&(n=`${e.parent.uuid}.${n}`),e.uuid=n,e.isMesh!==void 0){const a=e;if(Array.isArray(a.material))a.material.forEach((t,i)=>{t.uuid=`${n}.material.${i}`});else{const t=a.material;t.uuid=`${n}.material`}}e.children.forEach(a=>xt(a))},xn=e=>{e?.dispose()},an=e=>{e&&(Array.isArray(e)?e.forEach(n=>n.dispose()):e.dispose())},ut=e=>{if(e){for(;e.children.length>0;){const n=e.children[0];n.type==="Audio"?(n.pause(),n.parent&&n.parent.remove(n)):ut(n)}if(e.parent&&e.parent.remove(e),e.isMesh){const n=e;n.geometry?.dispose(),an(n.material)}e.dispose!==void 0&&e.dispose()}};class Cn{components=new Map;listen;_appID="";_debugEnabled;_broadcastChannel=void 0;_webSocket=void 0;_mode="app";_connected=!1;_useBC=!1;constructor(n,a,t=!0){this._appID=n,this._debugEnabled=a,a&&(this._useBC=t,t?(this._broadcastChannel=new BroadcastChannel(n),this._broadcastChannel.addEventListener("message",this.messageHandler)):(this._webSocket=new WebSocket(n),this._webSocket.addEventListener("open",this.openHandler),this._webSocket.addEventListener("close",this.closeHandler),this._webSocket.addEventListener("message",this.messageHandler)))}addComponent(n,a){this.components.set(n,a)}dispose(){this._broadcastChannel!==void 0&&this._broadcastChannel.removeEventListener("message",this.messageHandler),this._webSocket!==void 0&&(this._webSocket.removeEventListener("open",this.openHandler),this._webSocket.removeEventListener("close",this.closeHandler),this._webSocket.removeEventListener("message",this.messageHandler)),this.components.forEach(n=>{n.dispose()}),this.components.clear()}send(n){this._mode!==n.target&&(this._useBC?this._broadcastChannel?.postMessage(n):this._connected&&this._webSocket?.send(JSON.stringify(n)))}messageHandler=n=>{this.listen!==void 0&&(this._useBC?this.listen(n.data):this.listen(JSON.parse(n.data)))};openHandler=()=>{this._connected=!0};closeHandler=()=>{this._connected=!1};get appID(){return this._appID}get connected(){return this._connected}get debugEnabled(){return this._debugEnabled}get mode(){return this._mode}get isApp(){return this._mode==="app"}get editor(){return this._mode==="editor"}set editor(n){n&&(this._mode="editor")}}const P=new f.EventDispatcher,j={CUSTOM:"ToolEvents::custom",SELECT_DROPDOWN:"ToolEvents::selectDropdown",DRAG_UPDATE:"ToolEvents::dragUpdate",ADD_SCENE:"ToolEvents::addScene",REMOVE_SCENE:"ToolEvents::removeScene",SET_SCENE:"ToolEvents::setScene",GET_OBJECT:"ToolEvents::getObject",SET_OBJECT:"ToolEvents::setObject",UPDATE_OBJECT:"ToolEvents::updateObject",CREATE_TEXTURE:"ToolEvents::createTexture",REQUEST_METHOD:"ToolEvents::requestMethod",ADD_CAMERA:"ToolEvents::addCamera",REMOVE_CAMERA:"ToolEvents::removeCamera"};class dt{app;constructor(n){this.app=n}dispose(){}handleApp(n,a,t){}handleEditor(n,a,t){}}class wn extends dt{selectDropdown(n,a){this.app.send({event:"selectComponent",target:"app",data:{dropdown:n,value:a}})}updateDropdown(n,a){this.app.send({event:"draggableListUpdate",target:"app",data:{dropdown:n,value:a}})}handleApp(n,a,t){switch(t.event){case"selectComponent":P.dispatchEvent({type:j.SELECT_DROPDOWN,value:t.data});break;case"draggableListUpdate":P.dispatchEvent({type:j.DRAG_UPDATE,value:t.data});break}}}class wt extends dt{project;sheets=new Map;sheetObjects=new Map;sheetObjectCBs=new Map;sheetObjectUnsubscribe=new Map;activeSheet;studio=void 0;static rafDriver=void 0;dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}getSheetInstance(n,a){return a!==void 0?`${n}-${a}`:n}sheet(n,a){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const t=this.getSheetInstance(n,a);let i=this.sheets.get(t);return i!==void 0||(i=this.project?.sheet(n,a),this.sheets.set(t,i)),i}playSheet(n,a,t){this.sheet(n,t)?.sequence.play(a),this.app.send({event:"playSheet",target:"editor",data:{sheet:n,instance:t,value:a}})}pauseSheet(n,a){this.sheet(n)?.sequence.pause(),this.app.send({event:"pauseSheet",target:"editor",data:{sheet:n,instance:a}})}clearSheetObjects(n){this.sheetObjects.forEach((a,t)=>{t.search(`${n}_`)>-1&&this.unsubscribe(a)})}sheetObject(n,a,t,i,o){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const d=this.sheet(n,o);if(d===void 0)return;const h=`${this.getSheetInstance(n,o)}_${a}`;let u=this.sheetObjects.get(h);u!==void 0?u=d.object(a,{...t,...u.value},{reconfigure:!0}):u=d.object(a,t),this.sheetObjects.set(h,u),this.sheetObjectCBs.set(h,i!==void 0?i:Ct);const m=u.onValuesChange(p=>{if(this.app.editor){for(const w in p){const I=p[w];typeof I=="object"&&tn(I)&&(p[w]={r:I.r,g:I.g,b:I.b,a:I.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheet:n,sheetObject:h,values:p}})}const v=this.sheetObjectCBs.get(h);v!==void 0&&v(p)});return this.sheetObjectUnsubscribe.set(h,m),u}unsubscribe(n){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const a=n.address.sheetId,t=n.address.objectKey;this.sheets.get(a)?.detachObject(t);const o=`${a}_${t}`,d=this.sheetObjectUnsubscribe.get(o);d!==void 0&&(this.sheetObjects.delete(o),this.sheetObjectCBs.delete(o),this.sheetObjectUnsubscribe.delete(o),d())}handleApp(n,a,t){const i=a;let o;switch(t.event){case"setSheet":o=i.sheets.get(t.data.sheet),o!==void 0&&(i.activeSheet=o,this.studio?.setSelection([o]));break;case"setSheetObject":o=i.sheetObjects.get(`${t.data.sheet}_${t.data.key}`),o!==void 0&&this.studio?.setSelection([o]);break;case"updateSheetObject":o=i.sheets.get(t.data.sheet),o!==void 0&&o.sequence.pause(),o=i.sheetObjectCBs.get(t.data.sheetObject),o!==void 0&&o(t.data.values);break;case"updateTimeline":o=i.sheets.get(t.data.sheet),i.activeSheet!==void 0&&(i.activeSheet.sequence.position=t.data.position);break}}handleEditor(n,a,t){if(n.editor){const i=a;switch(t.event){case"playSheet":i.sheet(t.data.sheet,t.data.instance)?.sequence.play(t.data.value);break;case"pauseSheet":i.sheet(t.data.sheet,t.data.instance)?.sequence.pause();break}}}handleEditorApp(n,a){if(n.editor){this.studio?.ui.restore(),this.studio?.onSelectionChange(d=>{d.length<1||d.forEach(r=>{let h=r.address.sheetId,u="setSheet",m={};switch(r.type){case"Theatre_Sheet_PublicAPI":u="setSheet",m={sheet:r.address.sheetId},a.activeSheet=a.sheets.get(r.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":u="setSheetObject",h+=`_${r.address.objectKey}`,m={id:h,sheet:r.address.sheetId,key:r.address.objectKey},a.activeSheet=a.sheets.get(r.address.sheetId);break}n.send({event:u,target:"app",data:m})})});let t=-1;const i=()=>{if(wt.rafDriver?.tick(performance.now()),a.activeSheet!==void 0&&t!==a.activeSheet.sequence.position){t=a.activeSheet.sequence.position;const d=a.activeSheet;n.send({event:"updateTimeline",target:"app",data:{position:t,sheet:d.address.sheetId}})}},o=()=>{i(),requestAnimationFrame(o)};i(),o()}else this.studio?.ui.hide()}}function Mn(e,n,a){if(e.editor){a.ui.restore(),a.onSelectionChange(d=>{d.length<1||d.forEach(r=>{let h=r.address.sheetId,u="setSheet",m={};switch(r.type){case"Theatre_Sheet_PublicAPI":u="setSheet",m={sheet:r.address.sheetId},n.activeSheet=n.sheets.get(r.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":u="setSheetObject",h+=`_${r.address.objectKey}`,m={id:h,sheet:r.address.sheetId,key:r.address.objectKey},n.activeSheet=n.sheets.get(r.address.sheetId);break}e.send({event:u,target:"app",data:m})})});let t=-1;const i=()=>{if(wt.rafDriver?.tick(performance.now()),n.activeSheet!==void 0&&t!==n.activeSheet.sequence.position){t=n.activeSheet.sequence.position;const d=n.activeSheet;e.send({event:"updateTimeline",target:"app",data:{position:t,sheet:d.address.sheetId}})}},o=()=>{i(),requestAnimationFrame(o)};i(),o()}else a.ui.hide()}function On(e){if(e.name==="cameras")return"camera";if(e.name==="interactive")return"interactive";if(e.name==="lights")return"light";if(e.name==="ui")return"ui";if(e.name==="utils")return"utils";const n=e.type;return n.search("Helper")>-1?"icon_utils":n.search("Camera")>-1?"camera":n.search("Light")>-1?"light":"obj3D"}function yt(e){const n={name:e.name,type:e.type,uuid:e.uuid,children:[]};return e.children.forEach(a=>{n.children.push(yt(a))}),n}function Rn(e){const n={};for(const a in e){const t=e[a].value;n[a]={value:t},t===null?n[a].value={src:"",offset:[0,0],repeat:[1,1]}:t.isTexture&&(n[a].value={src:t.image.src,offset:[t.offset.x,t.offset.y],repeat:[t.repeat.x,t.repeat.y]})}return n}function Tn(e){switch(e){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function et(e){const n={};for(const a in e){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||Tn(a))continue;const t=typeof e[a],i=e[a];switch(t){case"boolean":case"number":case"string":n[a]=i;break;case"object":if(i!==null)if(n[a]=i,i.isTexture)if(i instanceof f.Texture){const d=i.source.toJSON().url;n[a]={src:d,offset:[i.offset.x,i.offset.y],repeat:[i.repeat.x,i.repeat.y]}}else i instanceof f.CubeTexture&&(console.log("env map"),console.log(i.source.data),console.log(i.source.toJSON()),n[a]={src:"",offset:[i.offset.x,i.offset.y],repeat:[i.repeat.x,i.repeat.y]});else a==="uniforms"&&(n[a]=Rn(n[a]));else n[a]={src:"",offset:[0,0],repeat:[1,1]};break}}return n}function kt(e){e.updateMatrix();const n={name:e.name,type:e.type,uuid:e.uuid,visible:e.visible,matrix:e.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0,children:[]};e.animations.forEach(t=>{n.animations.push({name:t.name,duration:t.duration,blendMode:t.blendMode})});const a=e.type.toLowerCase();if(a.search("mesh")>-1){const t=e;if(Array.isArray(t.material)){const i=[];t.material.forEach(o=>{i.push(et(o))}),n.material=i}else n.material=et(t.material)}else if(a.search("points")>-1){const t=e;if(Array.isArray(t.material)){const i=[];t.material.forEach(o=>{i.push(et(o))}),n.material=i}else n.material=et(t.material)}else if(a.search("line")>-1){const t=e;if(Array.isArray(t.material)){const i=[];t.material.forEach(o=>{i.push(et(o))}),n.material=i}else n.material=et(t.material)}else a.search("camera")>-1?e.type==="PerspectiveCamera"?n.perspectiveCameraInfo={fov:e.fov,zoom:e.zoom,near:e.near,far:e.far,focus:e.focus,aspect:e.aspect,filmGauge:e.filmGauge,filmOffset:e.filmOffset}:e.type==="OrthographicCamera"&&(n.orthographicCameraInfo={zoom:e.zoom,near:e.near,far:e.far,left:e.left,right:e.right,top:e.top,bottom:e.bottom}):a.search("light")>-1&&(n.lightInfo={color:e.color,intensity:e.intensity,decay:e.decay,distance:e.distance,angle:e.angle,penumbra:e.penumbra,groundColor:e.groundColor,width:e.width,height:e.height});return n}function _n(e,n){const a=n.split(".");switch(a.length){case 1:return e[a[0]];case 2:return e[a[0]][a[1]];case 3:return e[a[0]][a[1]][a[2]];case 4:return e[a[0]][a[1]][a[2]][a[3]];case 5:return e[a[0]][a[1]][a[2]][a[3]][a[4]];case 6:return e[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]}}function kn(e,n){for(const a in n)e[a]=n[a]}function ee(e,n,a){if(e===void 0){console.log(`Hermes - Can't set props: ${n}`,a);return}const t=n.split("."),i=t.length;if(typeof a!="object")switch(i){case 1:e[t[0]]=a;break;case 2:e[t[0]][t[1]]=a;break;case 3:e[t[0]][t[1]][t[2]]=a;break;case 4:e[t[0]][t[1]][t[2]][t[3]]=a;break;case 5:e[t[0]][t[1]][t[2]][t[3]][t[4]]=a;break}else{let d;switch(i){case 1:d=e[t[0]];break;case 2:d=e[t[0]][t[1]];break;case 3:d=e[t[0]][t[1]][t[2]];break;case 4:d=e[t[0]][t[1]][t[2]][t[3]];break;case 5:d=e[t[0]][t[1]][t[2]][t[3]][t[4]];break}d!=null&&kn(d,a)}}function rn(e){return new Promise((n,a)=>{const t=new Image;t.onload=()=>{const i=new f.Texture(t);i.wrapS=f.RepeatWrapping,i.wrapT=f.RepeatWrapping,i.needsUpdate=!0,n(i)},t.onerror=a,t.src=e})}class Dn extends dt{scene=void 0;scenes=new Map;renderer=void 0;renderTargets=new Map;dispose(){this.scenes.forEach(n=>{ut(n)}),this.scenes.clear(),this.scene&&ut(this.scene),this.renderTargets.forEach(n=>{n.dispose()}),this.renderTargets.clear(),this.renderer?.dispose()}getObject(n){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:n})}setObject(n){const a=kt(n);this.app.send({event:"setObject",target:"editor",data:a})}requestMethod(n,a,t,i){this.app.send({event:"requestMethod",target:"app",data:{uuid:n,key:a,value:t,subitem:i}})}updateObject(n,a,t){this.app.send({event:"updateObject",target:"app",data:{uuid:n,key:a,value:t}})}createTexture(n,a,t){this.app.send({event:"createTexture",target:"app",data:{uuid:n,key:a,value:t}})}addScene(n){if(n===void 0||(this.scenes.set(n.name,n),!this.app.debugEnabled))return;Nt(),xt(n);const a=yt(n);this.app.send({event:"addScene",target:"editor",data:a})}removeScene(n){if(n===void 0||(this.scenes.delete(n.name),!this.app.debugEnabled))return;const a=yt(n);this.app.send({event:"removeScene",target:"editor",data:a})}removeAllScenes(){this.scenes.forEach(n=>this.removeScene(n))}getScene(n){let a=null;return this.scenes.forEach((t,i)=>{n.search(i)>-1&&(a=t)}),a}setScene(n){if(n===void 0||(this.scene=n,!this.app.debugEnabled))return;Nt(),xt(n);const a=yt(n);this.app.send({event:"setScene",target:"editor",data:a})}addCamera(n){if(!this.app.debugEnabled)return;const a=kt(n);this.app.send({event:"addCamera",target:"editor",data:a})}removeCamera(n){if(!this.app.debugEnabled)return;const a=kt(n);this.app.send({event:"removeCamera",target:"editor",data:a})}handleApp(n,a,t){switch(t.event){case"getObject":P.dispatchEvent({type:j.GET_OBJECT,value:t.data});break;case"updateObject":P.dispatchEvent({type:j.UPDATE_OBJECT,value:t.data});break;case"createTexture":P.dispatchEvent({type:j.CREATE_TEXTURE,value:t.data});break;case"requestMethod":P.dispatchEvent({type:j.REQUEST_METHOD,value:t.data});break}}handleEditor(n,a,t){switch(t.event){case"setObject":P.dispatchEvent({type:j.SET_OBJECT,value:t.data});break;case"addScene":P.dispatchEvent({type:j.ADD_SCENE,value:t.data});break;case"removeScene":P.dispatchEvent({type:j.REMOVE_SCENE,value:t.data});break;case"setScene":P.dispatchEvent({type:j.SET_SCENE,value:t.data});break;case"addCamera":P.dispatchEvent({type:j.ADD_CAMERA,value:t.data});break;case"removeCamera":P.dispatchEvent({type:j.REMOVE_CAMERA,value:t.data});break}}rendererWidth=300;rendererHeight=150;addRT(n,a){const t=new f.WebGLRenderTarget(32,32,a);t.texture.name=n,this.renderTargets.set(n,t)}resize(n,a){const t=this.dpr;this.rendererWidth=n,this.rendererHeight=a,this.renderTargets.forEach(i=>{i.setSize(n*t,a*t)}),this.renderer?.setSize(n,a)}set dpr(n){this.renderer?.setPixelRatio(He(1,2,n))}get dpr(){return this.renderer!==void 0?this.renderer?.getPixelRatio():1}get width(){return this.rendererWidth}get height(){return this.rendererHeight}get canvas(){return this.renderer!==void 0?this.renderer?.domElement:null}}class An extends dt{bindCBs;buttonCBs;pane=void 0;appCallbacks=0;editorCallbacks=0;inspectorFolder=void 0;constructor(n){super(n),this.bindCBs=new Map,this.buttonCBs=new Map,n.editor&&this.createGUI()}createGUI(){this.pane=new gn.Pane({title:"GUI"}),this.pane.registerPlugin(yn)}dispose(){this.bindCBs.clear(),this.buttonCBs.clear(),this.appCallbacks=0,this.editorCallbacks=0,this.app.editor&&(this.pane?.dispose(),this.pane=void 0)}addFolder(n,a=void 0,t=void 0){if(this.app.editor)return this.pane===void 0&&this.createGUI(),(t!==void 0?t:this.pane).addFolder({title:n,...a});this.app.send({event:"addFolder",target:"app",data:{name:n,params:a,parent:t}})}get bindID(){return`debug_${Math.max(this.appCallbacks,this.editorCallbacks)}`}bind(n,a,t,i=void 0){const o=this.bindID,d=t.onChange!==void 0?t.onChange:Ct;this.bindCBs.set(o,d),this.app.editor?(this.pane===void 0&&this.createGUI(),(i!==void 0?i:this.pane).addBinding(n,a,t).on("change",h=>{this.app.send({event:"updateBind",target:"app",data:{id:o,value:h.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:o,name:a,params:t,parent:i}}),this.appCallbacks++)}triggerBind(n,a){const t=this.bindCBs.get(n);t!==void 0?t(a):console.warn(`No callback for: ${n}`,a)}button(n,a,t=void 0){const i=this.bindID;this.buttonCBs.set(i,a),this.app.editor?(this.pane===void 0&&this.createGUI(),(t!==void 0?t:this.pane).addButton({title:n}).on("click",()=>{this.app.send({event:"clickButton",target:"app",data:{id:i}})}),this.editorCallbacks++):(this.app.send({event:"addButton",target:"app",data:{id:i,name:n,callback:a,parent:t}}),this.appCallbacks++)}triggerButton(n){const a=this.buttonCBs.get(n);a!==void 0&&a()}createInspector(){this.inspectorFolder=this.addFolder("Inspector",this.pane)}clearInspector(){const n=this.inspectorFolder.children.length-1;for(let a=n;a>-1;--a)this.inspectorFolder.remove(this.inspectorFolder.children[a])}handleApp(n,a,t){const i=a;switch(t.event){case"addFolder":i.addFolder(t.data.name,t.data.params,t.data.parent);break;case"bindObject":i.bind(t.data.name,t.data.params,t.data.parent);break;case"updateBind":i.triggerBind(t.data.id,t.data.value);break;case"addButton":i.button(t.data.name,t.data.callback,t.data.parent);break;case"clickButton":i.triggerButton(t.data.id);break}}}var Lt={exports:{}},rt={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.js
4
4
  *
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var $t;function jn(){if($t)return at;$t=1;var e=E,n=Symbol.for("react.element"),a=Symbol.for("react.fragment"),t=Object.prototype.hasOwnProperty,i=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function d(r,h,u){var m,p={},b=null,w=null;u!==void 0&&(b=""+u),h.key!==void 0&&(b=""+h.key),h.ref!==void 0&&(w=h.ref);for(m in h)t.call(h,m)&&!o.hasOwnProperty(m)&&(p[m]=h[m]);if(r&&r.defaultProps)for(m in h=r.defaultProps,h)p[m]===void 0&&(p[m]=h[m]);return{$$typeof:n,type:r,key:b,ref:w,props:p,_owner:i.current}}return at.Fragment=a,at.jsx=d,at.jsxs=d,at}var it={};/**
9
+ */var Ht;function Pn(){if(Ht)return rt;Ht=1;var e=E,n=Symbol.for("react.element"),a=Symbol.for("react.fragment"),t=Object.prototype.hasOwnProperty,i=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function d(r,h,u){var m,p={},v=null,w=null;u!==void 0&&(v=""+u),h.key!==void 0&&(v=""+h.key),h.ref!==void 0&&(w=h.ref);for(m in h)t.call(h,m)&&!o.hasOwnProperty(m)&&(p[m]=h[m]);if(r&&r.defaultProps)for(m in h=r.defaultProps,h)p[m]===void 0&&(p[m]=h[m]);return{$$typeof:n,type:r,key:v,ref:w,props:p,_owner:i.current}}return rt.Fragment=a,rt.jsx=d,rt.jsxs=d,rt}var st={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,20 +14,20 @@
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
- */var Wt;function In(){return Wt||(Wt=1,process.env.NODE_ENV!=="production"&&function(){var e=E,n=Symbol.for("react.element"),a=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),r=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),m=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),w=Symbol.for("react.offscreen"),I=Symbol.iterator,V="@@iterator";function Y(s){if(s===null||typeof s!="object")return null;var g=I&&s[I]||s[V];return typeof g=="function"?g:null}var k=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function L(s){{for(var g=arguments.length,S=new Array(g>1?g-1:0),O=1;O<g;O++)S[O-1]=arguments[O];_("error",s,S)}}function _(s,g,S){{var O=k.ReactDebugCurrentFrame,G=O.getStackAddendum();G!==""&&(g+="%s",S=S.concat([G]));var W=S.map(function(U){return String(U)});W.unshift("Warning: "+g),Function.prototype.apply.call(console[s],console,W)}}var Z=!1,ee=!1,he=!1,q=!1,fe=!1,se;se=Symbol.for("react.module.reference");function Me(s){return!!(typeof s=="string"||typeof s=="function"||s===t||s===o||fe||s===i||s===u||s===m||q||s===w||Z||ee||he||typeof s=="object"&&s!==null&&(s.$$typeof===b||s.$$typeof===p||s.$$typeof===d||s.$$typeof===r||s.$$typeof===h||s.$$typeof===se||s.getModuleId!==void 0))}function Oe(s,g,S){var O=s.displayName;if(O)return O;var G=g.displayName||g.name||"";return G!==""?S+"("+G+")":S}function pe(s){return s.displayName||"Context"}function z(s){if(s==null)return null;if(typeof s.tag=="number"&&L("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof s=="function")return s.displayName||s.name||null;if(typeof s=="string")return s;switch(s){case t:return"Fragment";case a:return"Portal";case o:return"Profiler";case i:return"StrictMode";case u:return"Suspense";case m:return"SuspenseList"}if(typeof s=="object")switch(s.$$typeof){case r:var g=s;return pe(g)+".Consumer";case d:var S=s;return pe(S._context)+".Provider";case h:return Oe(s,s.render,"ForwardRef");case p:var O=s.displayName||null;return O!==null?O:z(s.type)||"Memo";case b:{var G=s,W=G._payload,U=G._init;try{return z(U(W))}catch{return null}}}return null}var ge=Object.assign,T=0,Se,Re,ke,Te,_e,De,je;function Ie(){}Ie.__reactDisabledLog=!0;function ie(){{if(T===0){Se=console.log,Re=console.info,ke=console.warn,Te=console.error,_e=console.group,De=console.groupCollapsed,je=console.groupEnd;var s={configurable:!0,enumerable:!0,value:Ie,writable:!0};Object.defineProperties(console,{info:s,log:s,warn:s,error:s,group:s,groupCollapsed:s,groupEnd:s})}T++}}function xe(){{if(T--,T===0){var s={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:ge({},s,{value:Se}),info:ge({},s,{value:Re}),warn:ge({},s,{value:ke}),error:ge({},s,{value:Te}),group:ge({},s,{value:_e}),groupCollapsed:ge({},s,{value:De}),groupEnd:ge({},s,{value:je})})}T<0&&L("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ze=k.ReactCurrentDispatcher,Ge;function ce(s,g,S){{if(Ge===void 0)try{throw Error()}catch(G){var O=G.stack.trim().match(/\n( *(at )?)/);Ge=O&&O[1]||""}return`
18
- `+Ge+s}}var v=!1,y;{var R=typeof WeakMap=="function"?WeakMap:Map;y=new R}function F(s,g){if(!s||v)return"";{var S=y.get(s);if(S!==void 0)return S}var O;v=!0;var G=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var W;W=ze.current,ze.current=null,ie();try{if(g){var U=function(){throw Error()};if(Object.defineProperty(U.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(U,[])}catch(Pe){O=Pe}Reflect.construct(s,[],U)}else{try{U.call()}catch(Pe){O=Pe}s.call(U.prototype)}}else{try{throw Error()}catch(Pe){O=Pe}s()}}catch(Pe){if(Pe&&O&&typeof Pe.stack=="string"){for(var N=Pe.stack.split(`
19
- `),ue=O.stack.split(`
20
- `),J=N.length-1,ne=ue.length-1;J>=1&&ne>=0&&N[J]!==ue[ne];)ne--;for(;J>=1&&ne>=0;J--,ne--)if(N[J]!==ue[ne]){if(J!==1||ne!==1)do if(J--,ne--,ne<0||N[J]!==ue[ne]){var Ee=`
21
- `+N[J].replace(" at new "," at ");return s.displayName&&Ee.includes("<anonymous>")&&(Ee=Ee.replace("<anonymous>",s.displayName)),typeof s=="function"&&y.set(s,Ee),Ee}while(J>=1&&ne>=0);break}}}finally{v=!1,ze.current=W,xe(),Error.prepareStackTrace=G}var Ze=s?s.displayName||s.name:"",Ht=Ze?ce(Ze):"";return typeof s=="function"&&y.set(s,Ht),Ht}function me(s,g,S){return F(s,!1)}function oe(s){var g=s.prototype;return!!(g&&g.isReactComponent)}function M(s,g,S){if(s==null)return"";if(typeof s=="function")return F(s,oe(s));if(typeof s=="string")return ce(s);switch(s){case u:return ce("Suspense");case m:return ce("SuspenseList")}if(typeof s=="object")switch(s.$$typeof){case h:return me(s.render);case p:return M(s.type,g,S);case b:{var O=s,G=O._payload,W=O._init;try{return M(W(G),g,S)}catch{}}}return""}var C=Object.prototype.hasOwnProperty,$={},te=k.ReactDebugCurrentFrame;function D(s){if(s){var g=s._owner,S=M(s.type,s._source,g?g.type:null);te.setExtraStackFrame(S)}else te.setExtraStackFrame(null)}function H(s,g,S,O,G){{var W=Function.call.bind(C);for(var U in s)if(W(s,U)){var N=void 0;try{if(typeof s[U]!="function"){var ue=Error((O||"React class")+": "+S+" type `"+U+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof s[U]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw ue.name="Invariant Violation",ue}N=s[U](g,U,O,S,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(J){N=J}N&&!(N instanceof Error)&&(D(G),L("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",O||"React class",S,U,typeof N),D(null)),N instanceof Error&&!(N.message in $)&&($[N.message]=!0,D(G),L("Failed %s type: %s",S,N.message),D(null))}}}var K=Array.isArray;function Ae(s){return K(s)}function qe(s){{var g=typeof Symbol=="function"&&Symbol.toStringTag,S=g&&s[Symbol.toStringTag]||s.constructor.name||"Object";return S}}function ut(s){try{return dt(s),!1}catch{return!0}}function dt(s){return""+s}function et(s){if(ut(s))return L("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",qe(s)),dt(s)}var Ne=k.ReactCurrentOwner,tt={key:!0,ref:!0,__self:!0,__source:!0},nt,ht,Ke;Ke={};function Tt(s){if(C.call(s,"ref")){var g=Object.getOwnPropertyDescriptor(s,"ref").get;if(g&&g.isReactWarning)return!1}return s.ref!==void 0}function _t(s){if(C.call(s,"key")){var g=Object.getOwnPropertyDescriptor(s,"key").get;if(g&&g.isReactWarning)return!1}return s.key!==void 0}function kt(s,g){if(typeof s.ref=="string"&&Ne.current&&g&&Ne.current.stateNode!==g){var S=z(Ne.current.type);Ke[S]||(L('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',z(Ne.current.type),s.ref),Ke[S]=!0)}}function ft(s,g){{var S=function(){nt||(nt=!0,L("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",g))};S.isReactWarning=!0,Object.defineProperty(s,"key",{get:S,configurable:!0})}}function Le(s,g){{var S=function(){ht||(ht=!0,L("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",g))};S.isReactWarning=!0,Object.defineProperty(s,"ref",{get:S,configurable:!0})}}var zt=function(s,g,S,O,G,W,U){var N={$$typeof:n,type:s,key:g,ref:S,props:U,_owner:W};return N._store={},Object.defineProperty(N._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(N,"_self",{configurable:!1,enumerable:!1,writable:!1,value:O}),Object.defineProperty(N,"_source",{configurable:!1,enumerable:!1,writable:!1,value:G}),Object.freeze&&(Object.freeze(N.props),Object.freeze(N)),N};function c(s,g,S,O,G){{var W,U={},N=null,ue=null;S!==void 0&&(et(S),N=""+S),_t(g)&&(et(g.key),N=""+g.key),Tt(g)&&(ue=g.ref,kt(g,G));for(W in g)C.call(g,W)&&!tt.hasOwnProperty(W)&&(U[W]=g[W]);if(s&&s.defaultProps){var J=s.defaultProps;for(W in J)U[W]===void 0&&(U[W]=J[W])}if(N||ue){var ne=typeof s=="function"?s.displayName||s.name||"Unknown":s;N&&ft(U,ne),ue&&Le(U,ne)}return zt(s,N,ue,G,O,Ne.current,U)}}var x=k.ReactCurrentOwner,A=k.ReactDebugCurrentFrame;function B(s){if(s){var g=s._owner,S=M(s.type,s._source,g?g.type:null);A.setExtraStackFrame(S)}else A.setExtraStackFrame(null)}var ae;ae=!1;function ve(s){return typeof s=="object"&&s!==null&&s.$$typeof===n}function le(){{if(x.current){var s=z(x.current.type);if(s)return`
17
+ */var $t;function jn(){return $t||($t=1,process.env.NODE_ENV!=="production"&&function(){var e=E,n=Symbol.for("react.element"),a=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),r=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),m=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),w=Symbol.for("react.offscreen"),I=Symbol.iterator,F="@@iterator";function Y(s){if(s===null||typeof s!="object")return null;var g=I&&s[I]||s[F];return typeof g=="function"?g:null}var k=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function U(s){{for(var g=arguments.length,S=new Array(g>1?g-1:0),M=1;M<g;M++)S[M-1]=arguments[M];_("error",s,S)}}function _(s,g,S){{var M=k.ReactDebugCurrentFrame,G=M.getStackAddendum();G!==""&&(g+="%s",S=S.concat([G]));var $=S.map(function(B){return String(B)});$.unshift("Warning: "+g),Function.prototype.apply.call(console[s],console,$)}}var X=!1,te=!1,fe=!1,q=!1,me=!1,oe;oe=Symbol.for("react.module.reference");function Me(s){return!!(typeof s=="string"||typeof s=="function"||s===t||s===o||me||s===i||s===u||s===m||q||s===w||X||te||fe||typeof s=="object"&&s!==null&&(s.$$typeof===v||s.$$typeof===p||s.$$typeof===d||s.$$typeof===r||s.$$typeof===h||s.$$typeof===oe||s.getModuleId!==void 0))}function Oe(s,g,S){var M=s.displayName;if(M)return M;var G=g.displayName||g.name||"";return G!==""?S+"("+G+")":S}function ge(s){return s.displayName||"Context"}function z(s){if(s==null)return null;if(typeof s.tag=="number"&&U("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof s=="function")return s.displayName||s.name||null;if(typeof s=="string")return s;switch(s){case t:return"Fragment";case a:return"Portal";case o:return"Profiler";case i:return"StrictMode";case u:return"Suspense";case m:return"SuspenseList"}if(typeof s=="object")switch(s.$$typeof){case r:var g=s;return ge(g)+".Consumer";case d:var S=s;return ge(S._context)+".Provider";case h:return Oe(s,s.render,"ForwardRef");case p:var M=s.displayName||null;return M!==null?M:z(s.type)||"Memo";case v:{var G=s,$=G._payload,B=G._init;try{return z(B($))}catch{return null}}}return null}var ve=Object.assign,T=0,xe,Re,De,Te,_e,ke,$e;function Ae(){}Ae.__reactDisabledLog=!0;function We(){{if(T===0){xe=console.log,Re=console.info,De=console.warn,Te=console.error,_e=console.group,ke=console.groupCollapsed,$e=console.groupEnd;var s={configurable:!0,enumerable:!0,value:Ae,writable:!0};Object.defineProperties(console,{info:s,log:s,warn:s,error:s,group:s,groupCollapsed:s,groupEnd:s})}T++}}function nt(){{if(T--,T===0){var s={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:ve({},s,{value:xe}),info:ve({},s,{value:Re}),warn:ve({},s,{value:De}),error:ve({},s,{value:Te}),group:ve({},s,{value:_e}),groupCollapsed:ve({},s,{value:ke}),groupEnd:ve({},s,{value:$e})})}T<0&&U("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Pe=k.ReactCurrentDispatcher,ne;function de(s,g,S){{if(ne===void 0)try{throw Error()}catch(G){var M=G.stack.trim().match(/\n( *(at )?)/);ne=M&&M[1]||""}return`
18
+ `+ne+s}}var Ne=!1,je;{var pe=typeof WeakMap=="function"?WeakMap:Map;je=new pe}function b(s,g){if(!s||Ne)return"";{var S=je.get(s);if(S!==void 0)return S}var M;Ne=!0;var G=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var $;$=Pe.current,Pe.current=null,We();try{if(g){var B=function(){throw Error()};if(Object.defineProperty(B.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(B,[])}catch(Ie){M=Ie}Reflect.construct(s,[],B)}else{try{B.call()}catch(Ie){M=Ie}s.call(B.prototype)}}else{try{throw Error()}catch(Ie){M=Ie}s()}}catch(Ie){if(Ie&&M&&typeof Ie.stack=="string"){for(var L=Ie.stack.split(`
19
+ `),ue=M.stack.split(`
20
+ `),Q=L.length-1,ae=ue.length-1;Q>=1&&ae>=0&&L[Q]!==ue[ae];)ae--;for(;Q>=1&&ae>=0;Q--,ae--)if(L[Q]!==ue[ae]){if(Q!==1||ae!==1)do if(Q--,ae--,ae<0||L[Q]!==ue[ae]){var Se=`
21
+ `+L[Q].replace(" at new "," at ");return s.displayName&&Se.includes("<anonymous>")&&(Se=Se.replace("<anonymous>",s.displayName)),typeof s=="function"&&je.set(s,Se),Se}while(Q>=1&&ae>=0);break}}}finally{Ne=!1,Pe.current=$,nt(),Error.prepareStackTrace=G}var Qe=s?s.displayName||s.name:"",Gt=Qe?de(Qe):"";return typeof s=="function"&&je.set(s,Gt),Gt}function y(s,g,S){return b(s,!1)}function O(s){var g=s.prototype;return!!(g&&g.isReactComponent)}function N(s,g,S){if(s==null)return"";if(typeof s=="function")return b(s,O(s));if(typeof s=="string")return de(s);switch(s){case u:return de("Suspense");case m:return de("SuspenseList")}if(typeof s=="object")switch(s.$$typeof){case h:return y(s.render);case p:return N(s.type,g,S);case v:{var M=s,G=M._payload,$=M._init;try{return N($(G),g,S)}catch{}}}return""}var re=Object.prototype.hasOwnProperty,ce={},R=k.ReactDebugCurrentFrame;function C(s){if(s){var g=s._owner,S=N(s.type,s._source,g?g.type:null);R.setExtraStackFrame(S)}else R.setExtraStackFrame(null)}function H(s,g,S,M,G){{var $=Function.call.bind(re);for(var B in s)if($(s,B)){var L=void 0;try{if(typeof s[B]!="function"){var ue=Error((M||"React class")+": "+S+" type `"+B+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof s[B]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw ue.name="Invariant Violation",ue}L=s[B](g,B,M,S,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(Q){L=Q}L&&!(L instanceof Error)&&(C(G),U("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",M||"React class",S,B,typeof L),C(null)),L instanceof Error&&!(L.message in ce)&&(ce[L.message]=!0,C(G),U("Failed %s type: %s",S,L.message),C(null))}}}var Z=Array.isArray;function D(s){return Z(s)}function W(s){{var g=typeof Symbol=="function"&&Symbol.toStringTag,S=g&&s[Symbol.toStringTag]||s.constructor.name||"Object";return S}}function J(s){try{return Le(s),!1}catch{return!0}}function Le(s){return""+s}function Fe(s){if(J(s))return U("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",W(s)),Le(s)}var Ue=k.ReactCurrentOwner,at={key:!0,ref:!0,__self:!0,__source:!0},it,ht,Ze;Ze={};function Rt(s){if(re.call(s,"ref")){var g=Object.getOwnPropertyDescriptor(s,"ref").get;if(g&&g.isReactWarning)return!1}return s.ref!==void 0}function Tt(s){if(re.call(s,"key")){var g=Object.getOwnPropertyDescriptor(s,"key").get;if(g&&g.isReactWarning)return!1}return s.key!==void 0}function _t(s,g){if(typeof s.ref=="string"&&Ue.current&&g&&Ue.current.stateNode!==g){var S=z(Ue.current.type);Ze[S]||(U('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',z(Ue.current.type),s.ref),Ze[S]=!0)}}function ft(s,g){{var S=function(){it||(it=!0,U("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",g))};S.isReactWarning=!0,Object.defineProperty(s,"key",{get:S,configurable:!0})}}function Be(s,g){{var S=function(){ht||(ht=!0,U("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",g))};S.isReactWarning=!0,Object.defineProperty(s,"ref",{get:S,configurable:!0})}}var Vt=function(s,g,S,M,G,$,B){var L={$$typeof:n,type:s,key:g,ref:S,props:B,_owner:$};return L._store={},Object.defineProperty(L._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(L,"_self",{configurable:!1,enumerable:!1,writable:!1,value:M}),Object.defineProperty(L,"_source",{configurable:!1,enumerable:!1,writable:!1,value:G}),Object.freeze&&(Object.freeze(L.props),Object.freeze(L)),L};function c(s,g,S,M,G){{var $,B={},L=null,ue=null;S!==void 0&&(Fe(S),L=""+S),Tt(g)&&(Fe(g.key),L=""+g.key),Rt(g)&&(ue=g.ref,_t(g,G));for($ in g)re.call(g,$)&&!at.hasOwnProperty($)&&(B[$]=g[$]);if(s&&s.defaultProps){var Q=s.defaultProps;for($ in Q)B[$]===void 0&&(B[$]=Q[$])}if(L||ue){var ae=typeof s=="function"?s.displayName||s.name||"Unknown":s;L&&ft(B,ae),ue&&Be(B,ae)}return Vt(s,L,ue,G,M,Ue.current,B)}}var x=k.ReactCurrentOwner,A=k.ReactDebugCurrentFrame;function V(s){if(s){var g=s._owner,S=N(s.type,s._source,g?g.type:null);A.setExtraStackFrame(S)}else A.setExtraStackFrame(null)}var ie;ie=!1;function be(s){return typeof s=="object"&&s!==null&&s.$$typeof===n}function le(){{if(x.current){var s=z(x.current.type);if(s)return`
22
22
 
23
- Check the render method of \``+s+"`."}return""}}function Gt(s){{if(s!==void 0){var g=s.fileName.replace(/^.*[\\\/]/,""),S=s.lineNumber;return`
23
+ Check the render method of \``+s+"`."}return""}}function zt(s){{if(s!==void 0){var g=s.fileName.replace(/^.*[\\\/]/,""),S=s.lineNumber;return`
24
24
 
25
25
  Check your code at `+g+":"+S+"."}return""}}var mt={};function pt(s){{var g=le();if(!g){var S=typeof s=="string"?s:s.displayName||s.name;S&&(g=`
26
26
 
27
- Check the top-level render call using <`+S+">.")}return g}}function be(s,g){{if(!s._store||s._store.validated||s.key!=null)return;s._store.validated=!0;var S=pt(g);if(mt[S])return;mt[S]=!0;var O="";s&&s._owner&&s._owner!==x.current&&(O=" It was passed a child from "+z(s._owner.type)+"."),B(s),L('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',S,O),B(null)}}function ye(s,g){{if(typeof s!="object")return;if(Ae(s))for(var S=0;S<s.length;S++){var O=s[S];ve(O)&&be(O,g)}else if(ve(s))s._store&&(s._store.validated=!0);else if(s){var G=Y(s);if(typeof G=="function"&&G!==s.entries)for(var W=G.call(s),U;!(U=W.next()).done;)ve(U.value)&&be(U.value,g)}}}function He(s){{var g=s.type;if(g==null||typeof g=="string")return;var S;if(typeof g=="function")S=g.propTypes;else if(typeof g=="object"&&(g.$$typeof===h||g.$$typeof===p))S=g.propTypes;else return;if(S){var O=z(g);H(S,s.props,"prop",O,s)}else if(g.PropTypes!==void 0&&!ae){ae=!0;var G=z(g);L("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",G||"Unknown")}typeof g.getDefaultProps=="function"&&!g.getDefaultProps.isReactClassApproved&&L("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Ce(s){{for(var g=Object.keys(s.props),S=0;S<g.length;S++){var O=g[S];if(O!=="children"&&O!=="key"){B(s),L("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",O),B(null);break}}s.ref!==null&&(B(s),L("Invalid attribute `ref` supplied to `React.Fragment`."),B(null))}}function Fe(s,g,S,O,G,W){{var U=Me(s);if(!U){var N="";(s===void 0||typeof s=="object"&&s!==null&&Object.keys(s).length===0)&&(N+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var ue=Gt(G);ue?N+=ue:N+=le();var J;s===null?J="null":Ae(s)?J="array":s!==void 0&&s.$$typeof===n?(J="<"+(z(s.type)||"Unknown")+" />",N=" Did you accidentally export a JSX literal instead of a component?"):J=typeof s,L("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",J,N)}var ne=c(s,g,S,G,W);if(ne==null)return ne;if(U){var Ee=g.children;if(Ee!==void 0)if(O)if(Ae(Ee)){for(var Ze=0;Ze<Ee.length;Ze++)ye(Ee[Ze],s);Object.freeze&&Object.freeze(Ee)}else L("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else ye(Ee,s)}return s===t?Ce(ne):He(ne),ne}}function Xe(s,g,S){return Fe(s,g,S,!0)}function gt(s,g,S){return Fe(s,g,S,!1)}var pn=gt,gn=Xe;it.Fragment=t,it.jsx=pn,it.jsxs=gn}()),it}process.env.NODE_ENV==="production"?Ft.exports=jn():Ft.exports=In();var l=Ft.exports;function Bt(e){return e.title.search("<")>-1?l.jsx("button",{className:"svg",dangerouslySetInnerHTML:{__html:e.title}}):l.jsx("button",{children:e.title})}const Nn=l.jsxs("svg",{className:"closeIcon",width:"14",height:"14",fill:"none",stroke:"#666666",strokeMiterlimit:"10",children:[l.jsx("circle",{cx:"7",cy:"7",r:"6"}),l.jsx("line",{x1:"4",y1:"4",x2:"10",y2:"10"}),l.jsx("line",{x1:"4",y1:"10",x2:"10",y2:"4"})]}),Ln=l.jsx("svg",{className:"dragIcon",width:"14",height:"14",fill:"#666666",stroke:"none",children:l.jsx("path",{d:`M10.43,4H3.57C3.26,4,3,4.22,3,4.5v1C3,5.78,3.26,6,3.57,6h6.86C10.74,6,11,5.78,11,5.5v-1
27
+ Check the top-level render call using <`+S+">.")}return g}}function ye(s,g){{if(!s._store||s._store.validated||s.key!=null)return;s._store.validated=!0;var S=pt(g);if(mt[S])return;mt[S]=!0;var M="";s&&s._owner&&s._owner!==x.current&&(M=" It was passed a child from "+z(s._owner.type)+"."),V(s),U('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',S,M),V(null)}}function Ee(s,g){{if(typeof s!="object")return;if(D(s))for(var S=0;S<s.length;S++){var M=s[S];be(M)&&ye(M,g)}else if(be(s))s._store&&(s._store.validated=!0);else if(s){var G=Y(s);if(typeof G=="function"&&G!==s.entries)for(var $=G.call(s),B;!(B=$.next()).done;)be(B.value)&&ye(B.value,g)}}}function Ye(s){{var g=s.type;if(g==null||typeof g=="string")return;var S;if(typeof g=="function")S=g.propTypes;else if(typeof g=="object"&&(g.$$typeof===h||g.$$typeof===p))S=g.propTypes;else return;if(S){var M=z(g);H(S,s.props,"prop",M,s)}else if(g.PropTypes!==void 0&&!ie){ie=!0;var G=z(g);U("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",G||"Unknown")}typeof g.getDefaultProps=="function"&&!g.getDefaultProps.isReactClassApproved&&U("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Ce(s){{for(var g=Object.keys(s.props),S=0;S<g.length;S++){var M=g[S];if(M!=="children"&&M!=="key"){V(s),U("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",M),V(null);break}}s.ref!==null&&(V(s),U("Invalid attribute `ref` supplied to `React.Fragment`."),V(null))}}function Ve(s,g,S,M,G,$){{var B=Me(s);if(!B){var L="";(s===void 0||typeof s=="object"&&s!==null&&Object.keys(s).length===0)&&(L+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var ue=zt(G);ue?L+=ue:L+=le();var Q;s===null?Q="null":D(s)?Q="array":s!==void 0&&s.$$typeof===n?(Q="<"+(z(s.type)||"Unknown")+" />",L=" Did you accidentally export a JSX literal instead of a component?"):Q=typeof s,U("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Q,L)}var ae=c(s,g,S,G,$);if(ae==null)return ae;if(B){var Se=g.children;if(Se!==void 0)if(M)if(D(Se)){for(var Qe=0;Qe<Se.length;Qe++)Ee(Se[Qe],s);Object.freeze&&Object.freeze(Se)}else U("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Ee(Se,s)}return s===t?Ce(ae):Ye(ae),ae}}function Je(s,g,S){return Ve(s,g,S,!0)}function gt(s,g,S){return Ve(s,g,S,!1)}var mn=gt,pn=Je;st.Fragment=t,st.jsx=mn,st.jsxs=pn}()),st}process.env.NODE_ENV==="production"?Lt.exports=Pn():Lt.exports=jn();var l=Lt.exports;function Ut(e){return e.title.search("<")>-1?l.jsx("button",{className:"svg",dangerouslySetInnerHTML:{__html:e.title}}):l.jsx("button",{children:e.title})}const In=l.jsxs("svg",{className:"closeIcon",width:"14",height:"14",fill:"none",stroke:"#666666",strokeMiterlimit:"10",children:[l.jsx("circle",{cx:"7",cy:"7",r:"6"}),l.jsx("line",{x1:"4",y1:"4",x2:"10",y2:"10"}),l.jsx("line",{x1:"4",y1:"10",x2:"10",y2:"4"})]}),Nn=l.jsx("svg",{className:"dragIcon",width:"14",height:"14",fill:"#666666",stroke:"none",children:l.jsx("path",{d:`M10.43,4H3.57C3.26,4,3,4.22,3,4.5v1C3,5.78,3.26,6,3.57,6h6.86C10.74,6,11,5.78,11,5.5v-1
28
28
  C11,4.22,10.74,4,10.43,4z M10.43,8H3.57C3.26,8,3,8.22,3,8.5v1C3,9.78,3.26,10,3.57,10h6.86C10.74,10,11,9.78,11,9.5v-1
29
- C11,8.22,10.74,8,10.43,8z`})});function on(e){return l.jsx(en.Reorder.Item,{value:e.title,children:l.jsxs("div",{children:[Ln,l.jsx("span",{children:e.title}),l.jsx("button",{className:"closeIcon",onClick:()=>{e.onDelete(e.index)},children:Nn})]})},e.title)}function cn(e){const[n,a]=E.useState(!1),[t,i]=E.useState(e.options),o=u=>{e.onDragComplete(u),i(u)},d=u=>{const m=[...t];m.splice(u,1),o(m)},r=[];t.forEach((u,m)=>{r.push(l.jsx(on,{index:m,title:u,onDelete:d},u))});let h="dropdown draggable";return e.subdropdown&&(h+=" subdropdown"),l.jsxs("div",{className:h,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[l.jsx(Bt,{title:e.title}),l.jsx(en.Reorder.Group,{axis:"y",values:t,onReorder:o,style:{visibility:n?"visible":"hidden"},children:r})]})}function ln(e){const[n,a]=E.useState(!1),t=[];e.options.map((o,d)=>{e.onSelect!==void 0&&(o.onSelect=e.onSelect),t.push(l.jsx(un,{option:o},d))});let i="dropdown";return e.subdropdown&&(i+=" subdropdown"),l.jsxs("div",{className:i,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[l.jsx(Bt,{title:e.title}),l.jsx("ul",{style:{visibility:n?"visible":"hidden"},children:t})]})}function un(e){const{option:n}=e,[a,t]=E.useState("");let i;switch(n.type){case"draggable":i=l.jsx(cn,{title:n.title,options:n.value,onDragComplete:o=>{n.onDragComplete!==void 0&&n.onDragComplete(o)},subdropdown:!0});break;case"dropdown":i=l.jsx(ln,{title:n.title,options:n.value,onSelect:n.onSelect,subdropdown:!0});break;case"option":i=l.jsx("button",{onClick:()=>{n.onSelect!==void 0&&n.onSelect(n.value),n.selectable&&(a!==n.title?t(n.title):t(""))},children:n.title});break}return l.jsx("li",{className:a===n.title?"selected":"",children:i},tn())}function Fn(e,n,a){function t(o){switch(n.forEach(d=>{d.callback(e,d.remote,o)}),o.event){case"custom":P.dispatchEvent({type:j.CUSTOM,value:o.data});break}}function i(o){switch(a.forEach(d=>{d.callback(e,d.remote,o)}),o.event){case"custom":P.dispatchEvent({type:j.CUSTOM,value:o.data});break}}e.listen=o=>{o.target==="editor"?i(o):t(o)}}function Ot(e){const[n,a]=E.useState(e.open!==void 0?e.open:!0),t=!n||e.children===void 0;return l.jsxs("div",{className:`accordion ${t?"hide":""}`,children:[l.jsxs("button",{className:"toggle",onClick:()=>{const i=!n;e.onToggle!==void 0&&e.onToggle(i),a(i)},children:[l.jsx("p",{className:`status ${n?"open":""}`,children:"Toggle"}),l.jsx("p",{className:"label",children:ot(e.label)})]}),e.button,l.jsx("div",{className:n?"open":"",children:l.jsx("div",{children:e.children})})]})}function Vt(e){const n=E.useRef(null),[a,t]=E.useState(!1),i=e.child!==void 0&&e.child.children.length>0,o=[];return e.child!==void 0&&e.child.children.length>0&&e.child.children.map((d,r)=>{o.push(l.jsx(Vt,{child:d,three:e.three},r))}),E.useEffect(()=>{const d=e.child.uuid,r=e.three.getScene(d);if(r!==null){const h=r.getObjectByProperty("uuid",d);h!==void 0&&(n.current.style.opacity=h.visible?"1":"0.25")}},[]),l.jsx(l.Fragment,{children:e.child!==void 0&&l.jsxs("div",{className:"childObject",children:[l.jsxs("div",{className:"child",children:[i?l.jsx("button",{className:"status",style:{backgroundPositionX:a?"-14px":"2px"},onClick:()=>{t(!a)}}):null,l.jsx("button",{className:"name",style:{left:i?"20px":"5px"},onClick:()=>{e.child!==void 0&&(e.three.getObject(e.child.uuid),a||t(!0))},children:e.child.name.length>0?`${e.child.name} (${e.child.type})`:`${e.child.type}::${e.child.uuid}`}),l.jsx("button",{className:"visibility",ref:n,onClick:()=>{if(e.child){const d=e.three.getScene(e.child.uuid);if(d!==null){const r=d.getObjectByProperty("uuid",e.child.uuid);if(r!==void 0){const h="visible",u=!r.visible;n.current.style.opacity=u?"1":"0.25",e.three.updateObject(e.child.uuid,h,u),Q(r,h,u)}else console.log(`Hermes - Couldn't find object: ${e.child.uuid}`,d)}else console.log(`Hermes - Couldn't find object in scene: ${e.child.uuid}, ${e.child.name}`)}}}),l.jsx("div",{className:`icon ${Rn(e.child)}`})]}),l.jsx("div",{className:a?"open":"",children:l.jsx("div",{className:"container",children:o})})]},Math.random())})}function dn(e){const n=[];return e.child?.children.map((a,t)=>{n.push(l.jsx(Vt,{child:a,scene:e.scene,three:e.three},t))}),l.jsx("div",{className:`scene ${e.class!==void 0?e.class:""}`,children:n})}function Un(e){const[n,a]=E.useState(e.defaultValue);return E.useEffect(()=>{let t=!1,i=-1,o=0,d=e.defaultValue;const r=b=>{t=!0,o=Number(e.input.current?.value),i=b.clientX,document.addEventListener("mouseup",u,!1),document.addEventListener("mousemove",h,!1),document.addEventListener("contextmenu",u,!1)},h=b=>{if(!t)return;const w=e.step!==void 0?e.step:1,I=(b.clientX-i)*w;d=Number((o+I).toFixed(4)),e.min!==void 0&&(d=Math.max(d,e.min)),e.max!==void 0&&(d=Math.min(d,e.max)),e.onChange!==void 0&&e.onChange(d),a(d)},u=()=>{t=!1,document.removeEventListener("mouseup",u),document.removeEventListener("mousemove",h),document.removeEventListener("contextmenu",u)},m=b=>{const w=Number(b.target.value);a(w)},p=b=>{const w=Number(b.target.value);e.onChange!==void 0&&e.onChange(w),a(w)};return e.input.current?.addEventListener("input",m),e.label.current?.addEventListener("mousedown",r,!1),e.sliderRef!==void 0&&e.sliderRef.current?.addEventListener("input",p),()=>{e.input.current?.removeEventListener("input",m),e.label.current?.removeEventListener("mousedown",r),e.sliderRef!==void 0&&e.sliderRef.current?.removeEventListener("input",p),document.removeEventListener("mouseup",u),document.removeEventListener("mousemove",h),document.removeEventListener("contextmenu",u)}},[]),n}function We(e){const n=E.useRef(null),a=E.useRef(null),t=Un({label:e.labelRef,input:n,sliderRef:a,defaultValue:e.value,min:e.min,max:e.max,step:e.step,onChange:i=>{e.onChange!==void 0&&e.onChange(e.prop,i)}});return l.jsxs(l.Fragment,{children:[e.type==="number"&&l.jsx("input",{alt:e.alt,className:e.className,ref:n,type:"number",value:t,min:e.min,max:e.max,step:e.step,disabled:e.disabled,onChange:i=>{const o=Number(i.target.value);e.onChange!==void 0&&e.onChange(e.prop,o)}}),e.type==="range"&&l.jsxs(l.Fragment,{children:[l.jsx("input",{type:"text",value:t.toString(),disabled:e.disabled,ref:n,className:"min",onChange:i=>{const o=Number(i.target.value);e.onChange!==void 0&&e.onChange(e.prop,o)}}),l.jsx("input",{disabled:e.disabled,type:"range",value:t,min:e.min,max:e.max,step:e.step,ref:a,onChange:wt})]})]})}function Bn(e){const n=E.useRef(null),a=E.useRef(null),t=E.useRef(null),i=E.useRef(null),o=E.useRef(null),d=E.useRef(null),[r,h]=E.useState(e.value),[u,m]=E.useState({min:Math.min(e.min,Math.min(e.value.x,e.value.y)),max:Math.max(e.max,Math.max(e.value.x,e.value.y))}),[p,b]=E.useState(!1);function w(){p||(window.addEventListener("mousemove",V),window.addEventListener("mouseup",I),window.addEventListener("mouseup",I),b(!0))}function I(){window.removeEventListener("mousemove",V),window.removeEventListener("mouseup",I),b(!1)}function V(_){const Z=o.current.getBoundingClientRect(),ee=Ve(0,99,_.clientX-Z.left)/99,he=Ve(0,99,_.clientY-Z.top)/99,q=Nt(It(u.min,u.max,ee),3),fe=Nt(It(u.min,u.max,he),3);e.onChange({target:{value:{x:q,y:fe}}}),h({x:q,y:fe})}function Y(_){let Z=r.x,ee=r.y;_.target===n.current?Z=Number(_.target.value):ee=Number(_.target.value),h({x:Z,y:ee})}function k(){const _=Number(t.current.value);m({min:_,max:u.max}),(r.x<_||r.y<_)&&h({x:Ve(_,u.max,r.x),y:Ve(_,u.max,r.y)})}function L(){const _=Number(i.current.value);m({min:u.min,max:_}),(r.x>_||r.y>_)&&h({x:Ve(u.min,_,r.x),y:Ve(u.min,_,r.y)})}return E.useEffect(()=>{const _=jt(u.min,u.max,r.x),Z=jt(u.min,u.max,r.y);d.current.style.left=`${_*100}%`,d.current.style.top=`${Z*100}%`},[u,r]),l.jsxs("div",{className:"vector2",children:[l.jsxs("div",{className:"fields",children:[l.jsxs("div",{children:[l.jsx("label",{children:"X:"}),l.jsx("input",{ref:n,type:"number",value:r.x,min:u.min,max:u.max,step:.01,onChange:Y})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Y:"}),l.jsx("input",{ref:a,type:"number",value:r.y,min:u.min,max:u.max,step:.01,onChange:Y})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Min:"}),l.jsx("input",{ref:t,type:"number",value:u.min,step:.01,onChange:k})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Max:"}),l.jsx("input",{ref:i,type:"number",value:u.max,step:.01,onChange:L})]})]}),l.jsxs("div",{className:"input",ref:o,onMouseDown:w,onMouseUp:I,children:[l.jsx("div",{className:"x"}),l.jsx("div",{className:"y"}),l.jsx("div",{className:"pt",ref:d})]})]})}function Yt(e){const n=e.value.isVector3!==void 0,a=e.value.isEuler!==void 0,t=e.value.elements!==void 0,i=[];if(n){const o=E.useMemo(()=>e.value,[]),d=(h,u)=>{o[h]=u,e.onChange({target:{value:o}})};["x","y","z"].forEach(h=>{const u=E.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:u,children:h.toUpperCase()}),l.jsx(We,{value:o[h],type:"number",prop:h,step:.01,labelRef:u,onChange:d})]},h))})}else if(a){const o=E.useMemo(()=>e.value,[]),d=(h,u)=>{o[h]=u,e.onChange({target:{value:o}})};["_x","_y","_z"].forEach(h=>{const u=E.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:u,children:h.substring(1).toUpperCase()}),l.jsx(We,{value:o[h],type:"number",prop:h,step:.01,labelRef:u,onChange:d})]},h))})}else if(t){const o=E.useMemo(()=>e.value,[]),d=(r,h)=>{const u=Number(r);o.elements[u]=h,e.onChange({target:{value:o}})};for(let r=0;r<9;r++){const h=E.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:h,children:r+1}),l.jsx(We,{value:o.elements[r],type:"number",prop:r.toString(),step:.01,labelRef:h,onChange:d})]},r.toString()))}}return l.jsx("div",{className:"grid3",children:i},Math.random().toString())}function Vn(e){const n=e.value.x!==void 0,a=[];if(n){const t=E.useMemo(()=>e.value,[]),i=(d,r)=>{t[d]=r,e.onChange({target:{value:t}})};["x","y","z","w"].forEach(d=>{const r=E.useRef(null);a.push(l.jsxs("div",{children:[l.jsx("label",{ref:r,children:d.toUpperCase()}),l.jsx(We,{value:t.x,type:"number",prop:d,step:.01,labelRef:r,onChange:i})]},d))})}else{const t=E.useMemo(()=>e.value,[]),i=(o,d)=>{const r=Number(o);t.elements[r]=d,e.onChange({target:{value:t}})};for(let o=0;o<16;o++){const d=E.useRef(null);a.push(l.jsxs("div",{children:[l.jsx("label",{ref:d,children:o+1}),l.jsx(We,{value:t.elements[o],type:"number",prop:o.toString(),step:.01,labelRef:d,onChange:i})]},o.toString()))}}return l.jsx("div",{className:"grid4",children:a})}function zn(e){return"items"in e}function Ye(e){const n=[];return e.items.forEach(a=>{zn(a)?n.push(l.jsx(Ye,{title:ot(a.title),items:a.items},Math.random())):n.push(l.jsx(St,{title:a.title,prop:a.prop,value:a.value,type:a.type,min:a.min,max:a.max,step:a.step,disabled:a.disabled,options:a.options,onChange:(t,i)=>{a.onChange!==void 0&&a.onChange(t,i)},onKeyDown:t=>{a.onKeyDown!==void 0&&a.onKeyDown(t)}},Math.random()))}),l.jsx(Ot,{label:e.title,open:e.expanded===!0,children:n})}function Gn(e){return!(e==="alphaHash"||e==="alphaToCoverage"||e==="attenuationDistance"||e==="blendAlpha"||e==="blendColor"||e==="blendDstAlpha"||e==="colorWrite"||e==="combine"||e==="defaultAttributeValues"||e==="depthFunc"||e==="forceSinglePass"||e==="glslVersion"||e==="linecap"||e==="linejoin"||e==="linewidth"||e==="normalMapType"||e==="precision"||e==="premultipliedAlpha"||e==="shadowSide"||e==="toneMapped"||e==="uniformsGroups"||e==="uniformsNeedUpdate"||e==="userData"||e==="vertexColors"||e==="version"||e==="wireframeLinecap"||e==="wireframeLinejoin"||e==="wireframeLinewidth"||e.slice(0,4)==="clip"||e.slice(0,7)==="polygon"||e.slice(0,7)==="stencil"||e.slice(0,2)==="is")}function Hn(e){switch(e){case"Alpha Map":return"alphaMap";case"Anisotropy Map":return"anisotropyMap";case"AO Map":return"aoMap";case"Bump Map":return"bumpMap";case"Clearcoat Map":return"clearcoatMap";case"Clearcoat Normal Map":return"clearcoatNormalMap";case"Clearcoat Roughness Map":return"clearcoatRoughnessMap";case"Displacement Map":return"displacementMap";case"Emissive Map":return"emissiveMap";case"Iridescence Map":return"iridescenceMap";case"Iridescence Thickness Map":return"iridescenceThicknessMap";case"Map":return"map";case"Matcap":return"matcap";case"Normal Map":return"normalMap";case"Roughness Map":return"roughnessMap";case"Sheen Color Map":return"sheenColorMap";case"Sheen Roughness Map":return"sheenRoughnessMap";case"Specular Color Map":return"specularColorMap";case"Specular Map Intensity":return"specularIntensityMap";case"Thickness Map":return"thicknessMap";case"Transmission Map":return"transmissionMap"}return e}function Rt(e){switch(e){case"alphaMap":return"Alpha Map";case"anisotropyMap":return"Anisotropy Map";case"anisotropyRotation":return"Anisotropy Rotation";case"aoMap":return"AO Map";case"aoMapIntensity":return"AO Map Intensity";case"attenuationColor":return"Attenuation Color";case"blendAlpha":return"Blend Alpha";case"blendColor":return"Blend Color";case"blendDst":return"Blend Dst";case"blendDstAlpha":return"Blend Dst Alha";case"blendEquation":return"Blend Equation";case"blendEquationAlpha":return"Blend Equation Alpha";case"blending":return"Blending";case"blendSrc":return"Blend Src";case"blendSrcAlpha":return"Blend Src Alpha";case"bumpMap":return"Bump Map";case"bumpScale":return"Bump Scale";case"clearcoatMap":return"Clearcoat Map";case"clearcoatNormalMap":return"Clearcoat Normal Map";case"clearcoatNormalScale":return"Clearcoat Normal Scale";case"clearcoatRoughness":return"Clearcoat Roughness";case"clearcoatRoughnessMap":return"Clearcoat Roughness Map";case"color":return"Color";case"defines":return"Defines";case"depthTest":return"Depth Test";case"depthWrite":return"Depth Write";case"displacementBias":return"Displacement Bias";case"displacementMap":return"Displacement Map";case"displacementScale":return"Displacement Scale";case"dithering":return"Dithering";case"emissive":return"Emissive";case"emissiveMap":return"Emissive Map";case"emissiveIntensity":return"Emissive Intensity";case"envMap":return"Environment Map";case"envMapIntensity":return"Environment Map Intensity";case"extensions":return"Extensions";case"flatShading":return"Flat Shading";case"fragmentShader":return"Fragment Shader";case"fog":return"Fog";case"gradientMap":return"Gradient Map";case"ior":return"IOR";case"iridescenceIOR":return"Iridescence IOR";case"iridescenceMap":return"Iridescence Map";case"iridescenceThicknessMap":return"Iridescence Thickness Map";case"iridescenceThicknessRange":return"Iridescence Thickness Range";case"lights":return"Lights";case"lightMap":return"Light Map";case"lightMapIntensity":return"Light Map Intensity";case"map":return"Map";case"matcap":return"Matcap";case"metalness":return"Metalness";case"metalnessMap":return"Metalness Map";case"name":return"Name";case"normalMap":return"Normal Map";case"normalScale":return"Normal Scale";case"opacity":return"Opacity";case"reflectivity":return"Reflectivity";case"refractionRatio":return"Refraction Ratio";case"roughness":return"Roughness";case"roughnessMap":return"Roughness Map";case"sheenColor":return"Sheen Color";case"sheenColorMap":return"Sheen Color Map";case"sheenRoughness":return"Sheen Roughness";case"sheenRoughnessMap":return"Sheen Roughness Map";case"shininess":return"Shininess";case"side":return"Side";case"size":return"Size";case"sizeAttenuation":return"Size Attenuation";case"specular":return"Specular";case"specularColor":return"Specular Color";case"specularColorMap":return"Specular Color Map";case"specularIntensity":return"Specular Intensity";case"specularIntensityMap":return"Specular Map Intensity";case"thickness":return"Thickness";case"thicknessMap":return"Thickness Map";case"transmission":return"Transmission";case"transmissionMap":return"Transmission Map";case"transparent":return"Transparent";case"type":return"Type";case"uuid":return"UUID";case"uniforms":return"Uniforms";case"vertexShader":return"Vertex Shader";case"visible":return"Visible";case"wireframe":return"Wireframe"}return e}function hn(e){const n=e.toLowerCase();return n.search("intensity")>-1||n==="anisotropyrotation"||n==="blendalpha"||n==="bumpscale"||n==="clearcoatroughness"||n==="displacementbias"||n==="displacementscale"||n==="metalness"||n==="opacity"||n==="reflectivity"||n==="refractionratio"||n==="roughness"||n==="sheenroughness"||n==="thickness"}function $n(){const e=document.createElement("input");return e.type="file",new Promise((n,a)=>{e.addEventListener("change",function(){if(e.files===null)a();else{const t=e.files[0],i=new FileReader;i.onload=function(o){n(o.target.result)},i.readAsDataURL(t)}}),e.click()})}const Wn=[{title:"Front",value:f.FrontSide},{title:"Back",value:f.BackSide},{title:"Double",value:f.DoubleSide}],Yn=[{title:"No Blending",value:f.NoBlending},{title:"Normal",value:f.NormalBlending},{title:"Additive",value:f.AdditiveBlending},{title:"Subtractive",value:f.SubtractiveBlending},{title:"Multiply",value:f.MultiplyBlending},{title:"Custom",value:f.CustomBlending}],qn=[{title:"Add",value:f.AddEquation},{title:"Subtract",value:f.SubtractEquation},{title:"Reverse Subtract",value:f.ReverseSubtractEquation},{title:"Min",value:f.MinEquation},{title:"Max",value:f.MaxEquation}],Kn=[{title:"Zero",valye:f.ZeroFactor},{title:"One",valye:f.OneFactor},{title:"Src Color",valye:f.SrcColorFactor},{title:"One Minus Src Color",valye:f.OneMinusSrcColorFactor},{title:"Src Alpha",valye:f.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:f.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:f.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:f.OneMinusDstAlphaFactor},{title:"Dst Color",valye:f.DstColorFactor},{title:"One Minus Dst Color",valye:f.OneMinusDstColorFactor},{title:"Src Alpha Saturate",valye:f.SrcAlphaSaturateFactor},{title:"Constant Color",valye:f.ConstantColorFactor},{title:"One Minus Constant Color",valye:f.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:f.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:f.OneMinusConstantAlphaFactor}],Xn=[{title:"Zero",valye:f.ZeroFactor},{title:"One",valye:f.OneFactor},{title:"Src Color",valye:f.SrcColorFactor},{title:"One Minus Src Color",valye:f.OneMinusSrcColorFactor},{title:"Src Alpha",valye:f.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:f.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:f.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:f.OneMinusDstAlphaFactor},{title:"Dst Color",valye:f.DstColorFactor},{title:"One Minus Dst Color",valye:f.OneMinusDstColorFactor},{title:"Constant Color",valye:f.ConstantColorFactor},{title:"One Minus Constant Color",valye:f.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:f.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:f.OneMinusConstantAlphaFactor}];function rt(e,n){e.needsUpdate=!0,e.type="option",e.options=n}function Zn(e,n,a,t){return{type:"boolean",title:Rt(e),prop:e,value:n,needsUpdate:!0,onChange:(i,o)=>{t.updateObject(a.uuid,`material.${e}`,o),t.updateObject(a.uuid,"material.needsUpdate",!0);const d=t.getScene(a.uuid);if(d!==null){const r=d.getObjectByProperty("uuid",a.uuid);Q(r,`material.${e}`,o)}}}}function Jn(e,n,a,t){const i={type:"number",title:Rt(e),prop:e,value:n,min:void 0,max:void 0,step:.01,needsUpdate:!0,onChange:(o,d)=>{t.updateObject(a.uuid,`material.${e}`,d),t.updateObject(a.uuid,"material.needsUpdate",!0);const r=t.getScene(a.uuid);if(r!==null){const h=r.getObjectByProperty("uuid",a.uuid);Q(h,`material.${e}`,d)}}};switch(e){case"blending":rt(i,Yn);break;case"blendDst":rt(i,Xn);break;case"blendEquation":rt(i,qn);break;case"blendSrc":rt(i,Kn);break;case"side":rt(i,Wn);break}return hn(e)&&(i.value=Number(n),i.type="range",i.min=Math.min(0,i.value),i.max=Math.max(1,i.value),i.step=.01),i}function Qn(e,n,a,t){const i={type:"string",title:Rt(e),prop:e,value:n,needsUpdate:!0,onChange:(d,r)=>{t.updateObject(a.uuid,`material.${e}`,r),t.updateObject(a.uuid,"material.needsUpdate",!0);const h=t.getScene(a.uuid);if(h!==null){const u=h.getObjectByProperty("uuid",a.uuid);Q(u,`material.${e}`,r)}},onKeyDown:d=>{}};return(e==="vertexShader"||e==="fragmentShader")&&(i.disabled=!1,i.latest=i.value,i.onChange=(d,r)=>{i.latest=r,t.updateObject(a.uuid,`material.${e}`,r);const h=t.getScene(a.uuid);if(h!==null){const u=h.getObjectByProperty("uuid",a.uuid);Q(u,`material.${e}`,r)}},i.onKeyDown=d=>{if(d.key==="Enter"&&(d.altKey||d.metaKey)){t.updateObject(a.uuid,"material.needsUpdate",!0);const r=t.getScene(a.uuid);if(r!==null){const h=r.getObjectByProperty("uuid",a.uuid);Q(h,"material.needsUpdate",!0)}}}),i}function ea(e){return e.x!==void 0&&e.y!==void 0&&e.z===void 0}function ta(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w===void 0}function na(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w!==void 0}function Ut(e){e.sort((n,a)=>n.title<a.title?-1:n.title>a.title?1:0)}function st(e,n,a,t,i="",o=!1){const d=Rt(e).split(".")[0].replaceAll("[","").replaceAll("]",""),r=i.length>0?`${i}.${e}`:e,h=typeof n;if(h==="boolean"||h==="string")return{title:d,prop:r,type:h,value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const b=p.getObjectByProperty("uuid",a.uuid);Q(b,`material.${r}`,m)}}};if(h==="number"){const u={title:d,prop:r,type:"number",value:n,step:.01,disabled:o,onChange:(m,p)=>{t.updateObject(a.uuid,`material.${r}`,p);const b=t.getScene(a.uuid);if(b!==null){const w=b.getObjectByProperty("uuid",a.uuid);Q(w,`material.${r}`,p)}}};return hn(d)&&(u.type="range",u.min=0,u.max=1),u}else{if(n.isColor)return{title:d,prop:r,type:"color",value:n,disabled:o,onChange:(u,m)=>{const p=new f.Color(m);t.updateObject(a.uuid,`material.${r}`,p);const b=t.getScene(a.uuid);if(b!==null){const w=b.getObjectByProperty("uuid",a.uuid);Q(w,`material.${r}`,p)}}};if(Array.isArray(n)){const u=[];for(const m in n){const p=n[m],b=`[${m.toString()}]`;if(p.value!==void 0){const w=st(`${b}.value`,p.value,a,t,r,o);w!==void 0&&u.push(w)}else{const w=st(b,p,a,t,r,o);w!==void 0&&u.push(w)}}if(u.length>0)return Ut(u),{title:d,items:u}}else{if(ea(n))return{title:d,prop:r,type:"vector2",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const b=p.getObjectByProperty("uuid",a.uuid);Q(b,`material.${r}`,m)}}};if(ta(n))return{title:d,prop:r,type:"grid3",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const b=p.getObjectByProperty("uuid",a.uuid);Q(b,`material.${r}`,m)}}};if(na(n))return{title:d,prop:r,type:"grid4",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const b=p.getObjectByProperty("uuid",a.uuid);Q(b,`material.${r}`,m)}}};if(n.isEuler)return{title:d,prop:r,type:"euler",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const b=p.getObjectByProperty("uuid",a.uuid);Q(b,`material.${r}`,m)}}};if(n.src!==void 0)return{title:d,type:"image",value:n,disabled:o,onChange:(u,m)=>{const p=Hn(e),b=i.length>0?`${i}.${p}`:p;t.createTexture(a.uuid,`material.${b}`,m);const w=t.getScene(a.uuid);if(w!==null){const I=w.getObjectByProperty("uuid",a.uuid);I!==void 0&&sn(m.src).then(V=>{V.offset.set(m.offset[0],m.offset[1]),V.repeat.set(m.repeat[0],m.repeat[1]);const Y=I.material,k=b.split(".");switch(k.length){case 1:Y[k[0]]=V;break;case 2:Y[k[0]][k[1]]=V;break;case 3:Y[k[0]][k[1]][k[2]]=V;break;case 4:Y[k[0]][k[1]][k[2]][k[3]]=V;break;case 5:Y[k[0]][k[1]][k[2]][k[3]][k[4]]=V;break}Y.needsUpdate=!0})}}};if(n.elements!==void 0)return{title:d,prop:r,type:n.elements.length>9?"grid4":"grid3",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const b=p.getObjectByProperty("uuid",a.uuid);Q(b,`material.${r}`,m)}}};{const u=[],m=e==="defines"||e==="extensions";try{for(const p in n){const b=n[p];if(b!==void 0)if(b.value!==void 0){const w=st(`${p}.value`,b.value,a,t,r,m);w!==void 0&&u.push(w)}else{const w=st(p,b,a,t,r,m);w!==void 0&&u.push(w)}}}catch{console.log("Issue cycling through material object:",e,n)}if(u.length>0)return Ut(u),{title:d,items:u}}}}}function qt(e,n,a){const t=[];for(const i in e){if(!Gn(i))continue;const o=typeof e[i],d=e[i];if(o==="boolean")t.push(Zn(i,d,n,a));else if(o==="number")t.push(Jn(i,d,n,a));else if(o==="string")t.push(Qn(i,d,n,a));else if(o==="object"){const r=st(i,d,n,a);r!==void 0&&t.push(r)}else d!==void 0&&console.log("other:",i,o,d)}return Ut(t),t.push({title:"Update Material",type:"button",onChange:()=>{a.updateObject(n.uuid,"material.needsUpdate",!0);const i=a.getScene(n.uuid);if(i!==null){const o=i.getObjectByProperty("uuid",n.uuid);Q(o,"material.needsUpdate",!0)}}}),t}function aa(e,n){const a=e.material;if(Array.isArray(a)){const t=[],i=a.length;for(let o=0;o<i;o++)t.push(l.jsx(Ye,{title:`Material ${o}`,items:qt(a[o],e,n)},`Material ${o}`));return l.jsx(l.Fragment,{children:t})}else return l.jsx(Ye,{title:"Material",items:qt(a,e,n)})}const ia="data:image/gif;base64,R0lGODlhDgFkAIAAAP///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuZGJhM2RhM2I1LCAyMDIzLzEyLzE1LTEwOjQyOjM3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMDk3M0NEODAxQjQxMUVGODVGNENDMkUyMUExNDk1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMDk3M0NEOTAxQjQxMUVGODVGNENDMkUyMUExNDk1NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE4ODc3Qzg5MDFCMzExRUY4NUY0Q0MyRTIxQTE0OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE4ODc3QzhBMDFCMzExRUY4NUY0Q0MyRTIxQTE0OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAAAAAAAsAAAAAA4BZAAAAv+Mj6nL7Q+jnLTai7PevPsPhuJIluaJpurKtu4Lx/JM1/aN5/rO9/4PDAqHxKLxiEwql8ym8wmNSqfUqvWKzWq33K73Cw6Lx+Sy+YxOq9fstvsNj8vn9Lr9js/r9/y+/w8YKDhIWGh4iJiouMjY6PgIGSk5SVlpeYmZqTkJAGDQ+dnpuekmGgAKejpKuiZqmprKqoZKGyrbOlqrejub6xvLGyw8TFzcprurGuvqybxq7ETbrItsCz0l7Zpc+6p9/cS967w9/S2FTF0u/mzehK4Oqz3eTl9vf4+fr7/P3+//DzCgwIEECxo8iDChwoUMGzp8CDGixIkUK1q8iDGjxo0XHDt6/AgypMiRJEuaPIkypcqVLFt+KwAAOw==";function ra(e){const n=E.useRef(null),a=E.useRef(null),t=E.useRef(null),i=E.useRef(null),o=E.useRef(null),[d]=E.useState(e.value),[r,h]=E.useState(e.value.offset[0]),[u,m]=E.useState(e.value.offset[1]),[p,b]=E.useState(e.value.repeat[0]),[w,I]=E.useState(e.value.repeat[1]);function V(k,L,_,Z,ee){if(e.onChange!==void 0){const he=e.prop!==void 0?e.prop:e.title;e.onChange(he,{src:k,offset:[L,_],repeat:[Z,ee]})}}function Y(k){const L=n.current.src,_=k.target.value;switch(k.target){case a.current:h(_),V(L,_,u,p,w);break;case t.current:m(_),V(L,r,_,p,w);break;case i.current:b(_),V(L,r,u,_,w);break;case o.current:I(_),V(L,r,u,p,_);break}}return l.jsxs("div",{className:"imageField",children:[l.jsx("img",{alt:e.title,ref:n,onClick:()=>{$n().then(k=>{n.current.src=k,V(k,r,u,p,w)})},src:d.src.length>0?d.src:ia}),l.jsxs("div",{className:"fields",children:[l.jsxs("div",{children:[l.jsx("label",{children:"Offset:"}),l.jsx("input",{ref:a,type:"number",value:r,step:.01,onChange:Y}),l.jsx("input",{ref:t,type:"number",value:u,step:.01,onChange:Y})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Repeat:"}),l.jsx("input",{ref:i,type:"number",value:p,step:.01,onChange:Y}),l.jsx("input",{ref:o,type:"number",value:w,step:.01,onChange:Y})]})]})]})}function St(e){let n=e.value;n!==void 0&&n.isColor!==void 0&&(n=an(e.value));const[a,t]=E.useState(n),i=E.useRef(null),o=u=>{let m=u.target.value;e.type==="boolean"?m=u.target.checked:e.type==="option"&&(m=e.options[m].value),t(m),e.onChange!==void 0&&e.onChange(e.prop!==void 0?e.prop:e.title,m)},d={};e.disabled&&(d.opacity=.8);const r=e.type==="string"&&(a.length>100||a.search(`
30
- `)>-1),h=r||e.type==="image"||e.type==="vector2";return l.jsxs("div",{className:`field ${h?"block":""}`,style:d,children:[e.type!=="button"&&l.jsx("label",{ref:i,children:ot(e.title)},"fieldLabel"),e.type==="string"&&!r&&l.jsx("input",{type:"text",disabled:e.disabled,onChange:o,value:a}),e.type==="string"&&r&&l.jsx("textarea",{cols:50,rows:10,disabled:e.disabled!==void 0?e.disabled:!0,onChange:o,onKeyDown:u=>{e.onKeyDown!==void 0&&e.onKeyDown(u)},value:a}),e.type==="boolean"&&l.jsx("input",{type:"checkbox",disabled:e.disabled,onChange:o,checked:a}),e.type==="number"&&l.jsx(We,{value:a,type:e.type,prop:e.prop!==void 0?e.prop:e.title,min:e.min,max:e.max,step:e.step,disabled:e.disabled,labelRef:i,onChange:e.onChange}),e.type==="range"&&l.jsx(We,{value:a,type:e.type,prop:e.prop!==void 0?e.prop:e.title,min:e.min,max:e.max,step:e.step,disabled:e.disabled,labelRef:i,onChange:e.onChange}),e.type==="color"&&l.jsxs(l.Fragment,{children:[l.jsx("input",{type:"text",value:a.toString(),onChange:o,disabled:e.disabled,className:"color"}),l.jsx("input",{type:"color",value:a,onChange:o,disabled:e.disabled})]}),e.type==="button"&&l.jsx("button",{disabled:e.disabled,onClick:()=>{e.onChange!==void 0&&e.onChange(e.prop!==void 0?e.prop:e.title,!0)},children:e.title}),e.type==="image"&&l.jsx(ra,{title:e.title,prop:e.prop,value:e.value,onChange:e.onChange}),e.type==="option"&&l.jsx(l.Fragment,{children:l.jsx("select",{onChange:o,disabled:e.disabled,defaultValue:e.value,children:e.options?.map((u,m)=>l.jsx("option",{value:u.value,children:ot(u.title)},m))})}),e.type==="vector2"&&l.jsx(Bn,{value:a,min:0,max:1,onChange:o}),e.type==="grid3"&&l.jsx(Yt,{value:a,onChange:o}),e.type==="grid4"&&l.jsx(Vn,{value:a,onChange:o}),e.type==="euler"&&l.jsx(Yt,{value:a,onChange:o})]})}function Kt(e){switch(e){case"fov":return"FOV";case"zoom":return"Zoom";case"near":return"Near";case"far":return"Far";case"focus":return"Focus";case"aspect":return"Aspect";case"filmGauge":return"Film Gauge";case"filmOffset":return"Film Offset";case"left":return"Left";case"right":return"Right";case"top":return"Top";case"bottom":return"Bottom"}return e}function sa(e,n){const a=[];if(e.perspectiveCameraInfo!==void 0)for(const t in e.perspectiveCameraInfo)a.push({title:Kt(t),prop:t,type:"number",step:.01,value:e.perspectiveCameraInfo[t],onChange:(i,o)=>{n.updateObject(e.uuid,i,o),n.requestMethod(e.uuid,"updateProjectionMatrix");const d=n.getScene(e.uuid);if(d!==null){const r=d.getObjectByProperty("uuid",e.uuid);r!==void 0&&(Q(r,i,o),r.updateProjectionMatrix())}}});else if(e.orthographicCameraInfo!==void 0)for(const t in e.orthographicCameraInfo)a.push({title:Kt(t),prop:t,type:"number",step:.01,value:e.perspectiveCameraInfo[t],onChange:(i,o)=>{n.updateObject(e.uuid,i,o),n.requestMethod(e.uuid,"updateProjectionMatrix");const d=n.getScene(e.uuid);if(d!==null){const r=d.getObjectByProperty("uuid",e.uuid);r!==void 0&&(Q(r,i,o),r.updateProjectionMatrix())}}});return l.jsx(Ye,{title:"Camera",items:a})}function oa(e,n){const a=new f.Matrix4;a.elements=e.matrix;const t=new f.Vector3,i=new f.Euler,o=new f.Vector3;e.uuid.length>0&&(t.setFromMatrixPosition(a),i.setFromRotationMatrix(a),o.setFromMatrixScale(a));const d=(r,h)=>{const u=r==="rotation"?{x:h._x,y:h._y,z:h._z}:h;n.updateObject(e.uuid,r,u);const m=n.getScene(e.uuid);if(m!==null){const p=m.getObjectByProperty("uuid",e.uuid);Q(p,r,u)}};return l.jsx(Ye,{title:"Transform",items:[{title:"Position",prop:"position",type:"grid3",value:t,onChange:d},{title:"Rotation",prop:"rotation",type:"grid3",value:i,onChange:d},{title:"Scale",prop:"scale",type:"grid3",value:o,onChange:d}]})}function Xt(e){switch(e){case"color":return"Color";case"intensity":return"Intensity";case"decay":return"Decay";case"distance":return"Distance";case"angle":return"Angle";case"penumbra":return"Penumbra";case"groundColor":return"Ground Color";case"width":return"Width";case"height":return"Height"}return e}function ca(e,n){const a=[];if(e.lightInfo!==void 0)for(const t in e.lightInfo){const i=e.lightInfo[t];i!==void 0&&(i.isColor!==void 0?a.push({title:Xt(t),prop:t,type:"color",value:i,onChange:(o,d)=>{const r=new f.Color(d);n.updateObject(e.uuid,o,r);const h=n.getScene(e.uuid);if(h!==null){const u=h.getObjectByProperty("uuid",e.uuid);Q(u,o,r)}}}):a.push({title:Xt(t),prop:t,type:typeof i,value:i,step:typeof i=="number"?.01:void 0,onChange:(o,d)=>{n.updateObject(e.uuid,o,d);const r=n.getScene(e.uuid);if(r!==null){const h=r.getObjectByProperty("uuid",e.uuid);Q(h,o,d)}}}))}return l.jsx(Ye,{title:"Light",items:a})}function la(e,n){const a=[],t=[];let i=0;e.animations.forEach(d=>{i=Math.max(i,d.duration),d.duration>0&&t.push({title:d.name,items:[{title:"Duration",type:"number",value:d.duration,disabled:!0},{title:"Blend Mode",type:"option",disabled:!0,options:[{title:"Normal",value:2500},{title:"Additive",value:2501}]}]})}),a.push({title:"Animations",items:t});const o=n.getScene(e.uuid);if(o!==null){const d=o.getObjectByProperty("uuid",e.uuid);let r=!1;if(d!==void 0){const h=d.mixer;if(r=h!==void 0,r){const u=[{title:"Time Scale",type:"range",value:h.timeScale,step:.01,min:-1,max:2,onChange:(m,p)=>{h.timeScale=p,n.updateObject(e.uuid,"mixer.timeScale",p)}}];u.push({title:"Stop All",type:"button",onChange:()=>{h.stopAllAction(),n.requestMethod(e.uuid,"stopAllAction",void 0,"mixer")}}),a.push({title:"Mixer",items:u})}}}return l.jsx(Ye,{title:"Animation",items:a})}const fn={name:"",uuid:"",type:"",visible:!1,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0,children:[]};let de={...fn};function mn(e){const[n,a]=E.useState(-1);E.useEffect(()=>{function d(h){de={...h.value},a(Date.now())}function r(){de={...fn},a(Date.now())}return P.addEventListener(j.SET_SCENE,r),P.addEventListener(j.SET_OBJECT,d),()=>{P.removeEventListener(j.SET_SCENE,r),P.removeEventListener(j.SET_OBJECT,d)}},[]);const t=de.type.toLowerCase(),i=de.animations.length>0||de.mixer!==void 0,o=t.search("mesh")>-1||t.search("line")>-1||t.search("points")>-1;return l.jsx(Ot,{label:"Inspector",children:l.jsx("div",{id:"Inspector",className:e.class,children:de.uuid.length>0&&l.jsxs(l.Fragment,{children:[l.jsxs(l.Fragment,{children:[l.jsx(St,{type:"string",title:"Name",prop:"name",value:de.name,disabled:!0}),l.jsx(St,{type:"string",title:"Type",prop:"type",value:de.type,disabled:!0}),l.jsx(St,{type:"string",title:"UUID",prop:"uuid",value:de.uuid,disabled:!0})]}),l.jsxs(l.Fragment,{children:[oa(de,e.three),i?la(de,e.three):null,t.search("camera")>-1?sa(de,e.three):null,t.search("light")>-1?ca(de,e.three):null,o?aa(de,e.three):null]})]})},n)},"Inspector")}function ua(e){const[n]=E.useState([]),[a,t]=E.useState(0),i=r=>{n.push(r.value),t(Date.now())},o=r=>{const h=r.value;for(let u=0;u<n.length;u++)if(h.uuid===n[u].uuid){n.splice(u,1),t(Date.now());return}};E.useEffect(()=>(P.addEventListener(j.ADD_SCENE,i),P.addEventListener(j.REMOVE_SCENE,o),()=>{P.removeEventListener(j.ADD_SCENE,i),P.removeEventListener(j.REMOVE_SCENE,o)}),[]);const d=[];return n.forEach((r,h)=>{d.push(l.jsx(Ot,{label:`Scene: ${r.name}`,open:!0,children:l.jsx(dn,{child:r,scene:r,three:e.three})},`scene_${h}`))}),l.jsxs("div",{id:"SidePanel",children:[d,l.jsx(mn,{three:e.three})]},`SidePanel ${a}`)}function da(e){return E.useEffect(()=>{function n(r){let h=null;return e.three.scenes.forEach(u=>{r.search(u.uuid)>-1&&(h=u)}),h}const a=r=>{const h=r.value,u=n(h),m=u?.getObjectByProperty("uuid",h);m!==void 0?e.three.setObject(m):console.log(`Hermes - can't find object: ${h}`,u)},t=(r,h,u)=>{const m=n(r),p=m?.getObjectByProperty("uuid",r);p!==void 0?Q(p,h,u):console.log(`Hermes - can't set object: ${r}`,m)},i=r=>{const h=r.value,{key:u,value:m,uuid:p}=h;t(p,u,m)},o=r=>{const h=r.value,m=n(h.uuid)?.getObjectByProperty("uuid",h.uuid);m!==void 0&&sn(h.value.src).then(p=>{p.offset.set(h.value.offset[0],h.value.offset[1]),p.repeat.set(h.value.repeat[0],h.value.repeat[1]);const b=h.key.split(".");switch(b.length){case 1:m[b[0]]=p;break;case 2:m[b[0]][b[1]]=p;break;case 3:m[b[0]][b[1]][b[2]]=p;break;case 4:m[b[0]][b[1]][b[2]][b[3]]=p;break;case 5:m[b[0]][b[1]][b[2]][b[3]][b[4]]=p;break}m.material.needsUpdate=!0})},d=r=>{const{key:h,uuid:u,value:m,subitem:p}=r.value,w=n(u)?.getObjectByProperty("uuid",u);if(w!==void 0)try{p!==void 0?kn(w,p)[h](m):w[h](m)}catch(I){console.log("Error requesting method:"),console.log(I),console.log(h),console.log(m)}};return P.addEventListener(j.GET_OBJECT,a),P.addEventListener(j.UPDATE_OBJECT,i),P.addEventListener(j.CREATE_TEXTURE,o),P.addEventListener(j.REQUEST_METHOD,d),()=>{P.removeEventListener(j.GET_OBJECT,a),P.removeEventListener(j.UPDATE_OBJECT,i),P.removeEventListener(j.CREATE_TEXTURE,o),P.removeEventListener(j.REQUEST_METHOD,d)}},[]),null}class ha extends f.Line{constructor(n,a){const t=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],i=new f.BufferGeometry;i.setAttribute("position",new f.Float32BufferAttribute(t,3)),i.computeBoundingSphere();const o=new f.LineBasicMaterial({fog:!1});super(i,o),this.light=n,this.color=a,this.type="RectAreaLightHelper";const d=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],r=new f.BufferGeometry;r.setAttribute("position",new f.Float32BufferAttribute(d,3)),r.computeBoundingSphere(),this.add(new f.Mesh(r,new f.MeshBasicMaterial({side:f.BackSide,fog:!1})))}updateMatrixWorld(){if(this.scale.set(.5*this.light.width,.5*this.light.height,1),this.color!==void 0)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);const n=this.material.color,a=Math.max(n.r,n.g,n.b);a>1&&n.multiplyScalar(1/a),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const Zt={type:"change"},At={type:"start"},Jt={type:"end"},vt=new f.Ray,Qt=new f.Plane,fa=Math.cos(70*f.MathUtils.DEG2RAD);class ma extends f.EventDispatcher{constructor(n,a){super(),this.object=n,this.domElement=a,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new f.Vector3,this.cursor=new f.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:f.MOUSE.ROTATE,MIDDLE:f.MOUSE.DOLLY,RIGHT:f.MOUSE.PAN},this.touches={ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return r.phi},this.getAzimuthalAngle=function(){return r.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(c){c.addEventListener("keydown",tt),this._domElementKeyEvents=c},this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",tt),this._domElementKeyEvents=null},this.saveState=function(){t.target0.copy(t.target),t.position0.copy(t.object.position),t.zoom0=t.object.zoom},this.reset=function(){t.target.copy(t.target0),t.object.position.copy(t.position0),t.object.zoom=t.zoom0,t.object.updateProjectionMatrix(),t.dispatchEvent(Zt),t.update(),o=i.NONE},this.update=function(){const c=new f.Vector3,x=new f.Quaternion().setFromUnitVectors(n.up,new f.Vector3(0,1,0)),A=x.clone().invert(),B=new f.Vector3,ae=new f.Quaternion,ve=new f.Vector3,le=2*Math.PI;return function(mt=null){const pt=t.object.position;c.copy(pt).sub(t.target),c.applyQuaternion(x),r.setFromVector3(c),t.autoRotate&&o===i.NONE&&pe(Me(mt)),t.enableDamping?(r.theta+=h.theta*t.dampingFactor,r.phi+=h.phi*t.dampingFactor):(r.theta+=h.theta,r.phi+=h.phi);let be=t.minAzimuthAngle,ye=t.maxAzimuthAngle;isFinite(be)&&isFinite(ye)&&(be<-Math.PI?be+=le:be>Math.PI&&(be-=le),ye<-Math.PI?ye+=le:ye>Math.PI&&(ye-=le),be<=ye?r.theta=Math.max(be,Math.min(ye,r.theta)):r.theta=r.theta>(be+ye)/2?Math.max(be,r.theta):Math.min(ye,r.theta)),r.phi=Math.max(t.minPolarAngle,Math.min(t.maxPolarAngle,r.phi)),r.makeSafe(),t.enableDamping===!0?t.target.addScaledVector(m,t.dampingFactor):t.target.add(m),t.target.sub(t.cursor),t.target.clampLength(t.minTargetRadius,t.maxTargetRadius),t.target.add(t.cursor);let He=!1;if(t.zoomToCursor&&he||t.object.isOrthographicCamera)r.radius=_e(r.radius);else{const Ce=r.radius;r.radius=_e(r.radius*u),He=Ce!=r.radius}if(c.setFromSpherical(r),c.applyQuaternion(A),pt.copy(t.target).add(c),t.object.lookAt(t.target),t.enableDamping===!0?(h.theta*=1-t.dampingFactor,h.phi*=1-t.dampingFactor,m.multiplyScalar(1-t.dampingFactor)):(h.set(0,0,0),m.set(0,0,0)),t.zoomToCursor&&he){let Ce=null;if(t.object.isPerspectiveCamera){const Fe=c.length();Ce=_e(Fe*u);const Xe=Fe-Ce;t.object.position.addScaledVector(Z,Xe),t.object.updateMatrixWorld(),He=!!Xe}else if(t.object.isOrthographicCamera){const Fe=new f.Vector3(ee.x,ee.y,0);Fe.unproject(t.object);const Xe=t.object.zoom;t.object.zoom=Math.max(t.minZoom,Math.min(t.maxZoom,t.object.zoom/u)),t.object.updateProjectionMatrix(),He=Xe!==t.object.zoom;const gt=new f.Vector3(ee.x,ee.y,0);gt.unproject(t.object),t.object.position.sub(gt).add(Fe),t.object.updateMatrixWorld(),Ce=c.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),t.zoomToCursor=!1;Ce!==null&&(this.screenSpacePanning?t.target.set(0,0,-1).transformDirection(t.object.matrix).multiplyScalar(Ce).add(t.object.position):(vt.origin.copy(t.object.position),vt.direction.set(0,0,-1).transformDirection(t.object.matrix),Math.abs(t.object.up.dot(vt.direction))<fa?n.lookAt(t.target):(Qt.setFromNormalAndCoplanarPoint(t.object.up,t.target),vt.intersectPlane(Qt,t.target))))}else if(t.object.isOrthographicCamera){const Ce=t.object.zoom;t.object.zoom=Math.max(t.minZoom,Math.min(t.maxZoom,t.object.zoom/u)),Ce!==t.object.zoom&&(t.object.updateProjectionMatrix(),He=!0)}return u=1,he=!1,He||B.distanceToSquared(t.object.position)>d||8*(1-ae.dot(t.object.quaternion))>d||ve.distanceToSquared(t.target)>d?(t.dispatchEvent(Zt),B.copy(t.object.position),ae.copy(t.object.quaternion),ve.copy(t.target),!0):!1}}(),this.dispose=function(){t.domElement.removeEventListener("contextmenu",Ke),t.domElement.removeEventListener("pointerdown",D),t.domElement.removeEventListener("pointercancel",K),t.domElement.removeEventListener("wheel",ut),t.domElement.removeEventListener("pointermove",H),t.domElement.removeEventListener("pointerup",K),t.domElement.getRootNode().removeEventListener("keydown",et,{capture:!0}),t._domElementKeyEvents!==null&&(t._domElementKeyEvents.removeEventListener("keydown",tt),t._domElementKeyEvents=null)};const t=this,i={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let o=i.NONE;const d=1e-6,r=new f.Spherical,h=new f.Spherical;let u=1;const m=new f.Vector3,p=new f.Vector2,b=new f.Vector2,w=new f.Vector2,I=new f.Vector2,V=new f.Vector2,Y=new f.Vector2,k=new f.Vector2,L=new f.Vector2,_=new f.Vector2,Z=new f.Vector3,ee=new f.Vector2;let he=!1;const q=[],fe={};let se=!1;function Me(c){return c!==null?2*Math.PI/60*t.autoRotateSpeed*c:2*Math.PI/60/60*t.autoRotateSpeed}function Oe(c){const x=Math.abs(c*.01);return Math.pow(.95,t.zoomSpeed*x)}function pe(c){h.theta-=c}function z(c){h.phi-=c}const ge=function(){const c=new f.Vector3;return function(A,B){c.setFromMatrixColumn(B,0),c.multiplyScalar(-A),m.add(c)}}(),T=function(){const c=new f.Vector3;return function(A,B){t.screenSpacePanning===!0?c.setFromMatrixColumn(B,1):(c.setFromMatrixColumn(B,0),c.crossVectors(t.object.up,c)),c.multiplyScalar(A),m.add(c)}}(),Se=function(){const c=new f.Vector3;return function(A,B){const ae=t.domElement;if(t.object.isPerspectiveCamera){const ve=t.object.position;c.copy(ve).sub(t.target);let le=c.length();le*=Math.tan(t.object.fov/2*Math.PI/180),ge(2*A*le/ae.clientHeight,t.object.matrix),T(2*B*le/ae.clientHeight,t.object.matrix)}else t.object.isOrthographicCamera?(ge(A*(t.object.right-t.object.left)/t.object.zoom/ae.clientWidth,t.object.matrix),T(B*(t.object.top-t.object.bottom)/t.object.zoom/ae.clientHeight,t.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),t.enablePan=!1)}}();function Re(c){t.object.isPerspectiveCamera||t.object.isOrthographicCamera?u/=c:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),t.enableZoom=!1)}function ke(c){t.object.isPerspectiveCamera||t.object.isOrthographicCamera?u*=c:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),t.enableZoom=!1)}function Te(c,x){if(!t.zoomToCursor)return;he=!0;const A=t.domElement.getBoundingClientRect(),B=c-A.left,ae=x-A.top,ve=A.width,le=A.height;ee.x=B/ve*2-1,ee.y=-(ae/le)*2+1,Z.set(ee.x,ee.y,1).unproject(t.object).sub(t.object.position).normalize()}function _e(c){return Math.max(t.minDistance,Math.min(t.maxDistance,c))}function De(c){p.set(c.clientX,c.clientY)}function je(c){Te(c.clientX,c.clientX),k.set(c.clientX,c.clientY)}function Ie(c){I.set(c.clientX,c.clientY)}function ie(c){b.set(c.clientX,c.clientY),w.subVectors(b,p).multiplyScalar(t.rotateSpeed);const x=t.domElement;pe(2*Math.PI*w.x/x.clientHeight),z(2*Math.PI*w.y/x.clientHeight),p.copy(b),t.update()}function xe(c){L.set(c.clientX,c.clientY),_.subVectors(L,k),_.y>0?Re(Oe(_.y)):_.y<0&&ke(Oe(_.y)),k.copy(L),t.update()}function ze(c){V.set(c.clientX,c.clientY),Y.subVectors(V,I).multiplyScalar(t.panSpeed),Se(Y.x,Y.y),I.copy(V),t.update()}function Ge(c){Te(c.clientX,c.clientY),c.deltaY<0?ke(Oe(c.deltaY)):c.deltaY>0&&Re(Oe(c.deltaY)),t.update()}function ce(c){let x=!1;switch(c.code){case t.keys.UP:c.ctrlKey||c.metaKey||c.shiftKey?z(2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Se(0,t.keyPanSpeed),x=!0;break;case t.keys.BOTTOM:c.ctrlKey||c.metaKey||c.shiftKey?z(-2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Se(0,-t.keyPanSpeed),x=!0;break;case t.keys.LEFT:c.ctrlKey||c.metaKey||c.shiftKey?pe(2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Se(t.keyPanSpeed,0),x=!0;break;case t.keys.RIGHT:c.ctrlKey||c.metaKey||c.shiftKey?pe(-2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Se(-t.keyPanSpeed,0),x=!0;break}x&&(c.preventDefault(),t.update())}function v(c){if(q.length===1)p.set(c.pageX,c.pageY);else{const x=Le(c),A=.5*(c.pageX+x.x),B=.5*(c.pageY+x.y);p.set(A,B)}}function y(c){if(q.length===1)I.set(c.pageX,c.pageY);else{const x=Le(c),A=.5*(c.pageX+x.x),B=.5*(c.pageY+x.y);I.set(A,B)}}function R(c){const x=Le(c),A=c.pageX-x.x,B=c.pageY-x.y,ae=Math.sqrt(A*A+B*B);k.set(0,ae)}function F(c){t.enableZoom&&R(c),t.enablePan&&y(c)}function me(c){t.enableZoom&&R(c),t.enableRotate&&v(c)}function oe(c){if(q.length==1)b.set(c.pageX,c.pageY);else{const A=Le(c),B=.5*(c.pageX+A.x),ae=.5*(c.pageY+A.y);b.set(B,ae)}w.subVectors(b,p).multiplyScalar(t.rotateSpeed);const x=t.domElement;pe(2*Math.PI*w.x/x.clientHeight),z(2*Math.PI*w.y/x.clientHeight),p.copy(b)}function M(c){if(q.length===1)V.set(c.pageX,c.pageY);else{const x=Le(c),A=.5*(c.pageX+x.x),B=.5*(c.pageY+x.y);V.set(A,B)}Y.subVectors(V,I).multiplyScalar(t.panSpeed),Se(Y.x,Y.y),I.copy(V)}function C(c){const x=Le(c),A=c.pageX-x.x,B=c.pageY-x.y,ae=Math.sqrt(A*A+B*B);L.set(0,ae),_.set(0,Math.pow(L.y/k.y,t.zoomSpeed)),Re(_.y),k.copy(L);const ve=(c.pageX+x.x)*.5,le=(c.pageY+x.y)*.5;Te(ve,le)}function $(c){t.enableZoom&&C(c),t.enablePan&&M(c)}function te(c){t.enableZoom&&C(c),t.enableRotate&&oe(c)}function D(c){t.enabled!==!1&&(q.length===0&&(t.domElement.setPointerCapture(c.pointerId),t.domElement.addEventListener("pointermove",H),t.domElement.addEventListener("pointerup",K)),!kt(c)&&(Tt(c),c.pointerType==="touch"?nt(c):Ae(c)))}function H(c){t.enabled!==!1&&(c.pointerType==="touch"?ht(c):qe(c))}function K(c){switch(_t(c),q.length){case 0:t.domElement.releasePointerCapture(c.pointerId),t.domElement.removeEventListener("pointermove",H),t.domElement.removeEventListener("pointerup",K),t.dispatchEvent(Jt),o=i.NONE;break;case 1:const x=q[0],A=fe[x];nt({pointerId:x,pageX:A.x,pageY:A.y});break}}function Ae(c){let x;switch(c.button){case 0:x=t.mouseButtons.LEFT;break;case 1:x=t.mouseButtons.MIDDLE;break;case 2:x=t.mouseButtons.RIGHT;break;default:x=-1}switch(x){case f.MOUSE.DOLLY:if(t.enableZoom===!1)return;je(c),o=i.DOLLY;break;case f.MOUSE.ROTATE:if(c.ctrlKey||c.metaKey||c.shiftKey){if(t.enablePan===!1)return;Ie(c),o=i.PAN}else{if(t.enableRotate===!1)return;De(c),o=i.ROTATE}break;case f.MOUSE.PAN:if(c.ctrlKey||c.metaKey||c.shiftKey){if(t.enableRotate===!1)return;De(c),o=i.ROTATE}else{if(t.enablePan===!1)return;Ie(c),o=i.PAN}break;default:o=i.NONE}o!==i.NONE&&t.dispatchEvent(At)}function qe(c){switch(o){case i.ROTATE:if(t.enableRotate===!1)return;ie(c);break;case i.DOLLY:if(t.enableZoom===!1)return;xe(c);break;case i.PAN:if(t.enablePan===!1)return;ze(c);break}}function ut(c){t.enabled===!1||t.enableZoom===!1||o!==i.NONE||(c.preventDefault(),t.dispatchEvent(At),Ge(dt(c)),t.dispatchEvent(Jt))}function dt(c){const x=c.deltaMode,A={clientX:c.clientX,clientY:c.clientY,deltaY:c.deltaY};switch(x){case 1:A.deltaY*=16;break;case 2:A.deltaY*=100;break}return c.ctrlKey&&!se&&(A.deltaY*=10),A}function et(c){c.key==="Control"&&(se=!0,t.domElement.getRootNode().addEventListener("keyup",Ne,{passive:!0,capture:!0}))}function Ne(c){c.key==="Control"&&(se=!1,t.domElement.getRootNode().removeEventListener("keyup",Ne,{passive:!0,capture:!0}))}function tt(c){t.enabled===!1||t.enablePan===!1||ce(c)}function nt(c){switch(ft(c),q.length){case 1:switch(t.touches.ONE){case f.TOUCH.ROTATE:if(t.enableRotate===!1)return;v(c),o=i.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(t.enablePan===!1)return;y(c),o=i.TOUCH_PAN;break;default:o=i.NONE}break;case 2:switch(t.touches.TWO){case f.TOUCH.DOLLY_PAN:if(t.enableZoom===!1&&t.enablePan===!1)return;F(c),o=i.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(t.enableZoom===!1&&t.enableRotate===!1)return;me(c),o=i.TOUCH_DOLLY_ROTATE;break;default:o=i.NONE}break;default:o=i.NONE}o!==i.NONE&&t.dispatchEvent(At)}function ht(c){switch(ft(c),o){case i.TOUCH_ROTATE:if(t.enableRotate===!1)return;oe(c),t.update();break;case i.TOUCH_PAN:if(t.enablePan===!1)return;M(c),t.update();break;case i.TOUCH_DOLLY_PAN:if(t.enableZoom===!1&&t.enablePan===!1)return;$(c),t.update();break;case i.TOUCH_DOLLY_ROTATE:if(t.enableZoom===!1&&t.enableRotate===!1)return;te(c),t.update();break;default:o=i.NONE}}function Ke(c){t.enabled!==!1&&c.preventDefault()}function Tt(c){q.push(c.pointerId)}function _t(c){delete fe[c.pointerId];for(let x=0;x<q.length;x++)if(q[x]==c.pointerId){q.splice(x,1);return}}function kt(c){for(let x=0;x<q.length;x++)if(q[x]==c.pointerId)return!0;return!1}function ft(c){let x=fe[c.pointerId];x===void 0&&(x=new f.Vector2,fe[c.pointerId]=x),x.set(c.pageX,c.pageY)}function Le(c){const x=c.pointerId===q[0]?q[1]:q[0];return fe[x]}t.domElement.addEventListener("contextmenu",Ke),t.domElement.addEventListener("pointerdown",D),t.domElement.addEventListener("pointercancel",K),t.domElement.addEventListener("wheel",ut,{passive:!1}),t.domElement.getRootNode().addEventListener("keydown",et,{passive:!0,capture:!0}),this.update()}}function Qe(e,n,a,t,i){return t+(e-n)*(i-t)/(a-n)}const xt=e=>{const[n,a]=E.useState(e.options[e.index]),t=()=>{e.onToggle(!e.open)},i=o=>{o!==n&&(e.onSelect(o),a(o)),e.onToggle(!1)};return l.jsxs("div",{className:`dropdown ${e.up===!0?"up":""}`,children:[l.jsx("div",{className:"dropdown-toggle",onClick:t,children:n}),e.open&&l.jsx("ul",{className:"dropdown-menu",children:e.options.map(o=>l.jsx("li",{onClick:()=>i(o),children:o},o))})]})},$e=E.forwardRef(function(n,a){const[t,i]=E.useState(!1),o=n.options.indexOf(n.camera.name);return l.jsxs("div",{className:"CameraWindow",children:[l.jsx("div",{ref:a,className:"clickable",onClick:()=>{t&&i(!1)}}),l.jsx(xt,{index:o,open:t,options:n.options,onSelect:n.onSelect,onToggle:d=>{i(d)},up:!0})]})});class pa extends f.ShaderMaterial{constructor(n){super({extensions:{derivatives:!0},glslVersion:f.GLSL3,side:f.DoubleSide,transparent:!0,uniforms:{uScale:{value:n?.scale!==void 0?n?.scale:.1},uDivisions:{value:n?.divisions!==void 0?n?.divisions:10},uColor:{value:n?.color!==void 0?n?.color:new f.Color(16777215)},uDistance:{value:n?.distance!==void 0?n?.distance:1e4},uSubgridOpacity:{value:n?.subgridOpacity!==void 0?n?.subgridOpacity:.15},uGridOpacity:{value:n?.gridOpacity!==void 0?n?.gridOpacity:.25}},vertexShader:`out vec3 worldPosition;
29
+ C11,8.22,10.74,8,10.43,8z`})});function sn(e){return l.jsx(Qt.Reorder.Item,{value:e.title,children:l.jsxs("div",{children:[Nn,l.jsx("span",{children:e.title}),l.jsx("button",{className:"closeIcon",onClick:()=>{e.onDelete(e.index)},children:In})]})},e.title)}function on(e){const[n,a]=E.useState(!1),[t,i]=E.useState(e.options),o=u=>{e.onDragComplete(u),i(u)},d=u=>{const m=[...t];m.splice(u,1),o(m)},r=[];t.forEach((u,m)=>{r.push(l.jsx(sn,{index:m,title:u,onDelete:d},u))});let h="dropdown draggable";return e.subdropdown&&(h+=" subdropdown"),l.jsxs("div",{className:h,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[l.jsx(Ut,{title:e.title}),l.jsx(Qt.Reorder.Group,{axis:"y",values:t,onReorder:o,style:{visibility:n?"visible":"hidden"},children:r})]})}function cn(e){const[n,a]=E.useState(!1),t=[];e.options.map((o,d)=>{e.onSelect!==void 0&&(o.onSelect=e.onSelect),t.push(l.jsx(ln,{option:o},d))});let i="dropdown";return e.subdropdown&&(i+=" subdropdown"),l.jsxs("div",{className:i,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[l.jsx(Ut,{title:e.title}),l.jsx("ul",{style:{visibility:n?"visible":"hidden"},children:t})]})}function ln(e){const{option:n}=e,[a,t]=E.useState("");let i;switch(n.type){case"draggable":i=l.jsx(on,{title:n.title,options:n.value,onDragComplete:o=>{n.onDragComplete!==void 0&&n.onDragComplete(o)},subdropdown:!0});break;case"dropdown":i=l.jsx(cn,{title:n.title,options:n.value,onSelect:n.onSelect,subdropdown:!0});break;case"option":i=l.jsx("button",{onClick:()=>{n.onSelect!==void 0&&n.onSelect(n.value),n.selectable&&(a!==n.title?t(n.title):t(""))},children:n.title});break}return l.jsx("li",{className:a===n.title?"selected":"",children:i},en())}function Ln(e,n,a){function t(o){switch(n.forEach(d=>{d.callback(e,d.remote,o)}),o.event){case"custom":P.dispatchEvent({type:j.CUSTOM,value:o.data});break}}function i(o){switch(a.forEach(d=>{d.callback(e,d.remote,o)}),o.event){case"custom":P.dispatchEvent({type:j.CUSTOM,value:o.data});break}}e.listen=o=>{o.target==="editor"?i(o):t(o)}}function Mt(e){const[n,a]=E.useState(e.open!==void 0?e.open:!0),t=!n||e.children===void 0;return l.jsxs("div",{className:`accordion ${t?"hide":""}`,children:[l.jsxs("button",{className:"toggle",onClick:()=>{const i=!n;e.onToggle!==void 0&&e.onToggle(i),a(i)},children:[l.jsx("p",{className:`status ${n?"open":""}`,children:"Toggle"}),l.jsx("p",{className:"label",children:lt(e.label)})]}),e.button,l.jsx("div",{className:n?"open":"",children:l.jsx("div",{children:e.children})})]})}function Bt(e){const n=E.useRef(null),[a,t]=E.useState(!1),i=e.child!==void 0&&e.child.children.length>0,o=[];return e.child!==void 0&&e.child.children.length>0&&e.child.children.map((d,r)=>{o.push(l.jsx(Bt,{child:d,three:e.three},r))}),E.useEffect(()=>{const d=e.child.uuid,r=e.three.getScene(d);if(r!==null){const h=r.getObjectByProperty("uuid",d);h!==void 0&&(n.current.style.opacity=h.visible?"1":"0.25")}},[]),l.jsx(l.Fragment,{children:e.child!==void 0&&l.jsxs("div",{className:"childObject",children:[l.jsxs("div",{className:"child",children:[i?l.jsx("button",{className:"status",style:{backgroundPositionX:a?"-14px":"2px"},onClick:()=>{t(!a)}}):null,l.jsx("button",{className:"name",style:{left:i?"20px":"5px"},onClick:()=>{e.child!==void 0&&(e.three.getObject(e.child.uuid),a||t(!0))},children:e.child.name.length>0?`${e.child.name} (${e.child.type})`:`${e.child.type}::${e.child.uuid}`}),l.jsx("button",{className:"visibility",ref:n,onClick:()=>{if(e.child){const d=e.three.getScene(e.child.uuid);if(d!==null){const r=d.getObjectByProperty("uuid",e.child.uuid);if(r!==void 0){const h="visible",u=!r.visible;n.current.style.opacity=u?"1":"0.25",e.three.updateObject(e.child.uuid,h,u),ee(r,h,u)}else console.log(`Hermes - Couldn't find object: ${e.child.uuid}`,d)}else console.log(`Hermes - Couldn't find object in scene: ${e.child.uuid}, ${e.child.name}`)}}}),l.jsx("div",{className:`icon ${On(e.child)}`})]}),l.jsx("div",{className:a?"open":"",children:l.jsx("div",{className:"container",children:o})})]},Math.random())})}function un(e){const n=[];return e.child?.children.map((a,t)=>{n.push(l.jsx(Bt,{child:a,scene:e.scene,three:e.three},t))}),l.jsx("div",{className:`scene ${e.class!==void 0?e.class:""}`,children:n})}function Fn(e){const[n,a]=E.useState(e.defaultValue);return E.useEffect(()=>{let t=!1,i=-1,o=0,d=e.defaultValue;const r=v=>{t=!0,o=Number(e.input.current?.value),i=v.clientX,document.addEventListener("mouseup",u,!1),document.addEventListener("mousemove",h,!1),document.addEventListener("contextmenu",u,!1)},h=v=>{if(!t)return;const w=e.step!==void 0?e.step:1,I=(v.clientX-i)*w;d=Number((o+I).toFixed(4)),e.min!==void 0&&(d=Math.max(d,e.min)),e.max!==void 0&&(d=Math.min(d,e.max)),e.onChange!==void 0&&e.onChange(d),a(d)},u=()=>{t=!1,document.removeEventListener("mouseup",u),document.removeEventListener("mousemove",h),document.removeEventListener("contextmenu",u)},m=v=>{const w=Number(v.target.value);a(w)},p=v=>{const w=Number(v.target.value);e.onChange!==void 0&&e.onChange(w),a(w)};return e.input.current?.addEventListener("input",m),e.label.current?.addEventListener("mousedown",r,!1),e.sliderRef!==void 0&&e.sliderRef.current?.addEventListener("input",p),()=>{e.input.current?.removeEventListener("input",m),e.label.current?.removeEventListener("mousedown",r),e.sliderRef!==void 0&&e.sliderRef.current?.removeEventListener("input",p),document.removeEventListener("mouseup",u),document.removeEventListener("mousemove",h),document.removeEventListener("contextmenu",u)}},[]),n}function Ke(e){const n=E.useRef(null),a=E.useRef(null),t=Fn({label:e.labelRef,input:n,sliderRef:a,defaultValue:e.value,min:e.min,max:e.max,step:e.step,onChange:i=>{e.onChange!==void 0&&e.onChange(e.prop,i)}});return l.jsxs(l.Fragment,{children:[e.type==="number"&&l.jsx("input",{alt:e.alt,className:e.className,ref:n,type:"number",value:t,min:e.min,max:e.max,step:e.step,disabled:e.disabled,onChange:i=>{const o=Number(i.target.value);e.onChange!==void 0&&e.onChange(e.prop,o)}}),e.type==="range"&&l.jsxs(l.Fragment,{children:[l.jsx("input",{type:"text",value:t.toString(),disabled:e.disabled,ref:n,className:"min",onChange:i=>{const o=Number(i.target.value);e.onChange!==void 0&&e.onChange(e.prop,o)}}),l.jsx("input",{disabled:e.disabled,type:"range",value:t,min:e.min,max:e.max,step:e.step,ref:a,onChange:Ct})]})]})}function Un(e){const n=E.useRef(null),a=E.useRef(null),t=E.useRef(null),i=E.useRef(null),o=E.useRef(null),d=E.useRef(null),[r,h]=E.useState(e.value),[u,m]=E.useState({min:Math.min(e.min,Math.min(e.value.x,e.value.y)),max:Math.max(e.max,Math.max(e.value.x,e.value.y))}),[p,v]=E.useState(!1);function w(){p||(window.addEventListener("mousemove",F),window.addEventListener("mouseup",I),window.addEventListener("mouseup",I),v(!0))}function I(){window.removeEventListener("mousemove",F),window.removeEventListener("mouseup",I),v(!1)}function F(_){const X=o.current.getBoundingClientRect(),te=He(0,99,_.clientX-X.left)/99,fe=He(0,99,_.clientY-X.top)/99,q=It(jt(u.min,u.max,te),3),me=It(jt(u.min,u.max,fe),3);e.onChange({target:{value:{x:q,y:me}}}),h({x:q,y:me})}function Y(_){let X=r.x,te=r.y;_.target===n.current?X=Number(_.target.value):te=Number(_.target.value),h({x:X,y:te})}function k(){const _=Number(t.current.value);m({min:_,max:u.max}),(r.x<_||r.y<_)&&h({x:He(_,u.max,r.x),y:He(_,u.max,r.y)})}function U(){const _=Number(i.current.value);m({min:u.min,max:_}),(r.x>_||r.y>_)&&h({x:He(u.min,_,r.x),y:He(u.min,_,r.y)})}return E.useEffect(()=>{const _=Pt(u.min,u.max,r.x),X=Pt(u.min,u.max,r.y);d.current.style.left=`${_*100}%`,d.current.style.top=`${X*100}%`},[u,r]),l.jsxs("div",{className:"vector2",children:[l.jsxs("div",{className:"fields",children:[l.jsxs("div",{children:[l.jsx("label",{children:"X:"}),l.jsx("input",{ref:n,type:"number",value:r.x,min:u.min,max:u.max,step:.01,onChange:Y})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Y:"}),l.jsx("input",{ref:a,type:"number",value:r.y,min:u.min,max:u.max,step:.01,onChange:Y})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Min:"}),l.jsx("input",{ref:t,type:"number",value:u.min,step:.01,onChange:k})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Max:"}),l.jsx("input",{ref:i,type:"number",value:u.max,step:.01,onChange:U})]})]}),l.jsxs("div",{className:"input",ref:o,onMouseDown:w,onMouseUp:I,children:[l.jsx("div",{className:"x"}),l.jsx("div",{className:"y"}),l.jsx("div",{className:"pt",ref:d})]})]})}function Wt(e){const n=e.value.isVector3!==void 0,a=e.value.isEuler!==void 0,t=e.value.elements!==void 0,i=[];if(n){const o=E.useMemo(()=>e.value,[]),d=(h,u)=>{o[h]=u,e.onChange({target:{value:o}})};["x","y","z"].forEach(h=>{const u=E.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:u,children:h.toUpperCase()}),l.jsx(Ke,{value:o[h],type:"number",prop:h,step:.01,labelRef:u,onChange:d})]},h))})}else if(a){const o=E.useMemo(()=>e.value,[]),d=(h,u)=>{o[h]=u,e.onChange({target:{value:o}})};["_x","_y","_z"].forEach(h=>{const u=E.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:u,children:h.substring(1).toUpperCase()}),l.jsx(Ke,{value:o[h],type:"number",prop:h,step:.01,labelRef:u,onChange:d})]},h))})}else if(t){const o=E.useMemo(()=>e.value,[]),d=(r,h)=>{const u=Number(r);o.elements[u]=h,e.onChange({target:{value:o}})};for(let r=0;r<9;r++){const h=E.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:h,children:r+1}),l.jsx(Ke,{value:o.elements[r],type:"number",prop:r.toString(),step:.01,labelRef:h,onChange:d})]},r.toString()))}}return l.jsx("div",{className:"grid3",children:i},Math.random().toString())}function Bn(e){const n=e.value.x!==void 0,a=[];if(n){const t=E.useMemo(()=>e.value,[]),i=(d,r)=>{t[d]=r,e.onChange({target:{value:t}})};["x","y","z","w"].forEach(d=>{const r=E.useRef(null);a.push(l.jsxs("div",{children:[l.jsx("label",{ref:r,children:d.toUpperCase()}),l.jsx(Ke,{value:t.x,type:"number",prop:d,step:.01,labelRef:r,onChange:i})]},d))})}else{const t=E.useMemo(()=>e.value,[]),i=(o,d)=>{const r=Number(o);t.elements[r]=d,e.onChange({target:{value:t}})};for(let o=0;o<16;o++){const d=E.useRef(null);a.push(l.jsxs("div",{children:[l.jsx("label",{ref:d,children:o+1}),l.jsx(Ke,{value:t.elements[o],type:"number",prop:o.toString(),step:.01,labelRef:d,onChange:i})]},o.toString()))}}return l.jsx("div",{className:"grid4",children:a})}function Vn(e){return"items"in e}function Xe(e){const n=[];return e.items.forEach(a=>{Vn(a)?n.push(l.jsx(Xe,{title:lt(a.title),items:a.items},Math.random())):n.push(l.jsx(Et,{title:a.title,prop:a.prop,value:a.value,type:a.type,min:a.min,max:a.max,step:a.step,disabled:a.disabled,options:a.options,onChange:(t,i)=>{a.onChange!==void 0&&a.onChange(t,i)},onKeyDown:t=>{a.onKeyDown!==void 0&&a.onKeyDown(t)}},Math.random()))}),l.jsx(Mt,{label:e.title,open:e.expanded===!0,children:n})}function zn(e){return!(e==="alphaHash"||e==="alphaToCoverage"||e==="attenuationDistance"||e==="blendAlpha"||e==="blendColor"||e==="blendDstAlpha"||e==="colorWrite"||e==="combine"||e==="defaultAttributeValues"||e==="depthFunc"||e==="forceSinglePass"||e==="glslVersion"||e==="linecap"||e==="linejoin"||e==="linewidth"||e==="normalMapType"||e==="precision"||e==="premultipliedAlpha"||e==="shadowSide"||e==="toneMapped"||e==="uniformsGroups"||e==="uniformsNeedUpdate"||e==="userData"||e==="vertexColors"||e==="version"||e==="wireframeLinecap"||e==="wireframeLinejoin"||e==="wireframeLinewidth"||e.slice(0,4)==="clip"||e.slice(0,7)==="polygon"||e.slice(0,7)==="stencil"||e.slice(0,2)==="is")}function Gn(e){switch(e){case"Alpha Map":return"alphaMap";case"Anisotropy Map":return"anisotropyMap";case"AO Map":return"aoMap";case"Bump Map":return"bumpMap";case"Clearcoat Map":return"clearcoatMap";case"Clearcoat Normal Map":return"clearcoatNormalMap";case"Clearcoat Roughness Map":return"clearcoatRoughnessMap";case"Displacement Map":return"displacementMap";case"Emissive Map":return"emissiveMap";case"Iridescence Map":return"iridescenceMap";case"Iridescence Thickness Map":return"iridescenceThicknessMap";case"Map":return"map";case"Matcap":return"matcap";case"Normal Map":return"normalMap";case"Roughness Map":return"roughnessMap";case"Sheen Color Map":return"sheenColorMap";case"Sheen Roughness Map":return"sheenRoughnessMap";case"Specular Color Map":return"specularColorMap";case"Specular Map Intensity":return"specularIntensityMap";case"Thickness Map":return"thicknessMap";case"Transmission Map":return"transmissionMap"}return e}function Ot(e){switch(e){case"alphaMap":return"Alpha Map";case"anisotropyMap":return"Anisotropy Map";case"anisotropyRotation":return"Anisotropy Rotation";case"aoMap":return"AO Map";case"aoMapIntensity":return"AO Map Intensity";case"attenuationColor":return"Attenuation Color";case"blendAlpha":return"Blend Alpha";case"blendColor":return"Blend Color";case"blendDst":return"Blend Dst";case"blendDstAlpha":return"Blend Dst Alha";case"blendEquation":return"Blend Equation";case"blendEquationAlpha":return"Blend Equation Alpha";case"blending":return"Blending";case"blendSrc":return"Blend Src";case"blendSrcAlpha":return"Blend Src Alpha";case"bumpMap":return"Bump Map";case"bumpScale":return"Bump Scale";case"clearcoatMap":return"Clearcoat Map";case"clearcoatNormalMap":return"Clearcoat Normal Map";case"clearcoatNormalScale":return"Clearcoat Normal Scale";case"clearcoatRoughness":return"Clearcoat Roughness";case"clearcoatRoughnessMap":return"Clearcoat Roughness Map";case"color":return"Color";case"defines":return"Defines";case"depthTest":return"Depth Test";case"depthWrite":return"Depth Write";case"displacementBias":return"Displacement Bias";case"displacementMap":return"Displacement Map";case"displacementScale":return"Displacement Scale";case"dithering":return"Dithering";case"emissive":return"Emissive";case"emissiveMap":return"Emissive Map";case"emissiveIntensity":return"Emissive Intensity";case"envMap":return"Environment Map";case"envMapIntensity":return"Environment Map Intensity";case"extensions":return"Extensions";case"flatShading":return"Flat Shading";case"fragmentShader":return"Fragment Shader";case"fog":return"Fog";case"gradientMap":return"Gradient Map";case"ior":return"IOR";case"iridescenceIOR":return"Iridescence IOR";case"iridescenceMap":return"Iridescence Map";case"iridescenceThicknessMap":return"Iridescence Thickness Map";case"iridescenceThicknessRange":return"Iridescence Thickness Range";case"lights":return"Lights";case"lightMap":return"Light Map";case"lightMapIntensity":return"Light Map Intensity";case"map":return"Map";case"matcap":return"Matcap";case"metalness":return"Metalness";case"metalnessMap":return"Metalness Map";case"name":return"Name";case"normalMap":return"Normal Map";case"normalScale":return"Normal Scale";case"opacity":return"Opacity";case"reflectivity":return"Reflectivity";case"refractionRatio":return"Refraction Ratio";case"roughness":return"Roughness";case"roughnessMap":return"Roughness Map";case"sheenColor":return"Sheen Color";case"sheenColorMap":return"Sheen Color Map";case"sheenRoughness":return"Sheen Roughness";case"sheenRoughnessMap":return"Sheen Roughness Map";case"shininess":return"Shininess";case"side":return"Side";case"size":return"Size";case"sizeAttenuation":return"Size Attenuation";case"specular":return"Specular";case"specularColor":return"Specular Color";case"specularColorMap":return"Specular Color Map";case"specularIntensity":return"Specular Intensity";case"specularIntensityMap":return"Specular Map Intensity";case"thickness":return"Thickness";case"thicknessMap":return"Thickness Map";case"transmission":return"Transmission";case"transmissionMap":return"Transmission Map";case"transparent":return"Transparent";case"type":return"Type";case"uuid":return"UUID";case"uniforms":return"Uniforms";case"vertexShader":return"Vertex Shader";case"visible":return"Visible";case"wireframe":return"Wireframe"}return e}function dn(e){const n=e.toLowerCase();return n.search("intensity")>-1||n==="anisotropyrotation"||n==="blendalpha"||n==="bumpscale"||n==="clearcoatroughness"||n==="displacementbias"||n==="displacementscale"||n==="metalness"||n==="opacity"||n==="reflectivity"||n==="refractionratio"||n==="roughness"||n==="sheenroughness"||n==="thickness"}function Hn(){const e=document.createElement("input");return e.type="file",new Promise((n,a)=>{e.addEventListener("change",function(){if(e.files===null)a();else{const t=e.files[0],i=new FileReader;i.onload=function(o){n(o.target.result)},i.readAsDataURL(t)}}),e.click()})}const $n=[{title:"Front",value:f.FrontSide},{title:"Back",value:f.BackSide},{title:"Double",value:f.DoubleSide}],Wn=[{title:"No Blending",value:f.NoBlending},{title:"Normal",value:f.NormalBlending},{title:"Additive",value:f.AdditiveBlending},{title:"Subtractive",value:f.SubtractiveBlending},{title:"Multiply",value:f.MultiplyBlending},{title:"Custom",value:f.CustomBlending}],Yn=[{title:"Add",value:f.AddEquation},{title:"Subtract",value:f.SubtractEquation},{title:"Reverse Subtract",value:f.ReverseSubtractEquation},{title:"Min",value:f.MinEquation},{title:"Max",value:f.MaxEquation}],qn=[{title:"Zero",valye:f.ZeroFactor},{title:"One",valye:f.OneFactor},{title:"Src Color",valye:f.SrcColorFactor},{title:"One Minus Src Color",valye:f.OneMinusSrcColorFactor},{title:"Src Alpha",valye:f.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:f.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:f.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:f.OneMinusDstAlphaFactor},{title:"Dst Color",valye:f.DstColorFactor},{title:"One Minus Dst Color",valye:f.OneMinusDstColorFactor},{title:"Src Alpha Saturate",valye:f.SrcAlphaSaturateFactor},{title:"Constant Color",valye:f.ConstantColorFactor},{title:"One Minus Constant Color",valye:f.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:f.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:f.OneMinusConstantAlphaFactor}],Kn=[{title:"Zero",valye:f.ZeroFactor},{title:"One",valye:f.OneFactor},{title:"Src Color",valye:f.SrcColorFactor},{title:"One Minus Src Color",valye:f.OneMinusSrcColorFactor},{title:"Src Alpha",valye:f.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:f.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:f.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:f.OneMinusDstAlphaFactor},{title:"Dst Color",valye:f.DstColorFactor},{title:"One Minus Dst Color",valye:f.OneMinusDstColorFactor},{title:"Constant Color",valye:f.ConstantColorFactor},{title:"One Minus Constant Color",valye:f.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:f.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:f.OneMinusConstantAlphaFactor}];function ot(e,n){e.needsUpdate=!0,e.type="option",e.options=n}function Xn(e,n,a,t){return{type:"boolean",title:Ot(e),prop:e,value:n,needsUpdate:!0,onChange:(i,o)=>{t.updateObject(a.uuid,`material.${e}`,o),t.updateObject(a.uuid,"material.needsUpdate",!0);const d=t.getScene(a.uuid);if(d!==null){const r=d.getObjectByProperty("uuid",a.uuid);ee(r,`material.${e}`,o)}}}}function Zn(e,n,a,t){const i={type:"number",title:Ot(e),prop:e,value:n,min:void 0,max:void 0,step:.01,needsUpdate:!0,onChange:(o,d)=>{t.updateObject(a.uuid,`material.${e}`,d),t.updateObject(a.uuid,"material.needsUpdate",!0);const r=t.getScene(a.uuid);if(r!==null){const h=r.getObjectByProperty("uuid",a.uuid);ee(h,`material.${e}`,d)}}};switch(e){case"blending":ot(i,Wn);break;case"blendDst":ot(i,Kn);break;case"blendEquation":ot(i,Yn);break;case"blendSrc":ot(i,qn);break;case"side":ot(i,$n);break}return dn(e)&&(i.value=Number(n),i.type="range",i.min=Math.min(0,i.value),i.max=Math.max(1,i.value),i.step=.01),i}function Jn(e,n,a,t){const i={type:"string",title:Ot(e),prop:e,value:n,needsUpdate:!0,onChange:(d,r)=>{t.updateObject(a.uuid,`material.${e}`,r),t.updateObject(a.uuid,"material.needsUpdate",!0);const h=t.getScene(a.uuid);if(h!==null){const u=h.getObjectByProperty("uuid",a.uuid);ee(u,`material.${e}`,r)}},onKeyDown:d=>{}};return(e==="vertexShader"||e==="fragmentShader")&&(i.disabled=!1,i.latest=i.value,i.onChange=(d,r)=>{i.latest=r,t.updateObject(a.uuid,`material.${e}`,r);const h=t.getScene(a.uuid);if(h!==null){const u=h.getObjectByProperty("uuid",a.uuid);ee(u,`material.${e}`,r)}},i.onKeyDown=d=>{if(d.key==="Enter"&&(d.altKey||d.metaKey)){t.updateObject(a.uuid,"material.needsUpdate",!0);const r=t.getScene(a.uuid);if(r!==null){const h=r.getObjectByProperty("uuid",a.uuid);ee(h,"material.needsUpdate",!0)}}}),i}function Qn(e){return e.x!==void 0&&e.y!==void 0&&e.z===void 0}function ea(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w===void 0}function ta(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w!==void 0}function Ft(e){e.sort((n,a)=>n.title<a.title?-1:n.title>a.title?1:0)}function ct(e,n,a,t,i="",o=!1){const d=Ot(e).split(".")[0].replaceAll("[","").replaceAll("]",""),r=i.length>0?`${i}.${e}`:e,h=typeof n;if(h==="boolean"||h==="string")return{title:d,prop:r,type:h,value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const v=p.getObjectByProperty("uuid",a.uuid);ee(v,`material.${r}`,m)}}};if(h==="number"){const u={title:d,prop:r,type:"number",value:n,step:.01,disabled:o,onChange:(m,p)=>{t.updateObject(a.uuid,`material.${r}`,p);const v=t.getScene(a.uuid);if(v!==null){const w=v.getObjectByProperty("uuid",a.uuid);ee(w,`material.${r}`,p)}}};return dn(d)&&(u.type="range",u.min=0,u.max=1),u}else{if(n.isColor)return{title:d,prop:r,type:"color",value:n,disabled:o,onChange:(u,m)=>{const p=new f.Color(m);t.updateObject(a.uuid,`material.${r}`,p);const v=t.getScene(a.uuid);if(v!==null){const w=v.getObjectByProperty("uuid",a.uuid);ee(w,`material.${r}`,p)}}};if(Array.isArray(n)){const u=[];for(const m in n){const p=n[m],v=`[${m.toString()}]`;if(p.value!==void 0){const w=ct(`${v}.value`,p.value,a,t,r,o);w!==void 0&&u.push(w)}else{const w=ct(v,p,a,t,r,o);w!==void 0&&u.push(w)}}if(u.length>0)return Ft(u),{title:d,items:u}}else{if(Qn(n))return{title:d,prop:r,type:"vector2",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const v=p.getObjectByProperty("uuid",a.uuid);ee(v,`material.${r}`,m)}}};if(ea(n))return{title:d,prop:r,type:"grid3",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const v=p.getObjectByProperty("uuid",a.uuid);ee(v,`material.${r}`,m)}}};if(ta(n))return{title:d,prop:r,type:"grid4",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const v=p.getObjectByProperty("uuid",a.uuid);ee(v,`material.${r}`,m)}}};if(n.isEuler)return{title:d,prop:r,type:"euler",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const v=p.getObjectByProperty("uuid",a.uuid);ee(v,`material.${r}`,m)}}};if(n.src!==void 0)return{title:d,type:"image",value:n,disabled:o,onChange:(u,m)=>{const p=Gn(e),v=i.length>0?`${i}.${p}`:p;t.createTexture(a.uuid,`material.${v}`,m);const w=t.getScene(a.uuid);if(w!==null){const I=w.getObjectByProperty("uuid",a.uuid);I!==void 0&&rn(m.src).then(F=>{F.offset.set(m.offset[0],m.offset[1]),F.repeat.set(m.repeat[0],m.repeat[1]);const Y=I.material,k=v.split(".");switch(k.length){case 1:Y[k[0]]=F;break;case 2:Y[k[0]][k[1]]=F;break;case 3:Y[k[0]][k[1]][k[2]]=F;break;case 4:Y[k[0]][k[1]][k[2]][k[3]]=F;break;case 5:Y[k[0]][k[1]][k[2]][k[3]][k[4]]=F;break}Y.needsUpdate=!0})}}};if(n.elements!==void 0)return{title:d,prop:r,type:n.elements.length>9?"grid4":"grid3",value:n,disabled:o,onChange:(u,m)=>{t.updateObject(a.uuid,`material.${r}`,m);const p=t.getScene(a.uuid);if(p!==null){const v=p.getObjectByProperty("uuid",a.uuid);ee(v,`material.${r}`,m)}}};{const u=[],m=e==="defines"||e==="extensions";try{for(const p in n){const v=n[p];if(v!==void 0)if(v.value!==void 0){const w=ct(`${p}.value`,v.value,a,t,r,m);w!==void 0&&u.push(w)}else{const w=ct(p,v,a,t,r,m);w!==void 0&&u.push(w)}}}catch{console.log("Issue cycling through material object:",e,n)}if(u.length>0)return Ft(u),{title:d,items:u}}}}}function Yt(e,n,a){const t=[];for(const i in e){if(!zn(i))continue;const o=typeof e[i],d=e[i];if(o==="boolean")t.push(Xn(i,d,n,a));else if(o==="number")t.push(Zn(i,d,n,a));else if(o==="string")t.push(Jn(i,d,n,a));else if(o==="object"){const r=ct(i,d,n,a);r!==void 0&&t.push(r)}else d!==void 0&&console.log("other:",i,o,d)}return Ft(t),t.push({title:"Update Material",type:"button",onChange:()=>{a.updateObject(n.uuid,"material.needsUpdate",!0);const i=a.getScene(n.uuid);if(i!==null){const o=i.getObjectByProperty("uuid",n.uuid);ee(o,"material.needsUpdate",!0)}}}),t}function na(e,n){const a=e.material;if(Array.isArray(a)){const t=[],i=a.length;for(let o=0;o<i;o++)t.push(l.jsx(Xe,{title:`Material ${o}`,items:Yt(a[o],e,n)},`Material ${o}`));return l.jsx(l.Fragment,{children:t})}else return l.jsx(Xe,{title:"Material",items:Yt(a,e,n)})}const aa="data:image/gif;base64,R0lGODlhDgFkAIAAAP///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuZGJhM2RhM2I1LCAyMDIzLzEyLzE1LTEwOjQyOjM3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMDk3M0NEODAxQjQxMUVGODVGNENDMkUyMUExNDk1NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMDk3M0NEOTAxQjQxMUVGODVGNENDMkUyMUExNDk1NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE4ODc3Qzg5MDFCMzExRUY4NUY0Q0MyRTIxQTE0OTU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE4ODc3QzhBMDFCMzExRUY4NUY0Q0MyRTIxQTE0OTU1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAAAAAAAsAAAAAA4BZAAAAv+Mj6nL7Q+jnLTai7PevPsPhuJIluaJpurKtu4Lx/JM1/aN5/rO9/4PDAqHxKLxiEwql8ym8wmNSqfUqvWKzWq33K73Cw6Lx+Sy+YxOq9fstvsNj8vn9Lr9js/r9/y+/w8YKDhIWGh4iJiouMjY6PgIGSk5SVlpeYmZqTkJAGDQ+dnpuekmGgAKejpKuiZqmprKqoZKGyrbOlqrejub6xvLGyw8TFzcprurGuvqybxq7ETbrItsCz0l7Zpc+6p9/cS967w9/S2FTF0u/mzehK4Oqz3eTl9vf4+fr7/P3+//DzCgwIEECxo8iDChwoUMGzp8CDGixIkUK1q8iDGjxo0XHDt6/AgypMiRJEuaPIkypcqVLFt+KwAAOw==";function ia(e){const n=E.useRef(null),a=E.useRef(null),t=E.useRef(null),i=E.useRef(null),o=E.useRef(null),[d]=E.useState(e.value),[r,h]=E.useState(e.value.offset[0]),[u,m]=E.useState(e.value.offset[1]),[p,v]=E.useState(e.value.repeat[0]),[w,I]=E.useState(e.value.repeat[1]);function F(k,U,_,X,te){if(e.onChange!==void 0){const fe=e.prop!==void 0?e.prop:e.title;e.onChange(fe,{src:k,offset:[U,_],repeat:[X,te]})}}function Y(k){const U=n.current.src,_=k.target.value;switch(k.target){case a.current:h(_),F(U,_,u,p,w);break;case t.current:m(_),F(U,r,_,p,w);break;case i.current:v(_),F(U,r,u,_,w);break;case o.current:I(_),F(U,r,u,p,_);break}}return l.jsxs("div",{className:"imageField",children:[l.jsx("img",{alt:e.title,ref:n,onClick:()=>{Hn().then(k=>{n.current.src=k,F(k,r,u,p,w)})},src:d.src.length>0?d.src:aa}),l.jsxs("div",{className:"fields",children:[l.jsxs("div",{children:[l.jsx("label",{children:"Offset:"}),l.jsx("input",{ref:a,type:"number",value:r,step:.01,onChange:Y}),l.jsx("input",{ref:t,type:"number",value:u,step:.01,onChange:Y})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Repeat:"}),l.jsx("input",{ref:i,type:"number",value:p,step:.01,onChange:Y}),l.jsx("input",{ref:o,type:"number",value:w,step:.01,onChange:Y})]})]})]})}function Et(e){let n=e.value;n!==void 0&&n.isColor!==void 0&&(n=nn(e.value));const[a,t]=E.useState(n),i=E.useRef(null),o=u=>{let m=u.target.value;e.type==="boolean"?m=u.target.checked:e.type==="option"&&(m=e.options[m].value),t(m),e.onChange!==void 0&&e.onChange(e.prop!==void 0?e.prop:e.title,m)},d={};e.disabled&&(d.opacity=.8);const r=e.type==="string"&&(a.length>100||a.search(`
30
+ `)>-1),h=r||e.type==="image"||e.type==="vector2";return l.jsxs("div",{className:`field ${h?"block":""}`,style:d,children:[e.type!=="button"&&l.jsx("label",{ref:i,children:lt(e.title)},"fieldLabel"),e.type==="string"&&!r&&l.jsx("input",{type:"text",disabled:e.disabled,onChange:o,value:a}),e.type==="string"&&r&&l.jsx("textarea",{cols:50,rows:10,disabled:e.disabled!==void 0?e.disabled:!0,onChange:o,onKeyDown:u=>{e.onKeyDown!==void 0&&e.onKeyDown(u)},value:a}),e.type==="boolean"&&l.jsx("input",{type:"checkbox",disabled:e.disabled,onChange:o,checked:a}),e.type==="number"&&l.jsx(Ke,{value:a,type:e.type,prop:e.prop!==void 0?e.prop:e.title,min:e.min,max:e.max,step:e.step,disabled:e.disabled,labelRef:i,onChange:e.onChange}),e.type==="range"&&l.jsx(Ke,{value:a,type:e.type,prop:e.prop!==void 0?e.prop:e.title,min:e.min,max:e.max,step:e.step,disabled:e.disabled,labelRef:i,onChange:e.onChange}),e.type==="color"&&l.jsxs(l.Fragment,{children:[l.jsx("input",{type:"text",value:a.toString(),onChange:o,disabled:e.disabled,className:"color"}),l.jsx("input",{type:"color",value:a,onChange:o,disabled:e.disabled})]}),e.type==="button"&&l.jsx("button",{disabled:e.disabled,onClick:()=>{e.onChange!==void 0&&e.onChange(e.prop!==void 0?e.prop:e.title,!0)},children:e.title}),e.type==="image"&&l.jsx(ia,{title:e.title,prop:e.prop,value:e.value,onChange:e.onChange}),e.type==="option"&&l.jsx(l.Fragment,{children:l.jsx("select",{onChange:o,disabled:e.disabled,defaultValue:e.value,children:e.options?.map((u,m)=>l.jsx("option",{value:u.value,children:lt(u.title)},m))})}),e.type==="vector2"&&l.jsx(Un,{value:a,min:0,max:1,onChange:o}),e.type==="grid3"&&l.jsx(Wt,{value:a,onChange:o}),e.type==="grid4"&&l.jsx(Bn,{value:a,onChange:o}),e.type==="euler"&&l.jsx(Wt,{value:a,onChange:o})]})}function qt(e){switch(e){case"fov":return"FOV";case"zoom":return"Zoom";case"near":return"Near";case"far":return"Far";case"focus":return"Focus";case"aspect":return"Aspect";case"filmGauge":return"Film Gauge";case"filmOffset":return"Film Offset";case"left":return"Left";case"right":return"Right";case"top":return"Top";case"bottom":return"Bottom"}return e}function ra(e,n){const a=[];if(e.perspectiveCameraInfo!==void 0)for(const t in e.perspectiveCameraInfo)a.push({title:qt(t),prop:t,type:"number",step:.01,value:e.perspectiveCameraInfo[t],onChange:(i,o)=>{n.updateObject(e.uuid,i,o),n.requestMethod(e.uuid,"updateProjectionMatrix");const d=n.getScene(e.uuid);if(d!==null){const r=d.getObjectByProperty("uuid",e.uuid);r!==void 0&&(ee(r,i,o),r.updateProjectionMatrix())}}});else if(e.orthographicCameraInfo!==void 0)for(const t in e.orthographicCameraInfo)a.push({title:qt(t),prop:t,type:"number",step:.01,value:e.perspectiveCameraInfo[t],onChange:(i,o)=>{n.updateObject(e.uuid,i,o),n.requestMethod(e.uuid,"updateProjectionMatrix");const d=n.getScene(e.uuid);if(d!==null){const r=d.getObjectByProperty("uuid",e.uuid);r!==void 0&&(ee(r,i,o),r.updateProjectionMatrix())}}});return l.jsx(Xe,{title:"Camera",items:a})}function sa(e,n){const a=new f.Matrix4;a.elements=e.matrix;const t=new f.Vector3,i=new f.Euler,o=new f.Vector3;e.uuid.length>0&&(t.setFromMatrixPosition(a),i.setFromRotationMatrix(a),o.setFromMatrixScale(a));const d=(r,h)=>{const u=r==="rotation"?{x:h._x,y:h._y,z:h._z}:h;n.updateObject(e.uuid,r,u);const m=n.getScene(e.uuid);if(m!==null){const p=m.getObjectByProperty("uuid",e.uuid);ee(p,r,u)}};return l.jsx(Xe,{title:"Transform",items:[{title:"Position",prop:"position",type:"grid3",value:t,onChange:d},{title:"Rotation",prop:"rotation",type:"grid3",value:i,onChange:d},{title:"Scale",prop:"scale",type:"grid3",value:o,onChange:d}]})}function Kt(e){switch(e){case"color":return"Color";case"intensity":return"Intensity";case"decay":return"Decay";case"distance":return"Distance";case"angle":return"Angle";case"penumbra":return"Penumbra";case"groundColor":return"Ground Color";case"width":return"Width";case"height":return"Height"}return e}function oa(e,n){const a=[];if(e.lightInfo!==void 0)for(const t in e.lightInfo){const i=e.lightInfo[t];i!==void 0&&(i.isColor!==void 0?a.push({title:Kt(t),prop:t,type:"color",value:i,onChange:(o,d)=>{const r=new f.Color(d);n.updateObject(e.uuid,o,r);const h=n.getScene(e.uuid);if(h!==null){const u=h.getObjectByProperty("uuid",e.uuid);ee(u,o,r)}}}):a.push({title:Kt(t),prop:t,type:typeof i,value:i,step:typeof i=="number"?.01:void 0,onChange:(o,d)=>{n.updateObject(e.uuid,o,d);const r=n.getScene(e.uuid);if(r!==null){const h=r.getObjectByProperty("uuid",e.uuid);ee(h,o,d)}}}))}return l.jsx(Xe,{title:"Light",items:a})}function ca(e,n){const a=[],t=[];let i=0;e.animations.forEach(d=>{i=Math.max(i,d.duration),d.duration>0&&t.push({title:d.name,items:[{title:"Duration",type:"number",value:d.duration,disabled:!0},{title:"Blend Mode",type:"option",disabled:!0,options:[{title:"Normal",value:2500},{title:"Additive",value:2501}]}]})}),a.push({title:"Animations",items:t});const o=n.getScene(e.uuid);if(o!==null){const d=o.getObjectByProperty("uuid",e.uuid);let r=!1;if(d!==void 0){const h=d.mixer;if(r=h!==void 0,r){const u=[{title:"Time Scale",type:"range",value:h.timeScale,step:.01,min:-1,max:2,onChange:(m,p)=>{h.timeScale=p,n.updateObject(e.uuid,"mixer.timeScale",p)}}];u.push({title:"Stop All",type:"button",onChange:()=>{h.stopAllAction(),n.requestMethod(e.uuid,"stopAllAction",void 0,"mixer")}}),a.push({title:"Mixer",items:u})}}}return l.jsx(Xe,{title:"Animation",items:a})}const hn={name:"",uuid:"",type:"",visible:!1,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0,children:[]};let he={...hn};function fn(e){const[n,a]=E.useState(-1);E.useEffect(()=>{function d(h){he={...h.value},a(Date.now())}function r(){he={...hn},a(Date.now())}return P.addEventListener(j.SET_SCENE,r),P.addEventListener(j.SET_OBJECT,d),()=>{P.removeEventListener(j.SET_SCENE,r),P.removeEventListener(j.SET_OBJECT,d)}},[]);const t=he.type.toLowerCase(),i=he.animations.length>0||he.mixer!==void 0,o=t.search("mesh")>-1||t.search("line")>-1||t.search("points")>-1;return l.jsx(Mt,{label:"Inspector",children:l.jsx("div",{id:"Inspector",className:e.class,children:he.uuid.length>0&&l.jsxs(l.Fragment,{children:[l.jsxs(l.Fragment,{children:[l.jsx(Et,{type:"string",title:"Name",prop:"name",value:he.name,disabled:!0}),l.jsx(Et,{type:"string",title:"Type",prop:"type",value:he.type,disabled:!0}),l.jsx(Et,{type:"string",title:"UUID",prop:"uuid",value:he.uuid,disabled:!0})]}),l.jsxs(l.Fragment,{children:[sa(he,e.three),i?ca(he,e.three):null,t.search("camera")>-1?ra(he,e.three):null,t.search("light")>-1?oa(he,e.three):null,o?na(he,e.three):null]})]})},n)},"Inspector")}function la(e){const[n]=E.useState([]),[a,t]=E.useState(0),i=r=>{n.push(r.value),t(Date.now())},o=r=>{const h=r.value;for(let u=0;u<n.length;u++)if(h.uuid===n[u].uuid){n.splice(u,1),t(Date.now());return}};E.useEffect(()=>(P.addEventListener(j.ADD_SCENE,i),P.addEventListener(j.REMOVE_SCENE,o),()=>{P.removeEventListener(j.ADD_SCENE,i),P.removeEventListener(j.REMOVE_SCENE,o)}),[]);const d=[];return n.forEach((r,h)=>{d.push(l.jsx(Mt,{label:`Scene: ${r.name}`,open:!0,children:l.jsx(un,{child:r,scene:r,three:e.three})},`scene_${h}`))}),l.jsxs("div",{id:"SidePanel",children:[d,l.jsx(fn,{three:e.three})]},`SidePanel ${a}`)}function ua(e){return E.useEffect(()=>{function n(r){let h=null;return e.three.scenes.forEach(u=>{r.search(u.uuid)>-1&&(h=u)}),h}const a=r=>{const h=r.value,u=n(h),m=u?.getObjectByProperty("uuid",h);m!==void 0?e.three.setObject(m):console.log(`Hermes - can't find object: ${h}`,u)},t=(r,h,u)=>{const m=n(r),p=m?.getObjectByProperty("uuid",r);p!==void 0?ee(p,h,u):console.log(`Hermes - can't set object: ${r}`,m)},i=r=>{const h=r.value,{key:u,value:m,uuid:p}=h;t(p,u,m)},o=r=>{const h=r.value,m=n(h.uuid)?.getObjectByProperty("uuid",h.uuid);m!==void 0&&rn(h.value.src).then(p=>{p.offset.set(h.value.offset[0],h.value.offset[1]),p.repeat.set(h.value.repeat[0],h.value.repeat[1]);const v=h.key.split(".");switch(v.length){case 1:m[v[0]]=p;break;case 2:m[v[0]][v[1]]=p;break;case 3:m[v[0]][v[1]][v[2]]=p;break;case 4:m[v[0]][v[1]][v[2]][v[3]]=p;break;case 5:m[v[0]][v[1]][v[2]][v[3]][v[4]]=p;break}m.material.needsUpdate=!0})},d=r=>{const{key:h,uuid:u,value:m,subitem:p}=r.value,w=n(u)?.getObjectByProperty("uuid",u);if(w!==void 0)try{p!==void 0?_n(w,p)[h](m):w[h](m)}catch(I){console.log("Error requesting method:"),console.log(I),console.log(h),console.log(m)}};return P.addEventListener(j.GET_OBJECT,a),P.addEventListener(j.UPDATE_OBJECT,i),P.addEventListener(j.CREATE_TEXTURE,o),P.addEventListener(j.REQUEST_METHOD,d),()=>{P.removeEventListener(j.GET_OBJECT,a),P.removeEventListener(j.UPDATE_OBJECT,i),P.removeEventListener(j.CREATE_TEXTURE,o),P.removeEventListener(j.REQUEST_METHOD,d)}},[]),null}class da extends f.Line{constructor(n,a){const t=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],i=new f.BufferGeometry;i.setAttribute("position",new f.Float32BufferAttribute(t,3)),i.computeBoundingSphere();const o=new f.LineBasicMaterial({fog:!1});super(i,o),this.light=n,this.color=a,this.type="RectAreaLightHelper";const d=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],r=new f.BufferGeometry;r.setAttribute("position",new f.Float32BufferAttribute(d,3)),r.computeBoundingSphere(),this.add(new f.Mesh(r,new f.MeshBasicMaterial({side:f.BackSide,fog:!1})))}updateMatrixWorld(){if(this.scale.set(.5*this.light.width,.5*this.light.height,1),this.color!==void 0)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);const n=this.material.color,a=Math.max(n.r,n.g,n.b);a>1&&n.multiplyScalar(1/a),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const Xt={type:"change"},Dt={type:"start"},Zt={type:"end"},vt=new f.Ray,Jt=new f.Plane,ha=Math.cos(70*f.MathUtils.DEG2RAD);class fa extends f.EventDispatcher{constructor(n,a){super(),this.object=n,this.domElement=a,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new f.Vector3,this.cursor=new f.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:f.MOUSE.ROTATE,MIDDLE:f.MOUSE.DOLLY,RIGHT:f.MOUSE.PAN},this.touches={ONE:f.TOUCH.ROTATE,TWO:f.TOUCH.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return r.phi},this.getAzimuthalAngle=function(){return r.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(c){c.addEventListener("keydown",at),this._domElementKeyEvents=c},this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",at),this._domElementKeyEvents=null},this.saveState=function(){t.target0.copy(t.target),t.position0.copy(t.object.position),t.zoom0=t.object.zoom},this.reset=function(){t.target.copy(t.target0),t.object.position.copy(t.position0),t.object.zoom=t.zoom0,t.object.updateProjectionMatrix(),t.dispatchEvent(Xt),t.update(),o=i.NONE},this.update=function(){const c=new f.Vector3,x=new f.Quaternion().setFromUnitVectors(n.up,new f.Vector3(0,1,0)),A=x.clone().invert(),V=new f.Vector3,ie=new f.Quaternion,be=new f.Vector3,le=2*Math.PI;return function(mt=null){const pt=t.object.position;c.copy(pt).sub(t.target),c.applyQuaternion(x),r.setFromVector3(c),t.autoRotate&&o===i.NONE&&ge(Me(mt)),t.enableDamping?(r.theta+=h.theta*t.dampingFactor,r.phi+=h.phi*t.dampingFactor):(r.theta+=h.theta,r.phi+=h.phi);let ye=t.minAzimuthAngle,Ee=t.maxAzimuthAngle;isFinite(ye)&&isFinite(Ee)&&(ye<-Math.PI?ye+=le:ye>Math.PI&&(ye-=le),Ee<-Math.PI?Ee+=le:Ee>Math.PI&&(Ee-=le),ye<=Ee?r.theta=Math.max(ye,Math.min(Ee,r.theta)):r.theta=r.theta>(ye+Ee)/2?Math.max(ye,r.theta):Math.min(Ee,r.theta)),r.phi=Math.max(t.minPolarAngle,Math.min(t.maxPolarAngle,r.phi)),r.makeSafe(),t.enableDamping===!0?t.target.addScaledVector(m,t.dampingFactor):t.target.add(m),t.target.sub(t.cursor),t.target.clampLength(t.minTargetRadius,t.maxTargetRadius),t.target.add(t.cursor);let Ye=!1;if(t.zoomToCursor&&fe||t.object.isOrthographicCamera)r.radius=_e(r.radius);else{const Ce=r.radius;r.radius=_e(r.radius*u),Ye=Ce!=r.radius}if(c.setFromSpherical(r),c.applyQuaternion(A),pt.copy(t.target).add(c),t.object.lookAt(t.target),t.enableDamping===!0?(h.theta*=1-t.dampingFactor,h.phi*=1-t.dampingFactor,m.multiplyScalar(1-t.dampingFactor)):(h.set(0,0,0),m.set(0,0,0)),t.zoomToCursor&&fe){let Ce=null;if(t.object.isPerspectiveCamera){const Ve=c.length();Ce=_e(Ve*u);const Je=Ve-Ce;t.object.position.addScaledVector(X,Je),t.object.updateMatrixWorld(),Ye=!!Je}else if(t.object.isOrthographicCamera){const Ve=new f.Vector3(te.x,te.y,0);Ve.unproject(t.object);const Je=t.object.zoom;t.object.zoom=Math.max(t.minZoom,Math.min(t.maxZoom,t.object.zoom/u)),t.object.updateProjectionMatrix(),Ye=Je!==t.object.zoom;const gt=new f.Vector3(te.x,te.y,0);gt.unproject(t.object),t.object.position.sub(gt).add(Ve),t.object.updateMatrixWorld(),Ce=c.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),t.zoomToCursor=!1;Ce!==null&&(this.screenSpacePanning?t.target.set(0,0,-1).transformDirection(t.object.matrix).multiplyScalar(Ce).add(t.object.position):(vt.origin.copy(t.object.position),vt.direction.set(0,0,-1).transformDirection(t.object.matrix),Math.abs(t.object.up.dot(vt.direction))<ha?n.lookAt(t.target):(Jt.setFromNormalAndCoplanarPoint(t.object.up,t.target),vt.intersectPlane(Jt,t.target))))}else if(t.object.isOrthographicCamera){const Ce=t.object.zoom;t.object.zoom=Math.max(t.minZoom,Math.min(t.maxZoom,t.object.zoom/u)),Ce!==t.object.zoom&&(t.object.updateProjectionMatrix(),Ye=!0)}return u=1,fe=!1,Ye||V.distanceToSquared(t.object.position)>d||8*(1-ie.dot(t.object.quaternion))>d||be.distanceToSquared(t.target)>d?(t.dispatchEvent(Xt),V.copy(t.object.position),ie.copy(t.object.quaternion),be.copy(t.target),!0):!1}}(),this.dispose=function(){t.domElement.removeEventListener("contextmenu",Ze),t.domElement.removeEventListener("pointerdown",C),t.domElement.removeEventListener("pointercancel",Z),t.domElement.removeEventListener("wheel",J),t.domElement.removeEventListener("pointermove",H),t.domElement.removeEventListener("pointerup",Z),t.domElement.getRootNode().removeEventListener("keydown",Fe,{capture:!0}),t._domElementKeyEvents!==null&&(t._domElementKeyEvents.removeEventListener("keydown",at),t._domElementKeyEvents=null)};const t=this,i={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let o=i.NONE;const d=1e-6,r=new f.Spherical,h=new f.Spherical;let u=1;const m=new f.Vector3,p=new f.Vector2,v=new f.Vector2,w=new f.Vector2,I=new f.Vector2,F=new f.Vector2,Y=new f.Vector2,k=new f.Vector2,U=new f.Vector2,_=new f.Vector2,X=new f.Vector3,te=new f.Vector2;let fe=!1;const q=[],me={};let oe=!1;function Me(c){return c!==null?2*Math.PI/60*t.autoRotateSpeed*c:2*Math.PI/60/60*t.autoRotateSpeed}function Oe(c){const x=Math.abs(c*.01);return Math.pow(.95,t.zoomSpeed*x)}function ge(c){h.theta-=c}function z(c){h.phi-=c}const ve=function(){const c=new f.Vector3;return function(A,V){c.setFromMatrixColumn(V,0),c.multiplyScalar(-A),m.add(c)}}(),T=function(){const c=new f.Vector3;return function(A,V){t.screenSpacePanning===!0?c.setFromMatrixColumn(V,1):(c.setFromMatrixColumn(V,0),c.crossVectors(t.object.up,c)),c.multiplyScalar(A),m.add(c)}}(),xe=function(){const c=new f.Vector3;return function(A,V){const ie=t.domElement;if(t.object.isPerspectiveCamera){const be=t.object.position;c.copy(be).sub(t.target);let le=c.length();le*=Math.tan(t.object.fov/2*Math.PI/180),ve(2*A*le/ie.clientHeight,t.object.matrix),T(2*V*le/ie.clientHeight,t.object.matrix)}else t.object.isOrthographicCamera?(ve(A*(t.object.right-t.object.left)/t.object.zoom/ie.clientWidth,t.object.matrix),T(V*(t.object.top-t.object.bottom)/t.object.zoom/ie.clientHeight,t.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),t.enablePan=!1)}}();function Re(c){t.object.isPerspectiveCamera||t.object.isOrthographicCamera?u/=c:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),t.enableZoom=!1)}function De(c){t.object.isPerspectiveCamera||t.object.isOrthographicCamera?u*=c:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),t.enableZoom=!1)}function Te(c,x){if(!t.zoomToCursor)return;fe=!0;const A=t.domElement.getBoundingClientRect(),V=c-A.left,ie=x-A.top,be=A.width,le=A.height;te.x=V/be*2-1,te.y=-(ie/le)*2+1,X.set(te.x,te.y,1).unproject(t.object).sub(t.object.position).normalize()}function _e(c){return Math.max(t.minDistance,Math.min(t.maxDistance,c))}function ke(c){p.set(c.clientX,c.clientY)}function $e(c){Te(c.clientX,c.clientX),k.set(c.clientX,c.clientY)}function Ae(c){I.set(c.clientX,c.clientY)}function We(c){v.set(c.clientX,c.clientY),w.subVectors(v,p).multiplyScalar(t.rotateSpeed);const x=t.domElement;ge(2*Math.PI*w.x/x.clientHeight),z(2*Math.PI*w.y/x.clientHeight),p.copy(v),t.update()}function nt(c){U.set(c.clientX,c.clientY),_.subVectors(U,k),_.y>0?Re(Oe(_.y)):_.y<0&&De(Oe(_.y)),k.copy(U),t.update()}function Pe(c){F.set(c.clientX,c.clientY),Y.subVectors(F,I).multiplyScalar(t.panSpeed),xe(Y.x,Y.y),I.copy(F),t.update()}function ne(c){Te(c.clientX,c.clientY),c.deltaY<0?De(Oe(c.deltaY)):c.deltaY>0&&Re(Oe(c.deltaY)),t.update()}function de(c){let x=!1;switch(c.code){case t.keys.UP:c.ctrlKey||c.metaKey||c.shiftKey?z(2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):xe(0,t.keyPanSpeed),x=!0;break;case t.keys.BOTTOM:c.ctrlKey||c.metaKey||c.shiftKey?z(-2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):xe(0,-t.keyPanSpeed),x=!0;break;case t.keys.LEFT:c.ctrlKey||c.metaKey||c.shiftKey?ge(2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):xe(t.keyPanSpeed,0),x=!0;break;case t.keys.RIGHT:c.ctrlKey||c.metaKey||c.shiftKey?ge(-2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):xe(-t.keyPanSpeed,0),x=!0;break}x&&(c.preventDefault(),t.update())}function Ne(c){if(q.length===1)p.set(c.pageX,c.pageY);else{const x=Be(c),A=.5*(c.pageX+x.x),V=.5*(c.pageY+x.y);p.set(A,V)}}function je(c){if(q.length===1)I.set(c.pageX,c.pageY);else{const x=Be(c),A=.5*(c.pageX+x.x),V=.5*(c.pageY+x.y);I.set(A,V)}}function pe(c){const x=Be(c),A=c.pageX-x.x,V=c.pageY-x.y,ie=Math.sqrt(A*A+V*V);k.set(0,ie)}function b(c){t.enableZoom&&pe(c),t.enablePan&&je(c)}function y(c){t.enableZoom&&pe(c),t.enableRotate&&Ne(c)}function O(c){if(q.length==1)v.set(c.pageX,c.pageY);else{const A=Be(c),V=.5*(c.pageX+A.x),ie=.5*(c.pageY+A.y);v.set(V,ie)}w.subVectors(v,p).multiplyScalar(t.rotateSpeed);const x=t.domElement;ge(2*Math.PI*w.x/x.clientHeight),z(2*Math.PI*w.y/x.clientHeight),p.copy(v)}function N(c){if(q.length===1)F.set(c.pageX,c.pageY);else{const x=Be(c),A=.5*(c.pageX+x.x),V=.5*(c.pageY+x.y);F.set(A,V)}Y.subVectors(F,I).multiplyScalar(t.panSpeed),xe(Y.x,Y.y),I.copy(F)}function re(c){const x=Be(c),A=c.pageX-x.x,V=c.pageY-x.y,ie=Math.sqrt(A*A+V*V);U.set(0,ie),_.set(0,Math.pow(U.y/k.y,t.zoomSpeed)),Re(_.y),k.copy(U);const be=(c.pageX+x.x)*.5,le=(c.pageY+x.y)*.5;Te(be,le)}function ce(c){t.enableZoom&&re(c),t.enablePan&&N(c)}function R(c){t.enableZoom&&re(c),t.enableRotate&&O(c)}function C(c){t.enabled!==!1&&(q.length===0&&(t.domElement.setPointerCapture(c.pointerId),t.domElement.addEventListener("pointermove",H),t.domElement.addEventListener("pointerup",Z)),!_t(c)&&(Rt(c),c.pointerType==="touch"?it(c):D(c)))}function H(c){t.enabled!==!1&&(c.pointerType==="touch"?ht(c):W(c))}function Z(c){switch(Tt(c),q.length){case 0:t.domElement.releasePointerCapture(c.pointerId),t.domElement.removeEventListener("pointermove",H),t.domElement.removeEventListener("pointerup",Z),t.dispatchEvent(Zt),o=i.NONE;break;case 1:const x=q[0],A=me[x];it({pointerId:x,pageX:A.x,pageY:A.y});break}}function D(c){let x;switch(c.button){case 0:x=t.mouseButtons.LEFT;break;case 1:x=t.mouseButtons.MIDDLE;break;case 2:x=t.mouseButtons.RIGHT;break;default:x=-1}switch(x){case f.MOUSE.DOLLY:if(t.enableZoom===!1)return;$e(c),o=i.DOLLY;break;case f.MOUSE.ROTATE:if(c.ctrlKey||c.metaKey||c.shiftKey){if(t.enablePan===!1)return;Ae(c),o=i.PAN}else{if(t.enableRotate===!1)return;ke(c),o=i.ROTATE}break;case f.MOUSE.PAN:if(c.ctrlKey||c.metaKey||c.shiftKey){if(t.enableRotate===!1)return;ke(c),o=i.ROTATE}else{if(t.enablePan===!1)return;Ae(c),o=i.PAN}break;default:o=i.NONE}o!==i.NONE&&t.dispatchEvent(Dt)}function W(c){switch(o){case i.ROTATE:if(t.enableRotate===!1)return;We(c);break;case i.DOLLY:if(t.enableZoom===!1)return;nt(c);break;case i.PAN:if(t.enablePan===!1)return;Pe(c);break}}function J(c){t.enabled===!1||t.enableZoom===!1||o!==i.NONE||(c.preventDefault(),t.dispatchEvent(Dt),ne(Le(c)),t.dispatchEvent(Zt))}function Le(c){const x=c.deltaMode,A={clientX:c.clientX,clientY:c.clientY,deltaY:c.deltaY};switch(x){case 1:A.deltaY*=16;break;case 2:A.deltaY*=100;break}return c.ctrlKey&&!oe&&(A.deltaY*=10),A}function Fe(c){c.key==="Control"&&(oe=!0,t.domElement.getRootNode().addEventListener("keyup",Ue,{passive:!0,capture:!0}))}function Ue(c){c.key==="Control"&&(oe=!1,t.domElement.getRootNode().removeEventListener("keyup",Ue,{passive:!0,capture:!0}))}function at(c){t.enabled===!1||t.enablePan===!1||de(c)}function it(c){switch(ft(c),q.length){case 1:switch(t.touches.ONE){case f.TOUCH.ROTATE:if(t.enableRotate===!1)return;Ne(c),o=i.TOUCH_ROTATE;break;case f.TOUCH.PAN:if(t.enablePan===!1)return;je(c),o=i.TOUCH_PAN;break;default:o=i.NONE}break;case 2:switch(t.touches.TWO){case f.TOUCH.DOLLY_PAN:if(t.enableZoom===!1&&t.enablePan===!1)return;b(c),o=i.TOUCH_DOLLY_PAN;break;case f.TOUCH.DOLLY_ROTATE:if(t.enableZoom===!1&&t.enableRotate===!1)return;y(c),o=i.TOUCH_DOLLY_ROTATE;break;default:o=i.NONE}break;default:o=i.NONE}o!==i.NONE&&t.dispatchEvent(Dt)}function ht(c){switch(ft(c),o){case i.TOUCH_ROTATE:if(t.enableRotate===!1)return;O(c),t.update();break;case i.TOUCH_PAN:if(t.enablePan===!1)return;N(c),t.update();break;case i.TOUCH_DOLLY_PAN:if(t.enableZoom===!1&&t.enablePan===!1)return;ce(c),t.update();break;case i.TOUCH_DOLLY_ROTATE:if(t.enableZoom===!1&&t.enableRotate===!1)return;R(c),t.update();break;default:o=i.NONE}}function Ze(c){t.enabled!==!1&&c.preventDefault()}function Rt(c){q.push(c.pointerId)}function Tt(c){delete me[c.pointerId];for(let x=0;x<q.length;x++)if(q[x]==c.pointerId){q.splice(x,1);return}}function _t(c){for(let x=0;x<q.length;x++)if(q[x]==c.pointerId)return!0;return!1}function ft(c){let x=me[c.pointerId];x===void 0&&(x=new f.Vector2,me[c.pointerId]=x),x.set(c.pageX,c.pageY)}function Be(c){const x=c.pointerId===q[0]?q[1]:q[0];return me[x]}t.domElement.addEventListener("contextmenu",Ze),t.domElement.addEventListener("pointerdown",C),t.domElement.addEventListener("pointercancel",Z),t.domElement.addEventListener("wheel",J,{passive:!1}),t.domElement.getRootNode().addEventListener("keydown",Fe,{passive:!0,capture:!0}),this.update()}}function tt(e,n,a,t,i){return t+(e-n)*(i-t)/(a-n)}const St=e=>{const[n,a]=E.useState(e.options[e.index]),t=()=>{e.onToggle(!e.open)},i=o=>{o!==n&&(e.onSelect(o),a(o)),e.onToggle(!1)};return l.jsxs("div",{className:`dropdown ${e.up===!0?"up":""}`,children:[l.jsx("div",{className:"dropdown-toggle",onClick:t,children:n}),e.open&&l.jsx("ul",{className:"dropdown-menu",children:e.options.map(o=>l.jsx("li",{onClick:()=>i(o),children:o},o))})]})},qe=E.forwardRef(function(n,a){const[t,i]=E.useState(!1),o=n.options.indexOf(n.camera.name);return l.jsxs("div",{className:"CameraWindow",children:[l.jsx("div",{ref:a,className:"clickable",onClick:()=>{t&&i(!1)}}),l.jsx(St,{index:o,open:t,options:n.options,onSelect:n.onSelect,onToggle:d=>{i(d)},up:!0})]})});class ma extends f.ShaderMaterial{constructor(n){super({extensions:{derivatives:!0},glslVersion:f.GLSL3,side:f.DoubleSide,transparent:!0,uniforms:{uScale:{value:n?.scale!==void 0?n?.scale:.1},uDivisions:{value:n?.divisions!==void 0?n?.divisions:10},uColor:{value:n?.color!==void 0?n?.color:new f.Color(16777215)},uDistance:{value:n?.distance!==void 0?n?.distance:1e4},uSubgridOpacity:{value:n?.subgridOpacity!==void 0?n?.subgridOpacity:.15},uGridOpacity:{value:n?.gridOpacity!==void 0?n?.gridOpacity:.25}},vertexShader:`out vec3 worldPosition;
31
31
  uniform float uDistance;
32
32
 
33
33
  void main() {
@@ -103,7 +103,7 @@ C11,8.22,10.74,8,10.43,8z`})});function on(e){return l.jsx(en.Reorder.Item,{valu
103
103
  fragColor.a = mix(fragColor.a, baseOpacity * uGridOpacity, nextGrid);
104
104
 
105
105
  if (fragColor.a <= 0.0) discard;
106
- }`,name:"InfiniteGrid",depthWrite:!1})}}class ga extends f.Mesh{gridMaterial;constructor(){const n=new pa;super(new f.PlaneGeometry(2,2),n),this.gridMaterial=n,this.frustumCulled=!1,this.name="InfiniteGridHelper",this.position.y=.1}update(){this.gridMaterial.needsUpdate=!0}}const va=`#include <common>
106
+ }`,name:"InfiniteGrid",depthWrite:!1})}}class pa extends f.Mesh{gridMaterial;constructor(){const n=new ma;super(new f.PlaneGeometry(2,2),n),this.gridMaterial=n,this.frustumCulled=!1,this.name="InfiniteGridHelper",this.position.y=.1}update(){this.gridMaterial.needsUpdate=!0}}const ga=`#include <common>
107
107
  #include <batching_pars_vertex>
108
108
  #include <uv_pars_vertex>
109
109
  #include <color_pars_vertex>
@@ -133,7 +133,7 @@ void main() {
133
133
  #include <logdepthbuf_vertex>
134
134
  #include <clipping_planes_vertex>
135
135
  #include <worldpos_vertex>
136
- }`,ba=`
136
+ }`,va=`
137
137
  #include <common>
138
138
  #include <uv_pars_fragment>
139
139
  #include <clipping_planes_pars_fragment>
@@ -141,4 +141,4 @@ void main() {
141
141
  void main() {
142
142
  #include <clipping_planes_fragment>
143
143
  gl_FragColor = vec4(vec3(vUv, 0.0), 1.0);
144
- }`;class ya extends f.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:va,fragmentShader:ba})}}let bt="Renderer",we,yt=!1,Pt=!1,X=null,re=null,Ue=null,Be=null;function Ea(e){const n=e.three.app.appID,a=localStorage.getItem(`${n}_mode`),t=localStorage.getItem(`${n}_tlCam`)!==null?localStorage.getItem(`${n}_tlCam`):"Debug",i=localStorage.getItem(`${n}_trCam`)!==null?localStorage.getItem(`${n}_trCam`):"Orthographic",o=localStorage.getItem(`${n}_blCam`)!==null?localStorage.getItem(`${n}_blCam`):"Front",d=localStorage.getItem(`${n}_brCam`)!==null?localStorage.getItem(`${n}_brCam`):"Top",r=E.useMemo(()=>new Map,[]),h=E.useMemo(()=>new Map,[]),u=E.useMemo(()=>new Map,[]),m=E.useMemo(()=>new Map,[]),p=E.useMemo(()=>new f.Scene,[]),b=E.useMemo(()=>new f.Group,[]),w=E.useMemo(()=>new ga,[]),I=E.useMemo(()=>new f.AxesHelper(500),[]),V=E.useMemo(()=>new f.AxesHelper(100),[]),Y=E.useMemo(()=>new f.MeshDepthMaterial,[]),k=E.useMemo(()=>new f.MeshNormalMaterial,[]),L=E.useMemo(()=>new ya,[]),_=E.useMemo(()=>new f.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),[]);function Z(v,y){const R=new f.OrthographicCamera(-100,100,100,-100,50,5e3);return R.name=v,R.position.copy(y),R.lookAt(0,0,0),r.set(v,R),R}const ee=["Renderer","Depth","Normals","UVs","Wireframe"],he=["Single","Side by Side","Stacked","Quad"],q=E.useRef(null),fe=E.useRef(null),se=E.useRef(null),Me=E.useRef(null),Oe=E.useRef(null),pe=E.useRef(null),[z,ge]=E.useState(a!==null?a:"Single"),[T,Se]=E.useState(null),[Re,ke]=E.useState(!1),[Te,_e]=E.useState(!1),[De,je]=E.useState(!1),[,Ie]=E.useState(Date.now());localStorage.setItem(`${n}_mode`,z),localStorage.setItem(`${n}_tlCam`,t),localStorage.setItem(`${n}_trCam`,i),localStorage.setItem(`${n}_blCam`,o),localStorage.setItem(`${n}_brCam`,d);const ie=(v,y)=>{const R=h.get(v.name);if(R!==void 0&&R.dispose(),h.delete(v.name),v.name==="UI")return;const F=new ma(v,y);switch(F.enableDamping=!0,F.dampingFactor=.05,v.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":F.enableRotate=!1;break}h.set(v.name,F)},xe=v=>{const y=u.get(v.name);y!==void 0&&(p.remove(y),y.dispose(),u.delete(v.name));const R=h.get(v.name);R!==void 0&&(R.dispose(),h.delete(v.name))},ze=()=>{h.forEach((v,y)=>{v.dispose();const R=u.get(y);R!==void 0&&(p.remove(R),R.dispose()),u.delete(y),h.delete(y)}),h.clear(),u.clear()},Ge=()=>{switch(z){case"Single":ie(X,se.current);break;case"Side by Side":case"Stacked":ie(X,se.current),ie(re,Me.current);break;case"Quad":ie(X,se.current),ie(re,Me.current),ie(Ue,Oe.current),ie(Be,pe.current);break}};E.useEffect(()=>{const v=new f.WebGLRenderer({canvas:q.current,stencil:!1});v.autoClear=!1,v.shadowMap.enabled=!0,v.setPixelRatio(devicePixelRatio),v.setClearColor(0),e.three.renderer=v,Se(v)},[]),E.useEffect(()=>{p.name="Debug Scene",p.uuid="",b.name="helpers",p.add(b),b.add(w),I.name="axisHelper",b.add(I),V.name="interactionHelper",b.add(V),V.visible=!1,Z("Top",new f.Vector3(0,1e3,0)),Z("Bottom",new f.Vector3(0,-1e3,0)),Z("Left",new f.Vector3(-1e3,0,0)),Z("Right",new f.Vector3(1e3,0,0)),Z("Front",new f.Vector3(0,0,1e3)),Z("Back",new f.Vector3(0,0,-1e3)),Z("Orthographic",new f.Vector3(1e3,1e3,1e3)),Z("UI",new f.Vector3);const v=new f.PerspectiveCamera(60,1,50,5e3);v.name="Debug",v.position.set(500,500,500),v.lookAt(0,0,0),r.set("Debug",v),X=r.get(localStorage.getItem(`${n}_tlCam`)),re=r.get(localStorage.getItem(`${n}_trCam`)),Ue=r.get(localStorage.getItem(`${n}_blCam`)),Be=r.get(localStorage.getItem(`${n}_brCam`))},[]),E.useEffect(()=>{const v=()=>{m.forEach(M=>{b.remove(M),M.dispose()}),m.clear()},y=()=>{we.traverse(M=>{if(M.type.search("Light")>-1){let C;switch(M.type){case"DirectionalLight":C=new f.DirectionalLightHelper(M,100),C.name=`${M.name}Helper`,m.set(M.name,C),b.add(C);break;case"HemisphereLight":C=new f.HemisphereLightHelper(M,250),C.name=`${M.name}Helper`,m.set(M.name,C),b.add(C);break;case"RectAreaLight":C=new ha(M),C.name=`${M.name}Helper`,m.set(M.name,C),b.add(C);break;case"PointLight":C=new f.PointLightHelper(M,100),C.name=`${M.name}Helper`,m.set(M.name,C),b.add(C);break;case"SpotLight":C=new f.SpotLightHelper(M),C.name=`${M.name}Helper`,m.set(M.name,C),b.add(C);break}}})},R=M=>{b.add(I),v(),ct(we),p.remove(we);const C=e.scenes.get(M.value.name);if(C!==void 0){const $=new C;e.onSceneSet!==void 0&&e.onSceneSet($),we=$,e.three.scene=we,p.add(we),Pt=!0,y()}},F=M=>{const C=M.value,$=e.three.scene?.getObjectByProperty("uuid",C.uuid);if($!==void 0&&r.set(C.name,$),$ instanceof f.PerspectiveCamera){const te=new f.CameraHelper($);u.set($.name,te),p.add(te)}Ie(Date.now())},me=M=>{const C=u.get(M.value.name);C!==void 0&&(p.remove(C),C.dispose()),r.delete(M.value.name),Ie(Date.now())},oe=M=>{const C=we.getObjectByProperty("uuid",M.value.uuid);C&&C.add(I)};return P.addEventListener(j.SET_SCENE,R),P.addEventListener(j.ADD_CAMERA,F),P.addEventListener(j.REMOVE_CAMERA,me),P.addEventListener(j.SET_OBJECT,oe),()=>{P.removeEventListener(j.SET_SCENE,R),P.removeEventListener(j.ADD_CAMERA,F),P.removeEventListener(j.REMOVE_CAMERA,me),P.removeEventListener(j.SET_OBJECT,oe)}},[]),E.useEffect(()=>{if(T===null)return;let v=window.innerWidth,y=window.innerHeight,R=Math.floor(v/2),F=Math.floor(y/2),me=-1;const oe=()=>{v=window.innerWidth-300,y=window.innerHeight,R=Math.floor(v/2),F=Math.floor(y/2),e.three.resize(v,y),e.onSceneResize!==void 0&&Pt&&e.onSceneResize(we,v,y);let D=v,H=y;switch(z){case"Side by Side":D=R,H=y;break;case"Stacked":D=v,H=F;break;case"Quad":D=R,H=F;break}r.forEach(K=>{K instanceof f.OrthographicCamera?(K.left=D/-2,K.right=D/2,K.top=H/2,K.bottom=H/-2,K.name==="UI"&&(K.position.x=v/2,K.position.y=y/-2,K.position.z=100),K.updateProjectionMatrix()):K instanceof f.PerspectiveCamera&&(K.aspect=D/H,K.updateProjectionMatrix(),u.get(K.name)?.update())})},M=()=>{T.setViewport(0,0,v,y),T.setScissor(0,0,v,y),T.render(p,X)},C=()=>{if(z==="Side by Side")T.setViewport(0,0,R,y),T.setScissor(0,0,R,y),T.render(p,X),T.setViewport(R,0,R,y),T.setScissor(R,0,R,y),T.render(p,re);else{const D=y-F;T.setViewport(0,D,v,F),T.setScissor(0,D,v,F),T.render(p,X),T.setViewport(0,0,v,F),T.setScissor(0,0,v,F),T.render(p,re)}},$=()=>{let D=0,H=0;H=y-F,D=0,T.setViewport(D,H,R,F),T.setScissor(D,H,R,F),T.render(p,X),D=R,T.setViewport(D,H,R,F),T.setScissor(D,H,R,F),T.render(p,re),H=0,D=0,T.setViewport(D,H,R,F),T.setScissor(D,H,R,F),T.render(p,Ue),D=R,T.setViewport(D,H,R,F),T.setScissor(D,H,R,F),T.render(p,Be)},te=()=>{switch(h.forEach(D=>{D.update()}),u.forEach(D=>{D.update()}),m.forEach(D=>{D.update!==void 0&&D.update()}),e.onSceneUpdate!==void 0&&Pt&&e.onSceneUpdate(we),T.clear(),z){case"Single":M();break;case"Side by Side":case"Stacked":C();break;case"Quad":$();break}me=requestAnimationFrame(te)};return Ge(),window.addEventListener("resize",oe),oe(),te(),()=>{window.removeEventListener("resize",oe),cancelAnimationFrame(me),me=-1}},[z,T]),E.useEffect(()=>{if(T!==null){const v=new f.Raycaster,y=new f.Vector2,R=(M,C,$,te)=>{switch(z){case"Quad":M<$?C<te?v.setFromCamera(y,X):v.setFromCamera(y,Ue):C<te?v.setFromCamera(y,re):v.setFromCamera(y,Be);break;case"Side by Side":M<$?v.setFromCamera(y,X):v.setFromCamera(y,re);break;case"Single":v.setFromCamera(y,X);break;case"Stacked":C<te?v.setFromCamera(y,X):v.setFromCamera(y,re);break}},F=M=>{if(!yt)return;const C=new f.Vector2;T.getSize(C);const $=Math.min(M.clientX,C.x),te=Math.min(M.clientY,C.y);y.x=Qe($,0,C.x,-1,1),y.y=Qe(te,0,C.y,1,-1);const D=C.x/2,H=C.y/2,K=()=>{$<D?y.x=Qe($,0,D,-1,1):y.x=Qe($,D,C.x,-1,1)},Ae=()=>{te<H?y.y=Qe(te,0,H,1,-1):y.y=Qe(te,H,C.y,1,-1)};switch(z){case"Quad":K(),Ae();break;case"Side by Side":K();break;case"Stacked":Ae(),Ae();break}R($,te,D,H);const qe=v.intersectObjects(we.children);qe.length>0&&V.position.copy(qe[0].point)},me=M=>{if(!yt)return;const C=new f.Vector2;if(T.getSize(C),M.clientX>=C.x)return;F(M);const $=v.intersectObjects(we.children);$.length>0&&e.three.getObject($[0].object.uuid)},oe=fe.current;return oe.addEventListener("mousemove",F,!1),oe.addEventListener("click",me,!1),()=>{oe.removeEventListener("mousemove",F),oe.removeEventListener("click",me)}}},[z,T]);const ce=[];return r.forEach((v,y)=>{ce.push(y)}),l.jsxs("div",{className:"multiview",children:[l.jsx("canvas",{ref:q}),T!==null&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:`cameras ${z==="Single"||z==="Stacked"?"single":""}`,ref:fe,children:[z==="Single"&&l.jsx(l.Fragment,{children:l.jsx($e,{camera:X,options:ce,ref:se,onSelect:v=>{h.get(X.name)?.dispose();const y=r.get(v);y!==void 0&&(xe(X),X=y,localStorage.setItem(`${n}_tlCam`,y.name),ie(y,se.current))}})}),(z==="Side by Side"||z==="Stacked")&&l.jsxs(l.Fragment,{children:[l.jsx($e,{camera:X,options:ce,ref:se,onSelect:v=>{h.get(X.name)?.dispose();const y=r.get(v);y!==void 0&&(xe(X),X=y,localStorage.setItem(`${n}_tlCam`,y.name),ie(y,se.current))}}),l.jsx($e,{camera:re,options:ce,ref:Me,onSelect:v=>{h.get(re.name)?.dispose();const y=r.get(v);y!==void 0&&(xe(re),re=y,localStorage.setItem(`${n}_trCam`,y.name),ie(y,Me.current))}})]}),z==="Quad"&&l.jsxs(l.Fragment,{children:[l.jsx($e,{camera:X,options:ce,ref:se,onSelect:v=>{h.get(X.name)?.dispose();const y=r.get(v);y!==void 0&&(xe(X),X=y,localStorage.setItem(`${n}_tlCam`,y.name),ie(y,se.current))}}),l.jsx($e,{camera:re,options:ce,ref:Me,onSelect:v=>{h.get(re.name)?.dispose();const y=r.get(v);y!==void 0&&(xe(re),re=y,localStorage.setItem(`${n}_trCam`,y.name),ie(y,Me.current))}}),l.jsx($e,{camera:Ue,options:ce,ref:Oe,onSelect:v=>{h.get(Ue.name)?.dispose();const y=r.get(v);y!==void 0&&(xe(Ue),Ue=y,localStorage.setItem(`${n}_blCam`,y.name),ie(y,Oe.current))}}),l.jsx($e,{camera:Be,options:ce,ref:pe,onSelect:v=>{h.get(Be.name)?.dispose();const y=r.get(v);y!==void 0&&(xe(Be),Be=y,localStorage.setItem(`${n}_brCam`,y.name),ie(y,pe.current))}})]})]}),l.jsxs("div",{className:"settings",children:[l.jsx(xt,{index:he.indexOf(z),options:he,onSelect:v=>{v!==z&&(ze(),ge(v))},open:Re,onToggle:v=>{ke(v),Te&&_e(!1),De&&je(!1)}}),l.jsx(xt,{index:ee.indexOf(bt),options:ee,onSelect:v=>{if(v!==bt)switch(bt=v,bt){case"Depth":p.overrideMaterial=Y;break;case"Normals":p.overrideMaterial=k;break;default:case"Renderer":p.overrideMaterial=null;break;case"Wireframe":p.overrideMaterial=_;break;case"UVs":p.overrideMaterial=L;break}},open:Te,onToggle:v=>{Re&&ke(!1),_e(v),De&&je(!1)}}),l.jsx(xt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:v=>{yt=v==="Selection Mode",V.visible=yt},open:De,onToggle:v=>{Re&&ke(!1),Te&&_e(!1),je(v)}})]})]})]})}function Sa(e){return l.jsxs("div",{className:"editor",ref:e.ref,style:e.style,children:[l.jsx("div",{className:"header",children:e.header}),e.children,l.jsx("div",{className:"footer",children:e.footer})]})}exports.Accordion=Ot;exports.Application=wn;exports.BaseRemote=lt;exports.ChildObject=Vt;exports.ContainerObject=dn;exports.Draggable=cn;exports.DraggableItem=on;exports.Dropdown=ln;exports.DropdownItem=un;exports.Editor=Sa;exports.Inspector=mn;exports.MultiView=Ea;exports.NavButton=Bt;exports.RemoteComponents=Mn;exports.RemoteController=Fn;exports.RemoteTheatre=Mt;exports.RemoteThree=An;exports.RemoteTweakpane=Pn;exports.SceneInspector=da;exports.SidePanel=ua;exports.ToolEvents=j;exports.capitalize=ot;exports.clamp=Ve;exports.colorToHex=an;exports.debugDispatcher=P;exports.defaultTheatreCallback=Sn;exports.dispose=ct;exports.disposeMaterial=rn;exports.disposeTexture=Cn;exports.distance=xn;exports.hierarchyUUID=Ct;exports.isColor=nn;exports.mix=It;exports.noop=wt;exports.normalize=jt;exports.randomID=tn;exports.resetThreeObjects=Lt;exports.round=Nt;exports.theatreEditorApp=On;
144
+ }`;class ba extends f.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:ga,fragmentShader:va})}}let bt="Renderer",we,At=!1,K=null,se=null,ze=null,Ge=null;function ya(e){const n=e.three.app.appID,a=localStorage.getItem(`${n}_mode`),t=localStorage.getItem(`${n}_tlCam`)!==null?localStorage.getItem(`${n}_tlCam`):"Debug",i=localStorage.getItem(`${n}_trCam`)!==null?localStorage.getItem(`${n}_trCam`):"Orthographic",o=localStorage.getItem(`${n}_blCam`)!==null?localStorage.getItem(`${n}_blCam`):"Front",d=localStorage.getItem(`${n}_brCam`)!==null?localStorage.getItem(`${n}_brCam`):"Top",r=E.useMemo(()=>new Map,[]),h=E.useMemo(()=>new Map,[]),u=E.useMemo(()=>new Map,[]),m=E.useMemo(()=>new Map,[]),p=E.useMemo(()=>new f.Scene,[]),v=E.useMemo(()=>new f.Group,[]),w=E.useMemo(()=>new pa,[]),I=E.useMemo(()=>new f.AxesHelper(500),[]),F=E.useMemo(()=>new f.AxesHelper(100),[]),Y=E.useMemo(()=>new f.MeshDepthMaterial,[]),k=E.useMemo(()=>new f.MeshNormalMaterial,[]),U=E.useMemo(()=>new ba,[]),_=E.useMemo(()=>new f.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),[]);function X(b,y){const O=new f.OrthographicCamera(-100,100,100,-100,50,5e3);return O.name=b,O.position.copy(y),O.lookAt(0,0,0),r.set(b,O),O}const te=["Renderer","Depth","Normals","UVs","Wireframe"],fe=["Single","Side by Side","Stacked","Quad"],q=E.useRef(null),me=E.useRef(null),oe=E.useRef(null),Me=E.useRef(null),Oe=E.useRef(null),ge=E.useRef(null),[z,ve]=E.useState(a!==null?a:"Single"),[T,xe]=E.useState(null),[Re,De]=E.useState(!1),[Te,_e]=E.useState(!1),[ke,$e]=E.useState("Orbit"),[Ae,We]=E.useState(!1),[nt,Pe]=E.useState(Date.now());localStorage.setItem(`${n}_mode`,z),localStorage.setItem(`${n}_tlCam`,t),localStorage.setItem(`${n}_trCam`,i),localStorage.setItem(`${n}_blCam`,o),localStorage.setItem(`${n}_brCam`,d);const ne=(b,y)=>{const O=h.get(b.name);if(O!==void 0&&O.dispose(),h.delete(b.name),b.name==="UI")return;const N=new fa(b,y);switch(N.enableDamping=!0,N.dampingFactor=.05,b.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":N.enableRotate=!1;break}h.set(b.name,N)},de=b=>{const y=u.get(b.name);y!==void 0&&(p.remove(y),y.dispose(),u.delete(b.name));const O=h.get(b.name);O!==void 0&&(O.dispose(),h.delete(b.name))},Ne=()=>{h.forEach((b,y)=>{b.dispose();const O=u.get(y);O!==void 0&&(p.remove(O),O.dispose()),u.delete(y),h.delete(y)}),h.clear(),u.clear()},je=()=>{switch(z){case"Single":ne(K,oe.current);break;case"Side by Side":case"Stacked":ne(K,oe.current),ne(se,Me.current);break;case"Quad":ne(K,oe.current),ne(se,Me.current),ne(ze,Oe.current),ne(Ge,ge.current);break}};E.useEffect(()=>{const b=new f.WebGLRenderer({canvas:q.current,stencil:!1});b.autoClear=!1,b.shadowMap.enabled=!0,b.setPixelRatio(devicePixelRatio),b.setClearColor(0),e.three.renderer=b,xe(b)},[]),E.useEffect(()=>{p.name="Debug Scene",p.uuid="",v.name="helpers",p.add(v),v.add(w),I.name="axisHelper",v.add(I),F.name="interactionHelper",v.add(F),F.visible=!1,X("Top",new f.Vector3(0,1e3,0)),X("Bottom",new f.Vector3(0,-1e3,0)),X("Left",new f.Vector3(-1e3,0,0)),X("Right",new f.Vector3(1e3,0,0)),X("Front",new f.Vector3(0,0,1e3)),X("Back",new f.Vector3(0,0,-1e3)),X("Orthographic",new f.Vector3(1e3,1e3,1e3)),X("UI",new f.Vector3);const b=new f.PerspectiveCamera(60,1,50,5e3);b.name="Debug",b.position.set(500,500,500),b.lookAt(0,0,0),r.set("Debug",b),K=r.get(localStorage.getItem(`${n}_tlCam`)),se=r.get(localStorage.getItem(`${n}_trCam`)),ze=r.get(localStorage.getItem(`${n}_blCam`)),Ge=r.get(localStorage.getItem(`${n}_brCam`))},[]),E.useEffect(()=>{const b=()=>{m.forEach(R=>{v.remove(R),R.dispose()}),m.clear()},y=()=>{we.traverse(R=>{if(R.type.search("Light")>-1){let C;switch(R.type){case"DirectionalLight":C=new f.DirectionalLightHelper(R,100),C.name=`${R.name}Helper`,m.set(R.name,C),v.add(C);break;case"HemisphereLight":C=new f.HemisphereLightHelper(R,250),C.name=`${R.name}Helper`,m.set(R.name,C),v.add(C);break;case"RectAreaLight":C=new da(R),C.name=`${R.name}Helper`,m.set(R.name,C),v.add(C);break;case"PointLight":C=new f.PointLightHelper(R,100),C.name=`${R.name}Helper`,m.set(R.name,C),v.add(C);break;case"SpotLight":C=new f.SpotLightHelper(R),C.name=`${R.name}Helper`,m.set(R.name,C),v.add(C);break}}})},O=R=>{v.add(I),b(),ut(we),p.remove(we);const C=e.scenes.get(R.value.name);if(C!==void 0){const H=new C;e.onSceneSet!==void 0&&e.onSceneSet(H),we=H,e.three.scene=we,p.add(we),At=!0,y()}},N=R=>{const C=R.value,H=e.three.scene?.getObjectByProperty("uuid",C.uuid);if(H!==void 0&&r.set(C.name,H),H instanceof f.PerspectiveCamera){const Z=new f.CameraHelper(H);u.set(H.name,Z),p.add(Z)}Pe(Date.now())},re=R=>{const C=u.get(R.value.name);C!==void 0&&(p.remove(C),C.dispose()),r.delete(R.value.name),Pe(Date.now())},ce=R=>{const C=we.getObjectByProperty("uuid",R.value.uuid);C&&C.add(I)};return P.addEventListener(j.SET_SCENE,O),P.addEventListener(j.ADD_CAMERA,N),P.addEventListener(j.REMOVE_CAMERA,re),P.addEventListener(j.SET_OBJECT,ce),()=>{P.removeEventListener(j.SET_SCENE,O),P.removeEventListener(j.ADD_CAMERA,N),P.removeEventListener(j.REMOVE_CAMERA,re),P.removeEventListener(j.SET_OBJECT,ce)}},[]),E.useEffect(()=>{if(T===null)return;let b=window.innerWidth,y=window.innerHeight,O=Math.floor(b/2),N=Math.floor(y/2),re=-1;const ce=()=>{b=window.innerWidth-300,y=window.innerHeight,O=Math.floor(b/2),N=Math.floor(y/2),e.three.resize(b,y),e.onSceneResize!==void 0&&At&&e.onSceneResize(we,b,y);let D=b,W=y;switch(z){case"Side by Side":D=O,W=y;break;case"Stacked":D=b,W=N;break;case"Quad":D=O,W=N;break}r.forEach(J=>{J instanceof f.OrthographicCamera?(J.left=D/-2,J.right=D/2,J.top=W/2,J.bottom=W/-2,J.name==="UI"&&(J.position.x=b/2,J.position.y=y/-2,J.position.z=100),J.updateProjectionMatrix()):J instanceof f.PerspectiveCamera&&(J.aspect=D/W,J.updateProjectionMatrix(),u.get(J.name)?.update())})},R=()=>{T.setViewport(0,0,b,y),T.setScissor(0,0,b,y),T.render(p,K)},C=()=>{if(z==="Side by Side")T.setViewport(0,0,O,y),T.setScissor(0,0,O,y),T.render(p,K),T.setViewport(O,0,O,y),T.setScissor(O,0,O,y),T.render(p,se);else{const D=y-N;T.setViewport(0,D,b,N),T.setScissor(0,D,b,N),T.render(p,K),T.setViewport(0,0,b,N),T.setScissor(0,0,b,N),T.render(p,se)}},H=()=>{let D=0,W=0;W=y-N,D=0,T.setViewport(D,W,O,N),T.setScissor(D,W,O,N),T.render(p,K),D=O,T.setViewport(D,W,O,N),T.setScissor(D,W,O,N),T.render(p,se),W=0,D=0,T.setViewport(D,W,O,N),T.setScissor(D,W,O,N),T.render(p,ze),D=O,T.setViewport(D,W,O,N),T.setScissor(D,W,O,N),T.render(p,Ge)},Z=()=>{switch(h.forEach(D=>{D.update()}),u.forEach(D=>{D.update()}),m.forEach(D=>{D.update!==void 0&&D.update()}),e.onSceneUpdate!==void 0&&At&&e.onSceneUpdate(we),T.clear(),z){case"Single":R();break;case"Side by Side":case"Stacked":C();break;case"Quad":H();break}re=requestAnimationFrame(Z)};return je(),window.addEventListener("resize",ce),ce(),Z(),()=>{window.removeEventListener("resize",ce),cancelAnimationFrame(re),re=-1}},[z,T]),E.useEffect(()=>{if(T!==null){const b=new f.Raycaster,y=new f.Vector2,O=(R,C,H,Z)=>{switch(z){case"Quad":R<H?C<Z?b.setFromCamera(y,K):b.setFromCamera(y,ze):C<Z?b.setFromCamera(y,se):b.setFromCamera(y,Ge);break;case"Side by Side":R<H?b.setFromCamera(y,K):b.setFromCamera(y,se);break;case"Single":b.setFromCamera(y,K);break;case"Stacked":C<Z?b.setFromCamera(y,K):b.setFromCamera(y,se);break}},N=R=>{if(ke==="Orbit")return;const C=new f.Vector2;T.getSize(C);const H=Math.min(R.clientX,C.x),Z=Math.min(R.clientY,C.y);y.x=tt(H,0,C.x,-1,1),y.y=tt(Z,0,C.y,1,-1);const D=C.x/2,W=C.y/2,J=()=>{H<D?y.x=tt(H,0,D,-1,1):y.x=tt(H,D,C.x,-1,1)},Le=()=>{Z<W?y.y=tt(Z,0,W,1,-1):y.y=tt(Z,W,C.y,1,-1)};switch(z){case"Quad":J(),Le();break;case"Side by Side":J();break;case"Stacked":Le(),Le();break}O(H,Z,D,W);const Fe=b.intersectObjects(we.children);Fe.length>0&&F.position.copy(Fe[0].point)},re=R=>{if(ke==="Orbit")return;const C=new f.Vector2;if(T.getSize(C),R.clientX>=C.x)return;N(R);const H=b.intersectObjects(we.children);H.length>0&&(e.three.getObject(H[0].object.uuid),F.visible=!1,$e("Orbit"),Pe(Date.now()))},ce=me.current;return ce.addEventListener("mousemove",N,!1),ce.addEventListener("click",re,!1),()=>{ce.removeEventListener("mousemove",N),ce.removeEventListener("click",re)}}},[z,T,ke]);const pe=[];return r.forEach((b,y)=>{pe.push(y)}),l.jsxs("div",{className:"multiview",children:[l.jsx("canvas",{ref:q}),T!==null&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:`cameras ${z==="Single"||z==="Stacked"?"single":""}`,ref:me,children:[z==="Single"&&l.jsx(l.Fragment,{children:l.jsx(qe,{camera:K,options:pe,ref:oe,onSelect:b=>{h.get(K.name)?.dispose();const y=r.get(b);y!==void 0&&(de(K),K=y,localStorage.setItem(`${n}_tlCam`,y.name),ne(y,oe.current))}})}),(z==="Side by Side"||z==="Stacked")&&l.jsxs(l.Fragment,{children:[l.jsx(qe,{camera:K,options:pe,ref:oe,onSelect:b=>{h.get(K.name)?.dispose();const y=r.get(b);y!==void 0&&(de(K),K=y,localStorage.setItem(`${n}_tlCam`,y.name),ne(y,oe.current))}}),l.jsx(qe,{camera:se,options:pe,ref:Me,onSelect:b=>{h.get(se.name)?.dispose();const y=r.get(b);y!==void 0&&(de(se),se=y,localStorage.setItem(`${n}_trCam`,y.name),ne(y,Me.current))}})]}),z==="Quad"&&l.jsxs(l.Fragment,{children:[l.jsx(qe,{camera:K,options:pe,ref:oe,onSelect:b=>{h.get(K.name)?.dispose();const y=r.get(b);y!==void 0&&(de(K),K=y,localStorage.setItem(`${n}_tlCam`,y.name),ne(y,oe.current))}}),l.jsx(qe,{camera:se,options:pe,ref:Me,onSelect:b=>{h.get(se.name)?.dispose();const y=r.get(b);y!==void 0&&(de(se),se=y,localStorage.setItem(`${n}_trCam`,y.name),ne(y,Me.current))}}),l.jsx(qe,{camera:ze,options:pe,ref:Oe,onSelect:b=>{h.get(ze.name)?.dispose();const y=r.get(b);y!==void 0&&(de(ze),ze=y,localStorage.setItem(`${n}_blCam`,y.name),ne(y,Oe.current))}}),l.jsx(qe,{camera:Ge,options:pe,ref:ge,onSelect:b=>{h.get(Ge.name)?.dispose();const y=r.get(b);y!==void 0&&(de(Ge),Ge=y,localStorage.setItem(`${n}_brCam`,y.name),ne(y,ge.current))}})]})]}),l.jsxs("div",{className:"settings",children:[l.jsx(St,{index:fe.indexOf(z),options:fe,onSelect:b=>{b!==z&&(Ne(),ve(b))},open:Re,onToggle:b=>{De(b),Te&&_e(!1),Ae&&We(!1)}}),l.jsx(St,{index:te.indexOf(bt),options:te,onSelect:b=>{if(b!==bt)switch(bt=b,bt){case"Depth":p.overrideMaterial=Y;break;case"Normals":p.overrideMaterial=k;break;default:case"Renderer":p.overrideMaterial=null;break;case"Wireframe":p.overrideMaterial=_;break;case"UVs":p.overrideMaterial=U;break}},open:Te,onToggle:b=>{Re&&De(!1),_e(b),Ae&&We(!1)}}),l.jsx(St,{index:ke==="Orbit"?0:1,options:["Orbit Mode","Selection Mode"],onSelect:b=>{F.visible=b==="Selection Mode",$e(F.visible?"Selection":"Orbit")},open:Ae,onToggle:b=>{Re&&De(!1),Te&&_e(!1),We(b)}})]},nt)]})]})}function Ea(e){return l.jsxs("div",{className:"editor",ref:e.ref,style:e.style,children:[l.jsx("div",{className:"header",children:e.header}),e.children,l.jsx("div",{className:"footer",children:e.footer})]})}exports.Accordion=Mt;exports.Application=Cn;exports.BaseRemote=dt;exports.ChildObject=Bt;exports.ContainerObject=un;exports.Draggable=on;exports.DraggableItem=sn;exports.Dropdown=cn;exports.DropdownItem=ln;exports.Editor=Ea;exports.Inspector=fn;exports.MultiView=ya;exports.NavButton=Ut;exports.RemoteComponents=wn;exports.RemoteController=Ln;exports.RemoteTheatre=wt;exports.RemoteThree=Dn;exports.RemoteTweakpane=An;exports.SceneInspector=ua;exports.SidePanel=la;exports.ToolEvents=j;exports.capitalize=lt;exports.clamp=He;exports.colorToHex=nn;exports.debugDispatcher=P;exports.defaultTheatreCallback=En;exports.dispose=ut;exports.disposeMaterial=an;exports.disposeTexture=xn;exports.distance=Sn;exports.hierarchyUUID=xt;exports.isColor=tn;exports.mix=jt;exports.noop=Ct;exports.normalize=Pt;exports.randomID=en;exports.resetThreeObjects=Nt;exports.round=It;exports.theatreEditorApp=Mn;