@volter/game-editor 0.5.65 → 0.5.66
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 +1962 -363
- package/catalog/entries/bake.json +0 -1
- package/catalog/entries/blender.json +2 -2
- package/catalog/entries/reflections.json +2 -4
- package/catalog/project-source/src/lib/bake/asset-seed.ts +1 -2
- package/catalog/project-source/src/lib/bake/clip-layering.ts +3 -4
- package/catalog/project-source/src/lib/bake/gltf-bake.ts +1 -1
- package/catalog/project-source/src/lib/bake/params.ts +3 -5
- package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +2 -3
- package/dist/.vite/manifest.json +2406 -2182
- package/dist/assets/{AssetBudgetPanel-J9--TZPU.js → AssetBudgetPanel-csYWK2H4.js} +8 -8
- package/dist/assets/{AudioViewer-CR7333fe.js → AudioViewer-BH_LUYs5.js} +1 -1
- package/dist/assets/{BVHLoader-6bQIXhMX.js → BVHLoader-Jkzh8hMf.js} +1 -1
- package/dist/assets/BufferGeometryUtils-CAbuTPOA.js +1 -0
- package/dist/assets/{CCDIKSolver-CD7vLpsK.js → CCDIKSolver-D4NvkJ8d.js} +1 -1
- package/dist/assets/{CSS3DRenderer-CL7ABLVK.js → CSS3DRenderer-CAS2WZZy.js} +1 -1
- package/dist/assets/CanvasSceneViewport-BlsRTk-X.js +1 -0
- package/dist/assets/ColladaLoader-DxYB89DA.js +3 -0
- package/dist/assets/{ColorInput-DQBNrW-K.js → ColorInput-CPQNsDf1.js} +1 -1
- package/dist/assets/{ConvexGeometry-CAzXlPVG.js → ConvexGeometry-Dinf-sev.js} +1 -1
- package/dist/assets/{ConvexHull-BINCESFp.js → ConvexHull-CrJ8FY-w.js} +1 -1
- package/dist/assets/{DecalGeometry-160KRdfg.js → DecalGeometry-owkbefLa.js} +1 -1
- package/dist/assets/EffectComposer-BHDH-NLz.js +1 -0
- package/dist/assets/EntityModelDocument-DuQivdvc.js +1 -0
- package/dist/assets/EnvironmentAssetDocument-CnTEMn3A.js +1 -0
- package/dist/assets/FBXLoader-BMUbIhtE.js +1 -0
- package/dist/assets/Fbo-DrK7CWlB.js +1 -0
- package/dist/assets/{FontLoader-CvGoVI5a.js → FontLoader-BR_K6Baw.js} +2 -2
- package/dist/assets/GLTFExporter-BZqAQJbw.js +1 -0
- package/dist/assets/{GameplaySessionTimeline-B52W3FVZ.js → GameplaySessionTimeline-Crqwv2fP.js} +1 -1
- package/dist/assets/Gltf-7cVbZUzT.js +2 -0
- package/dist/assets/ImageViewer-BkFie7Hm.js +1 -0
- package/dist/assets/InspectorObjectPreview-Dl3tyJBn.js +1 -0
- package/dist/assets/JsonAssetDocument-BUFzubHM.js +2 -0
- package/dist/assets/{LineSegments2-CsOpKSiM.js → LineSegments2-Cicm_Hu1.js} +2 -2
- package/dist/assets/LiveModuleDocument-C3OQxiba.js +1 -0
- package/dist/assets/LutAssetDocument-DVzd1RZ9.js +1 -0
- package/dist/assets/{MTLLoader-_Xzd4_0p.js → MTLLoader-Bg_grNiT.js} +2 -2
- package/dist/assets/{MarchingCubes-Bsp4wrzd.js → MarchingCubes-a78AL3HB.js} +1 -1
- package/dist/assets/MeshBVH-BCSLNEeP.js +1 -0
- package/dist/assets/ModelAssetDocument-pN84goRT.js +1 -0
- package/dist/assets/{NonThreeAuthoringBootstrap-C3woOMxX.js → NonThreeAuthoringBootstrap-BKNejRiW.js} +1 -1
- package/dist/assets/{OBJLoader-BhIC6Hwo.js → OBJLoader-BiwzVj5b.js} +2 -2
- package/dist/assets/Object3DDocumentToolbar-D5Bg5FEf.js +1 -0
- package/dist/assets/Object3DDocumentViewport-DFHqru3a.js +2 -0
- package/dist/assets/Object3DPreview-BTtZ-41z.js +2 -0
- package/dist/assets/OnlineAssetDetail-BAqozdAp.js +1 -0
- package/dist/assets/{OrbitControls-DLpayAaK.js → OrbitControls-CzKVCORl.js} +1 -1
- package/dist/assets/{OrbitControls-CM3bPray.js → OrbitControls-CzTRRI7x.js} +1 -1
- package/dist/assets/{OrthographicCamera-bQozawrh.js → OrthographicCamera-CSDDsvu7.js} +1 -1
- package/dist/assets/{PLYLoader-DYQqs5Ik.js → PLYLoader-QxrxxMpE.js} +2 -2
- package/dist/assets/{PerspectiveCamera-CQ2lh01o.js → PerspectiveCamera-DzD_NfVh.js} +1 -1
- package/dist/assets/PlayBar-qVJpgwJt.js +2 -0
- package/dist/assets/QuarksAssetDocument-B4vBlUsS.js +2 -0
- package/dist/assets/RGBELoader-WQ7xZofE.js +1 -0
- package/dist/assets/RectAreaLightUniformsLib-CwcuoVqt.js +1 -0
- package/dist/assets/{RenderPass-DPrn-Uky.js → RenderPass-C_CeQNdh.js} +1 -1
- package/dist/assets/{ResolutionPicker-C67vs1F3.js → ResolutionPicker-DpHVJxn5.js} +1 -1
- package/dist/assets/RootSelectionOverlay-BxvsunO4.js +1 -0
- package/dist/assets/{RoundedBox-BDGBg6QZ.js → RoundedBox-B_cZ0NFy.js} +1 -1
- package/dist/assets/{RoundedBoxGeometry-CyUuYPfW.js → RoundedBoxGeometry-Y4rcSIvX.js} +1 -1
- package/dist/assets/STLLoader-Bej_Nkpr.js +1 -0
- package/dist/assets/{SelectionBox-D_75KrNW.js → SelectionBox-Cn9vm7f9.js} +1 -1
- package/dist/assets/ShaderAssetDocument-Dx2x8CLr.js +12 -0
- package/dist/assets/{ShaderPass-QYRpPuFJ.js → ShaderPass-qtkA7CQ8.js} +1 -1
- package/dist/assets/{ShadowEditor-DkImwu1Y.js → ShadowEditor-BEIUkrHL.js} +1 -1
- package/dist/assets/SimplifyModifier-D2EesGr2.js +1 -0
- package/dist/assets/{SkeletonUtils-Cps8GOC6.js → SkeletonUtils-C8ayciDc.js} +1 -1
- package/dist/assets/{Sky-CQKCgYDs.js → Sky-BBpnAJZV.js} +1 -1
- package/dist/assets/SourceAssetViewer-BpMbbuy6.js +1 -0
- package/dist/assets/StageHost-lB8f---y.js +2 -0
- package/dist/assets/{StoryPreviewMount-DjyxRCXu.js → StoryPreviewMount-BIfxmkYh.js} +1 -1
- package/dist/assets/{TDSLoader-D_T8XJ81.js → TDSLoader-rHl5Uwc0.js} +1 -1
- package/dist/assets/{TextGeometry-DOWAEUV0.js → TextGeometry-BRHSufuM.js} +1 -1
- package/dist/assets/ThreeBoardDocument-BHV92Ia3.js +2 -0
- package/dist/assets/{ThreeIsolationSceneContent-C8C8whSF.js → ThreeIsolationSceneContent-BqtgDHBK.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-BRoDWe4Q.js → ToolObject3DPreview-CcaPJTyH.js} +1 -1
- package/dist/assets/Toolbar-keHcSvDD.js +1 -0
- package/dist/assets/{TrackballControls-DfznuQTh.js → TrackballControls-Cce-6Ff5.js} +1 -1
- package/dist/assets/{TransientHint-BB1fwrvK.js → TransientHint-Dlslh3oX.js} +1 -1
- package/dist/assets/{UnrealBloomPass-CR-cS_K5.js → UnrealBloomPass-DiseEiFK.js} +2 -2
- package/dist/assets/{VideoViewer-C6kocgIU.js → VideoViewer-naGSXHd6.js} +1 -1
- package/dist/assets/ViewportShadingMenu-C7Hdhtca.js +1 -0
- package/dist/assets/{active-ingest-CT6jSGhr.js → active-ingest-DEgq9JiA.js} +3 -3
- package/dist/assets/{animation-clock-CnjZqfJp.js → animation-clock-lTIb6nk3.js} +1 -1
- package/dist/assets/animation-mixers.service-2O2rVwQf.js +1 -0
- package/dist/assets/asset-budget-asset.menu-9NhdHAC9.js +1 -0
- package/dist/assets/asset-budget.action-yg6-luUJ.js +1 -0
- package/dist/assets/asset-budget.document-B46_VFqa.js +1 -0
- package/dist/assets/asset-budget.menu-DuH07N-e.js +1 -0
- package/dist/assets/{asset-editor-persistence-BBaONOJt.js → asset-editor-persistence-BVtzjadu.js} +1 -1
- package/dist/assets/{asset-loaders-BOy5Ss8k.js → asset-loaders-BxG1LykH.js} +2 -2
- package/dist/assets/{assets-BuSoGjBX.js → assets-Do88ZdV_.js} +1 -1
- package/dist/assets/{audio-unlock.service-CfUgUQVy.js → audio-unlock.service-BJH0mWvX.js} +1 -1
- package/dist/assets/{audio.utility-C6K6jem8.js → audio.utility-Cp4aVYFU.js} +1 -1
- package/dist/assets/autoplay.service-FxpRy7Ev.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-CL02gWDn.js → babylon-authoring-adapter-B_8iE8fK.js} +1 -1
- package/dist/assets/{binding-resolver-Dsh-6Vor.js → binding-resolver-BWwG10zJ.js} +2 -2
- package/dist/assets/blender-emscripten-engine-CEsWgnR7.js +2 -0
- package/dist/assets/{blender-node-editor.document-iIDkB9sI.js → blender-node-editor.document-DTgwy8KC.js} +1 -1
- package/dist/assets/blender-properties-tab-DWSJpkxq.js +3 -0
- package/dist/assets/blender-runtime-host-OGjPjTrG.js +4 -0
- package/dist/assets/{blender-runtime-skin-DyQ9B6CR.js → blender-runtime-skin-DymtXlpt.js} +37 -39
- package/dist/assets/blender-runtime.document-CzH2ohHR.js +8 -0
- package/dist/assets/{blender-timeline.document-77fx96N7.js → blender-timeline.document-BRy_QPHt.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-fsT7B4gV.js → blender-uv-editor.document-D-AbUCqz.js} +1 -1
- package/dist/assets/{blender-version.status-o6dBm3n6.js → blender-version.status-B7flzX_7.js} +1 -1
- package/dist/assets/{blender-wali-engine-wTOcrOMC.js → blender-wali-engine-D3iKpzn9.js} +1 -1
- package/dist/assets/blender.command-BVHtgTQy.js +1 -0
- package/dist/assets/blender.environment-CG-pC7sk.js +1 -0
- package/dist/assets/{blender.style-Dcem5f_T.js → blender.style-CxfbTFcE.js} +1 -1
- package/dist/assets/{board-guides-DziKSTss.js → board-guides-C3usUZZk.js} +1 -1
- package/dist/assets/body-marks-D8iaje6y.js +1 -0
- package/dist/assets/bridge.command-BF9u6r0A.js +3 -0
- package/dist/assets/browserAll-38aBu-cf.js +1 -0
- package/dist/assets/{build-profiles.document-kW8iw8Xj.js → build-profiles.document-DO7oNRuo.js} +2 -2
- package/dist/assets/{build-progress.status-BNRLytg2.js → build-progress.status-COeNVhYd.js} +1 -1
- package/dist/assets/{build-session-C_sg3CEn.js → build-session-IWIriS5P.js} +1 -1
- package/dist/assets/{build.action-lYjTLb7K.js → build.action-DlkFvZf6.js} +1 -1
- package/dist/assets/{build.command-DIGgUPU_.js → build.command-DPqQIYj_.js} +1 -1
- package/dist/assets/{build.header-CKajx5U3.js → build.header-CNLG-pV8.js} +1 -1
- package/dist/assets/{build.menu-BdU0QXny.js → build.menu-hUlH6loi.js} +1 -1
- package/dist/assets/{build.service-CbBAyeu3.js → build.service-C86Td3_9.js} +1 -1
- package/dist/assets/{camera-KEsKvOL7.js → camera-CKbyBXMe.js} +1 -1
- package/dist/assets/camera-authoring-Ci3KnE-W.js +1 -0
- package/dist/assets/{camera-runtime.inspector-B7unX4g1.js → camera-runtime.inspector-DdR3P2BF.js} +1 -1
- package/dist/assets/canvas-entry-runtime-E5YjSgre.js +2 -0
- package/dist/assets/canvas-preview-frames-CiAx7dpV.js +1 -0
- package/dist/assets/{capability-coverage-Czas4C18.js → capability-coverage-CfUeULDN.js} +5 -5
- package/dist/assets/city-EkhAOo5s.exr +0 -0
- package/dist/assets/{collaboration-presence-DLoZ7EA3.js → collaboration-presence-CSLFNT7m.js} +1 -1
- package/dist/assets/{collider-Bw0mXlsW.js → collider-DRSaLRM9.js} +1 -1
- package/dist/assets/{component-board.service-DCwcUssB.js → component-board.service-B7Sv8b7m.js} +2 -2
- package/dist/assets/component-board.service-B8UHw8dn.js +2 -0
- package/dist/assets/component-contracts.service-LFGekycZ.js +1 -0
- package/dist/assets/{component-verbs.command-7xzfjGMZ.js → component-verbs.command-D4SvFjfG.js} +1 -1
- package/dist/assets/component-verbs.service-TGvWxf2b.js +1 -0
- package/dist/assets/{config-CEZk921y.js → config-DB_RH-hO.js} +3 -3
- package/dist/assets/{configurations-DTBMdaTL.js → configurations-C2qgJNnW.js} +1 -1
- package/dist/assets/{connection.status-BifnQdOs.js → connection.status-CG7X2brL.js} +1 -1
- package/dist/assets/{console-bridge-CHcb-xk5.js → console-bridge-B5Ltae37.js} +1 -1
- package/dist/assets/{constraint-De8f1Uiq.js → constraint-C_Jj7dXy.js} +1 -1
- package/dist/assets/constraints.inspector-D6QZJS4b.js +1 -0
- package/dist/assets/courtyard-DqlebbpC.exr +0 -0
- package/dist/assets/coverage.service-Clo86874.js +3 -0
- package/dist/assets/{create-runtime-CVCc1BDx.js → create-runtime-lmA910XT.js} +1 -1
- package/dist/assets/{curve-7Q79VgU4.js → curve-6-TR6dNb.js} +1 -1
- package/dist/assets/{data-asset-4hjS642k.js → data-asset-BNbd309U.js} +1 -1
- package/dist/assets/{data-ref-CQI28C0D.js → data-ref-Dvmd7eb1.js} +1 -1
- package/dist/assets/{debug-bridge-CCohG-d-.js → debug-bridge-BUNhgyY6.js} +1 -1
- package/dist/assets/{debug-registry-Dgvitx8M.js → debug-registry-B3Cnne3x.js} +1 -1
- package/dist/assets/deferred-ingest-play-7V8OrW3e.js +2 -0
- package/dist/assets/design-time-layers-g9VS6amb.js +1 -0
- package/dist/assets/design-time-mount.service-HtMr_vBd.js +2 -0
- package/dist/assets/design-time-react-mount-Dx6fJ-Hg.js +1 -0
- package/dist/assets/{directional-shadow-fit-BVkOKAv2.js → directional-shadow-fit-Cjz_Eg2b.js} +1 -1
- package/dist/assets/{document-preview-three-Kbg2GCLm.js → document-preview-three-C3y0syYQ.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-CY8C7f4T.js → dom-authoring-adapter-CEeFyatF.js} +1 -1
- package/dist/assets/{draco3d-BBUTcNkz.js → draco3d-FKy0apkb.js} +1 -1
- package/dist/assets/drei-asset-caches-jJoHXbTj.js +2 -0
- package/dist/assets/{edit-mode-audio.service-Bzetwd5B.js → edit-mode-audio.service-DZTnrW6t.js} +1 -1
- package/dist/assets/edit-mode-authoring-D_BiHCQj.js +1 -0
- package/dist/assets/{edit-mode-networking.service-YCX6RRb_.js → edit-mode-networking.service-BzMI2VxO.js} +1 -1
- package/dist/assets/editor-api-Bzmo0o8_.js +1 -0
- package/dist/assets/{entry-adjudication-Cq8Yeb74.js → entry-adjudication-BYy7TXOB.js} +1 -1
- package/dist/assets/{events-156d8d12.esm-ErOhDXXB.js → events-156d8d12.esm-C734MYnx.js} +7 -7
- package/dist/assets/{extend-B-eOccUm.js → extend-CLG0ymiX.js} +1 -1
- package/dist/assets/forest-P_CQY3b_.exr +0 -0
- package/dist/assets/fork-menu-De7HU6_H.js +1 -0
- package/dist/assets/{frame-debugger-store-D1Mf_5up.js → frame-debugger-store-BZgIOlU6.js} +1 -1
- package/dist/assets/{game-DHOZVb-7.js → game-D5EJoILQ.js} +1 -1
- package/dist/assets/{game-contract-seams-a5YXejOu.js → game-contract-seams-TCpIMmHP.js} +1 -1
- package/dist/assets/{game-css-scope-transform-Eng4wS8E.js → game-css-scope-transform-NbpajQr-.js} +1 -1
- package/dist/assets/game-document.service-6eRlrI-d.js +1 -0
- package/dist/assets/game-eval.command-hKnSMlX0.js +2 -0
- package/dist/assets/{game-input-seams-CIQdetRw.js → game-input-seams-BC6xhZy3.js} +1 -1
- package/dist/assets/{game-module-access-B2mFxv-i.js → game-module-access-ry3xb1Ix.js} +1 -1
- package/dist/assets/{gameplay-export-BoKXm51x.js → gameplay-export-DiLQuPpn.js} +1 -1
- package/dist/assets/gameplay-replay-Bsre-1K8.js +1 -0
- package/dist/assets/{gameplay-rng-trap-CTNhm-UW.js → gameplay-rng-trap-BhRx_CtU.js} +1 -1
- package/dist/assets/gameplay.command-BqiyGn-I.js +1 -0
- package/dist/assets/{generation-jobs-BQrXbGp_.js → generation-jobs-BYcpgeGk.js} +1 -1
- package/dist/assets/generation.service-O81IqA-6.js +1 -0
- package/dist/assets/{generations-DzUogZsM.js → generations-CsGQ3twi.js} +1 -1
- package/dist/assets/{generations.status-CgOUBCum.js → generations.status-C3YU0_ml.js} +1 -1
- package/dist/assets/godot.style-DxJaFWOP.js +1 -0
- package/dist/assets/godot.view-BFsHk8b2.js +1 -0
- package/dist/assets/{hosted-asset-materialization-CiIvWkGU.js → hosted-asset-materialization-Bk-plQF6.js} +2 -2
- package/dist/assets/{ibl-override-material-BlmCxFKq.js → ibl-override-material-BhbGwgS1.js} +1 -1
- package/dist/assets/{index-mjWQmGhM.js → index-0n9eSzwT.js} +1 -1
- package/dist/assets/index-B4bmKkgY.css +1 -0
- package/dist/assets/index-BLo2LE8C.js +3404 -0
- package/dist/assets/index-BWW4-DBH.js +1 -0
- package/dist/assets/index-CLcsjKUs.js +1 -0
- package/dist/assets/index-CU5YUq-x.js +134 -0
- package/dist/assets/{index-DUpHH6JR.js → index-Cb6o_Td_.js} +1 -1
- package/dist/assets/index-Ckxb31Yz.js +1500 -0
- package/dist/assets/index-CnpsJMao.js +1 -0
- package/dist/assets/index-Cr23XhNm.js +1 -0
- package/dist/assets/index-DO1rWQ_r.js +487 -0
- package/dist/assets/{index-BcCBqgM_.js → index-DUh02lTr.js} +1 -1
- package/dist/assets/index-DXEHfb0b.js +1 -0
- package/dist/assets/{index-V1R-e5Bd.js → index-wRCvCebM.js} +1 -1
- package/dist/assets/{inference-diagnostics-Dhmtfbq_.js → inference-diagnostics-YW0yJkKx.js} +1 -1
- package/dist/assets/{ingest-BbYMC2vQ.js → ingest-BlQnR7s3.js} +1 -1
- package/dist/assets/ingest-boot-viewport-uG9jQ1zm.js +1 -0
- package/dist/assets/ingest-siblings-DRQXSWax.js +1 -0
- package/dist/assets/{ingest-source-persistence-C_6Hiyra.js → ingest-source-persistence-DH6ioCOu.js} +1 -1
- package/dist/assets/{ingest.service-BTDnQfM1.js → ingest.service-GeaWMaZX.js} +1 -1
- package/dist/assets/{input-manager-DH_hGW6d.js → input-manager-Cxx3RJgG.js} +1 -1
- package/dist/assets/{input-router-BNQvtIqw.js → input-router-FzxO5ld6.js} +1 -1
- package/dist/assets/{inspect-BZfi3mmo.js → inspect-BRgDdtVk.js} +1 -1
- package/dist/assets/instances.command-CFOMPSj3.js +1 -0
- package/dist/assets/{instruments-CKR02Y8I.js → instruments-IKn-vvNb.js} +1 -1
- package/dist/assets/interior-Bo_lba15.exr +0 -0
- package/dist/assets/{json-history-resource-BbxllWfV.js → json-history-resource-r-9q_hxP.js} +1 -1
- package/dist/assets/{light-D-_wsKTq.js → light-CFAor97k.js} +1 -1
- package/dist/assets/light-camera-factory-D1sgz3YB.js +1 -0
- package/dist/assets/live-mixers-BRkRHd6g.js +1 -0
- package/dist/assets/{loader-CaF_I7Yt.js → loader-BbMsvIxP.js} +1 -1
- package/dist/assets/machine.document-CgmsOh-s.js +24 -0
- package/dist/assets/machines.finder-nxiCgQc2.js +1 -0
- package/dist/assets/matcap-texture-Dh65bX5V.js +1 -0
- package/dist/assets/{material-CpAdjDxn.js → material-D5kXEZWQ.js} +1 -1
- package/dist/assets/{material-factory-Bz6h__6g.js → material-factory-0Qb0VuZ5.js} +1 -1
- package/dist/assets/material-preview.view-DqNcpd_b.js +1 -0
- package/dist/assets/{mesh-B3WPtNKO.js → mesh-BKPgNTwh.js} +1 -1
- package/dist/assets/{mesh-shadow-CZnXrw_l.js → mesh-shadow-BDQP4mHs.js} +1 -1
- package/dist/assets/model-asset-sections.service-DWPLmkqa.js +1 -0
- package/dist/assets/model-inspection-Cxfg_Fei.js +1 -0
- package/dist/assets/model.layout-BpZE1W9V.js +1 -0
- package/dist/assets/{models.finder-G2jQgIRu.js → models.finder-DHW17ZEa.js} +1 -1
- package/dist/assets/module-mode-CRfHyIMS.js +2 -0
- package/dist/assets/mount-canvas-ingest-root-BZZ8M3Lu.js +2 -0
- package/dist/assets/mount-dom-ingest-root-D1GV6Jjt.js +2 -0
- package/dist/assets/{mount-game-6t9cKNo4.js → mount-game-F9e76auh.js} +1 -1
- package/dist/assets/mount-ingest-root-B5D-Lmmk.js +2 -0
- package/dist/assets/{mount-manifest-CGVxhmAw.js → mount-manifest-cYRhgHfo.js} +1 -1
- package/dist/assets/mount-three-ingest-root-BNnouaBn.js +1 -0
- package/dist/assets/{mounted-authoring-Dmg5xmhP.js → mounted-authoring-TIN5EnCb.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-DjP6RA9U.js → mounted-story-viewport-source-CAlEmE0_.js} +1 -1
- package/dist/assets/{native-debug-module-CWicoSGD.js → native-debug-module-j-MekcLS.js} +1 -1
- package/dist/assets/{navigation-CIiCx-SM.js → navigation-DmR1BDVo.js} +1 -1
- package/dist/assets/{navmesh.menu-CAKiH8PW.js → navmesh.menu-FhL1pGx1.js} +1 -1
- package/dist/assets/{navmesh.service-jgDWlgj1.js → navmesh.service-usyDeJlm.js} +1 -1
- package/dist/assets/{network.utility-CEu5nHf7.js → network.utility-BPh4hTmh.js} +1 -1
- package/dist/assets/night-CvV4Gybt.exr +0 -0
- package/dist/assets/{object3d-authoring-subject-CH5sI2oP.js → object3d-authoring-subject-CyE4rQ2A.js} +1 -1
- package/dist/assets/oid-transform-BOqL6YH6.js +2 -0
- package/dist/assets/{particles-Y626p22p.js → particles-C47L-dda.js} +1 -1
- package/dist/assets/particles-factory-CRqPLdS7.js +1 -0
- package/dist/assets/pixi-authoring-adapter-C5Ikqj5-.js +1 -0
- package/dist/assets/{pixi-live-write-target-DuWydlWb.js → pixi-live-write-target-OWBk79dp.js} +1 -1
- package/dist/assets/pixi-primitive-D5igywJ_.js +1 -0
- package/dist/assets/pixi-react-root-factory-9lZ0Yz-n.js +1 -0
- package/dist/assets/play-mode-DomOvQie.js +22 -0
- package/dist/assets/play.command-DoqjH-Pp.js +2 -0
- package/dist/assets/{playtest-BXIL1JEF.js → playtest-BnFenMBW.js} +1 -1
- package/dist/assets/{pose-guard-6Osb2cFu.js → pose-guard-Bb3gZOzk.js} +1 -1
- package/dist/assets/{product-DFhyARJj.js → product-CTDJoVo5.js} +1 -1
- package/dist/assets/{profiler.action-CaXJDp3t.js → profiler.action-C_OFGkDw.js} +1 -1
- package/dist/assets/{profiler.menu-BIMF6Bi4.js → profiler.menu-BJbnVoo4.js} +1 -1
- package/dist/assets/{profiler.utility-BExw9wBO.js → profiler.utility-qpfhuwRw.js} +1 -1
- package/dist/assets/project-authoring-session-BV-MM8Fl.js +2 -0
- package/dist/assets/{project-provenance-BoP3nrle.js → project-provenance-4ldz-EOG.js} +1 -1
- package/dist/assets/{properties-bone-constraints.inspector-ByT6p7S-.js → properties-bone-constraints.inspector-C-ByIdg1.js} +1 -1
- package/dist/assets/{properties-bone.inspector-z4qJwKO5.js → properties-bone.inspector-CXY0xCQB.js} +1 -1
- package/dist/assets/{properties-collection.inspector-D0_3ijWU.js → properties-collection.inspector-DIfkZAel.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-CESzjuls.js → properties-constraints.inspector-BaunL5nT.js} +1 -1
- package/dist/assets/{properties-data.inspector-hG8Wgyzb.js → properties-data.inspector-DQD-jfO2.js} +1 -1
- package/dist/assets/{properties-material.inspector-CzY0JCQ6.js → properties-material.inspector-A0HZ4SX6.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-3dDhwf7g.js → properties-modifiers.inspector-GUnVhVwZ.js} +1 -1
- package/dist/assets/{properties-object.inspector-CiarfxkT.js → properties-object.inspector-Chsfa4Xa.js} +1 -1
- package/dist/assets/{properties-output.inspector-DKJxmKSD.js → properties-output.inspector-U7ZmD0Me.js} +1 -1
- package/dist/assets/{properties-particles.inspector-CCEdYWGm.js → properties-particles.inspector-umkW-OlI.js} +1 -1
- package/dist/assets/{properties-physics.inspector-B2c0KUyA.js → properties-physics.inspector-CLVBlWwL.js} +1 -1
- package/dist/assets/{properties-render.inspector-Bcm0HLRW.js → properties-render.inspector-D0u9taKy.js} +1 -1
- package/dist/assets/{properties-scene.inspector-PIM_eTb_.js → properties-scene.inspector-JwGCZQAx.js} +1 -1
- package/dist/assets/{properties-texture.inspector-CgFlnyr8.js → properties-texture.inspector-B1vC28pw.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-DGjF_Aqo.js → properties-view-layer.inspector-BuUKyBFp.js} +1 -1
- package/dist/assets/{properties-world.inspector-CrMvaRvB.js → properties-world.inspector-VXUj4dT4.js} +1 -1
- package/dist/assets/r3f-design-session-qJ2v5SrB.js +2 -0
- package/dist/assets/r3f-physics-binding-C8OqNRG2.js +1 -0
- package/dist/assets/{r3f-root-factory-z9llD1OU.js → r3f-root-factory-DjGnbU4n.js} +1 -1
- package/dist/assets/r3f-source-authoring-adapter-CG9heazM.js +12 -0
- package/dist/assets/{rapier-physics-bridge-CMoeVo3Y.js → rapier-physics-bridge-B-EK7KYV.js} +1 -1
- package/dist/assets/react-inspector.service-DWeXDHJq.js +1 -0
- package/dist/assets/{react-root-CEz5NTck.js → react-root-DGLRLr-F.js} +1 -1
- package/dist/assets/react-story-board-CSqHY0Cg.js +1 -0
- package/dist/assets/{react-three-fiber.esm-CycrbDlA.js → react-three-fiber.esm-BxIoqVh1.js} +1 -1
- package/dist/assets/{react-three-rapier.esm-CEfKpvxT.js → react-three-rapier.esm-BYzLhdSV.js} +1 -1
- package/dist/assets/react-world-authoring-adapter-BMT9kLWU.js +1 -0
- package/dist/assets/{realm-services-CobQsq_X.js → realm-services-D25JHoqD.js} +1 -1
- package/dist/assets/{reflection-probe-Don-M3Fj.js → reflection-probe-CqXWlicu.js} +1 -1
- package/dist/assets/{reflection-probe-capture.inspector-CmFUoJCx.js → reflection-probe-capture.inspector-B7Qa30vB.js} +1 -1
- package/dist/assets/regions-DWeEBnE2.js +1 -0
- package/dist/assets/{register-render-vitals-BiZk29b2.js → register-render-vitals-BO7x64kR.js} +1 -1
- package/dist/assets/{registry-02YZjMNp.js → registry-DlTluc4x.js} +1 -1
- package/dist/assets/{render-audio-control-vMRlePWb.js → render-audio-control-DCa_bOBI.js} +1 -1
- package/dist/assets/{render-batch-system-0vq7p0VC.js → render-batch-system-CzCp9YKM.js} +1 -1
- package/dist/assets/{render-control-Df3yTiyr.js → render-control-BNQr1eNO.js} +1 -1
- package/dist/assets/{render-env-D2IV2x5k.js → render-env-emvlfeTG.js} +1 -1
- package/dist/assets/{render-features-CPQ_e568.js → render-features-COF7MSQ9.js} +1 -1
- package/dist/assets/{render-settings-Bw4W9SYF.js → render-settings-C_kIMq8Y.js} +1 -1
- package/dist/assets/{resolve-three-SZE_WWUM.js → resolve-three-C-nx-QdA.js} +13 -13
- package/dist/assets/{root-seam-contract-Z0VWX3Bk.js → root-seam-contract-C7GOxf5x.js} +1 -1
- package/dist/assets/{run-ticks-settled-C4ksViyA.js → run-ticks-settled-B0cTtmhQ.js} +1 -1
- package/dist/assets/{scene-capture-CGYF-Viw.js → scene-capture-CLOc7GXc.js} +1 -1
- package/dist/assets/{scene-capture-BQKzU0NT.js → scene-capture-D10Nxkvp.js} +1 -1
- package/dist/assets/scene-document.service-B7kAVTko.js +2 -0
- package/dist/assets/{scene-framing-Cat0GtyJ.js → scene-framing-50N7SKuX.js} +1 -1
- package/dist/assets/{scene-index-B6BZOHMk.js → scene-index-Bce459yu.js} +1 -1
- package/dist/assets/{scene-query-C7_N-TpI.js → scene-query-IUZhw6pA.js} +1 -1
- package/dist/assets/{schema-kl9-2B_J.js → schema-Iy-mbzll.js} +1 -1
- package/dist/assets/sculpt.layout-D-K5cLw6.js +1 -0
- package/dist/assets/{seeded-random-i3mtgBKZ.js → seeded-random-CN0scLZj.js} +1 -1
- package/dist/assets/{session-CZ5JPg-z.js → session-CsR0lApe.js} +24 -15
- package/dist/assets/{setup-audio-S8GQF91f.js → setup-audio-BJ18gvXZ.js} +1 -1
- package/dist/assets/setup-particles-B6H-GbAA.js +1 -0
- package/dist/assets/{setup-physics-BeZ7-LKD.js → setup-physics-GugbTT0J.js} +1 -1
- package/dist/assets/{setup-renderer-DVXaSGin.js → setup-renderer-wt_a-p8r.js} +20 -20
- package/dist/assets/shading.layout-CZZHKBer.js +1 -0
- package/dist/assets/{sim-clock-CLflx7kg.js → sim-clock-DEfbb_-P.js} +1 -1
- package/dist/assets/{soft-particle-depth-DGvfQDi1.js → soft-particle-depth-CKUS1j0Y.js} +1 -1
- package/dist/assets/source-object3d-authoring-adapter-CfHQLFAL.js +1 -0
- package/dist/assets/{source-persistence-backend-C-aR-B_Y.js → source-persistence-backend-_-JMEXxE.js} +1 -1
- package/dist/assets/{spark-renderer-lifecycle-ynWESJcv.js → spark-renderer-lifecycle-9mnMW3Z4.js} +1 -1
- package/dist/assets/{spark.module-4pXQoz5d.js → spark.module-CXth-y_a.js} +1 -1
- package/dist/assets/stage-keyboard-C0FdDLOQ.js +1 -0
- package/dist/assets/stage-overlay-set-CwhCzbOy.js +1 -0
- package/dist/assets/stage-presence-markers-DVMDKiB-.js +1 -0
- package/dist/assets/stage-transform-tools-B09Z7v0o.js +1 -0
- package/dist/assets/standard-viewport-dressing-GUUr6GuK.js +20 -0
- package/dist/assets/{state-watch.action-BOvQR2qt.js → state-watch.action-CgF8qoFC.js} +1 -1
- package/dist/assets/{state-watch.menu-CNLvDeeY.js → state-watch.menu-CIMncESW.js} +1 -1
- package/dist/assets/{state-watch.utility-Bg1tTTQU.js → state-watch.utility-zTHkUALC.js} +1 -1
- package/dist/assets/static-batch-advisor-DqfXWRUq.js +1 -0
- package/dist/assets/story-capture-COQgezzl.js +1 -0
- package/dist/assets/story-documents-DQ0KORmd.js +3 -0
- package/dist/assets/story-documents.service-DOSaqPqv.js +1 -0
- package/dist/assets/story-documents.service-Gb7oUkbg.js +1 -0
- package/dist/assets/{story-media-presence-BHzk2IV5.js → story-media-presence-nW3zJqKv.js} +1 -1
- package/dist/assets/story-pixi-preview-COPTEsHo.js +1 -0
- package/dist/assets/story-presentation-CxADj5oz.js +1 -0
- package/dist/assets/{story-three-preview-BHEDZzcl.js → story-three-preview-C9W__8Or.js} +2 -2
- package/dist/assets/{structural-ids-Dc-7rEwi.js → structural-ids-CblajJQK.js} +1 -1
- package/dist/assets/studio-CysTBGIb.exr +0 -0
- package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
- package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
- package/dist/assets/{surface-state-DaxyruCj.js → surface-state-BAUJu6GY.js} +1 -1
- package/dist/assets/{system-runner-DkOjxEBt.js → system-runner-D_DtVrer.js} +1 -1
- package/dist/assets/team-playtest.service--79O6xkx.js +1 -0
- package/dist/assets/{three-CDSueJyJ.js → three-DSsr_Lvp.js} +1 -1
- package/dist/assets/{three-authoring-adapter-CmSQ3Vui.js → three-authoring-adapter-Yqsank46.js} +1 -1
- package/dist/assets/three-authoring.service-BDos-bRt.js +2 -0
- package/dist/assets/{three-ingest-runtime-QzDYk6tU.js → three-ingest-runtime-DWijtqQ8.js} +1 -1
- package/dist/assets/{three-projection-core-BmKMZ-nf.js → three-projection-core-kubBTx0s.js} +1 -1
- package/dist/assets/three-story-model-BraQFA9h.js +1 -0
- package/dist/assets/three-viewport-presentation-BL7Uc2i6.js +1 -0
- package/dist/assets/{three.module-D396a9Mn.js → three.module-IFn-4i31.js} +1 -1
- package/dist/assets/three.quarks.esm-CRKGjKAH.js +1039 -0
- package/dist/assets/transform-mode-request-Cu7ewbtr.js +1 -0
- package/dist/assets/{transform-writer-BhBBTx33.js → transform-writer-DXxrI4t7.js} +1 -1
- package/dist/assets/transport.header-CeND8Vzh.js +1 -0
- package/dist/assets/{trigger-volume-BNK2XzPL.js → trigger-volume-BCVRS3NM.js} +1 -1
- package/dist/assets/{tuples-CIQ4Bn1U.js → tuples-DKDGrN1t.js} +1 -1
- package/dist/assets/ui-board-document-DD2CAEAo.js +2 -0
- package/dist/assets/unity.style-vCmLw4gI.js +1 -0
- package/dist/assets/unity.view-DIn2S6Do.js +1 -0
- package/dist/assets/unreal.style-BQn-HhOX.js +1 -0
- package/dist/assets/unreal.view-adNBETZK.js +1 -0
- package/dist/assets/user-data-CZqsJDk-.js +1 -0
- package/dist/assets/{utility-view-state-BHypxA33.js → utility-view-state-DYJY8V8O.js} +1 -1
- package/dist/assets/uv-editing.layout-A8RA-cbM.js +1 -0
- package/dist/assets/{vgai-shared-three-Bc5PvpLM.js → vgai-shared-three-D_RAEumG.js} +1 -1
- package/dist/assets/{viewport-root-presentation-CWsE56K6.js → viewport-root-presentation-C9M98VNM.js} +1 -1
- package/dist/assets/{viewport-shading-BuA88e_A.js → viewport-shading-BzcvgJhK.js} +1 -1
- package/dist/assets/viewport-shading-boundary-CBvvzS-p.js +84 -0
- package/dist/assets/{viewport-surface-status-B3om4Kcf.js → viewport-surface-status-BFmnWp7z.js} +1 -1
- package/dist/assets/voxel-surface-ROWYug7H.js +1 -0
- package/dist/assets/webgl-frame-capture-CRKX73E9.js +1 -0
- package/dist/assets/webworkerAll-CehoCtFb.js +1 -0
- package/dist/assets/{worker-UrMcrc5_.js → worker-B7zhIsFh.js} +2 -2
- package/dist/assets/world-documents-DErHq15h.js +1 -0
- package/dist/assets/world-root-stage-binding-BIymcQ4K.js +1 -0
- package/dist/assets/{world-state-BWG-IcOd.js → world-state-ZGDGY_Xl.js} +1 -1
- package/dist/assets/{writer-B-KovzkA.js → writer-BPbm4_my.js} +5 -5
- package/dist/assets/xstate-animation-binding-Cvd4JbEY.js +1 -0
- package/dist/assets/{xstate-animation-meta-Q3u9zh_m.js → xstate-animation-meta-B3OZR8Q2.js} +1 -1
- package/dist/vgai-shared-three.json +1 -1
- package/dist-node/cli.js +317 -73
- package/dist-node/create.js +59 -19
- package/package.json +16 -13
- package/src/index.ts +6 -0
- package/template/.agents/skills/vgai-3d-models/SKILL.md +3 -3
- package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +4 -9
- package/template/.claude/skills/vgai-3d-models/SKILL.md +3 -3
- package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +4 -9
- package/template/.github/skills/vgai-3d-models/SKILL.md +3 -3
- package/template/.github/skills/vgai-threejs-authoring/SKILL.md +4 -9
- package/template/AGENTS.md +1 -1
- package/template/check-idioms.ts +4 -5
- package/template/package.json +9 -9
- package/template/tsconfig.json +1 -0
- package/template/vgai.adapter.ts +1 -0
- package/template-dotfiles/gitignore +2 -0
- package/workbench/src/media/game-cover.css +1 -1
- package/catalog/project-source/src/lib/bake/mesh-slice.ts +0 -157
- package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +0 -1
- package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +0 -1
- package/dist/assets/ColladaLoader-aVOPIsCh.js +0 -3
- package/dist/assets/EXRLoader-Cdans_oJ.js +0 -1
- package/dist/assets/EffectComposer-DQxfsXBZ.js +0 -1
- package/dist/assets/EntityModelDocument-Ccvw66N9.js +0 -1
- package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +0 -1
- package/dist/assets/FBXLoader-B4MoUtAn.js +0 -1
- package/dist/assets/Fbo-Dz-Soul3.js +0 -1
- package/dist/assets/GLTFExporter-HgrCle4L.js +0 -1
- package/dist/assets/Gltf-UHVWKz65.js +0 -2
- package/dist/assets/HDRLoader-THU88oVD.js +0 -5
- package/dist/assets/ImageViewer-Tn7s_MnW.js +0 -1
- package/dist/assets/InspectorObjectPreview-CVejvLRg.js +0 -1
- package/dist/assets/JsonAssetDocument-C7VGcLhu.js +0 -3
- package/dist/assets/MeshBVH-BiDHDcu-.js +0 -1
- package/dist/assets/ModelAssetDocument-F5GACirk.js +0 -1
- package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +0 -2
- package/dist/assets/Object3DPreview-DL8oi7Xs.js +0 -2
- package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +0 -2
- package/dist/assets/PlayBar-BR-Vg3Jb.js +0 -2
- package/dist/assets/RGBELoader-BgBcQv8j.js +0 -1
- package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +0 -1
- package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +0 -1
- package/dist/assets/STLLoader-Dyv3lsxY.js +0 -1
- package/dist/assets/SimplifyModifier-C8ayvRzd.js +0 -1
- package/dist/assets/SourceAssetViewer-2SWQoUut.js +0 -12
- package/dist/assets/StageHost-BN-IoTef.js +0 -2
- package/dist/assets/ThreeBoardDocument-CVncZyIq.js +0 -2
- package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +0 -1
- package/dist/assets/asset-budget.action-DCzzcuTh.js +0 -1
- package/dist/assets/asset-budget.document-BWU8wnVW.js +0 -1
- package/dist/assets/asset-budget.menu-BGZpT_31.js +0 -1
- package/dist/assets/autoplay.service-BZBGNSvt.js +0 -1
- package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +0 -2
- package/dist/assets/blender-properties-tab-C5CyPydi.js +0 -3
- package/dist/assets/blender-runtime-host-BpBwGv7r.js +0 -4
- package/dist/assets/blender-runtime.document-lIYhhPtv.js +0 -8
- package/dist/assets/blender.command-BtJeWk-A.js +0 -1
- package/dist/assets/body-marks-h_xDxiDE.js +0 -1
- package/dist/assets/bridge.command-o5gDNEwa.js +0 -3
- package/dist/assets/browserAll-DeWblVez.js +0 -1
- package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +0 -2
- package/dist/assets/component-board.service-DidCyM4O.js +0 -2
- package/dist/assets/component-verbs.service-Bv9jId3q.js +0 -1
- package/dist/assets/constraints.inspector-B9U9Yj-u.js +0 -1
- package/dist/assets/coverage.service-VTX5Mcsx.js +0 -3
- package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +0 -2
- package/dist/assets/design-time-layers-wYgOTgni.js +0 -1
- package/dist/assets/design-time-mount.service-BzY21e1F.js +0 -2
- package/dist/assets/design-time-react-mount-DM9WLrF2.js +0 -1
- package/dist/assets/edit-mode-authoring-B47TfLqu.js +0 -1
- package/dist/assets/editor-api-BoJIcyZG.js +0 -1
- package/dist/assets/fflate.module-DPuTF8aG.js +0 -6
- package/dist/assets/fork-menu-BoVyw2Wu.js +0 -1
- package/dist/assets/game-document.service-DbRfx2V0.js +0 -1
- package/dist/assets/game-eval.command-D-7Dxbj_.js +0 -2
- package/dist/assets/gameplay-replay-e5umMlXv.js +0 -1
- package/dist/assets/gameplay.command-DxcVYX6F.js +0 -1
- package/dist/assets/generation.service-CDIgObuw.js +0 -1
- package/dist/assets/index-96FBF1Oj.js +0 -1
- package/dist/assets/index-BAWkB0dv.js +0 -1
- package/dist/assets/index-BDnS2b6S.js +0 -1
- package/dist/assets/index-BjTCPEQ7.js +0 -134
- package/dist/assets/index-CVCb_ImQ.js +0 -1
- package/dist/assets/index-CZd9o7Lu.js +0 -1
- package/dist/assets/index-D2fNXpHa.css +0 -1
- package/dist/assets/index-GIL7oGEO.js +0 -4894
- package/dist/assets/index-OrYXPk3Z.js +0 -487
- package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +0 -1
- package/dist/assets/ingest-siblings-Bop2kqVl.js +0 -1
- package/dist/assets/instances.command-D6UkZNO8.js +0 -1
- package/dist/assets/light-camera-factory-CWbbe9gI.js +0 -1
- package/dist/assets/live-behaviors-Bxq49Maz.js +0 -1
- package/dist/assets/matcap-texture-CVfalpWT.js +0 -1
- package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +0 -1
- package/dist/assets/model.layout-BJUEQYUI.js +0 -1
- package/dist/assets/module-mode-DVBLT9d-.js +0 -2
- package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +0 -2
- package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +0 -2
- package/dist/assets/mount-ingest-root-glv2SSWf.js +0 -2
- package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +0 -1
- package/dist/assets/particles-factory-DnLOHXT8.js +0 -1
- package/dist/assets/pasteboard-materialize-BqSS4QzV.js +0 -20
- package/dist/assets/pasteboard.action-DU3UHtJG.js +0 -2
- package/dist/assets/pixi-authoring-adapter-CjibysC3.js +0 -1
- package/dist/assets/pixi-primitive-DlWbUPN9.js +0 -1
- package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +0 -1
- package/dist/assets/play-mode-BFU2PCkG.js +0 -22
- package/dist/assets/play.command-BpqqLqkq.js +0 -2
- package/dist/assets/project-authoring-session-Bnt6icLr.js +0 -2
- package/dist/assets/r3f-design-session-D-4yyDO9.js +0 -2
- package/dist/assets/r3f-physics-binding-BBo8oma9.js +0 -1
- package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +0 -13
- package/dist/assets/react-inspector.service-B_neRnSK.js +0 -1
- package/dist/assets/react-story-board-BDDwiE2H.js +0 -1
- package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +0 -1
- package/dist/assets/runtime-inspection-l2iFQSsg.js +0 -1
- package/dist/assets/scene-document.service-qkDjUrlP.js +0 -2
- package/dist/assets/sculpt.layout-zJF55yCR.js +0 -1
- package/dist/assets/setup-particles-GCXlnkj_.js +0 -1
- package/dist/assets/shading.layout-DULYZV6M.js +0 -1
- package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +0 -1
- package/dist/assets/stage-invalidation-DBg3C3Ta.js +0 -1
- package/dist/assets/stage-keyboard-n-5kKH-m.js +0 -1
- package/dist/assets/stage-overlay-set-B9zp2sLB.js +0 -1
- package/dist/assets/stage-presence-markers-DiGI6A45.js +0 -1
- package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +0 -7
- package/dist/assets/static-batch-advisor-B13QEH7d.js +0 -1
- package/dist/assets/story-capture-_gC8dXV-.js +0 -1
- package/dist/assets/story-documents--TDLaPeL.js +0 -3
- package/dist/assets/story-documents.service-BiS_YbNQ.js +0 -1
- package/dist/assets/story-documents.service-CxOPYJ2j.js +0 -1
- package/dist/assets/story-pixi-preview-BUrOJZXS.js +0 -1
- package/dist/assets/story-presentation-j2AVN-mK.js +0 -1
- package/dist/assets/team-playtest.service-DqOinFVA.js +0 -1
- package/dist/assets/three-authoring.service-iuHLwtf1.js +0 -2
- package/dist/assets/three-viewport-presentation-QBQpSdMh.js +0 -1
- package/dist/assets/three.quarks.esm-B1C61jGo.js +0 -1039
- package/dist/assets/transport.header-B-6HQlU2.js +0 -1
- package/dist/assets/ui-board-document-Bwtt--xp.js +0 -2
- package/dist/assets/use-live-actor-state-DErbWQWF.js +0 -1
- package/dist/assets/user-data-BB2Of6Ht.js +0 -1
- package/dist/assets/uv-editing.layout-BEKHxmHw.js +0 -1
- package/dist/assets/viewport-shading-boundary-B_-_gABg.js +0 -82
- package/dist/assets/voxel-surface-DtcsSWRL.js +0 -1
- package/dist/assets/webgl-frame-capture-FlF9zQmW.js +0 -1
- package/dist/assets/webworkerAll-CM2o_dnz.js +0 -1
- package/dist/assets/world-documents-147tiFZe.js +0 -1
- package/dist/assets/world-root-stage-binding-vwTrtBz6.js +0 -1
- package/dist/assets/xstate-animation-binding-Brd0NST6.js +0 -1
- package/dist/assets/xstate-behavior.action-B8UluFBK.js +0 -1
- package/dist/assets/xstate-behavior.document-CKAsE45I.js +0 -1
- package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +0 -1
- package/dist/assets/xstate-behavior.menu-BXbPICIh.js +0 -1
- package/dist/assets/xstate-inspection-BsZv8LS9.js +0 -1
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{lv as mt,lw as yt,q as k,aO as bt,lx as Mt}from"./index-GIL7oGEO.js";import{C as vt,a4 as Ue,K as Ve,af as xt,cb as kt,j as Et,ch as ye,w as St,a as Bt,aF as We,V as ce,s as Ct,ar as At,x as jt,cr as It,b_ as Ge}from"./three.module-D396a9Mn.js";import{f as Tt}from"./clip-planes-CnAI6DZn.js";class _t{#r;#s;#n=new Map;#k=0;#c=null;#a=null;#u=!1;#y=!1;#b=t=>{!this.#y&&this.#n.size===0||(t.preventDefault(),t.returnValue="")};#d=new Map;#p=new Map;#h=null;#w=0;#M=0;#v=0;#i=null;#x=null;#g=null;constructor(t){this.#s=t,this.#r=new Worker(new URL("/assets/worker-UrMcrc5_.js",import.meta.url),{type:"module",name:"blender"}),globalThis.addEventListener?.("beforeunload",this.#b),this.#r.onmessage=n=>void this.#E(n.data),this.#r.onerror=n=>{const r=n.error,a=n.filename?` at ${n.filename}:${n.lineno}:${n.colno}`:"",o=r?.stack??r?.message??n.message,s=new Error(`Blender worker failed: ${o||"the worker script did not load"}${a}`);console.error(s.message);for(const i of[...this.#n.keys()])this.#f(i);for(const i of this.#n.values())i.reject(s);this.#n.clear()}}#o=null;#l=null;get project(){return this.#o}get document(){return this.#l}start(t,n){return this.#o!==null&&this.#o!==t?Promise.reject(new Error(`The Blender session is bound to ${this.#o}, not ${t}`)):n!==void 0&&this.#l!==null&&this.#l!==n?Promise.reject(new Error(`Blender resource conflict: the session holds ${this.#l}; cannot open ${n}`)):(this.#o=t,this.#l??=n??"models/model.blend",this.#c??=this.#e({op:"start",project:t,...n===void 0?{}:{document:n}}),this.#c)}#t(){return this.#o===null?Promise.reject(new Error("The Blender session has not been started with a project (blender-start)")):this.start(this.#o)}async execute(t,n=!0,r="Blender Python"){return await this.#t(),await this.#e({op:"execute",code:t,history:n,label:r})}async historyGesture(t){await this.#t(),await this.#e({op:t})}async historyStep(t,n){return await this.#t(),(await this.#e({op:"history-step",token:t,direction:n})).moved}async sceneInfo(){return await this.#t(),await this.#e({op:"scene-info"})}async objectInfo(t){return await this.#t(),await this.#e({op:"object-info",name:t})}async rna(t,n){return await this.#t(),await this.#e({op:"rna",path:t,...n===void 0?{}:{names:n}})}async rnaContext(t,n){return await this.#t(),await this.#e({op:"rna-context",...t===void 0?{}:{object:t},...n===void 0?{}:{collection:n}})}async rnaSet(t,n,r,a,o=!0){return await this.#t(),await this.#e({op:"rna-set",history:o,path:t,property:n,value:r,...a===void 0?{}:{index:a}})}async outliner(t){return await this.#t(),await this.#e({op:"outliner",...t===void 0?{}:{selected:t}})}async nodeTree(t){return await this.#t(),await this.#e({op:"node-tree",...t?.path===void 0?{}:{path:t.path},...t?.material===void 0?{}:{material:t.material}})}async uvLayout(t){return await this.#t(),await this.#e({op:"uv-layout",...t?.object===void 0?{}:{object:t.object},...t?.uvLayer===void 0?{}:{uvLayer:t.uvLayer}})}async rig(t){return await this.#t(),await this.#e({op:"rig",...t?.object===void 0?{}:{object:t.object}})}async actionClip(t){return await this.#t(),await this.#e({op:"action-clip",...t?.object===void 0?{}:{object:t.object},...t?.bake===void 0?{}:{bake:t.bake}})}async outlinerSet(t,n,r){return await this.#t(),await this.#e({op:"outliner-set",path:t,column:n,value:r})}async present(){await this.#t(),await this.#e({op:"present"})}async screenshotView(t){return await this.#t(),await this.#e({op:"screenshot-view",maxSize:t})}async readFile(t){return await this.#t(),await this.#e({op:"read-file",path:t})}async writeFile(t,n){await this.#t(),await this.#e({op:"write-file",path:t,bytes:n})}async listFiles(t){return await this.#t(),await this.#e({op:"list-files",path:t})}get presented(){return this.#x}stop(){return this.#u?Promise.resolve():this.#a?this.#a:(this.#a=(async()=>{this.#c&&(await this.#c,await this.#e({op:"flush-document"},!0)),this.terminate()})().catch(t=>{throw this.#a=null,t}),this.#a)}terminate(){if(this.#u)return;this.#u=!0,globalThis.removeEventListener?.("beforeunload",this.#b);const t=this.#m("terminating worker");try{this.#r.terminate()}finally{t()}const n=new Error("The Blender session was terminated");for(const r of[...this.#n.keys()])this.#f(r);for(const r of this.#n.values())r.reject(n);this.#n.clear()}metrics(t=performance.now()){let n=null,r=this.#w,a=this.#M,o=this.#v;for(const s of this.#d.values()){const i=t-s;(n===null||i>n)&&(n=i),i>r&&(r=i),i>=5e3&&(a+=1),i>=3e4&&(o+=1)}return{inFlightMs:n===null?null:Math.round(n),lastCallMs:this.#h===null?null:Math.round(this.#h),maxCallMs:this.#h===null&&n===null?null:Math.round(r),callsOver5s:a,callsOver30s:o,lastCallWindow:this.#i,wasmMemoryMB:this.#g===null?null:Math.round(this.#g/1048576)}}#f(t){this.#p.get(t)?.(),this.#p.delete(t);const n=this.#d.get(t);if(n===void 0)return;this.#d.delete(t);const r=performance.now()-n;this.#h=r,r>this.#w&&(this.#w=r),r>=5e3&&(this.#M+=1),r>=3e4&&(this.#v+=1),this.#i!==null&&this.#i.start===n&&(this.#i={start:n,end:n+r})}#e(t,n=!1){if(this.#u||this.#a&&!n)return Promise.reject(new Error("The Blender session is stopping or terminated"));const r=++this.#k;return new Promise((a,o)=>{this.#n.set(r,{resolve:a,reject:o});const s=performance.now();this.#d.set(r,s),this.#i={start:s,end:null},this.#p.set(r,this.#m(`waiting for worker ${t.op}`));try{this.#r.postMessage({...t,id:r})}catch(i){this.#n.delete(r),this.#f(r),o(i instanceof Error?i:new Error(String(i)))}})}#m(t){try{const n=this.#s.work?.(t);return()=>{try{n?.()}catch{}}}catch{return()=>{}}}async#E(t){if("op"in t){if(t.op==="document-dirty"){this.#y=t.dirty;return}if(t.op==="history"){this.#s.history?.(t.entries);return}if(t.op==="log"){this.#s.log?.(t.level,t.text);return}if(t.op==="memory"){this.#g=t.bytes;return}const r=t.frame;typeof r?.session=="string"&&typeof r.revision=="number"&&(this.#x={session:r.session,revision:r.revision});const a=this.#m("presenting worker frame");try{const o=await this.#s.present(t.frame,t.description,t.capture);this.#r.postMessage({op:"present-result",id:t.id,...o?.capture===void 0?{}:{capture:o.capture},...o!=null&&"held"in o?{held:o.held}:{}})}catch(o){this.#r.postMessage({op:"present-result",id:t.id,error:o instanceof Error?o.message:String(o)})}finally{a()}return}const n=this.#n.get(t.id);n&&(this.#n.delete(t.id),this.#f(t.id),"error"in t?n.reject(new Error(t.error)):n.resolve(t.result))}}const Ft="/assets/agx-base-srgb-BjWZJgrZ.lut",Lt="/assets/agx-look-medium-high-contrast-D5F_ob1L.lut",Rt="/assets/agx-look-punchy-dxsnycNs.lut",$t="/assets/filmic-srgb-Ct35FIH6.lut",_=new Float64Array(12),ze=[0,0,0],O=new Float64Array(3),q=new Float64Array(3),F=new Int8Array([1,0,0,1,1,0,0,1,2,1,0,0,1,0,1,0,2,1,0,0,1,1,0,1,2,0,1,0,0,1,0,1,1,2,1,0,0,1,0,0,1,1,1,2,0,0,1,0,1,1,0,1,0,2]);function Ot(e,t,n){return e>t?t>n?0:e>n?1:2:n>t?3:n>e?4:5}function Je(e,t,n,r,a){const o=t*t,s=Math.min(1,Math.max(0,n))*(t-1),i=Math.min(1,Math.max(0,r))*(t-1),c=Math.min(1,Math.max(0,a))*(t-1),f=Math.min(Math.floor(s),t-2),l=Math.min(Math.floor(i),t-2),h=Math.min(Math.floor(c),t-2),b=s-f,M=i-l,A=c-h,w=(d,p,S,B)=>{const y=(f+p+(l+S)*t+(h+B)*o)*3;_[d]=e[y]/65535,_[d+1]=e[y+1]/65535,_[d+2]=e[y+2]/65535};w(0,0,0,0),w(9,1,1,1),O[0]=b,O[1]=M,O[2]=A;const g=Ot(b,M,A)*9;w(3,F[g],F[g+1],F[g+2]),w(6,F[g+3],F[g+4],F[g+5]);const v=O[F[g+6]],u=O[F[g+7]],m=O[F[g+8]];for(let d=0;d<3;d++){const p=_[d];ze[d]=p+v*(_[3+d]-p)+u*(_[6+d]-_[3+d])+m*(_[9+d]-_[6+d])}return ze}function H(e){const t=e&32768?-1:1,n=e>>10&31,r=e&1023;return n===0?t*2**-24*r:n===31?r?Number.NaN:t*Number.POSITIVE_INFINITY:t*2**(n-15)*(1+r/1024)}function Ie(e,t,n,r){const a=new Uint8ClampedArray(t*4);for(let o=0;o<t;o++){const s=o*4,i=H(e[s+3]),c=i===0?n:n/i;q[0]=H(e[s])*c,q[1]=H(e[s+1])*c,q[2]=H(e[s+2])*c;const f=r(q);a[s]=Math.round(f[0]*255),a[s+1]=Math.round(f[1]*255),a[s+2]=Math.round(f[2]*255),a[s+3]=Math.round(Math.min(1,Math.max(0,i))*255)}return a}function Nt(e){return new URL(Object.assign({"./agx-base-srgb.lut":Ft,"./agx-look-medium-high-contrast.lut":Lt,"./agx-look-punchy.lut":Rt,"./filmic-srgb.lut":$t})[`./${e.replace(/\.lut$/,"")}.lut`],import.meta.url)}const Dt=57,R=-12.47393,Qe=12.5260688117,Pt=[[.4123908,.3575843,.1804808],[.212639,.7151687,.0721923],[.0193308,.1191948,.9505322]],Ut=[[1.5250528,-.3159135,-.1226583],[-.5091526,1.3333274,.1382844],[.0957153,.0508974,.7879558]];function qe(e,t,n){const r=t[0],a=t[1],o=t[2];n[0]=e[0][0]*r+e[0][1]*a+e[0][2]*o,n[1]=e[1][0]*r+e[1][1]*a+e[1][2]*o,n[2]=e[2][0]*r+e[2][1]*a+e[2][2]*o}const X=new Float64Array(3),He=new Float64Array(3),Z=[0,0,0];function ue(e){const t=Math.min(1,Math.max(0,e));return t<=.0031308?12.92*t:1.055*t**(1/2.4)-.055}function et(e,t,n,r){return Je(e,Dt,t,n,r)}function Vt(e,t){qe(Pt,t,He),qe(Ut,He,X);const n=Qe-R,r=et(e,(Math.log2(Math.max(X[0],1e-10))-R)/n,(Math.log2(Math.max(X[1],1e-10))-R)/n,(Math.log2(Math.max(X[2],1e-10))-R)/n);return Z[0]=ue(Math.max(0,r[0])**2.4),Z[1]=ue(Math.max(0,r[1])**2.4),Z[2]=ue(Math.max(0,r[2])**2.4),Z}const Wt={"AgX - Medium High Contrast":"agx-look-medium-high-contrast.lut","AgX - Punchy":"agx-look-punchy.lut"};function Gt(e,t){const n=Qe-R;return et(e,(Math.log2(Math.max(t[0],1e-10))-R)/n,(Math.log2(Math.max(t[1],1e-10))-R)/n,(Math.log2(Math.max(t[2],1e-10))-R)/n)}function zt(e,t,n,r={}){const a=r.exposure??1,o=r.composedLook===!0?Gt:Vt;return Ie(t,n,a,s=>o(e,s))}const tt=33,be=tt**3*3,Me=4096,de=-12.473931188,he=25;function fe(e,t){const n=Math.min(1,Math.max(0,t))*(Me-1),r=Math.min(Math.floor(n),Me-2),a=n-r;return((1-a)*e[be+r]+a*e[be+r+1])/65535}const K=[0,0,0];function qt(e,t){const n=Je(e,tt,(Math.log2(Math.max(t[0],1e-10))-de)/he,(Math.log2(Math.max(t[1],1e-10))-de)/he,(Math.log2(Math.max(t[2],1e-10))-de)/he);return K[0]=fe(e,n[0]/.66),K[1]=fe(e,n[1]/.66),K[2]=fe(e,n[2]/.66),K}function Ht(e,t,n,r){if(e.length!==be+Me)throw new Error("Invalid Blender Filmic display table");return Ie(t,n,r,a=>qt(e,a))}const W=2.4,$=.055,nt=$/(W-1),Xt=1/(W/(1+$)*((nt+$)/(1+$))**(W-1)),Zt=((nt+$)/(1+$))**W;function pe(e){return e>0?e<Zt?e*Xt:(1+$)*e**(1/W)-$:0}const Y=[0,0,0];function Kt(e){return Y[0]=pe(e[0]),Y[1]=pe(e[1]),Y[2]=pe(e[2]),Y}function Yt(e,t,n){return Ie(e,t,n,Kt)}function rt(e,t,n,r){if(!Number.isFinite(n.width)||!Number.isFinite(n.height)||n.width<1||n.height<1)throw new Error("Scene capture requires finite positive dimensions");const a=Math.min(2048,Math.round(n.width)),o=Math.min(2048,Math.round(n.height)),s=r?1:2,i=a*s,c=o*s,f=mt(),l=f.renderer,h={target:l.getRenderTarget(),toneMapping:l.toneMapping,exposure:l.toneMappingExposure,colorSpace:l.outputColorSpace,shadows:l.shadowMap.enabled,shadowType:l.shadowMap.type,clearColor:l.getClearColor(new vt),clearAlpha:l.getClearAlpha(),background:e.background};let b,M,A=!1;try{b=new Ue(i,c,{type:Ve}),n.effect&&(b.depthTexture=new xt(i,c)),l.shadowMap.enabled=!0,l.shadowMap.type=kt,l.outputColorSpace=Et,l.toneMapping=n.toneMapping??ye,l.toneMappingExposure=n.exposure??1,l.setClearColor(0,n.transparent?0:1),n.transparent&&(e.background=null),l.setRenderTarget(b),l.clear(),l.render(e,t);const w=n.effect?.render(l,b,e,t)??b;if(w.texture.type!==Ve||w.width!==i||w.height!==c)throw new Error("Scene capture effect must return a same-size half-float target");if(r){const y=new Uint16Array(i*c*4);return l.readRenderTargetPixels(w,0,0,i,c,y),A=!0,{pixels:y,width:a,height:o}}M=new Ue(i,c),yt(n.transparent===!0).render(l,M,w,0,!1);const g=new Uint8Array(i*c*4);l.readRenderTargetPixels(M,0,0,i,c,g);const v=document.createElement("canvas");v.width=i,v.height=c;const u=v.getContext("2d");if(!u)throw new Error("Scene capture could not create an image canvas");const m=u.createImageData(i,c),d=i*4;for(let y=0;y<c;y++)m.data.set(g.subarray((c-1-y)*d,(c-y)*d),y*d);u.putImageData(m,0,0);const p=document.createElement("canvas");p.width=a,p.height=o;const S=p.getContext("2d");if(!S)throw new Error("Scene capture could not create an output canvas");S.drawImage(v,0,0,a,o);const B=p.toDataURL("image/png");return A=!0,B}finally{e.background=h.background,l.setRenderTarget(h.target),l.toneMapping=h.toneMapping,l.toneMappingExposure=h.exposure,l.outputColorSpace=h.colorSpace,l.shadowMap.enabled=h.shadows,l.shadowMap.type=h.shadowType,l.setClearColor(h.clearColor,h.clearAlpha),M?.dispose(),b?.dispose(),f.release({discard:!A})}}function Jt(e,t,n){return rt(e,t,n,!0)}function Qt(e,t,n){return rt(e,t,n,!1)}const en=e=>typeof e=="object"&&e!==null&&typeof e.subscribeFrames=="function"&&typeof e.objectForBlenderName=="function"&&typeof e.blenderObjectName=="function"&&typeof e.blenderSelection=="function"&&typeof e.setStageMode=="function";function Te(){const e=k().documents.context(lt());return en(e)?e:null}function tn(){return Te()?.blenderSelection()??{selected:[],active:null}}const nn={tree:null,byId:new Map,parentOf:new Map,error:null,loading:!1};let ve=nn,ot=0;const xe=new Set;let P=null,re=null,_e="",U=null;function rn(e){const t=new Map,n=new Map,r=(a,o)=>{t.set(a.id,a),n.set(a.id,o);for(const s of a.children)r(s,a.id)};for(const a of e?.rows??[])r(a,null);return{byId:t,parentOf:n}}function Q(e){ve={...ve,...e},ot+=1;for(const t of[...xe])t()}function Sn(e){return xe.add(e),()=>{xe.delete(e)}}function Bn(){return ot}function Cn(){return ve}function Fe(e){U!==e&&(U=e,setTimeout(()=>{U===e&&(U=null,at(e===""?[]:e.split("\0")))},0))}let we=0,ke=Promise.resolve();function at(e){const t=on(e);return ke=t,t}async function on(e){const t=e.join("\0"),n=++we;re=t,_e=t,Q({loading:!0});try{const r=await wn(e);if(n!==we)return;Te()?.setStageMode(r?.mode??null),Q({tree:r,...rn(r),loading:!1,error:null})}catch(r){if(n!==we)return;Q({loading:!1,error:st(r)})}}function an(){re=null,Fe(_e);for(const e of[...Ee])e()}const Ee=new Set;function An(e){return Le(),Ee.add(e),()=>{Ee.delete(e)}}let J=!1,ge=null;function Le(){const e=Te();if(P!==null&&ge===e)return;P!==null&&(P(),P=null,ge=null);const t=e;if(t!==null){P=t.subscribeFrames(an),ge=t;return}J||(J=!0,k().documents.waitForContext(lt()).then(()=>{J=!1,Le()}).catch(()=>{J=!1}))}function jn(e){if(!I())return;Le();const t=[...e].sort().join("\0");re!==t&&Fe(t)}async function sn(e){if(!I())return;U=null;let t=at([...e].sort());for(;;){if(await t,ke===t)return;t=ke}}async function In(e,t,n){try{return await ut(e,t,n),re=null,Fe(_e),!0}catch(r){return Q({error:st(r)}),!1}}function st(e){return e instanceof Error?e.message:String(e)}const ln={transform:{cx:0,cy:0,zoom:1},looked:null,refusal:null,size:{w:0,h:0},framedAt:0,drawn:[]};let Se=ln,Re=0;const ne=new Set;let it=0;function me(){return Se}function Tn(){return Re}function _n(e){return ne.add(e),()=>{ne.delete(e)}}function V(e){Se={...Se,...e},Re+=1;for(const t of[...ne])t()}function cn(){it+=1,Re+=1;for(const e of[...ne])e()}function Fn(){return it}function N(e){V({refusal:e})}const Xe=new Map;function un(e){let t=Xe.get(e);return t||(t=fetch(Nt(e)).then(async n=>{if(!n.ok)throw new Error(`Blender display table ${e}: ${n.status} ${n.statusText}`);return new Uint16Array(await n.arrayBuffer())}),Xe.set(e,t)),t}function dn(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return new Uint16Array(n.buffer,n.byteOffset,n.byteLength>>1)}async function Ze(e,t){const n=t.look??"None",r=t.toneMapping==="filmic",a=t.toneMapping==="none";if(!a&&t.toneMapping!=="agx"&&!r)throw new Error("Blender's Khronos PBR Neutral view transform has no scene-linear implementation in the browser, so it cannot resolve a composited or scene-referred frame (implemented: Standard, AgX, Filmic)");const o=a?null:r?"filmic-srgb.lut":n==="None"?"agx-base-srgb.lut":Wt[n];if(o===void 0)throw new Error(`Blender display transform has no table for look ${n}`);const s=o?await un(o):null,i=t.linearInput,c=i?{pixels:dn(i.base64),width:i.width,height:i.height}:e;if(!c)throw new Error("Blender display transform requires a linear capture");const{pixels:f,width:l,height:h}=c,b=a?Yt(f,l*h,t.exposure):r?Ht(s,f,l*h,t.exposure):zt(s,f,l*h,{exposure:t.exposure,composedLook:n!=="None"}),M=document.createElement("canvas");M.width=l,M.height=h;const A=M.getContext("2d");if(!A)throw new Error("Blender display transform could not create its image canvas");const w=A.createImageData(l,h),g=l*4;for(let m=0;m<h;m++){const d=(h-1-m)*g;w.data.set(b.subarray(d,d+g),m*g)}A.putImageData(w,0,0);const v=M.toDataURL("image/png"),u={base64:v.slice(v.indexOf(",")+1),mimeType:"image/png"};if(t.linear===!0){const m=new Uint8Array(f.buffer,f.byteOffset,f.byteLength);let d="";for(let p=0;p<m.length;p+=32768)d+=String.fromCharCode(...m.subarray(p,p+32768));u.linearBase64=btoa(d),u.linearWidth=l,u.linearHeight=h}return u}const hn="document:blender:runtime";let j=null,Ke=0;function Ln(e){const t=++Ke;return j=e,D(),()=>{Ke===t&&(j=null,D())}}function Be(){const e=x?.document,t=k().documents.activeId(),n=t?.startsWith("document:model:")?t.slice(15):j?.blend;return!n||!e||n===e?null:`Blender is editing ${e}; ${n} is not open. Return to ${e} before editing.`}function L(){return j?.documentId??hn}function lt(){return L()}async function Rn(e,t){const n=k();if(!n.session.open())throw new Error("Opening a model requires an open project session.");const r=n.projectLocalState.projectRootPath();if(r===null)throw new Error("Opening a model requires a project path.");if(j!==e||n.documents.activeId()!==e.documentId)return!1;const a=E(),o=a.start(r,e.blend);return t(),await o,j!==e?!1:(await a.present(),j===e)}function I(){return x?.project!=null&&Be()===null}let ct=0;const Ce=new Set;function $n(){return ct}function On(e){return Ce.add(e),()=>{Ce.delete(e)}}function D(){ct+=1;for(const e of[...Ce])e()}async function Nn(e,t){return I()?E().rna(e,t):null}async function Dn(e,t){return I()?E().rnaContext(e,t):null}async function fn(e,t,n,r,a=!0){if(!I())return null;const o=await E().rnaSet(e,t,n,r,a);return D(),o}async function pn(e,t=!0,n="Blender Python"){const r=await E().execute(e,t,n);D();const a=/^Error executing code:/.exec(r);return{text:r,executed:a===null,result:a===null?r.replace(/^Code executed successfully: ?/,""):"",error:a===null?null:r.replace(/^Error executing code: ?/,"")}}function Pn(){E().historyGesture("history-begin").catch(e=>k().console.error(`Could not begin Blender undo gesture: ${String(e)}`,"blender-history"))}async function Un(){await E().historyGesture("history-end")}async function wn(e){return I()?E().outliner(e):null}async function Vn(e){return I()?E().nodeTree(e):null}async function Wn(e){return I()?E().uvLayout(e):null}async function Gn(e){return I()?E().rig(e):null}async function zn(e){return I()?E().actionClip(e):null}async function ut(e,t,n){if(!I())return null;const r=await E().outlinerSet(e,t,n);return D(),r}const gn={view:"blender-node-view",title:"Node Editor",verbs:[["state",void 0],["look",void 0],["view-all","Node Editor: Frame All"],["zoom",void 0],["pan",void 0],["move",void 0],["link",void 0],["set-value",void 0],["use-nodes",void 0],["collapse-panel",void 0]].map(([e,t])=>({id:e,...t?{title:t}:{},run:n=>dt({...n,action:e})}))};function dt(e){const t=typeof e.action=="string"?e.action:"state";switch(t){case"state":break;case"look":V({looked:typeof e.node=="string"?e.node:null,refusal:null});break;case"view-all":cn(),V({refusal:null});break;case"zoom":{const n=typeof e.zoom=="number"?e.zoom:1;V({transform:{...me().transform,zoom:n},refusal:null});break}case"pan":{const n=me().transform;V({transform:{...n,cx:typeof e.cx=="number"?e.cx:n.cx,cy:typeof e.cy=="number"?e.cy:n.cy},refusal:null});break}case"move":N(`Moving "${String(e.node??"a node")}" writes Node.location — editing parity is not the program.`);break;case"link":N("Dragging between sockets would make a link — editing parity is not the program.");break;case"set-value":N(`Changing "${String(e.socket??"a socket")}" writes the socket's default_value — editing parity is not the program.`);break;case"use-nodes":N("Use Nodes writes Material.use_nodes — editing parity is not the program.");break;case"collapse-panel":N(`Collapsing "${String(e.panel??"a panel")}" writes the panel's is_collapsed — editing parity is not the program.`);break;default:N(`blender-node-view: no action "${t}" — state, look, view-all, zoom, pan, and the refusals move, link, set-value, use-nodes, collapse-panel.`)}return me()}let x=null;const ee=new Set;function ht(){ee.size&&k().history.invalidate([...ee]),ee.clear()}let Ae=null,Ye=!1;function te(e){try{const t=k().session.beginWork(`Blender: ${e}`);return()=>{try{t()}catch{}}}catch{return()=>{}}}function je(){const e=te("invalidating history and releasing runtime");try{ht(),Ae?.abort(),Ae=null,x?.terminate(),x=null,ft=null}finally{e()}}function mn(){Ye||(Ye=!0,k().session.onBeforeClose(async()=>{await x?.stop(),je()}),k().session.onEnded(je))}let ft=null;const yn=e=>typeof e=="object"&&e!==null&&typeof e.applyFrame=="function"&&typeof e.snapshot=="function"&&typeof e.captureSnapshot=="function"&&typeof e.recordPresentation=="function"&&typeof e.recordPhotograph=="function";async function bn(){const{documents:e}=k(),t=Date.now()+15e3;let n=L();for(;;){n=L();const r=await e.waitForContext(n,Math.max(0,Math.min(250,t-Date.now())));if(yn(r))return r;if(Date.now()>=t)break}throw new Error(`The Blender Model document is not open, or the open one is not a Model this engine can present to (it must answer applyFrame, captureSnapshot, recordPresentation and recordPhotograph): nothing published a presentable view as ${n} within 15 s (bound model: ${j?.documentId??"none"}). Open the Model document first (\`vgai blender-mcp\` opens it before its first call).`)}function E(){const e=Be();if(e)throw new Error(e);if(x!==null)return x;mn();const t=new AbortController;Ae=t;let n=!1;x=new _t({work:te,history:a=>{const o=x;if(!o)throw new Error("Blender history arrived before its runtime");for(const s of a){if("reset"in s){ht();continue}if(!s.resource)throw new Error("A Blender edit has no document resource");ee.add(s.resource);const i=async c=>{if(x!==o)throw new Error("This Blender history belongs to a closed worker");const f=await o.historyStep(s.id,c);return D(),await sn(tn().selected),f};k().history.record({id:s.id,label:s.label,resources:[s.resource],document:L(),undo:()=>i("undo"),redo:()=>i("redo")})}},present:async(a,o,s)=>{const i=Be();if(i)throw new Error(i);const c=L(),f=te("waiting for Model presenter");let l;try{l=await bn()}finally{f()}if(t.signal.throwIfAborted(),L()!==c)throw new Error("Blender document changed before its frame could be presented");const h=te("applying frame to Model"),b=(()=>{try{return l.applyFrame(a)}finally{h()}})(),M=typeof b=="object"&&b!==null&&"held"in b,A=M?b.held:null,w=B=>({...B===void 0?{}:{capture:B},...M?{held:A}:{}});if(l.recordPresentation(o),!s||(ft=s,!s.render))return w(void 0);const g=l.snapshot(),v=()=>{if(t.signal.throwIfAborted(),L()!==c||l.snapshot()!==g)throw new Error("Blender capture document or source revision changed before completion")};if(s.render.linearInput){const B=await Ze(null,s.render);return v(),w(B)}const{render:u,position:m,target:d,up:p}=s;if(!m||!d||!p)throw new Error("A Blender render capture must carry the scene camera position, target and up");if(n)throw new Error("A Blender render capture is already in progress");const S=l.captureSnapshot();n=!0,t.signal.addEventListener("abort",S.dispose,{once:!0});try{v();const B=new St;B.add(S.root),B.updateMatrixWorld(!0);const y=S.root.matrixWorld,oe=new Bt().copy(y).invert(),pt=new We().setFromMatrix4(y),wt=new We().setFromMatrix4(oe),ae=new ce(m[0],m[1],m[2]).applyMatrix4(y),$e=new ce(d[0],d[1],d[2]).applyMatrix4(y),Oe=new ce(p[0],p[1],p[2]).applyMatrix3(pt),se=Math.min(2048,Math.round(u.width))/Math.min(2048,Math.round(u.height)),Ne=bt(S.root).getBoundingSphere(new Ct),G=Tt(ae.distanceTo(Ne.center),Ne.radius);let T;if(u.orthographic){const z=u.fov/2;T=new At(-z*se,z*se,z,-z,G.near,G.far)}else T=new jt(u.fov,se,G.near,G.far);T.up.copy(Oe),T.position.copy(ae),T.lookAt($e),T.updateMatrixWorld(!0);const ie={position:ae.clone().applyMatrix4(oe).toArray(),target:$e.clone().applyMatrix4(oe).toArray(),up:Oe.clone().applyMatrix3(wt).toArray()};l.recordPhotograph({sent:{position:m,target:d,up:p},photographed:ie,render:{width:u.width,height:u.height,fov:u.fov,orthographic:u.orthographic}});const gt={none:ye,agx:Ge,neutral:It,filmic:ye};await S.prepare(T),v();const De={effect:S.effect,width:u.width,height:u.height,transparent:u.transparent===!0,toneMapping:gt[u.toneMapping]??Ge,exposure:u.exposure},Pe=u.toneMapping==="agx"||u.toneMapping==="filmic"||u.linear===!0?await Ze(Jt(B,T,De),u):null;if(v(),Pe)return w({...Pe,camera:ie});const le=Qt(B,T,De);if(!le)throw new Error("Blender render could not capture its image");return w({base64:le.slice(le.indexOf(",")+1),mimeType:"image/png",camera:ie})}finally{n=!1,t.signal.removeEventListener("abort",S.dispose),S.dispose()}},log:(a,o)=>(a==="error"?console.error:console.log)(`[blender] ${o}`)});const r=x;return k().session.reportWorkerCallMeter(()=>r.metrics()),x}const Mn="models/model.blend",C=(e,t)=>{const n=e[t];if(typeof n!="string")throw new Error(`${String(e.type)} requires a string "${t}"`);return n};async function vn(e){const t=k().projectLocalState.projectRootPath();if(t===null)return{};let n;try{n=await e.execute(`import bpy
|
|
2
|
-
print(bpy.data.filepath)
|
|
3
|
-
`,!1)}catch{return{}}if(/^Error executing code:/m.test(n))return{};const r=n.replace(/^Code executed successfully:/,"").split(`
|
|
4
|
-
`).map(o=>o.trim()).filter(o=>o.startsWith("/")).pop()??"";if(r==="")return{};const a=t.endsWith("/")?t:`${t}/`;return r.startsWith(a)?{document:r.slice(a.length)}:{}}async function qn(e){const t=k();if(e.type==="blender-status")return{ok:!0,data:{started:x?.project!=null,document:t.documents.context(L())!==void 0}};if(!t.session.open())return{ok:!1,error:`${e.type} needs an open project session; this editor page has none.`};try{const n=e.type==="blender-start"?C(e,"project"):null;let r=typeof e.document=="string"?e.document:void 0;if((e.type==="blender-stop"||e.type==="blender-start"&&e.fresh===!0)&&(await x?.stop(),je(),e.type==="blender-stop"))return{ok:!0,data:{stopped:!0}};if(e.type==="blender-start"&&!t.documents.context(L())){const o=await t.project.documentTable(),s=o.entries.filter(l=>l.kind==="model"),i=r!==void 0?s.find(l=>l.source?.path===r):s.find(l=>l.id===(j?.entryId??o.default))??(s.length===1?s[0]:void 0);if(!i)return{ok:!1,error:r!==void 0?`No declared Model document names ${r}.`:`Choose a Model document before starting Blender. Available: ${s.map(l=>l.id).join(", ")||"(none)"}.`};const c=i.id;if(r=i.source?.path,!await t.workspace.open({kind:"document",id:c}))return{ok:!1,error:`blender-start could not open the Blender Model document ${c}: nothing in this editor opens that document (the Model document ships with @volter/editor-blender).`}}const a=E();switch(e.type){case"blender-start":{const o=r!==void 0?r:j?.blend??Mn;return{ok:!0,data:{...await a.start(n,o)}}}case"blender-execute":return{ok:!0,data:{result:(await pn(C(e,"code"))).text}};case"blender-scene-info":return{ok:!0,data:{result:await a.sceneInfo()}};case"blender-object-info":return{ok:!0,data:{result:await a.objectInfo(C(e,"name"))}};case"blender-rna":{const o=typeof e.names=="number"?e.names:void 0;return{ok:!0,data:{result:await a.rna(C(e,"path"),o)}}}case"blender-rna-context":{const o=typeof e.object=="string"?e.object:void 0,s=typeof e.collection=="string"?e.collection:void 0;return{ok:!0,data:{result:await a.rnaContext(o,s)}}}case"blender-rna-set":{const o=typeof e.index=="number"?e.index:void 0;return{ok:!0,data:{result:await fn(C(e,"path"),C(e,"property"),e.value,o)}}}case"blender-outliner":{const o=Array.isArray(e.selected)?e.selected.filter(s=>typeof s=="string"):void 0;return{ok:!0,data:{result:await a.outliner(o)}}}case"blender-node-tree":return{ok:!0,data:{result:await a.nodeTree({...typeof e.path=="string"?{path:e.path}:{},...typeof e.material=="string"?{material:e.material}:{}})}};case"blender-uv-layout":return{ok:!0,data:{result:await a.uvLayout({...typeof e.object=="string"?{object:e.object}:{},...typeof e.uvLayer=="string"?{uvLayer:e.uvLayer}:{}})}};case"blender-rig":return{ok:!0,data:{result:await a.rig({...typeof e.object=="string"?{object:e.object}:{}})}};case"blender-action-clip":return{ok:!0,data:{result:await a.actionClip({...typeof e.object=="string"?{object:e.object}:{},...typeof e.bake=="boolean"?{bake:e.bake}:{}})}};case"blender-node-view":{const o=typeof e.action=="string"?e.action:"state";return{ok:!0,data:{result:gn.verbs.some(i=>i.id===o)?Mt("blender-node-view",o,e):dt(e)}}}case"blender-outliner-set":return{ok:!0,data:{result:await ut(C(e,"path"),C(e,"column"),e.value!==!1)}};case"blender-screenshot-view":{const o=typeof e.maxSize=="number"?e.maxSize:1e3,s={kind:"document",id:j?.entryId??"blender:runtime"};return{ok:!0,data:{...await a.screenshotView(o),document:s}}}case"blender-read-file":{const o=await a.readFile(C(e,"path")),s=C(e,"transferId"),i=await fetch(`/__editor/blender-file?id=${encodeURIComponent(s)}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([o])});return i.ok?{ok:!0,data:{bytes:o.length}}:{ok:!1,error:`Transfer ${s} was refused: ${i.status}`}}case"blender-write-file":{const o=atob(C(e,"base64")),s=Uint8Array.from(o,i=>i.charCodeAt(0));return await a.writeFile(C(e,"path"),s),{ok:!0,data:{written:s.length}}}case"blender-list-files":{const o=await a.listFiles(C(e,"path")),s=a.presented;return{ok:!0,data:{entries:o,...s?{session:s.session,revision:s.revision}:{},...await vn(a)}}}}return{ok:!1,error:`Unknown Blender command ${e.type}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}export{Ln as A,Rn as B,lt as C,I as D,D as E,Dn as F,Nn as G,gn as N,_n as a,$n as b,V as c,me as d,Vn as e,Fn as f,zn as g,qn as h,Gn as i,Wn as j,Sn as k,sn as l,tn as m,Tn as n,An as o,Bn as p,Te as q,N as r,On as s,fn as t,Un as u,Pn as v,In as w,jn as x,Cn as y,pn as z};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{c as de,a as te}from"./blender-runtime-skin-DyQ9B6CR.js";import{q as V,fp as ue,ab as C,fq as M,fr as z,fs as be,aa as pe}from"./index-GIL7oGEO.js";import{r as O}from"./index-nmcBqr7Y.js";import{o as fe,k as $,l as D,m as me,p as X,q as J,t as re,u as ge,v as he,w as le,x as ye,y as P,z as ae,A as je,B as _e}from"./blender-runtime-host-BpBwGv7r.js";import"./index-CtzuWnCS.js";import{b_ as ve}from"./three.module-D396a9Mn.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./LineSegments2-CsOpKSiM.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./clip-planes-CnAI6DZn.js";function ke(l){return`blender-${l.toLowerCase().replace(/_/g,"-")}`}function I(l){return l?.type==="TSE_SOME_ID"&&l.struct==="Object"&&l.object!==void 0}function ne(l){if(l.struct)return l.struct}function oe(l,a){return{id:l.id,label:l.name,role:"entity",kind:ke(l.icon),...ne(l)?{typeLabel:ne(l)}:{},parentId:a,childIds:l.children.map(o=>o.id),defaultExpanded:l.expanded}}const we={transform:!0,inspectorFields:!1,persist:!0},B=new Set;function Oe(l){for(const a of B)if(a.documentId===l)return a;return B.size===1?[...B][0]:null}const Ee=()=>({position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]});function Se(l,a){l.updateWorldMatrix(!0,!1);const o=a.matrixWorld.clone().invert().multiply(l.matrixWorld).elements;return[[o[0],o[1],o[2],o[3]],[o[4],o[5],o[6],o[7]],[o[8],o[9],o[10],o[11]],[o[12],o[13],o[14],o[15]]]}function T(l,a){return`${l} needs a file, and this editor has no door to ask for one: the host's file door (\`EditorHost.files\`, \`@volter/editor-sdk/host\`) reads and writes project-relative paths and has no file-picker member, so there is nothing to open the workbench's own dialog through. Blender's row opens a file browser; run without one, the engine answers "${a}".`}const Ce=[{kind:"mesh.plane",label:"Plane",group:"Mesh",call:"mesh.primitive_plane_add"},{kind:"mesh.cube",label:"Cube",group:"Mesh",call:"mesh.primitive_cube_add"},{kind:"mesh.circle",label:"Circle",group:"Mesh",call:"mesh.primitive_circle_add"},{kind:"mesh.uv-sphere",label:"UV Sphere",group:"Mesh",call:"mesh.primitive_uv_sphere_add"},{kind:"mesh.ico-sphere",label:"Ico Sphere",group:"Mesh",call:"mesh.primitive_ico_sphere_add"},{kind:"mesh.cylinder",label:"Cylinder",group:"Mesh",call:"mesh.primitive_cylinder_add"},{kind:"mesh.cone",label:"Cone",group:"Mesh",call:"mesh.primitive_cone_add"},{kind:"mesh.torus",label:"Torus",group:"Mesh",call:"mesh.primitive_torus_add"},{kind:"mesh.grid",label:"Grid",group:"Mesh",call:"mesh.primitive_grid_add",separatorBefore:!0},{kind:"mesh.monkey",label:"Monkey",group:"Mesh",call:"mesh.primitive_monkey_add"},{kind:"curve.bezier",label:"Bézier",group:"Curve",call:"curve.primitive_bezier_curve_add"},{kind:"curve.bezier-circle",label:"Circle",group:"Curve",call:"curve.primitive_bezier_circle_add"},{kind:"curve.nurbs-curve",label:"Nurbs Curve",group:"Curve",call:"curve.primitive_nurbs_curve_add",separatorBefore:!0},{kind:"curve.nurbs-circle",label:"Nurbs Circle",group:"Curve",call:"curve.primitive_nurbs_circle_add"},{kind:"curve.path",label:"Path",group:"Curve",call:"curve.primitive_nurbs_path_add"},{kind:"curve.empty-hair",label:"Empty Hair",group:"Curve",call:"object.curves_empty_hair_add",separatorBefore:!0},{kind:"curve.fur",label:"Fur",group:"Curve",call:"object.quick_fur",placesAtOrigin:!1},{kind:"surface.nurbs-curve",label:"Nurbs Curve",group:"Surface",call:"surface.primitive_nurbs_surface_curve_add"},{kind:"surface.nurbs-circle",label:"Nurbs Circle",group:"Surface",call:"surface.primitive_nurbs_surface_circle_add"},{kind:"surface.nurbs-surface",label:"Nurbs Surface",group:"Surface",call:"surface.primitive_nurbs_surface_surface_add"},{kind:"surface.nurbs-cylinder",label:"Nurbs Cylinder",group:"Surface",call:"surface.primitive_nurbs_surface_cylinder_add"},{kind:"surface.nurbs-sphere",label:"Nurbs Sphere",group:"Surface",call:"surface.primitive_nurbs_surface_sphere_add"},{kind:"surface.nurbs-torus",label:"Nurbs Torus",group:"Surface",call:"surface.primitive_nurbs_surface_torus_add"},{kind:"metaball.ball",label:"Ball",group:"Metaball",call:"object.metaball_add, type='BALL'"},{kind:"metaball.capsule",label:"Capsule",group:"Metaball",call:"object.metaball_add, type='CAPSULE'"},{kind:"metaball.plane",label:"Plane",group:"Metaball",call:"object.metaball_add, type='PLANE'"},{kind:"metaball.ellipsoid",label:"Ellipsoid",group:"Metaball",call:"object.metaball_add, type='ELLIPSOID'"},{kind:"metaball.cube",label:"Cube",group:"Metaball",call:"object.metaball_add, type='CUBE'"},{kind:"text",label:"Text",group:null,call:"object.text_add"},{kind:"point-cloud",label:"Point Cloud",group:null,call:"object.pointcloud_random_add"},{kind:"volume.import",label:"Import OpenVDB...",group:"Volume",call:"object.volume_import",refusal:`${T("Importing an OpenVDB volume","CANCELLED, with nothing created")} This build also has no OpenVDB at all (\`bpy.app.build_options.openvdb\` is False), so a file would not be read even with a picker.`},{kind:"volume.empty",label:"Empty",group:"Volume",call:"object.volume_add"},{kind:"grease-pencil.blank",label:"Blank",group:"Grease Pencil",call:"object.grease_pencil_add, type='EMPTY'"},{kind:"grease-pencil.stroke",label:"Stroke",group:"Grease Pencil",call:"object.grease_pencil_add, type='STROKE'"},{kind:"grease-pencil.monkey",label:"Monkey",group:"Grease Pencil",call:"object.grease_pencil_add, type='MONKEY'"},{kind:"grease-pencil.lineart-scene",label:"Scene Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_SCENE'",separatorBefore:!0},{kind:"grease-pencil.lineart-collection",label:"Collection Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_COLLECTION'"},{kind:"grease-pencil.lineart-object",label:"Object Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_OBJECT'"},{kind:"armature",label:"Armature",group:null,call:"object.armature_add"},{kind:"lattice.lattice",label:"Lattice",group:"Lattice",call:"object.add, type='LATTICE'"},{kind:"lattice.deform-selected",label:"Lattice Deform Selected",group:"Lattice",call:"object.lattice_add_to_selected"},{kind:"empty.plain-axes",label:"Plain Axes",group:"Empty",call:"object.empty_add, type='PLAIN_AXES'"},{kind:"empty.arrows",label:"Arrows",group:"Empty",call:"object.empty_add, type='ARROWS'"},{kind:"empty.single-arrow",label:"Single Arrow",group:"Empty",call:"object.empty_add, type='SINGLE_ARROW'"},{kind:"empty.circle",label:"Circle",group:"Empty",call:"object.empty_add, type='CIRCLE'"},{kind:"empty.cube",label:"Cube",group:"Empty",call:"object.empty_add, type='CUBE'"},{kind:"empty.sphere",label:"Sphere",group:"Empty",call:"object.empty_add, type='SPHERE'"},{kind:"empty.cone",label:"Cone",group:"Empty",call:"object.empty_add, type='CONE'"},{kind:"image.reference",label:"Reference...",group:"Image",call:"object.empty_image_add, background=False",refusal:T("A reference image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.background",label:"Background...",group:"Image",call:"object.empty_image_add, background=True",refusal:T("A background image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.mesh-plane",label:"Mesh Plane...",group:"Image",call:"image.import_as_mesh_planes",placesAtOrigin:!1,refusal:T("An image as a mesh plane","CANCELLED, with nothing created")},{kind:"image.empty-image",label:"Empty Image",group:"Image",call:"object.empty_add, type='IMAGE'"},{kind:"light.point",label:"Point",group:"Light",call:"object.light_add, type='POINT'"},{kind:"light.sun",label:"Sun",group:"Light",call:"object.light_add, type='SUN'"},{kind:"light.spot",label:"Spot",group:"Light",call:"object.light_add, type='SPOT'"},{kind:"light.area",label:"Area",group:"Light",call:"object.light_add, type='AREA'"},{kind:"light-probe.sphere",label:"Sphere",group:"Light Probe",call:"object.lightprobe_add, type='SPHERE'"},{kind:"light-probe.plane",label:"Plane",group:"Light Probe",call:"object.lightprobe_add, type='PLANE'"},{kind:"light-probe.volume",label:"Volume",group:"Light Probe",call:"object.lightprobe_add, type='VOLUME'"},{kind:"camera",label:"Camera",group:null,call:"object.camera_add"},{kind:"speaker",label:"Speaker",group:null,call:"object.speaker_add"},{kind:"force-field.force",label:"Force",group:"Force Field",call:"object.effector_add, type='FORCE'"},{kind:"force-field.wind",label:"Wind",group:"Force Field",call:"object.effector_add, type='WIND'"},{kind:"force-field.vortex",label:"Vortex",group:"Force Field",call:"object.effector_add, type='VORTEX'"},{kind:"force-field.magnetic",label:"Magnetic",group:"Force Field",call:"object.effector_add, type='MAGNET'"},{kind:"force-field.harmonic",label:"Harmonic",group:"Force Field",call:"object.effector_add, type='HARMONIC'"},{kind:"force-field.charge",label:"Charge",group:"Force Field",call:"object.effector_add, type='CHARGE'"},{kind:"force-field.lennard-jones",label:"Lennard-Jones",group:"Force Field",call:"object.effector_add, type='LENNARDJ'"},{kind:"force-field.texture",label:"Texture",group:"Force Field",call:"object.effector_add, type='TEXTURE'"},{kind:"force-field.curve-guide",label:"Curve Guide",group:"Force Field",call:"object.effector_add, type='GUIDE'"},{kind:"force-field.boid",label:"Boid",group:"Force Field",call:"object.effector_add, type='BOID'"},{kind:"force-field.turbulence",label:"Turbulence",group:"Force Field",call:"object.effector_add, type='TURBULENCE'"},{kind:"force-field.drag",label:"Drag",group:"Force Field",call:"object.effector_add, type='DRAG'"},{kind:"force-field.fluid-flow",label:"Fluid Flow",group:"Force Field",call:"object.effector_add, type='FLUID'"}],xe="collection-instance:";function Ie(){const l=new Map;for(const a of P().byId.values()){if(a.type!=="TSE_LAYER_COLLECTION")continue;const o=a.data;o===void 0||!o.startsWith("bpy.data.collections[")||l.has(a.name)||l.set(a.name,{kind:`${xe}${a.name}`,label:a.name,group:"Collection Instance",call:`object.collection_instance_add, collection=${F(a.name)}`})}return[...l.values()]}function G(){return[...Ce,...Ie()]}function Ne(l){const[a,...o]=l.call.split(", "),s=l.placesAtOrigin===!1?o:[...o,"location=(0, 0, 0)"];return`bpy.ops.${a}(${s.join(", ")})`}function F(l){return JSON.stringify(l)}async function L(l,a="Blender Python"){const o=["before = {o.name for o in bpy.data.objects}",l,"made = [o.name for o in bpy.data.objects if o.name not in before]",'print("\\n".join(made))'].join(`
|
|
2
|
-
`),s=await ae(o,!0,a);return s.error!==null?{made:[],error:s.error}:{made:s.result.split(`
|
|
3
|
-
`).map(_=>_.trim()).filter(_=>_.length>0),error:null}}async function Fe(l,a){const o=[`_sel = {${l.map(F).join(", ")}}`,"_vl = bpy.context.view_layer","for _o in _vl.objects:"," _o.select_set(_o.name in _sel)",a===null?"_vl.objects.active = None":`_vl.objects.active = bpy.data.objects.get(${F(a)})`].join(`
|
|
4
|
-
`),s=await ae(o,!1);s.error!==null&&V().console.error(`Blender refused the selection write: ${s.error}`,"blender-outliner")}async function Y(l,a){if(l.length===0)return{destination:"Nothing is selected, so there was nothing to run it on.",persisted:!1};const o=[`targets = [bpy.data.objects[n] for n in [${l.map(F).join(", ")}]]`,"with bpy.context.temp_override(selected_objects=targets, selected_editable_objects=targets, active_object=targets[0], object=targets[0]):",` ${a}`].join(`
|
|
5
|
-
`),{error:s}=await L(o);return s!==null?{destination:s,persisted:!1}:(await D(l),{destination:`Blender — ${a}; the session saves the .blend`,persisted:!0})}const Ae={source:"document",label:"blender",detail:"These rows are Blender's own View Layer tree, read from the engine through RNA. Editing the model is a bpy call; the eye and render columns write the engine directly."},Le="This collection is excluded from the view layer (LayerCollection.exclude), so its viewport visibility is not what is hiding it. Clear the Exclude checkbox on this row first.",Re=({defaultAdapter:l})=>{const a=new Set;let o=[],s=null;const j=new Map,_=new Map,E=()=>{for(const t of[...a])t()},d=()=>P().byId,g=t=>{const e=d().get(t),r=J();return e===void 0||r===null?null:e.type==="TSE_VIEW_COLLECTION_BASE"?r.root:e.object===void 0?null:r.objectForBlenderName(e.object)},p=t=>{const e=J();if(e===null)return null;for(const r of d().values())if(I(r)&&e.objectForBlenderName(r.object)===t)return r.id;return null},h=t=>{for(const e of d().values())if(I(e)&&e.object===t)return e.id;return null},m=t=>{if(d().has(t))return t;const e=l.hierarchy.object3D?.(t)??null;return e===null?null:p(e)},f=t=>{const e=m(t);return e===null?null:g(e)},S=t=>{const e=f(t);return e===null?null:l.hierarchy.idForObject3D?.(e)??null},x={roots:()=>(ye(A()),(P().tree?.rows??[]).map(e=>oe(e,null))),node:t=>{const e=P(),r=e.byId.has(t)?t:m(t),i=r===null?void 0:e.byId.get(r);return i===void 0?null:oe(i,e.parentOf.get(i.id)??null)},object3D:t=>f(t),idForObject3D:t=>p(t)};function A(){const t=d(),e=new Set;for(const r of o){const i=t.get(r)?.object;i!==void 0&&e.add(i)}return[...e]}const N=()=>{const t=[];for(const e of o){const r=f(e),i=r===null?null:l.hierarchy.idForObject3D?.(r);i&&t.push(i)}l.selection?.set(t,{intent:"exact"}),E()},n=()=>{const t=me(),e=`${X()}\0${t.active??""}\0${[...t.selected].sort().join("")}`;if(e===s)return;s=e;const r=t.selected.filter(b=>b!==t.active);t.active!==null&&r.push(t.active);const i=r.map(h).filter(b=>b!==null);i.length===o.length&&i.every((b,y)=>b===o[y])||(o=i,N())},c={get:()=>[...o],set:t=>{o=t.map(m).filter(b=>b!==null),N();const e=d(),r=[],i=[];for(const b of o){const y=e.get(b),v=y?.object;v===void 0?i.push(y?.name??b):r.includes(v)||r.push(v)}i.length>0&&V().console.warn(`${i.join(", ")} ${i.length===1?"is":"are"} not an object, so Blender's object selection does not carry ${i.length===1?"it":"them"}. Selecting a collection sets the ACTIVE COLLECTION in Blender, which is its own gesture and not in this editor yet.`,"blender-outliner"),Fe(r,r.length===0?null:r[r.length-1])}},k=t=>d().get(t)?.restrict,W={properties:t=>{const e=k(t);if(e===void 0)return[];const r=d().get(t),i=[{path:"name",label:"Name",type:"string",readonly:!I(r)}];return e.hide!==void 0&&i.push({path:"visible",label:"Show in Viewport",type:"boolean"}),e.render!==void 0&&i.push({path:"renderVisible",label:"Show in Renders",type:"boolean"}),e.exclude!==void 0&&i.push({path:"exclude",label:"Exclude from View Layer",type:"boolean"}),i},get:(t,e)=>{const r=d().get(t);if(r!==void 0){if(e==="name")return r.name;if(e==="visible")return r.restrict?.hide===void 0?void 0:!r.restrict.hide;if(e==="renderVisible")return r.restrict?.render===void 0?void 0:!r.restrict.render;if(e==="exclude")return r.restrict?.exclude}},editability:(t,e)=>{const r=d().get(t);return r===void 0?{writable:!1}:e==="name"?I(r)?{writable:!0}:{writable:!1,reason:`Renaming a ${r.struct??r.type} is not in this Outliner yet — only an object row renames here. Rename it with bpy.`}:r.notInCollection?{writable:!1,reason:"This row is a child drawn under its parent although it is not in that collection, and Blender's Outliner draws it no restriction columns."}:e==="visible"&&r.restrict?.exclude===!0?{writable:!1,reason:Le}:{writable:!0}},set:async(t,e,r)=>{const i=d().get(t);if(i===void 0)return;if(e==="name"){if(!I(i))return;const y=String(r);if(y===i.name||y.length===0)return;await re(`bpy.data.objects[${F(i.object)}]`,"name",y),await D([y]);const v=h(y);v!==null&&c.set([v]);return}if(e==="exclude"){await le(i.path,"exclude",r===!0);return}const b=e==="visible"?"hide":e==="renderVisible"?"render":null;b!==null&&await le(i.path,b,r===!1)}},ie={get:t=>{const e=S(t);return(e===null?void 0:l.transforms?.get(e))??Ee()},editability:t=>{const e=m(t),r=e===null?void 0:d().get(e);return I(r)&&g(r.id)!==null?{writable:!0}:{writable:!1,reason:`Only an object has a transform; this row is a ${r?.struct??r?.type??"row"}.`}},beginEdit:t=>{const e=f(t);e!==null&&!j.has(e)&&(j.set(e,e.matrixWorld.clone()),_.set(t,e),he())},apply:(t,e)=>{const r=f(t);r!==null&&(r.position.fromArray(e.position),r.quaternion.fromArray(e.rotation),r.scale.fromArray(e.scale),r.updateMatrix(),r.updateMatrixWorld(!0))},endEdit:async t=>{const e=_.get(t)??f(t);_.delete(t);const r=J();if(e===null)return;const i=j.get(e);j.delete(e);try{if(r===null||(e.updateWorldMatrix(!0,!1),i?.equals(e.matrixWorld)===!0))return;const b=r.blenderObjectName(e);if(b===null)return;const y=`bpy.data.objects[${JSON.stringify(b)}]`;try{return await re(y,"matrix_world",Se(e,r.root)),{destination:`Blender — ${y}.matrix_world; the session saves the .blend`,persisted:!0}}catch(v){return{destination:v instanceof Error?v.message:String(v),persisted:!1}}}finally{i&&await ge()}}},H=t=>{const e=m(t),r=e===null?void 0:d().get(e);return I(r)?r.object:null},w=t=>({destination:t,persisted:!1}),U=async t=>{await D(t);const e=t.map(h).filter(r=>r!==null);return e.length>0&&c.set(e),e[0]??""},K={creatableKinds:()=>G().map(({kind:t,label:e})=>({kind:t,label:e})),create:t=>{const e=G().find(i=>i.kind===t);if(e===void 0)return{id:"",ack:w(`${t} is not a row of Blender's Add menu that this editor adds. Its rows are: ${G().map(i=>i.label).join(", ")}.`)};if(e.refusal!==void 0)return{id:"",ack:w(e.refusal)};const r=Ne(e);return{id:"",ack:(async()=>{const{made:i,error:b}=await L(r);return b!==null?w(b):i.length===0?w(`Blender ran ${r} and created nothing. The operator reported no error, so it cancelled — most often because it wanted a file browser or a context this headless engine has no window for.`):(await U(i),{destination:`Blender — ${r}; the session saves the .blend`,persisted:!0})})()}},remove:t=>K.removeMany?.([t])??void 0,removeMany:async t=>{const e=[];for(const y of t){const v=H(y);if(v===null){const ee=m(y)===null?void 0:d().get(m(y));return w(`Only an object can be deleted here; this row is a ${ee?.struct??ee?.type??"row"}. Deleting a collection, a modifier or a vertex group is that datablock’s own bpy call.`)}e.push(v)}if(e.length===0)return w("Nothing selected to delete.");const i=[`targets = ${`[bpy.data.objects[n] for n in [${e.map(F).join(", ")}]]`}`,"with bpy.context.temp_override(selected_objects=targets, active_object=targets[0]):"," result = bpy.ops.object.delete(use_global=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled deleting the selected objects")'].join(`
|
|
6
|
-
`),{error:b}=await L(i,"Delete Objects");return b!==null?w(b):(c.set([]),await D([]),{destination:"Blender — bpy.ops.object.delete(use_global=False); the session saves the .blend",persisted:!0})},duplicate:t=>{const e=H(t);if(e===null)return{id:t,ack:w("Only an object can be duplicated here. Duplicating a collection is `bpy.ops.object.collection_instance_add`, its own gesture.")};const r=[`source = bpy.data.objects[${F(e)}]`,"with bpy.context.temp_override(selected_objects=[source], active_object=source):"," result = bpy.ops.object.duplicate(linked=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled duplicating the selected object")'].join(`
|
|
7
|
-
`);return{id:t,ack:(async()=>{const{made:i,error:b}=await L(r,"Duplicate Object");return b!==null?w(b):(await U(i),{destination:`Blender — bpy.ops.object.duplicate(linked=False) on ${e}; the session saves the .blend`,persisted:!0})})()}},duplicateMany:async t=>{const e=[...new Set(t.map(H))];if(e.length===0||e.some(y=>y===null))return w("Select objects to duplicate; collections and data rows cannot be duplicated here.");const r=[`sources = [bpy.data.objects[name] for name in ${JSON.stringify(e)}]`,"with bpy.context.temp_override(selected_objects=sources, active_object=sources[0]):"," result = bpy.ops.object.duplicate(linked=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled duplicating the selected objects")'].join(`
|
|
8
|
-
`),{made:i,error:b}=await L(r,"Duplicate Objects");return b!==null?w(b):(await U(i),{destination:"Blender — duplicate selected objects as one native operation; the session saves the .blend",persisted:!0})},reparent:()=>w("Reparenting is Blender's `bpy.ops.object.parent_set`, which needs a parent TYPE (Object, Object Keep Transform, Armature Deform, …) that a drag does not say. Set the parent on the object’s Relations panel, or with bpy.")},Q={get documentId(){return l.documentId},get documentRootObject(){return l.documentRootObject},capabilities:we,provenance:Ae,hierarchy:x,selection:c,inspector:W,transforms:ie,structure:K,subscribe:t=>{a.add(t);const e=$(t),r=l.subscribe?.(t)??(()=>{});return()=>{a.delete(t),e(),r()}}},Z={get documentId(){return Q.documentId},selectedObjectNames:()=>A(),allObjectNames:()=>{const t=[];for(const e of d().values())I(e)&&t.push(e.object);return t},selectObjects:t=>{const e=t.map(h).filter(r=>r!==null);c.set(e)},rowIdForObject:t=>h(t),structure:K,subscribe:t=>{a.add(t);const e=$(t);return()=>{a.delete(t),e()}}};B.add(Z);const se=fe(n),ce=$(n);return n(),{adapter:Q,dispose:()=>{se(),ce(),B.delete(Z),a.clear()}}},Be=[{label:"Location",call:"location=True, rotation=False, scale=False"},{label:"Rotation",call:"location=False, rotation=True, scale=False"},{label:"Scale",call:"location=False, rotation=False, scale=True"},{label:"All Transforms",call:"location=True, rotation=True, scale=True"}],Me=[{label:"Location",call:"bpy.ops.object.location_clear(clear_delta=False)"},{label:"Rotation",call:"bpy.ops.object.rotation_clear(clear_delta=False)"},{label:"Scale",call:"bpy.ops.object.scale_clear(clear_delta=False)"}],Te=[{label:"Geometry to Origin",type:"GEOMETRY_ORIGIN"},{label:"Origin to Geometry",type:"ORIGIN_GEOMETRY"},{label:"Origin to 3D Cursor",type:"ORIGIN_CURSOR",refusal:"There is no 3D cursor in this editor yet, so there is no point to move the origin to. Blender places it with Shift+Right-click; that gesture is not built here."}],$e=[{submenu:"Mesh",at:"2699"},{submenu:"Curve",at:"2702"},{submenu:"Surface",at:"2704"},{submenu:"Metaball",at:"2705"},{kind:"text",at:"2706"},{kind:"point-cloud",at:"2707"},{submenu:"Volume",at:"2708"},{submenu:"Grease Pencil",at:"2709"},{separatorAt:"2711"},{kind:"armature",at:"2716"},{submenu:"Lattice",at:"2718"},{separatorAt:"2720"},{submenu:"Empty",at:"2722"},{submenu:"Image",at:"2723"},{separatorAt:"2725"},{submenu:"Light",at:"2727"},{submenu:"Light Probe",at:"2728"},{separatorAt:"2730"},{kind:"camera",at:"2735"},{separatorAt:"2737"},{kind:"speaker",at:"2739"},{separatorAt:"2741"},{submenu:"Force Field",at:"2743"},{separatorAt:"2745"},{submenu:"Collection Instance",at:"2759"}],De="No Collections to Instance";function q({id:l,open:a,setOpen:o,anchorRef:s,children:j}){return u.jsxs("div",{ref:s,style:{position:"relative"},children:[u.jsx(be,{"data-testid":`blender-menu-${l}`,"aria-expanded":a===l,onClick:()=>o(a===l?null:l),onPointerEnter:()=>{a&&o(l)},style:{textTransform:"capitalize"},children:l}),a===l&&u.jsx(pe,{anchorRef:s,dismissBoundaryRef:s,align:"start",gap:0,clamp:!0,"aria-label":l,onDismiss:()=>o(null),children:j})]})}function Pe(l,a,o){(async()=>{const s=await o;s===void 0||typeof s.destination!="string"||s.persisted!==!0&&l?.({tone:"error",title:`${a} was refused`,detail:s.destination})})()}function Ge({documentId:l,notify:a}){O.useSyncExternalStore($,X,X);const[o,s]=O.useState(null),j=O.useRef(null),_=O.useRef(null),E=O.useRef(null),d=O.useRef(null),g=Oe(l);if(g===null)return null;const p=(n,c)=>()=>{s(null),Pe(a,n,c(g))},h=g.selectedObjectNames(),m=g.allObjectNames(),f=h.length===0?"Nothing is selected.":void 0,S=G(),x=n=>u.jsx(C,{"data-testid":`blender-add-${n.kind}`,disabled:n.refusal!==void 0,title:n.refusal,onSelect:p(`Add ${n.label}`,c=>c.structure.create(n.kind).ack),children:n.label},n.kind),A=n=>S.filter(c=>c.group===n).flatMap(c=>c.separatorBefore===!0?[u.jsx(z,{},`${c.kind}-separator`),x(c)]:[x(c)]),N=n=>{if("separatorAt"in n)return u.jsx(z,{},`separator-${n.separatorAt}`);if("kind"in n){const k=S.find(W=>W.kind===n.kind);return k===void 0?null:x(k)}const c=A(n.submenu);return c.length===0?u.jsx(C,{"data-testid":"blender-add-collection-instance",disabled:!0,children:De},n.submenu):u.jsx(M,{label:n.submenu,"data-testid":`blender-add-${n.submenu.toLowerCase().replaceAll(" ","-")}`,children:c},n.submenu)};return u.jsxs(ue,{compact:!0,label:"Blender Object Mode menus","data-testid":"blender-object-mode-menus",ref:j,children:[u.jsxs(q,{id:"select",open:o,setOpen:s,anchorRef:_,children:[u.jsx(C,{"data-testid":"blender-select-all",onSelect:p("Select All",n=>n.selectObjects(m)),children:"All"}),u.jsx(C,{"data-testid":"blender-select-none",onSelect:p("Select None",n=>n.selectObjects([])),children:"None"}),u.jsx(C,{"data-testid":"blender-select-invert",onSelect:p("Select Invert",n=>n.selectObjects(m.filter(c=>!h.includes(c)))),children:"Invert"})]}),u.jsx(q,{id:"add",open:o,setOpen:s,anchorRef:E,children:$e.map(n=>N(n))}),u.jsxs(q,{id:"object",open:o,setOpen:s,anchorRef:d,children:[u.jsx(M,{label:"Set Origin","data-testid":"blender-object-origin",children:Te.map(n=>u.jsx(C,{"data-testid":`blender-origin-${n.type}`,disabled:n.refusal!==void 0||h.length===0,title:n.refusal??f,onSelect:p(`Set Origin ▸ ${n.label}`,c=>Y(c.selectedObjectNames(),`bpy.ops.object.origin_set(type='${n.type}')`)),children:n.label},n.type))}),u.jsx(M,{label:"Clear","data-testid":"blender-object-clear",children:Me.map(n=>u.jsx(C,{"data-testid":`blender-clear-${n.label.toLowerCase()}`,disabled:h.length===0,title:f,onSelect:p(`Clear ▸ ${n.label}`,c=>Y(c.selectedObjectNames(),n.call)),children:n.label},n.label))}),u.jsx(M,{label:"Apply","data-testid":"blender-object-apply",children:Be.map(n=>u.jsx(C,{"data-testid":`blender-apply-${n.label.toLowerCase().replace(/ /g,"-")}`,disabled:h.length===0,title:f,onSelect:p(`Apply ▸ ${n.label}`,c=>Y(c.selectedObjectNames(),`bpy.ops.object.transform_apply(${n.call})`)),children:n.label},n.label))}),u.jsx(z,{}),u.jsx(C,{"data-testid":"blender-object-duplicate",disabled:h.length===0,title:f,onSelect:p("Duplicate Objects",async n=>{const c=n.selectedObjectNames().map(k=>n.rowIdForObject(k)).filter(k=>k!==null);return n.structure.duplicateMany?.(c)}),children:"Duplicate Objects"}),u.jsx(C,{"data-testid":"blender-object-delete",disabled:h.length===0,title:f,onSelect:p("Delete",n=>{const c=n.selectedObjectNames().map(k=>n.rowIdForObject(k)).filter(k=>k!==null);return n.structure.removeMany?.(c)}),children:"Delete"})]})]})}const lt="workspace.document",nt="Blender Model",ot=({documentId:l,notify:a})=>u.jsx(Ge,{documentId:l,notify:a}),at="model",it="owned",st=[],R=de;function ct(l){const{active:a,document:o,documentId:s,notify:j,publishContext:_}=l,E=o?.source?.path,d=o?.id,g=JSON.stringify([s,d,E]),[p,h]=O.useState(null),m=O.useRef({notify:j,publishContext:_});return m.current={notify:j,publishContext:_},O.useEffect(()=>{if(a===!1||!s)return;let f=!1,S;const x=E===void 0?null:{documentId:s,entryId:d,blend:E},A=je(x),N=()=>{S=m.current.publishContext?.(R)};return h(null),(async()=>{try{if(x){if(!await _e(x,N))return}else N();f||h({key:g,error:null})}catch(n){if(f)return;S?.(),S=void 0;const c=n instanceof Error?n.message:String(n);h({key:g,error:c}),m.current.notify?.({tone:"error",title:`Blender could not open ${E??"the model"}`,detail:c})}})(),()=>{f=!0,S?.(),A()}},[a,E,s,d,g]),a===!1||!s?null:p?.key!==g?u.jsx("div",{role:"status",children:"Opening model…"}):p.error?u.jsx("div",{role:"alert",children:p.error}):u.jsx(Ve,{...l})}function Ve({active:l,document:a,documentId:o,surfaces:s}){const j=O.useCallback(()=>({root:R.root,onChange(d){const g=R.onChange(d),p=te.subscribe(d);return()=>{g(),p()}},dispose(){}}),[]),_=a?.source?.path;if(O.useEffect(()=>{if(!o)return;const{viewport:d}=V(),g=R.overlayGroups(),p=()=>{const m=d.stages().find(f=>f.documentId===o);if(m)for(const{kind:f,object:S}of g)m.setHelper(f,S)};p();const h=d.onStages(p);return()=>{h();const m=d.stages().find(f=>f.documentId===o);for(const{kind:f}of g)m?.setHelper(f,null)}},[o]),O.useEffect(()=>{if(!o)return;const{transport:d}=V();let g=null;const p=()=>{if(g)return;const m=d.for(o);m&&(g=te.attachTo(m))};p();const h=d.subscribe(p);return()=>{h(),g?.()}},[o]),!o)return null;const E=s.Object3DAuthoring;return u.jsx(E,{active:l??!0,documentId:o,sourcePath:_??"blender:runtime",displayName:a?.label??"Model",build:j,audit:!1,authoring:Re,cameraDirection:[.8187,.4458,.3617],openingFit:3,dressing:{environment:!1,keyLight:!1,toneMapping:ve,viewLocked:R.studioLights()}})}export{ot as Toolbar,ct as default,at as documentKind,st as inspectorBuiltins,it as inspectorRail,lt as point,nt as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as l}from"./blender-runtime-host-BpBwGv7r.js";import"./index-GIL7oGEO.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"./three.module-D396a9Mn.js";import"./clip-planes-CnAI6DZn.js";const v="workspace.command",e=(o,n)=>({...n===void 0?{}:{timeoutMs:n},derivedRefresh:o,handle:r=>l(r)}),y={"blender-start":e("none",12e4),"blender-stop":e("none",30*6e4),"blender-execute":e("always",30*6e4),"blender-scene-info":e("none",6e4),"blender-object-info":e("none",6e4),"blender-screenshot-view":e("always",6e4),"blender-read-file":e("none",6e4),"blender-write-file":e("none",6e4),"blender-list-files":e("none"),"blender-rna":e("none",6e4),"blender-rna-context":e("none",6e4),"blender-rna-set":e("always",6e4),"blender-outliner":e("none",6e4),"blender-node-tree":e("none",6e4),"blender-uv-layout":e("none",6e4),"blender-rig":e("none",6e4),"blender-action-clip":e("none",12e4),"blender-node-view":e("none"),"blender-outliner-set":e("always",6e4),"blender-status":e("none")};export{y as commands,v as point};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getUserData as n,setUserData as r}from"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";function i(o,e){r(o,"vgaiBodyOwner",e)}function a(o){return n(o,"vgaiBodyOwner")??void 0}export{a as bodyOwningNode,i as markBodyOwnedNode};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-GIL7oGEO.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/three.module-D396a9Mn.js","assets/index-D2fNXpHa.css","assets/editor-api-BoJIcyZG.js","assets/play-mode-BFU2PCkG.js","assets/native-debug-module-CWicoSGD.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-Dgvitx8M.js","assets/playtest-BXIL1JEF.js","assets/game-contract-seams-a5YXejOu.js","assets/instruments-CKR02Y8I.js","assets/frame-pacing-D5acoOzO.js","assets/edit-mode-authoring-B47TfLqu.js","assets/json-history-resource-BbxllWfV.js","assets/binding-resolver-Dsh-6Vor.js","assets/adapter-surface-Y37Nzcyw.js","assets/entry-adjudication-Cq8Yeb74.js","assets/r3f-root-factory-z9llD1OU.js","assets/register-render-vitals-BiZk29b2.js","assets/render-census-BrQX_CXv.js","assets/structural-signature-0w-i_ats.js","assets/render-vitals-BZ5HtvMi.js","assets/static-batch-advisor-B13QEH7d.js","assets/webgl-frame-capture-FlF9zQmW.js","assets/world-state-BWG-IcOd.js","assets/frame-selector-cache-cCeUbcjG.js","assets/dev-build-gDYrq68M.js","assets/game-input-seams-CIQdetRw.js","assets/seeded-random-i3mtgBKZ.js","assets/render-seed-DF4JHy7P.js","assets/frame-delta-D2nsw_Ht.js","assets/events-156d8d12.esm-ErOhDXXB.js","assets/index-bQE2NA0D.js","assets/realm-services-CobQsq_X.js","assets/canvas-entry-runtime-SfBxaR9M.js","assets/three-ingest-runtime-QzDYk6tU.js","assets/EffectComposer-DQxfsXBZ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-QYRpPuFJ.js","assets/CSS3DRenderer-CL7ABLVK.js","assets/relative-path-guard-GiM7Lsz8.js","assets/capability-coverage-Czas4C18.js","assets/react-root-CEz5NTck.js","assets/editor-presentation-activity-C7SNSmTd.js","assets/active-ingest-CT6jSGhr.js","assets/ingest-source-persistence-C_6Hiyra.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-CWsE56K6.js","assets/mounted-authoring-Dmg5xmhP.js","assets/three-CDSueJyJ.js","assets/viewport-pick-context-DkawXbEi.js","assets/logger-Dqis-7W1.js","assets/run-ticks-settled-C4ksViyA.js","assets/three-authoring-adapter-CmSQ3Vui.js","assets/source-persistence-backend-C-aR-B_Y.js","assets/three-projection-core-BmKMZ-nf.js","assets/body-marks-h_xDxiDE.js","assets/user-data-BB2Of6Ht.js","assets/object-marks-DwvIEBOK.js","assets/structural-ids-Dc-7rEwi.js","assets/object3d-authoring-subject-CH5sI2oP.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/r3f-physics-binding-BBo8oma9.js","assets/deferred-ingest-play-DCJi_Pgu.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-DmrwM3py.js","assets/board-guides-DziKSTss.js","assets/writer-B-KovzkA.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-BZfi3mmo.js","assets/inference-diagnostics-Dhmtfbq_.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{ad as _,i$ as $,j0 as V,j1 as f,j2 as g,j3 as N,_ as R,j4 as U,$ as B,j5 as M,V as j,j6 as C,B as E}from"./index-GIL7oGEO.js";import{g as l,i as b,y as D,z as G,A as F,c as O,B as x,C as q}from"./play-mode-BFU2PCkG.js";import{e as H,c as z}from"./gameplay-replay-e5umMlXv.js";import{n as A,s as h}from"./command-results-CUQD49AB.js";import{z as K,i as y}from"./active-ingest-CT6jSGhr.js";import{g as W}from"./capability-coverage-Czas4C18.js";import{waitForHoldBudget as Y,HOLD_STARVED_NO_DRIVER_REASON as X}from"./debug-bridge-CCohG-d-.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"./three.module-D396a9Mn.js";import"./native-debug-module-CWicoSGD.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-Dgvitx8M.js";import"./playtest-BXIL1JEF.js";import"./game-contract-seams-a5YXejOu.js";import"./instruments-CKR02Y8I.js";import"./frame-pacing-D5acoOzO.js";import"./edit-mode-authoring-B47TfLqu.js";import"./json-history-resource-BbxllWfV.js";import"./binding-resolver-Dsh-6Vor.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-Cq8Yeb74.js";import"./r3f-root-factory-z9llD1OU.js";import"./register-render-vitals-BiZk29b2.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-B13QEH7d.js";import"./webgl-frame-capture-FlF9zQmW.js";import"./world-state-BWG-IcOd.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-CIQdetRw.js";import"./seeded-random-i3mtgBKZ.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-ErOhDXXB.js";import"./index-bQE2NA0D.js";import"./realm-services-CobQsq_X.js";import"./canvas-entry-runtime-SfBxaR9M.js";import"./three-ingest-runtime-QzDYk6tU.js";import"./EffectComposer-DQxfsXBZ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-QYRpPuFJ.js";import"./CSS3DRenderer-CL7ABLVK.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-CEz5NTck.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-CWsE56K6.js";import"./mounted-authoring-Dmg5xmhP.js";import"./three-CDSueJyJ.js";import"./viewport-pick-context-DkawXbEi.js";import"./logger-Dqis-7W1.js";import"./run-ticks-settled-C4ksViyA.js";import"./three-authoring-adapter-CmSQ3Vui.js";import"./source-persistence-backend-C-aR-B_Y.js";import"./ingest-source-persistence-C_6Hiyra.js";import"./three-projection-core-BmKMZ-nf.js";import"./body-marks-h_xDxiDE.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./structural-ids-Dc-7rEwi.js";import"./object3d-authoring-subject-CH5sI2oP.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-BBo8oma9.js";import"./deferred-ingest-play-DCJi_Pgu.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DmrwM3py.js";import"./board-guides-DziKSTss.js";import"./writer-B-KovzkA.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BZfi3mmo.js";import"./inference-diagnostics-Dhmtfbq_.js";import"./output-DK8waum9.js";const k=()=>_().debug!=null;function m(e,t,s){const a=new Error(t);return a.code=e,s&&(a.data=s),a}function S(e){return Array.isArray(e)?new Set(e.filter(t=>!!(t&&typeof t=="object"&&typeof t.name=="string")).map(t=>t.name)):new Set}function J(e,t,s,a,i){if(e==="commands"){const c=S(t);return Array.isArray(t)&&[...a].every(o=>c.has(o))}if(e==="providers"){const c=S(t);return Array.isArray(t)&&[...i].every(o=>c.has(o))}return s?e==="state"?i.has(s):e==="invoke"?a.has(s):!1:!1}function T(e,t,s){const a=K(),i=a?.systems;if(!a||!i)return;const c=new Set((i.commands??[]).map(n=>n.name)),o=new Set((i.state??[]).map(n=>n.name));J(e,t,s,c,o)&&f({seam:"contract.systems",subject:"game",epoch:W(a),stage:"operation",outcome:"pass",source:"consumer",detail:`the session wire consumed contract systems through debug.${e}`})}async function Q(e,t,s){let a;try{a=$(s).debug}catch(o){throw o instanceof V?m("INSTANCE_UNRESOLVED",`session wire: "${e}" — ${o.message}`,{instances:o.instances}):o}const i=()=>{if(!a)throw m("DEBUG_ADAPTER_UNAVAILABLE",`session wire: "${e}" — this game exposes no debug adapter`);return a},c=(o,n,r)=>{const u=i(),d=g(u);try{const p=r();return f({seam:`system.debug.${o}`,subject:"game",epoch:d,stage:n,outcome:"pass",source:"consumer",detail:`the session wire called debug.${o} and received its result`}),f({seam:"system.debug",subject:"game",epoch:d,stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T(o,p,t[0]),p}catch(p){throw f({seam:`system.debug.${o}`,subject:"game",epoch:d,stage:n,outcome:"fail",source:"consumer",detail:`the session wire called debug.${o} and it failed: ${p instanceof Error?p.message:String(p)}`}),p}};switch(e){case"state":return c("state","operation",()=>i().state(t[0]));case"stateAll":return c("stateAll","operation",()=>i().stateAll());case"providers":return c("providers","operation",()=>i().providers());case"commands":return c("commands","operation",()=>i().commands());case"events":return c("events","operation",()=>i().events(t[0]));case"snapshot":{const o=i();return{time:c("state","operation",()=>o.state("time")),state:c("stateAll","operation",()=>o.stateAll()),events:c("events","operation",()=>o.events(t[0])),pageErrors:N()}}case"invoke":{const o=t[0],n=t[1]??[];try{const r=await i().invoke(o,n),u=i();return f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"pass",source:"consumer",detail:`the session wire invoked debug command "${o}" and received its result`}),f({seam:"system.debug",subject:"game",epoch:g(u),stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T("invoke",r,o),r}catch(r){const u=i();throw f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"fail",source:"consumer",detail:`the session wire invoked debug command "${o}" and it failed: ${r instanceof Error?r.message:String(r)}`}),r}}case"runTicks":{const o=l();if(!o?.runTicks)throw m("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];o.runTicks(n,r);return}case"runTicksSettled":{const o=l();if(!o?.runTicksSettled)throw m("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];await o.runTicksSettled(n,r);return}case"input.setVirtualAction":case"input.tapVirtualAction":case"input.clearVirtualActions":case"input.startRecording":case"input.stopRecording":case"input.isRecording":{const o=l(),n=e==="input.setVirtualAction"?t[2]:e==="input.tapVirtualAction"?t[1]:t[0],r=o?o.getInputTarget(n):null;if(!r)throw m("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no default three world has mounted yet, or this project's mount path never wired one`);if(e==="input.setVirtualAction")return r.setVirtualAction(t[0],t[1]);if(e==="input.tapVirtualAction")return r.tapVirtualAction(t[0]);if(e==="input.clearVirtualActions"){r.clearVirtualActions();return}if(e==="input.startRecording"){r.startInputRecording();return}if(e==="input.stopRecording"){r.stopInputRecording();return}return r.isInputRecording()}case"input.scheduleActionAtTick":{const o=l(),n=t[0],r=t[1],u=t[2],d=t[3],p=o?o.getInputTarget(d):null;if(!p)throw m("DEBUG_INPUT_UNAVAILABLE","session wire: input.scheduleActionAtTick() has no virtual-input target wired — no default three world has mounted yet, or this project's mount path never wired one");return p.scheduleActionAtTick(n,r,u)}case"input.injectPointerDelta":case"input.injectPointerPosition":{const o=l(),n=t[0],r=t[1],u=t[2],d=o?o.getInputTarget(u):null;if(!d)throw m("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no default three world has mounted yet, or this project's mount path never wired one`);e==="input.injectPointerDelta"?d.injectPointerDelta(n,r):d.injectPointerPosition(n,r);return}case"holdFor":{const o=l(),n=t[2],r=o?o.getInputTarget(n):null;if(!r)throw m("DEBUG_INPUT_UNAVAILABLE","session wire: holdFor() has no virtual-input target wired — no default three world has mounted yet, or this project's mount path never wired one");const u=t[0],d=t[1],p=r.setVirtualAction(u,!0);if(!p.delivered)return r.clearVirtualActions(),{delivered:!1,reason:p.reason};const{stalled:v,starvedWithoutDriver:w}=await Y(i(),d,o?.runTicks?L=>o.runTicks?.(L,{render:"last"}):void 0);return r.clearVirtualActions(),v?{delivered:!1,reason:w?X:"play stopped during hold"}:{delivered:!0}}default:throw m("UNKNOWN_BRIDGE_METHOD",`session wire: unknown bridge method "${e}"`)}}async function Z(e){if(!b()&&!k())return y()?{ok:!1,error:"this ingest mount is live, but it publishes no debug plane — the mount installs no SystemAdapters.debug, so there is nothing to enumerate, read or drive through the game seam. Starting play will not change that; the game itself must declare the vgai game contract (or carry a contract shim beside it) for these calls to have an answer."}:A();const t=e.method,s=e.callArgs??[];try{const a=e.instance;return{ok:!0,data:{result:await Q(t,s,a)}}}catch(a){return h(a)}}async function P(e){const{liveCanvasFrame:t}=await R(async()=>{const{liveCanvasFrame:s}=await import("./index-GIL7oGEO.js").then(a=>a.tY);return{liveCanvasFrame:s}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));return t(e)}function ee(){const e=l();e?.loop.liveness==="loop-starved"&&e.runTicks?.(1,{render:"last"})}function I(e,t){const s=te();return{ok:!0,data:{base64:e,mimeType:"image/png",composite:t.composite,...t.layers?{layers:t.layers}:{},...t.flatness?{flatness:t.flatness}:{},...t.loopRecoveryFrame?{loopRecoveryFrame:!0}:{},...s?{recording:s}:{}}}}function te(){const e=F();return e?{path:e.path,startedAt:e.startedAt,notice:[`This run is being RECORDED — the still above is one frame of ${e.path}.`,"A still cannot answer a question about a moving game (did the jump land, did the shot","register). If that is the question, read the clip:","",` recording: ${e.path}${e.rotates?` (the next ${E("play")} replaces this file)`:" (named — never rotated)"}`,...e.format==="canvas-dom"?[` HUD replay: ${e.replayPath}`," The raw WebM contains the canvas only. Reconstruct HUD stills with"," editor.recording.captureReplay, or export a full video with editor.recording.exportReplay."]:[],` startedAt: ${e.startedAt} (clip offset 0)`,` play log: ${e.logFile===null?"(none — nothing is logging this run)":`logs/${e.logFile}`} (event timestamps → clip offsets)`,"","THE BAR for a temporal question: examine AT LEAST 10 frames spanning no more than 5","seconds around the moment. One frame, or ten frames spread across the run, is the same","guess a single screenshot was.","",`The clip is finalized and readable when play stops — ${E("stop")}, or the idle`,`auto-stop after ${Math.round(e.idleAutoStopMs/1e3)}s with no session command and no player input.`].join(`
|
|
3
|
-
`)}:null}async function re(e){if(!b()&&!k()&&!y())return A();const t=e.instance,s=D(t),a=G(t),i=U(s).medium,c=l();let o=!1,n=null;if(a&&c?.loop.liveness==="loop-starved")if(e.refreshStarvedFrame===!0&&c.runTicks)try{c.runTicks(1,{render:"last"}),o=!0}catch(r){return h(r)}else return{ok:!1,error:"cannot capture a fresh game frame while the host loop reports 'loop-starved' — inspect the separate visibility readings, let presentation resume, or request a deterministic loop-recovery frame",data:{code:"BRIDGE_SCREENSHOT_STALE"}};if(s&&typeof Image<"u"&&typeof XMLSerializer<"u"&&typeof s.getBoundingClientRect=="function")try{const r=await B(s,{canvasFrame:P,...i==="unknown"?{}:{presentsOnCanvas:i==="canvas"}});if(r.layers.canvases===0&&r.layers.domOverlays===0)throw new M(i==="dom"?"dom-overlay":"composite-output","no game layers were mounted");return I(r.base64,{composite:!0,layers:r.layers,flatness:r.flatness,loopRecoveryFrame:o})}catch(r){n=r,j.warn(`Full-stack screenshot failed; returning the canvas-only fallback — ${r instanceof Error?r.message:String(r)}`,"screenshot")}if(!a){const r=n instanceof Error?n.message:String(n);return{ok:!1,error:n!==null?`full game-stack capture failed — ${r}; no canvas layer is available as a fallback`:y()?"the ingest mount is live but no DOM overlay or canvas layer is mounted for capture":"no play-mode DOM overlay or canvas layer is mounted yet",data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}try{const r=await R(()=>import("./index-GIL7oGEO.js").then(w=>w.tY),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])),u=r.readablePngSource(await r.liveCanvasFrame(a))??a,d=u.toDataURL("image/png"),p=d.indexOf(","),v=p>=0?d.slice(p+1):d;return I(v,{composite:!1,flatness:C(u,a.ownerDocument),loopRecoveryFrame:o})}catch(r){return{ok:!1,error:`bridge-screenshot: canvas layer capture failed — ${r instanceof Error?r.message:String(r)}`+(n===null?"":`; full game-stack capture also failed — ${n instanceof Error?n.message:String(n)}`),data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}}const Lt="workspace.command",$t={"bridge-call":{timeoutMs:6e4,derivedRefresh:"always",handle:Z},"bridge-screenshot":{timeoutMs:15e3,derivedRefresh:"if-content-changed",handle:re},"bridge-recording-start":{timeoutMs:15e3,derivedRefresh:"none",handle:async e=>{if(!b()&&!k()&&!y())return A();const t=D();if(!t)return{ok:!1,error:"no play-mode game surface is mounted yet"};const s=_().audio?.acquireRecordingStream?.()??null;try{return{ok:!0,data:{...await x(t,{fps:typeof e.fps=="number"?e.fps:void 0,format:e.format==="canvas-dom"||e.format==="composite-webm"?e.format:void 0,name:typeof e.name=="string"||e.name===null?e.name:void 0,canvasFrame:P,refreshFrame:ee,audio:s})}}}catch(a){return h(a)}}},"bridge-recording-stop":{timeoutMs:6e4,derivedRefresh:"none",handle:async()=>{try{return{ok:!0,data:{...await O()}}}catch(e){return h(e)}}},"bridge-recording-timeline":{derivedRefresh:"none",handle:()=>{const e=q();return e===null?{ok:!1,error:"no gameplay recording is active"}:{ok:!0,data:{...e}}}},"bridge-recording-replay-capture":{timeoutMs:6e4,derivedRefresh:"none",handle:async e=>{try{return typeof e.replayPath!="string"?{ok:!1,error:"replayPath is required"}:typeof e.positionMs!="number"||!Number.isFinite(e.positionMs)?{ok:!1,error:"finite positionMs is required"}:{ok:!0,data:{...await z(e.replayPath,e.positionMs)}}}catch(t){return h(t)}}},"bridge-recording-replay-export":{timeoutMs:6e5,derivedRefresh:"none",handle:async e=>{try{if(typeof e.replayPath!="string")return{ok:!1,error:"replayPath is required"};const{blob:t,...s}=await H({replayPath:e.replayPath,...typeof e.fps=="number"?{fps:e.fps}:{},...typeof e.startMs=="number"?{startMs:e.startMs}:{},...typeof e.endMs=="number"?{endMs:e.endMs}:{}}),{beginGameplayRecordingSink:a,appendGameplayRecordingChunk:i,finishGameplayRecordingSink:c,abortGameplayRecordingSink:o}=await R(async()=>{const{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:d,abortGameplayRecordingSink:p}=await import("./editor-api-BoJIcyZG.js");return{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:d,abortGameplayRecordingSink:p}},__vite__mapDeps([11,0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79])),n=await a({startedAt:new Date().toISOString(),mimeType:"video/webm",purpose:"export",name:typeof e.name=="string"?e.name:`replay-export-${Date.now()}`});try{for(let r=0,u=0;r<t.size;r+=4*1024*1024,u++)await i(n,u,t.slice(r,r+4*1024*1024));await c(n,"post-processed canvas and DOM recording")}catch(r){throw await o(n),r}return{ok:!0,data:{...s,path:n.path}}}catch(t){return h(t)}}}};export{$t as commands,Lt as point};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{gy as i,gz as m,c8 as t,gA as r,gB as a,gC as o,gD as s}from"./index-GIL7oGEO.js";import"./webworkerAll-CM2o_dnz.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"./three.module-D396a9Mn.js";i.add(m);i.mixin(t,r);i.add(a);i.add(o);i.mixin(t,s);
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-GIL7oGEO.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/three.module-D396a9Mn.js","assets/index-D2fNXpHa.css","assets/index-CZd9o7Lu.js","assets/pixi-primitive-DlWbUPN9.js","assets/extend-B-eOccUm.js","assets/index-bQE2NA0D.js","assets/pixi-react-root-factory-DYsznYRQ.js","assets/world-state-BWG-IcOd.js","assets/debug-registry-Dgvitx8M.js","assets/frame-selector-cache-cCeUbcjG.js","assets/game-input-seams-CIQdetRw.js","assets/seeded-random-i3mtgBKZ.js","assets/render-seed-DF4JHy7P.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{Q as i,_ as o,T as p}from"./index-GIL7oGEO.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"./three.module-D396a9Mn.js";let e=null;async function a(){const t=await import(p);if(typeof t.resolveCanvasEntryAdapter!="function")throw new Error("The packaged runtime's synthetic canvas module did not export `resolveCanvasEntryAdapter` — see vite-plugin-module-doorways.ts.");if(typeof t.projectPixi!="object"||t.projectPixi===null)throw new Error("The packaged runtime's synthetic canvas module did not export `projectPixi` — see vite-plugin-module-doorways.ts.");return{resolve:t.resolveCanvasEntryAdapter,projectPixi:t.projectPixi}}async function w(){return await i()?(e||(e=a()),(await e).projectPixi):o(()=>import("./index-GIL7oGEO.js").then(t=>t.c9),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))}async function P(t,r){if(!await i()){const{resolveCanvasEntryAdapter:n}=await o(async()=>{const{resolveCanvasEntryAdapter:s}=await import("./index-CZd9o7Lu.js");return{resolveCanvasEntryAdapter:s}},__vite__mapDeps([11,12,13,4,2,14,1,3,0,5,6,7,8,9,10,15,16,17,18,19,20,21]));return n(t,r)}return e||(e=a()),(await e).resolve(t,r)}export{P as resolveCanvasEntryAdapterForEditor,w as resolveCanvasPixiForEditor};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ui-board-document-Bwtt--xp.js","assets/index-GIL7oGEO.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/three.module-D396a9Mn.js","assets/index-D2fNXpHa.css","assets/design-time-layers-wYgOTgni.js","assets/edit-mode-authoring-B47TfLqu.js","assets/design-time-mount-registry-DUpXCg1U.js","assets/react-story-board-BDDwiE2H.js","assets/world-documents-147tiFZe.js","assets/CanvasSceneViewport-Bpi6gVTC.js","assets/RootSelectionOverlay-BZPlxmXU.js","assets/eyedropper-session-bjPXnfeX.js","assets/viewport-pick-context-DkawXbEi.js","assets/inspect-BZfi3mmo.js","assets/inference-diagnostics-Dhmtfbq_.js","assets/TransientHint-BB1fwrvK.js","assets/component-board-registry-DrIa2csL.js","assets/surface-state-DaxyruCj.js","assets/board-guides-DziKSTss.js","assets/story-media-presence-BHzk2IV5.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as a}from"./component-board-registry-DrIa2csL.js";import{dj as s,B as n,_ as i,V as c,av as d,eI as l}from"./index-GIL7oGEO.js";import{s as m,g as p}from"./story-media-presence-BHzk2IV5.js";const r="UI",u={medium:"dom",owner:"@volter/editor-game/react/ui-board",documentId:s,title:r,presence:()=>l()?p().dom?"present":"absent":null,subscribe:o=>{const e=m(o),t=d(o);return()=>{e(),t()}},install:async o=>{try{const{installUiBoard:e}=await i(async()=>{const{installUiBoard:t}=await import("./ui-board-document-Bwtt--xp.js");return{installUiBoard:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]));e(o)}catch(e){throw c.error(`Failed to load the ${r} board: ${String(e)}`,"scene"),e}},absentReason:()=>`This project has no ${r} board (${s}): board presence keys on STORIES, not on roots, and none of this project's stories declares the "dom" medium. Declare it — a manifest root entry naming the story's module, or a \`vgai.adapter.ts\` regionInclude that covers it — and the board appears. ${n("console")} names every story it could not place.`},_="workspace.service";function b(){return a(u)}const h=Object.freeze(Object.defineProperty({__proto__:null,point:_,start:b},Symbol.toStringTag,{value:"Module"}));export{r as U,h as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{e as i,b as l,u as o,c as u}from"./fork-menu-BoVyw2Wu.js";import{eK as c,aG as s,eL as g,eM as I,eN as p,eO as m}from"./index-GIL7oGEO.js";import"./instance-fork-actions-D3sRzS3K.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"./three.module-D396a9Mn.js";const f="Reveal Internals",E="Hide Internals";function a(t,e){const n=t;return typeof n.hasInternals!="function"||!n.hasInternals(e)||g(n,I()).isInternal(e)?null:{label:m(e)?E:f,toggle:()=>{p(e)}}}let r=null;function R(){r||(r=c(({nodeId:t,store:e})=>a(s(e),t)!==null,({nodeId:t,store:e})=>{const n=a(s(e),t);return n?[{label:n.label,action:()=>{n.toggle(),e.notifyIngestEdit()}}]:[]}))}function L(){r?.(),r=null}const H="workspace.service";function T(){return i(),l(),R(),()=>{o(),u(),L()}}export{H as point,T as start};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{aY as y,ao as f,a9 as i,eE as v,eF as k,eG as c,a4 as h,eP as j,ek as S}from"./index-GIL7oGEO.js";import{constraintsOf as C}from"./constraint-De8f1Uiq.js";import"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./three.module-D396a9Mn.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";function g(t,n){return n?t.hierarchy.object3D?.(n)??null:null}function b(t){if(!t)return[];const n=j(t),u=new Set,m=a=>{const l=j(a);if(!(a!==t&&n!==void 0&&l!==void 0&&l!==n)){for(const o of C(a))u.add(o);for(const o of a.children)m(o)}};return m(t),[...u]}function F(t,n){return b(g(n,t?.id??null)).length>0}const w={ready:"Ready",disabled:"Disabled",unresolved:"Unresolved",error:"Error"};function D(t){return t==="two-bone-ik"?"Two Bone IK":t==="ccd-ik"?"CCD IK":t==="aim"?"Aim":t==="rotation"?"Rotation":t}function O({adapter:t,nodeId:n}){const u=y(),m=n?u.objectMap.get(n)??g(t,n)??null:null,a=b(m).sort((o,s)=>o.config.order-s.config.order),l=o=>{if(!o)return;const s=t.hierarchy.idForObject3D?.(o);s&&(S(t,[s],{intent:"exact"})||u.select(s))};return r.jsx("div",{style:{display:"grid",gap:10},children:a.map((o,s)=>{const d=o.config,e=o.getSnapshot(),p=d.type==="two-bone-ik"||d.type==="ccd-ik";return r.jsxs("div",{style:{border:`1px solid ${f.boundary.default}`,borderRadius:6,overflow:"hidden"},children:[r.jsxs("div",{style:{alignItems:"center",background:f.surface.raised,display:"flex",gap:8,justifyContent:"space-between",padding:"6px 8px"},children:[r.jsx(i,{children:`${s+1}. ${d.label}`}),r.jsx(i,{tone:"muted",children:D(d.type)})]}),e.message&&(e.status==="error"||e.status==="unresolved")?r.jsx(v,{tone:"error",children:e.message}):null,r.jsxs(k,{children:[r.jsx(c,{label:"Status",children:r.jsx(i,{tone:e.status==="error"||e.status==="unresolved"?"danger":e.status==="ready"?"success":"muted",children:w[e.status]})}),r.jsx(c,{label:"Weight",children:r.jsx(i,{tone:"muted",children:`${Math.round(d.weight*100)}%`})}),p?r.jsx(c,{label:"Chain",children:r.jsx(i,{tone:"muted",children:e.chain.map(x=>x.name||x.type).join(" → ")||"Unresolved"})}):r.jsx(c,{label:"Constrained",children:e.constrained&&t.hierarchy.idForObject3D?.(e.constrained)?r.jsx(h,{size:"compact",onClick:()=>l(e.constrained),children:e.constrained.name||"Select object"}):r.jsx(i,{tone:"muted",children:e.constrained?.name||"Unresolved"})}),e.error!==null?r.jsx(c,{label:e.error.unit==="degrees"?"Angular error":"Solve error",children:r.jsx(i,{tone:"muted",children:e.error.unit==="degrees"?`${e.error.value.toFixed(2)}°`:`${e.error.value.toFixed(3)} m`})}):null,r.jsx(c,{label:"Target",children:e.target&&t.hierarchy.idForObject3D?.(e.target)?r.jsx(h,{size:"compact",onClick:()=>l(e.target),children:e.target.name||"Select target"}):r.jsx(i,{tone:"muted",children:e.target?.name||"Dynamic target"})}),p?r.jsx(c,{label:"Pole",children:e.pole&&t.hierarchy.idForObject3D?.(e.pole)?r.jsx(h,{size:"compact",onClick:()=>l(e.pole),children:e.pole.name||"Select pole"}):r.jsx(i,{tone:"muted",children:e.pole?.name||"None"})}):null]})]},d.id)})})}const P="selection.inspector",N="Constraints",V="link",W=450;function Y(t,n){return F(t,n)}function _({adapter:t,nodeId:n}){return r.jsx(O,{adapter:t,nodeId:n})}export{_ as default,V as icon,Y as match,W as order,P as point,N as title};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{E as k,eI as R,kv as A,aR as L,aS as P,aF as u,B as y,a2 as F,kw as _,kx as N,ky as j,ad as M,jh as O,kz as D,V,q as B}from"./index-GIL7oGEO.js";import{d as v,P as T,S as J,a as W,b as G,u as q}from"./capability-coverage-Czas4C18.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"./three.module-D396a9Mn.js";import"./game-contract-seams-a5YXejOu.js";function E(){const e=k();return!e||!R()?null:v({worldId:u()?.config.name??"project",authoringSurface:A(e.scenes,P().map(t=>t.descriptor.id),L().map(t=>t.descriptor.id))})}function z(e,t){return{slot:e,state:"unanswered",evidence:`nobody has read this project's own files yet, so ${e} is unmeasured — `+(t??"the editor has not asked its dev server for them")}}function H(e){return e.length>0&&e.every(t=>t.type==="ingest")}function K(e){const{scripts:t,roots:o}=e;if(t===null||o===null)return z("export",e.unavailable);if(!t.includes("build"))return{slot:"export",state:"absent",evidence:e.hasPackageJson?"this project's package.json declares no `build` script, and the export path runs `npm run build` in the project and stages the `dist/` it emits":"this project has no package.json, so there is no `build` script for the export path to run",missing:"this project cannot produce a standalone build, so it runs NOWHERE but the editor — the dev-served standalone page refuses an unexported game outright",fix:"add the scaffold's `build` script (`build: tsc && vite build`), which is what every deploy path runs"};const r=o.filter(s=>s.type!=="ingest"&&(s.type!=="builtin"||s.identity!=="three")),n=r.length>0?`; note that the legacy ${y("deploy")} verb additionally refuses ${r.map(s=>`root "${s.id}" (${s.identity})`).join(", ")} — use the project-owned deploy scripts (${y("add deploy-cloudflare")}/\`deploy-vercel\`, then \`npm run deploy\`)`:"",a=t.includes("deploy")?", and a `deploy` script to ship it":` (no \`deploy\` script yet — ${y("add deploy-cloudflare")}/\`deploy-vercel\` adds one)`,c=H(o)?"; this ingest project ships the standalone bundle produced by its own build unchanged":"";return{slot:"export",state:"present",evidence:`this project declares a \`build\` script, which is what the export path runs to emit the \`dist/\` it stages${a}${c}${n}`}}function Y(e){const t={export:K};return T.map(o=>t[o](e))}let l=null,m=null,p=null;function U(){l=null,m=null,p=null}async function Q(e,t=fetch){return l&&p===e?l:(m&&p===e||(p=e,l=null,m=(async()=>{let o;try{const r=await t("/__editor/project-verbs");o=await F(r,"project-verbs did not answer")}catch(r){o={scripts:null,hasPackageJson:!1,dependencies:null,roots:null,unavailable:`the editor could not reach its dev server to read this project's own files (${r instanceof Error?r.message:String(r)})`}}return l=o,o})()),m)}function X(){const e=u();return e?(p===e.rootPath?l:null)?.dependencies??null:null}function Z(){const e=u();if(!e)return null;Q(e.rootPath);const t=p===e.rootPath?l:null;return{scripts:t?.scripts??null,hasPackageJson:t?.hasPackageJson??!1,roots:t?.roots??null,unavailable:t?.unavailable??(t?null:"the editor has not finished reading this project’s own files yet")}}function I(){const e=Z();if(!e)return null;const t=u();return v({worldId:t?.config.name??"project",projectVerbs:Y(e)})}const ee={physics:["@react-three/rapier","@dimforge/rapier3d-compat","@dimforge/rapier2d-compat"],networking:["colyseus.js"],navigation:["recast-navigation","@recast-navigation/core"],audio:["tone","howler"]};function te(e,t){if(t.dependencies===null)return[];const o=ee[e];return o?o.filter(r=>t.dependencies?.includes(r)):[]}function re(e,t){return`this project depends on ${t.join(" + ")}, so "nothing built a ${e} world" is not a settled answer. Reach a terminal state either way: BIND it — declare a ${e} adapter in the root entry's \`systems\` table (the engine ships \`rapierPhysicsSystem()\` for the R3F Rapier bridge; other slots take the game's own adapter) — or DECLARE the absence with \`absent(reason)\` in that same table. The reason must NAME the dependency and say why it is there while the subsystem is not (a transitive pull, a leftover, a build-only use); a declared absence blind to the shipped dependency grades malformed, not terminal.`}function ne(e,t){const o=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(/^[a-z0-9]+$/i.test(t)){if(new RegExp(`\\b${o}\\b`,"i").test(e))return!0}else if(e.toLowerCase().includes(t.toLowerCase()))return!0;const r=new Set(["compat","core","client","server","node","react","three","libs","api","sdk","util","utils","plugin","plugins","tools","types","browser"]),n=d=>d.toLowerCase().split(/[.\-_/]+/).filter(C=>C.length>=4&&!r.has(C)),[a,c]=t.toLowerCase().startsWith("@")?[t.slice(1,t.indexOf("/")),t.slice(t.indexOf("/")+1)]:["",t];let s=n(c);s.length===0&&(s=n(a));const i=s.map(d=>d.replace(/\d+d?$/,"")).filter(d=>d.length>=4);return[...new Set([...s,...i])].some(d=>new RegExp(`\\b${d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\b`,"i").test(e))}const oe="this project's vgai.project.json declares no `server` block, so there is no room for a NetworkingAdapter to describe",se={physics:"no mounted root built a physics world — the engine seeds this slot from the root that creates one (a `setup` root, or an R3F tree using the Rapier bridge), so nothing in this game simulates bodies",navigation:"no mounted root registered a navigation adapter — the engine seeds this slot from a world's own NavMeshManager registration, so this game has no navmesh",audio:"no mounted root built an audio context — the engine seeds this slot from the root that creates one, so there is no audio graph for the host to mute, meter or graph",camera:"no mounted root registered a camera-ownership system — the engine ships `createCameraOwnershipSystem` for a game that takes camera control (a cutscene rig), so this game's camera is gameplay-owned throughout",renderDebug:"no mounted root captured a real WebGL2 render context to derive one from — the engine seeds this slot only where the root owns the capture wiring (`adapter/setup-three-root-adapter.ts`), so the Frame debugger and the render-memory view have nothing to show for this game"};function S(e,t){return e==="networking"?"register a NetworkingAdapter from the game's own code (`ctx.registerSystemAdapter('networking', …)`) — this project declares a `server` block, so the editor's Network panel is dark for a game that IS networked":`register a ${e} adapter from the game's own code (\`ctx.registerSystemAdapter('${e}', …)\`), or build the subsystem the engine seeds it from`}function ae(e,t){const o=new Map(t.declaredAbsences.map(r=>[r.slot,r]));return J.map(r=>{const n=o.get(r);if(e[r]!=null)return n?{slot:r,state:"malformed",evidence:`root "${n.rootId}" declares this slot absent — "${n.reason}" — but a ${r} adapter is bound on the live mount. One of the two is wrong: either the declaration is stale (delete the \`absent()\` marker) or something registers an adapter the game does not mean to have.`}:{slot:r,state:"bound",proof:_({slot:r,adapter:e[r],subject:"game"})};const a=te(r,t);if(n){const s=a.filter(d=>!ne(n.reason,d));if(s.length>0)return{slot:r,state:"malformed",evidence:`root "${n.rootId}" declares this slot absent — "${n.reason}" — but this project depends on ${s.join(" + ")} and the reason does not mention it. Either the absence is stale, or it holds and the reason should say why that dependency is present without the subsystem (naming it).`};const i=t.absencesFromLastMount?" — the declaration read at this session’s last play mount; play to re-read it live":"";return{slot:r,state:"empty",attestedBy:"game",evidence:a.length>0?`declared absent by root "${n.rootId}": ${n.reason} (the project does depend on ${a.join(" + ")}; the reason engages with that)${i}`:`declared absent by root "${n.rootId}": ${n.reason}${i}`}}if(a.length>0)return{slot:r,state:"unanswered",fix:re(r,a)};if(r==="networking")return t.declaresServer?{slot:r,state:"unanswered",fix:S(r)}:{slot:r,state:"empty",attestedBy:"host",evidence:oe};const c=se[r];return c?{slot:r,state:"empty",attestedBy:"host",evidence:c}:{slot:r,state:"unanswered",fix:S(r)}})}function ie(){const e=O()?.game,t=u()?.rootPath??null;return e?(t!==null&&(g={projectPath:t,absences:e.declaredSystemAbsences??[]}),{absences:e.declaredSystemAbsences??[],fromLastMount:!1}):g!==null&&g.projectPath===t?{absences:g.absences,fromLastMount:!0}:{absences:[],fromLastMount:!1}}let g=null;function x(){if(N()!==null)return null;const e=u();if(!e)return null;const t=j();if(t.length===0||t.every(r=>r.adapter.provenance?.source==="foreign"))return null;const o=ie();return v({worldId:e.config.name,systemAdapters:ae(M(),{declaresServer:(e.config.configurations??[]).some(r=>r.kind==="process"&&typeof r.port=="number"),declaredAbsences:o.absences,absencesFromLastMount:o.fromLastMount,dependencies:X()})})}function ce(e){const t=v({worldId:e.worldId,reach:W(e.adapter,e.worldId),surface:e.surface,reachMechanism:null});return{worldId:e.worldId,surface:e.surface,report:t}}function w(){return j().map(ce)}function de(e=w()){const t=e.map(a=>({label:a.worldId,report:a.report})),o=x();o&&t.push({label:null,report:o});const r=I();r&&t.push({label:null,report:r});const n=E();return n&&t.push({label:null,report:n}),t}function le(e){const t=de(e??w());return t.length===0?null:q(u()?.config.name??"session",t)}const $=new Set;let b=null,f=0;function h(){b=null,f=0}function ue(){if(D()){h();return}const e=w(),t=le(e);if(!t||t.summary.gaps===0){h();return}const o=j();if(o.length===0){h();return}const r=k()?.regions??[];if(r.length>1){const s=new Set(o.map(i=>i.worldId));if(r.some(i=>!s.has(i.id))){h();return}}if(e.some(s=>s.report.rows.find(i=>i.seam==="editor.capture")?.status!=="ok")){h();return}const n=`session coverage "${t.summary.worldId}"`,a=G(t,n).filter(s=>s.level==="warn"),c=a.map(s=>s.message).join(`
|
|
2
|
-
---
|
|
3
|
-
`);if(b===c?f++:(b=c,f=1),!(f<2))for(const s of a)$.has(s.message)||($.add(s.message),V.warn(s.message,"coverage"))}const Ee="workspace.service",pe=["rootCoverage","systemCoverage","projectCoverage","authoringCoverage"];function he(e){if(e)return{rootCoverage:e.rootCoverage??[],systemCoverage:e.systemCoverage??null,projectCoverage:e.projectCoverage??null,authoringCoverage:e.authoringCoverage??null};const t=x(),o=I(),r=E();return{rootCoverage:w().map(n=>({worldId:n.worldId,surface:n.surface,summary:n.report.summary,rows:n.report.rows.map(a=>({...a}))})),systemCoverage:t?{summary:t.summary,rows:t.rows.map(n=>({...n}))}:null,projectCoverage:o?{summary:o.summary,rows:o.rows.map(n=>({...n}))}:null,authoringCoverage:r?{summary:r.summary,rows:r.rows.map(n=>({...n}))}:null}}function Ie(){const e=B().session,t=e.reportFacet(he,{reusableKeys:pe}),o=e.onSample(ue),r=e.onCommandDispatched(n=>{n==="restart"&&U()});return()=>{t(),o(),r()}}export{Ee as point,Ie as start};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/canvas-entry-runtime-SfBxaR9M.js","assets/index-GIL7oGEO.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/three.module-D396a9Mn.js","assets/index-D2fNXpHa.css","assets/mount-ingest-root-glv2SSWf.js","assets/active-ingest-CT6jSGhr.js","assets/game-contract-seams-a5YXejOu.js","assets/capability-coverage-Czas4C18.js","assets/ingest-source-persistence-C_6Hiyra.js","assets/playtest-BXIL1JEF.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{y as u,z as d,_ as i,B as l,E as n,F as m,I as p}from"./index-GIL7oGEO.js";import{q as g}from"./edit-mode-authoring-B47TfLqu.js";import{d as v,a as c,b as w,g as y,e as P,c as I}from"./active-ingest-CT6jSGhr.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"./three.module-D396a9Mn.js";import"./game-contract-seams-a5YXejOu.js";import"./capability-coverage-Czas4C18.js";import"./ingest-source-persistence-C_6Hiyra.js";import"./playtest-BXIL1JEF.js";async function _(){const e=await u().catch(()=>null);if(!e)return!1;const t=d(e);if(t.length!==1)return!1;if(t[0].world!==void 0)return!0;const a=await A();return b(a)}const h=4e3;function A(){const e=n();return e?Promise.resolve(e):new Promise(t=>{const a=setTimeout(()=>{o(),t(n())},h),o=m(()=>{const r=n();r&&(clearTimeout(a),o(),t(r))})})}function b(e){return e?p(e.scenes).some(t=>t.plan.kind==="isolation-document"):!1}async function z(e){if(!await _())return!1;const t=await u().catch(()=>null);if((t?d(t).some(r=>r.adapter.surface==="canvas"):!1)&&!c()){const{resolveCanvasPixiForEditor:r}=await i(async()=>{const{resolveCanvasPixiForEditor:f}=await import("./canvas-entry-runtime-SfBxaR9M.js");return{resolveCanvasPixiForEditor:f}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]));(await r()).Assets.reset()}const{launchIngestRoutes:o}=await i(async()=>{const{launchIngestRoutes:r}=await import("./mount-ingest-root-glv2SSWf.js").then(s=>s.m);return{launchIngestRoutes:r}},__vite__mapDeps([12,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17]));if(await o(e),!c())throw new Error(`Play could not start: this project's ingest root failed to mount — see the mount failure reported above (and in ${l("status")}).`);return w(),e.setActiveViewportTab("play"),y()?.play(),!0}function B(e){return v()?(P(),I(),e.setPlayState("stopped"),e.setActiveViewportTab("edit"),g(),!0):!1}export{v as deferredIngestPlayActive,B as exitDeferredIngestPlay,_ as ingestMountIsDeferredToPlay,z as mountDeferredIngestForPlay};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{bq as te,br as oe,bs as re,bt as ne,aF as se,bu as F,bv as ie,V as E,bw as de,bx as le,by as ae,bz as ue,bA as fe}from"./index-GIL7oGEO.js";import{B as S,q as W}from"./edit-mode-authoring-B47TfLqu.js";import{s as pe,d as I,a as ce}from"./design-time-mount-registry-DUpXCg1U.js";import{s as we,a as he,g as ye,r as ge}from"./react-story-board-BDDwiE2H.js";const _=new Map;function q(n,r){return`${n}\0${r}`}function Pe(n,r){return _.get(q(n,r))}function Ee(n,r,o){_.set(q(n,r),o)}const me=1;function L(n){const r=[];for(const{worldId:o,adapter:d}of n.childAdapters()){if(!(d instanceof S))continue;const a=d.inspector.get(o,"kind");if(a!=="dom"&&a!=="canvas"||d.inspector.get(o,"reason")!==void 0)continue;const b=d.inspector.get(o,"adapter");b?.startsWith("ingest")||b?.startsWith("module")||r.push({worldId:o,kind:a,path:d.inspector.get(o,"path"),zOrder:Number(d.inspector.get(o,"zOrder")??0),pausable:d.inspector.get(o,"pausable")!==!1})}return r}function Me(n){return L(n)}const Ie="ui-components-board";function $(n,r){return n.childAdapters().some(o=>o.worldId===r)}function ze(){return{worldId:Ie,kind:"dom",path:void 0,zOrder:0,pausable:!0}}function N(n,r,o="dom"){const d=le(r)?"none":"block";n.style.display=d,n.style.pointerEvents=I(o)?.alwaysInteractive||ae(r)?"auto":"none";for(const a of Array.from(n.parentElement?.children??[]))a instanceof HTMLElement&&a.dataset.vgaiStoryBoardChromeFor===r&&(a.style.display=d)}function be(n,r,o,d){const{worldId:a}=r,s=document.createElement("div");return s.dataset.worldId=a,s.dataset.vgaiRootSurface="true",d&&(s.dataset.vgaiCanvasScene="true"),s.style.position="absolute",s.style.top="0",s.style.left="0",s.style.width="100%",s.style.height="100%",s.style.zIndex=String(o),s.style.contain="layout paint",N(s,a,r.kind),B(s),n.appendChild(s),s}function B(n){if(n.dataset.vgaiCanvasScene==="true"){n.style.transform="",n.style.width="100%",n.style.height="100%";return}if(n.style.transform=ue(fe())??"",n.style.transformOrigin="0 0",n.dataset.vgaiReactStoryBoard==="true")return;const r=ye();n.style.width=r.width===null?"100%":`${r.width}px`,n.style.height=r.height===null?"100%":`${r.height}px`}function Te(n,r,o,d,a,s,b){s?s.canvasSceneView.reset():te(),ge();const k=se();if(!s&&k?.config.resolution&&we(k.config.resolution.width,k.config.resolution.height),o.playState!=="stopped"){let e=!1,t=!1;const i=o.subscribe(()=>{e||t||o.playState!=="stopped"||(t=!0,e||W())});return()=>{e=!0,i()}}const j=k?.rootPath,M=d?[...d]:L(r);if(M.length===0||!j)return()=>{};const H=j,y=oe(M.map(e=>({id:e.worldId,zOrder:e.zOrder}))).map(e=>M.find(t=>t.worldId===e.id)),D=new Map(y.map(e=>[e.worldId,e])),u=new Map,g=new Map,C=new Map,R=new Set,O=new Set,z=new Set;let h=!1,p=!1,V=!1;function x(){for(const e of g.values())try{e()}catch(t){E.error(`[design-time-layers] dispose failed: ${t}`,"authoring")}g.clear();for(const e of u.values())e.remove();u.clear();for(const e of y)a?.(e.worldId,null)}function J(){x();for(const e of R){const t=D.get(e);if(!t)continue;const i={id:t.worldId,kind:t.kind,entryOrScenePath:t.path,zOrder:t.zOrder,pausable:t.pausable};r.replaceChild(e,new S(o,i,"Design-time layer suspended by play mode — Stop restores it."))}R.clear(),o.notifyIngestEdit()}function P(e,t,i){const l=I(e.kind);if(!l){O.add(e.worldId);return}O.delete(e.worldId);const f=(C.get(e.worldId)??0)+1;C.set(e.worldId,f);const c=be(n,e,me+t,!!s);u.set(e.worldId,c);const T={projectRootPath:H,store:o,...s?{view:s.canvasSceneView}:{},...b?{activationDocumentId:b}:{}};(async()=>l.mount(e,c,T))().then(w=>{if(h||p||C.get(e.worldId)!==f){w.dispose();return}if(w.adapter)$(r,e.worldId)&&(r.replaceChild(e.worldId,w.adapter),R.add(e.worldId)),a?.(e.worldId,w.adapter);else if(w.pick){const v={id:e.worldId,kind:e.kind,entryOrScenePath:e.path,zOrder:e.zOrder,pausable:e.pausable};r.replaceChild(e.worldId,new S(o,v,void 0,w.pick)),R.add(e.worldId)}g.set(e.worldId,w.dispose),F(e.worldId),o.notifyIngestEdit(),i?.()}).catch(w=>{if(C.get(e.worldId)!==f||(i?.(),c.remove(),u.get(e.worldId)===c&&u.delete(e.worldId),h||p))return;const v=ie(w);E.error(`[design-time-layers] world "${e.worldId}" (${e.kind}) failed to mount: ${v}`,"authoring");const ee={id:e.worldId,kind:e.kind,entryOrScenePath:e.path,zOrder:e.zOrder,pausable:e.pausable};a?.(e.worldId,null),$(r,e.worldId)&&r.replaceChild(e.worldId,new S(o,ee,v)),de({worldId:e.worldId,kind:e.kind,identity:l.identity,message:v}),o.notifyIngestEdit()})}y.forEach((e,t)=>{P(e,t)});function K(e,t){const i=g.get(e.worldId);g.delete(e.worldId);const l=u.get(e.worldId);u.delete(e.worldId),P(e,t,()=>{const c=u.get(e.worldId);if(c&&(c.style.visibility=""),i)try{i()}catch(T){E.error(`[design-time-layers] re-projection dispose failed: ${T}`,"authoring")}l?.remove()});const f=u.get(e.worldId);f&&f!==l&&(f.style.visibility="hidden")}function X(e,t){const i=g.get(e.worldId);if(g.delete(e.worldId),i)try{i()}catch(f){E.error(`[design-time-layers] remount dispose failed: ${f}`,"authoring")}const l=u.get(e.worldId);l&&(l.remove(),u.delete(e.worldId)),P(e,t)}const m=new Map;function A(){for(const[e,t]of m)I(e.kind)!==e&&(t(),m.delete(e));for(const e of ce()){if(m.has(e)||I(e.kind)!==e||!y.some(l=>l.kind===e.kind))continue;const t=[],i=l=>()=>{h||p||o.playState!=="stopped"||y.forEach((f,c)=>{f.kind===e.kind&&l(f,c)})};e.remountWhen&&t.push(e.remountWhen(i(X))),e.reprojectWhen&&t.push(e.reprojectWhen(i(K))),m.set(e,()=>{for(const l of t)l()})}}A();const Y=pe(()=>{h||p||o.playState!=="stopped"||(y.forEach((e,t)=>{O.has(e.worldId)&&I(e.kind)&&(z.delete(e.worldId),F(e.worldId),P(e,t))}),A())}),Z=re(()=>{if(h||p)return;let e=!1;for(const t of y){if(!O.has(t.worldId)||z.has(t.worldId)||I(t.kind)||(z.add(t.worldId),!$(r,t.worldId)))continue;const i={id:t.worldId,kind:t.kind,entryOrScenePath:t.path,zOrder:t.zOrder,pausable:t.pausable};r.replaceChild(t.worldId,new S(o,i,`No package in this editor registered a design-time mount for a "${t.kind}" world, so there is nothing here to author it with. A build ships the packages its own entry in \`builds/\` lists.`)),e=!0}e&&o.notifyIngestEdit()}),G=ne(()=>{for(const e of u.values())B(e)}),Q=he(()=>{for(const e of u.values())B(e)}),U=o.subscribe(()=>{if(!p&&o.playState!=="stopped"){p=!0,J();return}if(p&&!V&&o.playState==="stopped"&&!h){V=!0,h||W();return}if(!p)for(const[e,t]of u)N(t,e,D.get(e)?.kind??"dom")});return()=>{h=!0;for(const e of m.values())e();m.clear(),Y(),Z(),U(),G(),Q(),x()}}export{Ee as a,Me as d,Te as m,ze as p,Pe as r};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/design-time-react-mount-DM9WLrF2.js","assets/design-time-layers-wYgOTgni.js","assets/index-GIL7oGEO.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/three.module-D396a9Mn.js","assets/index-D2fNXpHa.css","assets/edit-mode-authoring-B47TfLqu.js","assets/design-time-mount-registry-DUpXCg1U.js","assets/react-story-board-BDDwiE2H.js","assets/crash-null-boundary-v3a0uEgw.js","assets/realm-services-CobQsq_X.js","assets/canvas-entry-runtime-SfBxaR9M.js","assets/world-state-BWG-IcOd.js","assets/debug-registry-Dgvitx8M.js","assets/frame-selector-cache-cCeUbcjG.js","assets/three-ingest-runtime-QzDYk6tU.js","assets/EffectComposer-DQxfsXBZ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-QYRpPuFJ.js","assets/CSS3DRenderer-CL7ABLVK.js","assets/react-root-CEz5NTck.js","assets/StoryPreviewMount-DjyxRCXu.js","assets/story-presentation-j2AVN-mK.js","assets/inspect-BZfi3mmo.js","assets/inference-diagnostics-Dhmtfbq_.js","assets/assets-BuSoGjBX.js","assets/loader-CaF_I7Yt.js","assets/game-loop-CZvXlY00.js","assets/frame-pacing-D5acoOzO.js","assets/game-DHOZVb-7.js","assets/loop-gate-report-N52EWFGD.js","assets/system-slot-E2mEdiih.js","assets/user-data-BB2Of6Ht.js","assets/object-marks-DwvIEBOK.js","assets/seeded-random-i3mtgBKZ.js","assets/render-seed-DF4JHy7P.js","assets/sim-clock-CLflx7kg.js","assets/system-runner-DkOjxEBt.js","assets/performance-profiler-D_Jey87L.js","assets/input-manager-DH_hGW6d.js","assets/asset-parse-error-BHMwBRU3.js","assets/binding-identity-DcTpbvyg.js","assets/prompt-labels-DSMdM2_B.js","assets/schema-kl9-2B_J.js","assets/gameplay-rng-trap-CTNhm-UW.js","assets/state-bridge-DLP1jLRW.js","assets/react-world-authoring-adapter-DmrwM3py.js","assets/board-guides-DziKSTss.js","assets/writer-B-KovzkA.js","assets/story-arg-descriptors-Ek86ExX7.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as i}from"./index-GIL7oGEO.js";import{r as m}from"./design-time-mount-registry-DUpXCg1U.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"./three.module-D396a9Mn.js";const y="workspace.service";function D(){return m({kind:"dom",owner:"@volter/editor-game/react/design-time-mount",identity:"default-react",mount:async(e,r,t)=>{const{mountReactDesignLayer:o}=await i(async()=>{const{mountReactDesignLayer:n}=await import("./design-time-react-mount-DM9WLrF2.js");return{mountReactDesignLayer:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]));return o(e,r,t)},reprojectWhen:e=>{let r=!1,t=null;return i(()=>import("./design-time-react-mount-DM9WLrF2.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56])).then(o=>{r||(t=o.reprojectWhenStoriesRepublish(e))}),()=>{r=!0,t?.(),t=null}}})}export{y as point,D as start};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as st,a as lt}from"./design-time-layers-wYgOTgni.js";import{eB as mt,bG as ut,dk as dt,fi as ct,fj as pt,V as x,fk as ft,fl as Y,bv as U,fm as z,av as ht,eI as H,aw as j,db as gt,cS as bt,fn as J}from"./index-GIL7oGEO.js";import{d as wt,s as yt,g as St}from"./react-story-board-BDDwiE2H.js";import{C as vt}from"./crash-null-boundary-v3a0uEgw.js";import{r as It,b as Pt,a as Rt}from"./realm-services-CobQsq_X.js";import{r as Mt}from"./react-root-CEz5NTck.js";import{m as Ct}from"./StoryPreviewMount-DjyxRCXu.js";import{c as xt,s as Et}from"./story-presentation-j2AVN-mK.js";import{c as Nt}from"./inspect-BZfi3mmo.js";import{createAssetCache as kt}from"./assets-BuSoGjBX.js";import{createGameLoop as Ft}from"./game-loop-CZvXlY00.js";import{createGame as Tt}from"./game-DHOZVb-7.js";import{R as X}from"./react-world-authoring-adapter-DmrwM3py.js";import"./edit-mode-authoring-B47TfLqu.js";import"./design-time-mount-registry-DUpXCg1U.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"./three.module-D396a9Mn.js";import"./canvas-entry-runtime-SfBxaR9M.js";import"./world-state-BWG-IcOd.js";import"./debug-registry-Dgvitx8M.js";import"./frame-selector-cache-cCeUbcjG.js";import"./three-ingest-runtime-QzDYk6tU.js";import"./EffectComposer-DQxfsXBZ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-QYRpPuFJ.js";import"./CSS3DRenderer-CL7ABLVK.js";import"./inference-diagnostics-Dhmtfbq_.js";import"./loader-CaF_I7Yt.js";import"./frame-pacing-D5acoOzO.js";import"./loop-gate-report-N52EWFGD.js";import"./system-slot-E2mEdiih.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./seeded-random-i3mtgBKZ.js";import"./render-seed-DF4JHy7P.js";import"./sim-clock-CLflx7kg.js";import"./system-runner-DkOjxEBt.js";import"./performance-profiler-D_Jey87L.js";import"./input-manager-DH_hGW6d.js";import"./asset-parse-error-BHMwBRU3.js";import"./binding-identity-DcTpbvyg.js";import"./prompt-labels-DSMdM2_B.js";import"./schema-kl9-2B_J.js";import"./gameplay-rng-trap-CTNhm-UW.js";import"./state-bridge-DLP1jLRW.js";import"./board-guides-DziKSTss.js";import"./writer-B-KovzkA.js";import"./story-arg-descriptors-Ek86ExX7.js";function At(e){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="svg"||o==="SVG"||o==="PICTURE")return!0;const r=getComputedStyle(e);if(r.visibility==="hidden"||r.display==="none")return!1;if($t(r.backgroundColor)||r.backgroundImage&&r.backgroundImage!=="none"||r.boxShadow&&r.boxShadow!=="none"||r.borderStyle!=="none"&&r.borderStyle!==""&&(parseFloat(r.borderTopWidth)>0||parseFloat(r.borderRightWidth)>0||parseFloat(r.borderBottomWidth)>0||parseFloat(r.borderLeftWidth)>0))return!0;for(const n of e.childNodes)if(n.nodeType===Node.TEXT_NODE&&(n.textContent??"").trim()!=="")return!0;return!1}function $t(e){if(!e||e==="transparent")return!1;const o=/^rgba\(\s*[\d.]+\s*,\s*[\d.]+\s*,\s*[\d.]+\s*,\s*([\d.]+)\s*\)$/.exec(e);return o?parseFloat(o[1])>0:!0}function jt(e,o=r=>r.getBoundingClientRect()){const r=o(e),n=e.offsetWidth;if(r.width<=0||n<=0)return null;const s=r.width/n;let u=Number.POSITIVE_INFINITY,c=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,y=Number.NEGATIVE_INFINITY;for(const p of e.querySelectorAll("*")){if(!At(p))continue;const d=o(p);d.width<=0||d.height<=0||(u=Math.min(u,(d.left-r.left)/s),c=Math.min(c,(d.top-r.top)/s),i=Math.max(i,(d.right-r.left)/s),y=Math.max(y,(d.bottom-r.top)/s))}return i<=u||y<=c?null:{x:u,y:c,width:i-u,height:y-c}}let E=!1;function Bt(e,o){if(!e)return;J({adapter:e,seam:"editor.stories.apply",stage:"effect",detail:`the design board applied portable story ${o}`,run:()=>e.stories.apply(o,o)});const r=e.selection;r&&J({adapter:e,seam:"editor.selection.set",stage:"effect",detail:`the design board selected portable story ${o}`,run:()=>r.set([o])})}let K=!1;async function Vt(){if(K)return;K=!0;const e=St();if(!(e.width!==null||e.height!==null))try{const o=await bt("vgai.project.json");if(!o)return;const r=JSON.parse(o),n=r.resolution?.width,s=r.resolution?.height;if(typeof n!="number"||typeof s!="number"||n<64||s<64||n>4096||s>4096)return;yt(n,s)}catch{}}function Wt(){const e=Ft({fixedTimestep:.016666666666666666,maxSubSteps:8,update:()=>{}});return Tt({loop:e,assets:kt()})}function Gt(e,o){return{id:e,surface:"dom",description:void 0,adapter:{type:"builtin",identity:"dom",surface:"dom"},entry:o,zOrder:0,pausable:!0,loop:"gated"}}async function Dt(e,o){try{const r=await Rt(o,gt());return{ok:!0,Entry:await Mt(e,r)}}catch(r){return{ok:!1,error:r}}}async function _e(e,o,r){const{projectRootPath:n,store:s,activationDocumentId:u}=r;E?E=!1:await mt({rootPath:n});const c=ut(),i=dt(c),y=e.path,p=y?await Dt(Gt(e.worldId,y),n):{ok:!1,error:new Error(`design-time react layer "${e.worldId}": no \`entry\` declared — nothing to mount.`)},d=p.ok?ct(p.Entry):void 0,Z=d?pt(d,e.path):null,B=i.find(g=>g.id===Z?.id)??null;if(i.length>0&&!e.entryOnly){const g=st(n,e.worldId),I=i.find(t=>t.id===g)??B??i[0];e.path&&!B&&x.warn(`[design-time-layers] React root "${e.worldId}" has no story naming its entry component${d?` "${d}"`:""} — the board opens on "${I.label}". Give a *.stories.tsx a \`meta.component\` of this root's entry component to choose its default preview.`,"authoring");let F=!1,M=null,T=null;const A=new Map,D=xt(i);await Vt();const l=wt(o,i.map(t=>({id:t.id,label:t.label,modulePath:t.modulePath,...t.title?{title:t.title}:{},parameters:t.parameters,...t.globals?{globals:t.globals}:{},...t.viewportLocked!==void 0?{viewportLocked:t.viewportLocked}:{}})),I.id,(t,m)=>{T=m,Bt(M,t)},Et(i,D)),O=t=>{if(F)return;const m=l.frames.get(t.id);if(!m)return;if(t.parameters?.layout==="fullscreen"){l.setMeasuredFrame(t.id,null);return}const a={width:m.content.offsetWidth,height:m.content.offsetHeight},h=a.width>0?jt(m.content):null;if(!h){l.setMeasuredFrame(t.id,null);return}const C=8,S=48;let b=Math.max(0,h.x-C),w=Math.max(0,h.y-C),P=Math.min(a.width,h.x+h.width+C),R=Math.min(a.height,h.y+h.height+C);if(P-b<S){const $=(S-(P-b))/2;b=Math.max(0,b-$),P=Math.min(a.width,b+S)}if(R-w<S){const $=(S-(R-w))/2;w=Math.max(0,w-$),R=Math.min(a.height,w+S)}if(P-b>=a.width*.9&&R-w>=a.height*.9){l.setMeasuredFrame(t.id,null);return}l.setMeasuredFrame(t.id,{frame:{width:Math.round(P-b),height:Math.round(R-w)},mount:a,offset:{x:Math.round(b),y:Math.round(w)}})},it=t=>{setTimeout(()=>O(t),0),setTimeout(()=>O(t),1e3)},_=async(t,m=t.args)=>{const f=l.frames.get(t.id)?.content;if(f){try{const a=await Ct(f,t.modulePath,t.name,t.Component,m);if(!a)return;if(F){a.unmount();return}A.set(t.id,a),l.clearError(t.id),it(t)}catch(a){const h=U(a);l.setError(t.id,h),x.error(`[design-time-layers] React root "${e.worldId}" failed mounting portable story "${t.name}": ${h}`,"authoring")}s.notifyIngestEdit()}};await Promise.all(i.map(t=>_(t))),l.setNote(ft().note),g&&l.activate(I.id,!0);const L=new Map(i.map(t=>[t.id,t])),at={tagName:"DIV",get children(){return l.activeContent().children},getAttribute:t=>o.getAttribute(t),getBoundingClientRect:()=>o.getBoundingClientRect(),get style(){return o.style},get textContent(){return l.activeContent().textContent}},q=await Y();return M=new X(at,s,{...q?{writeBackend:q}:{},designTokens:()=>{const t=l.activeContent(),m=t.closest?.("[data-vgai-game-styles]")??t.querySelector?.("[data-vgai-game-styles]")??t;return Nt(getComputedStyle(m))},assetRoot:o,portableStories:i.map(t=>({id:t.id,label:t.label,args:t.args,name:t.name,modulePath:t.modulePath})),portableHierarchy:D,activePortableStoryId:I.id,onPortableStoryApplied:t=>{const m=(t?L.get(t):null)??I;lt(n,e.worldId,m.id);const f=T;T=null,l.activate(m.id,f===null||f==="zoom")},onPortableStoryArgsChanged:(t,m)=>{const f=L.get(t);f&&_(f,m).catch(a=>{x.error(`[design-time-layers] React root "${e.worldId}" failed updating portable story "${f.name}" args: ${U(a)}`,"authoring")})}}),u&&requestAnimationFrame(()=>z(u)),{adapter:M,dispose:()=>{F=!0,M.disposeReactRootAdapter();for(const t of A.values())t.unmount();A.clear(),l.dispose()}}}if(!p.ok)throw p.error instanceof Error?p.error:new Error(String(p.error));e.entryOnly||x.warn(`[design-time-layers] React root "${e.worldId}" has no portable CSF preview — the project declares no UI stories. Add a *.stories.tsx; give it a \`meta.component\` of this root's entry component${d?` (${d}, ${e.path})`:""} to make it this root’s default preview. Falling back to the inert-Game preview.`,"authoring");const tt=p.Entry,et=await It(),{createElement:N,createRoot:ot,flushSync:rt}=await Pt(),V=Wt(),k=ot(o),nt=g=>{k.render(N(vt,{key:"__entry__",onCaught:g,children:N(et,{game:V},N(tt))}))};let v=null;if(rt(()=>{nt(g=>{v=g})}),v!==null)throw k.unmount(),v instanceof Error?v:new Error(String(v));const W=await Y(),G=new X(o,s,{...W?{writeBackend:W}:{}});return u&&requestAnimationFrame(()=>z(u)),{adapter:G,dispose:()=>{G.disposeReactRootAdapter(),k.unmount(),V.dispose()}}}function Q(){return j().map(e=>e.ok?e.stories.map(o=>o.id).join(","):`!${e.modulePath}`).join("|")}function Le(e){let o=H()?j():null,r=o===null?null:Q(),n=null;const s=ht(()=>{if(!H())return;const u=j(),c=Q();if(o===null){o=u,r=c;return}const i=c!==r;o=u,r=c,i&&(n!==null&&clearTimeout(n),n=setTimeout(()=>{n=null,E=!0,e(),setTimeout(()=>{E=!1},0)},250))});return()=>{n!==null&&clearTimeout(n),n=null,s()}}export{_e as mountReactDesignLayer,Le as reprojectWhenStoriesRepublish};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ft as M,V as h,aj as S,fu as z,fv as k,eh as I,fw as P,bX as A,b8 as H,fx as y,fy as C,fz as F,fA as N,aF as _,fB as B,fC as W,fD as $}from"./index-GIL7oGEO.js";const x={transform:!1,inspectorFields:!1,persist:!1};class D{capabilities=x;provenance={source:"boundary",label:"read-only",detail:"Declared world without a live editing surface in this viewport — disclosed, not simulated; rows are read-only."};world;reason;store;pickable;constructor(e,t,i,n){this.store=e,this.world=t,this.reason=i??null,n&&(this.pickable={pick:n})}get label(){return this.world.entryOrScenePath?.split("/").pop()??this.world.id}get node(){return{id:this.world.id,label:this.label,secondaryLabel:this.reason?"Unavailable":"Read-only",role:"boundary",kind:this.world.kind,parentId:null,childIds:[]}}hierarchy={roots:()=>[this.node],node:e=>e===this.world.id?this.node:null};selection={get:()=>[...this.store.selectedEntityIds],set:e=>this.store.selectMultiple(e)};inspector={properties:e=>{if(e!==this.world.id)return[];const t=[{path:"kind",label:"Kind",type:"string",readonly:!0}];return this.world.adapter!==void 0&&t.push({path:"adapter",label:"Adapter",type:"string",readonly:!0}),this.world.entryOrScenePath!==void 0&&t.push({path:"path",label:"Entry / Scene",type:"string",readonly:!0}),t.push({path:"zOrder",label:"Z Order",type:"number",readonly:!0},{path:"pausable",label:"Pausable",type:"boolean",readonly:!0}),this.reason&&t.push({path:"reason",label:"Reason",type:"string",readonly:!0}),t},get:(e,t)=>{if(e===this.world.id)switch(t){case"kind":return this.world.kind;case"adapter":return this.world.adapter;case"path":return this.world.entryOrScenePath;case"zOrder":return this.world.zOrder;case"pausable":return this.world.pausable;case"reason":return this.reason??void 0;default:return}},set:(e,t,i)=>{}}}const u=new WeakMap,T=new Set;function j(){for(const r of T)r()}function V(r){const e=(u.get(r)?.generation??0)+1;return u.set(r,{generation:e,settled:!1}),j(),()=>{const t=u.get(r);!t||t.generation!==e||t.settled||(u.set(r,{generation:e,settled:!0}),j())}}const G="(invalid manifest)";let w=!1,g=!1,b=!1,l=null;function f(){if(g||b||!w||!l)return;g=!0;const r=l;queueMicrotask(()=>{if(g=!1,l!==r){f();return}w=!1,b=!0,Promise.resolve().then(r).catch(e=>{h.error(`Edit-mode rebuild failed: ${e instanceof Error?e.message:String(e)}`,"authoring")}).finally(()=>{b=!1,f()})})}function Y(r){return l=r,f(),()=>{l===r&&(l=null)}}function ee(){w=!0,f()}const q=new Set(["three","canvas","dom"]);function d(r){return typeof r=="string"?r:void 0}function J(r){const e=r.world;if(!e||typeof e!="object")return;const t=d(e.entry);if(t)return{entry:t,export:d(e.export)}}function L(r){if(r!=null){if(typeof r=="string")return r;if(typeof r=="object"){const e=r;if(typeof e.module=="string")return`module:${e.module}`;const t=e.ingest;if(t&&typeof t=="object")return"ingest"}}}function K(r){if(!r||typeof r!="object")return null;const e=r.roots;return e===void 0||!Array.isArray(e)?null:{roots:e.map((i,n)=>{const s=i&&typeof i=="object"?i:{},a=s.zOrder,o=s.pausable;return{id:d(s.id)??`(world ${n})`,surface:(typeof s.adapter=="string"?d(s.adapter):void 0)??d(s.adapter&&typeof s.adapter=="object"?s.adapter.surface:void 0)??"(missing adapter surface)",adapter:L(s.adapter),scene:d(s.scene),entry:d(s.entry),zOrder:typeof a=="number"?a:void 0,pausable:typeof o=="boolean"?o:void 0,dev:s.dev===!0,world:J(s)}})}}function U(r){return q.has(r.surface)?!r.scene&&!r.entry?`World "${r.id}" declares neither \`scene\` nor \`entry\` — nothing to mount.`:null:`Unknown world surface "${r.surface}" — expected one of: three, canvas, react.`}function c(r,e){const t=r.roots;if(Array.isArray(t))return t.find(i=>!!i&&typeof i=="object"&&i.id===e)}function O(r,e){return c(r,e)}class Z{raw;synthesizedValue;store;fileHistory;unsubscribeHistory;constructor(e,t,i){this.raw=e,this.synthesizedValue=t,this.store=i;const n=i.projectHistory;this.fileHistory=n?H(n,y(),"project-manifest"):null,this.unsubscribeHistory=this.fileHistory?this.fileHistory.subscribeAll(s=>{s==="vgai.project.json"&&y().readBytes(s).then(a=>JSON.parse(new TextDecoder().decode(a))).then(a=>{for(const o of Object.keys(this.raw))delete this.raw[o];Object.assign(this.raw,a),this.store.notifyIngestEdit()}).catch(()=>{})}):null}getGameName(){const e=this.raw.name;return typeof e=="string"?e:""}get synthesized(){return this.synthesizedValue}setGameName(e){this.raw.name=e,this.persist("Rename Game")}getRootContentSource(e){const t=c(this.raw,e);if(!t)return;const i=t.scene;if(typeof i=="string")return`Scene · ${i}`;const n=t.entry;return typeof n=="string"?`Entry · ${n}`:"Adapter-owned runtime content"}getRootZOrder(e){const t=c(this.raw,e)?.zOrder;return typeof t=="number"?t:0}setRootZOrder(e,t){const i=O(this.raw,e);i&&(i.zOrder=t,this.persist("Change World Order"))}getRootPausable(e){const t=c(this.raw,e)?.pausable;return typeof t=="boolean"?t:!0}setRootPausable(e,t){const i=O(this.raw,e);i&&(i.pausable=t,this.persist("Change World Pausing"))}async materialize(){const e=await this.write("Create Game Manifest");return e&&(this.synthesizedValue=!1),e}dispose(){this.unsubscribeHistory?.()}persist(e){this.synthesized||this.write(e)}async write(e){const t=JSON.stringify(this.raw,null,2);try{if(this.fileHistory)return await this.fileHistory.write("vgai.project.json",t,{label:e,kind:"manifest",contentType:"application/json"}),this.store.notifyIngestEdit(),!0;const i=async()=>{const n=await fetch("/__editor/manifest",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:"vgai.project.json",content:t,...C()})});F(n,"Write vgai.project.json failed"),n.ok||await N(n,{label:"Write vgai.project.json",attempted:{"vgai.project.json":t},reapply:i})};return await i(),this.store.notifyIngestEdit(),!0}catch(i){return this.fileHistory&&y().readBytes("vgai.project.json").then(n=>JSON.parse(new TextDecoder().decode(n))).then(n=>{for(const s of Object.keys(this.raw))delete this.raw[s];Object.assign(this.raw,n),this.store.notifyIngestEdit()}).catch(()=>{}),h.error(`Failed to write vgai.project.json: ${i}`,"project"),!1}}}let v=null;function X(r,e,t){const i=S(e).map(o=>{const p=o.zOrder??0,m=z(o.surface);if(m)return{worldId:o.id,kind:o.surface,adapter:m(r,o.id),zOrder:p};const R=U(o),E={id:o.id,kind:o.surface,adapter:o.adapter,entryOrScenePath:o.scene??o.entry,zOrder:p,pausable:o.pausable??!0};return{worldId:o.id,kind:o.surface,adapter:new D(r,E,R??void 0),zOrder:p}}),n=t&&i.length>=1?new Z(t.raw,t.synthesized,r):void 0;v=n??null;const s=k(_()?.config),a=new I(i,n,s);if(i.length>=1){if(B()&&!W())return h.warn("Edit-mode authoring not installed: a foreign session (ingest/play) owns the authoring override.","authoring"),a;P(a),A(a),r.notifyIngestEdit()}return a}function te(r){r&&$()===r&&A(null),v?.dispose(),v=null}async function re(r){const e=V(r);let t,i;try{const n=await M(),s=n!==null&&K(n);if(s)t=s,i={raw:n,synthesized:!1};else throw new Error("manifest has no `roots` array (zero roots is fine; a missing field is not)")}catch(n){const s=n instanceof Error?n.message:String(n);h.error(`Failed to load vgai.project.json: ${s}`,"project"),t={roots:[{id:"manifest",surface:G,adapter:s}]}}try{return X(r,t,i)}finally{e()}}export{D as B,G as I,Y as b,te as e,re as i,K as p,ee as q};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Z as e,a2 as r,ca as i,cb as a,cc as p,cd as m}from"./index-GIL7oGEO.js";import{ce as It,cf as $t,cg as Ot,ch as Ut,ci as Bt,cj as Ht,ck as qt,ba as Jt,cl as Mt,cm as Vt,cn as Zt,co as zt,cp as Kt,b6 as Nt,cq as Qt,cr as Xt,cs as Yt,ct as _t,cu as te,cv as ee,cw as re,cx as oe,cy as se,cz as ie,cA as ae,cB as pe,cC as me,cD as ce,cE as ne,cF as de,cG as le,cH as ge,cI as Ee,cJ as ue,cK as ye,cL as Se,cM as Pe,cN as be,cO as je,cP as ve,cQ as fe,cR as he,cS as ke,cT as Ae,cU as we,cV as Ce,cW as Re,cX as xe,cY as Fe,cZ as Le,c_ as We,b7 as Te,c$ as Ge,d0 as De,d1 as Ie,d2 as $e,d3 as Oe,d4 as Ue,d5 as Be,d6 as He}from"./index-GIL7oGEO.js";import{l as Je,m as Me,o as Ve}from"./play-mode-BFU2PCkG.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"./three.module-D396a9Mn.js";import"./native-debug-module-CWicoSGD.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-Dgvitx8M.js";import"./playtest-BXIL1JEF.js";import"./game-contract-seams-a5YXejOu.js";import"./instruments-CKR02Y8I.js";import"./frame-pacing-D5acoOzO.js";import"./edit-mode-authoring-B47TfLqu.js";import"./json-history-resource-BbxllWfV.js";import"./binding-resolver-Dsh-6Vor.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-Cq8Yeb74.js";import"./r3f-root-factory-z9llD1OU.js";import"./register-render-vitals-BiZk29b2.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-B13QEH7d.js";import"./webgl-frame-capture-FlF9zQmW.js";import"./world-state-BWG-IcOd.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-CIQdetRw.js";import"./seeded-random-i3mtgBKZ.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-ErOhDXXB.js";import"./index-bQE2NA0D.js";import"./realm-services-CobQsq_X.js";import"./canvas-entry-runtime-SfBxaR9M.js";import"./three-ingest-runtime-QzDYk6tU.js";import"./EffectComposer-DQxfsXBZ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-QYRpPuFJ.js";import"./CSS3DRenderer-CL7ABLVK.js";import"./relative-path-guard-GiM7Lsz8.js";import"./capability-coverage-Czas4C18.js";import"./react-root-CEz5NTck.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./active-ingest-CT6jSGhr.js";import"./ingest-source-persistence-C_6Hiyra.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-CWsE56K6.js";import"./mounted-authoring-Dmg5xmhP.js";import"./three-CDSueJyJ.js";import"./viewport-pick-context-DkawXbEi.js";import"./logger-Dqis-7W1.js";import"./run-ticks-settled-C4ksViyA.js";import"./three-authoring-adapter-CmSQ3Vui.js";import"./source-persistence-backend-C-aR-B_Y.js";import"./three-projection-core-BmKMZ-nf.js";import"./body-marks-h_xDxiDE.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./structural-ids-Dc-7rEwi.js";import"./object3d-authoring-subject-CH5sI2oP.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-BBo8oma9.js";import"./deferred-ingest-play-DCJi_Pgu.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DmrwM3py.js";import"./board-guides-DziKSTss.js";import"./writer-B-KovzkA.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BZfi3mmo.js";import"./inference-diagnostics-Dhmtfbq_.js";async function Lt(){try{const t=await fetch(`${e}/examples`);return(await r(t,`GET ${e}/examples failed`)).examples}catch{return[]}}function Wt(t){return t.startsWith("/")?t:`${e}/learn-thumbnail?file=${encodeURIComponent(t)}`}async function Tt(){const t=await fetch(`${e}/templates`);return(await r(t,`GET ${e}/templates failed`)).templates}export{It as AssetDeliveryError,m as abortGameplayRecordingSink,$t as adaptProjectFolder,Ot as appendGameplayRecordingAsset,a as appendGameplayRecordingChunk,Ut as appendGameplayRecordingDomEvents,Bt as archiveEditorWorktree,Ht as assetDeliveryIssueMessage,i as beginGameplayRecordingSink,qt as browseFolder,Jt as captureProjectAssetHistory,Mt as connectEvents,Vt as connectTabPresence,Zt as createEditorWorktree,zt as createProject,Kt as delegateEditorTask,Nt as downloadOnlineAsset,Je as endLogSession,Qt as exportIsolatedEditorWorktree,p as finishGameplayRecordingSink,Me as flushLogEntries,Xt as getAssetLibraryCategories,Yt as getCurrentServerProject,_t as getDownloadUrl,te as getDownloadedAssetPath,ee as getEditorCompatibility,re as getEditorRepositoryPresence,oe as getEditorSessionWorktreeIdentity,se as getLauncherSettings,ie as getOnlineAssetFiles,ae as getOnlineAssetPreview,pe as getServerValidationLog,me as inspectProjectFolder,ce as isolatedEditorWorktreeLogs,Wt as learnThumbnailUrl,ne as listAssets,de as listEditorWorktrees,Lt as listExamples,le as listProjectComponents,ge as listProjectSourceFiles,Ee as listRecentProjects,Tt as listTemplates,ue as loadDownloadedAssets,ye as loadEditorState,Se as onAssetDownloaded,Pe as openEditorWorktree,be as openProjectOnServer,je as pollEditorLeaseIdentity,ve as probeCurrentServerProject,fe as probeProjectFile,he as projectFileExists,ke as readProjectTextFile,Ae as removeRecentProject,we as reportCommandListener,Ce as reportCommandReceived,Re as reportCommandResult,xe as reportEditorState,Fe as reportPlayBootPhase,Le as reportTabRoute,We as requireEditorCompatibility,Te as restoreProjectAssetHistory,Ge as revealInFinder,De as saveEditorState,Ie as saveFile,$e as saveThumbnail,Oe as searchOnlineAssets,Ve as startLogSession,Ue as stopEditorWorktreeSession,Be as stopIsolatedEditorWorktree,He as updateLauncherSettings};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
fflate - fast JavaScript compression/decompression
|
|
3
|
-
<https://101arrowz.github.io/fflate>
|
|
4
|
-
Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
|
|
5
|
-
version 0.8.2
|
|
6
|
-
*/var t=Uint8Array,T=Uint16Array,br=Int32Array,er=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),nr=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),hr=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ir=function(r,a){for(var e=new T(31),v=0;v<31;++v)e[v]=a+=1<<r[v-1];for(var i=new br(e[30]),v=1;v<30;++v)for(var b=e[v];b<e[v+1];++b)i[b]=b-e[v]<<5|v;return{b:e,r:i}},vr=ir(er,2),fr=vr.b,gr=vr.r;fr[28]=258,gr[258]=28;var Fr=ir(nr,0),kr=Fr.b,R=new T(32768);for(var f=0;f<32768;++f){var x=(f&43690)>>1|(f&21845)<<1;x=(x&52428)>>2|(x&13107)<<2,x=(x&61680)>>4|(x&3855)<<4,R[f]=((x&65280)>>8|(x&255)<<8)>>1}var M=(function(r,a,e){for(var v=r.length,i=0,b=new T(a);i<v;++i)r[i]&&++b[r[i]-1];var g=new T(a);for(i=1;i<a;++i)g[i]=g[i-1]+b[i-1]<<1;var h;if(e){h=new T(1<<a);var p=15-a;for(i=0;i<v;++i)if(r[i])for(var m=i<<4|r[i],F=a-r[i],n=g[r[i]-1]++<<F,o=n|(1<<F)-1;n<=o;++n)h[R[n]>>p]=m}else for(h=new T(v),i=0;i<v;++i)r[i]&&(h[i]=R[g[r[i]-1]++]>>15-r[i]);return h}),U=new t(288);for(var f=0;f<144;++f)U[f]=8;for(var f=144;f<256;++f)U[f]=9;for(var f=256;f<280;++f)U[f]=7;for(var f=280;f<288;++f)U[f]=8;var or=new t(32);for(var f=0;f<32;++f)or[f]=5;var xr=M(U,9,1),Ar=M(or,5,1),P=function(r){for(var a=r[0],e=1;e<r.length;++e)r[e]>a&&(a=r[e]);return a},u=function(r,a,e){var v=a/8|0;return(r[v]|r[v+1]<<8)>>(a&7)&e},Q=function(r,a){var e=a/8|0;return(r[e]|r[e+1]<<8|r[e+2]<<16)>>(a&7)},pr=function(r){return(r+7)/8|0},zr=function(r,a,e){return(e==null||e>r.length)&&(e=r.length),new t(r.subarray(a,e))},yr=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],c=function(r,a,e){var v=new Error(a||yr[r]);if(v.code=r,Error.captureStackTrace&&Error.captureStackTrace(v,c),!e)throw v;return v},Tr=function(r,a,e,v){var i=r.length,b=0;if(!i||a.f&&!a.l)return e||new t(0);var g=!e,h=g||a.i!=2,p=a.i;g&&(e=new t(i*3));var m=function(d){var rr=e.length;if(d>rr){var ar=new t(Math.max(rr*2,d));ar.set(e),e=ar}},F=a.f||0,n=a.p||0,o=a.b||0,A=a.l,D=a.d,C=a.m,E=a.n,I=i*8;do{if(!A){F=u(r,n,1);var O=u(r,n+1,3);if(n+=3,O)if(O==1)A=xr,D=Ar,C=9,E=5;else if(O==2){var G=u(r,n,31)+257,V=u(r,n+10,15)+4,W=G+u(r,n+5,31)+1;n+=14;for(var S=new t(W),H=new t(19),l=0;l<V;++l)H[hr[l]]=u(r,n+l*3,7);n+=V*3;for(var X=P(H),lr=(1<<X)-1,tr=M(H,X,1),l=0;l<W;){var Y=tr[u(r,n,lr)];n+=Y&15;var w=Y>>4;if(w<16)S[l++]=w;else{var z=0,B=0;for(w==16?(B=3+u(r,n,3),n+=2,z=S[l-1]):w==17?(B=3+u(r,n,7),n+=3):w==18&&(B=11+u(r,n,127),n+=7);B--;)S[l++]=z}}var Z=S.subarray(0,G),k=S.subarray(G);C=P(Z),E=P(k),A=M(Z,C,1),D=M(k,E,1)}else c(1);else{var w=pr(n)+4,_=r[w-4]|r[w-3]<<8,q=w+_;if(q>i){p&&c(0);break}h&&m(o+_),e.set(r.subarray(w,q),o),a.b=o+=_,a.p=n=q*8,a.f=F;continue}if(n>I){p&&c(0);break}}h&&m(o+131072);for(var ur=(1<<C)-1,cr=(1<<E)-1,J=n;;J=n){var z=A[Q(r,n)&ur],y=z>>4;if(n+=z&15,n>I){p&&c(0);break}if(z||c(2),y<256)e[o++]=y;else if(y==256){J=n,A=null;break}else{var $=y-254;if(y>264){var l=y-257,s=er[l];$=u(r,n,(1<<s)-1)+fr[l],n+=s}var K=D[Q(r,n)&cr],N=K>>4;K||c(3),n+=K&15;var k=kr[N];if(N>3){var s=nr[N];k+=Q(r,n)&(1<<s)-1,n+=s}if(n>I){p&&c(0);break}h&&m(o+131072);var j=o+$;if(o<k){var L=b-k,wr=Math.min(k,j);for(L+o<0&&c(3);o<wr;++o)e[o]=v[L+o]}for(;o<j;++o)e[o]=e[o-k]}}a.l=A,a.p=J,a.b=o,a.f=F,A&&(F=1,a.m=C,a.d=D,a.n=E)}while(!F);return o!=e.length&&g?zr(e,0,o):e.subarray(0,o)},mr=new t(0),Cr=function(r,a){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&c(6,"invalid zlib data"),(r[1]>>5&1)==1&&c(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2};function sr(r,a){return Tr(r.subarray(Cr(r),-4),{i:2},a,a)}var Er=typeof TextDecoder<"u"&&new TextDecoder,Sr=0;try{Er.decode(mr,{stream:!0}),Sr=1}catch{}export{sr as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{eJ as o,eK as s,aG as c,dG as u}from"./index-GIL7oGEO.js";import{E as f,a as E,F as g,c as h}from"./instance-fork-actions-D3sRzS3K.js";function i(e,n){return o(e,n)}function F(e,n){const t=c(e);return E(t.hierarchy.node(n),i(t,n),n)}let r=null;function M(){r||(r=s(({nodeId:e,store:n})=>F(n,e),({nodeId:e,store:n})=>{const t=i(c(n),e);return[{label:f,action:()=>{t?.extractComponent?.(e).then(u)}}]}))}function k(){r?.(),r=null}function l(e,n){return o(e,n)}function m(e,n){const t=c(e);return h(t.hierarchy.node(n),l(t,n),n)}let a=null;function b(){a||(a=s(({nodeId:e,store:n})=>m(n,e),({nodeId:e,store:n})=>{const t=l(c(n),e);return[{label:g,action:()=>{t?.forkComponent?.(e).then(u)}}]}))}function A(){a?.(),a=null}export{i as a,b,A as c,M as e,l as i,k as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{lb as ht,lc as be,ld as gt,fP as vt,aY as X,le as yt,lf as we,lg as xt,lh as Se,a4 as H,a5 as ue,li as bt,lj as wt,aa as J,ab as O,ad as de,lk as St,a9 as $e,ll as jt,lm as Et,dZ as Te,aF as ze,gq as Mt,gr as It,gs as Rt,gt as Dt,q as ie,ao as h,V as Pt,fW as Ct,fX as je,fZ as At,ln as Ft,e6 as Ne,kX as _t,fr as kt,lo as $t,p as Ge}from"./index-GIL7oGEO.js";import{a as s}from"./jsx-runtime-DPjLkJKQ.js";import{r}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{u as Tt,d as zt,c as Nt}from"./frame-debugger-store-D1Mf_5up.js";import{meterPercent as Gt}from"./audio-meter-CyiToeUW.js";import{p as Oe}from"./utility-view-state-BHypxA33.js";import{P as Ot}from"./PlayBar-BR-Vg3Jb.js";import{a as Ee,R as Vt}from"./ResolutionPicker-C67vs1F3.js";import{setUserData as Ve}from"./user-data-BB2Of6Ht.js";import{D as pe,E as Ht,F as ne,G as Bt,H as He,I as Be,J as Le,K as We,u as Lt,v as Wt,L as me,t as Y,M as Ut,N as qt,O as Xt,P as se,Q as Ue,R as Me,S as qe,T as Kt,U as Xe,i as Yt,V as Zt,W as Ie,X as Jt,a as Ke,Y as Qt}from"./play-mode-BFU2PCkG.js";import{bJ as en,z as Ye,ap as tn,aZ as nn,H as sn,aX as fe,M as Re,cq as on,V as W,bh as rn,aB as Ze,aC as De,a_ as an,b1 as ln}from"./three.module-D396a9Mn.js";import{e as cn,S as un}from"./surface-state-DaxyruCj.js";import{d as dn}from"./surface-content-Dg9Kkazf.js";import{resolvePresentedSize as pn,fitPresentation as mn}from"./presentation-BPP5pXeQ.js";import{a as fn,X as Je}from"./active-ingest-CT6jSGhr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./configurations-DTBMdaTL.js";import"./ingest-source-persistence-C_6Hiyra.js";import"./capability-coverage-Czas4C18.js";import"./game-contract-seams-a5YXejOu.js";import"./object-marks-DwvIEBOK.js";import"./native-debug-module-CWicoSGD.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-Dgvitx8M.js";import"./playtest-BXIL1JEF.js";import"./instruments-CKR02Y8I.js";import"./frame-pacing-D5acoOzO.js";import"./edit-mode-authoring-B47TfLqu.js";import"./json-history-resource-BbxllWfV.js";import"./binding-resolver-Dsh-6Vor.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-Cq8Yeb74.js";import"./r3f-root-factory-z9llD1OU.js";import"./register-render-vitals-BiZk29b2.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-B13QEH7d.js";import"./webgl-frame-capture-FlF9zQmW.js";import"./world-state-BWG-IcOd.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-CIQdetRw.js";import"./seeded-random-i3mtgBKZ.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-ErOhDXXB.js";import"./index-bQE2NA0D.js";import"./realm-services-CobQsq_X.js";import"./canvas-entry-runtime-SfBxaR9M.js";import"./three-ingest-runtime-QzDYk6tU.js";import"./EffectComposer-DQxfsXBZ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-QYRpPuFJ.js";import"./CSS3DRenderer-CL7ABLVK.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-CEz5NTck.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./pixi-story-model-DNkfnWUV.js";import"./viewport-root-presentation-CWsE56K6.js";import"./mounted-authoring-Dmg5xmhP.js";import"./three-CDSueJyJ.js";import"./viewport-pick-context-DkawXbEi.js";import"./logger-Dqis-7W1.js";import"./run-ticks-settled-C4ksViyA.js";import"./three-authoring-adapter-CmSQ3Vui.js";import"./source-persistence-backend-C-aR-B_Y.js";import"./three-projection-core-BmKMZ-nf.js";import"./body-marks-h_xDxiDE.js";import"./structural-ids-Dc-7rEwi.js";import"./object3d-authoring-subject-CH5sI2oP.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-BBo8oma9.js";import"./deferred-ingest-play-DCJi_Pgu.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DmrwM3py.js";import"./board-guides-DziKSTss.js";import"./writer-B-KovzkA.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BZfi3mmo.js";import"./inference-diagnostics-Dhmtfbq_.js";const Qe=8,oe=1e3/60;function hn(e,t=Qe){return!(e>0)||t<=0?0:Math.min(t,Math.max(1,Math.round(Gt(e)/100*t)))}function Pe(e,t){const n=e.filter(a=>a.id>t),o=n.at(-1)?.id??t,i=n.map(a=>a.intervalMs).filter(a=>Number.isFinite(a)&&a>0).sort((a,m)=>a-m);if(i.length===0)return{frameId:o,intervalMs:null};const l=Math.floor((i.length-1)*.95);return{frameId:o,intervalMs:i[l]??null}}function gn(e){const t=e.slice(-3);return t.slice(-2).length===2&&t.slice(-2).every(n=>n>=50)?"danger":t.length===3&&t.every(n=>n>oe*1.05)?"warning":"normal"}function vn(e,t,n,o=50){if(e.length===0||t<=0||n<=0)return"";const i=Math.max(1,e.length-1);return e.map((l,a)=>{const m=a/i*t,d=Math.min(1,Math.max(0,l/o)),g=n-d*n;return`${m.toFixed(1)},${g.toFixed(1)}`}).join(" ")}const et="editor:muted",Ce={enabled:!1,recording:!1,fps:0,cpuMs:0,p95Ms:0,p99Ms:0,frames:[],phases:[],systems:[],components:[],render:{gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:0}};function Ae(){try{return localStorage.getItem(et)==="1"}catch{return!1}}function yn(e){try{localStorage.setItem(et,e?"1":"0")}catch{}}function xn(e,t){const n=t.find(i=>i.id==="master")?.level;if(!e.isMuted()&&n!==void 0)return n;const o=t.filter(i=>i.id!=="master").map(i=>i.level);return o.length>0?Math.max(...o):n??0}function bn(){const e=X();r.useSyncExternalStore(e.subscribe,e.getShellSnapshot??e.getSnapshot);const t=e.playState==="playing",[n,o]=r.useState(!1),[i,l]=r.useState(0),[a,m]=r.useState(!1),[d,g]=r.useState(!1),[u,T]=r.useState(Ae),R=r.useRef(Ae()),E=r.useRef(new WeakMap),x=r.useRef(null),D=r.useSyncExternalStore(yt,we,we),v=xt();r.useEffect(()=>{const p=R.current||!t;for(const f of Se())E.current.get(f)!==p&&(f.setMuted(p),E.current.set(f,p))},[D,t]),r.useEffect(()=>{if(!v){l(0),m(!1),g(!1);return}const p=v.acquireMeters?.()??null;g(p!==null);const f=()=>{m(v.isMuted()),l(p?xn(v,p.read()):0)};f();const A=setInterval(f,100);return()=>{clearInterval(A),p?.dispose()}},[v]);const M=()=>{const p=!R.current,f=p||!t;for(const A of Se())A.resume?.(),A.setMuted(f),E.current.set(A,f);R.current=p,T(p),yn(p),m(f)},P=hn(i),z=v&&a&&!u&&!t?" (not playing)":"",C=v?a?"Audio muted":i>0?"Audio playing":"Audio quiet":"Audio unavailable";return s.jsxs("div",{className:"vgai-header-audio","data-muted":a||void 0,"data-available":!!v,children:[s.jsxs(H,{ref:x,type:"button",variant:"ghost",size:"compact",className:"vgai-header-telemetry-button","data-testid":"header-audio-telemetry","aria-label":`${C}; open audio controls`,"aria-haspopup":"menu","aria-expanded":n,title:`${C}${z}${d?"":" · level metering unavailable"}`,onClick:()=>o(p=>!p),children:[s.jsx(ue,{icon:a?bt:wt,size:"sm"}),s.jsx("span",{className:"vgai-audio-vu","aria-hidden":"true",children:Array.from({length:Qe},(p,f)=>s.jsx("i",{"data-filled":f<P||void 0},f))})]}),n&&s.jsx(J,{anchorRef:x,onDismiss:()=>o(!1),gap:3,children:s.jsx(O,{onClick:()=>{M(),o(!1)},children:u?"Unmute audio":"Mute audio"})})]})}function wn(){const e=Tt(),t=e?.profiler??null,[n,o]=r.useState(Ce),[i,l]=r.useState([]);r.useEffect(()=>{if(!t){o(Ce),l([]);return}const R=t.telemetryEnabled;t.telemetryEnabled=!0;const E=t.getSnapshot(),x=Pe(E.frames,0);let D=x.frameId;o(E),l(x.intervalMs===null?[]:[x.intervalMs]);let v=null;const M=()=>{v=null;const z=t.getSnapshot(),C=Pe(z.frames,D);D=C.frameId,o(z);const p=C.intervalMs;p!==null&&l(f=>[...f,p].slice(-24))},P=t.subscribe(()=>{v===null&&(v=setTimeout(M,500))});return()=>{P(),v!==null&&clearTimeout(v),R||(t.telemetryEnabled=!1)}},[t]);const a=i.at(-1)??null,m=vn(i,72,18),d=a?Math.round(1e3/a):n.fps>0?Math.round(n.fps):null,g=a??(n.fps>0?1e3/n.fps:null),u=gn(i),T=e?`${e.label}: ${d??"—"} FPS · ${g?.toFixed(1)??"—"} ms frame time · open Profiler`:"The active document has no live render loop to profile";return s.jsxs(H,{type:"button",variant:"ghost",size:"compact",className:"vgai-header-telemetry-button vgai-header-performance","data-testid":"header-performance-telemetry","data-performance-tone":u,disabled:!e,"aria-label":T,title:T,onClick:()=>Oe.open("profiler"),children:[s.jsxs("svg",{className:"vgai-performance-graph","aria-hidden":"true",viewBox:"0 0 72 18",width:"72",height:"18",children:[s.jsx("line",{className:"vgai-performance-budget",x1:"0",x2:"72",y1:18-oe/50*18,y2:18-oe/50*18}),m&&s.jsx("polyline",{className:"vgai-performance-sparkline",points:m})]}),s.jsxs("span",{className:"vgai-performance-readout",children:[s.jsxs("strong",{className:"vgai-header-fps",children:[d??"—"," FPS"]}),s.jsxs("span",{className:"vgai-header-frame-ms",children:[g?.toFixed(1)??"—"," ms"]})]})]})}function Sn(){return r.useSyncExternalStore(ht,be,be),gt().telemetry==="hidden"?null:s.jsxs(vt,{className:"vgai-header-telemetry vgai-chrome-island vgai-glass-island","data-island-scale":"compact",align:"center",gap:1,children:[s.jsx(bn,{}),s.jsx(wn,{})]})}let Z=!1,re=0,w=null,N=null;const jn=new en(1,1,1,16,1,!0),En=new Ye({color:2280686,transparent:!0,opacity:.45,side:tn,depthWrite:!1}),Mn=new nn({color:16755200,transparent:!0,opacity:.9}),In=new sn(.12,12,8),Rn=new Ye({color:16755200,depthWrite:!1}),Dn=16724804,Pn=2280686;let $=[];function Fe(){return Z}function Cn(e){e!==Z&&(Z=e,e?re=requestAnimationFrame(tt):(cancelAnimationFrame(re),_n()))}function tt(){if(!Z)return;re=requestAnimationFrame(tt);const e=pe(),t=e?de().navigation?.crowdAgents?.()??[]:[];if(e!==N&&(N&&w&&N.remove(w),N=e,e&&(w||(w=new fe,w.name="crowd-debug-draw",Ve(w,"editorHelper",!0)),e.add(w))),!(!w||!e)){An(w,t.length);for(let n=0;n<t.length;n++)Fn($[n],t[n])}}function An(e,t){for(;$.length<t;){const n=new fe,o=En.clone(),i=new Re(jn,o),l=new on(new W(1,0,0),new W,1,16755200),a=new rn(new Ze,Mn),m=new Re(In,Rn);n.add(i),n.add(l),e.add(n),e.add(a),e.add(m),$.push({root:n,cylinder:i,cylinderMaterial:o,arrow:l,path:a,target:m})}for(;$.length>t;){const n=$.pop();e.remove(n.root),e.remove(n.path),e.remove(n.target),n.arrow.dispose(),n.path.geometry.dispose(),n.cylinderMaterial.dispose()}}function Fn(e,t){e.root.position.set(t.position.x,t.position.y,t.position.z),e.cylinder.scale.set(t.radius,t.height,t.radius),e.cylinder.position.y=t.height/2,e.cylinderMaterial.color.setHex(t.state==="invalid"?Dn:Pn);const n=t.corners??[];n.length>0?(e.path.visible=!0,e.path.geometry.setFromPoints([new W(t.position.x,t.position.y+.05,t.position.z),...n.map(i=>new W(i.x,i.y+.05,i.z))])):e.path.visible=!1,t.target&&n.length>0?(e.target.visible=!0,e.target.position.set(t.target.x,t.target.y+.05,t.target.z)):e.target.visible=!1;const o=Math.hypot(t.velocity.x,t.velocity.y,t.velocity.z);o>.01?(e.arrow.visible=!0,e.arrow.position.y=t.height/2,e.arrow.setDirection(new W(t.velocity.x/o,t.velocity.y/o,t.velocity.z/o)),e.arrow.setLength(Math.max(o*.5,.2))):e.arrow.visible=!1}function _n(){if(w){N?.remove(w);for(const e of $)e.arrow.dispose();w.clear()}$=[],w=null,N=null}function kn({onPresetChange:e}){const[t,n]=r.useState(!1),o=r.useRef(null),i=He(),l=i.kind==="fit";return s.jsxs("div",{className:"vgai-playbar-popover-anchor",children:[s.jsxs(H,{ref:o,variant:"ghost",size:"comfortable","aria-haspopup":"menu","aria-expanded":t,"aria-controls":t?"vgai-device-preset-menu":void 0,"data-testid":"device-preset-picker",onClick:()=>n(a=>!a),title:"Device preview — constrain the game to a device resolution + DPR. Phone/tablet presets show the safe area, set --vgai-safe-area-inset-top/right/bottom/left CSS vars on the game mount, and send mouse input as touch.",children:[s.jsx(ue,{icon:St,size:"md"}),s.jsx($e,{variant:"code",children:l?"Device":`${i.width}×${i.height}`})]}),t&&s.jsxs(J,{id:"vgai-device-preset-menu",anchorRef:o,className:"vgai-resolution-menu",gap:4,onDismiss:()=>n(!1),children:[Ht.map(a=>s.jsx(O,{role:"menuitemradio","aria-checked":a.id===i.id,"data-testid":`device-preset-${a.id}`,onSelect:()=>{e(a),n(!1)},children:a.label},a.id)),s.jsxs(O,{role:"menuitemcheckbox","aria-checked":ne(),"data-testid":"device-touch-toggle",onSelect:()=>Bt(!ne()),children:[ne()?"✓ ":" ","Pointer as touch"]})]})]})}function $n(){const e=jt(()=>Et()??null),n=zt(e)?.capture===!0;return s.jsx(H,{type:"button",size:"compact",variant:"ghost","data-testid":"game-capture-frame",className:"vgai-frame-capture-game-button",disabled:!n,title:n?"Capture one rendered frame and open the Frame debugger":"No render-debug adapter registered for this world — frame capture is unavailable",onClick:()=>{Nt(e),Oe.open("frame")},children:"Capture frame"})}let nt={label:"Fill",width:null,height:null},ae=1,st=0;const le=new Set;function V(){st++;for(const e of le)e()}function it(e){return le.add(e),()=>{le.delete(e)}}const ot=()=>st;function rt(){return nt}function at(e){nt=e,V()}function lt(e,t){return e.width!==null||!t?e:{label:`Project — ${t.width}×${t.height}`,width:t.width,height:t.height}}function Tn(e){return e?[lt({label:"Fill",width:null,height:null},e),...Ee.filter(t=>t.width!==null)]:Ee}function ct(e){Be(e.id),at(e.width===null||e.height===null?{label:"Fill",width:null,height:null}:{label:e.label,width:e.width,height:e.height})}function zn(e){e!==ae&&(ae=e,V())}function Nn(){return ae}function ut(e){return Array.from(e.children).filter(t=>t.dataset?.vgaiRootSurface==="true")}function Gn(e,t,n){for(const o of t)o.contains(e)||e.appendChild(o);if(n)for(const o of ut(n))e.appendChild(o)}function On({name:e}){return s.jsx("div",{"data-testid":"game-instance-name",style:{flex:"0 0 auto",padding:"3px 10px",background:h.surface.chrome,color:h.content.primary,borderBottom:`1px solid ${h.boundary.default}`,fontSize:11,fontWeight:600,userSelect:"none"},children:e})}function dt({name:e,testId:t,borderLeft:n,focused:o,onFocus:i,children:l}){return s.jsxs("div",{"data-testid":t,"data-focused":o||void 0,onPointerDownCapture:i,style:{flex:1,minWidth:0,height:"100%",display:"flex",flexDirection:"column",overflow:"hidden",position:"relative",cursor:i&&!o?"pointer":void 0,...n?{borderLeft:`1px solid ${h.boundary.default}`}:{}},children:[s.jsx(On,{name:e}),s.jsx("div",{style:{flex:1,minHeight:0,position:"relative",display:"flex",alignItems:"center",justifyContent:"center"},children:l}),o&&s.jsx("div",{"aria-hidden":!0,style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:40,border:`2px solid ${h.accent.default}`,boxShadow:`inset 0 0 0 1px ${h.accent.default}`}})]})}function Vn({index:e}){const t=r.useRef(null),n=qe(e+1),o=r.useSyncExternalStore(Xe,Yt),[i,l]=r.useState(null),a=r.useSyncExternalStore(me,Y);return r.useEffect(()=>{const m=t.current;if(!m||!o)return;let d=null,g=!1;return Zt(m,n).then(u=>{g?Ie(u):(d=u,l(u))},u=>{Pt.error(`Failed to mount ${n}: ${u}`,"play-mode")}),()=>{g=!0,l(null),d&&Ie(d)}},[e,o]),s.jsx(dt,{name:n,testId:`game-instance-slot-${e+1}`,borderLeft:!0,focused:i!=null&&a===i,onFocus:i?()=>Ue(i):void 0,children:s.jsx("div",{ref:t,"data-vgai-instance-viewport":"",style:{position:"absolute",inset:0}})})}function Hn({style:e}){const t=r.useSyncExternalStore(Te,ze),o=X().playState!=="stopped",i=r.useRef(null);r.useSyncExternalStore(it,ot),r.useSyncExternalStore(Le,We);const l=r.useSyncExternalStore(Lt,Wt),a=l>0,m=r.useSyncExternalStore(me,Y),d=He(),g=rt(),[u,T]=r.useState({width:0,height:0}),[R,E]=r.useState(0),x=r.useRef(null),D=r.useSyncExternalStore(Mt,It),v=r.useSyncExternalStore(Rt,Dt),M=Kt(),P=fn(),z=M.length>0?M.map(c=>c.rootId):P?[P.worldId]:D.filter(c=>c.mechanism==="host-mount").map(c=>c.rootId),C=!!(x.current&&dn(x.current)),p=M.length>0?M.some(c=>c.hasRenderableContent):C,f=M.length>0||P!==null,A=o?cn({surface:"Game",rootIds:z,phase:f?"ready":"loading",content:f?p?"present":"empty":"unknown",readiness:D,failures:v}):null;r.useEffect(()=>{if(!o||!f||p)return;const c=window.setTimeout(()=>E(y=>y+1),250);return()=>window.clearTimeout(c)},[R,p,o,f]),r.useEffect(()=>{const c=i.current;if(!c||typeof MutationObserver>"u")return;const y=new MutationObserver(()=>E(I=>I+1));return y.observe(c,{childList:!0,subtree:!0,characterData:!0}),()=>y.disconnect()},[]),r.useEffect(()=>{const c=Ut();c.width!==null&&(ct(c),V())},[]);const Q=r.useRef([]),he=r.useCallback(c=>{if(c===x.current)return;!c&&x.current&&(Q.current=ut(x.current)),c&&(Gn(c,Q.current,x.current),Q.current=[]);const y=x.current;x.current=c,c?ie().workspace.liveDocument.setContainer(c):y&&ie().workspace.liveDocument.releaseContainer(y),c?qt(c):y&&Xt(y)},[]);r.useEffect(()=>{const c=i.current;if(!c)return;const y=new ResizeObserver(([I])=>{if(!I)return;const{width:K,height:xe}=I.contentRect;T(te=>te.width===K&&te.height===xe?te:{width:K,height:xe})});return y.observe(c),()=>y.disconnect()},[]);const mt=t?.config.resolution,F=pn(g,mt),ge=F.kind==="fill",ft=ge||a,B=F.kind==="logical"?F.width:null,L=F.kind==="logical"?F.height:null,ve=d.dpr;r.useEffect(()=>{const c=ve??Jt();a?u.width>0&&u.height>0&&se(u.width/(l+1),u.height,c):B===null||L===null?u.width>0&&u.height>0&&se(u.width,u.height,c):se(B,L,c)},[B,L,u.width,u.height,ve,o,a,l]);const ee=mn(u,{width:B??0,height:L??0},{allowUpscale:F.kind==="logical"&&F.allowUpscale}),_=ge?1:ee.scale;r.useEffect(()=>{zn(_)},[_]);const b=d.safeArea,ye={"--vgai-safe-area-inset-top":`${b?.top??0}px`,"--vgai-safe-area-inset-right":`${b?.right??0}px`,"--vgai-safe-area-inset-bottom":`${b?.bottom??0}px`,"--vgai-safe-area-inset-left":`${b?.left??0}px`};return s.jsx("div",{style:{overflow:"hidden",position:"relative",flexDirection:"column",...e},children:s.jsxs("div",{ref:i,style:{flex:1,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center",position:"relative"},children:[(()=>{const c=ft?s.jsx("div",{ref:he,"data-testid":"game-runtime-container","aria-hidden":"true",style:{position:"absolute",inset:0,...o?{}:{visibility:"hidden"},...ye}},"game-mount-fill"):s.jsxs("div",{style:{position:"relative",width:ee.width,height:ee.height,overflow:"hidden",...o?{}:{visibility:"hidden"}},children:[s.jsx("div",{ref:he,"data-testid":"game-runtime-container","aria-hidden":"true",style:{width:B??0,height:L??0,transformOrigin:"top left",transform:`scale(${_})`,...ye}}),b&&s.jsx("div",{"data-testid":"device-safe-area-overlay",style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:2},children:[["top",b.top,{top:0,left:0,right:0,height:b.top*_}],["bottom",b.bottom,{bottom:0,left:0,right:0,height:b.bottom*_}],["left",b.left,{top:0,bottom:0,left:0,width:b.left*_}],["right",b.right,{top:0,bottom:0,right:0,width:b.right*_}]].map(([y,I,K])=>I>0?s.jsx("div",{"data-testid":`device-safe-area-${y}`,style:{position:"absolute",...K,background:h.semantic.dangerFaint,boxShadow:`inset 0 0 0 1px ${h.semantic.dangerMuted}`}},y):null)})]},"game-mount-device");return a?s.jsxs(s.Fragment,{children:[s.jsx(dt,{name:qe(0),testId:"game-instance-slot-0",focused:m===Me(),onFocus:()=>Ue(Me()),children:c}),Array.from({length:l},(y,I)=>s.jsx(Vn,{index:I},I))]}):c})(),!o&&s.jsxs("div",{"data-testid":"game-stopped-placeholder",style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:6,background:h.surface.shell,color:h.content.dim,fontSize:11,pointerEvents:"none"},children:[s.jsx("span",{style:{color:h.content.primary,fontSize:13},children:"Game is stopped"}),s.jsx("span",{children:"Press Play to start the composed runtime."})]}),o&&s.jsx(un,{explanation:A,testId:"game-surface-status",style:{zIndex:30,background:h.surface.shell}})]})})}function _e(){return Ke().map(({id:e,name:t})=>`${e}\0${t}`).join("")}function Bn({instanceId:e}){const t=X();r.useSyncExternalStore(t.subscribe,t.getSnapshot,t.getSnapshot);const n=r.useSyncExternalStore(me,Y,Y),[,o]=r.useState(0);r.useEffect(()=>{const g=window.setInterval(()=>o(u=>u+1),250);return()=>window.clearInterval(g)},[]);const i=Je(e),l=$t(),a=i?(i.loop.activeTimeouts??0)+(i.loop.activeIntervals??0)+(i.loop.activeAnimationFrames??0)+i.loop.pending:0,m=i?i.listeners.window+i.listeners.document:0,d=[["Mount",e],["Simulation",t.playState==="paused"?"Paused":"Running"],["Input",n===e?"Keyboard focus":"Inactive"],["Input events",i?`${i.loop.input??0} observed · ${i.loop.inputBlocked??0} blocked`:"Not measured"],["Network",l?l.getConnectionState?.()??"Not reported by this adapter":"Not registered"],["Owned callbacks",String(a)],["Owned listeners",String(m)],["Realm globals",String(i?.globals??0)],["Browser storage",i?`Shared origin · ${i.storage.local.reads+i.storage.session.reads} reads · ${i.storage.local.writes+i.storage.session.writes} writes`:"Shared origin"]];return s.jsx("div",{role:"none",style:{display:"grid",gridTemplateColumns:"112px minmax(120px, 1fr)",gap:"4px 12px",padding:"8px 10px",fontSize:10,lineHeight:"15px"},children:d.map(([g,u])=>s.jsxs("div",{style:{display:"contents"},children:[s.jsx("span",{style:{color:h.content.dim},children:g}),s.jsx("span",{style:{color:h.content.primary,fontFamily:g==="Mount"?h.typography.mono:void 0,overflow:"hidden",textOverflow:"ellipsis"},children:u})]},g))})}function Ln(){r.useSyncExternalStore(Xe,_e,_e),r.useSyncExternalStore(Ct,je,je);const e=Ke(),t=At(),n=e.find(d=>d.id===t)??e[0],[o,i]=r.useState(!1),l=r.useRef(null);if(e.length<2||!n)return null;const m=(Je(n.id)?.loop.firedWhileHeld??0)>0;return s.jsxs("div",{className:"vgai-playbar-popover-anchor",children:[s.jsxs(H,{ref:l,variant:"ghost",size:"compact","aria-haspopup":"menu","aria-expanded":o,onClick:()=>i(d=>!d),title:`Runtime instruments inspect ${n.name}; agent-addressed commands are unchanged`,children:[s.jsx(ue,{icon:Ft,size:"sm",style:{color:m?h.semantic.warning:void 0}}),s.jsxs($e,{variant:"code",children:["Inspect ",n.name]}),s.jsx(Ne,{direction:"down"})]}),o&&s.jsxs(J,{anchorRef:l,gap:3,onDismiss:()=>i(!1),style:{minWidth:270},children:[e.map(d=>s.jsxs(O,{role:"menuitemradio","aria-checked":d.id===n.id,onSelect:()=>_t(d.id),children:[d.id===n.id?"✓ ":" ",d.name]},d.id)),s.jsx(kt,{}),s.jsx(Bn,{instanceId:n.id})]})]})}let q=!1,ce=0,S=null,G=null,U=null,j=null,k=0;function ke(){return q}function Wn(e){e!==q&&(q=e,e?ce=requestAnimationFrame(pt):(cancelAnimationFrame(ce),U?.setDebugDrawEnabled?.(!1),Kn()))}function pt(){if(!q)return;ce=requestAnimationFrame(pt);const e=pe(),t=e?Ge(de().physics):null;if(t!==U&&(U?.setDebugDrawEnabled?.(!1),U=t,t?.setDebugDrawEnabled?.(!0)),Un(e),!S||!e)return;const n=t?.contactPoints?.()??null;qn(S,n)}function Un(e){e!==G&&(G&&S&&G.remove(S),G=e,e&&(S||(S=new fe,S.name="physics-debug-draw",Ve(S,"editorHelper",!0)),e.add(S)))}function qn(e,t){const n=t?t.length/3:0;if(!j){k=64;const l=new Ze;l.setAttribute("position",new De(new Float32Array(k*3),3));const a=new an({color:16724821,size:10,sizeAttenuation:!1,depthTest:!1,transparent:!0,opacity:.95});j=new ln(l,a),j.renderOrder=999,j.frustumCulled=!1,e.add(j)}const o=j.geometry;if(n>k){for(;k<n;)k*=2;o.setAttribute("position",new De(new Float32Array(k*3),3))}const i=o.getAttribute("position");t&&n>0&&i.array.set(t),i.needsUpdate=!0,o.setDrawRange(0,n),j.visible=n>0}function Xn(){const e=pe(),n=(e?Ge(de().physics):null)?.debugDraw?.()??null;let o=!1;n&&e&&e.traverse(a=>{a===n&&(o=!0)});const i=n?.geometry.getAttribute("position"),l=j?.geometry.drawRange.count??0;return{enabled:q,wireframeInScene:o,wireframeVisible:n?.visible??!1,wireframeVertexCount:i?.count??0,contactMarkerCount:j?.visible&&Number.isFinite(l)?l:0}}typeof window<"u"&&(window.__vgaiPhysicsDebug=Xn);function Kn(){S&&(G?.remove(S),j&&(j.geometry.dispose(),j.material.dispose()),S.clear()),j=null,k=0,S=null,G=null,U=null}function Yn(){const[e,t]=r.useState(!1),n=r.useRef(null);return s.jsxs("div",{style:{position:"relative"},children:[s.jsxs(H,{ref:n,type:"button",variant:"outline",size:"compact","data-testid":"game-debug-menu","aria-haspopup":"menu","aria-expanded":e,"aria-controls":e?"vgai-game-debug-menu":void 0,onClick:()=>t(o=>!o),children:[s.jsx("span",{children:"Debug"}),s.jsx(Ne,{direction:"down"})]}),e&&s.jsxs(J,{id:"vgai-game-debug-menu",anchorRef:n,gap:3,onDismiss:()=>t(!1),style:{minWidth:190},children:[s.jsxs(O,{onClick:()=>{Cn(!Fe()),V()},children:[Fe()?"✓ ":" ","Crowd debug draw"]}),s.jsxs(O,{onClick:()=>{Wn(!ke()),V()},children:[ke()?"✓ ":" ","Physics debug draw"]})]})]})}function Zn(e){const t=r.useSyncExternalStore(Te,ze),n=X();return r.useSyncExternalStore(n.subscribe,n.getShellSnapshot??n.getSnapshot),r.useSyncExternalStore(it,ot),r.useSyncExternalStore(Le,We),s.jsxs("div",{"data-testid":"game-doc-toolbar",style:{display:"grid",alignItems:"center",gridTemplateColumns:"minmax(0, 1fr) auto minmax(0, 1fr)",width:"100%",gap:6,padding:"2px 8px"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",minWidth:0,overflow:"auto"},children:[s.jsx(Ln,{}),s.jsx(kn,{onPresetChange:o=>{ct(o),V()}}),s.jsx(Vt,{resolution:lt(rt(),t?.config.resolution),options:Tn(t?.config.resolution),onResolutionChange:o=>{Be(Qt),at(o)},scale:Nn(),title:"Change game resolution"}),s.jsx(Yn,{}),n.playState!=="stopped"&&s.jsx($n,{})]}),s.jsx(Ot,{placement:"runtime"}),s.jsx("div",{style:{display:"flex",justifyContent:"flex-end",minWidth:0},children:s.jsx(Sn,{})})]})}function Jn(e){const t=X();r.useSyncExternalStore(t.subscribe,t.getShellSnapshot??t.getSnapshot);const n=t.playState!=="stopped";return s.jsxs("div",{style:{flex:1,position:"relative",display:"flex",flexDirection:"column"},children:[s.jsx(Hn,{style:{flex:1,position:"relative",display:"flex",flexDirection:"column",pointerEvents:"auto",...t.playState==="playing"?{outline:`2px solid ${h.semantic.success}`,outlineOffset:-2}:n?{outline:`2px solid ${h.semantic.warning}`,outlineOffset:-2}:{}}}),t.playState==="paused"&&s.jsx("div",{"data-testid":"game-paused-notice",style:{position:"absolute",left:"50%",top:12,transform:"translateX(-50%)",padding:"6px 12px",borderRadius:6,background:"rgba(0,0,0,.72)",color:h.content.primary,fontSize:12,letterSpacing:".04em",pointerEvents:"none",zIndex:2},children:"Paused by the editor — press ▶ Play to resume (Escape pauses)"})]})}const Ai="workspace.service";function Fi(){return ie().workspace.liveDocument.register({Content:Jn,Toolbar:Zn})}export{Ai as point,Fi as start};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createGameModuleResolver as k,setFocusedInstanceProvider as M}from"./game-module-access-B2mFxv-i.js";import{n as d}from"./command-results-CUQD49AB.js";import{i as g}from"./active-ingest-CT6jSGhr.js";import{i as y,q as h,t as w}from"./play-mode-BFU2PCkG.js";import"./index-GIL7oGEO.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"./three.module-D396a9Mn.js";import"./game-contract-seams-a5YXejOu.js";import"./capability-coverage-Czas4C18.js";import"./ingest-source-persistence-C_6Hiyra.js";import"./playtest-BXIL1JEF.js";import"./native-debug-module-CWicoSGD.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-Dgvitx8M.js";import"./instruments-CKR02Y8I.js";import"./frame-pacing-D5acoOzO.js";import"./edit-mode-authoring-B47TfLqu.js";import"./json-history-resource-BbxllWfV.js";import"./binding-resolver-Dsh-6Vor.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-Cq8Yeb74.js";import"./r3f-root-factory-z9llD1OU.js";import"./register-render-vitals-BiZk29b2.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-B13QEH7d.js";import"./webgl-frame-capture-FlF9zQmW.js";import"./world-state-BWG-IcOd.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-CIQdetRw.js";import"./seeded-random-i3mtgBKZ.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-ErOhDXXB.js";import"./index-bQE2NA0D.js";import"./realm-services-CobQsq_X.js";import"./canvas-entry-runtime-SfBxaR9M.js";import"./three-ingest-runtime-QzDYk6tU.js";import"./EffectComposer-DQxfsXBZ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-QYRpPuFJ.js";import"./CSS3DRenderer-CL7ABLVK.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-CEz5NTck.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-CWsE56K6.js";import"./mounted-authoring-Dmg5xmhP.js";import"./three-CDSueJyJ.js";import"./viewport-pick-context-DkawXbEi.js";import"./logger-Dqis-7W1.js";import"./run-ticks-settled-C4ksViyA.js";import"./three-authoring-adapter-CmSQ3Vui.js";import"./source-persistence-backend-C-aR-B_Y.js";import"./three-projection-core-BmKMZ-nf.js";import"./body-marks-h_xDxiDE.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./structural-ids-Dc-7rEwi.js";import"./object3d-authoring-subject-CH5sI2oP.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-BBo8oma9.js";import"./deferred-ingest-play-DCJi_Pgu.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DmrwM3py.js";import"./board-guides-DziKSTss.js";import"./writer-B-KovzkA.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BZfi3mmo.js";import"./inference-diagnostics-Dhmtfbq_.js";class E extends Error{member;supported;constructor(e,r,o){super(`playwright-shim: ${e}.${r} is not supported by the in-page shim. Supported ${e} members: ${o.join(", ")}. This shim is DOM-only — canvas gameplay input must use game.input.*, while React-only DOM games may use Page keyboard/locator input. See packages/editor/src/playwright-shim.ts for the full supported subset and the wire's closure-capture limitation.`),this.name="PageShimUnsupportedError",this.member=r,this.supported=o}}function b(t,e){const r=Object.keys(t);return new Proxy(t,{get(o,i,n){if(typeof i=="symbol"||i in o)return Reflect.get(o,i,n);throw new E(e,i,r)}})}function m(t){return t.replace(/\s+/g," ").trim()}function O(t){const e=t.tagName.toLowerCase();if(e==="button")return"button";if(e==="a"&&t.hasAttribute("href"))return"link";if(/^h[1-6]$/.test(e))return"heading";if(e==="textarea")return"textbox";if(e==="select")return"combobox";if(e==="img")return"img";if(e==="input"){const r=(t.getAttribute("type")??"text").toLowerCase();return r==="button"||r==="submit"||r==="reset"?"button":r==="checkbox"?"checkbox":r==="radio"?"radio":"textbox"}return null}function v(t){return t.getAttribute("role")??O(t)}function S(t){const e=t.getAttribute("aria-label");return e&&e.trim()?m(e):m(t.textContent??"")}function T(t,e){if(e===void 0)return!0;const r=S(t);return e instanceof RegExp?e.test(r):r===e}function x(t,e,r){return Array.from(t.querySelectorAll("*")).filter(i=>v(i)===e&&T(i,r?.name))}function I(t,e){const r=Array.from(t.querySelectorAll("*")).filter(n=>n.tagName!=="SCRIPT"&&n.tagName!=="STYLE"),o=n=>{const s=m(n.textContent??"");return s.length===0?!1:e instanceof RegExp?e.test(s):s.includes(e)},i=r.filter(o);return i.filter(n=>!i.some(s=>s!==n&&n.contains(s)))}function C(t,e){return Array.from(t.querySelectorAll("[data-testid]")).filter(r=>{const o=r.getAttribute("data-testid")??"";return e instanceof RegExp?e.test(o):o===e})}function L(t){if(!(t instanceof HTMLElement))return!0;if(t.hidden)return!1;const e=getComputedStyle(t);return e.display!=="none"&&e.visibility!=="hidden"&&e.opacity!=="0"}function _(t){const e=t.getBoundingClientRect?.()??{left:0,top:0,width:0,height:0},r=e.left+e.width/2,o=e.top+e.height/2,i={bubbles:!0,cancelable:!0,clientX:r,clientY:o,button:0};typeof PointerEvent<"u"&&t.dispatchEvent(new PointerEvent("pointerdown",{...i,pointerId:1,isPrimary:!0})),t.dispatchEvent(new MouseEvent("mousedown",i)),typeof PointerEvent<"u"&&t.dispatchEvent(new PointerEvent("pointerup",{...i,pointerId:1,isPrimary:!0})),t.dispatchEvent(new MouseEvent("mouseup",i)),t.dispatchEvent(new MouseEvent("click",i))}function N(t){const e=t instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(e,"value");return o=>{r?.set?r.set.call(t,o):t.value=o}}function G(t,e){if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))throw new Error(`playwright-shim: fill() target is not an <input>/<textarea> (got <${t.tagName.toLowerCase()}>)`);t.focus(),N(t)(e),t.dispatchEvent(new Event("input",{bubbles:!0})),t.dispatchEvent(new Event("change",{bubbles:!0}))}const l=new Set(["Alt","Control","Meta","Shift"]);function p(t){return t!=="ControlOrMeta"?t:/Mac|iPhone|iPad/.test(navigator.platform)?"Meta":"Control"}function B(t){return/^[a-z]$/i.test(t)?`Key${t.toUpperCase()}`:/^[0-9]$/.test(t)?`Digit${t}`:t===" "?"Space":t}function K(t){const e=document.activeElement;return e instanceof HTMLElement&&t.contains(e)?e:t}function f(t,e,r,o){K(t).dispatchEvent(new KeyboardEvent(e,{key:r,code:B(r),bubbles:!0,cancelable:!0,altKey:o.has("Alt"),ctrlKey:o.has("Control"),metaKey:o.has("Meta"),shiftKey:o.has("Shift")}))}function F(t){const e=new Set,r=async i=>{const n=p(i);e.add(n),f(t,"keydown",n,e)},o=async i=>{const n=p(i);f(t,"keyup",n,e),e.delete(n)};return{down:r,up:o,async press(i){const n=i.split("+").map(p),s=n.filter(c=>l.has(c)),a=n.find(c=>!l.has(c));for(const c of s)await r(c);a&&(await r(a),await o(a));for(const c of s.reverse())await o(c)}}}function R(t){const e=[];function r(o,i){const n=v(o);if(n){const a=S(o);e.push(`${" ".repeat(i)}- ${n}${a?` "${a}"`:""}`)}const s=n?i+1:i;for(const a of Array.from(o.children))r(a,s)}for(const o of Array.from(t.children))r(o,0);return e.join(`
|
|
2
|
-
`)}function u(t,e){const r=i=>{const n=t()[0];if(!n)throw new Error(`playwright-shim: ${i}() found no element for ${e}`);return n};return b({async click(){_(r("click"))},async fill(i){G(r("fill"),i)},async textContent(){const i=t()[0];return i?i.textContent??null:null},async evaluate(i,n){return i(r("evaluate"),n)},async count(){return t().length},async waitFor(i){const n=i?.timeout??5e3,s=i?.state??"visible",a=Date.now()+n;for(;;){const c=t()[0];if(c&&(s==="attached"||L(c)))return;if(Date.now()>=a)throw new Error(`playwright-shim: waitFor() timed out after ${n}ms waiting for ${e} to be ${s}`);await new Promise(P=>setTimeout(P,50))}},first(){return u(()=>t().slice(0,1),`${e}.first()`)},nth(i){return u(()=>{const n=t()[i];return n?[n]:[]},`${e}.nth(${i})`)},async ariaSnapshot(){return R(r("ariaSnapshot"))}},"Locator")}async function D(t,e){if(typeof t=="function")return t(e);if(typeof t=="string")return new Function("arg",`return (${t})(arg)`)(e);throw new Error("playwright-shim: evaluate() requires a function or a function-source string")}function A(t){const e={keyboard:F(t),evaluate:async(r,o)=>D(r,o),locator:r=>u(()=>Array.from(t.querySelectorAll(r)),`locator(${JSON.stringify(r)})`),getByRole:(r,o)=>u(()=>x(t,r,o),`getByRole(${JSON.stringify(r)}${o?.name!==void 0?`, {name: ${JSON.stringify(String(o.name))}}`:""})`),getByText:r=>u(()=>I(t,r),`getByText(${JSON.stringify(String(r))})`),getByTestId:r=>u(()=>C(t,r),`getByTestId(${JSON.stringify(String(r))})`),click:async r=>{await e.locator(r).click()},fill:async(r,o)=>{await e.locator(r).fill(o)},ariaSnapshot:async()=>R(t)};return b(e,"Page")}const ge="workspace.command";typeof window<"u"&&(M(w),window.__vgaiGameEval=async(t,e)=>{const r=await $({src:t,...e===void 0?{}:{instance:e}});if(!r.ok)throw new Error(r.error??"game-eval failed");return r.data?.result??null});async function $(t){if(!y()&&!g())return d();const e=t.src;if(typeof e!="string")return{ok:!1,error:`game-eval requires a string "src" (the step's toString())`};const r=h();if(!r)return{ok:!1,error:"game-eval: no play-mode game container is mounted yet",data:{code:"GAME_EVAL_ERROR"}};const o=t.instance,i=typeof o=="string"?o:void 0;let n;try{n=new Function("scope",`return (${e})(scope)`)}catch(a){return{ok:!1,error:`game-eval: failed to reconstruct the step function from source — ${a instanceof Error?a.message:String(a)}`,data:{code:"GAME_EVAL_ERROR"}}}const s={page:A(r),modules:k(i),instanceId:i??w()};try{const a=await n(s),c=a===void 0?null:a;try{JSON.stringify(c)}catch{return{ok:!1,error:`game-eval: the step returned an unserializable value (${Object.prototype.toString.call(c)}) — return plain data (numbers, strings, arrays, plain objects), not live module objects.`,data:{code:"GAME_EVAL_UNSERIALIZABLE"}}}return{ok:!0,data:{result:c}}}catch(a){return{ok:!1,error:`game-eval step failed: ${a instanceof Error?a.stack??a.message:String(a)}`,data:{code:"GAME_EVAL_ERROR"}}}}async function H(t){if(!y()&&!g())return d();const e=t.src;if(typeof e!="string")return{ok:!1,error:`page-script requires a string "src" (the step's toString())`};const r=h();if(!r)return{ok:!1,error:"page-script: no play-mode game container is mounted yet",data:{code:"PAGE_SCRIPT_ERROR"}};let o;try{o=new Function("page",`return (${e})(page)`)}catch(n){return{ok:!1,error:`page-script: failed to reconstruct the step function from source — ${n instanceof Error?n.message:String(n)}`,data:{code:"PAGE_SCRIPT_ERROR"}}}const i=A(r);try{const n=await o(i);return{ok:!0,data:{result:n===void 0?null:n}}}catch(n){return n instanceof E?{ok:!1,error:n.message,data:{code:"PAGE_SHIM_UNSUPPORTED",member:n.member,supported:[...n.supported]}}:{ok:!1,error:`page-script: step threw — ${n instanceof Error?n.message:String(n)}`,data:{code:"PAGE_SCRIPT_ERROR"}}}}const ye={"game-eval":{timeoutMs:6e4,derivedRefresh:"always",handle:$},"page-script":{timeoutMs:6e4,derivedRefresh:"always",handle:H}};export{ye as commands,ge as point};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{R as N,E as P}from"./rrweb-Cd2ifIRP.js";import{Z as C,$ as L,a0 as F,a1 as O}from"./index-GIL7oGEO.js";import{B as U,O as $,W as B,C as D,Q as A,I,a as W,U as H,A as V,b as q}from"./output-DK8waum9.js";function x(e,r){const o=new URLSearchParams({replay:e,file:r});return`${C}/recording/replay-file?${o}`}async function T(e,r){const o=await fetch(x(e,r));if(!o.ok)throw new Error(`could not load replay ${r}: HTTP ${o.status}`);return o.text()}function z(e){return new Promise((r,o)=>{const s=new FileReader;s.onload=()=>r(String(s.result)),s.onerror=()=>o(s.error??new Error("could not read replay asset")),s.readAsDataURL(e)})}async function j(e){let r=await T(e,"events.json");const o=new Set(r.match(/https:\/\/replay-assets\.invalid\/\d{6}\.(?:png|jpg|webp|gif|svg)/g)??[]),s=await Promise.all([...o].map(async a=>{const i=a.split("/").at(-1),n=await fetch(x(e,`assets/${i}`));if(!n.ok)throw new Error(`could not load replay asset ${i}`);return[a,await z(await n.blob())]}));for(const[a,i]of s)r=r.replaceAll(a,i);const t=JSON.parse(r);if(!Array.isArray(t)||t.length===0)throw new Error("replay contains no DOM events");return t}function G(e,r,o){return Math.max(0,e.videoStartEpochMs+o-r[0].timestamp)}function _(e,r,o){const s=e.videoStartEpochMs+o;let t={rect:e.canvas,drawingWidth:e.canvas.drawingWidth,drawingHeight:e.canvas.drawingHeight};for(const a of r){if(a.timestamp>s)break;a.type===P.Custom&&a.data.tag==="vgai-canvas-layout"&&a.data.payload&&typeof a.data.payload=="object"&&"rect"in a.data.payload&&"drawingWidth"in a.data.payload&&"drawingHeight"in a.data.payload&&(t=a.data.payload)}return t}async function J(e,r){await new Promise((o,s)=>{const t=()=>{clearTimeout(n),e.removeEventListener("loadeddata",a),e.removeEventListener("error",i)},a=()=>{t(),o()},i=()=>{t(),s(new Error("replay video failed to load"))},n=setTimeout(()=>{t(),s(new Error("replay video load timed out"))},15e3);e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA?a():(e.addEventListener("loadeddata",a,{once:!0}),e.addEventListener("error",i,{once:!0}))}),!(Math.abs(e.currentTime-r)<.001)&&await new Promise((o,s)=>{const t=()=>{clearTimeout(n),e.removeEventListener("seeked",a),e.removeEventListener("error",i)},a=()=>{t(),o()},i=()=>{t(),s(new Error("replay video seek failed"))},n=setTimeout(()=>{t(),s(new Error("replay video seek timed out"))},15e3);e.addEventListener("seeked",a,{once:!0}),e.addEventListener("error",i,{once:!0}),e.currentTime=r})}async function Q(e){e.fonts.size>0&&e.fonts.status!=="loaded"&&await Promise.race([e.fonts.ready.then(()=>{}),new Promise(r=>setTimeout(r,3e3))]),await Promise.all(Array.from(e.images,r=>r.decode().catch(()=>{})))}async function S(e,r){const[o,s]=await Promise.all([T(e,"manifest.json"),j(e)]),t=JSON.parse(o);if(t.status!=="complete"||t.format!=="canvas-dom"||t.version!==1||!t.capture||typeof t.capture.durationMs!="number")throw new Error("replay manifest is incomplete or unsupported");const a=document.createElement("div");a.setAttribute("data-vgai-replay-block",""),Object.assign(a.style,{position:"fixed",left:"-100000px",top:"0",width:`${t.viewport.width}px`,height:`${t.viewport.height}px`,overflow:"hidden",pointerEvents:"none"});const i=document.createElement("div");a.append(i),document.body.append(a);const n=document.createElement("video");n.muted=!0,n.preload="auto",n.playsInline=!0,n.src=x(e,"video"),a.append(n);let w;try{w=new N(s,{root:i,showWarning:!1,showDebug:!1,mouseTail:!1,UNSAFE_replayCanvas:!0,insertStyleRules:["[data-vgai-replay-video] { visibility: hidden !important; }"]});const f=w;return await r({manifest:t,async render(u){const h=Math.max(0,Math.min(u,t.capture.durationMs));await J(n,h/1e3),f.pause(G(t,s,h)),await Q(f.iframe.contentDocument);const y=f.getMirror().getNode(t.canvas.nodeId),p=f.getMirror().getNode(t.surfaceNodeId);if(!y||y.tagName!=="CANVAS")throw new Error("replay canvas placeholder is unavailable");if(!p||typeof p.getBoundingClientRect!="function")throw new Error("replay game surface is unavailable");const c=y,g=p;c.setAttribute("data-vgai-root-surface","true");const E=_(t,s,h);c.width=E.drawingWidth,c.height=E.drawingHeight;const d=c.getContext("2d");if(!d)throw new Error("replay canvas has no 2D context");return d.drawImage(n,0,0,c.width,c.height),c.style.setProperty("visibility","visible","important"),g}})}finally{n.pause(),w?.destroy(),n.removeAttribute("src"),n.load(),a.remove()}}async function Y(e,r){return S(e,async({manifest:o,render:s})=>{const t=Math.max(0,Math.min(r,o.capture.durationMs)),a=await s(t),i=await L(a),n=a.getBoundingClientRect();return{...i,replayPath:e,positionMs:t,width:Math.max(1,Math.round(n.width)),height:Math.max(1,Math.round(n.height))}})}async function ee(e){const r=e.fps??30;if(!Number.isInteger(r)||r<1||r>60)throw new Error("replay export fps must be an integer from 1 to 60");return S(e.replayPath,async({manifest:o,render:s})=>{const t=e.startMs??0,a=e.endMs??o.capture.durationMs;if(!Number.isFinite(t)||!Number.isFinite(a)||t<0||a<=t||a>o.capture.durationMs||a-t>3e5)throw new Error("replay export requires a valid recorded interval of at most five minutes");const i=t/1e3,n=a/1e3,w=Math.ceil((n-i)*r),f=await s(t),u=document.createElement("canvas"),h=f.getBoundingClientRect();u.width=Math.max(1,Math.round(h.width)),u.height=Math.max(1,Math.round(h.height));const y={width:u.width,height:u.height},p=new U,c=new $({target:p,format:new B}),g=new D(u,{codec:"vp9",quality:new A({bitrate:3e6})});c.addVideoTrack(g,{frameRate:r});const E=new I({source:new H(x(e.replayPath,"video")),formats:[W]});try{const d=await E.getPrimaryAudioTrack();if(o.capture.audio&&!d)throw new Error("recorded audio track is missing");const M=d?new V({codec:"opus",quality:new A({bitrate:128e3})}):null;M&&c.addAudioTrack(M),await c.start();const R=async()=>{if(!(!M||!d)){for await(const l of new q(d).samples(i,n))try{const m=Math.max(0,Math.ceil((i-l.timestamp)*l.sampleRate)),v=Math.min(l.numberOfFrames,Math.ceil((n-l.timestamp)*l.sampleRate));if(v<=m)continue;const b=l.trim(m,v);try{b.setTimestamp(Math.max(0,b.timestamp-i)),await M.add(b)}finally{b.close()}}finally{l.close()}M.close()}},k=async()=>{const l=F();for(let m=0;m<w;m++){const v=m/r;await O(await s(t+v*1e3),u,{size:y,snapshots:l}),await g.add(v,Math.min(1/r,n-i-v),{keyFrame:m%(r*2)===0})}g.close()};if(await Promise.all([R(),k()]),await c.finalize(),!p.buffer)throw new Error("replay encoder produced no output");return{blob:new Blob([p.buffer],{type:"video/webm"}),frames:w,fps:r,durationMs:a-t,...y,audio:d!==null}}catch(d){throw c.state!=="finalized"&&await c.cancel(),d}finally{E.dispose()}})}export{Y as c,ee as e};
|