@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.
Files changed (544) hide show
  1. package/BUNDLED_NOTICES +1962 -363
  2. package/catalog/entries/bake.json +0 -1
  3. package/catalog/entries/blender.json +2 -2
  4. package/catalog/entries/reflections.json +2 -4
  5. package/catalog/project-source/src/lib/bake/asset-seed.ts +1 -2
  6. package/catalog/project-source/src/lib/bake/clip-layering.ts +3 -4
  7. package/catalog/project-source/src/lib/bake/gltf-bake.ts +1 -1
  8. package/catalog/project-source/src/lib/bake/params.ts +3 -5
  9. package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +2 -3
  10. package/dist/.vite/manifest.json +2406 -2182
  11. package/dist/assets/{AssetBudgetPanel-J9--TZPU.js → AssetBudgetPanel-csYWK2H4.js} +8 -8
  12. package/dist/assets/{AudioViewer-CR7333fe.js → AudioViewer-BH_LUYs5.js} +1 -1
  13. package/dist/assets/{BVHLoader-6bQIXhMX.js → BVHLoader-Jkzh8hMf.js} +1 -1
  14. package/dist/assets/BufferGeometryUtils-CAbuTPOA.js +1 -0
  15. package/dist/assets/{CCDIKSolver-CD7vLpsK.js → CCDIKSolver-D4NvkJ8d.js} +1 -1
  16. package/dist/assets/{CSS3DRenderer-CL7ABLVK.js → CSS3DRenderer-CAS2WZZy.js} +1 -1
  17. package/dist/assets/CanvasSceneViewport-BlsRTk-X.js +1 -0
  18. package/dist/assets/ColladaLoader-DxYB89DA.js +3 -0
  19. package/dist/assets/{ColorInput-DQBNrW-K.js → ColorInput-CPQNsDf1.js} +1 -1
  20. package/dist/assets/{ConvexGeometry-CAzXlPVG.js → ConvexGeometry-Dinf-sev.js} +1 -1
  21. package/dist/assets/{ConvexHull-BINCESFp.js → ConvexHull-CrJ8FY-w.js} +1 -1
  22. package/dist/assets/{DecalGeometry-160KRdfg.js → DecalGeometry-owkbefLa.js} +1 -1
  23. package/dist/assets/EffectComposer-BHDH-NLz.js +1 -0
  24. package/dist/assets/EntityModelDocument-DuQivdvc.js +1 -0
  25. package/dist/assets/EnvironmentAssetDocument-CnTEMn3A.js +1 -0
  26. package/dist/assets/FBXLoader-BMUbIhtE.js +1 -0
  27. package/dist/assets/Fbo-DrK7CWlB.js +1 -0
  28. package/dist/assets/{FontLoader-CvGoVI5a.js → FontLoader-BR_K6Baw.js} +2 -2
  29. package/dist/assets/GLTFExporter-BZqAQJbw.js +1 -0
  30. package/dist/assets/{GameplaySessionTimeline-B52W3FVZ.js → GameplaySessionTimeline-Crqwv2fP.js} +1 -1
  31. package/dist/assets/Gltf-7cVbZUzT.js +2 -0
  32. package/dist/assets/ImageViewer-BkFie7Hm.js +1 -0
  33. package/dist/assets/InspectorObjectPreview-Dl3tyJBn.js +1 -0
  34. package/dist/assets/JsonAssetDocument-BUFzubHM.js +2 -0
  35. package/dist/assets/{LineSegments2-CsOpKSiM.js → LineSegments2-Cicm_Hu1.js} +2 -2
  36. package/dist/assets/LiveModuleDocument-C3OQxiba.js +1 -0
  37. package/dist/assets/LutAssetDocument-DVzd1RZ9.js +1 -0
  38. package/dist/assets/{MTLLoader-_Xzd4_0p.js → MTLLoader-Bg_grNiT.js} +2 -2
  39. package/dist/assets/{MarchingCubes-Bsp4wrzd.js → MarchingCubes-a78AL3HB.js} +1 -1
  40. package/dist/assets/MeshBVH-BCSLNEeP.js +1 -0
  41. package/dist/assets/ModelAssetDocument-pN84goRT.js +1 -0
  42. package/dist/assets/{NonThreeAuthoringBootstrap-C3woOMxX.js → NonThreeAuthoringBootstrap-BKNejRiW.js} +1 -1
  43. package/dist/assets/{OBJLoader-BhIC6Hwo.js → OBJLoader-BiwzVj5b.js} +2 -2
  44. package/dist/assets/Object3DDocumentToolbar-D5Bg5FEf.js +1 -0
  45. package/dist/assets/Object3DDocumentViewport-DFHqru3a.js +2 -0
  46. package/dist/assets/Object3DPreview-BTtZ-41z.js +2 -0
  47. package/dist/assets/OnlineAssetDetail-BAqozdAp.js +1 -0
  48. package/dist/assets/{OrbitControls-DLpayAaK.js → OrbitControls-CzKVCORl.js} +1 -1
  49. package/dist/assets/{OrbitControls-CM3bPray.js → OrbitControls-CzTRRI7x.js} +1 -1
  50. package/dist/assets/{OrthographicCamera-bQozawrh.js → OrthographicCamera-CSDDsvu7.js} +1 -1
  51. package/dist/assets/{PLYLoader-DYQqs5Ik.js → PLYLoader-QxrxxMpE.js} +2 -2
  52. package/dist/assets/{PerspectiveCamera-CQ2lh01o.js → PerspectiveCamera-DzD_NfVh.js} +1 -1
  53. package/dist/assets/PlayBar-qVJpgwJt.js +2 -0
  54. package/dist/assets/QuarksAssetDocument-B4vBlUsS.js +2 -0
  55. package/dist/assets/RGBELoader-WQ7xZofE.js +1 -0
  56. package/dist/assets/RectAreaLightUniformsLib-CwcuoVqt.js +1 -0
  57. package/dist/assets/{RenderPass-DPrn-Uky.js → RenderPass-C_CeQNdh.js} +1 -1
  58. package/dist/assets/{ResolutionPicker-C67vs1F3.js → ResolutionPicker-DpHVJxn5.js} +1 -1
  59. package/dist/assets/RootSelectionOverlay-BxvsunO4.js +1 -0
  60. package/dist/assets/{RoundedBox-BDGBg6QZ.js → RoundedBox-B_cZ0NFy.js} +1 -1
  61. package/dist/assets/{RoundedBoxGeometry-CyUuYPfW.js → RoundedBoxGeometry-Y4rcSIvX.js} +1 -1
  62. package/dist/assets/STLLoader-Bej_Nkpr.js +1 -0
  63. package/dist/assets/{SelectionBox-D_75KrNW.js → SelectionBox-Cn9vm7f9.js} +1 -1
  64. package/dist/assets/ShaderAssetDocument-Dx2x8CLr.js +12 -0
  65. package/dist/assets/{ShaderPass-QYRpPuFJ.js → ShaderPass-qtkA7CQ8.js} +1 -1
  66. package/dist/assets/{ShadowEditor-DkImwu1Y.js → ShadowEditor-BEIUkrHL.js} +1 -1
  67. package/dist/assets/SimplifyModifier-D2EesGr2.js +1 -0
  68. package/dist/assets/{SkeletonUtils-Cps8GOC6.js → SkeletonUtils-C8ayciDc.js} +1 -1
  69. package/dist/assets/{Sky-CQKCgYDs.js → Sky-BBpnAJZV.js} +1 -1
  70. package/dist/assets/SourceAssetViewer-BpMbbuy6.js +1 -0
  71. package/dist/assets/StageHost-lB8f---y.js +2 -0
  72. package/dist/assets/{StoryPreviewMount-DjyxRCXu.js → StoryPreviewMount-BIfxmkYh.js} +1 -1
  73. package/dist/assets/{TDSLoader-D_T8XJ81.js → TDSLoader-rHl5Uwc0.js} +1 -1
  74. package/dist/assets/{TextGeometry-DOWAEUV0.js → TextGeometry-BRHSufuM.js} +1 -1
  75. package/dist/assets/ThreeBoardDocument-BHV92Ia3.js +2 -0
  76. package/dist/assets/{ThreeIsolationSceneContent-C8C8whSF.js → ThreeIsolationSceneContent-BqtgDHBK.js} +1 -1
  77. package/dist/assets/{ToolObject3DPreview-BRoDWe4Q.js → ToolObject3DPreview-CcaPJTyH.js} +1 -1
  78. package/dist/assets/Toolbar-keHcSvDD.js +1 -0
  79. package/dist/assets/{TrackballControls-DfznuQTh.js → TrackballControls-Cce-6Ff5.js} +1 -1
  80. package/dist/assets/{TransientHint-BB1fwrvK.js → TransientHint-Dlslh3oX.js} +1 -1
  81. package/dist/assets/{UnrealBloomPass-CR-cS_K5.js → UnrealBloomPass-DiseEiFK.js} +2 -2
  82. package/dist/assets/{VideoViewer-C6kocgIU.js → VideoViewer-naGSXHd6.js} +1 -1
  83. package/dist/assets/ViewportShadingMenu-C7Hdhtca.js +1 -0
  84. package/dist/assets/{active-ingest-CT6jSGhr.js → active-ingest-DEgq9JiA.js} +3 -3
  85. package/dist/assets/{animation-clock-CnjZqfJp.js → animation-clock-lTIb6nk3.js} +1 -1
  86. package/dist/assets/animation-mixers.service-2O2rVwQf.js +1 -0
  87. package/dist/assets/asset-budget-asset.menu-9NhdHAC9.js +1 -0
  88. package/dist/assets/asset-budget.action-yg6-luUJ.js +1 -0
  89. package/dist/assets/asset-budget.document-B46_VFqa.js +1 -0
  90. package/dist/assets/asset-budget.menu-DuH07N-e.js +1 -0
  91. package/dist/assets/{asset-editor-persistence-BBaONOJt.js → asset-editor-persistence-BVtzjadu.js} +1 -1
  92. package/dist/assets/{asset-loaders-BOy5Ss8k.js → asset-loaders-BxG1LykH.js} +2 -2
  93. package/dist/assets/{assets-BuSoGjBX.js → assets-Do88ZdV_.js} +1 -1
  94. package/dist/assets/{audio-unlock.service-CfUgUQVy.js → audio-unlock.service-BJH0mWvX.js} +1 -1
  95. package/dist/assets/{audio.utility-C6K6jem8.js → audio.utility-Cp4aVYFU.js} +1 -1
  96. package/dist/assets/autoplay.service-FxpRy7Ev.js +1 -0
  97. package/dist/assets/{babylon-authoring-adapter-CL02gWDn.js → babylon-authoring-adapter-B_8iE8fK.js} +1 -1
  98. package/dist/assets/{binding-resolver-Dsh-6Vor.js → binding-resolver-BWwG10zJ.js} +2 -2
  99. package/dist/assets/blender-emscripten-engine-CEsWgnR7.js +2 -0
  100. package/dist/assets/{blender-node-editor.document-iIDkB9sI.js → blender-node-editor.document-DTgwy8KC.js} +1 -1
  101. package/dist/assets/blender-properties-tab-DWSJpkxq.js +3 -0
  102. package/dist/assets/blender-runtime-host-OGjPjTrG.js +4 -0
  103. package/dist/assets/{blender-runtime-skin-DyQ9B6CR.js → blender-runtime-skin-DymtXlpt.js} +37 -39
  104. package/dist/assets/blender-runtime.document-CzH2ohHR.js +8 -0
  105. package/dist/assets/{blender-timeline.document-77fx96N7.js → blender-timeline.document-BRy_QPHt.js} +1 -1
  106. package/dist/assets/{blender-uv-editor.document-fsT7B4gV.js → blender-uv-editor.document-D-AbUCqz.js} +1 -1
  107. package/dist/assets/{blender-version.status-o6dBm3n6.js → blender-version.status-B7flzX_7.js} +1 -1
  108. package/dist/assets/{blender-wali-engine-wTOcrOMC.js → blender-wali-engine-D3iKpzn9.js} +1 -1
  109. package/dist/assets/blender.command-BVHtgTQy.js +1 -0
  110. package/dist/assets/blender.environment-CG-pC7sk.js +1 -0
  111. package/dist/assets/{blender.style-Dcem5f_T.js → blender.style-CxfbTFcE.js} +1 -1
  112. package/dist/assets/{board-guides-DziKSTss.js → board-guides-C3usUZZk.js} +1 -1
  113. package/dist/assets/body-marks-D8iaje6y.js +1 -0
  114. package/dist/assets/bridge.command-BF9u6r0A.js +3 -0
  115. package/dist/assets/browserAll-38aBu-cf.js +1 -0
  116. package/dist/assets/{build-profiles.document-kW8iw8Xj.js → build-profiles.document-DO7oNRuo.js} +2 -2
  117. package/dist/assets/{build-progress.status-BNRLytg2.js → build-progress.status-COeNVhYd.js} +1 -1
  118. package/dist/assets/{build-session-C_sg3CEn.js → build-session-IWIriS5P.js} +1 -1
  119. package/dist/assets/{build.action-lYjTLb7K.js → build.action-DlkFvZf6.js} +1 -1
  120. package/dist/assets/{build.command-DIGgUPU_.js → build.command-DPqQIYj_.js} +1 -1
  121. package/dist/assets/{build.header-CKajx5U3.js → build.header-CNLG-pV8.js} +1 -1
  122. package/dist/assets/{build.menu-BdU0QXny.js → build.menu-hUlH6loi.js} +1 -1
  123. package/dist/assets/{build.service-CbBAyeu3.js → build.service-C86Td3_9.js} +1 -1
  124. package/dist/assets/{camera-KEsKvOL7.js → camera-CKbyBXMe.js} +1 -1
  125. package/dist/assets/camera-authoring-Ci3KnE-W.js +1 -0
  126. package/dist/assets/{camera-runtime.inspector-B7unX4g1.js → camera-runtime.inspector-DdR3P2BF.js} +1 -1
  127. package/dist/assets/canvas-entry-runtime-E5YjSgre.js +2 -0
  128. package/dist/assets/canvas-preview-frames-CiAx7dpV.js +1 -0
  129. package/dist/assets/{capability-coverage-Czas4C18.js → capability-coverage-CfUeULDN.js} +5 -5
  130. package/dist/assets/city-EkhAOo5s.exr +0 -0
  131. package/dist/assets/{collaboration-presence-DLoZ7EA3.js → collaboration-presence-CSLFNT7m.js} +1 -1
  132. package/dist/assets/{collider-Bw0mXlsW.js → collider-DRSaLRM9.js} +1 -1
  133. package/dist/assets/{component-board.service-DCwcUssB.js → component-board.service-B7Sv8b7m.js} +2 -2
  134. package/dist/assets/component-board.service-B8UHw8dn.js +2 -0
  135. package/dist/assets/component-contracts.service-LFGekycZ.js +1 -0
  136. package/dist/assets/{component-verbs.command-7xzfjGMZ.js → component-verbs.command-D4SvFjfG.js} +1 -1
  137. package/dist/assets/component-verbs.service-TGvWxf2b.js +1 -0
  138. package/dist/assets/{config-CEZk921y.js → config-DB_RH-hO.js} +3 -3
  139. package/dist/assets/{configurations-DTBMdaTL.js → configurations-C2qgJNnW.js} +1 -1
  140. package/dist/assets/{connection.status-BifnQdOs.js → connection.status-CG7X2brL.js} +1 -1
  141. package/dist/assets/{console-bridge-CHcb-xk5.js → console-bridge-B5Ltae37.js} +1 -1
  142. package/dist/assets/{constraint-De8f1Uiq.js → constraint-C_Jj7dXy.js} +1 -1
  143. package/dist/assets/constraints.inspector-D6QZJS4b.js +1 -0
  144. package/dist/assets/courtyard-DqlebbpC.exr +0 -0
  145. package/dist/assets/coverage.service-Clo86874.js +3 -0
  146. package/dist/assets/{create-runtime-CVCc1BDx.js → create-runtime-lmA910XT.js} +1 -1
  147. package/dist/assets/{curve-7Q79VgU4.js → curve-6-TR6dNb.js} +1 -1
  148. package/dist/assets/{data-asset-4hjS642k.js → data-asset-BNbd309U.js} +1 -1
  149. package/dist/assets/{data-ref-CQI28C0D.js → data-ref-Dvmd7eb1.js} +1 -1
  150. package/dist/assets/{debug-bridge-CCohG-d-.js → debug-bridge-BUNhgyY6.js} +1 -1
  151. package/dist/assets/{debug-registry-Dgvitx8M.js → debug-registry-B3Cnne3x.js} +1 -1
  152. package/dist/assets/deferred-ingest-play-7V8OrW3e.js +2 -0
  153. package/dist/assets/design-time-layers-g9VS6amb.js +1 -0
  154. package/dist/assets/design-time-mount.service-HtMr_vBd.js +2 -0
  155. package/dist/assets/design-time-react-mount-Dx6fJ-Hg.js +1 -0
  156. package/dist/assets/{directional-shadow-fit-BVkOKAv2.js → directional-shadow-fit-Cjz_Eg2b.js} +1 -1
  157. package/dist/assets/{document-preview-three-Kbg2GCLm.js → document-preview-three-C3y0syYQ.js} +1 -1
  158. package/dist/assets/{dom-authoring-adapter-CY8C7f4T.js → dom-authoring-adapter-CEeFyatF.js} +1 -1
  159. package/dist/assets/{draco3d-BBUTcNkz.js → draco3d-FKy0apkb.js} +1 -1
  160. package/dist/assets/drei-asset-caches-jJoHXbTj.js +2 -0
  161. package/dist/assets/{edit-mode-audio.service-Bzetwd5B.js → edit-mode-audio.service-DZTnrW6t.js} +1 -1
  162. package/dist/assets/edit-mode-authoring-D_BiHCQj.js +1 -0
  163. package/dist/assets/{edit-mode-networking.service-YCX6RRb_.js → edit-mode-networking.service-BzMI2VxO.js} +1 -1
  164. package/dist/assets/editor-api-Bzmo0o8_.js +1 -0
  165. package/dist/assets/{entry-adjudication-Cq8Yeb74.js → entry-adjudication-BYy7TXOB.js} +1 -1
  166. package/dist/assets/{events-156d8d12.esm-ErOhDXXB.js → events-156d8d12.esm-C734MYnx.js} +7 -7
  167. package/dist/assets/{extend-B-eOccUm.js → extend-CLG0ymiX.js} +1 -1
  168. package/dist/assets/forest-P_CQY3b_.exr +0 -0
  169. package/dist/assets/fork-menu-De7HU6_H.js +1 -0
  170. package/dist/assets/{frame-debugger-store-D1Mf_5up.js → frame-debugger-store-BZgIOlU6.js} +1 -1
  171. package/dist/assets/{game-DHOZVb-7.js → game-D5EJoILQ.js} +1 -1
  172. package/dist/assets/{game-contract-seams-a5YXejOu.js → game-contract-seams-TCpIMmHP.js} +1 -1
  173. package/dist/assets/{game-css-scope-transform-Eng4wS8E.js → game-css-scope-transform-NbpajQr-.js} +1 -1
  174. package/dist/assets/game-document.service-6eRlrI-d.js +1 -0
  175. package/dist/assets/game-eval.command-hKnSMlX0.js +2 -0
  176. package/dist/assets/{game-input-seams-CIQdetRw.js → game-input-seams-BC6xhZy3.js} +1 -1
  177. package/dist/assets/{game-module-access-B2mFxv-i.js → game-module-access-ry3xb1Ix.js} +1 -1
  178. package/dist/assets/{gameplay-export-BoKXm51x.js → gameplay-export-DiLQuPpn.js} +1 -1
  179. package/dist/assets/gameplay-replay-Bsre-1K8.js +1 -0
  180. package/dist/assets/{gameplay-rng-trap-CTNhm-UW.js → gameplay-rng-trap-BhRx_CtU.js} +1 -1
  181. package/dist/assets/gameplay.command-BqiyGn-I.js +1 -0
  182. package/dist/assets/{generation-jobs-BQrXbGp_.js → generation-jobs-BYcpgeGk.js} +1 -1
  183. package/dist/assets/generation.service-O81IqA-6.js +1 -0
  184. package/dist/assets/{generations-DzUogZsM.js → generations-CsGQ3twi.js} +1 -1
  185. package/dist/assets/{generations.status-CgOUBCum.js → generations.status-C3YU0_ml.js} +1 -1
  186. package/dist/assets/godot.style-DxJaFWOP.js +1 -0
  187. package/dist/assets/godot.view-BFsHk8b2.js +1 -0
  188. package/dist/assets/{hosted-asset-materialization-CiIvWkGU.js → hosted-asset-materialization-Bk-plQF6.js} +2 -2
  189. package/dist/assets/{ibl-override-material-BlmCxFKq.js → ibl-override-material-BhbGwgS1.js} +1 -1
  190. package/dist/assets/{index-mjWQmGhM.js → index-0n9eSzwT.js} +1 -1
  191. package/dist/assets/index-B4bmKkgY.css +1 -0
  192. package/dist/assets/index-BLo2LE8C.js +3404 -0
  193. package/dist/assets/index-BWW4-DBH.js +1 -0
  194. package/dist/assets/index-CLcsjKUs.js +1 -0
  195. package/dist/assets/index-CU5YUq-x.js +134 -0
  196. package/dist/assets/{index-DUpHH6JR.js → index-Cb6o_Td_.js} +1 -1
  197. package/dist/assets/index-Ckxb31Yz.js +1500 -0
  198. package/dist/assets/index-CnpsJMao.js +1 -0
  199. package/dist/assets/index-Cr23XhNm.js +1 -0
  200. package/dist/assets/index-DO1rWQ_r.js +487 -0
  201. package/dist/assets/{index-BcCBqgM_.js → index-DUh02lTr.js} +1 -1
  202. package/dist/assets/index-DXEHfb0b.js +1 -0
  203. package/dist/assets/{index-V1R-e5Bd.js → index-wRCvCebM.js} +1 -1
  204. package/dist/assets/{inference-diagnostics-Dhmtfbq_.js → inference-diagnostics-YW0yJkKx.js} +1 -1
  205. package/dist/assets/{ingest-BbYMC2vQ.js → ingest-BlQnR7s3.js} +1 -1
  206. package/dist/assets/ingest-boot-viewport-uG9jQ1zm.js +1 -0
  207. package/dist/assets/ingest-siblings-DRQXSWax.js +1 -0
  208. package/dist/assets/{ingest-source-persistence-C_6Hiyra.js → ingest-source-persistence-DH6ioCOu.js} +1 -1
  209. package/dist/assets/{ingest.service-BTDnQfM1.js → ingest.service-GeaWMaZX.js} +1 -1
  210. package/dist/assets/{input-manager-DH_hGW6d.js → input-manager-Cxx3RJgG.js} +1 -1
  211. package/dist/assets/{input-router-BNQvtIqw.js → input-router-FzxO5ld6.js} +1 -1
  212. package/dist/assets/{inspect-BZfi3mmo.js → inspect-BRgDdtVk.js} +1 -1
  213. package/dist/assets/instances.command-CFOMPSj3.js +1 -0
  214. package/dist/assets/{instruments-CKR02Y8I.js → instruments-IKn-vvNb.js} +1 -1
  215. package/dist/assets/interior-Bo_lba15.exr +0 -0
  216. package/dist/assets/{json-history-resource-BbxllWfV.js → json-history-resource-r-9q_hxP.js} +1 -1
  217. package/dist/assets/{light-D-_wsKTq.js → light-CFAor97k.js} +1 -1
  218. package/dist/assets/light-camera-factory-D1sgz3YB.js +1 -0
  219. package/dist/assets/live-mixers-BRkRHd6g.js +1 -0
  220. package/dist/assets/{loader-CaF_I7Yt.js → loader-BbMsvIxP.js} +1 -1
  221. package/dist/assets/machine.document-CgmsOh-s.js +24 -0
  222. package/dist/assets/machines.finder-nxiCgQc2.js +1 -0
  223. package/dist/assets/matcap-texture-Dh65bX5V.js +1 -0
  224. package/dist/assets/{material-CpAdjDxn.js → material-D5kXEZWQ.js} +1 -1
  225. package/dist/assets/{material-factory-Bz6h__6g.js → material-factory-0Qb0VuZ5.js} +1 -1
  226. package/dist/assets/material-preview.view-DqNcpd_b.js +1 -0
  227. package/dist/assets/{mesh-B3WPtNKO.js → mesh-BKPgNTwh.js} +1 -1
  228. package/dist/assets/{mesh-shadow-CZnXrw_l.js → mesh-shadow-BDQP4mHs.js} +1 -1
  229. package/dist/assets/model-asset-sections.service-DWPLmkqa.js +1 -0
  230. package/dist/assets/model-inspection-Cxfg_Fei.js +1 -0
  231. package/dist/assets/model.layout-BpZE1W9V.js +1 -0
  232. package/dist/assets/{models.finder-G2jQgIRu.js → models.finder-DHW17ZEa.js} +1 -1
  233. package/dist/assets/module-mode-CRfHyIMS.js +2 -0
  234. package/dist/assets/mount-canvas-ingest-root-BZZ8M3Lu.js +2 -0
  235. package/dist/assets/mount-dom-ingest-root-D1GV6Jjt.js +2 -0
  236. package/dist/assets/{mount-game-6t9cKNo4.js → mount-game-F9e76auh.js} +1 -1
  237. package/dist/assets/mount-ingest-root-B5D-Lmmk.js +2 -0
  238. package/dist/assets/{mount-manifest-CGVxhmAw.js → mount-manifest-cYRhgHfo.js} +1 -1
  239. package/dist/assets/mount-three-ingest-root-BNnouaBn.js +1 -0
  240. package/dist/assets/{mounted-authoring-Dmg5xmhP.js → mounted-authoring-TIN5EnCb.js} +1 -1
  241. package/dist/assets/{mounted-story-viewport-source-DjP6RA9U.js → mounted-story-viewport-source-CAlEmE0_.js} +1 -1
  242. package/dist/assets/{native-debug-module-CWicoSGD.js → native-debug-module-j-MekcLS.js} +1 -1
  243. package/dist/assets/{navigation-CIiCx-SM.js → navigation-DmR1BDVo.js} +1 -1
  244. package/dist/assets/{navmesh.menu-CAKiH8PW.js → navmesh.menu-FhL1pGx1.js} +1 -1
  245. package/dist/assets/{navmesh.service-jgDWlgj1.js → navmesh.service-usyDeJlm.js} +1 -1
  246. package/dist/assets/{network.utility-CEu5nHf7.js → network.utility-BPh4hTmh.js} +1 -1
  247. package/dist/assets/night-CvV4Gybt.exr +0 -0
  248. package/dist/assets/{object3d-authoring-subject-CH5sI2oP.js → object3d-authoring-subject-CyE4rQ2A.js} +1 -1
  249. package/dist/assets/oid-transform-BOqL6YH6.js +2 -0
  250. package/dist/assets/{particles-Y626p22p.js → particles-C47L-dda.js} +1 -1
  251. package/dist/assets/particles-factory-CRqPLdS7.js +1 -0
  252. package/dist/assets/pixi-authoring-adapter-C5Ikqj5-.js +1 -0
  253. package/dist/assets/{pixi-live-write-target-DuWydlWb.js → pixi-live-write-target-OWBk79dp.js} +1 -1
  254. package/dist/assets/pixi-primitive-D5igywJ_.js +1 -0
  255. package/dist/assets/pixi-react-root-factory-9lZ0Yz-n.js +1 -0
  256. package/dist/assets/play-mode-DomOvQie.js +22 -0
  257. package/dist/assets/play.command-DoqjH-Pp.js +2 -0
  258. package/dist/assets/{playtest-BXIL1JEF.js → playtest-BnFenMBW.js} +1 -1
  259. package/dist/assets/{pose-guard-6Osb2cFu.js → pose-guard-Bb3gZOzk.js} +1 -1
  260. package/dist/assets/{product-DFhyARJj.js → product-CTDJoVo5.js} +1 -1
  261. package/dist/assets/{profiler.action-CaXJDp3t.js → profiler.action-C_OFGkDw.js} +1 -1
  262. package/dist/assets/{profiler.menu-BIMF6Bi4.js → profiler.menu-BJbnVoo4.js} +1 -1
  263. package/dist/assets/{profiler.utility-BExw9wBO.js → profiler.utility-qpfhuwRw.js} +1 -1
  264. package/dist/assets/project-authoring-session-BV-MM8Fl.js +2 -0
  265. package/dist/assets/{project-provenance-BoP3nrle.js → project-provenance-4ldz-EOG.js} +1 -1
  266. package/dist/assets/{properties-bone-constraints.inspector-ByT6p7S-.js → properties-bone-constraints.inspector-C-ByIdg1.js} +1 -1
  267. package/dist/assets/{properties-bone.inspector-z4qJwKO5.js → properties-bone.inspector-CXY0xCQB.js} +1 -1
  268. package/dist/assets/{properties-collection.inspector-D0_3ijWU.js → properties-collection.inspector-DIfkZAel.js} +1 -1
  269. package/dist/assets/{properties-constraints.inspector-CESzjuls.js → properties-constraints.inspector-BaunL5nT.js} +1 -1
  270. package/dist/assets/{properties-data.inspector-hG8Wgyzb.js → properties-data.inspector-DQD-jfO2.js} +1 -1
  271. package/dist/assets/{properties-material.inspector-CzY0JCQ6.js → properties-material.inspector-A0HZ4SX6.js} +1 -1
  272. package/dist/assets/{properties-modifiers.inspector-3dDhwf7g.js → properties-modifiers.inspector-GUnVhVwZ.js} +1 -1
  273. package/dist/assets/{properties-object.inspector-CiarfxkT.js → properties-object.inspector-Chsfa4Xa.js} +1 -1
  274. package/dist/assets/{properties-output.inspector-DKJxmKSD.js → properties-output.inspector-U7ZmD0Me.js} +1 -1
  275. package/dist/assets/{properties-particles.inspector-CCEdYWGm.js → properties-particles.inspector-umkW-OlI.js} +1 -1
  276. package/dist/assets/{properties-physics.inspector-B2c0KUyA.js → properties-physics.inspector-CLVBlWwL.js} +1 -1
  277. package/dist/assets/{properties-render.inspector-Bcm0HLRW.js → properties-render.inspector-D0u9taKy.js} +1 -1
  278. package/dist/assets/{properties-scene.inspector-PIM_eTb_.js → properties-scene.inspector-JwGCZQAx.js} +1 -1
  279. package/dist/assets/{properties-texture.inspector-CgFlnyr8.js → properties-texture.inspector-B1vC28pw.js} +1 -1
  280. package/dist/assets/{properties-view-layer.inspector-DGjF_Aqo.js → properties-view-layer.inspector-BuUKyBFp.js} +1 -1
  281. package/dist/assets/{properties-world.inspector-CrMvaRvB.js → properties-world.inspector-VXUj4dT4.js} +1 -1
  282. package/dist/assets/r3f-design-session-qJ2v5SrB.js +2 -0
  283. package/dist/assets/r3f-physics-binding-C8OqNRG2.js +1 -0
  284. package/dist/assets/{r3f-root-factory-z9llD1OU.js → r3f-root-factory-DjGnbU4n.js} +1 -1
  285. package/dist/assets/r3f-source-authoring-adapter-CG9heazM.js +12 -0
  286. package/dist/assets/{rapier-physics-bridge-CMoeVo3Y.js → rapier-physics-bridge-B-EK7KYV.js} +1 -1
  287. package/dist/assets/react-inspector.service-DWeXDHJq.js +1 -0
  288. package/dist/assets/{react-root-CEz5NTck.js → react-root-DGLRLr-F.js} +1 -1
  289. package/dist/assets/react-story-board-CSqHY0Cg.js +1 -0
  290. package/dist/assets/{react-three-fiber.esm-CycrbDlA.js → react-three-fiber.esm-BxIoqVh1.js} +1 -1
  291. package/dist/assets/{react-three-rapier.esm-CEfKpvxT.js → react-three-rapier.esm-BYzLhdSV.js} +1 -1
  292. package/dist/assets/react-world-authoring-adapter-BMT9kLWU.js +1 -0
  293. package/dist/assets/{realm-services-CobQsq_X.js → realm-services-D25JHoqD.js} +1 -1
  294. package/dist/assets/{reflection-probe-Don-M3Fj.js → reflection-probe-CqXWlicu.js} +1 -1
  295. package/dist/assets/{reflection-probe-capture.inspector-CmFUoJCx.js → reflection-probe-capture.inspector-B7Qa30vB.js} +1 -1
  296. package/dist/assets/regions-DWeEBnE2.js +1 -0
  297. package/dist/assets/{register-render-vitals-BiZk29b2.js → register-render-vitals-BO7x64kR.js} +1 -1
  298. package/dist/assets/{registry-02YZjMNp.js → registry-DlTluc4x.js} +1 -1
  299. package/dist/assets/{render-audio-control-vMRlePWb.js → render-audio-control-DCa_bOBI.js} +1 -1
  300. package/dist/assets/{render-batch-system-0vq7p0VC.js → render-batch-system-CzCp9YKM.js} +1 -1
  301. package/dist/assets/{render-control-Df3yTiyr.js → render-control-BNQr1eNO.js} +1 -1
  302. package/dist/assets/{render-env-D2IV2x5k.js → render-env-emvlfeTG.js} +1 -1
  303. package/dist/assets/{render-features-CPQ_e568.js → render-features-COF7MSQ9.js} +1 -1
  304. package/dist/assets/{render-settings-Bw4W9SYF.js → render-settings-C_kIMq8Y.js} +1 -1
  305. package/dist/assets/{resolve-three-SZE_WWUM.js → resolve-three-C-nx-QdA.js} +13 -13
  306. package/dist/assets/{root-seam-contract-Z0VWX3Bk.js → root-seam-contract-C7GOxf5x.js} +1 -1
  307. package/dist/assets/{run-ticks-settled-C4ksViyA.js → run-ticks-settled-B0cTtmhQ.js} +1 -1
  308. package/dist/assets/{scene-capture-CGYF-Viw.js → scene-capture-CLOc7GXc.js} +1 -1
  309. package/dist/assets/{scene-capture-BQKzU0NT.js → scene-capture-D10Nxkvp.js} +1 -1
  310. package/dist/assets/scene-document.service-B7kAVTko.js +2 -0
  311. package/dist/assets/{scene-framing-Cat0GtyJ.js → scene-framing-50N7SKuX.js} +1 -1
  312. package/dist/assets/{scene-index-B6BZOHMk.js → scene-index-Bce459yu.js} +1 -1
  313. package/dist/assets/{scene-query-C7_N-TpI.js → scene-query-IUZhw6pA.js} +1 -1
  314. package/dist/assets/{schema-kl9-2B_J.js → schema-Iy-mbzll.js} +1 -1
  315. package/dist/assets/sculpt.layout-D-K5cLw6.js +1 -0
  316. package/dist/assets/{seeded-random-i3mtgBKZ.js → seeded-random-CN0scLZj.js} +1 -1
  317. package/dist/assets/{session-CZ5JPg-z.js → session-CsR0lApe.js} +24 -15
  318. package/dist/assets/{setup-audio-S8GQF91f.js → setup-audio-BJ18gvXZ.js} +1 -1
  319. package/dist/assets/setup-particles-B6H-GbAA.js +1 -0
  320. package/dist/assets/{setup-physics-BeZ7-LKD.js → setup-physics-GugbTT0J.js} +1 -1
  321. package/dist/assets/{setup-renderer-DVXaSGin.js → setup-renderer-wt_a-p8r.js} +20 -20
  322. package/dist/assets/shading.layout-CZZHKBer.js +1 -0
  323. package/dist/assets/{sim-clock-CLflx7kg.js → sim-clock-DEfbb_-P.js} +1 -1
  324. package/dist/assets/{soft-particle-depth-DGvfQDi1.js → soft-particle-depth-CKUS1j0Y.js} +1 -1
  325. package/dist/assets/source-object3d-authoring-adapter-CfHQLFAL.js +1 -0
  326. package/dist/assets/{source-persistence-backend-C-aR-B_Y.js → source-persistence-backend-_-JMEXxE.js} +1 -1
  327. package/dist/assets/{spark-renderer-lifecycle-ynWESJcv.js → spark-renderer-lifecycle-9mnMW3Z4.js} +1 -1
  328. package/dist/assets/{spark.module-4pXQoz5d.js → spark.module-CXth-y_a.js} +1 -1
  329. package/dist/assets/stage-keyboard-C0FdDLOQ.js +1 -0
  330. package/dist/assets/stage-overlay-set-CwhCzbOy.js +1 -0
  331. package/dist/assets/stage-presence-markers-DVMDKiB-.js +1 -0
  332. package/dist/assets/stage-transform-tools-B09Z7v0o.js +1 -0
  333. package/dist/assets/standard-viewport-dressing-GUUr6GuK.js +20 -0
  334. package/dist/assets/{state-watch.action-BOvQR2qt.js → state-watch.action-CgF8qoFC.js} +1 -1
  335. package/dist/assets/{state-watch.menu-CNLvDeeY.js → state-watch.menu-CIMncESW.js} +1 -1
  336. package/dist/assets/{state-watch.utility-Bg1tTTQU.js → state-watch.utility-zTHkUALC.js} +1 -1
  337. package/dist/assets/static-batch-advisor-DqfXWRUq.js +1 -0
  338. package/dist/assets/story-capture-COQgezzl.js +1 -0
  339. package/dist/assets/story-documents-DQ0KORmd.js +3 -0
  340. package/dist/assets/story-documents.service-DOSaqPqv.js +1 -0
  341. package/dist/assets/story-documents.service-Gb7oUkbg.js +1 -0
  342. package/dist/assets/{story-media-presence-BHzk2IV5.js → story-media-presence-nW3zJqKv.js} +1 -1
  343. package/dist/assets/story-pixi-preview-COPTEsHo.js +1 -0
  344. package/dist/assets/story-presentation-CxADj5oz.js +1 -0
  345. package/dist/assets/{story-three-preview-BHEDZzcl.js → story-three-preview-C9W__8Or.js} +2 -2
  346. package/dist/assets/{structural-ids-Dc-7rEwi.js → structural-ids-CblajJQK.js} +1 -1
  347. package/dist/assets/studio-CysTBGIb.exr +0 -0
  348. package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
  349. package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
  350. package/dist/assets/{surface-state-DaxyruCj.js → surface-state-BAUJu6GY.js} +1 -1
  351. package/dist/assets/{system-runner-DkOjxEBt.js → system-runner-D_DtVrer.js} +1 -1
  352. package/dist/assets/team-playtest.service--79O6xkx.js +1 -0
  353. package/dist/assets/{three-CDSueJyJ.js → three-DSsr_Lvp.js} +1 -1
  354. package/dist/assets/{three-authoring-adapter-CmSQ3Vui.js → three-authoring-adapter-Yqsank46.js} +1 -1
  355. package/dist/assets/three-authoring.service-BDos-bRt.js +2 -0
  356. package/dist/assets/{three-ingest-runtime-QzDYk6tU.js → three-ingest-runtime-DWijtqQ8.js} +1 -1
  357. package/dist/assets/{three-projection-core-BmKMZ-nf.js → three-projection-core-kubBTx0s.js} +1 -1
  358. package/dist/assets/three-story-model-BraQFA9h.js +1 -0
  359. package/dist/assets/three-viewport-presentation-BL7Uc2i6.js +1 -0
  360. package/dist/assets/{three.module-D396a9Mn.js → three.module-IFn-4i31.js} +1 -1
  361. package/dist/assets/three.quarks.esm-CRKGjKAH.js +1039 -0
  362. package/dist/assets/transform-mode-request-Cu7ewbtr.js +1 -0
  363. package/dist/assets/{transform-writer-BhBBTx33.js → transform-writer-DXxrI4t7.js} +1 -1
  364. package/dist/assets/transport.header-CeND8Vzh.js +1 -0
  365. package/dist/assets/{trigger-volume-BNK2XzPL.js → trigger-volume-BCVRS3NM.js} +1 -1
  366. package/dist/assets/{tuples-CIQ4Bn1U.js → tuples-DKDGrN1t.js} +1 -1
  367. package/dist/assets/ui-board-document-DD2CAEAo.js +2 -0
  368. package/dist/assets/unity.style-vCmLw4gI.js +1 -0
  369. package/dist/assets/unity.view-DIn2S6Do.js +1 -0
  370. package/dist/assets/unreal.style-BQn-HhOX.js +1 -0
  371. package/dist/assets/unreal.view-adNBETZK.js +1 -0
  372. package/dist/assets/user-data-CZqsJDk-.js +1 -0
  373. package/dist/assets/{utility-view-state-BHypxA33.js → utility-view-state-DYJY8V8O.js} +1 -1
  374. package/dist/assets/uv-editing.layout-A8RA-cbM.js +1 -0
  375. package/dist/assets/{vgai-shared-three-Bc5PvpLM.js → vgai-shared-three-D_RAEumG.js} +1 -1
  376. package/dist/assets/{viewport-root-presentation-CWsE56K6.js → viewport-root-presentation-C9M98VNM.js} +1 -1
  377. package/dist/assets/{viewport-shading-BuA88e_A.js → viewport-shading-BzcvgJhK.js} +1 -1
  378. package/dist/assets/viewport-shading-boundary-CBvvzS-p.js +84 -0
  379. package/dist/assets/{viewport-surface-status-B3om4Kcf.js → viewport-surface-status-BFmnWp7z.js} +1 -1
  380. package/dist/assets/voxel-surface-ROWYug7H.js +1 -0
  381. package/dist/assets/webgl-frame-capture-CRKX73E9.js +1 -0
  382. package/dist/assets/webworkerAll-CehoCtFb.js +1 -0
  383. package/dist/assets/{worker-UrMcrc5_.js → worker-B7zhIsFh.js} +2 -2
  384. package/dist/assets/world-documents-DErHq15h.js +1 -0
  385. package/dist/assets/world-root-stage-binding-BIymcQ4K.js +1 -0
  386. package/dist/assets/{world-state-BWG-IcOd.js → world-state-ZGDGY_Xl.js} +1 -1
  387. package/dist/assets/{writer-B-KovzkA.js → writer-BPbm4_my.js} +5 -5
  388. package/dist/assets/xstate-animation-binding-Cvd4JbEY.js +1 -0
  389. package/dist/assets/{xstate-animation-meta-Q3u9zh_m.js → xstate-animation-meta-B3OZR8Q2.js} +1 -1
  390. package/dist/vgai-shared-three.json +1 -1
  391. package/dist-node/cli.js +317 -73
  392. package/dist-node/create.js +59 -19
  393. package/package.json +16 -13
  394. package/src/index.ts +6 -0
  395. package/template/.agents/skills/vgai-3d-models/SKILL.md +3 -3
  396. package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +4 -9
  397. package/template/.claude/skills/vgai-3d-models/SKILL.md +3 -3
  398. package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +4 -9
  399. package/template/.github/skills/vgai-3d-models/SKILL.md +3 -3
  400. package/template/.github/skills/vgai-threejs-authoring/SKILL.md +4 -9
  401. package/template/AGENTS.md +1 -1
  402. package/template/check-idioms.ts +4 -5
  403. package/template/package.json +9 -9
  404. package/template/tsconfig.json +1 -0
  405. package/template/vgai.adapter.ts +1 -0
  406. package/template-dotfiles/gitignore +2 -0
  407. package/workbench/src/media/game-cover.css +1 -1
  408. package/catalog/project-source/src/lib/bake/mesh-slice.ts +0 -157
  409. package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +0 -1
  410. package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +0 -1
  411. package/dist/assets/ColladaLoader-aVOPIsCh.js +0 -3
  412. package/dist/assets/EXRLoader-Cdans_oJ.js +0 -1
  413. package/dist/assets/EffectComposer-DQxfsXBZ.js +0 -1
  414. package/dist/assets/EntityModelDocument-Ccvw66N9.js +0 -1
  415. package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +0 -1
  416. package/dist/assets/FBXLoader-B4MoUtAn.js +0 -1
  417. package/dist/assets/Fbo-Dz-Soul3.js +0 -1
  418. package/dist/assets/GLTFExporter-HgrCle4L.js +0 -1
  419. package/dist/assets/Gltf-UHVWKz65.js +0 -2
  420. package/dist/assets/HDRLoader-THU88oVD.js +0 -5
  421. package/dist/assets/ImageViewer-Tn7s_MnW.js +0 -1
  422. package/dist/assets/InspectorObjectPreview-CVejvLRg.js +0 -1
  423. package/dist/assets/JsonAssetDocument-C7VGcLhu.js +0 -3
  424. package/dist/assets/MeshBVH-BiDHDcu-.js +0 -1
  425. package/dist/assets/ModelAssetDocument-F5GACirk.js +0 -1
  426. package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +0 -2
  427. package/dist/assets/Object3DPreview-DL8oi7Xs.js +0 -2
  428. package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +0 -2
  429. package/dist/assets/PlayBar-BR-Vg3Jb.js +0 -2
  430. package/dist/assets/RGBELoader-BgBcQv8j.js +0 -1
  431. package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +0 -1
  432. package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +0 -1
  433. package/dist/assets/STLLoader-Dyv3lsxY.js +0 -1
  434. package/dist/assets/SimplifyModifier-C8ayvRzd.js +0 -1
  435. package/dist/assets/SourceAssetViewer-2SWQoUut.js +0 -12
  436. package/dist/assets/StageHost-BN-IoTef.js +0 -2
  437. package/dist/assets/ThreeBoardDocument-CVncZyIq.js +0 -2
  438. package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +0 -1
  439. package/dist/assets/asset-budget.action-DCzzcuTh.js +0 -1
  440. package/dist/assets/asset-budget.document-BWU8wnVW.js +0 -1
  441. package/dist/assets/asset-budget.menu-BGZpT_31.js +0 -1
  442. package/dist/assets/autoplay.service-BZBGNSvt.js +0 -1
  443. package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +0 -2
  444. package/dist/assets/blender-properties-tab-C5CyPydi.js +0 -3
  445. package/dist/assets/blender-runtime-host-BpBwGv7r.js +0 -4
  446. package/dist/assets/blender-runtime.document-lIYhhPtv.js +0 -8
  447. package/dist/assets/blender.command-BtJeWk-A.js +0 -1
  448. package/dist/assets/body-marks-h_xDxiDE.js +0 -1
  449. package/dist/assets/bridge.command-o5gDNEwa.js +0 -3
  450. package/dist/assets/browserAll-DeWblVez.js +0 -1
  451. package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +0 -2
  452. package/dist/assets/component-board.service-DidCyM4O.js +0 -2
  453. package/dist/assets/component-verbs.service-Bv9jId3q.js +0 -1
  454. package/dist/assets/constraints.inspector-B9U9Yj-u.js +0 -1
  455. package/dist/assets/coverage.service-VTX5Mcsx.js +0 -3
  456. package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +0 -2
  457. package/dist/assets/design-time-layers-wYgOTgni.js +0 -1
  458. package/dist/assets/design-time-mount.service-BzY21e1F.js +0 -2
  459. package/dist/assets/design-time-react-mount-DM9WLrF2.js +0 -1
  460. package/dist/assets/edit-mode-authoring-B47TfLqu.js +0 -1
  461. package/dist/assets/editor-api-BoJIcyZG.js +0 -1
  462. package/dist/assets/fflate.module-DPuTF8aG.js +0 -6
  463. package/dist/assets/fork-menu-BoVyw2Wu.js +0 -1
  464. package/dist/assets/game-document.service-DbRfx2V0.js +0 -1
  465. package/dist/assets/game-eval.command-D-7Dxbj_.js +0 -2
  466. package/dist/assets/gameplay-replay-e5umMlXv.js +0 -1
  467. package/dist/assets/gameplay.command-DxcVYX6F.js +0 -1
  468. package/dist/assets/generation.service-CDIgObuw.js +0 -1
  469. package/dist/assets/index-96FBF1Oj.js +0 -1
  470. package/dist/assets/index-BAWkB0dv.js +0 -1
  471. package/dist/assets/index-BDnS2b6S.js +0 -1
  472. package/dist/assets/index-BjTCPEQ7.js +0 -134
  473. package/dist/assets/index-CVCb_ImQ.js +0 -1
  474. package/dist/assets/index-CZd9o7Lu.js +0 -1
  475. package/dist/assets/index-D2fNXpHa.css +0 -1
  476. package/dist/assets/index-GIL7oGEO.js +0 -4894
  477. package/dist/assets/index-OrYXPk3Z.js +0 -487
  478. package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +0 -1
  479. package/dist/assets/ingest-siblings-Bop2kqVl.js +0 -1
  480. package/dist/assets/instances.command-D6UkZNO8.js +0 -1
  481. package/dist/assets/light-camera-factory-CWbbe9gI.js +0 -1
  482. package/dist/assets/live-behaviors-Bxq49Maz.js +0 -1
  483. package/dist/assets/matcap-texture-CVfalpWT.js +0 -1
  484. package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +0 -1
  485. package/dist/assets/model.layout-BJUEQYUI.js +0 -1
  486. package/dist/assets/module-mode-DVBLT9d-.js +0 -2
  487. package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +0 -2
  488. package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +0 -2
  489. package/dist/assets/mount-ingest-root-glv2SSWf.js +0 -2
  490. package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +0 -1
  491. package/dist/assets/particles-factory-DnLOHXT8.js +0 -1
  492. package/dist/assets/pasteboard-materialize-BqSS4QzV.js +0 -20
  493. package/dist/assets/pasteboard.action-DU3UHtJG.js +0 -2
  494. package/dist/assets/pixi-authoring-adapter-CjibysC3.js +0 -1
  495. package/dist/assets/pixi-primitive-DlWbUPN9.js +0 -1
  496. package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +0 -1
  497. package/dist/assets/play-mode-BFU2PCkG.js +0 -22
  498. package/dist/assets/play.command-BpqqLqkq.js +0 -2
  499. package/dist/assets/project-authoring-session-Bnt6icLr.js +0 -2
  500. package/dist/assets/r3f-design-session-D-4yyDO9.js +0 -2
  501. package/dist/assets/r3f-physics-binding-BBo8oma9.js +0 -1
  502. package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +0 -13
  503. package/dist/assets/react-inspector.service-B_neRnSK.js +0 -1
  504. package/dist/assets/react-story-board-BDDwiE2H.js +0 -1
  505. package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +0 -1
  506. package/dist/assets/runtime-inspection-l2iFQSsg.js +0 -1
  507. package/dist/assets/scene-document.service-qkDjUrlP.js +0 -2
  508. package/dist/assets/sculpt.layout-zJF55yCR.js +0 -1
  509. package/dist/assets/setup-particles-GCXlnkj_.js +0 -1
  510. package/dist/assets/shading.layout-DULYZV6M.js +0 -1
  511. package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +0 -1
  512. package/dist/assets/stage-invalidation-DBg3C3Ta.js +0 -1
  513. package/dist/assets/stage-keyboard-n-5kKH-m.js +0 -1
  514. package/dist/assets/stage-overlay-set-B9zp2sLB.js +0 -1
  515. package/dist/assets/stage-presence-markers-DiGI6A45.js +0 -1
  516. package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +0 -7
  517. package/dist/assets/static-batch-advisor-B13QEH7d.js +0 -1
  518. package/dist/assets/story-capture-_gC8dXV-.js +0 -1
  519. package/dist/assets/story-documents--TDLaPeL.js +0 -3
  520. package/dist/assets/story-documents.service-BiS_YbNQ.js +0 -1
  521. package/dist/assets/story-documents.service-CxOPYJ2j.js +0 -1
  522. package/dist/assets/story-pixi-preview-BUrOJZXS.js +0 -1
  523. package/dist/assets/story-presentation-j2AVN-mK.js +0 -1
  524. package/dist/assets/team-playtest.service-DqOinFVA.js +0 -1
  525. package/dist/assets/three-authoring.service-iuHLwtf1.js +0 -2
  526. package/dist/assets/three-viewport-presentation-QBQpSdMh.js +0 -1
  527. package/dist/assets/three.quarks.esm-B1C61jGo.js +0 -1039
  528. package/dist/assets/transport.header-B-6HQlU2.js +0 -1
  529. package/dist/assets/ui-board-document-Bwtt--xp.js +0 -2
  530. package/dist/assets/use-live-actor-state-DErbWQWF.js +0 -1
  531. package/dist/assets/user-data-BB2Of6Ht.js +0 -1
  532. package/dist/assets/uv-editing.layout-BEKHxmHw.js +0 -1
  533. package/dist/assets/viewport-shading-boundary-B_-_gABg.js +0 -82
  534. package/dist/assets/voxel-surface-DtcsSWRL.js +0 -1
  535. package/dist/assets/webgl-frame-capture-FlF9zQmW.js +0 -1
  536. package/dist/assets/webworkerAll-CM2o_dnz.js +0 -1
  537. package/dist/assets/world-documents-147tiFZe.js +0 -1
  538. package/dist/assets/world-root-stage-binding-vwTrtBz6.js +0 -1
  539. package/dist/assets/xstate-animation-binding-Brd0NST6.js +0 -1
  540. package/dist/assets/xstate-behavior.action-B8UluFBK.js +0 -1
  541. package/dist/assets/xstate-behavior.document-CKAsE45I.js +0 -1
  542. package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +0 -1
  543. package/dist/assets/xstate-behavior.menu-BXbPICIh.js +0 -1
  544. package/dist/assets/xstate-inspection-BsZv8LS9.js +0 -1
@@ -1 +1 @@
1
- import{V as N,bT as G,bU as Q,aB as X,bV as Z,bR as ee,bS as te}from"./index-GIL7oGEO.js";import{J as ne,c as D}from"./json-history-resource-BbxllWfV.js";import{m as re,p as ie}from"./source-persistence-backend-C-aR-B_Y.js";import{t as oe}from"./pixi-transform-channels-VjdohT11.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"./ingest-source-persistence-C_6Hiyra.js";function $(u){if(!u||typeof u!="object")return;const c=u;return typeof c.x=="number"&&typeof c.y=="number"?[c.x,c.y]:void 0}function V(u,c,l){const s=u;!l||!$(s[c])||(s[c]={x:l[0],y:l[1]})}function se(u){return`#${(u&16777215).toString(16).padStart(6,"0")}`}function ae(u){return Number.parseInt(u.replace("#",""),16)}const le=["position","rotation","scale"];function $e(u){const{physics:c}=u,l=u.persistence??null;let s,p=()=>{},h=null,S,T,w=!1,L=!1;const m=()=>{const t={},n=e=>{const r=s.node(e),i=s.displayObject(e);if(!r||!i)return;let o=null;try{o=s.getTransform(e)}catch{}const a=$(i.pivot),f=$(i.anchor);t[e]={label:i.label??"",alpha:i.alpha,visible:i.visible,..."tint"in i?{tint:i.tint}:{},...o?{transform:o}:{},...a?{pivot:a}:{},...f?{anchor:f}:{}};for(const d of r.childIds)n(d)};for(const e of s.roots())n(e.id);return{overlay:structuredClone(s.serializeOverlay()),nodes:t}},F=t=>{for(const[n,e]of Object.entries(t.nodes)){const r=s.displayObject(n);r&&(r.label=e.label,r.alpha=e.alpha,r.visible=e.visible,e.tint!==void 0&&"tint"in r&&(r.tint=e.tint),V(r,"pivot",e.pivot),V(r,"anchor",e.anchor),e.transform&&s.setTransform(n,e.transform))}s.replaceOverlay(t.overlay),p()},v=(t,n)=>{h&&n&&h.record(t,n,m()).catch(e=>{N.error(`[canvas] failed to journal "${t}" into project history — the edit is applied but has no history entry (it cannot be undone): ${e instanceof Error?e.message:String(e)}`,"authoring")})},A=(t,n,e)=>{const r=s.displayObject(t);r&&(n==="name"?s.set(t,"label",e):n==="tint"?s.set(t,"tint",ae(e)):n==="visible"?s.set(t,"visible",e):n==="alpha"?s.set(t,"alpha",e):r[n]=e,p())},x=(t,n)=>{const e=s.displayObject(t);if(e)return n==="name"?e.label:n==="tint"?se(e.tint??16777215):e[n]},b=(t,n)=>{const e=s.getTransform(t);return n==="position"?e?[...e.position]:void 0:n==="rotation"?e?e.rotation:void 0:n==="scale"?e?[...e.scale]:void 0:x(t,n)},P=(t,n,e)=>{if(n==="position"&&Array.isArray(e))s.setTransform(t,{position:[e[0]??0,e[1]??0]});else if(n==="rotation"&&typeof e=="number")s.setTransform(t,{rotation:e});else if(n==="scale"&&Array.isArray(e))s.setTransform(t,{scale:[e[0]??1,e[1]??1]});else{A(t,n,e);return}p()},y=(t,n)=>{const e=ee(s.displayObject(t)??null);return{entityId:t,property:n,surface:"pixi",anchor:e,anchorKind:e.anchored?"construction-literal":"live-only",instances:e.anchored&&e.kind==="source"?te(e):0}},g=t=>s.node(t)?.label??"2D Object",R=(t,n,e,r,i,o)=>{if(l){if(r===null||i===void 0||o===void 0){v(n,e);return}return ie({backend:l,subject:()=>y(t,r),baseline:i,next:o,label:n,journal:()=>v(n,e)})}},I=t=>{const n=[{path:"name",label:"Name",type:"string"},{path:"visible",label:"Visible",type:"boolean"},{path:"alpha",label:"Alpha",type:"number"}],e=s.displayObject(t);return e&&"tint"in e&&n.push({path:"tint",label:"Tint",type:"color"}),n},O=new Map,K=new Map,j=t=>t.anchored&&t.kind==="source"?`${t.file}:${t.line}:${t.col}`:null,E=t=>[{path:"position",label:"Position"},{path:"rotation",label:"Rotation"},{path:"scale",label:"Scale"},...I(t).map(n=>({path:n.path,label:n.label}))],C=(t,n,e,r)=>{const i=K.get(n);if(i)return i;const o=l?.readSiteLiterals,a=E(t).map(d=>({property:d.path,live:b(t,d.path)})).filter(d=>d.live!==void 0);if(!o||a.length===0)return Promise.resolve({});const f=o({anchor:e,instances:r,writeScope:"creation-site",surface:"pixi",properties:a}).then(d=>(O.set(n,d),p(),d));return K.set(n,f),f},W=(t,n,e,r)=>{const i=O.get(n);return i||(C(t,n,e,r),null)},z=1e-6,M=(t,n)=>Array.isArray(t)&&Array.isArray(n)?t.length===n.length&&t.every((e,r)=>M(e,n[r])):typeof t=="number"&&typeof n=="number"?Math.abs(t-n)<=z:t===n,k=t=>s.displayObject(t)?.constructor?.name||(s.node(t)?.kind??"2D Object"),H=t=>`${t} ${t===1?"instance":"instances"}`,B=(t,n,e,r)=>{const i=b(t,n.path);if(!e||e.literal===null||i===void 0||M(e.literal,i))return null;const o=l?.gate({...r,property:n.path,writeScope:"creation-site"}),a=e.writable?o?.ok?void 0:o?.reason:e.reason;return{path:n.path,label:n.label,value:i,...e.text?{defaultText:e.text}:{},canApplyToComponent:a===void 0,...a===void 0?{}:{applyUnavailableReason:a},affectedInstanceCount:r.instances}},q=(t,n,e,r)=>{if(!l||!e||e.literal===null||r===void 0)return{ok:!1,message:e?.reason??`The construction site names no ${n} for this object, so there is no default to change.`};if(!e.writable)return{ok:!1,message:e.reason??`The construction site's ${n} cannot be rewritten.`};const i=l.gate({...t,writeScope:"creation-site"});return i.ok?{ok:!0,backend:l,baseline:e.literal,next:r}:{ok:!1,message:i.reason}},J=async t=>{const n=y(t,"position"),e=j(n.anchor);return e?O.get(e)??await C(t,e,n.anchor,n.instances):null},U={describe:t=>{const n=y(t,"position"),e=j(n.anchor);if(!e||!s.displayObject(t))return null;const r=W(t,e,n.anchor,n.instances);if(!r||Object.keys(r).length===0)return null;const i=E(t).map(o=>B(t,o,r[o.path],n)).filter(o=>o!==null);return{componentName:k(t),...n.anchor.anchored?{sourcePath:n.anchor.display}:{},overrides:i}},revert:async(t,n)=>{const e=await J(t);if(!e)return;const r=m(),i=[];for(const o of n){const a=e[o]?.literal;a!=null&&(P(t,o,a),i.push(o))}if(i.length!==0)return v(i.length===1?`Revert ${g(t)} ${i[0]}`:`Revert ${i.length} ${g(t)} overrides`,r),p(),Z},applyToComponent:async(t,n)=>{const e={...y(t,n),writeScope:"creation-site"},r=j(e.anchor),i=(await J(t))?.[n],o=b(t,n),a=q(e,n,i,o);if(!a.ok)return{changed:!1,message:a.message};const f=`Apply ${n} to ${k(t)} default (${H(e.instances)})`;return await a.backend.write({...e,baseline:a.baseline,next:a.next,label:f})?(r&&O.delete(r),p(),{changed:!0,message:`${n} now reads ${JSON.stringify(o)} for all ${H(e.instances)} at ${e.anchor.anchored?e.anchor.display:"its creation site"}.`,write:{destination:e.anchor.anchored?e.anchor.display:"creation site",persisted:!0}}):{changed:!1,message:`${f} did not land — the editor console names why.`}}};return{provenance:l?{source:"foreign",label:"creation-site",detail:"Live 2D (PixiJS) tree projected directly — an edit is written into the game’s own source at the line that constructed the object, and says why whenever it cannot be."}:{source:"foreign",label:"live-only",detail:"Live 2D (PixiJS) tree projected directly — edits apply for this session only and are never saved."},get persistence(){const t=l;return t?{...D(),get destination(){return t.destination()}}:{...D(),destination:X}},truth:(t,n)=>{const e=y(t,n);if(e.anchorKind==="live-only")return{site:e.anchor,writeAnchorKind:"live-only"};const r=j(e.anchor);if(!r)return{site:e.anchor,writeAnchorKind:"live-only"};const i=O.get(r);if(!i)return C(t,r,e.anchor,e.instances),{site:e.anchor,writeAnchorKind:void 0};const o=i[n];return{site:e.anchor,writeAnchorKind:o?.writable?"construction-literal":"live-only"}},componentIdentity:t=>s.displayObject(t)?{name:k(t)}:null,...l?.readSiteLiterals?{instances:()=>U}:{},writeOrigin(t,n,e){h?.assertCanMutate();const r=s.displayObject(t);!r||!$(r[n])||(r[n]={x:e[0],y:e[1]},w=!0,p())},bind(t){s=t.a2d,p=t.notify;const n=t.store.projectHistory;h=n?new ne({history:n,kind:"session-state",scope:"session",subject:{...t.journal,id:`${t.journal.id}/world-2d-edits`},displayName:"World 2D edits",capture:m,conflictIdentity:e=>e.overlay,restore:async e=>{F(e)}}):null,l?.attach({read:b,apply:P})},onReindex(){},transformEditability(t,n){if(!l)return{writable:!0};const e=y(t,n),r=e.anchorKind!=="live-only"&&l.removal?.available(e)?{removable:!0}:{};return{writable:!0,reason:l.describe(e),...r}},beginTransformEdit(t){h?.assertCanMutate();const n=s.displayObject(t);n&&c.ownerOf(n)==="physics"&&c.freeze(n),S=m(),T=l?s.getTransform(t)??void 0:void 0,w=!1},writeTransform(t,n){h?.assertCanMutate();const e=s.displayObject(t);e&&c.ownerOf(e)==="physics"&&c.commit(e,n.position,n.rotation),s.setTransform(t,n),p()},endTransformEdit(t){const n=s.displayObject(t);n&&c.ownerOf(n)==="physics"&&c.unfreeze(n);const e=`Transform ${g(t)}`,r=S,i=T,o=w;if(S=void 0,T=void 0,w=!1,!l){v(e,r);return}const a=s.getTransform(t)??void 0,f=o?["origin"]:[];i&&a&&f.push(...le.filter(Y=>oe(Y,i,a))),f.length>1&&l.report(e,re(f));const d=f.length===1&&f[0]!=="origin"?f[0]:null;return R(t,e,r,d,d?_(i,d):void 0,d?_(a,d):void 0)},removeTransform(t,n){const e=l,r=e?.removal;if(!e||!r)return;const i=`Remove ${g(t)} ${n}`;return G({resolve:()=>{const o=y(t,n);return o.anchorKind==="live-only"||!r.available(o)?Q(e.describe(o)):{reaches:"writer",anchorKind:o.anchorKind,destination:e.destination(),write:()=>r.perform({...o,label:i})}},record:()=>{},report:o=>{e.armed()&&e.report(i,o)}})},reportStructureLiveOnly(t,n){if(l?.armed()){l.report(t,n);return}if(!L){L=!0,N.warn(`[canvas] structural edits in this world are live-only — ${n}. First one: ${t}.`,"authoring");return}N.log(`[canvas] ${t} is live-only — ${n}.`,"authoring")},properties:I,get(t,n){return x(t,n)},set(t,n,e){h?.assertCanMutate();const r=m(),i=`Set ${g(t)} ${n}`;if(!l){A(t,n,e),v(i,r);return}const o=b(t,n);A(t,n,e);const a=b(t,n),f=o!==void 0&&a!==void 0&&JSON.stringify(o)!==JSON.stringify(a);return R(t,i,r,f?n:null,o,a)},dispose(){h?.dispose(),h=null,l?.dispose()}}}function _(u,c){if(u){if(c==="position")return[...u.position];if(c==="rotation")return u.rotation;if(c==="scale")return[...u.scale]}}export{$e as createLiveCanvasWriteTarget};
1
+ import{X as N,ci as X,cj as G,aC as Q,ck as Z,cg as ee,ch as te}from"./index-Ckxb31Yz.js";import{J as ne,c as D}from"./json-history-resource-r-9q_hxP.js";import{m as re,p as ie}from"./source-persistence-backend-_-JMEXxE.js";import{t as oe}from"./pixi-transform-channels-VjdohT11.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-IFn-4i31.js";import"./ingest-source-persistence-DH6ioCOu.js";function $(u){if(!u||typeof u!="object")return;const l=u;return typeof l.x=="number"&&typeof l.y=="number"?[l.x,l.y]:void 0}function _(u,l,c){const s=u;!c||!$(s[l])||(s[l]={x:c[0],y:c[1]})}function se(u){return`#${(u&16777215).toString(16).padStart(6,"0")}`}function ae(u){return Number.parseInt(u.replace("#",""),16)}const ce=["position","rotation","scale"];function $e(u){const{physics:l}=u,c=u.persistence??null;let s,p=()=>{},h=null,S,T,w=!1,L=!1;const m=()=>{const t={},n=e=>{const r=s.node(e),i=s.displayObject(e);if(!r||!i)return;let o=null;try{o=s.getTransform(e)}catch{}const a=$(i.pivot),f=$(i.anchor);t[e]={label:i.label??"",alpha:i.alpha,visible:i.visible,..."tint"in i?{tint:i.tint}:{},...o?{transform:o}:{},...a?{pivot:a}:{},...f?{anchor:f}:{}};for(const d of r.childIds)n(d)};for(const e of s.roots())n(e.id);return{overlay:structuredClone(s.serializeOverlay()),nodes:t}},V=t=>{for(const[n,e]of Object.entries(t.nodes)){const r=s.displayObject(n);r&&(r.label=e.label,r.alpha=e.alpha,r.visible=e.visible,e.tint!==void 0&&"tint"in r&&(r.tint=e.tint),_(r,"pivot",e.pivot),_(r,"anchor",e.anchor),e.transform&&s.setTransform(n,e.transform))}s.replaceOverlay(t.overlay),p()},v=(t,n)=>{h&&n&&h.record(t,n,m()).catch(e=>{N.error(`[canvas] failed to journal "${t}" into project history — the edit is applied but has no history entry (it cannot be undone): ${e instanceof Error?e.message:String(e)}`,"authoring")})},A=(t,n,e)=>{const r=s.displayObject(t);r&&(n==="name"?s.set(t,"label",e):n==="tint"?s.set(t,"tint",ae(e)):n==="visible"?s.set(t,"visible",e):n==="alpha"?s.set(t,"alpha",e):r[n]=e,p())},x=(t,n)=>{const e=s.displayObject(t);if(e)return n==="name"?e.label:n==="tint"?se(e.tint??16777215):e[n]},b=(t,n)=>{const e=s.getTransform(t);return n==="position"?e?[...e.position]:void 0:n==="rotation"?e?e.rotation:void 0:n==="scale"?e?[...e.scale]:void 0:x(t,n)},P=(t,n,e)=>{if(n==="position"&&Array.isArray(e))s.setTransform(t,{position:[e[0]??0,e[1]??0]});else if(n==="rotation"&&typeof e=="number")s.setTransform(t,{rotation:e});else if(n==="scale"&&Array.isArray(e))s.setTransform(t,{scale:[e[0]??1,e[1]??1]});else{A(t,n,e);return}p()},y=(t,n)=>{const e=ee(s.displayObject(t)??null);return{entityId:t,property:n,surface:"pixi",anchor:e,anchorKind:e.anchored?"construction-literal":"live-only",instances:e.anchored&&e.kind==="source"?te(e):0}},g=t=>s.node(t)?.label??"2D Object",I=(t,n,e,r,i,o)=>{if(c){if(r===null||i===void 0||o===void 0){v(n,e);return}return ie({backend:c,subject:()=>y(t,r),baseline:i,next:o,label:n,journal:()=>v(n,e)})}},K=t=>{const n=[{path:"name",label:"Name",type:"string"},{path:"visible",label:"Visible",type:"boolean"},{path:"alpha",label:"Alpha",type:"number"}],e=s.displayObject(t);return e&&"tint"in e&&n.push({path:"tint",label:"Tint",type:"color"}),n},O=new Map,R=new Map,j=t=>t.anchored&&t.kind==="source"?`${t.file}:${t.line}:${t.col}`:null,E=t=>[{path:"position",label:"Position"},{path:"rotation",label:"Rotation"},{path:"scale",label:"Scale"},...K(t).map(n=>({path:n.path,label:n.label}))],C=(t,n,e,r)=>{const i=R.get(n);if(i)return i;const o=c?.readSiteLiterals,a=E(t).map(d=>({property:d.path,live:b(t,d.path)})).filter(d=>d.live!==void 0);if(!o||a.length===0)return Promise.resolve({});const f=o({anchor:e,instances:r,writeScope:"creation-site",surface:"pixi",properties:a}).then(d=>(O.set(n,d),p(),d));return R.set(n,f),f},W=(t,n,e,r)=>{const i=O.get(n);return i||(C(t,n,e,r),null)},z=1e-6,M=(t,n)=>Array.isArray(t)&&Array.isArray(n)?t.length===n.length&&t.every((e,r)=>M(e,n[r])):typeof t=="number"&&typeof n=="number"?Math.abs(t-n)<=z:t===n,k=t=>s.displayObject(t)?.constructor?.name||(s.node(t)?.kind??"2D Object"),H=t=>`${t} ${t===1?"instance":"instances"}`,q=(t,n,e,r)=>{const i=b(t,n.path);if(!e||e.literal===null||i===void 0||M(e.literal,i))return null;const o=c?.gate({...r,property:n.path,writeScope:"creation-site"}),a=e.writable?o?.ok?void 0:o?.reason:e.reason;return{path:n.path,label:n.label,value:i,...e.text?{defaultText:e.text}:{},canApplyToComponent:a===void 0,...a===void 0?{}:{applyUnavailableReason:a},affectedInstanceCount:r.instances}},B=(t,n,e,r)=>{if(!c||!e||e.literal===null||r===void 0)return{ok:!1,message:e?.reason??`The construction site names no ${n} for this object, so there is no default to change.`};if(!e.writable)return{ok:!1,message:e.reason??`The construction site's ${n} cannot be rewritten.`};const i=c.gate({...t,writeScope:"creation-site"});return i.ok?{ok:!0,backend:c,baseline:e.literal,next:r}:{ok:!1,message:i.reason}},J=async t=>{const n=y(t,"position"),e=j(n.anchor);return e?O.get(e)??await C(t,e,n.anchor,n.instances):null},Y={describe:t=>{const n=y(t,"position"),e=j(n.anchor);if(!e||!s.displayObject(t))return null;const r=W(t,e,n.anchor,n.instances);if(!r||Object.keys(r).length===0)return null;const i=E(t).map(o=>q(t,o,r[o.path],n)).filter(o=>o!==null);return{componentName:k(t),...n.anchor.anchored?{sourcePath:n.anchor.display}:{},overrides:i}},revert:async(t,n)=>{const e=await J(t);if(!e)return;const r=m(),i=[];for(const o of n){const a=e[o]?.literal;a!=null&&(P(t,o,a),i.push(o))}if(i.length!==0)return v(i.length===1?`Revert ${g(t)} ${i[0]}`:`Revert ${i.length} ${g(t)} overrides`,r),p(),Z},applyToComponent:async(t,n)=>{const e={...y(t,n),writeScope:"creation-site"},r=j(e.anchor),i=(await J(t))?.[n],o=b(t,n),a=B(e,n,i,o);if(!a.ok)return{changed:!1,message:a.message};const f=`Apply ${n} to ${k(t)} default (${H(e.instances)})`;return await a.backend.write({...e,baseline:a.baseline,next:a.next,label:f})?(r&&O.delete(r),p(),{changed:!0,message:`${n} now reads ${JSON.stringify(o)} for all ${H(e.instances)} at ${e.anchor.anchored?e.anchor.display:"its creation site"}.`,write:{destination:e.anchor.anchored?e.anchor.display:"creation site",persisted:!0}}):{changed:!1,message:`${f} did not land — the editor console names why.`}}};return{provenance:c?{source:"foreign",label:"creation-site",detail:"Live 2D (PixiJS) tree projected directly — an edit is written into the game’s own source at the line that constructed the object, and says why whenever it cannot be."}:{source:"foreign",label:"live-only",detail:"Live 2D (PixiJS) tree projected directly — edits apply for this session only and are never saved."},get persistence(){const t=c;return t?{...D(),get destination(){return t.destination()}}:{...D(),destination:Q}},truth:(t,n)=>{const e=y(t,n);if(e.anchorKind==="live-only")return{site:e.anchor,writeAnchorKind:"live-only"};const r=j(e.anchor);if(!r)return{site:e.anchor,writeAnchorKind:"live-only"};const i=O.get(r);if(!i)return C(t,r,e.anchor,e.instances),{site:e.anchor,writeAnchorKind:void 0};const o=i[n];return{site:e.anchor,writeAnchorKind:o?.writable?"construction-literal":"live-only"}},componentIdentity:t=>s.displayObject(t)?{name:k(t)}:null,...c?.readSiteLiterals?{instances:()=>Y}:{},writeOrigin(t,n,e){h?.assertCanMutate();const r=s.displayObject(t);!r||!$(r[n])||(r[n]={x:e[0],y:e[1]},w=!0,p())},bind(t){s=t.a2d,p=t.notify;const n=t.store.projectHistory;h=n?new ne({history:n,kind:"session-state",scope:"session",subject:{...t.journal,id:`${t.journal.id}/world-2d-edits`},displayName:"World 2D edits",capture:m,conflictIdentity:e=>e.overlay,restore:async e=>{V(e)}}):null,c?.attach({read:b,apply:P})},onReindex(){},transformEditability(t,n){if(!c)return{writable:!0};const e=y(t,n),r=e.anchorKind!=="live-only"&&c.removal?.available(e)?{removable:!0}:{};return{writable:!0,reason:c.describe(e),...r}},beginTransformEdit(t){h?.assertCanMutate();const n=s.displayObject(t);n&&l.ownerOf(n)==="physics"&&l.freeze(n),S=m(),T=c?s.getTransform(t)??void 0:void 0,w=!1},writeTransform(t,n){h?.assertCanMutate();const e=s.displayObject(t);e&&l.ownerOf(e)==="physics"&&l.commit(e,n.position,n.rotation),s.setTransform(t,n),p()},endTransformEdit(t){const n=s.displayObject(t);n&&l.ownerOf(n)==="physics"&&l.unfreeze(n);const e=`Transform ${g(t)}`,r=S,i=T,o=w;if(S=void 0,T=void 0,w=!1,!c){v(e,r);return}const a=s.getTransform(t)??void 0,f=o?["origin"]:[];i&&a&&f.push(...ce.filter(U=>oe(U,i,a))),f.length>1&&c.report(e,re(f));const d=f.length===1&&f[0]!=="origin"?f[0]:null;return I(t,e,r,d,d?F(i,d):void 0,d?F(a,d):void 0)},removeTransform(t,n){const e=c,r=e?.removal;if(!e||!r)return;const i=`Remove ${g(t)} ${n}`;return X({resolve:()=>{const o=y(t,n);return o.anchorKind==="live-only"||!r.available(o)?G(e.describe(o)):{reaches:"writer",anchorKind:o.anchorKind,destination:e.destination(),write:()=>r.perform({...o,label:i})}},record:()=>{},report:o=>{e.armed()&&e.report(i,o)}})},reportStructureLiveOnly(t,n){if(c?.armed()){c.report(t,n);return}if(!L){L=!0,N.warn(`[canvas] structural edits in this world are live-only — ${n}. First one: ${t}.`,"authoring");return}N.log(`[canvas] ${t} is live-only — ${n}.`,"authoring")},properties:K,get(t,n){return x(t,n)},set(t,n,e){h?.assertCanMutate();const r=m(),i=`Set ${g(t)} ${n}`;if(!c){A(t,n,e),v(i,r);return}const o=b(t,n);A(t,n,e);const a=b(t,n),f=o!==void 0&&a!==void 0&&JSON.stringify(o)!==JSON.stringify(a);return I(t,i,r,f?n:null,o,a)},dispose(){h?.dispose(),h=null,c?.dispose()}}}function F(u,l){if(u){if(l==="position")return[...u.position];if(l==="rotation")return u.rotation;if(l==="scale")return[...u.scale]}}export{$e as createLiveCanvasWriteTarget};
@@ -0,0 +1 @@
1
+ import{e as m}from"./extend-CLG0ymiX.js";import"./jsx-runtime-DPjLkJKQ.js";import{C as p}from"./index-BLo2LE8C.js";import{r as a}from"./index-nmcBqr7Y.js";import"./index-bQE2NA0D.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-Ckxb31Yz.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";const s="object";class u{constructor(e){const t=e[s];if(!(t instanceof p))throw new Error(`PixiPrimitive: \`object\` must be a PIXI.Container (got ${t===null?"null":typeof t}). This element adopts an object the game already owns; it does not create one.`);return Object.defineProperty(t,s,{configurable:!0,enumerable:!1,get:()=>t,set:()=>{}}),t}}m({VgaiAdopted:u});const f="pixiVgaiAdopted";function T(r){const{object:e,children:t,...o}=r;if(a.useRef(e).current!==e)throw new Error("PixiPrimitive: `object` changed on a mounted element. The adopted container IS this element's instance, so it cannot be swapped; give the element a `key` derived from the object instead, so React remounts it.");a.useLayoutEffect(()=>()=>l(e),[e]);const n={[s]:e};for(const[d,c]of Object.entries(o))c!==void 0&&(n[d]=c);return a.createElement(f,n,t)}function l(r){const e=r,t=Object.getOwnPropertyDescriptor(r,"destroy");let o=!0;const i=()=>{o&&(o=!1,t===void 0?delete e.destroy:Object.defineProperty(r,"destroy",t))};Object.defineProperty(r,"destroy",{configurable:!0,enumerable:!1,writable:!0,value:function(){i(),this.removeFromParent()}}),queueMicrotask(i)}function A(r,e){e.parent!==r&&r.addChild(e)}export{T as PixiPrimitive,A as adoptNow};
@@ -0,0 +1 @@
1
+ import{e as L,c as O}from"./extend-CLG0ymiX.js";import{s as W}from"./index-BLo2LE8C.js";import{r as a}from"./index-nmcBqr7Y.js";import{WorldProvider as z}from"./world-state-ZGDGY_Xl.js";import{g as N}from"./debug-registry-B3Cnne3x.js";import{wireGameInputSeams as B,DEFAULT_INPUT_MAP_PATH as H}from"./game-input-seams-BC6xhZy3.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-bQE2NA0D.js";import"./index-D_NuPfjr.js";import"./index-Ckxb31Yz.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./frame-selector-cache-cCeUbcjG.js";import"./seeded-random-CN0scLZj.js";import"./render-seed-DF4JHy7P.js";const x=1e4,M=new WeakSet;function j(t){if(t===null||typeof t!="object")return!1;const o=t;return typeof o.id=="string"&&o.id.length>0&&typeof o.mount=="function"}function G(t,o){const n=a.createElement(o);return{id:t,async mount(r){const l=r.game?N(r.game):null;l&&await B(r,l,{id:t,inputMapPath:H,optionalInputMap:!0});const c=r.canvas;if(M.has(c))throw new Error(`canvas world "${t}": this lane has already mounted this canvas. @pixi/react keys its reconciler roots off the canvas element, so re-using one would resurrect a root whose Application is destroyed. Hand each mount a fresh canvas (every vgai host already does).`);M.add(c),L(W);let p;const b=new Promise(e=>{p=e});let f;const k=new Promise(e=>{f=e});let v;const $=new Promise(e=>{v=e});let w;const F=new Promise(e=>{w=e});function S(){return a.useLayoutEffect(()=>(p(),v),[]),a.useEffect(()=>(f(),w),[]),null}const y=r.game,h=a.createElement(a.Fragment,null,n,a.createElement(S)),U=y?a.createElement(z,{game:y},h):h,g=O(c),E={antialias:!0,width:r.width,height:r.height,resolution:r.dpr??globalThis.devicePixelRatio??1,autoDensity:!0,backgroundAlpha:r.transparent?0:1,preserveDrawingBuffer:r.preserveDrawingBuffer??!1,autoStart:!1,sharedTicker:!1};let P;const _=new Promise(e=>{P=e}),T=e=>{P(`the Pixi tree crashed before its first commit — ${e.message} (mount() fails loudly instead of hanging)`)};globalThis.addEventListener?.("error",T);let u,m;try{u=await g.render(U,E);const d=new Promise(I=>{m=setTimeout(()=>I(`no first commit within ${x/1e3}s (mount() fails loudly instead of hanging)`),x)}),R=await Promise.race([Promise.all([b,k]).then(()=>null),_,d]);if(R!==null)throw new Error(`canvas world "${t}": ${R}`)}catch(e){try{u?.destroy(!1,{children:!0})}catch{}throw e}finally{m!==void 0&&clearTimeout(m),globalThis.removeEventListener?.("error",T)}if(u===void 0)throw new Error(`canvas world "${t}": initialized without an Application`);const i=u;i.ticker.lastTime=0;let A=0,s=!1;const C=l?{debug:l.adapter}:{},D=Promise.all([$,F]).then(()=>{s=!0,i.destroy(!1,{children:!0})});return{kind:"canvas",canvas:c,substrate:{name:"pixi",root:i.stage},drivesOwnLoop:!1,systems:C,disposeComplete:D,update(e){s||(A+=e*1e3,i.ticker.update(A))},resize(e,d){s||i.renderer.resize(e,d)},dispose(){s||(s=!0,i.renderer.events.setTargetElement(null),g.render(null,E))}}}}}function V(t,o){const n=t;return j(n?.adapter)?n.adapter:typeof n?.default=="function"?G(o,n.default):null}const de=(t,o)=>{const n=V(o.entryModule,t.id);if(n)return{kind:"canvas",adapter:n};throw new Error(`pixiReactRootFactory: entry module "${t.entry??"(none)"}" for root "${t.id}" must default-export a React component (\`export default function World() { … }\`).`)};export{de as pixiReactRootFactory,V as resolveCanvasEntryAdapter};
@@ -0,0 +1,22 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/babylon-authoring-adapter-B_8iE8fK.js","assets/index-Ckxb31Yz.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-IFn-4i31.js","assets/index-B4bmKkgY.css","assets/json-history-resource-r-9q_hxP.js","assets/source-persistence-backend-_-JMEXxE.js","assets/ingest-source-persistence-DH6ioCOu.js","assets/pixi-authoring-adapter-C5Ikqj5-.js","assets/authoring-CgcOFhGS.js","assets/index-BLo2LE8C.js","assets/pixi-transform-channels-VjdohT11.js","assets/pixi-live-write-target-OWBk79dp.js","assets/canvas-entry-runtime-E5YjSgre.js","assets/mount-ingest-root-B5D-Lmmk.js","assets/active-ingest-DEgq9JiA.js","assets/game-contract-seams-TCpIMmHP.js","assets/capability-coverage-CfUeULDN.js","assets/playtest-BnFenMBW.js","assets/module-mode-CRfHyIMS.js","assets/binding-resolver-BWwG10zJ.js","assets/native-debug-module-j-MekcLS.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-B3Cnne3x.js","assets/adapter-surface-Y37Nzcyw.js","assets/entry-adjudication-BYy7TXOB.js","assets/r3f-root-factory-DjGnbU4n.js","assets/register-render-vitals-BO7x64kR.js","assets/render-census-BrQX_CXv.js","assets/structural-signature-0w-i_ats.js","assets/render-vitals-BZ5HtvMi.js","assets/static-batch-advisor-DqfXWRUq.js","assets/webgl-frame-capture-CRKX73E9.js","assets/world-state-ZGDGY_Xl.js","assets/frame-selector-cache-cCeUbcjG.js","assets/dev-build-gDYrq68M.js","assets/game-input-seams-BC6xhZy3.js","assets/seeded-random-CN0scLZj.js","assets/render-seed-DF4JHy7P.js","assets/frame-delta-D2nsw_Ht.js","assets/events-156d8d12.esm-C734MYnx.js","assets/index-bQE2NA0D.js","assets/realm-services-D25JHoqD.js","assets/three-ingest-runtime-DWijtqQ8.js","assets/EffectComposer-BHDH-NLz.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-qtkA7CQ8.js","assets/CSS3DRenderer-CAS2WZZy.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-DGLRLr-F.js","assets/mount-manifest-cYRhgHfo.js","assets/create-runtime-lmA910XT.js","assets/binding-Bmxqznjk.js","assets/assets-Do88ZdV_.js","assets/loader-BbMsvIxP.js","assets/setup-renderer-wt_a-p8r.js","assets/index-DUh02lTr.js","assets/defaults-DKiBJCPN.js","assets/render-settings-C_kIMq8Y.js","assets/render-features-COF7MSQ9.js","assets/game-loop-CZvXlY00.js","assets/frame-pacing-D5acoOzO.js","assets/game-D5EJoILQ.js","assets/loop-gate-report-N52EWFGD.js","assets/system-slot-E2mEdiih.js","assets/user-data-CZqsJDk-.js","assets/object-marks-DwvIEBOK.js","assets/sim-clock-DEfbb_-P.js","assets/system-runner-D_DtVrer.js","assets/performance-profiler-D_Jey87L.js","assets/input-manager-Cxx3RJgG.js","assets/asset-parse-error-BHMwBRU3.js","assets/binding-identity-DcTpbvyg.js","assets/prompt-labels-DSMdM2_B.js","assets/schema-Iy-mbzll.js","assets/gameplay-rng-trap-BhRx_CtU.js","assets/state-bridge-DLP1jLRW.js","assets/input-router-FzxO5ld6.js","assets/render-control-BNQr1eNO.js","assets/debug-bridge-BUNhgyY6.js","assets/run-ticks-settled-B0cTtmhQ.js"])))=>i.map(i=>d[i]);
2
+ import{$ as Ye,a4 as kt,a3 as hn,l8 as gn,l9 as yn,la as wn,lb as vn,lc as bn,cI as En,cJ as Pn,a2 as Mt,ld as Dt,cC as Sn,cD as An,cF as Ot,le as Rn,a1 as In,lf as Tn,cE as _n,X as b,q as E,jP as xt,lg as kn,lh as Mn,li as Dn,lj as W,at as On,lk as Lt,ar as xn,cp as ae,ll as Ln,ka as Cn,eW as Fn,lm as jn,aD as Ct,ln as Nn,aG as Re,y as Ft,ak as de,kx as ut,lo as jt,_ as C,lp as Nt,lq as $t,kL as Ut,kg as qt,p as $n,kD as Un,lr as qn,ls as Wn,lt as Bn,lu as Gn,lv as Vn,gU as zn,gm as Hn,f6 as Kn,co as Wt,lw as Yn,lx as Bt,hk as Jn,ci as Xn,cj as Qn,ej as Zn,ly as er,gP as tr,lz as nr,gu as rr,fM as or}from"./index-Ckxb31Yz.js";import{e as sr}from"./drei-asset-caches-jJoHXbTj.js";import{installNativeDebugBindings as ar,installNativeSystemsBindings as ir}from"./native-debug-module-j-MekcLS.js";import{publishDevInstruments as cr}from"./instruments-IKn-vvNb.js";import{g as Je,D as K}from"./debug-registry-B3Cnne3x.js";import{B as pt}from"./edit-mode-authoring-D_BiHCQj.js";import{p as Gt,c as lr}from"./json-history-resource-r-9q_hxP.js";import{a as Vt}from"./binding-resolver-BWwG10zJ.js";import{i as dr,s as ur}from"./editor-presentation-activity-C7SNSmTd.js";import{E as zt,U as pr,V as fr,G as Ht,B as qe,l as be,W as mr,g as hr}from"./active-ingest-DEgq9JiA.js";import{m as gr}from"./pixi-story-model-DNkfnWUV.js";import{t as yr,d as wr}from"./surface-content-Dg9Kkazf.js";import{p as vr,l as br}from"./viewport-root-presentation-C9M98VNM.js";import{getSeededRandom as Er}from"./seeded-random-CN0scLZj.js";import{_engineLogActive as Pr}from"./logger-Dqis-7W1.js";import{runTicksWhenSettled as Sr}from"./run-ticks-settled-B0cTtmhQ.js";import{assertNever as Ar}from"./adapter-surface-Y37Nzcyw.js";import{r as Rr,o as Ir,s as Tr}from"./three-authoring-adapter-Yqsank46.js";import{mountDeferredIngestForPlay as _r,exitDeferredIngestPlay as kr}from"./deferred-ingest-play-7V8OrW3e.js";import{r as H}from"./rrweb-Cd2ifIRP.js";import{R as Mr,w as Dr}from"./react-world-authoring-adapter-BMT9kLWU.js";async function Or(e){try{const t=await fetch(`${Ye}/log-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"start",...e?{name:e}:{}})});return(await hn(t,"Could not start a play log session")).file}catch{return null}}async function xr(){try{const e=await fetch(`${Ye}/log-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"end"})});kt(e,"Could not end the play log session")}catch{}}async function Kt(e){if(e.length===0)return!0;try{const t=await fetch(`${Ye}/log-entries`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({entries:e})});return kt(t,"Could not flush play log entries"),!0}catch{return!1}}const Lr="__adapter__",ft=new WeakSet;function mt(e,t){const n=[];for(const o of e.roots){const r=o.binding?.observation[t];r&&n.push(r)}return n}function Cr(e,t,n){const o=t.forRoot(Lr);for(const r of n){if(r.kind==="state"){o.registerStateProvider(r.id,()=>{if(!r.answer)throw new K("OBSERVATION_UNANSWERED",`Observation "${r.id}" (state) is declared by this game's adapter with no answer.`);return r.answer(e)},{tier:"assisted"});continue}o.registerCommand(r.id,{...r.description?{description:r.description}:{},locus:r.locus??"client"},(...s)=>{if(!r.answer)throw new K("OBSERVATION_UNANSWERED",`Observation "${r.id}" (command) is declared by this game's adapter with no answer.`);return r.answer(e,...s)})}}function Oe(e,t){const n=e.actions(t);if(!Array.isArray(n))throw new Error("vgai.adapter.ts input.actions must return an array.");const o=new Map;for(const r of n){if(typeof r?.name!="string"||r.name.length===0||!yn.includes(r.valueType))throw new Error("vgai.adapter.ts input.actions returned an invalid action; each action needs a non-empty `name` and a supported `valueType`.");if(o.has(r.name))throw new Error(`vgai.adapter.ts input.actions returned duplicate action "${r.name}".`);o.set(r.name,r.valueType)}return o}function Fr(e,t){return e==="digital"?typeof t=="boolean":e==="scalar"?typeof t=="number"&&Number.isFinite(t):typeof t=="object"&&t!==null&&typeof t.x=="number"&&Number.isFinite(t.x)&&typeof t.y=="number"&&Number.isFinite(t.y)}function jr(e,t,n){if(!e.world(n.root))throw new Error(`vgai.adapter.ts input.root names "${n.root}", which is not a mounted manifest root.`);const o=[],r=[];let s=!1;const i=(u,c)=>{const a=Oe(n,e).get(u);if(!a)throw new K("INPUT_ACTION_NOT_FOUND",`Adapter input has no action named "${u}".`,{registered:[...Oe(n,e).keys()]});if(!Fr(a,c))throw new K("INPUT_ACTION_VALUE_TYPE",`Adapter input action "${u}" expects ${a}, not ${typeof c}.`,{action:u,expected:a});return a},p=(u,c,a)=>{i(u,c),n.set(e,u,c),s&&r.push({tick:a,action:u,value:c})},f=()=>{const u=t.getGameTick(),c=o.filter(a=>a.tick===u);if(c.length!==0){for(let a=o.length-1;a>=0;a--)o[a].tick===u&&o.splice(a,1);for(const a of c)p(a.action,a.value,u)}};e.systems.add("input",f,{name:"adapter.input"});const h=u=>{throw new K("ADAPTER_INPUT_SOURCE_UNSUPPORTED",`${u} addresses an engine test source, but this game declares an app-owned action store. Drive it by action name instead.`)},d={setVirtualAction(u,c){return p(u,c,t.getGameTick()),{delivered:!0}},tapVirtualAction(u){const c=t.getGameTick();return p(u,!0,c),o.push({tick:c+1,action:u,value:!1}),{delivered:!0}},clearVirtualActions(){o.length=0,n.clear(e)},scheduleActionAtTick(u,c,a){const m=t.getGameTick();if(!Number.isInteger(u)||u<m)throw new K("TICK_ALREADY_PASSED",`Cannot schedule adapter input for tick ${u}; current tick is ${m}.`,{tick:u,currentTick:m});i(c,a),o.push({tick:u,action:c,value:a})},startInputRecording(){r.length=0,s=!0},stopInputRecording(){s=!1},isInputRecording(){return s},injectAxis(){h("injectAxis")},injectVector2(){h("injectVector2")},injectPointerDelta(){h("injectPointerDelta")},injectPointerPosition(){h("injectPointerPosition")}};t.setInputActionsSource(n.root,()=>[...Oe(n,e)].map(([u,c])=>({name:u,valueType:c}))),t.setInputTraceSource(n.root,()=>({version:1,seed:null,fixedDt:e.loop.fixedDt,ticks:[...r]})),t.setVirtualInputTarget(n.root,d)}function Yt(e){if(ft.has(e))return;ar(e,mt(e,"entryDebug")),ir(e,mt(e,"entrySystems")),cr(e);const t=Je(e);if(!t)throw new Error("Cannot install adapter runtime bindings: mounted Game has no debug registry.");e.roots.some(r=>r.mounted.systems?.debug!==void 0&&r.mounted.systems.debug!==t.adapter)||Cr(e,t,wn());const o=gn();o&&jr(e,t,o),ft.add(e)}const Nr="fit",Jt=[{id:Nr,label:"Fit panel",kind:"fit",width:null,height:null,dpr:null,safeArea:null},{id:"iphone-portrait",label:"iPhone 14 — 390×844 @3x",kind:"phone",width:390,height:844,dpr:3,safeArea:{top:47,right:0,bottom:34,left:0}},{id:"iphone-landscape",label:"iPhone 14 landscape — 844×390 @3x",kind:"phone",width:844,height:390,dpr:3,safeArea:{top:0,right:47,bottom:21,left:47}},{id:"android-portrait",label:"Android — 412×915 @2.6x",kind:"phone",width:412,height:915,dpr:2.6,safeArea:{top:24,right:0,bottom:24,left:0}},{id:"ipad-portrait",label:"iPad — 820×1180 @2x",kind:"tablet",width:820,height:1180,dpr:2,safeArea:{top:24,right:0,bottom:20,left:0}},{id:"desktop-1080p",label:"Desktop — 1920×1080 @1x",kind:"desktop",width:1920,height:1080,dpr:1,safeArea:null}],Xe=Jt[0];function Xt(e){return Jt.find(t=>t.id===e)??Xe}let I=Xe,G=null,Qt=0;const We=new Set;function Qe(){Qt++;for(const e of We)e()}function bs(e){return We.add(e),()=>{We.delete(e)}}const Es=()=>Qt;function Ps(){return I}function Zt(){return G??(I.kind==="phone"||I.kind==="tablet")}function Ss(e){const t=Xt(e);t!==I&&(I=t,G=null,en(),Qe())}function As(e){e!==G&&(G=e,en(),Qe())}function $r(){return I.dpr}function Rs(){return Math.min(typeof window<"u"&&window.devicePixelRatio||1,2)}function en(){vn({devicePreview:{preset:I.id,touch:G}})}function Is(){const e=bn().devicePreview;return e?.preset?(I=Xt(e.preset),G=typeof e.touch=="boolean"?e.touch:null):(I=Xe,G=null),Qe(),I}const ht=["pointerdown","pointermove","pointerup","pointercancel"],gt=new WeakSet;let Be=null,xe=null;function yt(e){if(!Zt()||gt.has(e)||!(e instanceof PointerEvent)||e.pointerType!=="mouse")return;const t=e.target;if(!t)return;e.stopImmediatePropagation();const n=new PointerEvent(e.type,{bubbles:!0,cancelable:e.cancelable,composed:!0,view:e.view,detail:e.detail,clientX:e.clientX,clientY:e.clientY,screenX:e.screenX,screenY:e.screenY,button:e.button,buttons:e.buttons,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,pointerId:e.pointerId,pointerType:"touch",isPrimary:!0,pressure:e.type==="pointerup"||e.type==="pointercancel"?0:Math.max(e.pressure,.5),width:20,height:20});gt.add(n),t.dispatchEvent(n),n.defaultPrevented&&e.preventDefault()}function Ur(e){if(e!==Be&&(xe?.(),xe=null,Be=e,!!e)){for(const t of ht)e.addEventListener(t,yt,{capture:!0});xe=()=>{for(const t of ht)e.removeEventListener(t,yt,{capture:!0})}}}function Ts(e){Be===e&&Ur(null)}function qr(){return{presetId:I.id,presetLabel:I.label,dpr:I.dpr,safeArea:I.safeArea,touchActive:Zt()}}typeof window<"u"&&(window.__vgaiDevicePreview=qr);const Wr=15e3;function Br(e,t,n){const o=n?` (open ${n})`:"";return`Play start stalled at "${e}" for ${Math.round(t/1e3)}s and the editor tab is HIDDEN — a backgrounded tab has its network requests deprioritized by the browser, so this step is queued rather than broken. Bring the editor tab to the foreground${o} and run play again; the engine loop itself is hidden-safe, only the boot's fetches are starved.`}function Gr(e,t,n){const o=n.stallMs??Wr,r=n.setTimer??((i,p)=>setTimeout(i,p)),s=n.clearTimer??(i=>clearTimeout(i));return new Promise((i,p)=>{let f=!1;const h=r(()=>{f||n.isHidden()&&(f=!0,p(new Error(Br(e,o,n.editorUrl))))},o);t.then(d=>{f||(f=!0,s(h),i(d))},d=>{f||(f=!0,s(h),p(d instanceof Error?d:new Error(String(d))))})})}function Vr(e,t,n=Date.now()){const o=e.filter(r=>r.seq>t).sort((r,s)=>r.seq-s.seq);return{entries:o.map(r=>({t:n,level:"info",source:"game-event",msg:r.event,tick:r.tick,simT:r.simT,meta:{seq:r.seq,...r.detail!==void 0?{detail:r.detail}:{}}})),lastSeq:o.at(-1)?.seq??t}}const me="data-vgai-replay-block",Z="data-vgai-replay-video",wt="https://replay-assets.invalid/",zr=1e3,Hr=256*1024,Kr=/data:image\/(?:png|jpeg|webp|gif|svg\+xml);base64,[a-zA-Z0-9+/=]+/g;function Le(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}function Yr(e){switch(e.toLowerCase()){case"image/png":return"png";case"image/jpeg":return"jpg";case"image/webp":return"webp";case"image/gif":return"gif";case"image/svg+xml":return"svg";default:return null}}function Jr(e){const t=/^data:([^;,]+);base64,([\s\S]+)$/i.exec(e);if(!t)throw new Error("image data URL is not base64 encoded");const n=atob(t[2]),o=new Uint8Array(n.length);for(let r=0;r<n.length;r+=1)o[r]=n.charCodeAt(r);return new Blob([o],{type:t[1].toLowerCase()})}function Xr(e){const t=[];for(let n=e;n&&n!==document.body;n=n.parentElement){const o=n.parentElement;if(!o)break;for(const r of Array.from(o.children))r!==n&&!["STYLE","LINK","SCRIPT"].includes(r.tagName)&&!r.hasAttribute(me)&&(r.setAttribute(me,""),t.push(r))}return()=>{for(const n of t)n.removeAttribute(me)}}function Qr(e,t,n){if(n.format!=="canvas-dom"||n.replayPath===null)throw new Error("gameplay DOM recording requires a canvas-dom sink");const o=Xr(e),r=t.getAttribute(Z);t.setAttribute(Z,"");const s=()=>{o(),r===null?t.removeAttribute(Z):t.setAttribute(Z,r)},i=[],p=new Map,f=[];let h=0,d=0,u=0,c=0,a=0,m=null,S=Date.now(),y=null,D=Promise.resolve(),v=!1;const T=(g,L)=>{D=D.then(async()=>{if(!y)try{await L()}catch(z){const $=z instanceof Error?z.message:String(z);y=new Error(`${g}: ${$}`)}})},j=g=>{const L=p.get(g);if(L)return`${wt}${L}`;const z=/^data:([^;,]+)/i.exec(g)?.[1]??"",$=Yr(z);if(!$)return g;const le=`${String(a).padStart(6,"0")}.${$}`;return a+=1,p.set(g,le),T(`replay asset ${le}`,async()=>{const dt=Jr(g);u+=dt.size,await En(n,le,dt)}),`${wt}${le}`},O=g=>g.includes("data:image/")?g.replace(Kr,j):g,N=()=>{if(i.length===0)return;const g=new Blob([`[${i.join(",")}]`],{type:"application/json"});i.length=0,h=0;const L=c;c+=1,T(`DOM event batch ${L}`,()=>Pn(n,L,g))};let x;try{x=H({emit(g){m??=g.timestamp;const L=JSON.stringify(g,(z,$)=>typeof $=="string"?O($):$);i.push(L),h+=L.length,d+=1,h>=Hr&&N()},blockSelector:`[${me}], [${Z}]`,recordCanvas:!0,inlineStylesheet:!0,inlineImages:!1,collectFonts:!0,sampling:{mousemove:!1,mouseInteraction:!1,scroll:100,canvas:15},errorHandler(g){return f.push(g instanceof Error?g.message:String(g)),!0}})}catch(g){throw s(),g}if(!x)throw s(),new Error("rrweb could not start the DOM recording");const _=e.ownerDocument.defaultView??window,w={width:_.innerWidth,height:_.innerHeight,dpr:_.devicePixelRatio},k=Le(e),Q=Le(t),De=H.mirror.getId(e),fn=H.mirror.getId(t),ct=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>{H.addCustomEvent("vgai-canvas-layout",{rect:Le(t),drawingWidth:t.width,drawingHeight:t.height,dpr:_.devicePixelRatio})});ct?.observe(t),H.addCustomEvent("vgai-canvas-layout",{rect:Q,drawingWidth:t.width,drawingHeight:t.height,dpr:_.devicePixelRatio});const mn=_.setInterval(N,zr),lt=()=>{_.clearInterval(mn),ct?.disconnect(),s()};return{markVideoStarted(g){S=g},async stop(g){if(v)throw new Error("gameplay DOM recording is already stopped");if(v=!0,H.addCustomEvent("vgai-recording-stop",{}),x(),lt(),N(),await D,y)throw y;return{version:1,recorder:"rrweb@2.1.6",events:"events.json",assets:"assets/",video:g,videoStartEpochMs:S,firstEventEpochMs:m,viewport:w,surface:k,surfaceNodeId:De,canvas:{...Q,nodeId:fn,drawingWidth:t.width,drawingHeight:t.height},eventCount:d,assetCount:p.size,assetBytes:u,rrwebErrors:f}},async abort(){v||(v=!0,x(),lt(),i.length=0,await D)}}}function Zr(){let e=null,t=!1,n=null;const o=`
3
+ let canvas;
4
+ onmessage = async ({data}) => {
5
+ const {bitmap, width, height, type, quality} = data;
6
+ try {
7
+ if (!canvas) canvas = new OffscreenCanvas(width, height);
8
+ if (canvas.width !== width) canvas.width = width;
9
+ if (canvas.height !== height) canvas.height = height;
10
+ const context = canvas.getContext('2d');
11
+ if (!context) throw new Error('No worker canvas context');
12
+ context.globalCompositeOperation = 'copy';
13
+ context.drawImage(bitmap, 0, 0, width, height);
14
+ bitmap.close();
15
+ const blob = await canvas.convertToBlob({type, quality});
16
+ postMessage({blob});
17
+ } catch (error) {
18
+ bitmap.close();
19
+ postMessage({error: error instanceof Error ? error.message : String(error)});
20
+ }
21
+ };
22
+ `;function r(s){const i=n;n=null,e?.terminate(),e=null,i?.reject(s)}return{encode(s,i,p,f,h){return t?Promise.reject(new Error("Recording preview encoder stopped")):n?Promise.reject(new Error("Recording preview already in flight")):new Promise((d,u)=>{const c={resolve:d,reject:u};n=c;try{if(!e){const a=URL.createObjectURL(new Blob([o],{type:"text/javascript"}));try{e=new Worker(a)}finally{URL.revokeObjectURL(a)}e.onmessage=({data:m})=>{if(m.error||!m.blob){r(new Error(m.error??"No recording preview image"));return}const S=n;n=null,S?.resolve(m.blob)},e.onerror=m=>{m.preventDefault(),r(new Error(m.message||"Recording preview worker failed"))},e.onmessageerror=()=>r(new Error("Recording preview worker message failed"))}createImageBitmap(s).then(a=>{if(t||n!==c||!e){a.close();return}try{e.postMessage({bitmap:a,width:i,height:p,type:f,quality:h},[a])}catch(m){a.close(),r(m instanceof Error?m:new Error(String(m)))}},a=>{n===c&&r(a instanceof Error?a:new Error(String(a)))})}catch(a){r(a instanceof Error?a:new Error(String(a)))}})},dispose(){t=!0,r(new Error("Recording preview encoder stopped"))}}}let F=null;const vt=1,bt=60,eo=30,Ie=2,to=1e3/Ie,Te=12e4,no=Te/1e3*Ie,ro=256,oo="image/webp",so=.72;function ao(e,t){const n="'use strict';var t=null;onmessage=function(e){clearInterval(t);t=null;if(e.data&&e.data.ms>0){t=setInterval(function(){postMessage(0)},e.data.ms)}};";try{const o=URL.createObjectURL(new Blob([n],{type:"text/javascript"})),r=new Worker(o);URL.revokeObjectURL(o);let s=null;return r.addEventListener("error",i=>{i.preventDefault(),s===null&&(s=window.setInterval(t,e))}),r.addEventListener("message",()=>t()),r.postMessage({ms:e}),{stop(){r.postMessage({ms:0}),r.terminate(),s!==null&&window.clearInterval(s)}}}catch{const o=window.setInterval(t,e);return{stop(){window.clearInterval(o)}}}}function io(e){const t=e??eo;if(!Number.isFinite(t)||!Number.isInteger(t)||t<vt||t>bt)throw new Error(`gameplay recording fps must be an integer from ${vt} to ${bt}`);return t}function co(e){const n=(e?["video/webm;codecs=vp9,opus","video/webm;codecs=vp8,opus","video/webm"]:["video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"]).find(o=>MediaRecorder.isTypeSupported(o));if(!n)throw new Error("this browser exposes MediaRecorder but no WebM video codec");return n}function Ze(){Tn(F?.previewSnapshot??null)}function Ce(e,t){e.previewSnapshot={startedAt:e.started.startedAt,width:e.started.width,height:e.started.height,liveEdgeMs:t,sampleFps:Ie,retentionMs:Te,frames:[...e.previewFrames],previewError:e.previewError},F===e&&Ze()}function lo(e){for(const t of e.previewFrames)URL.revokeObjectURL(t.src);e.previewFrames.length=0}function tn(e,t){if(e.stopping||e.previewEncoding||e.previewError||t<e.nextPreviewAt)return;e.nextPreviewAt=t+to;const n=Math.min(1,ro/Math.max(1,e.output.width)),o=Math.max(1,Math.round(e.output.width*n)),r=Math.max(1,Math.round(e.output.height*n));e.previewEncoding=!0;const s=new Date().toISOString(),i=e.nextPreviewSequence;e.nextPreviewSequence+=1;const p=e.previewEncoder.encode(e.output,o,r,oo,so).then(f=>{if(e.stopping)return;if(!f){e.previewError="The browser could not encode recording previews.",Ce(e,t);return}const h={sequence:i,mediaTimeMs:Math.max(0,Math.round(t)),capturedAt:s,src:URL.createObjectURL(f),width:o,height:r};for(e.previewFrames.push(h);e.previewFrames.length>no||(e.previewFrames[0]?.mediaTimeMs??h.mediaTimeMs)<h.mediaTimeMs-Te;){const d=e.previewFrames.shift();d&&URL.revokeObjectURL(d.src)}Ce(e,h.mediaTimeMs)}).catch(f=>{e.stopping||(e.previewError=f instanceof Error?f.message:"The browser could not encode recording previews.",Ce(e,t))}).finally(()=>{e.previewEncoding=!1});e.previewTask=p}function uo(){if(F)throw new Error("a gameplay recording is already active; stop it before starting one");if(typeof MediaRecorder>"u")throw new Error("this browser does not support MediaRecorder gameplay capture")}function po(e){e.stopping||e.drawing||performance.now()<e.nextFrameAt||(typeof document<"u"&&document.hidden&&(e.hidden=!0),e.drawing=!0,e.frameTask=(async()=>{const t=performance.now();try{if(e.options.refreshFrame?.(),e.started.format==="composite-webm"){const n=e.staging,o=e.overlayCache;if(!n||!o)throw new Error("gameplay recording: composite buffers unavailable");await Mt(e.container,n,{canvasFrame:e.options.canvasFrame,snapshots:e.snapshots,overlayCache:o});const{output:r}=e,s=r.getContext("2d");if(!s)throw new Error("gameplay recording: output context unavailable");r.width!==n.width&&(r.width=n.width),r.height!==n.height&&(r.height=n.height),s.globalCompositeOperation="copy",s.drawImage(n,0,0),s.globalCompositeOperation="source-over",tn(e,performance.now()-e.startedWallMs)}e.frames+=1}catch{e.frameErrors+=1}finally{e.drawing=!1;const n=performance.now()-t;e.nextFrameAt=t+Math.max(e.intervalMs/2,2*n)}})())}async function nn(e,t={}){uo();const n=io(t.fps),o=t.format??"composite-webm",r=e.ownerDocument.createElement("canvas"),s=t.audio??null;let i=null,p=null,f=null;const h=In(),d=Rn();try{const u=await Mt(e,r,{canvasFrame:t.canvasFrame,snapshots:h,overlayCache:d});if(u.canvases===0&&u.domOverlays===0)throw new Error("gameplay recording: no game layers are mounted");const c=Array.from(e.querySelectorAll("canvas")).filter(Dt);if(o==="canvas-dom"&&c.length!==1)throw new Error(`canvas-dom recording requires exactly one root canvas; this game has ${c.length}`);const a=o==="canvas-dom"?c[0]:r;if(typeof a.captureStream!="function")throw new Error("this browser cannot capture a canvas as a media stream");if(i=a.captureStream(n),s)for(const T of s.stream.getAudioTracks())i.addTrack(T);const m=co(i.getAudioTracks().length>0),S=new MediaRecorder(i,{mimeType:m}),y=new Date().toISOString();p=await Sn({startedAt:y,mimeType:m,name:t.name??null,format:o}),o==="canvas-dom"&&(f=Qr(e,a,p),d.dispose());const D={format:o,startedAt:y,mimeType:m,width:a.width,height:a.height,fps:n,audio:i.getAudioTracks().length>0,layers:u,path:p.path,replayPath:p.replayPath,rotates:p.rotates,logFile:p.logFile},v={started:D,recorder:S,output:a,staging:o==="composite-webm"?e.ownerDocument.createElement("canvas"):null,stream:i,audio:s,sink:p,startedWallMs:performance.now(),intervalMs:1e3/n,container:e,options:{canvasFrame:t.canvasFrame,refreshFrame:t.refreshFrame},clock:null,frameTask:null,drawing:!1,nextFrameAt:0,snapshots:h,overlayCache:o==="composite-webm"?d:null,domRecording:f,previewEncoder:Zr(),previewFrames:[],previewSnapshot:{startedAt:y,width:a.width,height:a.height,liveEdgeMs:0,sampleFps:Ie,retentionMs:Te,frames:[],previewError:null},previewTask:null,previewEncoding:!1,previewError:null,nextPreviewAt:0,nextPreviewSequence:0,frames:1,frameErrors:0,hidden:typeof document<"u"&&document.hidden,recorderError:null,uploadError:null,uploads:Promise.resolve(),nextSequence:0,stopping:!1};return S.addEventListener("dataavailable",T=>{if(T.data.size===0||v.uploadError)return;const j=v.nextSequence;v.nextSequence+=1,v.uploads=v.uploads.then(async()=>{if(!v.uploadError)try{await An(v.sink,j,T.data)}catch(O){v.uploadError=O instanceof Error?O:new Error(String(O))}})}),S.addEventListener("error",T=>{v.recorderError=T.error??new Error("gameplay recording failed")}),S.addEventListener("start",()=>{v.domRecording?.markVideoStarted(Date.now())}),S.start(1e3),F=v,Ze(),o==="composite-webm"&&tn(v,0),v.clock=ao(v.intervalMs,()=>po(v)),D}catch(u){await f?.abort(),d.dispose(),p&&await Ot(p);for(const c of i?.getTracks()??[])c.stop();throw s?.dispose(),u}}async function rn(e){const t=F;if(!t)throw new Error("no gameplay recording is active");t.stopping=!0,t.clock?.stop(),t.clock=null,await t.frameTask,t.previewEncoder.dispose(),await t.previewTask;let n=!1;try{if(t.recorder.state!=="inactive"){const f=new Promise(h=>{t.recorder.addEventListener("stop",()=>h(),{once:!0})});t.recorder.stop(),await f}if(t.recorderError)throw t.recorderError;if(await t.uploads,t.uploadError)throw t.uploadError;const o=Math.max(0,Math.round(performance.now()-t.startedWallMs)),r=Math.round(o/1e3*t.started.fps),s={...t.started,durationMs:o,droppedFrames:Math.max(0,r-t.frames),frameErrors:t.frameErrors,effectiveFps:o>0?Math.round(t.frames/(o/1e3)*10)/10:0,hidden:t.hidden},i=t.sink.path.split(/[\\/]/).at(-1)??"video.webm",p=await t.domRecording?.stop(i);return await _n(t.sink,e??null,void 0,p?{...p,capture:{durationMs:s.durationMs,droppedFrames:s.droppedFrames,frameErrors:s.frameErrors,effectiveFps:s.effectiveFps,hidden:s.hidden,fps:s.fps,width:s.width,height:s.height,mimeType:s.mimeType,audio:s.audio}}:null),n=!0,s}finally{n||(await t.domRecording?.abort(),await Ot(t.sink)),F=null,Ze(),lo(t),t.overlayCache?.dispose();for(const o of t.stream.getTracks())o.stop();t.audio?.dispose()}}function et(){return F!==null}function fo(){return F?.started??null}function on(e,t){return Math.max(0,Math.floor(t-e))}function mo(){const e=F;return e===null?null:{startedAt:e.started.startedAt,elapsedMs:on(e.startedWallMs,performance.now())}}const _s=Object.freeze(Object.defineProperty({__proto__:null,activeGameplayRecording:fo,activeGameplayRecordingTimeline:mo,gameplayRecordingActive:et,recordingTimelineElapsedMs:on,startGameplayRecording:nn,stopGameplayRecording:rn},Symbol.toStringTag,{value:"Module"})),tt=12e4,ho=5e3,Et=["keydown","keyup","pointerdown","pointermove","wheel","touchstart","touchmove"];let A=null,he=null,Pt=0,go=null,sn=null;function yo(e){sn=e}function wo(){return!A||!et()?null:{path:A.started.path,format:A.started.format,replayPath:A.started.replayPath,startedAt:A.started.startedAt,rotates:A.started.rotates,logFile:A.started.logFile,idleAutoStopMs:tt}}function an(){A&&(A.lastActivityMs=Date.now())}function vo(){if(typeof window>"u")return()=>{};const e=()=>an();for(const t of Et)window.addEventListener(t,e,{capture:!0,passive:!0});return()=>{for(const t of Et)window.removeEventListener(t,e,{capture:!0})}}async function ks(e,t={}){if(A&&await nt("restart"),await he,!e)return b.warn("Play started, but gameplay recording did not: no game surface is mounted to record.","play-recording"),null;try{return A={started:await nn(e,{format:Array.from(e.querySelectorAll("canvas")).filter(Dt).length===1?"canvas-dom":"composite-webm",...t.name?{name:t.name}:{},...t.audio?{audio:t.audio}:{},...t.refreshFrame?{refreshFrame:t.refreshFrame}:{},...t.canvasFrame?{canvasFrame:t.canvasFrame}:{}}),lastActivityMs:Date.now(),poll:null,releaseInput:vo(),ending:!1},A.poll=window.setInterval(()=>{const o=A;!o||o.ending||Date.now()-o.lastActivityMs<tt||Eo()},ho),wo()}catch(n){return b.warn(`Play started, but gameplay recording did not: ${n instanceof Error?n.message:String(n)}`,"play-recording"),null}}async function nt(e){const t=A;if(!t||t.ending)return he;if(t.ending=!0,t.poll!==null&&window.clearInterval(t.poll),t.releaseInput?.(),A=null,!et())return null;const n=++Pt,o=(async()=>{try{const r=await rn(e);return go=r,r}catch(r){return b.warn(`Gameplay recording could not be finalized: ${r instanceof Error?r.message:String(r)}`,"play-recording"),null}finally{Pt===n&&(he=null)}})();return he=o,o}function bo(e){const t=Math.round(e.durationMs/100)/10;return`${e.path} — ${t}s at ${e.effectiveFps} fps${e.hidden?" (tab hidden; that is the cadence actually captured, not the requested one)":""}`}async function Eo(){const e=Math.round(tt/1e3),t=await nt("idle-autostop");b.log(t===null?`Play auto-stopped after ${e}s with no session command and no player input.`:`Play auto-stopped after ${e}s with no session command and no player input. Recording finalized: ${bo(t)}`,"play-recording"),sn?.()}E().session.onCommandDispatched(()=>an());const Po={source:"live",label:"live",detail:"Running DOM adopted from the playing game. Edits apply to this session only and are discarded when play stops."},St="structure is owned by the running React tree — play edits are live-DOM only and are discarded on stop; stop play to change structure in source";function Fe(e,t){const n=[];for(const o of Dr(e).nodes.values())o.oid===t&&n.push(o.el);return n}function At(e){return e.style?e.style:null}function So(e){return{writeStyle:async(t,n,o)=>{const r=Fe(e,t);if(r.length===0)return{changed:!1,error:`no live element carries oid "${t}"`};for(const s of r){const i=At(s);i&&(i[n]=o)}return{changed:!0,route:"live-dom"}},removeStyle:async(t,n)=>{const o=Fe(e,t);if(o.length===0)return{changed:!1,error:`no live element carries oid "${t}"`};let r=!1;for(const s of o){const i=At(s),p=i?.[n];i&&p!==void 0&&p!==null&&p!==""&&(delete i[n],r=!0)}return{changed:r,route:"live-dom"}},writeText:async(t,n)=>{const o=Fe(e,t).filter(s=>s.children.length===0);if(o.length===0)return{changed:!1,error:`no live leaf element carries oid "${t}"`};const r=o[0]?.textContent??null;for(const s of o)s.textContent=n;return{changed:!0,prevText:r}},writeProp:async(t,n)=>({changed:!1,error:`prop "${n}" is owned by the running React element (its value lives at the parent call site, not in the DOM) — play edits are live-DOM only and are discarded on stop; stop play to change it in source`}),writeStruct:async()=>({changed:!1,error:St}),writeStructMany:async()=>({changed:!1,error:St})}}function Ao(e,t){return new Mr(e,t,{writeBackend:So(e),provenance:Po})}function cn(){return{id:"",journalSession:"",name:"",container:null,session:null,presentation:null,unregisterPerformanceSource:null,unsubscribeSystemAdapters:null,determinismDeclared:!1,resizeObserver:null,rootResources:[]}}const l=cn(),M=[];let ee=[],U=null;const Ge=new Set;function rt(){return U&&(U===l.id||M.some(e=>e.id===U))?U:l.id}function Ms(){return l.id}function Ds(e){return Ge.add(e),()=>Ge.delete(e)}function ot(){for(const e of Ge)e()}function Os(e){Lt(e),rt()!==e&&(U=e,X(),ot())}function ie(e){if(!P)return!1;const{store:t}=P;return t.playState==="playing"&&t.activeViewportTab==="play"&&rt()===e&&er()}function Rt(e){try{return e.session?.game?.input}catch{return}}function X(){l.id&&Rt(l)?.setEnabled(ie(l.id));for(const e of M)Rt(e)?.setEnabled(ie(e.id))}Ln(X);let P=null;const ge=new Set;function Ro(){return P?Promise.resolve():new Promise((e,t)=>{const n=()=>{clearTimeout(o),ge.delete(n),e()},o=setTimeout(()=>{ge.delete(n),t(new Error("Play mode failed to start: the editor shell did not bind within 15 seconds."))},15e3);ge.add(n)})}const Ve=new Set,Ee=new Set;let Pe=null;function ln(){return Pe}function xs(e){return Ee.add(e),()=>Ee.delete(e)}function Io(e){Pe=e;for(const t of Ee)t();E().live.notifyChanged()}const je=new Set;function To(){if(je.size>0){const e=[...je].map(t=>({severity:"warn",message:t}));je.clear(),Vn("console-resolved",{conditions:e,by:"play-mode"})}if(Pe!==null){Pe=null;for(const e of Ee)e();E().live.notifyChanged()}}function _e(){un();for(const e of Ve)e()}function Ls(e){return Ve.add(e),()=>Ve.delete(e)}let R=0,st=null,Se=null;fr();let ze=null,ye;function ue(e){const t={...e.capabilities,persist:!1},n=lr(),o=()=>Xn({resolve:()=>Qn("play edits are session-local by architecture",Zn),record:()=>{}}),r=e.transforms,s=r&&{...r,get:f=>r.get(f),beginEdit:f=>r.beginEdit(f),apply:(f,h)=>r.apply(f,h),endEdit:f=>(r.endEdit(f),o()),...r.remove?{remove:()=>o()}:{}},i=e.inspector,p=i&&{...i,properties:f=>i.properties(f),get:(f,h)=>i.get(f,h),set:(f,h,d)=>(i.set(f,h,d),o()),...i.remove?{remove:()=>o()}:{}};return new Proxy(e,{get(f,h){if(h==="capabilities")return t;if(h==="persistence")return n;if(h==="transforms"&&s)return s;if(h==="inspector"&&p)return p;const d=Reflect.get(f,h,f);return typeof d=="function"?d.bind(f):d}})}function _o(){ye!==void 0&&(Wt(ye),ye=void 0)}async function ko(e,t,n,o,r){ye=rr();const s=[],i=[],p=()=>{for(const d of i)"dispose"in d&&typeof d.dispose=="function"&&d.dispose()};for(const d of t){const u=n?zn(n,d.id):void 0,c=u?{zOrder:u.zOrder,pausable:u.pausable,...u.entry?{content:`Entry · ${u.entry}`}:{}}:{};if(u?.adapter.identity==="ingest-react"){s.push({worldId:d.id,kind:d.kind,adapter:new pt(e,{id:d.id,kind:d.kind,adapter:u.adapter.identity,entryOrScenePath:u.entry,zOrder:u.zOrder,pausable:u.pausable}),...c});continue}const a=d.mounted;if(a.kind==="three"){const m=d.id===o&&a.scene===e.scene,S=m?await Rr():void 0;if(!r()){p();return}const y=m?Ir(e,a.scene,br(d.id),Ne(d.id),{explicitSourceCommit:!0,sourceAnchor:S}):Tr(e,a.scene,{frameControl:"host",journal:Ne(d.id)});i.push(y),s.push({worldId:d.id,kind:d.kind,adapter:ue(y),...c})}else if(a.kind==="canvas"){if(a.substrate.name==="babylon"){const{BabylonAuthoringAdapter:k}=await C(async()=>{const{BabylonAuthoringAdapter:De}=await import("./babylon-authoring-adapter-B_8iE8fK.js");return{BabylonAuthoringAdapter:De}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]));if(!r()){p();return}const Q=new k(a.substrate.root,e,{canvas:a.canvas,api:a.substrate.api,provenance:{source:"live",label:"live",detail:"Native Babylon.js play scene; ordinary Play edits are ephemeral."}});i.push(Q),s.push({worldId:d.id,kind:d.kind,adapter:ue(Q),...c});continue}if(a.substrate.name!=="pixi"){const k=new pt(e,{id:d.id,kind:d.kind,adapter:a.substrate.name,entryOrScenePath:u?.entry,zOrder:u?.zOrder??0,pausable:u?.pausable??!0},`No authoring adapter is registered for canvas substrate "${a.substrate.name}".`);i.push(k),s.push({worldId:d.id,kind:d.kind,adapter:k,...c});continue}const m=a.substrate.root,[S,y,D,v,T]=await Promise.all([C(()=>import("./physics-registry-B2Jkp8e6.js"),[]),C(()=>import("./system-adapters-rIC8FSGP.js"),[]),C(()=>import("./pixi-authoring-adapter-C5Ikqj5-.js"),__vite__mapDeps([15,16,17,1,2,3,4,5,6,7,8,9,10,11,13,14,12,18])),C(()=>import("./pixi-live-write-target-OWBk79dp.js"),__vite__mapDeps([19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,18])),C(()=>import("./canvas-entry-runtime-E5YjSgre.js"),__vite__mapDeps([20,1,2,3,4,5,6,7,8,9,10,11]))]);if(!r()){p();return}const{createPhysics2DRegistry:j}=S,{createPhysicsAdapter2D:O}=y,{PixiAuthoringAdapter:N}=D,{createLiveCanvasWriteTarget:x}=v,_=O(d.physics2d??j()),w=new N(m,e,{pixi:await T.resolveCanvasPixiForEditor(),target:x({physics:_}),journal:Ne(d.id),surface:Oo});i.push(w),s.push({worldId:d.id,kind:d.kind,adapter:ue(w),...c})}else if(a.kind==="dom"){const m=Ao(a.container,e);i.push(m),s.push({worldId:d.id,kind:d.kind,adapter:ue(m),...c})}else Ar(a,"installPlayRootAuthoring")}if(!r()){p();return}l.rootResources=i;const f=Hn(Re()?.config),h=new Kn(s,void 0,f);Wt(h),e.notifyIngestEdit()}function Ne(e){return Gt(l.id,e)}function Mo(e){for(const t of l.rootResources)"dispose"in t&&typeof t.dispose=="function"&&t.dispose();l.rootResources=[],l.journalSession&&(e.projectHistory?.expireSession(l.journalSession),l.journalSession="")}function Do(e){return!(e.defaultPrevented||nr(e.target))}let te=null,ne=null,re=null,oe=null,se=null,q=Promise.resolve(),we=null,B=[],ve=0;function dn(){const e=l.session?.game;if(!e)return{};const t=e.roots,n=l.presentation?.worldId??(t.length===1?t[0]?.id:void 0),o=e.loop.timeScale;return{...n!==void 0?{world:n}:{},...typeof o=="number"?{simSpeed:o}:{}}}function He(){const e=l.session?.game?.systemAdapters?.debug;if(e)try{const t=Vr(e.events(ve),ve);ve=t.lastSeq;const n=dn();for(const o of t.entries)B.push({...o,...n})}catch{}}Cn(e=>{sr(e),l.session&&Io("Project assets changed — restart play to load the revised models or textures.")});function Oo(){return E().workspace.liveDocument.container()}function xo(){const e=()=>{const t=E().workspace.liveDocument.container();if(!t)return;const n=typeof document<"u"?document.activeElement:null;n instanceof HTMLElement&&n!==t&&n.tagName==="BUTTON"&&n.blur(),t.hasAttribute("tabindex")||(t.tabIndex=-1);try{t.focus({preventScroll:!0})}catch{}Jn("viewport")};e(),setTimeout(e,150),setTimeout(e,600)}Fn(e=>Lo(e));function Lo(e){P={store:e,gameContainer:null},yo(Y);for(const t of ge)t()}function $e(){return l.session!==null}function pe(){const e=l.session?.game;if(!e)return null;const t=Je(e),n=t?.getRunTicksTarget()??null;return{getInputTarget:o=>t?.getVirtualInputTarget(o)??null,loop:e.loop,runTicks:n?n.runTicks.bind(n):null,runTicksSettled:t&&n?(o,r)=>Sr(t,o,r):null,random:Er(e),determinismDeclared:l.determinismDeclared}}function Cs(){const e=l.session?.game.defaultRoot.mounted;return e?.kind==="three"?e.scene:null}function Fs(){const e=l.session?.game?.roots;return e?e.map(t=>{const n=t.mounted;let o=!1;if(n.kind==="three")o=yr(n.scene);else if(n.kind==="canvas")try{o=n.substrate.name==="pixi"?gr(n.substrate.root):n.substrate.name==="babylon"?(n.substrate.root.scenes??[]).some(r=>(r.rootNodes?.length??0)>0):!1}catch{o=!1}else o=wr(n.container);return{rootId:t.id,kind:n.kind,hasRenderableContent:o}}):[]}function Co(){return l.session?xt(E().workspace.liveDocument.container()).canvas:null}function Fo(e){return!e||e===l.id?E().workspace.liveDocument.container():M.find(t=>t.id===e)?.container??null}function js(e){if(!e||e===l.id)return Co();const t=M.find(n=>n.id===e);return t?.session?xt(t.container).canvas:null}function jo(){return st}function No(){return Se}function V(){return[l,...M].filter(e=>e.session)}const fe=new Set;function un(){const e=new Set(V().map(t=>t.session.game.loop));for(const t of fe)e.has(t)||fe.delete(t);for(const t of e)dr()?fe.delete(t)&&t.start():t.liveness!=="stopped"&&(fe.add(t),t.stop())}ur(un);function It(){const e=V(),t=tr();return e.find(n=>n.id===t)??e[0]??null}let Ae=null;function $o(){Ae?.(),Ae=Yn(()=>({projectName:Re()?.config.name??null,instanceName:V().length>1?It()?.name??null:null})),Bt(()=>{const e=It();return e?.session?{game:e.session.game,instanceId:e.id,recording:or}:null})}function Uo(){Ae?.(),Ae=null,Bt(null)}function Ns(e,t,n){for(const o of V())o.session?.resize(e,t,n)}let Tt=Promise.resolve(),ke=null,at=null;function $s(){return ke}function qo(){const e=globalThis.crypto?.randomUUID?.()??`private-${Date.now()}`;return{mode:"private",id:e,roomKey:`private:${e}`,revision:null,participantId:On}}function _t(e,t=qo(),n,o){const r=o??null,s=Tt.then(()=>(Mn(),Bo(e,t,n??null,r).finally(()=>{Dn()})));return Tt=s.then(()=>{},()=>{}),s}async function Wo(e){const{autoLaunchIngest:t}=await C(async()=>{const{autoLaunchIngest:r}=await import("./mount-ingest-root-B5D-Lmmk.js").then(s=>s.m);return{autoLaunchIngest:r}},__vite__mapDeps([21,1,2,3,4,5,6,7,8,9,10,11,22,23,24,14,25]));await t(e);const n=hr();if(n)return n.play(),!0;const{isModuleModeActive:o}=await C(async()=>{const{isModuleModeActive:r}=await import("./module-mode-CRfHyIMS.js");return{isModuleModeActive:r}},__vite__mapDeps([26,1,2,3,4,5,6,7,8,9,10,11,24,23,27,28,29,30,25,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,20,50,51,52,53,54,55,56]));return o()}function Ue(e,t){return W(e),Gr(e,t,{isHidden:()=>typeof document<"u"&&document.hidden,editorUrl:typeof window<"u"?window.location.href:void 0})}async function Bo(e,t,n,o){if(!P){const c=R;if(W("waiting for the editor to bind Play"),await Ro(),R!==c)throw new Error("Play start cancelled while waiting for the editor to bind.")}if(!P)throw new Error("Play mode failed to start: the editor shell is not bound.");if(W("waiting for the project bootstrap to settle"),await jn(),l.session&&Y(),at=o,await Wo(P.store)||await _r(P.store))return;const r=++R;ke=t,st=Date.now(),Se=null;const{store:s}=P;Xo();const i=q.then(()=>Or(n));if(q=i,await Ue("starting the play log session",i),r!==R||(B=[],ve=0,b.setSink(c=>{let a;try{const m=l.session?.game?.systemAdapters.debug?.state("time");typeof m?.tick=="number"&&typeof m.simSeconds=="number"&&(a={tick:m.tick,simT:m.simSeconds})}catch{}B.push({t:c.timestamp,level:c.level,msg:c.message,...c.source?{source:c.source}:{},...c.subsystem?{sub:c.subsystem}:{},...c.metadata?{meta:c.metadata}:{},...a??{},...dn()})}),we=setInterval(()=>{if(He(),B.length>0){const c=B.splice(0);q=q.then(()=>Kt(c))}},200),te=c=>{c.key==="Escape"&&Do(c)&&Y()},window.addEventListener("keydown",te),W("opening the Game document"),await E().workspace.liveDocument.acquire(),r!==R))return;const p=E().workspace.liveDocument.container();if(!p){const c="Play mode failed to start: the game container is not mounted in the workspace.";throw b.error(c,"play-mode"),Y(),new Error(c)}const f=p.clientWidth,h=p.clientHeight;p.style.contain||(p.style.cssText+=Ht),Ct(p),qe(p),E().viewport.transition.begin(),s.setPlayState("playing"),xo(),b.log("Play mode started","play-mode"),E().viewport.transition.onSettled(()=>{r===R&&s.playState==="playing"&&Nn()});let d=null,u=null;try{const c=Re();if(!c)throw new Error("No project open — open or create a project first");const a=await Ue("fetching the project manifest",Ft());ee=de(a).map(w=>w.id);for(const w of ee)ut({rootId:w,mechanism:"host-mount",source:"declared",state:"waiting"});let m;jt();const{entries:S,mountId:y}=await Ue("resolving the project's root entries",Vt(a,c.rootPath,{selectionOverride:o??void 0}));if(b.log(`Resolved manifest composition (${de(a).length} world${de(a).length===1?"":"s"}): `+de(a).map(w=>`${w.id} (${w.surface})`).join(", "),"play-mode"),r!==R)return;const D=p.clientWidth||f,v=p.clientHeight||h;qe(p,y),d=y,W("mounting the runtime roots");const{mountManifestRoots:T}=await C(async()=>{const{mountManifestRoots:w}=await import("./mount-manifest-cYRhgHfo.js");return{mountManifestRoots:w}},__vite__mapDeps([57,31,1,2,3,4,5,6,7,8,9,10,11,58,59,60,61,62,63,64,65,66,67,68,30,69,70,71,72,73,44,45,74,75,76,77,78,79,80,81,82,83,84,85,86,87]));if(m=await T({manifest:a,container:p,entries:S,width:D,height:v,seed:e,playtest:t}),u=m,r!==R){m.stop(),ce(m,y,"Cancelled instance");return}for(const w of Nt(c.rootPath))b.error($t(w),"play-mode");for(const w of ee)ut({rootId:w,mechanism:"host-mount",source:"declared",state:"ready"});if(Yt(m.game),l.session=m,l.id=y,l.journalSession=Gt(y,"").session,l.name=pn(0),l.unregisterPerformanceSource?.(),l.unregisterPerformanceSource=Ut({id:"workspace:game",label:"Game runtime",kind:"game",instanceId:y,profiler:m.game.profiler}),To(),l.determinismDeclared=a.determinism?.seededRandom===!0,a.configurations.some(w=>w.kind==="process")&&Je(m.game)?.setRoomDeclared(!0),_e(),s.setPlayEditRegime("ephemeral"),l.presentation=E().viewport.presentRoots(m.game.roots)??vr(s,m.game.roots),W("installing play authoring for each root"),await ko(s,m.game.roots,a,l.presentation?.worldId??null,()=>r===R),r!==R)return;W("binding the editor to the running game");const j=m.game.systemAdapters;ae(j,y),Lt(y),$o(),l.unsubscribeSystemAdapters?.(),l.unsubscribeSystemAdapters=m.game.subscribeSystemAdapters?.(()=>{qt(m.game.systemAdapters,y)})??null,be(()=>ie(y),y),be(()=>ie(rt())),X(),ze=s.subscribe(X);const O=$n(j.physics);s.setEcsSyncTransform((w,k)=>{!O||O.ownerOf(w)==="unresolved"||O.commit(w,{position:k.position.toArray(),rotation:k.quaternion.toArray(),scale:k.scale.toArray()})});const N=$r(),x=p.clientWidth,_=p.clientHeight;x>0&&_>0&&(x!==f||_!==h||N!==null)&&m.resize(x,_,N??void 0),E().viewport.transition.ready(()=>{const w=l.session?.game;if(!w)return null;for(const k of w.roots)if(k.mounted.kind==="three")return k.mounted.camera;return null})}catch(c){const a=`Play mode failed to start: ${c}`;if(b.error(a,"play-mode"),d!==null&&l.id!==d)if(u){try{u.stop()}catch(m){b.error(`Error stopping the failed play session: ${m}`,"play-mode")}ce(u,d,"Failed instance")}else Me(d,"Failed instance");throw r===R&&Y(),new Error(a)}}async function Us(e,t){if(!P)throw new Error("Cannot mount an additional instance: play mode is not bound.");if(!l.session)throw new Error("Cannot mount an additional instance: no primary play session is running.");const n=R,o=Re();if(!o)throw new Error("Cannot mount an additional instance: no project is open.");const r=await Ft();jt();const{entries:s,mountId:i}=await Vt(r,o.rootPath,{selectionOverride:at??void 0});e.style.contain||(e.style.cssText+=Ht),Ct(e),qe(e,i);const{mountManifestRoots:p}=await C(async()=>{const{mountManifestRoots:c}=await import("./mount-manifest-cYRhgHfo.js");return{mountManifestRoots:c}},__vite__mapDeps([57,31,1,2,3,4,5,6,7,8,9,10,11,58,59,60,61,62,63,64,65,66,67,68,30,69,70,71,72,73,44,45,74,75,76,77,78,79,80,81,82,83,84,85,86,87])),f=await p({manifest:r,container:e,entries:s,width:e.clientWidth,height:e.clientHeight,playtest:ke});for(const c of Nt(o.rootPath))b.error($t(c),"play-mode");if(n!==R||!l.session){try{f.stop()}catch{}return ce(f,i,t?.trim()||"Cancelled instance"),i}Yt(f.game);const h=cn();h.id=i,h.name=t?.trim()||pn(M.length+1),h.container=e,h.session=f,h.unregisterPerformanceSource=Ut({id:`workspace:game:${i}`,label:`Game runtime (instance ${i})`,kind:"game",instanceId:i,profiler:f.game.profiler});const d=f.game.systemAdapters;ae(d,i),h.unsubscribeSystemAdapters=f.game.subscribeSystemAdapters?.(()=>{qt(f.game.systemAdapters,i)})??null,be(()=>ie(i),i),M.push(h),X();const u=l.session.game.systemAdapters;return ae(u,l.id),_e(),i}function Go(){return M.map(e=>e.id)}function qs(){const e=[];l.id&&e.push({id:l.id,name:l.name});for(const t of M)t.id&&e.push({id:t.id,name:t.name});return e}function Vo(e){return l.id===e?l.name:M.find(t=>t.id===e)?.name}function Me(e,t){e&&(zt(e),pr(e,t))}function ce(e,t,n){e.stopComplete.then(()=>Me(t,n))}function zo(e){const t=M.findIndex(r=>r.id===e);if(t<0)return;const[n]=M.splice(t,1);if(!n)return;n.unsubscribeSystemAdapters?.(),n.unsubscribeSystemAdapters=null;const o=n.session;try{o?.stop()}catch(r){b.error(`Error stopping additional instance ${n.id}: ${r}`,"play-mode")}n.unregisterPerformanceSource?.(),ae(null,n.id),o?ce(o,n.id,n.name):Me(n.id,n.name),n.container=null,n.session=null,U===e&&(U=null,X(),ot()),_e()}function Ho(){for(const e of Go())zo(e)}let J=[];const Ke=new Set;function it(e){if(e===0){const t=xn()?.getPlayerIdentity?.()?.name?.trim();if(t)return t}return`Instance ${e+1}`}function Ws(){return J.length===0?0:J.length-1}function pn(e){return J[e]??it(e)}function Bs(e){return Ke.add(e),()=>Ke.delete(e)}function Ko(){for(const e of Ke)e()}function Yo(e){const t=Math.max(0,Math.floor(e));Jo(t===0?[]:Array.from({length:t+1},(n,o)=>it(o)))}function Jo(e){const t=e.length<=1?[]:e.map((n,o)=>n?.trim()?n.trim():it(o));t.length===J.length&&t.every((n,o)=>n===J[o])||(J=t,Ko())}function Y(){if(R++,kn(),!P||(nt("teardown"),Uo(),at=null,kr(P.store)))return;ke=null,U=null,ot();const{store:e}=P;He(),Yo(0),Ho(),E().viewport.transition.end(),e.setEcsSyncTransform(null);const t=l.id,n=l.name||"Game instance";l.id="",l.unsubscribeSystemAdapters?.(),l.unsubscribeSystemAdapters=null,ae(null,t),l.presentation?.dispose(),l.presentation=null,Mo(e),_o(),e.setPlayEditRegime(null);const o=l.session;if(o)try{o.stop()}catch(r){b.error(`Error stopping play session: ${r}`,"play-mode")}finally{l.unregisterPerformanceSource?.(),l.unregisterPerformanceSource=null,l.session=null,l.determinismDeclared=!1,_e()}o?ce(o,t,n):Me(t,n);for(const r of ee)Un(r);if(ee=[],ze?.(),ze=null,be(()=>!0),zt(),l.resizeObserver?.disconnect(),l.resizeObserver=null,te&&(window.removeEventListener("keydown",te),te=null),b.log("Play mode stopped","play-mode"),qn(),we&&(clearInterval(we),we=null),He(),b.setSink(null),B.length>0){const r=B.splice(0);q=q.then(()=>Kt(r))}q=q.then(()=>xr()),Qo(),e.setPlayState("stopped"),E().workspace.liveDocument.release(),st!==null&&Se===null&&(Se=Date.now())}function Gs(){if(!(!l.session||!P)){for(const e of V())e.session?.pause();P.store.setPlayState("paused"),b.log("Play mode paused","play-mode")}}function Vs(){if(!(!l.session||!P)){for(const e of V())e.session?.resume();P.store.setPlayState("playing"),b.log("Play mode resumed","play-mode")}}function zs(){if(l.session)for(const e of V())e.session?.step()}function Xo(){Wn(),ne=console.log,re=console.info,oe=console.warn,se=console.error;const e=(t,n)=>{if(Pr)return;const o=mr();b.logStructured(t,Gn(n),"game",void 0,o?{instanceId:o,instanceName:Vo(o)??`Instance ${o}`}:void 0)};console.log=(...t)=>{ne?.apply(console,t),e("info",t)},console.info=(...t)=>{re?.apply(console,t),e("info",t)},console.warn=(...t)=>{oe?.apply(console,t),e("warn",t)},console.error=(...t)=>{se?.apply(console,t),e("error",t)}}function Qo(){Bn(),ne&&(console.log=ne),re&&(console.info=re),oe&&(console.warn=oe),se&&(console.error=se),ne=null,re=null,oe=null,se=null}E().live.register({id:"play",priority:0,mounted:$e,playing:$e,stop:Y,instanceContainer:e=>Fo(e),startedAt:jo,endedAt:No,restartRequired:ln,restart:()=>void _t(),remount:async e=>{try{return await _t(void 0,void 0,void 0,e),$e()?{ok:!0}:{ok:!1,error:"Play did not start: the remount was superseded before it finished booting."}}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t)}}}});E().session.reportFacet(()=>({timeScale:pe()?.loop.timeScale??null,loopLiveness:pe()?.loop.liveness??null,restartRequired:ln(),seed:pe()?.random?.seed??null,deterministic:pe()?.determinismDeclared??!1}));export{wo as A,nn as B,mo as C,Cs as D,Jt as E,Zt as F,As as G,Ps as H,Ss as I,bs as J,Es as K,Ds as L,Is as M,Ur as N,Ts as O,Ns as P,Os as Q,Ms as R,pn as S,Fs as T,Ls as U,Us as V,zo as W,Rs as X,Nr as Y,_s as Z,qs as a,Yo as b,rn as c,zs as d,_t as e,nt as f,pe as g,Y as h,$e as i,ks as j,$s as k,xr as l,Kt as m,an as n,Or as o,Gs as p,Oo as q,Vs as r,Jo as s,rt as t,Bs as u,Ws as v,xs as w,ln as x,Fo as y,js as z};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Ckxb31Yz.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-IFn-4i31.js","assets/index-B4bmKkgY.css","assets/gameplay-export-DiLQuPpn.js","assets/wav-encode-D31zWF6O.js","assets/output-DK8waum9.js","assets/play-mode-DomOvQie.js","assets/drei-asset-caches-jJoHXbTj.js","assets/native-debug-module-j-MekcLS.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-B3Cnne3x.js","assets/playtest-BnFenMBW.js","assets/game-contract-seams-TCpIMmHP.js","assets/instruments-IKn-vvNb.js","assets/frame-pacing-D5acoOzO.js","assets/edit-mode-authoring-D_BiHCQj.js","assets/json-history-resource-r-9q_hxP.js","assets/binding-resolver-BWwG10zJ.js","assets/adapter-surface-Y37Nzcyw.js","assets/entry-adjudication-BYy7TXOB.js","assets/r3f-root-factory-DjGnbU4n.js","assets/register-render-vitals-BO7x64kR.js","assets/render-census-BrQX_CXv.js","assets/structural-signature-0w-i_ats.js","assets/render-vitals-BZ5HtvMi.js","assets/static-batch-advisor-DqfXWRUq.js","assets/webgl-frame-capture-CRKX73E9.js","assets/world-state-ZGDGY_Xl.js","assets/frame-selector-cache-cCeUbcjG.js","assets/dev-build-gDYrq68M.js","assets/game-input-seams-BC6xhZy3.js","assets/seeded-random-CN0scLZj.js","assets/render-seed-DF4JHy7P.js","assets/frame-delta-D2nsw_Ht.js","assets/events-156d8d12.esm-C734MYnx.js","assets/index-bQE2NA0D.js","assets/realm-services-D25JHoqD.js","assets/canvas-entry-runtime-E5YjSgre.js","assets/three-ingest-runtime-DWijtqQ8.js","assets/EffectComposer-BHDH-NLz.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-qtkA7CQ8.js","assets/CSS3DRenderer-CAS2WZZy.js","assets/relative-path-guard-GiM7Lsz8.js","assets/capability-coverage-CfUeULDN.js","assets/react-root-DGLRLr-F.js","assets/editor-presentation-activity-C7SNSmTd.js","assets/active-ingest-DEgq9JiA.js","assets/ingest-source-persistence-DH6ioCOu.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-C9M98VNM.js","assets/mounted-authoring-TIN5EnCb.js","assets/three-DSsr_Lvp.js","assets/viewport-pick-context-DkawXbEi.js","assets/logger-Dqis-7W1.js","assets/run-ticks-settled-B0cTtmhQ.js","assets/three-authoring-adapter-Yqsank46.js","assets/source-persistence-backend-_-JMEXxE.js","assets/three-projection-core-kubBTx0s.js","assets/body-marks-D8iaje6y.js","assets/user-data-CZqsJDk-.js","assets/object-marks-DwvIEBOK.js","assets/structural-ids-CblajJQK.js","assets/object3d-authoring-subject-CyE4rQ2A.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/r3f-physics-binding-C8OqNRG2.js","assets/deferred-ingest-play-7V8OrW3e.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-BMT9kLWU.js","assets/board-guides-C3usUZZk.js","assets/writer-BPbm4_my.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-BRgDdtVk.js","assets/inference-diagnostics-YW0yJkKx.js","assets/editor-api-Bzmo0o8_.js"])))=>i.map(i=>d[i]);
2
+ import{q as y,am as f,_ as c,an as b,ae as g}from"./index-Ckxb31Yz.js";import{c as F,n as M,d as A,f as O,h as T,e as C,j as L,g as N,r as $,p as q}from"./play-mode-DomOvQie.js";import{r as W}from"./index-CtzuWnCS.js";import{n as z,s as R}from"./command-results-CUQD49AB.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-CinJrH5C.js";import"./three.module-IFn-4i31.js";import"./drei-asset-caches-jJoHXbTj.js";import"./native-debug-module-j-MekcLS.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-B3Cnne3x.js";import"./playtest-BnFenMBW.js";import"./game-contract-seams-TCpIMmHP.js";import"./instruments-IKn-vvNb.js";import"./frame-pacing-D5acoOzO.js";import"./edit-mode-authoring-D_BiHCQj.js";import"./json-history-resource-r-9q_hxP.js";import"./binding-resolver-BWwG10zJ.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-BYy7TXOB.js";import"./r3f-root-factory-DjGnbU4n.js";import"./register-render-vitals-BO7x64kR.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-DqfXWRUq.js";import"./webgl-frame-capture-CRKX73E9.js";import"./world-state-ZGDGY_Xl.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-BC6xhZy3.js";import"./seeded-random-CN0scLZj.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-C734MYnx.js";import"./index-bQE2NA0D.js";import"./realm-services-D25JHoqD.js";import"./canvas-entry-runtime-E5YjSgre.js";import"./three-ingest-runtime-DWijtqQ8.js";import"./EffectComposer-BHDH-NLz.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-qtkA7CQ8.js";import"./CSS3DRenderer-CAS2WZZy.js";import"./relative-path-guard-GiM7Lsz8.js";import"./capability-coverage-CfUeULDN.js";import"./react-root-DGLRLr-F.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./active-ingest-DEgq9JiA.js";import"./ingest-source-persistence-DH6ioCOu.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-C9M98VNM.js";import"./mounted-authoring-TIN5EnCb.js";import"./three-DSsr_Lvp.js";import"./viewport-pick-context-DkawXbEi.js";import"./logger-Dqis-7W1.js";import"./run-ticks-settled-B0cTtmhQ.js";import"./three-authoring-adapter-Yqsank46.js";import"./source-persistence-backend-_-JMEXxE.js";import"./three-projection-core-kubBTx0s.js";import"./body-marks-D8iaje6y.js";import"./user-data-CZqsJDk-.js";import"./object-marks-DwvIEBOK.js";import"./structural-ids-CblajJQK.js";import"./object3d-authoring-subject-CyE4rQ2A.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-C8OqNRG2.js";import"./deferred-ingest-play-7V8OrW3e.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-BMT9kLWU.js";import"./board-guides-C3usUZZk.js";import"./writer-BPbm4_my.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BRgDdtVk.js";import"./inference-diagnostics-YW0yJkKx.js";const vr="workspace.command";async function x(e){const{liveCanvasFrame:r}=await c(async()=>{const{liveCanvasFrame:t}=await import("./index-Ckxb31Yz.js").then(o=>o.u7);return{liveCanvasFrame:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));return r(e)}function H(){const e=N();e?.loop.liveness==="loop-starved"&&e.runTicks?.(1,{render:"last"})}function j(){const e=g().audio,r=e?.renderOffline;if(!e||!r)return;let t=null;try{const o=g().debug?.state("time");typeof o?.simSeconds=="number"&&Number.isFinite(o.simSeconds)&&(t=o.simSeconds)}catch{t=null}if(t!==null)return{startSeconds:t,render:r.bind(e)}}let m=null;const wr={play:{timeoutMs:12e4,derivedRefresh:"always",handle:async e=>{try{const o=e.seed,d=e.name;await C(typeof o=="number"?o:void 0,void 0,typeof d=="string"?d:null)}catch(o){return{ok:!1,error:o instanceof Error?o.message:String(o)}}if(!y().live.playing())return{ok:!1,error:"Play did not start: the run was superseded before it finished booting (a stop, or a newer play, landed during startup). Nothing is running."};const r=e.record,t=await L(f()??y().workspace.liveDocument.container(),{name:typeof r=="string"?r:null,audio:g().audio?.acquireRecordingStream?.()??null,canvasFrame:x,refreshFrame:H});return{ok:!0,...t?{data:{recording:t}}:{}}}},stop:{timeoutMs:3e4,derivedRefresh:"always",handle:async()=>{m?.abort(new Error("Video export cancelled by Stop."));const e=await O("stop");return T(),{ok:!0,...e?{data:{recording:e}}:{}}}},pause:{derivedRefresh:"always",handle:()=>(q(),{ok:!0})},resume:{derivedRefresh:"always",handle:()=>($(),{ok:!0})},step:{derivedRefresh:"always",handle:()=>(A(),{ok:!0})},"bridge-recording-export":{timeoutMs:6e5,derivedRefresh:"none",handle:async e=>{const r=y();if(r.session.playState()!=="paused")return{ok:!1,error:"Pause the game before exporting video."};const t=f();if(!t)return z();if(m)return{ok:!1,error:"A video export is already active."};const{exportGameplayVideo:o,validateGameplayExport:d,assertGameplayVideoSupport:S}=await c(async()=>{const{exportGameplayVideo:n,validateGameplayExport:l,assertGameplayVideoSupport:s}=await import("./gameplay-export-DiLQuPpn.js");return{exportGameplayVideo:n,validateGameplayExport:l,assertGameplayVideoSupport:s}},__vite__mapDeps([11,12,0,1,2,3,4,5,6,7,8,9,10,13])),h={frames:Number(e.frames),fps:e.fps===void 0?30:Number(e.fps)};try{d(h)}catch(n){return R(n)}if(m)return{ok:!1,error:"A video export is already active."};const i=new AbortController;m=i,b(!0);const k=setTimeout(()=>i.abort(new Error("Video export exceeded its ten-minute deadline.")),59e4),v=r.live.runWindow()?.startedAt??null,_=r.session.subscribe(()=>{(r.session.playState()!=="paused"||(r.live.runWindow()?.startedAt??null)!==v)&&i.abort(new Error("Video export cancelled: the Play session changed."))}),w=j();try{await S(t),i.signal.throwIfAborted();const{gameplayRecordingActive:n}=await c(async()=>{const{gameplayRecordingActive:a}=await import("./play-mode-DomOvQie.js").then(p=>p.Z);return{gameplayRecordingActive:a}},__vite__mapDeps([14,0,1,2,3,4,5,6,7,8,9,10,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,80,81,82]));n()&&await F();const{blob:l,...s}=await o(t,h,{step:()=>W.flushSync(()=>A()),assertActive:()=>{if(M(),r.session.playState()!=="paused"||f()!==t||(r.live.runWindow()?.startedAt??null)!==v)throw new Error("Video export interrupted: its game must remain paused and mounted.")},canvasFrame:x,signal:i.signal,...w?{audio:w}:{}}),{beginGameplayRecordingSink:E,appendGameplayRecordingChunk:P,finishGameplayRecordingSink:G,abortGameplayRecordingSink:V}=await c(async()=>{const{beginGameplayRecordingSink:a,appendGameplayRecordingChunk:p,finishGameplayRecordingSink:I,abortGameplayRecordingSink:D}=await import("./editor-api-Bzmo0o8_.js");return{beginGameplayRecordingSink:a,appendGameplayRecordingChunk:p,finishGameplayRecordingSink:I,abortGameplayRecordingSink:D}},__vite__mapDeps([83,0,1,2,3,4,5,6,7,8,9,10,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,80,81,82]));i.signal.throwIfAborted();const u=await E({startedAt:new Date().toISOString(),mimeType:"video/webm",purpose:"export",name:typeof e.name=="string"?e.name:`export-${Date.now()}`},i.signal);try{for(let a=0,p=0;a<l.size;a+=4*1024*1024,p++)i.signal.throwIfAborted(),await P(u,p,l.slice(a,a+4*1024*1024),i.signal);i.signal.throwIfAborted(),await G(u,s.audio?`fixed-step export with audio (${s.audio.codec}, ${s.audio.channels}ch @ ${s.audio.sampleRate} Hz)`:"fixed-step export, video only: this world has no AudioAdapter.renderOffline",i.signal),i.signal.throwIfAborted()}catch(a){throw await V(u),a}return{ok:!0,data:{...s,path:u.path}}}catch(n){return R(n)}finally{_(),clearTimeout(k),m=null,b(!1)}}}};export{wr as commands,vr as point};
@@ -1 +1 @@
1
- import{R as c,C as d,A as _,N as u,d as p,e as f,tk as b,tl as y,tm as m,tn as S,to as O,tp as g,tq as E,tr as T,ts as j,tt as P,tu as A,c1 as M,c2 as h}from"./index-GIL7oGEO.js";import{GAME_SYSTEM_ADAPTERS_SHAPE as I}from"./game-contract-seams-a5YXejOu.js";const Y=Object.freeze(Object.defineProperty({__proto__:null,EDITOR_VIEW_BUILT_IN_UTILITY_IDS:b,EDITOR_VIEW_DOCUMENT_KINDS:y,EDITOR_VIEW_KEYS:m,EDITOR_VIEW_TOOL_UTILITY_PREFIX:S,EDITOR_VIEW_WORKSPACE_DOCUMENT_IDS:O,EditorClient:g,EditorCommandError:E,editorViewFromUrl:T,editorViewUrl:j,isEditorViewDocumentKind:P,isEditorViewUtility:A},Symbol.toStringTag,{value:"Module"})),R={physics:f,networking:p,navigation:u,audio:_,camera:d,renderDebug:c},v={three:"node-id",canvas:"display",dom:null},i=Object.keys(I),D={bound:{},empty:[],malformed:[]};function k(r){return r.present===!1}function z(r,e){const t=[];for(const[o,n]of Object.entries(R[r]))n.optional||typeof e[o]!="function"&&t.push(o);return t}function C(r,e){const t=e?v[e]:null;if(t===null)return null;const o=r.keyedBy==="display"?"display":"node-id";return o===t?null:`declared a ${o}-keyed physics carrier on the ${e} surface, whose gizmo path addresses bodies by ${t} — the four members are all present but nothing on this lane can call them with values they accept (a ${e}-surface carrier declares \`keyedBy: '${t}'\`)`}function N(r,e,t){if(e==null)return{kind:"skip"};if(typeof e!="object")return{kind:"malformed",reason:`declared as ${typeof e}; expected an adapter object or { present: false, evidence }`};if(k(e)){const s=e.evidence;return typeof s!="string"||s.trim()===""?{kind:"malformed",reason:"declared `present: false` with no `evidence` string to back the absence"}:{kind:"empty",evidence:s}}const o=z(r,e);if(o.length>0)return{kind:"malformed",reason:`declared an adapter missing required member(s): ${o.join(", ")}`};const n=r==="physics"?C(e,t):null;return n!==null?{kind:"malformed",reason:n}:{kind:"bound"}}function w(r,e){const t=r?.systemAdapters;if(!t)return D;const o={},n=[],s=[];for(const a of i){const l=N(a,t[a],e);l.kind==="bound"?o[a]=t[a]:l.kind==="empty"?n.push({slot:a,evidence:l.evidence}):l.kind==="malformed"&&s.push({slot:a,reason:l.reason})}return{bound:o,empty:n,malformed:s}}const V=Object.freeze(Object.defineProperty({__proto__:null,CONTRACT_SYSTEM_SLOTS:i,projectContractSystemAdapters:w},Symbol.toStringTag,{value:"Module"})),$=Object.freeze(Object.defineProperty({__proto__:null,PHASE_ORDER:M,SystemPhase:h},Symbol.toStringTag,{value:"Module"})),K=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),W=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),L=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),x=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),B=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),G=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),q=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),F=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),J=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),X=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Q=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Z=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ee=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),te=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),oe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),re=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ne=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));export{i as C,K as a,B as b,V as c,W as d,L as e,x as f,q as g,G as h,Y as i,F as j,X as k,Q as l,Z as m,ee as n,oe as o,w as p,re as q,J as r,ne as s,$ as t,te as w};
1
+ import{R as c,C as d,A as _,N as u,d as p,e as f,tw as b,tx as y,ty as m,tz as S,tA as O,tB as g,tC as E,tD as T,tE as j,tF as P,tG as A,cv as M,cw as h}from"./index-Ckxb31Yz.js";import{GAME_SYSTEM_ADAPTERS_SHAPE as I}from"./game-contract-seams-TCpIMmHP.js";const Y=Object.freeze(Object.defineProperty({__proto__:null,EDITOR_VIEW_BUILT_IN_UTILITY_IDS:b,EDITOR_VIEW_DOCUMENT_KINDS:y,EDITOR_VIEW_KEYS:m,EDITOR_VIEW_TOOL_UTILITY_PREFIX:S,EDITOR_VIEW_WORKSPACE_DOCUMENT_IDS:O,EditorClient:g,EditorCommandError:E,editorViewFromUrl:T,editorViewUrl:j,isEditorViewDocumentKind:P,isEditorViewUtility:A},Symbol.toStringTag,{value:"Module"})),R={physics:f,networking:p,navigation:u,audio:_,camera:d,renderDebug:c},v={three:"node-id",canvas:"display",dom:null},i=Object.keys(I),D={bound:{},empty:[],malformed:[]};function z(r){return r.present===!1}function C(r,e){const t=[];for(const[o,n]of Object.entries(R[r]))n.optional||typeof e[o]!="function"&&t.push(o);return t}function k(r,e){const t=e?v[e]:null;if(t===null)return null;const o=r.keyedBy==="display"?"display":"node-id";return o===t?null:`declared a ${o}-keyed physics carrier on the ${e} surface, whose gizmo path addresses bodies by ${t} — the four members are all present but nothing on this lane can call them with values they accept (a ${e}-surface carrier declares \`keyedBy: '${t}'\`)`}function w(r,e,t){if(e==null)return{kind:"skip"};if(typeof e!="object")return{kind:"malformed",reason:`declared as ${typeof e}; expected an adapter object or { present: false, evidence }`};if(z(e)){const s=e.evidence;return typeof s!="string"||s.trim()===""?{kind:"malformed",reason:"declared `present: false` with no `evidence` string to back the absence"}:{kind:"empty",evidence:s}}const o=C(r,e);if(o.length>0)return{kind:"malformed",reason:`declared an adapter missing required member(s): ${o.join(", ")}`};const n=r==="physics"?k(e,t):null;return n!==null?{kind:"malformed",reason:n}:{kind:"bound"}}function N(r,e){const t=r?.systemAdapters;if(!t)return D;const o={},n=[],s=[];for(const a of i){const l=w(a,t[a],e);l.kind==="bound"?o[a]=t[a]:l.kind==="empty"?n.push({slot:a,evidence:l.evidence}):l.kind==="malformed"&&s.push({slot:a,reason:l.reason})}return{bound:o,empty:n,malformed:s}}const V=Object.freeze(Object.defineProperty({__proto__:null,CONTRACT_SYSTEM_SLOTS:i,projectContractSystemAdapters:N},Symbol.toStringTag,{value:"Module"})),$=Object.freeze(Object.defineProperty({__proto__:null,PHASE_ORDER:M,SystemPhase:h},Symbol.toStringTag,{value:"Module"})),K=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),W=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),x=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),B=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),G=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),L=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),F=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),q=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),J=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),X=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Q=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Z=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ee=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),te=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),oe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),re=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ne=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));export{i as C,K as a,G as b,V as c,W as d,x as e,B as f,F as g,L as h,Y as i,q as j,X as k,Q as l,Z as m,ee as n,oe as o,N as p,re as q,J as r,ne as s,$ as t,te as w};
@@ -1 +1 @@
1
- import{f as a,P as u,O as l}from"./three.module-D396a9Mn.js";const i=Symbol.for("vgai.audio-pose-guard");function c(t){return t.elements.every(Number.isFinite)}function d(t,e){const r=t[i];if(r){e&&(r.report=e);return}const o={dropped:0,...e?{report:e}:{}};Object.defineProperty(t,i,{value:o});const n=new WeakSet,p=t.updateMatrixWorld;t.updateMatrixWorld=function(s){if(l.prototype.updateMatrixWorld.call(this,s),this.context.state!=="running"){this._clock&&(this.timeDelta=0,n.add(this));return}if(c(this.matrixWorld)){n.delete(this)&&this._clock?.getDelta(),p.call(this,s);return}o.dropped++,o.report?.(this.type)}}function g(t){d(a.prototype,t),d(u.prototype,t)}function x(){return(a.prototype[i]?.dropped??0)+(u.prototype[i]?.dropped??0)}export{x as audioPoseUpdatesDropped,g as installAudioPoseGuard};
1
+ import{f as a,P as u,O as l}from"./three.module-IFn-4i31.js";const i=Symbol.for("vgai.audio-pose-guard");function c(t){return t.elements.every(Number.isFinite)}function d(t,e){const r=t[i];if(r){e&&(r.report=e);return}const o={dropped:0,...e?{report:e}:{}};Object.defineProperty(t,i,{value:o});const n=new WeakSet,p=t.updateMatrixWorld;t.updateMatrixWorld=function(s){if(l.prototype.updateMatrixWorld.call(this,s),this.context.state!=="running"){this._clock&&(this.timeDelta=0,n.add(this));return}if(c(this.matrixWorld)){n.delete(this)&&this._clock?.getDelta(),p.call(this,s);return}o.dropped++,o.report?.(this.type)}}function g(t){d(a.prototype,t),d(u.prototype,t)}function x(){return(a.prototype[i]?.dropped??0)+(u.prototype[i]?.dropped??0)}export{x as audioPoseUpdatesDropped,g as installAudioPoseGuard};
@@ -1 +1 @@
1
- import{tv as s}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";export{s as mountVgai};
1
+ import{tH as s}from"./index-Ckxb31Yz.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-IFn-4i31.js";export{s as mountVgai};
@@ -1 +1 @@
1
- import{p as o}from"./utility-view-state-BHypxA33.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";const s="workspace.action",w=[{id:"profiler",label:"Open Profiler",execute:()=>o.open("profiler")}];export{w as actions,s as point};
1
+ import{p as o}from"./utility-view-state-DYJY8V8O.js";import"./index-Ckxb31Yz.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-IFn-4i31.js";const s="workspace.action",w=[{id:"profiler",label:"Open Profiler",execute:()=>o.open("profiler")}];export{w as actions,s as point};
@@ -1 +1 @@
1
- import{p as r}from"./utility-view-state-BHypxA33.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";const c="workspace.menu",a={menu:"debug",items:[{id:"profiler",label:"Profiler",testId:"menu-profiler",execute:()=>r.open("profiler")}]};export{a as menu,c as point};
1
+ import{p as r}from"./utility-view-state-DYJY8V8O.js";import"./index-Ckxb31Yz.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-IFn-4i31.js";const c="workspace.menu",a={menu:"debug",items:[{id:"profiler",label:"Profiler",testId:"menu-profiler",execute:()=>r.open("profiler")}]};export{a as menu,c as point};
@@ -1 +1 @@
1
- import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{p as S}from"./utility-view-state-BHypxA33.js";import{r as h}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a7 as L,q as M,ao as n,a4 as x,dR as p,dP as a,hK as _,eE as J,hN as I,hM as O,jr as Y,js as q}from"./index-GIL7oGEO.js";import{s as K,f as P,a as X,d as A,c as Q,b as Z,g as ee,l as te,i as ne,e as se,h as re,j as ae,u as oe,t as ie,k as le,m as de,n as w,o as F,p as ce}from"./frame-debugger-store-D1Mf_5up.js";import{buildChromeTrace as pe}from"./chrome-trace-YZHMz60-.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";const j={fontFamily:n.typography.mono,fontSize:11};function me({draw:t,selected:s,onSelect:r}){return e.jsxs(x,{type:"button",variant:"ghost","data-testid":"frame-draw-row","data-draw-index":t.index,"data-selected":s||void 0,className:"vgai-frame-draw-row",onClick:r,children:[e.jsxs("span",{style:{...j,color:n.content.dim,width:34,display:"inline-block"},children:["#",t.index]}),e.jsx("span",{style:{...j,color:n.content.primary},children:t.mode}),e.jsxs("span",{style:{...j,color:n.content.muted},children:[" ",t.count]}),t.instanceCount!==null&&e.jsxs("span",{style:{...j,color:n.content.muted},children:[" ×",t.instanceCount]}),e.jsxs("span",{style:{...j,color:t.annotation?n.content.primary:n.content.dim,fontStyle:t.annotation?"normal":"italic"},children:[" ",t.annotation?t.annotation.object.name||t.annotation.object.type:"unattributed"]})]})}function b({label:t,value:s}){return e.jsxs("div",{style:{display:"flex",gap:8,padding:"1px 0"},children:[e.jsx("span",{style:{fontSize:10,color:n.content.muted,width:92,flexShrink:0},children:t}),e.jsx("span",{style:{...j,color:n.content.primary},children:s})]})}const $=t=>t?"on":"off";function ue(t){if(t.kind==="canvas")return"canvas (default framebuffer)";const s=t.width!==null&&t.height!==null?`${t.width}×${t.height}`:"(size not queryable)";return`${t.label??"framebuffer"} ${s}`}function fe(t){return`blend ${$(t.blend)} · depth test ${$(t.depthTest)} · depth write ${$(t.depthWrite)} · cull ${t.cull} · scissor ${$(t.scissor)}`}function he(t){const s=t.instanceCount!==null?` · ${t.instanceCount} instances`:" · not instanced";return`${t.mode} · ${t.count}${s}`}function xe({draw:t}){return e.jsxs("div",{"data-testid":"frame-draw-detail",style:{padding:8},children:[e.jsx(b,{label:"entry point",value:t.entryPoint}),e.jsx(b,{label:"mode / count",value:he(t)}),e.jsx(b,{label:"program",value:t.programLabel??"none bound"}),e.jsx(b,{label:"target",value:ue(t.target)}),e.jsx(b,{label:"viewport",value:`[${t.viewport.join(", ")}]`}),e.jsx(b,{label:"state",value:fe(t.state)}),t.annotation?e.jsxs(e.Fragment,{children:[e.jsx(b,{label:"object",value:`${t.annotation.object.name||"(unnamed)"} · ${t.annotation.object.type}`}),e.jsx(b,{label:"geometry",value:`${t.annotation.geometry.name||t.annotation.geometry.type}${t.annotation.geometry.indexed?" · indexed":""}`}),e.jsx(b,{label:"attributes",value:t.annotation.geometry.attributes.join(", ")||"—"}),e.jsx(b,{label:"material",value:`${t.annotation.material.name||"(unnamed)"} · ${t.annotation.material.type}`})]}):e.jsx("div",{"data-testid":"frame-draw-unattributed",style:{marginTop:6,fontSize:11,fontStyle:"italic",color:n.content.muted},children:"Not attributable (shadow / post-processing pass — the instrument attributes only main-pass draws through each object's onBeforeRender, and reports the gap honestly rather than guessing)."})]})}function ge({capture:t,drawIndex:s,setDrawIndex:r}){const o=t.drawCalls.length,l=Math.min(s,Math.max(0,o-1)),i=t.drawCalls[l]??null,u=ae(t);return e.jsxs("div",{style:{flex:1,minHeight:0,display:"flex"},children:[e.jsxs("div",{style:{flex:1,minWidth:0,overflow:"auto",borderRight:`1px solid ${n.boundary.default}`},children:[e.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center",padding:4,borderBottom:`1px solid ${n.boundary.default}`},children:[e.jsx(x,{type:"button",size:"compact",variant:"ghost","data-testid":"frame-draw-prev",disabled:l<=0,onClick:()=>r(Math.max(0,l-1)),children:"◀ Prev"}),e.jsx(x,{type:"button",size:"compact",variant:"ghost","data-testid":"frame-draw-next",disabled:l>=o-1,onClick:()=>r(Math.min(o-1,l+1)),children:"Next ▶"}),e.jsxs("span",{style:{fontSize:10,color:n.content.muted},children:[o===0?"0":l+1,"/",o]})]}),u.map(c=>e.jsxs("div",{"data-testid":"frame-target-group","data-target":c.target,children:[e.jsxs("div",{style:{...j,padding:"2px 8px",color:n.content.muted,borderTop:`1px solid ${n.boundary.default}`,borderBottom:`1px solid ${n.boundary.default}`},children:[c.target," · ",c.draws.length," draws"]}),c.draws.map(m=>e.jsx(me,{draw:m,selected:m.index===l,onSelect:()=>r(m.index)},m.index))]},c.target))]}),e.jsxs("div",{style:{flex:1,minWidth:0,overflow:"auto"},children:[i?e.jsx(xe,{draw:i}):e.jsx("div",{style:{padding:12,color:n.content.muted,fontSize:12},children:"This capture recorded no draws."}),t.notes.length>0&&e.jsx("div",{style:{padding:"4px 8px",fontSize:10,color:n.content.dim},"data-testid":"frame-capture-notes",children:t.notes.join(" ")})]})]})}function ye({captures:t,selectedId:s}){return e.jsx("div",{"data-testid":"frame-capture-history",style:{display:"flex",gap:6,flexWrap:"wrap",padding:"4px 8px",borderBottom:`1px solid ${n.boundary.default}`},children:t.map(r=>{const o=se(r);return e.jsxs(x,{type:"button",size:"compact",variant:"ghost","data-testid":"frame-capture-item","data-capture-id":r.id,"data-selected":r.id===s||void 0,onClick:()=>re(r.id),children:["#",r.id," · ",o.drawCalls," draws",o.unattributed>0?` · ${o.unattributed} unattr`:"",o.truncated>0?` · +${o.truncated} capped`:""]},r.id)})})}function be(){h.useSyncExternalStore(K,P,P);const[t,s]=h.useState(0),r=L(()=>M().systems.inspected().renderDebug??null);h.useEffect(()=>{X(r)},[r]);const o=A(r),l=ee(),i=l.selected;if(h.useEffect(()=>{s(0)},[i?.id]),!r||!o)return e.jsxs("div",{"data-testid":"frame-debugger-empty",style:{padding:16,color:n.content.muted,fontSize:12,lineHeight:"18px"},children:[e.jsx("div",{style:{color:n.content.primary,marginBottom:4},children:"No render-debug adapter — no game session is running."}),"Frame capture exists only while a game session runs. Press Play: first-party worlds register a ",e.jsx("code",{style:j,children:"RenderDebugAdapter"})," automatically when they hold a real WebGL2 context; a custom world exposes its own via"," ",e.jsx("code",{style:j,children:"ctx.registerSystemAdapter?.('renderDebug', adapter)"}),". A headless mount registers none — there is nothing to capture."]});const u=te(),c=ne();return e.jsxs("div",{"data-testid":"frame-debugger",className:"vgai-content-frost",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",fontSize:12},children:[e.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:10,alignItems:"center",padding:"4px 8px",borderBottom:`1px solid ${n.boundary.default}`},children:[e.jsx(x,{type:"button",size:"compact","data-testid":"frame-capture-button",disabled:c,onClick:()=>void Q(r),children:c?"Capturing…":"Capture frame"}),e.jsx("span",{style:{fontSize:10,color:n.content.dim},children:"Single-frame draw-call list with per-draw state — not a GPU replayer."}),l.all.length>0&&e.jsx(x,{type:"button",size:"compact",variant:"ghost","data-testid":"frame-capture-clear",onClick:()=>Z(),children:"Clear"})]}),u&&e.jsxs("div",{"data-testid":"frame-capture-error",style:{padding:"4px 8px",fontSize:11,color:n.semantic.danger,borderBottom:`1px solid ${n.boundary.default}`},children:["Capture failed: ",u]}),l.all.length>0&&e.jsx(ye,{captures:l.all,selectedId:i?.id??null}),i?e.jsx(ge,{capture:i,drawIndex:t,setDrawIndex:s},i.id):e.jsxs("div",{"data-testid":"frame-debugger-no-capture",style:{padding:12,color:n.content.muted,fontSize:12},children:["No frame captured yet. Press ",e.jsx("strong",{children:"Capture frame"})," while the game renders."]})]})}function je(t){if(t.length<4)return 0;let s=Number.POSITIVE_INFINITY;for(const o of t)s=Math.min(s,o);let r=0;for(const o of t)r+=Math.max(0,o-s);return r}const E=1200;function ve(){const t=[];let s=null,r=0;const o=()=>{const l=performance.now();t.push({t:l,gapMs:l-r}),t.length>E&&t.splice(0,t.length-E),r=l,s=setTimeout(o,0)};return{start(){s===null&&(t.length=0,r=performance.now(),s=setTimeout(o,0))},stop(){s!==null&&(clearTimeout(s),s=null)},busySince(l){const i=[];for(const u of t)u.t>=l&&i.push(u.gapMs);return{busyMs:je(i),sampleCount:i.length}}}}const k={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:null}},Se=500;function we(t){const s=URL.createObjectURL(new Blob([t.exportJSON()],{type:"application/json"})),r=document.createElement("a");r.href=s,r.download=`vgai-performance-${new Date().toISOString().replaceAll(":","-")}.json`,r.click(),URL.revokeObjectURL(s)}function $e(t,s){const r=pe(t.getSnapshot().frames,{processName:s,threadName:"main"}),o=URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),l=document.createElement("a");l.href=o,l.download=`vgai-trace-${new Date().toISOString().replaceAll(":","-")}.json`,l.click(),URL.revokeObjectURL(o)}const C=720,T=18,D=40,R=[n.accent.default,n.semantic.success,n.semantic.warning,n.content.muted];function Ce({snapshot:t}){const s=t.frames,[r,o]=h.useState(null),l=r!==null&&r<s.length?r:s.length-1,i=s[l],u=le(s,C,D),c=i?de(i,C):[],m=c.reduce((d,g)=>Math.max(d,g.depth),0);return s.length===0?e.jsxs("div",{"data-testid":"flamegraph-empty",style:{padding:a[6],color:n.content.muted},children:["No frames recorded yet. Frames accumulate while the profiler is enabled; use"," ",e.jsx("strong",{children:"Record capture"})," to also collect per-component spans."]}):e.jsxs("div",{"data-testid":"flamegraph-view",style:{padding:a[4]},children:[e.jsxs("div",{style:{marginBottom:a[4],color:n.content.muted},children:["Frame ",e.jsx("span",{style:{color:n.content.primary},children:i?i.id:"—"})," ·"," ",i?`${i.cpuMs.toFixed(2)} ms CPU`:""," · GPU"," ",e.jsx("span",{style:{color:n.content.primary},children:i&&i.render.gpuMs!==null?`${i.render.gpuMs.toFixed(2)} ms`:"n/a"})]}),e.jsx("div",{"data-testid":"flame-frame-strip",style:{position:"relative",width:C,height:D,boxShadow:`inset 0 0 0 1px ${n.boundary.default}`,marginBottom:a[5]},children:u.map(d=>e.jsx("div",{role:"button",tabIndex:0,"data-testid":"flame-frame-bar","data-frame-index":d.index,"data-selected":d.index===l||void 0,title:`frame ${d.frameId} · ${d.cpuMs.toFixed(2)} ms`,onClick:()=>o(d.index),onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&o(d.index)},style:{position:"absolute",left:d.x,bottom:0,width:Math.max(1,d.w-1),height:Math.max(1,d.h),cursor:"pointer",background:d.index===l?n.semantic.warning:n.accent.default}},d.frameId))}),e.jsx("div",{"data-testid":"flamegraph-rows",style:{position:"relative",width:C,height:(m+1)*T},children:c.map((d,g)=>e.jsx("div",{"data-testid":"flame-rect","data-depth":d.depth,"data-name":d.label,title:`${d.label} · ${d.ms.toFixed(3)} ms`,style:{position:"absolute",left:d.x,top:d.depth*T,width:Math.max(1,d.w),height:T-1,overflow:"hidden",whiteSpace:"nowrap",fontSize:p.sm,lineHeight:`${T-1}px`,paddingLeft:3,color:n.content.onAccent,background:R[Math.min(d.depth,R.length-1)],borderRight:`1px solid ${n.surface.inset}`},children:d.label},`${d.depth}-${g}-${d.label}`))}),e.jsxs("div",{style:{marginTop:a[3],fontSize:p.sm,color:n.content.dim},children:["Rows: frame · phase · system",t.recording?" · component (recording)":"",". Only measured CPU spans are drawn — GPU time is a whole-frame aggregate, never a fabricated lane."]})]})}function B({title:t,entries:s,estimated:r,testId:o}){return e.jsxs("div",{"data-testid":o,style:{marginTop:a[5],border:`1px solid ${n.boundary.default}`},children:[e.jsxs("div",{style:{padding:`${a[3]} ${a[5]}`,borderBottom:`1px solid ${n.boundary.default}`,color:n.content.muted},children:[t,r&&e.jsx("span",{style:{marginLeft:a[3],fontSize:p.xs,color:n.content.dim},children:"ESTIMATED"})]}),s.length===0?e.jsx("div",{style:{padding:`${a[2]} ${a[5]}`,color:n.content.dim,fontSize:p.base},children:"none"}):s.map(l=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:a[8],padding:"3px 10px"},children:[e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:l.name}),e.jsx("span",{style:{fontVariantNumeric:"tabular-nums"},children:w(l.bytes)})]},l.name))]})}function Te(){const t=L(()=>M().systems.inspected().renderDebug??null),s=A(t),[r,o]=h.useState(null);h.useEffect(()=>{if(!t?.memorySnapshot){o(null);return}const i=()=>o(t.memorySnapshot?.()??null);i();const u=setInterval(i,1e3);return()=>clearInterval(u)},[t]);const l=Y();return e.jsxs("div",{style:{padding:a[4]},children:[e.jsxs("div",{"data-testid":"memory-heap",style:{border:`1px solid ${n.boundary.default}`,padding:a[5],marginBottom:a[5]},children:[e.jsx("div",{style:{color:n.content.dim,textTransform:"uppercase",fontSize:p.sm},children:"JS heap (performance.memory)"}),q(l)?e.jsxs("div",{style:{fontSize:p.xl,color:n.content.primary,marginTop:3},children:[w(l.usedBytes)," ",e.jsxs("span",{style:{fontSize:p.base,color:n.content.muted},children:["used / ",w(l.totalBytes)," total"]})]}):e.jsx("div",{"data-testid":"memory-heap-unavailable",style:{fontSize:p.base,color:n.content.muted,marginTop:3,fontStyle:"italic"},children:l.unavailable})]}),s?.memory?r===null?e.jsx("div",{style:{padding:a[4],color:n.content.muted,fontSize:p.base},children:"Waiting for the first render-memory sample…"}):e.jsxs("div",{"data-testid":"memory-section",children:[e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, minmax(80px, 1fr))",gap:a[4]},children:[["Geometries",String(r.counts.geometries)],["Textures",String(r.counts.textures)],["Programs",r.counts.programs===null?"n/a until first render":String(r.counts.programs)]].map(([i,u])=>e.jsxs("div",{style:{border:`1px solid ${n.boundary.default}`,padding:a[5]},children:[e.jsx("div",{style:{color:n.content.dim,textTransform:"uppercase",fontSize:p.sm},children:i}),e.jsx("div",{style:{fontSize:p["2xl"],color:n.content.primary,marginTop:3},children:u})]},i))}),e.jsxs("div",{"data-testid":"memory-vram-totals",style:{display:"flex",gap:18,marginTop:a[5],fontSize:p.base,color:n.content.muted},children:[e.jsxs("span",{children:["geometry buffers"," ",e.jsx("span",{style:{color:n.content.primary},children:w(r.estimatedGeometryBytes)})," ",e.jsx("span",{style:{fontSize:p.xs,color:n.content.dim},children:"EXACT"})]}),e.jsxs("span",{children:["texture VRAM"," ",e.jsx("span",{style:{color:n.content.primary},children:w(r.estimatedTextureBytes)})," ",e.jsx("span",{style:{fontSize:p.xs,color:n.content.dim},children:"ESTIMATED"})]})]}),e.jsx(B,{title:"Top geometries",entries:r.topGeometries,estimated:!1,testId:"memory-top-geometries"}),e.jsx(B,{title:"Top textures",entries:r.topTextures,estimated:!0,testId:"memory-top-textures"}),r.unestimated.length>0&&e.jsxs("div",{"data-testid":"memory-unestimated",style:{marginTop:a[5],border:`1px solid ${n.boundary.default}`},children:[e.jsxs("div",{style:{padding:`${a[3]} ${a[5]}`,borderBottom:`1px solid ${n.boundary.default}`,color:n.content.muted},children:["Unmeasured textures (",r.unestimated.length,") — excluded from the total, not zeroed"]}),r.unestimated.map(i=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:a[8],padding:"3px 10px",fontSize:p.base},children:[e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:i.name}),e.jsx("span",{style:{color:n.content.dim},children:i.reason})]},i.name))]})]}):e.jsxs("div",{"data-testid":"memory-absent",style:{padding:a[4],color:n.content.muted,fontSize:p.base,fontStyle:"italic"},children:["Render-memory introspection is not provided by this world's adapter — a headless mount has no ",e.jsx("code",{children:"renderer.info"}),", and a canvas (PixiJS) world's renderer publishes no managed geometry collection to measure at all. Enter Play with a first-party three world to inspect geometry/texture footprints."]})]})}function ze(t){const s=h.useRef([]),r=typeof PerformanceObserver<"u"&&(PerformanceObserver.supportedEntryTypes??[]).includes("long-animation-frame");return h.useEffect(()=>{if(!t||!r)return;s.current=[];const o=new PerformanceObserver(l=>{const i=s.current;for(const u of l.getEntries())i.push(u);i.length>40&&i.splice(0,i.length-40)});return o.observe({type:"long-animation-frame"}),()=>o.disconnect()},[t,r]),{entries:s.current,supported:r}}function Me(t,s,r){const o=h.useRef(null);o.current===null&&(o.current=ve()),h.useEffect(()=>{const i=o.current;if(!(!t||!i))return i.start(),()=>i.stop()},[t]);const l=performance.now()-1e3;return ie(s.frames,l,o.current.busySince(l),r)}function Pe({row:t,rootMs:s}){const r=t.ms!==null&&s>0?Math.min(1,t.ms/s):0,o=t.depth===0;return e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"260px 1fr 70px",gap:a[5],padding:`${a[2]} ${a[5]}`,paddingLeft:10+t.depth*16},children:[e.jsxs("span",{style:{color:o||t.depth===1?n.content.primary:n.content.muted,fontStyle:t.parallel?"italic":void 0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:t.note?`${t.label} — ${t.note}`:t.label,children:[t.label,t.note&&e.jsx("span",{style:{marginLeft:a[3],fontSize:p.sm,color:n.content.dim},children:t.note})]}),e.jsx("div",{style:{background:n.surface.raised,height:6,marginTop:5,opacity:t.parallel?.45:1},children:e.jsx("div",{style:{width:`${r*100}%`,height:"100%",background:!o&&t.ms!==null&&t.ms>8?n.semantic.warning:n.accent.default}})}),e.jsx("span",{style:{textAlign:"right",fontVariantNumeric:"tabular-nums",color:o?n.content.primary:void 0},children:t.ms===null?"—":`${t.ms.toFixed(1)} ms`})]})}function Fe({snapshot:t,timeSpent:s,entries:r,loafSupported:o}){const l=s?.budget??null,i=l?F(l.frameMs,l.loopMs):F(t.p95Ms,t.cpuMs),u=1e4,c=ce(r.filter(m=>(m.startTime??0)>=performance.now()-u));return s===null&&!i.dominated&&c.longFrameCount===0?null:e.jsxs("div",{"data-testid":"time-spent-section",style:{marginTop:a[6],border:`1px solid ${n.boundary.default}`},children:[e.jsx("div",{style:{padding:"7px 10px",borderBottom:`1px solid ${n.boundary.default}`,color:n.content.muted},children:"Where the frame goes"}),s!==null&&e.jsx("div",{"data-testid":"time-spent-tree",style:{paddingBottom:a[1]},children:s.rows.map(m=>e.jsx(Pe,{row:m,rootMs:s.budget.frameMs},`${m.depth}:${m.label}`))}),i.dominated&&e.jsxs("div",{style:{padding:`${a[3]} ${a[5]}`,color:n.content.muted,borderTop:`1px solid ${n.boundary.default}`},children:["The measured loop explains less than half of the frame time — the bottleneck is"," ",c.scripts.length>0?"partly the main-thread work below, and the rest":"not on the main thread: look at the display pipeline"," ","(GPU/compositor: post-effects, glass chrome, pixel ratio) or browser throttling."]}),c.scripts.length>0&&e.jsx("div",{style:{padding:"5px 10px 2px",borderTop:`1px solid ${n.boundary.default}`,fontSize:p.sm,color:n.content.dim},children:"Named main-thread offenders — longer memory than the tree (last 10s of long frames)"}),c.scripts.map(m=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:a[8],padding:`${a[2]} ${a[5]}`},children:[e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:m.key}),e.jsxs("span",{style:{fontVariantNumeric:"tabular-nums"},children:[m.totalMs," ms ×",m.count]})]},m.key)),c.longFrameCount>0&&e.jsxs("div",{style:{padding:`${a[2]} ${a[5]}`,fontSize:p.sm,color:n.content.dim},children:[c.longFrameCount," long main-thread frame",c.longFrameCount===1?"":"s"," (",c.totalLongMs," ms total, ",c.unattributedMs," ms unattributed style/layout/GC) — browser long-animation-frame report, last 10s."]}),!o&&e.jsx("div",{style:{padding:`${a[2]} ${a[5]}`,fontSize:p.sm,color:n.content.dim},children:"Main-thread attribution unavailable — this browser does not support long-animation-frame timing."})]})}function Ee(){const t=oe(),s=t?.profiler??null,[r,o]=h.useState(k),[l,i]=h.useState(!1),[u,c]=h.useState(!1),[m,d]=h.useState("overview"),g=h.useRef(!1),z=ze(s),N=Me(s,r,z.entries),U=()=>{const f=!g.current;g.current=f,i(f),!f&&s&&o(s.getSnapshot())},H=()=>{if(!s)return;const f=!s.enabled;f&&c(!1),s.enabled=f,o(s.getSnapshot())};return h.useEffect(()=>{if(!s){o(k);return}g.current=!1,i(!1),c(!1);const f=s.enabled;s.enabled=!0,o(s.getSnapshot());let y=null,v=performance.now();const V=()=>{y=null,!g.current&&(v=performance.now(),o(s.getSnapshot()))},W=s.subscribe(()=>{if(g.current||y!==null)return;const G=Math.max(0,Se-(performance.now()-v));y=setTimeout(V,G)});return()=>{W(),y!==null&&clearTimeout(y),!f&&!s.recording&&(s.enabled=!1)}},[s]),s?e.jsxs("div",{className:"vgai-content-frost",style:{height:"100%",overflow:"auto",padding:a[6],color:n.content.primary,fontSize:p.md},children:[e.jsxs("div",{style:{marginBottom:a[5],color:n.content.muted},children:["Profiling ",e.jsx("span",{style:{color:n.content.primary},children:t?.label}),r.enabled&&u&&e.jsx(_,{style:{marginLeft:a[4]},children:"Profiling active"})]}),r.enabled&&!u&&e.jsxs(J,{tone:"warning",style:{marginBottom:a[5]},actions:e.jsx(x,{size:"compact",variant:"ghost",onClick:()=>c(!0),children:"Dismiss"}),children:["Live profiling is active and adds measurement overhead. Displayed timings include that cost",r.recording?"; capture recording adds detailed timing marks":"","."]}),e.jsxs("div",{style:{display:"flex",gap:a[4],alignItems:"center",marginBottom:a[6]},children:[e.jsx(x,{size:"compact",onClick:U,children:l?"Resume view":"Freeze view"}),e.jsxs(x,{size:"compact",onClick:H,children:[r.enabled?"Disable":"Enable"," profiler"]}),e.jsx(x,{size:"compact",onClick:()=>r.recording?s.stopRecording():s.startRecording(),children:r.recording?"Stop capture":"Record capture"}),e.jsx(x,{size:"compact",onClick:()=>s.clear(),children:"Clear"}),e.jsx(x,{size:"compact",onClick:()=>we(s),children:"Export JSON"}),e.jsx(x,{size:"compact","data-testid":"profiler-export-trace",onClick:()=>$e(s,t?.label??"vgai"),children:"Export Chrome trace"})]}),e.jsx(I,{"aria-label":"Profiler views",style:{marginBottom:a[6]},children:[["overview","Overview"],["flamegraph","Flamegraph"],["memory","Memory"]].map(([f,y])=>e.jsx(O,{selected:m===f,"data-testid":`profiler-view-${f}`,onClick:()=>d(f),children:y},f))}),m==="flamegraph"&&e.jsx(Ce,{snapshot:r}),m==="memory"&&e.jsx(Te,{}),m==="overview"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(80px, 1fr))",gap:a[4]},children:[["FPS",r.fps.toFixed(0)],["CPU",`${r.cpuMs.toFixed(2)} ms`],["p95 frame",`${r.p95Ms.toFixed(2)} ms`],["p99 frame",`${r.p99Ms.toFixed(2)} ms`],["GPU",r.render.gpuMs===null?"n/a":`${r.render.gpuMs.toFixed(2)} ms`],["Draw calls",String(r.render.drawCalls)],["Triangles",r.render.triangles.toLocaleString()]].map(([f,y])=>e.jsxs("div",{style:{border:`1px solid ${n.boundary.default}`,padding:a[5]},children:[e.jsx("div",{style:{color:n.content.dim,textTransform:"uppercase",fontSize:p.sm},children:f}),e.jsx("div",{style:{fontSize:18,color:n.content.primary,marginTop:3},children:y})]},f))}),e.jsx(Fe,{snapshot:r,timeSpent:N,entries:z.entries,loafSupported:z.supported}),[["Components (recording)",r.components]].map(([f,y])=>e.jsxs("div",{style:{marginTop:a[6],border:`1px solid ${n.boundary.default}`},children:[e.jsx("div",{style:{padding:"7px 10px",borderBottom:`1px solid ${n.boundary.default}`,color:n.content.muted},children:f}),y.slice(0,12).map(v=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:a[8],padding:`${a[2]} ${a[5]}`},children:[e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:v.name}),e.jsxs("span",{style:{fontVariantNumeric:"tabular-nums"},children:[v.ms.toFixed(2)," ms"]})]},v.name))]},f))]})]}):e.jsx("div",{style:{padding:a[6],fontSize:p.md,color:n.content.muted,maxWidth:480},children:e.jsx("p",{style:{margin:0},children:M().documents.active()?"The active document has no live render loop to profile.":"Open a rendered document to profile it."})})}const ke=[{id:"profiler",label:"Profiler"},{id:"frame",label:"Frame"}];function De(){h.useSyncExternalStore(S.subscribe,S.version,S.version);const t=S.active();return e.jsxs("div",{"data-testid":"profiler-panel",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column"},children:[e.jsx(I,{"aria-label":"Profiler views",children:ke.map(s=>e.jsx(O,{selected:t===s.id,"data-testid":`profiler-tab-${s.id}`,onClick:()=>S.select(s.id),children:s.label},s.id))}),e.jsxs("div",{role:"tabpanel",style:{flex:1,minHeight:0,display:"flex"},children:[t==="profiler"&&e.jsx(Ee,{}),t==="frame"&&e.jsx(be,{})]})]})}const Je="workspace.utility",Ye="Profiler",qe=20;function Ke(){return e.jsx(De,{})}export{Ke as default,qe as order,Je as point,Ye as title};
1
+ import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{p as S}from"./utility-view-state-DYJY8V8O.js";import{r as h}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a8 as L,q as M,ap as n,a5 as x,eH as p,eF as a,iy as _,cc as J,iA as I,iz as O,k8 as Y,k9 as q}from"./index-Ckxb31Yz.js";import{s as X,f as F,a as K,d as A,c as Q,b as Z,g as ee,l as te,i as ne,e as se,h as re,j as ae,u as oe,t as ie,k as le,m as de,n as w,o as P,p as ce}from"./frame-debugger-store-BZgIOlU6.js";import{buildChromeTrace as pe}from"./chrome-trace-YZHMz60-.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";const j={fontFamily:n.typography.mono,fontSize:11};function me({draw:t,selected:s,onSelect:r}){return e.jsxs(x,{type:"button",variant:"ghost","data-testid":"frame-draw-row","data-draw-index":t.index,"data-selected":s||void 0,className:"vgai-frame-draw-row",onClick:r,children:[e.jsxs("span",{style:{...j,color:n.content.dim,width:34,display:"inline-block"},children:["#",t.index]}),e.jsx("span",{style:{...j,color:n.content.primary},children:t.mode}),e.jsxs("span",{style:{...j,color:n.content.muted},children:[" ",t.count]}),t.instanceCount!==null&&e.jsxs("span",{style:{...j,color:n.content.muted},children:[" ×",t.instanceCount]}),e.jsxs("span",{style:{...j,color:t.annotation?n.content.primary:n.content.dim,fontStyle:t.annotation?"normal":"italic"},children:[" ",t.annotation?t.annotation.object.name||t.annotation.object.type:"unattributed"]})]})}function b({label:t,value:s}){return e.jsxs("div",{style:{display:"flex",gap:8,padding:"1px 0"},children:[e.jsx("span",{style:{fontSize:10,color:n.content.muted,width:92,flexShrink:0},children:t}),e.jsx("span",{style:{...j,color:n.content.primary},children:s})]})}const $=t=>t?"on":"off";function ue(t){if(t.kind==="canvas")return"canvas (default framebuffer)";const s=t.width!==null&&t.height!==null?`${t.width}×${t.height}`:"(size not queryable)";return`${t.label??"framebuffer"} ${s}`}function fe(t){return`blend ${$(t.blend)} · depth test ${$(t.depthTest)} · depth write ${$(t.depthWrite)} · cull ${t.cull} · scissor ${$(t.scissor)}`}function he(t){const s=t.instanceCount!==null?` · ${t.instanceCount} instances`:" · not instanced";return`${t.mode} · ${t.count}${s}`}function xe({draw:t}){return e.jsxs("div",{"data-testid":"frame-draw-detail",style:{padding:8},children:[e.jsx(b,{label:"entry point",value:t.entryPoint}),e.jsx(b,{label:"mode / count",value:he(t)}),e.jsx(b,{label:"program",value:t.programLabel??"none bound"}),e.jsx(b,{label:"target",value:ue(t.target)}),e.jsx(b,{label:"viewport",value:`[${t.viewport.join(", ")}]`}),e.jsx(b,{label:"state",value:fe(t.state)}),t.annotation?e.jsxs(e.Fragment,{children:[e.jsx(b,{label:"object",value:`${t.annotation.object.name||"(unnamed)"} · ${t.annotation.object.type}`}),e.jsx(b,{label:"geometry",value:`${t.annotation.geometry.name||t.annotation.geometry.type}${t.annotation.geometry.indexed?" · indexed":""}`}),e.jsx(b,{label:"attributes",value:t.annotation.geometry.attributes.join(", ")||"—"}),e.jsx(b,{label:"material",value:`${t.annotation.material.name||"(unnamed)"} · ${t.annotation.material.type}`})]}):e.jsx("div",{"data-testid":"frame-draw-unattributed",style:{marginTop:6,fontSize:11,fontStyle:"italic",color:n.content.muted},children:"Not attributable (shadow / post-processing pass — the instrument attributes only main-pass draws through each object's onBeforeRender, and reports the gap honestly rather than guessing)."})]})}function ge({capture:t,drawIndex:s,setDrawIndex:r}){const o=t.drawCalls.length,l=Math.min(s,Math.max(0,o-1)),i=t.drawCalls[l]??null,u=ae(t);return e.jsxs("div",{style:{flex:1,minHeight:0,display:"flex"},children:[e.jsxs("div",{style:{flex:1,minWidth:0,overflow:"auto",borderRight:`1px solid ${n.boundary.default}`},children:[e.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center",padding:4,borderBottom:`1px solid ${n.boundary.default}`},children:[e.jsx(x,{type:"button",size:"compact",variant:"ghost","data-testid":"frame-draw-prev",disabled:l<=0,onClick:()=>r(Math.max(0,l-1)),children:"◀ Prev"}),e.jsx(x,{type:"button",size:"compact",variant:"ghost","data-testid":"frame-draw-next",disabled:l>=o-1,onClick:()=>r(Math.min(o-1,l+1)),children:"Next ▶"}),e.jsxs("span",{style:{fontSize:10,color:n.content.muted},children:[o===0?"0":l+1,"/",o]})]}),u.map(c=>e.jsxs("div",{"data-testid":"frame-target-group","data-target":c.target,children:[e.jsxs("div",{style:{...j,padding:"2px 8px",color:n.content.muted,borderTop:`1px solid ${n.boundary.default}`,borderBottom:`1px solid ${n.boundary.default}`},children:[c.target," · ",c.draws.length," draws"]}),c.draws.map(m=>e.jsx(me,{draw:m,selected:m.index===l,onSelect:()=>r(m.index)},m.index))]},c.target))]}),e.jsxs("div",{style:{flex:1,minWidth:0,overflow:"auto"},children:[i?e.jsx(xe,{draw:i}):e.jsx("div",{style:{padding:12,color:n.content.muted,fontSize:12},children:"This capture recorded no draws."}),t.notes.length>0&&e.jsx("div",{style:{padding:"4px 8px",fontSize:10,color:n.content.dim},"data-testid":"frame-capture-notes",children:t.notes.join(" ")})]})]})}function ye({captures:t,selectedId:s}){return e.jsx("div",{"data-testid":"frame-capture-history",style:{display:"flex",gap:6,flexWrap:"wrap",padding:"4px 8px",borderBottom:`1px solid ${n.boundary.default}`},children:t.map(r=>{const o=se(r);return e.jsxs(x,{type:"button",size:"compact",variant:"ghost","data-testid":"frame-capture-item","data-capture-id":r.id,"data-selected":r.id===s||void 0,onClick:()=>re(r.id),children:["#",r.id," · ",o.drawCalls," draws",o.unattributed>0?` · ${o.unattributed} unattr`:"",o.truncated>0?` · +${o.truncated} capped`:""]},r.id)})})}function be(){h.useSyncExternalStore(X,F,F);const[t,s]=h.useState(0),r=L(()=>M().systems.inspected().renderDebug??null);h.useEffect(()=>{K(r)},[r]);const o=A(r),l=ee(),i=l.selected;if(h.useEffect(()=>{s(0)},[i?.id]),!r||!o)return e.jsxs("div",{"data-testid":"frame-debugger-empty",style:{padding:16,color:n.content.muted,fontSize:12,lineHeight:"18px"},children:[e.jsx("div",{style:{color:n.content.primary,marginBottom:4},children:"No render-debug adapter — no game session is running."}),"Frame capture exists only while a game session runs. Press Play: first-party worlds register a ",e.jsx("code",{style:j,children:"RenderDebugAdapter"})," automatically when they hold a real WebGL2 context; a custom world exposes its own via"," ",e.jsx("code",{style:j,children:"ctx.registerSystemAdapter?.('renderDebug', adapter)"}),". A headless mount registers none — there is nothing to capture."]});const u=te(),c=ne();return e.jsxs("div",{"data-testid":"frame-debugger",className:"vgai-content-frost",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",fontSize:12},children:[e.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:10,alignItems:"center",padding:"4px 8px",borderBottom:`1px solid ${n.boundary.default}`},children:[e.jsx(x,{type:"button",size:"compact","data-testid":"frame-capture-button",disabled:c,onClick:()=>void Q(r),children:c?"Capturing…":"Capture frame"}),e.jsx("span",{style:{fontSize:10,color:n.content.dim},children:"Single-frame draw-call list with per-draw state — not a GPU replayer."}),l.all.length>0&&e.jsx(x,{type:"button",size:"compact",variant:"ghost","data-testid":"frame-capture-clear",onClick:()=>Z(),children:"Clear"})]}),u&&e.jsxs("div",{"data-testid":"frame-capture-error",style:{padding:"4px 8px",fontSize:11,color:n.semantic.danger,borderBottom:`1px solid ${n.boundary.default}`},children:["Capture failed: ",u]}),l.all.length>0&&e.jsx(ye,{captures:l.all,selectedId:i?.id??null}),i?e.jsx(ge,{capture:i,drawIndex:t,setDrawIndex:s},i.id):e.jsxs("div",{"data-testid":"frame-debugger-no-capture",style:{padding:12,color:n.content.muted,fontSize:12},children:["No frame captured yet. Press ",e.jsx("strong",{children:"Capture frame"})," while the game renders."]})]})}function je(t){if(t.length<4)return 0;let s=Number.POSITIVE_INFINITY;for(const o of t)s=Math.min(s,o);let r=0;for(const o of t)r+=Math.max(0,o-s);return r}const k=1200;function ve(){const t=[];let s=null,r=0;const o=()=>{const l=performance.now();t.push({t:l,gapMs:l-r}),t.length>k&&t.splice(0,t.length-k),r=l,s=setTimeout(o,0)};return{start(){s===null&&(t.length=0,r=performance.now(),s=setTimeout(o,0))},stop(){s!==null&&(clearTimeout(s),s=null)},busySince(l){const i=[];for(const u of t)u.t>=l&&i.push(u.gapMs);return{busyMs:je(i),sampleCount:i.length}}}}const D={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:null}},Se=500;function we(t){const s=URL.createObjectURL(new Blob([t.exportJSON()],{type:"application/json"})),r=document.createElement("a");r.href=s,r.download=`vgai-performance-${new Date().toISOString().replaceAll(":","-")}.json`,r.click(),URL.revokeObjectURL(s)}function $e(t,s){const r=pe(t.getSnapshot().frames,{processName:s,threadName:"main"}),o=URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),l=document.createElement("a");l.href=o,l.download=`vgai-trace-${new Date().toISOString().replaceAll(":","-")}.json`,l.click(),URL.revokeObjectURL(o)}const C=720,T=18,E=40,R=[n.accent.default,n.semantic.success,n.semantic.warning,n.content.muted];function Ce({snapshot:t}){const s=t.frames,[r,o]=h.useState(null),l=r!==null&&r<s.length?r:s.length-1,i=s[l],u=le(s,C,E),c=i?de(i,C):[],m=c.reduce((d,g)=>Math.max(d,g.depth),0);return s.length===0?e.jsxs("div",{"data-testid":"flamegraph-empty",style:{padding:a[6],color:n.content.muted},children:["No frames recorded yet. Frames accumulate while the profiler is enabled; use"," ",e.jsx("strong",{children:"Record capture"})," to also collect per-component spans."]}):e.jsxs("div",{"data-testid":"flamegraph-view",style:{padding:a[4]},children:[e.jsxs("div",{style:{marginBottom:a[4],color:n.content.muted},children:["Frame ",e.jsx("span",{style:{color:n.content.primary},children:i?i.id:"—"})," ·"," ",i?`${i.cpuMs.toFixed(2)} ms CPU`:""," · GPU"," ",e.jsx("span",{style:{color:n.content.primary},children:i&&i.render.gpuMs!==null?`${i.render.gpuMs.toFixed(2)} ms`:"n/a"})]}),e.jsx("div",{"data-testid":"flame-frame-strip",style:{position:"relative",width:C,height:E,boxShadow:`inset 0 0 0 1px ${n.boundary.default}`,marginBottom:a[5]},children:u.map(d=>e.jsx("div",{role:"button",tabIndex:0,"data-testid":"flame-frame-bar","data-frame-index":d.index,"data-selected":d.index===l||void 0,title:`frame ${d.frameId} · ${d.cpuMs.toFixed(2)} ms`,onClick:()=>o(d.index),onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&o(d.index)},style:{position:"absolute",left:d.x,bottom:0,width:Math.max(1,d.w-1),height:Math.max(1,d.h),cursor:"pointer",background:d.index===l?n.semantic.warning:n.accent.default}},d.frameId))}),e.jsx("div",{"data-testid":"flamegraph-rows",style:{position:"relative",width:C,height:(m+1)*T},children:c.map((d,g)=>e.jsx("div",{"data-testid":"flame-rect","data-depth":d.depth,"data-name":d.label,title:`${d.label} · ${d.ms.toFixed(3)} ms`,style:{position:"absolute",left:d.x,top:d.depth*T,width:Math.max(1,d.w),height:T-1,overflow:"hidden",whiteSpace:"nowrap",fontSize:p.sm,lineHeight:`${T-1}px`,paddingLeft:3,color:n.content.onAccent,background:R[Math.min(d.depth,R.length-1)],borderRight:`1px solid ${n.surface.inset}`},children:d.label},`${d.depth}-${g}-${d.label}`))}),e.jsxs("div",{style:{marginTop:a[3],fontSize:p.sm,color:n.content.dim},children:["Rows: frame · phase · system",t.recording?" · component (recording)":"",". Only measured CPU spans are drawn — GPU time is a whole-frame aggregate, never a fabricated lane."]})]})}function B({title:t,entries:s,estimated:r,testId:o}){return e.jsxs("div",{"data-testid":o,style:{marginTop:a[5],border:`1px solid ${n.boundary.default}`},children:[e.jsxs("div",{style:{padding:`${a[3]} ${a[5]}`,borderBottom:`1px solid ${n.boundary.default}`,color:n.content.muted},children:[t,r&&e.jsx("span",{style:{marginLeft:a[3],fontSize:p.xs,color:n.content.dim},children:"ESTIMATED"})]}),s.length===0?e.jsx("div",{style:{padding:`${a[2]} ${a[5]}`,color:n.content.dim,fontSize:p.base},children:"none"}):s.map(l=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:a[8],padding:"3px 10px"},children:[e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:l.name}),e.jsx("span",{style:{fontVariantNumeric:"tabular-nums"},children:w(l.bytes)})]},l.name))]})}function Te(){const t=L(()=>M().systems.inspected().renderDebug??null),s=A(t),[r,o]=h.useState(null);h.useEffect(()=>{if(!t?.memorySnapshot){o(null);return}const i=()=>o(t.memorySnapshot?.()??null);i();const u=setInterval(i,1e3);return()=>clearInterval(u)},[t]);const l=Y();return e.jsxs("div",{style:{padding:a[4]},children:[e.jsxs("div",{"data-testid":"memory-heap",style:{border:`1px solid ${n.boundary.default}`,padding:a[5],marginBottom:a[5]},children:[e.jsx("div",{style:{color:n.content.dim,textTransform:"uppercase",fontSize:p.sm},children:"JS heap (performance.memory)"}),q(l)?e.jsxs("div",{style:{fontSize:p.xl,color:n.content.primary,marginTop:3},children:[w(l.usedBytes)," ",e.jsxs("span",{style:{fontSize:p.base,color:n.content.muted},children:["used / ",w(l.totalBytes)," total"]})]}):e.jsx("div",{"data-testid":"memory-heap-unavailable",style:{fontSize:p.base,color:n.content.muted,marginTop:3,fontStyle:"italic"},children:l.unavailable})]}),s?.memory?r===null?e.jsx("div",{style:{padding:a[4],color:n.content.muted,fontSize:p.base},children:"Waiting for the first render-memory sample…"}):e.jsxs("div",{"data-testid":"memory-section",children:[e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, minmax(80px, 1fr))",gap:a[4]},children:[["Geometries",String(r.counts.geometries)],["Textures",String(r.counts.textures)],["Programs",r.counts.programs===null?"n/a until first render":String(r.counts.programs)]].map(([i,u])=>e.jsxs("div",{style:{border:`1px solid ${n.boundary.default}`,padding:a[5]},children:[e.jsx("div",{style:{color:n.content.dim,textTransform:"uppercase",fontSize:p.sm},children:i}),e.jsx("div",{style:{fontSize:p["2xl"],color:n.content.primary,marginTop:3},children:u})]},i))}),e.jsxs("div",{"data-testid":"memory-vram-totals",style:{display:"flex",gap:18,marginTop:a[5],fontSize:p.base,color:n.content.muted},children:[e.jsxs("span",{children:["geometry buffers"," ",e.jsx("span",{style:{color:n.content.primary},children:w(r.estimatedGeometryBytes)})," ",e.jsx("span",{style:{fontSize:p.xs,color:n.content.dim},children:"EXACT"})]}),e.jsxs("span",{children:["texture VRAM"," ",e.jsx("span",{style:{color:n.content.primary},children:w(r.estimatedTextureBytes)})," ",e.jsx("span",{style:{fontSize:p.xs,color:n.content.dim},children:"ESTIMATED"})]})]}),e.jsx(B,{title:"Top geometries",entries:r.topGeometries,estimated:!1,testId:"memory-top-geometries"}),e.jsx(B,{title:"Top textures",entries:r.topTextures,estimated:!0,testId:"memory-top-textures"}),r.unestimated.length>0&&e.jsxs("div",{"data-testid":"memory-unestimated",style:{marginTop:a[5],border:`1px solid ${n.boundary.default}`},children:[e.jsxs("div",{style:{padding:`${a[3]} ${a[5]}`,borderBottom:`1px solid ${n.boundary.default}`,color:n.content.muted},children:["Unmeasured textures (",r.unestimated.length,") — excluded from the total, not zeroed"]}),r.unestimated.map(i=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:a[8],padding:"3px 10px",fontSize:p.base},children:[e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:i.name}),e.jsx("span",{style:{color:n.content.dim},children:i.reason})]},i.name))]})]}):e.jsxs("div",{"data-testid":"memory-absent",style:{padding:a[4],color:n.content.muted,fontSize:p.base,fontStyle:"italic"},children:["Render-memory introspection is not provided by this world's adapter — a headless mount has no ",e.jsx("code",{children:"renderer.info"}),", and a canvas (PixiJS) world's renderer publishes no managed geometry collection to measure at all. Enter Play with a first-party three world to inspect geometry/texture footprints."]})]})}function ze(t){const s=h.useRef([]),r=typeof PerformanceObserver<"u"&&(PerformanceObserver.supportedEntryTypes??[]).includes("long-animation-frame");return h.useEffect(()=>{if(!t||!r)return;s.current=[];const o=new PerformanceObserver(l=>{const i=s.current;for(const u of l.getEntries())i.push(u);i.length>40&&i.splice(0,i.length-40)});return o.observe({type:"long-animation-frame"}),()=>o.disconnect()},[t,r]),{entries:s.current,supported:r}}function Me(t,s,r){const o=h.useRef(null);o.current===null&&(o.current=ve()),h.useEffect(()=>{const i=o.current;if(!(!t||!i))return i.start(),()=>i.stop()},[t]);const l=performance.now()-1e3;return ie(s.frames,l,o.current.busySince(l),r)}function Fe({row:t,rootMs:s}){const r=t.ms!==null&&s>0?Math.min(1,t.ms/s):0,o=t.depth===0;return e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"260px 1fr 70px",gap:a[5],padding:`${a[2]} ${a[5]}`,paddingLeft:10+t.depth*16},children:[e.jsxs("span",{style:{color:o||t.depth===1?n.content.primary:n.content.muted,fontStyle:t.parallel?"italic":void 0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:t.note?`${t.label} — ${t.note}`:t.label,children:[t.label,t.note&&e.jsx("span",{style:{marginLeft:a[3],fontSize:p.sm,color:n.content.dim},children:t.note})]}),e.jsx("div",{style:{background:n.surface.raised,height:6,marginTop:5,opacity:t.parallel?.45:1},children:e.jsx("div",{style:{width:`${r*100}%`,height:"100%",background:!o&&t.ms!==null&&t.ms>8?n.semantic.warning:n.accent.default}})}),e.jsx("span",{style:{textAlign:"right",fontVariantNumeric:"tabular-nums",color:o?n.content.primary:void 0},children:t.ms===null?"—":`${t.ms.toFixed(1)} ms`})]})}function Pe({snapshot:t,timeSpent:s,entries:r,loafSupported:o}){const l=s?.budget??null,i=l?P(l.frameMs,l.loopMs):P(t.p95Ms,t.cpuMs),u=1e4,c=ce(r.filter(m=>(m.startTime??0)>=performance.now()-u));return s===null&&!i.dominated&&c.longFrameCount===0?null:e.jsxs("div",{"data-testid":"time-spent-section",style:{marginTop:a[6],border:`1px solid ${n.boundary.default}`},children:[e.jsx("div",{style:{padding:"7px 10px",borderBottom:`1px solid ${n.boundary.default}`,color:n.content.muted},children:"Where the frame goes"}),s!==null&&e.jsx("div",{"data-testid":"time-spent-tree",style:{paddingBottom:a[1]},children:s.rows.map(m=>e.jsx(Fe,{row:m,rootMs:s.budget.frameMs},`${m.depth}:${m.label}`))}),i.dominated&&e.jsxs("div",{style:{padding:`${a[3]} ${a[5]}`,color:n.content.muted,borderTop:`1px solid ${n.boundary.default}`},children:["The measured loop explains less than half of the frame time — the bottleneck is"," ",c.scripts.length>0?"partly the main-thread work below, and the rest":"not on the main thread: look at the display pipeline"," ","(GPU/compositor: post-effects, glass chrome, pixel ratio) or browser throttling."]}),c.scripts.length>0&&e.jsx("div",{style:{padding:"5px 10px 2px",borderTop:`1px solid ${n.boundary.default}`,fontSize:p.sm,color:n.content.dim},children:"Named main-thread offenders — longer memory than the tree (last 10s of long frames)"}),c.scripts.map(m=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:a[8],padding:`${a[2]} ${a[5]}`},children:[e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:m.key}),e.jsxs("span",{style:{fontVariantNumeric:"tabular-nums"},children:[m.totalMs," ms ×",m.count]})]},m.key)),c.longFrameCount>0&&e.jsxs("div",{style:{padding:`${a[2]} ${a[5]}`,fontSize:p.sm,color:n.content.dim},children:[c.longFrameCount," long main-thread frame",c.longFrameCount===1?"":"s"," (",c.totalLongMs," ms total, ",c.unattributedMs," ms unattributed style/layout/GC) — browser long-animation-frame report, last 10s."]}),!o&&e.jsx("div",{style:{padding:`${a[2]} ${a[5]}`,fontSize:p.sm,color:n.content.dim},children:"Main-thread attribution unavailable — this browser does not support long-animation-frame timing."})]})}function ke(){const t=oe(),s=t?.profiler??null,[r,o]=h.useState(D),[l,i]=h.useState(!1),[u,c]=h.useState(!1),[m,d]=h.useState("overview"),g=h.useRef(!1),z=ze(s),N=Me(s,r,z.entries),H=()=>{const f=!g.current;g.current=f,i(f),!f&&s&&o(s.getSnapshot())},U=()=>{if(!s)return;const f=!s.enabled;f&&c(!1),s.enabled=f,o(s.getSnapshot())};return h.useEffect(()=>{if(!s){o(D);return}g.current=!1,i(!1),c(!1);const f=s.enabled;s.enabled=!0,o(s.getSnapshot());let y=null,v=performance.now();const V=()=>{y=null,!g.current&&(v=performance.now(),o(s.getSnapshot()))},W=s.subscribe(()=>{if(g.current||y!==null)return;const G=Math.max(0,Se-(performance.now()-v));y=setTimeout(V,G)});return()=>{W(),y!==null&&clearTimeout(y),!f&&!s.recording&&(s.enabled=!1)}},[s]),s?e.jsxs("div",{className:"vgai-content-frost",style:{height:"100%",overflow:"auto",padding:a[6],color:n.content.primary,fontSize:p.md},children:[e.jsxs("div",{style:{marginBottom:a[5],color:n.content.muted},children:["Profiling ",e.jsx("span",{style:{color:n.content.primary},children:t?.label}),r.enabled&&u&&e.jsx(_,{style:{marginLeft:a[4]},children:"Profiling active"})]}),r.enabled&&!u&&e.jsxs(J,{tone:"warning",style:{marginBottom:a[5]},actions:e.jsx(x,{size:"compact",variant:"ghost",onClick:()=>c(!0),children:"Dismiss"}),children:["Live profiling is active and adds measurement overhead. Displayed timings include that cost",r.recording?"; capture recording adds detailed timing marks":"","."]}),e.jsxs("div",{style:{display:"flex",gap:a[4],alignItems:"center",marginBottom:a[6]},children:[e.jsx(x,{size:"compact",onClick:H,children:l?"Resume view":"Freeze view"}),e.jsxs(x,{size:"compact",onClick:U,children:[r.enabled?"Disable":"Enable"," profiler"]}),e.jsx(x,{size:"compact",onClick:()=>r.recording?s.stopRecording():s.startRecording(),children:r.recording?"Stop capture":"Record capture"}),e.jsx(x,{size:"compact",onClick:()=>s.clear(),children:"Clear"}),e.jsx(x,{size:"compact",onClick:()=>we(s),children:"Export JSON"}),e.jsx(x,{size:"compact","data-testid":"profiler-export-trace",onClick:()=>$e(s,t?.label??"vgai"),children:"Export Chrome trace"})]}),e.jsx(I,{"aria-label":"Profiler views",style:{marginBottom:a[6]},children:[["overview","Overview"],["flamegraph","Flamegraph"],["memory","Memory"]].map(([f,y])=>e.jsx(O,{selected:m===f,"data-testid":`profiler-view-${f}`,onClick:()=>d(f),children:y},f))}),m==="flamegraph"&&e.jsx(Ce,{snapshot:r}),m==="memory"&&e.jsx(Te,{}),m==="overview"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(80px, 1fr))",gap:a[4]},children:[["FPS",r.fps.toFixed(0)],["CPU",`${r.cpuMs.toFixed(2)} ms`],["p95 frame",`${r.p95Ms.toFixed(2)} ms`],["p99 frame",`${r.p99Ms.toFixed(2)} ms`],["GPU",r.render.gpuMs===null?"n/a":`${r.render.gpuMs.toFixed(2)} ms`],["Draw calls",String(r.render.drawCalls)],["Triangles",r.render.triangles.toLocaleString()]].map(([f,y])=>e.jsxs("div",{style:{border:`1px solid ${n.boundary.default}`,padding:a[5]},children:[e.jsx("div",{style:{color:n.content.dim,textTransform:"uppercase",fontSize:p.sm},children:f}),e.jsx("div",{style:{fontSize:18,color:n.content.primary,marginTop:3},children:y})]},f))}),e.jsx(Pe,{snapshot:r,timeSpent:N,entries:z.entries,loafSupported:z.supported}),[["Components (recording)",r.components]].map(([f,y])=>e.jsxs("div",{style:{marginTop:a[6],border:`1px solid ${n.boundary.default}`},children:[e.jsx("div",{style:{padding:"7px 10px",borderBottom:`1px solid ${n.boundary.default}`,color:n.content.muted},children:f}),y.slice(0,12).map(v=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:a[8],padding:`${a[2]} ${a[5]}`},children:[e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:v.name}),e.jsxs("span",{style:{fontVariantNumeric:"tabular-nums"},children:[v.ms.toFixed(2)," ms"]})]},v.name))]},f))]})]}):e.jsx("div",{style:{padding:a[6],fontSize:p.md,color:n.content.muted,maxWidth:480},children:e.jsx("p",{style:{margin:0},children:M().documents.active()?"The active document has no live render loop to profile.":"Open a rendered document to profile it."})})}const De=[{id:"profiler",label:"Profiler"},{id:"frame",label:"Frame"}];function Ee(){h.useSyncExternalStore(S.subscribe,S.version,S.version);const t=S.active();return e.jsxs("div",{"data-testid":"profiler-panel",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column"},children:[e.jsx(I,{"aria-label":"Profiler views",children:De.map(s=>e.jsx(O,{selected:t===s.id,"data-testid":`profiler-tab-${s.id}`,onClick:()=>S.select(s.id),children:s.label},s.id))}),e.jsxs("div",{role:"tabpanel",style:{flex:1,minHeight:0,display:"flex"},children:[t==="profiler"&&e.jsx(ke,{}),t==="frame"&&e.jsx(be,{})]})]})}const Je="workspace.utility",Ye="Profiler",qe=20;function Xe(){return e.jsx(Ee,{})}export{Xe as default,qe as order,Je as point,Ye as title};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/world-documents-DErHq15h.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-Ckxb31Yz.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/three.module-IFn-4i31.js","assets/index-B4bmKkgY.css","assets/design-time-layers-g9VS6amb.js","assets/edit-mode-authoring-D_BiHCQj.js","assets/design-time-mount-registry-DUpXCg1U.js","assets/react-story-board-CSqHY0Cg.js","assets/CanvasSceneViewport-BlsRTk-X.js","assets/RootSelectionOverlay-BxvsunO4.js","assets/eyedropper-session-bjPXnfeX.js","assets/viewport-pick-context-DkawXbEi.js","assets/inspect-BRgDdtVk.js","assets/inference-diagnostics-YW0yJkKx.js","assets/Toolbar-keHcSvDD.js","assets/transform-mode-request-Cu7ewbtr.js","assets/TransientHint-Dlslh3oX.js","assets/component-board-registry-DrIa2csL.js","assets/surface-state-BAUJu6GY.js","assets/board-guides-C3usUZZk.js"])))=>i.map(i=>d[i]);
2
+ import{aM as u,aN as p,aO as l,_ as m,aP as f,aQ as b}from"./index-Ckxb31Yz.js";import{b as D,e as o,i as v}from"./edit-mode-authoring-D_BiHCQj.js";class P{constructor(s){this.store=s,this.unbind=D(()=>this.rebuild()),this.ready=this.rebuild()}references=0;disposed=!1;composite;disposeDocuments;stages=new Set;tail=Promise.resolve();unbind;ready;retain(){return this.references++,()=>{--this.references>0||(this.disposed=!0,this.unbind(),this.disposeDocuments?.(),o(this.composite),n.delete(this.store))}}attach(s){const r=this.retain();return this.stages.add(s),{ready:this.composite?s(this.composite):this.tail,dispose:()=>{this.stages.delete(s),r()}}}rebuild(){const s=this.tail.then(async()=>{if(this.disposed)return;const r=b(),a=new Set(p().map(t=>t.descriptor.id)),d=this.composite?l().map(t=>t.descriptor.id).filter(t=>a.has(t)):[];this.disposeDocuments?.(),this.disposeDocuments=void 0,o(this.composite),this.composite=void 0;const i=await v(this.store);if(this.disposed){o(i);return}const{installRootDocuments:h}=await m(async()=>{const{installRootDocuments:t}=await import("./world-documents-DErHq15h.js");return{installRootDocuments: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]));if(this.disposed){o(i);return}this.composite=i,this.disposeDocuments=h(this.store,i);for(const t of d)f(t,t===r);await Promise.all([...this.stages].map(t=>t(i)))});return this.tail=s.catch(()=>{}),s}}const n=new Map;function c(e){let s=n.get(e);return s||(s=new P(e),n.set(e,s)),s}function y(e){const s=c(e);return{ready:s.ready.then(()=>u()),dispose:s.retain()}}function _(e,s){return c(e).attach(s)}export{_ as a,y as r};
@@ -1 +1 @@
1
- const y=".vgai/provenance.json";function l(t){const r=t.split(/[?#]/,1)[0].replace(/^\/+/,"");return r.startsWith("public/")?r:`public/${r}`}async function d(){const t=await fetch(`/__editor/vgai-file?${new URLSearchParams({path:y})}`);return t.ok?JSON.parse(await t.text()):null}function c(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function h(t,r){const e=c(t);if(e?.path!==r||typeof e.bytes!="number"||typeof e.sha256!="string")return null;const n=e.mediaType,o=e.role;return{path:r,bytes:e.bytes,sha256:e.sha256,...typeof n=="string"?{mediaType:n}:{},...typeof o=="string"?{role:o}:{}}}function A(t,r,e){const n=c(r),o=c(n?.operation),a=n?.outputs,s=n?.createdAt,i=o?.name;if(!n||!o||typeof s!="string"||typeof i!="string"||!Array.isArray(a))return[];const p=o.source;return a.flatMap(f=>{const u=h(f,e);return u?[{operationId:t,createdAt:s,operationName:i,...typeof p=="string"?{operationSource:p}:{},...n.input!==void 0?{input:n.input}:{},output:u}]:[]})}async function m(t){const r=c(await d()),e=c(r?.operations);if(!e)return null;const n=l(t);return Object.entries(e).flatMap(([a,s])=>A(a,s,n)).sort((a,s)=>s.createdAt.localeCompare(a.createdAt))[0]??null}export{l as a,m as p};
1
+ const y=".vgai/provenance.json";function l(t){const r=t.split(/[?#]/,1)[0].replace(/^\/+/,"");return r.startsWith("public/")?r:`public/${r}`}async function d(){const t=await fetch(`/__editor/vgai-file?${new URLSearchParams({path:y})}`);return t.ok?JSON.parse(await t.text()):null}function c(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function h(t,r){const e=c(t);if(e?.path!==r||typeof e.bytes!="number"||typeof e.sha256!="string")return null;const n=e.mediaType,o=e.role;return{path:r,bytes:e.bytes,sha256:e.sha256,...typeof n=="string"?{mediaType:n}:{},...typeof o=="string"?{role:o}:{}}}function A(t,r,e){const n=c(r),o=c(n?.operation),a=n?.outputs,s=n?.createdAt,i=o?.name;if(!n||!o||typeof s!="string"||typeof i!="string"||!Array.isArray(a))return[];const p=o.source;return a.flatMap(f=>{const u=h(f,e);return u?[{operationId:t,createdAt:s,operationName:i,...typeof p=="string"?{operationSource:p}:{},...n.input!==void 0?{input:n.input}:{},output:u}]:[]})}async function m(t){const r=c(await d()),e=c(r?.operations);if(!e)return null;const n=l(t);return Object.entries(e).flatMap(([a,s])=>A(a,s,n)).sort((a,s)=>s.createdAt.localeCompare(a.createdAt))[0]??null}export{m as a,l as p};
@@ -1 +1 @@
1
- import{b as o,a as r}from"./blender-properties-tab-C5CyPydi.js";import{CONSTRAINT_HEADER as e}from"./properties-constraints.inspector-CESzjuls.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./blender-runtime-host-BpBwGv7r.js";import"./clip-planes-CnAI6DZn.js";const i=[{title:"Bone Constraints",from:"Constraints",collection:!0,properties:e,andDeclared:!0}],t={id:"bone_constraint",curated:i},B="selection.inspector",D="Bone Constraints",E="properties-bone-constraints",R=140,_="object",h=r(t),N=o(t);export{N as default,E as icon,h as match,R as order,B as point,_ as railGroup,D as title};
1
+ import{b as o,a as r}from"./blender-properties-tab-DWSJpkxq.js";import{CONSTRAINT_HEADER as e}from"./properties-constraints.inspector-BaunL5nT.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./blender-runtime-host-OGjPjTrG.js";import"./clip-planes-CnAI6DZn.js";const i=[{title:"Bone Constraints",from:"Constraints",collection:!0,properties:e,andDeclared:!0}],t={id:"bone_constraint",curated:i},B="selection.inspector",D="Bone Constraints",E="properties-bone-constraints",R=140,_="object",h=r(t),N=o(t);export{N as default,E as icon,h as match,R as order,B as point,_ as railGroup,D as title};
@@ -1 +1 @@
1
- import{b as o,a as t}from"./blender-properties-tab-C5CyPydi.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./blender-runtime-host-BpBwGv7r.js";import"./clip-planes-CnAI6DZn.js";const i=[{title:"Transform (Pose)",from:"Pose Bone",properties:["location","lock_location","rotation_quaternion","rotation_axis_angle","rotation_euler","lock_rotation_w","lock_rotation","rotation_mode","scale","lock_scale"]},{title:"Transform",from:"Bone",properties:["head","tail","roll","length","lock"]},{title:"Bendy Bones",closed:!0,from:"Bone",properties:["bbone_segments","bbone_x","bbone_z","bbone_mapping_mode","use_endroll_as_inroll","use_scale_easing","bbone_handle_type_start","bbone_handle_use_scale_start","bbone_handle_use_ease_start","bbone_handle_type_end","bbone_handle_use_scale_end","bbone_handle_use_ease_end"]},{title:"Relations",from:"Bone",properties:["parent","children","use_relative_parent","use_connect","use_local_location","use_inherit_rotation","inherit_scale"]},{title:"Bone Collections",closed:!0,from:"Bone",properties:["collections"]},{title:"Inverse Kinematics",closed:!0,from:"Pose Bone",properties:["ik_stretch","lock_ik_x","lock_ik_y","lock_ik_z","ik_stiffness_x","ik_stiffness_y","ik_stiffness_z","use_ik_limit_x","ik_min_x","ik_max_x","use_ik_limit_y","ik_min_y","ik_max_y","use_ik_limit_z","ik_min_z","ik_max_z","use_ik_rotation_control"]},{title:"Deform",closed:!0,from:"Bone",properties:["use_deform","envelope_distance","envelope_weight","use_envelope_multiply","head_radius","tail_radius"]},{title:"Viewport Display",closed:!0,from:"Bone",properties:["hide","hide_select","display_type","color","show_wire"],sub:[{title:"Custom Shape",closed:!0,from:"Pose Bone",properties:["custom_shape","custom_shape_translation","custom_shape_rotation_euler","custom_shape_scale_xyz","use_custom_shape_bone_size","custom_shape_transform"]}]}],e={id:"bone",curated:i},k="selection.inspector",f="Bone",B="properties-bone",y=130,x="object",z=t(e),g=o(e);export{g as default,B as icon,z as match,y as order,k as point,x as railGroup,f as title};
1
+ import{b as o,a as t}from"./blender-properties-tab-DWSJpkxq.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./blender-runtime-host-OGjPjTrG.js";import"./clip-planes-CnAI6DZn.js";const i=[{title:"Transform (Pose)",from:"Pose Bone",properties:["location","lock_location","rotation_quaternion","rotation_axis_angle","rotation_euler","lock_rotation_w","lock_rotation","rotation_mode","scale","lock_scale"]},{title:"Transform",from:"Bone",properties:["head","tail","roll","length","lock"]},{title:"Bendy Bones",closed:!0,from:"Bone",properties:["bbone_segments","bbone_x","bbone_z","bbone_mapping_mode","use_endroll_as_inroll","use_scale_easing","bbone_handle_type_start","bbone_handle_use_scale_start","bbone_handle_use_ease_start","bbone_handle_type_end","bbone_handle_use_scale_end","bbone_handle_use_ease_end"]},{title:"Relations",from:"Bone",properties:["parent","children","use_relative_parent","use_connect","use_local_location","use_inherit_rotation","inherit_scale"]},{title:"Bone Collections",closed:!0,from:"Bone",properties:["collections"]},{title:"Inverse Kinematics",closed:!0,from:"Pose Bone",properties:["ik_stretch","lock_ik_x","lock_ik_y","lock_ik_z","ik_stiffness_x","ik_stiffness_y","ik_stiffness_z","use_ik_limit_x","ik_min_x","ik_max_x","use_ik_limit_y","ik_min_y","ik_max_y","use_ik_limit_z","ik_min_z","ik_max_z","use_ik_rotation_control"]},{title:"Deform",closed:!0,from:"Bone",properties:["use_deform","envelope_distance","envelope_weight","use_envelope_multiply","head_radius","tail_radius"]},{title:"Viewport Display",closed:!0,from:"Bone",properties:["hide","hide_select","display_type","color","show_wire"],sub:[{title:"Custom Shape",closed:!0,from:"Pose Bone",properties:["custom_shape","custom_shape_translation","custom_shape_rotation_euler","custom_shape_scale_xyz","use_custom_shape_bone_size","custom_shape_transform"]}]}],e={id:"bone",curated:i},k="selection.inspector",f="Bone",B="properties-bone",y=130,x="object",z=t(e),g=o(e);export{g as default,B as icon,z as match,y as order,k as point,x as railGroup,f as title};
@@ -1 +1 @@
1
- import{b as e,a as i}from"./blender-properties-tab-C5CyPydi.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./blender-runtime-host-BpBwGv7r.js";import"./clip-planes-CnAI6DZn.js";const o=[{title:"Visibility",properties:["hide_select","hide_render"],sub:[{title:"View Layer",from:"View Layer Collection",properties:["exclude","holdout","indirect_only"]}]},{title:"Instancing",properties:["instance_offset"]},{title:"Line Art",properties:["lineart_usage","lineart_use_intersection_mask","lineart_intersection_mask","use_lineart_intersection_priority","lineart_intersection_priority"]},{title:"Exporters",properties:["exporters"]}],t={id:"collection",curated:o},f="selection.inspector",h="Collection",x="properties-collection",C=60,T="collection",A=i(t),L=e(t);export{L as default,x as icon,A as match,C as order,f as point,T as railGroup,h as title};
1
+ import{b as e,a as i}from"./blender-properties-tab-DWSJpkxq.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./blender-runtime-host-OGjPjTrG.js";import"./clip-planes-CnAI6DZn.js";const o=[{title:"Visibility",properties:["hide_select","hide_render"],sub:[{title:"View Layer",from:"View Layer Collection",properties:["exclude","holdout","indirect_only"]}]},{title:"Instancing",properties:["instance_offset"]},{title:"Line Art",properties:["lineart_usage","lineart_use_intersection_mask","lineart_intersection_mask","use_lineart_intersection_priority","lineart_intersection_priority"]},{title:"Exporters",properties:["exporters"]}],t={id:"collection",curated:o},f="selection.inspector",h="Collection",x="properties-collection",C=60,T="collection",A=i(t),L=e(t);export{L as default,x as icon,A as match,C as order,f as point,T as railGroup,h as title};
@@ -1 +1 @@
1
- import{b as o,a as r}from"./blender-properties-tab-C5CyPydi.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./blender-runtime-host-BpBwGv7r.js";import"./clip-planes-CnAI6DZn.js";const e=["name","type","enabled","mute","influence","error_location","error_rotation","is_valid","is_override_data"],i=[{title:"Constraints",from:"Constraints",collection:!0,active:"activeConstraint",properties:e,andDeclared:!0}],t={id:"constraint",curated:i},f="selection.inspector",v="Object Constraints",A="properties-constraints",D=110,E="object",R=r(t),h=o(t);export{e as CONSTRAINT_HEADER,h as default,A as icon,R as match,D as order,f as point,E as railGroup,v as title};
1
+ import{b as o,a as r}from"./blender-properties-tab-DWSJpkxq.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./blender-runtime-host-OGjPjTrG.js";import"./clip-planes-CnAI6DZn.js";const e=["name","type","enabled","mute","influence","error_location","error_rotation","is_valid","is_override_data"],i=[{title:"Constraints",from:"Constraints",collection:!0,active:"activeConstraint",properties:e,andDeclared:!0}],t={id:"constraint",curated:i},f="selection.inspector",v="Object Constraints",A="properties-constraints",D=110,E="object",R=r(t),h=o(t);export{e as CONSTRAINT_HEADER,h as default,A as icon,R as match,D as order,f as point,E as railGroup,v as title};
@@ -1 +1 @@
1
- import{b as a,r as p,a as l,c}from"./blender-properties-tab-C5CyPydi.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./blender-runtime-host-BpBwGv7r.js";import"./clip-planes-CnAI6DZn.js";const n=[{title:"Vertex Groups",from:"Vertex Groups",collection:!0,active:"activeVertexGroup",properties:["name","index","lock_weight"]},{title:"Shape Keys",from:"Shape Keys",properties:["key_blocks","use_relative","eval_time","reference_key"]},{title:"UV Maps",properties:["uv_layers"]},{title:"Color Attributes",properties:["color_attributes"]},{title:"Attributes",properties:["attributes"]},{title:"Texture Space",closed:!0,properties:["texture_mesh","use_auto_texspace","texspace_location","texspace_size"]},{title:"Remesh",closed:!0,properties:["remesh_mode","remesh_voxel_size","remesh_voxel_adaptivity","use_remesh_fix_poles","use_remesh_preserve_volume","use_remesh_preserve_attributes"]},{title:"Geometry Data",closed:!0,properties:["has_custom_normals","total_vert_sel","total_edge_sel","total_face_sel"]},{title:"Animation",closed:!0,properties:["animation_data"]},{title:"Pose",properties:["pose_position"]},{title:"Bone Collections",closed:!0,properties:["collections_all","collections"]},{title:"Bones",from:"Bones",collection:!0,active:"activeBone",properties:["name","parent","use_connect","use_deform","head","tail","length"]},{title:"Viewport Display",closed:!0,properties:["display_type","show_names","show_bone_custom_shapes","show_bone_colors","show_axes","axes_position","relation_line_position"]},{title:"Inverse Kinematics",closed:!0,properties:["pose"]}],o={id:"data",curated:n},k="selection.inspector",B="Object Data",u={Mesh:"properties-data-mesh",Armature:"properties-data-armature",Curve:"properties-data-curve",SurfaceCurve:"properties-data-surface",MetaBall:"properties-data-meta",TextCurve:"properties-data-font",Lattice:"properties-data-lattice",Camera:"properties-data-camera",Light:"properties-data-light",Speaker:"properties-data-speaker",PointCloud:"properties-data-pointcloud",Volume:"properties-data-volume"},j=(s,i)=>{const e=p(s,i);if(e===null||e.kind!=="object")return"properties-data";const r=c();if(r.object!==e.name)return"properties-data";const t=r.context?.active?.dataType;return t==null?"properties-data-empty":u[t]??"properties-data"},w=120,D="object",G=l(o),P=a(o);export{P as default,j as icon,G as match,w as order,k as point,D as railGroup,B as title};
1
+ import{b as a,r as p,a as l,c}from"./blender-properties-tab-DWSJpkxq.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./blender-runtime-host-OGjPjTrG.js";import"./clip-planes-CnAI6DZn.js";const n=[{title:"Vertex Groups",from:"Vertex Groups",collection:!0,active:"activeVertexGroup",properties:["name","index","lock_weight"]},{title:"Shape Keys",from:"Shape Keys",properties:["key_blocks","use_relative","eval_time","reference_key"]},{title:"UV Maps",properties:["uv_layers"]},{title:"Color Attributes",properties:["color_attributes"]},{title:"Attributes",properties:["attributes"]},{title:"Texture Space",closed:!0,properties:["texture_mesh","use_auto_texspace","texspace_location","texspace_size"]},{title:"Remesh",closed:!0,properties:["remesh_mode","remesh_voxel_size","remesh_voxel_adaptivity","use_remesh_fix_poles","use_remesh_preserve_volume","use_remesh_preserve_attributes"]},{title:"Geometry Data",closed:!0,properties:["has_custom_normals","total_vert_sel","total_edge_sel","total_face_sel"]},{title:"Animation",closed:!0,properties:["animation_data"]},{title:"Pose",properties:["pose_position"]},{title:"Bone Collections",closed:!0,properties:["collections_all","collections"]},{title:"Bones",from:"Bones",collection:!0,active:"activeBone",properties:["name","parent","use_connect","use_deform","head","tail","length"]},{title:"Viewport Display",closed:!0,properties:["display_type","show_names","show_bone_custom_shapes","show_bone_colors","show_axes","axes_position","relation_line_position"]},{title:"Inverse Kinematics",closed:!0,properties:["pose"]}],o={id:"data",curated:n},k="selection.inspector",B="Object Data",u={Mesh:"properties-data-mesh",Armature:"properties-data-armature",Curve:"properties-data-curve",SurfaceCurve:"properties-data-surface",MetaBall:"properties-data-meta",TextCurve:"properties-data-font",Lattice:"properties-data-lattice",Camera:"properties-data-camera",Light:"properties-data-light",Speaker:"properties-data-speaker",PointCloud:"properties-data-pointcloud",Volume:"properties-data-volume"},j=(s,i)=>{const e=p(s,i);if(e===null||e.kind!=="object")return"properties-data";const r=c();if(r.object!==e.name)return"properties-data";const t=r.context?.active?.dataType;return t==null?"properties-data-empty":u[t]??"properties-data"},w=120,D="object",G=l(o),P=a(o);export{P as default,j as icon,G as match,w as order,k as point,D as railGroup,B as title};
@@ -1 +1 @@
1
- import{b as t,a as r}from"./blender-properties-tab-C5CyPydi.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./blender-runtime-host-BpBwGv7r.js";import"./clip-planes-CnAI6DZn.js";const o=[{title:"Material Slots",from:"Material Slots",collection:!0,active:"activeMaterial",properties:["name","material","link","slot_index"]},{title:"Surface",from:"Material",properties:["use_nodes","node_tree","surface_render_method","use_backface_culling"]},{title:"Volume",closed:!0,from:"Material",properties:["volume_intersection_method","displacement_method","max_vertex_displacement"]},{title:"Settings",closed:!0,from:"Material",properties:["pass_index","use_backface_culling_shadow","use_backface_culling_lightprobe_volume","use_transparent_shadow","use_transparency_overlap","use_raytrace_refraction","thickness_mode","use_thickness_from_shadow"]},{title:"Line Art",closed:!0,from:"Material",properties:["lineart"]},{title:"Viewport Display",from:"Material",properties:["diffuse_color","metallic","roughness"]},{title:"Animation",closed:!0,from:"Material",properties:["animation_data"]}],e={id:"material",curated:o},M="selection.inspector",b="Material",g="properties-material",k=160,v="object",x=r(e),S=t(e);export{S as default,g as icon,x as match,k as order,M as point,v as railGroup,b as title};
1
+ import{b as t,a as r}from"./blender-properties-tab-DWSJpkxq.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./blender-runtime-host-OGjPjTrG.js";import"./clip-planes-CnAI6DZn.js";const o=[{title:"Material Slots",from:"Material Slots",collection:!0,active:"activeMaterial",properties:["name","material","link","slot_index"]},{title:"Surface",from:"Material",properties:["use_nodes","node_tree","surface_render_method","use_backface_culling"]},{title:"Volume",closed:!0,from:"Material",properties:["volume_intersection_method","displacement_method","max_vertex_displacement"]},{title:"Settings",closed:!0,from:"Material",properties:["pass_index","use_backface_culling_shadow","use_backface_culling_lightprobe_volume","use_transparent_shadow","use_transparency_overlap","use_raytrace_refraction","thickness_mode","use_thickness_from_shadow"]},{title:"Line Art",closed:!0,from:"Material",properties:["lineart"]},{title:"Viewport Display",from:"Material",properties:["diffuse_color","metallic","roughness"]},{title:"Animation",closed:!0,from:"Material",properties:["animation_data"]}],e={id:"material",curated:o},M="selection.inspector",b="Material",g="properties-material",k=160,v="object",x=r(e),S=t(e);export{S as default,g as icon,x as match,k as order,M as point,v as railGroup,b as title};
@@ -1 +1 @@
1
- import{b as t,a as i}from"./blender-properties-tab-C5CyPydi.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./blender-runtime-host-BpBwGv7r.js";import"./clip-planes-CnAI6DZn.js";const e=[{title:"Modifiers",from:"Modifiers",collection:!0,active:"activeModifier",properties:["name","type","show_viewport","show_render","show_in_editmode","show_on_cage","use_pin_to_last","is_active"],andDeclared:!0}],o={id:"modifier",curated:e},u="selection.inspector",M="Modifiers",w="properties-modifiers",v=80,T="object",A=i(o),D=t(o);export{D as default,w as icon,A as match,v as order,u as point,T as railGroup,M as title};
1
+ import{b as t,a as i}from"./blender-properties-tab-DWSJpkxq.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./blender-runtime-host-OGjPjTrG.js";import"./clip-planes-CnAI6DZn.js";const e=[{title:"Modifiers",from:"Modifiers",collection:!0,active:"activeModifier",properties:["name","type","show_viewport","show_render","show_in_editmode","show_on_cage","use_pin_to_last","is_active"],andDeclared:!0}],o={id:"modifier",curated:e},u="selection.inspector",M="Modifiers",w="properties-modifiers",v=80,T="object",A=i(o),D=t(o);export{D as default,w as icon,A as match,v as order,u as point,T as railGroup,M as title};