@volter/game-editor 0.5.145 → 0.5.146
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/BUNDLED_NOTICES +22 -22
- package/catalog/entries/blender.json +2 -2
- package/catalog/entries/music.json +2 -2
- package/dist/.vite/manifest.json +2135 -2135
- package/dist/assets/{AssetBudgetPanel-8flhcwbD.js → AssetBudgetPanel-Cj7h9s3X.js} +3 -3
- package/dist/assets/{AudioViewer-BYZn4DUK.js → AudioViewer-C2NMmN1c.js} +1 -1
- package/dist/assets/{CanvasBoardDocument-CoNJL2CI.js → CanvasBoardDocument-Dd3wtq7p.js} +1 -1
- package/dist/assets/{CanvasSceneViewport-Dq3V66EU.js → CanvasSceneViewport-0FaWuBze.js} +1 -1
- package/dist/assets/{ColorInput-CZ9YSe5b.js → ColorInput-4LOMybLs.js} +1 -1
- package/dist/assets/{ColorPicker-DytPZaFB.js → ColorPicker-spH4IeyW.js} +1 -1
- package/dist/assets/{EntityModelDocument-BkXCSQxA.js → EntityModelDocument-CTnlWOAG.js} +1 -1
- package/dist/assets/{EnvironmentAssetDocument-DFZWx1WX.js → EnvironmentAssetDocument-DYjIexUh.js} +1 -1
- package/dist/assets/{GameplaySessionTimeline-B8wWEj5v.js → GameplaySessionTimeline-Dcx9Tust.js} +1 -1
- package/dist/assets/{ImageViewer-CIM_I8nH.js → ImageViewer-CQv4oEKB.js} +1 -1
- package/dist/assets/InspectorObjectPreview-BnEt3UNq.js +1 -0
- package/dist/assets/{JsonAssetDocument-gQuwiLdR.js → JsonAssetDocument-Dt86RAz-.js} +1 -1
- package/dist/assets/{LiveModuleDocument-DHCRcqhT.js → LiveModuleDocument-CBox9dZG.js} +1 -1
- package/dist/assets/{LutAssetDocument-B4RQTQCB.js → LutAssetDocument-CdYwavhv.js} +1 -1
- package/dist/assets/{ModelAssetDocument-DJnaaIHX.js → ModelAssetDocument-DIPUGMBf.js} +1 -1
- package/dist/assets/{NonThreeAuthoringBootstrap-CF7BPoB9.js → NonThreeAuthoringBootstrap-Cp7zJ6PO.js} +1 -1
- package/dist/assets/{Object3DDocumentToolbar-DsN2NUQv.js → Object3DDocumentToolbar-CRTrPiAi.js} +1 -1
- package/dist/assets/Object3DDocumentViewport-CMesyIkM.js +2 -0
- package/dist/assets/{Object3DPreview-BwZhzzAg.js → Object3DPreview-Fa0nVIWt.js} +1 -1
- package/dist/assets/{OnlineAssetDetail-DB3yzRTz.js → OnlineAssetDetail-DeY_kRhJ.js} +1 -1
- package/dist/assets/{PlayBar-CfImNQE-.js → PlayBar-D1twbgPU.js} +1 -1
- package/dist/assets/{QuarksAssetDocument-DJGQB4u7.js → QuarksAssetDocument-BwwK54MP.js} +1 -1
- package/dist/assets/{ReactCanvasControls-BkR9VVE8.js → ReactCanvasControls-BQ8gXxs4.js} +1 -1
- package/dist/assets/{RootSelectionOverlay-CSfOoibk.js → RootSelectionOverlay-6PrR0msJ.js} +1 -1
- package/dist/assets/{ShaderAssetDocument-CoiFAJWh.js → ShaderAssetDocument-C9_LgCgY.js} +1 -1
- package/dist/assets/{ShadowEditor-DgBjRx-V.js → ShadowEditor-CN7DmrkP.js} +1 -1
- package/dist/assets/{SourceAssetViewer-O0HH8IOS.js → SourceAssetViewer-CK7ciFBW.js} +1 -1
- package/dist/assets/StageHost-D56PzKrs.js +2 -0
- package/dist/assets/{StoryPreviewMount-Bdx5zbNZ.js → StoryPreviewMount-DJ04sEMk.js} +1 -1
- package/dist/assets/{ThreeBoardDocument-CXv7KFP1.js → ThreeBoardDocument-CH2oiNAp.js} +2 -2
- package/dist/assets/{ThreeIsolationSceneContent-D5WV80fA.js → ThreeIsolationSceneContent-D2DCIpv0.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-BGrgHTE9.js → ToolObject3DPreview-DJWD_bUg.js} +1 -1
- package/dist/assets/{Toolbar-SOKVz9Is.js → Toolbar-CFrBc1nF.js} +1 -1
- package/dist/assets/{TransientHint-C-aFB2Ox.js → TransientHint-luDOQE4y.js} +1 -1
- package/dist/assets/{VideoViewer-B4I4Cbpl.js → VideoViewer-Ck3TJc3E.js} +1 -1
- package/dist/assets/{ViewportShadingMenu-DBsoDPhe.js → ViewportShadingMenu-BSbiK2XW.js} +1 -1
- package/dist/assets/{active-ingest-DOoYv5lC.js → active-ingest-DeIM9C5L.js} +2 -2
- package/dist/assets/{animation-clock-TPDD3KgB.js → animation-clock-D1kC4Z86.js} +1 -1
- package/dist/assets/{animation-mixers.service-fTlm79AY.js → animation-mixers.service-D_QEbPpn.js} +1 -1
- package/dist/assets/{animation-timeline.utility-CagyUWvy.js → animation-timeline.utility-BmvxYBF1.js} +1 -1
- package/dist/assets/{asset-budget-asset.menu-QnQQKyUV.js → asset-budget-asset.menu-BqmJBnJp.js} +1 -1
- package/dist/assets/{asset-budget.action-Denu9n8R.js → asset-budget.action-mfsCOaBe.js} +1 -1
- package/dist/assets/{asset-budget.document-DAQQudBF.js → asset-budget.document-DlTvmR9U.js} +1 -1
- package/dist/assets/{asset-budget.menu-Dhqm1ACI.js → asset-budget.menu-CfFFqH0a.js} +1 -1
- package/dist/assets/{asset-editor-persistence-BPJ80IV2.js → asset-editor-persistence-CYZFLtpb.js} +1 -1
- package/dist/assets/{asset-loaders-Dcnf7Bw6.js → asset-loaders-D-7Pz-E0.js} +1 -1
- package/dist/assets/{asset-preview-BmprxTYE.js → asset-preview-DwWy2SHE.js} +1 -1
- package/dist/assets/{audio-unlock.service-CDSrqMlA.js → audio-unlock.service-BzOgoK0f.js} +1 -1
- package/dist/assets/{audio.utility-Bk4p5xsL.js → audio.utility-Bq8w2r0V.js} +1 -1
- package/dist/assets/autoplay.service-_kVqba2M.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-_KBkPwd9.js → babylon-authoring-adapter-ldSrOv7d.js} +1 -1
- package/dist/assets/{binding-resolver-ClWFzZwl.js → binding-resolver-CLAC4Oou.js} +2 -2
- package/dist/assets/{blender-node-editor.document-BJs-svOJ.js → blender-node-editor.document-Co514xJk.js} +1 -1
- package/dist/assets/{blender-properties-tab-Ca6GGoZA.js → blender-properties-tab-D0pPyu6C.js} +1 -1
- package/dist/assets/{blender-runtime-host-BDbcC0Zg.js → blender-runtime-host-BfAWl8jZ.js} +1 -1
- package/dist/assets/{blender-runtime-skin-C-J3OdY_.js → blender-runtime-skin-ClXU_pYv.js} +2 -2
- package/dist/assets/{blender-runtime.document-0fBzbVqg.js → blender-runtime.document-CzE-1h4j.js} +1 -1
- package/dist/assets/{blender-screenshot.menu-D3yZwxi6.js → blender-screenshot.menu-wvAjkf8o.js} +1 -1
- package/dist/assets/{blender-timeline.document-BOpLOn76.js → blender-timeline.document-D9b7dNPM.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-CNlwlNsR.js → blender-uv-editor.document-BwwjBDOS.js} +1 -1
- package/dist/assets/{blender-version.status-BrfCcN3A.js → blender-version.status-ddgmM7fx.js} +1 -1
- package/dist/assets/{blender.command-B-4gubQH.js → blender.command-DwHKBUyF.js} +1 -1
- package/dist/assets/{board-guides-CAd3Uwwe.js → board-guides-2MWr9kZQ.js} +1 -1
- package/dist/assets/{bridge.command-B_ZMM1Af.js → bridge.command-snxNsDHL.js} +3 -3
- package/dist/assets/{browserAll-DJib4cRK.js → browserAll-DiFaRv4x.js} +1 -1
- package/dist/assets/{build-player.document-Dkk9-Cxq.js → build-player.document-BCYLGI6X.js} +1 -1
- package/dist/assets/{build-profiles.document-E4xigdal.js → build-profiles.document-BfALhOLS.js} +1 -1
- package/dist/assets/{build-progress.status-BmBmwXjj.js → build-progress.status-H9FVq1Nw.js} +1 -1
- package/dist/assets/{build-session-DhHsQRks.js → build-session-C8UTaRpP.js} +1 -1
- package/dist/assets/{build.action-CUifgV58.js → build.action-BZoNXYGP.js} +1 -1
- package/dist/assets/{build.command-BErZJdyz.js → build.command-Cq8b2ZJ6.js} +1 -1
- package/dist/assets/{build.header-Bx2ejMEG.js → build.header-Wgw5RsWT.js} +1 -1
- package/dist/assets/{build.menu-Dpl69Asc.js → build.menu-BfMIBsGC.js} +1 -1
- package/dist/assets/{build.service-BHf0-RtC.js → build.service-DiJ-3Vue.js} +1 -1
- package/dist/assets/{camera-D2f8WceK.js → camera-C04aN_OQ.js} +1 -1
- package/dist/assets/{camera-runtime.inspector-Bed8jPeG.js → camera-runtime.inspector-CnWrVWbT.js} +1 -1
- package/dist/assets/{canvas-design-mount-s-hs4sM5.js → canvas-design-mount-BEO3N1GH.js} +3 -3
- package/dist/assets/{canvas-entry-runtime-DtH7NAl5.js → canvas-entry-runtime-BKXjFEpC.js} +2 -2
- package/dist/assets/{canvas-preview-frames-BgBKQGAL.js → canvas-preview-frames-DlUOebf1.js} +1 -1
- package/dist/assets/{canvas-story-capture.service-Cqk4C8AX.js → canvas-story-capture.service-BD7jC9fG.js} +2 -2
- package/dist/assets/{capability-coverage-CRqjvzDo.js → capability-coverage-CKk539ZB.js} +1 -1
- package/dist/assets/{collaboration-presence-D-oYewcY.js → collaboration-presence-B72eeYMj.js} +1 -1
- package/dist/assets/{collider-phxm70qk.js → collider-C5zjn_5X.js} +1 -1
- package/dist/assets/{component-board.service-CLXsAGWX.js → component-board.service-DIjdm965.js} +2 -2
- package/dist/assets/{component-board.service-CE8B8nHy.js → component-board.service-e02WXSTY.js} +2 -2
- package/dist/assets/{component-board.service-D68yuC-G.js → component-board.service-efFkmqkQ.js} +2 -2
- package/dist/assets/{component-contracts.service-J0ThBCQb.js → component-contracts.service-BDAnLXr_.js} +1 -1
- package/dist/assets/{component-instance-root-CTNzehmC.js → component-instance-root-Bx-2lbRr.js} +1 -1
- package/dist/assets/{component-verbs.command-D9Y2aSPT.js → component-verbs.command-ZqVpT6_N.js} +1 -1
- package/dist/assets/{component-verbs.service-NmQpK7Cp.js → component-verbs.service-M_8-wbha.js} +1 -1
- package/dist/assets/{config-DtFNLMre.js → config-C-2s_BAP.js} +2 -2
- package/dist/assets/{configurations-DizIsCtw.js → configurations-DJKKldTl.js} +1 -1
- package/dist/assets/{connection.status-_545jhmC.js → connection.status-chAq26qI.js} +1 -1
- package/dist/assets/{constraints.inspector-Zg0371sI.js → constraints.inspector-ICwNPfFn.js} +1 -1
- package/dist/assets/{content-bounds-JcLbQeNM.js → content-bounds-_3L42iZv.js} +1 -1
- package/dist/assets/{contract-system-adapters-CborQejG.js → contract-system-adapters-CXVtEEG9.js} +1 -1
- package/dist/assets/{coverage.service-ZvzXk_RH.js → coverage.service-C8DwCiDf.js} +1 -1
- package/dist/assets/{create-runtime-BRhUNQFy.js → create-runtime-D5mvBwj7.js} +1 -1
- package/dist/assets/{curve-ViOyXS6d.js → curve-DJ-hYz0v.js} +1 -1
- package/dist/assets/{data-asset-C4dKbRfK.js → data-asset-Beu0kPMY.js} +1 -1
- package/dist/assets/{data-ref-B0raIwHa.js → data-ref-2NLWnVad.js} +1 -1
- package/dist/assets/{debug-bridge-DPTNskFv.js → debug-bridge-D8_tPne3.js} +1 -1
- package/dist/assets/{debug-registry-Dc3W6vwO.js → debug-registry-BUn-3w5j.js} +1 -1
- package/dist/assets/{deferred-ingest-play-CIebXfgB.js → deferred-ingest-play-CVy431tz.js} +2 -2
- package/dist/assets/{design-time-canvas-mount-BGOBVa9p.js → design-time-canvas-mount-CazAJNIm.js} +2 -2
- package/dist/assets/{design-time-layers-BPYiK7VF.js → design-time-layers-BdvwPtJ0.js} +1 -1
- package/dist/assets/{design-time-mount.service-qJ2qfNGK.js → design-time-mount.service-C20XC1lH.js} +2 -2
- package/dist/assets/{design-time-mount.service-CBc4Am_-.js → design-time-mount.service-CwW4PFPB.js} +2 -2
- package/dist/assets/{design-time-react-mount-CV5Hd5Jd.js → design-time-react-mount-j6ADy2Og.js} +1 -1
- package/dist/assets/{document-preview-three-C_6mBiiE.js → document-preview-three-BKlE3rQf.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-CJzZxsuq.js → dom-authoring-adapter-DQLbnGyg.js} +1 -1
- package/dist/assets/{draco3d-CjtPWm52.js → draco3d-BJljm3nJ.js} +1 -1
- package/dist/assets/{edit-mode-audio.service-B-CjR9wW.js → edit-mode-audio.service-CsUeTv5u.js} +1 -1
- package/dist/assets/{edit-mode-authoring-CCBUV6q2.js → edit-mode-authoring-D54ihZgV.js} +1 -1
- package/dist/assets/{edit-mode-networking.service-Mx_poWhf.js → edit-mode-networking.service-C5uySvAm.js} +1 -1
- package/dist/assets/{editor-api-DNxuq7oq.js → editor-api-B_Q5T6QF.js} +1 -1
- package/dist/assets/{editor-layers-DdJOFmu5.js → editor-layers-Dsfzcx0b.js} +1 -1
- package/dist/assets/{editor-shell-store-BXKwqCuM.js → editor-shell-store-CMpd1UwI.js} +1 -1
- package/dist/assets/{entity-object-dwaTJjul.js → entity-object-BdDiGzfv.js} +1 -1
- package/dist/assets/{extend-D_CXDVWD.js → extend-CMh2M1Wu.js} +1 -1
- package/dist/assets/{fork-menu-DklvmtJS.js → fork-menu-36Axbn1w.js} +1 -1
- package/dist/assets/{frame-debugger-store-D2CIrmXD.js → frame-debugger-store-BcFRdkh5.js} +1 -1
- package/dist/assets/{game-contract-seams-C1m_P4SS.js → game-contract-seams-CkWXZKBr.js} +1 -1
- package/dist/assets/{game-css-scope-transform-BA7ZbLSi.js → game-css-scope-transform-BJCqOoR0.js} +1 -1
- package/dist/assets/{game-document.service-Cce4QU61.js → game-document.service-INZGkGbn.js} +1 -1
- package/dist/assets/{game-eval.command-BkWv-UfA.js → game-eval.command-DoTlb41L.js} +1 -1
- package/dist/assets/{game-module-access-XGEiv_PE.js → game-module-access-CnBDyF7n.js} +1 -1
- package/dist/assets/{game-network-D8ug1x3w.js → game-network-BtjFTt2o.js} +3 -3
- package/dist/assets/{gameplay-export-DoN38r9u.js → gameplay-export-DAFpXOU0.js} +1 -1
- package/dist/assets/{gameplay-replay-DtHDmjp5.js → gameplay-replay-BzXNC4jl.js} +1 -1
- package/dist/assets/{gameplay.command-DYnPT8Lo.js → gameplay.command-CFj50YCT.js} +1 -1
- package/dist/assets/{generation-jobs-BXHZFlzo.js → generation-jobs-DVPIfZGN.js} +1 -1
- package/dist/assets/{generation.service-CGSWxPf1.js → generation.service-B7jbiHj4.js} +1 -1
- package/dist/assets/{generations-DSXF1fKZ.js → generations-BdzYspx9.js} +1 -1
- package/dist/assets/{generations.status-Cf_3wvkx.js → generations.status-rF39D0fJ.js} +1 -1
- package/dist/assets/{hierarchy-marks-D-538fQp.js → hierarchy-marks-CmVlgczH.js} +1 -1
- package/dist/assets/{hosted-asset-materialization-DyuYIe1c.js → hosted-asset-materialization-BE-__aF1.js} +1 -1
- package/dist/assets/{index-Bako454B.js → index-77Pib7-L.js} +1 -1
- package/dist/assets/{index-B_PxgVrX.js → index-BdHcaUix.js} +1 -1
- package/dist/assets/{index-CCKpGWll.js → index-C3Cly1nm.js} +2 -2
- package/dist/assets/{index-CqiPDGfq.js → index-C5sjRs6U.js} +1 -1
- package/dist/assets/{index-9uCSEhwf.js → index-DQvF8ql8.js} +1 -1
- package/dist/assets/{index-BzRGSlHd.js → index-DSGmxuuA.js} +1 -1
- package/dist/assets/{index-Crsbhlhy.js → index-DaRQxpdW.js} +7 -7
- package/dist/assets/{index-B6n4-N99.js → index-DqZQbzOn.js} +1 -1
- package/dist/assets/{index-8RtOnhOo.js → index-DtXV3icG.js} +1 -1
- package/dist/assets/{inference-diagnostics-JiGwiJUe.js → inference-diagnostics-CFKZbcUX.js} +1 -1
- package/dist/assets/{ingest-boot-viewport-BqIgHJiK.js → ingest-boot-viewport-0RCIjGyr.js} +1 -1
- package/dist/assets/{ingest-siblings-C3KBC2OL.js → ingest-siblings-ipe3TEXW.js} +1 -1
- package/dist/assets/{ingest-source-persistence-Bk9qLkTV.js → ingest-source-persistence-BhLgFaNT.js} +1 -1
- package/dist/assets/{ingest.service-DdIqzdni.js → ingest.service-CTFUSkfm.js} +1 -1
- package/dist/assets/{inspect-DPJ1m-DR.js → inspect-BNHDIOcX.js} +1 -1
- package/dist/assets/instances.command-DoTOUMeC.js +1 -0
- package/dist/assets/{json-history-resource-BdE8EcB4.js → json-history-resource-BvTJaESk.js} +1 -1
- package/dist/assets/{layered-pick-CsPry26y.js → layered-pick-CeUEqXrE.js} +1 -1
- package/dist/assets/{light-P3HQqMJN.js → light-DWb5ql01.js} +1 -1
- package/dist/assets/{live-project-verbs-l0iIsIQL.js → live-project-verbs-BeIsYWK0.js} +1 -1
- package/dist/assets/{machine.document-Dz14QA8c.js → machine.document-R_hPyA6L.js} +1 -1
- package/dist/assets/{machines.finder-d1uSMp3z.js → machines.finder-SpgoWz9Z.js} +1 -1
- package/dist/assets/{material-D7yEfFFf.js → material-CBrVqKwQ.js} +1 -1
- package/dist/assets/{material-factory-DzsVJzgQ.js → material-factory-CsbWsZNA.js} +1 -1
- package/dist/assets/{mesh-f9oWqYCD.js → mesh-DJV7OYWi.js} +1 -1
- package/dist/assets/{model-asset-sections.service-Yh4yCNss.js → model-asset-sections.service-kr2Z47JF.js} +1 -1
- package/dist/assets/{model-inspection-C5OZWNER.js → model-inspection-CkDdmvUX.js} +1 -1
- package/dist/assets/{model-thumbnail-DFht0Zea.js → model-thumbnail-Dvqh6Alw.js} +1 -1
- package/dist/assets/{models.finder-zG-WERDy.js → models.finder-Cf1GuDeE.js} +1 -1
- package/dist/assets/{module-mode-CIRC4PLv.js → module-mode-oCNL6WcJ.js} +2 -2
- package/dist/assets/{mount-canvas-ingest-root-WOBvBU2u.js → mount-canvas-ingest-root-McTMBqUU.js} +2 -2
- package/dist/assets/{mount-dom-ingest-root-eYOFvDv6.js → mount-dom-ingest-root-LcPfHoVu.js} +2 -2
- package/dist/assets/{mount-ingest-root-BtlYDYMM.js → mount-ingest-root-N_xkoEr8.js} +2 -2
- package/dist/assets/{mount-manifest-BLFE1lZT.js → mount-manifest-CZcTVc7p.js} +1 -1
- package/dist/assets/{mount-three-ingest-root-Bp78LaZS.js → mount-three-ingest-root-yVgOHHUx.js} +1 -1
- package/dist/assets/{mounted-authoring-C7-8VFjR.js → mounted-authoring-BM-DX0X3.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-DYFGQweE.js → mounted-story-viewport-source-DzDp_0y7.js} +1 -1
- package/dist/assets/{native-debug-module-DZBcJZ3O.js → native-debug-module-DtxmnSHX.js} +1 -1
- package/dist/assets/{navigation-CLNvQtYC.js → navigation-BcFZXsQl.js} +1 -1
- package/dist/assets/{navmesh.menu-VhuMK-B9.js → navmesh.menu-C4JcsDqb.js} +1 -1
- package/dist/assets/{navmesh.service-9skC9KbW.js → navmesh.service-Cy1wNHHb.js} +1 -1
- package/dist/assets/network-observer.service-QBgwzA0p.js +1 -0
- package/dist/assets/{network.utility-Cx6YQWiW.js → network.utility-B3n9FPtM.js} +1 -1
- package/dist/assets/{object3d-document-session-registry-DYtU0S61.js → object3d-document-session-registry-C19aZYMr.js} +2 -2
- package/dist/assets/{oid-transform--LwgkNr9.js → oid-transform-IdvEHtlc.js} +1 -1
- package/dist/assets/{particles-DCL9brKJ.js → particles-DY5H6WOd.js} +1 -1
- package/dist/assets/{pixi-authoring-adapter-CJsDP9TC.js → pixi-authoring-adapter-Cx778K0H.js} +1 -1
- package/dist/assets/{pixi-live-write-target-BkbfLPLj.js → pixi-live-write-target-B9MBUwKH.js} +1 -1
- package/dist/assets/{play.command-D7U5ws3m.js → play.command-dSyfa0Mp.js} +2 -2
- package/dist/assets/{presentation-BlPdw2Jq.js → presentation-CwNm9mlh.js} +1 -1
- package/dist/assets/{product-BjUMoNzc.js → product-Bbc0LLza.js} +1 -1
- package/dist/assets/{profiler.action-BeMlKn0D.js → profiler.action-Cyyf6VWF.js} +1 -1
- package/dist/assets/{profiler.menu-ByNYDsb_.js → profiler.menu-ClEKTyWO.js} +1 -1
- package/dist/assets/{profiler.utility-QR-GTEWX.js → profiler.utility-C1D2Gg-U.js} +1 -1
- package/dist/assets/{project-authoring-session-D5fR27Xf.js → project-authoring-session-BSob2D65.js} +2 -2
- package/dist/assets/{properties-bone-constraints.inspector-CQ1kzpeW.js → properties-bone-constraints.inspector-L73QxWaS.js} +1 -1
- package/dist/assets/{properties-bone.inspector-BmWvLtS5.js → properties-bone.inspector-Bpp0cSF6.js} +1 -1
- package/dist/assets/{properties-collection.inspector-Bp4G6gAf.js → properties-collection.inspector-j0506O4s.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-C5u2vHgr.js → properties-constraints.inspector-DjTr1Erm.js} +1 -1
- package/dist/assets/{properties-data.inspector-DLuIeVjK.js → properties-data.inspector-By5glSUR.js} +1 -1
- package/dist/assets/{properties-material.inspector-BazVBacy.js → properties-material.inspector-DN56JOAm.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-BR_xxGgB.js → properties-modifiers.inspector-BxRjWuOR.js} +1 -1
- package/dist/assets/{properties-object.inspector-BT8ErQ5C.js → properties-object.inspector-BHTl-m8G.js} +1 -1
- package/dist/assets/{properties-output.inspector-Db7k-X5n.js → properties-output.inspector-DjbAiJTY.js} +1 -1
- package/dist/assets/{properties-particles.inspector-GHdgdRSV.js → properties-particles.inspector-D1mTEKuy.js} +1 -1
- package/dist/assets/{properties-physics.inspector-CDa8fMg1.js → properties-physics.inspector-Ddxywk7T.js} +1 -1
- package/dist/assets/{properties-render.inspector-ChRA2wF6.js → properties-render.inspector-DlueZX_8.js} +1 -1
- package/dist/assets/{properties-scene.inspector-wox_pPvs.js → properties-scene.inspector-LB3sc51D.js} +1 -1
- package/dist/assets/{properties-texture.inspector-c5cYfvzG.js → properties-texture.inspector-BU-JEAY_.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-KfYDdJ83.js → properties-view-layer.inspector-BkAjyCpL.js} +1 -1
- package/dist/assets/{properties-world.inspector-DO4TsCFa.js → properties-world.inspector-BXybm5So.js} +1 -1
- package/dist/assets/{r3f-design-session-huIajqIc.js → r3f-design-session-DkmfD2Mx.js} +2 -2
- package/dist/assets/{r3f-physics-binding-YA43TdoL.js → r3f-physics-binding-CmR_FKS6.js} +1 -1
- package/dist/assets/{r3f-source-authoring-adapter-BlRstmGA.js → r3f-source-authoring-adapter-EkIj_j5C.js} +1 -1
- package/dist/assets/{react-canvas-navigation-M0ghQ3Pg.js → react-canvas-navigation-DnUWxFpr.js} +1 -1
- package/dist/assets/{react-inspector.service-CStUUFdZ.js → react-inspector.service-CVE2zwb_.js} +1 -1
- package/dist/assets/{react-story-board-CJ2rY1vM.js → react-story-board-BSUDIFUD.js} +1 -1
- package/dist/assets/{react-three-rapier.esm-2PI2GKyc.js → react-three-rapier.esm-HR--m53B.js} +1 -1
- package/dist/assets/{react-world-authoring-adapter-tdk4Hqj1.js → react-world-authoring-adapter-LUIUlDuG.js} +1 -1
- package/dist/assets/{realm-services-ZGsXIjKw.js → realm-services-DjWyEFlR.js} +1 -1
- package/dist/assets/{reflection-probe-capture.inspector-CacOiakh.js → reflection-probe-capture.inspector-CnnUUjZ1.js} +1 -1
- package/dist/assets/{registry-CCO8vgc4.js → registry-CoEgg4Uf.js} +1 -1
- package/dist/assets/{relative-import-specifier-CJ9epbC5.js → relative-import-specifier-qiLdR9s0.js} +1 -1
- package/dist/assets/{render-env-CcmQfcfh.js → render-env-uOmAJnlr.js} +1 -1
- package/dist/assets/{render-features-d6WsfyhR.js → render-features-BDTrZqsn.js} +1 -1
- package/dist/assets/{render-settings-2QiH0WvX.js → render-settings-B7DKAMUq.js} +1 -1
- package/dist/assets/{resolve-three-DaW6J3do.js → resolve-three-DqtjenoZ.js} +3 -3
- package/dist/assets/{root-seam-contract-BaqTf_0m.js → root-seam-contract-Dnk26mgR.js} +1 -1
- package/dist/assets/{run-selection-BmPqbXVv.js → run-selection-DMh0XzlK.js} +1 -1
- package/dist/assets/{scene-capture-BPf9CksU.js → scene-capture-B5Rcy1pe.js} +1 -1
- package/dist/assets/{scene-document.service-BCJX2wYL.js → scene-document.service-CptpkE8S.js} +2 -2
- package/dist/assets/{scene-framing-pfBwKlV1.js → scene-framing-k2LlZgVg.js} +1 -1
- package/dist/assets/{seeded-random-Cm0mJ9WK.js → seeded-random-nwY9ZTVx.js} +1 -1
- package/dist/assets/{setup-renderer-CDiOvS5v.js → setup-renderer-BuXtI2-s.js} +1 -1
- package/dist/assets/{source-object3d-authoring-adapter-CmnO36sT.js → source-object3d-authoring-adapter-D16iP0TM.js} +1 -1
- package/dist/assets/{source-persistence-backend-ECfFZPdn.js → source-persistence-backend-C35VQxKz.js} +1 -1
- package/dist/assets/{stage-keyboard-D9z07kMc.js → stage-keyboard-CjhoPz6i.js} +1 -1
- package/dist/assets/{stage-overlay-set-BEcLelHE.js → stage-overlay-set-B32HW5jr.js} +1 -1
- package/dist/assets/{stage-presence-markers-61iYjRz9.js → stage-presence-markers-CD1g5aVX.js} +1 -1
- package/dist/assets/{stage-transform-tools-D_zntx7x.js → stage-transform-tools-CVnmgj4G.js} +1 -1
- package/dist/assets/{standard-viewport-dressing-CvWc3TIo.js → standard-viewport-dressing-DbvBhJBU.js} +1 -1
- package/dist/assets/{state-watch.action-Dj33chqd.js → state-watch.action-BdPnoEng.js} +1 -1
- package/dist/assets/{state-watch.menu-BDbYVr9h.js → state-watch.menu-BmAXd2iE.js} +1 -1
- package/dist/assets/{state-watch.utility-YGDgFG4K.js → state-watch.utility-Bnzldqwo.js} +1 -1
- package/dist/assets/{story-capture-DRH3UvNr.js → story-capture-BofI_wKy.js} +1 -1
- package/dist/assets/{story-documents-DoLPg9Lx.js → story-documents-DkDjQXJJ.js} +1 -1
- package/dist/assets/{story-documents.service-Teg89FZc.js → story-documents.service-BsRPe5R4.js} +1 -1
- package/dist/assets/{story-documents.service-Ll8_ATjf.js → story-documents.service-DiAebTI9.js} +1 -1
- package/dist/assets/{story-media-presence-Xlo427K1.js → story-media-presence-CtYvsK-A.js} +1 -1
- package/dist/assets/{story-pixi-preview-BBP84uRR.js → story-pixi-preview-CMpik5gu.js} +1 -1
- package/dist/assets/{story-presentation-Bqi53kq0.js → story-presentation-D9-lh6hS.js} +1 -1
- package/dist/assets/{story-three-preview-BP4ILFDq.js → story-three-preview-DnW5SEf7.js} +2 -2
- package/dist/assets/{studio-environment-BLFX45T5.js → studio-environment-BSd_1eWm.js} +1 -1
- package/dist/assets/{surface-state-rZISD-ig.js → surface-state-C1SxqlW8.js} +1 -1
- package/dist/assets/{syntactic-prop-specs-BVVxIxx3.js → syntactic-prop-specs-mvpbkzOV.js} +1 -1
- package/dist/assets/{team-playtest.service-DqP8zQMt.js → team-playtest.service-sy9-i7wc.js} +1 -1
- package/dist/assets/{three-a5CVjo2i.js → three-CW7JxjOv.js} +1 -1
- package/dist/assets/{three-authoring-adapter-D9bJThN9.js → three-authoring-adapter-DH5IBxn4.js} +1 -1
- package/dist/assets/three-authoring.service-Epg_oejj.js +2 -0
- package/dist/assets/{three-ingest-runtime-CfjyePZf.js → three-ingest-runtime-BnjdzpH9.js} +1 -1
- package/dist/assets/{three-integration-Bq5NMTap.js → three-integration-h_YZxmn4.js} +2 -2
- package/dist/assets/three-integration.service-mHfKD3i5.js +1 -0
- package/dist/assets/{three-projection-core-BTQ_M-Ho.js → three-projection-core-RACdI_qj.js} +1 -1
- package/dist/assets/{three-state-DYl6KVhl.js → three-state-COm8p1VC.js} +1 -1
- package/dist/assets/{three-story-capture.service-CkEnDiGX.js → three-story-capture.service-DXOV7quR.js} +2 -2
- package/dist/assets/{three-story-model-DR4JL0tj.js → three-story-model-DWDPEwZs.js} +1 -1
- package/dist/assets/{three-viewport-presentation-Bu3_3jY0.js → three-viewport-presentation-DO_Tqsn5.js} +1 -1
- package/dist/assets/{transform-mode-request-CQMVP3gI.js → transform-mode-request-DLXLBh2a.js} +1 -1
- package/dist/assets/{transport-strip-7xF6Xkx1.js → transport-strip-Ck5zz3Th.js} +1 -1
- package/dist/assets/transport.header-DC3-PIO2.js +1 -0
- package/dist/assets/{tuples-Bi79tUJA.js → tuples-B4X2J9eQ.js} +1 -1
- package/dist/assets/{ui-board-document-ByN-Igr_.js → ui-board-document-BfrxNqBh.js} +2 -2
- package/dist/assets/{user-data-BJje5VYV.js → user-data-BVjl5VSz.js} +1 -1
- package/dist/assets/{utility-view-state-D_M1xdFg.js → utility-view-state-BwFHQqg-.js} +1 -1
- package/dist/assets/{viewport-door-Bn_5UYAF.js → viewport-door-DGEfF1wj.js} +1 -1
- package/dist/assets/{viewport-root-presentation-CMku-eFg.js → viewport-root-presentation-BzFN3-WC.js} +1 -1
- package/dist/assets/{viewport-surface-status-Z2lECnRZ.js → viewport-surface-status-BTe8UVhJ.js} +1 -1
- package/dist/assets/{webworkerAll-B66_oG9K.js → webworkerAll-Cys-YS-I.js} +1 -1
- package/dist/assets/{workspace-arrangement-BPsnvrOt.js → workspace-arrangement-BD3sTZSQ.js} +1 -1
- package/dist/assets/{world-documents-CEI6Ult8.js → world-documents-eSWWvQsk.js} +1 -1
- package/dist/assets/{world-root-stage-binding-BtFetoJf.js → world-root-stage-binding-D8sBh4Kt.js} +1 -1
- package/dist/assets/{xstate-animation-binding-5ogRENtk.js → xstate-animation-binding-CqpKrHn2.js} +1 -1
- package/dist/assets/{xstate-animation-meta-D3SfP75s.js → xstate-animation-meta-Cbd_n_eN.js} +1 -1
- package/dist-node/cli.js +16 -16
- package/package.json +16 -16
- package/dist/assets/InspectorObjectPreview-ec285ozq.js +0 -1
- package/dist/assets/Object3DDocumentViewport-DGFR-qkU.js +0 -2
- package/dist/assets/StageHost-CNkXkK_f.js +0 -2
- package/dist/assets/autoplay.service-B8dGBVjn.js +0 -1
- package/dist/assets/instances.command-BIwrjtVv.js +0 -1
- package/dist/assets/network-observer.service-ib7T4XSw.js +0 -1
- package/dist/assets/three-authoring.service-C0WuXyLN.js +0 -2
- package/dist/assets/three-integration.service-scS00K9w.js +0 -1
- package/dist/assets/transport.header-AqKlS4Ny.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r as v,et as h,al as n,er as i,a6 as y}from"./index-
|
|
1
|
+
import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r as v,et as h,al as n,er as i,a6 as y}from"./index-DaRQxpdW.js";import{r as u}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{m as S}from"./audio-meter-Cddyq1vI.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function R(e){return e?{graph:typeof e.graphSnapshot=="function",transport:typeof e.transportState=="function",meters:typeof e.acquireMeters=="function",events:typeof e.audioEvents=="function"}:null}class b{constructor(s=500){this.capacity=s}entries=[];lastSeq=0;paused=!1;pull(s){if(this.paused||!s?.audioEvents)return 0;const a=s.audioEvents(this.lastSeq);if(a.length===0)return 0;for(const r of a)this.entries.push(r),r.seq>this.lastSeq&&(this.lastSeq=r.seq);return this.entries.length>this.capacity&&this.entries.splice(0,this.entries.length-this.capacity),a.length}get all(){return this.entries}clear(){this.entries=[]}}function A(e){const s=Math.max(0,e),a=Math.floor(s/60),r=s-a*60;return`${a}:${r<10?"0":""}${r.toFixed(1)}`}const f={fontFamily:n.typography.mono,fontSize:h.base};function p({children:e,testId:s}){return t.jsx("div",{"data-testid":s,style:{padding:i[4],color:n.content.muted,fontSize:h.base,fontStyle:"italic"},children:e})}function I({adapter:e,onResumed:s}){return e.resume?t.jsx(y,{type:"button",variant:"secondary","data-testid":"audio-resume",onClick:()=>{e.resume?.(),s()},children:"Enable Audio"}):null}const $={started:n.semantic.success,paused:n.semantic.warning,stopped:n.content.muted};function M({adapter:e}){const s=e.transportState?.()??null;return s?t.jsxs("div",{"data-testid":"audio-transport","data-state":s.state,style:{display:"flex",gap:i[6],alignItems:"center",padding:`${i[2]} ${i[4]}`},children:[t.jsxs("span",{style:{color:$[s.state]??n.content.primary},children:["● ",s.state]}),t.jsx("span",{"data-testid":"audio-transport-seconds",style:{...f,color:n.content.primary},children:A(s.seconds)}),s.position!==void 0&&t.jsx("span",{style:{...f,color:n.content.muted},children:s.position}),t.jsxs("span",{style:{fontSize:h.sm,color:n.content.muted},children:["bpm"," ",t.jsx("span",{style:{...f,color:n.content.primary},children:s.bpm.toFixed(0)})]})]}):t.jsx(p,{testId:"audio-transport-none",children:"No musical transport in this world (the game has not bridged Tone onto its audio context)."})}function E({adapter:e}){const[s,a]=u.useState(void 0),r=u.useRef(new Map);return u.useEffect(()=>{const d=e.acquireMeters?.()??null;if(!d){a(null);return}a(d.read());const o=setInterval(()=>{for(const c of d.read()){const m=r.current.get(c.id);m&&(m.style.width=`${S(c.level)}%`,m.dataset.level=c.level.toFixed(4))}},100);return()=>{clearInterval(o),d.dispose()}},[e]),s===void 0?null:s===null?t.jsx(p,{testId:"audio-meters-unavailable",children:"Metering unavailable in this environment (no real audio context)."}):t.jsx("div",{"data-testid":"audio-meters",style:{display:"flex",gap:14,alignItems:"center",padding:`${i[2]} ${i[4]}`},children:s.map(d=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:i[2]},children:[t.jsx("span",{style:{fontSize:h.sm,color:n.content.muted},children:d.label}),t.jsx("div",{style:{width:96,height:8,background:n.surface.inset,borderRadius:n.shape.small,overflow:"hidden"},children:t.jsx("div",{"data-testid":"audio-meter-fill","data-meter-id":d.id,"data-level":"0.0000",ref:o=>{o?r.current.set(d.id,o):r.current.delete(d.id)},style:{width:"0%",height:"100%",background:n.semantic.success,transition:"width 80ms linear"}})})]},d.id))})}function k({node:e}){return t.jsxs("div",{"data-testid":"audio-node-row","data-node-id":e.id,style:{...f,lineHeight:"18px",padding:`0 ${i[4]}`,whiteSpace:"nowrap"},children:[t.jsx("span",{style:{color:n.content.primary},children:e.label??e.id}),t.jsxs("span",{style:{color:n.content.dim},children:[" ",e.type]}),e.state!==void 0&&t.jsxs("span",{style:{color:n.semantic.warning},children:[" [",e.state,"]"]}),e.outputs.length>0&&t.jsxs("span",{style:{color:n.content.muted},children:[" → ",e.outputs.join(", ")]})]})}function q(e){return e==="error"?n.semantic.danger:e==="mute"||e==="unmute"?n.semantic.warning:n.accent.default}function z({event:e}){return t.jsxs("div",{"data-testid":"audio-log-row","data-kind":e.kind,style:{...f,display:"grid",gridTemplateColumns:"64px 1fr",gap:i[2],lineHeight:"17px",padding:`0 ${i[4]}`},children:[t.jsxs("span",{style:{color:n.content.dim},children:[(e.time/1e3).toFixed(2),"s"]}),t.jsxs("span",{style:{color:q(e.kind)},children:[e.kind,e.detail!==void 0?t.jsxs("span",{style:{color:n.content.muted},children:[" ",e.detail]}):null]})]})}function C(){const[,e]=u.useReducer(l=>l+1,0),s=u.useRef(new b),a=u.useRef(null),[r,d]=u.useState(!1);u.useEffect(()=>{const l=()=>{const g=v().systems.inspectedAudio()??null;return g!==a.current&&(a.current=g,s.current=new b,s.current.paused=r),g},j=()=>{s.current.pull(l()),e()};j();const w=setInterval(j,250);return()=>clearInterval(w)},[r]);const o=a.current??v().systems.inspectedAudio()??null,c=R(o);if(!o||!c)return t.jsxs("div",{"data-testid":"audio-debugger-empty",style:{padding:i[8],color:n.content.muted,fontSize:h.md,lineHeight:"18px"},children:[t.jsx("div",{style:{color:n.content.primary,marginBottom:i[2]},children:"Audio is still initializing."}),"The editor registers a first-party ",t.jsx("code",{style:f,children:"AudioAdapter"})," in edit mode; Play temporarily replaces it with the running game's adapter."]});const m=c.graph?o.graphSnapshot?.()??[]:null,x=s.current.all;return t.jsxs("div",{"data-testid":"audio-debugger",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",fontSize:h.md},children:[t.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:i[4],alignItems:"center",borderBottom:`1px solid ${n.boundary.default}`},children:[t.jsx(I,{adapter:o,onResumed:e}),t.jsx("span",{"data-testid":"audio-mute-state",style:{padding:`${i[2]} ${i[4]}`,color:o.isMuted()?n.semantic.warning:n.semantic.success},children:o.isMuted()?"muted":"audible"}),c.transport?t.jsx(M,{adapter:o}):t.jsx(p,{testId:"audio-transport-absent",children:"Transport not provided by this adapter."}),c.meters?t.jsx(E,{adapter:o}):t.jsx(p,{testId:"audio-meters-absent",children:"Meters not provided by this adapter."})]}),t.jsxs("div",{style:{flex:1,minHeight:0,display:"flex"},children:[t.jsx("div",{"data-testid":"audio-graph",style:{flex:1,minWidth:0,overflow:"auto",borderRight:`1px solid ${n.boundary.default}`,padding:`${i[2]} 0`},children:m?m.map(l=>t.jsx(k,{node:l},l.id)):t.jsx(p,{testId:"audio-graph-absent",children:"Audio graph not provided by this adapter."})}),t.jsx("div",{"data-testid":"audio-event-log",style:{flex:1,minWidth:0,display:"flex",flexDirection:"column"},children:c.events?t.jsxs(t.Fragment,{children:[t.jsxs("div",{style:{display:"flex",gap:i[3],alignItems:"center",padding:i[2]},children:[t.jsx(y,{type:"button",variant:"ghost","data-testid":"audio-log-pause",onClick:()=>{const l=!r;s.current.paused=l,d(l)},children:r?"Resume":"Pause"}),t.jsx(y,{type:"button",variant:"ghost","data-testid":"audio-log-clear",onClick:()=>{s.current.clear(),e()},children:"Clear"}),t.jsxs("span",{style:{fontSize:h.sm,color:n.content.muted},children:[x.length," events"]})]}),t.jsx("div",{style:{flex:1,minHeight:0,overflow:"auto"},children:x.length===0?t.jsx(p,{children:"No audio events yet."}):x.map(l=>t.jsx(z,{event:l},l.seq))})]}):t.jsx(p,{testId:"audio-log-absent",children:"Event log not provided by this adapter."})})]})]})}const L="workspace.utility",U="Audio",_=26;function G(){return t.jsx(C,{})}export{G as default,_ as order,L as point,U as title};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as i,r as m}from"./index-DaRQxpdW.js";import{e as p}from"./game-network-BtjFTt2o.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-DtxmnSHX.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-BUn-3w5j.js";import"./contract-system-adapters-CXVtEEG9.js";import"./game-contract-seams-CkWXZKBr.js";import"./seeded-random-nwY9ZTVx.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-DmeaOP4r.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-DzuOGwVB.js";import"./live-project-verbs-BeIsYWK0.js";import"./capability-coverage-CKk539ZB.js";import"./edit-mode-authoring-D54ihZgV.js";import"./json-history-resource-BvTJaESk.js";import"./binding-resolver-CLAC4Oou.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DjWyEFlR.js";import"./canvas-entry-runtime-BKXjFEpC.js";import"./three-ingest-runtime-BnjdzpH9.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-DeIM9C5L.js";import"./ingest-source-persistence-BhLgFaNT.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-BzFN3-WC.js";import"./mounted-authoring-BM-DX0X3.js";import"./entity-object-BdDiGzfv.js";import"./user-data-BVjl5VSz.js";import"./workspace-arrangement-BD3sTZSQ.js";import"./three-contract-Dkt6PmWY.js";import"./three-CW7JxjOv.js";import"./editor-layers-Dsfzcx0b.js";import"./component-instance-root-Bx-2lbRr.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-DH5IBxn4.js";import"./source-persistence-backend-C35VQxKz.js";import"./three-projection-core-RACdI_qj.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-CmR_FKS6.js";import"./deferred-ingest-play-CVy431tz.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-LUIUlDuG.js";import"./board-guides-2MWr9kZQ.js";import"./relative-import-specifier-qiLdR9s0.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BNHDIOcX.js";import"./inference-diagnostics-CFKZbcUX.js";import"./writer-tw6EcuVO.js";import"./three-state-COm8p1VC.js";import"./editor-shell-store-CMpd1UwI.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-DGEfF1wj.js";import"./game-surface-defaults-D8S4cRxi.js";const Ut="workspace.service";function e(o){p().catch(t=>{m().console.error(`${o}: ${t instanceof Error?t.message:String(t)}`,"play")})}function bt(){let o,t=!1;const r=i(()=>{t||new URLSearchParams(window.location.search).get("play")==="1"&&(t=!0,o=window.setTimeout(()=>e("Could not enter requested Play mode"),0))});return()=>{o!==void 0&&window.clearTimeout(o),r()}}export{Ut as point,bt as start};
|
package/dist/assets/{babylon-authoring-adapter-_KBkPwd9.js → babylon-authoring-adapter-ldSrOv7d.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Z as g,bS as v,bT as x}from"./index-Crsbhlhy.js";import{J as k,c as j}from"./json-history-resource-BdE8EcB4.js";import{p as y}from"./source-persistence-backend-ECfFZPdn.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./ingest-source-persistence-Bk9qLkTV.js";function C(r){return encodeURIComponent(r||"unnamed")}function u(r){try{return r.getClassName?.()||"Node"}catch{return"Node"}}function z(r){try{const e=r.getChildren?.();return Array.isArray(e)?e:[]}catch{return[]}}function m(r){const e=r?.x??0,t=r?.y??0,n=r?.z??0,s=Math.cos(e/2),i=Math.sin(e/2),a=Math.cos(t/2),o=Math.sin(t/2),c=Math.cos(n/2),l=Math.sin(n/2);return{x:i*a*c+s*o*l,y:s*o*c-i*a*l,z:s*a*l+i*o*c,w:s*a*c-i*o*l}}function p([r,e,t,n]){const s=2*(n*r+e*t),i=1-2*(r*r+e*e),a=2*(n*e-t*r),o=2*(n*t+r*e),c=1-2*(e*e+t*t);return{x:Math.atan2(s,i),y:Math.abs(a)>=1?Math.sign(a)*(Math.PI/2):Math.asin(a),z:Math.atan2(o,c)}}function d(r,e){r&&(r.x=e[0]??r.x,r.y=e[1]??r.y,r.z=e[2]??r.z)}function B(r,e){if(!r.rotationQuaternion){d(r.rotation,e);return}const t=m({x:e[0]??0,y:e[1]??0,z:e[2]??0});d(r.rotationQuaternion,[t.x,t.y,t.z]),r.rotationQuaternion.w=t.w}class R{constructor(e,t,n={}){this.engine=e,this.store=t,this.options=n,this.persistenceBackend=n.persistence??null,this.provenance=n.provenance??{source:"foreign",label:"live-only",detail:"Babylon.js scenes and Nodes projected directly — edits apply to native game objects for this session only."};const s=j(),i=this.persistenceBackend;this.persistence=i?{isDirty:()=>!1,save:async()=>{},get destination(){return i.destination()}}:s,i&&i.attach({read:(o,c)=>this.readChannel(o,c),apply:(o,c,l)=>this.applyChannel(o,c,l)});const a=t.shell.projectHistory;if(this.historyResource=i&&a&&n.journal?new k({history:a,kind:"session-state",scope:"session",subject:{...n.journal,id:`${n.journal.id}/live-babylon-edits`},displayName:"Live edits",capture:()=>this.captureHistoryState(),conflictIdentity:o=>o.edits,restore:async o=>{this.restoreHistoryState(o)}}):null,n.canvas&&(this.pickable={pick:(o,c)=>{const l=n.canvas.getBoundingClientRect();for(const h of this.scenes()){const f=h.pick?.(o-l.left,c-l.top),b=f?.hit?f.pickedMesh:null;if(b)return this.reindex(),this.idsByObject.get(b)??null}return null}}),this.truth={resolve:(o,c)=>{const l=this.subjectFor(o,c);return{site:l.anchor,writeAnchorKind:l.anchorKind}}},this.installNativeTools(),n.canvas){const o=()=>{for(const l of this.selection.get())this.transforms.beginEdit(l)},c=()=>{for(const l of this.selection.get())this.transforms.endEdit(l)};n.canvas.addEventListener("pointerdown",o),n.canvas.addEventListener("pointerup",c),this.removeCanvasListeners=()=>{n.canvas.removeEventListener("pointerdown",o),n.canvas.removeEventListener("pointerup",c)}}else this.removeCanvasListeners=null}capabilities={transform:!0,inspectorFields:!0,persist:!1};provenance;persistence;pickable;truth;indexed=new Map;idsByObject=new Map;listeners=new Set;persistenceBackend;baselines=new Map;historyBefore=new Map;historyResource=null;edits=0;gizmos=[];pointerTokens=[];removeCanvasListeners;scenes(){return(this.engine.scenes??[]).filter(e=>{try{return!e.isDisposed?.()}catch{return!0}})}refresh(){this.reindex();let e=0,t=0;for(const n of this.indexed.values())n.kind==="scene"?e++:t++;return{scenes:e,objects:t}}reindex(){this.indexed.clear(),this.idsByObject.clear();const e=new Set;for(const[t,n]of this.scenes().entries()){const s=n.name||`Scene ${t+1}`,i=`babylon:scene:${t}:${C(n.uid||s)}`,a=Array.isArray(n.rootNodes)?n.rootNodes:[],o={id:i,label:s,role:"root",kind:"babylon-scene",typeLabel:"BABYLON.Scene",parentId:null,childIds:[]};this.indexed.set(i,{kind:"scene",scene:n,node:o}),o.childIds=a.map((c,l)=>this.indexNode(c,i,`${t}/${l}`,e))}}indexNode(e,t,n,s){const i=u(e),o=`babylon:node:${typeof e.uniqueId=="number"?String(e.uniqueId):`path:${n}`}`,c={id:o,label:e.name||i,role:"entity",kind:`babylon-${i.toLowerCase()}`,typeLabel:i,parentId:t,childIds:[]};return this.indexed.set(o,{kind:"node",object:e,node:c}),this.idsByObject.set(e,o),s.has(e)||(s.add(e),c.childIds=z(e).map((l,h)=>this.indexNode(l,o,`${n}/${h}`,s))),o}hierarchy={roots:()=>(this.reindex(),[...this.indexed.values()].filter(e=>e.kind==="scene").map(e=>e.node)),node:e=>(this.reindex(),this.indexed.get(e)?.node??null)};selection={get:()=>[...this.store.shell.selectedEntityIds],set:e=>{this.store.shell.selectMultiple(e),this.attachGizmos(e[0]??null),this.notify()}};transforms={dimensions:e=>(this.reindex(),this.indexed.get(e)?.kind==="node"?"3d":null),get:e=>{this.reindex();const t=this.indexed.get(e);if(!t||t.kind!=="node")return{position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]};const n=t.object,s=n.rotationQuaternion??m(n.rotation);return{position:[n.position?.x??0,n.position?.y??0,n.position?.z??0],rotation:[s.x,s.y,s.z,s.w],scale:[n.scaling?.x??1,n.scaling?.y??1,n.scaling?.z??1]}},beginEdit:e=>{const t=this.captureChannels(e);t&&this.baselines.set(e,t),this.historyResource&&this.historyBefore.set(e,this.captureHistoryState())},apply:(e,t)=>{this.reindex();const n=this.indexed.get(e);if(!n||n.kind!=="node")return;const s=n.object;if(d(s.position,t.position),d(s.scaling,t.scale),s.rotationQuaternion)d(s.rotationQuaternion,t.rotation),s.rotationQuaternion.w=t.rotation[3];else{const i=p(t.rotation);d(s.rotation,[i.x,i.y,i.z])}this.notify()},endEdit:async e=>{const t=this.baselines.get(e);this.baselines.delete(e);const n=this.historyBefore.get(e);if(this.historyBefore.delete(e),!t||!this.persistenceBackend)return;const s=this.captureChannels(e);if(!s)return;const i=["position","rotation","scale"].filter(o=>JSON.stringify(t[o])!==JSON.stringify(s[o]));if(i.length===0)return;if(i.length>1){const o=`this Babylon gesture changed ${i.length} properties at once (${i.join(", ")})`;return this.persistenceBackend.report(`Transform ${this.labelOf(e)}`,o),{destination:"live-only (not saved)",persisted:!1}}const a=i[0];return y({backend:this.persistenceBackend,subject:()=>this.subjectFor(e,a),baseline:t[a],next:s[a],label:`Transform ${this.labelOf(e)}`,journal:()=>this.recordHistory(`Transform ${this.labelOf(e)}`,n)})}};inspector={properties:e=>{this.reindex();const t=this.indexed.get(e);if(!t)return[];if(t.kind==="scene")return[{path:"name",label:"Scene",type:"string",readonly:!0},{path:"uid",label:"UID",type:"string",readonly:!0}];const n=[{path:"className",label:"Type",type:"string",readonly:!0},{path:"name",label:"Name",type:"string"},{path:"id",label:"ID",type:"string",readonly:!0},{path:"enabled",label:"Enabled",type:"boolean"}];return typeof t.object.isVisible=="boolean"&&n.push({path:"isVisible",label:"Visible",type:"boolean"}),typeof t.object.visibility=="number"&&n.push({path:"visibility",label:"Visibility",type:"number"}),n},get:(e,t)=>{this.reindex();const n=this.indexed.get(e);if(n)return n.kind==="scene"?t==="name"?n.scene.name:t==="uid"?n.scene.uid:void 0:t==="className"?u(n.object):t==="enabled"?n.object.isEnabled?.(!1):n.object[t]},set:async(e,t,n)=>{this.reindex();const s=this.indexed.get(e);if(!s||s.kind!=="node")return;const i=this.readChannel(e,t),a=this.historyResource?this.captureHistoryState():void 0;if(t==="enabled")s.object.setEnabled?.(!!n);else if(t==="name"||t==="isVisible"||t==="visibility")s.object[t]=n;else return;this.notify();const o=this.readChannel(e,t);if(!(!this.persistenceBackend||i===void 0||o===void 0||JSON.stringify(i)===JSON.stringify(o)))return y({backend:this.persistenceBackend,subject:()=>this.subjectFor(e,t==="isVisible"?"visible":t),baseline:i,next:o,label:`Set ${this.labelOf(e)} ${t}`,journal:()=>this.recordHistory(`Set ${this.labelOf(e)} ${t}`,a)})}};subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}dispose(){this.removeCanvasListeners?.();for(const{scene:e,token:t}of this.pointerTokens)e.onPointerObservable?.remove(t);for(const e of this.gizmos)e.dispose();this.persistenceBackend?.dispose(),this.listeners.clear(),this.indexed.clear(),this.idsByObject.clear()}labelOf(e){return this.hierarchy.node(e)?.label??"Babylon node"}objectOf(e){this.reindex();const t=this.indexed.get(e);return t?.kind==="node"?t.object:null}readChannel(e,t){const n=this.objectOf(e);if(n){if(t==="position")return[n.position?.x??0,n.position?.y??0,n.position?.z??0];if(t==="rotation"){const s=n.rotationQuaternion,i=s?p([s.x,s.y,s.z,s.w]):n.rotation??{x:0,y:0,z:0};return[i.x,i.y,i.z]}return t==="scale"?[n.scaling?.x??1,n.scaling?.y??1,n.scaling?.z??1]:t==="visible"?n.isVisible:this.inspector.get(e,t)}}applyChannel(e,t,n){const s=this.objectOf(e);s&&(t==="position"&&Array.isArray(n)?d(s.position,n):t==="rotation"&&Array.isArray(n)?B(s,n):t==="scale"&&Array.isArray(n)?d(s.scaling,n):t==="visible"?s.isVisible=!!n:(t==="name"||t==="visibility")&&(s[t]=n),this.notify())}recordHistory(e,t){!this.historyResource||!t||(this.edits+=1,this.historyResource.record(e,t,this.captureHistoryState()).catch(n=>{g.error(`[babylon] failed to journal "${e}" into project history — the edit is applied but has no history entry (it cannot be undone): ${n instanceof Error?n.message:String(n)}`)}))}captureHistoryState(){this.reindex();const e={};for(const[t,n]of this.indexed){if(n.kind!=="node")continue;const s={};for(const i of["position","rotation","scale","visible","name","visibility"]){const a=this.readChannel(t,i);a!=null&&(s[i]=a)}e[t]=s}return{edits:this.edits,nodes:e}}restoreHistoryState(e){this.edits=e.edits;for(const[t,n]of Object.entries(e.nodes))for(const[s,i]of Object.entries(n))this.applyChannel(t,s,i);this.notify()}captureChannels(e){const t=this.readChannel(e,"position"),n=this.readChannel(e,"rotation"),s=this.readChannel(e,"scale");return t&&n&&s?{position:t,rotation:n,scale:s}:null}subjectFor(e,t){const n=this.objectOf(e),s=v(n);return{entityId:e,property:t,surface:"babylon",anchor:s,anchorKind:s.anchored?"construction-literal":"live-only",instances:s.anchored&&s.kind==="source"?x(s):0}}installNativeTools(){const e=this.options.api?.GizmoManager;for(const t of this.scenes()){if(e){const s=new e(t);s.positionGizmoEnabled=!0,s.rotationGizmoEnabled=!0,s.scaleGizmoEnabled=!0,s.usePointerToAttachGizmos=!1,this.gizmos.push(s)}const n=t.onPointerObservable;if(n){const s=n.add(i=>{const a=i.pickInfo?.pickedMesh;if(!a)return;this.reindex();const o=this.idsByObject.get(a);o&&this.selection.set([o])});this.pointerTokens.push({scene:t,token:s})}}}attachGizmos(e){const t=e?this.objectOf(e):null;for(const n of this.gizmos){if(!t){n.attachToMesh(null);continue}try{u(t).includes("Mesh")?n.attachToMesh(t):n.attachToNode?n.attachToNode(t):n.attachToMesh(null)}catch{n.attachToMesh(null)}}}notify(){for(const e of this.listeners)e();this.store.shell.notifyIngestEdit()}}export{R as BabylonAuthoringAdapter};
|
|
1
|
+
import{Z as g,bS as v,bT as x}from"./index-DaRQxpdW.js";import{J as k,c as j}from"./json-history-resource-BvTJaESk.js";import{p as y}from"./source-persistence-backend-C35VQxKz.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./ingest-source-persistence-BhLgFaNT.js";function C(r){return encodeURIComponent(r||"unnamed")}function u(r){try{return r.getClassName?.()||"Node"}catch{return"Node"}}function z(r){try{const e=r.getChildren?.();return Array.isArray(e)?e:[]}catch{return[]}}function m(r){const e=r?.x??0,t=r?.y??0,n=r?.z??0,s=Math.cos(e/2),i=Math.sin(e/2),a=Math.cos(t/2),o=Math.sin(t/2),c=Math.cos(n/2),l=Math.sin(n/2);return{x:i*a*c+s*o*l,y:s*o*c-i*a*l,z:s*a*l+i*o*c,w:s*a*c-i*o*l}}function p([r,e,t,n]){const s=2*(n*r+e*t),i=1-2*(r*r+e*e),a=2*(n*e-t*r),o=2*(n*t+r*e),c=1-2*(e*e+t*t);return{x:Math.atan2(s,i),y:Math.abs(a)>=1?Math.sign(a)*(Math.PI/2):Math.asin(a),z:Math.atan2(o,c)}}function d(r,e){r&&(r.x=e[0]??r.x,r.y=e[1]??r.y,r.z=e[2]??r.z)}function B(r,e){if(!r.rotationQuaternion){d(r.rotation,e);return}const t=m({x:e[0]??0,y:e[1]??0,z:e[2]??0});d(r.rotationQuaternion,[t.x,t.y,t.z]),r.rotationQuaternion.w=t.w}class R{constructor(e,t,n={}){this.engine=e,this.store=t,this.options=n,this.persistenceBackend=n.persistence??null,this.provenance=n.provenance??{source:"foreign",label:"live-only",detail:"Babylon.js scenes and Nodes projected directly — edits apply to native game objects for this session only."};const s=j(),i=this.persistenceBackend;this.persistence=i?{isDirty:()=>!1,save:async()=>{},get destination(){return i.destination()}}:s,i&&i.attach({read:(o,c)=>this.readChannel(o,c),apply:(o,c,l)=>this.applyChannel(o,c,l)});const a=t.shell.projectHistory;if(this.historyResource=i&&a&&n.journal?new k({history:a,kind:"session-state",scope:"session",subject:{...n.journal,id:`${n.journal.id}/live-babylon-edits`},displayName:"Live edits",capture:()=>this.captureHistoryState(),conflictIdentity:o=>o.edits,restore:async o=>{this.restoreHistoryState(o)}}):null,n.canvas&&(this.pickable={pick:(o,c)=>{const l=n.canvas.getBoundingClientRect();for(const h of this.scenes()){const f=h.pick?.(o-l.left,c-l.top),b=f?.hit?f.pickedMesh:null;if(b)return this.reindex(),this.idsByObject.get(b)??null}return null}}),this.truth={resolve:(o,c)=>{const l=this.subjectFor(o,c);return{site:l.anchor,writeAnchorKind:l.anchorKind}}},this.installNativeTools(),n.canvas){const o=()=>{for(const l of this.selection.get())this.transforms.beginEdit(l)},c=()=>{for(const l of this.selection.get())this.transforms.endEdit(l)};n.canvas.addEventListener("pointerdown",o),n.canvas.addEventListener("pointerup",c),this.removeCanvasListeners=()=>{n.canvas.removeEventListener("pointerdown",o),n.canvas.removeEventListener("pointerup",c)}}else this.removeCanvasListeners=null}capabilities={transform:!0,inspectorFields:!0,persist:!1};provenance;persistence;pickable;truth;indexed=new Map;idsByObject=new Map;listeners=new Set;persistenceBackend;baselines=new Map;historyBefore=new Map;historyResource=null;edits=0;gizmos=[];pointerTokens=[];removeCanvasListeners;scenes(){return(this.engine.scenes??[]).filter(e=>{try{return!e.isDisposed?.()}catch{return!0}})}refresh(){this.reindex();let e=0,t=0;for(const n of this.indexed.values())n.kind==="scene"?e++:t++;return{scenes:e,objects:t}}reindex(){this.indexed.clear(),this.idsByObject.clear();const e=new Set;for(const[t,n]of this.scenes().entries()){const s=n.name||`Scene ${t+1}`,i=`babylon:scene:${t}:${C(n.uid||s)}`,a=Array.isArray(n.rootNodes)?n.rootNodes:[],o={id:i,label:s,role:"root",kind:"babylon-scene",typeLabel:"BABYLON.Scene",parentId:null,childIds:[]};this.indexed.set(i,{kind:"scene",scene:n,node:o}),o.childIds=a.map((c,l)=>this.indexNode(c,i,`${t}/${l}`,e))}}indexNode(e,t,n,s){const i=u(e),o=`babylon:node:${typeof e.uniqueId=="number"?String(e.uniqueId):`path:${n}`}`,c={id:o,label:e.name||i,role:"entity",kind:`babylon-${i.toLowerCase()}`,typeLabel:i,parentId:t,childIds:[]};return this.indexed.set(o,{kind:"node",object:e,node:c}),this.idsByObject.set(e,o),s.has(e)||(s.add(e),c.childIds=z(e).map((l,h)=>this.indexNode(l,o,`${n}/${h}`,s))),o}hierarchy={roots:()=>(this.reindex(),[...this.indexed.values()].filter(e=>e.kind==="scene").map(e=>e.node)),node:e=>(this.reindex(),this.indexed.get(e)?.node??null)};selection={get:()=>[...this.store.shell.selectedEntityIds],set:e=>{this.store.shell.selectMultiple(e),this.attachGizmos(e[0]??null),this.notify()}};transforms={dimensions:e=>(this.reindex(),this.indexed.get(e)?.kind==="node"?"3d":null),get:e=>{this.reindex();const t=this.indexed.get(e);if(!t||t.kind!=="node")return{position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]};const n=t.object,s=n.rotationQuaternion??m(n.rotation);return{position:[n.position?.x??0,n.position?.y??0,n.position?.z??0],rotation:[s.x,s.y,s.z,s.w],scale:[n.scaling?.x??1,n.scaling?.y??1,n.scaling?.z??1]}},beginEdit:e=>{const t=this.captureChannels(e);t&&this.baselines.set(e,t),this.historyResource&&this.historyBefore.set(e,this.captureHistoryState())},apply:(e,t)=>{this.reindex();const n=this.indexed.get(e);if(!n||n.kind!=="node")return;const s=n.object;if(d(s.position,t.position),d(s.scaling,t.scale),s.rotationQuaternion)d(s.rotationQuaternion,t.rotation),s.rotationQuaternion.w=t.rotation[3];else{const i=p(t.rotation);d(s.rotation,[i.x,i.y,i.z])}this.notify()},endEdit:async e=>{const t=this.baselines.get(e);this.baselines.delete(e);const n=this.historyBefore.get(e);if(this.historyBefore.delete(e),!t||!this.persistenceBackend)return;const s=this.captureChannels(e);if(!s)return;const i=["position","rotation","scale"].filter(o=>JSON.stringify(t[o])!==JSON.stringify(s[o]));if(i.length===0)return;if(i.length>1){const o=`this Babylon gesture changed ${i.length} properties at once (${i.join(", ")})`;return this.persistenceBackend.report(`Transform ${this.labelOf(e)}`,o),{destination:"live-only (not saved)",persisted:!1}}const a=i[0];return y({backend:this.persistenceBackend,subject:()=>this.subjectFor(e,a),baseline:t[a],next:s[a],label:`Transform ${this.labelOf(e)}`,journal:()=>this.recordHistory(`Transform ${this.labelOf(e)}`,n)})}};inspector={properties:e=>{this.reindex();const t=this.indexed.get(e);if(!t)return[];if(t.kind==="scene")return[{path:"name",label:"Scene",type:"string",readonly:!0},{path:"uid",label:"UID",type:"string",readonly:!0}];const n=[{path:"className",label:"Type",type:"string",readonly:!0},{path:"name",label:"Name",type:"string"},{path:"id",label:"ID",type:"string",readonly:!0},{path:"enabled",label:"Enabled",type:"boolean"}];return typeof t.object.isVisible=="boolean"&&n.push({path:"isVisible",label:"Visible",type:"boolean"}),typeof t.object.visibility=="number"&&n.push({path:"visibility",label:"Visibility",type:"number"}),n},get:(e,t)=>{this.reindex();const n=this.indexed.get(e);if(n)return n.kind==="scene"?t==="name"?n.scene.name:t==="uid"?n.scene.uid:void 0:t==="className"?u(n.object):t==="enabled"?n.object.isEnabled?.(!1):n.object[t]},set:async(e,t,n)=>{this.reindex();const s=this.indexed.get(e);if(!s||s.kind!=="node")return;const i=this.readChannel(e,t),a=this.historyResource?this.captureHistoryState():void 0;if(t==="enabled")s.object.setEnabled?.(!!n);else if(t==="name"||t==="isVisible"||t==="visibility")s.object[t]=n;else return;this.notify();const o=this.readChannel(e,t);if(!(!this.persistenceBackend||i===void 0||o===void 0||JSON.stringify(i)===JSON.stringify(o)))return y({backend:this.persistenceBackend,subject:()=>this.subjectFor(e,t==="isVisible"?"visible":t),baseline:i,next:o,label:`Set ${this.labelOf(e)} ${t}`,journal:()=>this.recordHistory(`Set ${this.labelOf(e)} ${t}`,a)})}};subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}dispose(){this.removeCanvasListeners?.();for(const{scene:e,token:t}of this.pointerTokens)e.onPointerObservable?.remove(t);for(const e of this.gizmos)e.dispose();this.persistenceBackend?.dispose(),this.listeners.clear(),this.indexed.clear(),this.idsByObject.clear()}labelOf(e){return this.hierarchy.node(e)?.label??"Babylon node"}objectOf(e){this.reindex();const t=this.indexed.get(e);return t?.kind==="node"?t.object:null}readChannel(e,t){const n=this.objectOf(e);if(n){if(t==="position")return[n.position?.x??0,n.position?.y??0,n.position?.z??0];if(t==="rotation"){const s=n.rotationQuaternion,i=s?p([s.x,s.y,s.z,s.w]):n.rotation??{x:0,y:0,z:0};return[i.x,i.y,i.z]}return t==="scale"?[n.scaling?.x??1,n.scaling?.y??1,n.scaling?.z??1]:t==="visible"?n.isVisible:this.inspector.get(e,t)}}applyChannel(e,t,n){const s=this.objectOf(e);s&&(t==="position"&&Array.isArray(n)?d(s.position,n):t==="rotation"&&Array.isArray(n)?B(s,n):t==="scale"&&Array.isArray(n)?d(s.scaling,n):t==="visible"?s.isVisible=!!n:(t==="name"||t==="visibility")&&(s[t]=n),this.notify())}recordHistory(e,t){!this.historyResource||!t||(this.edits+=1,this.historyResource.record(e,t,this.captureHistoryState()).catch(n=>{g.error(`[babylon] failed to journal "${e}" into project history — the edit is applied but has no history entry (it cannot be undone): ${n instanceof Error?n.message:String(n)}`)}))}captureHistoryState(){this.reindex();const e={};for(const[t,n]of this.indexed){if(n.kind!=="node")continue;const s={};for(const i of["position","rotation","scale","visible","name","visibility"]){const a=this.readChannel(t,i);a!=null&&(s[i]=a)}e[t]=s}return{edits:this.edits,nodes:e}}restoreHistoryState(e){this.edits=e.edits;for(const[t,n]of Object.entries(e.nodes))for(const[s,i]of Object.entries(n))this.applyChannel(t,s,i);this.notify()}captureChannels(e){const t=this.readChannel(e,"position"),n=this.readChannel(e,"rotation"),s=this.readChannel(e,"scale");return t&&n&&s?{position:t,rotation:n,scale:s}:null}subjectFor(e,t){const n=this.objectOf(e),s=v(n);return{entityId:e,property:t,surface:"babylon",anchor:s,anchorKind:s.anchored?"construction-literal":"live-only",instances:s.anchored&&s.kind==="source"?x(s):0}}installNativeTools(){const e=this.options.api?.GizmoManager;for(const t of this.scenes()){if(e){const s=new e(t);s.positionGizmoEnabled=!0,s.rotationGizmoEnabled=!0,s.scaleGizmoEnabled=!0,s.usePointerToAttachGizmos=!1,this.gizmos.push(s)}const n=t.onPointerObservable;if(n){const s=n.add(i=>{const a=i.pickInfo?.pickedMesh;if(!a)return;this.reindex();const o=this.idsByObject.get(a);o&&this.selection.set([o])});this.pointerTokens.push({scene:t,token:s})}}}attachGizmos(e){const t=e?this.objectOf(e):null;for(const n of this.gizmos){if(!t){n.attachToMesh(null);continue}try{u(t).includes("Mesh")?n.attachToMesh(t):n.attachToNode?n.attachToNode(t):n.attachToMesh(null)}catch{n.attachToMesh(null)}}}notify(){for(const e of this.listeners)e();this.store.shell.notifyIngestEdit()}}export{R as BabylonAuthoringAdapter};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-
|
|
2
|
-
import{e2 as P,w as X,c6 as ce,X as ue,h6 as fe,ea as me,_ as pe,dw as he,k_ as ge,ag as we}from"./index-Crsbhlhy.js";import{n as ve,a as ye}from"./native-debug-module-DZBcJZ3O.js";import{assertNever as V}from"./adapter-surface-Y37Nzcyw.js";import{r as x}from"./index-nmcBqr7Y.js";import{h as be}from"./index-DzuOGwVB.js";import{staticBatchSkipReason as Ee,materialMergeSignature as Re}from"./structural-signature-Dc7skRiy.js";import{fd as Me}from"./three.core-3arARmh6.js";import{f as Se,c as Ce,a as Ae,b as _e}from"./webgl-frame-capture-DdJkM2mi.js";import{g as Pe}from"./debug-registry-Dc3W6vwO.js";import{y as xe,f as Fe,e as Te,n as $e,g as De}from"./events-156d8d12.esm-DmeaOP4r.js";import{a as ke}from"./realm-services-ZGsXIjKw.js";import{r as Ie}from"./relative-path-guard-GiM7Lsz8.js";import{b as je,m as Oe}from"./capability-coverage-CRqjvzDo.js";import{a as Be,b as Le}from"./react-root-BHA-cdrW.js";const ee=40,te=30;function re(e){const t=e;return t.isMesh||t.isSkinnedMesh?t:null}function T(e){const t=e.geometry;if(!t)return 0;const r=t.getIndex?.()??null,n=t.getAttribute?.("position")??null,s=r?r.count:n?.count??0,o=e.isInstancedMesh?e.count??1:1;return Math.round(s/3)*o}function U(e,t){if(!e.visible)return;const r=re(e);r&&t(r);for(const n of e.children)U(n,t)}const R="(unnamed)";function j(e,t="(scene)"){const r=new Map;let n=0,s=0;if(!e.visible)return{root:t,totalMeshes:0,totalTriangles:0,subtreeCount:0,subtrees:[]};const o=(d,u)=>{U(u,f=>{const p=T(f),a=r.get(d)??{meshes:0,triangles:0};a.meshes+=1,a.triangles+=p,r.set(d,a),n+=1,s+=p})},l=re(e);if(l){const d=T(l);r.set(e.name||t,{meshes:1,triangles:d}),n+=1,s+=d}for(const d of e.children)o(d.name||R,d);const i=[...r.entries()].map(([d,u])=>({name:d,meshes:u.meshes,triangles:u.triangles})).sort((d,u)=>u.triangles-d.triangles||u.meshes-d.meshes);return{root:t,totalMeshes:n,totalTriangles:s,subtreeCount:i.length,subtrees:i.slice(0,ee)}}function H(e,t){if(e.name===t)return e;for(const r of e.children){const n=H(r,t);if(n)return n}return null}function Ne(e){const t=new Map;let r=0;U(e,o=>{if(o.isInstancedMesh)return;const l=o.geometry;if(!l)return;const i=o.material,d=Array.isArray(i)?i.map(p=>p.uuid).join("+"):i?.uuid??"none",u=`${l.uuid}/${d}`;r+=1;const f=t.get(u);if(f){f.meshes+=1;return}t.set(u,{meshes:1,triangles:T(o),example:`${o.parent?.name||R}/${o.name||R}`})});const n=[...t.values()].sort((o,l)=>l.meshes-o.meshes),s=n.slice(0,te);return{plainMeshes:r,familyCount:n.length,top:s,meshesInTop:s.reduce((o,l)=>o+l.meshes,0)}}function Y(e){const t=new Map,r={},n=[];let s=0;const o=(a,c)=>{if(!a.visible)return!1;const m=Ee(a);if(m==="opted-out")return r["opted-out"]=(r["opted-out"]??0)+1,!1;if(m===null){const w=a,A=w.material,M=`${Re(A)}|${a.castShadow?1:0}${a.receiveShadow?1:0}`;s+=1,n.push({key:M,subtree:c});const S=t.get(M);S?S.meshes+=1:t.set(M,{meshes:1,triangles:T(w),example:`${a.parent?.name||R}/${a.name||R}`})}else m!=="not-a-mesh"&&(r[m]=(r[m]??0)+1);return!0},l=(a,c)=>{if(o(a,c))for(const m of a.children)l(m,c)};if(o(e,e.name||R))for(const a of e.children)l(a,a.name||R);const i=new Set([...t.entries()].filter(([,a])=>a.meshes>=2).map(([a])=>a)),d=new Map;let u=0;for(const a of n)i.has(a.key)&&(u+=1,d.set(a.subtree,(d.get(a.subtree)??0)+1));const f=[...t.values()].sort((a,c)=>c.meshes-a.meshes),p=f.slice(0,te);return{plainMeshes:s,familyCount:f.length,top:p,meshesInTop:p.reduce((a,c)=>a+c.meshes,0),collapsible:u,skipped:r,bySubtree:[...d.entries()].map(([a,c])=>({name:a,collapsible:c})).sort((a,c)=>c.collapsible-a.collapsible).slice(0,ee)}}const ne="render.submit",We=["input","prePhysics","physics","postPhysics","gameLogic","animation"],He=300,Ve=50,Ue=.05,ze=.1;function Ge(e,t,r){const n=e-t-r;return{totalMs:e,renderMs:t,simMs:r,otherMs:n,text:`${e.toFixed(0)}ms = render ${t.toFixed(0)} + sim ${r.toFixed(0)} + other ${n.toFixed(0)}`}}function Ke(){return{lastFrameId:0,lastPresentAt:null,pendingSimMs:0,frameTimeMs:null,renderCpuMs:null,drawCalls:null,triangles:null,renderPasses:null,worstCurrentMs:0,worstPreviousMs:0,worstWindowFrames:0,lastHitch:null,presentedFrames:0}}function Xe(e,t){let r=0;for(const n of e.phases)t.includes(n.name)&&(r+=n.ms);return r}function Ye(e){for(const t of e.phases)if(t.name===ne)return t.ms;return null}function J(e,t,r){return e===null?t:e*(1-r)+t*r}function Je(e,t){if(t.id<=e.lastFrameId)return!1;e.lastFrameId=t.id,t.render.renderPasses!==null&&(e.drawCalls=t.render.drawCalls,e.triangles=t.render.triangles,e.renderPasses=t.render.renderPasses),e.pendingSimMs+=Xe(t,We);const r=Ye(t);if(r===null)return!1;const n=e.pendingSimMs;e.pendingSimMs=0,e.presentedFrames+=1,e.renderCpuMs=J(e.renderCpuMs,r,ze);const s=e.lastPresentAt;if(e.lastPresentAt=t.timestamp,s===null)return!0;const o=t.timestamp-s;return e.frameTimeMs=J(e.frameTimeMs,o,Ue),o>e.worstCurrentMs&&(e.worstCurrentMs=o),e.worstWindowFrames+=1,e.worstWindowFrames>=He&&(e.worstPreviousMs=e.worstCurrentMs,e.worstCurrentMs=0,e.worstWindowFrames=0),o>=Ve&&(e.lastHitch=Ge(o,r,n)),!0}function F(e,t){if(e===null)return null;const r=10**t;return Math.round(e*r)/r}function Qe(e){const t=F(e.frameTimeMs,2),r=Math.max(e.worstCurrentMs,e.worstPreviousMs);return{frameTimeMs:t,fps:t!==null&&t>0?F(1e3/t,1):null,drawCalls:e.drawCalls,triangles:e.triangles,renderCpuMs:F(e.renderCpuMs,2),renderPasses:e.renderPasses,worstFrameMs:e.frameTimeMs===null?null:F(r,2),lastHitch:e.lastHitch,presentedFrames:e.presentedFrames}}function qe(e){const t=Ke(),r=e.subscribe(()=>{const s=e.getSnapshot().frames.at(-1);s&&Je(t,s)});let n=!1;return{read:()=>Qe(t),dispose(){n||(n=!0,r())}}}const Ze=500,et=.5,tt=.4,rt=120;function O(e){return e.toLocaleString("en-US")}function nt(e){const{drawCalls:t,census:r,structural:n}=e;if(t===null||t<Ze)return null;const{collapsible:s}=n;if(s<t*et)return null;const o=new Set(r.subtrees.map(p=>p.name)),l=n.bySubtree[0],i=l&&l.collapsible>=s*tt&&o.has(l.name)?l.name:null,d=i===null?"<Frozen>":`<Frozen name="${i}">`,u=i===null?"spread across the scene":`mostly under "${i}"`,f=`[static-batch] ${O(t)} draw calls this frame; ~${O(s)} meshes are repeats of ${O(n.familyCount)} structural families, ${u}. If that scenery is mount-static — nothing under it moves, re-colours or unmounts after mount — one wrapper collapses it to a few draws: wrap it in ${d}…</Frozen> (volter-game-editor add static-batch). Reactive scenery goes outside the wrapper, and a subtree that must stay unbatched declares it: userData={{ staticBatch: false }}.`;return{drawCalls:t,collapsible:s,subtree:i,fix:d,message:f}}const se="__volterStaticBatchAdvised";function st(){return globalThis[se]===!0}function ot(e){console.warn(e)}function at(e,t=ot){return st()?!1:(globalThis[se]=!0,t(e.message),!0)}const B="render.vitals",it="render.census",lt="render.families",dt="render.toggle",ct="render.dpr",ut="render.dpr: this world has no WebGL renderer (headless mount), so there is no pixel ratio to change. The other render.* commands still work — they read the scene graph.";function ft(e){const{registry:t,worldId:r,profiler:n,scene:s,renderer:o}=e;if(t.adapter.providers().some(c=>c.name===B))return console.warn(`[render-vitals] world "${r}" did not get the ${B} door: another live world already owns it (the names are fixed, so the first three root to mount wins). Its draws still fold into the readings — the profiler is game-scoped — but render.census/families/toggle address the owning root. If this world IS the current one, the previous mount was torn down AFTER this one seeded and its strip() took the door with it.`),null;const i=qe(n),d=t.forRoot(r);d.registerStateProvider(B,()=>i.read()),d.registerCommand(it,{description:"Visible meshes and triangles per subtree — the address book behind the draw-call reading. Pass a subtree name (as listed by a previous census) to drill into it.",args:P([X().optional()]),locus:"client"},c=>{if(c===void 0||c==="")return j(s);const m=H(s,c);if(!m)throw new Error(`render.census: no node named "${c}" in this world. Run render.census with no argument to list the addressable subtrees.`);return j(m,c)}),d.registerCommand(lt,{description:"Meshes grouped by shared (geometry, material) identity, largest group first — the instancing shortlist for a draw-call diet. `structural` is the same scan keyed by VALUE instead of object identity: what would collapse under a <Frozen> wrapper (volter-game-editor add static-batch) even when every mesh carries its own inline material.",args:P([]),locus:"client"},()=>({...Ne(s),structural:Y(s)})),d.registerCommand(dt,{description:"Show/hide a named subtree (as listed by render.census) and read render.vitals again — the difference is what that subtree costs.",args:P([X()]),locus:"client"},c=>{const m=H(s,c);if(!m)throw new Error(`render.toggle: no node named "${c}" in this world. Run render.census to list the addressable subtrees.`);return m.visible=!m.visible,{name:c,visible:m.visible}}),d.registerCommand(ct,{description:"Set the renderer pixel ratio (retina default is ~2) to probe GPU fill cost — render CPU that does not move when the drawing buffer shrinks was never fill-bound.",args:P([ce().positive().max(8)]),locus:"client"},c=>{if(!o)throw new Error(ut);const m=o.getSize(new Me);return o.setPixelRatio(c),o.setSize(m.x,m.y,!1),{pixelRatio:o.getPixelRatio(),drawingBuffer:{width:o.domElement.width,height:o.domElement.height}}});let u=null,f=!1;const p=()=>{if(f||i.read().presentedFrames<rt)return;f=!0,u?.(),u=null;const c=nt({drawCalls:i.read().drawCalls,census:j(s),structural:Y(s)});c&&at(c)};u=n.subscribe(p);let a=!1;return{vitals:i,dispose(){a||(a=!0,u?.(),u=null,i.dispose())}}}const mt={};function pt(e){return mt?.VITE_VOLTER_DEV_BUILD==="true"}const Q=new WeakMap;function ht(e){const t=Q.get(e.Component);if(t)return t;class r extends e.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(s){this.props.onError(s)}render(){return this.state.failed?null:this.props.children}}return Q.set(e.Component,r),r}function gt(e,t,r){const{createElement:n,Fragment:s,useEffect:o,createRoot:l,extend:i,advance:d,flushSync:u}=r,f=ht(r),p=n(t);return{id:e,async mount(a){i(a.three);const c=a.game?Pe(a.game):null,m=a.surface.canvas,w=l(m);let A;const M=new Promise(h=>{A=h});let S;const ae=new Promise(h=>{S=h});function ie(){return o(S,[]),null}await w.configure({gl:a.renderer,shadows:a.renderer.shadowMap?.enabled??!1,frameloop:"never",size:{width:a.surface.width,height:a.surface.height,top:0,left:0},...a.headless?{}:{events:r.events},onCreated:h=>A(h)});const le=n(r.FiberProvider,null,n(s,null,p,n(ie,{key:"volter-mount-effects-ready"}))),_=await new Promise((h,y)=>{const b=E=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": fiber crashed before its first commit — ${E}`))},g=E=>{b(E.message)},k=setTimeout(()=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": onCreated did not fire within 10s — the R3F tree never reached its first commit (mount() fails loudly instead of hanging)`))},1e4),I=()=>{clearTimeout(k),typeof window<"u"&&window.removeEventListener("error",g)};typeof window<"u"&&window.addEventListener("error",g),w.render(n(f,{onError:E=>b(E.message)},le)),Promise.all([M,ae]).then(([E])=>{I(),h(E)})});_.clock.autoStart=!1,_.clock.stop();const v=()=>_.get();let $=null;if(!a.headless&&a.game&&pt()){if(a.game.profiler.enabled=!0,!c)throw new Error(`three world "${e}": mounted Game has no debug registry.`);$=ft({registry:c,worldId:e,profiler:a.game.profiler,scene:v().scene,renderer:a.renderer})}const de=typeof a.renderer.getContext=="function"?a.renderer.getContext():void 0,z=Se(a.headless??!1,de),G=z?Ce(z):null,C=G?Ae({capture:G,scene:_.scene,memory:()=>_e(v().scene,a.renderer.info)}):null,K=c?{debug:c.adapter}:{};C&&(K.renderDebug=C.adapter);let D=0;return{kind:"three",get scene(){return v().scene},get camera(){return v().camera},drivesOwnLoop:!1,updateCadence:"display",systems:K,systemScope:v().scene,update(h){D+=h;const y=v();try{C?.beforeRender();const b=a.game?.profiler;if(!b?.enabled){d(D,!0,y);return}const g=a.renderer.info,k=g?.render.frame??0;b.beginPhase();try{d(D,!0,y)}finally{b.endPhase(ne)}g&&b.reportRender({gpuMs:null,drawCalls:g.render.calls,triangles:g.render.triangles,geometries:g.memory.geometries,textures:g.memory.textures,renderPasses:g.render.frame-k})}finally{C?.afterRender()}},resize(h,y){v().setSize(h,y)},dispose(){C?.dispose(),u(()=>w.unmount()),$?.dispose(),$=null,c?.strip(e)}}}}}function q(e,t,r){const n=e;return typeof n?.default=="function"?gt(t,n.default,r):null}const wt={FiberProvider:be,createElement:x.createElement,Fragment:x.Fragment,Component:x.Component,useEffect:x.useEffect,createRoot:Fe,extend:Te,advance:$e,flushSync:xe,events:De};let L=null;const vt=["FiberProvider","createElement","Fragment","Component","useEffect","createR3FRoot","extendThree","advance","flushSync","events"];async function yt(){const e=await import(fe),t=vt.filter(r=>e[r]===void 0);if(t.length>0||typeof e.projectThree!="object"||e.projectThree===null)throw new Error(`The packaged runtime's synthetic R3F module did not export ${[...t,...e.projectThree?[]:["projectThree"]].join(", ")} — see R3F_DOORWAY in vite-plugin-module-doorways.ts.`);return{runtime:{FiberProvider:e.FiberProvider,createElement:e.createElement,Fragment:e.Fragment,Component:e.Component,useEffect:e.useEffect,createRoot:e.createR3FRoot,extend:e.extendThree,advance:e.advance,flushSync:e.flushSync,events:e.events},projectThree:e.projectThree}}function bt(e,t){return{id:e.id,mount(r){return e.mount({...r,three:t})}}}async function Z(e,t){if(!await ue())return q(e,t,wt);L||(L=yt());const{runtime:r,projectThree:n}=await L,s=q(e,t,r);return s?bt(s,n):null}function Et(e){if(e===null||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&t.id.length>0&&typeof t.mount=="function"}async function Rt(e,t,r){const n=r?.namedExport;if(n!==void 0){const s=e[n];if(typeof s!="function")throw new Error(`three root "${t}": ${r?.entryPath??"the entry module"} has no exported component "${n}" (manifest \`world.export\`) — it exports ${Object.keys(e).join(", ")||"(nothing)"}.`);return Z({default:s},t)}return Et(e.adapter)?e.adapter:Z(e,t)}function Mt(e,t){const r=o=>{throw new Error(`resolveRootBinding: world "${e.id}" declares { module: "${t}" } — ${o} (the module path must be game-folder-relative, normalized, with no \`..\` escape).`)},n=Ie(t);n==="empty"&&r("the module path is empty"),n==="nul"&&r("the module path contains a NUL byte"),n==="absolute"&&r("the module path is absolute, not game-folder-relative"),n==="traversal"&&r("the module path contains a `..` segment and would escape the game folder"),t.includes("\\")&&r("the module path contains a backslash (not POSIX-relative)");const s=t.split("/").filter(o=>o.length>0&&o!==".").join("/");return s===""&&r("the module path resolves to nothing (empty after normalization)"),s}function N(e,t,r){const n=o=>{throw new Error(`resolveRootBinding: world "${e.id}"'s custom adapter module "${t}" ${o} — a { module } adapter must default-export an object shaped like \`RootAdapter\`: \`{ id: string, mount(host): Promise<MountedThreeRoot> }\`.`)};(r===null||typeof r!="object")&&n("has no default export (or it is not an object)");const s=r;(typeof s.id!="string"||s.id.length===0)&&n("default-exports an object with no non-empty string `id`"),typeof s.mount!="function"&&n("default-exports an object with no `mount` function")}const St="this world mounts through the project’s own adapter module, so every capability the editor has here is one that module hands it";function W(e,t){return{id:t.id,async mount(r){const n=await t.mount(r),s=je(e.id,Oe(n),St,n.kind);if(s){const{editorConsole:o}=await pe(async()=>{const{editorConsole:l}=await import("./index-Crsbhlhy.js").then(i=>i.tQ);return{editorConsole:l}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));o.warn(s,"adapter")}return n}}}async function Ct(e,t,r){const{adapter:n}=e;if(n.type!=="module")throw new Error(`resolveModuleAdapter: world "${e.id}" is not a { module } world.`);const s=Mt(e,n.module),l=await import(me(t,s,r)),i=l.default;switch(e.surface){case"three":return N(e,n.module,i),{resolved:{surface:"three",adapter:W(e,i)},module:l};case"canvas":return N(e,n.module,i),{resolved:{surface:"canvas",adapter:W(e,i)},module:l};case"dom":return N(e,n.module,i),{resolved:{surface:"dom",adapter:W(e,i)},module:l};default:return V(e.surface,"resolveModuleAdapter")}}async function At(e,t,r,n){const{adapter:s,module:o}=await Pt(e,t,n);return{adapter:s,declaration:_t(e,r,o)}}function _t(e,t,r){const n=ve(e.id,r),s=ye(e.id,r,e.surface);return{root:e,definition:t,entry:{reach:"full",module:r},...n?{entryDebug:n}:{},...s?{entrySystems:s}:{}}}async function Pt(e,t,r){const{adapter:n}=e;switch(n.identity){case"three":return xt(e,t,r);case"canvas":return Ft(e,t,r);case"dom":{let s={};return{adapter:{surface:"dom",adapter:await Le(e,t,l=>{s=l})},module:s}}case"module":{const{resolved:s,module:o}=await Ct(e,t.projectRoot,t.epoch);return{adapter:s,module:o}}case"ingest-react":{const{adapter:s,module:o}=await Be(e,t);return{adapter:{surface:"dom",adapter:s},module:o}}case"ingest-pixi":case"ingest-three":return Tt(e);default:{const s=n;throw new Error(`resolveRootBinding: unhandled adapter identity ${JSON.stringify(s)}`)}}}async function xt(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a three root with no \`entry\` — this should have been rejected by manifest validation. A three root is authored as a TSX/R3F world module.`);const n=await t.loadEntryModule(e.entry,e.id,"three",r?.selectionOverride),s=await Rt(n,e.id,{entryPath:e.entry});if(!s)throw new Error(`Project script at ${e.entry} neither exports \`adapter\` nor default-exports a React world component — every explicit first-party entry module satisfies one of the two (\`export default function World() { … }\`, or an \`adapter\` export for full control).`);return{adapter:{surface:"three",adapter:s},module:n}}async function Ft(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a canvas root with no \`entry\` — this should have been rejected by manifest validation. A canvas root is authored as a TSX world module; point \`entry\` at it.`);const n=await t.loadEntryModule(e.entry,e.id,"canvas",r?.selectionOverride),s=await t.pixiRuntime(n,e.id);if(!s)throw new Error(`Project script at ${e.entry} (canvas root "${e.id}") must default-export a React component (\`export default function World() { … }\`) — or export an \`adapter\` for full control.`);return{adapter:{surface:"canvas",adapter:s},module:n}}function Tt(e){const t=e.adapter.identity==="ingest-pixi"?"resolveIngest2DDescriptor + mountCanvasIngestRootFromManifest":"resolveIngestDescriptor + mountThreeIngestRootFromManifest";throw new Error(`resolveRootBinding: world "${e.id}" (${e.adapter.identity}) is a captured foreign runtime, not a host-mounted RootAdapter; dispatch it through ${t}`)}async function oe(e,t,r){const n=he(),s=await ke(t,n),o=await ge(),l=[];for(const i of we(e)){const d=r?.selectionOverride,u=await At(i,s,o,{...d&&i.id===d.regionId?{selectionOverride:{selection:d.selection,key:d.key}}:{}});l.push({world:i,resolved:u})}return{roots:l,mountId:String(n)}}async function Gt(e,t){const{roots:r}=await oe(e,t),n=[];for(const{world:s,resolved:o}of r){const l={id:s.id,zOrder:s.zOrder,pausable:s.pausable,declaration:o.declaration},i=o.adapter;switch(i.surface){case"canvas":n.push({...l,kind:"canvas",adapter:i.adapter});break;case"dom":n.push({...l,kind:"dom",adapter:i.adapter});break;case"three":n.push({...l,kind:"three",adapter:i.adapter});break;default:V(i,"resolveAllRoots")}}return n}async function Kt(e,t,r){const{roots:n,mountId:s}=await oe(e,t,r),o={};for(const{world:l,resolved:i}of n){const{root:d,...u}=i.declaration,f=i.adapter;switch(f.surface){case"canvas":o[l.id]={kind:"canvas",adapter:f.adapter,declaration:u};break;case"dom":o[l.id]={kind:"dom",adapter:f.adapter,declaration:u};break;case"three":o[l.id]={kind:"three",adapter:f.adapter,declaration:u};break;default:V(f,"resolveAllRootEntries")}}return{entries:o,mountId:s}}export{Rt as a,Kt as b,Gt as r};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DaRQxpdW.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{e2 as P,w as X,c6 as ce,X as ue,h6 as fe,ea as me,_ as pe,dw as he,k_ as ge,ag as we}from"./index-DaRQxpdW.js";import{n as ve,a as ye}from"./native-debug-module-DtxmnSHX.js";import{assertNever as V}from"./adapter-surface-Y37Nzcyw.js";import{r as x}from"./index-nmcBqr7Y.js";import{h as be}from"./index-DzuOGwVB.js";import{staticBatchSkipReason as Ee,materialMergeSignature as Re}from"./structural-signature-Dc7skRiy.js";import{fd as Me}from"./three.core-3arARmh6.js";import{f as Se,c as Ce,a as Ae,b as _e}from"./webgl-frame-capture-DdJkM2mi.js";import{g as Pe}from"./debug-registry-BUn-3w5j.js";import{y as xe,f as Fe,e as Te,n as $e,g as De}from"./events-156d8d12.esm-DmeaOP4r.js";import{a as ke}from"./realm-services-DjWyEFlR.js";import{r as Ie}from"./relative-path-guard-GiM7Lsz8.js";import{b as je,m as Oe}from"./capability-coverage-CKk539ZB.js";import{a as Be,b as Le}from"./react-root-BHA-cdrW.js";const ee=40,te=30;function re(e){const t=e;return t.isMesh||t.isSkinnedMesh?t:null}function T(e){const t=e.geometry;if(!t)return 0;const r=t.getIndex?.()??null,n=t.getAttribute?.("position")??null,s=r?r.count:n?.count??0,o=e.isInstancedMesh?e.count??1:1;return Math.round(s/3)*o}function U(e,t){if(!e.visible)return;const r=re(e);r&&t(r);for(const n of e.children)U(n,t)}const R="(unnamed)";function j(e,t="(scene)"){const r=new Map;let n=0,s=0;if(!e.visible)return{root:t,totalMeshes:0,totalTriangles:0,subtreeCount:0,subtrees:[]};const o=(d,u)=>{U(u,f=>{const p=T(f),a=r.get(d)??{meshes:0,triangles:0};a.meshes+=1,a.triangles+=p,r.set(d,a),n+=1,s+=p})},l=re(e);if(l){const d=T(l);r.set(e.name||t,{meshes:1,triangles:d}),n+=1,s+=d}for(const d of e.children)o(d.name||R,d);const i=[...r.entries()].map(([d,u])=>({name:d,meshes:u.meshes,triangles:u.triangles})).sort((d,u)=>u.triangles-d.triangles||u.meshes-d.meshes);return{root:t,totalMeshes:n,totalTriangles:s,subtreeCount:i.length,subtrees:i.slice(0,ee)}}function H(e,t){if(e.name===t)return e;for(const r of e.children){const n=H(r,t);if(n)return n}return null}function Ne(e){const t=new Map;let r=0;U(e,o=>{if(o.isInstancedMesh)return;const l=o.geometry;if(!l)return;const i=o.material,d=Array.isArray(i)?i.map(p=>p.uuid).join("+"):i?.uuid??"none",u=`${l.uuid}/${d}`;r+=1;const f=t.get(u);if(f){f.meshes+=1;return}t.set(u,{meshes:1,triangles:T(o),example:`${o.parent?.name||R}/${o.name||R}`})});const n=[...t.values()].sort((o,l)=>l.meshes-o.meshes),s=n.slice(0,te);return{plainMeshes:r,familyCount:n.length,top:s,meshesInTop:s.reduce((o,l)=>o+l.meshes,0)}}function Y(e){const t=new Map,r={},n=[];let s=0;const o=(a,c)=>{if(!a.visible)return!1;const m=Ee(a);if(m==="opted-out")return r["opted-out"]=(r["opted-out"]??0)+1,!1;if(m===null){const w=a,A=w.material,M=`${Re(A)}|${a.castShadow?1:0}${a.receiveShadow?1:0}`;s+=1,n.push({key:M,subtree:c});const S=t.get(M);S?S.meshes+=1:t.set(M,{meshes:1,triangles:T(w),example:`${a.parent?.name||R}/${a.name||R}`})}else m!=="not-a-mesh"&&(r[m]=(r[m]??0)+1);return!0},l=(a,c)=>{if(o(a,c))for(const m of a.children)l(m,c)};if(o(e,e.name||R))for(const a of e.children)l(a,a.name||R);const i=new Set([...t.entries()].filter(([,a])=>a.meshes>=2).map(([a])=>a)),d=new Map;let u=0;for(const a of n)i.has(a.key)&&(u+=1,d.set(a.subtree,(d.get(a.subtree)??0)+1));const f=[...t.values()].sort((a,c)=>c.meshes-a.meshes),p=f.slice(0,te);return{plainMeshes:s,familyCount:f.length,top:p,meshesInTop:p.reduce((a,c)=>a+c.meshes,0),collapsible:u,skipped:r,bySubtree:[...d.entries()].map(([a,c])=>({name:a,collapsible:c})).sort((a,c)=>c.collapsible-a.collapsible).slice(0,ee)}}const ne="render.submit",We=["input","prePhysics","physics","postPhysics","gameLogic","animation"],He=300,Ve=50,Ue=.05,ze=.1;function Ge(e,t,r){const n=e-t-r;return{totalMs:e,renderMs:t,simMs:r,otherMs:n,text:`${e.toFixed(0)}ms = render ${t.toFixed(0)} + sim ${r.toFixed(0)} + other ${n.toFixed(0)}`}}function Ke(){return{lastFrameId:0,lastPresentAt:null,pendingSimMs:0,frameTimeMs:null,renderCpuMs:null,drawCalls:null,triangles:null,renderPasses:null,worstCurrentMs:0,worstPreviousMs:0,worstWindowFrames:0,lastHitch:null,presentedFrames:0}}function Xe(e,t){let r=0;for(const n of e.phases)t.includes(n.name)&&(r+=n.ms);return r}function Ye(e){for(const t of e.phases)if(t.name===ne)return t.ms;return null}function J(e,t,r){return e===null?t:e*(1-r)+t*r}function Je(e,t){if(t.id<=e.lastFrameId)return!1;e.lastFrameId=t.id,t.render.renderPasses!==null&&(e.drawCalls=t.render.drawCalls,e.triangles=t.render.triangles,e.renderPasses=t.render.renderPasses),e.pendingSimMs+=Xe(t,We);const r=Ye(t);if(r===null)return!1;const n=e.pendingSimMs;e.pendingSimMs=0,e.presentedFrames+=1,e.renderCpuMs=J(e.renderCpuMs,r,ze);const s=e.lastPresentAt;if(e.lastPresentAt=t.timestamp,s===null)return!0;const o=t.timestamp-s;return e.frameTimeMs=J(e.frameTimeMs,o,Ue),o>e.worstCurrentMs&&(e.worstCurrentMs=o),e.worstWindowFrames+=1,e.worstWindowFrames>=He&&(e.worstPreviousMs=e.worstCurrentMs,e.worstCurrentMs=0,e.worstWindowFrames=0),o>=Ve&&(e.lastHitch=Ge(o,r,n)),!0}function F(e,t){if(e===null)return null;const r=10**t;return Math.round(e*r)/r}function Qe(e){const t=F(e.frameTimeMs,2),r=Math.max(e.worstCurrentMs,e.worstPreviousMs);return{frameTimeMs:t,fps:t!==null&&t>0?F(1e3/t,1):null,drawCalls:e.drawCalls,triangles:e.triangles,renderCpuMs:F(e.renderCpuMs,2),renderPasses:e.renderPasses,worstFrameMs:e.frameTimeMs===null?null:F(r,2),lastHitch:e.lastHitch,presentedFrames:e.presentedFrames}}function qe(e){const t=Ke(),r=e.subscribe(()=>{const s=e.getSnapshot().frames.at(-1);s&&Je(t,s)});let n=!1;return{read:()=>Qe(t),dispose(){n||(n=!0,r())}}}const Ze=500,et=.5,tt=.4,rt=120;function O(e){return e.toLocaleString("en-US")}function nt(e){const{drawCalls:t,census:r,structural:n}=e;if(t===null||t<Ze)return null;const{collapsible:s}=n;if(s<t*et)return null;const o=new Set(r.subtrees.map(p=>p.name)),l=n.bySubtree[0],i=l&&l.collapsible>=s*tt&&o.has(l.name)?l.name:null,d=i===null?"<Frozen>":`<Frozen name="${i}">`,u=i===null?"spread across the scene":`mostly under "${i}"`,f=`[static-batch] ${O(t)} draw calls this frame; ~${O(s)} meshes are repeats of ${O(n.familyCount)} structural families, ${u}. If that scenery is mount-static — nothing under it moves, re-colours or unmounts after mount — one wrapper collapses it to a few draws: wrap it in ${d}…</Frozen> (volter-game-editor add static-batch). Reactive scenery goes outside the wrapper, and a subtree that must stay unbatched declares it: userData={{ staticBatch: false }}.`;return{drawCalls:t,collapsible:s,subtree:i,fix:d,message:f}}const se="__volterStaticBatchAdvised";function st(){return globalThis[se]===!0}function ot(e){console.warn(e)}function at(e,t=ot){return st()?!1:(globalThis[se]=!0,t(e.message),!0)}const B="render.vitals",it="render.census",lt="render.families",dt="render.toggle",ct="render.dpr",ut="render.dpr: this world has no WebGL renderer (headless mount), so there is no pixel ratio to change. The other render.* commands still work — they read the scene graph.";function ft(e){const{registry:t,worldId:r,profiler:n,scene:s,renderer:o}=e;if(t.adapter.providers().some(c=>c.name===B))return console.warn(`[render-vitals] world "${r}" did not get the ${B} door: another live world already owns it (the names are fixed, so the first three root to mount wins). Its draws still fold into the readings — the profiler is game-scoped — but render.census/families/toggle address the owning root. If this world IS the current one, the previous mount was torn down AFTER this one seeded and its strip() took the door with it.`),null;const i=qe(n),d=t.forRoot(r);d.registerStateProvider(B,()=>i.read()),d.registerCommand(it,{description:"Visible meshes and triangles per subtree — the address book behind the draw-call reading. Pass a subtree name (as listed by a previous census) to drill into it.",args:P([X().optional()]),locus:"client"},c=>{if(c===void 0||c==="")return j(s);const m=H(s,c);if(!m)throw new Error(`render.census: no node named "${c}" in this world. Run render.census with no argument to list the addressable subtrees.`);return j(m,c)}),d.registerCommand(lt,{description:"Meshes grouped by shared (geometry, material) identity, largest group first — the instancing shortlist for a draw-call diet. `structural` is the same scan keyed by VALUE instead of object identity: what would collapse under a <Frozen> wrapper (volter-game-editor add static-batch) even when every mesh carries its own inline material.",args:P([]),locus:"client"},()=>({...Ne(s),structural:Y(s)})),d.registerCommand(dt,{description:"Show/hide a named subtree (as listed by render.census) and read render.vitals again — the difference is what that subtree costs.",args:P([X()]),locus:"client"},c=>{const m=H(s,c);if(!m)throw new Error(`render.toggle: no node named "${c}" in this world. Run render.census to list the addressable subtrees.`);return m.visible=!m.visible,{name:c,visible:m.visible}}),d.registerCommand(ct,{description:"Set the renderer pixel ratio (retina default is ~2) to probe GPU fill cost — render CPU that does not move when the drawing buffer shrinks was never fill-bound.",args:P([ce().positive().max(8)]),locus:"client"},c=>{if(!o)throw new Error(ut);const m=o.getSize(new Me);return o.setPixelRatio(c),o.setSize(m.x,m.y,!1),{pixelRatio:o.getPixelRatio(),drawingBuffer:{width:o.domElement.width,height:o.domElement.height}}});let u=null,f=!1;const p=()=>{if(f||i.read().presentedFrames<rt)return;f=!0,u?.(),u=null;const c=nt({drawCalls:i.read().drawCalls,census:j(s),structural:Y(s)});c&&at(c)};u=n.subscribe(p);let a=!1;return{vitals:i,dispose(){a||(a=!0,u?.(),u=null,i.dispose())}}}const mt={};function pt(e){return mt?.VITE_VOLTER_DEV_BUILD==="true"}const Q=new WeakMap;function ht(e){const t=Q.get(e.Component);if(t)return t;class r extends e.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(s){this.props.onError(s)}render(){return this.state.failed?null:this.props.children}}return Q.set(e.Component,r),r}function gt(e,t,r){const{createElement:n,Fragment:s,useEffect:o,createRoot:l,extend:i,advance:d,flushSync:u}=r,f=ht(r),p=n(t);return{id:e,async mount(a){i(a.three);const c=a.game?Pe(a.game):null,m=a.surface.canvas,w=l(m);let A;const M=new Promise(h=>{A=h});let S;const ae=new Promise(h=>{S=h});function ie(){return o(S,[]),null}await w.configure({gl:a.renderer,shadows:a.renderer.shadowMap?.enabled??!1,frameloop:"never",size:{width:a.surface.width,height:a.surface.height,top:0,left:0},...a.headless?{}:{events:r.events},onCreated:h=>A(h)});const le=n(r.FiberProvider,null,n(s,null,p,n(ie,{key:"volter-mount-effects-ready"}))),_=await new Promise((h,y)=>{const b=E=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": fiber crashed before its first commit — ${E}`))},g=E=>{b(E.message)},k=setTimeout(()=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": onCreated did not fire within 10s — the R3F tree never reached its first commit (mount() fails loudly instead of hanging)`))},1e4),I=()=>{clearTimeout(k),typeof window<"u"&&window.removeEventListener("error",g)};typeof window<"u"&&window.addEventListener("error",g),w.render(n(f,{onError:E=>b(E.message)},le)),Promise.all([M,ae]).then(([E])=>{I(),h(E)})});_.clock.autoStart=!1,_.clock.stop();const v=()=>_.get();let $=null;if(!a.headless&&a.game&&pt()){if(a.game.profiler.enabled=!0,!c)throw new Error(`three world "${e}": mounted Game has no debug registry.`);$=ft({registry:c,worldId:e,profiler:a.game.profiler,scene:v().scene,renderer:a.renderer})}const de=typeof a.renderer.getContext=="function"?a.renderer.getContext():void 0,z=Se(a.headless??!1,de),G=z?Ce(z):null,C=G?Ae({capture:G,scene:_.scene,memory:()=>_e(v().scene,a.renderer.info)}):null,K=c?{debug:c.adapter}:{};C&&(K.renderDebug=C.adapter);let D=0;return{kind:"three",get scene(){return v().scene},get camera(){return v().camera},drivesOwnLoop:!1,updateCadence:"display",systems:K,systemScope:v().scene,update(h){D+=h;const y=v();try{C?.beforeRender();const b=a.game?.profiler;if(!b?.enabled){d(D,!0,y);return}const g=a.renderer.info,k=g?.render.frame??0;b.beginPhase();try{d(D,!0,y)}finally{b.endPhase(ne)}g&&b.reportRender({gpuMs:null,drawCalls:g.render.calls,triangles:g.render.triangles,geometries:g.memory.geometries,textures:g.memory.textures,renderPasses:g.render.frame-k})}finally{C?.afterRender()}},resize(h,y){v().setSize(h,y)},dispose(){C?.dispose(),u(()=>w.unmount()),$?.dispose(),$=null,c?.strip(e)}}}}}function q(e,t,r){const n=e;return typeof n?.default=="function"?gt(t,n.default,r):null}const wt={FiberProvider:be,createElement:x.createElement,Fragment:x.Fragment,Component:x.Component,useEffect:x.useEffect,createRoot:Fe,extend:Te,advance:$e,flushSync:xe,events:De};let L=null;const vt=["FiberProvider","createElement","Fragment","Component","useEffect","createR3FRoot","extendThree","advance","flushSync","events"];async function yt(){const e=await import(fe),t=vt.filter(r=>e[r]===void 0);if(t.length>0||typeof e.projectThree!="object"||e.projectThree===null)throw new Error(`The packaged runtime's synthetic R3F module did not export ${[...t,...e.projectThree?[]:["projectThree"]].join(", ")} — see R3F_DOORWAY in vite-plugin-module-doorways.ts.`);return{runtime:{FiberProvider:e.FiberProvider,createElement:e.createElement,Fragment:e.Fragment,Component:e.Component,useEffect:e.useEffect,createRoot:e.createR3FRoot,extend:e.extendThree,advance:e.advance,flushSync:e.flushSync,events:e.events},projectThree:e.projectThree}}function bt(e,t){return{id:e.id,mount(r){return e.mount({...r,three:t})}}}async function Z(e,t){if(!await ue())return q(e,t,wt);L||(L=yt());const{runtime:r,projectThree:n}=await L,s=q(e,t,r);return s?bt(s,n):null}function Et(e){if(e===null||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&t.id.length>0&&typeof t.mount=="function"}async function Rt(e,t,r){const n=r?.namedExport;if(n!==void 0){const s=e[n];if(typeof s!="function")throw new Error(`three root "${t}": ${r?.entryPath??"the entry module"} has no exported component "${n}" (manifest \`world.export\`) — it exports ${Object.keys(e).join(", ")||"(nothing)"}.`);return Z({default:s},t)}return Et(e.adapter)?e.adapter:Z(e,t)}function Mt(e,t){const r=o=>{throw new Error(`resolveRootBinding: world "${e.id}" declares { module: "${t}" } — ${o} (the module path must be game-folder-relative, normalized, with no \`..\` escape).`)},n=Ie(t);n==="empty"&&r("the module path is empty"),n==="nul"&&r("the module path contains a NUL byte"),n==="absolute"&&r("the module path is absolute, not game-folder-relative"),n==="traversal"&&r("the module path contains a `..` segment and would escape the game folder"),t.includes("\\")&&r("the module path contains a backslash (not POSIX-relative)");const s=t.split("/").filter(o=>o.length>0&&o!==".").join("/");return s===""&&r("the module path resolves to nothing (empty after normalization)"),s}function N(e,t,r){const n=o=>{throw new Error(`resolveRootBinding: world "${e.id}"'s custom adapter module "${t}" ${o} — a { module } adapter must default-export an object shaped like \`RootAdapter\`: \`{ id: string, mount(host): Promise<MountedThreeRoot> }\`.`)};(r===null||typeof r!="object")&&n("has no default export (or it is not an object)");const s=r;(typeof s.id!="string"||s.id.length===0)&&n("default-exports an object with no non-empty string `id`"),typeof s.mount!="function"&&n("default-exports an object with no `mount` function")}const St="this world mounts through the project’s own adapter module, so every capability the editor has here is one that module hands it";function W(e,t){return{id:t.id,async mount(r){const n=await t.mount(r),s=je(e.id,Oe(n),St,n.kind);if(s){const{editorConsole:o}=await pe(async()=>{const{editorConsole:l}=await import("./index-DaRQxpdW.js").then(i=>i.tQ);return{editorConsole:l}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));o.warn(s,"adapter")}return n}}}async function Ct(e,t,r){const{adapter:n}=e;if(n.type!=="module")throw new Error(`resolveModuleAdapter: world "${e.id}" is not a { module } world.`);const s=Mt(e,n.module),l=await import(me(t,s,r)),i=l.default;switch(e.surface){case"three":return N(e,n.module,i),{resolved:{surface:"three",adapter:W(e,i)},module:l};case"canvas":return N(e,n.module,i),{resolved:{surface:"canvas",adapter:W(e,i)},module:l};case"dom":return N(e,n.module,i),{resolved:{surface:"dom",adapter:W(e,i)},module:l};default:return V(e.surface,"resolveModuleAdapter")}}async function At(e,t,r,n){const{adapter:s,module:o}=await Pt(e,t,n);return{adapter:s,declaration:_t(e,r,o)}}function _t(e,t,r){const n=ve(e.id,r),s=ye(e.id,r,e.surface);return{root:e,definition:t,entry:{reach:"full",module:r},...n?{entryDebug:n}:{},...s?{entrySystems:s}:{}}}async function Pt(e,t,r){const{adapter:n}=e;switch(n.identity){case"three":return xt(e,t,r);case"canvas":return Ft(e,t,r);case"dom":{let s={};return{adapter:{surface:"dom",adapter:await Le(e,t,l=>{s=l})},module:s}}case"module":{const{resolved:s,module:o}=await Ct(e,t.projectRoot,t.epoch);return{adapter:s,module:o}}case"ingest-react":{const{adapter:s,module:o}=await Be(e,t);return{adapter:{surface:"dom",adapter:s},module:o}}case"ingest-pixi":case"ingest-three":return Tt(e);default:{const s=n;throw new Error(`resolveRootBinding: unhandled adapter identity ${JSON.stringify(s)}`)}}}async function xt(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a three root with no \`entry\` — this should have been rejected by manifest validation. A three root is authored as a TSX/R3F world module.`);const n=await t.loadEntryModule(e.entry,e.id,"three",r?.selectionOverride),s=await Rt(n,e.id,{entryPath:e.entry});if(!s)throw new Error(`Project script at ${e.entry} neither exports \`adapter\` nor default-exports a React world component — every explicit first-party entry module satisfies one of the two (\`export default function World() { … }\`, or an \`adapter\` export for full control).`);return{adapter:{surface:"three",adapter:s},module:n}}async function Ft(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a canvas root with no \`entry\` — this should have been rejected by manifest validation. A canvas root is authored as a TSX world module; point \`entry\` at it.`);const n=await t.loadEntryModule(e.entry,e.id,"canvas",r?.selectionOverride),s=await t.pixiRuntime(n,e.id);if(!s)throw new Error(`Project script at ${e.entry} (canvas root "${e.id}") must default-export a React component (\`export default function World() { … }\`) — or export an \`adapter\` for full control.`);return{adapter:{surface:"canvas",adapter:s},module:n}}function Tt(e){const t=e.adapter.identity==="ingest-pixi"?"resolveIngest2DDescriptor + mountCanvasIngestRootFromManifest":"resolveIngestDescriptor + mountThreeIngestRootFromManifest";throw new Error(`resolveRootBinding: world "${e.id}" (${e.adapter.identity}) is a captured foreign runtime, not a host-mounted RootAdapter; dispatch it through ${t}`)}async function oe(e,t,r){const n=he(),s=await ke(t,n),o=await ge(),l=[];for(const i of we(e)){const d=r?.selectionOverride,u=await At(i,s,o,{...d&&i.id===d.regionId?{selectionOverride:{selection:d.selection,key:d.key}}:{}});l.push({world:i,resolved:u})}return{roots:l,mountId:String(n)}}async function Gt(e,t){const{roots:r}=await oe(e,t),n=[];for(const{world:s,resolved:o}of r){const l={id:s.id,zOrder:s.zOrder,pausable:s.pausable,declaration:o.declaration},i=o.adapter;switch(i.surface){case"canvas":n.push({...l,kind:"canvas",adapter:i.adapter});break;case"dom":n.push({...l,kind:"dom",adapter:i.adapter});break;case"three":n.push({...l,kind:"three",adapter:i.adapter});break;default:V(i,"resolveAllRoots")}}return n}async function Kt(e,t,r){const{roots:n,mountId:s}=await oe(e,t,r),o={};for(const{world:l,resolved:i}of n){const{root:d,...u}=i.declaration,f=i.adapter;switch(f.surface){case"canvas":o[l.id]={kind:"canvas",adapter:f.adapter,declaration:u};break;case"dom":o[l.id]={kind:"dom",adapter:f.adapter,declaration:u};break;case"three":o[l.id]={kind:"three",adapter:f.adapter,declaration:u};break;default:V(f,"resolveAllRootEntries")}}return{entries:o,mountId:s}}export{Rt as a,Kt as b,Gt as r};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{go as Ce}from"./index-Crsbhlhy.js";import{r as T}from"./index-nmcBqr7Y.js";import{s as Te,b as Q,a as Ee,n as ee,c as B,d as U,r as we,e as Oe,f as Ie,N as Ne}from"./blender-runtime-host-BDbcC0Zg.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-JcLbQeNM.js";import"./hierarchy-marks-D-538fQp.js";import"./workspace-arrangement-BPsnvrOt.js";const Re={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Factor",identifier:"Fac"},{kind:"input",name:"Type"},{kind:"input",name:"Lift",identifier:"Base Lift"},{kind:"input",name:"Lift",identifier:"Color Lift"},{kind:"input",name:"Gamma",identifier:"Base Gamma"},{kind:"input",name:"Gamma",identifier:"Color Gamma"},{kind:"input",name:"Gain",identifier:"Base Gain"},{kind:"input",name:"Gain",identifier:"Color Gain"},{kind:"input",name:"Offset",identifier:"Base Offset"},{kind:"input",name:"Offset",identifier:"Color Offset"},{kind:"input",name:"Power",identifier:"Base Power"},{kind:"input",name:"Power",identifier:"Color Power"},{kind:"input",name:"Slope",identifier:"Base Slope"},{kind:"input",name:"Slope",identifier:"Color Slope"},{kind:"panel",name:"Input",items:[{kind:"input",name:"Temperature",identifier:"Input Temperature"},{kind:"input",name:"Tint",identifier:"Input Tint"},{kind:"layout"}]},{kind:"panel",name:"Output",items:[{kind:"input",name:"Temperature",identifier:"Output Temperature"},{kind:"input",name:"Tint",identifier:"Output Tint"},{kind:"layout"}]}]},Pe={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Mask"},{kind:"panel",name:"Master",items:[{kind:"input",name:"Saturation",identifier:"Master Saturation"},{kind:"input",name:"Contrast",identifier:"Master Contrast"},{kind:"input",name:"Gamma",identifier:"Master Gamma"},{kind:"input",name:"Gain",identifier:"Master Gain"},{kind:"input",name:"Offset",identifier:"Master Offset"}],defaultClosed:!0},{kind:"panel",name:"Highlights",items:[{kind:"input",name:"Saturation",identifier:"Highlights Saturation"},{kind:"input",name:"Contrast",identifier:"Highlights Contrast"},{kind:"input",name:"Gamma",identifier:"Highlights Gamma"},{kind:"input",name:"Gain",identifier:"Highlights Gain"},{kind:"input",name:"Offset",identifier:"Highlights Offset"}],defaultClosed:!0},{kind:"panel",name:"Midtones",items:[{kind:"input",name:"Saturation",identifier:"Midtones Saturation"},{kind:"input",name:"Contrast",identifier:"Midtones Contrast"},{kind:"input",name:"Gamma",identifier:"Midtones Gamma"},{kind:"input",name:"Gain",identifier:"Midtones Gain"},{kind:"input",name:"Offset",identifier:"Midtones Offset"}],defaultClosed:!0},{kind:"panel",name:"Shadows",items:[{kind:"input",name:"Saturation",identifier:"Shadows Saturation"},{kind:"input",name:"Contrast",identifier:"Shadows Contrast"},{kind:"input",name:"Gamma",identifier:"Shadows Gamma"},{kind:"input",name:"Gain",identifier:"Shadows Gain"},{kind:"input",name:"Offset",identifier:"Shadows Offset"}],defaultClosed:!0},{kind:"panel",name:"Tonal Range",items:[{kind:"input",name:"Midtones Start"},{kind:"input",name:"Midtones End"}],defaultClosed:!0},{kind:"panel",name:"Channels",items:[{kind:"input",name:"Red",identifier:"Apply On Red"},{kind:"input",name:"Green",identifier:"Apply On Green"},{kind:"input",name:"Blue",identifier:"Apply On Blue"}],defaultClosed:!0}]},_e={customSocketOrder:!0,items:[{kind:"output",name:"Image"},{kind:"input",name:"Image"},{kind:"input",name:"Factor",identifier:"Fac"},{kind:"input",name:"Spill Channel"},{kind:"input",name:"Limit Method"},{kind:"input",name:"Limit Channel"},{kind:"input",name:"Limit Strength"},{kind:"panel",name:"Spill Strength",items:[{kind:"input",name:"Use Spill Strength",panelToggle:!0},{kind:"input",name:"Strength",identifier:"Spill Strength"}],defaultClosed:!0}]},Me={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Plane"},{kind:"input",name:"Upper Left"},{kind:"input",name:"Upper Right"},{kind:"input",name:"Lower Left"},{kind:"input",name:"Lower Right"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},ve={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Samples"},{kind:"input",name:"Center"},{kind:"input",name:"Rotation"},{kind:"input",name:"Scale"},{kind:"panel",name:"Translation",items:[{kind:"input",name:"Amount",identifier:"Translation Amount"},{kind:"input",name:"Direction",identifier:"Translation Direction"}]}]},Ae={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Displacement"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},be={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Glare"},{kind:"output",name:"Highlights"},{kind:"input",name:"Type"},{kind:"input",name:"Quality"},{kind:"panel",name:"Highlights",items:[{kind:"input",name:"Threshold",identifier:"Highlights Threshold"},{kind:"input",name:"Smoothness",identifier:"Highlights Smoothness"},{kind:"panel",name:"Clamp",items:[{kind:"input",name:"Clamp",identifier:"Clamp Highlights",panelToggle:!0},{kind:"input",name:"Maximum",identifier:"Maximum Highlights"}],defaultClosed:!0}],defaultClosed:!0},{kind:"panel",name:"Adjust",items:[{kind:"input",name:"Strength"},{kind:"input",name:"Saturation"},{kind:"input",name:"Tint"}]},{kind:"panel",name:"Glare",items:[{kind:"input",name:"Size"},{kind:"input",name:"Streaks"},{kind:"input",name:"Streaks Angle"},{kind:"input",name:"Iterations"},{kind:"input",name:"Fade"},{kind:"input",name:"Color Modulation"},{kind:"input",name:"Diagonal",identifier:"Diagonal Star"},{kind:"input",name:"Sun Position"},{kind:"input",name:"Jitter"},{kind:"input",name:"Kernel Data Type"},{kind:"input",name:"Kernel",identifier:"Float Kernel"},{kind:"input",name:"Kernel",identifier:"Color Kernel"}]}]},De={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Matte"},{kind:"output",name:"Edges"},{kind:"input",name:"Key Color"},{kind:"panel",name:"Preprocess",items:[{kind:"input",name:"Blur Size",identifier:"Preprocess Blur Size"}],defaultClosed:!0},{kind:"panel",name:"Key",items:[{kind:"input",name:"Balance",identifier:"Key Balance"}],defaultClosed:!0},{kind:"panel",name:"Tweak",items:[{kind:"input",name:"Black Level"},{kind:"input",name:"White Level"},{kind:"panel",name:"Edges",items:[{kind:"input",name:"Size",identifier:"Edge Search Size"},{kind:"input",name:"Tolerance",identifier:"Edge Tolerance"}],defaultClosed:!0}],defaultClosed:!0},{kind:"panel",name:"Mask",items:[{kind:"input",name:"Garbage Matte"},{kind:"input",name:"Core Matte"}],defaultClosed:!0},{kind:"panel",name:"Postprocess",items:[{kind:"input",name:"Blur Size",identifier:"Postprocess Blur Size"},{kind:"input",name:"Dilate Size",identifier:"Postprocess Dilate Size"},{kind:"input",name:"Feather Size",identifier:"Postprocess Feather Size"},{kind:"input",name:"Feather Falloff"}],defaultClosed:!0},{kind:"panel",name:"Despill",items:[{kind:"input",name:"Strength",identifier:"Despill Strength"},{kind:"input",name:"Balance",identifier:"Despill Balance"}],defaultClosed:!0}]},Be={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"UV"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Le={customSocketOrder:!0,items:[{kind:"output",name:"Mask"},{kind:"layout"},{kind:"input",name:"Size Source"},{kind:"input",name:"Size X"},{kind:"input",name:"Size Y"},{kind:"input",name:"Feather"},{kind:"panel",name:"Motion Blur",items:[{kind:"input",name:"Motion Blur",panelToggle:!0},{kind:"input",name:"Samples",identifier:"Motion Blur Samples"},{kind:"input",name:"Shutter",identifier:"Motion Blur Shutter"}],defaultClosed:!0}]},$e={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Plane"},{kind:"layout"},{kind:"panel",name:"Motion Blur",items:[{kind:"input",name:"Motion Blur",panelToggle:!0},{kind:"input",name:"Samples",identifier:"Motion Blur Samples"},{kind:"input",name:"Shutter",identifier:"Motion Blur Shutter"}],defaultClosed:!0}]},je={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Angle"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Fe={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Type"},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"input",name:"Frame Type"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ge={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"layout"},{kind:"input",name:"Frame"},{kind:"input",name:"Invert"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},We={customSocketOrder:!0,items:[{kind:"output",name:"Image"},{kind:"input",name:"String"},{kind:"input",name:"Font"},{kind:"input",name:"Size"},{kind:"panel",name:"Alignment",items:[{kind:"input",name:"Horizontal Alignment"},{kind:"input",name:"Vertical Alignment"}],defaultClosed:!0},{kind:"panel",name:"Wrap",items:[{kind:"input",name:"Wrap",panelToggle:!0},{kind:"input",name:"Width",identifier:"Wrap Width"}],defaultClosed:!0}]},He={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"input",name:"Angle"},{kind:"input",name:"Scale"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ue={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ye={customSocketOrder:!0,items:[{kind:"output",name:"Matrix"},{kind:"panel",name:"Column 1",items:[{kind:"input",name:"Column 1 Row 1"},{kind:"input",name:"Column 1 Row 2"},{kind:"input",name:"Column 1 Row 3"},{kind:"input",name:"Column 1 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 2",items:[{kind:"input",name:"Column 2 Row 1"},{kind:"input",name:"Column 2 Row 2"},{kind:"input",name:"Column 2 Row 3"},{kind:"input",name:"Column 2 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 3",items:[{kind:"input",name:"Column 3 Row 1"},{kind:"input",name:"Column 3 Row 2"},{kind:"input",name:"Column 3 Row 3"},{kind:"input",name:"Column 3 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 4",items:[{kind:"input",name:"Column 4 Row 1"},{kind:"input",name:"Column 4 Row 2"},{kind:"input",name:"Column 4 Row 3"},{kind:"input",name:"Column 4 Row 4"}],defaultClosed:!0}]},ze={customSocketOrder:!0,items:[{kind:"panel",name:"Column 1",items:[{kind:"output",name:"Column 1 Row 1"},{kind:"output",name:"Column 1 Row 2"},{kind:"output",name:"Column 1 Row 3"},{kind:"output",name:"Column 1 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 2",items:[{kind:"output",name:"Column 2 Row 1"},{kind:"output",name:"Column 2 Row 2"},{kind:"output",name:"Column 2 Row 3"},{kind:"output",name:"Column 2 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 3",items:[{kind:"output",name:"Column 3 Row 1"},{kind:"output",name:"Column 3 Row 2"},{kind:"output",name:"Column 3 Row 3"},{kind:"output",name:"Column 3 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 4",items:[{kind:"output",name:"Column 4 Row 1"},{kind:"output",name:"Column 4 Row 2"},{kind:"output",name:"Column 4 Row 3"},{kind:"output",name:"Column 4 Row 4"}],defaultClosed:!0},{kind:"input",name:"Matrix"}]},Ve={customSocketOrder:!0,items:[{kind:"input",name:"String"},{kind:"output",name:"String",alignWithPrevious:!0},{kind:"input",name:"Characters"},{kind:"input",name:"Whitespace"},{kind:"panel",name:"Limit",items:[{kind:"input",name:"Start"},{kind:"input",name:"End"}],defaultClosed:!0}]},Xe={customSocketOrder:!0,items:[{kind:"output",name:"Topology"},{kind:"input",name:"Bounds Min"},{kind:"input",name:"Bounds Max"},{kind:"input",name:"Resolution X"},{kind:"input",name:"Resolution Y"},{kind:"input",name:"Resolution Z"},{kind:"panel",name:"Min",items:[{kind:"input",name:"Min X"},{kind:"input",name:"Min Y"},{kind:"input",name:"Min Z"}],defaultClosed:!0}]},Ke={customSocketOrder:!0,conditional:!0,items:[{kind:"output",name:"Geometry"},{kind:"input",name:"",identifier:"__extend__main"},{kind:"output",name:"",identifier:"__extend__main",alignWithPrevious:!0},{kind:"panel",name:"Generated",items:[{kind:"separator"},{kind:"input",name:"",identifier:"__extend__generation"},{kind:"output",name:"",identifier:"__extend__generation",alignWithPrevious:!0}]}]},Ze={customSocketOrder:!0,items:[{kind:"output",name:"Names"},{kind:"input",name:"Geometry"},{kind:"panel",name:"Filter Data Type",items:[{kind:"input",name:"Filter Data Type",panelToggle:!0},{kind:"input",name:"Data Type"}]},{kind:"panel",name:"Filter Domain",items:[{kind:"input",name:"Filter Domain",panelToggle:!0},{kind:"input",name:"Domain"}]}]},qe={customSocketOrder:!0,conditional:!0,items:[{kind:"layout"},{kind:"output",name:"Points"},{kind:"output",name:"Value"},{kind:"panel",name:"Voxel Index",items:[{kind:"output",name:"X"},{kind:"output",name:"Y"},{kind:"output",name:"Z"},{kind:"output",name:"Is Tile"},{kind:"output",name:"Extent"}],defaultClosed:!0},{kind:"input",name:"Grid"}]},Je={customSocketOrder:!0,items:[{kind:"output",name:"X"},{kind:"output",name:"Y"},{kind:"output",name:"Z"},{kind:"panel",name:"Tile",items:[{kind:"output",name:"Is Tile"},{kind:"output",name:"Extent X"},{kind:"output",name:"Extent Y"},{kind:"output",name:"Extent Z"}],defaultClosed:!0}]},Qe={customSocketOrder:!0,items:[{kind:"input",name:"Mesh"},{kind:"output",name:"Mesh",alignWithPrevious:!0},{kind:"input",name:"Selection"},{kind:"input",name:"Affect Kind"},{kind:"input",name:"Start Left Offset"},{kind:"input",name:"Start Right Offset"},{kind:"input",name:"End Left Offset"},{kind:"input",name:"End Right Offset"},{kind:"input",name:"Offset"},{kind:"input",name:"Miter"},{kind:"input",name:"Spread"},{kind:"input",name:"Segments"},{kind:"input",name:"Shape"},{kind:"input",name:"Profile"},{kind:"panel",name:"Selections",items:[{kind:"output",name:"Vertex Face"},{kind:"output",name:"Edge Face"},{kind:"output",name:"Outer Edge"},{kind:"output",name:"Mid Edge"}]}]},en={customSocketOrder:!0,items:[{kind:"output",name:"Amplitude"},{kind:"input",name:"Sound"},{kind:"input",name:"Time"},{kind:"input",name:"All Channels"},{kind:"input",name:"Channel"},{kind:"input",name:"Low"},{kind:"input",name:"High"},{kind:"panel",name:"FFT",items:[{kind:"input",name:"FFT Size"},{kind:"input",name:"Window Function"}],defaultClosed:!0}]},nn={customSocketOrder:!0,items:[{kind:"output",name:"Curve Instances"},{kind:"output",name:"Remainder"},{kind:"output",name:"Line"},{kind:"output",name:"Word"},{kind:"output",name:"Pivot Point"},{kind:"input",name:"String"},{kind:"input",name:"Size"},{kind:"input",name:"Font"},{kind:"panel",name:"Alignment",items:[{kind:"input",name:"Align X"},{kind:"input",name:"Align Y"},{kind:"input",name:"Pivot Point"}],defaultClosed:!0},{kind:"panel",name:"Spacing",items:[{kind:"input",name:"Character Spacing"},{kind:"input",name:"Word Spacing"},{kind:"input",name:"Line Spacing"}],defaultClosed:!0},{kind:"panel",name:"Text Box",items:[{kind:"input",name:"Overflow"},{kind:"input",name:"Text Box Width"},{kind:"input",name:"Text Box Height"}],defaultClosed:!0}]},tn={customSocketOrder:!0,conditional:!0,items:[{kind:"input",name:"Target"},{kind:"output",name:"Target",alignWithPrevious:!0},{kind:"output",name:"Transferred Names"},{kind:"panel",name:"Target IDs",items:[],defaultClosed:!0},{kind:"input",name:"Source"},{kind:"panel",name:"Source IDs",items:[],defaultClosed:!0},{kind:"input",name:"Pattern Mode"},{kind:"input",name:"Attribute Names"},{kind:"input",name:"Exclude Names"}]},an={customSocketOrder:!0,items:[{kind:"input",name:"World"},{kind:"output",name:"World",alignWithPrevious:!0},{kind:"input",name:"Delta Time"},{kind:"input",name:"Filter"},{kind:"input",name:"Simulation to World"},{kind:"panel",name:"Solver",items:[{kind:"input",name:"Substeps"},{kind:"input",name:"Constraint Iterations"},{kind:"input",name:"Solver Path"}],defaultClosed:!0},{kind:"panel",name:"Interpolation Range",items:[{kind:"input",name:"Begin"},{kind:"input",name:"End"}],defaultClosed:!0}]},on={customSocketOrder:!0,conditional:!0,items:[{kind:"input",name:"Closure"},{kind:"panel",name:"Interface",items:[{kind:"output",name:"",identifier:"__extend__"},{kind:"input",name:"",identifier:"__extend__"}]}]},rn={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"layout"},{kind:"input",name:"Color"},{kind:"input",name:"Roughness"},{kind:"input",name:"IOR"},{kind:"input",name:"Normal"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},un={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"layout"},{kind:"input",name:"Base Color"},{kind:"input",name:"Edge Tint"},{kind:"input",name:"IOR"},{kind:"input",name:"Extinction"},{kind:"input",name:"Roughness"},{kind:"input",name:"Anisotropy"},{kind:"input",name:"Rotation"},{kind:"input",name:"Normal"},{kind:"input",name:"Tangent"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},sn={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"input",name:"Base Color"},{kind:"input",name:"Metallic"},{kind:"input",name:"Roughness"},{kind:"input",name:"IOR"},{kind:"input",name:"Alpha"},{kind:"input",name:"Thin Wall"},{kind:"input",name:"Normal"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Diffuse",items:[{kind:"input",name:"Diffuse Roughness"}],defaultClosed:!0},{kind:"panel",name:"Subsurface",items:[{kind:"layout"},{kind:"input",name:"Subsurface Weight"},{kind:"input",name:"Subsurface Radius"},{kind:"input",name:"Subsurface Scale"},{kind:"input",name:"Subsurface IOR"},{kind:"input",name:"Subsurface Anisotropy"}],defaultClosed:!0},{kind:"panel",name:"Specular",items:[{kind:"layout"},{kind:"input",name:"Specular IOR Level"},{kind:"input",name:"Specular Tint"},{kind:"input",name:"Anisotropic"},{kind:"input",name:"Anisotropic Rotation"},{kind:"input",name:"Tangent"}],defaultClosed:!0},{kind:"panel",name:"Transmission",items:[{kind:"input",name:"Transmission Weight"}],defaultClosed:!0},{kind:"panel",name:"Coat",items:[{kind:"input",name:"Coat Weight"},{kind:"input",name:"Coat Roughness"},{kind:"input",name:"Coat IOR"},{kind:"input",name:"Coat Tint"},{kind:"input",name:"Coat Normal"}],defaultClosed:!0},{kind:"panel",name:"Sheen",items:[{kind:"input",name:"Sheen Weight"},{kind:"input",name:"Sheen Roughness"},{kind:"input",name:"Sheen Tint"}],defaultClosed:!0},{kind:"panel",name:"Emission",items:[{kind:"input",name:"Emission Color"},{kind:"input",name:"Emission Strength"}],defaultClosed:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},dn={customSocketOrder:!0,conditional:!0,items:[{kind:"layout"},{kind:"output",name:"Is Hit"},{kind:"output",name:"Self Hit"},{kind:"output",name:"Hit Distance"},{kind:"output",name:"Hit Position"},{kind:"output",name:"Hit Normal"},{kind:"input",name:"Position"},{kind:"input",name:"Direction"},{kind:"input",name:"Length"},{kind:"panel",name:"Attributes",items:[{kind:"input",name:"",identifier:"__extend__"},{kind:"output",name:"",identifier:"__extend__",alignWithPrevious:!0}],defaultClosed:!0}]},ln={customSocketOrder:!0,items:[{kind:"output",name:"Volume"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Absorption",items:[{kind:"input",name:"Absorption Coefficients"}]},{kind:"panel",name:"Scatter",items:[{kind:"layout"},{kind:"input",name:"Scatter Coefficients"},{kind:"input",name:"Anisotropy"},{kind:"input",name:"IOR"},{kind:"input",name:"Backscatter"},{kind:"input",name:"Alpha"},{kind:"input",name:"Diameter"}]},{kind:"panel",name:"Emission",items:[{kind:"input",name:"Emission Coefficients"}]}]},mn={CompositorNodeColorBalance:Re,CompositorNodeColorCorrection:Pe,CompositorNodeColorSpill:_e,CompositorNodeCornerPin:Me,CompositorNodeDBlur:ve,CompositorNodeDisplace:Ae,CompositorNodeGlare:be,CompositorNodeKeying:De,CompositorNodeMapUV:Be,CompositorNodeMask:Le,CompositorNodePlaneTrackDeform:$e,CompositorNodeRotate:je,CompositorNodeScale:Fe,CompositorNodeStabilize:Ge,CompositorNodeStringToImage:We,CompositorNodeTransform:He,CompositorNodeTranslate:Ue,FunctionNodeCombineMatrix:Ye,FunctionNodeSeparateMatrix:ze,FunctionNodeTrimString:Ve,GeometryNodeCubeGridTopology:Xe,GeometryNodeForeachGeometryElementOutput:Ke,GeometryNodeGetAttributeNames:Ze,GeometryNodeGridToPoints:qe,GeometryNodeInputVoxelIndex:Je,GeometryNodeMeshBevel:Qe,GeometryNodeSampleSoundFrequencies:en,GeometryNodeStringToCurves:nn,GeometryNodeTransferAttributes:tn,GeometryNodeXPBDSolver:an,NodeEvaluateClosure:on,ShaderNodeBsdfGlass:rn,ShaderNodeBsdfMetallic:un,ShaderNodeBsdfPrincipled:sn,ShaderNodeRaycast:dn,ShaderNodeVolumeCoefficients:ln},I=20,N=1,S=I,O=I/2,D=.2*I,me=.25*I,Z=1.2*I,_=.1*I,pn=.8*I,w=.5,Y=D+w,cn=D+N,ne=2.5,kn=.2,fn=S*.5,z=S*-.5,hn=me,gn=1.5*I,R=11,h={sliderFill:"#4671b2",background:"#1a1a1a",body:"#303030",outline:"#ffffff",outlineAlpha:38/255,select:"#ed5700",active:"#ffffff",wireInner:"#8d8d8d",wire:"#1a1a1a",noodleCurving:4,dashAlpha:.5,text:"#e6e6e6",frame:"#0f0f0f",frameAlpha:204/255},Sn={INPUT:"#82354c",OUTPUT:"#3e232a",CONVERTER:"#246283",COLOR:"#6e6e23",VECTOR:"#3c3c83",FILTER:"#412b51",GROUP:"#374725",INTERFACE:"#1d1d1d",MATTE:"#5a3838",DISTORT:"#3e5a5b",TEXTURE:"#79461d",SHADER:"#2b652b",SCRIPT:"#203c3c",GEOMETRY:"#1d725e",ATTRIBUTE:"#1d2546",NONE:h.body,PATTERN:h.body},xn={VALUE:"#a1a1a1",VECTOR:"#6363c7",RGBA:"#c7c729",SHADER:"#63c763",BOOLEAN:"#cca6d6",INT:"#598c5c",STRING:"#70b3ff",OBJECT:"#ed9e5c",IMAGE:"#633863",GEOMETRY:"#00d6a3",COLLECTION:"#f5f5f5",TEXTURE:"#9e4fa3",MATERIAL:"#eb7582",ROTATION:"#a663c7",MENU:"#666666",MATRIX:"#b83385",BUNDLE:"#4d8080",CLOSURE:"#7d7d3b",FONT:"#635742",SOUND:"#635742",INT_VECTOR:"#5c789c",CUSTOM:"#333333"},yn="#ff00ff",pe=h.wire,Cn="#808080",F=N;function A(e){return e.enabled&&!e.hide}function V(e){const n=e.location[0]??0,a=e.location[1]??0,r=e.width,t=e.outputs.filter(A),o=e.inputs.filter(A);if(e.collapsed){const p=fn,m=p*Math.max(o.length,t.length,2)+D*2,x=a+m/2+z,c=a-m/2+z,k=(g,C)=>{let y=a+p*(g.length-1)*.5+z;return g.map(E=>{const P=M(E,C,C?n+r:n,y,y);return y-=p,P})};return{name:e.name,x:n,yTop:x,yBottom:c,width:r,collapsed:!0,sockets:[...k(t,!0),...k(o,!1)]}}let d=a-S;const u=[],l=(p,m)=>{const x=d;u.push(M(p,m,m?n+r:n,x-O,x)),d=x-S};return(t.length>0||o.length>0)&&(d-=2*_),t.forEach((p,m)=>{m>0&&(d-=_),l(p,!0)}),t.length>0&&o.length>0&&(d-=_),o.forEach((p,m)=>{(m>0||t.length>0)&&m>0&&(d-=_),l(p,!1)}),t.length>0||o.length>0?d-=2*_:d-=O,{name:e.name,x:n,yTop:a,yBottom:Math.min(d,a-2*S),width:r,collapsed:!1,sockets:u}}function M(e,n,a,r,t,o=!1){return{identifier:e.identifier,name:e.label??e.name,type:e.type,shape:e.shape,output:n,linked:e.linked,multiInput:e.multiInput,hideValue:e.hideValue,value:e.value,...e.softMin===void 0?{}:{softMin:e.softMin},...e.softMax===void 0?{}:{softMax:e.softMax},x:a,y:r,rowTop:t,panelCollapsed:o}}function Tn(e,n,a=h.noodleCurving){if(a===0)return[[e[0]+(n[0]-e[0])/3,e[1]+(n[1]-e[1])/3],[e[0]+(n[0]-e[0])*2/3,e[1]+(n[1]-e[1])*2/3]];const r=Math.abs(n[0]-e[0]),t=Math.abs(n[1]-e[1]),o=r===0?Number.POSITIVE_INFINITY:t/r,d=Math.min(1,o*(4.5-.25*a)),u=a*.1*r*d;return[[e[0]+u,e[1]],[n[0]-u,n[1]]]}function K(e){return e.idname==="NodeFrame"?h.frame:e.colorTag==="OUTPUT"&&!e.activeOutput?h.body:Sn[e.colorTag]??h.body}function te(e){return e.useCustomColor?b(e.color):h.body}function b(e){const n=a=>Math.round(Math.min(1,Math.max(0,a))*255).toString(16).padStart(2,"0");return`#${n(e[0]??0)}${n(e[1]??0)}${n(e[2]??0)}`}function ie(e,n){const a=ae(h.background),r=ae(e);return b([r[0]*(1-n)+a[0]*n,r[1]*(1-n)+a[1]*n,r[2]*(1-n)+a[2]*n])}const En=.6,wn=.8,On=.2;function ae(e){const n=Number.parseInt(e.slice(1),16);return[(n>>16&255)/255,(n>>8&255)/255,(n&255)/255]}function G(e){return xn[e]??yn}const oe=O,X=Z/3,re=Z/4,In=I,j={cell:8,reach:4,spread:3.64648,stroke:1},Nn="#000000",Rn=31/255*1.5,$=e=>e.identifier??e.name;function Pn(e,n,a){if(!e.customSocketOrder)return{ok:!1,why:"its declaration does not set use_custom_socket_order, so Blender lays it out the legacy way"};const r=[],t=[],o=l=>{for(const p of l)p.kind==="input"?r.push($(p)):p.kind==="output"?t.push($(p)):p.kind==="panel"&&o(p.items)};o(e.items);const d=(l,p,m)=>{if(l.length!==p.length)return`the declaration names ${l.length} ${m}${l.length===1?"":"s"} and the engine reports ${p.length}`;for(let x=0;x<l.length;x++)if(l[x]!==p[x]?.identifier)return`${m} ${x} is "${p[x]?.identifier}" in the engine and "${l[x]}" in the declaration`;return null},u=d(t,a,"output")??d(r,n,"input");return u===null?{ok:!0}:{ok:!1,why:u}}const _n={Socket:2,Separator:.5,Layout:3,PanelHeader:4},Mn={Socket:2,Separator:1,Layout:5,PanelHeader:4,PanelContentEnd:1},vn={Socket:{Socket:1,Separator:0,Layout:2,PanelHeader:3,PanelContentEnd:2},Layout:{Socket:2,Separator:0,Layout:1,PanelHeader:3,PanelContentEnd:2},Separator:{Socket:2,Separator:1,Layout:1,PanelHeader:1,PanelContentEnd:1},PanelHeader:{Socket:4,Separator:3,Layout:3,PanelHeader:5,PanelContentBegin:3,PanelContentEnd:3},PanelContentBegin:{Socket:2,Separator:1,Layout:2,PanelHeader:3,PanelContentEnd:1},PanelContentEnd:{Socket:1,Separator:1,Layout:1,PanelHeader:3,PanelContentEnd:0}};function ce(e,n,a,r,t,o,d){let u=!1;for(const l of e){if(l.kind==="input"||l.kind==="output"){const y=n.get(`${l.kind}:${$(l)}`);if(!y||!A(y)){u=!1;continue}const E=o[o.length-1];if(l.alignWithPrevious===!0&&u&&E&&E.type==="Socket"){o[o.length-1]={type:"Socket",input:l.kind==="input"?y:E.input,output:l.kind==="output"?y:E.output},u=!0;continue}o.push({type:"Socket",input:l.kind==="input"?y:void 0,output:l.kind==="output"?y:void 0}),u=!0;continue}if(u=!1,l.kind==="separator"){o.push({type:"Separator"});continue}if(l.kind==="layout"){r&&o.push({type:"Layout"});continue}if(l.kind!=="panel")continue;const p=l.items[0],m=p&&p.kind==="input"&&p.panelToggle===!0?p:null,x=m?n.get(`input:${$(m)}`)??null:null,c=[],k=y=>{for(const E of y)if(E.kind==="input"||E.kind==="output"){const P=n.get(`${E.kind}:${$(E)}`);P&&c.push(P)}else E.kind==="panel"&&k(E.items)};if(k(l.items),!c.some(A))continue;const g=a(l.defaultClosed===!0),C={name:l.name,depth:t,collapsed:g,toggle:x,owned:c,centerY:0,contentTop:null,contentBottom:null,fillsNodeEnd:!1};d.push(C),o.push({type:"PanelHeader",panel:C}),!g&&(o.push({type:"PanelContentBegin",panel:C}),ce(l.items.filter(y=>y!==m),n,a,r,t+1,o,d),o.push({type:"PanelContentEnd",panel:C}))}}function An(e){const n=e.location[0]??0,a=e.location[1]??0,r=e.width,t=new Map;for(const c of e.inputs)t.set(`input:${c.identifier}`,c);for(const c of e.outputs)t.set(`output:${c.identifier}`,c);let o=0;const d=e.panelStates,u=[],l=[];ce(e.declaration.items,t,c=>d[o++]?.collapsed??c,e.showOptions,0,u,l);const p=[];let m=a-S;u.length===0&&(m-=O);for(let c=0;c<u.length;c++){const k=u[c];if(!k)continue;const g=u[c-1],C=c===0?_n[k.type]??0:vn[g?.type??"Socket"]?.[k.type]??0;if(m-=C*_,k.type==="Socket"){const y=m;k.output&&p.push(M(k.output,!0,n+r,y-O,y)),k.input&&p.push(M(k.input,!1,n,y-O,y)),m=y-S;continue}if(k.type==="Layout"||k.type==="Separator"){m-=S;continue}if(k.type==="PanelHeader"&&k.panel){m-=oe/2,k.panel.centerY=m,m-=oe/2,k.panel.toggle&&p.push(M(k.panel.toggle,!1,n,k.panel.centerY,k.panel.centerY));continue}k.type==="PanelContentBegin"&&k.panel&&(k.panel.contentTop=m),k.type==="PanelContentEnd"&&k.panel&&(k.panel.contentBottom=m)}const x=u[u.length-1];x&&(m-=(Mn[x.type]??0)*_);for(const c of l)if(c.collapsed)for(const k of c.owned){if(!A(k))continue;const g=e.outputs.includes(k);p.push(M(k,g,g?n+r:n,c.centerY,c.centerY,!0))}for(let c=u.length-1;c>=0;c--){const k=u[c];if(!k||k.type!=="PanelContentEnd")break;k.panel&&(k.panel.fillsNodeEnd=!0)}return{name:e.name,x:n,yTop:a,yBottom:Math.min(m,a-2*S),width:r,collapsed:!1,sockets:p,panels:l.map(c=>({name:c.name,depth:c.depth,collapsed:c.collapsed,centerY:c.centerY,contentTop:c.contentTop,contentBottom:c.contentBottom,fillsNodeEnd:c.fillsNodeEnd,toggle:c.toggle?M(c.toggle,!1,n,c.centerY,c.centerY):null}))}}function bn(e){const n=a=>a.some(r=>r.kind==="layout"?!0:r.kind==="panel"?n(r.items):!1);return n(e.items)}const Ct="workspace.document",Tt="Shader Editor";Ce(Ne);const Dn=320,ue=.1,se=4;function Et(){const e=T.useSyncExternalStore(Te,Q,Q),[n,a]=T.useState(null),[r,t]=T.useState(null),o=T.useRef(null),d=T.useRef(!1);T.useSyncExternalStore(Ee,ee,ee);const{transform:u,looked:l,refusal:p,size:m}=U(),x=T.useCallback(s=>{const f=U().transform;B({transform:typeof s=="function"?s(f):s})},[]),c=T.useCallback(s=>{B({looked:s,refusal:null})},[]),k=T.useCallback(s=>{const f=U().size;f.w===s.w&&f.h===s.h||B({size:s})},[]),g=T.useCallback(s=>{we(s)},[]);T.useEffect(()=>{let s=!0;return(async()=>{try{const f=await Oe();if(!s)return;a(f),t(null)}catch(f){if(!s)return;t(f instanceof Error?f.message:String(f))}})(),()=>{s=!1}},[e]),T.useEffect(()=>{const s=o.current;if(!s)return;const f=new ResizeObserver(()=>{k({w:s.clientWidth,h:s.clientHeight})});return f.observe(s),k({w:s.clientWidth,h:s.clientHeight}),()=>f.disconnect()},[]);const C=T.useMemo(()=>jn(n),[n]);T.useEffect(()=>{B({drawn:[...C.frames,...C.nodes].map(({node:s,laid:f,panels:v,fallback:ye})=>{const J=f.sockets.find(H=>!H.panelCollapsed)??f.sockets[0];return{panels:v.length,collapsedPanels:v.filter(H=>H.collapsed).length,panelFallback:ye,name:s.name,x:f.x,yTop:f.yTop,yBottom:f.yBottom,width:f.width,height:f.yTop-f.yBottom,sockets:f.sockets.length,firstSocketBelowTop:J?f.yTop-J.y:null,header:K(s)}})})},[C]);const y=T.useCallback(()=>{const s=Fn(C.nodes);if(!s)return;const f=de(Math.min(m.w/(s.w+2*S),m.h/(s.h+2*S)),ue,se);B({transform:{cx:s.x+s.w/2,cy:s.y-s.h/2,zoom:f},framedAt:Date.now()})},[C.nodes,m.h,m.w]),E=Ie(),P=T.useRef(0);T.useEffect(()=>{E!==P.current&&(P.current=E,y())},[E,y]),T.useEffect(()=>{d.current||C.nodes.length===0||m.w<=1||(d.current=!0,y())},[C.nodes.length,m.w,y]);const W=T.useRef(null),fe=s=>{s.button===1&&(s.preventDefault(),s.target.setPointerCapture?.(s.pointerId),W.current={x:s.clientX,y:s.clientY,cx:u.cx,cy:u.cy})},he=s=>{const f=W.current;f&&x(v=>({...v,cx:f.cx-(s.clientX-f.x)/v.zoom,cy:f.cy+(s.clientY-f.y)/v.zoom}))},q=()=>{W.current=null},ge=s=>{s.preventDefault(),x(f=>({...f,zoom:de(f.zoom*(s.deltaY<0?1.1:1/1.1),ue,se)}))},Se=n?.nodes.find(s=>s.name===l)??null,xe=u.zoom>kn;return i.jsxs("div",{"data-testid":"blender-node-editor",style:{display:"flex",position:"absolute",inset:0,overflow:"hidden"},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",flex:1,minWidth:0,minHeight:0},children:[i.jsx(Xn,{tree:n,zoom:u.zoom,onViewAll:y,onRefuse:g}),i.jsx("div",{ref:o,style:{position:"relative",flex:1,minHeight:0},children:i.jsx("svg",{role:"presentation",width:"100%",height:"100%",onPointerDown:fe,onPointerMove:he,onPointerUp:q,onPointerCancel:q,onWheel:ge,onContextMenu:s=>{s.preventDefault(),g("The node context menu adds, deletes and reconnects nodes — editing.")},style:{display:"block",background:h.background,cursor:"default"},children:i.jsxs("g",{transform:`translate(${m.w/2} ${m.h/2}) scale(${u.zoom} ${-u.zoom}) translate(${-u.cx} ${-u.cy})`,children:[C.frames.map(s=>i.jsx(Vn,{node:s.node,laid:s.laid},s.node.name)),C.links.map(s=>i.jsx(zn,{link:s},s.key)),C.nodes.map(s=>i.jsx(Gn,{node:s.node,laid:s.laid,panels:s.panels,looked:s.node.name===l,details:xe,onLook:()=>c(s.node.name),onRefuse:g},s.node.name))]})})}),i.jsx(Kn,{entries:C.nodes,error:r,refusal:p})]}),i.jsx(Zn,{node:Se,onRefuse:g})]})}const Bn=26,Ln=22,$n=mn;function jn(e){if(!e)return{nodes:[],frames:[],links:[]};const n=new Map,a=e.nodes.map(t=>{const o={name:t.name,location:t.location,width:t.width,collapsed:t.collapsed,inputs:t.inputs,outputs:t.outputs},d=t.collapsed?void 0:$n[t.idname];if(t.panelCount>0&&!d){const l=V(o);return n.set(t.name,l),{node:t,laid:l,panels:[],fallback:t.collapsed?null:"no traced declaration — the trace covers the 36 node types that declare a panel in Blender 5.2.0, and a node group’s panels are runtime data",approximate:!1}}if(d){const l=Pn(d,t.inputs,t.outputs);if(l.ok){const m=An({...o,declaration:d,panelStates:t.panels,showOptions:t.showOptions});return n.set(t.name,m),{node:t,laid:m,panels:m.panels,fallback:null,approximate:bn(d)}}const p=V(o);return n.set(t.name,p),{node:t,laid:p,panels:[],fallback:l.why,approximate:!1}}const u=V(o);return n.set(t.name,u),{node:t,laid:u,panels:[],fallback:null,approximate:!1}}),r=e.links.flatMap((t,o)=>{const d=n.get(t.fromNode),u=n.get(t.toNode);if(!d||!u)return[];const l=d.sockets.find(m=>m.output&&m.identifier===t.fromSocket),p=u.sockets.find(m=>!m.output&&m.identifier===t.toSocket);return!l||!p?[]:[{key:`${t.fromNode}.${t.fromSocket}→${t.toNode}.${t.toSocket}#${o}`,from:[l.x,l.y],to:[p.x,p.y],fromColor:G(l.type),toColor:G(p.type),muted:t.muted,valid:t.valid}]});return{nodes:a.filter(t=>t.node.idname!=="NodeFrame"),frames:a.filter(t=>t.node.idname==="NodeFrame"),links:r}}function Fn(e){if(e.length===0)return null;let n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const{laid:o}of e)n=Math.min(n,o.x),a=Math.max(a,o.x+o.width),r=Math.min(r,o.yBottom),t=Math.max(t,o.yTop);return{x:n,y:t,w:a-n,h:t-r}}const de=(e,n,a)=>Math.min(a,Math.max(n,e));function Gn({node:e,laid:n,panels:a,looked:r,details:t,onLook:o,onRefuse:d}){if(e.type==="REROUTE"){const g=n.sockets[0];return i.jsx("circle",{cx:n.x,cy:n.yTop,r:hn,fill:g?G(g.type):h.wireInner,stroke:pe,strokeWidth:F,onPointerDown:C=>{C.button===0&&o()}})}const u=e.muted?ie(K(e),En):K(e),l=e.muted?ie(te(e),wn):te(e),p=e.muted?1-On:1,m=e.selected?e.activeOutput||r?h.active:h.select:h.outline,x=e.selected?1:h.outlineAlpha,c=n.yTop-n.yBottom,k=e.label??e.typeLabel;return i.jsxs("g",{opacity:p,onPointerDown:g=>{g.button===0&&o()},onDoubleClick:()=>d(`Renaming "${e.name}" writes Node.name — editing parity is not the program.`),style:{cursor:"default"},children:[n.collapsed?i.jsx("rect",{x:n.x-w,y:-n.yTop-w,width:n.width+2*w,height:c+2*w,rx:Y,fill:u,transform:"scale(1 -1)"}):i.jsxs(i.Fragment,{children:[i.jsx("rect",{x:n.x-w,y:-(n.yTop-S)-w,width:n.width+2*w,height:c-S+2*w,rx:Y,fill:l,transform:"scale(1 -1)"}),i.jsx("rect",{x:n.x-w,y:-n.yTop-w,width:n.width+2*w,height:S+2*w,rx:Y,fill:u,transform:"scale(1 -1)"}),i.jsx("rect",{x:n.x-w,y:-(n.yTop-S)-w,width:n.width+2*w,height:D,fill:u,transform:"scale(1 -1)"}),a.map(g=>i.jsx(Wn,{panel:g,laid:n},`bg:${g.name}`))]}),i.jsx("rect",{x:n.x-N,y:-n.yTop-N,width:n.width+2*N,height:c+2*N,rx:cn,fill:"none",stroke:m,strokeOpacity:x,strokeWidth:N,transform:"scale(1 -1)"}),i.jsx("text",{x:n.x+Z,y:-(n.yTop-S/2),transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:k}),t&&n.sockets.map(g=>i.jsx(Un,{socket:g,node:n,onRefuse:d},`${g.output?"o":"i"}:${g.identifier}`)),t&&a.map(g=>i.jsx(Hn,{panel:g,laid:n,onRefuse:d},`hd:${g.name}`))]})}function Wn({panel:e,laid:n}){if(e.contentTop===null||e.contentBottom===null)return null;const a=[{y:e.contentTop,height:e.contentTop-e.contentBottom,radius:0,times:1}];return e.fillsNodeEnd&&a.push({y:e.contentBottom,height:e.contentBottom-n.yBottom,radius:D,times:e.depth+1}),i.jsx("g",{style:{pointerEvents:"none"},children:a.flatMap((r,t)=>Array.from({length:r.times},(o,d)=>i.jsx("rect",{x:n.x,y:-r.y,width:n.width,height:Math.max(r.height,0),rx:r.radius,fill:Nn,fillOpacity:Rn,transform:"scale(1 -1)"},`${t}:${d}`)))})}function Hn({panel:e,laid:n,onRefuse:a}){const r=pn,t=r/j.cell,o=n.x+X+r/2,d=e.centerY,u=j.reach*t,l=j.spread*t,p=e.collapsed?`M ${o-u/2} ${-(d+l)} L ${o+u/2} ${-d} L ${o-u/2} ${-(d-l)}`:`M ${o-l} ${-(d+u/2)} L ${o} ${-(d-u/2)} L ${o+l} ${-(d+u/2)}`,m=n.x+X+r+re+(e.toggle&&!e.toggle.linked?In:0);return i.jsxs("g",{onPointerDown:x=>{x.button===0&&(x.stopPropagation(),a(`${e.collapsed?"Opening":"Collapsing"} "${e.name}" writes the panel's is_collapsed — editing parity is not the program.`))},style:{cursor:"default"},children:[i.jsx("rect",{x:n.x,y:-(d+O),width:n.width,height:2*O,fill:"transparent",transform:"scale(1 -1)"}),i.jsx("path",{d:p,fill:"none",stroke:h.text,strokeWidth:j.stroke*t,strokeLinecap:"round",strokeLinejoin:"round",transform:"scale(1 -1)",style:{pointerEvents:"none"}}),e.toggle&&!e.toggle.linked&&i.jsx("rect",{x:n.x+X+r+re,y:-(d+O/2),width:O,height:O,rx:.2*O,fill:e.toggle.value===!0?"#4772b3":"#545454",transform:"scale(1 -1)",style:{pointerEvents:"none"}}),i.jsx("text",{x:m,y:-d,transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name})]})}function Un({socket:e,node:n,onRefuse:a}){const r=G(e.type),t=e.type==="CUSTOM"?Cn:pe,o=me,d=e.shape.replace("_DOT",""),u=e.shape.endsWith("_DOT"),l=d==="SQUARE"?i.jsx("rect",{x:e.x-o,y:-e.y-o,width:2*o,height:2*o,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"}):d==="DIAMOND"?i.jsx("polygon",{points:`${e.x},${-e.y-o} ${e.x+o},${-e.y} ${e.x},${-e.y+o} ${e.x-o},${-e.y}`,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"}):i.jsx("circle",{cx:e.x,cy:-e.y,r:o,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"});return i.jsxs("g",{onPointerDown:p=>{p.button===0&&(p.stopPropagation(),a(`Dragging from "${e.name}" would make a link — editing parity is not the program.`))},children:[l,u&&i.jsx("circle",{cx:e.x,cy:-e.y,r:o*.35,fill:t,transform:"scale(1 -1)"}),!n.collapsed&&!e.panelCollapsed&&i.jsx(Yn,{socket:e,node:n,onRefuse:a})]})}function Yn({socket:e,node:n,onRefuse:a}){const r=O,t=n.x+r,o=n.x+n.width-r,d=-(e.rowTop-S/2);if(!(!e.output&&!e.linked&&!e.hideValue&&e.value!==null))return i.jsx("text",{x:e.output?o:t,y:d,transform:"scale(1 -1)",textAnchor:e.output?"end":"start",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name});const l=Array.isArray(e.value)&&e.value.length>=3;return i.jsxs("g",{onPointerDown:p=>{p.button===0&&(p.stopPropagation(),a(`Changing "${e.name}" writes the socket's default_value — editing parity is not the program.`))},style:{cursor:"default"},children:[i.jsx("rect",{x:t,y:d-S/2+1,width:o-t,height:S-2,rx:.2*S,fill:"#545454",transform:"scale(1 -1)"}),le(e)!==null&&i.jsxs(i.Fragment,{children:[i.jsx("clipPath",{id:`sl-${e.identifier}`,children:i.jsx("rect",{x:t,y:d-S/2+1,width:o-t,height:S-2,rx:.2*S})}),i.jsx("rect",{x:t,y:d-S/2+1,width:(o-t)*(le(e)??0),height:S-2,fill:h.sliderFill,clipPath:`url(#sl-${e.identifier})`,transform:"scale(1 -1)"})]}),i.jsx("text",{x:t+6,y:d,transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name}),l?i.jsx("rect",{x:o-34,y:d-S/2+3,width:30,height:S-6,rx:2,fill:b(e.value),transform:"scale(1 -1)"}):i.jsx("text",{x:o-6,y:d,transform:"scale(1 -1)",textAnchor:"end",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:ke(e.value)})]})}function le(e){const{softMin:n,softMax:a,value:r}=e;return n===void 0||a===void 0||typeof r!="number"||a<=n?null:Math.min(1,Math.max(0,(r-n)/(a-n)))}function ke(e){return e===null?"":typeof e=="boolean"?e?"On":"Off":typeof e=="number"?e.toFixed(3):typeof e=="string"?e:e.map(n=>n.toFixed(2)).join(", ")}function zn({link:e}){const[n,a]=Tn(e.from,e.to),r=`M ${e.from[0]} ${e.from[1]} C ${n[0]} ${n[1]}, ${a[0]} ${a[1]}, ${e.to[0]} ${e.to[1]}`,t=e.valid?h.wireInner:"#ff2020";return i.jsxs("g",{style:{pointerEvents:"none"},children:[i.jsx("path",{d:r,fill:"none",stroke:h.wire,strokeWidth:ne+2*N}),i.jsx("path",{d:r,fill:"none",stroke:t,strokeWidth:ne,strokeDasharray:e.muted?"10 10":void 0,strokeOpacity:e.muted?h.dashAlpha:1})]})}function Vn({node:e,laid:n}){const a=Math.max(n.yTop-n.yBottom,gn*2);return i.jsxs("g",{style:{pointerEvents:"none"},children:[i.jsx("rect",{x:n.x,y:-n.yTop,width:n.width,height:a,rx:D,fill:e.useCustomColor?b(e.color):h.frame,fillOpacity:h.frameAlpha,transform:"scale(1 -1)"}),e.label&&i.jsx("text",{x:n.x+n.width/2,y:-(n.yTop-25),transform:"scale(1 -1)",textAnchor:"middle",fill:h.text,fontSize:20,children:e.label})]})}function Xn({tree:e,zoom:n,onViewAll:a,onRefuse:r}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",height:Bn,padding:"0 var(--volter-space-2)",background:h.background,color:h.text,font:`${R}px inherit`,borderBottom:"1px solid #161616"},children:[i.jsx("span",{"data-testid":"node-editor-tree-type",style:{opacity:.85},children:e?.typeLabel??"Shader Editor"}),i.jsx("span",{style:{opacity:.4},children:"·"}),i.jsx("span",{"data-testid":"node-editor-material",children:e?.material??"No material"}),i.jsx("span",{style:{flex:1}}),i.jsxs("span",{style:{opacity:.6},children:[Math.round(n*100),"%"]}),i.jsx("button",{type:"button",className:"volter-btn","data-variant":"ghost","data-size":"sm",onClick:a,"data-testid":"node-editor-view-all",children:"View All"}),i.jsx("button",{type:"button",className:"volter-btn","data-variant":"ghost","data-size":"sm","data-testid":"node-editor-use-nodes",onClick:()=>r("Use Nodes writes Material.use_nodes — editing parity is not the program."),children:"Use Nodes"})]})}function Kn({entries:e,error:n,refusal:a}){const r=e.filter(u=>u.fallback!==null),t=e.filter(u=>u.approximate),o=e.reduce((u,l)=>u+l.panels.length,0),d=n||a||(r.length>0?`${r.map(u=>`"${u.node.name}" draws its sockets flat: ${u.fallback}`).join("; ")}.`:t.length>0?`${t.map(u=>`"${u.node.name}"`).join(", ")} ${t.length===1?"carries a":"carry"} declaration LAYOUT row, whose drawn height RNA cannot answer; one UI unit is reserved for it.`:o>0?`${o} socket panel${o===1?"":"s"} drawn from Blender's own declarations. Read-only: this view inspects the node tree and never writes it.`:"Read-only: this view inspects the node tree and never writes it.");return i.jsx("div",{"data-testid":"node-editor-status",style:{flex:"0 0 auto",height:Ln,display:"flex",alignItems:"center",padding:"0 var(--volter-space-2)",background:h.background,color:n||a?"#ffa028":"#888888",font:`${R}px inherit`,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:d})}function Zn({node:e,onRefuse:n}){return i.jsxs("aside",{"data-testid":"node-editor-sidebar",style:{width:Dn,flex:"0 0 auto",overflow:"auto",background:h.background,color:h.text,font:`${R}px inherit`,borderLeft:"1px solid #161616",padding:"var(--volter-space-2)"},children:[i.jsx("div",{style:{opacity:.6,marginBottom:"var(--volter-space-2)"},children:"Node"}),e?i.jsxs(i.Fragment,{children:[i.jsx(L,{label:"Name",value:e.name,onRefuse:n}),i.jsx(L,{label:"Label",value:e.label??"",onRefuse:n}),i.jsx(L,{label:"Color",value:e.useCustomColor?b(e.color):"Off",onRefuse:n,swatch:e.useCustomColor?b(e.color):void 0}),i.jsx(L,{label:"Mute",value:e.muted?"On":"Off",onRefuse:n}),i.jsx("div",{style:{opacity:.6,margin:"var(--volter-space-3) 0 var(--volter-space-1)"},children:"Properties"}),e.inputs.filter(A).map(a=>i.jsx(L,{label:a.label??a.name,value:a.linked?"Linked":ke(a.value),onRefuse:n},a.identifier))]}):i.jsx("div",{style:{opacity:.5},children:"No node looked at."})]})}function L({label:e,value:n,swatch:a,onRefuse:r}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",height:20},onPointerDown:()=>r(`"${e}" is read here and written nowhere — inspection parity.`),children:[i.jsx("span",{style:{flex:"0 0 45%",opacity:.75,textAlign:"right"},children:e}),a&&i.jsx("span",{style:{width:14,height:14,borderRadius:2,background:a,flex:"0 0 auto"}}),i.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},title:n,children:n})]})}export{Et as default,Ct as point,Tt as title};
|
|
1
|
+
import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{go as Ce}from"./index-DaRQxpdW.js";import{r as T}from"./index-nmcBqr7Y.js";import{s as Te,b as Q,a as Ee,n as ee,c as B,d as U,r as we,e as Oe,f as Ie,N as Ne}from"./blender-runtime-host-BfAWl8jZ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-_3L42iZv.js";import"./hierarchy-marks-CmVlgczH.js";import"./workspace-arrangement-BD3sTZSQ.js";const Re={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Factor",identifier:"Fac"},{kind:"input",name:"Type"},{kind:"input",name:"Lift",identifier:"Base Lift"},{kind:"input",name:"Lift",identifier:"Color Lift"},{kind:"input",name:"Gamma",identifier:"Base Gamma"},{kind:"input",name:"Gamma",identifier:"Color Gamma"},{kind:"input",name:"Gain",identifier:"Base Gain"},{kind:"input",name:"Gain",identifier:"Color Gain"},{kind:"input",name:"Offset",identifier:"Base Offset"},{kind:"input",name:"Offset",identifier:"Color Offset"},{kind:"input",name:"Power",identifier:"Base Power"},{kind:"input",name:"Power",identifier:"Color Power"},{kind:"input",name:"Slope",identifier:"Base Slope"},{kind:"input",name:"Slope",identifier:"Color Slope"},{kind:"panel",name:"Input",items:[{kind:"input",name:"Temperature",identifier:"Input Temperature"},{kind:"input",name:"Tint",identifier:"Input Tint"},{kind:"layout"}]},{kind:"panel",name:"Output",items:[{kind:"input",name:"Temperature",identifier:"Output Temperature"},{kind:"input",name:"Tint",identifier:"Output Tint"},{kind:"layout"}]}]},Pe={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Mask"},{kind:"panel",name:"Master",items:[{kind:"input",name:"Saturation",identifier:"Master Saturation"},{kind:"input",name:"Contrast",identifier:"Master Contrast"},{kind:"input",name:"Gamma",identifier:"Master Gamma"},{kind:"input",name:"Gain",identifier:"Master Gain"},{kind:"input",name:"Offset",identifier:"Master Offset"}],defaultClosed:!0},{kind:"panel",name:"Highlights",items:[{kind:"input",name:"Saturation",identifier:"Highlights Saturation"},{kind:"input",name:"Contrast",identifier:"Highlights Contrast"},{kind:"input",name:"Gamma",identifier:"Highlights Gamma"},{kind:"input",name:"Gain",identifier:"Highlights Gain"},{kind:"input",name:"Offset",identifier:"Highlights Offset"}],defaultClosed:!0},{kind:"panel",name:"Midtones",items:[{kind:"input",name:"Saturation",identifier:"Midtones Saturation"},{kind:"input",name:"Contrast",identifier:"Midtones Contrast"},{kind:"input",name:"Gamma",identifier:"Midtones Gamma"},{kind:"input",name:"Gain",identifier:"Midtones Gain"},{kind:"input",name:"Offset",identifier:"Midtones Offset"}],defaultClosed:!0},{kind:"panel",name:"Shadows",items:[{kind:"input",name:"Saturation",identifier:"Shadows Saturation"},{kind:"input",name:"Contrast",identifier:"Shadows Contrast"},{kind:"input",name:"Gamma",identifier:"Shadows Gamma"},{kind:"input",name:"Gain",identifier:"Shadows Gain"},{kind:"input",name:"Offset",identifier:"Shadows Offset"}],defaultClosed:!0},{kind:"panel",name:"Tonal Range",items:[{kind:"input",name:"Midtones Start"},{kind:"input",name:"Midtones End"}],defaultClosed:!0},{kind:"panel",name:"Channels",items:[{kind:"input",name:"Red",identifier:"Apply On Red"},{kind:"input",name:"Green",identifier:"Apply On Green"},{kind:"input",name:"Blue",identifier:"Apply On Blue"}],defaultClosed:!0}]},_e={customSocketOrder:!0,items:[{kind:"output",name:"Image"},{kind:"input",name:"Image"},{kind:"input",name:"Factor",identifier:"Fac"},{kind:"input",name:"Spill Channel"},{kind:"input",name:"Limit Method"},{kind:"input",name:"Limit Channel"},{kind:"input",name:"Limit Strength"},{kind:"panel",name:"Spill Strength",items:[{kind:"input",name:"Use Spill Strength",panelToggle:!0},{kind:"input",name:"Strength",identifier:"Spill Strength"}],defaultClosed:!0}]},Me={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Plane"},{kind:"input",name:"Upper Left"},{kind:"input",name:"Upper Right"},{kind:"input",name:"Lower Left"},{kind:"input",name:"Lower Right"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},ve={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Samples"},{kind:"input",name:"Center"},{kind:"input",name:"Rotation"},{kind:"input",name:"Scale"},{kind:"panel",name:"Translation",items:[{kind:"input",name:"Amount",identifier:"Translation Amount"},{kind:"input",name:"Direction",identifier:"Translation Direction"}]}]},Ae={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Displacement"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},be={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Glare"},{kind:"output",name:"Highlights"},{kind:"input",name:"Type"},{kind:"input",name:"Quality"},{kind:"panel",name:"Highlights",items:[{kind:"input",name:"Threshold",identifier:"Highlights Threshold"},{kind:"input",name:"Smoothness",identifier:"Highlights Smoothness"},{kind:"panel",name:"Clamp",items:[{kind:"input",name:"Clamp",identifier:"Clamp Highlights",panelToggle:!0},{kind:"input",name:"Maximum",identifier:"Maximum Highlights"}],defaultClosed:!0}],defaultClosed:!0},{kind:"panel",name:"Adjust",items:[{kind:"input",name:"Strength"},{kind:"input",name:"Saturation"},{kind:"input",name:"Tint"}]},{kind:"panel",name:"Glare",items:[{kind:"input",name:"Size"},{kind:"input",name:"Streaks"},{kind:"input",name:"Streaks Angle"},{kind:"input",name:"Iterations"},{kind:"input",name:"Fade"},{kind:"input",name:"Color Modulation"},{kind:"input",name:"Diagonal",identifier:"Diagonal Star"},{kind:"input",name:"Sun Position"},{kind:"input",name:"Jitter"},{kind:"input",name:"Kernel Data Type"},{kind:"input",name:"Kernel",identifier:"Float Kernel"},{kind:"input",name:"Kernel",identifier:"Color Kernel"}]}]},De={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Matte"},{kind:"output",name:"Edges"},{kind:"input",name:"Key Color"},{kind:"panel",name:"Preprocess",items:[{kind:"input",name:"Blur Size",identifier:"Preprocess Blur Size"}],defaultClosed:!0},{kind:"panel",name:"Key",items:[{kind:"input",name:"Balance",identifier:"Key Balance"}],defaultClosed:!0},{kind:"panel",name:"Tweak",items:[{kind:"input",name:"Black Level"},{kind:"input",name:"White Level"},{kind:"panel",name:"Edges",items:[{kind:"input",name:"Size",identifier:"Edge Search Size"},{kind:"input",name:"Tolerance",identifier:"Edge Tolerance"}],defaultClosed:!0}],defaultClosed:!0},{kind:"panel",name:"Mask",items:[{kind:"input",name:"Garbage Matte"},{kind:"input",name:"Core Matte"}],defaultClosed:!0},{kind:"panel",name:"Postprocess",items:[{kind:"input",name:"Blur Size",identifier:"Postprocess Blur Size"},{kind:"input",name:"Dilate Size",identifier:"Postprocess Dilate Size"},{kind:"input",name:"Feather Size",identifier:"Postprocess Feather Size"},{kind:"input",name:"Feather Falloff"}],defaultClosed:!0},{kind:"panel",name:"Despill",items:[{kind:"input",name:"Strength",identifier:"Despill Strength"},{kind:"input",name:"Balance",identifier:"Despill Balance"}],defaultClosed:!0}]},Be={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"UV"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Le={customSocketOrder:!0,items:[{kind:"output",name:"Mask"},{kind:"layout"},{kind:"input",name:"Size Source"},{kind:"input",name:"Size X"},{kind:"input",name:"Size Y"},{kind:"input",name:"Feather"},{kind:"panel",name:"Motion Blur",items:[{kind:"input",name:"Motion Blur",panelToggle:!0},{kind:"input",name:"Samples",identifier:"Motion Blur Samples"},{kind:"input",name:"Shutter",identifier:"Motion Blur Shutter"}],defaultClosed:!0}]},$e={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Plane"},{kind:"layout"},{kind:"panel",name:"Motion Blur",items:[{kind:"input",name:"Motion Blur",panelToggle:!0},{kind:"input",name:"Samples",identifier:"Motion Blur Samples"},{kind:"input",name:"Shutter",identifier:"Motion Blur Shutter"}],defaultClosed:!0}]},je={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Angle"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Fe={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Type"},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"input",name:"Frame Type"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ge={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"layout"},{kind:"input",name:"Frame"},{kind:"input",name:"Invert"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},We={customSocketOrder:!0,items:[{kind:"output",name:"Image"},{kind:"input",name:"String"},{kind:"input",name:"Font"},{kind:"input",name:"Size"},{kind:"panel",name:"Alignment",items:[{kind:"input",name:"Horizontal Alignment"},{kind:"input",name:"Vertical Alignment"}],defaultClosed:!0},{kind:"panel",name:"Wrap",items:[{kind:"input",name:"Wrap",panelToggle:!0},{kind:"input",name:"Width",identifier:"Wrap Width"}],defaultClosed:!0}]},He={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"input",name:"Angle"},{kind:"input",name:"Scale"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ue={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ye={customSocketOrder:!0,items:[{kind:"output",name:"Matrix"},{kind:"panel",name:"Column 1",items:[{kind:"input",name:"Column 1 Row 1"},{kind:"input",name:"Column 1 Row 2"},{kind:"input",name:"Column 1 Row 3"},{kind:"input",name:"Column 1 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 2",items:[{kind:"input",name:"Column 2 Row 1"},{kind:"input",name:"Column 2 Row 2"},{kind:"input",name:"Column 2 Row 3"},{kind:"input",name:"Column 2 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 3",items:[{kind:"input",name:"Column 3 Row 1"},{kind:"input",name:"Column 3 Row 2"},{kind:"input",name:"Column 3 Row 3"},{kind:"input",name:"Column 3 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 4",items:[{kind:"input",name:"Column 4 Row 1"},{kind:"input",name:"Column 4 Row 2"},{kind:"input",name:"Column 4 Row 3"},{kind:"input",name:"Column 4 Row 4"}],defaultClosed:!0}]},ze={customSocketOrder:!0,items:[{kind:"panel",name:"Column 1",items:[{kind:"output",name:"Column 1 Row 1"},{kind:"output",name:"Column 1 Row 2"},{kind:"output",name:"Column 1 Row 3"},{kind:"output",name:"Column 1 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 2",items:[{kind:"output",name:"Column 2 Row 1"},{kind:"output",name:"Column 2 Row 2"},{kind:"output",name:"Column 2 Row 3"},{kind:"output",name:"Column 2 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 3",items:[{kind:"output",name:"Column 3 Row 1"},{kind:"output",name:"Column 3 Row 2"},{kind:"output",name:"Column 3 Row 3"},{kind:"output",name:"Column 3 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 4",items:[{kind:"output",name:"Column 4 Row 1"},{kind:"output",name:"Column 4 Row 2"},{kind:"output",name:"Column 4 Row 3"},{kind:"output",name:"Column 4 Row 4"}],defaultClosed:!0},{kind:"input",name:"Matrix"}]},Ve={customSocketOrder:!0,items:[{kind:"input",name:"String"},{kind:"output",name:"String",alignWithPrevious:!0},{kind:"input",name:"Characters"},{kind:"input",name:"Whitespace"},{kind:"panel",name:"Limit",items:[{kind:"input",name:"Start"},{kind:"input",name:"End"}],defaultClosed:!0}]},Xe={customSocketOrder:!0,items:[{kind:"output",name:"Topology"},{kind:"input",name:"Bounds Min"},{kind:"input",name:"Bounds Max"},{kind:"input",name:"Resolution X"},{kind:"input",name:"Resolution Y"},{kind:"input",name:"Resolution Z"},{kind:"panel",name:"Min",items:[{kind:"input",name:"Min X"},{kind:"input",name:"Min Y"},{kind:"input",name:"Min Z"}],defaultClosed:!0}]},Ke={customSocketOrder:!0,conditional:!0,items:[{kind:"output",name:"Geometry"},{kind:"input",name:"",identifier:"__extend__main"},{kind:"output",name:"",identifier:"__extend__main",alignWithPrevious:!0},{kind:"panel",name:"Generated",items:[{kind:"separator"},{kind:"input",name:"",identifier:"__extend__generation"},{kind:"output",name:"",identifier:"__extend__generation",alignWithPrevious:!0}]}]},Ze={customSocketOrder:!0,items:[{kind:"output",name:"Names"},{kind:"input",name:"Geometry"},{kind:"panel",name:"Filter Data Type",items:[{kind:"input",name:"Filter Data Type",panelToggle:!0},{kind:"input",name:"Data Type"}]},{kind:"panel",name:"Filter Domain",items:[{kind:"input",name:"Filter Domain",panelToggle:!0},{kind:"input",name:"Domain"}]}]},qe={customSocketOrder:!0,conditional:!0,items:[{kind:"layout"},{kind:"output",name:"Points"},{kind:"output",name:"Value"},{kind:"panel",name:"Voxel Index",items:[{kind:"output",name:"X"},{kind:"output",name:"Y"},{kind:"output",name:"Z"},{kind:"output",name:"Is Tile"},{kind:"output",name:"Extent"}],defaultClosed:!0},{kind:"input",name:"Grid"}]},Je={customSocketOrder:!0,items:[{kind:"output",name:"X"},{kind:"output",name:"Y"},{kind:"output",name:"Z"},{kind:"panel",name:"Tile",items:[{kind:"output",name:"Is Tile"},{kind:"output",name:"Extent X"},{kind:"output",name:"Extent Y"},{kind:"output",name:"Extent Z"}],defaultClosed:!0}]},Qe={customSocketOrder:!0,items:[{kind:"input",name:"Mesh"},{kind:"output",name:"Mesh",alignWithPrevious:!0},{kind:"input",name:"Selection"},{kind:"input",name:"Affect Kind"},{kind:"input",name:"Start Left Offset"},{kind:"input",name:"Start Right Offset"},{kind:"input",name:"End Left Offset"},{kind:"input",name:"End Right Offset"},{kind:"input",name:"Offset"},{kind:"input",name:"Miter"},{kind:"input",name:"Spread"},{kind:"input",name:"Segments"},{kind:"input",name:"Shape"},{kind:"input",name:"Profile"},{kind:"panel",name:"Selections",items:[{kind:"output",name:"Vertex Face"},{kind:"output",name:"Edge Face"},{kind:"output",name:"Outer Edge"},{kind:"output",name:"Mid Edge"}]}]},en={customSocketOrder:!0,items:[{kind:"output",name:"Amplitude"},{kind:"input",name:"Sound"},{kind:"input",name:"Time"},{kind:"input",name:"All Channels"},{kind:"input",name:"Channel"},{kind:"input",name:"Low"},{kind:"input",name:"High"},{kind:"panel",name:"FFT",items:[{kind:"input",name:"FFT Size"},{kind:"input",name:"Window Function"}],defaultClosed:!0}]},nn={customSocketOrder:!0,items:[{kind:"output",name:"Curve Instances"},{kind:"output",name:"Remainder"},{kind:"output",name:"Line"},{kind:"output",name:"Word"},{kind:"output",name:"Pivot Point"},{kind:"input",name:"String"},{kind:"input",name:"Size"},{kind:"input",name:"Font"},{kind:"panel",name:"Alignment",items:[{kind:"input",name:"Align X"},{kind:"input",name:"Align Y"},{kind:"input",name:"Pivot Point"}],defaultClosed:!0},{kind:"panel",name:"Spacing",items:[{kind:"input",name:"Character Spacing"},{kind:"input",name:"Word Spacing"},{kind:"input",name:"Line Spacing"}],defaultClosed:!0},{kind:"panel",name:"Text Box",items:[{kind:"input",name:"Overflow"},{kind:"input",name:"Text Box Width"},{kind:"input",name:"Text Box Height"}],defaultClosed:!0}]},tn={customSocketOrder:!0,conditional:!0,items:[{kind:"input",name:"Target"},{kind:"output",name:"Target",alignWithPrevious:!0},{kind:"output",name:"Transferred Names"},{kind:"panel",name:"Target IDs",items:[],defaultClosed:!0},{kind:"input",name:"Source"},{kind:"panel",name:"Source IDs",items:[],defaultClosed:!0},{kind:"input",name:"Pattern Mode"},{kind:"input",name:"Attribute Names"},{kind:"input",name:"Exclude Names"}]},an={customSocketOrder:!0,items:[{kind:"input",name:"World"},{kind:"output",name:"World",alignWithPrevious:!0},{kind:"input",name:"Delta Time"},{kind:"input",name:"Filter"},{kind:"input",name:"Simulation to World"},{kind:"panel",name:"Solver",items:[{kind:"input",name:"Substeps"},{kind:"input",name:"Constraint Iterations"},{kind:"input",name:"Solver Path"}],defaultClosed:!0},{kind:"panel",name:"Interpolation Range",items:[{kind:"input",name:"Begin"},{kind:"input",name:"End"}],defaultClosed:!0}]},on={customSocketOrder:!0,conditional:!0,items:[{kind:"input",name:"Closure"},{kind:"panel",name:"Interface",items:[{kind:"output",name:"",identifier:"__extend__"},{kind:"input",name:"",identifier:"__extend__"}]}]},rn={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"layout"},{kind:"input",name:"Color"},{kind:"input",name:"Roughness"},{kind:"input",name:"IOR"},{kind:"input",name:"Normal"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},un={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"layout"},{kind:"input",name:"Base Color"},{kind:"input",name:"Edge Tint"},{kind:"input",name:"IOR"},{kind:"input",name:"Extinction"},{kind:"input",name:"Roughness"},{kind:"input",name:"Anisotropy"},{kind:"input",name:"Rotation"},{kind:"input",name:"Normal"},{kind:"input",name:"Tangent"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},sn={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"input",name:"Base Color"},{kind:"input",name:"Metallic"},{kind:"input",name:"Roughness"},{kind:"input",name:"IOR"},{kind:"input",name:"Alpha"},{kind:"input",name:"Thin Wall"},{kind:"input",name:"Normal"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Diffuse",items:[{kind:"input",name:"Diffuse Roughness"}],defaultClosed:!0},{kind:"panel",name:"Subsurface",items:[{kind:"layout"},{kind:"input",name:"Subsurface Weight"},{kind:"input",name:"Subsurface Radius"},{kind:"input",name:"Subsurface Scale"},{kind:"input",name:"Subsurface IOR"},{kind:"input",name:"Subsurface Anisotropy"}],defaultClosed:!0},{kind:"panel",name:"Specular",items:[{kind:"layout"},{kind:"input",name:"Specular IOR Level"},{kind:"input",name:"Specular Tint"},{kind:"input",name:"Anisotropic"},{kind:"input",name:"Anisotropic Rotation"},{kind:"input",name:"Tangent"}],defaultClosed:!0},{kind:"panel",name:"Transmission",items:[{kind:"input",name:"Transmission Weight"}],defaultClosed:!0},{kind:"panel",name:"Coat",items:[{kind:"input",name:"Coat Weight"},{kind:"input",name:"Coat Roughness"},{kind:"input",name:"Coat IOR"},{kind:"input",name:"Coat Tint"},{kind:"input",name:"Coat Normal"}],defaultClosed:!0},{kind:"panel",name:"Sheen",items:[{kind:"input",name:"Sheen Weight"},{kind:"input",name:"Sheen Roughness"},{kind:"input",name:"Sheen Tint"}],defaultClosed:!0},{kind:"panel",name:"Emission",items:[{kind:"input",name:"Emission Color"},{kind:"input",name:"Emission Strength"}],defaultClosed:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},dn={customSocketOrder:!0,conditional:!0,items:[{kind:"layout"},{kind:"output",name:"Is Hit"},{kind:"output",name:"Self Hit"},{kind:"output",name:"Hit Distance"},{kind:"output",name:"Hit Position"},{kind:"output",name:"Hit Normal"},{kind:"input",name:"Position"},{kind:"input",name:"Direction"},{kind:"input",name:"Length"},{kind:"panel",name:"Attributes",items:[{kind:"input",name:"",identifier:"__extend__"},{kind:"output",name:"",identifier:"__extend__",alignWithPrevious:!0}],defaultClosed:!0}]},ln={customSocketOrder:!0,items:[{kind:"output",name:"Volume"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Absorption",items:[{kind:"input",name:"Absorption Coefficients"}]},{kind:"panel",name:"Scatter",items:[{kind:"layout"},{kind:"input",name:"Scatter Coefficients"},{kind:"input",name:"Anisotropy"},{kind:"input",name:"IOR"},{kind:"input",name:"Backscatter"},{kind:"input",name:"Alpha"},{kind:"input",name:"Diameter"}]},{kind:"panel",name:"Emission",items:[{kind:"input",name:"Emission Coefficients"}]}]},mn={CompositorNodeColorBalance:Re,CompositorNodeColorCorrection:Pe,CompositorNodeColorSpill:_e,CompositorNodeCornerPin:Me,CompositorNodeDBlur:ve,CompositorNodeDisplace:Ae,CompositorNodeGlare:be,CompositorNodeKeying:De,CompositorNodeMapUV:Be,CompositorNodeMask:Le,CompositorNodePlaneTrackDeform:$e,CompositorNodeRotate:je,CompositorNodeScale:Fe,CompositorNodeStabilize:Ge,CompositorNodeStringToImage:We,CompositorNodeTransform:He,CompositorNodeTranslate:Ue,FunctionNodeCombineMatrix:Ye,FunctionNodeSeparateMatrix:ze,FunctionNodeTrimString:Ve,GeometryNodeCubeGridTopology:Xe,GeometryNodeForeachGeometryElementOutput:Ke,GeometryNodeGetAttributeNames:Ze,GeometryNodeGridToPoints:qe,GeometryNodeInputVoxelIndex:Je,GeometryNodeMeshBevel:Qe,GeometryNodeSampleSoundFrequencies:en,GeometryNodeStringToCurves:nn,GeometryNodeTransferAttributes:tn,GeometryNodeXPBDSolver:an,NodeEvaluateClosure:on,ShaderNodeBsdfGlass:rn,ShaderNodeBsdfMetallic:un,ShaderNodeBsdfPrincipled:sn,ShaderNodeRaycast:dn,ShaderNodeVolumeCoefficients:ln},I=20,N=1,S=I,O=I/2,D=.2*I,me=.25*I,Z=1.2*I,_=.1*I,pn=.8*I,w=.5,Y=D+w,cn=D+N,ne=2.5,kn=.2,fn=S*.5,z=S*-.5,hn=me,gn=1.5*I,R=11,h={sliderFill:"#4671b2",background:"#1a1a1a",body:"#303030",outline:"#ffffff",outlineAlpha:38/255,select:"#ed5700",active:"#ffffff",wireInner:"#8d8d8d",wire:"#1a1a1a",noodleCurving:4,dashAlpha:.5,text:"#e6e6e6",frame:"#0f0f0f",frameAlpha:204/255},Sn={INPUT:"#82354c",OUTPUT:"#3e232a",CONVERTER:"#246283",COLOR:"#6e6e23",VECTOR:"#3c3c83",FILTER:"#412b51",GROUP:"#374725",INTERFACE:"#1d1d1d",MATTE:"#5a3838",DISTORT:"#3e5a5b",TEXTURE:"#79461d",SHADER:"#2b652b",SCRIPT:"#203c3c",GEOMETRY:"#1d725e",ATTRIBUTE:"#1d2546",NONE:h.body,PATTERN:h.body},xn={VALUE:"#a1a1a1",VECTOR:"#6363c7",RGBA:"#c7c729",SHADER:"#63c763",BOOLEAN:"#cca6d6",INT:"#598c5c",STRING:"#70b3ff",OBJECT:"#ed9e5c",IMAGE:"#633863",GEOMETRY:"#00d6a3",COLLECTION:"#f5f5f5",TEXTURE:"#9e4fa3",MATERIAL:"#eb7582",ROTATION:"#a663c7",MENU:"#666666",MATRIX:"#b83385",BUNDLE:"#4d8080",CLOSURE:"#7d7d3b",FONT:"#635742",SOUND:"#635742",INT_VECTOR:"#5c789c",CUSTOM:"#333333"},yn="#ff00ff",pe=h.wire,Cn="#808080",F=N;function A(e){return e.enabled&&!e.hide}function V(e){const n=e.location[0]??0,a=e.location[1]??0,r=e.width,t=e.outputs.filter(A),o=e.inputs.filter(A);if(e.collapsed){const p=fn,m=p*Math.max(o.length,t.length,2)+D*2,x=a+m/2+z,c=a-m/2+z,k=(g,C)=>{let y=a+p*(g.length-1)*.5+z;return g.map(E=>{const P=M(E,C,C?n+r:n,y,y);return y-=p,P})};return{name:e.name,x:n,yTop:x,yBottom:c,width:r,collapsed:!0,sockets:[...k(t,!0),...k(o,!1)]}}let d=a-S;const u=[],l=(p,m)=>{const x=d;u.push(M(p,m,m?n+r:n,x-O,x)),d=x-S};return(t.length>0||o.length>0)&&(d-=2*_),t.forEach((p,m)=>{m>0&&(d-=_),l(p,!0)}),t.length>0&&o.length>0&&(d-=_),o.forEach((p,m)=>{(m>0||t.length>0)&&m>0&&(d-=_),l(p,!1)}),t.length>0||o.length>0?d-=2*_:d-=O,{name:e.name,x:n,yTop:a,yBottom:Math.min(d,a-2*S),width:r,collapsed:!1,sockets:u}}function M(e,n,a,r,t,o=!1){return{identifier:e.identifier,name:e.label??e.name,type:e.type,shape:e.shape,output:n,linked:e.linked,multiInput:e.multiInput,hideValue:e.hideValue,value:e.value,...e.softMin===void 0?{}:{softMin:e.softMin},...e.softMax===void 0?{}:{softMax:e.softMax},x:a,y:r,rowTop:t,panelCollapsed:o}}function Tn(e,n,a=h.noodleCurving){if(a===0)return[[e[0]+(n[0]-e[0])/3,e[1]+(n[1]-e[1])/3],[e[0]+(n[0]-e[0])*2/3,e[1]+(n[1]-e[1])*2/3]];const r=Math.abs(n[0]-e[0]),t=Math.abs(n[1]-e[1]),o=r===0?Number.POSITIVE_INFINITY:t/r,d=Math.min(1,o*(4.5-.25*a)),u=a*.1*r*d;return[[e[0]+u,e[1]],[n[0]-u,n[1]]]}function K(e){return e.idname==="NodeFrame"?h.frame:e.colorTag==="OUTPUT"&&!e.activeOutput?h.body:Sn[e.colorTag]??h.body}function te(e){return e.useCustomColor?b(e.color):h.body}function b(e){const n=a=>Math.round(Math.min(1,Math.max(0,a))*255).toString(16).padStart(2,"0");return`#${n(e[0]??0)}${n(e[1]??0)}${n(e[2]??0)}`}function ie(e,n){const a=ae(h.background),r=ae(e);return b([r[0]*(1-n)+a[0]*n,r[1]*(1-n)+a[1]*n,r[2]*(1-n)+a[2]*n])}const En=.6,wn=.8,On=.2;function ae(e){const n=Number.parseInt(e.slice(1),16);return[(n>>16&255)/255,(n>>8&255)/255,(n&255)/255]}function G(e){return xn[e]??yn}const oe=O,X=Z/3,re=Z/4,In=I,j={cell:8,reach:4,spread:3.64648,stroke:1},Nn="#000000",Rn=31/255*1.5,$=e=>e.identifier??e.name;function Pn(e,n,a){if(!e.customSocketOrder)return{ok:!1,why:"its declaration does not set use_custom_socket_order, so Blender lays it out the legacy way"};const r=[],t=[],o=l=>{for(const p of l)p.kind==="input"?r.push($(p)):p.kind==="output"?t.push($(p)):p.kind==="panel"&&o(p.items)};o(e.items);const d=(l,p,m)=>{if(l.length!==p.length)return`the declaration names ${l.length} ${m}${l.length===1?"":"s"} and the engine reports ${p.length}`;for(let x=0;x<l.length;x++)if(l[x]!==p[x]?.identifier)return`${m} ${x} is "${p[x]?.identifier}" in the engine and "${l[x]}" in the declaration`;return null},u=d(t,a,"output")??d(r,n,"input");return u===null?{ok:!0}:{ok:!1,why:u}}const _n={Socket:2,Separator:.5,Layout:3,PanelHeader:4},Mn={Socket:2,Separator:1,Layout:5,PanelHeader:4,PanelContentEnd:1},vn={Socket:{Socket:1,Separator:0,Layout:2,PanelHeader:3,PanelContentEnd:2},Layout:{Socket:2,Separator:0,Layout:1,PanelHeader:3,PanelContentEnd:2},Separator:{Socket:2,Separator:1,Layout:1,PanelHeader:1,PanelContentEnd:1},PanelHeader:{Socket:4,Separator:3,Layout:3,PanelHeader:5,PanelContentBegin:3,PanelContentEnd:3},PanelContentBegin:{Socket:2,Separator:1,Layout:2,PanelHeader:3,PanelContentEnd:1},PanelContentEnd:{Socket:1,Separator:1,Layout:1,PanelHeader:3,PanelContentEnd:0}};function ce(e,n,a,r,t,o,d){let u=!1;for(const l of e){if(l.kind==="input"||l.kind==="output"){const y=n.get(`${l.kind}:${$(l)}`);if(!y||!A(y)){u=!1;continue}const E=o[o.length-1];if(l.alignWithPrevious===!0&&u&&E&&E.type==="Socket"){o[o.length-1]={type:"Socket",input:l.kind==="input"?y:E.input,output:l.kind==="output"?y:E.output},u=!0;continue}o.push({type:"Socket",input:l.kind==="input"?y:void 0,output:l.kind==="output"?y:void 0}),u=!0;continue}if(u=!1,l.kind==="separator"){o.push({type:"Separator"});continue}if(l.kind==="layout"){r&&o.push({type:"Layout"});continue}if(l.kind!=="panel")continue;const p=l.items[0],m=p&&p.kind==="input"&&p.panelToggle===!0?p:null,x=m?n.get(`input:${$(m)}`)??null:null,c=[],k=y=>{for(const E of y)if(E.kind==="input"||E.kind==="output"){const P=n.get(`${E.kind}:${$(E)}`);P&&c.push(P)}else E.kind==="panel"&&k(E.items)};if(k(l.items),!c.some(A))continue;const g=a(l.defaultClosed===!0),C={name:l.name,depth:t,collapsed:g,toggle:x,owned:c,centerY:0,contentTop:null,contentBottom:null,fillsNodeEnd:!1};d.push(C),o.push({type:"PanelHeader",panel:C}),!g&&(o.push({type:"PanelContentBegin",panel:C}),ce(l.items.filter(y=>y!==m),n,a,r,t+1,o,d),o.push({type:"PanelContentEnd",panel:C}))}}function An(e){const n=e.location[0]??0,a=e.location[1]??0,r=e.width,t=new Map;for(const c of e.inputs)t.set(`input:${c.identifier}`,c);for(const c of e.outputs)t.set(`output:${c.identifier}`,c);let o=0;const d=e.panelStates,u=[],l=[];ce(e.declaration.items,t,c=>d[o++]?.collapsed??c,e.showOptions,0,u,l);const p=[];let m=a-S;u.length===0&&(m-=O);for(let c=0;c<u.length;c++){const k=u[c];if(!k)continue;const g=u[c-1],C=c===0?_n[k.type]??0:vn[g?.type??"Socket"]?.[k.type]??0;if(m-=C*_,k.type==="Socket"){const y=m;k.output&&p.push(M(k.output,!0,n+r,y-O,y)),k.input&&p.push(M(k.input,!1,n,y-O,y)),m=y-S;continue}if(k.type==="Layout"||k.type==="Separator"){m-=S;continue}if(k.type==="PanelHeader"&&k.panel){m-=oe/2,k.panel.centerY=m,m-=oe/2,k.panel.toggle&&p.push(M(k.panel.toggle,!1,n,k.panel.centerY,k.panel.centerY));continue}k.type==="PanelContentBegin"&&k.panel&&(k.panel.contentTop=m),k.type==="PanelContentEnd"&&k.panel&&(k.panel.contentBottom=m)}const x=u[u.length-1];x&&(m-=(Mn[x.type]??0)*_);for(const c of l)if(c.collapsed)for(const k of c.owned){if(!A(k))continue;const g=e.outputs.includes(k);p.push(M(k,g,g?n+r:n,c.centerY,c.centerY,!0))}for(let c=u.length-1;c>=0;c--){const k=u[c];if(!k||k.type!=="PanelContentEnd")break;k.panel&&(k.panel.fillsNodeEnd=!0)}return{name:e.name,x:n,yTop:a,yBottom:Math.min(m,a-2*S),width:r,collapsed:!1,sockets:p,panels:l.map(c=>({name:c.name,depth:c.depth,collapsed:c.collapsed,centerY:c.centerY,contentTop:c.contentTop,contentBottom:c.contentBottom,fillsNodeEnd:c.fillsNodeEnd,toggle:c.toggle?M(c.toggle,!1,n,c.centerY,c.centerY):null}))}}function bn(e){const n=a=>a.some(r=>r.kind==="layout"?!0:r.kind==="panel"?n(r.items):!1);return n(e.items)}const Ct="workspace.document",Tt="Shader Editor";Ce(Ne);const Dn=320,ue=.1,se=4;function Et(){const e=T.useSyncExternalStore(Te,Q,Q),[n,a]=T.useState(null),[r,t]=T.useState(null),o=T.useRef(null),d=T.useRef(!1);T.useSyncExternalStore(Ee,ee,ee);const{transform:u,looked:l,refusal:p,size:m}=U(),x=T.useCallback(s=>{const f=U().transform;B({transform:typeof s=="function"?s(f):s})},[]),c=T.useCallback(s=>{B({looked:s,refusal:null})},[]),k=T.useCallback(s=>{const f=U().size;f.w===s.w&&f.h===s.h||B({size:s})},[]),g=T.useCallback(s=>{we(s)},[]);T.useEffect(()=>{let s=!0;return(async()=>{try{const f=await Oe();if(!s)return;a(f),t(null)}catch(f){if(!s)return;t(f instanceof Error?f.message:String(f))}})(),()=>{s=!1}},[e]),T.useEffect(()=>{const s=o.current;if(!s)return;const f=new ResizeObserver(()=>{k({w:s.clientWidth,h:s.clientHeight})});return f.observe(s),k({w:s.clientWidth,h:s.clientHeight}),()=>f.disconnect()},[]);const C=T.useMemo(()=>jn(n),[n]);T.useEffect(()=>{B({drawn:[...C.frames,...C.nodes].map(({node:s,laid:f,panels:v,fallback:ye})=>{const J=f.sockets.find(H=>!H.panelCollapsed)??f.sockets[0];return{panels:v.length,collapsedPanels:v.filter(H=>H.collapsed).length,panelFallback:ye,name:s.name,x:f.x,yTop:f.yTop,yBottom:f.yBottom,width:f.width,height:f.yTop-f.yBottom,sockets:f.sockets.length,firstSocketBelowTop:J?f.yTop-J.y:null,header:K(s)}})})},[C]);const y=T.useCallback(()=>{const s=Fn(C.nodes);if(!s)return;const f=de(Math.min(m.w/(s.w+2*S),m.h/(s.h+2*S)),ue,se);B({transform:{cx:s.x+s.w/2,cy:s.y-s.h/2,zoom:f},framedAt:Date.now()})},[C.nodes,m.h,m.w]),E=Ie(),P=T.useRef(0);T.useEffect(()=>{E!==P.current&&(P.current=E,y())},[E,y]),T.useEffect(()=>{d.current||C.nodes.length===0||m.w<=1||(d.current=!0,y())},[C.nodes.length,m.w,y]);const W=T.useRef(null),fe=s=>{s.button===1&&(s.preventDefault(),s.target.setPointerCapture?.(s.pointerId),W.current={x:s.clientX,y:s.clientY,cx:u.cx,cy:u.cy})},he=s=>{const f=W.current;f&&x(v=>({...v,cx:f.cx-(s.clientX-f.x)/v.zoom,cy:f.cy+(s.clientY-f.y)/v.zoom}))},q=()=>{W.current=null},ge=s=>{s.preventDefault(),x(f=>({...f,zoom:de(f.zoom*(s.deltaY<0?1.1:1/1.1),ue,se)}))},Se=n?.nodes.find(s=>s.name===l)??null,xe=u.zoom>kn;return i.jsxs("div",{"data-testid":"blender-node-editor",style:{display:"flex",position:"absolute",inset:0,overflow:"hidden"},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",flex:1,minWidth:0,minHeight:0},children:[i.jsx(Xn,{tree:n,zoom:u.zoom,onViewAll:y,onRefuse:g}),i.jsx("div",{ref:o,style:{position:"relative",flex:1,minHeight:0},children:i.jsx("svg",{role:"presentation",width:"100%",height:"100%",onPointerDown:fe,onPointerMove:he,onPointerUp:q,onPointerCancel:q,onWheel:ge,onContextMenu:s=>{s.preventDefault(),g("The node context menu adds, deletes and reconnects nodes — editing.")},style:{display:"block",background:h.background,cursor:"default"},children:i.jsxs("g",{transform:`translate(${m.w/2} ${m.h/2}) scale(${u.zoom} ${-u.zoom}) translate(${-u.cx} ${-u.cy})`,children:[C.frames.map(s=>i.jsx(Vn,{node:s.node,laid:s.laid},s.node.name)),C.links.map(s=>i.jsx(zn,{link:s},s.key)),C.nodes.map(s=>i.jsx(Gn,{node:s.node,laid:s.laid,panels:s.panels,looked:s.node.name===l,details:xe,onLook:()=>c(s.node.name),onRefuse:g},s.node.name))]})})}),i.jsx(Kn,{entries:C.nodes,error:r,refusal:p})]}),i.jsx(Zn,{node:Se,onRefuse:g})]})}const Bn=26,Ln=22,$n=mn;function jn(e){if(!e)return{nodes:[],frames:[],links:[]};const n=new Map,a=e.nodes.map(t=>{const o={name:t.name,location:t.location,width:t.width,collapsed:t.collapsed,inputs:t.inputs,outputs:t.outputs},d=t.collapsed?void 0:$n[t.idname];if(t.panelCount>0&&!d){const l=V(o);return n.set(t.name,l),{node:t,laid:l,panels:[],fallback:t.collapsed?null:"no traced declaration — the trace covers the 36 node types that declare a panel in Blender 5.2.0, and a node group’s panels are runtime data",approximate:!1}}if(d){const l=Pn(d,t.inputs,t.outputs);if(l.ok){const m=An({...o,declaration:d,panelStates:t.panels,showOptions:t.showOptions});return n.set(t.name,m),{node:t,laid:m,panels:m.panels,fallback:null,approximate:bn(d)}}const p=V(o);return n.set(t.name,p),{node:t,laid:p,panels:[],fallback:l.why,approximate:!1}}const u=V(o);return n.set(t.name,u),{node:t,laid:u,panels:[],fallback:null,approximate:!1}}),r=e.links.flatMap((t,o)=>{const d=n.get(t.fromNode),u=n.get(t.toNode);if(!d||!u)return[];const l=d.sockets.find(m=>m.output&&m.identifier===t.fromSocket),p=u.sockets.find(m=>!m.output&&m.identifier===t.toSocket);return!l||!p?[]:[{key:`${t.fromNode}.${t.fromSocket}→${t.toNode}.${t.toSocket}#${o}`,from:[l.x,l.y],to:[p.x,p.y],fromColor:G(l.type),toColor:G(p.type),muted:t.muted,valid:t.valid}]});return{nodes:a.filter(t=>t.node.idname!=="NodeFrame"),frames:a.filter(t=>t.node.idname==="NodeFrame"),links:r}}function Fn(e){if(e.length===0)return null;let n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const{laid:o}of e)n=Math.min(n,o.x),a=Math.max(a,o.x+o.width),r=Math.min(r,o.yBottom),t=Math.max(t,o.yTop);return{x:n,y:t,w:a-n,h:t-r}}const de=(e,n,a)=>Math.min(a,Math.max(n,e));function Gn({node:e,laid:n,panels:a,looked:r,details:t,onLook:o,onRefuse:d}){if(e.type==="REROUTE"){const g=n.sockets[0];return i.jsx("circle",{cx:n.x,cy:n.yTop,r:hn,fill:g?G(g.type):h.wireInner,stroke:pe,strokeWidth:F,onPointerDown:C=>{C.button===0&&o()}})}const u=e.muted?ie(K(e),En):K(e),l=e.muted?ie(te(e),wn):te(e),p=e.muted?1-On:1,m=e.selected?e.activeOutput||r?h.active:h.select:h.outline,x=e.selected?1:h.outlineAlpha,c=n.yTop-n.yBottom,k=e.label??e.typeLabel;return i.jsxs("g",{opacity:p,onPointerDown:g=>{g.button===0&&o()},onDoubleClick:()=>d(`Renaming "${e.name}" writes Node.name — editing parity is not the program.`),style:{cursor:"default"},children:[n.collapsed?i.jsx("rect",{x:n.x-w,y:-n.yTop-w,width:n.width+2*w,height:c+2*w,rx:Y,fill:u,transform:"scale(1 -1)"}):i.jsxs(i.Fragment,{children:[i.jsx("rect",{x:n.x-w,y:-(n.yTop-S)-w,width:n.width+2*w,height:c-S+2*w,rx:Y,fill:l,transform:"scale(1 -1)"}),i.jsx("rect",{x:n.x-w,y:-n.yTop-w,width:n.width+2*w,height:S+2*w,rx:Y,fill:u,transform:"scale(1 -1)"}),i.jsx("rect",{x:n.x-w,y:-(n.yTop-S)-w,width:n.width+2*w,height:D,fill:u,transform:"scale(1 -1)"}),a.map(g=>i.jsx(Wn,{panel:g,laid:n},`bg:${g.name}`))]}),i.jsx("rect",{x:n.x-N,y:-n.yTop-N,width:n.width+2*N,height:c+2*N,rx:cn,fill:"none",stroke:m,strokeOpacity:x,strokeWidth:N,transform:"scale(1 -1)"}),i.jsx("text",{x:n.x+Z,y:-(n.yTop-S/2),transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:k}),t&&n.sockets.map(g=>i.jsx(Un,{socket:g,node:n,onRefuse:d},`${g.output?"o":"i"}:${g.identifier}`)),t&&a.map(g=>i.jsx(Hn,{panel:g,laid:n,onRefuse:d},`hd:${g.name}`))]})}function Wn({panel:e,laid:n}){if(e.contentTop===null||e.contentBottom===null)return null;const a=[{y:e.contentTop,height:e.contentTop-e.contentBottom,radius:0,times:1}];return e.fillsNodeEnd&&a.push({y:e.contentBottom,height:e.contentBottom-n.yBottom,radius:D,times:e.depth+1}),i.jsx("g",{style:{pointerEvents:"none"},children:a.flatMap((r,t)=>Array.from({length:r.times},(o,d)=>i.jsx("rect",{x:n.x,y:-r.y,width:n.width,height:Math.max(r.height,0),rx:r.radius,fill:Nn,fillOpacity:Rn,transform:"scale(1 -1)"},`${t}:${d}`)))})}function Hn({panel:e,laid:n,onRefuse:a}){const r=pn,t=r/j.cell,o=n.x+X+r/2,d=e.centerY,u=j.reach*t,l=j.spread*t,p=e.collapsed?`M ${o-u/2} ${-(d+l)} L ${o+u/2} ${-d} L ${o-u/2} ${-(d-l)}`:`M ${o-l} ${-(d+u/2)} L ${o} ${-(d-u/2)} L ${o+l} ${-(d+u/2)}`,m=n.x+X+r+re+(e.toggle&&!e.toggle.linked?In:0);return i.jsxs("g",{onPointerDown:x=>{x.button===0&&(x.stopPropagation(),a(`${e.collapsed?"Opening":"Collapsing"} "${e.name}" writes the panel's is_collapsed — editing parity is not the program.`))},style:{cursor:"default"},children:[i.jsx("rect",{x:n.x,y:-(d+O),width:n.width,height:2*O,fill:"transparent",transform:"scale(1 -1)"}),i.jsx("path",{d:p,fill:"none",stroke:h.text,strokeWidth:j.stroke*t,strokeLinecap:"round",strokeLinejoin:"round",transform:"scale(1 -1)",style:{pointerEvents:"none"}}),e.toggle&&!e.toggle.linked&&i.jsx("rect",{x:n.x+X+r+re,y:-(d+O/2),width:O,height:O,rx:.2*O,fill:e.toggle.value===!0?"#4772b3":"#545454",transform:"scale(1 -1)",style:{pointerEvents:"none"}}),i.jsx("text",{x:m,y:-d,transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name})]})}function Un({socket:e,node:n,onRefuse:a}){const r=G(e.type),t=e.type==="CUSTOM"?Cn:pe,o=me,d=e.shape.replace("_DOT",""),u=e.shape.endsWith("_DOT"),l=d==="SQUARE"?i.jsx("rect",{x:e.x-o,y:-e.y-o,width:2*o,height:2*o,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"}):d==="DIAMOND"?i.jsx("polygon",{points:`${e.x},${-e.y-o} ${e.x+o},${-e.y} ${e.x},${-e.y+o} ${e.x-o},${-e.y}`,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"}):i.jsx("circle",{cx:e.x,cy:-e.y,r:o,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"});return i.jsxs("g",{onPointerDown:p=>{p.button===0&&(p.stopPropagation(),a(`Dragging from "${e.name}" would make a link — editing parity is not the program.`))},children:[l,u&&i.jsx("circle",{cx:e.x,cy:-e.y,r:o*.35,fill:t,transform:"scale(1 -1)"}),!n.collapsed&&!e.panelCollapsed&&i.jsx(Yn,{socket:e,node:n,onRefuse:a})]})}function Yn({socket:e,node:n,onRefuse:a}){const r=O,t=n.x+r,o=n.x+n.width-r,d=-(e.rowTop-S/2);if(!(!e.output&&!e.linked&&!e.hideValue&&e.value!==null))return i.jsx("text",{x:e.output?o:t,y:d,transform:"scale(1 -1)",textAnchor:e.output?"end":"start",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name});const l=Array.isArray(e.value)&&e.value.length>=3;return i.jsxs("g",{onPointerDown:p=>{p.button===0&&(p.stopPropagation(),a(`Changing "${e.name}" writes the socket's default_value — editing parity is not the program.`))},style:{cursor:"default"},children:[i.jsx("rect",{x:t,y:d-S/2+1,width:o-t,height:S-2,rx:.2*S,fill:"#545454",transform:"scale(1 -1)"}),le(e)!==null&&i.jsxs(i.Fragment,{children:[i.jsx("clipPath",{id:`sl-${e.identifier}`,children:i.jsx("rect",{x:t,y:d-S/2+1,width:o-t,height:S-2,rx:.2*S})}),i.jsx("rect",{x:t,y:d-S/2+1,width:(o-t)*(le(e)??0),height:S-2,fill:h.sliderFill,clipPath:`url(#sl-${e.identifier})`,transform:"scale(1 -1)"})]}),i.jsx("text",{x:t+6,y:d,transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name}),l?i.jsx("rect",{x:o-34,y:d-S/2+3,width:30,height:S-6,rx:2,fill:b(e.value),transform:"scale(1 -1)"}):i.jsx("text",{x:o-6,y:d,transform:"scale(1 -1)",textAnchor:"end",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:ke(e.value)})]})}function le(e){const{softMin:n,softMax:a,value:r}=e;return n===void 0||a===void 0||typeof r!="number"||a<=n?null:Math.min(1,Math.max(0,(r-n)/(a-n)))}function ke(e){return e===null?"":typeof e=="boolean"?e?"On":"Off":typeof e=="number"?e.toFixed(3):typeof e=="string"?e:e.map(n=>n.toFixed(2)).join(", ")}function zn({link:e}){const[n,a]=Tn(e.from,e.to),r=`M ${e.from[0]} ${e.from[1]} C ${n[0]} ${n[1]}, ${a[0]} ${a[1]}, ${e.to[0]} ${e.to[1]}`,t=e.valid?h.wireInner:"#ff2020";return i.jsxs("g",{style:{pointerEvents:"none"},children:[i.jsx("path",{d:r,fill:"none",stroke:h.wire,strokeWidth:ne+2*N}),i.jsx("path",{d:r,fill:"none",stroke:t,strokeWidth:ne,strokeDasharray:e.muted?"10 10":void 0,strokeOpacity:e.muted?h.dashAlpha:1})]})}function Vn({node:e,laid:n}){const a=Math.max(n.yTop-n.yBottom,gn*2);return i.jsxs("g",{style:{pointerEvents:"none"},children:[i.jsx("rect",{x:n.x,y:-n.yTop,width:n.width,height:a,rx:D,fill:e.useCustomColor?b(e.color):h.frame,fillOpacity:h.frameAlpha,transform:"scale(1 -1)"}),e.label&&i.jsx("text",{x:n.x+n.width/2,y:-(n.yTop-25),transform:"scale(1 -1)",textAnchor:"middle",fill:h.text,fontSize:20,children:e.label})]})}function Xn({tree:e,zoom:n,onViewAll:a,onRefuse:r}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",height:Bn,padding:"0 var(--volter-space-2)",background:h.background,color:h.text,font:`${R}px inherit`,borderBottom:"1px solid #161616"},children:[i.jsx("span",{"data-testid":"node-editor-tree-type",style:{opacity:.85},children:e?.typeLabel??"Shader Editor"}),i.jsx("span",{style:{opacity:.4},children:"·"}),i.jsx("span",{"data-testid":"node-editor-material",children:e?.material??"No material"}),i.jsx("span",{style:{flex:1}}),i.jsxs("span",{style:{opacity:.6},children:[Math.round(n*100),"%"]}),i.jsx("button",{type:"button",className:"volter-btn","data-variant":"ghost","data-size":"sm",onClick:a,"data-testid":"node-editor-view-all",children:"View All"}),i.jsx("button",{type:"button",className:"volter-btn","data-variant":"ghost","data-size":"sm","data-testid":"node-editor-use-nodes",onClick:()=>r("Use Nodes writes Material.use_nodes — editing parity is not the program."),children:"Use Nodes"})]})}function Kn({entries:e,error:n,refusal:a}){const r=e.filter(u=>u.fallback!==null),t=e.filter(u=>u.approximate),o=e.reduce((u,l)=>u+l.panels.length,0),d=n||a||(r.length>0?`${r.map(u=>`"${u.node.name}" draws its sockets flat: ${u.fallback}`).join("; ")}.`:t.length>0?`${t.map(u=>`"${u.node.name}"`).join(", ")} ${t.length===1?"carries a":"carry"} declaration LAYOUT row, whose drawn height RNA cannot answer; one UI unit is reserved for it.`:o>0?`${o} socket panel${o===1?"":"s"} drawn from Blender's own declarations. Read-only: this view inspects the node tree and never writes it.`:"Read-only: this view inspects the node tree and never writes it.");return i.jsx("div",{"data-testid":"node-editor-status",style:{flex:"0 0 auto",height:Ln,display:"flex",alignItems:"center",padding:"0 var(--volter-space-2)",background:h.background,color:n||a?"#ffa028":"#888888",font:`${R}px inherit`,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:d})}function Zn({node:e,onRefuse:n}){return i.jsxs("aside",{"data-testid":"node-editor-sidebar",style:{width:Dn,flex:"0 0 auto",overflow:"auto",background:h.background,color:h.text,font:`${R}px inherit`,borderLeft:"1px solid #161616",padding:"var(--volter-space-2)"},children:[i.jsx("div",{style:{opacity:.6,marginBottom:"var(--volter-space-2)"},children:"Node"}),e?i.jsxs(i.Fragment,{children:[i.jsx(L,{label:"Name",value:e.name,onRefuse:n}),i.jsx(L,{label:"Label",value:e.label??"",onRefuse:n}),i.jsx(L,{label:"Color",value:e.useCustomColor?b(e.color):"Off",onRefuse:n,swatch:e.useCustomColor?b(e.color):void 0}),i.jsx(L,{label:"Mute",value:e.muted?"On":"Off",onRefuse:n}),i.jsx("div",{style:{opacity:.6,margin:"var(--volter-space-3) 0 var(--volter-space-1)"},children:"Properties"}),e.inputs.filter(A).map(a=>i.jsx(L,{label:a.label??a.name,value:a.linked?"Linked":ke(a.value),onRefuse:n},a.identifier))]}):i.jsx("div",{style:{opacity:.5},children:"No node looked at."})]})}function L({label:e,value:n,swatch:a,onRefuse:r}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",height:20},onPointerDown:()=>r(`"${e}" is read here and written nowhere — inspection parity.`),children:[i.jsx("span",{style:{flex:"0 0 45%",opacity:.75,textAlign:"right"},children:e}),a&&i.jsx("span",{style:{width:14,height:14,borderRadius:2,background:a,flex:"0 0 auto"}}),i.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},title:n,children:n})]})}export{Et as default,Ct as point,Tt as title};
|
package/dist/assets/{blender-properties-tab-Ca6GGoZA.js → blender-properties-tab-D0pPyu6C.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{r as H}from"./index-
|
|
1
|
+
import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{r as H}from"./index-DaRQxpdW.js";import{k as ue,l as Z,s as de,m as q,o as fe,p as pe,q as he,t as xe}from"./blender-runtime-host-BfAWl8jZ.js";import{r as b}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a as ge,h as ye,t as be,p as je}from"./ColorPicker-spH4IeyW.js";const me=e=>typeof e=="object"&&e!==null&&typeof e.subscribeFrames=="function"&&typeof e.blenderObjectName=="function",ve=e=>typeof e=="object"&&e!==null&&typeof e.documentId=="string"&&typeof e.hierarchy?.object3D=="function";function J(){const e=H().documents.context(Z());return me(e)?e:null}function Q(e,t){if(e===null||!ve(t))return null;const n=J();if(n===null)return null;if(e.id===t.documentId)return t.documentRootObject===n.root?{kind:"scene"}:null;const i=ue().byId.get(e.id);if(i?.type==="TSE_LAYER_COLLECTION")return{kind:"collection",path:i.path};const o=t.hierarchy.object3D(e.id);if(o===null)return null;if(o===n.root)return{kind:"scene"};const l=n.blenderObjectName(o);return l===null?null:{kind:"object",name:l}}let N={object:null,collection:null,context:null,views:new Map,error:null,loading:!1},ee=0;const D=new Set;let U=null;const E=new Set;let I=null,j=0,_=0;const T=new Set;function y(e,t=!1){N={...N,...e},ee+=1;for(const n of[...D])n();t&&H().documents.contextChanged(Z())}function Se(e){return D.add(e),()=>{D.delete(e)}}function V(){return ee}function B(){return N}function Ae(){const e=I;j+=1,E.clear(),T.clear(),e!==null?te(e,!0):y({})}de(()=>{Ae()});let M=null;function te(e,t=!1){M!==e&&(M=e,setTimeout(()=>{M===e&&(M=null,Ne(e,t))},0))}function Ee(e){return e.kind==="scene"?"":e.kind==="collection"?`collection:${e.path}`:e.name}function Oe(){if(U!==null)return;const e=J();e!==null&&(U=e.subscribeFrames(fe))}async function Ne(e,t=!1){const n=e.startsWith("collection:")?e.slice(11):null,i=n===null&&e!==""?e:null,o=t&&I===e;I!==e&&(j+=1,E.clear(),T.clear());const l=j,c=++_;I=e;const a=o?N.context:null;o||y({loading:!0,object:i,collection:n,context:null,error:null,views:new Map});try{const s=await pe(i??void 0,n??void 0);if(l!==j||c!==_)return;if(o&&JSON.stringify(s)===JSON.stringify(a)){y({loading:!1,error:null});return}y({context:s,loading:!1,error:null},!0)}catch(s){if(l!==j||c!==_)return;y({context:null,loading:!1,error:W(s)},!0)}}function ne(e){if(!q())return;Oe();const t=Ee(e);I!==t&&te(t)}function R(e){const t=N.views.get(e);if(t!==void 0&&T.has(e)||E.has(e)||!q())return t;E.add(e);const n=j;return he(e).then(i=>{if(n!==j||(E.delete(e),T.add(e),i===null))return;const o=new Map(N.views);o.set(e,i),y({views:o,error:null})}).catch(i=>{n===j&&(E.delete(e),y({error:W(i)}))}),t}async function Re(e,t,n,i){try{return await xe(e,t,n,i),T.delete(e),y({error:null}),!0}catch(o){return y({error:W(o)}),!1}}function W(e){return e instanceof Error?e.message:String(e)}const C=20,K=2,Ce="40%",$e=25,X=20,v=8,Le=4,G=8,p=11,g=.5,x="#e6e6e6",Ie="#3d3d3d",Te="#ffffff11",ke="rgba(0,0,0,0.12)",Me="#545454",Pe="#3d3d3d",Be="#4772b3",ie="#991616",_e=8,Fe=6,De=e=>Math.round(e*.2),re=e=>e.filter(t=>t.hidden!==!0&&t.undrawn!==!0);function k(){return b.useSyncExternalStore(Se,V,V)}function h({title:e,sub:t=!1,closed:n=!1,note:i,count:o,children:l}){const[c,a]=b.useState(!n);return r.jsxs("div",{style:{marginBottom:v,borderRadius:Le,boxShadow:t?"none":`inset 0 0 0 1px ${Te}`,background:t?ke:"transparent",overflow:"hidden"},children:[r.jsxs("button",{type:"button",onClick:()=>a(!c),style:{display:"flex",alignItems:"center",width:"100%",height:$e,background:t?"transparent":Ie,border:"none",padding:`0 ${G}px 0 ${t?X+14-20:0}px`,color:x,font:`${p}px inherit`,textAlign:"left",cursor:"pointer",gap:Fe},children:[r.jsx("span",{"aria-hidden":"true",style:{width:X-8,textAlign:"center",fontSize:_e,opacity:.85},children:c?"▼":"▶"}),r.jsx("span",{style:{fontWeight:400},title:i,children:e}),o===void 0?null:r.jsx("span",{style:{opacity:g,marginLeft:"auto"},children:o})]}),c?r.jsx("div",{style:{padding:v},children:l}):null]})}function O({label:e,title:t,readonly:n,identifier:i,children:o}){return r.jsxs("div",{"data-rna-field":i??"","data-field-label":e,"data-field-readonly":n?"true":void 0,style:{display:"flex",alignItems:"center",minHeight:C,marginBottom:K,gap:G,opacity:n?g:1},title:t,children:[r.jsx("span",{style:{flex:`0 0 ${Ce}`,textAlign:"right",color:x,fontSize:p,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),r.jsx("span",{style:{flex:"1 1 0",minWidth:0,display:"flex",gap:K},children:o})]})}const m={height:C,width:"100%",minWidth:0,boxSizing:"border-box",background:Me,border:`1px solid ${Pe}`,borderRadius:De(C),color:x,fontSize:p,padding:`0 ${G}px`,textAlign:"center"};function S({children:e}){return r.jsx("span",{style:{...m,display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})}const F=C-2*Math.floor((C-2)/6);function oe({value:e,readonly:t,label:n,onChange:i}){return r.jsx("input",{type:"checkbox",checked:e,readOnly:t,...n===void 0?{}:{"aria-label":n},onChange:o=>!t&&i(o.target.checked),style:{width:F,height:F,margin:`${(C-F)/2}px 0`,accentColor:Be,cursor:t?"default":"pointer"}})}function le({row:e,value:t,index:n,onWrite:i}){const[o,l]=b.useState(null),c=e.type==="FLOAT"?e.precision??3:0,a=o??(e.type==="FLOAT"?t.toFixed(c):String(t));return e.readonly?r.jsx(S,{children:a}):r.jsx("input",{type:"number","aria-label":$(e,n),value:a,...e.softMin===void 0?{}:{min:e.softMin},...e.softMax===void 0?{}:{max:e.softMax},...e.step===void 0?{}:{step:e.type==="FLOAT"?e.step/100:1},onChange:s=>l(s.target.value),onBlur:()=>{const s=Number(o);l(null),o!==null&&Number.isFinite(s)&&s!==t&&i(s,n)},onKeyDown:s=>{s.key==="Enter"&&s.target.blur(),s.key==="Escape"&&l(null)},style:m})}const ze=new Set(["TRANSLATION","DIRECTION","XYZ","XYZ_LENGTH","EULER","VELOCITY","ACCELERATION","COORDS"]);function se(e,t){if(e==="QUATERNION"||e==="AXISANGLE")return"WXYZ"[t];if(!(t>=4)){if(ze.has(e))return"XYZW"[t];if(e==="COLOR"||e==="COLOR_GAMMA")return"RGBA"[t]}}function $(e,t){const n=e.name||e.identifier;return t===void 0?n:`${n} ${se(e.subtype,t)??t}`}function ce(e,t){const n=i=>Math.max(0,Math.min(255,Math.round(Math.max(0,e[i]??0)**(t?1:.45454545454545453)*255)));return[n(0),n(1),n(2)]}function Y(e,t=!1){const[n,i,o]=ce(e,t);return`rgb(${n}, ${i}, ${o})`}function We(e,t,n){const i=u=>n?u/255:(u/255)**2.2,[o,l,c]=ye(be(e)).map(i),a=[o,l,c],s=/^(rgba|hsla)\(/i.test(e)||/^#[0-9a-f]{8}$/i.test(e);return t.length>3&&a.push(s?je(e):t[3]??1),a}function Ge({row:e,onOpen:t}){const n=e.value;if(n===null||n.path===null)return r.jsx(S,{children:n===null?"None":n.name??n.type});const i=n.path;return r.jsx("button",{type:"button","aria-label":$(e),onClick:()=>t(i),style:{...m,cursor:"pointer",textAlign:"left"},title:i,children:n.name??n.type})}function we({row:e,write:t}){const n=e.items??[];if(e.isFlag){const o=e.value??[];return r.jsx(S,{children:o.length===0?"None":o.join(", ")})}const i=String(e.value??"");return e.readonly?r.jsx(S,{children:n.find(o=>o.identifier===i)?.name??i}):r.jsx("select",{"aria-label":$(e),value:i,onChange:o=>t(o.target.value),style:{...m,textAlign:"left"},children:n.map(o=>r.jsx("option",{value:o.identifier,children:o.name},o.identifier))})}function Ue({row:e,write:t}){const n=String(e.value??"");return e.readonly?r.jsx(S,{children:n}):r.jsx(He,{value:n,label:$(e),onWrite:i=>t(i)})}function Ve({row:e,write:t}){const n=e.value??[],i=e.subtype==="COLOR_GAMMA",[o,l]=b.useState(!1),[c,a,s]=ce(n,i),u=n.length>3?n[3]??1:1,f=u<1?`rgba(${c}, ${a}, ${s}, ${u.toFixed(2)})`:Y(n,i);return r.jsxs("span",{style:{position:"relative",display:"block"},children:[r.jsx("button",{type:"button","aria-label":e.name,"aria-expanded":o,disabled:e.readonly,onClick:()=>l(!o),style:{...m,background:Y(n,i),display:"block",width:"100%",cursor:e.readonly?"default":"pointer"},title:n.map(d=>d.toFixed(3)).join(", ")}),o?r.jsx("div",{style:{position:"absolute",zIndex:"var(--volter-z-dropdown)",top:"100%",right:0,marginTop:4},children:r.jsx(ge,{value:f,onChange:()=>{},onChangeEnd:d=>t(We(d,n,i)),onClose:()=>l(!1)})}):null]})}function Ke({row:e,label:t,title:n,write:i}){const o=e.value??[];return r.jsx(r.Fragment,{children:o.map((l,c)=>r.jsx(O,{label:Xe(t,c,e.subtype),title:n,readonly:e.readonly,identifier:`${e.identifier}[${c}]`,children:e.type==="BOOLEAN"?r.jsx(oe,{value:l===!0,readonly:e.readonly,label:$(e,c),onChange:a=>i(a,c)}):r.jsx(le,{row:e,value:Number(l),index:c,onWrite:(a,s)=>i(a,s)})},`${e.identifier}-${c}`))})}function Xe(e,t,n){const i=se(n,t);return i===void 0?t===0?e:`${e} ${t}`:`${t===0?`${e} `:""}${i}`}function Ye(e){const{row:t,write:n}=e;switch(t.type){case"POINTER":return r.jsx(Ge,{...e});case"ENUM":return r.jsx(we,{...e});case"STRING":return r.jsx(Ue,{...e});case"BOOLEAN":return r.jsx(oe,{value:t.value===!0,readonly:t.readonly,label:$(t),onChange:n});default:return r.jsx(le,{row:t,value:Number(t.value??0),onWrite:i=>n(i)})}}function w({row:e,path:t,onOpen:n}){const i=(u,f)=>void Re(t,e.identifier,u,f),o=e.name||e.identifier,l=`${e.identifier} — ${e.type}${e.subtype==="NONE"?"":`/${e.subtype}`}${e.readonly?" (read-only)":""}${e.description?`
|
|
2
2
|
${e.description}`:""}`,c={row:e,path:t,write:i,onOpen:n},a=e.valueOmitted??e.valueError;if(a!==void 0)return r.jsx(O,{label:o,title:l,readonly:!0,identifier:e.identifier,children:r.jsx(S,{children:a})});if(e.type==="COLLECTION")return r.jsx(Ze,{label:o,title:l,value:e.value??{count:0},identifier:e.identifier,onOpen:()=>n(`${t}.${e.identifier}`)});const s=e.type==="INT"||e.type==="FLOAT";return e.arrayLength>0&&(s||e.type==="BOOLEAN")?s&&(e.subtype==="COLOR"||e.subtype==="COLOR_GAMMA")?r.jsx(O,{label:o,title:l,readonly:e.readonly,identifier:e.identifier,children:r.jsx(Ve,{...c})}):r.jsx(Ke,{...c,label:o,title:l}):r.jsx(O,{label:o,title:l,readonly:e.readonly,identifier:e.identifier,children:Ye(c)})}function He({value:e,label:t,onWrite:n}){const[i,o]=b.useState(null);return r.jsx("input",{type:"text",...t===void 0?{}:{"aria-label":t},value:i??e,onChange:l=>o(l.target.value),onBlur:()=>{i!==null&&i!==e&&n(i),o(null)},onKeyDown:l=>{l.key==="Enter"&&l.target.blur(),l.key==="Escape"&&o(null)},style:{...m,textAlign:"left"}})}function Ze({label:e,title:t,value:n,identifier:i,onOpen:o}){const[l,c]=b.useState(!1),a=n.names??[];return r.jsxs(r.Fragment,{children:[r.jsx(O,{label:e,title:t,readonly:!1,identifier:i,children:r.jsxs("button",{type:"button","aria-label":e,onClick:()=>a.length?c(!l):o(),style:{...m,cursor:"pointer",textAlign:"left"},children:[a.length?`${l?"▼":"▶"} `:"",n.count," ",n.count===1?"item":"items"]})}),l?a.map(s=>r.jsx(O,{label:"",readonly:!0,children:r.jsx(S,{children:s})},s)):null]})}const z=e=>typeof e=="string"?e:e.property;function qe(e){if(e.active===void 0)return{path:null,index:null};const t=B().context?.[e.active];if(typeof t!="object"||t===null)return{path:null,index:null};const n=t;return{path:n.path??null,index:typeof n.index=="number"?n.index:null}}function Je({panel:e,path:t,onOpen:n}){k();const i=R(t),o=qe(e);return i===void 0?r.jsx(h,{title:e.title,closed:e.closed===!0,children:r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:["Reading ",t,"…"]})}):i.kind!=="collection"?r.jsx(h,{title:e.title,closed:e.closed===!0,note:t,children:r.jsxs("div",{style:{color:ie,fontSize:p},children:[t," is not a collection — this panel is declared `collection: true`."]})}):r.jsxs(h,{title:e.title,closed:e.closed===!0,note:t,count:i.count,children:[i.items.length===0?r.jsx("div",{style:{color:x,opacity:g,fontSize:p},children:"None"}):null,i.items.map((l,c)=>r.jsx(h,{title:`${l.path!==null&&l.path===o.path||c===o.index?"● ":""}${l.name??l.type}`,sub:!0,children:l.path===null?r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:[l.type," — RNA gives this member no address."]}):r.jsx(Qe,{path:l.path,properties:e.properties,andDeclared:e.andDeclared===!0,onOpen:n})},l.path??l.name??l.type))]})}function Qe({path:e,properties:t,andDeclared:n=!1,onOpen:i}){k();const o=R(e);if(o===void 0)return r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:["Reading ",e,"…"]});const l=o.kind==="struct"?o.groups.flatMap(u=>u.rows):[],c=new Map(l.map(u=>[u.identifier,u])),a=t.map(u=>c.get(z(u))).filter(u=>u!==void 0),s=n&&o.kind==="struct"?re(l).filter(u=>u.group===o.type&&!t.some(f=>z(f)===u.identifier)):[];return r.jsx(r.Fragment,{children:[...a,...s].map(u=>r.jsx(w,{row:u,path:e,onOpen:i},u.identifier))})}function et(e,t){if(e.engine!==void 0){const n=B().context?.engine;if(n===void 0)return null;if(!e.engine.includes(n))return!1}for(const n of e.when??[]){const i=n.from??e.from,o=i?t.find(s=>s.label===i):t[0];if(o===void 0)return!1;const l=R(o.path);if(l===void 0)return null;if(l.kind!=="struct")return!1;const c=l.groups.flatMap(s=>s.rows).find(s=>s.identifier===n.property);if(c===void 0)return!1;const a=c.value;if(typeof a!="string"&&typeof a!="number"&&typeof a!="boolean"||n.is!==void 0&&!n.is.includes(a)||n.isNot!==void 0&&n.isNot.includes(a))return!1}return!0}function ae({panel:e,paths:t,onOpen:n}){if(k(),et(e,t)!==!0)return null;const i=e.from?t.find(s=>s.label===e.from):t[0];if(i!==void 0&&e.collection===!0)return r.jsx(Je,{panel:e,path:i.path,onOpen:n});if(i===void 0)return null;const o=R(i.path),l=e.sub??[],c=[],a=[];for(const s of e.properties){const u=z(s),f=typeof s=="string"?i:t.find(L=>L.label===s.from),d=f===void 0?void 0:R(f.path),A=d?.kind==="struct"?d.groups.flatMap(L=>L.rows).find(L=>L.identifier===u):void 0;A===void 0||f===void 0?a.push(u):c.push({identifier:u,row:A,path:f.path})}return o===void 0?r.jsx(h,{title:e.title,closed:e.closed===!0,children:r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:["Reading ",i.path,"…"]})}):c.length===0&&l.length===0?null:r.jsxs(h,{title:e.title,closed:e.closed===!0,note:a.length===0?`${i.path}`:`${i.path}
|
|
3
3
|
Not on this datablock: ${a.join(", ")}`,children:[c.map(s=>r.jsx(w,{row:s.row,path:s.path,onOpen:n},s.identifier)),l.map((s,u)=>r.jsx(ae,{panel:s,paths:t,onOpen:n},`${u}:${s.title}`))]})}function P({path:e,onOpen:t}){k();const n=R(e);return n===void 0?r.jsxs("div",{style:{color:x,opacity:g,fontSize:p,padding:v},children:["Reading ",e,"…"]}):n.kind==="collection"?r.jsxs(r.Fragment,{children:[n.items.length===0?r.jsx("div",{style:{color:x,opacity:g,fontSize:p},children:n.count===0?"None":`${n.count} items`}):null,n.items.map(i=>r.jsx(h,{title:i.name??i.type,sub:!0,children:i.path===null?r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:[i.type," — RNA gives this member no address."]}):r.jsx(P,{path:i.path,onOpen:t})},i.path??i.name??i.type))]}):r.jsx(r.Fragment,{children:n.groups.map(i=>{const o=re(i.rows);return o.length===0?null:r.jsx(h,{title:i.label,sub:!0,children:o.map(l=>r.jsx(w,{row:l,path:n.path,onOpen:t},l.identifier))},i.id)})})}function tt({tabId:e,subject:t,curated:n=[]}){k(),b.useEffect(()=>ne(t),[t]);const[i,o]=b.useState([]),l=B(),c=l.context?.tabs.find(d=>d.id===e)??null,a=c?.paths??[],s=a.map(d=>d.path).join("|");if(b.useEffect(()=>o([]),[s]),l.error!==null)return r.jsx("div",{style:{color:ie,fontSize:p,padding:v},children:l.error});if(c===null)return r.jsx("div",{style:{color:x,opacity:g,fontSize:p,padding:v},children:l.loading?"Reading the engine…":"Blender shows no properties here."});const u=d=>o(A=>[...A,d]),f=i[i.length-1];return r.jsxs("div",{style:{padding:`${v}px 0`},children:[i.length>0?r.jsxs("button",{type:"button",onClick:()=>o(d=>d.slice(0,-1)),style:{...m,width:"auto",marginBottom:v,cursor:"pointer",textAlign:"left"},title:f,children:["← ",c.label]}):null,f!==void 0?r.jsx(h,{title:f.slice(f.lastIndexOf(".")+1),children:r.jsx(P,{path:f,onOpen:u})}):r.jsxs(r.Fragment,{children:[n.map((d,A)=>r.jsx(ae,{panel:d,paths:a,onOpen:u},`${A}:${d.title}`)),n.length>0?r.jsx(h,{title:"All properties",closed:!0,children:a.map(d=>r.jsx(h,{title:d.label,sub:!0,children:r.jsx(P,{path:d.path,onOpen:u})},d.path))}):a.map(d=>r.jsx(h,{title:d.label,children:r.jsx(P,{path:d.path,onOpen:u})},d.path))]})]})}function ct(e){return(t,n)=>{const i=Q(t,n);if(i===null)return!1;if(ne(i),e.standing==="any")return!0;if(e.standing==="object")return i.kind==="object";const o=B(),l=i.kind==="object"?i.name:null,c=i.kind==="collection"?i.path:null;return o.object!==l||o.collection!==c?!1:o.context?.tabs.some(a=>a.id===e.id)??!1}}function at(e){return function({node:n,adapter:i}){const o=Q(n,i);return o===null?null:r.jsx(tt,{tabId:e.id,subject:o,curated:e.curated??[]})}}export{ct as a,at as b,B as c,Q as r};
|