@tomorrowevening/hermes 0.0.63 → 0.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hermes.cjs.js +13 -13
- package/dist/hermes.es.js +784 -773
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/types/core/remote/RemoteTheatre.d.ts +5 -4
package/dist/hermes.cjs.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("three"),vn=require("tweakpane"),bn=require("@tweakpane/plugin-essentials"),x=require("react"),Jt=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 xn=yn(bn),Et=()=>{},En=()=>{};function ct(e){return e.substring(0,1).toUpperCase()+e.substring(1)}function Ve(e,n,a){return Math.min(n,Math.max(e,a))}function kt(e,n,a){return(a-e)/(n-e)}function Dt(e,n,a){return e*(1-a)+n*a}function Sn(e,n){const a=e-n;return Math.sqrt(a*a)}function Qt(){return Math.round(Math.random()*1e6).toString()}function en(e){return e.r!==void 0&&e.g!==void 0&&e.b!==void 0}function tn(e){const n=Math.round(e.r*255),a=Math.round(e.g*255),t=Math.round(e.b*255),i=h=>{const f=h.toString(16);return f.length===1?"0"+f:f},c=i(n),u=i(a),o=i(t);return"#"+c+u+o}function At(e,n=1){return Number(e.toFixed(n))}exports.totalThreeObjects=0;const nn=()=>{exports.totalThreeObjects=0},Lt=e=>{if(!e)return;let n=e.name.replace(" ","");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.children.forEach(a=>{Lt(a)})},Cn=e=>{e?.dispose()},an=e=>{e&&(Array.isArray(e)?e.forEach(n=>n.dispose()):e.dispose())},St=e=>{if(e){for(;e.children.length>0;){const n=e.children[0];n.type==="Audio"?(n.pause(),n.parent&&n.parent.remove(n)):St(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 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 k=new d.EventDispatcher,D={CUSTOM:"ToolEvents::custom",SELECT_DROPDOWN:"ToolEvents::selectDropdown",DRAG_UPDATE:"ToolEvents::dragUpdate",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":k.dispatchEvent({type:D.SELECT_DROPDOWN,value:t.data});break;case"draggableListUpdate":k.dispatchEvent({type:D.DRAG_UPDATE,value:t.data});break}}}class Ct 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}sheet(n,a){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}let t=this.sheets.get(n);return t!==void 0||(t=this.project?.sheet(n,a),this.sheets.set(n,t)),t}playSheet(n,a){this.sheet(n)?.sequence.play(a),this.app.send({event:"playSheet",target:"editor",data:{sheet:n,value:a}})}pauseSheet(n){this.sheet(n)?.sequence.pause(),this.app.send({event:"pauseSheet",target:"editor",data:{sheet:n}})}clearSheetObjects(n){this.sheetObjects.forEach((a,t)=>{t.search(`${n}_`)>-1&&this.unsubscribe(a)})}sheetObject(n,a,t,i){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const c=this.sheet(n);if(c===void 0)return;const u=`${n}_${a}`;let o=this.sheetObjects.get(u);o!==void 0?o=c.object(a,{...t,...o.value},{reconfigure:!0}):o=c.object(a,t),this.sheetObjects.set(u,o),this.sheetObjectCBs.set(u,i!==void 0?i:Et);const h=o.onValuesChange(f=>{if(this.app.editor){for(const p in f){const S=f[p];typeof S=="object"&&en(S)&&(f[p]={r:S.r,g:S.g,b:S.b,a:S.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheet:n,sheetObject:u,values:f}})}const m=this.sheetObjectCBs.get(u);m!==void 0&&m(f)});return this.sheetObjectUnsubscribe.set(u,h),o}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 c=`${a}_${t}`,u=this.sheetObjectUnsubscribe.get(c);u!==void 0&&(this.sheetObjects.delete(c),this.sheetObjectCBs.delete(c),this.sheetObjectUnsubscribe.delete(c),u())}handleApp(n,a,t){const i=a;let c;switch(t.event){case"setSheet":c=i.sheets.get(t.data.sheet),c!==void 0&&(i.activeSheet=c,this.studio?.setSelection([c]));break;case"setSheetObject":c=i.sheetObjects.get(`${t.data.sheet}_${t.data.key}`),c!==void 0&&this.studio?.setSelection([c]);break;case"updateSheetObject":c=i.sheets.get(t.data.sheet),c!==void 0&&c.sequence.pause(),c=i.sheetObjectCBs.get(t.data.sheetObject),c!==void 0&&c(t.data.values);break;case"updateTimeline":c=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)?.sequence.play(t.data.value);break;case"pauseSheet":i.sheet(t.data.sheet)?.sequence.pause();break}}}handleEditorApp(n,a){if(n.editor){this.studio?.ui.restore(),this.studio?.onSelectionChange(u=>{u.length<1||u.forEach(o=>{let h=o.address.sheetId,f="setSheet",m={};switch(o.type){case"Theatre_Sheet_PublicAPI":f="setSheet",m={sheet:o.address.sheetId},a.activeSheet=a.sheets.get(o.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":f="setSheetObject",h+=`_${o.address.objectKey}`,m={id:h,sheet:o.address.sheetId,key:o.address.objectKey},a.activeSheet=a.sheets.get(o.address.sheetId);break}n.send({event:f,target:"app",data:m})})});let t=-1;const i=()=>{if(Ct.rafDriver?.tick(performance.now()),a.activeSheet!==void 0&&t!==a.activeSheet.sequence.position){t=a.activeSheet.sequence.position;const u=a.activeSheet;n.send({event:"updateTimeline",target:"app",data:{position:t,sheet:u.address.sheetId}})}},c=()=>{i(),requestAnimationFrame(c)};i(),c()}else this.studio?.ui.hide()}}function On(e,n,a){if(e.editor){a.ui.restore(),a.onSelectionChange(u=>{u.length<1||u.forEach(o=>{let h=o.address.sheetId,f="setSheet",m={};switch(o.type){case"Theatre_Sheet_PublicAPI":f="setSheet",m={sheet:o.address.sheetId},n.activeSheet=n.sheets.get(o.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":f="setSheetObject",h+=`_${o.address.objectKey}`,m={id:h,sheet:o.address.sheetId,key:o.address.objectKey},n.activeSheet=n.sheets.get(o.address.sheetId);break}e.send({event:f,target:"app",data:m})})});let t=-1;const i=()=>{if(Ct.rafDriver?.tick(performance.now()),n.activeSheet!==void 0&&t!==n.activeSheet.sequence.position){t=n.activeSheet.sequence.position;const u=n.activeSheet;e.send({event:"updateTimeline",target:"app",data:{position:t,sheet:u.address.sheetId}})}},c=()=>{i(),requestAnimationFrame(c)};i(),c()}else a.ui.hide()}function Tn(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 rn(e){const n={name:e.name,type:e.type,uuid:e.uuid,children:[]};return e.children.forEach(a=>{n.children.push(rn(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:""}:t.isTexture&&(n[a].value={src:t.image.src})}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 d.Texture){const c=i.source.toJSON();n[a]={src:c.url}}else i instanceof d.CubeTexture&&(console.log("env map"),console.log(i.source.data),console.log(i.source.toJSON()),n[a]={src:""});else a==="uniforms"&&(n[a]=Rn(n[a]));else n[a]={src:""};break}}return n}function _t(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};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(c=>{i.push(Je(c))}),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(c=>{i.push(Je(c))}),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(c=>{i.push(Je(c))}),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 Pn(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 jn(e,n){for(const a in n)e[a]=n[a]}function q(e,n,a){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 u;switch(i){case 1:u=e[t[0]];break;case 2:u=e[t[0]][t[1]];break;case 3:u=e[t[0]][t[1]][t[2]];break;case 4:u=e[t[0]][t[1]][t[2]][t[3]];break;case 5:u=e[t[0]][t[1]][t[2]][t[3]][t[4]];break}u!==void 0&&jn(u,a)}}function sn(e){return new Promise((n,a)=>{const t=new Image;t.onload=()=>{const i=new d.Texture(t);i.wrapS=d.RepeatWrapping,i.wrapT=d.RepeatWrapping,i.needsUpdate=!0,n(i)},t.onerror=a,t.src=e})}class kn extends lt{scene=void 0;renderer=void 0;renderTargets=new Map;dispose(){this.renderTargets.forEach(n=>{n.dispose()}),this.renderTargets.clear(),this.scene&&St(this.scene),this.renderer?.dispose()}getObject(n){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:n})}setObject(n){const a=_t(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}})}setScene(n){if(n===void 0||(this.scene=n,!this.app.debugEnabled))return;nn(),Lt(this.scene);const a=rn(this.scene);this.app.send({event:"setScene",target:"editor",data:a})}addCamera(n){if(!this.app.debugEnabled)return;const a=_t(n);this.app.send({event:"addCamera",target:"editor",data:a})}removeCamera(n){if(!this.app.debugEnabled)return;const a=_t(n);this.app.send({event:"removeCamera",target:"editor",data:a})}handleApp(n,a,t){switch(t.event){case"getObject":k.dispatchEvent({type:D.GET_OBJECT,value:t.data});break;case"updateObject":k.dispatchEvent({type:D.UPDATE_OBJECT,value:t.data});break;case"createTexture":k.dispatchEvent({type:D.CREATE_TEXTURE,value:t.data});break;case"requestMethod":k.dispatchEvent({type:D.REQUEST_METHOD,value:t.data});break}}handleEditor(n,a,t){switch(t.event){case"setObject":k.dispatchEvent({type:D.SET_OBJECT,value:t.data});break;case"setScene":k.dispatchEvent({type:D.SET_SCENE,value:t.data});break;case"addCamera":k.dispatchEvent({type:D.ADD_CAMERA,value:t.data});break;case"removeCamera":k.dispatchEvent({type:D.REMOVE_CAMERA,value:t.data});break}}rendererWidth=300;rendererHeight=150;addRT(n,a){const t=new d.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 Dn 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(xn)}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 c=this.bindID,u=t.onChange!==void 0?t.onChange:Et;this.bindCBs.set(c,u),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:c,value:h.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:c,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 It={exports:{}},at={};/**
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("three"),vn=require("tweakpane"),bn=require("@tweakpane/plugin-essentials"),y=require("react"),Jt=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 xn=yn(bn),Et=()=>{},En=()=>{};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 Dt(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 Qt(){return Math.round(Math.random()*1e6).toString()}function en(e){return e.r!==void 0&&e.g!==void 0&&e.b!==void 0}function tn(e){const n=Math.round(e.r*255),a=Math.round(e.g*255),t=Math.round(e.b*255),i=h=>{const f=h.toString(16);return f.length===1?"0"+f:f},o=i(n),u=i(a),c=i(t);return"#"+o+u+c}function At(e,n=1){return Number(e.toFixed(n))}exports.totalThreeObjects=0;const nn=()=>{exports.totalThreeObjects=0},Lt=e=>{if(!e)return;let n=e.name.replace(" ","");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.children.forEach(a=>{Lt(a)})},Cn=e=>{e?.dispose()},an=e=>{e&&(Array.isArray(e)?e.forEach(n=>n.dispose()):e.dispose())},St=e=>{if(e){for(;e.children.length>0;){const n=e.children[0];n.type==="Audio"?(n.pause(),n.parent&&n.parent.remove(n)):St(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 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 D=new d.EventDispatcher,j={CUSTOM:"ToolEvents::custom",SELECT_DROPDOWN:"ToolEvents::selectDropdown",DRAG_UPDATE:"ToolEvents::dragUpdate",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 ct{app;constructor(n){this.app=n}dispose(){}handleApp(n,a,t){}handleEditor(n,a,t){}}class Mn extends ct{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":D.dispatchEvent({type:j.SELECT_DROPDOWN,value:t.data});break;case"draggableListUpdate":D.dispatchEvent({type:j.DRAG_UPDATE,value:t.data});break}}}class Ct extends ct{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 u=this.sheet(n,o);if(u===void 0)return;const h=`${this.getSheetInstance(n,o)}_${a}`;let f=this.sheetObjects.get(h);f!==void 0?f=u.object(a,{...t,...f.value},{reconfigure:!0}):f=u.object(a,t),this.sheetObjects.set(h,f),this.sheetObjectCBs.set(h,i!==void 0?i:Et);const m=f.onValuesChange(p=>{if(this.app.editor){for(const T in p){const B=p[T];typeof B=="object"&&en(B)&&(p[T]={r:B.r,g:B.g,b:B.b,a:B.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheet:n,sheetObject:h,values:p}})}const S=this.sheetObjectCBs.get(h);S!==void 0&&S(p)});return this.sheetObjectUnsubscribe.set(h,m),f}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}`,u=this.sheetObjectUnsubscribe.get(o);u!==void 0&&(this.sheetObjects.delete(o),this.sheetObjectCBs.delete(o),this.sheetObjectUnsubscribe.delete(o),u())}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(u=>{u.length<1||u.forEach(c=>{let h=c.address.sheetId,f="setSheet",m={};switch(c.type){case"Theatre_Sheet_PublicAPI":f="setSheet",m={sheet:c.address.sheetId},a.activeSheet=a.sheets.get(c.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":f="setSheetObject",h+=`_${c.address.objectKey}`,m={id:h,sheet:c.address.sheetId,key:c.address.objectKey},a.activeSheet=a.sheets.get(c.address.sheetId);break}n.send({event:f,target:"app",data:m})})});let t=-1;const i=()=>{if(Ct.rafDriver?.tick(performance.now()),a.activeSheet!==void 0&&t!==a.activeSheet.sequence.position){t=a.activeSheet.sequence.position;const u=a.activeSheet;n.send({event:"updateTimeline",target:"app",data:{position:t,sheet:u.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(u=>{u.length<1||u.forEach(c=>{let h=c.address.sheetId,f="setSheet",m={};switch(c.type){case"Theatre_Sheet_PublicAPI":f="setSheet",m={sheet:c.address.sheetId},n.activeSheet=n.sheets.get(c.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":f="setSheetObject",h+=`_${c.address.objectKey}`,m={id:h,sheet:c.address.sheetId,key:c.address.objectKey},n.activeSheet=n.sheets.get(c.address.sheetId);break}e.send({event:f,target:"app",data:m})})});let t=-1;const i=()=>{if(Ct.rafDriver?.tick(performance.now()),n.activeSheet!==void 0&&t!==n.activeSheet.sequence.position){t=n.activeSheet.sequence.position;const u=n.activeSheet;e.send({event:"updateTimeline",target:"app",data:{position:t,sheet:u.address.sheetId}})}},o=()=>{i(),requestAnimationFrame(o)};i(),o()}else a.ui.hide()}function Tn(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 rn(e){const n={name:e.name,type:e.type,uuid:e.uuid,children:[]};return e.children.forEach(a=>{n.children.push(rn(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:""}:t.isTexture&&(n[a].value={src:t.image.src})}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 d.Texture){const o=i.source.toJSON();n[a]={src:o.url}}else i instanceof d.CubeTexture&&(console.log("env map"),console.log(i.source.data),console.log(i.source.toJSON()),n[a]={src:""});else a==="uniforms"&&(n[a]=Rn(n[a]));else n[a]={src:""};break}}return n}function _t(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};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 Pn(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 q(e,n,a){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 u;switch(i){case 1:u=e[t[0]];break;case 2:u=e[t[0]][t[1]];break;case 3:u=e[t[0]][t[1]][t[2]];break;case 4:u=e[t[0]][t[1]][t[2]][t[3]];break;case 5:u=e[t[0]][t[1]][t[2]][t[3]][t[4]];break}u!==void 0&&kn(u,a)}}function sn(e){return new Promise((n,a)=>{const t=new Image;t.onload=()=>{const i=new d.Texture(t);i.wrapS=d.RepeatWrapping,i.wrapT=d.RepeatWrapping,i.needsUpdate=!0,n(i)},t.onerror=a,t.src=e})}class Dn extends ct{scene=void 0;renderer=void 0;renderTargets=new Map;dispose(){this.renderTargets.forEach(n=>{n.dispose()}),this.renderTargets.clear(),this.scene&&St(this.scene),this.renderer?.dispose()}getObject(n){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:n})}setObject(n){const a=_t(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}})}setScene(n){if(n===void 0||(this.scene=n,!this.app.debugEnabled))return;nn(),Lt(this.scene);const a=rn(this.scene);this.app.send({event:"setScene",target:"editor",data:a})}addCamera(n){if(!this.app.debugEnabled)return;const a=_t(n);this.app.send({event:"addCamera",target:"editor",data:a})}removeCamera(n){if(!this.app.debugEnabled)return;const a=_t(n);this.app.send({event:"removeCamera",target:"editor",data:a})}handleApp(n,a,t){switch(t.event){case"getObject":D.dispatchEvent({type:j.GET_OBJECT,value:t.data});break;case"updateObject":D.dispatchEvent({type:j.UPDATE_OBJECT,value:t.data});break;case"createTexture":D.dispatchEvent({type:j.CREATE_TEXTURE,value:t.data});break;case"requestMethod":D.dispatchEvent({type:j.REQUEST_METHOD,value:t.data});break}}handleEditor(n,a,t){switch(t.event){case"setObject":D.dispatchEvent({type:j.SET_OBJECT,value:t.data});break;case"setScene":D.dispatchEvent({type:j.SET_SCENE,value:t.data});break;case"addCamera":D.dispatchEvent({type:j.ADD_CAMERA,value:t.data});break;case"removeCamera":D.dispatchEvent({type:j.REMOVE_CAMERA,value:t.data});break}}rendererWidth=300;rendererHeight=150;addRT(n,a){const t=new d.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 jn extends ct{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(xn)}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,u=t.onChange!==void 0?t.onChange:Et;this.bindCBs.set(o,u),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 It={exports:{}},at={};/**
|
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 Gt;function An(){if(Gt)return at;Gt=1;var e=
|
9
|
+
*/var Gt;function An(){if(Gt)return at;Gt=1;var e=y,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 u(c,h,f){var m,p={},S=null,T=null;f!==void 0&&(S=""+f),h.key!==void 0&&(S=""+h.key),h.ref!==void 0&&(T=h.ref);for(m in h)t.call(h,m)&&!o.hasOwnProperty(m)&&(p[m]=h[m]);if(c&&c.defaultProps)for(m in h=c.defaultProps,h)p[m]===void 0&&(p[m]=h[m]);return{$$typeof:n,type:c,key:S,ref:T,props:p,_owner:i.current}}return at.Fragment=a,at.jsx=u,at.jsxs=u,at}var it={};/**
|
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 Ht;function In(){return Ht||(Ht=1,process.env.NODE_ENV!=="production"&&function(){var e=
|
18
|
-
`+Ge+r}}var v=!1,b;{var O=typeof WeakMap=="function"?WeakMap:Map;b=new O}function A(r,g){if(!r||v)return"";{var
|
19
|
-
`),
|
20
|
-
`),Z=
|
21
|
-
`+
|
17
|
+
*/var Ht;function In(){return Ht||(Ht=1,process.env.NODE_ENV!=="production"&&function(){var e=y,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"),u=Symbol.for("react.provider"),c=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),m=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),T=Symbol.for("react.offscreen"),B=Symbol.iterator,ee="@@iterator";function de(r){if(r===null||typeof r!="object")return null;var g=B&&r[B]||r[ee];return typeof g=="function"?g:null}var ae=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function H(r){{for(var g=arguments.length,x=new Array(g>1?g-1:0),M=1;M<g;M++)x[M-1]=arguments[M];L("error",r,x)}}function L(r,g,x){{var M=ae.ReactDebugCurrentFrame,U=M.getStackAddendum();U!==""&&(g+="%s",x=x.concat([U]));var G=x.map(function(I){return String(I)});G.unshift("Warning: "+g),Function.prototype.apply.call(console[r],console,G)}}var K=!1,te=!1,xe=!1,W=!1,he=!1,re;re=Symbol.for("react.module.reference");function Me(r){return!!(typeof r=="string"||typeof r=="function"||r===t||r===o||he||r===i||r===f||r===m||W||r===T||K||te||xe||typeof r=="object"&&r!==null&&(r.$$typeof===S||r.$$typeof===p||r.$$typeof===u||r.$$typeof===c||r.$$typeof===h||r.$$typeof===re||r.getModuleId!==void 0))}function Oe(r,g,x){var M=r.displayName;if(M)return M;var U=g.displayName||g.name||"";return U!==""?x+"("+U+")":x}function me(r){return r.displayName||"Context"}function F(r){if(r==null)return null;if(typeof r.tag=="number"&&H("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r;switch(r){case t:return"Fragment";case a:return"Portal";case o:return"Profiler";case i:return"StrictMode";case f:return"Suspense";case m:return"SuspenseList"}if(typeof r=="object")switch(r.$$typeof){case c:var g=r;return me(g)+".Consumer";case u:var x=r;return me(x._context)+".Provider";case h:return Oe(r,r.render,"ForwardRef");case p:var M=r.displayName||null;return M!==null?M:F(r.type)||"Memo";case S:{var U=r,G=U._payload,I=U._init;try{return F(I(G))}catch{return null}}}return null}var pe=Object.assign,R=0,Ee,Te,Pe,Re,_e,ke,Ae;function Ie(){}Ie.__reactDisabledLog=!0;function ne(){{if(R===0){Ee=console.log,Te=console.info,Pe=console.warn,Re=console.error,_e=console.group,ke=console.groupCollapsed,Ae=console.groupEnd;var r={configurable:!0,enumerable:!0,value:Ie,writable:!0};Object.defineProperties(console,{info:r,log:r,warn:r,error:r,group:r,groupCollapsed:r,groupEnd:r})}R++}}function Se(){{if(R--,R===0){var r={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:pe({},r,{value:Ee}),info:pe({},r,{value:Te}),warn:pe({},r,{value:Pe}),error:pe({},r,{value:Re}),group:pe({},r,{value:_e}),groupCollapsed:pe({},r,{value:ke}),groupEnd:pe({},r,{value:Ae})})}R<0&&H("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ze=ae.ReactCurrentDispatcher,Ge;function oe(r,g,x){{if(Ge===void 0)try{throw Error()}catch(U){var M=U.stack.trim().match(/\n( *(at )?)/);Ge=M&&M[1]||""}return`
|
18
|
+
`+Ge+r}}var v=!1,b;{var O=typeof WeakMap=="function"?WeakMap:Map;b=new O}function A(r,g){if(!r||v)return"";{var x=b.get(r);if(x!==void 0)return x}var M;v=!0;var U=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var G;G=ze.current,ze.current=null,ne();try{if(g){var I=function(){throw Error()};if(Object.defineProperty(I.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(I,[])}catch(je){M=je}Reflect.construct(r,[],I)}else{try{I.call()}catch(je){M=je}r.call(I.prototype)}}else{try{throw Error()}catch(je){M=je}r()}}catch(je){if(je&&M&&typeof je.stack=="string"){for(var k=je.stack.split(`
|
19
|
+
`),le=M.stack.split(`
|
20
|
+
`),Z=k.length-1,J=le.length-1;Z>=1&&J>=0&&k[Z]!==le[J];)J--;for(;Z>=1&&J>=0;Z--,J--)if(k[Z]!==le[J]){if(Z!==1||J!==1)do if(Z--,J--,J<0||k[Z]!==le[J]){var ye=`
|
21
|
+
`+k[Z].replace(" at new "," at ");return r.displayName&&ye.includes("<anonymous>")&&(ye=ye.replace("<anonymous>",r.displayName)),typeof r=="function"&&b.set(r,ye),ye}while(Z>=1&&J>=0);break}}}finally{v=!1,ze.current=G,Se(),Error.prepareStackTrace=U}var Xe=r?r.displayName||r.name:"",zt=Xe?oe(Xe):"";return typeof r=="function"&&b.set(r,zt),zt}function fe(r,g,x){return A(r,!1)}function se(r){var g=r.prototype;return!!(g&&g.isReactComponent)}function w(r,g,x){if(r==null)return"";if(typeof r=="function")return A(r,se(r));if(typeof r=="string")return oe(r);switch(r){case f:return oe("Suspense");case m:return oe("SuspenseList")}if(typeof r=="object")switch(r.$$typeof){case h:return fe(r.render);case p:return w(r.type,g,x);case S:{var M=r,U=M._payload,G=M._init;try{return w(G(U),g,x)}catch{}}}return""}var C=Object.prototype.hasOwnProperty,z={},X=ae.ReactDebugCurrentFrame;function _(r){if(r){var g=r._owner,x=w(r.type,r._source,g?g.type:null);X.setExtraStackFrame(x)}else X.setExtraStackFrame(null)}function V(r,g,x,M,U){{var G=Function.call.bind(C);for(var I in r)if(G(r,I)){var k=void 0;try{if(typeof r[I]!="function"){var le=Error((M||"React class")+": "+x+" type `"+I+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof r[I]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw le.name="Invariant Violation",le}k=r[I](g,I,M,x,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(Z){k=Z}k&&!(k instanceof Error)&&(_(U),H("%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",x,I,typeof k),_(null)),k instanceof Error&&!(k.message in z)&&(z[k.message]=!0,_(U),H("Failed %s type: %s",x,k.message),_(null))}}}var $=Array.isArray;function De(r){return $(r)}function qe(r){{var g=typeof Symbol=="function"&&Symbol.toStringTag,x=g&&r[Symbol.toStringTag]||r.constructor.name||"Object";return x}}function lt(r){try{return ut(r),!1}catch{return!0}}function ut(r){return""+r}function et(r){if(lt(r))return H("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",qe(r)),ut(r)}var Ne=ae.ReactCurrentOwner,tt={key:!0,ref:!0,__self:!0,__source:!0},nt,dt,Ke;Ke={};function Ot(r){if(C.call(r,"ref")){var g=Object.getOwnPropertyDescriptor(r,"ref").get;if(g&&g.isReactWarning)return!1}return r.ref!==void 0}function Tt(r){if(C.call(r,"key")){var g=Object.getOwnPropertyDescriptor(r,"key").get;if(g&&g.isReactWarning)return!1}return r.key!==void 0}function Rt(r,g){if(typeof r.ref=="string"&&Ne.current&&g&&Ne.current.stateNode!==g){var x=F(Ne.current.type);Ke[x]||(H('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',F(Ne.current.type),r.ref),Ke[x]=!0)}}function ht(r,g){{var x=function(){nt||(nt=!0,H("%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))};x.isReactWarning=!0,Object.defineProperty(r,"key",{get:x,configurable:!0})}}function Le(r,g){{var x=function(){dt||(dt=!0,H("%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))};x.isReactWarning=!0,Object.defineProperty(r,"ref",{get:x,configurable:!0})}}var Ut=function(r,g,x,M,U,G,I){var k={$$typeof:n,type:r,key:g,ref:x,props:I,_owner:G};return k._store={},Object.defineProperty(k._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(k,"_self",{configurable:!1,enumerable:!1,writable:!1,value:M}),Object.defineProperty(k,"_source",{configurable:!1,enumerable:!1,writable:!1,value:U}),Object.freeze&&(Object.freeze(k.props),Object.freeze(k)),k};function s(r,g,x,M,U){{var G,I={},k=null,le=null;x!==void 0&&(et(x),k=""+x),Tt(g)&&(et(g.key),k=""+g.key),Ot(g)&&(le=g.ref,Rt(g,U));for(G in g)C.call(g,G)&&!tt.hasOwnProperty(G)&&(I[G]=g[G]);if(r&&r.defaultProps){var Z=r.defaultProps;for(G in Z)I[G]===void 0&&(I[G]=Z[G])}if(k||le){var J=typeof r=="function"?r.displayName||r.name||"Unknown":r;k&&ht(I,J),le&&Le(I,J)}return Ut(r,k,le,U,M,Ne.current,I)}}var E=ae.ReactCurrentOwner,P=ae.ReactDebugCurrentFrame;function N(r){if(r){var g=r._owner,x=w(r.type,r._source,g?g.type:null);P.setExtraStackFrame(x)}else P.setExtraStackFrame(null)}var Q;Q=!1;function ge(r){return typeof r=="object"&&r!==null&&r.$$typeof===n}function ce(){{if(E.current){var r=F(E.current.type);if(r)return`
|
22
22
|
|
23
|
-
Check the render method of \``+r+"`."}return""}}function Vt(r){{if(r!==void 0){var g=r.fileName.replace(/^.*[\\\/]/,""),
|
23
|
+
Check the render method of \``+r+"`."}return""}}function Vt(r){{if(r!==void 0){var g=r.fileName.replace(/^.*[\\\/]/,""),x=r.lineNumber;return`
|
24
24
|
|
25
|
-
Check your code at `+g+":"+
|
25
|
+
Check your code at `+g+":"+x+"."}return""}}var ft={};function mt(r){{var g=ce();if(!g){var x=typeof r=="string"?r:r.displayName||r.name;x&&(g=`
|
26
26
|
|
27
|
-
Check the top-level render call using <`+
|
27
|
+
Check the top-level render call using <`+x+">.")}return g}}function ve(r,g){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var x=mt(g);if(ft[x])return;ft[x]=!0;var M="";r&&r._owner&&r._owner!==E.current&&(M=" It was passed a child from "+F(r._owner.type)+"."),N(r),H('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',x,M),N(null)}}function be(r,g){{if(typeof r!="object")return;if(De(r))for(var x=0;x<r.length;x++){var M=r[x];ge(M)&&ve(M,g)}else if(ge(r))r._store&&(r._store.validated=!0);else if(r){var U=de(r);if(typeof U=="function"&&U!==r.entries)for(var G=U.call(r),I;!(I=G.next()).done;)ge(I.value)&&ve(I.value,g)}}}function He(r){{var g=r.type;if(g==null||typeof g=="string")return;var x;if(typeof g=="function")x=g.propTypes;else if(typeof g=="object"&&(g.$$typeof===h||g.$$typeof===p))x=g.propTypes;else return;if(x){var M=F(g);V(x,r.props,"prop",M,r)}else if(g.PropTypes!==void 0&&!Q){Q=!0;var U=F(g);H("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",U||"Unknown")}typeof g.getDefaultProps=="function"&&!g.getDefaultProps.isReactClassApproved&&H("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Ce(r){{for(var g=Object.keys(r.props),x=0;x<g.length;x++){var M=g[x];if(M!=="children"&&M!=="key"){N(r),H("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",M),N(null);break}}r.ref!==null&&(N(r),H("Invalid attribute `ref` supplied to `React.Fragment`."),N(null))}}function Fe(r,g,x,M,U,G){{var I=Me(r);if(!I){var k="";(r===void 0||typeof r=="object"&&r!==null&&Object.keys(r).length===0)&&(k+=" 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 le=Vt(U);le?k+=le:k+=ce();var Z;r===null?Z="null":De(r)?Z="array":r!==void 0&&r.$$typeof===n?(Z="<"+(F(r.type)||"Unknown")+" />",k=" Did you accidentally export a JSX literal instead of a component?"):Z=typeof r,H("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Z,k)}var J=s(r,g,x,U,G);if(J==null)return J;if(I){var ye=g.children;if(ye!==void 0)if(M)if(De(ye)){for(var Xe=0;Xe<ye.length;Xe++)be(ye[Xe],r);Object.freeze&&Object.freeze(ye)}else H("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 be(ye,r)}return r===t?Ce(J):He(J),J}}function Ze(r,g,x){return Fe(r,g,x,!0)}function pt(r,g,x){return Fe(r,g,x,!1)}var pn=pt,gn=Ze;it.Fragment=t,it.jsx=pn,it.jsxs=gn}()),it}process.env.NODE_ENV==="production"?It.exports=An():It.exports=In();var l=It.exports;function Ft(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
|
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(Jt.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]=x.useState(!1),[t,i]=x.useState(e.options),c=f=>{e.onDragComplete(f),i(f)},u=f=>{const m=[...t];m.splice(f,1),c(m)},o=[];t.forEach((f,m)=>{o.push(l.jsx(on,{index:m,title:f,onDelete:u},f))});let h="dropdown draggable";return e.subdropdown&&(h+=" subdropdown"),l.jsxs("div",{className:h,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[l.jsx(Ft,{title:e.title}),l.jsx(Jt.Reorder.Group,{axis:"y",values:t,onReorder:c,style:{visibility:n?"visible":"hidden"},children:o})]})}function ln(e){const[n,a]=x.useState(!1),t=[];e.options.map((c,u)=>{e.onSelect!==void 0&&(c.onSelect=e.onSelect),t.push(l.jsx(un,{option:c},u))});let i="dropdown";return e.subdropdown&&(i+=" subdropdown"),l.jsxs("div",{className:i,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[l.jsx(Ft,{title:e.title}),l.jsx("ul",{style:{visibility:n?"visible":"hidden"},children:t})]})}function un(e){const{option:n}=e,[a,t]=x.useState("");let i;switch(n.type){case"draggable":i=l.jsx(cn,{title:n.title,options:n.value,onDragComplete:c=>{n.onDragComplete!==void 0&&n.onDragComplete(c)},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},Qt())}function Fn(e,n,a){function t(c){switch(n.forEach(u=>{u.callback(e,u.remote,c)}),c.event){case"custom":k.dispatchEvent({type:D.CUSTOM,value:c.data});break}}function i(c){switch(a.forEach(u=>{u.callback(e,u.remote,c)}),c.event){case"custom":k.dispatchEvent({type:D.CUSTOM,value:c.data});break}}e.listen=c=>{c.target==="editor"?i(c):t(c)}}function wt(e){const[n,a]=x.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:ct(e.label)})]}),e.button,l.jsx("div",{className:n?"open":"",children:l.jsx("div",{children:e.children})})]})}function Ut(e){const[n,a]=x.useState(!1),t=e.child!==void 0&&e.child.children.length>0,i=[];return e.child!==void 0&&e.child.children.length>0&&e.child.children.map(c=>{i.push(l.jsx(Ut,{child:c,three:e.three},Math.random()))}),l.jsx(l.Fragment,{children:e.child!==void 0&&l.jsxs("div",{className:"childObject",children:[l.jsxs("div",{className:"child",children:[t?l.jsx("button",{className:"status",style:{backgroundPositionX:n?"-14px":"2px"},onClick:()=>{a(!n)}}):null,l.jsx("button",{className:"name",style:{left:t?"20px":"5px"},onClick:()=>{e.child!==void 0&&(e.three.getObject(e.child.uuid),n||a(!0))},children:e.child.name.length>0?`${e.child.name} (${e.child.type})`:`${e.child.type}::${e.child.uuid}`}),l.jsx("div",{className:`icon ${Tn(e.child)}`})]}),l.jsx("div",{className:n?"open":"",children:l.jsx("div",{className:"container",children:i})})]},Math.random())})}function dn(e){const n=[];return e.child?.children.map(a=>{n.push(l.jsx(Ut,{child:a,three:e.three},Math.random()))}),l.jsx("div",{className:`scene ${e.class!==void 0?e.class:""}`,children:n})}const Un="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 Bn(e){return"items"in e}function Ye(e){const n=[];return e.items.forEach(a=>{Bn(a)?n.push(l.jsx(Ye,{title:ct(a.title),items:a.items},Math.random())):n.push(l.jsx(ot,{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(wt,{label:e.title,open:e.expanded===!0,children:n})}function Vn(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 zn(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 Mt(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 Gn(){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(c){n(c.target.result)},i.readAsDataURL(t)}}),e.click()})}const Hn=[{title:"Front",value:d.FrontSide},{title:"Back",value:d.BackSide},{title:"Double",value:d.DoubleSide}],Wn=[{title:"No Blending",value:d.NoBlending},{title:"Normal",value:d.NormalBlending},{title:"Additive",value:d.AdditiveBlending},{title:"Subtractive",value:d.SubtractiveBlending},{title:"Multiply",value:d.MultiplyBlending},{title:"Custom",value:d.CustomBlending}],$n=[{title:"Add",value:d.AddEquation},{title:"Subtract",value:d.SubtractEquation},{title:"Reverse Subtract",value:d.ReverseSubtractEquation},{title:"Min",value:d.MinEquation},{title:"Max",value:d.MaxEquation}],Yn=[{title:"Zero",valye:d.ZeroFactor},{title:"One",valye:d.OneFactor},{title:"Src Color",valye:d.SrcColorFactor},{title:"One Minus Src Color",valye:d.OneMinusSrcColorFactor},{title:"Src Alpha",valye:d.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:d.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:d.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:d.OneMinusDstAlphaFactor},{title:"Dst Color",valye:d.DstColorFactor},{title:"One Minus Dst Color",valye:d.OneMinusDstColorFactor},{title:"Src Alpha Saturate",valye:d.SrcAlphaSaturateFactor},{title:"Constant Color",valye:d.ConstantColorFactor},{title:"One Minus Constant Color",valye:d.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:d.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:d.OneMinusConstantAlphaFactor}],qn=[{title:"Zero",valye:d.ZeroFactor},{title:"One",valye:d.OneFactor},{title:"Src Color",valye:d.SrcColorFactor},{title:"One Minus Src Color",valye:d.OneMinusSrcColorFactor},{title:"Src Alpha",valye:d.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:d.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:d.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:d.OneMinusDstAlphaFactor},{title:"Dst Color",valye:d.DstColorFactor},{title:"One Minus Dst Color",valye:d.OneMinusDstColorFactor},{title:"Constant Color",valye:d.ConstantColorFactor},{title:"One Minus Constant Color",valye:d.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:d.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:d.OneMinusConstantAlphaFactor}];function rt(e,n){e.needsUpdate=!0,e.type="option",e.options=n}function Kn(e,n,a,t){return{type:"boolean",title:Mt(e),prop:e,value:n,needsUpdate:!0,onChange:(i,c)=>{t.updateObject(a.uuid,`material.${e}`,c),t.updateObject(a.uuid,"material.needsUpdate",!0);const u=t.scene?.getObjectByProperty("uuid",a.uuid);u!==void 0&&q(u,`material.${e}`,c)}}}function Zn(e,n,a,t){const i={type:"number",title:Mt(e),prop:e,value:n,min:void 0,max:void 0,step:.01,needsUpdate:!0,onChange:(c,u)=>{t.updateObject(a.uuid,`material.${e}`,u),t.updateObject(a.uuid,"material.needsUpdate",!0);const o=t.scene?.getObjectByProperty("uuid",a.uuid);o!==void 0&&q(o,`material.${e}`,u)}};switch(e){case"blending":rt(i,Wn);break;case"blendDst":rt(i,qn);break;case"blendEquation":rt(i,$n);break;case"blendSrc":rt(i,Yn);break;case"side":rt(i,Hn);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 Xn(e,n,a,t){const i={type:"string",title:Mt(e),prop:e,value:n,needsUpdate:!0,onChange:(u,o)=>{t.updateObject(a.uuid,`material.${e}`,o),t.updateObject(a.uuid,"material.needsUpdate",!0);const h=t.scene?.getObjectByProperty("uuid",a.uuid);h!==void 0&&q(h,`material.${e}`,o)},onKeyDown:u=>{}};return(e==="vertexShader"||e==="fragmentShader")&&(i.disabled=!1,i.latest=i.value,i.onChange=(u,o)=>{i.latest=o,t.updateObject(a.uuid,`material.${e}`,o);const h=t.scene?.getObjectByProperty("uuid",a.uuid);h!==void 0&&q(h,`material.${e}`,o)},i.onKeyDown=u=>{if(u.key==="Enter"&&(u.altKey||u.metaKey)){t.updateObject(a.uuid,"material.needsUpdate",!0);const o=t.scene?.getObjectByProperty("uuid",a.uuid);o!==void 0&&q(o,"material.needsUpdate",!0)}}),i}function Jn(e){return e.x!==void 0&&e.y!==void 0&&e.z===void 0}function Qn(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w===void 0}function ea(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w!==void 0}function Nt(e){e.sort((n,a)=>n.title<a.title?-1:n.title>a.title?1:0)}function st(e,n,a,t,i="",c=!1){const u=Mt(e).split(".")[0].replaceAll("[","").replaceAll("]",""),o=i.length>0?`${i}.${e}`:e,h=typeof n;if(h==="boolean"||h==="string")return{title:u,prop:o,type:h,value:n,disabled:c,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${o}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${o}`,m)}};if(h==="number"){const f={title:u,prop:o,type:"number",value:n,step:.01,disabled:c,onChange:(m,p)=>{t.updateObject(a.uuid,`material.${o}`,p);const S=t.scene?.getObjectByProperty("uuid",a.uuid);S!==void 0&&q(S,`material.${o}`,p)}};return hn(u)&&(f.type="range",f.min=0,f.max=1),f}else{if(n.isColor)return{title:u,prop:o,type:"color",value:n,disabled:c,onChange:(f,m)=>{const p=new d.Color(m);t.updateObject(a.uuid,`material.${o}`,p);const S=t.scene?.getObjectByProperty("uuid",a.uuid);S!==void 0&&q(S,`material.${o}`,p)}};if(Array.isArray(n)){const f=[];for(const m in n){const p=n[m],S=`[${m.toString()}]`;if(p.value!==void 0){const _=st(`${S}.value`,p.value,a,t,o,c);_!==void 0&&f.push(_)}else{const _=st(S,p,a,t,o,c);_!==void 0&&f.push(_)}}if(f.length>0)return Nt(f),{title:u,items:f}}else{if(Jn(n))return{title:u,prop:o,type:"vector2",value:n,disabled:c,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${o}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${o}`,m)}};if(Qn(n))return{title:u,prop:o,type:"grid3",value:n,disabled:c,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${o}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${o}`,m)}};if(ea(n))return{title:u,prop:o,type:"grid4",value:n,disabled:c,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${o}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${o}`,m)}};if(n.isEuler)return{title:u,prop:o,type:"euler",value:n,disabled:c,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${o}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${o}`,m)}};if(n.src!==void 0)return{title:u,type:"image",value:n,disabled:c,onChange:(f,m)=>{const p=zn(e),S=i.length>0?`${i}.${p}`:p;t.createTexture(a.uuid,`material.${S}`,m);const _=t.scene?.getObjectByProperty("uuid",a.uuid);_!==void 0&&sn(m).then($=>{q(_,`material.${S}`,$),q(_,"material.needsUpdate",!0)})}};if(n.elements!==void 0)return{title:u,prop:o,type:n.elements.length>9?"grid4":"grid3",value:n,disabled:c,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${o}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${o}`,m)}};{const f=[],m=e==="defines"||e==="extensions";try{for(const p in n){const S=n[p];if(S!==void 0)if(S.value!==void 0){const _=st(`${p}.value`,S.value,a,t,o,m);_!==void 0&&f.push(_)}else{const _=st(p,S,a,t,o,m);_!==void 0&&f.push(_)}}}catch{console.log("Issue cycling through material object:",e,n)}if(f.length>0)return Nt(f),{title:u,items:f}}}}}function Wt(e,n,a){const t=[];for(const i in e){if(!Vn(i))continue;const c=typeof e[i],u=e[i];if(c==="boolean")t.push(Kn(i,u,n,a));else if(c==="number")t.push(Zn(i,u,n,a));else if(c==="string")t.push(Xn(i,u,n,a));else if(c==="object"){const o=st(i,u,n,a);o!==void 0&&t.push(o)}else u!==void 0&&console.log("other:",i,c,u)}return Nt(t),t.push({title:"Update Material",type:"button",onChange:()=>{a.updateObject(n.uuid,"material.needsUpdate",!0);const i=a.scene?.getObjectByProperty("uuid",n.uuid);i!==void 0&&q(i,"material.needsUpdate",!0)}}),t}function ta(e,n){const a=e.material;if(Array.isArray(a)){const t=[],i=a.length;for(let c=0;c<i;c++)t.push(l.jsx(Ye,{title:`Material ${c}`,items:Wt(a[c],e,n)},`Material ${c}`));return l.jsx(l.Fragment,{children:t})}else return l.jsx(Ye,{title:"Material",items:Wt(a,e,n)})}function na(e){const[n,a]=x.useState(e.defaultValue);return x.useEffect(()=>{let t=!1,i=-1,c=0,u=e.defaultValue;const o=S=>{t=!0,c=Number(e.input.current?.value),i=S.clientX,document.addEventListener("mouseup",f,!1),document.addEventListener("mousemove",h,!1),document.addEventListener("contextmenu",f,!1)},h=S=>{if(!t)return;const _=e.step!==void 0?e.step:1,$=(S.clientX-i)*_;u=Number((c+$).toFixed(4)),e.min!==void 0&&(u=Math.max(u,e.min)),e.max!==void 0&&(u=Math.min(u,e.max)),e.onChange!==void 0&&e.onChange(u),a(u)},f=()=>{t=!1,document.removeEventListener("mouseup",f),document.removeEventListener("mousemove",h),document.removeEventListener("contextmenu",f)},m=S=>{const _=Number(S.target.value);a(_)},p=S=>{const _=Number(S.target.value);e.onChange!==void 0&&e.onChange(_),a(_)};return e.input.current?.addEventListener("input",m),e.label.current?.addEventListener("mousedown",o,!1),e.sliderRef!==void 0&&e.sliderRef.current?.addEventListener("input",p),()=>{e.input.current?.removeEventListener("input",m),e.label.current?.removeEventListener("mousedown",o),e.sliderRef!==void 0&&e.sliderRef.current?.removeEventListener("input",p),document.removeEventListener("mouseup",f),document.removeEventListener("mousemove",h),document.removeEventListener("contextmenu",f)}},[]),n}function $e(e){const n=x.useRef(null),a=x.useRef(null),t=na({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 c=Number(i.target.value);e.onChange!==void 0&&e.onChange(e.prop,c)}}),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 c=Number(i.target.value);e.onChange!==void 0&&e.onChange(e.prop,c)}}),l.jsx("input",{disabled:e.disabled,type:"range",value:t,min:e.min,max:e.max,step:e.step,ref:a,onChange:Et})]})]})}function aa(e){const n=x.useRef(null),a=x.useRef(null),t=x.useRef(null),i=x.useRef(null),c=x.useRef(null),u=x.useRef(null),[o,h]=x.useState(e.value),[f,m]=x.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,S]=x.useState(!1);function _(){p||(window.addEventListener("mousemove",ee),window.addEventListener("mouseup",$),window.addEventListener("mouseup",$),S(!0))}function $(){window.removeEventListener("mousemove",ee),window.removeEventListener("mouseup",$),S(!1)}function ee(L){const K=c.current.getBoundingClientRect(),te=Ve(0,99,L.clientX-K.left)/99,xe=Ve(0,99,L.clientY-K.top)/99,H=At(Dt(f.min,f.max,te),3),he=At(Dt(f.min,f.max,xe),3);e.onChange({target:{value:{x:H,y:he}}}),h({x:H,y:he})}function de(L){let K=o.x,te=o.y;L.target===n.current?K=Number(L.target.value):te=Number(L.target.value),h({x:K,y:te})}function ae(){const L=Number(t.current.value);m({min:L,max:f.max}),(o.x<L||o.y<L)&&h({x:Ve(L,f.max,o.x),y:Ve(L,f.max,o.y)})}function G(){const L=Number(i.current.value);m({min:f.min,max:L}),(o.x>L||o.y>L)&&h({x:Ve(f.min,L,o.x),y:Ve(f.min,L,o.y)})}return x.useEffect(()=>{const L=kt(f.min,f.max,o.x),K=kt(f.min,f.max,o.y);u.current.style.left=`${L*100}%`,u.current.style.top=`${K*100}%`},[f,o]),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:o.x,min:f.min,max:f.max,step:.01,onChange:de})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Y:"}),l.jsx("input",{ref:a,type:"number",value:o.y,min:f.min,max:f.max,step:.01,onChange:de})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Min:"}),l.jsx("input",{ref:t,type:"number",value:f.min,step:.01,onChange:ae})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Max:"}),l.jsx("input",{ref:i,type:"number",value:f.max,step:.01,onChange:G})]})]}),l.jsxs("div",{className:"input",ref:c,onMouseDown:_,onMouseUp:$,children:[l.jsx("div",{className:"x"}),l.jsx("div",{className:"y"}),l.jsx("div",{className:"pt",ref:u})]})]})}function $t(e){const n=e.value.isVector3!==void 0,a=e.value.isEuler!==void 0,t=e.value.elements!==void 0,i=[];if(n){const c=x.useMemo(()=>e.value,[]),u=(h,f)=>{c[h]=f,e.onChange({target:{value:c}})};["x","y","z"].forEach(h=>{const f=x.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:f,children:h.toUpperCase()}),l.jsx($e,{value:c[h],type:"number",prop:h,step:.01,labelRef:f,onChange:u})]},h))})}else if(a){const c=x.useMemo(()=>e.value,[]),u=(h,f)=>{c[h]=f,e.onChange({target:{value:c}})};["_x","_y","_z"].forEach(h=>{const f=x.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:f,children:h.substring(1).toUpperCase()}),l.jsx($e,{value:c[h],type:"number",prop:h,step:.01,labelRef:f,onChange:u})]},h))})}else if(t){const c=x.useMemo(()=>e.value,[]),u=(o,h)=>{const f=Number(o);c.elements[f]=h,e.onChange({target:{value:c}})};for(let o=0;o<9;o++){const h=x.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:h,children:o+1}),l.jsx($e,{value:c.elements[o],type:"number",prop:o.toString(),step:.01,labelRef:h,onChange:u})]},o.toString()))}}return l.jsx("div",{className:"grid3",children:i},Math.random().toString())}function ia(e){const n=e.value.x!==void 0,a=[];if(n){const t=x.useMemo(()=>e.value,[]),i=(u,o)=>{t[u]=o,e.onChange({target:{value:t}})};["x","y","z","w"].forEach(u=>{const o=x.useRef(null);a.push(l.jsxs("div",{children:[l.jsx("label",{ref:o,children:u.toUpperCase()}),l.jsx($e,{value:t.x,type:"number",prop:u,step:.01,labelRef:o,onChange:i})]},u))})}else{const t=x.useMemo(()=>e.value,[]),i=(c,u)=>{const o=Number(c);t.elements[o]=u,e.onChange({target:{value:t}})};for(let c=0;c<16;c++){const u=x.useRef(null);a.push(l.jsxs("div",{children:[l.jsx("label",{ref:u,children:c+1}),l.jsx($e,{value:t.elements[c],type:"number",prop:c.toString(),step:.01,labelRef:u,onChange:i})]},c.toString()))}}return l.jsx("div",{className:"grid4",children:a})}function ot(e){let n=e.value;n!==void 0&&n.isColor!==void 0&&(n=tn(e.value));const[a,t]=x.useState(n),i=x.useRef(null),c=x.useRef(null),u=m=>{let p=m.target.value;e.type==="boolean"?p=m.target.checked:e.type==="option"&&(p=e.options[p].value),t(p),e.onChange!==void 0&&e.onChange(e.prop!==void 0?e.prop:e.title,p)},o={};e.disabled&&(o.opacity=.8);const h=e.type==="string"&&(a.length>100||a.search(`
|
30
|
-
`)>-1),f=h||e.type==="image"||e.type==="vector2";return l.jsxs("div",{className:`field ${f?"block":""}`,style:o,children:[e.type!=="button"&&l.jsx("label",{ref:i,children:ct(e.title)},"fieldLabel"),e.type==="string"&&!h&&l.jsx("input",{type:"text",disabled:e.disabled,onChange:u,value:a}),e.type==="string"&&h&&l.jsx("textarea",{cols:50,rows:10,disabled:e.disabled!==void 0?e.disabled:!0,onChange:u,onKeyDown:m=>{e.onKeyDown!==void 0&&e.onKeyDown(m)},value:a}),e.type==="boolean"&&l.jsx("input",{type:"checkbox",disabled:e.disabled,onChange:u,checked:a}),e.type==="number"&&l.jsx($e,{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($e,{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:u,disabled:e.disabled,className:"color"}),l.jsx("input",{type:"color",value:a,onChange:u,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("img",{alt:e.title,ref:c,onClick:()=>{Gn().then(m=>{c.current.src=m,e.onChange!==void 0&&e.onChange(e.prop!==void 0?e.prop:e.title,m)})},src:a.src.length>0?a.src:Un}),e.type==="option"&&l.jsx(l.Fragment,{children:l.jsx("select",{onChange:u,disabled:e.disabled,defaultValue:e.value,children:e.options?.map((m,p)=>l.jsx("option",{value:m.value,children:ct(m.title)},p))})}),e.type==="vector2"&&l.jsx(aa,{value:a,min:0,max:1,onChange:u}),e.type==="grid3"&&l.jsx($t,{value:a,onChange:u}),e.type==="grid4"&&l.jsx(ia,{value:a,onChange:u}),e.type==="euler"&&l.jsx($t,{value:a,onChange:u})]})}function Yt(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:Yt(t),prop:t,type:"number",step:.01,value:e.perspectiveCameraInfo[t],onChange:(i,c)=>{n.updateObject(e.uuid,i,c),n.requestMethod(e.uuid,"updateProjectionMatrix");const u=n.scene?.getObjectByProperty("uuid",e.uuid);u!==void 0&&(q(u,i,c),u.updateProjectionMatrix())}});else if(e.orthographicCameraInfo!==void 0)for(const t in e.orthographicCameraInfo)a.push({title:Yt(t),prop:t,type:"number",step:.01,value:e.perspectiveCameraInfo[t],onChange:(i,c)=>{n.updateObject(e.uuid,i,c),n.requestMethod(e.uuid,"updateProjectionMatrix");const u=n.scene?.getObjectByProperty("uuid",e.uuid);u!==void 0&&(q(u,i,c),u.updateProjectionMatrix())}});return l.jsx(Ye,{title:"Camera",items:a})}function sa(e,n){const a=new d.Matrix4;a.elements=e.matrix;const t=new d.Vector3,i=new d.Euler,c=new d.Vector3;e.uuid.length>0&&(t.setFromMatrixPosition(a),i.setFromRotationMatrix(a),c.setFromMatrixScale(a));const u=(o,h)=>{const f=o==="rotation"?{x:h._x,y:h._y,z:h._z}:h;n.updateObject(e.uuid,o,f);const m=n.scene?.getObjectByProperty("uuid",e.uuid);m!==void 0&&q(m,o,f)};return l.jsx(Ye,{title:"Transform",items:[{title:"Position",prop:"position",type:"grid3",value:t,onChange:u},{title:"Rotation",prop:"rotation",type:"grid3",value:i,onChange:u},{title:"Scale",prop:"scale",type:"grid3",value:c,onChange:u}]})}function qt(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:qt(t),prop:t,type:"color",value:i,onChange:(c,u)=>{const o=new d.Color(u);n.updateObject(e.uuid,c,o);const h=n.scene?.getObjectByProperty("uuid",e.uuid);h!==void 0&&q(h,c,o)}}):a.push({title:qt(t),prop:t,type:typeof i,value:i,step:typeof i=="number"?.01:void 0,onChange:(c,u)=>{n.updateObject(e.uuid,c,u);const o=n.scene?.getObjectByProperty("uuid",e.uuid);o!==void 0&&q(o,c,u)}}))}return l.jsx(Ye,{title:"Light",items:a})}function ca(e,n){const a=[],t=[];let i=0;e.animations.forEach(o=>{i=Math.max(i,o.duration),o.duration>0&&t.push({title:o.name,items:[{title:"Duration",type:"number",value:o.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 c=n.scene?.getObjectByProperty("uuid",e.uuid);let u=!1;if(c!==void 0){const o=c.mixer;if(u=o!==void 0,u){const h=[{title:"Time Scale",type:"range",value:o.timeScale,step:.01,min:-1,max:2,onChange:(f,m)=>{o.timeScale=m,n.updateObject(e.uuid,"mixer.timeScale",m)}}];h.push({title:"Stop All",type:"button",onChange:()=>{o.stopAllAction(),n.requestMethod(e.uuid,"stopAllAction",void 0,"mixer")}}),a.push({title:"Mixer",items:h})}}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};let ie={...fn};function mn(e){const[n,a]=x.useState(-1);x.useEffect(()=>{function u(h){ie={...h.value},a(Date.now())}function o(){ie={...fn},a(Date.now())}return k.addEventListener(D.SET_SCENE,o),k.addEventListener(D.SET_OBJECT,u),()=>{k.removeEventListener(D.SET_SCENE,o),k.removeEventListener(D.SET_OBJECT,u)}},[]);const t=ie.type.toLowerCase(),i=ie.animations.length>0||ie.mixer!==void 0,c=t.search("mesh")>-1||t.search("line")>-1||t.search("points")>-1;return l.jsx(wt,{label:"Inspector",children:l.jsx("div",{id:"Inspector",className:e.class,children:ie.uuid.length>0&&l.jsxs(l.Fragment,{children:[l.jsxs(l.Fragment,{children:[l.jsx(ot,{type:"string",title:"Name",prop:"name",value:ie.name,disabled:!0}),l.jsx(ot,{type:"string",title:"Type",prop:"type",value:ie.type,disabled:!0}),l.jsx(ot,{type:"string",title:"UUID",prop:"uuid",value:ie.uuid,disabled:!0}),l.jsx(ot,{type:"boolean",title:"Visible",prop:"visible",value:ie.visible,onChange:(u,o)=>{e.three.updateObject(ie.uuid,u,o);const h=e.three.scene?.getObjectByProperty("uuid",ie.uuid);h!==void 0&&q(h,u,o)}})]}),l.jsxs(l.Fragment,{children:[sa(ie,e.three),i?ca(ie,e.three):null,t.search("camera")>-1?ra(ie,e.three):null,t.search("light")>-1?oa(ie,e.three):null,c?ta(ie,e.three):null]})]})},n)},"Inspector")}function la(e){const[n,a]=x.useState(e.scene);x.useEffect(()=>{const c=u=>{a(u.value)};return k.addEventListener(D.SET_SCENE,c),()=>{k.removeEventListener(D.SET_SCENE,c)}},[]);const t=n!==null,i="Hierarchy - "+(t?`${n?.name}`:"No Scene");return l.jsxs("div",{id:"SidePanel",children:[l.jsx(wt,{label:i,open:!0,children:l.jsx(l.Fragment,{children:t&&l.jsx(dn,{child:n,three:e.three})})}),l.jsx(mn,{three:e.three})]},"SidePanel")}function ua(e){function n(){return e.three.scene===void 0?(console.log("No scene:",e.three),!1):!0}const a=o=>{if(!n())return;const h=e.three.scene?.getObjectByProperty("uuid",o.value);h!==void 0&&e.three.setObject(h)},t=(o,h,f)=>{if(!n())return;const m=e.three.scene?.getObjectByProperty("uuid",o);m!==void 0&&q(m,h,f)},i=o=>{if(!n())return;const h=o.value,{key:f,value:m,uuid:p}=h;t(p,f,m)},c=o=>{if(!n())return;const h=o.value;sn(h.value).then(f=>{t(h.uuid,h.key,f),t(h.uuid,"material.needsUpdate",!0)})},u=o=>{if(!n())return;const{key:h,uuid:f,value:m,subitem:p}=o.value,S=e.three.scene?.getObjectByProperty("uuid",f);if(S!==void 0)try{p!==void 0?Pn(S,p)[h](m):S[h](m)}catch(_){console.log("Error requesting method:"),console.log(_),console.log(h),console.log(m)}};return x.useEffect(()=>(k.addEventListener(D.GET_OBJECT,a),k.addEventListener(D.UPDATE_OBJECT,i),k.addEventListener(D.CREATE_TEXTURE,c),k.addEventListener(D.REQUEST_METHOD,u),()=>{k.removeEventListener(D.GET_OBJECT,a),k.removeEventListener(D.UPDATE_OBJECT,i),k.removeEventListener(D.CREATE_TEXTURE,c),k.removeEventListener(D.REQUEST_METHOD,u)}),[]),null}class da extends d.Line{constructor(n,a){const t=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],i=new d.BufferGeometry;i.setAttribute("position",new d.Float32BufferAttribute(t,3)),i.computeBoundingSphere();const c=new d.LineBasicMaterial({fog:!1});super(i,c),this.light=n,this.color=a,this.type="RectAreaLightHelper";const u=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],o=new d.BufferGeometry;o.setAttribute("position",new d.Float32BufferAttribute(u,3)),o.computeBoundingSphere(),this.add(new d.Mesh(o,new d.MeshBasicMaterial({side:d.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 Kt={type:"change"},Pt={type:"start"},Zt={type:"end"},vt=new d.Ray,Xt=new d.Plane,ha=Math.cos(70*d.MathUtils.DEG2RAD);class fa extends d.EventDispatcher{constructor(n,a){super(),this.object=n,this.domElement=a,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new d.Vector3,this.cursor=new d.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:d.MOUSE.ROTATE,MIDDLE:d.MOUSE.DOLLY,RIGHT:d.MOUSE.PAN},this.touches={ONE:d.TOUCH.ROTATE,TWO:d.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 o.phi},this.getAzimuthalAngle=function(){return o.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(s){s.addEventListener("keydown",tt),this._domElementKeyEvents=s},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(Kt),t.update(),c=i.NONE},this.update=function(){const s=new d.Vector3,E=new d.Quaternion().setFromUnitVectors(n.up,new d.Vector3(0,1,0)),P=E.clone().invert(),N=new d.Vector3,Q=new d.Quaternion,ge=new d.Vector3,le=2*Math.PI;return function(mt=null){const pt=t.object.position;s.copy(pt).sub(t.target),s.applyQuaternion(E),o.setFromVector3(s),t.autoRotate&&c===i.NONE&&me(Me(mt)),t.enableDamping?(o.theta+=h.theta*t.dampingFactor,o.phi+=h.phi*t.dampingFactor):(o.theta+=h.theta,o.phi+=h.phi);let ve=t.minAzimuthAngle,be=t.maxAzimuthAngle;isFinite(ve)&&isFinite(be)&&(ve<-Math.PI?ve+=le:ve>Math.PI&&(ve-=le),be<-Math.PI?be+=le:be>Math.PI&&(be-=le),ve<=be?o.theta=Math.max(ve,Math.min(be,o.theta)):o.theta=o.theta>(ve+be)/2?Math.max(ve,o.theta):Math.min(be,o.theta)),o.phi=Math.max(t.minPolarAngle,Math.min(t.maxPolarAngle,o.phi)),o.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&&xe||t.object.isOrthographicCamera)o.radius=_e(o.radius);else{const Ce=o.radius;o.radius=_e(o.radius*f),He=Ce!=o.radius}if(s.setFromSpherical(o),s.applyQuaternion(P),pt.copy(t.target).add(s),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&&xe){let Ce=null;if(t.object.isPerspectiveCamera){const Fe=s.length();Ce=_e(Fe*f);const Ze=Fe-Ce;t.object.position.addScaledVector(K,Ze),t.object.updateMatrixWorld(),He=!!Ze}else if(t.object.isOrthographicCamera){const Fe=new d.Vector3(te.x,te.y,0);Fe.unproject(t.object);const Ze=t.object.zoom;t.object.zoom=Math.max(t.minZoom,Math.min(t.maxZoom,t.object.zoom/f)),t.object.updateProjectionMatrix(),He=Ze!==t.object.zoom;const gt=new d.Vector3(te.x,te.y,0);gt.unproject(t.object),t.object.position.sub(gt).add(Fe),t.object.updateMatrixWorld(),Ce=s.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):(Xt.setFromNormalAndCoplanarPoint(t.object.up,t.target),vt.intersectPlane(Xt,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/f)),Ce!==t.object.zoom&&(t.object.updateProjectionMatrix(),He=!0)}return f=1,xe=!1,He||N.distanceToSquared(t.object.position)>u||8*(1-Q.dot(t.object.quaternion))>u||ge.distanceToSquared(t.target)>u?(t.dispatchEvent(Kt),N.copy(t.object.position),Q.copy(t.object.quaternion),ge.copy(t.target),!0):!1}}(),this.dispose=function(){t.domElement.removeEventListener("contextmenu",Ke),t.domElement.removeEventListener("pointerdown",R),t.domElement.removeEventListener("pointercancel",W),t.domElement.removeEventListener("wheel",ut),t.domElement.removeEventListener("pointermove",B),t.domElement.removeEventListener("pointerup",W),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 c=i.NONE;const u=1e-6,o=new d.Spherical,h=new d.Spherical;let f=1;const m=new d.Vector3,p=new d.Vector2,S=new d.Vector2,_=new d.Vector2,$=new d.Vector2,ee=new d.Vector2,de=new d.Vector2,ae=new d.Vector2,G=new d.Vector2,L=new d.Vector2,K=new d.Vector3,te=new d.Vector2;let xe=!1;const H=[],he={};let se=!1;function Me(s){return s!==null?2*Math.PI/60*t.autoRotateSpeed*s:2*Math.PI/60/60*t.autoRotateSpeed}function Oe(s){const E=Math.abs(s*.01);return Math.pow(.95,t.zoomSpeed*E)}function me(s){h.theta-=s}function F(s){h.phi-=s}const pe=function(){const s=new d.Vector3;return function(P,N){s.setFromMatrixColumn(N,0),s.multiplyScalar(-P),m.add(s)}}(),T=function(){const s=new d.Vector3;return function(P,N){t.screenSpacePanning===!0?s.setFromMatrixColumn(N,1):(s.setFromMatrixColumn(N,0),s.crossVectors(t.object.up,s)),s.multiplyScalar(P),m.add(s)}}(),Ee=function(){const s=new d.Vector3;return function(P,N){const Q=t.domElement;if(t.object.isPerspectiveCamera){const ge=t.object.position;s.copy(ge).sub(t.target);let le=s.length();le*=Math.tan(t.object.fov/2*Math.PI/180),pe(2*P*le/Q.clientHeight,t.object.matrix),T(2*N*le/Q.clientHeight,t.object.matrix)}else t.object.isOrthographicCamera?(pe(P*(t.object.right-t.object.left)/t.object.zoom/Q.clientWidth,t.object.matrix),T(N*(t.object.top-t.object.bottom)/t.object.zoom/Q.clientHeight,t.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),t.enablePan=!1)}}();function Te(s){t.object.isPerspectiveCamera||t.object.isOrthographicCamera?f/=s:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),t.enableZoom=!1)}function Pe(s){t.object.isPerspectiveCamera||t.object.isOrthographicCamera?f*=s:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),t.enableZoom=!1)}function Re(s,E){if(!t.zoomToCursor)return;xe=!0;const P=t.domElement.getBoundingClientRect(),N=s-P.left,Q=E-P.top,ge=P.width,le=P.height;te.x=N/ge*2-1,te.y=-(Q/le)*2+1,K.set(te.x,te.y,1).unproject(t.object).sub(t.object.position).normalize()}function _e(s){return Math.max(t.minDistance,Math.min(t.maxDistance,s))}function je(s){p.set(s.clientX,s.clientY)}function Ae(s){Re(s.clientX,s.clientX),ae.set(s.clientX,s.clientY)}function Ie(s){$.set(s.clientX,s.clientY)}function ne(s){S.set(s.clientX,s.clientY),_.subVectors(S,p).multiplyScalar(t.rotateSpeed);const E=t.domElement;me(2*Math.PI*_.x/E.clientHeight),F(2*Math.PI*_.y/E.clientHeight),p.copy(S),t.update()}function Se(s){G.set(s.clientX,s.clientY),L.subVectors(G,ae),L.y>0?Te(Oe(L.y)):L.y<0&&Pe(Oe(L.y)),ae.copy(G),t.update()}function ze(s){ee.set(s.clientX,s.clientY),de.subVectors(ee,$).multiplyScalar(t.panSpeed),Ee(de.x,de.y),$.copy(ee),t.update()}function Ge(s){Re(s.clientX,s.clientY),s.deltaY<0?Pe(Oe(s.deltaY)):s.deltaY>0&&Te(Oe(s.deltaY)),t.update()}function ce(s){let E=!1;switch(s.code){case t.keys.UP:s.ctrlKey||s.metaKey||s.shiftKey?F(2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Ee(0,t.keyPanSpeed),E=!0;break;case t.keys.BOTTOM:s.ctrlKey||s.metaKey||s.shiftKey?F(-2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Ee(0,-t.keyPanSpeed),E=!0;break;case t.keys.LEFT:s.ctrlKey||s.metaKey||s.shiftKey?me(2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Ee(t.keyPanSpeed,0),E=!0;break;case t.keys.RIGHT:s.ctrlKey||s.metaKey||s.shiftKey?me(-2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Ee(-t.keyPanSpeed,0),E=!0;break}E&&(s.preventDefault(),t.update())}function v(s){if(H.length===1)p.set(s.pageX,s.pageY);else{const E=Le(s),P=.5*(s.pageX+E.x),N=.5*(s.pageY+E.y);p.set(P,N)}}function b(s){if(H.length===1)$.set(s.pageX,s.pageY);else{const E=Le(s),P=.5*(s.pageX+E.x),N=.5*(s.pageY+E.y);$.set(P,N)}}function O(s){const E=Le(s),P=s.pageX-E.x,N=s.pageY-E.y,Q=Math.sqrt(P*P+N*N);ae.set(0,Q)}function A(s){t.enableZoom&&O(s),t.enablePan&&b(s)}function fe(s){t.enableZoom&&O(s),t.enableRotate&&v(s)}function oe(s){if(H.length==1)S.set(s.pageX,s.pageY);else{const P=Le(s),N=.5*(s.pageX+P.x),Q=.5*(s.pageY+P.y);S.set(N,Q)}_.subVectors(S,p).multiplyScalar(t.rotateSpeed);const E=t.domElement;me(2*Math.PI*_.x/E.clientHeight),F(2*Math.PI*_.y/E.clientHeight),p.copy(S)}function w(s){if(H.length===1)ee.set(s.pageX,s.pageY);else{const E=Le(s),P=.5*(s.pageX+E.x),N=.5*(s.pageY+E.y);ee.set(P,N)}de.subVectors(ee,$).multiplyScalar(t.panSpeed),Ee(de.x,de.y),$.copy(ee)}function C(s){const E=Le(s),P=s.pageX-E.x,N=s.pageY-E.y,Q=Math.sqrt(P*P+N*N);G.set(0,Q),L.set(0,Math.pow(G.y/ae.y,t.zoomSpeed)),Te(L.y),ae.copy(G);const ge=(s.pageX+E.x)*.5,le=(s.pageY+E.y)*.5;Re(ge,le)}function V(s){t.enableZoom&&C(s),t.enablePan&&w(s)}function X(s){t.enableZoom&&C(s),t.enableRotate&&oe(s)}function R(s){t.enabled!==!1&&(H.length===0&&(t.domElement.setPointerCapture(s.pointerId),t.domElement.addEventListener("pointermove",B),t.domElement.addEventListener("pointerup",W)),!Rt(s)&&(Ot(s),s.pointerType==="touch"?nt(s):ke(s)))}function B(s){t.enabled!==!1&&(s.pointerType==="touch"?ht(s):qe(s))}function W(s){switch(Tt(s),H.length){case 0:t.domElement.releasePointerCapture(s.pointerId),t.domElement.removeEventListener("pointermove",B),t.domElement.removeEventListener("pointerup",W),t.dispatchEvent(Zt),c=i.NONE;break;case 1:const E=H[0],P=he[E];nt({pointerId:E,pageX:P.x,pageY:P.y});break}}function ke(s){let E;switch(s.button){case 0:E=t.mouseButtons.LEFT;break;case 1:E=t.mouseButtons.MIDDLE;break;case 2:E=t.mouseButtons.RIGHT;break;default:E=-1}switch(E){case d.MOUSE.DOLLY:if(t.enableZoom===!1)return;Ae(s),c=i.DOLLY;break;case d.MOUSE.ROTATE:if(s.ctrlKey||s.metaKey||s.shiftKey){if(t.enablePan===!1)return;Ie(s),c=i.PAN}else{if(t.enableRotate===!1)return;je(s),c=i.ROTATE}break;case d.MOUSE.PAN:if(s.ctrlKey||s.metaKey||s.shiftKey){if(t.enableRotate===!1)return;je(s),c=i.ROTATE}else{if(t.enablePan===!1)return;Ie(s),c=i.PAN}break;default:c=i.NONE}c!==i.NONE&&t.dispatchEvent(Pt)}function qe(s){switch(c){case i.ROTATE:if(t.enableRotate===!1)return;ne(s);break;case i.DOLLY:if(t.enableZoom===!1)return;Se(s);break;case i.PAN:if(t.enablePan===!1)return;ze(s);break}}function ut(s){t.enabled===!1||t.enableZoom===!1||c!==i.NONE||(s.preventDefault(),t.dispatchEvent(Pt),Ge(dt(s)),t.dispatchEvent(Zt))}function dt(s){const E=s.deltaMode,P={clientX:s.clientX,clientY:s.clientY,deltaY:s.deltaY};switch(E){case 1:P.deltaY*=16;break;case 2:P.deltaY*=100;break}return s.ctrlKey&&!se&&(P.deltaY*=10),P}function et(s){s.key==="Control"&&(se=!0,t.domElement.getRootNode().addEventListener("keyup",Ne,{passive:!0,capture:!0}))}function Ne(s){s.key==="Control"&&(se=!1,t.domElement.getRootNode().removeEventListener("keyup",Ne,{passive:!0,capture:!0}))}function tt(s){t.enabled===!1||t.enablePan===!1||ce(s)}function nt(s){switch(ft(s),H.length){case 1:switch(t.touches.ONE){case d.TOUCH.ROTATE:if(t.enableRotate===!1)return;v(s),c=i.TOUCH_ROTATE;break;case d.TOUCH.PAN:if(t.enablePan===!1)return;b(s),c=i.TOUCH_PAN;break;default:c=i.NONE}break;case 2:switch(t.touches.TWO){case d.TOUCH.DOLLY_PAN:if(t.enableZoom===!1&&t.enablePan===!1)return;A(s),c=i.TOUCH_DOLLY_PAN;break;case d.TOUCH.DOLLY_ROTATE:if(t.enableZoom===!1&&t.enableRotate===!1)return;fe(s),c=i.TOUCH_DOLLY_ROTATE;break;default:c=i.NONE}break;default:c=i.NONE}c!==i.NONE&&t.dispatchEvent(Pt)}function ht(s){switch(ft(s),c){case i.TOUCH_ROTATE:if(t.enableRotate===!1)return;oe(s),t.update();break;case i.TOUCH_PAN:if(t.enablePan===!1)return;w(s),t.update();break;case i.TOUCH_DOLLY_PAN:if(t.enableZoom===!1&&t.enablePan===!1)return;V(s),t.update();break;case i.TOUCH_DOLLY_ROTATE:if(t.enableZoom===!1&&t.enableRotate===!1)return;X(s),t.update();break;default:c=i.NONE}}function Ke(s){t.enabled!==!1&&s.preventDefault()}function Ot(s){H.push(s.pointerId)}function Tt(s){delete he[s.pointerId];for(let E=0;E<H.length;E++)if(H[E]==s.pointerId){H.splice(E,1);return}}function Rt(s){for(let E=0;E<H.length;E++)if(H[E]==s.pointerId)return!0;return!1}function ft(s){let E=he[s.pointerId];E===void 0&&(E=new d.Vector2,he[s.pointerId]=E),E.set(s.pageX,s.pageY)}function Le(s){const E=s.pointerId===H[0]?H[1]:H[0];return he[E]}t.domElement.addEventListener("contextmenu",Ke),t.domElement.addEventListener("pointerdown",R),t.domElement.addEventListener("pointercancel",W),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]=x.useState(e.options[e.index]),t=()=>{e.onToggle(!e.open)},i=c=>{c!==n&&(e.onSelect(c),a(c)),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(c=>l.jsx("li",{onClick:()=>i(c),children:c},c))})]})},We=x.forwardRef(function(n,a){const[t,i]=x.useState(!1),c=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:c,open:t,options:n.options,onSelect:n.onSelect,onToggle:u=>{i(u)},up:!0})]})});class ma extends d.ShaderMaterial{constructor(n){super({extensions:{derivatives:!0},glslVersion:d.GLSL3,side:d.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 d.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 on(e){return l.jsx(Jt.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]=y.useState(!1),[t,i]=y.useState(e.options),o=f=>{e.onDragComplete(f),i(f)},u=f=>{const m=[...t];m.splice(f,1),o(m)},c=[];t.forEach((f,m)=>{c.push(l.jsx(on,{index:m,title:f,onDelete:u},f))});let h="dropdown draggable";return e.subdropdown&&(h+=" subdropdown"),l.jsxs("div",{className:h,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[l.jsx(Ft,{title:e.title}),l.jsx(Jt.Reorder.Group,{axis:"y",values:t,onReorder:o,style:{visibility:n?"visible":"hidden"},children:c})]})}function ln(e){const[n,a]=y.useState(!1),t=[];e.options.map((o,u)=>{e.onSelect!==void 0&&(o.onSelect=e.onSelect),t.push(l.jsx(un,{option:o},u))});let i="dropdown";return e.subdropdown&&(i+=" subdropdown"),l.jsxs("div",{className:i,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[l.jsx(Ft,{title:e.title}),l.jsx("ul",{style:{visibility:n?"visible":"hidden"},children:t})]})}function un(e){const{option:n}=e,[a,t]=y.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},Qt())}function Fn(e,n,a){function t(o){switch(n.forEach(u=>{u.callback(e,u.remote,o)}),o.event){case"custom":D.dispatchEvent({type:j.CUSTOM,value:o.data});break}}function i(o){switch(a.forEach(u=>{u.callback(e,u.remote,o)}),o.event){case"custom":D.dispatchEvent({type:j.CUSTOM,value:o.data});break}}e.listen=o=>{o.target==="editor"?i(o):t(o)}}function wt(e){const[n,a]=y.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 Bt(e){const n=y.useRef(null),[a,t]=y.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(u=>{o.push(l.jsx(Bt,{child:u,three:e.three},Math.random()))}),y.useEffect(()=>{const u=e.three.scene?.getObjectByProperty("uuid",e.child.uuid);u!==void 0&&(n.current.style.opacity=u.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 u=e.three.scene?.getObjectByProperty("uuid",e.child.uuid);if(u!==void 0){const c="visible",h=!u.visible;n.current.style.opacity=h?"1":"0.25",e.three.updateObject(e.child.uuid,c,h),q(u,c,h)}}}}),l.jsx("div",{className:`icon ${Tn(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=>{n.push(l.jsx(Bt,{child:a,three:e.three},Math.random()))}),l.jsx("div",{className:`scene ${e.class!==void 0?e.class:""}`,children:n})}const Bn="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 Un(e){return"items"in e}function Ye(e){const n=[];return e.items.forEach(a=>{Un(a)?n.push(l.jsx(Ye,{title:ot(a.title),items:a.items},Math.random())):n.push(l.jsx(yt,{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(wt,{label:e.title,open:e.expanded===!0,children:n})}function Vn(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 zn(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 Mt(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 Gn(){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 Hn=[{title:"Front",value:d.FrontSide},{title:"Back",value:d.BackSide},{title:"Double",value:d.DoubleSide}],Wn=[{title:"No Blending",value:d.NoBlending},{title:"Normal",value:d.NormalBlending},{title:"Additive",value:d.AdditiveBlending},{title:"Subtractive",value:d.SubtractiveBlending},{title:"Multiply",value:d.MultiplyBlending},{title:"Custom",value:d.CustomBlending}],$n=[{title:"Add",value:d.AddEquation},{title:"Subtract",value:d.SubtractEquation},{title:"Reverse Subtract",value:d.ReverseSubtractEquation},{title:"Min",value:d.MinEquation},{title:"Max",value:d.MaxEquation}],Yn=[{title:"Zero",valye:d.ZeroFactor},{title:"One",valye:d.OneFactor},{title:"Src Color",valye:d.SrcColorFactor},{title:"One Minus Src Color",valye:d.OneMinusSrcColorFactor},{title:"Src Alpha",valye:d.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:d.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:d.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:d.OneMinusDstAlphaFactor},{title:"Dst Color",valye:d.DstColorFactor},{title:"One Minus Dst Color",valye:d.OneMinusDstColorFactor},{title:"Src Alpha Saturate",valye:d.SrcAlphaSaturateFactor},{title:"Constant Color",valye:d.ConstantColorFactor},{title:"One Minus Constant Color",valye:d.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:d.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:d.OneMinusConstantAlphaFactor}],qn=[{title:"Zero",valye:d.ZeroFactor},{title:"One",valye:d.OneFactor},{title:"Src Color",valye:d.SrcColorFactor},{title:"One Minus Src Color",valye:d.OneMinusSrcColorFactor},{title:"Src Alpha",valye:d.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:d.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:d.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:d.OneMinusDstAlphaFactor},{title:"Dst Color",valye:d.DstColorFactor},{title:"One Minus Dst Color",valye:d.OneMinusDstColorFactor},{title:"Constant Color",valye:d.ConstantColorFactor},{title:"One Minus Constant Color",valye:d.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:d.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:d.OneMinusConstantAlphaFactor}];function rt(e,n){e.needsUpdate=!0,e.type="option",e.options=n}function Kn(e,n,a,t){return{type:"boolean",title:Mt(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 u=t.scene?.getObjectByProperty("uuid",a.uuid);u!==void 0&&q(u,`material.${e}`,o)}}}function Zn(e,n,a,t){const i={type:"number",title:Mt(e),prop:e,value:n,min:void 0,max:void 0,step:.01,needsUpdate:!0,onChange:(o,u)=>{t.updateObject(a.uuid,`material.${e}`,u),t.updateObject(a.uuid,"material.needsUpdate",!0);const c=t.scene?.getObjectByProperty("uuid",a.uuid);c!==void 0&&q(c,`material.${e}`,u)}};switch(e){case"blending":rt(i,Wn);break;case"blendDst":rt(i,qn);break;case"blendEquation":rt(i,$n);break;case"blendSrc":rt(i,Yn);break;case"side":rt(i,Hn);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 Xn(e,n,a,t){const i={type:"string",title:Mt(e),prop:e,value:n,needsUpdate:!0,onChange:(u,c)=>{t.updateObject(a.uuid,`material.${e}`,c),t.updateObject(a.uuid,"material.needsUpdate",!0);const h=t.scene?.getObjectByProperty("uuid",a.uuid);h!==void 0&&q(h,`material.${e}`,c)},onKeyDown:u=>{}};return(e==="vertexShader"||e==="fragmentShader")&&(i.disabled=!1,i.latest=i.value,i.onChange=(u,c)=>{i.latest=c,t.updateObject(a.uuid,`material.${e}`,c);const h=t.scene?.getObjectByProperty("uuid",a.uuid);h!==void 0&&q(h,`material.${e}`,c)},i.onKeyDown=u=>{if(u.key==="Enter"&&(u.altKey||u.metaKey)){t.updateObject(a.uuid,"material.needsUpdate",!0);const c=t.scene?.getObjectByProperty("uuid",a.uuid);c!==void 0&&q(c,"material.needsUpdate",!0)}}),i}function Jn(e){return e.x!==void 0&&e.y!==void 0&&e.z===void 0}function Qn(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w===void 0}function ea(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w!==void 0}function Nt(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 u=Mt(e).split(".")[0].replaceAll("[","").replaceAll("]",""),c=i.length>0?`${i}.${e}`:e,h=typeof n;if(h==="boolean"||h==="string")return{title:u,prop:c,type:h,value:n,disabled:o,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${c}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${c}`,m)}};if(h==="number"){const f={title:u,prop:c,type:"number",value:n,step:.01,disabled:o,onChange:(m,p)=>{t.updateObject(a.uuid,`material.${c}`,p);const S=t.scene?.getObjectByProperty("uuid",a.uuid);S!==void 0&&q(S,`material.${c}`,p)}};return hn(u)&&(f.type="range",f.min=0,f.max=1),f}else{if(n.isColor)return{title:u,prop:c,type:"color",value:n,disabled:o,onChange:(f,m)=>{const p=new d.Color(m);t.updateObject(a.uuid,`material.${c}`,p);const S=t.scene?.getObjectByProperty("uuid",a.uuid);S!==void 0&&q(S,`material.${c}`,p)}};if(Array.isArray(n)){const f=[];for(const m in n){const p=n[m],S=`[${m.toString()}]`;if(p.value!==void 0){const T=st(`${S}.value`,p.value,a,t,c,o);T!==void 0&&f.push(T)}else{const T=st(S,p,a,t,c,o);T!==void 0&&f.push(T)}}if(f.length>0)return Nt(f),{title:u,items:f}}else{if(Jn(n))return{title:u,prop:c,type:"vector2",value:n,disabled:o,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${c}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${c}`,m)}};if(Qn(n))return{title:u,prop:c,type:"grid3",value:n,disabled:o,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${c}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${c}`,m)}};if(ea(n))return{title:u,prop:c,type:"grid4",value:n,disabled:o,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${c}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${c}`,m)}};if(n.isEuler)return{title:u,prop:c,type:"euler",value:n,disabled:o,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${c}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${c}`,m)}};if(n.src!==void 0)return{title:u,type:"image",value:n,disabled:o,onChange:(f,m)=>{const p=zn(e),S=i.length>0?`${i}.${p}`:p;t.createTexture(a.uuid,`material.${S}`,m);const T=t.scene?.getObjectByProperty("uuid",a.uuid);T!==void 0&&sn(m).then(B=>{q(T,`material.${S}`,B),q(T,"material.needsUpdate",!0)})}};if(n.elements!==void 0)return{title:u,prop:c,type:n.elements.length>9?"grid4":"grid3",value:n,disabled:o,onChange:(f,m)=>{t.updateObject(a.uuid,`material.${c}`,m);const p=t.scene?.getObjectByProperty("uuid",a.uuid);p!==void 0&&q(p,`material.${c}`,m)}};{const f=[],m=e==="defines"||e==="extensions";try{for(const p in n){const S=n[p];if(S!==void 0)if(S.value!==void 0){const T=st(`${p}.value`,S.value,a,t,c,m);T!==void 0&&f.push(T)}else{const T=st(p,S,a,t,c,m);T!==void 0&&f.push(T)}}}catch{console.log("Issue cycling through material object:",e,n)}if(f.length>0)return Nt(f),{title:u,items:f}}}}}function Wt(e,n,a){const t=[];for(const i in e){if(!Vn(i))continue;const o=typeof e[i],u=e[i];if(o==="boolean")t.push(Kn(i,u,n,a));else if(o==="number")t.push(Zn(i,u,n,a));else if(o==="string")t.push(Xn(i,u,n,a));else if(o==="object"){const c=st(i,u,n,a);c!==void 0&&t.push(c)}else u!==void 0&&console.log("other:",i,o,u)}return Nt(t),t.push({title:"Update Material",type:"button",onChange:()=>{a.updateObject(n.uuid,"material.needsUpdate",!0);const i=a.scene?.getObjectByProperty("uuid",n.uuid);i!==void 0&&q(i,"material.needsUpdate",!0)}}),t}function ta(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:Wt(a[o],e,n)},`Material ${o}`));return l.jsx(l.Fragment,{children:t})}else return l.jsx(Ye,{title:"Material",items:Wt(a,e,n)})}function na(e){const[n,a]=y.useState(e.defaultValue);return y.useEffect(()=>{let t=!1,i=-1,o=0,u=e.defaultValue;const c=S=>{t=!0,o=Number(e.input.current?.value),i=S.clientX,document.addEventListener("mouseup",f,!1),document.addEventListener("mousemove",h,!1),document.addEventListener("contextmenu",f,!1)},h=S=>{if(!t)return;const T=e.step!==void 0?e.step:1,B=(S.clientX-i)*T;u=Number((o+B).toFixed(4)),e.min!==void 0&&(u=Math.max(u,e.min)),e.max!==void 0&&(u=Math.min(u,e.max)),e.onChange!==void 0&&e.onChange(u),a(u)},f=()=>{t=!1,document.removeEventListener("mouseup",f),document.removeEventListener("mousemove",h),document.removeEventListener("contextmenu",f)},m=S=>{const T=Number(S.target.value);a(T)},p=S=>{const T=Number(S.target.value);e.onChange!==void 0&&e.onChange(T),a(T)};return e.input.current?.addEventListener("input",m),e.label.current?.addEventListener("mousedown",c,!1),e.sliderRef!==void 0&&e.sliderRef.current?.addEventListener("input",p),()=>{e.input.current?.removeEventListener("input",m),e.label.current?.removeEventListener("mousedown",c),e.sliderRef!==void 0&&e.sliderRef.current?.removeEventListener("input",p),document.removeEventListener("mouseup",f),document.removeEventListener("mousemove",h),document.removeEventListener("contextmenu",f)}},[]),n}function $e(e){const n=y.useRef(null),a=y.useRef(null),t=na({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:Et})]})]})}function aa(e){const n=y.useRef(null),a=y.useRef(null),t=y.useRef(null),i=y.useRef(null),o=y.useRef(null),u=y.useRef(null),[c,h]=y.useState(e.value),[f,m]=y.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,S]=y.useState(!1);function T(){p||(window.addEventListener("mousemove",ee),window.addEventListener("mouseup",B),window.addEventListener("mouseup",B),S(!0))}function B(){window.removeEventListener("mousemove",ee),window.removeEventListener("mouseup",B),S(!1)}function ee(L){const K=o.current.getBoundingClientRect(),te=Ve(0,99,L.clientX-K.left)/99,xe=Ve(0,99,L.clientY-K.top)/99,W=At(jt(f.min,f.max,te),3),he=At(jt(f.min,f.max,xe),3);e.onChange({target:{value:{x:W,y:he}}}),h({x:W,y:he})}function de(L){let K=c.x,te=c.y;L.target===n.current?K=Number(L.target.value):te=Number(L.target.value),h({x:K,y:te})}function ae(){const L=Number(t.current.value);m({min:L,max:f.max}),(c.x<L||c.y<L)&&h({x:Ve(L,f.max,c.x),y:Ve(L,f.max,c.y)})}function H(){const L=Number(i.current.value);m({min:f.min,max:L}),(c.x>L||c.y>L)&&h({x:Ve(f.min,L,c.x),y:Ve(f.min,L,c.y)})}return y.useEffect(()=>{const L=Dt(f.min,f.max,c.x),K=Dt(f.min,f.max,c.y);u.current.style.left=`${L*100}%`,u.current.style.top=`${K*100}%`},[f,c]),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:c.x,min:f.min,max:f.max,step:.01,onChange:de})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Y:"}),l.jsx("input",{ref:a,type:"number",value:c.y,min:f.min,max:f.max,step:.01,onChange:de})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Min:"}),l.jsx("input",{ref:t,type:"number",value:f.min,step:.01,onChange:ae})]}),l.jsxs("div",{children:[l.jsx("label",{children:"Max:"}),l.jsx("input",{ref:i,type:"number",value:f.max,step:.01,onChange:H})]})]}),l.jsxs("div",{className:"input",ref:o,onMouseDown:T,onMouseUp:B,children:[l.jsx("div",{className:"x"}),l.jsx("div",{className:"y"}),l.jsx("div",{className:"pt",ref:u})]})]})}function $t(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=y.useMemo(()=>e.value,[]),u=(h,f)=>{o[h]=f,e.onChange({target:{value:o}})};["x","y","z"].forEach(h=>{const f=y.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:f,children:h.toUpperCase()}),l.jsx($e,{value:o[h],type:"number",prop:h,step:.01,labelRef:f,onChange:u})]},h))})}else if(a){const o=y.useMemo(()=>e.value,[]),u=(h,f)=>{o[h]=f,e.onChange({target:{value:o}})};["_x","_y","_z"].forEach(h=>{const f=y.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:f,children:h.substring(1).toUpperCase()}),l.jsx($e,{value:o[h],type:"number",prop:h,step:.01,labelRef:f,onChange:u})]},h))})}else if(t){const o=y.useMemo(()=>e.value,[]),u=(c,h)=>{const f=Number(c);o.elements[f]=h,e.onChange({target:{value:o}})};for(let c=0;c<9;c++){const h=y.useRef(null);i.push(l.jsxs("div",{children:[l.jsx("label",{ref:h,children:c+1}),l.jsx($e,{value:o.elements[c],type:"number",prop:c.toString(),step:.01,labelRef:h,onChange:u})]},c.toString()))}}return l.jsx("div",{className:"grid3",children:i},Math.random().toString())}function ia(e){const n=e.value.x!==void 0,a=[];if(n){const t=y.useMemo(()=>e.value,[]),i=(u,c)=>{t[u]=c,e.onChange({target:{value:t}})};["x","y","z","w"].forEach(u=>{const c=y.useRef(null);a.push(l.jsxs("div",{children:[l.jsx("label",{ref:c,children:u.toUpperCase()}),l.jsx($e,{value:t.x,type:"number",prop:u,step:.01,labelRef:c,onChange:i})]},u))})}else{const t=y.useMemo(()=>e.value,[]),i=(o,u)=>{const c=Number(o);t.elements[c]=u,e.onChange({target:{value:t}})};for(let o=0;o<16;o++){const u=y.useRef(null);a.push(l.jsxs("div",{children:[l.jsx("label",{ref:u,children:o+1}),l.jsx($e,{value:t.elements[o],type:"number",prop:o.toString(),step:.01,labelRef:u,onChange:i})]},o.toString()))}}return l.jsx("div",{className:"grid4",children:a})}function yt(e){let n=e.value;n!==void 0&&n.isColor!==void 0&&(n=tn(e.value));const[a,t]=y.useState(n),i=y.useRef(null),o=y.useRef(null),u=m=>{let p=m.target.value;e.type==="boolean"?p=m.target.checked:e.type==="option"&&(p=e.options[p].value),t(p),e.onChange!==void 0&&e.onChange(e.prop!==void 0?e.prop:e.title,p)},c={};e.disabled&&(c.opacity=.8);const h=e.type==="string"&&(a.length>100||a.search(`
|
30
|
+
`)>-1),f=h||e.type==="image"||e.type==="vector2";return l.jsxs("div",{className:`field ${f?"block":""}`,style:c,children:[e.type!=="button"&&l.jsx("label",{ref:i,children:ot(e.title)},"fieldLabel"),e.type==="string"&&!h&&l.jsx("input",{type:"text",disabled:e.disabled,onChange:u,value:a}),e.type==="string"&&h&&l.jsx("textarea",{cols:50,rows:10,disabled:e.disabled!==void 0?e.disabled:!0,onChange:u,onKeyDown:m=>{e.onKeyDown!==void 0&&e.onKeyDown(m)},value:a}),e.type==="boolean"&&l.jsx("input",{type:"checkbox",disabled:e.disabled,onChange:u,checked:a}),e.type==="number"&&l.jsx($e,{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($e,{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:u,disabled:e.disabled,className:"color"}),l.jsx("input",{type:"color",value:a,onChange:u,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("img",{alt:e.title,ref:o,onClick:()=>{Gn().then(m=>{o.current.src=m,e.onChange!==void 0&&e.onChange(e.prop!==void 0?e.prop:e.title,m)})},src:a.src.length>0?a.src:Bn}),e.type==="option"&&l.jsx(l.Fragment,{children:l.jsx("select",{onChange:u,disabled:e.disabled,defaultValue:e.value,children:e.options?.map((m,p)=>l.jsx("option",{value:m.value,children:ot(m.title)},p))})}),e.type==="vector2"&&l.jsx(aa,{value:a,min:0,max:1,onChange:u}),e.type==="grid3"&&l.jsx($t,{value:a,onChange:u}),e.type==="grid4"&&l.jsx(ia,{value:a,onChange:u}),e.type==="euler"&&l.jsx($t,{value:a,onChange:u})]})}function Yt(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:Yt(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 u=n.scene?.getObjectByProperty("uuid",e.uuid);u!==void 0&&(q(u,i,o),u.updateProjectionMatrix())}});else if(e.orthographicCameraInfo!==void 0)for(const t in e.orthographicCameraInfo)a.push({title:Yt(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 u=n.scene?.getObjectByProperty("uuid",e.uuid);u!==void 0&&(q(u,i,o),u.updateProjectionMatrix())}});return l.jsx(Ye,{title:"Camera",items:a})}function sa(e,n){const a=new d.Matrix4;a.elements=e.matrix;const t=new d.Vector3,i=new d.Euler,o=new d.Vector3;e.uuid.length>0&&(t.setFromMatrixPosition(a),i.setFromRotationMatrix(a),o.setFromMatrixScale(a));const u=(c,h)=>{const f=c==="rotation"?{x:h._x,y:h._y,z:h._z}:h;n.updateObject(e.uuid,c,f);const m=n.scene?.getObjectByProperty("uuid",e.uuid);m!==void 0&&q(m,c,f)};return l.jsx(Ye,{title:"Transform",items:[{title:"Position",prop:"position",type:"grid3",value:t,onChange:u},{title:"Rotation",prop:"rotation",type:"grid3",value:i,onChange:u},{title:"Scale",prop:"scale",type:"grid3",value:o,onChange:u}]})}function qt(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:qt(t),prop:t,type:"color",value:i,onChange:(o,u)=>{const c=new d.Color(u);n.updateObject(e.uuid,o,c);const h=n.scene?.getObjectByProperty("uuid",e.uuid);h!==void 0&&q(h,o,c)}}):a.push({title:qt(t),prop:t,type:typeof i,value:i,step:typeof i=="number"?.01:void 0,onChange:(o,u)=>{n.updateObject(e.uuid,o,u);const c=n.scene?.getObjectByProperty("uuid",e.uuid);c!==void 0&&q(c,o,u)}}))}return l.jsx(Ye,{title:"Light",items:a})}function ca(e,n){const a=[],t=[];let i=0;e.animations.forEach(c=>{i=Math.max(i,c.duration),c.duration>0&&t.push({title:c.name,items:[{title:"Duration",type:"number",value:c.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.scene?.getObjectByProperty("uuid",e.uuid);let u=!1;if(o!==void 0){const c=o.mixer;if(u=c!==void 0,u){const h=[{title:"Time Scale",type:"range",value:c.timeScale,step:.01,min:-1,max:2,onChange:(f,m)=>{c.timeScale=m,n.updateObject(e.uuid,"mixer.timeScale",m)}}];h.push({title:"Stop All",type:"button",onChange:()=>{c.stopAllAction(),n.requestMethod(e.uuid,"stopAllAction",void 0,"mixer")}}),a.push({title:"Mixer",items:h})}}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};let ue={...fn};function mn(e){const[n,a]=y.useState(-1);y.useEffect(()=>{function u(h){ue={...h.value},a(Date.now())}function c(){ue={...fn},a(Date.now())}return D.addEventListener(j.SET_SCENE,c),D.addEventListener(j.SET_OBJECT,u),()=>{D.removeEventListener(j.SET_SCENE,c),D.removeEventListener(j.SET_OBJECT,u)}},[]);const t=ue.type.toLowerCase(),i=ue.animations.length>0||ue.mixer!==void 0,o=t.search("mesh")>-1||t.search("line")>-1||t.search("points")>-1;return l.jsx(wt,{label:"Inspector",children:l.jsx("div",{id:"Inspector",className:e.class,children:ue.uuid.length>0&&l.jsxs(l.Fragment,{children:[l.jsxs(l.Fragment,{children:[l.jsx(yt,{type:"string",title:"Name",prop:"name",value:ue.name,disabled:!0}),l.jsx(yt,{type:"string",title:"Type",prop:"type",value:ue.type,disabled:!0}),l.jsx(yt,{type:"string",title:"UUID",prop:"uuid",value:ue.uuid,disabled:!0})]}),l.jsxs(l.Fragment,{children:[sa(ue,e.three),i?ca(ue,e.three):null,t.search("camera")>-1?ra(ue,e.three):null,t.search("light")>-1?oa(ue,e.three):null,o?ta(ue,e.three):null]})]})},n)},"Inspector")}function la(e){const[n,a]=y.useState(e.scene);y.useEffect(()=>{const o=u=>{a(u.value)};return D.addEventListener(j.SET_SCENE,o),()=>{D.removeEventListener(j.SET_SCENE,o)}},[]);const t=n!==null,i="Hierarchy - "+(t?`${n?.name}`:"No Scene");return l.jsxs("div",{id:"SidePanel",children:[l.jsx(wt,{label:i,open:!0,children:l.jsx(l.Fragment,{children:t&&l.jsx(dn,{child:n,three:e.three})})}),l.jsx(mn,{three:e.three})]},"SidePanel")}function ua(e){function n(){return e.three.scene===void 0?(console.log("No scene:",e.three),!1):!0}const a=c=>{if(!n())return;const h=e.three.scene?.getObjectByProperty("uuid",c.value);h!==void 0&&e.three.setObject(h)},t=(c,h,f)=>{if(!n())return;const m=e.three.scene?.getObjectByProperty("uuid",c);m!==void 0&&q(m,h,f)},i=c=>{if(!n())return;const h=c.value,{key:f,value:m,uuid:p}=h;t(p,f,m)},o=c=>{if(!n())return;const h=c.value;sn(h.value).then(f=>{t(h.uuid,h.key,f),t(h.uuid,"material.needsUpdate",!0)})},u=c=>{if(!n())return;const{key:h,uuid:f,value:m,subitem:p}=c.value,S=e.three.scene?.getObjectByProperty("uuid",f);if(S!==void 0)try{p!==void 0?Pn(S,p)[h](m):S[h](m)}catch(T){console.log("Error requesting method:"),console.log(T),console.log(h),console.log(m)}};return y.useEffect(()=>(D.addEventListener(j.GET_OBJECT,a),D.addEventListener(j.UPDATE_OBJECT,i),D.addEventListener(j.CREATE_TEXTURE,o),D.addEventListener(j.REQUEST_METHOD,u),()=>{D.removeEventListener(j.GET_OBJECT,a),D.removeEventListener(j.UPDATE_OBJECT,i),D.removeEventListener(j.CREATE_TEXTURE,o),D.removeEventListener(j.REQUEST_METHOD,u)}),[]),null}class da extends d.Line{constructor(n,a){const t=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],i=new d.BufferGeometry;i.setAttribute("position",new d.Float32BufferAttribute(t,3)),i.computeBoundingSphere();const o=new d.LineBasicMaterial({fog:!1});super(i,o),this.light=n,this.color=a,this.type="RectAreaLightHelper";const u=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],c=new d.BufferGeometry;c.setAttribute("position",new d.Float32BufferAttribute(u,3)),c.computeBoundingSphere(),this.add(new d.Mesh(c,new d.MeshBasicMaterial({side:d.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 Kt={type:"change"},Pt={type:"start"},Zt={type:"end"},gt=new d.Ray,Xt=new d.Plane,ha=Math.cos(70*d.MathUtils.DEG2RAD);class fa extends d.EventDispatcher{constructor(n,a){super(),this.object=n,this.domElement=a,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new d.Vector3,this.cursor=new d.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:d.MOUSE.ROTATE,MIDDLE:d.MOUSE.DOLLY,RIGHT:d.MOUSE.PAN},this.touches={ONE:d.TOUCH.ROTATE,TWO:d.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 c.phi},this.getAzimuthalAngle=function(){return c.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(s){s.addEventListener("keydown",tt),this._domElementKeyEvents=s},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(Kt),t.update(),o=i.NONE},this.update=function(){const s=new d.Vector3,E=new d.Quaternion().setFromUnitVectors(n.up,new d.Vector3(0,1,0)),P=E.clone().invert(),N=new d.Vector3,Q=new d.Quaternion,ge=new d.Vector3,ce=2*Math.PI;return function(ft=null){const mt=t.object.position;s.copy(mt).sub(t.target),s.applyQuaternion(E),c.setFromVector3(s),t.autoRotate&&o===i.NONE&&me(Me(ft)),t.enableDamping?(c.theta+=h.theta*t.dampingFactor,c.phi+=h.phi*t.dampingFactor):(c.theta+=h.theta,c.phi+=h.phi);let ve=t.minAzimuthAngle,be=t.maxAzimuthAngle;isFinite(ve)&&isFinite(be)&&(ve<-Math.PI?ve+=ce:ve>Math.PI&&(ve-=ce),be<-Math.PI?be+=ce:be>Math.PI&&(be-=ce),ve<=be?c.theta=Math.max(ve,Math.min(be,c.theta)):c.theta=c.theta>(ve+be)/2?Math.max(ve,c.theta):Math.min(be,c.theta)),c.phi=Math.max(t.minPolarAngle,Math.min(t.maxPolarAngle,c.phi)),c.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&&xe||t.object.isOrthographicCamera)c.radius=_e(c.radius);else{const Ce=c.radius;c.radius=_e(c.radius*f),He=Ce!=c.radius}if(s.setFromSpherical(c),s.applyQuaternion(P),mt.copy(t.target).add(s),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&&xe){let Ce=null;if(t.object.isPerspectiveCamera){const Fe=s.length();Ce=_e(Fe*f);const Ze=Fe-Ce;t.object.position.addScaledVector(K,Ze),t.object.updateMatrixWorld(),He=!!Ze}else if(t.object.isOrthographicCamera){const Fe=new d.Vector3(te.x,te.y,0);Fe.unproject(t.object);const Ze=t.object.zoom;t.object.zoom=Math.max(t.minZoom,Math.min(t.maxZoom,t.object.zoom/f)),t.object.updateProjectionMatrix(),He=Ze!==t.object.zoom;const pt=new d.Vector3(te.x,te.y,0);pt.unproject(t.object),t.object.position.sub(pt).add(Fe),t.object.updateMatrixWorld(),Ce=s.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):(gt.origin.copy(t.object.position),gt.direction.set(0,0,-1).transformDirection(t.object.matrix),Math.abs(t.object.up.dot(gt.direction))<ha?n.lookAt(t.target):(Xt.setFromNormalAndCoplanarPoint(t.object.up,t.target),gt.intersectPlane(Xt,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/f)),Ce!==t.object.zoom&&(t.object.updateProjectionMatrix(),He=!0)}return f=1,xe=!1,He||N.distanceToSquared(t.object.position)>u||8*(1-Q.dot(t.object.quaternion))>u||ge.distanceToSquared(t.target)>u?(t.dispatchEvent(Kt),N.copy(t.object.position),Q.copy(t.object.quaternion),ge.copy(t.target),!0):!1}}(),this.dispose=function(){t.domElement.removeEventListener("contextmenu",Ke),t.domElement.removeEventListener("pointerdown",_),t.domElement.removeEventListener("pointercancel",$),t.domElement.removeEventListener("wheel",lt),t.domElement.removeEventListener("pointermove",V),t.domElement.removeEventListener("pointerup",$),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 u=1e-6,c=new d.Spherical,h=new d.Spherical;let f=1;const m=new d.Vector3,p=new d.Vector2,S=new d.Vector2,T=new d.Vector2,B=new d.Vector2,ee=new d.Vector2,de=new d.Vector2,ae=new d.Vector2,H=new d.Vector2,L=new d.Vector2,K=new d.Vector3,te=new d.Vector2;let xe=!1;const W=[],he={};let re=!1;function Me(s){return s!==null?2*Math.PI/60*t.autoRotateSpeed*s:2*Math.PI/60/60*t.autoRotateSpeed}function Oe(s){const E=Math.abs(s*.01);return Math.pow(.95,t.zoomSpeed*E)}function me(s){h.theta-=s}function F(s){h.phi-=s}const pe=function(){const s=new d.Vector3;return function(P,N){s.setFromMatrixColumn(N,0),s.multiplyScalar(-P),m.add(s)}}(),R=function(){const s=new d.Vector3;return function(P,N){t.screenSpacePanning===!0?s.setFromMatrixColumn(N,1):(s.setFromMatrixColumn(N,0),s.crossVectors(t.object.up,s)),s.multiplyScalar(P),m.add(s)}}(),Ee=function(){const s=new d.Vector3;return function(P,N){const Q=t.domElement;if(t.object.isPerspectiveCamera){const ge=t.object.position;s.copy(ge).sub(t.target);let ce=s.length();ce*=Math.tan(t.object.fov/2*Math.PI/180),pe(2*P*ce/Q.clientHeight,t.object.matrix),R(2*N*ce/Q.clientHeight,t.object.matrix)}else t.object.isOrthographicCamera?(pe(P*(t.object.right-t.object.left)/t.object.zoom/Q.clientWidth,t.object.matrix),R(N*(t.object.top-t.object.bottom)/t.object.zoom/Q.clientHeight,t.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),t.enablePan=!1)}}();function Te(s){t.object.isPerspectiveCamera||t.object.isOrthographicCamera?f/=s:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),t.enableZoom=!1)}function Pe(s){t.object.isPerspectiveCamera||t.object.isOrthographicCamera?f*=s:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),t.enableZoom=!1)}function Re(s,E){if(!t.zoomToCursor)return;xe=!0;const P=t.domElement.getBoundingClientRect(),N=s-P.left,Q=E-P.top,ge=P.width,ce=P.height;te.x=N/ge*2-1,te.y=-(Q/ce)*2+1,K.set(te.x,te.y,1).unproject(t.object).sub(t.object.position).normalize()}function _e(s){return Math.max(t.minDistance,Math.min(t.maxDistance,s))}function ke(s){p.set(s.clientX,s.clientY)}function Ae(s){Re(s.clientX,s.clientX),ae.set(s.clientX,s.clientY)}function Ie(s){B.set(s.clientX,s.clientY)}function ne(s){S.set(s.clientX,s.clientY),T.subVectors(S,p).multiplyScalar(t.rotateSpeed);const E=t.domElement;me(2*Math.PI*T.x/E.clientHeight),F(2*Math.PI*T.y/E.clientHeight),p.copy(S),t.update()}function Se(s){H.set(s.clientX,s.clientY),L.subVectors(H,ae),L.y>0?Te(Oe(L.y)):L.y<0&&Pe(Oe(L.y)),ae.copy(H),t.update()}function ze(s){ee.set(s.clientX,s.clientY),de.subVectors(ee,B).multiplyScalar(t.panSpeed),Ee(de.x,de.y),B.copy(ee),t.update()}function Ge(s){Re(s.clientX,s.clientY),s.deltaY<0?Pe(Oe(s.deltaY)):s.deltaY>0&&Te(Oe(s.deltaY)),t.update()}function oe(s){let E=!1;switch(s.code){case t.keys.UP:s.ctrlKey||s.metaKey||s.shiftKey?F(2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Ee(0,t.keyPanSpeed),E=!0;break;case t.keys.BOTTOM:s.ctrlKey||s.metaKey||s.shiftKey?F(-2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Ee(0,-t.keyPanSpeed),E=!0;break;case t.keys.LEFT:s.ctrlKey||s.metaKey||s.shiftKey?me(2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Ee(t.keyPanSpeed,0),E=!0;break;case t.keys.RIGHT:s.ctrlKey||s.metaKey||s.shiftKey?me(-2*Math.PI*t.rotateSpeed/t.domElement.clientHeight):Ee(-t.keyPanSpeed,0),E=!0;break}E&&(s.preventDefault(),t.update())}function v(s){if(W.length===1)p.set(s.pageX,s.pageY);else{const E=Le(s),P=.5*(s.pageX+E.x),N=.5*(s.pageY+E.y);p.set(P,N)}}function b(s){if(W.length===1)B.set(s.pageX,s.pageY);else{const E=Le(s),P=.5*(s.pageX+E.x),N=.5*(s.pageY+E.y);B.set(P,N)}}function O(s){const E=Le(s),P=s.pageX-E.x,N=s.pageY-E.y,Q=Math.sqrt(P*P+N*N);ae.set(0,Q)}function A(s){t.enableZoom&&O(s),t.enablePan&&b(s)}function fe(s){t.enableZoom&&O(s),t.enableRotate&&v(s)}function se(s){if(W.length==1)S.set(s.pageX,s.pageY);else{const P=Le(s),N=.5*(s.pageX+P.x),Q=.5*(s.pageY+P.y);S.set(N,Q)}T.subVectors(S,p).multiplyScalar(t.rotateSpeed);const E=t.domElement;me(2*Math.PI*T.x/E.clientHeight),F(2*Math.PI*T.y/E.clientHeight),p.copy(S)}function w(s){if(W.length===1)ee.set(s.pageX,s.pageY);else{const E=Le(s),P=.5*(s.pageX+E.x),N=.5*(s.pageY+E.y);ee.set(P,N)}de.subVectors(ee,B).multiplyScalar(t.panSpeed),Ee(de.x,de.y),B.copy(ee)}function C(s){const E=Le(s),P=s.pageX-E.x,N=s.pageY-E.y,Q=Math.sqrt(P*P+N*N);H.set(0,Q),L.set(0,Math.pow(H.y/ae.y,t.zoomSpeed)),Te(L.y),ae.copy(H);const ge=(s.pageX+E.x)*.5,ce=(s.pageY+E.y)*.5;Re(ge,ce)}function z(s){t.enableZoom&&C(s),t.enablePan&&w(s)}function X(s){t.enableZoom&&C(s),t.enableRotate&&se(s)}function _(s){t.enabled!==!1&&(W.length===0&&(t.domElement.setPointerCapture(s.pointerId),t.domElement.addEventListener("pointermove",V),t.domElement.addEventListener("pointerup",$)),!Rt(s)&&(Ot(s),s.pointerType==="touch"?nt(s):De(s)))}function V(s){t.enabled!==!1&&(s.pointerType==="touch"?dt(s):qe(s))}function $(s){switch(Tt(s),W.length){case 0:t.domElement.releasePointerCapture(s.pointerId),t.domElement.removeEventListener("pointermove",V),t.domElement.removeEventListener("pointerup",$),t.dispatchEvent(Zt),o=i.NONE;break;case 1:const E=W[0],P=he[E];nt({pointerId:E,pageX:P.x,pageY:P.y});break}}function De(s){let E;switch(s.button){case 0:E=t.mouseButtons.LEFT;break;case 1:E=t.mouseButtons.MIDDLE;break;case 2:E=t.mouseButtons.RIGHT;break;default:E=-1}switch(E){case d.MOUSE.DOLLY:if(t.enableZoom===!1)return;Ae(s),o=i.DOLLY;break;case d.MOUSE.ROTATE:if(s.ctrlKey||s.metaKey||s.shiftKey){if(t.enablePan===!1)return;Ie(s),o=i.PAN}else{if(t.enableRotate===!1)return;ke(s),o=i.ROTATE}break;case d.MOUSE.PAN:if(s.ctrlKey||s.metaKey||s.shiftKey){if(t.enableRotate===!1)return;ke(s),o=i.ROTATE}else{if(t.enablePan===!1)return;Ie(s),o=i.PAN}break;default:o=i.NONE}o!==i.NONE&&t.dispatchEvent(Pt)}function qe(s){switch(o){case i.ROTATE:if(t.enableRotate===!1)return;ne(s);break;case i.DOLLY:if(t.enableZoom===!1)return;Se(s);break;case i.PAN:if(t.enablePan===!1)return;ze(s);break}}function lt(s){t.enabled===!1||t.enableZoom===!1||o!==i.NONE||(s.preventDefault(),t.dispatchEvent(Pt),Ge(ut(s)),t.dispatchEvent(Zt))}function ut(s){const E=s.deltaMode,P={clientX:s.clientX,clientY:s.clientY,deltaY:s.deltaY};switch(E){case 1:P.deltaY*=16;break;case 2:P.deltaY*=100;break}return s.ctrlKey&&!re&&(P.deltaY*=10),P}function et(s){s.key==="Control"&&(re=!0,t.domElement.getRootNode().addEventListener("keyup",Ne,{passive:!0,capture:!0}))}function Ne(s){s.key==="Control"&&(re=!1,t.domElement.getRootNode().removeEventListener("keyup",Ne,{passive:!0,capture:!0}))}function tt(s){t.enabled===!1||t.enablePan===!1||oe(s)}function nt(s){switch(ht(s),W.length){case 1:switch(t.touches.ONE){case d.TOUCH.ROTATE:if(t.enableRotate===!1)return;v(s),o=i.TOUCH_ROTATE;break;case d.TOUCH.PAN:if(t.enablePan===!1)return;b(s),o=i.TOUCH_PAN;break;default:o=i.NONE}break;case 2:switch(t.touches.TWO){case d.TOUCH.DOLLY_PAN:if(t.enableZoom===!1&&t.enablePan===!1)return;A(s),o=i.TOUCH_DOLLY_PAN;break;case d.TOUCH.DOLLY_ROTATE:if(t.enableZoom===!1&&t.enableRotate===!1)return;fe(s),o=i.TOUCH_DOLLY_ROTATE;break;default:o=i.NONE}break;default:o=i.NONE}o!==i.NONE&&t.dispatchEvent(Pt)}function dt(s){switch(ht(s),o){case i.TOUCH_ROTATE:if(t.enableRotate===!1)return;se(s),t.update();break;case i.TOUCH_PAN:if(t.enablePan===!1)return;w(s),t.update();break;case i.TOUCH_DOLLY_PAN:if(t.enableZoom===!1&&t.enablePan===!1)return;z(s),t.update();break;case i.TOUCH_DOLLY_ROTATE:if(t.enableZoom===!1&&t.enableRotate===!1)return;X(s),t.update();break;default:o=i.NONE}}function Ke(s){t.enabled!==!1&&s.preventDefault()}function Ot(s){W.push(s.pointerId)}function Tt(s){delete he[s.pointerId];for(let E=0;E<W.length;E++)if(W[E]==s.pointerId){W.splice(E,1);return}}function Rt(s){for(let E=0;E<W.length;E++)if(W[E]==s.pointerId)return!0;return!1}function ht(s){let E=he[s.pointerId];E===void 0&&(E=new d.Vector2,he[s.pointerId]=E),E.set(s.pageX,s.pageY)}function Le(s){const E=s.pointerId===W[0]?W[1]:W[0];return he[E]}t.domElement.addEventListener("contextmenu",Ke),t.domElement.addEventListener("pointerdown",_),t.domElement.addEventListener("pointercancel",$),t.domElement.addEventListener("wheel",lt,{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]=y.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))})]})},We=y.forwardRef(function(n,a){const[t,i]=y.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:u=>{i(u)},up:!0})]})});class ma extends d.ShaderMaterial{constructor(n){super({extensions:{derivatives:!0},glslVersion:d.GLSL3,side:d.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 d.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() {
|
@@ -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 ba extends d.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:ga,fragmentShader:va})}}let bt="Renderer",we,yt=!1,jt=!1,Y=null,re=null,Ue=null,Be=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",c=localStorage.getItem(`${n}_blCam`)!==null?localStorage.getItem(`${n}_blCam`):"Front",u=localStorage.getItem(`${n}_brCam`)!==null?localStorage.getItem(`${n}_brCam`):"Top",o=x.useMemo(()=>new Map,[]),h=x.useMemo(()=>new Map,[]),f=x.useMemo(()=>new Map,[]),m=x.useMemo(()=>new Map,[]),p=x.useMemo(()=>new d.Scene,[]),S=x.useMemo(()=>new d.Group,[]),_=x.useMemo(()=>new pa,[]),$=x.useMemo(()=>new d.AxesHelper(500),[]),ee=x.useMemo(()=>new d.AxesHelper(100),[]),de=x.useMemo(()=>new d.MeshDepthMaterial,[]),ae=x.useMemo(()=>new d.MeshNormalMaterial,[]),G=x.useMemo(()=>new ba,[]),L=x.useMemo(()=>new d.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),[]);function K(v,b){const O=new d.OrthographicCamera(-100,100,100,-100,50,5e3);return O.name=v,O.position.copy(b),O.lookAt(0,0,0),o.set(v,O),O}const te=["Renderer","Depth","Normals","UVs","Wireframe"],xe=["Single","Side by Side","Stacked","Quad"],H=x.useRef(null),he=x.useRef(null),se=x.useRef(null),Me=x.useRef(null),Oe=x.useRef(null),me=x.useRef(null),[F,pe]=x.useState(a!==null?a:"Single"),[T,Ee]=x.useState(null),[Te,Pe]=x.useState(!1),[Re,_e]=x.useState(!1),[je,Ae]=x.useState(!1),[,Ie]=x.useState(Date.now());localStorage.setItem(`${n}_mode`,F),localStorage.setItem(`${n}_tlCam`,t),localStorage.setItem(`${n}_trCam`,i),localStorage.setItem(`${n}_blCam`,c),localStorage.setItem(`${n}_brCam`,u);const ne=(v,b)=>{const O=h.get(v.name);if(O!==void 0&&O.dispose(),h.delete(v.name),v.name==="UI")return;const A=new fa(v,b);switch(A.enableDamping=!0,A.dampingFactor=.05,v.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":A.enableRotate=!1;break}h.set(v.name,A)},Se=v=>{const b=f.get(v.name);b!==void 0&&(p.remove(b),b.dispose(),f.delete(v.name));const O=h.get(v.name);O!==void 0&&(O.dispose(),h.delete(v.name))},ze=()=>{h.forEach((v,b)=>{v.dispose();const O=f.get(b);O!==void 0&&(p.remove(O),O.dispose()),f.delete(b),h.delete(b)}),h.clear(),f.clear()},Ge=()=>{switch(F){case"Single":ne(Y,se.current);break;case"Side by Side":case"Stacked":ne(Y,se.current),ne(re,Me.current);break;case"Quad":ne(Y,se.current),ne(re,Me.current),ne(Ue,Oe.current),ne(Be,me.current);break}};x.useEffect(()=>{const v=new d.WebGLRenderer({canvas:H.current,stencil:!1});v.autoClear=!1,v.shadowMap.enabled=!0,v.setPixelRatio(devicePixelRatio),v.setClearColor(0),e.three.renderer=v,Ee(v)},[]),x.useEffect(()=>{p.name="Debug Scene",p.uuid="",S.name="helpers",p.add(S),S.add(_),$.name="axisHelper",S.add($),ee.name="interactionHelper",S.add(ee),ee.visible=!1,K("Top",new d.Vector3(0,1e3,0)),K("Bottom",new d.Vector3(0,-1e3,0)),K("Left",new d.Vector3(-1e3,0,0)),K("Right",new d.Vector3(1e3,0,0)),K("Front",new d.Vector3(0,0,1e3)),K("Back",new d.Vector3(0,0,-1e3)),K("Orthographic",new d.Vector3(1e3,1e3,1e3)),K("UI",new d.Vector3);const v=new d.PerspectiveCamera(60,1,50,5e3);v.name="Debug",v.position.set(500,500,500),v.lookAt(0,0,0),o.set("Debug",v),Y=o.get(localStorage.getItem(`${n}_tlCam`)),re=o.get(localStorage.getItem(`${n}_trCam`)),Ue=o.get(localStorage.getItem(`${n}_blCam`)),Be=o.get(localStorage.getItem(`${n}_brCam`))},[]),x.useEffect(()=>{const v=()=>{m.forEach(w=>{S.remove(w),w.dispose()}),m.clear()},b=()=>{we.traverse(w=>{if(w.type.search("Light")>-1){let C;switch(w.type){case"DirectionalLight":C=new d.DirectionalLightHelper(w,100),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break;case"HemisphereLight":C=new d.HemisphereLightHelper(w,250),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break;case"RectAreaLight":C=new da(w),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break;case"PointLight":C=new d.PointLightHelper(w,100),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break;case"SpotLight":C=new d.SpotLightHelper(w),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break}}})},O=w=>{S.add($),v(),St(we),p.remove(we);const C=e.scenes.get(w.value.name);if(C!==void 0){const V=new C;e.onSceneSet!==void 0&&e.onSceneSet(V),we=V,e.three.scene=we,p.add(we),jt=!0,b()}},A=w=>{const C=w.value,V=e.three.scene?.getObjectByProperty("uuid",C.uuid);if(V!==void 0&&o.set(C.name,V),V instanceof d.PerspectiveCamera){const X=new d.CameraHelper(V);f.set(V.name,X),p.add(X)}Ie(Date.now())},fe=w=>{const C=f.get(w.value.name);C!==void 0&&(p.remove(C),C.dispose()),o.delete(w.value.name),Ie(Date.now())},oe=w=>{const C=we.getObjectByProperty("uuid",w.value.uuid);C&&C.add($)};return k.addEventListener(D.SET_SCENE,O),k.addEventListener(D.ADD_CAMERA,A),k.addEventListener(D.REMOVE_CAMERA,fe),k.addEventListener(D.SET_OBJECT,oe),()=>{k.removeEventListener(D.SET_SCENE,O),k.removeEventListener(D.ADD_CAMERA,A),k.removeEventListener(D.REMOVE_CAMERA,fe),k.removeEventListener(D.SET_OBJECT,oe)}},[]),x.useEffect(()=>{if(T===null)return;let v=window.innerWidth,b=window.innerHeight,O=Math.floor(v/2),A=Math.floor(b/2),fe=-1;const oe=()=>{v=window.innerWidth-300,b=window.innerHeight,O=Math.floor(v/2),A=Math.floor(b/2),e.three.resize(v,b),e.onSceneResize!==void 0&&jt&&e.onSceneResize(we,v,b);let R=v,B=b;switch(F){case"Side by Side":R=O,B=b;break;case"Stacked":R=v,B=A;break;case"Quad":R=O,B=A;break}o.forEach(W=>{W instanceof d.OrthographicCamera?(W.left=R/-2,W.right=R/2,W.top=B/2,W.bottom=B/-2,W.name==="UI"&&(W.position.x=v/2,W.position.y=b/-2,W.position.z=100),W.updateProjectionMatrix()):W instanceof d.PerspectiveCamera&&(W.aspect=R/B,W.updateProjectionMatrix(),f.get(W.name)?.update())})},w=()=>{T.setViewport(0,0,v,b),T.setScissor(0,0,v,b),T.render(p,Y)},C=()=>{if(F==="Side by Side")T.setViewport(0,0,O,b),T.setScissor(0,0,O,b),T.render(p,Y),T.setViewport(O,0,O,b),T.setScissor(O,0,O,b),T.render(p,re);else{const R=b-A;T.setViewport(0,R,v,A),T.setScissor(0,R,v,A),T.render(p,Y),T.setViewport(0,0,v,A),T.setScissor(0,0,v,A),T.render(p,re)}},V=()=>{let R=0,B=0;B=b-A,R=0,T.setViewport(R,B,O,A),T.setScissor(R,B,O,A),T.render(p,Y),R=O,T.setViewport(R,B,O,A),T.setScissor(R,B,O,A),T.render(p,re),B=0,R=0,T.setViewport(R,B,O,A),T.setScissor(R,B,O,A),T.render(p,Ue),R=O,T.setViewport(R,B,O,A),T.setScissor(R,B,O,A),T.render(p,Be)},X=()=>{switch(h.forEach(R=>{R.update()}),f.forEach(R=>{R.update()}),m.forEach(R=>{R.update!==void 0&&R.update()}),e.onSceneUpdate!==void 0&&jt&&e.onSceneUpdate(we),T.clear(),F){case"Single":w();break;case"Side by Side":case"Stacked":C();break;case"Quad":V();break}fe=requestAnimationFrame(X)};return Ge(),window.addEventListener("resize",oe),oe(),X(),()=>{window.removeEventListener("resize",oe),cancelAnimationFrame(fe),fe=-1}},[F,T]),x.useEffect(()=>{if(T!==null){const v=new d.Raycaster,b=new d.Vector2,O=(w,C,V,X)=>{switch(F){case"Quad":w<V?C<X?v.setFromCamera(b,Y):v.setFromCamera(b,Ue):C<X?v.setFromCamera(b,re):v.setFromCamera(b,Be);break;case"Side by Side":w<V?v.setFromCamera(b,Y):v.setFromCamera(b,re);break;case"Single":v.setFromCamera(b,Y);break;case"Stacked":C<X?v.setFromCamera(b,Y):v.setFromCamera(b,re);break}},A=w=>{if(!yt)return;const C=new d.Vector2;T.getSize(C);const V=Math.min(w.clientX,C.x),X=Math.min(w.clientY,C.y);b.x=Qe(V,0,C.x,-1,1),b.y=Qe(X,0,C.y,1,-1);const R=C.x/2,B=C.y/2,W=()=>{V<R?b.x=Qe(V,0,R,-1,1):b.x=Qe(V,R,C.x,-1,1)},ke=()=>{X<B?b.y=Qe(X,0,B,1,-1):b.y=Qe(X,B,C.y,1,-1)};switch(F){case"Quad":W(),ke();break;case"Side by Side":W();break;case"Stacked":ke(),ke();break}O(V,X,R,B);const qe=v.intersectObjects(we.children);qe.length>0&&ee.position.copy(qe[0].point)},fe=w=>{if(!yt)return;const C=new d.Vector2;if(T.getSize(C),w.clientX>=C.x)return;A(w);const V=v.intersectObjects(we.children);V.length>0&&e.three.getObject(V[0].object.uuid)},oe=he.current;return oe.addEventListener("mousemove",A,!1),oe.addEventListener("click",fe,!1),()=>{oe.removeEventListener("mousemove",A),oe.removeEventListener("click",fe)}}},[F,T]);const ce=[];return o.forEach((v,b)=>{ce.push(b)}),l.jsxs("div",{className:"multiview",children:[l.jsx("canvas",{ref:H}),T!==null&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:`cameras ${F==="Single"||F==="Stacked"?"single":""}`,ref:he,children:[F==="Single"&&l.jsx(l.Fragment,{children:l.jsx(We,{camera:Y,options:ce,ref:se,onSelect:v=>{h.get(Y.name)?.dispose();const b=o.get(v);b!==void 0&&(Se(Y),Y=b,localStorage.setItem(`${n}_tlCam`,b.name),ne(b,se.current))}})}),(F==="Side by Side"||F==="Stacked")&&l.jsxs(l.Fragment,{children:[l.jsx(We,{camera:Y,options:ce,ref:se,onSelect:v=>{h.get(Y.name)?.dispose();const b=o.get(v);b!==void 0&&(Se(Y),Y=b,localStorage.setItem(`${n}_tlCam`,b.name),ne(b,se.current))}}),l.jsx(We,{camera:re,options:ce,ref:Me,onSelect:v=>{h.get(re.name)?.dispose();const b=o.get(v);b!==void 0&&(Se(re),re=b,localStorage.setItem(`${n}_trCam`,b.name),ne(b,Me.current))}})]}),F==="Quad"&&l.jsxs(l.Fragment,{children:[l.jsx(We,{camera:Y,options:ce,ref:se,onSelect:v=>{h.get(Y.name)?.dispose();const b=o.get(v);b!==void 0&&(Se(Y),Y=b,localStorage.setItem(`${n}_tlCam`,b.name),ne(b,se.current))}}),l.jsx(We,{camera:re,options:ce,ref:Me,onSelect:v=>{h.get(re.name)?.dispose();const b=o.get(v);b!==void 0&&(Se(re),re=b,localStorage.setItem(`${n}_trCam`,b.name),ne(b,Me.current))}}),l.jsx(We,{camera:Ue,options:ce,ref:Oe,onSelect:v=>{h.get(Ue.name)?.dispose();const b=o.get(v);b!==void 0&&(Se(Ue),Ue=b,localStorage.setItem(`${n}_blCam`,b.name),ne(b,Oe.current))}}),l.jsx(We,{camera:Be,options:ce,ref:me,onSelect:v=>{h.get(Be.name)?.dispose();const b=o.get(v);b!==void 0&&(Se(Be),Be=b,localStorage.setItem(`${n}_brCam`,b.name),ne(b,me.current))}})]})]}),l.jsxs("div",{className:"settings",children:[l.jsx(xt,{index:xe.indexOf(F),options:xe,onSelect:v=>{v!==F&&(ze(),pe(v))},open:Te,onToggle:v=>{Pe(v),Re&&_e(!1),je&&Ae(!1)}}),l.jsx(xt,{index:te.indexOf(bt),options:te,onSelect:v=>{if(v!==bt)switch(bt=v,bt){case"Depth":p.overrideMaterial=de;break;case"Normals":p.overrideMaterial=ae;break;default:case"Renderer":p.overrideMaterial=null;break;case"Wireframe":p.overrideMaterial=L;break;case"UVs":p.overrideMaterial=G;break}},open:Re,onToggle:v=>{Te&&Pe(!1),_e(v),je&&Ae(!1)}}),l.jsx(xt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:v=>{yt=v==="Selection Mode",ee.visible=yt},open:je,onToggle:v=>{Te&&Pe(!1),Re&&_e(!1),Ae(v)}})]})]})]})}function xa(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=wt;exports.Application=wn;exports.BaseRemote=lt;exports.ChildObject=Ut;exports.ContainerObject=dn;exports.Draggable=cn;exports.DraggableItem=on;exports.Dropdown=ln;exports.DropdownItem=un;exports.Editor=xa;exports.Inspector=mn;exports.MultiView=ya;exports.NavButton=Ft;exports.RemoteComponents=Mn;exports.RemoteController=Fn;exports.RemoteTheatre=Ct;exports.RemoteThree=kn;exports.RemoteTweakpane=Dn;exports.SceneInspector=ua;exports.SidePanel=la;exports.ToolEvents=D;exports.capitalize=ct;exports.clamp=Ve;exports.colorToHex=tn;exports.debugDispatcher=k;exports.defaultTheatreCallback=En;exports.dispose=St;exports.disposeMaterial=an;exports.disposeTexture=Cn;exports.distance=Sn;exports.hierarchyUUID=Lt;exports.isColor=en;exports.mix=Dt;exports.noop=Et;exports.normalize=kt;exports.randomID=Qt;exports.resetThreeObjects=nn;exports.round=At;exports.theatreEditorApp=On;
|
144
|
+
}`;class ba extends d.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:ga,fragmentShader:va})}}let vt="Renderer",we,bt=!1,kt=!1,Y=null,ie=null,Be=null,Ue=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",u=localStorage.getItem(`${n}_brCam`)!==null?localStorage.getItem(`${n}_brCam`):"Top",c=y.useMemo(()=>new Map,[]),h=y.useMemo(()=>new Map,[]),f=y.useMemo(()=>new Map,[]),m=y.useMemo(()=>new Map,[]),p=y.useMemo(()=>new d.Scene,[]),S=y.useMemo(()=>new d.Group,[]),T=y.useMemo(()=>new pa,[]),B=y.useMemo(()=>new d.AxesHelper(500),[]),ee=y.useMemo(()=>new d.AxesHelper(100),[]),de=y.useMemo(()=>new d.MeshDepthMaterial,[]),ae=y.useMemo(()=>new d.MeshNormalMaterial,[]),H=y.useMemo(()=>new ba,[]),L=y.useMemo(()=>new d.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),[]);function K(v,b){const O=new d.OrthographicCamera(-100,100,100,-100,50,5e3);return O.name=v,O.position.copy(b),O.lookAt(0,0,0),c.set(v,O),O}const te=["Renderer","Depth","Normals","UVs","Wireframe"],xe=["Single","Side by Side","Stacked","Quad"],W=y.useRef(null),he=y.useRef(null),re=y.useRef(null),Me=y.useRef(null),Oe=y.useRef(null),me=y.useRef(null),[F,pe]=y.useState(a!==null?a:"Single"),[R,Ee]=y.useState(null),[Te,Pe]=y.useState(!1),[Re,_e]=y.useState(!1),[ke,Ae]=y.useState(!1),[,Ie]=y.useState(Date.now());localStorage.setItem(`${n}_mode`,F),localStorage.setItem(`${n}_tlCam`,t),localStorage.setItem(`${n}_trCam`,i),localStorage.setItem(`${n}_blCam`,o),localStorage.setItem(`${n}_brCam`,u);const ne=(v,b)=>{const O=h.get(v.name);if(O!==void 0&&O.dispose(),h.delete(v.name),v.name==="UI")return;const A=new fa(v,b);switch(A.enableDamping=!0,A.dampingFactor=.05,v.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":A.enableRotate=!1;break}h.set(v.name,A)},Se=v=>{const b=f.get(v.name);b!==void 0&&(p.remove(b),b.dispose(),f.delete(v.name));const O=h.get(v.name);O!==void 0&&(O.dispose(),h.delete(v.name))},ze=()=>{h.forEach((v,b)=>{v.dispose();const O=f.get(b);O!==void 0&&(p.remove(O),O.dispose()),f.delete(b),h.delete(b)}),h.clear(),f.clear()},Ge=()=>{switch(F){case"Single":ne(Y,re.current);break;case"Side by Side":case"Stacked":ne(Y,re.current),ne(ie,Me.current);break;case"Quad":ne(Y,re.current),ne(ie,Me.current),ne(Be,Oe.current),ne(Ue,me.current);break}};y.useEffect(()=>{const v=new d.WebGLRenderer({canvas:W.current,stencil:!1});v.autoClear=!1,v.shadowMap.enabled=!0,v.setPixelRatio(devicePixelRatio),v.setClearColor(0),e.three.renderer=v,Ee(v)},[]),y.useEffect(()=>{p.name="Debug Scene",p.uuid="",S.name="helpers",p.add(S),S.add(T),B.name="axisHelper",S.add(B),ee.name="interactionHelper",S.add(ee),ee.visible=!1,K("Top",new d.Vector3(0,1e3,0)),K("Bottom",new d.Vector3(0,-1e3,0)),K("Left",new d.Vector3(-1e3,0,0)),K("Right",new d.Vector3(1e3,0,0)),K("Front",new d.Vector3(0,0,1e3)),K("Back",new d.Vector3(0,0,-1e3)),K("Orthographic",new d.Vector3(1e3,1e3,1e3)),K("UI",new d.Vector3);const v=new d.PerspectiveCamera(60,1,50,5e3);v.name="Debug",v.position.set(500,500,500),v.lookAt(0,0,0),c.set("Debug",v),Y=c.get(localStorage.getItem(`${n}_tlCam`)),ie=c.get(localStorage.getItem(`${n}_trCam`)),Be=c.get(localStorage.getItem(`${n}_blCam`)),Ue=c.get(localStorage.getItem(`${n}_brCam`))},[]),y.useEffect(()=>{const v=()=>{m.forEach(w=>{S.remove(w),w.dispose()}),m.clear()},b=()=>{we.traverse(w=>{if(w.type.search("Light")>-1){let C;switch(w.type){case"DirectionalLight":C=new d.DirectionalLightHelper(w,100),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break;case"HemisphereLight":C=new d.HemisphereLightHelper(w,250),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break;case"RectAreaLight":C=new da(w),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break;case"PointLight":C=new d.PointLightHelper(w,100),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break;case"SpotLight":C=new d.SpotLightHelper(w),C.name=`${w.name}Helper`,m.set(w.name,C),S.add(C);break}}})},O=w=>{S.add(B),v(),St(we),p.remove(we);const C=e.scenes.get(w.value.name);if(C!==void 0){const z=new C;e.onSceneSet!==void 0&&e.onSceneSet(z),we=z,e.three.scene=we,p.add(we),kt=!0,b()}},A=w=>{const C=w.value,z=e.three.scene?.getObjectByProperty("uuid",C.uuid);if(z!==void 0&&c.set(C.name,z),z instanceof d.PerspectiveCamera){const X=new d.CameraHelper(z);f.set(z.name,X),p.add(X)}Ie(Date.now())},fe=w=>{const C=f.get(w.value.name);C!==void 0&&(p.remove(C),C.dispose()),c.delete(w.value.name),Ie(Date.now())},se=w=>{const C=we.getObjectByProperty("uuid",w.value.uuid);C&&C.add(B)};return D.addEventListener(j.SET_SCENE,O),D.addEventListener(j.ADD_CAMERA,A),D.addEventListener(j.REMOVE_CAMERA,fe),D.addEventListener(j.SET_OBJECT,se),()=>{D.removeEventListener(j.SET_SCENE,O),D.removeEventListener(j.ADD_CAMERA,A),D.removeEventListener(j.REMOVE_CAMERA,fe),D.removeEventListener(j.SET_OBJECT,se)}},[]),y.useEffect(()=>{if(R===null)return;let v=window.innerWidth,b=window.innerHeight,O=Math.floor(v/2),A=Math.floor(b/2),fe=-1;const se=()=>{v=window.innerWidth-300,b=window.innerHeight,O=Math.floor(v/2),A=Math.floor(b/2),e.three.resize(v,b),e.onSceneResize!==void 0&&kt&&e.onSceneResize(we,v,b);let _=v,V=b;switch(F){case"Side by Side":_=O,V=b;break;case"Stacked":_=v,V=A;break;case"Quad":_=O,V=A;break}c.forEach($=>{$ instanceof d.OrthographicCamera?($.left=_/-2,$.right=_/2,$.top=V/2,$.bottom=V/-2,$.name==="UI"&&($.position.x=v/2,$.position.y=b/-2,$.position.z=100),$.updateProjectionMatrix()):$ instanceof d.PerspectiveCamera&&($.aspect=_/V,$.updateProjectionMatrix(),f.get($.name)?.update())})},w=()=>{R.setViewport(0,0,v,b),R.setScissor(0,0,v,b),R.render(p,Y)},C=()=>{if(F==="Side by Side")R.setViewport(0,0,O,b),R.setScissor(0,0,O,b),R.render(p,Y),R.setViewport(O,0,O,b),R.setScissor(O,0,O,b),R.render(p,ie);else{const _=b-A;R.setViewport(0,_,v,A),R.setScissor(0,_,v,A),R.render(p,Y),R.setViewport(0,0,v,A),R.setScissor(0,0,v,A),R.render(p,ie)}},z=()=>{let _=0,V=0;V=b-A,_=0,R.setViewport(_,V,O,A),R.setScissor(_,V,O,A),R.render(p,Y),_=O,R.setViewport(_,V,O,A),R.setScissor(_,V,O,A),R.render(p,ie),V=0,_=0,R.setViewport(_,V,O,A),R.setScissor(_,V,O,A),R.render(p,Be),_=O,R.setViewport(_,V,O,A),R.setScissor(_,V,O,A),R.render(p,Ue)},X=()=>{switch(h.forEach(_=>{_.update()}),f.forEach(_=>{_.update()}),m.forEach(_=>{_.update!==void 0&&_.update()}),e.onSceneUpdate!==void 0&&kt&&e.onSceneUpdate(we),R.clear(),F){case"Single":w();break;case"Side by Side":case"Stacked":C();break;case"Quad":z();break}fe=requestAnimationFrame(X)};return Ge(),window.addEventListener("resize",se),se(),X(),()=>{window.removeEventListener("resize",se),cancelAnimationFrame(fe),fe=-1}},[F,R]),y.useEffect(()=>{if(R!==null){const v=new d.Raycaster,b=new d.Vector2,O=(w,C,z,X)=>{switch(F){case"Quad":w<z?C<X?v.setFromCamera(b,Y):v.setFromCamera(b,Be):C<X?v.setFromCamera(b,ie):v.setFromCamera(b,Ue);break;case"Side by Side":w<z?v.setFromCamera(b,Y):v.setFromCamera(b,ie);break;case"Single":v.setFromCamera(b,Y);break;case"Stacked":C<X?v.setFromCamera(b,Y):v.setFromCamera(b,ie);break}},A=w=>{if(!bt)return;const C=new d.Vector2;R.getSize(C);const z=Math.min(w.clientX,C.x),X=Math.min(w.clientY,C.y);b.x=Qe(z,0,C.x,-1,1),b.y=Qe(X,0,C.y,1,-1);const _=C.x/2,V=C.y/2,$=()=>{z<_?b.x=Qe(z,0,_,-1,1):b.x=Qe(z,_,C.x,-1,1)},De=()=>{X<V?b.y=Qe(X,0,V,1,-1):b.y=Qe(X,V,C.y,1,-1)};switch(F){case"Quad":$(),De();break;case"Side by Side":$();break;case"Stacked":De(),De();break}O(z,X,_,V);const qe=v.intersectObjects(we.children);qe.length>0&&ee.position.copy(qe[0].point)},fe=w=>{if(!bt)return;const C=new d.Vector2;if(R.getSize(C),w.clientX>=C.x)return;A(w);const z=v.intersectObjects(we.children);z.length>0&&e.three.getObject(z[0].object.uuid)},se=he.current;return se.addEventListener("mousemove",A,!1),se.addEventListener("click",fe,!1),()=>{se.removeEventListener("mousemove",A),se.removeEventListener("click",fe)}}},[F,R]);const oe=[];return c.forEach((v,b)=>{oe.push(b)}),l.jsxs("div",{className:"multiview",children:[l.jsx("canvas",{ref:W}),R!==null&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:`cameras ${F==="Single"||F==="Stacked"?"single":""}`,ref:he,children:[F==="Single"&&l.jsx(l.Fragment,{children:l.jsx(We,{camera:Y,options:oe,ref:re,onSelect:v=>{h.get(Y.name)?.dispose();const b=c.get(v);b!==void 0&&(Se(Y),Y=b,localStorage.setItem(`${n}_tlCam`,b.name),ne(b,re.current))}})}),(F==="Side by Side"||F==="Stacked")&&l.jsxs(l.Fragment,{children:[l.jsx(We,{camera:Y,options:oe,ref:re,onSelect:v=>{h.get(Y.name)?.dispose();const b=c.get(v);b!==void 0&&(Se(Y),Y=b,localStorage.setItem(`${n}_tlCam`,b.name),ne(b,re.current))}}),l.jsx(We,{camera:ie,options:oe,ref:Me,onSelect:v=>{h.get(ie.name)?.dispose();const b=c.get(v);b!==void 0&&(Se(ie),ie=b,localStorage.setItem(`${n}_trCam`,b.name),ne(b,Me.current))}})]}),F==="Quad"&&l.jsxs(l.Fragment,{children:[l.jsx(We,{camera:Y,options:oe,ref:re,onSelect:v=>{h.get(Y.name)?.dispose();const b=c.get(v);b!==void 0&&(Se(Y),Y=b,localStorage.setItem(`${n}_tlCam`,b.name),ne(b,re.current))}}),l.jsx(We,{camera:ie,options:oe,ref:Me,onSelect:v=>{h.get(ie.name)?.dispose();const b=c.get(v);b!==void 0&&(Se(ie),ie=b,localStorage.setItem(`${n}_trCam`,b.name),ne(b,Me.current))}}),l.jsx(We,{camera:Be,options:oe,ref:Oe,onSelect:v=>{h.get(Be.name)?.dispose();const b=c.get(v);b!==void 0&&(Se(Be),Be=b,localStorage.setItem(`${n}_blCam`,b.name),ne(b,Oe.current))}}),l.jsx(We,{camera:Ue,options:oe,ref:me,onSelect:v=>{h.get(Ue.name)?.dispose();const b=c.get(v);b!==void 0&&(Se(Ue),Ue=b,localStorage.setItem(`${n}_brCam`,b.name),ne(b,me.current))}})]})]}),l.jsxs("div",{className:"settings",children:[l.jsx(xt,{index:xe.indexOf(F),options:xe,onSelect:v=>{v!==F&&(ze(),pe(v))},open:Te,onToggle:v=>{Pe(v),Re&&_e(!1),ke&&Ae(!1)}}),l.jsx(xt,{index:te.indexOf(vt),options:te,onSelect:v=>{if(v!==vt)switch(vt=v,vt){case"Depth":p.overrideMaterial=de;break;case"Normals":p.overrideMaterial=ae;break;default:case"Renderer":p.overrideMaterial=null;break;case"Wireframe":p.overrideMaterial=L;break;case"UVs":p.overrideMaterial=H;break}},open:Re,onToggle:v=>{Te&&Pe(!1),_e(v),ke&&Ae(!1)}}),l.jsx(xt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:v=>{bt=v==="Selection Mode",ee.visible=bt},open:ke,onToggle:v=>{Te&&Pe(!1),Re&&_e(!1),Ae(v)}})]})]})]})}function xa(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=wt;exports.Application=wn;exports.BaseRemote=ct;exports.ChildObject=Bt;exports.ContainerObject=dn;exports.Draggable=cn;exports.DraggableItem=on;exports.Dropdown=ln;exports.DropdownItem=un;exports.Editor=xa;exports.Inspector=mn;exports.MultiView=ya;exports.NavButton=Ft;exports.RemoteComponents=Mn;exports.RemoteController=Fn;exports.RemoteTheatre=Ct;exports.RemoteThree=Dn;exports.RemoteTweakpane=jn;exports.SceneInspector=ua;exports.SidePanel=la;exports.ToolEvents=j;exports.capitalize=ot;exports.clamp=Ve;exports.colorToHex=tn;exports.debugDispatcher=D;exports.defaultTheatreCallback=En;exports.dispose=St;exports.disposeMaterial=an;exports.disposeTexture=Cn;exports.distance=Sn;exports.hierarchyUUID=Lt;exports.isColor=en;exports.mix=jt;exports.noop=Et;exports.normalize=Dt;exports.randomID=Qt;exports.resetThreeObjects=nn;exports.round=At;exports.theatreEditorApp=On;
|