@tomorrowevening/hermes
Version:
An extendable set of Web Tools controlled via a separate window for non-intereference with content.
2 lines (1 loc) • 15.4 kB
JavaScript
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("react/jsx-runtime"),i=require("three"),P=require("../InspectorGroup.cjs"),g=require("../../utils.cjs"),b=require("three/webgpu");function R(e){return!(e==="defaultAttributeValues"||e==="forceSinglePass"||e==="linecap"||e==="linejoin"||e==="linewidth"||e==="normalMapType"||e==="precision"||e==="shadowSide"||e==="uniformsGroups"||e==="uniformsNeedUpdate"||e==="userData"||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 N(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"Gradient Map":return"gradientMap";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 v(e){switch(e){case"alphaHash":return"Alpha Hash";case"alphaMap":return"Alpha Map";case"alphaToCoverage":return"Alpha To Coverage";case"anisotropy":return"Anisotropy";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"attenuationDistance":return"Attenuation Distance";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"clearcoat":return"Clearcoat";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"colorWrite":return"Color Write";case"defines":return"Defines";case"depthFunc":return"Depth Func";case"depthTest":return"Depth Test";case"depthWrite":return"Depth Write";case"dispersion":return"Dispersion";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"envMapRotation":return"Environment Map Rotation";case"extensions":return"Extensions";case"flatShading":return"Flat Shading";case"fragmentShader":return"Fragment Shader";case"fog":return"Fog";case"glslVersion":return"GLSL Version";case"gradientMap":return"Gradient Map";case"ior":return"IOR";case"iridescence":return"Iridescence";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"premultipliedAlpha":return"Premultiplied Alpha";case"opacity":return"Opacity";case"reflectivity":return"Reflectivity";case"refractionRatio":return"Refraction Ratio";case"roughness":return"Roughness";case"roughnessMap":return"Roughness Map";case"sheen":return"Sheen";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"toneMapped":return"Tone Mapped";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"vertexColors":return"Vertex Colors";case"vertexShader":return"Vertex Shader";case"visible":return"Visible";case"wireframe":return"Wireframe"}return e}function D(e){const t=e.toLowerCase();return t.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"}function k(){const e=document.createElement("input");return e.type="file",new Promise((t,n)=>{e.addEventListener("change",function(){if(e.files===null)n();else{const r=e.files[0],s=new FileReader;s.onload=function(p){t(p.target.result)},s.readAsDataURL(r)}}),e.click()})}const x=[{title:"Front",value:i.FrontSide},{title:"Back",value:i.BackSide},{title:"Double",value:i.DoubleSide}],T=[{title:"No Blending",value:i.NoBlending},{title:"Normal",value:i.NormalBlending},{title:"Additive",value:i.AdditiveBlending},{title:"Subtractive",value:i.SubtractiveBlending},{title:"Multiply",value:i.MultiplyBlending},{title:"Custom",value:i.CustomBlending}],E=[{title:"Add",value:i.AddEquation},{title:"Subtract",value:i.SubtractEquation},{title:"Reverse Subtract",value:i.ReverseSubtractEquation},{title:"Min",value:i.MinEquation},{title:"Max",value:i.MaxEquation}],w=[{title:"Zero",value:i.ZeroFactor},{title:"One",value:i.OneFactor},{title:"Src Color",value:i.SrcColorFactor},{title:"One Minus Src Color",value:i.OneMinusSrcColorFactor},{title:"Src Alpha",value:i.SrcAlphaFactor},{title:"One Minus Src Alpha",value:i.OneMinusSrcAlphaFactor},{title:"Dst Alpha",value:i.DstAlphaFactor},{title:"One Minus Dst Alpha",value:i.OneMinusDstAlphaFactor},{title:"Dst Color",value:i.DstColorFactor},{title:"One Minus Dst Color",value:i.OneMinusDstColorFactor},{title:"Src Alpha Saturate",value:i.SrcAlphaSaturateFactor},{title:"Constant Color",value:i.ConstantColorFactor},{title:"One Minus Constant Color",value:i.OneMinusConstantColorFactor},{title:"Constant Alpha",value:i.ConstantAlphaFactor},{title:"One Minus Constant Alpha",value:i.OneMinusConstantAlphaFactor}],U=[{title:"Zero",value:i.ZeroFactor},{title:"One",value:i.OneFactor},{title:"Src Color",value:i.SrcColorFactor},{title:"One Minus Src Color",value:i.OneMinusSrcColorFactor},{title:"Src Alpha",value:i.SrcAlphaFactor},{title:"One Minus Src Alpha",value:i.OneMinusSrcAlphaFactor},{title:"Dst Alpha",value:i.DstAlphaFactor},{title:"One Minus Dst Alpha",value:i.OneMinusDstAlphaFactor},{title:"Dst Color",value:i.DstColorFactor},{title:"One Minus Dst Color",value:i.OneMinusDstColorFactor},{title:"Constant Color",value:i.ConstantColorFactor},{title:"One Minus Constant Color",value:i.OneMinusConstantColorFactor},{title:"Constant Alpha",value:i.ConstantAlphaFactor},{title:"One Minus Constant Alpha",value:i.OneMinusConstantAlphaFactor}];function C(e,t){e.needsUpdate=!0,e.type="option",e.options=t}function _(e,t,n,r){return{type:"boolean",title:v(e),prop:e,value:t,needsUpdate:!0,onChange:(s,p)=>{r.updateObject(n.uuid,`material.${e}`,p),r.updateObject(n.uuid,"material.needsUpdate",!0);const c=r.getScene(n.uuid);if(c!==null){const a=c.getObjectByProperty("uuid",n.uuid);g.setItemProps(a,`material.${e}`,p)}}}}function q(e,t,n,r){const s={type:"number",title:v(e),prop:e,value:t,min:void 0,max:void 0,step:.01,needsUpdate:!0,onChange:(p,c)=>{r.updateObject(n.uuid,`material.${e}`,c),r.updateObject(n.uuid,"material.needsUpdate",!0);const a=r.getScene(n.uuid);if(a!==null){const h=a.getObjectByProperty("uuid",n.uuid);g.setItemProps(h,`material.${e}`,c)}}};switch(e){case"blending":C(s,T);break;case"blendDst":C(s,U);break;case"blendEquation":C(s,E);break;case"blendSrc":C(s,w);break;case"side":C(s,x);break}return D(e)&&(s.value=Number(t),s.type="range",s.min=Math.min(0,s.value),s.max=Math.max(1,s.value),s.step=.01),s}function $(e,t,n,r){const s={type:"string",title:v(e),prop:e,value:t,needsUpdate:!0,onChange:(c,a)=>{r.updateObject(n.uuid,`material.${e}`,a),r.updateObject(n.uuid,"material.needsUpdate",!0);const h=r.getScene(n.uuid);if(h!==null){const l=h.getObjectByProperty("uuid",n.uuid);g.setItemProps(l,`material.${e}`,a)}},onKeyDown:c=>{}};return(e==="vertexShader"||e==="fragmentShader")&&(s.type="field",s.disabled=!1,s.latest=s.value,s.onChange=(c,a)=>{s.latest=a,r.updateObject(n.uuid,`material.${e}`,a);const h=r.getScene(n.uuid);if(h!==null){const l=h.getObjectByProperty("uuid",n.uuid);g.setItemProps(l,`material.${e}`,a)}},s.onKeyDown=c=>{if(c.key==="Enter"&&(c.altKey||c.metaKey)){r.updateObject(n.uuid,"material.needsUpdate",!0);const a=r.getScene(n.uuid);if(a!==null){const h=a.getObjectByProperty("uuid",n.uuid);g.setItemProps(h,"material.needsUpdate",!0)}}}),s}function L(e){return e.x!==void 0&&e.y!==void 0&&e.z===void 0}function z(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w===void 0}function G(e){return e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&e.w!==void 0}function A(e){e.sort((t,n)=>t.title<n.title?-1:t.title>n.title?1:0)}function S(e,t,n,r,s="",p=!1){const c=v(e).split(".")[0].replaceAll("[","").replaceAll("]",""),a=s.length>0?`${s}.${e}`:e,h=typeof t;if(h==="object"&&t!==null&&t.__isUniform===!0)return S(`${e}.value`,t.value,n,r,s,p);if(h==="boolean"||h==="string")return{title:c,prop:a,type:h,value:t,disabled:p,onChange:(l,o)=>{r.updateObject(n.uuid,`material.${a}`,o);const u=r.getScene(n.uuid);if(u!==null){const d=u.getObjectByProperty("uuid",n.uuid);g.setItemProps(d,`material.${a}`,o)}}};if(h==="number"){const l={title:c,prop:a,type:"number",value:t,step:.01,disabled:p,onChange:(o,u)=>{r.updateObject(n.uuid,`material.${a}`,u);const d=r.getScene(n.uuid);if(d!==null){const m=d.getObjectByProperty("uuid",n.uuid);g.setItemProps(m,`material.${a}`,u)}}};return D(c)&&(l.type="range",l.min=0,l.max=1),l}else{if(t.isColor)return{title:c,prop:a,type:"color",value:t,disabled:p,onChange:(l,o)=>{const u=new i.Color(o);r.updateObject(n.uuid,`material.${a}`,u);const d=r.getScene(n.uuid);if(d!==null){const m=d.getObjectByProperty("uuid",n.uuid);g.setItemProps(m,`material.${a}`,u)}}};if(Array.isArray(t)){const l=[];for(const o in t){const u=t[o],d=`[${o.toString()}]`;if(u.value!==void 0){const m=S(`${d}.value`,u.value,n,r,a,p);m!==void 0&&l.push(m)}else{const m=S(d,u,n,r,a,p);m!==void 0&&l.push(m)}}if(l.length>0)return A(l),{title:c,items:l}}else{if(L(t))return{title:c,prop:a,type:"vector2",value:t,disabled:p,onChange:(l,o)=>{r.updateObject(n.uuid,`material.${a}`,o);const u=r.getScene(n.uuid);if(u!==null){const d=u.getObjectByProperty("uuid",n.uuid);g.setItemProps(d,`material.${a}`,o)}}};if(z(t))return{title:c,prop:a,type:"grid3",value:t,disabled:p,onChange:(l,o)=>{r.updateObject(n.uuid,`material.${a}`,o);const u=r.getScene(n.uuid);if(u!==null){const d=u.getObjectByProperty("uuid",n.uuid);g.setItemProps(d,`material.${a}`,o)}}};if(G(t))return{title:c,prop:a,type:"grid4",value:t,disabled:p,onChange:(l,o)=>{r.updateObject(n.uuid,`material.${a}`,o);const u=r.getScene(n.uuid);if(u!==null){const d=u.getObjectByProperty("uuid",n.uuid);g.setItemProps(d,`material.${a}`,o)}}};if(t.isEuler)return{title:c,prop:a,type:"euler",value:t,disabled:p,onChange:(l,o)=>{r.updateObject(n.uuid,`material.${a}`,o);const u=r.getScene(n.uuid);if(u!==null){const d=u.getObjectByProperty("uuid",n.uuid);g.setItemProps(d,`material.${a}`,o)}}};if(t.src!==void 0)return{title:c,type:"image",value:t,disabled:p,onChange:(l,o)=>{const u=N(e),d=s.length>0?`${s}.${u}`:u;r.createTexture(n.uuid,`material.${d}`,o);const m=r.getScene(n.uuid);if(m!==null){const F=m.getObjectByProperty("uuid",n.uuid);if(F!==void 0){const B=f=>{const y=F.material,M=d.split(".");switch(M.length){case 1:y[M[0]]=f;break;case 2:y[M[0]][M[1]]=f;break;case 3:y[M[0]][M[1]][M[2]]=f;break;case 4:y[M[0]][M[1]][M[2]][M[3]]=f;break;case 5:y[M[0]][M[1]][M[2]][M[3]][M[4]]=f;break}y.needsUpdate=!0};o.src.length>0?g.textureFromSrc(o.src).then(f=>{f.offset.set(o.offset[0],o.offset[1]),f.repeat.set(o.repeat[0],o.repeat[1]),B(f)}):B(null)}}}};if(t.elements!==void 0)return{title:c,prop:a,type:t.elements.length>9?"grid4":"grid3",value:t,disabled:p,onChange:(l,o)=>{r.updateObject(n.uuid,`material.${a}`,o);const u=r.getScene(n.uuid);if(u!==null){const d=u.getObjectByProperty("uuid",n.uuid);g.setItemProps(d,`material.${a}`,o)}}};{const l=[],o=e==="defines"||e==="extensions";try{for(const u in t){const d=t[u];if(d!==void 0)if(d.value!==void 0){const m=S(`${u}.value`,d.value,n,r,a,o);m!==void 0&&l.push(m)}else{const m=S(u,d,n,r,a,o);m!==void 0&&l.push(m)}}}catch{console.log("Hermes - Issue cycling through material object:",e,t)}if(l.length>0)return A(l),{title:c,items:l}}}}}function I(e,t,n){const r=[];for(const s in e){if(!R(s)||s.search("Node")>-1||e[s]instanceof b.ComputeNode)continue;const p=typeof e[s],c=e[s];if(p==="boolean")r.push(_(s,c,t,n));else if(p==="number")r.push(q(s,c,t,n));else if(p==="string")r.push($(s,c,t,n));else if(p==="object"){const a=S(s,c,t,n);a!==void 0&&r.push(a)}else c!==void 0&&console.log("Hermes - Other Material Prop Type:",s,p,c)}return A(r),r.push({title:"Update Material",type:"button",onChange:()=>{n.updateObject(t.uuid,"material.needsUpdate",!0);const s=n.getScene(t.uuid);if(s!==null){const p=s.getObjectByProperty("uuid",t.uuid);g.setItemProps(p,"material.needsUpdate",!0)}}}),r}function W(e,t){function n(){return`${t.name}_material`}const r=localStorage.getItem(n()),s=r!==null?r==="open":!1;function p(a){localStorage.setItem(n(),a?"open":"closed")}const c=e.material;if(Array.isArray(c)){const a=[],h=c.length;for(let l=0;l<h;l++)a.push(O.jsx(P,{three:t,title:`Material ${l}`,items:I(c[l],e,t)},`Material ${l}`));return O.jsx(O.Fragment,{children:a})}else return O.jsx(P,{three:t,title:"Material",items:I(c,e,t),expanded:s,onToggle:a=>{p(a)}})}exports.InspectMaterial=W;exports.acceptedMaterialNames=R;exports.clampedNames=D;exports.imageNames=N;exports.inspectMaterialItems=I;exports.prettyName=v;exports.uploadLocalImage=k;