@tomorrowevening/hermes
Version:
An extendable set of Web Tools controlled via a separate window for non-intereference with content.
2 lines (1 loc) • 2.03 kB
JavaScript
;const c=require("react/jsx-runtime"),u=require("react"),r=require("./utils.cjs");function f(e){if(e.child===void 0)return console.log("Hermes - No child attached"),null;const d=u.useRef(null),[n,o]=u.useState(!1),s=e.child.children.length>0,a=[];return e.child.children.length>0&&e.child.children.map((l,i)=>{a.push(c.jsx(f,{child:l,three:e.three},i))}),u.useEffect(()=>{if(e.child){const l=e.child.uuid.split(".")[0],i=e.three.getScene(l);if(i!==null)try{const t=i.getObjectByProperty("uuid",e.child.uuid);t!==void 0?d.current.style.opacity=t.visible?"1":"0.25":console.log(`Hermes - Can't find child: ${e.child.uuid}`)}catch(t){console.log("Error looking for child:",t),console.log(e.child),console.log(e.three.scenes),console.log(i)}else console.log(`Hermes (ChildObject) - Can't find Scene: ${l} with child UUID: ${e.child.uuid}`,e.three.scenes,e.three.scene,i)}},[n]),c.jsxs("div",{className:"childObject",children:[c.jsxs("div",{className:"child",children:[s?c.jsx("button",{className:"status",style:{backgroundPositionX:n?"-14px":"2px"},onClick:()=>{o(!n)}}):null,c.jsx("button",{className:"name",style:{left:s?"20px":"5px"},onClick:()=>{e.child!==void 0?(e.three.getObject(e.child.uuid),!n&&s&&o(!0)):console.log("Hermes - No child attached...")},children:e.child.name.length>0?`${e.child.name} (${e.child.type})`:`${e.child.type}::${e.child.uuid}`}),c.jsx("button",{className:"visibility",ref:d,onClick:()=>{if(e.child){const l=e.three.getScene(e.child.uuid);if(l!==null){const i=l.getObjectByProperty("uuid",e.child.uuid);if(i!==void 0){const t="visible",h=!i.visible;d.current.style.opacity=h?"1":"0.25",e.three.updateObject(e.child.uuid,t,h),r.setItemProps(i,t,h)}else console.log(`Hermes - Couldn't find object: ${e.child.uuid}`,l)}else console.log(`Hermes - Couldn't find object in scene: ${e.child.uuid}, ${e.child.name}`)}}}),c.jsx("div",{className:`icon ${r.determineIcon(e.child)}`})]}),c.jsx("div",{className:n?"open":"",children:c.jsx("div",{className:"container",children:a})})]})}module.exports=f;