@volter/model-editor 0.5.66 → 0.5.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +1022 -1006
- package/dist/assets/AudioViewer-DVXaSSYC.js +1 -0
- package/dist/assets/{BVHLoader-xUHWsz84.js → BVHLoader-msuIvJVn.js} +1 -1
- package/dist/assets/ColladaLoader-BpvxwqkB.js +3 -0
- package/dist/assets/EntityModelDocument-BtlQZcoU.js +1 -0
- package/dist/assets/EnvironmentAssetDocument-BH3zT9rt.js +1 -0
- package/dist/assets/FBXLoader-CsdO937F.js +1 -0
- package/dist/assets/{GameplaySessionTimeline-HJLZUV4Q.js → GameplaySessionTimeline-Dko95kB7.js} +10 -10
- package/dist/assets/ImageViewer-CZ_RMER2.js +1 -0
- package/dist/assets/{InspectorCanvasPreview-CLDhscy0.js → InspectorCanvasPreview-BLecDHpc.js} +1 -1
- package/dist/assets/InspectorObjectPreview-CSIWwJQE.js +1 -0
- package/dist/assets/JsonAssetDocument-CGYSeJyl.js +2 -0
- package/dist/assets/{LineSegments2-C8H20K8w.js → LineSegments2-BKEsgiC8.js} +2 -2
- package/dist/assets/LiveModuleDocument-CIvS-SUT.js +2 -0
- package/dist/assets/LutAssetDocument-BA70uU3w.js +1 -0
- package/dist/assets/{MTLLoader-C-rA0fNF.js → MTLLoader-DNh2pFDc.js} +2 -2
- package/dist/assets/ModelAssetDocument-D0lNEhOg.js +1 -0
- package/dist/assets/NonThreeAuthoringBootstrap-C0pCfkJ4.js +2 -0
- package/dist/assets/OBJLoader-DPi99VIm.js +5 -0
- package/dist/assets/Object3DDocumentToolbar-PGYkZEwr.js +1 -0
- package/dist/assets/Object3DPreview-BROKXSTC.js +2 -0
- package/dist/assets/OnlineAssetDetail-lEHnhdUS.js +1 -0
- package/dist/assets/OrbitControls-smIenN60.js +1 -0
- package/dist/assets/PLYLoader-Cx9Yc9xe.js +2 -0
- package/dist/assets/QuarksAssetDocument-C_8eG4KG.js +2 -0
- package/dist/assets/RectAreaLightUniformsLib-Iam8rS8R.js +1 -0
- package/dist/assets/STLLoader-BaJkM-k1.js +1 -0
- package/dist/assets/{ShaderAssetDocument-qlLeb2S3.js → ShaderAssetDocument-Gdp7OCfv.js} +5 -5
- package/dist/assets/SourceAssetViewer-l72u0hOa.js +1 -0
- package/dist/assets/StageHost-CdzuP0NS.js +1179 -0
- package/dist/assets/TDSLoader-BskhMiUy.js +1 -0
- package/dist/assets/ToolObject3DPreview-CU5klD6l.js +1 -0
- package/dist/assets/Toolbar-DI0LGx25.js +1 -0
- package/dist/assets/TransientHint-myZtSdd6.js +1 -0
- package/dist/assets/VideoViewer-z0JPXPKa.js +1 -0
- package/dist/assets/ViewportShadingMenu-CVU2bU_3.js +1 -0
- package/dist/assets/animation-mixers.service-DSIsxWG5.js +1 -0
- package/dist/assets/animation-timeline.utility-BEgDQC04.js +1 -0
- package/dist/assets/asset-editor-persistence-BtRQI8t6.js +1 -0
- package/dist/assets/bitmap-label-Ct4k6ehY.js +1 -0
- package/dist/assets/{blender-emscripten-engine-CEsWgnR7.js → blender-emscripten-engine-BeWFjMn-.js} +1 -1
- package/dist/assets/blender-node-editor.document-C_kpsARB.js +1 -0
- package/dist/assets/{blender-properties-tab-C5tUuCSv.js → blender-properties-tab-B_XBg6S8.js} +3 -3
- package/dist/assets/blender-runtime-host-CYhl4T9S.js +4 -0
- package/dist/assets/{blender-runtime-skin-DMq0XAvO.js → blender-runtime-skin-Bk6uXECD.js} +98 -51
- package/dist/assets/blender-runtime.document-CAPDRCvN.js +12 -0
- package/dist/assets/blender-timeline.document-CcEymQyL.js +1 -0
- package/dist/assets/blender-uv-editor.document-DSPvSEuE.js +1 -0
- package/dist/assets/blender-version.status-CEu7vCi3.js +1 -0
- package/dist/assets/{blender-wali-engine-D3iKpzn9.js → blender-wali-engine-da698rDf.js} +1 -1
- package/dist/assets/blender.command-BCb_c9lw.js +1 -0
- package/dist/assets/blender.keymap-_rF_vRX8.js +1 -0
- package/dist/assets/{blender.status-ujwGU6dU.js → blender.status-DrasQhJV.js} +1 -1
- package/dist/assets/{blender.style-CxfbTFcE.js → blender.style-DaIh9SiA.js} +1 -1
- package/dist/assets/{client-DNXj_opT.js → client-mkWk8S65.js} +1 -1
- package/dist/assets/content-bounds-_QWiKD5_.js +85 -0
- package/dist/assets/{hosted-asset-materialization-BXM49Qkc.js → hosted-asset-materialization-hUS3IhTD.js} +2 -2
- package/dist/assets/index-0Lm0Nf1M.css +1 -0
- package/dist/assets/{index-CJbYy-CF.js → index-7vd2obXq.js} +2 -2
- package/dist/assets/{index-DgapqSPi.js → index-BRLA7zdc.js} +1 -1
- package/dist/assets/{index-BtfYaG4D.js → index-CQG6JOSy.js} +18 -18
- package/dist/assets/{index-CanA16PU.js → index-CnvSS9lU.js} +1 -1
- package/dist/assets/{index-Bge9JUr6.js → index-DYNMP0kE.js} +1 -1
- package/dist/assets/index-Dm_h-T4x.js +1406 -0
- package/dist/assets/{index-gHZae-lw.js → index-Dz8qGBZc.js} +1 -1
- package/dist/assets/{index-BncK9THk.js → index-Fv4R0cYr.js} +1 -1
- package/dist/assets/{index-IEjydI9d.js → index-f-MQ14bP.js} +1 -1
- package/dist/assets/{index-D2LwEE0L.js → index-jib6KJY8.js} +6 -6
- package/dist/assets/{index-DUqP1RMl.js → index-ux8XhRyW.js} +1 -1
- package/dist/assets/{jsx-runtime-DPjLkJKQ.js → jsx-runtime-CAUTK36e.js} +1 -1
- package/dist/assets/layered-pick-CT4HlEpW.js +1 -0
- package/dist/assets/live-mixers-B-bwLZ7c.js +1 -0
- package/dist/assets/model-inspection-DDZE59vp.js +1 -0
- package/dist/assets/models.finder-Caf-3Yix.js +1 -0
- package/dist/assets/product-DbFrUS6F.js +1 -0
- package/dist/assets/properties-bone-constraints.inspector-DB3Rc_Hf.js +1 -0
- package/dist/assets/properties-bone.inspector-B7f7H_Co.js +1 -0
- package/dist/assets/properties-collection.inspector-JCtV3h3Y.js +1 -0
- package/dist/assets/properties-constraints.inspector-Cs8MwS-1.js +1 -0
- package/dist/assets/properties-data.inspector-DKGiHu8O.js +1 -0
- package/dist/assets/properties-material.inspector-Dc18RI13.js +1 -0
- package/dist/assets/properties-modifiers.inspector-DvGvXq2v.js +1 -0
- package/dist/assets/properties-object.inspector-Bl9nrytP.js +1 -0
- package/dist/assets/properties-output.inspector-B6QsU94n.js +1 -0
- package/dist/assets/properties-particles.inspector-B1dMnZSA.js +1 -0
- package/dist/assets/properties-physics.inspector-BwfNykfW.js +1 -0
- package/dist/assets/properties-render.inspector-KrL2EiTH.js +1 -0
- package/dist/assets/properties-scene.inspector-CewQnyRt.js +1 -0
- package/dist/assets/properties-texture.inspector-BITMzY-f.js +1 -0
- package/dist/assets/properties-view-layer.inspector-BpkDbmcb.js +1 -0
- package/dist/assets/properties-world.inspector-DLRH45Oj.js +1 -0
- package/dist/assets/{react-18-DyywM-Z2.js → react-18-D335xReo.js} +1 -1
- package/dist/assets/{react-story-board-B9V-j_Y5.js → react-story-board-CkaP4mEG.js} +1 -1
- package/dist/assets/{session-CsR0lApe.js → session-CTXsU1lK.js} +176 -1
- package/dist/assets/{spark.module-gG1EsWx8.js → spark.module-DMQ9J7rT.js} +11 -11
- package/dist/assets/stage-keyboard-BY7u9_MB.js +1 -0
- package/dist/assets/stage-overlay-set-DRFcVd27.js +1 -0
- package/dist/assets/stage-presence-markers-D2IpuOAY.js +1 -0
- package/dist/assets/stage-transform-tools-BGcIULoe.js +1 -0
- package/dist/assets/story-capture-RSWY8I8h.js +1 -0
- package/dist/assets/three-integration.service-0EyPpd5f.js +4 -0
- package/dist/assets/{three.module-ZILb6uB7.js → three.module-CrYDk-Xr.js} +1 -1
- package/dist/assets/transform-mode-request-Cz6fzydi.js +1 -0
- package/dist/assets/transport-strip-Co-ZDkf-.js +1 -0
- package/dist/assets/{vgai-shared-fontawesome-CFSkqz69.js → vgai-shared-fontawesome-2ZSGa7vM.js} +1 -1
- package/dist/assets/vgai-shared-jsx-dev-runtime-hkPLeIJV.js +1 -0
- package/dist/assets/vgai-shared-jsx-runtime-CUvvjEqj.js +1 -0
- package/dist/assets/{vgai-shared-react-dom-client-S0ozfl6_.js → vgai-shared-react-dom-client-CS681GK2.js} +1 -1
- package/dist/assets/{vgai-shared-three-DzfWDqlp.js → vgai-shared-three-CLJ0K3jQ.js} +1 -1
- package/dist/assets/viewport-door-BdL0u5rd.js +1 -0
- package/dist/assets/viewport-editor-controls-BYaAZ_Ku.js +1 -0
- package/dist/assets/viewport-surface-status-yS6CrXH7.js +24 -0
- package/dist/assets/{worker-B7zhIsFh.js → worker-CC9Ug5Ei.js} +1 -1
- package/dist/assets/world-documents-B5IWN-ng.js +3 -0
- package/dist/vgai-shared-react.json +4 -4
- package/dist/vgai-shared-three.json +1 -1
- package/dist-node/cli.js +248 -209
- package/dist-node/create.js +77 -77
- package/package.json +10 -10
- package/src/index.ts +1 -0
- package/dist/assets/AudioViewer-CRWsJVYN.js +0 -1
- package/dist/assets/ColladaLoader-Ccy_gHsu.js +0 -3
- package/dist/assets/EntityModelDocument-Dal8YnLK.js +0 -1
- package/dist/assets/EnvironmentAssetDocument-DFOFYX5v.js +0 -1
- package/dist/assets/FBXLoader-Dh0pOBW2.js +0 -1
- package/dist/assets/ImageViewer-BzqBpqL-.js +0 -1
- package/dist/assets/InspectorObjectPreview-BUZEp4xS.js +0 -1
- package/dist/assets/JsonAssetDocument-DCkqRS0N.js +0 -2
- package/dist/assets/LiveModuleDocument-CuOBVz3A.js +0 -2
- package/dist/assets/LutAssetDocument-IyEir1rq.js +0 -1
- package/dist/assets/ModelAssetDocument-DNStNyCc.js +0 -1
- package/dist/assets/NonThreeAuthoringBootstrap-BE15Wpmw.js +0 -2
- package/dist/assets/OBJLoader-CopWRneC.js +0 -5
- package/dist/assets/Object3DDocumentToolbar-5Dv_8caG.js +0 -1
- package/dist/assets/Object3DPreview-C09u9uQZ.js +0 -2
- package/dist/assets/OnlineAssetDetail-DOPUI1iu.js +0 -1
- package/dist/assets/OrbitControls-DrFzvAAB.js +0 -1
- package/dist/assets/PLYLoader-D_esTZ2f.js +0 -2
- package/dist/assets/QuarksAssetDocument-BbSJ970L.js +0 -2
- package/dist/assets/RectAreaLightUniformsLib-u1ciScuw.js +0 -1
- package/dist/assets/STLLoader-Cl5I0sAi.js +0 -1
- package/dist/assets/SourceAssetViewer-DwhuqbA4.js +0 -1
- package/dist/assets/StageHost-D-o8MsFS.js +0 -1122
- package/dist/assets/TDSLoader-KKBg8ef1.js +0 -1
- package/dist/assets/ToolObject3DPreview-ILbch3kN.js +0 -1
- package/dist/assets/Toolbar-DYJjJKTt.js +0 -1
- package/dist/assets/TransientHint-D94hsJSR.js +0 -1
- package/dist/assets/VideoViewer-Bx3FPbgE.js +0 -1
- package/dist/assets/ViewportShadingMenu-B3N6hSdN.js +0 -1
- package/dist/assets/animation-mixers.service-N9HxGOMf.js +0 -1
- package/dist/assets/asset-editor-persistence-DGD05u26.js +0 -1
- package/dist/assets/blender-node-editor.document-BT2M622g.js +0 -1
- package/dist/assets/blender-runtime-host-4ufXy47O.js +0 -4
- package/dist/assets/blender-runtime.document-DeFQQsF6.js +0 -8
- package/dist/assets/blender-timeline.document-BnlSdxy0.js +0 -1
- package/dist/assets/blender-uv-editor.document-UC-XeNn0.js +0 -1
- package/dist/assets/blender-version.status-BZP39oH7.js +0 -1
- package/dist/assets/blender.command-IGP5wuda.js +0 -1
- package/dist/assets/blender.keymap-GAQgeklK.js +0 -1
- package/dist/assets/browserAll-2r3AVaAO.js +0 -14
- package/dist/assets/canvas-preview-frames-CO60PDM7.js +0 -5
- package/dist/assets/index-B4bmKkgY.css +0 -1
- package/dist/assets/index-cpXNKgvz.js +0 -1498
- package/dist/assets/live-mixers-BRkRHd6g.js +0 -1
- package/dist/assets/material-preview.view-DqNcpd_b.js +0 -1
- package/dist/assets/model-inspection-JC6gbV8Q.js +0 -1
- package/dist/assets/models.finder-BplPGS4I.js +0 -1
- package/dist/assets/product-CfZaqLpw.js +0 -1
- package/dist/assets/properties-bone-constraints.inspector-Di8kNtAi.js +0 -1
- package/dist/assets/properties-bone.inspector-CqAIKNsE.js +0 -1
- package/dist/assets/properties-collection.inspector-DpHC_fXW.js +0 -1
- package/dist/assets/properties-constraints.inspector-C7G7NOZU.js +0 -1
- package/dist/assets/properties-data.inspector-D1sUUst6.js +0 -1
- package/dist/assets/properties-material.inspector-BUSjc8tl.js +0 -1
- package/dist/assets/properties-modifiers.inspector-Sq9bcfFz.js +0 -1
- package/dist/assets/properties-object.inspector-BzqiU_29.js +0 -1
- package/dist/assets/properties-output.inspector-BWpFqvfT.js +0 -1
- package/dist/assets/properties-particles.inspector-DO1KoaTz.js +0 -1
- package/dist/assets/properties-physics.inspector-BgkrTNSA.js +0 -1
- package/dist/assets/properties-render.inspector-BU5NOVoQ.js +0 -1
- package/dist/assets/properties-scene.inspector-DbMErJ48.js +0 -1
- package/dist/assets/properties-texture.inspector-toPpEwqp.js +0 -1
- package/dist/assets/properties-view-layer.inspector-COpx9iEK.js +0 -1
- package/dist/assets/properties-world.inspector-CxU0DrYX.js +0 -1
- package/dist/assets/react-three-rapier.esm-CN6t4A7c.js +0 -1
- package/dist/assets/stage-keyboard-CzlqI0nh.js +0 -1
- package/dist/assets/stage-overlay-set-DQeskS16.js +0 -1
- package/dist/assets/stage-presence-markers-S1lMOwIa.js +0 -1
- package/dist/assets/stage-transform-tools-Cqtv-ZQ1.js +0 -1
- package/dist/assets/story-capture-DmIUyEQn.js +0 -1
- package/dist/assets/story-mount-turn-2IYGgHob.js +0 -1
- package/dist/assets/story-pixi-preview-aw8xQhvF.js +0 -1
- package/dist/assets/story-three-preview-DDmMjlI8.js +0 -37
- package/dist/assets/transform-mode-request-DSPwviXs.js +0 -1
- package/dist/assets/vgai-shared-jsx-dev-runtime-DFDKL7fx.js +0 -1
- package/dist/assets/vgai-shared-jsx-runtime-DIqBpTut.js +0 -1
- package/dist/assets/viewport-pick-context-DkawXbEi.js +0 -1
- package/dist/assets/viewport-surface-status-DuININWe.js +0 -20
- package/dist/assets/webworkerAll-CqQUotBj.js +0 -101
- package/dist/assets/world-documents-DkBqH8VU.js +0 -3
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`).map(n=>Me(n.trim(),t)).filter(n=>n!==null);return r.length===0&&e.trim()&&r.push({stage:t,severity:"error",message:e.trim()}),r}function Me(e,t){if(!e)return null;const r=e.match(/^(ERROR|WARNING):\s*\d+:(\d+)(?::|\((\d+)\):)\s*(.*)$/i);if(r)return{stage:t,severity:r[1].toLowerCase()==="warning"?"warning":"error",line:Number.parseInt(r[2],10),...r[3]?{column:Number.parseInt(r[3],10)}:{},message:r[4]||e};const n=e.match(/^\d+:(\d+)\((\d+)\):\s*(?:(error|warning)\s*:?)?\s*(.*)$/i);return n?{stage:t,severity:n[3]?.toLowerCase()==="warning"?"warning":"error",line:Number.parseInt(n[1],10),column:Number.parseInt(n[2],10),message:n[4]||e}:null}function
|
|
3
|
-
${e}`}const
|
|
1
|
+
import{j as i}from"./jsx-runtime-CAUTK36e.js";import{cP as se,ap as U,cQ as ie,cI as ae,cR as z,cK as G,cL as oe,cS as le,al as h,b2 as T,ba as ce,cO as P,cM as _,aT as ue}from"./index-Dm_h-T4x.js";import{r as p}from"./index-DaQZGF7d.js";import"./index-CtzuWnCS.js";import"./index-jib6KJY8.js";import{aB as de,f as X,Y as fe,P as me,S as pe,a2 as he,c as ge,M as ve,a as ye,C as K,g as W,V as q,k as Z,x as xe,X as be,d as Se,bJ as we,l as je,R as Ee,ab as $e}from"./three.module-CrYDk-Xr.js";import{s as B}from"./asset-editor-persistence-BtRQI8t6.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./client-mkWk8S65.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function Ce({value:e,onChange:t,disabled:r=!1}){const[n,s]=p.useState(e??""),a=se();p.useEffect(()=>{s(e??"")},[e]);const c=()=>{const o=n.trim();o&&o!==e&&t(o)};return e===null?i.jsxs("div",{className:"vgai-color-input",children:[i.jsx("div",{className:"vgai-color-input-mixed"}),i.jsx(U,{placeholder:"—",disabled:r,onChange:o=>{o.target.value&&t(o.target.value)},"data-mixed":"true"})]}):i.jsxs("div",{className:"vgai-color-input",children:[i.jsx(ie,{value:e,disabled:r,onChange:o=>{a?.begin(),t(o.target.value)},onBlur:()=>a?.end()}),i.jsx(U,{value:n,disabled:r,onChange:o=>s(o.target.value),onBlur:c,onKeyDown:o=>{o.key==="Enter"?(c(),o.target.blur()):o.key==="Escape"&&(s(e),o.target.blur())}})]})}const Re=[".vert",".vert.glsl"],Ae=[".frag",".frag.glsl"];function Le(e){return e.split(/[?#]/,1)[0].toLowerCase()}function Fe(e,t=""){const r=Le(e);return Re.some(n=>r.endsWith(n))?"vertex":Ae.some(n=>r.endsWith(n))?"fragment":/\bgl_Position\b/.test(t)?"vertex":"fragment"}function J(e){const t=e.split(/[?#]/,1)[0];return/\.vert\.glsl$/i.test(t)?t.replace(/\.vert\.glsl$/i,".frag.glsl"):/\.frag\.glsl$/i.test(t)?t.replace(/\.frag\.glsl$/i,".vert.glsl"):/\.vert$/i.test(t)?t.replace(/\.vert$/i,".frag"):/\.frag$/i.test(t)?t.replace(/\.frag$/i,".vert"):null}function Te(e){return e.replace(/\/\*[\s\S]*?\*\//g,t=>t.replace(/[^\n]/g," ")).replace(/\/\/[^\n]*/g,"")}function O(e,t){const r=[],n=/\buniform\s+(?:(?:lowp|mediump|highp)\s+)?([A-Za-z_]\w*)\s+([A-Za-z_]\w*)\s*(?:\[\s*(\d+)\s*\])?\s*;/g;for(const s of Te(e).matchAll(n)){const a=s[1],c=s[2];if(!a||!c)continue;const o=s[3]?Number.parseInt(s[3],10):void 0;r.push({name:c,type:a,...o?{arraySize:o}:{},stages:[t]})}return r}function Ie(e,t){const r=new Map;for(const n of[...O(e,"vertex"),...O(t,"fragment")]){const s=r.get(n.name);if(!s){r.set(n.name,n);continue}r.set(n.name,{...s,stages:[...new Set([...s.stages,...n.stages])]})}return[...r.values()]}function I(e,t){const r=e.split(`
|
|
2
|
+
`).map(n=>Me(n.trim(),t)).filter(n=>n!==null);return r.length===0&&e.trim()&&r.push({stage:t,severity:"error",message:e.trim()}),r}function Me(e,t){if(!e)return null;const r=e.match(/^(ERROR|WARNING):\s*\d+:(\d+)(?::|\((\d+)\):)\s*(.*)$/i);if(r)return{stage:t,severity:r[1].toLowerCase()==="warning"?"warning":"error",line:Number.parseInt(r[2],10),...r[3]?{column:Number.parseInt(r[3],10)}:{},message:r[4]||e};const n=e.match(/^\d+:(\d+)\((\d+)\):\s*(?:(error|warning)\s*:?)?\s*(.*)$/i);return n?{stage:t,severity:n[3]?.toLowerCase()==="warning"?"warning":"error",line:Number.parseInt(n[1],10),column:Number.parseInt(n[2],10),message:n[4]||e}:null}function V(e){return`#line 1
|
|
3
|
+
${e}`}const ke=`varying vec2 vUv;
|
|
4
4
|
|
|
5
5
|
void main() {
|
|
6
6
|
vUv = uv;
|
|
7
7
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
8
|
-
}`,
|
|
8
|
+
}`,Ne=`varying vec2 vUv;
|
|
9
9
|
|
|
10
10
|
void main() {
|
|
11
11
|
gl_FragColor = vec4(vUv, 0.55, 1.0);
|
|
12
|
-
}`;function M(e,t=null){return{path:t,source:e==="vertex"?Ne:ke,available:!1}}function $(e){return e?.split("/").pop()??"Preview fallback"}function N(e){return e.type==="vec3"&&/(colou?r|tint|albedo|emissive)/i.test(e.name)}function J(e){return/^(u|i)?time$/i.test(e.name)&&/^(float|double)$/.test(e.type)?"time":/^(u|i)?resolution$/i.test(e.name)&&/^([diu]?vec)[234]$/.test(e.type)?"resolution":/^(u|i)?mouse$/i.test(e.name)&&/^([diu]?vec)[234]$/.test(e.type)?"mouse":null}function F(e){if(N(e))return/horizon/i.test(e.name)?"#badbe9":/zenith/i.test(e.name)?"#297aba":/sun/i.test(e.name)?"#fff0c2":"#6f8cff";if(e.type==="bool")return!1;if(/^(float|double|int|uint)$/.test(e.type))return 0;const t=e.type.match(/^(?:[biu]?vec)([234])$/);return t?Array.from({length:Number.parseInt(t[1],10)},()=>0):0}function De(){const e=new Uint8Array([38,43,58,255,176,190,255,255,176,190,255,255,38,43,58,255]),t=new je(e,2,2,Ee);return t.colorSpace=X,t.magFilter=$e,t.needsUpdate=!0,t}function Y(e,t,r){if(e.arraySize){const{arraySize:s,...a}=e;return Array.from({length:s},()=>Y(a,t,r))}if(/^sampler2D/.test(e.type)){const s=De();return r.push(s),s}if(/^sampler/.test(e.type))return null;if(e.type==="mat3")return new ve;if(e.type==="mat4")return new ye;if(N(e))return new W(typeof t=="string"?t:"#6f8cff");const n=e.type.match(/^(?:[biu]?vec)([234])$/);if(n){const s=Array.isArray(t)?t:[],a=Number.parseInt(n[1],10);return a===2?new K(s[0]??0,s[1]??0):a===3?new Z(s[0]??0,s[1]??0,s[2]??0):new q(s[0]??0,s[1]??0,s[2]??0,s[3]??0)}return t}function Ue(e,t,r,n,s){const a=J(t);if(a==="time"){e.value=n;return}if(e.value instanceof W&&typeof r=="string"){e.value.set(r);return}const c=Array.isArray(r)?r:[];if(e.value instanceof K){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0);return}if(e.value instanceof Z){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0,a==="resolution"?1:c[2]??0);return}if(e.value instanceof q){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0,a==="resolution"?1:c[2]??0,c[3]??0);return}a!=="mouse"&&!t.arraySize&&!/^sampler|^mat/.test(t.type)&&(e.value=r)}function ze(e){return e==="box"?new xe(1.35,1.35,1.35,48,48,48):e==="plane"?new be(2.2,2.2,96,96):new Se(.95,96,64)}function Ge({vertexSource:e,fragmentSource:t,descriptors:r,valuesRef:n,geometry:s,onDiagnostics:a}){const c=p.useRef(null);return p.useEffect(()=>{const o=c.current;if(!o)return;let w=!1,d=0;const x=document.createElement("canvas");x.setAttribute("aria-label","Live shader preview"),x.style.width="100%",x.style.height="100%",x.style.display="block",o.replaceChildren(x);let f;try{f=new de({canvas:x,antialias:!0,alpha:!1})}catch(l){a([{stage:"program",severity:"error",message:l instanceof Error?l.message:String(l)}]);return}f.outputColorSpace=X,f.setClearColor(1119261,1),f.debug.checkShaderErrors=!0;const S=new fe,v=new me(38,1,.01,100);v.position.set(0,0,3.4);const C=[],g={};for(const l of r)g[l.name]={value:Y(l,n.current[l.name]??F(l),C)};const R=new pe({vertexShader:B(e),fragmentShader:B(t),uniforms:g,side:he,toneMapped:!1}),L=ze(s),u=new ge(L,R);S.add(u);const m=[];f.debug.onShaderError=(l,b,E,A)=>{const te=b,re=E,ne=A;m.push(...I(l.getProgramInfoLog(te)??"","program"),...I(l.getShaderInfoLog(re)??"","vertex"),...I(l.getShaderInfoLog(ne)??"","fragment"))};const y={width:1,height:1},j=()=>{const l=o.getBoundingClientRect();y.width=Math.max(1,Math.floor(l.width)),y.height=Math.max(1,Math.floor(l.height)),f.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),f.setSize(y.width,y.height,!1),v.aspect=y.width/y.height,v.position.z=3.4/Math.min(1,v.aspect),v.updateProjectionMatrix()};j();const k=new ResizeObserver(j);k.observe(o);const ee=new we;try{f.compile(S,v),f.render(S,v),a(m.filter((l,b,E)=>E.findIndex(A=>A.stage===l.stage&&A.line===l.line&&A.message===l.message)===b))}catch(l){a([{stage:"program",severity:"error",message:l instanceof Error?l.message:String(l)}])}const D=()=>{if(w)return;const l=ee.getElapsedTime();for(const b of r){const E=g[b.name];E&&Ue(E,b,n.current[b.name]??F(b),l,y)}s!=="plane"&&(u.rotation.y=l*.18,u.rotation.x=Math.sin(l*.22)*.08),f.render(S,v),d=requestAnimationFrame(D)};return d=requestAnimationFrame(D),()=>{w=!0,cancelAnimationFrame(d),k.disconnect(),f.debug.onShaderError=null,L.dispose(),R.dispose();for(const l of C)l.dispose();f.dispose(),x.remove()}},[r,t,s,a,n,e]),i.jsx("div",{ref:c,"data-testid":"shader-preview",style:{width:"100%",height:"100%",minHeight:240,background:"#11141d"}})}function Pe({descriptors:e,values:t,onChange:r}){return e.length===0?i.jsx("div",{style:{color:h.content.muted},children:"No uniform declarations found."}):i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[e.map(n=>i.jsx(_e,{uniform:n,value:t[n.name]??F(n),onChange:s=>r(n.name,s)},n.name)),i.jsx("div",{style:{color:h.content.muted,fontSize:10,lineHeight:1.4},children:"Preview values are session-only. Author runtime defaults beside the ShaderMaterial in TS/TSX."})]})}function _e({uniform:e,value:t,onChange:r}){const n=J(e),s=e.type.match(/^(?:[biu]?vec)([234])$/);let a;return n?a=i.jsxs("div",{style:{color:h.content.muted,fontSize:10},children:["Driven by preview ",n]}):N(e)?a=i.jsx(Ce,{value:typeof t=="string"?t:"#6f8cff",onChange:r}):e.type==="bool"?a=i.jsxs("label",{style:{display:"flex",alignItems:"center",gap:7,fontSize:11},children:[i.jsx(ue,{checked:!!t,onChange:c=>r(c.target.checked)}),t?"True":"False"]}):/^(float|double|int|uint)$/.test(e.type)?a=i.jsx(_,{value:typeof t=="number"?t:0,onChange:r,step:e.type==="int"||e.type==="uint"?1:.01,precision:e.type==="int"||e.type==="uint"?0:3}):s&&Array.isArray(t)?a=i.jsx("div",{style:{display:"grid",gridTemplateColumns:`repeat(${s[1]}, minmax(0, 1fr))`,gap:4},children:t.map((c,o)=>i.jsx(_,{value:c,label:"xyzw"[o],onChange:w=>{const d=[...t];d[o]=w,r(d)},step:.01},`${e.name}:${o}`))}):a=i.jsx("div",{style:{color:h.content.muted,fontSize:10},children:"Reflected for runtime binding; no scalar preview control."}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5},children:[i.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:8},children:[i.jsx("span",{style:{color:h.content.primary,fontSize:11},children:e.name}),i.jsx("span",{style:{color:h.content.muted,fontSize:10},children:e.type})]}),a]})}function H({diagnostics:e,files:t}){return e.length===0?i.jsx("div",{style:{color:h.semantic.success,fontSize:11,padding:4},children:"Shader program compiled successfully."}):i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6,padding:4},children:e.map((r,n)=>{const s=r.stage==="program"?null:t[r.stage];return i.jsxs("div",{style:{color:r.severity==="warning"?h.semantic.warning:h.semantic.danger,fontSize:10,lineHeight:1.45},children:[s?.available?$(s.path):r.stage,r.line?`:${r.line}${r.column?`:${r.column}`:""}`:""," · ",r.message]},`${r.stage}:${r.line??0}:${r.message}:${n}`)})})}async function Oe(e){const t=await P(e);if(t===null)throw new Error(`Could not read ${e}.`);const r=Fe(e,t),n=Q(e),s=n?await P(n):null,a={vertex:M("vertex"),fragment:M("fragment")};a[r]={path:e,source:t,available:!0};const c=r==="vertex"?"fragment":"vertex";return a[c]=s===null?M(c,n):{path:n,source:s,available:!0},a}function et({documentId:e,assetPath:t,active:r=!0}){const[n,s]=p.useState(null),[a,c]=p.useState(0),[o,w]=p.useState("sphere"),[d,x]=p.useState([]),[f,S]=p.useState({}),[v,C]=p.useState(null);p.useEffect(()=>{if(!r)return;const u=()=>c(j=>j+1),m=Q(t),y=[O(t,u),...m?[O(m,u)]:[]];return()=>{for(const j of y)j()}},[r,t]),p.useEffect(()=>{if(!r)return;let u=!1;return s(null),C(null),Oe(t).then(m=>{u||s(m)},m=>{u||C(m instanceof Error?m.message:String(m))}),()=>{u=!0}},[r,t,a]);const g=p.useMemo(()=>n?Ie(n.vertex.source,n.fragment.source):[],[n]);p.useEffect(()=>{S(u=>Object.fromEntries(g.map(m=>[m.name,u[m.name]??F(m)])))},[g]);const R=p.useRef(f);R.current=f;const L=p.useMemo(()=>[{id:"shader-pair",title:"Shader Pair",icon:z,order:ae,body:{kind:"custom",render:()=>i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5,padding:4,fontSize:10},children:[i.jsxs("span",{children:["Vertex · ",n?$(n.vertex.path):"Loading…",n&&!n.vertex.available?" (preview fallback)":""]}),i.jsxs("span",{children:["Fragment · ",n?$(n.fragment.path):"Loading…",n&&!n.fragment.available?" (preview fallback)":""]}),i.jsx("span",{style:{color:h.content.muted},children:"Ordinary sibling GLSL files; runtime composition stays in TS/TSX."})]})}},{id:"shader-uniforms",title:"Uniforms",icon:oe,order:G,description:`${g.length} reflected`,body:{kind:"custom",data:Object.fromEntries(g.map(u=>[u.name,f[u.name]])),render:()=>i.jsx(Pe,{descriptors:g,values:f,onChange:(u,m)=>S(y=>({...y,[u]:m}))})}},{id:"shader-diagnostics",title:"Diagnostics",icon:d.length>0?le:z,order:G+100,description:d.length===0?"Compiled":`${d.length} issue${d.length===1?"":"s"}`,body:{kind:"custom",data:{diagnostics:d},render:()=>n&&i.jsx(H,{diagnostics:d,files:n})}}],[g,d,n,f]);return v?i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),status:"Shader unavailable",children:i.jsx("div",{role:"alert",style:{padding:20,color:h.semantic.danger},children:v})}):n?i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),sections:L,status:d.length===0?`GLSL · compiles · ${g.length} uniforms`:`GLSL · ${d.length} compile issues`,fill:!0,children:i.jsxs("div",{style:{width:"100%",height:"100%",minHeight:0,position:"relative",background:h.surface.panel},children:[i.jsx(Ge,{vertexSource:n.vertex.source,fragmentSource:n.fragment.source,descriptors:g,valuesRef:R,geometry:o,onDiagnostics:x}),i.jsx("div",{style:{position:"absolute",left:10,top:10},children:i.jsxs(ce,{"aria-label":"Preview geometry",value:o,onChange:u=>w(u.target.value),children:[i.jsx("option",{value:"sphere",children:"Sphere"}),i.jsx("option",{value:"box",children:"Box"}),i.jsx("option",{value:"plane",children:"Plane"})]})}),d.length>0&&i.jsx("div",{style:{position:"absolute",left:12,right:12,bottom:12,maxHeight:120,overflow:"auto",padding:8,border:`1px solid ${h.semantic.danger}`,borderRadius:6,background:h.surface.overlay},children:i.jsx(H,{diagnostics:d,files:n})})]})}):i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),status:"Loading GLSL",children:i.jsx("div",{style:{padding:20,color:h.content.muted},children:"Loading shader files…"})})}export{et as ShaderAssetDocument};
|
|
12
|
+
}`;function M(e,t=null){return{path:t,source:e==="vertex"?ke:Ne,available:!1}}function $(e){return e?.split("/").pop()??"Preview fallback"}function k(e){return e.type==="vec3"&&/(colou?r|tint|albedo|emissive)/i.test(e.name)}function Q(e){return/^(u|i)?time$/i.test(e.name)&&/^(float|double)$/.test(e.type)?"time":/^(u|i)?resolution$/i.test(e.name)&&/^([diu]?vec)[234]$/.test(e.type)?"resolution":/^(u|i)?mouse$/i.test(e.name)&&/^([diu]?vec)[234]$/.test(e.type)?"mouse":null}function F(e){if(k(e))return/horizon/i.test(e.name)?"#badbe9":/zenith/i.test(e.name)?"#297aba":/sun/i.test(e.name)?"#fff0c2":"#6f8cff";if(e.type==="bool")return!1;if(/^(float|double|int|uint)$/.test(e.type))return 0;const t=e.type.match(/^(?:[biu]?vec)([234])$/);return t?Array.from({length:Number.parseInt(t[1],10)},()=>0):0}function De(){const e=new Uint8Array([38,43,58,255,176,190,255,255,176,190,255,255,38,43,58,255]),t=new je(e,2,2,Ee);return t.colorSpace=X,t.magFilter=$e,t.needsUpdate=!0,t}function Y(e,t,r){if(e.arraySize){const{arraySize:s,...a}=e;return Array.from({length:s},()=>Y(a,t,r))}if(/^sampler2D/.test(e.type)){const s=De();return r.push(s),s}if(/^sampler/.test(e.type))return null;if(e.type==="mat3")return new ve;if(e.type==="mat4")return new ye;if(k(e))return new K(typeof t=="string"?t:"#6f8cff");const n=e.type.match(/^(?:[biu]?vec)([234])$/);if(n){const s=Array.isArray(t)?t:[],a=Number.parseInt(n[1],10);return a===2?new W(s[0]??0,s[1]??0):a===3?new q(s[0]??0,s[1]??0,s[2]??0):new Z(s[0]??0,s[1]??0,s[2]??0,s[3]??0)}return t}function Ue(e,t,r,n,s){const a=Q(t);if(a==="time"){e.value=n;return}if(e.value instanceof K&&typeof r=="string"){e.value.set(r);return}const c=Array.isArray(r)?r:[];if(e.value instanceof W){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0);return}if(e.value instanceof q){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0,a==="resolution"?1:c[2]??0);return}if(e.value instanceof Z){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0,a==="resolution"?1:c[2]??0,c[3]??0);return}a!=="mouse"&&!t.arraySize&&!/^sampler|^mat/.test(t.type)&&(e.value=r)}function ze(e){return e==="box"?new xe(1.35,1.35,1.35,48,48,48):e==="plane"?new be(2.2,2.2,96,96):new Se(.95,96,64)}function Ge({vertexSource:e,fragmentSource:t,descriptors:r,valuesRef:n,geometry:s,onDiagnostics:a}){const c=p.useRef(null);return p.useEffect(()=>{const o=c.current;if(!o)return;let w=!1,d=0;const x=document.createElement("canvas");x.setAttribute("aria-label","Live shader preview"),x.style.width="100%",x.style.height="100%",x.style.display="block",o.replaceChildren(x);let f;try{f=new de({canvas:x,antialias:!0,alpha:!1})}catch(l){a([{stage:"program",severity:"error",message:l instanceof Error?l.message:String(l)}]);return}f.outputColorSpace=X,f.setClearColor(1119261,1),f.debug.checkShaderErrors=!0;const S=new fe,v=new me(38,1,.01,100);v.position.set(0,0,3.4);const C=[],g={};for(const l of r)g[l.name]={value:Y(l,n.current[l.name]??F(l),C)};const R=new pe({vertexShader:V(e),fragmentShader:V(t),uniforms:g,side:he,toneMapped:!1}),L=ze(s),u=new ge(L,R);S.add(u);const m=[];f.debug.onShaderError=(l,b,E,A)=>{const te=b,re=E,ne=A;m.push(...I(l.getProgramInfoLog(te)??"","program"),...I(l.getShaderInfoLog(re)??"","vertex"),...I(l.getShaderInfoLog(ne)??"","fragment"))};const y={width:1,height:1},j=()=>{const l=o.getBoundingClientRect();y.width=Math.max(1,Math.floor(l.width)),y.height=Math.max(1,Math.floor(l.height)),f.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),f.setSize(y.width,y.height,!1),v.aspect=y.width/y.height,v.position.z=3.4/Math.min(1,v.aspect),v.updateProjectionMatrix()};j();const N=new ResizeObserver(j);N.observe(o);const ee=new we;try{f.compile(S,v),f.render(S,v),a(m.filter((l,b,E)=>E.findIndex(A=>A.stage===l.stage&&A.line===l.line&&A.message===l.message)===b))}catch(l){a([{stage:"program",severity:"error",message:l instanceof Error?l.message:String(l)}])}const D=()=>{if(w)return;const l=ee.getElapsedTime();for(const b of r){const E=g[b.name];E&&Ue(E,b,n.current[b.name]??F(b),l,y)}s!=="plane"&&(u.rotation.y=l*.18,u.rotation.x=Math.sin(l*.22)*.08),f.render(S,v),d=requestAnimationFrame(D)};return d=requestAnimationFrame(D),()=>{w=!0,cancelAnimationFrame(d),N.disconnect(),f.debug.onShaderError=null,L.dispose(),R.dispose();for(const l of C)l.dispose();f.dispose(),x.remove()}},[r,t,s,a,n,e]),i.jsx("div",{ref:c,"data-testid":"shader-preview",style:{width:"100%",height:"100%",minHeight:240,background:"#11141d"}})}function Pe({descriptors:e,values:t,onChange:r}){return e.length===0?i.jsx("div",{style:{color:h.content.muted},children:"No uniform declarations found."}):i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[e.map(n=>i.jsx(_e,{uniform:n,value:t[n.name]??F(n),onChange:s=>r(n.name,s)},n.name)),i.jsx("div",{style:{color:h.content.muted,fontSize:10,lineHeight:1.4},children:"Preview values are session-only. Author runtime defaults beside the ShaderMaterial in TS/TSX."})]})}function _e({uniform:e,value:t,onChange:r}){const n=Q(e),s=e.type.match(/^(?:[biu]?vec)([234])$/);let a;return n?a=i.jsxs("div",{style:{color:h.content.muted,fontSize:10},children:["Driven by preview ",n]}):k(e)?a=i.jsx(Ce,{value:typeof t=="string"?t:"#6f8cff",onChange:r}):e.type==="bool"?a=i.jsxs("label",{style:{display:"flex",alignItems:"center",gap:7,fontSize:11},children:[i.jsx(ue,{checked:!!t,onChange:c=>r(c.target.checked)}),t?"True":"False"]}):/^(float|double|int|uint)$/.test(e.type)?a=i.jsx(_,{value:typeof t=="number"?t:0,onChange:r,step:e.type==="int"||e.type==="uint"?1:.01,precision:e.type==="int"||e.type==="uint"?0:3}):s&&Array.isArray(t)?a=i.jsx("div",{style:{display:"grid",gridTemplateColumns:`repeat(${s[1]}, minmax(0, 1fr))`,gap:4},children:t.map((c,o)=>i.jsx(_,{value:c,label:"xyzw"[o],onChange:w=>{const d=[...t];d[o]=w,r(d)},step:.01},`${e.name}:${o}`))}):a=i.jsx("div",{style:{color:h.content.muted,fontSize:10},children:"Reflected for runtime binding; no scalar preview control."}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5},children:[i.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:8},children:[i.jsx("span",{style:{color:h.content.primary,fontSize:11},children:e.name}),i.jsx("span",{style:{color:h.content.muted,fontSize:10},children:e.type})]}),a]})}function H({diagnostics:e,files:t}){return e.length===0?i.jsx("div",{style:{color:h.semantic.success,fontSize:11,padding:4},children:"Shader program compiled successfully."}):i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6,padding:4},children:e.map((r,n)=>{const s=r.stage==="program"?null:t[r.stage];return i.jsxs("div",{style:{color:r.severity==="warning"?h.semantic.warning:h.semantic.danger,fontSize:10,lineHeight:1.45},children:[s?.available?$(s.path):r.stage,r.line?`:${r.line}${r.column?`:${r.column}`:""}`:""," · ",r.message]},`${r.stage}:${r.line??0}:${r.message}:${n}`)})})}async function Be(e){const t=await P(e);if(t===null)throw new Error(`Could not read ${e}.`);const r=Fe(e,t),n=J(e),s=n?await P(n):null,a={vertex:M("vertex"),fragment:M("fragment")};a[r]={path:e,source:t,available:!0};const c=r==="vertex"?"fragment":"vertex";return a[c]=s===null?M(c,n):{path:n,source:s,available:!0},a}function et({documentId:e,assetPath:t,active:r=!0}){const[n,s]=p.useState(null),[a,c]=p.useState(0),[o,w]=p.useState("sphere"),[d,x]=p.useState([]),[f,S]=p.useState({}),[v,C]=p.useState(null);p.useEffect(()=>{if(!r)return;const u=()=>c(j=>j+1),m=J(t),y=[B(t,u),...m?[B(m,u)]:[]];return()=>{for(const j of y)j()}},[r,t]),p.useEffect(()=>{if(!r)return;let u=!1;return s(null),C(null),Be(t).then(m=>{u||s(m)},m=>{u||C(m instanceof Error?m.message:String(m))}),()=>{u=!0}},[r,t,a]);const g=p.useMemo(()=>n?Ie(n.vertex.source,n.fragment.source):[],[n]);p.useEffect(()=>{S(u=>Object.fromEntries(g.map(m=>[m.name,u[m.name]??F(m)])))},[g]);const R=p.useRef(f);R.current=f;const L=p.useMemo(()=>[{id:"shader-pair",title:"Shader Pair",icon:z,order:ae,body:{kind:"custom",render:()=>i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5,padding:4,fontSize:10},children:[i.jsxs("span",{children:["Vertex · ",n?$(n.vertex.path):"Loading…",n&&!n.vertex.available?" (preview fallback)":""]}),i.jsxs("span",{children:["Fragment · ",n?$(n.fragment.path):"Loading…",n&&!n.fragment.available?" (preview fallback)":""]}),i.jsx("span",{style:{color:h.content.muted},children:"Ordinary sibling GLSL files; runtime composition stays in TS/TSX."})]})}},{id:"shader-uniforms",title:"Uniforms",icon:oe,order:G,description:`${g.length} reflected`,body:{kind:"custom",data:Object.fromEntries(g.map(u=>[u.name,f[u.name]])),render:()=>i.jsx(Pe,{descriptors:g,values:f,onChange:(u,m)=>S(y=>({...y,[u]:m}))})}},{id:"shader-diagnostics",title:"Diagnostics",icon:d.length>0?le:z,order:G+100,description:d.length===0?"Compiled":`${d.length} issue${d.length===1?"":"s"}`,body:{kind:"custom",data:{diagnostics:d},render:()=>n&&i.jsx(H,{diagnostics:d,files:n})}}],[g,d,n,f]);return v?i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),status:"Shader unavailable",children:i.jsx("div",{role:"alert",style:{padding:20,color:h.semantic.danger},children:v})}):n?i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),sections:L,status:d.length===0?`GLSL · compiles · ${g.length} uniforms`:`GLSL · ${d.length} compile issues`,fill:!0,children:i.jsxs("div",{style:{width:"100%",height:"100%",minHeight:0,position:"relative",background:h.surface.panel},children:[i.jsx(Ge,{vertexSource:n.vertex.source,fragmentSource:n.fragment.source,descriptors:g,valuesRef:R,geometry:o,onDiagnostics:x}),i.jsx("div",{style:{position:"absolute",left:10,top:10},children:i.jsxs(ce,{"aria-label":"Preview geometry",value:o,onChange:u=>w(u.target.value),children:[i.jsx("option",{value:"sphere",children:"Sphere"}),i.jsx("option",{value:"box",children:"Box"}),i.jsx("option",{value:"plane",children:"Plane"})]})}),d.length>0&&i.jsx("div",{style:{position:"absolute",left:12,right:12,bottom:12,maxHeight:120,overflow:"auto",padding:8,border:`1px solid ${h.semantic.danger}`,borderRadius:6,background:h.surface.overlay},children:i.jsx(H,{diagnostics:d,files:n})})]})}):i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),status:"Loading GLSL",children:i.jsx("div",{style:{padding:20,color:h.content.muted},children:"Loading shader files…"})})}export{et as ShaderAssetDocument};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as r}from"./jsx-runtime-CAUTK36e.js";import{b2 as m,al as n,b9 as x,bi as $,bj as C,aI as V}from"./index-Dm_h-T4x.js";import{r as f}from"./index-DaQZGF7d.js";import"./index-CtzuWnCS.js";import"./index-jib6KJY8.js";import{J as E,C as N,c as A}from"./JsonAssetDocument-CGYSeJyl.js";import{AudioViewer as H}from"./AudioViewer-DVXaSSYC.js";import{ImageViewer as R}from"./ImageViewer-CZ_RMER2.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./client-mkWk8S65.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function k(i){const e=(i.split(/[?#]/,1)[0]??"").replace(/^\//,"");return e.startsWith("src/")&&/\.(?:[cm]?[jt]sx?)$/.test(e)}function j(i){const e=$(i);return e.editor==="model"?"model":e.editor==="image"?"image":e.editor==="audio"?"audio":e.editor==="data"?"json":e.editor==="environment"?"environment":e.format==="cube"?"lut":e.format==="glsl"||e.format==="vert"||e.format==="frag"?"shader":k(i)?"module":e.editor==="source"&&e.previewable?"text":"binary"}function b({documentId:i,assetPath:e,active:t=!0}){const[o,l]=f.useState(null),[c,u]=f.useState(null),y=e.split("/").pop()??e;return f.useEffect(()=>{let a=!1;l(null),u(null);const w=e.replace(/^\//,"");let d=0;async function h(){const g=++d;try{const s=`/__editor/source-file?path=${encodeURIComponent(w)}`,S=await fetch(s,{cache:"no-store"}).then(p=>{if(!p.ok)throw new Error(`HTTP ${p.status}`);return p.text()});!a&&g===d&&(l(S),u(null))}catch(s){!a&&g===d&&u(s instanceof Error?s.message:String(s))}}const v=C();return h(),()=>{a=!0,v()}},[e]),r.jsx(m,{documentId:i,active:t,type:"source",title:y,sections:[],status:`source · ${e}`,fill:!0,children:r.jsx("div",{style:{padding:12,height:"100%",minHeight:0,display:"flex",flexDirection:"column",gap:8},children:r.jsx("div",{style:{padding:8,flex:1,minHeight:0,display:"flex",overflow:"hidden",background:n.surface.inset,border:`1px solid ${n.boundary.default}`,borderRadius:n.shape.small},children:c!==null||o===null?r.jsx("div",{style:{fontFamily:n.typography.mono,fontSize:11,lineHeight:1.5,color:c?n.semantic.danger:n.content.muted,padding:4},children:c??"Loading…"}):r.jsx(N,{value:o,followChanges:!0,language:A(e),fontSize:11,maxHeight:"100%",ariaLabel:`Source of ${e}`})})})})}function z({documentId:i,assetPath:e,active:t}){const o=e.split("/").pop()??e;return r.jsx(m,{documentId:i,active:t,type:"source",title:o,sections:[],status:`no viewer · ${e}`,children:r.jsxs("div",{style:{padding:16,color:n.content.muted,fontSize:12},children:["No editor package in this project renders ",o,"; the file is available in the project and stays selectable and referenceable."]})})}function K({documentId:i,assetPath:e,active:t=!0}){switch(j(e)){case"model":case"environment":case"lut":case"shader":{const o=j(e);return r.jsx(x,{route:o,documentId:i,assetPath:e,displayName:e.split("/").pop()??e,active:t,whenUnregistered:r.jsx(z,{documentId:i,assetPath:e,active:t})})}case"image":return r.jsx(R,{assetPath:e});case"audio":return r.jsx(H,{assetPath:e});case"json":return r.jsx(E,{documentId:i,assetPath:e,displayName:e.split("/").pop()??e,active:t,sections:[],status:`json · ${e}`});case"module":{const o=V()?.rootPath,l=r.jsx(b,{documentId:i,assetPath:e,active:t});return o?r.jsx(x,{route:"module",documentId:i,assetPath:e,projectRoot:o,displayName:e.split("/").pop()??e,active:t,fallback:l,whenUnregistered:l}):l}case"text":return r.jsx(b,{documentId:i,assetPath:e,active:t});case"binary":return r.jsx(m,{documentId:i,active:t,type:"binary source",title:e.split("/").pop()??e,sections:[],status:`binary · ${e}`,children:r.jsxs("div",{style:{padding:16,color:n.content.muted,fontSize:12},children:[r.jsx("div",{style:{color:n.content.primary,fontWeight:600,marginBottom:6},children:e.split("/").pop()}),"This binary source is available in the project, but it has no safe in-editor renderer. Its file remains selectable and referenceable without being misidentified as another format."]})})}}export{K as SourceAssetViewer,j as sourceAssetRoute};
|