@tomorrowevening/hermes 0.0.35 → 0.0.36

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.
@@ -0,0 +1,144 @@
1
+ "use strict";var kn=Object.defineProperty;var _n=(t,n,a)=>n in t?kn(t,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[n]=a;var B=(t,n,a)=>(_n(t,typeof n!="symbol"?n+"":n,a),a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("three"),qt=require("@theatre/core"),ot=require("@theatre/studio"),jn=require("tweakpane"),Dn=require("@tweakpane/plugin-essentials"),k=require("react"),sn=require("framer-motion");function In(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const e=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,e.get?e:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const Nn=In(Dn);function $e(t){return t.substring(0,1).toUpperCase()+t.substring(1)}function Ln(t,n,a){return Math.min(n,Math.max(t,a))}function Fn(t,n){const a=t-n;return Math.sqrt(a*a)}function cn(){return Math.round(Math.random()*1e6).toString()}function ln(t){return t.r!==void 0&&t.g!==void 0&&t.b!==void 0}function un(t){const n=Math.round(t.r*255),a=Math.round(t.g*255),e=Math.round(t.b*255),r=u=>{const f=u.toString(16);return f.length===1?"0"+f:f},s=r(n),p=r(a),l=r(e);return"#"+s+p+l}function xt(t,n=1){return Number(t.toFixed(n))}exports.totalThreeObjects=0;const dn=()=>{exports.totalThreeObjects=0},Vt=t=>{if(!t)return;let n=t.name.replace(" ","");n.length===0&&(n=`obj_${exports.totalThreeObjects}`,exports.totalThreeObjects++),t.parent!==null&&(n=`${t.parent.uuid}.${n}`),t.uuid=n,t.children.forEach(a=>{Vt(a)})},Un=t=>{t==null||t.dispose()},fn=t=>{t&&(Array.isArray(t)?t.forEach(n=>n.dispose()):t.dispose())},zt=t=>{var n;if(t){for(;t.children.length>0;){const a=t.children[0];a instanceof c.PositionalAudio?(a.pause(),a.parent&&a.parent.remove(a)):zt(a)}if(t.parent&&t.parent.remove(t),t.isMesh){const a=t;(n=a.geometry)==null||n.dispose(),fn(a.material)}t.dispose!==void 0&&t.dispose()}};class Bn{constructor(n,a,e=!0,r="editor"){B(this,"components",new Map);B(this,"listen");B(this,"_debugEnabled");B(this,"broadcastChannel");B(this,"webSocket");B(this,"_mode","app");B(this,"_connected",!1);B(this,"useBC",!1);B(this,"messageHandler",n=>{this.listen!==void 0&&(this.useBC?this.listen(n.data):this.listen(JSON.parse(n.data)))});B(this,"openHandler",()=>{this._connected=!0});B(this,"closeHandler",()=>{this._connected=!1});this.editor=a&&document.location.hash.search(r)>-1,this._debugEnabled=a,a&&(this.useBC=e,e?(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){var a,e;this._mode!==n.target&&(this.useBC?(a=this.broadcastChannel)==null||a.postMessage(n):this._connected&&((e=this.webSocket)==null||e.send(JSON.stringify(n))))}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",document.title+=" - Editor")}}const D=new c.EventDispatcher,I={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{constructor(n){B(this,"app");this.app=n}dispose(){}}class hn 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}})}}function Vn(t,n){switch(n.event){case"selectComponent":D.dispatchEvent({type:I.SELECT_DROPDOWN,value:n.data});break;case"draggableListUpdate":D.dispatchEvent({type:I.DRAG_UPDATE,value:n.data});break}}const pn=()=>{},We=class We extends ct{constructor(){super(...arguments);B(this,"project");B(this,"sheets",new Map);B(this,"sheetObjects",new Map);B(this,"sheetObjectCBs",new Map);B(this,"sheetObjectUnsubscribe",new Map)}init(a,e){return this.project=qt.getProject(a,e),this.project.ready}dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}sheet(a){var r;if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}let e=this.sheets.get(a);return e!==void 0||(e=(r=this.project)==null?void 0:r.sheet(a),this.sheets.set(a,e)),e}playSheet(a,e){var r;(r=this.sheet(a))==null||r.sequence.play(e),this.app.send({event:"playSheet",target:"editor",data:{sheet:a,value:e}})}pauseSheet(a){var e;(e=this.sheet(a))==null||e.sequence.pause(),this.app.send({event:"pauseSheet",target:"editor",data:{sheet:a}})}clearSheetObjects(a){this.sheetObjects.forEach((e,r)=>{r.search(`${a}_`)>-1&&this.unsubscribe(e)})}sheetObject(a,e,r,s){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const p=this.sheet(a);if(p===void 0)return;const l=`${a}_${e}`;let u=this.sheetObjects.get(l);u!==void 0?u=p.object(e,{...r,...u.value},{reconfigure:!0}):u=p.object(e,r),this.sheetObjects.set(l,u),this.sheetObjectCBs.set(l,s!==void 0?s:pn);const f=u.onValuesChange(y=>{if(this.app.editor){for(const C in y){const x=y[C];typeof x=="object"&&ln(x)&&(y[C]={r:x.r,g:x.g,b:x.b,a:x.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheet:a,sheetObject:l,values:y}})}const v=this.sheetObjectCBs.get(l);v!==void 0&&v(y)});return this.sheetObjectUnsubscribe.set(l,f),u}unsubscribe(a){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const e=a.address.sheetId,r=a.address.objectKey,s=this.sheets.get(e);s==null||s.detachObject(r);const p=`${e}_${r}`,l=this.sheetObjectUnsubscribe.get(p);l!==void 0&&(this.sheetObjects.delete(p),this.sheetObjectCBs.delete(p),this.sheetObjectUnsubscribe.delete(p),l())}static getRafDriver(){return We.rafDriver||(We.rafDriver=qt.createRafDriver()),We.rafDriver}};B(We,"rafDriver",null);let Le=We,we;function zn(t,n){t.components.forEach(a=>{if(a instanceof Le){let e;const r=a;switch(n.event){case"setSheet":e=r.sheets.get(n.data.sheet),e!==void 0&&(we=e,ot.setSelection([e]));break;case"setSheetObject":e=r.sheetObjects.get(`${n.data.sheet}_${n.data.key}`),e!==void 0&&ot.setSelection([e]);break;case"updateSheetObject":e=r.sheets.get(n.data.sheet),e!==void 0&&e.sequence.pause(),e=r.sheetObjectCBs.get(n.data.sheetObject),e!==void 0&&e(n.data.values);break;case"updateTimeline":e=r.sheets.get(n.data.sheet),we!==void 0&&(we.sequence.position=n.data.position);break}}})}function Hn(t){if(t.editor){let n;t.components.forEach(s=>{s instanceof Le&&(n=s)}),ot.ui.restore(),ot.onSelectionChange(s=>{s.length<1||s.forEach(p=>{let l=p.address.sheetId,u="setSheet",f={};switch(p.type){case"Theatre_Sheet_PublicAPI":u="setSheet",f={sheet:p.address.sheetId},we=n.sheets.get(p.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":u="setSheetObject",l+=`_${p.address.objectKey}`,f={id:l,sheet:p.address.sheetId,key:p.address.objectKey};break}t.send({event:u,target:"app",data:f})})});let a=0;const e=()=>{if(we!==void 0&&a!==we.sequence.position){a=we.sequence.position;const s=we;t.send({event:"updateTimeline",target:"app",data:{position:a,sheet:s.address.sheetId}})}},r=()=>{e(),requestAnimationFrame(r)};e(),r()}else ot.ui.hide()}function Yn(t,n){t.editor&&t.components.forEach(a=>{var e,r;if(a instanceof Le){const s=a;switch(n.event){case"playSheet":(e=s.sheet(n.data.sheet))==null||e.sequence.play(n.data.value);break;case"pauseSheet":(r=s.sheet(n.data.sheet))==null||r.sequence.pause();break}return}})}function Gn(t){if(t.name==="cameras")return"camera";if(t.name==="interactive")return"interactive";if(t.name==="lights")return"light";if(t.name==="ui")return"ui";if(t.name==="utils")return"utils";const n=t.type;return n.search("Helper")>-1?"icon_utils":n.search("Camera")>-1?"camera":n.search("Light")>-1?"light":"obj3D"}function mn(t){const n={name:t.name,type:t.type,uuid:t.uuid,children:[]};return t.children.forEach(a=>{n.children.push(mn(a))}),n}function Wn(t){const n={};for(const a in t){const e=t[a].value;n[a]={value:e},e===null?n[a].value={src:""}:e.isTexture&&(n[a].value={src:e.image.src})}return n}function $n(t){switch(t){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function Ye(t){const n={};for(const a in t){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||$n(a))continue;const e=typeof t[a],r=t[a];switch(e){case"boolean":case"number":case"string":n[a]=r;break;case"object":if(r!==null)if(n[a]=r,r.isTexture)if(r instanceof c.Texture){const s=r.source.toJSON();n[a]={src:s.url}}else r instanceof c.CubeTexture&&(console.log("env map"),console.log(r.source.data),console.log(r.source.toJSON()),n[a]={src:""});else a==="uniforms"&&(n[a]=Wn(n[a]));else n[a]={src:""};break}}return n}function Nt(t){t.updateMatrix();const n={name:t.name,type:t.type,uuid:t.uuid,visible:t.visible,matrix:t.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0};t.animations.forEach(e=>{n.animations.push({name:e.name,duration:e.duration,blendMode:e.blendMode})});const a=t.type.toLowerCase();if(a.search("mesh")>-1){const e=t;if(Array.isArray(e.material)){const r=[];e.material.forEach(s=>{r.push(Ye(s))}),n.material=r}else n.material=Ye(e.material)}else if(a.search("points")>-1){const e=t;if(Array.isArray(e.material)){const r=[];e.material.forEach(s=>{r.push(Ye(s))}),n.material=r}else n.material=Ye(e.material)}else if(a.search("line")>-1){const e=t;if(Array.isArray(e.material)){const r=[];e.material.forEach(s=>{r.push(Ye(s))}),n.material=r}else n.material=Ye(e.material)}else a.search("camera")>-1?t.type==="PerspectiveCamera"?n.perspectiveCameraInfo={fov:t.fov,zoom:t.zoom,near:t.near,far:t.far,focus:t.focus,aspect:t.aspect,filmGauge:t.filmGauge,filmOffset:t.filmOffset}:t.type==="OrthographicCamera"&&(n.orthographicCameraInfo={zoom:t.zoom,near:t.near,far:t.far,left:t.left,right:t.right,top:t.top,bottom:t.bottom}):a.search("light")>-1&&(n.lightInfo={color:t.color,intensity:t.intensity,decay:t.decay,distance:t.distance,angle:t.angle,penumbra:t.penumbra,groundColor:t.groundColor});return n}function qn(t,n){const a=n.split(".");switch(a.length){case 1:return t[a[0]];case 2:return t[a[0]][a[1]];case 3:return t[a[0]][a[1]][a[2]];case 4:return t[a[0]][a[1]][a[2]][a[3]];case 5:return t[a[0]][a[1]][a[2]][a[3]][a[4]];case 6:return t[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]}}function ae(t,n,a){const e=n.split(".");switch(e.length){case 1:t[e[0]]=a;break;case 2:t[e[0]][e[1]]=a;break;case 3:t[e[0]][e[1]][e[2]]=a;break;case 4:t[e[0]][e[1]][e[2]][e[3]]=a;break;case 5:t[e[0]][e[1]][e[2]][e[3]][e[4]]=a;break}}function Ut(t){return new Promise((n,a)=>{const e=new Image;e.onload=()=>{const r=new c.Texture(e);r.wrapS=c.RepeatWrapping,r.wrapT=c.RepeatWrapping,r.needsUpdate=!0,n(r)},e.onerror=a,e.src=t})}class vn extends ct{constructor(){super(...arguments);B(this,"scene")}getObject(a){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:a})}setObject(a){const e=Nt(a);this.app.send({event:"setObject",target:"editor",data:e})}requestMethod(a,e,r,s){this.app.send({event:"requestMethod",target:"app",data:{uuid:a,key:e,value:r,subitem:s}})}updateObject(a,e,r){this.app.send({event:"updateObject",target:"app",data:{uuid:a,key:e,value:r}})}createTexture(a,e,r){this.app.send({event:"createTexture",target:"app",data:{uuid:a,key:e,value:r}})}setScene(a){if(a===void 0||(this.scene=a,!this.app.debugEnabled))return;dn(),Vt(this.scene);const e=mn(this.scene);this.app.send({event:"setScene",target:"editor",data:e})}addCamera(a){if(!this.app.debugEnabled)return;const e=Nt(a);this.app.send({event:"addCamera",target:"editor",data:e})}removeCamera(a){if(!this.app.debugEnabled)return;const e=Nt(a);this.app.send({event:"removeCamera",target:"editor",data:e})}}function Kn(t,n){switch(n.event){case"getObject":D.dispatchEvent({type:I.GET_OBJECT,value:n.data});break;case"updateObject":D.dispatchEvent({type:I.UPDATE_OBJECT,value:n.data});break;case"createTexture":D.dispatchEvent({type:I.CREATE_TEXTURE,value:n.data});break;case"requestMethod":D.dispatchEvent({type:I.REQUEST_METHOD,value:n.data});break}}function Xn(t,n){switch(n.event){case"setObject":D.dispatchEvent({type:I.SET_OBJECT,value:n.data});break;case"setScene":D.dispatchEvent({type:I.SET_SCENE,value:n.data});break;case"addCamera":D.dispatchEvent({type:I.ADD_CAMERA,value:n.data});break;case"removeCamera":D.dispatchEvent({type:I.REMOVE_CAMERA,value:n.data});break}}class Ht extends ct{constructor(a){super(a);B(this,"bindCBs");B(this,"buttonCBs");B(this,"pane");B(this,"appCallbacks",0);B(this,"editorCallbacks",0);B(this,"inspectorFolder");this.bindCBs=new Map,this.buttonCBs=new Map,a.editor&&this.createGUI()}createGUI(){this.pane=new jn.Pane({title:"GUI"}),this.pane.registerPlugin(Nn)}dispose(){var a;this.bindCBs.clear(),this.buttonCBs.clear(),this.appCallbacks=0,this.editorCallbacks=0,this.app.editor&&((a=this.pane)==null||a.dispose(),this.pane=void 0)}addFolder(a,e=void 0,r=void 0){if(this.app.editor)return this.pane===void 0&&this.createGUI(),(r!==void 0?r:this.pane).addFolder({title:a,...e});this.app.send({event:"addFolder",target:"app",data:{name:a,params:e,parent:r}})}get bindID(){return`debug_${Math.max(this.appCallbacks,this.editorCallbacks)}`}bind(a,e,r,s=void 0){const p=this.bindID,l=r.onChange!==void 0?r.onChange:pn;this.bindCBs.set(p,l),this.app.editor?(this.pane===void 0&&this.createGUI(),(s!==void 0?s:this.pane).addBinding(a,e,r).on("change",f=>{this.app.send({event:"updateBind",target:"app",data:{id:p,value:f.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:p,name:e,params:r,parent:s}}),this.appCallbacks++)}triggerBind(a,e){const r=this.bindCBs.get(a);r!==void 0?r(e):console.warn(`No callback for: ${a}`,e)}button(a,e,r=void 0){const s=this.bindID;this.buttonCBs.set(s,e),this.app.editor?(this.pane===void 0&&this.createGUI(),(r!==void 0?r:this.pane).addButton({title:a}).on("click",()=>{this.app.send({event:"clickButton",target:"app",data:{id:s}})}),this.editorCallbacks++):(this.app.send({event:"addButton",target:"app",data:{id:s,name:a,callback:e,parent:r}}),this.appCallbacks++)}triggerButton(a){const e=this.buttonCBs.get(a);e!==void 0&&e()}createInspector(){this.inspectorFolder=this.addFolder("Inspector",this.pane)}clearInspector(){const a=this.inspectorFolder.children.length-1;for(let e=a;e>-1;--e)this.inspectorFolder.remove(this.inspectorFolder.children[e])}}function Zn(t,n){t.components.forEach(a=>{if(a instanceof Ht){const e=a;switch(n.event){case"addFolder":e.addFolder(n.data.name,n.data.params,n.data.parent);break;case"bindObject":e.bind(n.data.name,n.data.params,n.data.parent);break;case"updateBind":e.triggerBind(n.data.id,n.data.value);break;case"addButton":e.button(n.data.name,n.data.callback,n.data.parent);break;case"clickButton":e.triggerButton(n.data.id);break}return}})}var Bt={exports:{}},nt={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var Kt;function Jn(){if(Kt)return nt;Kt=1;var t=k,n=Symbol.for("react.element"),a=Symbol.for("react.fragment"),e=Object.prototype.hasOwnProperty,r=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function p(l,u,f){var y,v={},C=null,x=null;f!==void 0&&(C=""+f),u.key!==void 0&&(C=""+u.key),u.ref!==void 0&&(x=u.ref);for(y in u)e.call(u,y)&&!s.hasOwnProperty(y)&&(v[y]=u[y]);if(l&&l.defaultProps)for(y in u=l.defaultProps,u)v[y]===void 0&&(v[y]=u[y]);return{$$typeof:n,type:l,key:C,ref:x,props:v,_owner:r.current}}return nt.Fragment=a,nt.jsx=p,nt.jsxs=p,nt}var at={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Facebook, Inc. and its affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var Xt;function Qn(){return Xt||(Xt=1,process.env.NODE_ENV!=="production"&&function(){var t=k,n=Symbol.for("react.element"),a=Symbol.for("react.portal"),e=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),p=Symbol.for("react.provider"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),y=Symbol.for("react.suspense_list"),v=Symbol.for("react.memo"),C=Symbol.for("react.lazy"),x=Symbol.for("react.offscreen"),w=Symbol.iterator,R="@@iterator";function K(i){if(i===null||typeof i!="object")return null;var m=w&&i[w]||i[R];return typeof m=="function"?m:null}var L=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function O(i){{for(var m=arguments.length,b=new Array(m>1?m-1:0),M=1;M<m;M++)b[M-1]=arguments[M];W("error",i,b)}}function W(i,m,b){{var M=L.ReactDebugCurrentFrame,N=M.getStackAddendum();N!==""&&(m+="%s",b=b.concat([N]));var H=b.map(function(j){return String(j)});H.unshift("Warning: "+m),Function.prototype.apply.call(console[i],console,H)}}var fe=!1,ne=!1,ie=!1,h=!1,g=!1,S;S=Symbol.for("react.module.reference");function _(i){return!!(typeof i=="string"||typeof i=="function"||i===e||i===s||g||i===r||i===f||i===y||h||i===x||fe||ne||ie||typeof i=="object"&&i!==null&&(i.$$typeof===C||i.$$typeof===v||i.$$typeof===p||i.$$typeof===l||i.$$typeof===u||i.$$typeof===S||i.getModuleId!==void 0))}function G(i,m,b){var M=i.displayName;if(M)return M;var N=m.displayName||m.name||"";return N!==""?b+"("+N+")":b}function Y(i){return i.displayName||"Context"}function V(i){if(i==null)return null;if(typeof i.tag=="number"&&O("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof i=="function")return i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case e:return"Fragment";case a:return"Portal";case s:return"Profiler";case r:return"StrictMode";case f:return"Suspense";case y:return"SuspenseList"}if(typeof i=="object")switch(i.$$typeof){case l:var m=i;return Y(m)+".Consumer";case p:var b=i;return Y(b._context)+".Provider";case u:return G(i,i.render,"ForwardRef");case v:var M=i.displayName||null;return M!==null?M:V(i.type)||"Memo";case C:{var N=i,H=N._payload,j=N._init;try{return V(j(H))}catch{return null}}}return null}var F=Object.assign,X=0,Z,A,z,ee,de,Ee,ut;function qe(){}qe.__reactDisabledLog=!0;function Rt(){{if(X===0){Z=console.log,A=console.info,z=console.warn,ee=console.error,de=console.group,Ee=console.groupCollapsed,ut=console.groupEnd;var i={configurable:!0,enumerable:!0,value:qe,writable:!0};Object.defineProperties(console,{info:i,log:i,warn:i,error:i,group:i,groupCollapsed:i,groupEnd:i})}X++}}function At(){{if(X--,X===0){var i={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:F({},i,{value:Z}),info:F({},i,{value:A}),warn:F({},i,{value:z}),error:F({},i,{value:ee}),group:F({},i,{value:de}),groupCollapsed:F({},i,{value:Ee}),groupEnd:F({},i,{value:ut})})}X<0&&O("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Ke=L.ReactCurrentDispatcher,Xe;function Be(i,m,b){{if(Xe===void 0)try{throw Error()}catch(N){var M=N.stack.trim().match(/\n( *(at )?)/);Xe=M&&M[1]||""}return`
18
+ `+Xe+i}}var Ve=!1,xe;{var dt=typeof WeakMap=="function"?WeakMap:Map;xe=new dt}function ft(i,m){if(!i||Ve)return"";{var b=xe.get(i);if(b!==void 0)return b}var M;Ve=!0;var N=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var H;H=Ke.current,Ke.current=null,Rt();try{if(m){var j=function(){throw Error()};if(Object.defineProperty(j.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(j,[])}catch(ge){M=ge}Reflect.construct(i,[],j)}else{try{j.call()}catch(ge){M=ge}i.call(j.prototype)}}else{try{throw Error()}catch(ge){M=ge}i()}}catch(ge){if(ge&&M&&typeof ge.stack=="string"){for(var P=ge.stack.split(`
19
+ `),ue=M.stack.split(`
20
+ `),Q=P.length-1,te=ue.length-1;Q>=1&&te>=0&&P[Q]!==ue[te];)te--;for(;Q>=1&&te>=0;Q--,te--)if(P[Q]!==ue[te]){if(Q!==1||te!==1)do if(Q--,te--,te<0||P[Q]!==ue[te]){var me=`
21
+ `+P[Q].replace(" at new "," at ");return i.displayName&&me.includes("<anonymous>")&&(me=me.replace("<anonymous>",i.displayName)),typeof i=="function"&&xe.set(i,me),me}while(Q>=1&&te>=0);break}}}finally{Ve=!1,Ke.current=H,At(),Error.prepareStackTrace=N}var He=i?i.displayName||i.name:"",$t=He?Be(He):"";return typeof i=="function"&&xe.set(i,$t),$t}function Pt(i,m,b){return ft(i,!1)}function ht(i){var m=i.prototype;return!!(m&&m.isReactComponent)}function Oe(i,m,b){if(i==null)return"";if(typeof i=="function")return ft(i,ht(i));if(typeof i=="string")return Be(i);switch(i){case f:return Be("Suspense");case y:return Be("SuspenseList")}if(typeof i=="object")switch(i.$$typeof){case u:return Pt(i.render);case v:return Oe(i.type,m,b);case C:{var M=i,N=M._payload,H=M._init;try{return Oe(H(N),m,b)}catch{}}}return""}var Me=Object.prototype.hasOwnProperty,pt={},mt=L.ReactDebugCurrentFrame;function Te(i){if(i){var m=i._owner,b=Oe(i.type,i._source,m?m.type:null);mt.setExtraStackFrame(b)}else mt.setExtraStackFrame(null)}function Ze(i,m,b,M,N){{var H=Function.call.bind(Me);for(var j in i)if(H(i,j)){var P=void 0;try{if(typeof i[j]!="function"){var ue=Error((M||"React class")+": "+b+" type `"+j+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof i[j]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw ue.name="Invariant Violation",ue}P=i[j](m,j,M,b,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(Q){P=Q}P&&!(P instanceof Error)&&(Te(N),O("%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",b,j,typeof P),Te(null)),P instanceof Error&&!(P.message in pt)&&(pt[P.message]=!0,Te(N),O("Failed %s type: %s",b,P.message),Te(null))}}}var Re=Array.isArray;function Je(i){return Re(i)}function kt(i){{var m=typeof Symbol=="function"&&Symbol.toStringTag,b=m&&i[Symbol.toStringTag]||i.constructor.name||"Object";return b}}function vt(i){try{return gt(i),!1}catch{return!0}}function gt(i){return""+i}function bt(i){if(vt(i))return O("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",kt(i)),gt(i)}var Ce=L.ReactCurrentOwner,Qe={key:!0,ref:!0,__self:!0,__source:!0},et,yt,ze;ze={};function _t(i){if(Me.call(i,"ref")){var m=Object.getOwnPropertyDescriptor(i,"ref").get;if(m&&m.isReactWarning)return!1}return i.ref!==void 0}function jt(i){if(Me.call(i,"key")){var m=Object.getOwnPropertyDescriptor(i,"key").get;if(m&&m.isReactWarning)return!1}return i.key!==void 0}function Et(i,m){if(typeof i.ref=="string"&&Ce.current&&m&&Ce.current.stateNode!==m){var b=V(Ce.current.type);ze[b]||(O('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',V(Ce.current.type),i.ref),ze[b]=!0)}}function Se(i,m){{var b=function(){et||(et=!0,O("%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)",m))};b.isReactWarning=!0,Object.defineProperty(i,"key",{get:b,configurable:!0})}}function Wt(i,m){{var b=function(){yt||(yt=!0,O("%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)",m))};b.isReactWarning=!0,Object.defineProperty(i,"ref",{get:b,configurable:!0})}}var o=function(i,m,b,M,N,H,j){var P={$$typeof:n,type:i,key:m,ref:b,props:j,_owner:H};return P._store={},Object.defineProperty(P._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(P,"_self",{configurable:!1,enumerable:!1,writable:!1,value:M}),Object.defineProperty(P,"_source",{configurable:!1,enumerable:!1,writable:!1,value:N}),Object.freeze&&(Object.freeze(P.props),Object.freeze(P)),P};function E(i,m,b,M,N){{var H,j={},P=null,ue=null;b!==void 0&&(bt(b),P=""+b),jt(m)&&(bt(m.key),P=""+m.key),_t(m)&&(ue=m.ref,Et(m,N));for(H in m)Me.call(m,H)&&!Qe.hasOwnProperty(H)&&(j[H]=m[H]);if(i&&i.defaultProps){var Q=i.defaultProps;for(H in Q)j[H]===void 0&&(j[H]=Q[H])}if(P||ue){var te=typeof i=="function"?i.displayName||i.name||"Unknown":i;P&&Se(j,te),ue&&Wt(j,te)}return o(i,P,ue,N,M,Ce.current,j)}}var T=L.ReactCurrentOwner,U=L.ReactDebugCurrentFrame;function J(i){if(i){var m=i._owner,b=Oe(i.type,i._source,m?m.type:null);U.setExtraStackFrame(b)}else U.setExtraStackFrame(null)}var he;he=!1;function se(i){return typeof i=="object"&&i!==null&&i.$$typeof===n}function Dt(){{if(T.current){var i=V(T.current.type);if(i)return`
22
+
23
+ Check the render method of \``+i+"`."}return""}}function It(i){{if(i!==void 0){var m=i.fileName.replace(/^.*[\\\/]/,""),b=i.lineNumber;return`
24
+
25
+ Check your code at `+m+":"+b+"."}return""}}var tt={};function ve(i){{var m=Dt();if(!m){var b=typeof i=="string"?i:i.displayName||i.name;b&&(m=`
26
+
27
+ Check the top-level render call using <`+b+">.")}return m}}function pe(i,m){{if(!i._store||i._store.validated||i.key!=null)return;i._store.validated=!0;var b=ve(m);if(tt[b])return;tt[b]=!0;var M="";i&&i._owner&&i._owner!==T.current&&(M=" It was passed a child from "+V(i._owner.type)+"."),J(i),O('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',b,M),J(null)}}function Ae(i,m){{if(typeof i!="object")return;if(Je(i))for(var b=0;b<i.length;b++){var M=i[b];se(M)&&pe(M,m)}else if(se(i))i._store&&(i._store.validated=!0);else if(i){var N=K(i);if(typeof N=="function"&&N!==i.entries)for(var H=N.call(i),j;!(j=H.next()).done;)se(j.value)&&pe(j.value,m)}}}function Pe(i){{var m=i.type;if(m==null||typeof m=="string")return;var b;if(typeof m=="function")b=m.propTypes;else if(typeof m=="object"&&(m.$$typeof===u||m.$$typeof===v))b=m.propTypes;else return;if(b){var M=V(m);Ze(b,i.props,"prop",M,i)}else if(m.PropTypes!==void 0&&!he){he=!0;var N=V(m);O("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",N||"Unknown")}typeof m.getDefaultProps=="function"&&!m.getDefaultProps.isReactClassApproved&&O("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function ke(i){{for(var m=Object.keys(i.props),b=0;b<m.length;b++){var M=m[b];if(M!=="children"&&M!=="key"){J(i),O("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",M),J(null);break}}i.ref!==null&&(J(i),O("Invalid attribute `ref` supplied to `React.Fragment`."),J(null))}}function _e(i,m,b,M,N,H){{var j=_(i);if(!j){var P="";(i===void 0||typeof i=="object"&&i!==null&&Object.keys(i).length===0)&&(P+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var ue=It(N);ue?P+=ue:P+=Dt();var Q;i===null?Q="null":Je(i)?Q="array":i!==void 0&&i.$$typeof===n?(Q="<"+(V(i.type)||"Unknown")+" />",P=" Did you accidentally export a JSX literal instead of a component?"):Q=typeof i,O("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Q,P)}var te=E(i,m,b,N,H);if(te==null)return te;if(j){var me=m.children;if(me!==void 0)if(M)if(Je(me)){for(var He=0;He<me.length;He++)Ae(me[He],i);Object.freeze&&Object.freeze(me)}else O("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 Ae(me,i)}return i===e?ke(te):Pe(te),te}}function Tn(i,m,b){return _e(i,m,b,!0)}function Rn(i,m,b){return _e(i,m,b,!1)}var An=Rn,Pn=Tn;at.Fragment=e,at.jsx=An,at.jsxs=Pn}()),at}process.env.NODE_ENV==="production"?Bt.exports=Jn():Bt.exports=Qn();var d=Bt.exports;function Yt(t){return t.title.search("<")>-1?d.jsx("button",{className:"svg",dangerouslySetInnerHTML:{__html:t.title}}):d.jsx("button",{children:t.title})}const ea=d.jsxs("svg",{className:"closeIcon",width:"14",height:"14",fill:"none",stroke:"#666666",strokeMiterlimit:"10",children:[d.jsx("circle",{cx:"7",cy:"7",r:"6"}),d.jsx("line",{x1:"4",y1:"4",x2:"10",y2:"10"}),d.jsx("line",{x1:"4",y1:"10",x2:"10",y2:"4"})]}),ta=d.jsx("svg",{className:"dragIcon",width:"14",height:"14",fill:"#666666",stroke:"none",children:d.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
+ 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 gn(t){return d.jsx(sn.Reorder.Item,{value:t.title,children:d.jsxs("div",{children:[ta,d.jsx("span",{children:t.title}),d.jsx("button",{className:"closeIcon",onClick:()=>{t.onDelete(t.index)},children:ea})]})},t.title)}function bn(t){const[n,a]=k.useState(!1),[e,r]=k.useState(t.options),s=f=>{t.onDragComplete(f),r(f)},p=f=>{const y=[...e];y.splice(f,1),s(y)},l=[];e.forEach((f,y)=>{l.push(d.jsx(gn,{index:y,title:f,onDelete:p},f))});let u="dropdown draggable";return t.subdropdown&&(u+=" subdropdown"),d.jsxs("div",{className:u,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[d.jsx(Yt,{title:t.title}),d.jsx(sn.Reorder.Group,{axis:"y",values:e,onReorder:s,style:{visibility:n?"visible":"hidden"},children:l})]})}function yn(t){const[n,a]=k.useState(!1),e=[];t.options.map((s,p)=>{t.onSelect!==void 0&&(s.onSelect=t.onSelect),e.push(d.jsx(En,{option:s},p))});let r="dropdown";return t.subdropdown&&(r+=" subdropdown"),d.jsxs("div",{className:r,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[d.jsx(Yt,{title:t.title}),d.jsx("ul",{style:{visibility:n?"visible":"hidden"},children:e})]})}function En(t){const{option:n}=t,[a,e]=k.useState("");let r;switch(n.type){case"draggable":r=d.jsx(bn,{title:n.title,options:n.value,onDragComplete:s=>{n.onDragComplete!==void 0&&n.onDragComplete(s)},subdropdown:!0});break;case"dropdown":r=d.jsx(yn,{title:n.title,options:n.value,onSelect:n.onSelect,subdropdown:!0});break;case"option":r=d.jsx("button",{onClick:()=>{n.onSelect!==void 0&&n.onSelect(n.value),n.selectable&&(a!==n.title?e(n.title):e(""))},children:n.title});break}return d.jsx("li",{className:a===n.title?"selected":"",children:r},cn())}function na(t){const n=[],a=[];t.components.forEach(s=>{s instanceof hn?n.push(Vn):s instanceof Le?(n.push(zn),a.push(Yn),Hn(t)):s instanceof vn?(n.push(Kn),a.push(Xn)):s instanceof Ht&&n.push(Zn)});function e(s){switch(n.forEach(p=>p(t,s)),s.event){case"custom":D.dispatchEvent({type:I.CUSTOM,value:s.data});break}}function r(s){switch(a.forEach(p=>p(t,s)),s.event){case"custom":D.dispatchEvent({type:I.CUSTOM,value:s.data});break}}t.listen=s=>{s.target==="editor"?r(s):e(s)}}const aa=`out vec3 worldPosition;
30
+ uniform float uDistance;
31
+
32
+ void main() {
33
+ // Scale the plane by the drawing distance
34
+ worldPosition = position.xzy * uDistance;
35
+ worldPosition.xz += cameraPosition.xz;
36
+
37
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(worldPosition, 1.0);
38
+ }`,ia=`out vec4 fragColor;
39
+ in vec3 worldPosition;
40
+
41
+ uniform float uDivisions;
42
+ uniform float uScale;
43
+ uniform vec3 uColor;
44
+ uniform float uDistance;
45
+ uniform float uSubgridOpacity;
46
+ uniform float uGridOpacity;
47
+
48
+ float getGrid(float gapSize) {
49
+ vec2 worldPositionByDivision = worldPosition.xz / gapSize;
50
+
51
+ // Inverted, 0 where line, >1 where there's no line
52
+ // We use the worldPosition (which in this case we use similarly to UVs) differential to control the anti-aliasing
53
+ // We need to do the -0.5)-0.5 trick because the result fades out from 0 to 1, and we want both
54
+ // worldPositionByDivision == 0.3 and worldPositionByDivision == 0.7 to result in the same fade, i.e. 0.3,
55
+ // otherwise only one side of the line will be anti-aliased
56
+ vec2 grid = abs(fract(worldPositionByDivision-0.5)-0.5) / fwidth(worldPositionByDivision) / 2.0;
57
+ float gridLine = min(grid.x, grid.y);
58
+
59
+ // Uninvert and clamp
60
+ return 1.0 - min(gridLine, 1.0);
61
+ }
62
+
63
+ void main() {
64
+ float cameraDistanceToGridPlane = distance(cameraPosition.y, worldPosition.y);
65
+ float cameraDistanceToFragmentOnGridPlane = distance(cameraPosition.xz, worldPosition.xz);
66
+
67
+ // The size of the grid and subgrid are powers of each other and they are determined based on camera distance.
68
+ // The current grid will become the next subgrid when it becomes too small, and its next power becomes the new grid.
69
+ float subGridPower = pow(uDivisions, floor(log(cameraDistanceToGridPlane) / log(uDivisions)));
70
+ float gridPower = subGridPower * uDivisions;
71
+
72
+ // If we want to fade both the grid and its subgrid, we need to displays 3 different opacities, with the next grid being the third
73
+ float nextGridPower = gridPower * uDivisions;
74
+
75
+ // 1 where grid, 0 where no grid
76
+ float subgrid = getGrid(subGridPower * uScale);
77
+ float grid = getGrid(gridPower * uScale);
78
+ float nextGrid = getGrid(nextGridPower * uScale);
79
+
80
+ // Where we are between the introduction of the current grid power and when we switch to the next grid power
81
+ float stepPercentage = (cameraDistanceToGridPlane - subGridPower)/(gridPower - subGridPower);
82
+
83
+ // The last x percentage of the current step over which we want to fade
84
+ float fadeRange = 0.3;
85
+
86
+ // We calculate the fade percentage from the step percentage and the fade range
87
+ float fadePercentage = max(stepPercentage - 1.0 + fadeRange, 0.0) / fadeRange;
88
+
89
+ // Set base opacity based on how close we are to the drawing distance, with a cubic falloff
90
+ float baseOpacity = subgrid * pow(1.0 - min(cameraDistanceToFragmentOnGridPlane / uDistance, 1.0), 3.0);
91
+
92
+ // Shade the subgrid
93
+ fragColor = vec4(uColor.rgb, (baseOpacity - fadePercentage) * uSubgridOpacity);
94
+
95
+ // Somewhat arbitrary additional fade coefficient to counter anti-aliasing popping when switching between grid powers
96
+ float fadeCoefficient = 0.5;
97
+
98
+ // Shade the grid
99
+ fragColor.a = mix(fragColor.a, baseOpacity * uGridOpacity - fadePercentage * (uGridOpacity - uSubgridOpacity) * fadeCoefficient, grid);
100
+
101
+ // Shade the next grid
102
+ fragColor.a = mix(fragColor.a, baseOpacity * uGridOpacity, nextGrid);
103
+
104
+ if (fragColor.a <= 0.0) discard;
105
+ }`;class ra extends c.ShaderMaterial{constructor(n){super({extensions:{derivatives:!0},glslVersion:c.GLSL3,side:c.DoubleSide,transparent:!0,uniforms:{uScale:{value:(n==null?void 0:n.scale)!==void 0?n==null?void 0:n.scale:.1},uDivisions:{value:(n==null?void 0:n.divisions)!==void 0?n==null?void 0:n.divisions:10},uColor:{value:(n==null?void 0:n.color)!==void 0?n==null?void 0:n.color:new c.Color(16777215)},uDistance:{value:(n==null?void 0:n.distance)!==void 0?n==null?void 0:n.distance:1e4},uSubgridOpacity:{value:(n==null?void 0:n.subgridOpacity)!==void 0?n==null?void 0:n.subgridOpacity:.15},uGridOpacity:{value:(n==null?void 0:n.gridOpacity)!==void 0?n==null?void 0:n.gridOpacity:.25}},vertexShader:aa,fragmentShader:ia,name:"InfiniteGrid",depthWrite:!1})}}class Cn extends c.Mesh{constructor(){const a=new ra;super(new c.PlaneGeometry(2,2),a);B(this,"gridMaterial");this.gridMaterial=a,this.frustumCulled=!1,this.name="InfiniteGridHelper",this.position.y=.1}update(){this.gridMaterial.needsUpdate=!0}}const oa=`#include <common>
106
+ #include <batching_pars_vertex>
107
+ #include <uv_pars_vertex>
108
+ #include <color_pars_vertex>
109
+ #include <morphtarget_pars_vertex>
110
+ #include <skinning_pars_vertex>
111
+ #include <logdepthbuf_pars_vertex>
112
+ #include <clipping_planes_pars_vertex>
113
+
114
+ void main() {
115
+ #include <uv_vertex>
116
+ #include <color_vertex>
117
+ #include <morphcolor_vertex>
118
+ #include <batching_vertex>
119
+
120
+ #if defined ( USE_SKINNING )
121
+ #include <beginnormal_vertex>
122
+ #include <morphnormal_vertex>
123
+ #include <skinbase_vertex>
124
+ #include <skinnormal_vertex>
125
+ #include <defaultnormal_vertex>
126
+ #endif
127
+
128
+ #include <begin_vertex>
129
+ #include <morphtarget_vertex>
130
+ #include <skinning_vertex>
131
+ #include <project_vertex>
132
+ #include <logdepthbuf_vertex>
133
+ #include <clipping_planes_vertex>
134
+ #include <worldpos_vertex>
135
+ }`,sa=`
136
+ #include <common>
137
+ #include <uv_pars_fragment>
138
+ #include <clipping_planes_pars_fragment>
139
+
140
+ void main() {
141
+ #include <clipping_planes_fragment>
142
+ gl_FragColor = vec4(vec3(vUv, 0.0), 1.0);
143
+ }`;class Sn extends c.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:oa,fragmentShader:sa})}}function Mt(t){const[n,a]=k.useState(t.open!==void 0?t.open:!0),e=!n||t.children===void 0;return d.jsxs("div",{className:`accordion ${e?"hide":""}`,children:[d.jsxs("button",{className:"toggle",onClick:()=>{const r=!n;t.onToggle!==void 0&&t.onToggle(r),a(r)},children:[d.jsx("p",{className:`status ${n?"open":""}`,children:"Toggle"}),d.jsx("p",{className:"label",children:$e(t.label)})]}),t.button,d.jsx("div",{className:n?"open":"",children:d.jsx("div",{children:t.children})})]})}function Gt(t){const[n,a]=k.useState(!1),e=t.child.children.length>0,r=[];return t.child.children.length>0&&t.child.children.map(s=>{r.push(d.jsx(Gt,{child:s,three:t.three},Math.random()))}),d.jsxs("div",{className:"childObject",children:[d.jsxs("div",{className:"child",children:[e?d.jsx("button",{className:"status",style:{backgroundPositionX:n?"-14px":"2px"},onClick:()=>{a(!n)}}):null,d.jsx("button",{className:"name",style:{left:e?"20px":"5px"},onClick:()=>{t.three.getObject(t.child.uuid),n||a(!0)},children:t.child.name.length>0?`${t.child.name} (${t.child.type})`:`${t.child.type}::${t.child.uuid}`}),d.jsx("div",{className:`icon ${Gn(t.child)}`})]}),d.jsx("div",{className:n?"open":"",children:d.jsx("div",{className:"container",children:r})})]},Math.random())}function wn(t){const n=[];return t.child.children.map(a=>{n.push(d.jsx(Gt,{child:a,three:t.three},Math.random()))}),d.jsx("div",{className:`scene ${t.class!==void 0?t.class:""}`,children:n})}const ca="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA5klEQVRoge2Y0Q6EIAwE6cX//+X6cCFpSMEKVTdk501OpRNKiyelFC0b8Ps6gCwoggZF0KAIGhRBgyJoUAQNiqCxjciR9SLV//eZiAyvK3U8i/QVaQO2YyLSFVvlkdTKDjJCukh2ykR5ZEW+kHmlatl90RaBtDkK/w7CYhuRUEO0ee3l+J3m55Vm+17vtwjTnV1V3QA8qfbeUXCzRWDpiLLS+OyzvRW7IzW9R+okvclsqR09743bo0yUpc1+lSJvNsa002+Euk9GKzV7SmZDRIMiaFAEDYqgQRE0KIIGRdCgCBoUQeMEMERadX7YUz8AAAAASUVORK5CYII=";function la(t){return"items"in t}function Fe(t){const n=[];return t.items.forEach(a=>{la(a)?n.push(d.jsx(Fe,{title:$e(a.title),items:a.items},Math.random())):n.push(d.jsx(rt,{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:(e,r)=>{a.onChange!==void 0&&a.onChange(e,r)}},Math.random()))}),d.jsx(Mt,{label:t.title,open:t.expanded===!0,children:n})}function ua(t){return!(t==="alphaHash"||t==="alphaToCoverage"||t==="attenuationDistance"||t==="blendDstAlpha"||t==="colorWrite"||t==="combine"||t==="defaultAttributeValues"||t==="depthFunc"||t==="forceSinglePass"||t==="glslVersion"||t==="linecap"||t==="linejoin"||t==="linewidth"||t==="normalMapType"||t==="precision"||t==="premultipliedAlpha"||t==="shadowSide"||t==="toneMapped"||t==="uniformsGroups"||t==="uniformsNeedUpdate"||t==="userData"||t==="vertexColors"||t==="version"||t==="wireframeLinecap"||t==="wireframeLinejoin"||t==="wireframeLinewidth"||t.slice(0,4)==="clip"||t.slice(0,7)==="polygon"||t.slice(0,7)==="stencil"||t.slice(0,2)==="is")}function je(t){switch(t){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 t}function da(t){return t.toLowerCase().search("intensity")>-1||t==="anisotropyRotation"||t==="blendAlpha"||t==="bumpScale"||t==="clearcoatRoughness"||t==="displacementBias"||t==="displacementScale"||t==="metalness"||t==="opacity"||t==="reflectivity"||t==="refractionRatio"||t==="roughness"||t==="sheenRoughness"||t==="thickness"}function fa(){const t=document.createElement("input");return t.type="file",new Promise((n,a)=>{t.addEventListener("change",function(){if(t.files===null)a();else{const e=t.files[0],r=new FileReader;r.onload=function(s){n(s.target.result)},r.readAsDataURL(e)}}),t.click()})}const ha=[{title:"Front",value:c.FrontSide},{title:"Back",value:c.BackSide},{title:"Double",value:c.DoubleSide}],pa=[{title:"No Blending",value:c.NoBlending},{title:"Normal",value:c.NormalBlending},{title:"Additive",value:c.AdditiveBlending},{title:"Subtractive",value:c.SubtractiveBlending},{title:"Multiply",value:c.MultiplyBlending},{title:"Custom",value:c.CustomBlending}],ma=[{title:"Add",value:c.AddEquation},{title:"Subtract",value:c.SubtractEquation},{title:"Reverse Subtract",value:c.ReverseSubtractEquation},{title:"Min",value:c.MinEquation},{title:"Max",value:c.MaxEquation}],va=[{title:"Zero",valye:c.ZeroFactor},{title:"One",valye:c.OneFactor},{title:"Src Color",valye:c.SrcColorFactor},{title:"One Minus Src Color",valye:c.OneMinusSrcColorFactor},{title:"Src Alpha",valye:c.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:c.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:c.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:c.OneMinusDstAlphaFactor},{title:"Dst Color",valye:c.DstColorFactor},{title:"One Minus Dst Color",valye:c.OneMinusDstColorFactor},{title:"Src Alpha Saturate",valye:c.SrcAlphaSaturateFactor},{title:"Constant Color",valye:c.ConstantColorFactor},{title:"One Minus Constant Color",valye:c.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:c.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:c.OneMinusConstantAlphaFactor}],ga=[{title:"Zero",valye:c.ZeroFactor},{title:"One",valye:c.OneFactor},{title:"Src Color",valye:c.SrcColorFactor},{title:"One Minus Src Color",valye:c.OneMinusSrcColorFactor},{title:"Src Alpha",valye:c.SrcAlphaFactor},{title:"One Minus Src Alpha",valye:c.OneMinusSrcAlphaFactor},{title:"Dst Alpha",valye:c.DstAlphaFactor},{title:"One Minus Dst Alpha",valye:c.OneMinusDstAlphaFactor},{title:"Dst Color",valye:c.DstColorFactor},{title:"One Minus Dst Color",valye:c.OneMinusDstColorFactor},{title:"Constant Color",valye:c.ConstantColorFactor},{title:"One Minus Constant Color",valye:c.OneMinusConstantColorFactor},{title:"Constant Alpha",valye:c.ConstantAlphaFactor},{title:"One Minus Constant Alpha",valye:c.OneMinusConstantAlphaFactor}];function it(t,n){t.needsUpdate=!0,t.type="option",t.options=n}function Zt(t,n,a){const e=[];for(const r in t){if(!ua(r))continue;const s=typeof t[r],p=t[r];if(s==="boolean"||s==="number"||s==="string"){const l={title:je(r),prop:r,type:s,value:p,min:void 0,max:void 0,needsUpdate:s==="boolean",onChange:(f,y)=>{var C;a.updateObject(n.uuid,`material.${f}`,y),l.needsUpdate&&a.updateObject(n.uuid,"material.needsUpdate",!0);const v=(C=a.scene)==null?void 0:C.getObjectByProperty("uuid",n.uuid);v!==void 0&&ae(v,`material.${f}`,y)}};switch(r){case"blending":it(l,pa);break;case"blendDst":it(l,ga);break;case"blendEquation":it(l,ma);break;case"blendSrc":it(l,va);break;case"side":it(l,ha);break}da(r)&&(l.value=Number(p),l.type="range",l.min=0,l.max=1,l.step=.01);const u=s==="string"&&(r==="vertexShader"||r==="fragmentShader");u&&(l.disabled=!1,l.latest=l.value,l.onChange=(f,y)=>{l.latest=y}),e.push(l),u&&e.push({title:`${$e(r)} - Update`,type:"button",onChange:()=>{var y;a.updateObject(n.uuid,`material.${r}`,l.latest),a.updateObject(n.uuid,"material.needsUpdate",!0);const f=(y=a.scene)==null?void 0:y.getObjectByProperty("uuid",n.uuid);f!==void 0&&(ae(f,`material.${r}`,l.latest),f.material.needsUpdate=!0)}})}else if(s==="object")if(p.isColor)e.push({title:je(r),prop:r,type:"color",value:p,onChange:(l,u)=>{var v;const f=new c.Color(u);a.updateObject(n.uuid,`material.${l}`,f);const y=(v=a.scene)==null?void 0:v.getObjectByProperty("uuid",n.uuid);y!==void 0&&ae(y,`material.${l}`,f)}});else if(Array.isArray(p)){const l=[];for(const u in p)l.push({title:`${u}`,type:`${typeof p[u]}`,value:p[u],onChange:(f,y)=>{var C;a.updateObject(n.uuid,`material.${r}`,y);const v=(C=a.scene)==null?void 0:C.getObjectByProperty("uuid",n.uuid);v!==void 0&&ae(v,`material.${r}`,y)}});e.push({title:je(r),items:l})}else{const l=[];for(const u in p){const f=p[u];switch(typeof f){case"boolean":case"number":case"string":u==="src"?e.push({title:je(r),type:"image",value:f,onChange:(v,C)=>{var w;a.createTexture(n.uuid,`material.${r}`,C);const x=(w=a.scene)==null?void 0:w.getObjectByProperty("uuid",n.uuid);x!==void 0&&Ut(C).then(R=>{ae(x,`material.${r}`,R),ae(x,"material.needsUpdate",!0)})}}):l.push({title:`${je(u)}`,prop:`material.${r}.${u}`,type:`${typeof t[r][u]}`,value:p[u],onChange:(v,C)=>{var w;a.updateObject(n.uuid,`material.${r}.${u}`,C);const x=(w=a.scene)==null?void 0:w.getObjectByProperty("uuid",n.uuid);x!==void 0&&ae(x,`material.${r}.${u}`,C)}});break;case"object":if(f.value!==void 0&&f.value.src!==void 0)l.push({title:je(u),type:"image",value:f.value.src,onChange:(v,C)=>{var w;a.createTexture(n.uuid,`material.${r}.${u}.value`,p);const x=(w=a.scene)==null?void 0:w.getObjectByProperty("uuid",n.uuid);x!==void 0&&Ut(C).then(R=>{ae(x,`material.${r}.${u}.value`,R)})}});else if(r==="uniforms"){const v=f.value,C=(x,w,R)=>({title:x,type:"number",value:R,step:.01,onChange:(K,L)=>{var fe;const O=`material.uniforms.${u}.value.${w}`;a.updateObject(n.uuid,O,L);const W=(fe=a.scene)==null?void 0:fe.getObjectByProperty("uuid",n.uuid);W!==void 0&&ae(W,O,L)}});if(typeof f.value=="number")l.push({title:u,type:"number",value:f.value,onChange:(x,w)=>{var L;const R=`material.${r}.${x}.value`;a.updateObject(n.uuid,R,w);const K=(L=a.scene)==null?void 0:L.getObjectByProperty("uuid",n.uuid);K!==void 0&&ae(K,R,w)}});else if(v.r!==void 0&&v.g!==void 0&&v.b!==void 0)l.push({title:u,type:"color",value:f.value,onChange:(x,w)=>{var O;const R=new c.Color(w),K=`material.${r}.${x}.value`;a.updateObject(n.uuid,K,R);const L=(O=a.scene)==null?void 0:O.getObjectByProperty("uuid",n.uuid);L!==void 0&&ae(L,K,R)}});else if(v.x!==void 0&&v.y!==void 0&&v.z===void 0&&v.w===void 0)l.push({title:u,items:[C("X","x",f.value.x),C("Y","y",f.value.y)]});else if(v.x!==void 0&&v.y!==void 0&&v.z!==void 0&&v.w===void 0)l.push({title:u,items:[C("X","x",f.value.x),C("Y","y",f.value.y),C("Z","z",f.value.z)]});else if(v.x!==void 0&&v.y!==void 0&&v.z!==void 0&&v.w!==void 0)l.push({title:u,items:[C("X","x",f.value.x),C("Y","y",f.value.y),C("Z","z",f.value.z),C("W","w",f.value.w)]});else if(v.elements!==void 0){const x=v.elements,w=[];for(let R=0;R<x.length;R++)w.push(C(R.toString(),R.toString(),x[R]));l.push({title:u,items:w})}else console.log(">>> need to add this format:",u,v)}else l.push({title:u,type:`${typeof f.value}`,value:f.value,onChange:(v,C)=>{var w;a.updateObject(n.uuid,`material.${r}.${u}.value`,C);const x=(w=a.scene)==null?void 0:w.getObjectByProperty("uuid",n.uuid);x!==void 0&&ae(x,`material.${r}.${u}.value`,C)}});break}}l.length>0&&e.push({title:je(r),items:l})}else p!==void 0&&console.log("other:",r,s,p)}return e.sort((r,s)=>r.title<s.title?-1:r.title>s.title?1:0),e.push({title:"Update Material",type:"button",onChange:()=>{a.updateObject(n.uuid,"material.needsUpdate",!0)}}),e}function ba(t,n){const a=t.material;if(Array.isArray(a)){const e=[],r=a.length;for(let s=0;s<r;s++)e.push(d.jsx(Fe,{title:`Material ${s}`,items:Zt(a[s],t,n)},`Material ${s}`));return d.jsx(d.Fragment,{children:e})}else return d.jsx(Fe,{title:"Material",items:Zt(a,t,n)})}function rt(t){var y;let n=t.value;n!==void 0&&n.isColor!==void 0&&(n=un(t.value));const[a,e]=k.useState(n),r=k.useRef(null),s=k.useRef(null),p=k.useRef(null);k.useEffect(()=>{var fe;let v=!1,C=-1,x=0,w=Number(a);const R=ne=>{v=!0,x=w,C=ne.clientX},K=ne=>{if(!v)return;const ie=t.step!==void 0?t.step:1,h=(ne.clientX-C)*ie;w=Number((x+h).toFixed(4)),s.current!==null&&(s.current.value=w.toString()),t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,w)},L=()=>{v=!1},O=()=>{v=!1},W=t.type==="number";return W&&((fe=r.current)==null||fe.addEventListener("mousedown",R,!1),document.addEventListener("mouseup",L,!1),document.addEventListener("mousemove",K,!1),document.addEventListener("contextmenu",O,!1)),()=>{var ne;W&&((ne=r.current)==null||ne.removeEventListener("mousedown",R),document.removeEventListener("mouseup",L),document.removeEventListener("mousemove",K),document.removeEventListener("contextmenu",O))}},[a]);const l=t.type==="string"&&(a.length>100||a.search(`
144
+ `)>-1),u=l||t.type==="image",f=v=>{let C=v.target.value;t.type==="boolean"?C=v.target.checked:t.type==="option"&&(C=t.options[C].value),e(C),t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,C)};return d.jsxs("div",{className:`field ${u?"block":""}`,children:[t.type!=="button"&&d.jsx("label",{ref:r,children:$e(t.title)},"fieldLabel"),t.type==="string"&&!l&&d.jsx("input",{type:"text",disabled:t.disabled,onChange:f,value:a}),t.type==="string"&&l&&d.jsx("textarea",{cols:50,rows:10,disabled:t.disabled!==void 0?t.disabled:!0,onChange:f,value:a}),t.type==="boolean"&&d.jsx("input",{type:"checkbox",disabled:t.disabled,onChange:f,checked:a}),t.type==="number"&&d.jsx("input",{ref:s,type:"number",value:a,min:t.min,max:t.max,step:t.step,disabled:t.disabled,onChange:f}),t.type==="range"&&d.jsxs(d.Fragment,{children:[d.jsx("input",{type:"text",value:a.toString(),onChange:f,disabled:t.disabled,className:"min"}),d.jsx("input",{disabled:t.disabled,type:"range",value:a,min:t.min,max:t.max,step:t.step,onChange:f})]}),t.type==="color"&&d.jsxs(d.Fragment,{children:[d.jsx("input",{type:"text",value:a.toString(),onChange:f,disabled:t.disabled,className:"color"}),d.jsx("input",{type:"color",value:a,onChange:f,disabled:t.disabled})]}),t.type==="button"&&d.jsx("button",{disabled:t.disabled,onClick:()=>{t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,!0)},children:t.title}),t.type==="image"&&d.jsx("img",{ref:p,onClick:()=>{fa().then(v=>{p.current.src=v,t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,v)})},src:a.length>0?a:ca}),t.type==="option"&&d.jsx(d.Fragment,{children:d.jsx("select",{onChange:f,disabled:t.disabled,defaultValue:t.value,children:(y=t.options)==null?void 0:y.map((v,C)=>d.jsx("option",{value:v.value,children:$e(v.title)},C))})})]})}function Jt(t){switch(t){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 t}function ya(t,n){const a=[];if(t.perspectiveCameraInfo!==void 0)for(const e in t.perspectiveCameraInfo)a.push({title:Jt(e),prop:e,type:"number",step:.01,value:t.perspectiveCameraInfo[e],onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s),n.requestMethod(t.uuid,"updateProjectionMatrix");const p=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);p!==void 0&&(ae(p,r,s),p.updateProjectionMatrix())}});else if(t.orthographicCameraInfo!==void 0)for(const e in t.orthographicCameraInfo)a.push({title:Jt(e),prop:e,type:"number",step:.01,value:t.perspectiveCameraInfo[e],onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s),n.requestMethod(t.uuid,"updateProjectionMatrix");const p=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);p!==void 0&&(ae(p,r,s),p.updateProjectionMatrix())}});return d.jsx(Fe,{title:"Camera",items:a})}const Ea=Math.PI/180,Ca=180/Math.PI;function Ge(t,n,a,e,r){return e+(t-n)*(r-e)/(a-n)}function Sa(t){return t*Ea}function Lt(t){return t*Ca}function wa(t,n){const a=new c.Matrix4;a.elements=t.matrix;const e=new c.Vector3,r=new c.Euler,s=new c.Vector3;t.uuid.length>0&&(e.setFromMatrixPosition(a),r.setFromRotationMatrix(a),s.setFromMatrixScale(a));const p=(u,f)=>{var v;n.updateObject(t.uuid,u,f);const y=(v=n.scene)==null?void 0:v.getObjectByProperty("uuid",t.uuid);y!==void 0&&ae(y,u,f)},l=(u,f)=>{p(u,Sa(f))};return d.jsx(Fe,{title:"Transform",items:[{title:"Position X",prop:"position.x",type:"number",value:e.x,onChange:p},{title:"Position Y",prop:"position.y",type:"number",value:e.y,onChange:p},{title:"Position Z",prop:"position.z",type:"number",value:e.z,onChange:p},{title:"Rotation X",prop:"rotation.x",type:"number",value:xt(Lt(r.x)),min:-360,max:360,step:.1,onChange:l},{title:"Rotation Y",prop:"rotation.y",type:"number",value:xt(Lt(r.y)),min:-360,max:360,step:.1,onChange:l},{title:"Rotation Z",prop:"rotation.z",type:"number",value:xt(Lt(r.z)),min:-360,max:360,step:.1,onChange:l},{title:"Scale X",prop:"scale.x",type:"number",value:s.x,step:.01,onChange:p},{title:"Scale Y",prop:"scale.y",type:"number",value:s.y,step:.01,onChange:p},{title:"Scale Z",prop:"scale.z",type:"number",value:s.z,step:.01,onChange:p}]})}function Qt(t){switch(t){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"}return t}function xa(t,n){const a=[];if(t.lightInfo!==void 0)for(const e in t.lightInfo){const r=t.lightInfo[e];r!==void 0&&(r.isColor!==void 0?a.push({title:Qt(e),prop:e,type:"color",value:r,onChange:(s,p)=>{var f;const l=new c.Color(p);n.updateObject(t.uuid,s,l);const u=(f=n.scene)==null?void 0:f.getObjectByProperty("uuid",t.uuid);u!==void 0&&ae(u,s,l)}}):a.push({title:Qt(e),prop:e,type:typeof r,value:r,step:typeof r=="number"?.01:void 0,onChange:(s,p)=>{var u;n.updateObject(t.uuid,s,p);const l=(u=n.scene)==null?void 0:u.getObjectByProperty("uuid",t.uuid);l!==void 0&&ae(l,s,p)}}))}return d.jsx(Fe,{title:"Light",items:a})}function Oa(t,n){var l;const a=[],e=[];let r=0;t.animations.forEach(u=>{r=Math.max(r,u.duration),u.duration>0&&e.push({title:u.name,items:[{title:"Duration",type:"number",value:u.duration,disabled:!0},{title:"Blend Mode",type:"option",disabled:!0,options:[{title:"Normal",value:2500},{title:"Additive",value:2501}]}]})}),a.push({title:"Animations",items:e});const s=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);let p=!1;if(s!==void 0){const u=s.mixer;if(p=u!==void 0,p){const f=[{title:"Time Scale",type:"range",value:u.timeScale,step:.01,min:-1,max:2,onChange:(y,v)=>{u.timeScale=v,n.updateObject(t.uuid,"mixer.timeScale",v)}}];f.push({title:"Stop All",type:"button",onChange:()=>{u.stopAllAction(),n.requestMethod(t.uuid,"stopAllAction",void 0,"mixer")}}),a.push({title:"Mixer",items:f})}}return d.jsx(Fe,{title:"Animation",items:a})}const xn={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 re={...xn};function On(t){const[n,a]=k.useState(-1);k.useEffect(()=>{function p(u){re={...u.value},a(Date.now())}function l(){re={...xn},a(Date.now())}return D.addEventListener(I.SET_SCENE,l),D.addEventListener(I.SET_OBJECT,p),()=>{D.removeEventListener(I.SET_SCENE,l),D.removeEventListener(I.SET_OBJECT,p)}},[]);const e=re.type.toLowerCase(),r=re.animations.length>0||re.mixer!==void 0,s=e.search("mesh")>-1||e.search("line")>-1||e.search("points")>-1;return d.jsx(Mt,{label:"Inspector",children:d.jsx("div",{id:"Inspector",className:t.class,children:re.uuid.length>0&&d.jsxs(d.Fragment,{children:[d.jsxs(d.Fragment,{children:[d.jsx(rt,{type:"string",title:"Name",prop:"name",value:re.name,disabled:!0}),d.jsx(rt,{type:"string",title:"Type",prop:"type",value:re.type,disabled:!0}),d.jsx(rt,{type:"string",title:"UUID",prop:"uuid",value:re.uuid,disabled:!0}),d.jsx(rt,{type:"boolean",title:"Visible",prop:"visible",value:re.visible,onChange:(p,l)=>{var f;t.three.updateObject(re.uuid,p,l);const u=(f=t.three.scene)==null?void 0:f.getObjectByProperty("uuid",re.uuid);u!==void 0&&ae(u,p,l)}})]}),d.jsxs(d.Fragment,{children:[wa(re,t.three),r?Oa(re,t.three):null,e.search("camera")>-1?ya(re,t.three):null,e.search("light")>-1?xa(re,t.three):null,s?ba(re,t.three):null]})]})},n)},"Inspector")}class Ma extends k.Component{constructor(a){super(a);B(this,"three");B(this,"setScene",a=>{this.setState(()=>({scene:a.value}))});this.state={scene:a.scene!==void 0?a.scene:null},this.three=a.three,D.addEventListener(I.SET_SCENE,this.setScene)}componentWillUnmount(){D.removeEventListener(I.SET_SCENE,this.setScene)}render(){var r;const a=this.componentState.scene!==null,e="Hierarchy - "+(a?`${(r=this.componentState.scene)==null?void 0:r.name}`:"No Scene");return d.jsx("div",{id:"SidePanel",children:d.jsxs(d.Fragment,{children:[d.jsx(Mt,{label:e,open:!0,children:d.jsx(d.Fragment,{children:a&&d.jsx(wn,{child:this.componentState.scene,three:this.three})})}),d.jsx(On,{three:this.three})]})},"SidePanel")}get componentState(){return this.state}}function Ta(t){function n(){return t.three.scene===void 0?(console.log("No scene:",t.three),!1):!0}const a=l=>{var f;if(!n())return;const u=(f=t.three.scene)==null?void 0:f.getObjectByProperty("uuid",l.value);u!==void 0&&t.three.setObject(u)},e=(l,u,f)=>{var v;if(!n())return;const y=(v=t.three.scene)==null?void 0:v.getObjectByProperty("uuid",l);y!==void 0&&ae(y,u,f)},r=l=>{if(!n())return;const u=l.value,{key:f,value:y,uuid:v}=u;e(v,f,y)},s=l=>{if(!n())return;const u=l.value;Ut(u.value).then(f=>{e(u.uuid,u.key,f),e(u.uuid,"material.needsUpdate",!0)})},p=l=>{var x;if(!n())return;const{key:u,uuid:f,value:y,subitem:v}=l.value,C=(x=t.three.scene)==null?void 0:x.getObjectByProperty("uuid",f);if(C!==void 0)try{v!==void 0?qn(C,v)[u](y):C[u](y)}catch(w){console.log("Error requesting method:"),console.log(w),console.log(u),console.log(y)}};return k.useEffect(()=>(D.addEventListener(I.GET_OBJECT,a),D.addEventListener(I.UPDATE_OBJECT,r),D.addEventListener(I.CREATE_TEXTURE,s),D.addEventListener(I.REQUEST_METHOD,p),()=>{D.removeEventListener(I.GET_OBJECT,a),D.removeEventListener(I.UPDATE_OBJECT,r),D.removeEventListener(I.CREATE_TEXTURE,s),D.removeEventListener(I.REQUEST_METHOD,p)}),[]),null}const en={type:"change"},Ft={type:"start"},tn={type:"end"},Ct=new c.Ray,nn=new c.Plane,Ra=Math.cos(70*c.MathUtils.DEG2RAD);class Aa extends c.EventDispatcher{constructor(n,a){super(),this.object=n,this.domElement=a,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new c.Vector3,this.cursor=new c.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:c.MOUSE.ROTATE,MIDDLE:c.MOUSE.DOLLY,RIGHT:c.MOUSE.PAN},this.touches={ONE:c.TOUCH.ROTATE,TWO:c.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 l.phi},this.getAzimuthalAngle=function(){return l.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(o){o.addEventListener("keydown",Qe),this._domElementKeyEvents=o},this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",Qe),this._domElementKeyEvents=null},this.saveState=function(){e.target0.copy(e.target),e.position0.copy(e.object.position),e.zoom0=e.object.zoom},this.reset=function(){e.target.copy(e.target0),e.object.position.copy(e.position0),e.object.zoom=e.zoom0,e.object.updateProjectionMatrix(),e.dispatchEvent(en),e.update(),s=r.NONE},this.update=function(){const o=new c.Vector3,E=new c.Quaternion().setFromUnitVectors(n.up,new c.Vector3(0,1,0)),T=E.clone().invert(),U=new c.Vector3,J=new c.Quaternion,he=new c.Vector3,se=2*Math.PI;return function(It=null){const tt=e.object.position;o.copy(tt).sub(e.target),o.applyQuaternion(E),l.setFromVector3(o),e.autoRotate&&s===r.NONE&&Y(_(It)),e.enableDamping?(l.theta+=u.theta*e.dampingFactor,l.phi+=u.phi*e.dampingFactor):(l.theta+=u.theta,l.phi+=u.phi);let ve=e.minAzimuthAngle,pe=e.maxAzimuthAngle;isFinite(ve)&&isFinite(pe)&&(ve<-Math.PI?ve+=se:ve>Math.PI&&(ve-=se),pe<-Math.PI?pe+=se:pe>Math.PI&&(pe-=se),ve<=pe?l.theta=Math.max(ve,Math.min(pe,l.theta)):l.theta=l.theta>(ve+pe)/2?Math.max(ve,l.theta):Math.min(pe,l.theta)),l.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,l.phi)),l.makeSafe(),e.enableDamping===!0?e.target.addScaledVector(y,e.dampingFactor):e.target.add(y),e.target.sub(e.cursor),e.target.clampLength(e.minTargetRadius,e.maxTargetRadius),e.target.add(e.cursor),e.zoomToCursor&&ie||e.object.isOrthographicCamera?l.radius=de(l.radius):l.radius=de(l.radius*f),o.setFromSpherical(l),o.applyQuaternion(T),tt.copy(e.target).add(o),e.object.lookAt(e.target),e.enableDamping===!0?(u.theta*=1-e.dampingFactor,u.phi*=1-e.dampingFactor,y.multiplyScalar(1-e.dampingFactor)):(u.set(0,0,0),y.set(0,0,0));let Ae=!1;if(e.zoomToCursor&&ie){let Pe=null;if(e.object.isPerspectiveCamera){const ke=o.length();Pe=de(ke*f);const _e=ke-Pe;e.object.position.addScaledVector(fe,_e),e.object.updateMatrixWorld()}else if(e.object.isOrthographicCamera){const ke=new c.Vector3(ne.x,ne.y,0);ke.unproject(e.object),e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/f)),e.object.updateProjectionMatrix(),Ae=!0;const _e=new c.Vector3(ne.x,ne.y,0);_e.unproject(e.object),e.object.position.sub(_e).add(ke),e.object.updateMatrixWorld(),Pe=o.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),e.zoomToCursor=!1;Pe!==null&&(this.screenSpacePanning?e.target.set(0,0,-1).transformDirection(e.object.matrix).multiplyScalar(Pe).add(e.object.position):(Ct.origin.copy(e.object.position),Ct.direction.set(0,0,-1).transformDirection(e.object.matrix),Math.abs(e.object.up.dot(Ct.direction))<Ra?n.lookAt(e.target):(nn.setFromNormalAndCoplanarPoint(e.object.up,e.target),Ct.intersectPlane(nn,e.target))))}else e.object.isOrthographicCamera&&(Ae=f!==1,Ae&&(e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/f)),e.object.updateProjectionMatrix()));return f=1,ie=!1,Ae||U.distanceToSquared(e.object.position)>p||8*(1-J.dot(e.object.quaternion))>p||he.distanceToSquared(e.target)>0?(e.dispatchEvent(en),U.copy(e.object.position),J.copy(e.object.quaternion),he.copy(e.target),!0):!1}}(),this.dispose=function(){e.domElement.removeEventListener("contextmenu",ze),e.domElement.removeEventListener("pointerdown",Te),e.domElement.removeEventListener("pointercancel",Re),e.domElement.removeEventListener("wheel",vt),e.domElement.removeEventListener("pointermove",Ze),e.domElement.removeEventListener("pointerup",Re),e._domElementKeyEvents!==null&&(e._domElementKeyEvents.removeEventListener("keydown",Qe),e._domElementKeyEvents=null)};const e=this,r={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let s=r.NONE;const p=1e-6,l=new c.Spherical,u=new c.Spherical;let f=1;const y=new c.Vector3,v=new c.Vector2,C=new c.Vector2,x=new c.Vector2,w=new c.Vector2,R=new c.Vector2,K=new c.Vector2,L=new c.Vector2,O=new c.Vector2,W=new c.Vector2,fe=new c.Vector3,ne=new c.Vector2;let ie=!1;const h=[],g={};let S=!1;function _(o){return o!==null?2*Math.PI/60*e.autoRotateSpeed*o:2*Math.PI/60/60*e.autoRotateSpeed}function G(o){const E=Math.abs(o*.01);return Math.pow(.95,e.zoomSpeed*E)}function Y(o){u.theta-=o}function V(o){u.phi-=o}const F=function(){const o=new c.Vector3;return function(T,U){o.setFromMatrixColumn(U,0),o.multiplyScalar(-T),y.add(o)}}(),X=function(){const o=new c.Vector3;return function(T,U){e.screenSpacePanning===!0?o.setFromMatrixColumn(U,1):(o.setFromMatrixColumn(U,0),o.crossVectors(e.object.up,o)),o.multiplyScalar(T),y.add(o)}}(),Z=function(){const o=new c.Vector3;return function(T,U){const J=e.domElement;if(e.object.isPerspectiveCamera){const he=e.object.position;o.copy(he).sub(e.target);let se=o.length();se*=Math.tan(e.object.fov/2*Math.PI/180),F(2*T*se/J.clientHeight,e.object.matrix),X(2*U*se/J.clientHeight,e.object.matrix)}else e.object.isOrthographicCamera?(F(T*(e.object.right-e.object.left)/e.object.zoom/J.clientWidth,e.object.matrix),X(U*(e.object.top-e.object.bottom)/e.object.zoom/J.clientHeight,e.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1)}}();function A(o){e.object.isPerspectiveCamera||e.object.isOrthographicCamera?f/=o:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function z(o){e.object.isPerspectiveCamera||e.object.isOrthographicCamera?f*=o:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function ee(o,E){if(!e.zoomToCursor)return;ie=!0;const T=e.domElement.getBoundingClientRect(),U=o-T.left,J=E-T.top,he=T.width,se=T.height;ne.x=U/he*2-1,ne.y=-(J/se)*2+1,fe.set(ne.x,ne.y,1).unproject(e.object).sub(e.object.position).normalize()}function de(o){return Math.max(e.minDistance,Math.min(e.maxDistance,o))}function Ee(o){v.set(o.clientX,o.clientY)}function ut(o){ee(o.clientX,o.clientX),L.set(o.clientX,o.clientY)}function qe(o){w.set(o.clientX,o.clientY)}function Rt(o){C.set(o.clientX,o.clientY),x.subVectors(C,v).multiplyScalar(e.rotateSpeed);const E=e.domElement;Y(2*Math.PI*x.x/E.clientHeight),V(2*Math.PI*x.y/E.clientHeight),v.copy(C),e.update()}function At(o){O.set(o.clientX,o.clientY),W.subVectors(O,L),W.y>0?A(G(W.y)):W.y<0&&z(G(W.y)),L.copy(O),e.update()}function Ke(o){R.set(o.clientX,o.clientY),K.subVectors(R,w).multiplyScalar(e.panSpeed),Z(K.x,K.y),w.copy(R),e.update()}function Xe(o){ee(o.clientX,o.clientY),o.deltaY<0?z(G(o.deltaY)):o.deltaY>0&&A(G(o.deltaY)),e.update()}function Be(o){let E=!1;switch(o.code){case e.keys.UP:o.ctrlKey||o.metaKey||o.shiftKey?V(2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):Z(0,e.keyPanSpeed),E=!0;break;case e.keys.BOTTOM:o.ctrlKey||o.metaKey||o.shiftKey?V(-2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):Z(0,-e.keyPanSpeed),E=!0;break;case e.keys.LEFT:o.ctrlKey||o.metaKey||o.shiftKey?Y(2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):Z(e.keyPanSpeed,0),E=!0;break;case e.keys.RIGHT:o.ctrlKey||o.metaKey||o.shiftKey?Y(-2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):Z(-e.keyPanSpeed,0),E=!0;break}E&&(o.preventDefault(),e.update())}function Ve(o){if(h.length===1)v.set(o.pageX,o.pageY);else{const E=Se(o),T=.5*(o.pageX+E.x),U=.5*(o.pageY+E.y);v.set(T,U)}}function xe(o){if(h.length===1)w.set(o.pageX,o.pageY);else{const E=Se(o),T=.5*(o.pageX+E.x),U=.5*(o.pageY+E.y);w.set(T,U)}}function dt(o){const E=Se(o),T=o.pageX-E.x,U=o.pageY-E.y,J=Math.sqrt(T*T+U*U);L.set(0,J)}function ft(o){e.enableZoom&&dt(o),e.enablePan&&xe(o)}function Pt(o){e.enableZoom&&dt(o),e.enableRotate&&Ve(o)}function ht(o){if(h.length==1)C.set(o.pageX,o.pageY);else{const T=Se(o),U=.5*(o.pageX+T.x),J=.5*(o.pageY+T.y);C.set(U,J)}x.subVectors(C,v).multiplyScalar(e.rotateSpeed);const E=e.domElement;Y(2*Math.PI*x.x/E.clientHeight),V(2*Math.PI*x.y/E.clientHeight),v.copy(C)}function Oe(o){if(h.length===1)R.set(o.pageX,o.pageY);else{const E=Se(o),T=.5*(o.pageX+E.x),U=.5*(o.pageY+E.y);R.set(T,U)}K.subVectors(R,w).multiplyScalar(e.panSpeed),Z(K.x,K.y),w.copy(R)}function Me(o){const E=Se(o),T=o.pageX-E.x,U=o.pageY-E.y,J=Math.sqrt(T*T+U*U);O.set(0,J),W.set(0,Math.pow(O.y/L.y,e.zoomSpeed)),A(W.y),L.copy(O);const he=(o.pageX+E.x)*.5,se=(o.pageY+E.y)*.5;ee(he,se)}function pt(o){e.enableZoom&&Me(o),e.enablePan&&Oe(o)}function mt(o){e.enableZoom&&Me(o),e.enableRotate&&ht(o)}function Te(o){e.enabled!==!1&&(h.length===0&&(e.domElement.setPointerCapture(o.pointerId),e.domElement.addEventListener("pointermove",Ze),e.domElement.addEventListener("pointerup",Re)),_t(o),o.pointerType==="touch"?et(o):Je(o))}function Ze(o){e.enabled!==!1&&(o.pointerType==="touch"?yt(o):kt(o))}function Re(o){switch(jt(o),h.length){case 0:e.domElement.releasePointerCapture(o.pointerId),e.domElement.removeEventListener("pointermove",Ze),e.domElement.removeEventListener("pointerup",Re),e.dispatchEvent(tn),s=r.NONE;break;case 1:const E=h[0],T=g[E];et({pointerId:E,pageX:T.x,pageY:T.y});break}}function Je(o){let E;switch(o.button){case 0:E=e.mouseButtons.LEFT;break;case 1:E=e.mouseButtons.MIDDLE;break;case 2:E=e.mouseButtons.RIGHT;break;default:E=-1}switch(E){case c.MOUSE.DOLLY:if(e.enableZoom===!1)return;ut(o),s=r.DOLLY;break;case c.MOUSE.ROTATE:if(o.ctrlKey||o.metaKey||o.shiftKey){if(e.enablePan===!1)return;qe(o),s=r.PAN}else{if(e.enableRotate===!1)return;Ee(o),s=r.ROTATE}break;case c.MOUSE.PAN:if(o.ctrlKey||o.metaKey||o.shiftKey){if(e.enableRotate===!1)return;Ee(o),s=r.ROTATE}else{if(e.enablePan===!1)return;qe(o),s=r.PAN}break;default:s=r.NONE}s!==r.NONE&&e.dispatchEvent(Ft)}function kt(o){switch(s){case r.ROTATE:if(e.enableRotate===!1)return;Rt(o);break;case r.DOLLY:if(e.enableZoom===!1)return;At(o);break;case r.PAN:if(e.enablePan===!1)return;Ke(o);break}}function vt(o){e.enabled===!1||e.enableZoom===!1||s!==r.NONE||(o.preventDefault(),e.dispatchEvent(Ft),Xe(gt(o)),e.dispatchEvent(tn))}function gt(o){const E=o.deltaMode,T={clientX:o.clientX,clientY:o.clientY,deltaY:o.deltaY};switch(E){case 1:T.deltaY*=16;break;case 2:T.deltaY*=100;break}return o.ctrlKey&&!S&&(T.deltaY*=10),T}function bt(o){o.key==="Control"&&(S=!0,e.domElement.getRootNode().addEventListener("keyup",Ce,{passive:!0,capture:!0}))}function Ce(o){o.key==="Control"&&(S=!1,e.domElement.getRootNode().removeEventListener("keyup",Ce,{passive:!0,capture:!0}))}function Qe(o){e.enabled===!1||e.enablePan===!1||Be(o)}function et(o){switch(Et(o),h.length){case 1:switch(e.touches.ONE){case c.TOUCH.ROTATE:if(e.enableRotate===!1)return;Ve(o),s=r.TOUCH_ROTATE;break;case c.TOUCH.PAN:if(e.enablePan===!1)return;xe(o),s=r.TOUCH_PAN;break;default:s=r.NONE}break;case 2:switch(e.touches.TWO){case c.TOUCH.DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;ft(o),s=r.TOUCH_DOLLY_PAN;break;case c.TOUCH.DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;Pt(o),s=r.TOUCH_DOLLY_ROTATE;break;default:s=r.NONE}break;default:s=r.NONE}s!==r.NONE&&e.dispatchEvent(Ft)}function yt(o){switch(Et(o),s){case r.TOUCH_ROTATE:if(e.enableRotate===!1)return;ht(o),e.update();break;case r.TOUCH_PAN:if(e.enablePan===!1)return;Oe(o),e.update();break;case r.TOUCH_DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;pt(o),e.update();break;case r.TOUCH_DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;mt(o),e.update();break;default:s=r.NONE}}function ze(o){e.enabled!==!1&&o.preventDefault()}function _t(o){h.push(o.pointerId)}function jt(o){delete g[o.pointerId];for(let E=0;E<h.length;E++)if(h[E]==o.pointerId){h.splice(E,1);return}}function Et(o){let E=g[o.pointerId];E===void 0&&(E=new c.Vector2,g[o.pointerId]=E),E.set(o.pageX,o.pageY)}function Se(o){const E=o.pointerId===h[0]?h[1]:h[0];return g[E]}e.domElement.addEventListener("contextmenu",ze),e.domElement.addEventListener("pointerdown",Te),e.domElement.addEventListener("pointercancel",Re),e.domElement.addEventListener("wheel",vt,{passive:!1}),e.domElement.getRootNode().addEventListener("keydown",bt,{passive:!0,capture:!0}),this.update()}}const Ot=t=>{const[n,a]=k.useState(t.options[t.index]),e=()=>{t.onToggle(!t.open)},r=s=>{s!==n&&(t.onSelect(s),a(s)),t.onToggle(!1)};return d.jsxs("div",{className:`dropdown ${t.up===!0?"up":""}`,children:[d.jsx("div",{className:"dropdown-toggle",onClick:e,children:n}),t.open&&d.jsx("ul",{className:"dropdown-menu",children:t.options.map(s=>d.jsx("li",{onClick:()=>r(s),children:s},s))})]})},De=k.forwardRef(function(n,a){const[e,r]=k.useState(!1),s=n.options.indexOf(n.camera.name);return d.jsxs("div",{className:"CameraWindow",children:[d.jsx("div",{ref:a,className:"clickable",onClick:()=>{e&&r(!1)}}),d.jsx(Ot,{index:s,open:e,options:n.options,onSelect:n.onSelect,onToggle:p=>{r(p)},up:!0})]})}),an=["Single","Side by Side","Stacked","Quad"],oe=new Map,ce=new Map,be=new Map;function Ue(t,n){const a=new c.OrthographicCamera(-100,100,100,-100,50,3e3);return a.name=t,a.position.copy(n),a.lookAt(0,0,0),oe.set(t,a),a}Ue("Top",new c.Vector3(0,1e3,0));Ue("Bottom",new c.Vector3(0,-1e3,0));Ue("Left",new c.Vector3(-1e3,0,0));Ue("Right",new c.Vector3(1e3,0,0));Ue("Front",new c.Vector3(0,0,1e3));Ue("Back",new c.Vector3(0,0,-1e3));Ue("Orthographic",new c.Vector3(1e3,1e3,1e3));const Tt=new c.PerspectiveCamera(60,1,50,3e3);Tt.name="Debug";Tt.position.set(500,500,500);Tt.lookAt(0,0,0);oe.set("Debug",Tt);const rn=["Renderer","Depth","Normals","UVs","Wireframe"],Pa=new c.MeshDepthMaterial,ka=new c.MeshNormalMaterial,_a=new Sn,ja=new c.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0});let St="Renderer";const q=new c.Scene;q.name="Debug Scene";let ye=new c.Scene;q.add(ye);const lt=new c.Group;lt.name="helpers";q.add(lt);const Da=new Cn;lt.add(Da);const Mn=new c.AxesHelper(500);Mn.name="axisHelper";lt.add(Mn);const st=new c.AxesHelper(100);st.name="interactionHelper";lt.add(st);st.visible=!1;let wt=!1,$=oe.get("Debug"),le=oe.get("Orthographic"),Ie=oe.get("Front"),Ne=oe.get("Top"),on=!1;function Ia(t){const[n,a]=k.useState(t.mode!==void 0?t.mode:"Single"),[e,r]=k.useState(null),[s,p]=k.useState(!1),[l,u]=k.useState(!1),[f,y]=k.useState(!1),[,v]=k.useState(Date.now()),C=k.useRef(null),x=k.useRef(null),w=k.useRef(null),R=k.useRef(null),K=k.useRef(null),L=k.useRef(null),O=(h,g)=>{const S=ce.get(h.name);S!==void 0&&S.dispose(),ce.delete(h.name);const _=be.get(h.name);_!==void 0&&(q.remove(_),_.dispose()),be.delete(h.name);const G=new Aa(h,g);switch(G.enableDamping=!0,G.dampingFactor=.05,h.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":G.enableRotate=!1;break}if(ce.set(h.name,G),h instanceof c.PerspectiveCamera){const Y=new c.CameraHelper(h);be.set(h.name,Y),q.add(Y)}},W=h=>{const g=be.get(h.name);g!==void 0&&(q.remove(g),g.dispose(),be.delete(h.name));const S=ce.get(h.name);S!==void 0&&(S.dispose(),ce.delete(h.name))},fe=()=>{ce.forEach((h,g)=>{h.dispose();const S=be.get(g);S!==void 0&&(q.remove(S),S.dispose()),be.delete(g),ce.delete(g)}),ce.clear(),be.clear()},ne=()=>{switch(n){case"Single":O($,w.current);break;case"Side by Side":case"Stacked":O($,w.current),O(le,R.current);break;case"Quad":O($,w.current),O(le,R.current),O(Ie,K.current),O(Ne,L.current);break}};k.useEffect(()=>{const h=new c.WebGLRenderer({canvas:C.current,stencil:!1});h.autoClear=!1,h.shadowMap.enabled=!0,h.setPixelRatio(devicePixelRatio),h.setClearColor(0),r(h)},[]),k.useEffect(()=>{const h=_=>{zt(ye),q.remove(ye);const G=t.scenes.get(_.value.name);if(G!==void 0){const Y=new G;t.onSceneSet!==void 0&&t.onSceneSet(Y),ye=Y,t.three.scene=ye,q.add(ye),on=!0}},g=_=>{var V;const G=_.value,Y=(V=t.three.scene)==null?void 0:V.getObjectByProperty("uuid",G.uuid);Y!==void 0&&oe.set(G.name,Y),v(Date.now())},S=_=>{oe.delete(_.value.name),v(Date.now())};return D.addEventListener(I.SET_SCENE,h),D.addEventListener(I.ADD_CAMERA,g),D.addEventListener(I.REMOVE_CAMERA,S),()=>{D.removeEventListener(I.SET_SCENE,h),D.removeEventListener(I.ADD_CAMERA,g),D.removeEventListener(I.REMOVE_CAMERA,S)}},[]),k.useEffect(()=>{if(e===null)return;let h=window.innerWidth,g=window.innerHeight,S=Math.floor(h/2),_=Math.floor(g/2),G=-1;const Y=()=>{h=window.innerWidth-300,g=window.innerHeight,S=Math.floor(h/2),_=Math.floor(g/2),e.setSize(h,g);let A=h,z=g;switch(n){case"Side by Side":A=S,z=g;break;case"Stacked":A=h,z=_;break;case"Quad":A=S,z=_;break}oe.forEach(ee=>{var de;ee instanceof c.OrthographicCamera?(ee.left=A/-2,ee.right=A/2,ee.top=z/2,ee.bottom=z/-2,ee.updateProjectionMatrix()):ee instanceof c.PerspectiveCamera&&(ee.aspect=A/z,ee.updateProjectionMatrix(),(de=be.get(ee.name))==null||de.update())})},V=()=>{e.setViewport(0,0,h,g),e.setScissor(0,0,h,g),e.render(q,$)},F=()=>{if(n==="Side by Side")e.setViewport(0,0,S,g),e.setScissor(0,0,S,g),e.render(q,$),e.setViewport(S,0,S,g),e.setScissor(S,0,S,g),e.render(q,le);else{const A=g-_;e.setViewport(0,A,h,_),e.setScissor(0,A,h,_),e.render(q,$),e.setViewport(0,0,h,_),e.setScissor(0,0,h,_),e.render(q,le)}},X=()=>{let A=0,z=0;z=g-_,A=0,e.setViewport(A,z,S,_),e.setScissor(A,z,S,_),e.render(q,$),A=S,e.setViewport(A,z,S,_),e.setScissor(A,z,S,_),e.render(q,le),z=0,A=0,e.setViewport(A,z,S,_),e.setScissor(A,z,S,_),e.render(q,Ie),A=S,e.setViewport(A,z,S,_),e.setScissor(A,z,S,_),e.render(q,Ne)},Z=()=>{switch(ce.forEach(A=>{A.update()}),t.onSceneUpdate!==void 0&&on&&t.onSceneUpdate(ye),e.clear(),n){case"Single":V();break;case"Side by Side":case"Stacked":F();break;case"Quad":X();break}G=requestAnimationFrame(Z)};return ne(),window.addEventListener("resize",Y),Y(),Z(),()=>{window.removeEventListener("resize",Y),cancelAnimationFrame(G),G=-1}},[n,e]),k.useEffect(()=>{if(e!==null){const h=new c.Raycaster,g=new c.Vector2,S=(V,F,X,Z)=>{switch(n){case"Quad":V<X?F<Z?h.setFromCamera(g,$):h.setFromCamera(g,Ie):F<Z?h.setFromCamera(g,le):h.setFromCamera(g,Ne);break;case"Side by Side":V<X?h.setFromCamera(g,$):h.setFromCamera(g,le);break;case"Single":h.setFromCamera(g,$);break;case"Stacked":F<Z?h.setFromCamera(g,$):h.setFromCamera(g,le);break}},_=V=>{if(!wt)return;const F=new c.Vector2;e.getSize(F);const X=Math.min(V.clientX,F.x),Z=Math.min(V.clientY,F.y);g.x=Ge(X,0,F.x,-1,1),g.y=Ge(Z,0,F.y,1,-1);const A=F.x/2,z=F.y/2,ee=()=>{X<A?g.x=Ge(X,0,A,-1,1):g.x=Ge(X,A,F.x,-1,1)},de=()=>{Z<z?g.y=Ge(Z,0,z,1,-1):g.y=Ge(Z,z,F.y,1,-1)};switch(n){case"Quad":ee(),de();break;case"Side by Side":ee();break;case"Stacked":de(),de();break}S(X,Z,A,z);const Ee=h.intersectObjects(ye.children);Ee.length>0&&st.position.copy(Ee[0].point)},G=V=>{if(!wt)return;const F=new c.Vector2;if(e.getSize(F),V.clientX>=F.x)return;_(V);const X=h.intersectObjects(ye.children);X.length>0&&t.three.getObject(X[0].object.uuid)},Y=x.current;return Y.addEventListener("mousemove",_,!1),Y.addEventListener("click",G,!1),()=>{Y.removeEventListener("mousemove",_),Y.removeEventListener("click",G)}}},[n,e]);const ie=[];return oe.forEach((h,g)=>{ie.push(g)}),d.jsxs("div",{className:"multiview",children:[d.jsx("canvas",{ref:C}),d.jsxs("div",{className:`cameras ${n==="Single"||n==="Stacked"?"single":""}`,ref:x,children:[n==="Single"&&d.jsx(d.Fragment,{children:d.jsx(De,{camera:$,options:ie,ref:w,onSelect:h=>{var S;(S=ce.get($.name))==null||S.dispose();const g=oe.get(h);g!==void 0&&(W($),$=g,O(g,w.current))}})}),(n==="Side by Side"||n==="Stacked")&&d.jsxs(d.Fragment,{children:[d.jsx(De,{camera:$,options:ie,ref:w,onSelect:h=>{var S;(S=ce.get($.name))==null||S.dispose();const g=oe.get(h);g!==void 0&&(W($),$=g,O(g,w.current))}}),d.jsx(De,{camera:le,options:ie,ref:R,onSelect:h=>{var S;(S=ce.get(le.name))==null||S.dispose();const g=oe.get(h);g!==void 0&&(W(le),le=g,O(g,R.current))}})]}),n==="Quad"&&d.jsxs(d.Fragment,{children:[d.jsx(De,{camera:$,options:ie,ref:w,onSelect:h=>{var S;(S=ce.get($.name))==null||S.dispose();const g=oe.get(h);g!==void 0&&(W($),$=g,O(g,w.current))}}),d.jsx(De,{camera:le,options:ie,ref:R,onSelect:h=>{var S;(S=ce.get(le.name))==null||S.dispose();const g=oe.get(h);g!==void 0&&(W(le),le=g,O(g,R.current))}}),d.jsx(De,{camera:Ie,options:ie,ref:K,onSelect:h=>{var S;(S=ce.get(Ie.name))==null||S.dispose();const g=oe.get(h);g!==void 0&&(W(Ie),Ie=g,O(g,K.current))}}),d.jsx(De,{camera:Ne,options:ie,ref:L,onSelect:h=>{var S;(S=ce.get(Ne.name))==null||S.dispose();const g=oe.get(h);g!==void 0&&(W(Ne),Ne=g,O(g,L.current))}})]})]}),d.jsxs("div",{className:"settings",children:[d.jsx(Ot,{index:an.indexOf(n),options:an,onSelect:h=>{h!==n&&(fe(),a(h))},open:s,onToggle:h=>{p(h),l&&u(!1),f&&y(!1)}}),d.jsx(Ot,{index:rn.indexOf(St),options:rn,onSelect:h=>{if(h!==St)switch(St=h,St){case"Depth":q.overrideMaterial=Pa;break;case"Normals":q.overrideMaterial=ka;break;default:case"Renderer":q.overrideMaterial=null;break;case"Wireframe":q.overrideMaterial=ja;break;case"UVs":q.overrideMaterial=_a;break}},open:l,onToggle:h=>{s&&p(!1),u(h),f&&y(!1)}}),d.jsx(Ot,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:h=>{wt=h==="Selection Mode",st.visible=wt},open:f,onToggle:h=>{s&&p(!1),l&&u(!1),y(h)}})]})]})}function Na(t){return d.jsxs("div",{className:"editor",ref:t.ref,style:t.style,children:[d.jsx("header",{children:t.header}),t.children,d.jsx("footer",{children:t.footer})]})}exports.Accordion=Mt;exports.Application=Bn;exports.BaseRemote=ct;exports.ChildObject=Gt;exports.ContainerObject=wn;exports.Draggable=bn;exports.DraggableItem=gn;exports.Dropdown=yn;exports.DropdownItem=En;exports.Editor=Na;exports.InfiniteGridHelper=Cn;exports.Inspector=On;exports.MultiView=Ia;exports.NavButton=Yt;exports.RemoteComponents=hn;exports.RemoteController=na;exports.RemoteTheatre=Le;exports.RemoteThree=vn;exports.RemoteTweakpane=Ht;exports.SceneInspector=Ta;exports.SidePanel=Ma;exports.ToolEvents=I;exports.UVMaterial=Sn;exports.capitalize=$e;exports.clamp=Ln;exports.colorToHex=un;exports.debugDispatcher=D;exports.dispose=zt;exports.disposeMaterial=fn;exports.disposeTexture=Un;exports.distance=Fn;exports.hierarchyUUID=Vt;exports.isColor=ln;exports.randomID=cn;exports.resetThreeObjects=dn;exports.round=xt;
package/package.json CHANGED
@@ -3,11 +3,11 @@
3
3
  "author": "Colin Duffy <http://tomorrowevening.com/>",
4
4
  "description": "An extendable set of Web Tools controlled via a separate window for non-intereference with content.",
5
5
  "license": "GPL-3.0-or-later",
6
- "main": "./dist/hermes.umd.cjs",
7
- "module": "./dist/hermes.js",
6
+ "main": "./dist/hermes.cjs.js",
7
+ "module": "./dist/hermes.esm.js",
8
8
  "types": "./types/index.d.ts",
9
9
  "type": "module",
10
- "version": "0.0.35",
10
+ "version": "0.0.36",
11
11
  "homepage": "https://github.com/tomorrowevening/hermes#readme",
12
12
  "bugs": {
13
13
  "url": "https://github.com/tomorrowevening/hermes/issues"
@@ -20,15 +20,18 @@
20
20
  "Tweakpane"
21
21
  ],
22
22
  "files": [
23
- "dist/hermes.js",
24
- "dist/hermes.umd.cjs",
23
+ "dist/hermes.esm.js",
24
+ "dist/hermes.cjs.js",
25
+ "dist/hermes.umd.js",
25
26
  "dist/style.css",
26
27
  "types/**/*.d.ts"
27
28
  ],
28
29
  "exports": {
29
30
  ".": {
30
- "import": "./dist/hermes.js",
31
- "require": "./dist/hermes.umd.cjs",
31
+ "import": "./dist/hermes.esm.js",
32
+ "require": "./dist/hermes.cjs.js",
33
+ "umd": "./dist/hermes.umd.js",
34
+ "default": "./dist/hermes.umd.js",
32
35
  "types": "./types/index.d.ts"
33
36
  },
34
37
  "./dist/style.css": "./dist/style.css",
@@ -50,18 +53,11 @@
50
53
  "preview": "vite preview"
51
54
  },
52
55
  "dependencies": {
53
- "@theatre/core": "0.7.0",
54
- "@tweakpane/plugin-essentials": "^0.2.0",
55
- "framer-motion": "^10.16.0",
56
- "postprocessing": "6.34.1",
57
- "react": "^18.2.0",
58
- "react-dom": "^18.2.0",
59
- "stats-gl": "2.0.1",
60
- "three": "^0.161.0",
61
- "tweakpane": "^4.0.0"
62
56
  },
63
57
  "devDependencies": {
58
+ "@theatre/core": "0.7.0",
64
59
  "@theatre/studio": "0.7.0",
60
+ "@tweakpane/plugin-essentials": "^0.2.0",
65
61
  "@types/react": "^18.2.15",
66
62
  "@types/react-dom": "^18.2.7",
67
63
  "@types/three": "^0.161.2",
@@ -72,8 +68,15 @@
72
68
  "eslint-plugin-react": "^7.33.2",
73
69
  "eslint-plugin-react-hooks": "^4.6.0",
74
70
  "eslint-plugin-react-refresh": "^0.4.3",
71
+ "framer-motion": "^10.16.0",
75
72
  "path": "^0.12.7",
73
+ "postprocessing": "6.34.1",
74
+ "react": "^18.2.0",
75
+ "react-dom": "^18.2.0",
76
76
  "sass": "^1.66.1",
77
+ "stats-gl": "2.0.1",
78
+ "three": "^0.161.0",
79
+ "tweakpane": "^4.0.0",
77
80
  "typescript": "^5.0.2",
78
81
  "vite": "^4.4.5",
79
82
  "ws": "^8.16.0"
File without changes
File without changes