@volter/game-editor 0.5.154 → 0.5.155

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 (294) hide show
  1. package/BUNDLED_NOTICES +22 -22
  2. package/catalog/entries/blender.json +2 -2
  3. package/catalog/entries/music.json +2 -2
  4. package/dist/.vite/manifest.json +2129 -2129
  5. package/dist/assets/{AssetBudgetPanel-VWgpnuIc.js → AssetBudgetPanel-B2Wb7-b1.js} +3 -3
  6. package/dist/assets/{AudioViewer-DfHCf1lW.js → AudioViewer-gge--M-h.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-CX4PNJyw.js → CanvasBoardDocument-CyGiXrEJ.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-CQfbmxpt.js → CanvasSceneViewport-ChG9oRS8.js} +1 -1
  9. package/dist/assets/{ColorInput-BlrT435I.js → ColorInput-Dzpqy-J3.js} +1 -1
  10. package/dist/assets/{ColorPicker-Cd-YIyWU.js → ColorPicker-CqJPBHlh.js} +1 -1
  11. package/dist/assets/{EntityModelDocument-BmKOcswo.js → EntityModelDocument-D7XDf6uB.js} +1 -1
  12. package/dist/assets/{EnvironmentAssetDocument-BEuthcGj.js → EnvironmentAssetDocument-BgO7Hl3g.js} +1 -1
  13. package/dist/assets/{GameplaySessionTimeline-BN2umpRb.js → GameplaySessionTimeline-BBmwHCKA.js} +1 -1
  14. package/dist/assets/{ImageViewer-D9hKvFKP.js → ImageViewer-BjxoscVa.js} +1 -1
  15. package/dist/assets/InspectorObjectPreview-C87CasN_.js +1 -0
  16. package/dist/assets/{JsonAssetDocument-DMhiFUNl.js → JsonAssetDocument-D81JuRAm.js} +1 -1
  17. package/dist/assets/{LiveModuleDocument-ChrbfWzt.js → LiveModuleDocument-bgStMiU1.js} +1 -1
  18. package/dist/assets/{LutAssetDocument-D5cdrT07.js → LutAssetDocument-cl9Jq0Zw.js} +1 -1
  19. package/dist/assets/{ModelAssetDocument-Dh2Yp-5_.js → ModelAssetDocument-CYCLKpxJ.js} +1 -1
  20. package/dist/assets/{NonThreeAuthoringBootstrap-5lJjd2ul.js → NonThreeAuthoringBootstrap-DhHjvD5d.js} +1 -1
  21. package/dist/assets/{Object3DDocumentToolbar-DVNZXciL.js → Object3DDocumentToolbar-CQbARBIW.js} +1 -1
  22. package/dist/assets/Object3DDocumentViewport-BpiyRQ5p.js +2 -0
  23. package/dist/assets/{Object3DPreview-hnWxlKV2.js → Object3DPreview-BOZYzjz_.js} +1 -1
  24. package/dist/assets/{OnlineAssetDetail-TlMhKqz-.js → OnlineAssetDetail-DdKHHjxg.js} +1 -1
  25. package/dist/assets/{PlayBar-YdSOe6Mn.js → PlayBar-CAarfEOh.js} +1 -1
  26. package/dist/assets/{QuarksAssetDocument-CmVrkxb8.js → QuarksAssetDocument-GTbawoy7.js} +1 -1
  27. package/dist/assets/{ReactCanvasControls-Co3jjBJY.js → ReactCanvasControls-DIFkxeKv.js} +1 -1
  28. package/dist/assets/{RootSelectionOverlay-DRjJypx0.js → RootSelectionOverlay-Dv_w1D9s.js} +1 -1
  29. package/dist/assets/{ShaderAssetDocument-Bm1FTj5L.js → ShaderAssetDocument-OA-nshNN.js} +1 -1
  30. package/dist/assets/{ShadowEditor-Ah6UaoTL.js → ShadowEditor-Cp1QVCo9.js} +1 -1
  31. package/dist/assets/{SourceAssetViewer-CRp-jbVU.js → SourceAssetViewer-CGGHBzgL.js} +1 -1
  32. package/dist/assets/{StageHost-j9meef5x.js → StageHost-BMgCrIPG.js} +2 -2
  33. package/dist/assets/{StoryPreviewMount-ChfzCbJ3.js → StoryPreviewMount-CyF7FwI7.js} +1 -1
  34. package/dist/assets/{ThreeBoardDocument-DAGUbLlA.js → ThreeBoardDocument-DCJkLWU8.js} +2 -2
  35. package/dist/assets/{ThreeIsolationSceneContent-D48zPEk7.js → ThreeIsolationSceneContent-CxsM-QHW.js} +1 -1
  36. package/dist/assets/{ToolObject3DPreview-DgLF_qu6.js → ToolObject3DPreview-lsAoRxtr.js} +1 -1
  37. package/dist/assets/{Toolbar-B9tUYMZc.js → Toolbar-yvFlRv8R.js} +1 -1
  38. package/dist/assets/{TransientHint-DXKNt-QA.js → TransientHint-Bslncm_l.js} +1 -1
  39. package/dist/assets/{VideoViewer-Bi0Wh21M.js → VideoViewer-Ba-e91kP.js} +1 -1
  40. package/dist/assets/{ViewportShadingMenu-Csmdi4hc.js → ViewportShadingMenu-CgbuQ0e-.js} +1 -1
  41. package/dist/assets/{active-ingest-CmyN258P.js → active-ingest-CJ2U5L1O.js} +2 -2
  42. package/dist/assets/{animation-clock-BC2sWdly.js → animation-clock-CVpGQSVj.js} +1 -1
  43. package/dist/assets/{animation-mixers.service-DQX6SNau.js → animation-mixers.service-CI0K1tfi.js} +1 -1
  44. package/dist/assets/{animation-timeline.utility-CKWv5WpM.js → animation-timeline.utility-Wg6WxkxK.js} +1 -1
  45. package/dist/assets/{asset-budget-asset.menu-Cb9YAl0T.js → asset-budget-asset.menu-BbCBxjLY.js} +1 -1
  46. package/dist/assets/{asset-budget.action-Cgtt8vU9.js → asset-budget.action-CK8h0v1A.js} +1 -1
  47. package/dist/assets/{asset-budget.document-BVkKAZy5.js → asset-budget.document-CYVcDLvH.js} +1 -1
  48. package/dist/assets/{asset-budget.menu-DNkA4on_.js → asset-budget.menu-BcTijQ2R.js} +1 -1
  49. package/dist/assets/{asset-editor-persistence-BBd80LM5.js → asset-editor-persistence-DWp0E8cc.js} +1 -1
  50. package/dist/assets/{asset-loaders-BcvaZp8m.js → asset-loaders-Bo91oPiL.js} +1 -1
  51. package/dist/assets/{asset-preview-DmWBo3u0.js → asset-preview-BUpxsHNd.js} +1 -1
  52. package/dist/assets/{audio-unlock.service-DdLpyfa_.js → audio-unlock.service-CyiXe5qk.js} +1 -1
  53. package/dist/assets/{audio.utility-Py14n_vZ.js → audio.utility-BN4mANCx.js} +1 -1
  54. package/dist/assets/autoplay.service-CKBqjozr.js +1 -0
  55. package/dist/assets/{babylon-authoring-adapter-rHojeSh-.js → babylon-authoring-adapter-C-EAsfMr.js} +1 -1
  56. package/dist/assets/{binding-resolver-4nTdtOpk.js → binding-resolver-DoOAFM2m.js} +2 -2
  57. package/dist/assets/{blender-node-editor.document-GUoOIqO0.js → blender-node-editor.document-BzkGPs0i.js} +1 -1
  58. package/dist/assets/{blender-properties-tab-DFdr0HH9.js → blender-properties-tab-B1ggqOYB.js} +1 -1
  59. package/dist/assets/{blender-runtime-host-B63tuG7j.js → blender-runtime-host-MJZEPwHA.js} +1 -1
  60. package/dist/assets/{blender-runtime-skin-CPgzavkZ.js → blender-runtime-skin-hw-op7Nt.js} +34 -34
  61. package/dist/assets/{blender-runtime.document-BXMq3aHl.js → blender-runtime.document-CvTyAou8.js} +1 -1
  62. package/dist/assets/{blender-screenshot.menu-eE85nOyL.js → blender-screenshot.menu-C4VXpXVa.js} +1 -1
  63. package/dist/assets/{blender-timeline.document-pcpWfAfg.js → blender-timeline.document-BRFDd7JZ.js} +1 -1
  64. package/dist/assets/{blender-uv-editor.document-BALjSW5I.js → blender-uv-editor.document-CM09ITWu.js} +1 -1
  65. package/dist/assets/{blender-version.status-Iy8VtIIH.js → blender-version.status-CPyc_-kA.js} +1 -1
  66. package/dist/assets/{blender.command-B7a7jadi.js → blender.command-ktKz-2Zi.js} +1 -1
  67. package/dist/assets/{board-guides-Cnfvv0uu.js → board-guides-CCiyx8cT.js} +1 -1
  68. package/dist/assets/{bridge.command-BgMolZm1.js → bridge.command-tP5j6w72.js} +3 -3
  69. package/dist/assets/{browserAll-DNmYiuy_.js → browserAll-BSQVVrNG.js} +1 -1
  70. package/dist/assets/{build-player.document-C0_bEcCK.js → build-player.document-BwbBXtF5.js} +1 -1
  71. package/dist/assets/{build-profiles.document-DT2a6gH1.js → build-profiles.document-UiF_BsjE.js} +1 -1
  72. package/dist/assets/{build-progress.status-ycndNYab.js → build-progress.status-Bf5KpnxC.js} +1 -1
  73. package/dist/assets/{build-session-Bhmr1BX8.js → build-session-C4jVDt-u.js} +1 -1
  74. package/dist/assets/{build.action-DxTFOUGG.js → build.action-DP2d1Uhj.js} +1 -1
  75. package/dist/assets/{build.command-DpKOQydG.js → build.command-D5pyNcoj.js} +1 -1
  76. package/dist/assets/{build.header-zCX7El5x.js → build.header-DupBIAOw.js} +1 -1
  77. package/dist/assets/{build.menu-Y4MQiX4G.js → build.menu-DWrKtdoV.js} +1 -1
  78. package/dist/assets/{build.service-DHiSV5PL.js → build.service-qnz73gSX.js} +1 -1
  79. package/dist/assets/{camera-DI8pqzQ3.js → camera-C74U5X7o.js} +1 -1
  80. package/dist/assets/{camera-runtime.inspector-eJ8cyMzk.js → camera-runtime.inspector-B2l34Xhl.js} +1 -1
  81. package/dist/assets/{canvas-design-mount-CAFDbAPl.js → canvas-design-mount-D4M3E1AX.js} +3 -3
  82. package/dist/assets/{canvas-entry-runtime-CgJkCzp_.js → canvas-entry-runtime-CLOuJcgT.js} +2 -2
  83. package/dist/assets/{canvas-preview-frames-DMZo3rqI.js → canvas-preview-frames-CSCcu2sG.js} +1 -1
  84. package/dist/assets/{canvas-story-capture.service-CHnbQ9OT.js → canvas-story-capture.service-onD_xSpQ.js} +2 -2
  85. package/dist/assets/{capability-coverage-BMuTFU_9.js → capability-coverage-EnZ99FoT.js} +1 -1
  86. package/dist/assets/{collaboration-presence-Dqfb6e2Y.js → collaboration-presence-1_UMOAkw.js} +1 -1
  87. package/dist/assets/{collider-WqTqi5FX.js → collider-C6R1tHfa.js} +1 -1
  88. package/dist/assets/{component-board.service-DJYpMxt6.js → component-board.service-BX_2bwX3.js} +2 -2
  89. package/dist/assets/{component-board.service-RgOavG9Y.js → component-board.service-Ckl-5tA4.js} +2 -2
  90. package/dist/assets/{component-board.service-C-ukHwAR.js → component-board.service-Cuf_SXeA.js} +2 -2
  91. package/dist/assets/{component-contracts.service-B-uhvD4S.js → component-contracts.service-rI-rbvDG.js} +1 -1
  92. package/dist/assets/{component-instance-root-Ctbx3vOO.js → component-instance-root-wO1p-rLr.js} +1 -1
  93. package/dist/assets/{component-verbs.command-C07COqiF.js → component-verbs.command-O2bwqmK3.js} +1 -1
  94. package/dist/assets/{component-verbs.service-EKWGRKJg.js → component-verbs.service-BiiQMtJt.js} +1 -1
  95. package/dist/assets/{config-Bzq-GFuV.js → config-dVnV1cxW.js} +2 -2
  96. package/dist/assets/{configurations-BICGR-Zc.js → configurations-8qaUqMH7.js} +1 -1
  97. package/dist/assets/{connection.status-BMAWlexm.js → connection.status-vH9WCDDg.js} +1 -1
  98. package/dist/assets/{constraints.inspector-DQdAuWx-.js → constraints.inspector-C7UjUxPR.js} +1 -1
  99. package/dist/assets/{content-bounds-D_jbMNmm.js → content-bounds-Dl5Y3LLv.js} +1 -1
  100. package/dist/assets/{contract-system-adapters-D8SzcuZo.js → contract-system-adapters-BDUpDoKd.js} +1 -1
  101. package/dist/assets/{coverage.service-DZ4GmnS6.js → coverage.service-IS7Oklo8.js} +1 -1
  102. package/dist/assets/{create-runtime-BKAyWS74.js → create-runtime-Bucz0XVU.js} +1 -1
  103. package/dist/assets/{curve-DNYPUZIO.js → curve-D0Q6TczG.js} +1 -1
  104. package/dist/assets/{data-asset-LAsOyoML.js → data-asset-B0a1y8M-.js} +1 -1
  105. package/dist/assets/{data-ref-CbopN4AX.js → data-ref-dRt2Wi5L.js} +1 -1
  106. package/dist/assets/{debug-bridge-Cx3PFUcu.js → debug-bridge-EhDkhrLX.js} +1 -1
  107. package/dist/assets/{debug-registry-CcTdmLf3.js → debug-registry-B2THKz1v.js} +1 -1
  108. package/dist/assets/{deferred-ingest-play-DsV_qXEP.js → deferred-ingest-play-To3ZratW.js} +2 -2
  109. package/dist/assets/{design-time-canvas-mount-BGmhI2sv.js → design-time-canvas-mount-BnSaRAbS.js} +2 -2
  110. package/dist/assets/{design-time-layers-CyFYxvKE.js → design-time-layers-OMAIxOrv.js} +1 -1
  111. package/dist/assets/{design-time-mount.service-CeT_SfZi.js → design-time-mount.service-Bgr_nCDs.js} +2 -2
  112. package/dist/assets/{design-time-mount.service-Dui8o0rU.js → design-time-mount.service-RFkiqPIn.js} +2 -2
  113. package/dist/assets/{design-time-react-mount-3LQxFo0f.js → design-time-react-mount-BsSBoX7J.js} +1 -1
  114. package/dist/assets/{document-preview-three-BiKoHIJ7.js → document-preview-three-Qni0oVBw.js} +1 -1
  115. package/dist/assets/{dom-authoring-adapter-DBtypFqH.js → dom-authoring-adapter-DsUgOtQy.js} +1 -1
  116. package/dist/assets/{draco3d-CTue-r-D.js → draco3d-DyZllcka.js} +1 -1
  117. package/dist/assets/{edit-mode-audio.service-4vq1g0yL.js → edit-mode-audio.service-CjXNAZEs.js} +1 -1
  118. package/dist/assets/{edit-mode-authoring-CIXoejcH.js → edit-mode-authoring-BDgZD47j.js} +1 -1
  119. package/dist/assets/{edit-mode-networking.service-vseafVn2.js → edit-mode-networking.service-3dUr2g_0.js} +1 -1
  120. package/dist/assets/{editor-api-BboLGD_u.js → editor-api-DTrNJMXL.js} +1 -1
  121. package/dist/assets/{editor-layers-CYVQVJ5O.js → editor-layers-DwaX5UFy.js} +1 -1
  122. package/dist/assets/{editor-shell-store-B76wIXvV.js → editor-shell-store-aKHbAoCV.js} +1 -1
  123. package/dist/assets/{entity-object-C6hm5vYx.js → entity-object-BLJ-I8XT.js} +1 -1
  124. package/dist/assets/{extend-BUAnZzoH.js → extend-6LrR7eSL.js} +1 -1
  125. package/dist/assets/{fork-menu-D9wqdfzJ.js → fork-menu-V-FM6YuY.js} +1 -1
  126. package/dist/assets/{frame-debugger-store-BnZFxjhV.js → frame-debugger-store-DwDC0wAm.js} +1 -1
  127. package/dist/assets/{game-contract-seams-CzlxJGC2.js → game-contract-seams-C22a4B79.js} +1 -1
  128. package/dist/assets/{game-css-scope-transform-DhimYh-2.js → game-css-scope-transform-Wv0ZdTsR.js} +1 -1
  129. package/dist/assets/{game-document.service-CPeo8J5j.js → game-document.service-BzvFIWCc.js} +1 -1
  130. package/dist/assets/{game-eval.command-Zj-0kehE.js → game-eval.command-DpQn_nY8.js} +1 -1
  131. package/dist/assets/{game-module-access-B2UMV47n.js → game-module-access-BI6oBa8Y.js} +1 -1
  132. package/dist/assets/{game-network-Bof-cN2R.js → game-network-Deo8lcPw.js} +3 -3
  133. package/dist/assets/{gameplay-export-Bq4t4aCy.js → gameplay-export-BOLhxmII.js} +1 -1
  134. package/dist/assets/{gameplay-replay-DP08m8Vv.js → gameplay-replay-Dkvmv6hf.js} +1 -1
  135. package/dist/assets/{gameplay.command-Del3_mAr.js → gameplay.command-DCKqLv7C.js} +1 -1
  136. package/dist/assets/{generation-jobs-Mfqth2Xe.js → generation-jobs-6D562vMB.js} +1 -1
  137. package/dist/assets/{generation.service-CUJTwwYl.js → generation.service-BFRoLb7y.js} +1 -1
  138. package/dist/assets/{generations-CJUKodbu.js → generations-HwV1btKK.js} +1 -1
  139. package/dist/assets/{generations.status-mer9NXCK.js → generations.status-BLiDcKsg.js} +1 -1
  140. package/dist/assets/{hierarchy-marks-sMK9R4NU.js → hierarchy-marks-DeG4E4Ke.js} +1 -1
  141. package/dist/assets/{hosted-asset-materialization-BSvRWupx.js → hosted-asset-materialization-Bod7CEMF.js} +1 -1
  142. package/dist/assets/{index-Com2cl89.js → index-4hL3-0yz.js} +1 -1
  143. package/dist/assets/{index-DUA0RF9E.js → index-CHOT9sYh.js} +2 -2
  144. package/dist/assets/{index-DHFPVxsm.js → index-CLUA6PYq.js} +1 -1
  145. package/dist/assets/{index---JtxLq2.js → index-CdLhNxor.js} +1 -1
  146. package/dist/assets/{index-Cjv2Ynte.js → index-ClgrFOcX.js} +7 -7
  147. package/dist/assets/{index-ICvy7jWw.js → index-CyLPQ8pY.js} +1 -1
  148. package/dist/assets/{index-uTZA4wRW.js → index-DkYeh000.js} +1 -1
  149. package/dist/assets/{index-BpfZiKqX.js → index-KIR4Has5.js} +1 -1
  150. package/dist/assets/{index-CCOqpqGv.js → index-jS3rfNkZ.js} +1 -1
  151. package/dist/assets/{inference-diagnostics-DE1P5w14.js → inference-diagnostics-BmZ5ggEK.js} +1 -1
  152. package/dist/assets/{ingest-boot-viewport-Dynh3g5V.js → ingest-boot-viewport-CipkFljr.js} +1 -1
  153. package/dist/assets/{ingest-siblings-BsIV1T53.js → ingest-siblings-CEwYp-xg.js} +1 -1
  154. package/dist/assets/{ingest-source-persistence-BNek6mSi.js → ingest-source-persistence-CVU1rTj0.js} +1 -1
  155. package/dist/assets/{ingest.service-C0M-0EwA.js → ingest.service-bNqvcqoK.js} +1 -1
  156. package/dist/assets/{inspect-xUKvX80V.js → inspect-BunjdqX7.js} +1 -1
  157. package/dist/assets/instances.command-DzcXdKuG.js +1 -0
  158. package/dist/assets/{json-history-resource-C1pGwXuI.js → json-history-resource-CDEoQe1R.js} +1 -1
  159. package/dist/assets/{layered-pick-ASc-_oGG.js → layered-pick-guh6WlA7.js} +1 -1
  160. package/dist/assets/{light-CHiYAJQ0.js → light-BPZivpCK.js} +1 -1
  161. package/dist/assets/{live-project-verbs-D_8wWaCB.js → live-project-verbs-Bqmxbr2o.js} +1 -1
  162. package/dist/assets/{machine.document-CnvC2j0i.js → machine.document-CAFPFq5K.js} +1 -1
  163. package/dist/assets/{machines.finder-x38pLZFO.js → machines.finder-CbUWReMp.js} +1 -1
  164. package/dist/assets/{material-factory-wvMjnOTo.js → material-factory-BkyOzJ7B.js} +1 -1
  165. package/dist/assets/{material-B9iSj5st.js → material-huG6lNEK.js} +1 -1
  166. package/dist/assets/{mesh-C64nd8qK.js → mesh-CjCfRcFK.js} +1 -1
  167. package/dist/assets/{model-asset-sections.service-UsTToAYb.js → model-asset-sections.service-Dt4V2K2v.js} +1 -1
  168. package/dist/assets/{model-inspection-ae_w8T6s.js → model-inspection-BDA5jikL.js} +1 -1
  169. package/dist/assets/{model-thumbnail-ClOTX_JF.js → model-thumbnail-CF3qGQWb.js} +1 -1
  170. package/dist/assets/{models.finder-Bl6i3QOW.js → models.finder-yh4YeGrA.js} +1 -1
  171. package/dist/assets/{module-mode-CRBEidVP.js → module-mode-D8en13PD.js} +2 -2
  172. package/dist/assets/{mount-canvas-ingest-root-BFKVZ_nn.js → mount-canvas-ingest-root-JOkm2Ypj.js} +2 -2
  173. package/dist/assets/{mount-dom-ingest-root-CUBVJcU_.js → mount-dom-ingest-root-CVXFnJZb.js} +2 -2
  174. package/dist/assets/{mount-ingest-root-CyZae-B7.js → mount-ingest-root-C3o0o28C.js} +2 -2
  175. package/dist/assets/{mount-manifest-BMD5D62M.js → mount-manifest-d7WQ9MYp.js} +1 -1
  176. package/dist/assets/{mount-three-ingest-root-BgBc58nU.js → mount-three-ingest-root-Dqd4XWP1.js} +1 -1
  177. package/dist/assets/{mounted-authoring-DQ0-LgR6.js → mounted-authoring-B697dYuN.js} +1 -1
  178. package/dist/assets/{mounted-story-viewport-source-BsbduGue.js → mounted-story-viewport-source-BvNZ3QQn.js} +1 -1
  179. package/dist/assets/{native-debug-module-BUPFKtBc.js → native-debug-module-iX2-V5kg.js} +1 -1
  180. package/dist/assets/{navigation-DN3By10F.js → navigation-CIl9OY1F.js} +1 -1
  181. package/dist/assets/{navmesh.menu-BkB8EXHu.js → navmesh.menu-DrMoj7Ag.js} +1 -1
  182. package/dist/assets/{navmesh.service-C75Hdd7h.js → navmesh.service-CTr1NVfz.js} +1 -1
  183. package/dist/assets/network-observer.service-DyzpGKA7.js +1 -0
  184. package/dist/assets/{network.utility-C_lQVcOt.js → network.utility-Btexm5ao.js} +1 -1
  185. package/dist/assets/{object3d-document-session-registry-D8XSoEpf.js → object3d-document-session-registry-CADiW-LP.js} +2 -2
  186. package/dist/assets/{oid-transform-CvzWDfCe.js → oid-transform-Ca1oU_Ei.js} +1 -1
  187. package/dist/assets/{particles-JKSmSdCW.js → particles-D1oPwNJh.js} +1 -1
  188. package/dist/assets/{pixi-authoring-adapter-CAS5Elnh.js → pixi-authoring-adapter-B1BBfTju.js} +1 -1
  189. package/dist/assets/{pixi-live-write-target-BO-cO1Gl.js → pixi-live-write-target-BcUhtqmJ.js} +1 -1
  190. package/dist/assets/{play.command-Czxm8cvG.js → play.command-ScnwcvJr.js} +2 -2
  191. package/dist/assets/{presentation-xDN53iEZ.js → presentation-DPfnCjNA.js} +1 -1
  192. package/dist/assets/{product-mtU_pRkY.js → product-D_9saRiZ.js} +1 -1
  193. package/dist/assets/{profiler.action-Beoiw4ON.js → profiler.action-PXTw93E5.js} +1 -1
  194. package/dist/assets/{profiler.menu-BvuSldBS.js → profiler.menu-DPFV6QQD.js} +1 -1
  195. package/dist/assets/{profiler.utility-3qST7Ixj.js → profiler.utility-eDooJGnI.js} +1 -1
  196. package/dist/assets/{project-authoring-session-DAcbPWsU.js → project-authoring-session-BmeutotA.js} +2 -2
  197. package/dist/assets/{properties-bone-constraints.inspector-8yqXfdtn.js → properties-bone-constraints.inspector-BW0V1WXQ.js} +1 -1
  198. package/dist/assets/{properties-bone.inspector-CQ41MY4S.js → properties-bone.inspector-DIvTZhY8.js} +1 -1
  199. package/dist/assets/{properties-collection.inspector-Bdk09XCE.js → properties-collection.inspector-Dbt5XMhs.js} +1 -1
  200. package/dist/assets/{properties-constraints.inspector-CrNnu6jW.js → properties-constraints.inspector-5SvB0GDC.js} +1 -1
  201. package/dist/assets/{properties-data.inspector-84938huJ.js → properties-data.inspector-C-SngIsI.js} +1 -1
  202. package/dist/assets/{properties-material.inspector-BarvuWEj.js → properties-material.inspector-CYAWsvsX.js} +1 -1
  203. package/dist/assets/{properties-modifiers.inspector-Cm2y4Vb6.js → properties-modifiers.inspector-XN6BL-Ll.js} +1 -1
  204. package/dist/assets/{properties-object.inspector-Bf0eY0kG.js → properties-object.inspector-CfryU0kN.js} +1 -1
  205. package/dist/assets/{properties-output.inspector-D_NFrDmS.js → properties-output.inspector-COfgmFUW.js} +1 -1
  206. package/dist/assets/{properties-particles.inspector-BZaLS0X7.js → properties-particles.inspector-BCh0vFr6.js} +1 -1
  207. package/dist/assets/{properties-physics.inspector-BIwFNf1B.js → properties-physics.inspector-B6to1u6U.js} +1 -1
  208. package/dist/assets/{properties-render.inspector-BahRi3z3.js → properties-render.inspector-C4hVfo7j.js} +1 -1
  209. package/dist/assets/{properties-scene.inspector-C9p2pucf.js → properties-scene.inspector-dKta4xn5.js} +1 -1
  210. package/dist/assets/{properties-texture.inspector-J_6EK4f-.js → properties-texture.inspector-ZlNhW25m.js} +1 -1
  211. package/dist/assets/{properties-view-layer.inspector-BgniFnwR.js → properties-view-layer.inspector-CIxHmkDR.js} +1 -1
  212. package/dist/assets/{properties-world.inspector-CzcRcbOY.js → properties-world.inspector-Ce0q2dmK.js} +1 -1
  213. package/dist/assets/{r3f-design-session-C5_NQltq.js → r3f-design-session-1riISktt.js} +2 -2
  214. package/dist/assets/{r3f-physics-binding-BRcBDERW.js → r3f-physics-binding-DuG97FR9.js} +1 -1
  215. package/dist/assets/{r3f-source-authoring-adapter-N_d4ivmu.js → r3f-source-authoring-adapter-B8qqrdwk.js} +1 -1
  216. package/dist/assets/{react-canvas-navigation-BWgmHmpc.js → react-canvas-navigation-CxBm8iw8.js} +1 -1
  217. package/dist/assets/{react-inspector.service-C0telKKC.js → react-inspector.service-BcdePwno.js} +1 -1
  218. package/dist/assets/{react-story-board-CGF1vFuk.js → react-story-board-CMvkLAkF.js} +1 -1
  219. package/dist/assets/{react-three-rapier.esm-C8iL26_6.js → react-three-rapier.esm-D5svf-ME.js} +1 -1
  220. package/dist/assets/{react-world-authoring-adapter-CTCp7U6C.js → react-world-authoring-adapter-Dq8NqvWu.js} +1 -1
  221. package/dist/assets/{realm-services-CbgTofeT.js → realm-services-CqjVBanw.js} +1 -1
  222. package/dist/assets/{reflection-probe-capture.inspector-Dp3WN9X2.js → reflection-probe-capture.inspector-uEvyppEj.js} +1 -1
  223. package/dist/assets/{registry-DPYQgPRv.js → registry-D7lFIA8c.js} +1 -1
  224. package/dist/assets/{relative-import-specifier-CPSPKQKY.js → relative-import-specifier-CA9mSNXO.js} +1 -1
  225. package/dist/assets/{render-env-FpydFP_z.js → render-env-BHasp-z3.js} +1 -1
  226. package/dist/assets/{render-features-BYgh328X.js → render-features-sSb1-c5x.js} +1 -1
  227. package/dist/assets/{render-settings-DeBS5HzD.js → render-settings-CUbo4Sw5.js} +1 -1
  228. package/dist/assets/{resolve-three-BUKYgCMY.js → resolve-three-TQ367RQD.js} +3 -3
  229. package/dist/assets/{root-seam-contract-B33VsC6Z.js → root-seam-contract-CneTgNww.js} +1 -1
  230. package/dist/assets/{run-selection-BdsJXY3k.js → run-selection-CNsOQTEG.js} +1 -1
  231. package/dist/assets/{scene-capture-CMwvLaW9.js → scene-capture-KbdRgsD3.js} +1 -1
  232. package/dist/assets/{scene-document.service-DqReOF6t.js → scene-document.service-CmPSUocW.js} +2 -2
  233. package/dist/assets/{scene-framing-Dq-okRQ_.js → scene-framing-B5JC4NeG.js} +1 -1
  234. package/dist/assets/{seeded-random-BVi4_fs4.js → seeded-random-B6zqGkWP.js} +1 -1
  235. package/dist/assets/{setup-renderer-Cdx_0C3T.js → setup-renderer-efjIBSGF.js} +1 -1
  236. package/dist/assets/{source-object3d-authoring-adapter-CRQ5Iruy.js → source-object3d-authoring-adapter-DeeboYub.js} +1 -1
  237. package/dist/assets/{source-persistence-backend-BMbXR_WB.js → source-persistence-backend-Cwy93SmQ.js} +1 -1
  238. package/dist/assets/{stage-keyboard-ntaDc3sd.js → stage-keyboard-GNCaTXLA.js} +1 -1
  239. package/dist/assets/{stage-overlay-set-CmvMTUuj.js → stage-overlay-set-DV3SCzJb.js} +1 -1
  240. package/dist/assets/{stage-presence-markers--CsmPxKk.js → stage-presence-markers-CBEU1Kzo.js} +1 -1
  241. package/dist/assets/{stage-transform-tools-eaq_pmiw.js → stage-transform-tools-C9nNDW6n.js} +1 -1
  242. package/dist/assets/{standard-viewport-dressing-DaBfL3HV.js → standard-viewport-dressing-BJkGwiNT.js} +1 -1
  243. package/dist/assets/{state-watch.action-BBeD9rI6.js → state-watch.action-Doz_jrzS.js} +1 -1
  244. package/dist/assets/{state-watch.menu-BtjTGcSx.js → state-watch.menu-Dj4DUUxN.js} +1 -1
  245. package/dist/assets/{state-watch.utility-CLrBmLch.js → state-watch.utility-COPa8xpV.js} +1 -1
  246. package/dist/assets/{story-capture-DvMpONUV.js → story-capture-stRSY4PQ.js} +1 -1
  247. package/dist/assets/{story-documents-C1h5_Fvv.js → story-documents-CYzWYY1o.js} +1 -1
  248. package/dist/assets/{story-documents.service-BvSI6xU7.js → story-documents.service-C5r8KFEG.js} +1 -1
  249. package/dist/assets/{story-documents.service-e4GgOiBP.js → story-documents.service-DJBu4rve.js} +1 -1
  250. package/dist/assets/{story-media-presence-UYdQuwtq.js → story-media-presence-D4AIsAtK.js} +1 -1
  251. package/dist/assets/{story-pixi-preview-BVXZsJAe.js → story-pixi-preview-mPo3OFOd.js} +1 -1
  252. package/dist/assets/{story-presentation-CU1g5VGf.js → story-presentation-Dw4Vw65P.js} +1 -1
  253. package/dist/assets/{story-three-preview-DdduzS7D.js → story-three-preview-CWM0Rj7x.js} +2 -2
  254. package/dist/assets/{studio-environment-DZOr5iAy.js → studio-environment-Bw9zMFE8.js} +1 -1
  255. package/dist/assets/{surface-state-C0NqVDj5.js → surface-state-b_H4iOCJ.js} +1 -1
  256. package/dist/assets/{syntactic-prop-specs--oEbzaCI.js → syntactic-prop-specs-BCdwWi-T.js} +1 -1
  257. package/dist/assets/{team-playtest.service-DTvCDmka.js → team-playtest.service-CnxdTghn.js} +1 -1
  258. package/dist/assets/{three-CAVY58Dv.js → three-DWy0sZom.js} +1 -1
  259. package/dist/assets/{three-authoring-adapter-BDMrB8fC.js → three-authoring-adapter-9LcUBPaU.js} +1 -1
  260. package/dist/assets/three-authoring.service-DdTMF4A2.js +2 -0
  261. package/dist/assets/{three-ingest-runtime-BPTa3ryG.js → three-ingest-runtime-x9nLmUl-.js} +1 -1
  262. package/dist/assets/{three-integration-CJIrJnlD.js → three-integration-DB-xQHD5.js} +2 -2
  263. package/dist/assets/three-integration.service-DwToRGIc.js +1 -0
  264. package/dist/assets/{three-projection-core-BnoDtdZY.js → three-projection-core-IUovHgg_.js} +1 -1
  265. package/dist/assets/{three-state-_BZo8PPs.js → three-state-_ImCbP87.js} +1 -1
  266. package/dist/assets/{three-story-capture.service-CzIciMHs.js → three-story-capture.service-wKwfSnqA.js} +2 -2
  267. package/dist/assets/{three-story-model-BZAqoEDw.js → three-story-model-BxWKcl9d.js} +1 -1
  268. package/dist/assets/{three-viewport-presentation-DsFI1PyU.js → three-viewport-presentation-Bg86EsDJ.js} +1 -1
  269. package/dist/assets/{transform-mode-request-ROdyyd8M.js → transform-mode-request-BnV8FSnx.js} +1 -1
  270. package/dist/assets/{transport-strip-DAasOTBr.js → transport-strip-BZQnaxFN.js} +1 -1
  271. package/dist/assets/transport.header-1SF4ZbEd.js +1 -0
  272. package/dist/assets/{tuples-BFQG7BqZ.js → tuples-DR33sMq6.js} +1 -1
  273. package/dist/assets/{ui-board-document-C-DxG3Lj.js → ui-board-document-VJMvm6Ks.js} +2 -2
  274. package/dist/assets/{user-data-DxeJHxTz.js → user-data-DL6HsBPf.js} +1 -1
  275. package/dist/assets/{utility-view-state-CGlE9NdF.js → utility-view-state-ghWXsYXq.js} +1 -1
  276. package/dist/assets/{viewport-door-CTspfOX-.js → viewport-door-BV_lf5uK.js} +1 -1
  277. package/dist/assets/{viewport-root-presentation-Co7zteuS.js → viewport-root-presentation-CKqhX3mt.js} +1 -1
  278. package/dist/assets/{viewport-surface-status-P6QST-xH.js → viewport-surface-status-D7M2L2lI.js} +1 -1
  279. package/dist/assets/{webworkerAll-BH-WTk1P.js → webworkerAll-DDbFvxgB.js} +1 -1
  280. package/dist/assets/{workspace-arrangement-Bq8u7HUK.js → workspace-arrangement-86_8Kk5K.js} +1 -1
  281. package/dist/assets/{world-documents-DP1Ifjck.js → world-documents-DeNJUefV.js} +1 -1
  282. package/dist/assets/{world-root-stage-binding-1BOYY3z-.js → world-root-stage-binding-VOrldLB4.js} +1 -1
  283. package/dist/assets/{xstate-animation-binding-GsfnPsLk.js → xstate-animation-binding-747CfEeB.js} +1 -1
  284. package/dist/assets/{xstate-animation-meta-BS3q6oQo.js → xstate-animation-meta-DNMlMnr-.js} +1 -1
  285. package/dist-node/cli.js +16 -16
  286. package/package.json +16 -16
  287. package/dist/assets/InspectorObjectPreview-Bc9QgcaX.js +0 -1
  288. package/dist/assets/Object3DDocumentViewport-S-0l2Ppm.js +0 -2
  289. package/dist/assets/autoplay.service-BxNf_ohc.js +0 -1
  290. package/dist/assets/instances.command-Cc9TSete.js +0 -1
  291. package/dist/assets/network-observer.service-AzK_SzI2.js +0 -1
  292. package/dist/assets/three-authoring.service-DbhfcSSn.js +0 -2
  293. package/dist/assets/three-integration.service-DTBYyabq.js +0 -1
  294. package/dist/assets/transport.header-QMchTQhw.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{j3 as Ie,bt as Ce,r as B,bv as Te,fN as H,bB as F,bC as U,hR as De,bA as Pe,j4 as Be,bK as $e,bq as be,bn as Ve,j5 as Ge,j6 as pe,j7 as He,j8 as We,j9 as ze,ja as fe,bs as me,bp as Ue}from"./index-Cjv2Ynte.js";import{c as Ke,a as Y}from"./blender-runtime-skin-CPgzavkZ.js";import{r as m}from"./index-nmcBqr7Y.js";import{u as qe,v as J,k as X,w as Q,x as Ye,y as oe,t as he,z as Je,A as Xe,B as ge,C as Qe,D as te,E as Ze,F as et,G as tt,H as rt,I as nt}from"./blender-runtime-host-B63tuG7j.js";import{r as ot}from"./index-CtzuWnCS.js";import{a as at}from"./three-contract-Dkt6PmWY.js";import{b as W,o as re}from"./viewport-door-CTspfOX-.js";import{s as lt,a as st}from"./object3d-document-session-registry-D8XSoEpf.js";import{d9 as it}from"./three.core-3arARmh6.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./LineSegments2-DN9pUfWA.js";import"./three.module-BLhyNg0e.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-D_jbMNmm.js";import"./hierarchy-marks-sMK9R4NU.js";import"./workspace-arrangement-Bq8u7HUK.js";function Oe(t){const a=Number.isFinite(t)&&t>0?t:50;return{degrees:2*Math.atan(72/(2*a))*180/Math.PI,axis:"larger"}}Ie("model",{camera:{fov:Oe(50),opening:[.8187,.4458,.3617]},interaction:{bootTool:"select",boxSelect:"touch"},all:{lighting:{source:"studio",studioPreset:Ce.id,auto:null,tone:{mapper:"none",exposure:1}},xray:{enabled:!1,alpha:.5}},modes:{wireframe:{xray:{enabled:!0,alpha:0}},preview:{lighting:{source:"preview",auto:null,preview:{sceneLights:!1,sun:{enabled:!1},environment:{enabled:!0,image:"blender:forest",energy:1,rotation:0}},tone:{mapper:"agx",exposure:1}},backdrop:{source:"fill"}},rendered:{lighting:{source:"scene",auto:null,tone:{mapper:"agx",exposure:1}},backdrop:{source:"scene"}}},overlays:{selection:{origins:!0}},world:{upAxis:"z"}});function ct(t){return`blender-${t.toLowerCase().replace(/_/g,"-")}`}function P(t){return t?.type==="TSE_SOME_ID"&&t.struct==="Object"&&t.object!==void 0}function _e(t){if(t.struct)return t.struct}function je(t,a){return{id:t.id,label:t.name,role:"entity",kind:ct(t.icon),..._e(t)?{typeLabel:_e(t)}:{},parentId:a,childIds:t.children.map(o=>o.id),defaultExpanded:t.expanded}}const dt={transform:!0,inspectorFields:!1,persist:!0},ee=new Set;let Ae=0;const ae=new Set;function ye(){queueMicrotask(()=>{Ae++;for(const t of ae)t()})}function ut(t){return ae.add(t),()=>{ae.delete(t)}}function ve(){return Ae}function bt(t){for(const a of ee)if(a.documentId===t||a.documentId===`object3d-document:${t}`)return a;return ee.values().next().value??null}const pt=()=>({position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]});function Se(t,a){t.updateWorldMatrix(!0,!1);const o=a.matrixWorld.clone().invert().multiply(t.matrixWorld).elements;return[[o[0],o[1],o[2],o[3]],[o[4],o[5],o[6],o[7]],[o[8],o[9],o[10],o[11]],[o[12],o[13],o[14],o[15]]]}function K(t,a){return`${t} needs a file, and this editor has no door to ask for one: the host's file door (\`EditorHost.files\`, \`@volter/editor-sdk/host\`) reads and writes project-relative paths and has no file-picker member, so there is nothing to open the workbench's own dialog through. Blender's row opens a file browser; run without one, the engine answers "${a}".`}const ft=[{kind:"mesh.plane",label:"Plane",group:"Mesh",call:"mesh.primitive_plane_add"},{kind:"mesh.cube",label:"Cube",group:"Mesh",call:"mesh.primitive_cube_add"},{kind:"mesh.circle",label:"Circle",group:"Mesh",call:"mesh.primitive_circle_add"},{kind:"mesh.uv-sphere",label:"UV Sphere",group:"Mesh",call:"mesh.primitive_uv_sphere_add"},{kind:"mesh.ico-sphere",label:"Ico Sphere",group:"Mesh",call:"mesh.primitive_ico_sphere_add"},{kind:"mesh.cylinder",label:"Cylinder",group:"Mesh",call:"mesh.primitive_cylinder_add"},{kind:"mesh.cone",label:"Cone",group:"Mesh",call:"mesh.primitive_cone_add"},{kind:"mesh.torus",label:"Torus",group:"Mesh",call:"mesh.primitive_torus_add"},{kind:"mesh.grid",label:"Grid",group:"Mesh",call:"mesh.primitive_grid_add",separatorBefore:!0},{kind:"mesh.monkey",label:"Monkey",group:"Mesh",call:"mesh.primitive_monkey_add"},{kind:"curve.bezier",label:"Bézier",group:"Curve",call:"curve.primitive_bezier_curve_add"},{kind:"curve.bezier-circle",label:"Circle",group:"Curve",call:"curve.primitive_bezier_circle_add"},{kind:"curve.nurbs-curve",label:"Nurbs Curve",group:"Curve",call:"curve.primitive_nurbs_curve_add",separatorBefore:!0},{kind:"curve.nurbs-circle",label:"Nurbs Circle",group:"Curve",call:"curve.primitive_nurbs_circle_add"},{kind:"curve.path",label:"Path",group:"Curve",call:"curve.primitive_nurbs_path_add"},{kind:"curve.empty-hair",label:"Empty Hair",group:"Curve",call:"object.curves_empty_hair_add",separatorBefore:!0},{kind:"curve.fur",label:"Fur",group:"Curve",call:"object.quick_fur"},{kind:"surface.nurbs-curve",label:"Nurbs Curve",group:"Surface",call:"surface.primitive_nurbs_surface_curve_add"},{kind:"surface.nurbs-circle",label:"Nurbs Circle",group:"Surface",call:"surface.primitive_nurbs_surface_circle_add"},{kind:"surface.nurbs-surface",label:"Nurbs Surface",group:"Surface",call:"surface.primitive_nurbs_surface_surface_add"},{kind:"surface.nurbs-cylinder",label:"Nurbs Cylinder",group:"Surface",call:"surface.primitive_nurbs_surface_cylinder_add"},{kind:"surface.nurbs-sphere",label:"Nurbs Sphere",group:"Surface",call:"surface.primitive_nurbs_surface_sphere_add"},{kind:"surface.nurbs-torus",label:"Nurbs Torus",group:"Surface",call:"surface.primitive_nurbs_surface_torus_add"},{kind:"metaball.ball",label:"Ball",group:"Metaball",call:"object.metaball_add, type='BALL'"},{kind:"metaball.capsule",label:"Capsule",group:"Metaball",call:"object.metaball_add, type='CAPSULE'"},{kind:"metaball.plane",label:"Plane",group:"Metaball",call:"object.metaball_add, type='PLANE'"},{kind:"metaball.ellipsoid",label:"Ellipsoid",group:"Metaball",call:"object.metaball_add, type='ELLIPSOID'"},{kind:"metaball.cube",label:"Cube",group:"Metaball",call:"object.metaball_add, type='CUBE'"},{kind:"text",label:"Text",group:null,call:"object.text_add"},{kind:"point-cloud",label:"Point Cloud",group:null,call:"object.pointcloud_random_add"},{kind:"volume.import",label:"Import OpenVDB...",group:"Volume",call:"object.volume_import",refusal:`${K("Importing an OpenVDB volume","CANCELLED, with nothing created")} This build also has no OpenVDB at all (\`bpy.app.build_options.openvdb\` is False), so a file would not be read even with a picker.`},{kind:"volume.empty",label:"Empty",group:"Volume",call:"object.volume_add"},{kind:"grease-pencil.blank",label:"Blank",group:"Grease Pencil",call:"object.grease_pencil_add, type='EMPTY'"},{kind:"grease-pencil.stroke",label:"Stroke",group:"Grease Pencil",call:"object.grease_pencil_add, type='STROKE'"},{kind:"grease-pencil.monkey",label:"Monkey",group:"Grease Pencil",call:"object.grease_pencil_add, type='MONKEY'"},{kind:"grease-pencil.lineart-scene",label:"Scene Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_SCENE'",separatorBefore:!0},{kind:"grease-pencil.lineart-collection",label:"Collection Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_COLLECTION'"},{kind:"grease-pencil.lineart-object",label:"Object Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_OBJECT'"},{kind:"armature",label:"Armature",group:null,call:"object.armature_add"},{kind:"lattice.lattice",label:"Lattice",group:"Lattice",call:"object.add, type='LATTICE'"},{kind:"lattice.deform-selected",label:"Lattice Deform Selected",group:"Lattice",call:"object.lattice_add_to_selected"},{kind:"empty.plain-axes",label:"Plain Axes",group:"Empty",call:"object.empty_add, type='PLAIN_AXES'"},{kind:"empty.arrows",label:"Arrows",group:"Empty",call:"object.empty_add, type='ARROWS'"},{kind:"empty.single-arrow",label:"Single Arrow",group:"Empty",call:"object.empty_add, type='SINGLE_ARROW'"},{kind:"empty.circle",label:"Circle",group:"Empty",call:"object.empty_add, type='CIRCLE'"},{kind:"empty.cube",label:"Cube",group:"Empty",call:"object.empty_add, type='CUBE'"},{kind:"empty.sphere",label:"Sphere",group:"Empty",call:"object.empty_add, type='SPHERE'"},{kind:"empty.cone",label:"Cone",group:"Empty",call:"object.empty_add, type='CONE'"},{kind:"image.reference",label:"Reference...",group:"Image",call:"object.empty_image_add, background=False",refusal:K("A reference image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.background",label:"Background...",group:"Image",call:"object.empty_image_add, background=True",refusal:K("A background image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.mesh-plane",label:"Mesh Plane...",group:"Image",call:"image.import_as_mesh_planes",refusal:K("An image as a mesh plane","CANCELLED, with nothing created")},{kind:"image.empty-image",label:"Empty Image",group:"Image",call:"object.empty_add, type='IMAGE'"},{kind:"light.point",label:"Point",group:"Light",call:"object.light_add, type='POINT'"},{kind:"light.sun",label:"Sun",group:"Light",call:"object.light_add, type='SUN'"},{kind:"light.spot",label:"Spot",group:"Light",call:"object.light_add, type='SPOT'"},{kind:"light.area",label:"Area",group:"Light",call:"object.light_add, type='AREA'"},{kind:"light-probe.sphere",label:"Sphere",group:"Light Probe",call:"object.lightprobe_add, type='SPHERE'"},{kind:"light-probe.plane",label:"Plane",group:"Light Probe",call:"object.lightprobe_add, type='PLANE'"},{kind:"light-probe.volume",label:"Volume",group:"Light Probe",call:"object.lightprobe_add, type='VOLUME'"},{kind:"camera",label:"Camera",group:null,call:"object.camera_add"},{kind:"speaker",label:"Speaker",group:null,call:"object.speaker_add"},{kind:"force-field.force",label:"Force",group:"Force Field",call:"object.effector_add, type='FORCE'"},{kind:"force-field.wind",label:"Wind",group:"Force Field",call:"object.effector_add, type='WIND'"},{kind:"force-field.vortex",label:"Vortex",group:"Force Field",call:"object.effector_add, type='VORTEX'"},{kind:"force-field.magnetic",label:"Magnetic",group:"Force Field",call:"object.effector_add, type='MAGNET'"},{kind:"force-field.harmonic",label:"Harmonic",group:"Force Field",call:"object.effector_add, type='HARMONIC'"},{kind:"force-field.charge",label:"Charge",group:"Force Field",call:"object.effector_add, type='CHARGE'"},{kind:"force-field.lennard-jones",label:"Lennard-Jones",group:"Force Field",call:"object.effector_add, type='LENNARDJ'"},{kind:"force-field.texture",label:"Texture",group:"Force Field",call:"object.effector_add, type='TEXTURE'"},{kind:"force-field.curve-guide",label:"Curve Guide",group:"Force Field",call:"object.effector_add, type='GUIDE'"},{kind:"force-field.boid",label:"Boid",group:"Force Field",call:"object.effector_add, type='BOID'"},{kind:"force-field.turbulence",label:"Turbulence",group:"Force Field",call:"object.effector_add, type='TURBULENCE'"},{kind:"force-field.drag",label:"Drag",group:"Force Field",call:"object.effector_add, type='DRAG'"},{kind:"force-field.fluid-flow",label:"Fluid Flow",group:"Force Field",call:"object.effector_add, type='FLUID'"}],mt="collection-instance:";function ht(){const t=new Map;for(const a of X().byId.values()){if(a.type!=="TSE_LAYER_COLLECTION")continue;const o=a.data;o===void 0||!o.startsWith("bpy.data.collections[")||t.has(a.name)||t.set(a.name,{kind:`${mt}${a.name}`,label:a.name,group:"Collection Instance",call:`object.collection_instance_add, collection=${V(a.name)}`})}return[...t.values()]}function Z(){return[...ft,...ht()]}function gt(t){const[a,...o]=t.call.split(", ");return`bpy.ops.${a}(${o.join(", ")})`}function V(t){return JSON.stringify(t)}const _t={"curve.primitive_bezier_circle_add":"Add Bézier Circle","curve.primitive_bezier_curve_add":"Add Bézier","curve.primitive_nurbs_circle_add":"Add Nurbs Circle","curve.primitive_nurbs_curve_add":"Add Nurbs Curve","curve.primitive_nurbs_path_add":"Add Path","image.import_as_mesh_planes":"Import Images as Planes","mesh.primitive_circle_add":"Add Circle","mesh.primitive_cone_add":"Add Cone","mesh.primitive_cube_add":"Add Cube","mesh.primitive_cylinder_add":"Add Cylinder","mesh.primitive_grid_add":"Add Grid","mesh.primitive_ico_sphere_add":"Add Ico Sphere","mesh.primitive_monkey_add":"Add Monkey","mesh.primitive_plane_add":"Add Plane","mesh.primitive_torus_add":"Add Torus","mesh.primitive_uv_sphere_add":"Add UV Sphere","object.armature_add":"Add Armature","object.camera_add":"Add Camera","object.collection_add":"Add to Collection","object.collection_instance_add":"Add Collection Instance","object.constraint_add":"Add Constraint","object.curves_empty_hair_add":"Add Empty Curves","object.curves_random_add":"Add Random Curves","object.data_instance_add":"Add Object Data Instance","object.delete":"Delete","object.duplicate":"Duplicate Objects","object.effector_add":"Add Effector","object.empty_add":"Add Empty","object.empty_image_add":"Add Empty Image/Drop Image to Empty","object.grease_pencil_add":"Add Grease Pencil","object.grease_pencil_dash_modifier_segment_add":"Add Segment","object.grease_pencil_time_modifier_segment_add":"Add Segment","object.lattice_add_to_selected":"Add Lattice Deformer","object.light_add":"Add Light","object.lightprobe_add":"Add Light Probe","object.location_clear":"Clear Location","object.material_slot_add":"Add Material Slot","object.metaball_add":"Add Metaball","object.modifier_add":"Add Modifier","object.origin_set":"Set Origin","object.particle_system_add":"Add Particle System Slot","object.pointcloud_random_add":"Add Point Cloud","object.quick_fur":"Quick Fur","object.rotation_clear":"Clear Rotation","object.scale_clear":"Clear Scale","object.shaderfx_add":"Add Effect","object.shape_key_add":"Add Shape Key","object.speaker_add":"Add Speaker","object.text_add":"Add Text","object.transform_apply":"Apply Object Transform","object.vertex_group_add":"Add Vertex Group","object.volume_add":"Add Volume","object.volume_import":"Import OpenVDB Volume","surface.primitive_nurbs_surface_circle_add":"Add Surface Circle","surface.primitive_nurbs_surface_curve_add":"Add Surface Curve","surface.primitive_nurbs_surface_cylinder_add":"Add Surface Cylinder","surface.primitive_nurbs_surface_sphere_add":"Add Surface Sphere","surface.primitive_nurbs_surface_surface_add":"Add Surface Patch","surface.primitive_nurbs_surface_torus_add":"Add Surface Torus"};function jt(t){const a=/bpy\.ops\.([a-z_]+\.[a-z0-9_]+)\(/.exec(t)?.[1];return a===void 0?void 0:_t[a]}async function z(t,a){const o=["before = {o.name for o in bpy.data.objects}",t,"made = [o.name for o in bpy.data.objects if o.name not in before]",'print("\\n".join(made))'].join(`
1
+ import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{j3 as Ie,bt as Ce,r as B,bv as Te,fN as H,bB as F,bC as U,hR as De,bA as Pe,j4 as Be,bK as $e,bq as be,bn as Ve,j5 as Ge,j6 as pe,j7 as He,j8 as We,j9 as ze,ja as fe,bs as me,bp as Ue}from"./index-ClgrFOcX.js";import{c as Ke,a as Y}from"./blender-runtime-skin-hw-op7Nt.js";import{r as m}from"./index-nmcBqr7Y.js";import{u as qe,v as J,k as X,w as Q,x as Ye,y as oe,t as he,z as Je,A as Xe,B as ge,C as Qe,D as te,E as Ze,F as et,G as tt,H as rt,I as nt}from"./blender-runtime-host-MJZEPwHA.js";import{r as ot}from"./index-CtzuWnCS.js";import{a as at}from"./three-contract-Dkt6PmWY.js";import{b as W,o as re}from"./viewport-door-BV_lf5uK.js";import{s as lt,a as st}from"./object3d-document-session-registry-CADiW-LP.js";import{d9 as it}from"./three.core-3arARmh6.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./LineSegments2-DN9pUfWA.js";import"./three.module-BLhyNg0e.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-Dl5Y3LLv.js";import"./hierarchy-marks-DeG4E4Ke.js";import"./workspace-arrangement-86_8Kk5K.js";function Oe(t){const a=Number.isFinite(t)&&t>0?t:50;return{degrees:2*Math.atan(72/(2*a))*180/Math.PI,axis:"larger"}}Ie("model",{camera:{fov:Oe(50),opening:[.8187,.4458,.3617]},interaction:{bootTool:"select",boxSelect:"touch"},all:{lighting:{source:"studio",studioPreset:Ce.id,auto:null,tone:{mapper:"none",exposure:1}},xray:{enabled:!1,alpha:.5}},modes:{wireframe:{xray:{enabled:!0,alpha:0}},preview:{lighting:{source:"preview",auto:null,preview:{sceneLights:!1,sun:{enabled:!1},environment:{enabled:!0,image:"blender:forest",energy:1,rotation:0}},tone:{mapper:"agx",exposure:1}},backdrop:{source:"fill"}},rendered:{lighting:{source:"scene",auto:null,tone:{mapper:"agx",exposure:1}},backdrop:{source:"scene"}}},overlays:{selection:{origins:!0}},world:{upAxis:"z"}});function ct(t){return`blender-${t.toLowerCase().replace(/_/g,"-")}`}function P(t){return t?.type==="TSE_SOME_ID"&&t.struct==="Object"&&t.object!==void 0}function _e(t){if(t.struct)return t.struct}function je(t,a){return{id:t.id,label:t.name,role:"entity",kind:ct(t.icon),..._e(t)?{typeLabel:_e(t)}:{},parentId:a,childIds:t.children.map(o=>o.id),defaultExpanded:t.expanded}}const dt={transform:!0,inspectorFields:!1,persist:!0},ee=new Set;let Ae=0;const ae=new Set;function ye(){queueMicrotask(()=>{Ae++;for(const t of ae)t()})}function ut(t){return ae.add(t),()=>{ae.delete(t)}}function ve(){return Ae}function bt(t){for(const a of ee)if(a.documentId===t||a.documentId===`object3d-document:${t}`)return a;return ee.values().next().value??null}const pt=()=>({position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]});function Se(t,a){t.updateWorldMatrix(!0,!1);const o=a.matrixWorld.clone().invert().multiply(t.matrixWorld).elements;return[[o[0],o[1],o[2],o[3]],[o[4],o[5],o[6],o[7]],[o[8],o[9],o[10],o[11]],[o[12],o[13],o[14],o[15]]]}function K(t,a){return`${t} needs a file, and this editor has no door to ask for one: the host's file door (\`EditorHost.files\`, \`@volter/editor-sdk/host\`) reads and writes project-relative paths and has no file-picker member, so there is nothing to open the workbench's own dialog through. Blender's row opens a file browser; run without one, the engine answers "${a}".`}const ft=[{kind:"mesh.plane",label:"Plane",group:"Mesh",call:"mesh.primitive_plane_add"},{kind:"mesh.cube",label:"Cube",group:"Mesh",call:"mesh.primitive_cube_add"},{kind:"mesh.circle",label:"Circle",group:"Mesh",call:"mesh.primitive_circle_add"},{kind:"mesh.uv-sphere",label:"UV Sphere",group:"Mesh",call:"mesh.primitive_uv_sphere_add"},{kind:"mesh.ico-sphere",label:"Ico Sphere",group:"Mesh",call:"mesh.primitive_ico_sphere_add"},{kind:"mesh.cylinder",label:"Cylinder",group:"Mesh",call:"mesh.primitive_cylinder_add"},{kind:"mesh.cone",label:"Cone",group:"Mesh",call:"mesh.primitive_cone_add"},{kind:"mesh.torus",label:"Torus",group:"Mesh",call:"mesh.primitive_torus_add"},{kind:"mesh.grid",label:"Grid",group:"Mesh",call:"mesh.primitive_grid_add",separatorBefore:!0},{kind:"mesh.monkey",label:"Monkey",group:"Mesh",call:"mesh.primitive_monkey_add"},{kind:"curve.bezier",label:"Bézier",group:"Curve",call:"curve.primitive_bezier_curve_add"},{kind:"curve.bezier-circle",label:"Circle",group:"Curve",call:"curve.primitive_bezier_circle_add"},{kind:"curve.nurbs-curve",label:"Nurbs Curve",group:"Curve",call:"curve.primitive_nurbs_curve_add",separatorBefore:!0},{kind:"curve.nurbs-circle",label:"Nurbs Circle",group:"Curve",call:"curve.primitive_nurbs_circle_add"},{kind:"curve.path",label:"Path",group:"Curve",call:"curve.primitive_nurbs_path_add"},{kind:"curve.empty-hair",label:"Empty Hair",group:"Curve",call:"object.curves_empty_hair_add",separatorBefore:!0},{kind:"curve.fur",label:"Fur",group:"Curve",call:"object.quick_fur"},{kind:"surface.nurbs-curve",label:"Nurbs Curve",group:"Surface",call:"surface.primitive_nurbs_surface_curve_add"},{kind:"surface.nurbs-circle",label:"Nurbs Circle",group:"Surface",call:"surface.primitive_nurbs_surface_circle_add"},{kind:"surface.nurbs-surface",label:"Nurbs Surface",group:"Surface",call:"surface.primitive_nurbs_surface_surface_add"},{kind:"surface.nurbs-cylinder",label:"Nurbs Cylinder",group:"Surface",call:"surface.primitive_nurbs_surface_cylinder_add"},{kind:"surface.nurbs-sphere",label:"Nurbs Sphere",group:"Surface",call:"surface.primitive_nurbs_surface_sphere_add"},{kind:"surface.nurbs-torus",label:"Nurbs Torus",group:"Surface",call:"surface.primitive_nurbs_surface_torus_add"},{kind:"metaball.ball",label:"Ball",group:"Metaball",call:"object.metaball_add, type='BALL'"},{kind:"metaball.capsule",label:"Capsule",group:"Metaball",call:"object.metaball_add, type='CAPSULE'"},{kind:"metaball.plane",label:"Plane",group:"Metaball",call:"object.metaball_add, type='PLANE'"},{kind:"metaball.ellipsoid",label:"Ellipsoid",group:"Metaball",call:"object.metaball_add, type='ELLIPSOID'"},{kind:"metaball.cube",label:"Cube",group:"Metaball",call:"object.metaball_add, type='CUBE'"},{kind:"text",label:"Text",group:null,call:"object.text_add"},{kind:"point-cloud",label:"Point Cloud",group:null,call:"object.pointcloud_random_add"},{kind:"volume.import",label:"Import OpenVDB...",group:"Volume",call:"object.volume_import",refusal:`${K("Importing an OpenVDB volume","CANCELLED, with nothing created")} This build also has no OpenVDB at all (\`bpy.app.build_options.openvdb\` is False), so a file would not be read even with a picker.`},{kind:"volume.empty",label:"Empty",group:"Volume",call:"object.volume_add"},{kind:"grease-pencil.blank",label:"Blank",group:"Grease Pencil",call:"object.grease_pencil_add, type='EMPTY'"},{kind:"grease-pencil.stroke",label:"Stroke",group:"Grease Pencil",call:"object.grease_pencil_add, type='STROKE'"},{kind:"grease-pencil.monkey",label:"Monkey",group:"Grease Pencil",call:"object.grease_pencil_add, type='MONKEY'"},{kind:"grease-pencil.lineart-scene",label:"Scene Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_SCENE'",separatorBefore:!0},{kind:"grease-pencil.lineart-collection",label:"Collection Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_COLLECTION'"},{kind:"grease-pencil.lineart-object",label:"Object Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_OBJECT'"},{kind:"armature",label:"Armature",group:null,call:"object.armature_add"},{kind:"lattice.lattice",label:"Lattice",group:"Lattice",call:"object.add, type='LATTICE'"},{kind:"lattice.deform-selected",label:"Lattice Deform Selected",group:"Lattice",call:"object.lattice_add_to_selected"},{kind:"empty.plain-axes",label:"Plain Axes",group:"Empty",call:"object.empty_add, type='PLAIN_AXES'"},{kind:"empty.arrows",label:"Arrows",group:"Empty",call:"object.empty_add, type='ARROWS'"},{kind:"empty.single-arrow",label:"Single Arrow",group:"Empty",call:"object.empty_add, type='SINGLE_ARROW'"},{kind:"empty.circle",label:"Circle",group:"Empty",call:"object.empty_add, type='CIRCLE'"},{kind:"empty.cube",label:"Cube",group:"Empty",call:"object.empty_add, type='CUBE'"},{kind:"empty.sphere",label:"Sphere",group:"Empty",call:"object.empty_add, type='SPHERE'"},{kind:"empty.cone",label:"Cone",group:"Empty",call:"object.empty_add, type='CONE'"},{kind:"image.reference",label:"Reference...",group:"Image",call:"object.empty_image_add, background=False",refusal:K("A reference image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.background",label:"Background...",group:"Image",call:"object.empty_image_add, background=True",refusal:K("A background image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.mesh-plane",label:"Mesh Plane...",group:"Image",call:"image.import_as_mesh_planes",refusal:K("An image as a mesh plane","CANCELLED, with nothing created")},{kind:"image.empty-image",label:"Empty Image",group:"Image",call:"object.empty_add, type='IMAGE'"},{kind:"light.point",label:"Point",group:"Light",call:"object.light_add, type='POINT'"},{kind:"light.sun",label:"Sun",group:"Light",call:"object.light_add, type='SUN'"},{kind:"light.spot",label:"Spot",group:"Light",call:"object.light_add, type='SPOT'"},{kind:"light.area",label:"Area",group:"Light",call:"object.light_add, type='AREA'"},{kind:"light-probe.sphere",label:"Sphere",group:"Light Probe",call:"object.lightprobe_add, type='SPHERE'"},{kind:"light-probe.plane",label:"Plane",group:"Light Probe",call:"object.lightprobe_add, type='PLANE'"},{kind:"light-probe.volume",label:"Volume",group:"Light Probe",call:"object.lightprobe_add, type='VOLUME'"},{kind:"camera",label:"Camera",group:null,call:"object.camera_add"},{kind:"speaker",label:"Speaker",group:null,call:"object.speaker_add"},{kind:"force-field.force",label:"Force",group:"Force Field",call:"object.effector_add, type='FORCE'"},{kind:"force-field.wind",label:"Wind",group:"Force Field",call:"object.effector_add, type='WIND'"},{kind:"force-field.vortex",label:"Vortex",group:"Force Field",call:"object.effector_add, type='VORTEX'"},{kind:"force-field.magnetic",label:"Magnetic",group:"Force Field",call:"object.effector_add, type='MAGNET'"},{kind:"force-field.harmonic",label:"Harmonic",group:"Force Field",call:"object.effector_add, type='HARMONIC'"},{kind:"force-field.charge",label:"Charge",group:"Force Field",call:"object.effector_add, type='CHARGE'"},{kind:"force-field.lennard-jones",label:"Lennard-Jones",group:"Force Field",call:"object.effector_add, type='LENNARDJ'"},{kind:"force-field.texture",label:"Texture",group:"Force Field",call:"object.effector_add, type='TEXTURE'"},{kind:"force-field.curve-guide",label:"Curve Guide",group:"Force Field",call:"object.effector_add, type='GUIDE'"},{kind:"force-field.boid",label:"Boid",group:"Force Field",call:"object.effector_add, type='BOID'"},{kind:"force-field.turbulence",label:"Turbulence",group:"Force Field",call:"object.effector_add, type='TURBULENCE'"},{kind:"force-field.drag",label:"Drag",group:"Force Field",call:"object.effector_add, type='DRAG'"},{kind:"force-field.fluid-flow",label:"Fluid Flow",group:"Force Field",call:"object.effector_add, type='FLUID'"}],mt="collection-instance:";function ht(){const t=new Map;for(const a of X().byId.values()){if(a.type!=="TSE_LAYER_COLLECTION")continue;const o=a.data;o===void 0||!o.startsWith("bpy.data.collections[")||t.has(a.name)||t.set(a.name,{kind:`${mt}${a.name}`,label:a.name,group:"Collection Instance",call:`object.collection_instance_add, collection=${V(a.name)}`})}return[...t.values()]}function Z(){return[...ft,...ht()]}function gt(t){const[a,...o]=t.call.split(", ");return`bpy.ops.${a}(${o.join(", ")})`}function V(t){return JSON.stringify(t)}const _t={"curve.primitive_bezier_circle_add":"Add Bézier Circle","curve.primitive_bezier_curve_add":"Add Bézier","curve.primitive_nurbs_circle_add":"Add Nurbs Circle","curve.primitive_nurbs_curve_add":"Add Nurbs Curve","curve.primitive_nurbs_path_add":"Add Path","image.import_as_mesh_planes":"Import Images as Planes","mesh.primitive_circle_add":"Add Circle","mesh.primitive_cone_add":"Add Cone","mesh.primitive_cube_add":"Add Cube","mesh.primitive_cylinder_add":"Add Cylinder","mesh.primitive_grid_add":"Add Grid","mesh.primitive_ico_sphere_add":"Add Ico Sphere","mesh.primitive_monkey_add":"Add Monkey","mesh.primitive_plane_add":"Add Plane","mesh.primitive_torus_add":"Add Torus","mesh.primitive_uv_sphere_add":"Add UV Sphere","object.armature_add":"Add Armature","object.camera_add":"Add Camera","object.collection_add":"Add to Collection","object.collection_instance_add":"Add Collection Instance","object.constraint_add":"Add Constraint","object.curves_empty_hair_add":"Add Empty Curves","object.curves_random_add":"Add Random Curves","object.data_instance_add":"Add Object Data Instance","object.delete":"Delete","object.duplicate":"Duplicate Objects","object.effector_add":"Add Effector","object.empty_add":"Add Empty","object.empty_image_add":"Add Empty Image/Drop Image to Empty","object.grease_pencil_add":"Add Grease Pencil","object.grease_pencil_dash_modifier_segment_add":"Add Segment","object.grease_pencil_time_modifier_segment_add":"Add Segment","object.lattice_add_to_selected":"Add Lattice Deformer","object.light_add":"Add Light","object.lightprobe_add":"Add Light Probe","object.location_clear":"Clear Location","object.material_slot_add":"Add Material Slot","object.metaball_add":"Add Metaball","object.modifier_add":"Add Modifier","object.origin_set":"Set Origin","object.particle_system_add":"Add Particle System Slot","object.pointcloud_random_add":"Add Point Cloud","object.quick_fur":"Quick Fur","object.rotation_clear":"Clear Rotation","object.scale_clear":"Clear Scale","object.shaderfx_add":"Add Effect","object.shape_key_add":"Add Shape Key","object.speaker_add":"Add Speaker","object.text_add":"Add Text","object.transform_apply":"Apply Object Transform","object.vertex_group_add":"Add Vertex Group","object.volume_add":"Add Volume","object.volume_import":"Import OpenVDB Volume","surface.primitive_nurbs_surface_circle_add":"Add Surface Circle","surface.primitive_nurbs_surface_curve_add":"Add Surface Curve","surface.primitive_nurbs_surface_cylinder_add":"Add Surface Cylinder","surface.primitive_nurbs_surface_sphere_add":"Add Surface Sphere","surface.primitive_nurbs_surface_surface_add":"Add Surface Patch","surface.primitive_nurbs_surface_torus_add":"Add Surface Torus"};function jt(t){const a=/bpy\.ops\.([a-z_]+\.[a-z0-9_]+)\(/.exec(t)?.[1];return a===void 0?void 0:_t[a]}async function z(t,a){const o=["before = {o.name for o in bpy.data.objects}",t,"made = [o.name for o in bpy.data.objects if o.name not in before]",'print("\\n".join(made))'].join(`
2
2
  `),i=await te(o,!0,a??jt(t));return i.error!==null?{made:[],error:i.error}:{made:i.result.split(`
3
3
  `).map(p=>p.trim()).filter(p=>p.length>0),error:null}}async function yt(t,a){const o=[`_sel = {${t.map(V).join(", ")}}`,"_vl = bpy.context.view_layer","for _o in _vl.objects:"," _o.select_set(_o.name in _sel)",a===null?"_vl.objects.active = None":`_vl.objects.active = bpy.data.objects.get(${V(a)})`].join(`
4
4
  `),i=await te(o,!1);i.error!==null&&B().console.error(`Blender refused the selection write: ${i.error}`,"blender-outliner")}async function ne(t,a){if(t.length===0)return{destination:"Nothing is selected, so there was nothing to run it on.",persisted:!1};const o=[`targets = [bpy.data.objects[n] for n in [${t.map(V).join(", ")}]]`,"with bpy.context.temp_override(selected_objects=targets, selected_editable_objects=targets, active_object=targets[0], object=targets[0]):",` ${a}`].join(`
@@ -1 +1 @@
1
- import{r as s,t as n}from"./index-Cjv2Ynte.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";const w="workspace.menu",b={menu:"window",items:[{id:"blender-save-screenshot-editor",label:"Save Screenshot (Editor)…",testId:"menu-save-screenshot-editor",execute:async()=>{const e=s(),t=await e.documents.captureActive();n(t.base64);const o=`screenshots/screenshot-${new Date().toISOString().replace(/[:.]/g,"-")}.png`;await e.files.write(o,Uint8Array.from(atob(t.base64),r=>r.charCodeAt(0))),e.console.log(`Saved the screenshot to ${o}.`,"blender-screenshot")}}]};export{b as menu,w as point};
1
+ import{r as s,t as n}from"./index-ClgrFOcX.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";const w="workspace.menu",b={menu:"window",items:[{id:"blender-save-screenshot-editor",label:"Save Screenshot (Editor)…",testId:"menu-save-screenshot-editor",execute:async()=>{const e=s(),t=await e.documents.captureActive();n(t.base64);const o=`screenshots/screenshot-${new Date().toISOString().replace(/[:.]/g,"-")}.png`;await e.files.write(o,Uint8Array.from(atob(t.base64),r=>r.charCodeAt(0))),e.console.log(`Saved the screenshot to ${o}.`,"blender-screenshot")}}]};export{b as menu,w as point};
@@ -1 +1 @@
1
- import{a}from"./jsx-runtime-DPjLkJKQ.js";import{s as ae,b as L,a as p,c as he}from"./blender-runtime-skin-CPgzavkZ.js";import{go as pe}from"./index-Cjv2Ynte.js";import{r as f}from"./index-nmcBqr7Y.js";import{s as ye,b as Q,g as ge,i as xe}from"./blender-runtime-host-B63tuG7j.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./LineSegments2-DN9pUfWA.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-D_jbMNmm.js";import"./hierarchy-marks-sMK9R4NU.js";import"./workspace-arrangement-Bq8u7HUK.js";const we={transform:{startFrame:-5,pixelsPerFrame:8},refusal:null,size:{w:0,h:0},framedAt:0,drawn:null,onlySelected:!0};let P=we,W=0;const H=new Set;let oe=0;function M(){return P}function _(){return W}function K(e){return H.add(e),()=>{H.delete(e)}}function k(e){P={...P,...e},W+=1;for(const s of[...H])s()}function be(e){P.onlySelected!==e&&k({onlySelected:e})}function le(){oe+=1,W+=1;for(const e of[...H])e()}function Ee(){return oe}function G(e){k({refusal:e})}const Te=20,v=23,ee=26,ve=16,Me=2,ke=v+Me,te=35,Se=6;function ce(e){const s=[2,3,5],o=[];for(let r=0;r<s.length;r++){const n=s[r],i=Math.trunc(e/n),c=i*n===e;if(c&&i===2)return n;o[r]=c}for(let r=0;r<s.length;r++)if(o[r])return s[r];return e}function je(e,s,o,r){if(o===0)return 1;const n=s/o;let i=Math.max(e,1);if(n*i>r)for(;i>1;){const c=ce(i),l=Math.trunc(i/c);if(n*l<r)break;i=l}else for(;n*i<r&&i<1<<30;)i*=2;return i}function Fe(e){return e<=1?null:e/ce(Math.round(e))}const x={back:"#303030",header:"#303030",grid:"#161616",gridMinor:"#262626",scrubBack:"#1d1d1d",scrubText:"#808080",playhead:"#4772b3",playheadText:"#ffffff",keyBorder:"#000000"},re={KEYFRAME:{fill:"#bfbfbf",selected:"#ffbe33"},EXTREME:{fill:"#e8b3cc",selected:"#f28080"},BREAKDOWN:{fill:"#b3dbe8",selected:"#54bfed"},JITTER:{fill:"#94e575",selected:"#61c042"},MOVING_HOLD:{fill:"#808080",selected:"#ffaf23"},GENERATED:{fill:"#585858",selected:"#a28962"}},Ne={KEYFRAME:1,EXTREME:1.2,MOVING_HOLD:.925,BREAKDOWN:.85,JITTER:.8,GENERATED:.75},ne=5.06,Ae=2.12,_e=15,g={minPillWidth:24,textPadding:4,margin:2,radius:4,tipHalfWidth:6,tipHeight:6,stalkWidth:3},ie="#212121",d={text:"#a6a6a6",rule:"#161616",widget:"#545454",widgetText:"#e6e6e6",widgetOutline:"#3d3d3d",widgetRadius:4,unit:Te,refusal:"#ffaf23",headerPadding:"0 8px",headerGap:8,statusPadding:"2px 8px"},lt="workspace.document",Re="Timeline",de=.25,me=200,B={"set-range":"Setting the frame range writes `scene.frame_start`/`frame_end`, which the document would save. This is Blender's Timeline as an INSPECTION surface: the range is drawn, never set. Change it in bpy and the Timeline re-reads it.","insert-key":"Inserting a keyframe writes the action. Editing parity is not the program — key it in bpy (`pose_bone.keyframe_insert`) and the Timeline re-reads the action on the next present.","move-key":"Moving a keyframe writes the F-Curve's control points. The summary row draws the keys the action HAS; the Dope Sheet that would move them is the Animation workspace's, and it is not built.","delete-key":"Deleting a keyframe writes the action. Editing parity is not the program.","set-interpolation":"Setting a key's interpolation writes the F-Curve. Note also that this view PLAYS a per-frame bake (`rna_action_clip`), so interpolation is not a thing it reads back.","select-key":"Selecting a keyframe writes `Keyframe.select_control_point`. The view draws the flags the data carries — a selected key takes `.common.anim.keyframe_selected` — and changes none of them."},z="No scene transport is attached yet; open the model document first.";function h(){return p.transport}function V(){return h()?.snapshot().playbackState==="playing"}function $(e){return G(e),T()}const se={JITTER:1,GENERATED:2,MOVING_HOLD:3,BREAKDOWN:4,KEYFRAME:5,EXTREME:6};function ue(e,s){const o=[],r=new Map;for(const n of e)if(!(s&&!n.selected)){o.push(n.object);for(const i of n.keyframes){const c=r.get(i.frame);if(!c){r.set(i.frame,{...i});continue}c.select=c.select||i.select,(se[i.type]??0)>(se[c.type]??0)&&(c.type=i.type)}}return{columns:[...r.values()].sort((n,i)=>n.frame-i.frame),objects:o}}function D(){return ue(p.state().summary,M().onlySelected).columns.map(e=>e.frame)}function T(){const e=M();return{...p.state(),transform:e.transform,size:e.size,refusal:e.refusal,drawn:e.drawn}}function O(e){if(!p.playable)return $(z);const s=h();return s?(s.seekFrame(e),T()):$("No stage transport is attached yet; open the model document first.")}pe({view:"timeline",title:Re,verbs:[{id:"state",run:()=>T()},{id:"frame",title:"Timeline: Set Frame",run:e=>{const s=Number(e?.frame??e?.to);if(!Number.isFinite(s))throw new Error("frame needs a numeric `frame` — a Blender frame number.");return O(s)}},{id:"play",title:"Timeline: Play",run:()=>{if(!p.playable)throw new Error(z);const e=h();if(!e)throw new Error("No stage transport is attached yet; open the model document first.");return e.play(),T()}},{id:"pause",title:"Timeline: Pause",run:()=>{const e=h();return e?(e.pause(),T()):$("No stage transport is attached yet.")}},{id:"jump-start",title:"Timeline: Jump to Start",run:()=>O(p.state().start)},{id:"jump-end",title:"Timeline: Jump to End",run:()=>O(p.state().end)},{id:"next-keyframe",title:"Timeline: Next Keyframe",run:()=>{const e=p.frame(),s=D().find(o=>o>e+1e-4);return s===void 0?T():O(s)}},{id:"prev-keyframe",title:"Timeline: Previous Keyframe",run:()=>{const e=p.frame(),s=D().reverse().find(o=>o<e-1e-4);return s===void 0?T():O(s)}},{id:"view-all",title:"Timeline: View All",run:()=>(le(),T())},{id:"zoom",title:"Timeline: Zoom",run:e=>{const s=Number(e?.to??e?.zoom);if(!Number.isFinite(s))throw new Error("zoom needs a numeric `to` — CSS pixels per frame, 0.25 … 200.");const{transform:o,size:r}=M(),n=o.startFrame+r.w/2/o.pixelsPerFrame,i=Math.min(me,Math.max(de,s));return k({transform:{pixelsPerFrame:i,startFrame:n-r.w/2/i}}),T()}},{id:"pan",title:"Timeline: Pan",run:e=>{const s=Number(e?.frames??0);if(!Number.isFinite(s))throw new Error("pan needs a numeric `frames`.");const{transform:o}=M();return k({transform:{...o,startFrame:o.startFrame+s}}),T()}},...Object.keys(B).map(e=>({id:e,run:()=>$(B[e])}))]});function ct(){const e=f.useSyncExternalStore(ye,Q,Q);f.useSyncExternalStore(ae,L,L),f.useSyncExternalStore(K,_,_);const s=f.useRef(null),o=f.useRef(-1),{transform:r,size:n,refusal:i,onlySelected:c}=M(),l=p.state();f.useEffect(()=>{let t=!0;return p.bind(he,{rig:()=>xe(),clip:()=>ge()}).catch(m=>{t&&G(`The Timeline could not read this file's rig: ${m instanceof Error?m.message:String(m)}`)}),()=>{t=!1}},[e]),f.useEffect(()=>{const t=s.current;if(!t)return;const m=new ResizeObserver(()=>{const u={w:t.clientWidth,h:t.clientHeight},y=M().size;(y.w!==u.w||y.h!==u.h)&&k({size:u})});return m.observe(t),k({size:{w:t.clientWidth,h:t.clientHeight}}),()=>m.disconnect()},[]);const S=Ee();f.useEffect(()=>{if(S===o.current)return;o.current=S;const{w:t}=M().size;if(t===0)return;const m=Math.max(1,l.end-l.start),u=Math.min(me,Math.max(de,t*.9/m));k({transform:{pixelsPerFrame:u,startFrame:l.start-t*.05/u},framedAt:Date.now()})},[S,l.start,l.end]);const b=f.useCallback(t=>(t-r.startFrame)*r.pixelsPerFrame,[r]),Y=f.useCallback(t=>r.startFrame+t/r.pixelsPerFrame,[r]),F=f.useMemo(()=>ue(l.summary,c),[l.summary,c]),E=f.useMemo(()=>{if(n.w===0)return null;const t=n.w/r.pixelsPerFrame,m=Math.max(`${Math.round(r.startFrame)}`.length,`${Math.round(r.startFrame+t)}`.length),u=Math.max(te,m*6+Se),y=je(Math.round(l.fps),n.w+1,t,u),w=Fe(y),fe=Math.ceil(r.startFrame/y)*y,Z=[];for(let R=fe;R<=r.startFrame+t;R+=y)Z.push(R);const q=[];if(w!==null&&w*r.pixelsPerFrame>=te/5){const R=Math.ceil(r.startFrame/w)*w;for(let I=R;I<=r.startFrame+t;I+=w)Math.abs(I/y-Math.round(I/y))>1e-6&&q.push(I)}return{major:y,minor:w,majors:Z,minors:q}},[n.w,r,l.fps]),N=v,j=ke+ve/2;f.useEffect(()=>{if(!E)return;const t=[...l.warnings];l.action||t.push("Nothing in this file carries an action, so the summary row is empty — which is Blender's own empty state for a Timeline over a still file."),t.push("While a clip plays, the picture is three.js evaluating the skin over the mesh columns Blender exported at the BIND frame. Anything else Blender would re-evaluate per frame — shape keys, a Displace or Cloth modifier reading the frame, a geometry driver — does not follow the playhead."),t.push("Blender puts this view's ONLY-SHOW-SELECTED toggle in the Timeline header's View MENU (`TIME_MT_view`'s `layout.prop(scene, \"show_keys_from_selected_only\")`, `space_time.py`); this header has no menu region, so the same toggle is drawn as a header button at the leading edge, where that menu sits. The filter itself is Blender's — `ADS_FILTER_ONLYSEL`, `anim_filter.cc:254-270`, tested per object at `:2307`."),c&&F.objects.length===0&&l.summary.length>0&&t.push(`The summary row is empty because nothing animated is SELECTED, which is Blender's own answer with this filter on. ${l.summary.map(u=>u.object).join(", ")} carr${l.summary.length===1?"ies":"y"} an action; select it, or turn the filter off.`),t.push("Markers, the cache bar and the preview range are drawn by Blender's Timeline and not here; the door carries none of them.");const m={drawn:{action:l.action,object:l.object,armature:l.armature,frame:l.frame,start:l.start,end:l.end,fps:l.fps,playing:V(),keyframes:F.columns.map(u=>u.frame),onlySelected:c,summaryObjects:F.objects,majorStep:E.major,minorStep:E.minor,majorLines:E.majors.length,minorLines:E.minors.length,labels:E.majors.length,diamonds:F.columns.length,diamondRadius:ne,diamondSprite:_e,bones:l.bones,tracks:l.tracks,engineCalls:l.engineCalls,warnings:t}};JSON.stringify(m.drawn)!==JSON.stringify(M().drawn)&&k(m)},[E,l,F,c]);const C=f.useRef(!1),J=f.useCallback(t=>{const m=s.current;if(!m)return;const u=m.getBoundingClientRect();h()?.seekFrame(Math.round(Y(t-u.left)))},[Y]),U=`${Math.round(l.frame)}`,X=Math.max(g.minPillWidth,U.length*6+2*g.textPadding),A=b(l.frame);return a.jsxs("div",{"data-testid":"blender-timeline",style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",overflow:"hidden",background:x.back,color:d.text,font:"11px Inter, system-ui, sans-serif"},children:[a.jsx(Oe,{}),a.jsx("div",{ref:s,style:{flex:1,minHeight:0,position:"relative"},children:a.jsxs("svg",{width:n.w,height:n.h,style:{display:"block",cursor:"ew-resize"},"aria-label":"Timeline",onPointerDown:t=>{C.current=!0,t.currentTarget.setPointerCapture(t.pointerId),J(t.clientX)},onPointerMove:t=>{C.current&&J(t.clientX)},onPointerUp:t=>{C.current=!1,t.currentTarget.releasePointerCapture(t.pointerId)},children:[a.jsx("title",{children:"Timeline"}),a.jsx("rect",{x:0,y:0,width:n.w,height:n.h,fill:x.back}),a.jsx("rect",{x:0,y:N,width:Math.max(0,b(l.start)),height:Math.max(0,n.h-N),fill:ie}),a.jsx("rect",{x:b(l.end),y:N,width:Math.max(0,n.w-b(l.end)),height:Math.max(0,n.h-N),fill:ie}),E?.minors.map(t=>a.jsx("line",{x1:b(t),y1:N,x2:b(t),y2:n.h,stroke:x.gridMinor,strokeWidth:1},`n${t}`)),E?.majors.map(t=>a.jsx("line",{x1:b(t),y1:N,x2:b(t),y2:n.h,stroke:x.grid,strokeWidth:1},`m${t}`)),a.jsx("rect",{x:0,y:0,width:n.w,height:v,fill:x.scrubBack}),E?.majors.map(t=>a.jsx("text",{x:b(t),y:15.5,textAnchor:"middle",fill:x.scrubText,fontSize:11,children:Math.round(t)},`t${t}`)),a.jsx("path",{d:`M3,${j-3.5} L6.5,${j} L3,${j+3.5} Z`,fill:x.scrubText}),F.columns.map(t=>{const m=Ne[t.type]??1,u=ne*m,y=re[t.type]??re.KEYFRAME,w=b(t.frame);return a.jsx("polygon",{points:`${w},${j-u} ${w+u},${j} ${w},${j+u} ${w-u},${j}`,fill:t.select?y.selected:y.fill,stroke:x.keyBorder,strokeWidth:Ae*m},`k${t.frame}`)}),a.jsx("rect",{x:A-g.stalkWidth/2,y:v,width:g.stalkWidth,height:Math.max(0,n.h-v),fill:x.playhead}),a.jsx("rect",{x:A-X/2,y:g.margin,width:X,height:v-2*g.margin,rx:g.radius,fill:x.playhead}),a.jsx("polygon",{points:`${A-g.tipHalfWidth},${v-g.margin} ${A+g.tipHalfWidth},${v-g.margin} ${A},${v-g.margin+g.tipHeight}`,fill:x.playhead}),a.jsx("text",{x:A,y:15.5,textAnchor:"middle",fill:x.playheadText,fontSize:11,children:U})]})}),i?a.jsx("div",{style:{borderTop:`1px solid ${d.rule}`,padding:d.statusPadding,color:d.refusal},children:i}):null]})}function Ie(){f.useSyncExternalStore(K,_,_);const{onlySelected:e}=M(),[s,o]=f.useState(!1),r=(n,i,c)=>a.jsxs("button",{type:"button",onClick:()=>{c(),o(!1)},style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",width:"100%",padding:"var(--volter-space-1) var(--volter-space-3)",border:"none",background:"transparent",color:d.widgetText,font:"inherit",textAlign:"left",cursor:"pointer"},children:[a.jsx("span",{style:{width:12,display:"inline-block"},children:i===null?"":i?"✓":""}),n]});return a.jsxs("span",{style:{position:"relative"},children:[a.jsx("button",{type:"button","aria-haspopup":"menu","aria-expanded":s,onClick:()=>o(n=>!n),style:{border:"none",background:"transparent",color:d.text,font:"inherit",padding:"0 var(--volter-space-2)",cursor:"pointer"},children:"View"}),s?a.jsxs("span",{role:"menu",style:{position:"absolute",top:"100%",left:0,zIndex:20,minWidth:210,display:"flex",flexDirection:"column",background:d.widget,border:`1px solid ${d.widgetOutline}`,boxShadow:"0 6px 18px rgba(0,0,0,0.45)"},children:[r("Only Show Selected",e,()=>be(!e)),r("Frame All",null,()=>le())]}):null]})}function Oe(){f.useSyncExternalStore(ae,L,L),f.useSyncExternalStore(K,_,_);const e=p.state(),s=d.unit,o=p.playable,r=(i,c,l,S)=>a.jsx("button",{type:"button",title:o?S:`${S} — ${z}`,"aria-label":S,disabled:!o,onClick:l,style:{width:s,height:s,padding:0,border:`1px solid ${d.widgetOutline}`,background:d.widget,color:d.widgetText,display:"grid",placeItems:"center",cursor:o?"pointer":"not-allowed",opacity:o?1:.4},children:c},i),n=i=>a.jsx("svg",{width:12,height:12,viewBox:"0 0 12 12","aria-hidden":"true",children:a.jsx("path",{d:i,fill:d.widgetText})});return a.jsxs("div",{style:{height:ee,flex:`0 0 ${ee}px`,display:"flex",alignItems:"center",gap:d.headerGap,padding:d.headerPadding,background:x.header,borderBottom:`1px solid ${d.rule}`},children:[a.jsx("span",{style:{color:d.text},children:"Timeline"}),a.jsx(Ie,{}),a.jsx("div",{style:{flex:1}}),a.jsxs("div",{style:{display:"flex"},children:[r("jump-start",n("M2 2h1.5v8H2zM10 2v8L4.5 6z"),()=>h()?.seekFrame(e.start),"Jump to Start"),r("prev-key",n("M5 2.5v7L1.5 6zM8.5 3.2L11 6L8.5 8.8L6 6z"),()=>{const i=D().reverse().find(c=>c<p.frame()-1e-4);i!==void 0&&h()?.seekFrame(i)},"Jump to Previous Keyframe"),o&&V()?r("pause-rev",n("M3 2h2v8H3zM7 2h2v8H7z"),()=>h()?.pause(),"Pause"):r("play-reverse",n("M9 2L2 6l7 4z"),()=>h()?.play("reverse"),"Play Reverse"),o&&V()?r("pause",n("M3 2h2v8H3zM7 2h2v8H7z"),()=>h()?.pause(),"Pause"):r("play",n("M3 2l7 4-7 4z"),()=>h()?.play(),"Play"),r("next-key",n("M7 2.5v7L10.5 6zM3.5 3.2L6 6L3.5 8.8L1 6z"),()=>{const i=D().find(c=>c>p.frame()+1e-4);i!==void 0&&h()?.seekFrame(i)},"Jump to Next Keyframe"),r("jump-end",n("M10 2H8.5v8H10zM2 2v8L7.5 6z"),()=>h()?.seekFrame(e.end),"Jump to End")]}),a.jsxs("div",{style:{display:"flex"},children:[r("step-back",n("M2 2h1.5v8H2zM9.5 2v8L4.5 6z"),()=>h()?.seekFrame(Math.round(e.frame)-1),"Step Back One Frame"),r("step-forward",n("M10 2H8.5v8H10zM2.5 2v8L7.5 6z"),()=>h()?.seekFrame(Math.round(e.frame)+1),"Step Forward One Frame")]}),a.jsx("div",{style:{flex:1}}),a.jsx("input",{type:"number",value:Math.round(e.frame),onChange:i=>{const c=Number(i.target.value);Number.isFinite(c)&&h()?.seekFrame(c)},"aria-label":"Current frame",disabled:!o,title:o?void 0:z,style:{width:75,height:s,textAlign:"center",border:`1px solid ${d.widgetOutline}`,borderRadius:d.widgetRadius,background:d.widget,color:d.widgetText,font:"inherit",cursor:o?"text":"not-allowed",opacity:o?1:.4}}),a.jsxs("span",{onClick:()=>G(B["set-range"]),onKeyDown:()=>{},style:{color:d.text,cursor:"not-allowed"},children:["Start ",e.start," · End ",e.end]})]})}export{ct as default,lt as point,Re as title};
1
+ import{a}from"./jsx-runtime-DPjLkJKQ.js";import{s as ae,b as L,a as p,c as he}from"./blender-runtime-skin-hw-op7Nt.js";import{go as pe}from"./index-ClgrFOcX.js";import{r as f}from"./index-nmcBqr7Y.js";import{s as ye,b as Q,g as ge,i as xe}from"./blender-runtime-host-MJZEPwHA.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./LineSegments2-DN9pUfWA.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-Dl5Y3LLv.js";import"./hierarchy-marks-DeG4E4Ke.js";import"./workspace-arrangement-86_8Kk5K.js";const we={transform:{startFrame:-5,pixelsPerFrame:8},refusal:null,size:{w:0,h:0},framedAt:0,drawn:null,onlySelected:!0};let P=we,W=0;const H=new Set;let oe=0;function M(){return P}function _(){return W}function K(e){return H.add(e),()=>{H.delete(e)}}function k(e){P={...P,...e},W+=1;for(const s of[...H])s()}function be(e){P.onlySelected!==e&&k({onlySelected:e})}function le(){oe+=1,W+=1;for(const e of[...H])e()}function Ee(){return oe}function G(e){k({refusal:e})}const Te=20,v=23,ee=26,ve=16,Me=2,ke=v+Me,te=35,Se=6;function ce(e){const s=[2,3,5],o=[];for(let r=0;r<s.length;r++){const n=s[r],i=Math.trunc(e/n),c=i*n===e;if(c&&i===2)return n;o[r]=c}for(let r=0;r<s.length;r++)if(o[r])return s[r];return e}function je(e,s,o,r){if(o===0)return 1;const n=s/o;let i=Math.max(e,1);if(n*i>r)for(;i>1;){const c=ce(i),l=Math.trunc(i/c);if(n*l<r)break;i=l}else for(;n*i<r&&i<1<<30;)i*=2;return i}function Fe(e){return e<=1?null:e/ce(Math.round(e))}const x={back:"#303030",header:"#303030",grid:"#161616",gridMinor:"#262626",scrubBack:"#1d1d1d",scrubText:"#808080",playhead:"#4772b3",playheadText:"#ffffff",keyBorder:"#000000"},re={KEYFRAME:{fill:"#bfbfbf",selected:"#ffbe33"},EXTREME:{fill:"#e8b3cc",selected:"#f28080"},BREAKDOWN:{fill:"#b3dbe8",selected:"#54bfed"},JITTER:{fill:"#94e575",selected:"#61c042"},MOVING_HOLD:{fill:"#808080",selected:"#ffaf23"},GENERATED:{fill:"#585858",selected:"#a28962"}},Ne={KEYFRAME:1,EXTREME:1.2,MOVING_HOLD:.925,BREAKDOWN:.85,JITTER:.8,GENERATED:.75},ne=5.06,Ae=2.12,_e=15,g={minPillWidth:24,textPadding:4,margin:2,radius:4,tipHalfWidth:6,tipHeight:6,stalkWidth:3},ie="#212121",d={text:"#a6a6a6",rule:"#161616",widget:"#545454",widgetText:"#e6e6e6",widgetOutline:"#3d3d3d",widgetRadius:4,unit:Te,refusal:"#ffaf23",headerPadding:"0 8px",headerGap:8,statusPadding:"2px 8px"},lt="workspace.document",Re="Timeline",de=.25,me=200,B={"set-range":"Setting the frame range writes `scene.frame_start`/`frame_end`, which the document would save. This is Blender's Timeline as an INSPECTION surface: the range is drawn, never set. Change it in bpy and the Timeline re-reads it.","insert-key":"Inserting a keyframe writes the action. Editing parity is not the program — key it in bpy (`pose_bone.keyframe_insert`) and the Timeline re-reads the action on the next present.","move-key":"Moving a keyframe writes the F-Curve's control points. The summary row draws the keys the action HAS; the Dope Sheet that would move them is the Animation workspace's, and it is not built.","delete-key":"Deleting a keyframe writes the action. Editing parity is not the program.","set-interpolation":"Setting a key's interpolation writes the F-Curve. Note also that this view PLAYS a per-frame bake (`rna_action_clip`), so interpolation is not a thing it reads back.","select-key":"Selecting a keyframe writes `Keyframe.select_control_point`. The view draws the flags the data carries — a selected key takes `.common.anim.keyframe_selected` — and changes none of them."},z="No scene transport is attached yet; open the model document first.";function h(){return p.transport}function V(){return h()?.snapshot().playbackState==="playing"}function $(e){return G(e),T()}const se={JITTER:1,GENERATED:2,MOVING_HOLD:3,BREAKDOWN:4,KEYFRAME:5,EXTREME:6};function ue(e,s){const o=[],r=new Map;for(const n of e)if(!(s&&!n.selected)){o.push(n.object);for(const i of n.keyframes){const c=r.get(i.frame);if(!c){r.set(i.frame,{...i});continue}c.select=c.select||i.select,(se[i.type]??0)>(se[c.type]??0)&&(c.type=i.type)}}return{columns:[...r.values()].sort((n,i)=>n.frame-i.frame),objects:o}}function D(){return ue(p.state().summary,M().onlySelected).columns.map(e=>e.frame)}function T(){const e=M();return{...p.state(),transform:e.transform,size:e.size,refusal:e.refusal,drawn:e.drawn}}function O(e){if(!p.playable)return $(z);const s=h();return s?(s.seekFrame(e),T()):$("No stage transport is attached yet; open the model document first.")}pe({view:"timeline",title:Re,verbs:[{id:"state",run:()=>T()},{id:"frame",title:"Timeline: Set Frame",run:e=>{const s=Number(e?.frame??e?.to);if(!Number.isFinite(s))throw new Error("frame needs a numeric `frame` — a Blender frame number.");return O(s)}},{id:"play",title:"Timeline: Play",run:()=>{if(!p.playable)throw new Error(z);const e=h();if(!e)throw new Error("No stage transport is attached yet; open the model document first.");return e.play(),T()}},{id:"pause",title:"Timeline: Pause",run:()=>{const e=h();return e?(e.pause(),T()):$("No stage transport is attached yet.")}},{id:"jump-start",title:"Timeline: Jump to Start",run:()=>O(p.state().start)},{id:"jump-end",title:"Timeline: Jump to End",run:()=>O(p.state().end)},{id:"next-keyframe",title:"Timeline: Next Keyframe",run:()=>{const e=p.frame(),s=D().find(o=>o>e+1e-4);return s===void 0?T():O(s)}},{id:"prev-keyframe",title:"Timeline: Previous Keyframe",run:()=>{const e=p.frame(),s=D().reverse().find(o=>o<e-1e-4);return s===void 0?T():O(s)}},{id:"view-all",title:"Timeline: View All",run:()=>(le(),T())},{id:"zoom",title:"Timeline: Zoom",run:e=>{const s=Number(e?.to??e?.zoom);if(!Number.isFinite(s))throw new Error("zoom needs a numeric `to` — CSS pixels per frame, 0.25 … 200.");const{transform:o,size:r}=M(),n=o.startFrame+r.w/2/o.pixelsPerFrame,i=Math.min(me,Math.max(de,s));return k({transform:{pixelsPerFrame:i,startFrame:n-r.w/2/i}}),T()}},{id:"pan",title:"Timeline: Pan",run:e=>{const s=Number(e?.frames??0);if(!Number.isFinite(s))throw new Error("pan needs a numeric `frames`.");const{transform:o}=M();return k({transform:{...o,startFrame:o.startFrame+s}}),T()}},...Object.keys(B).map(e=>({id:e,run:()=>$(B[e])}))]});function ct(){const e=f.useSyncExternalStore(ye,Q,Q);f.useSyncExternalStore(ae,L,L),f.useSyncExternalStore(K,_,_);const s=f.useRef(null),o=f.useRef(-1),{transform:r,size:n,refusal:i,onlySelected:c}=M(),l=p.state();f.useEffect(()=>{let t=!0;return p.bind(he,{rig:()=>xe(),clip:()=>ge()}).catch(m=>{t&&G(`The Timeline could not read this file's rig: ${m instanceof Error?m.message:String(m)}`)}),()=>{t=!1}},[e]),f.useEffect(()=>{const t=s.current;if(!t)return;const m=new ResizeObserver(()=>{const u={w:t.clientWidth,h:t.clientHeight},y=M().size;(y.w!==u.w||y.h!==u.h)&&k({size:u})});return m.observe(t),k({size:{w:t.clientWidth,h:t.clientHeight}}),()=>m.disconnect()},[]);const S=Ee();f.useEffect(()=>{if(S===o.current)return;o.current=S;const{w:t}=M().size;if(t===0)return;const m=Math.max(1,l.end-l.start),u=Math.min(me,Math.max(de,t*.9/m));k({transform:{pixelsPerFrame:u,startFrame:l.start-t*.05/u},framedAt:Date.now()})},[S,l.start,l.end]);const b=f.useCallback(t=>(t-r.startFrame)*r.pixelsPerFrame,[r]),Y=f.useCallback(t=>r.startFrame+t/r.pixelsPerFrame,[r]),F=f.useMemo(()=>ue(l.summary,c),[l.summary,c]),E=f.useMemo(()=>{if(n.w===0)return null;const t=n.w/r.pixelsPerFrame,m=Math.max(`${Math.round(r.startFrame)}`.length,`${Math.round(r.startFrame+t)}`.length),u=Math.max(te,m*6+Se),y=je(Math.round(l.fps),n.w+1,t,u),w=Fe(y),fe=Math.ceil(r.startFrame/y)*y,Z=[];for(let R=fe;R<=r.startFrame+t;R+=y)Z.push(R);const q=[];if(w!==null&&w*r.pixelsPerFrame>=te/5){const R=Math.ceil(r.startFrame/w)*w;for(let I=R;I<=r.startFrame+t;I+=w)Math.abs(I/y-Math.round(I/y))>1e-6&&q.push(I)}return{major:y,minor:w,majors:Z,minors:q}},[n.w,r,l.fps]),N=v,j=ke+ve/2;f.useEffect(()=>{if(!E)return;const t=[...l.warnings];l.action||t.push("Nothing in this file carries an action, so the summary row is empty — which is Blender's own empty state for a Timeline over a still file."),t.push("While a clip plays, the picture is three.js evaluating the skin over the mesh columns Blender exported at the BIND frame. Anything else Blender would re-evaluate per frame — shape keys, a Displace or Cloth modifier reading the frame, a geometry driver — does not follow the playhead."),t.push("Blender puts this view's ONLY-SHOW-SELECTED toggle in the Timeline header's View MENU (`TIME_MT_view`'s `layout.prop(scene, \"show_keys_from_selected_only\")`, `space_time.py`); this header has no menu region, so the same toggle is drawn as a header button at the leading edge, where that menu sits. The filter itself is Blender's — `ADS_FILTER_ONLYSEL`, `anim_filter.cc:254-270`, tested per object at `:2307`."),c&&F.objects.length===0&&l.summary.length>0&&t.push(`The summary row is empty because nothing animated is SELECTED, which is Blender's own answer with this filter on. ${l.summary.map(u=>u.object).join(", ")} carr${l.summary.length===1?"ies":"y"} an action; select it, or turn the filter off.`),t.push("Markers, the cache bar and the preview range are drawn by Blender's Timeline and not here; the door carries none of them.");const m={drawn:{action:l.action,object:l.object,armature:l.armature,frame:l.frame,start:l.start,end:l.end,fps:l.fps,playing:V(),keyframes:F.columns.map(u=>u.frame),onlySelected:c,summaryObjects:F.objects,majorStep:E.major,minorStep:E.minor,majorLines:E.majors.length,minorLines:E.minors.length,labels:E.majors.length,diamonds:F.columns.length,diamondRadius:ne,diamondSprite:_e,bones:l.bones,tracks:l.tracks,engineCalls:l.engineCalls,warnings:t}};JSON.stringify(m.drawn)!==JSON.stringify(M().drawn)&&k(m)},[E,l,F,c]);const C=f.useRef(!1),J=f.useCallback(t=>{const m=s.current;if(!m)return;const u=m.getBoundingClientRect();h()?.seekFrame(Math.round(Y(t-u.left)))},[Y]),U=`${Math.round(l.frame)}`,X=Math.max(g.minPillWidth,U.length*6+2*g.textPadding),A=b(l.frame);return a.jsxs("div",{"data-testid":"blender-timeline",style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",overflow:"hidden",background:x.back,color:d.text,font:"11px Inter, system-ui, sans-serif"},children:[a.jsx(Oe,{}),a.jsx("div",{ref:s,style:{flex:1,minHeight:0,position:"relative"},children:a.jsxs("svg",{width:n.w,height:n.h,style:{display:"block",cursor:"ew-resize"},"aria-label":"Timeline",onPointerDown:t=>{C.current=!0,t.currentTarget.setPointerCapture(t.pointerId),J(t.clientX)},onPointerMove:t=>{C.current&&J(t.clientX)},onPointerUp:t=>{C.current=!1,t.currentTarget.releasePointerCapture(t.pointerId)},children:[a.jsx("title",{children:"Timeline"}),a.jsx("rect",{x:0,y:0,width:n.w,height:n.h,fill:x.back}),a.jsx("rect",{x:0,y:N,width:Math.max(0,b(l.start)),height:Math.max(0,n.h-N),fill:ie}),a.jsx("rect",{x:b(l.end),y:N,width:Math.max(0,n.w-b(l.end)),height:Math.max(0,n.h-N),fill:ie}),E?.minors.map(t=>a.jsx("line",{x1:b(t),y1:N,x2:b(t),y2:n.h,stroke:x.gridMinor,strokeWidth:1},`n${t}`)),E?.majors.map(t=>a.jsx("line",{x1:b(t),y1:N,x2:b(t),y2:n.h,stroke:x.grid,strokeWidth:1},`m${t}`)),a.jsx("rect",{x:0,y:0,width:n.w,height:v,fill:x.scrubBack}),E?.majors.map(t=>a.jsx("text",{x:b(t),y:15.5,textAnchor:"middle",fill:x.scrubText,fontSize:11,children:Math.round(t)},`t${t}`)),a.jsx("path",{d:`M3,${j-3.5} L6.5,${j} L3,${j+3.5} Z`,fill:x.scrubText}),F.columns.map(t=>{const m=Ne[t.type]??1,u=ne*m,y=re[t.type]??re.KEYFRAME,w=b(t.frame);return a.jsx("polygon",{points:`${w},${j-u} ${w+u},${j} ${w},${j+u} ${w-u},${j}`,fill:t.select?y.selected:y.fill,stroke:x.keyBorder,strokeWidth:Ae*m},`k${t.frame}`)}),a.jsx("rect",{x:A-g.stalkWidth/2,y:v,width:g.stalkWidth,height:Math.max(0,n.h-v),fill:x.playhead}),a.jsx("rect",{x:A-X/2,y:g.margin,width:X,height:v-2*g.margin,rx:g.radius,fill:x.playhead}),a.jsx("polygon",{points:`${A-g.tipHalfWidth},${v-g.margin} ${A+g.tipHalfWidth},${v-g.margin} ${A},${v-g.margin+g.tipHeight}`,fill:x.playhead}),a.jsx("text",{x:A,y:15.5,textAnchor:"middle",fill:x.playheadText,fontSize:11,children:U})]})}),i?a.jsx("div",{style:{borderTop:`1px solid ${d.rule}`,padding:d.statusPadding,color:d.refusal},children:i}):null]})}function Ie(){f.useSyncExternalStore(K,_,_);const{onlySelected:e}=M(),[s,o]=f.useState(!1),r=(n,i,c)=>a.jsxs("button",{type:"button",onClick:()=>{c(),o(!1)},style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",width:"100%",padding:"var(--volter-space-1) var(--volter-space-3)",border:"none",background:"transparent",color:d.widgetText,font:"inherit",textAlign:"left",cursor:"pointer"},children:[a.jsx("span",{style:{width:12,display:"inline-block"},children:i===null?"":i?"✓":""}),n]});return a.jsxs("span",{style:{position:"relative"},children:[a.jsx("button",{type:"button","aria-haspopup":"menu","aria-expanded":s,onClick:()=>o(n=>!n),style:{border:"none",background:"transparent",color:d.text,font:"inherit",padding:"0 var(--volter-space-2)",cursor:"pointer"},children:"View"}),s?a.jsxs("span",{role:"menu",style:{position:"absolute",top:"100%",left:0,zIndex:20,minWidth:210,display:"flex",flexDirection:"column",background:d.widget,border:`1px solid ${d.widgetOutline}`,boxShadow:"0 6px 18px rgba(0,0,0,0.45)"},children:[r("Only Show Selected",e,()=>be(!e)),r("Frame All",null,()=>le())]}):null]})}function Oe(){f.useSyncExternalStore(ae,L,L),f.useSyncExternalStore(K,_,_);const e=p.state(),s=d.unit,o=p.playable,r=(i,c,l,S)=>a.jsx("button",{type:"button",title:o?S:`${S} — ${z}`,"aria-label":S,disabled:!o,onClick:l,style:{width:s,height:s,padding:0,border:`1px solid ${d.widgetOutline}`,background:d.widget,color:d.widgetText,display:"grid",placeItems:"center",cursor:o?"pointer":"not-allowed",opacity:o?1:.4},children:c},i),n=i=>a.jsx("svg",{width:12,height:12,viewBox:"0 0 12 12","aria-hidden":"true",children:a.jsx("path",{d:i,fill:d.widgetText})});return a.jsxs("div",{style:{height:ee,flex:`0 0 ${ee}px`,display:"flex",alignItems:"center",gap:d.headerGap,padding:d.headerPadding,background:x.header,borderBottom:`1px solid ${d.rule}`},children:[a.jsx("span",{style:{color:d.text},children:"Timeline"}),a.jsx(Ie,{}),a.jsx("div",{style:{flex:1}}),a.jsxs("div",{style:{display:"flex"},children:[r("jump-start",n("M2 2h1.5v8H2zM10 2v8L4.5 6z"),()=>h()?.seekFrame(e.start),"Jump to Start"),r("prev-key",n("M5 2.5v7L1.5 6zM8.5 3.2L11 6L8.5 8.8L6 6z"),()=>{const i=D().reverse().find(c=>c<p.frame()-1e-4);i!==void 0&&h()?.seekFrame(i)},"Jump to Previous Keyframe"),o&&V()?r("pause-rev",n("M3 2h2v8H3zM7 2h2v8H7z"),()=>h()?.pause(),"Pause"):r("play-reverse",n("M9 2L2 6l7 4z"),()=>h()?.play("reverse"),"Play Reverse"),o&&V()?r("pause",n("M3 2h2v8H3zM7 2h2v8H7z"),()=>h()?.pause(),"Pause"):r("play",n("M3 2l7 4-7 4z"),()=>h()?.play(),"Play"),r("next-key",n("M7 2.5v7L10.5 6zM3.5 3.2L6 6L3.5 8.8L1 6z"),()=>{const i=D().find(c=>c>p.frame()+1e-4);i!==void 0&&h()?.seekFrame(i)},"Jump to Next Keyframe"),r("jump-end",n("M10 2H8.5v8H10zM2 2v8L7.5 6z"),()=>h()?.seekFrame(e.end),"Jump to End")]}),a.jsxs("div",{style:{display:"flex"},children:[r("step-back",n("M2 2h1.5v8H2zM9.5 2v8L4.5 6z"),()=>h()?.seekFrame(Math.round(e.frame)-1),"Step Back One Frame"),r("step-forward",n("M10 2H8.5v8H10zM2.5 2v8L7.5 6z"),()=>h()?.seekFrame(Math.round(e.frame)+1),"Step Forward One Frame")]}),a.jsx("div",{style:{flex:1}}),a.jsx("input",{type:"number",value:Math.round(e.frame),onChange:i=>{const c=Number(i.target.value);Number.isFinite(c)&&h()?.seekFrame(c)},"aria-label":"Current frame",disabled:!o,title:o?void 0:z,style:{width:75,height:s,textAlign:"center",border:`1px solid ${d.widgetOutline}`,borderRadius:d.widgetRadius,background:d.widget,color:d.widgetText,font:"inherit",cursor:o?"text":"not-allowed",opacity:o?1:.4}}),a.jsxs("span",{onClick:()=>G(B["set-range"]),onKeyDown:()=>{},style:{color:d.text,cursor:"not-allowed"},children:["Start ",e.start," · End ",e.end]})]})}export{ct as default,lt as point,Re as title};
@@ -1 +1 @@
1
- import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{go as le}from"./index-Cjv2Ynte.js";import{r as c}from"./index-nmcBqr7Y.js";import{s as ue,b as X,j as de}from"./blender-runtime-host-B63tuG7j.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-D_jbMNmm.js";import"./hierarchy-marks-sMK9R4NU.js";import"./workspace-arrangement-Bq8u7HUK.js";const he={transform:{cx:.5,cy:.5,zoom:512},refusal:null,size:{w:0,h:0},framedAt:0,drawn:null};let L=he,N=0;const T=new Set;let te=0;function m(){return L}function Q(){return N}function fe(t){return T.add(t),()=>{T.delete(t)}}function v(t){L={...L,...t},N+=1;for(const r of[...T])r()}function pe(){te+=1,N+=1;for(const t of[...T])t()}function me(){return te}function ne(t){v({refusal:t})}const x={back:"#303030",grid:"#303030",face:"#ffffff",faceAlpha:10/255,uvShadow:"#707070",vertex:"#000000",faceDot:"#000000"},B={vertexSize:3,edgeWidth:1,facedotSize:3},se=1,ge=(B.vertexSize*se+1.5)*Math.SQRT2,ve=.75,we=B.facedotSize*se,ye=1,J=[1,1],K=[10,10],xe="Blender's `.space_image.grid` is #303030 at full alpha (userdef_default_theme.c:586) and this view's surface is #303030, so the tile grid draws at the theme's colour and is invisible against it. The image region's own clear is the overlay engine's (DRW_draw_view, space_image.cc:758), which is not in the source checkout — the sighted read settles the contrast.",be={shadow:{inner:x.uvShadow}},Ue=Math.max(B.edgeWidth,1),ee="#ff0000";function W(t){const r=atob(t),a=new Uint8Array(r.length);for(let d=0;d<r.length;d++)a[d]=r.charCodeAt(d);return a}function Ve(t){const r=W(t);return new Float32Array(r.buffer,r.byteOffset,r.byteLength>>2)}function z(t){const r=W(t);return new Uint32Array(r.buffer,r.byteOffset,r.byteLength>>2)}function Ee(t,r){const a=Number.parseInt(t.slice(1),16);return`rgba(${a>>16&255}, ${a>>8&255}, ${a&255}, ${Math.round(r*1e3)/1e3})`}const E={text:"#e6e6e6",refusal:"#ed5700",rule:"#232323",statusPadding:"3px 8px",statusGap:12},Qe="workspace.document",_e="UV Editor",D=8e3,re=16,oe=8192,_={move:t=>`Dragging a UV in "${t}" writes the mesh's UV attribute, which the document would save. This is Blender's UV editor as an INSPECTION surface: editing parity is not the program.`,select:"Selecting a UV writes the mesh's selection state. This view draws what the DATA carries — and at this pin a mesh outside edit mode carries no UV selection at all (MeshUVLoopLayer declares uv, pin, name, active, active_render, active_clone and nothing else), so everything draws unselected. Editing parity is not the program.",pin:"Pinning a UV writes `MeshUVLoopLayer.pin`, which the document would save. Existing pins ARE drawn, in Blender's own hard red. Editing parity is not the program.",unwrap:"Unwrapping runs `bpy.ops.uv.unwrap`, which rewrites every UV on the mesh. Editing parity is not the program."};le({view:"blender-uv-view",title:_e,verbs:[{id:"state",run:()=>m()},{id:"view-all",title:"UV Editor: View All",run:()=>(pe(),m())},{id:"zoom",title:"UV Editor: Zoom",run:t=>{const r=Number(t?.to??t?.zoom);if(!Number.isFinite(r))throw new Error("zoom needs a numeric `to` — CSS pixels per UV unit, 16 … 8192.");const{transform:a}=m();return v({transform:{...a,zoom:Math.min(oe,Math.max(re,r))}}),m()}},{id:"pan",title:"UV Editor: Pan",run:t=>{const r=Number(t?.u??0),a=Number(t?.v??0);if(!Number.isFinite(r)||!Number.isFinite(a))throw new Error("pan needs numeric `u` and `v`, in UV units.");const{transform:d}=m();return v({transform:{...d,cx:d.cx+r,cy:d.cy+a}}),m()}},{id:"move-uv",run:()=>R(_.move("the active UV map"))},{id:"select",run:()=>R(_.select)},{id:"pin",run:()=>R(_.pin)},{id:"unwrap",run:()=>R(_.unwrap)}]});function R(t){return ne(t),m()}function Se(t){return!t?.uvBase64||!t.triangleBase64?null:{uv:Ve(t.uvBase64),tris:z(t.triangleBase64),starts:z(t.loopStartBase64??""),totals:z(t.loopTotalBase64??""),pins:t.pinBase64?W(t.pinBase64):null}}function Je(){const t=c.useSyncExternalStore(ue,X,X);c.useSyncExternalStore(fe,Q,Q);const r=c.useRef(0),a=c.useRef(null),d=c.useRef(null),j=c.useRef(null),{transform:b,refusal:C,size:U}=m(),[,F]=[0,c.useCallback(()=>v({}),[])];c.useEffect(()=>{let e=!0;return(async()=>{try{const s=await de();if(!e)return;d.current=s,j.current=null}catch(s){if(!e)return;j.current=s instanceof Error?s.message:String(s)}F()})(),()=>{e=!1}},[t,F]),c.useEffect(()=>{const e=a.current;if(!e)return;const s=new ResizeObserver(()=>{const l={w:e.clientWidth,h:e.clientHeight},h=m().size;(h.w!==l.w||h.h!==l.h)&&v({size:l})});return s.observe(e),v({size:{w:e.clientWidth,h:e.clientHeight}}),()=>s.disconnect()},[]);const n=d.current,M=c.useMemo(()=>Se(n),[n]),O=me();c.useEffect(()=>{if(O===r.current)return;r.current=O;const e=n?.bounds??[0,0,1,1],{w:s,h:l}=m().size;if(s===0||l===0)return;const[h,g,o,f]=e,V=Math.max(o-h,.001),S=Math.max(f-g,.001),k=Math.min(oe,Math.max(re,Math.min(s/V,l/S)*.9));v({transform:{cx:(h+o)/2,cy:(g+f)/2,zoom:k},framedAt:Date.now()})},[O,n]);const w=e=>(e-b.cx)*b.zoom+U.w/2,y=e=>U.h/2-(e-b.cy)*b.zoom,i=c.useMemo(()=>{if(!n||!M)return null;const{uv:e,tris:s,starts:l,totals:h,pins:g}=M,o=[],f=[],V=[],S=[],k=l.length;for(let p=0;p<k;p++){const ce=l[p],I=h[p];if(I<3)continue;let $="",H=0,G=0;for(let A=0;A<I;A++){const Z=ce+A,q=e[Z*2],Y=e[Z*2+1];H+=q,G+=Y,$+=`${A===0?"M":"L"}${w(q).toFixed(2)} ${y(Y).toFixed(2)}`}$+="Z",o.push($),f.push($),S.push({x:w(H/I),y:y(G/I)})}const P=e.length>>1;for(let p=0;p<P&&V.length<D;p++)V.push({x:w(e[p*2]),y:y(e[p*2+1]),pinned:g?g[p]!==0:!1});return{faces:o,outlines:f,dots:V,faceDots:S,corners:P,triangles:s.length/3}},[n,M,b,U]);c.useEffect(()=>{if(!n)return;const e=[];n.layers.length===0&&n.object&&e.push(`"${n.object}" has no UV map — Blender's UV editor draws an empty tile.`),i&&i.corners>D&&e.push(`${i.corners} UV corners exceed this view's ${D}-dot budget; ${i.corners-D} corner marks are not drawn. The islands, their edges and the face dots are all drawn.`),n.image||e.push("No image behind the tile: the active material's node tree has no image texture with an image, so there is nothing for Blender's backdrop to show."),e.push(xe),e.push("The line style is SHADOW (#707070), not Blender's stock OUTLINE: `edit_uv_line_style_from_space_image` returns OUTLINE only when `SpaceImage.mode == SI_MODE_UV`, and there is no SpaceImage here."),v({drawn:{object:n.object,mesh:n.mesh,layer:n.active,layers:n.layers,mode:n.mode,loops:n.loops,polygons:n.polygons,triangles:i?.triangles??0,faces:i?.faces.length??0,edges:i?.outlines.length??0,verts:i?.dots.length??0,faceDots:i?.faceDots.length??0,pinned:i?.dots.filter(s=>s.pinned).length??0,bounds:n.bounds??null,tiles:J,subdiv:K,image:n.image?.name??null,warnings:e}})},[n,i]);const ie=c.useMemo(()=>{const e=[],[s,l]=J,[h,g]=K;for(let o=0;o<=s*h;o++){const f=o/h;e.push({key:`u${o}`,x1:w(f),y1:y(0),x2:w(f),y2:y(l),major:o%h===0})}for(let o=0;o<=l*g;o++){const f=o/g;e.push({key:`v${o}`,x1:w(0),y1:y(f),x2:w(s),y2:y(f),major:o%g===0})}return e},[b,U]),ae=n?n.active?`UV Editor · ${n.object} · ${n.active} · ${n.polygons} faces, ${n.loops} corners · ${n.mode}`:`UV Editor · ${n.object??"no mesh selected"} · no UV map · ${n.mode}`:j.current??"UV Editor · reading…";return u.jsxs("div",{"data-testid":"blender-uv-editor",style:{display:"flex",flexDirection:"column",position:"absolute",inset:0,overflow:"hidden",background:x.back,color:E.text,font:"11px Inter, system-ui, sans-serif"},children:[u.jsx("div",{ref:a,style:{flex:1,minHeight:0,position:"relative"},children:u.jsxs("svg",{width:U.w,height:U.h,style:{display:"block"},onPointerDown:()=>ne(_.select),"aria-label":"UV layout",children:[u.jsx("title",{children:"UV layout"}),ie.map(e=>u.jsx("line",{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stroke:x.grid,strokeWidth:e.major?2:1},e.key)),i?.faces.map((e,s)=>u.jsx("path",{d:e,fill:Ee(x.face,x.faceAlpha*ye)},`f${s}`)),i?.outlines.map((e,s)=>u.jsx("path",{d:e,fill:"none",stroke:be.shadow.inner,strokeWidth:Ue},`e${s}`)),i?.faceDots.map((e,s)=>u.jsx("circle",{cx:e.x,cy:e.y,r:we/2,fill:x.faceDot},`fd${s}`)),i?.dots.map((e,s)=>u.jsx("circle",{cx:e.x,cy:e.y,r:ge/2,fill:e.pinned?ee:x.vertex,stroke:e.pinned?ee:"none",strokeWidth:e.pinned?ve:0},`v${s}`))]})}),u.jsxs("div",{style:{borderTop:`1px solid ${E.rule}`,padding:E.statusPadding,display:"flex",gap:E.statusGap,alignItems:"center"},children:[u.jsx("span",{children:ae}),C?u.jsx("span",{style:{color:E.refusal},children:C}):null]})]})}export{Je as default,Qe as point,_e as title};
1
+ import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{go as le}from"./index-ClgrFOcX.js";import{r as c}from"./index-nmcBqr7Y.js";import{s as ue,b as X,j as de}from"./blender-runtime-host-MJZEPwHA.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-Dl5Y3LLv.js";import"./hierarchy-marks-DeG4E4Ke.js";import"./workspace-arrangement-86_8Kk5K.js";const he={transform:{cx:.5,cy:.5,zoom:512},refusal:null,size:{w:0,h:0},framedAt:0,drawn:null};let L=he,N=0;const T=new Set;let te=0;function m(){return L}function Q(){return N}function fe(t){return T.add(t),()=>{T.delete(t)}}function v(t){L={...L,...t},N+=1;for(const r of[...T])r()}function pe(){te+=1,N+=1;for(const t of[...T])t()}function me(){return te}function ne(t){v({refusal:t})}const x={back:"#303030",grid:"#303030",face:"#ffffff",faceAlpha:10/255,uvShadow:"#707070",vertex:"#000000",faceDot:"#000000"},B={vertexSize:3,edgeWidth:1,facedotSize:3},se=1,ge=(B.vertexSize*se+1.5)*Math.SQRT2,ve=.75,we=B.facedotSize*se,ye=1,J=[1,1],K=[10,10],xe="Blender's `.space_image.grid` is #303030 at full alpha (userdef_default_theme.c:586) and this view's surface is #303030, so the tile grid draws at the theme's colour and is invisible against it. The image region's own clear is the overlay engine's (DRW_draw_view, space_image.cc:758), which is not in the source checkout — the sighted read settles the contrast.",be={shadow:{inner:x.uvShadow}},Ue=Math.max(B.edgeWidth,1),ee="#ff0000";function W(t){const r=atob(t),a=new Uint8Array(r.length);for(let d=0;d<r.length;d++)a[d]=r.charCodeAt(d);return a}function Ve(t){const r=W(t);return new Float32Array(r.buffer,r.byteOffset,r.byteLength>>2)}function z(t){const r=W(t);return new Uint32Array(r.buffer,r.byteOffset,r.byteLength>>2)}function Ee(t,r){const a=Number.parseInt(t.slice(1),16);return`rgba(${a>>16&255}, ${a>>8&255}, ${a&255}, ${Math.round(r*1e3)/1e3})`}const E={text:"#e6e6e6",refusal:"#ed5700",rule:"#232323",statusPadding:"3px 8px",statusGap:12},Qe="workspace.document",_e="UV Editor",D=8e3,re=16,oe=8192,_={move:t=>`Dragging a UV in "${t}" writes the mesh's UV attribute, which the document would save. This is Blender's UV editor as an INSPECTION surface: editing parity is not the program.`,select:"Selecting a UV writes the mesh's selection state. This view draws what the DATA carries — and at this pin a mesh outside edit mode carries no UV selection at all (MeshUVLoopLayer declares uv, pin, name, active, active_render, active_clone and nothing else), so everything draws unselected. Editing parity is not the program.",pin:"Pinning a UV writes `MeshUVLoopLayer.pin`, which the document would save. Existing pins ARE drawn, in Blender's own hard red. Editing parity is not the program.",unwrap:"Unwrapping runs `bpy.ops.uv.unwrap`, which rewrites every UV on the mesh. Editing parity is not the program."};le({view:"blender-uv-view",title:_e,verbs:[{id:"state",run:()=>m()},{id:"view-all",title:"UV Editor: View All",run:()=>(pe(),m())},{id:"zoom",title:"UV Editor: Zoom",run:t=>{const r=Number(t?.to??t?.zoom);if(!Number.isFinite(r))throw new Error("zoom needs a numeric `to` — CSS pixels per UV unit, 16 … 8192.");const{transform:a}=m();return v({transform:{...a,zoom:Math.min(oe,Math.max(re,r))}}),m()}},{id:"pan",title:"UV Editor: Pan",run:t=>{const r=Number(t?.u??0),a=Number(t?.v??0);if(!Number.isFinite(r)||!Number.isFinite(a))throw new Error("pan needs numeric `u` and `v`, in UV units.");const{transform:d}=m();return v({transform:{...d,cx:d.cx+r,cy:d.cy+a}}),m()}},{id:"move-uv",run:()=>R(_.move("the active UV map"))},{id:"select",run:()=>R(_.select)},{id:"pin",run:()=>R(_.pin)},{id:"unwrap",run:()=>R(_.unwrap)}]});function R(t){return ne(t),m()}function Se(t){return!t?.uvBase64||!t.triangleBase64?null:{uv:Ve(t.uvBase64),tris:z(t.triangleBase64),starts:z(t.loopStartBase64??""),totals:z(t.loopTotalBase64??""),pins:t.pinBase64?W(t.pinBase64):null}}function Je(){const t=c.useSyncExternalStore(ue,X,X);c.useSyncExternalStore(fe,Q,Q);const r=c.useRef(0),a=c.useRef(null),d=c.useRef(null),j=c.useRef(null),{transform:b,refusal:C,size:U}=m(),[,F]=[0,c.useCallback(()=>v({}),[])];c.useEffect(()=>{let e=!0;return(async()=>{try{const s=await de();if(!e)return;d.current=s,j.current=null}catch(s){if(!e)return;j.current=s instanceof Error?s.message:String(s)}F()})(),()=>{e=!1}},[t,F]),c.useEffect(()=>{const e=a.current;if(!e)return;const s=new ResizeObserver(()=>{const l={w:e.clientWidth,h:e.clientHeight},h=m().size;(h.w!==l.w||h.h!==l.h)&&v({size:l})});return s.observe(e),v({size:{w:e.clientWidth,h:e.clientHeight}}),()=>s.disconnect()},[]);const n=d.current,M=c.useMemo(()=>Se(n),[n]),O=me();c.useEffect(()=>{if(O===r.current)return;r.current=O;const e=n?.bounds??[0,0,1,1],{w:s,h:l}=m().size;if(s===0||l===0)return;const[h,g,o,f]=e,V=Math.max(o-h,.001),S=Math.max(f-g,.001),k=Math.min(oe,Math.max(re,Math.min(s/V,l/S)*.9));v({transform:{cx:(h+o)/2,cy:(g+f)/2,zoom:k},framedAt:Date.now()})},[O,n]);const w=e=>(e-b.cx)*b.zoom+U.w/2,y=e=>U.h/2-(e-b.cy)*b.zoom,i=c.useMemo(()=>{if(!n||!M)return null;const{uv:e,tris:s,starts:l,totals:h,pins:g}=M,o=[],f=[],V=[],S=[],k=l.length;for(let p=0;p<k;p++){const ce=l[p],I=h[p];if(I<3)continue;let $="",H=0,G=0;for(let A=0;A<I;A++){const Z=ce+A,q=e[Z*2],Y=e[Z*2+1];H+=q,G+=Y,$+=`${A===0?"M":"L"}${w(q).toFixed(2)} ${y(Y).toFixed(2)}`}$+="Z",o.push($),f.push($),S.push({x:w(H/I),y:y(G/I)})}const P=e.length>>1;for(let p=0;p<P&&V.length<D;p++)V.push({x:w(e[p*2]),y:y(e[p*2+1]),pinned:g?g[p]!==0:!1});return{faces:o,outlines:f,dots:V,faceDots:S,corners:P,triangles:s.length/3}},[n,M,b,U]);c.useEffect(()=>{if(!n)return;const e=[];n.layers.length===0&&n.object&&e.push(`"${n.object}" has no UV map — Blender's UV editor draws an empty tile.`),i&&i.corners>D&&e.push(`${i.corners} UV corners exceed this view's ${D}-dot budget; ${i.corners-D} corner marks are not drawn. The islands, their edges and the face dots are all drawn.`),n.image||e.push("No image behind the tile: the active material's node tree has no image texture with an image, so there is nothing for Blender's backdrop to show."),e.push(xe),e.push("The line style is SHADOW (#707070), not Blender's stock OUTLINE: `edit_uv_line_style_from_space_image` returns OUTLINE only when `SpaceImage.mode == SI_MODE_UV`, and there is no SpaceImage here."),v({drawn:{object:n.object,mesh:n.mesh,layer:n.active,layers:n.layers,mode:n.mode,loops:n.loops,polygons:n.polygons,triangles:i?.triangles??0,faces:i?.faces.length??0,edges:i?.outlines.length??0,verts:i?.dots.length??0,faceDots:i?.faceDots.length??0,pinned:i?.dots.filter(s=>s.pinned).length??0,bounds:n.bounds??null,tiles:J,subdiv:K,image:n.image?.name??null,warnings:e}})},[n,i]);const ie=c.useMemo(()=>{const e=[],[s,l]=J,[h,g]=K;for(let o=0;o<=s*h;o++){const f=o/h;e.push({key:`u${o}`,x1:w(f),y1:y(0),x2:w(f),y2:y(l),major:o%h===0})}for(let o=0;o<=l*g;o++){const f=o/g;e.push({key:`v${o}`,x1:w(0),y1:y(f),x2:w(s),y2:y(f),major:o%g===0})}return e},[b,U]),ae=n?n.active?`UV Editor · ${n.object} · ${n.active} · ${n.polygons} faces, ${n.loops} corners · ${n.mode}`:`UV Editor · ${n.object??"no mesh selected"} · no UV map · ${n.mode}`:j.current??"UV Editor · reading…";return u.jsxs("div",{"data-testid":"blender-uv-editor",style:{display:"flex",flexDirection:"column",position:"absolute",inset:0,overflow:"hidden",background:x.back,color:E.text,font:"11px Inter, system-ui, sans-serif"},children:[u.jsx("div",{ref:a,style:{flex:1,minHeight:0,position:"relative"},children:u.jsxs("svg",{width:U.w,height:U.h,style:{display:"block"},onPointerDown:()=>ne(_.select),"aria-label":"UV layout",children:[u.jsx("title",{children:"UV layout"}),ie.map(e=>u.jsx("line",{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stroke:x.grid,strokeWidth:e.major?2:1},e.key)),i?.faces.map((e,s)=>u.jsx("path",{d:e,fill:Ee(x.face,x.faceAlpha*ye)},`f${s}`)),i?.outlines.map((e,s)=>u.jsx("path",{d:e,fill:"none",stroke:be.shadow.inner,strokeWidth:Ue},`e${s}`)),i?.faceDots.map((e,s)=>u.jsx("circle",{cx:e.x,cy:e.y,r:we/2,fill:x.faceDot},`fd${s}`)),i?.dots.map((e,s)=>u.jsx("circle",{cx:e.x,cy:e.y,r:ge/2,fill:e.pinned?ee:x.vertex,stroke:e.pinned?ee:"none",strokeWidth:e.pinned?ve:0},`v${s}`))]})}),u.jsxs("div",{style:{borderTop:`1px solid ${E.rule}`,padding:E.statusPadding,display:"flex",gap:E.statusGap,alignItems:"center"},children:[u.jsx("span",{children:ae}),C?u.jsx("span",{style:{color:E.refusal},children:C}):null]})]})}export{Je as default,Qe as point,_e as title};
@@ -1 +1 @@
1
- import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{r as o}from"./index-Cjv2Ynte.js";import{r as s}from"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const g="workspace.status",v="Version",f="right",x=998;function h(){const{project:r}=o(),t=s.useSyncExternalStore(r.subscribe,r.engineVersion,r.engineVersion);return t===null?null:e.jsxs("span",{className:"volter-status-copy","data-testid":"status-blender-version","data-engine-version":t,style:{display:"inline-flex",alignItems:"center",gap:"var(--volter-space-2)",fontSize:"var(--volter-font-md)"},title:`This project is built against engine ${t}`,children:[e.jsx("span",{"aria-hidden":"true",style:{width:"var(--volter-stroke-resting)",height:"var(--volter-icon-md)",background:"currentColor"}}),t]})}export{f as align,h as default,x as order,g as point,v as title};
1
+ import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{r as o}from"./index-ClgrFOcX.js";import{r as s}from"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const g="workspace.status",v="Version",f="right",x=998;function h(){const{project:r}=o(),t=s.useSyncExternalStore(r.subscribe,r.engineVersion,r.engineVersion);return t===null?null:e.jsxs("span",{className:"volter-status-copy","data-testid":"status-blender-version","data-engine-version":t,style:{display:"inline-flex",alignItems:"center",gap:"var(--volter-space-2)",fontSize:"var(--volter-font-md)"},title:`This project is built against engine ${t}`,children:[e.jsx("span",{"aria-hidden":"true",style:{width:"var(--volter-stroke-resting)",height:"var(--volter-icon-md)",background:"currentColor"}}),t]})}export{f as align,h as default,x as order,g as point,v as title};
@@ -1 +1 @@
1
- import{h as t}from"./blender-runtime-host-B63tuG7j.js";import"./index-Cjv2Ynte.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"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-D_jbMNmm.js";import"./hierarchy-marks-sMK9R4NU.js";import"./workspace-arrangement-Bq8u7HUK.js";const D="workspace.command",e=(o,n)=>({...n===void 0?{}:{timeoutMs:n},derivedRefresh:o,handle:r=>t(r)}),E={"blender-draw-batching":e("none"),"blender-start":e("none",12e4),"blender-stop":e("none",30*6e4),"blender-execute":e("always",30*6e4),"blender-scene-info":e("none",6e4),"blender-object-info":e("none",6e4),"blender-screenshot-view":e("always",6e4),"blender-read-file":e("none",6e4),"blender-write-file":e("none",6e4),"blender-list-files":e("none",6e4),"blender-rna":e("none",6e4),"blender-rna-context":e("none",6e4),"blender-rna-set":e("always",6e4),"blender-outliner":e("none",6e4),"blender-node-tree":e("none",6e4),"blender-uv-layout":e("none",6e4),"blender-rig":e("none",6e4),"blender-action-clip":e("none",12e4),"blender-node-view":e("none"),"blender-outliner-set":e("always",6e4),"blender-status":e("none")};export{E as commands,D as point};
1
+ import{h as t}from"./blender-runtime-host-MJZEPwHA.js";import"./index-ClgrFOcX.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"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-Dl5Y3LLv.js";import"./hierarchy-marks-DeG4E4Ke.js";import"./workspace-arrangement-86_8Kk5K.js";const D="workspace.command",e=(o,n)=>({...n===void 0?{}:{timeoutMs:n},derivedRefresh:o,handle:r=>t(r)}),E={"blender-draw-batching":e("none"),"blender-start":e("none",12e4),"blender-stop":e("none",30*6e4),"blender-execute":e("always",30*6e4),"blender-scene-info":e("none",6e4),"blender-object-info":e("none",6e4),"blender-screenshot-view":e("always",6e4),"blender-read-file":e("none",6e4),"blender-write-file":e("none",6e4),"blender-list-files":e("none",6e4),"blender-rna":e("none",6e4),"blender-rna-context":e("none",6e4),"blender-rna-set":e("always",6e4),"blender-outliner":e("none",6e4),"blender-node-tree":e("none",6e4),"blender-uv-layout":e("none",6e4),"blender-rig":e("none",6e4),"blender-action-clip":e("none",12e4),"blender-node-view":e("none"),"blender-outliner-set":e("always",6e4),"blender-status":e("none")};export{E as commands,D as point};
@@ -1 +1 @@
1
- import{aC as _}from"./index-Cjv2Ynte.js";const i=globalThis;function c(){return i.__volterBreakpointListeners??=new Set,i.__volterBreakpointListeners}function y(){return i.__volterActiveBreakpoint??null}function G(e){i.__volterActiveBreakpoint=e;for(const t of c())t()}function k(e){return c().add(e),()=>c().delete(e)}const v="volter:board-guides:v1";function g(){return typeof window>"u"?null:window.localStorage}function m(){try{return _()?.rootPath??"(no-project)"}catch{return"(no-project)"}}function B(){try{return JSON.parse(g()?.getItem(v)??"{}")}catch{return{}}}function b(e){try{g()?.setItem(v,JSON.stringify(e))}catch{}}const l=new Set;let a=null,p=Date.now()%1e6;function o(){return a||(a=B()[m()]??{}),a}function d(){const e=B();e[m()]=o(),b(e);for(const t of l)t()}const h=[];function s(e){return o()[e]??h}function S(e){return l.add(e),()=>l.delete(e)}function x(e,t,r){p+=1;const n=`guide-${p}`;return o()[e]=[...s(e),{id:n,axis:t,value:r}],d(),n}function A(e,t,r){o()[e]=s(e).map(n=>n.id===t?{...n,value:r}:n),d()}function E(e,t){o()[e]=s(e).filter(r=>r.id!==t),d()}let f=null;function T(e,t){f=t?{docId:e,transform:t}:null}function j(){if(!f)return{x:[],y:[]};const{docId:e,transform:t}=f,r=[],n=[];for(const u of s(e))u.axis==="x"?r.push(t.originX+t.panX+u.value*t.zoom):n.push(t.originY+t.panY+u.value*t.zoom);return{x:r,y:n}}export{y as a,k as b,S as c,s as d,E as e,x as f,j as g,A as m,T as r,G as s};
1
+ import{aC as _}from"./index-ClgrFOcX.js";const i=globalThis;function c(){return i.__volterBreakpointListeners??=new Set,i.__volterBreakpointListeners}function y(){return i.__volterActiveBreakpoint??null}function G(e){i.__volterActiveBreakpoint=e;for(const t of c())t()}function k(e){return c().add(e),()=>c().delete(e)}const v="volter:board-guides:v1";function g(){return typeof window>"u"?null:window.localStorage}function m(){try{return _()?.rootPath??"(no-project)"}catch{return"(no-project)"}}function B(){try{return JSON.parse(g()?.getItem(v)??"{}")}catch{return{}}}function b(e){try{g()?.setItem(v,JSON.stringify(e))}catch{}}const l=new Set;let a=null,p=Date.now()%1e6;function o(){return a||(a=B()[m()]??{}),a}function d(){const e=B();e[m()]=o(),b(e);for(const t of l)t()}const h=[];function s(e){return o()[e]??h}function S(e){return l.add(e),()=>l.delete(e)}function x(e,t,r){p+=1;const n=`guide-${p}`;return o()[e]=[...s(e),{id:n,axis:t,value:r}],d(),n}function A(e,t,r){o()[e]=s(e).map(n=>n.id===t?{...n,value:r}:n),d()}function E(e,t){o()[e]=s(e).filter(r=>r.id!==t),d()}let f=null;function T(e,t){f=t?{docId:e,transform:t}:null}function j(){if(!f)return{x:[],y:[]};const{docId:e,transform:t}=f,r=[],n=[];for(const u of s(e))u.axis==="x"?r.push(t.originX+t.panX+u.value*t.zoom):n.push(t.originY+t.panY+u.value*t.zoom);return{x:r,y:n}}export{y as a,k as b,S as c,s as d,E as e,x as f,j as g,A as m,T as r,G as s};
@@ -1,3 +1,3 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Cjv2Ynte.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/editor-api-BboLGD_u.js","assets/game-network-Bof-cN2R.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-BUPFKtBc.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-CcTdmLf3.js","assets/contract-system-adapters-D8SzcuZo.js","assets/game-contract-seams-CzlxJGC2.js","assets/seeded-random-BVi4_fs4.js","assets/game-audio-BeCyd0Ha.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/events-156d8d12.esm-DmeaOP4r.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/index-DzuOGwVB.js","assets/live-project-verbs-D_8wWaCB.js","assets/capability-coverage-BMuTFU_9.js","assets/edit-mode-authoring-CIXoejcH.js","assets/json-history-resource-C1pGwXuI.js","assets/binding-resolver-4nTdtOpk.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-CbgTofeT.js","assets/canvas-entry-runtime-CgJkCzp_.js","assets/three-ingest-runtime-BPTa3ryG.js","assets/EffectComposer-BEAt0PtQ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-DTnDQXm0.js","assets/Pass-D1MRT672.js","assets/CSS3DRenderer-BsAqfavI.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-BHA-cdrW.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/active-ingest-CmyN258P.js","assets/ingest-source-persistence-BNek6mSi.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-Co7zteuS.js","assets/mounted-authoring-DQ0-LgR6.js","assets/entity-object-C6hm5vYx.js","assets/user-data-DxeJHxTz.js","assets/workspace-arrangement-Bq8u7HUK.js","assets/three-contract-Dkt6PmWY.js","assets/three-CAVY58Dv.js","assets/editor-layers-CYVQVJ5O.js","assets/component-instance-root-Ctbx3vOO.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-BDMrB8fC.js","assets/source-persistence-backend-BMbXR_WB.js","assets/three-projection-core-BnoDtdZY.js","assets/body-marks-C1LxJtQb.js","assets/user-data-CODoGZqA.js","assets/object-marks-BnvSuCTt.js","assets/structural-ids-BOo2BRoY.js","assets/object3d-authoring-subject-XccsO0xG.js","assets/r3f-physics-binding-BRcBDERW.js","assets/deferred-ingest-play-DsV_qXEP.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-CTCp7U6C.js","assets/board-guides-Cnfvv0uu.js","assets/relative-import-specifier-CPSPKQKY.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-xUKvX80V.js","assets/inference-diagnostics-DE1P5w14.js","assets/writer-tw6EcuVO.js","assets/three-state-_BZo8PPs.js","assets/editor-shell-store-B76wIXvV.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-CTspfOX-.js","assets/game-surface-defaults-D8S4cRxi.js"])))=>i.map(i=>d[i]);
2
- import{ab as _,je as $,jf as N,jg as f,jh as g,ji as V,_ as R,jj as C,a0 as U,aC as M,jk as j,Z as B,jl as G,K as E}from"./index-Cjv2Ynte.js";import{g as l,a as b,A as D,B as F,C as O,d as x,D as q,E as H}from"./game-network-Bof-cN2R.js";import{e as z,c as K}from"./gameplay-replay-DP08m8Vv.js";import{n as A,s as h}from"./command-results-CUQD49AB.js";import{z as W,i as y}from"./active-ingest-CmyN258P.js";import{g as X}from"./capability-coverage-BMuTFU_9.js";import{w as Z,H as J}from"./debug-bridge-Cx3PFUcu.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-BUPFKtBc.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CcTdmLf3.js";import"./contract-system-adapters-D8SzcuZo.js";import"./game-contract-seams-CzlxJGC2.js";import"./seeded-random-BVi4_fs4.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-DmeaOP4r.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-DzuOGwVB.js";import"./live-project-verbs-D_8wWaCB.js";import"./edit-mode-authoring-CIXoejcH.js";import"./json-history-resource-C1pGwXuI.js";import"./binding-resolver-4nTdtOpk.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-CbgTofeT.js";import"./canvas-entry-runtime-CgJkCzp_.js";import"./three-ingest-runtime-BPTa3ryG.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-Co7zteuS.js";import"./mounted-authoring-DQ0-LgR6.js";import"./entity-object-C6hm5vYx.js";import"./user-data-DxeJHxTz.js";import"./workspace-arrangement-Bq8u7HUK.js";import"./three-contract-Dkt6PmWY.js";import"./three-CAVY58Dv.js";import"./editor-layers-CYVQVJ5O.js";import"./component-instance-root-Ctbx3vOO.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-BDMrB8fC.js";import"./source-persistence-backend-BMbXR_WB.js";import"./ingest-source-persistence-BNek6mSi.js";import"./three-projection-core-BnoDtdZY.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-BRcBDERW.js";import"./deferred-ingest-play-DsV_qXEP.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-CTCp7U6C.js";import"./board-guides-Cnfvv0uu.js";import"./relative-import-specifier-CPSPKQKY.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-xUKvX80V.js";import"./inference-diagnostics-DE1P5w14.js";import"./writer-tw6EcuVO.js";import"./three-state-_BZo8PPs.js";import"./editor-shell-store-B76wIXvV.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-CTspfOX-.js";import"./game-surface-defaults-D8S4cRxi.js";import"./output-DK8waum9.js";const k=()=>_().debug!=null;function d(e,t,s){const a=new Error(t);return a.code=e,s&&(a.data=s),a}function S(e){return Array.isArray(e)?new Set(e.filter(t=>!!(t&&typeof t=="object"&&typeof t.name=="string")).map(t=>t.name)):new Set}function Q(e,t,s,a,i){if(e==="commands"){const c=S(t);return Array.isArray(t)&&[...a].every(o=>c.has(o))}if(e==="providers"){const c=S(t);return Array.isArray(t)&&[...i].every(o=>c.has(o))}return s?e==="state"?i.has(s):e==="invoke"?a.has(s):!1:!1}function T(e,t,s){const a=W(),i=a?.systems;if(!a||!i)return;const c=new Set((i.commands??[]).map(n=>n.name)),o=new Set((i.state??[]).map(n=>n.name));Q(e,t,s,c,o)&&f({seam:"contract.systems",subject:"game",epoch:X(a),stage:"operation",outcome:"pass",source:"consumer",detail:`the session wire consumed contract systems through debug.${e}`})}async function Y(e,t,s){let a;try{a=$(s).debug}catch(o){throw o instanceof N?d("INSTANCE_UNRESOLVED",`session wire: "${e}" — ${o.message}`,{instances:o.instances}):o}const i=()=>{if(!a)throw d("DEBUG_ADAPTER_UNAVAILABLE",`session wire: "${e}" — this game exposes no debug adapter`);return a},c=(o,n,r)=>{const u=i(),m=g(u);try{const p=r();return f({seam:`system.debug.${o}`,subject:"game",epoch:m,stage:n,outcome:"pass",source:"consumer",detail:`the session wire called debug.${o} and received its result`}),f({seam:"system.debug",subject:"game",epoch:m,stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T(o,p,t[0]),p}catch(p){throw f({seam:`system.debug.${o}`,subject:"game",epoch:m,stage:n,outcome:"fail",source:"consumer",detail:`the session wire called debug.${o} and it failed: ${p instanceof Error?p.message:String(p)}`}),p}};switch(e){case"state":return c("state","operation",()=>i().state(t[0]));case"stateAll":return c("stateAll","operation",()=>i().stateAll());case"providers":return c("providers","operation",()=>i().providers());case"commands":return c("commands","operation",()=>i().commands());case"events":return c("events","operation",()=>i().events(t[0]));case"snapshot":{const o=i();return{time:c("state","operation",()=>o.state("time")),state:c("stateAll","operation",()=>o.stateAll()),events:c("events","operation",()=>o.events(t[0])),pageErrors:V()}}case"invoke":{const o=t[0],n=t[1]??[];try{const r=await i().invoke(o,n),u=i();return f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"pass",source:"consumer",detail:`the session wire invoked debug command "${o}" and received its result`}),f({seam:"system.debug",subject:"game",epoch:g(u),stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T("invoke",r,o),r}catch(r){const u=i();throw f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"fail",source:"consumer",detail:`the session wire invoked debug command "${o}" and it failed: ${r instanceof Error?r.message:String(r)}`}),r}}case"runTicks":{const o=l();if(!o?.runTicks)throw d("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];o.runTicks(n,r);return}case"runTicksSettled":{const o=l();if(!o?.runTicksSettled)throw d("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];await o.runTicksSettled(n,r);return}case"input.setVirtualAction":case"input.tapVirtualAction":case"input.clearVirtualActions":case"input.startRecording":case"input.stopRecording":case"input.isRecording":{const o=l(),n=e==="input.setVirtualAction"?t[2]:e==="input.tapVirtualAction"?t[1]:t[0],r=o?o.getInputTarget(n):null;if(!r)throw d("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no root entry exports \`debug.input\` (the game's own input door), or none has mounted yet`);if(e==="input.setVirtualAction")return r.setVirtualAction(t[0],t[1]);if(e==="input.tapVirtualAction")return r.tapVirtualAction(t[0]);if(e==="input.clearVirtualActions"){r.clearVirtualActions();return}if(e==="input.startRecording"){r.startInputRecording();return}if(e==="input.stopRecording"){r.stopInputRecording();return}return r.isInputRecording()}case"input.scheduleActionAtTick":{const o=l(),n=t[0],r=t[1],u=t[2],m=t[3],p=o?o.getInputTarget(m):null;if(!p)throw d("DEBUG_INPUT_UNAVAILABLE","session wire: input.scheduleActionAtTick() has no virtual-input target wired — no root entry exports `debug.input` (the game's own input door), or none has mounted yet");return p.scheduleActionAtTick(n,r,u)}case"input.injectPointerDelta":case"input.injectPointerPosition":{const o=l(),n=t[0],r=t[1],u=t[2],m=o?o.getInputTarget(u):null;if(!m)throw d("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no root entry exports \`debug.input\` (the game's own input door), or none has mounted yet`);e==="input.injectPointerDelta"?m.injectPointerDelta(n,r):m.injectPointerPosition(n,r);return}case"holdFor":{const o=l(),n=t[2],r=o?o.getInputTarget(n):null;if(!r)throw d("DEBUG_INPUT_UNAVAILABLE","session wire: holdFor() has no virtual-input target wired — no root entry exports `debug.input` (the game's own input door), or none has mounted yet");const u=t[0],m=t[1],p=r.setVirtualAction(u,!0);if(!p.delivered)return r.clearVirtualActions(),{delivered:!1,reason:p.reason};const{stalled:v,starvedWithoutDriver:w}=await Z(i(),m,o?.runTicks?L=>o.runTicks?.(L,{render:"last"}):void 0);return r.clearVirtualActions(),v?{delivered:!1,reason:w?J:"play stopped during hold"}:{delivered:!0}}default:throw d("UNKNOWN_BRIDGE_METHOD",`session wire: unknown bridge method "${e}"`)}}async function ee(e){if(!b()&&!k())return y()?{ok:!1,error:"this ingest mount is live, but it publishes no debug plane — the mount installs no SystemAdapters.debug, so there is nothing to enumerate, read or drive through the game seam. Starting play will not change that; the game itself must declare the volter game contract (or carry a contract shim beside it) for these calls to have an answer."}:A();const t=e.method,s=e.callArgs??[];try{const a=e.instance;return{ok:!0,data:{result:await Y(t,s,a)}}}catch(a){return h(a)}}async function P(e){const{liveCanvasFrame:t}=await R(async()=>{const{liveCanvasFrame:s}=await import("./index-Cjv2Ynte.js").then(a=>a.u4);return{liveCanvasFrame:s}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));return t(e)}function te(){const e=l();e?.loop.liveness==="loop-starved"&&e.runTicks?.(1,{render:"last"})}function I(e,t){const s=re();return{ok:!0,data:{base64:e,mimeType:"image/png",composite:t.composite,...t.layers?{layers:t.layers}:{},...t.flatness?{flatness:t.flatness}:{},...t.loopRecoveryFrame?{loopRecoveryFrame:!0}:{},...s?{recording:s}:{}}}}function re(){const e=O();return e?{path:e.path,startedAt:e.startedAt,notice:[`This run is being RECORDED — the still above is one frame of ${e.path}.`,"A still cannot answer a question about a moving game (did the jump land, did the shot","register). If that is the question, read the clip:","",` recording: ${e.path}${e.rotates?` (the next ${E("play")} replaces this file)`:" (named — never rotated)"}`,...e.format==="canvas-dom"?[` HUD replay: ${e.replayPath}`," The raw WebM contains the canvas only. Reconstruct HUD stills with"," editor.recording.captureReplay, or export a full video with editor.recording.exportReplay."]:[],` startedAt: ${e.startedAt} (clip offset 0)`,` play log: ${e.logFile===null?"(none — nothing is logging this run)":`logs/${e.logFile}`} (event timestamps → clip offsets)`,"","THE BAR for a temporal question: examine AT LEAST 10 frames spanning no more than 5","seconds around the moment. One frame, or ten frames spread across the run, is the same","guess a single screenshot was.","",`The clip is finalized and readable when play stops — ${E("stop")}, or the idle`,`auto-stop after ${Math.round(e.idleAutoStopMs/1e3)}s with no session command and no player input.`].join(`
3
- `)}:null}async function oe(e){if(!b()&&!k()&&!y())return A();const t=e.instance,s=D(t),a=F(t),i=C(s).medium,c=l();let o=!1,n=null;if(a&&c?.loop.liveness==="loop-starved")if(e.refreshStarvedFrame===!0&&c.runTicks)try{c.runTicks(1,{render:"last"}),o=!0}catch(r){return h(r)}else return{ok:!1,error:"cannot capture a fresh game frame while the host loop reports 'loop-starved' — inspect the separate visibility readings, let presentation resume, or request a deterministic loop-recovery frame",data:{code:"BRIDGE_SCREENSHOT_STALE"}};if(s&&typeof Image<"u"&&typeof XMLSerializer<"u"&&typeof s.getBoundingClientRect=="function")try{const r=await U(s,{canvasFrame:P,projectRoot:M()?.rootPath,...i==="unknown"?{}:{presentsOnCanvas:i==="canvas"}});if(r.layers.canvases===0&&r.layers.domOverlays===0)throw new j(i==="dom"?"dom-overlay":"composite-output","no game layers were mounted");return I(r.base64,{composite:!0,layers:r.layers,flatness:r.flatness,loopRecoveryFrame:o})}catch(r){n=r,B.warn(`Full-stack screenshot failed; returning the canvas-only fallback — ${r instanceof Error?r.message:String(r)}`,"screenshot")}if(!a){const r=n instanceof Error?n.message:String(n);return{ok:!1,error:n!==null?`full game-stack capture failed — ${r}; no canvas layer is available as a fallback`:y()?"the ingest mount is live but no DOM overlay or canvas layer is mounted for capture":"no play-mode DOM overlay or canvas layer is mounted yet",data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}try{const r=await R(()=>import("./index-Cjv2Ynte.js").then(w=>w.u4),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),u=r.readablePngSource(await r.liveCanvasFrame(a))??a,m=u.toDataURL("image/png"),p=m.indexOf(","),v=p>=0?m.slice(p+1):m;return I(v,{composite:!1,flatness:G(u,a.ownerDocument),loopRecoveryFrame:o})}catch(r){return{ok:!1,error:`bridge-screenshot: canvas layer capture failed — ${r instanceof Error?r.message:String(r)}`+(n===null?"":`; full game-stack capture also failed — ${n instanceof Error?n.message:String(n)}`),data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}}const Vt="workspace.command",Ct={"bridge-call":{timeoutMs:6e4,derivedRefresh:"always",handle:ee},"bridge-screenshot":{timeoutMs:15e3,derivedRefresh:"if-content-changed",handle:oe},"bridge-recording-start":{timeoutMs:15e3,derivedRefresh:"none",handle:async e=>{if(!b()&&!k()&&!y())return A();const t=D();if(!t)return{ok:!1,error:"no play-mode game surface is mounted yet"};const s=_().audio?.acquireRecordingStream?.()??null;try{return{ok:!0,data:{...await q(t,{fps:typeof e.fps=="number"?e.fps:void 0,format:e.format==="canvas-dom"||e.format==="composite-webm"?e.format:void 0,name:typeof e.name=="string"||e.name===null?e.name:void 0,canvasFrame:P,refreshFrame:te,audio:s})}}}catch(a){return h(a)}}},"bridge-recording-stop":{timeoutMs:6e4,derivedRefresh:"none",handle:async()=>{try{return{ok:!0,data:{...await x()}}}catch(e){return h(e)}}},"bridge-recording-timeline":{derivedRefresh:"none",handle:()=>{const e=H();return e===null?{ok:!1,error:"no gameplay recording is active"}:{ok:!0,data:{...e}}}},"bridge-recording-replay-capture":{timeoutMs:6e4,derivedRefresh:"none",handle:async e=>{try{return typeof e.replayPath!="string"?{ok:!1,error:"replayPath is required"}:typeof e.positionMs!="number"||!Number.isFinite(e.positionMs)?{ok:!1,error:"finite positionMs is required"}:{ok:!0,data:{...await K(e.replayPath,e.positionMs)}}}catch(t){return h(t)}}},"bridge-recording-replay-export":{timeoutMs:6e5,derivedRefresh:"none",handle:async e=>{try{if(typeof e.replayPath!="string")return{ok:!1,error:"replayPath is required"};const{blob:t,...s}=await z({replayPath:e.replayPath,...typeof e.fps=="number"?{fps:e.fps}:{},...typeof e.startMs=="number"?{startMs:e.startMs}:{},...typeof e.endMs=="number"?{endMs:e.endMs}:{}}),{beginGameplayRecordingSink:a,appendGameplayRecordingChunk:i,finishGameplayRecordingSink:c,abortGameplayRecordingSink:o}=await R(async()=>{const{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:m,abortGameplayRecordingSink:p}=await import("./editor-api-BboLGD_u.js");return{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:m,abortGameplayRecordingSink:p}},__vite__mapDeps([10,0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,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])),n=await a({startedAt:new Date().toISOString(),mimeType:"video/webm",purpose:"export",name:typeof e.name=="string"?e.name:`replay-export-${Date.now()}`});try{for(let r=0,u=0;r<t.size;r+=4*1024*1024,u++)await i(n,u,t.slice(r,r+4*1024*1024));await c(n,"post-processed canvas and DOM recording")}catch(r){throw await o(n),r}return{ok:!0,data:{...s,path:n.path}}}catch(t){return h(t)}}}};export{Ct as commands,Vt as point};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-ClgrFOcX.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/editor-api-DTrNJMXL.js","assets/game-network-Deo8lcPw.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-iX2-V5kg.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-B2THKz1v.js","assets/contract-system-adapters-BDUpDoKd.js","assets/game-contract-seams-C22a4B79.js","assets/seeded-random-B6zqGkWP.js","assets/game-audio-BeCyd0Ha.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/events-156d8d12.esm-DmeaOP4r.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/index-DzuOGwVB.js","assets/live-project-verbs-Bqmxbr2o.js","assets/capability-coverage-EnZ99FoT.js","assets/edit-mode-authoring-BDgZD47j.js","assets/json-history-resource-CDEoQe1R.js","assets/binding-resolver-DoOAFM2m.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-CqjVBanw.js","assets/canvas-entry-runtime-CLOuJcgT.js","assets/three-ingest-runtime-x9nLmUl-.js","assets/EffectComposer-BEAt0PtQ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-DTnDQXm0.js","assets/Pass-D1MRT672.js","assets/CSS3DRenderer-BsAqfavI.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-BHA-cdrW.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/active-ingest-CJ2U5L1O.js","assets/ingest-source-persistence-CVU1rTj0.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-CKqhX3mt.js","assets/mounted-authoring-B697dYuN.js","assets/entity-object-BLJ-I8XT.js","assets/user-data-DL6HsBPf.js","assets/workspace-arrangement-86_8Kk5K.js","assets/three-contract-Dkt6PmWY.js","assets/three-DWy0sZom.js","assets/editor-layers-DwaX5UFy.js","assets/component-instance-root-wO1p-rLr.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-9LcUBPaU.js","assets/source-persistence-backend-Cwy93SmQ.js","assets/three-projection-core-IUovHgg_.js","assets/body-marks-C1LxJtQb.js","assets/user-data-CODoGZqA.js","assets/object-marks-BnvSuCTt.js","assets/structural-ids-BOo2BRoY.js","assets/object3d-authoring-subject-XccsO0xG.js","assets/r3f-physics-binding-DuG97FR9.js","assets/deferred-ingest-play-To3ZratW.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-Dq8NqvWu.js","assets/board-guides-CCiyx8cT.js","assets/relative-import-specifier-CA9mSNXO.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-BunjdqX7.js","assets/inference-diagnostics-BmZ5ggEK.js","assets/writer-tw6EcuVO.js","assets/three-state-_ImCbP87.js","assets/editor-shell-store-aKHbAoCV.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-BV_lf5uK.js","assets/game-surface-defaults-D8S4cRxi.js"])))=>i.map(i=>d[i]);
2
+ import{ab as _,je as $,jf as N,jg as f,jh as g,ji as V,_ as R,jj as C,a0 as U,aC as M,jk as j,Z as B,jl as G,K as E}from"./index-ClgrFOcX.js";import{g as l,a as b,A as D,B as F,C as O,d as x,D as q,E as H}from"./game-network-Deo8lcPw.js";import{e as z,c as K}from"./gameplay-replay-Dkvmv6hf.js";import{n as A,s as h}from"./command-results-CUQD49AB.js";import{z as W,i as y}from"./active-ingest-CJ2U5L1O.js";import{g as X}from"./capability-coverage-EnZ99FoT.js";import{w as Z,H as J}from"./debug-bridge-EhDkhrLX.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-iX2-V5kg.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-B2THKz1v.js";import"./contract-system-adapters-BDUpDoKd.js";import"./game-contract-seams-C22a4B79.js";import"./seeded-random-B6zqGkWP.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-DmeaOP4r.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-DzuOGwVB.js";import"./live-project-verbs-Bqmxbr2o.js";import"./edit-mode-authoring-BDgZD47j.js";import"./json-history-resource-CDEoQe1R.js";import"./binding-resolver-DoOAFM2m.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-CqjVBanw.js";import"./canvas-entry-runtime-CLOuJcgT.js";import"./three-ingest-runtime-x9nLmUl-.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-CKqhX3mt.js";import"./mounted-authoring-B697dYuN.js";import"./entity-object-BLJ-I8XT.js";import"./user-data-DL6HsBPf.js";import"./workspace-arrangement-86_8Kk5K.js";import"./three-contract-Dkt6PmWY.js";import"./three-DWy0sZom.js";import"./editor-layers-DwaX5UFy.js";import"./component-instance-root-wO1p-rLr.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-9LcUBPaU.js";import"./source-persistence-backend-Cwy93SmQ.js";import"./ingest-source-persistence-CVU1rTj0.js";import"./three-projection-core-IUovHgg_.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-DuG97FR9.js";import"./deferred-ingest-play-To3ZratW.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-Dq8NqvWu.js";import"./board-guides-CCiyx8cT.js";import"./relative-import-specifier-CA9mSNXO.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BunjdqX7.js";import"./inference-diagnostics-BmZ5ggEK.js";import"./writer-tw6EcuVO.js";import"./three-state-_ImCbP87.js";import"./editor-shell-store-aKHbAoCV.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BV_lf5uK.js";import"./game-surface-defaults-D8S4cRxi.js";import"./output-DK8waum9.js";const k=()=>_().debug!=null;function d(e,t,s){const a=new Error(t);return a.code=e,s&&(a.data=s),a}function S(e){return Array.isArray(e)?new Set(e.filter(t=>!!(t&&typeof t=="object"&&typeof t.name=="string")).map(t=>t.name)):new Set}function Q(e,t,s,a,i){if(e==="commands"){const c=S(t);return Array.isArray(t)&&[...a].every(o=>c.has(o))}if(e==="providers"){const c=S(t);return Array.isArray(t)&&[...i].every(o=>c.has(o))}return s?e==="state"?i.has(s):e==="invoke"?a.has(s):!1:!1}function T(e,t,s){const a=W(),i=a?.systems;if(!a||!i)return;const c=new Set((i.commands??[]).map(n=>n.name)),o=new Set((i.state??[]).map(n=>n.name));Q(e,t,s,c,o)&&f({seam:"contract.systems",subject:"game",epoch:X(a),stage:"operation",outcome:"pass",source:"consumer",detail:`the session wire consumed contract systems through debug.${e}`})}async function Y(e,t,s){let a;try{a=$(s).debug}catch(o){throw o instanceof N?d("INSTANCE_UNRESOLVED",`session wire: "${e}" — ${o.message}`,{instances:o.instances}):o}const i=()=>{if(!a)throw d("DEBUG_ADAPTER_UNAVAILABLE",`session wire: "${e}" — this game exposes no debug adapter`);return a},c=(o,n,r)=>{const u=i(),m=g(u);try{const p=r();return f({seam:`system.debug.${o}`,subject:"game",epoch:m,stage:n,outcome:"pass",source:"consumer",detail:`the session wire called debug.${o} and received its result`}),f({seam:"system.debug",subject:"game",epoch:m,stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T(o,p,t[0]),p}catch(p){throw f({seam:`system.debug.${o}`,subject:"game",epoch:m,stage:n,outcome:"fail",source:"consumer",detail:`the session wire called debug.${o} and it failed: ${p instanceof Error?p.message:String(p)}`}),p}};switch(e){case"state":return c("state","operation",()=>i().state(t[0]));case"stateAll":return c("stateAll","operation",()=>i().stateAll());case"providers":return c("providers","operation",()=>i().providers());case"commands":return c("commands","operation",()=>i().commands());case"events":return c("events","operation",()=>i().events(t[0]));case"snapshot":{const o=i();return{time:c("state","operation",()=>o.state("time")),state:c("stateAll","operation",()=>o.stateAll()),events:c("events","operation",()=>o.events(t[0])),pageErrors:V()}}case"invoke":{const o=t[0],n=t[1]??[];try{const r=await i().invoke(o,n),u=i();return f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"pass",source:"consumer",detail:`the session wire invoked debug command "${o}" and received its result`}),f({seam:"system.debug",subject:"game",epoch:g(u),stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T("invoke",r,o),r}catch(r){const u=i();throw f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"fail",source:"consumer",detail:`the session wire invoked debug command "${o}" and it failed: ${r instanceof Error?r.message:String(r)}`}),r}}case"runTicks":{const o=l();if(!o?.runTicks)throw d("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];o.runTicks(n,r);return}case"runTicksSettled":{const o=l();if(!o?.runTicksSettled)throw d("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];await o.runTicksSettled(n,r);return}case"input.setVirtualAction":case"input.tapVirtualAction":case"input.clearVirtualActions":case"input.startRecording":case"input.stopRecording":case"input.isRecording":{const o=l(),n=e==="input.setVirtualAction"?t[2]:e==="input.tapVirtualAction"?t[1]:t[0],r=o?o.getInputTarget(n):null;if(!r)throw d("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no root entry exports \`debug.input\` (the game's own input door), or none has mounted yet`);if(e==="input.setVirtualAction")return r.setVirtualAction(t[0],t[1]);if(e==="input.tapVirtualAction")return r.tapVirtualAction(t[0]);if(e==="input.clearVirtualActions"){r.clearVirtualActions();return}if(e==="input.startRecording"){r.startInputRecording();return}if(e==="input.stopRecording"){r.stopInputRecording();return}return r.isInputRecording()}case"input.scheduleActionAtTick":{const o=l(),n=t[0],r=t[1],u=t[2],m=t[3],p=o?o.getInputTarget(m):null;if(!p)throw d("DEBUG_INPUT_UNAVAILABLE","session wire: input.scheduleActionAtTick() has no virtual-input target wired — no root entry exports `debug.input` (the game's own input door), or none has mounted yet");return p.scheduleActionAtTick(n,r,u)}case"input.injectPointerDelta":case"input.injectPointerPosition":{const o=l(),n=t[0],r=t[1],u=t[2],m=o?o.getInputTarget(u):null;if(!m)throw d("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no root entry exports \`debug.input\` (the game's own input door), or none has mounted yet`);e==="input.injectPointerDelta"?m.injectPointerDelta(n,r):m.injectPointerPosition(n,r);return}case"holdFor":{const o=l(),n=t[2],r=o?o.getInputTarget(n):null;if(!r)throw d("DEBUG_INPUT_UNAVAILABLE","session wire: holdFor() has no virtual-input target wired — no root entry exports `debug.input` (the game's own input door), or none has mounted yet");const u=t[0],m=t[1],p=r.setVirtualAction(u,!0);if(!p.delivered)return r.clearVirtualActions(),{delivered:!1,reason:p.reason};const{stalled:v,starvedWithoutDriver:w}=await Z(i(),m,o?.runTicks?L=>o.runTicks?.(L,{render:"last"}):void 0);return r.clearVirtualActions(),v?{delivered:!1,reason:w?J:"play stopped during hold"}:{delivered:!0}}default:throw d("UNKNOWN_BRIDGE_METHOD",`session wire: unknown bridge method "${e}"`)}}async function ee(e){if(!b()&&!k())return y()?{ok:!1,error:"this ingest mount is live, but it publishes no debug plane — the mount installs no SystemAdapters.debug, so there is nothing to enumerate, read or drive through the game seam. Starting play will not change that; the game itself must declare the volter game contract (or carry a contract shim beside it) for these calls to have an answer."}:A();const t=e.method,s=e.callArgs??[];try{const a=e.instance;return{ok:!0,data:{result:await Y(t,s,a)}}}catch(a){return h(a)}}async function P(e){const{liveCanvasFrame:t}=await R(async()=>{const{liveCanvasFrame:s}=await import("./index-ClgrFOcX.js").then(a=>a.u4);return{liveCanvasFrame:s}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));return t(e)}function te(){const e=l();e?.loop.liveness==="loop-starved"&&e.runTicks?.(1,{render:"last"})}function I(e,t){const s=re();return{ok:!0,data:{base64:e,mimeType:"image/png",composite:t.composite,...t.layers?{layers:t.layers}:{},...t.flatness?{flatness:t.flatness}:{},...t.loopRecoveryFrame?{loopRecoveryFrame:!0}:{},...s?{recording:s}:{}}}}function re(){const e=O();return e?{path:e.path,startedAt:e.startedAt,notice:[`This run is being RECORDED — the still above is one frame of ${e.path}.`,"A still cannot answer a question about a moving game (did the jump land, did the shot","register). If that is the question, read the clip:","",` recording: ${e.path}${e.rotates?` (the next ${E("play")} replaces this file)`:" (named — never rotated)"}`,...e.format==="canvas-dom"?[` HUD replay: ${e.replayPath}`," The raw WebM contains the canvas only. Reconstruct HUD stills with"," editor.recording.captureReplay, or export a full video with editor.recording.exportReplay."]:[],` startedAt: ${e.startedAt} (clip offset 0)`,` play log: ${e.logFile===null?"(none — nothing is logging this run)":`logs/${e.logFile}`} (event timestamps → clip offsets)`,"","THE BAR for a temporal question: examine AT LEAST 10 frames spanning no more than 5","seconds around the moment. One frame, or ten frames spread across the run, is the same","guess a single screenshot was.","",`The clip is finalized and readable when play stops — ${E("stop")}, or the idle`,`auto-stop after ${Math.round(e.idleAutoStopMs/1e3)}s with no session command and no player input.`].join(`
3
+ `)}:null}async function oe(e){if(!b()&&!k()&&!y())return A();const t=e.instance,s=D(t),a=F(t),i=C(s).medium,c=l();let o=!1,n=null;if(a&&c?.loop.liveness==="loop-starved")if(e.refreshStarvedFrame===!0&&c.runTicks)try{c.runTicks(1,{render:"last"}),o=!0}catch(r){return h(r)}else return{ok:!1,error:"cannot capture a fresh game frame while the host loop reports 'loop-starved' — inspect the separate visibility readings, let presentation resume, or request a deterministic loop-recovery frame",data:{code:"BRIDGE_SCREENSHOT_STALE"}};if(s&&typeof Image<"u"&&typeof XMLSerializer<"u"&&typeof s.getBoundingClientRect=="function")try{const r=await U(s,{canvasFrame:P,projectRoot:M()?.rootPath,...i==="unknown"?{}:{presentsOnCanvas:i==="canvas"}});if(r.layers.canvases===0&&r.layers.domOverlays===0)throw new j(i==="dom"?"dom-overlay":"composite-output","no game layers were mounted");return I(r.base64,{composite:!0,layers:r.layers,flatness:r.flatness,loopRecoveryFrame:o})}catch(r){n=r,B.warn(`Full-stack screenshot failed; returning the canvas-only fallback — ${r instanceof Error?r.message:String(r)}`,"screenshot")}if(!a){const r=n instanceof Error?n.message:String(n);return{ok:!1,error:n!==null?`full game-stack capture failed — ${r}; no canvas layer is available as a fallback`:y()?"the ingest mount is live but no DOM overlay or canvas layer is mounted for capture":"no play-mode DOM overlay or canvas layer is mounted yet",data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}try{const r=await R(()=>import("./index-ClgrFOcX.js").then(w=>w.u4),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),u=r.readablePngSource(await r.liveCanvasFrame(a))??a,m=u.toDataURL("image/png"),p=m.indexOf(","),v=p>=0?m.slice(p+1):m;return I(v,{composite:!1,flatness:G(u,a.ownerDocument),loopRecoveryFrame:o})}catch(r){return{ok:!1,error:`bridge-screenshot: canvas layer capture failed — ${r instanceof Error?r.message:String(r)}`+(n===null?"":`; full game-stack capture also failed — ${n instanceof Error?n.message:String(n)}`),data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}}const Vt="workspace.command",Ct={"bridge-call":{timeoutMs:6e4,derivedRefresh:"always",handle:ee},"bridge-screenshot":{timeoutMs:15e3,derivedRefresh:"if-content-changed",handle:oe},"bridge-recording-start":{timeoutMs:15e3,derivedRefresh:"none",handle:async e=>{if(!b()&&!k()&&!y())return A();const t=D();if(!t)return{ok:!1,error:"no play-mode game surface is mounted yet"};const s=_().audio?.acquireRecordingStream?.()??null;try{return{ok:!0,data:{...await q(t,{fps:typeof e.fps=="number"?e.fps:void 0,format:e.format==="canvas-dom"||e.format==="composite-webm"?e.format:void 0,name:typeof e.name=="string"||e.name===null?e.name:void 0,canvasFrame:P,refreshFrame:te,audio:s})}}}catch(a){return h(a)}}},"bridge-recording-stop":{timeoutMs:6e4,derivedRefresh:"none",handle:async()=>{try{return{ok:!0,data:{...await x()}}}catch(e){return h(e)}}},"bridge-recording-timeline":{derivedRefresh:"none",handle:()=>{const e=H();return e===null?{ok:!1,error:"no gameplay recording is active"}:{ok:!0,data:{...e}}}},"bridge-recording-replay-capture":{timeoutMs:6e4,derivedRefresh:"none",handle:async e=>{try{return typeof e.replayPath!="string"?{ok:!1,error:"replayPath is required"}:typeof e.positionMs!="number"||!Number.isFinite(e.positionMs)?{ok:!1,error:"finite positionMs is required"}:{ok:!0,data:{...await K(e.replayPath,e.positionMs)}}}catch(t){return h(t)}}},"bridge-recording-replay-export":{timeoutMs:6e5,derivedRefresh:"none",handle:async e=>{try{if(typeof e.replayPath!="string")return{ok:!1,error:"replayPath is required"};const{blob:t,...s}=await z({replayPath:e.replayPath,...typeof e.fps=="number"?{fps:e.fps}:{},...typeof e.startMs=="number"?{startMs:e.startMs}:{},...typeof e.endMs=="number"?{endMs:e.endMs}:{}}),{beginGameplayRecordingSink:a,appendGameplayRecordingChunk:i,finishGameplayRecordingSink:c,abortGameplayRecordingSink:o}=await R(async()=>{const{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:m,abortGameplayRecordingSink:p}=await import("./editor-api-DTrNJMXL.js");return{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:m,abortGameplayRecordingSink:p}},__vite__mapDeps([10,0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,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])),n=await a({startedAt:new Date().toISOString(),mimeType:"video/webm",purpose:"export",name:typeof e.name=="string"?e.name:`replay-export-${Date.now()}`});try{for(let r=0,u=0;r<t.size;r+=4*1024*1024,u++)await i(n,u,t.slice(r,r+4*1024*1024));await c(n,"post-processed canvas and DOM recording")}catch(r){throw await o(n),r}return{ok:!0,data:{...s,path:n.path}}}catch(t){return h(t)}}}};export{Ct as commands,Vt as point};
@@ -1 +1 @@
1
- import{e as i,a,C as t,b as m,D as r,E as e,F as o}from"./index-DUA0RF9E.js";import"./webworkerAll-BH-WTk1P.js";import"./index-Cjv2Ynte.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";i.add(a);i.mixin(t,m);i.add(r);i.add(e);i.mixin(t,o);
1
+ import{e as i,a,C as t,b as m,D as r,E as e,F as o}from"./index-CHOT9sYh.js";import"./webworkerAll-DDbFvxgB.js";import"./index-ClgrFOcX.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";i.add(a);i.mixin(t,m);i.add(r);i.add(e);i.mixin(t,o);
@@ -1 +1 @@
1
- import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{a5 as a}from"./index-Cjv2Ynte.js";import{r as s}from"./index-nmcBqr7Y.js";import{s as d,b as l,B as i}from"./build-session-Bhmr1BX8.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./configurations-BICGR-Zc.js";const F="workspace.document",U="Build Player",m=["log","info","warn","error"],c=Symbol("build-player-output");function p(e){if(!e)return;const t=()=>{if(!e.isConnected)return;const o=e.contentWindow;o?.location.pathname===new URL(i,location.href).pathname&&(o[c]||(h(o),a(e,{container:()=>o.document.getElementById("game-canvas")??o.document.body,canvasFrame:n=>f(o,n)})),o.document.readyState==="complete")||setTimeout(t,0)};t()}function f(e,t){return new Promise(o=>{e.requestAnimationFrame(()=>{const n=e.document.createElement("canvas");n.width=t.width,n.height=t.height;const r=n.getContext("2d");if(!r)return o(null);r.drawImage(t,0,0),o(n)})})}function h(e){e[c]=!0;for(const t of m){const o=e.console[t].bind(e.console);e.console[t]=(...n)=>{o(...n),console[t]("[Build Player]",...n)}}e.addEventListener("error",t=>{console.error("[Build Player] Uncaught",t.error??t.message)}),e.addEventListener("unhandledrejection",t=>{console.error("[Build Player] Unhandled rejection",t.reason)}),console.info(`[Build Player] Running ${e.document.title||"the build"}`)}function j(e){const t=s.useSyncExternalStore(d,l);return u.jsx("iframe",{title:"Build Player","data-build-player":t,src:`${i}?run=${t}`,ref:p,style:{width:"100%",height:"100%",border:0,display:"block",background:"#000"}},t)}export{j as default,F as point,U as title};
1
+ import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{a5 as a}from"./index-ClgrFOcX.js";import{r as s}from"./index-nmcBqr7Y.js";import{s as d,b as l,B as i}from"./build-session-C4jVDt-u.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./configurations-8qaUqMH7.js";const F="workspace.document",U="Build Player",m=["log","info","warn","error"],c=Symbol("build-player-output");function p(e){if(!e)return;const t=()=>{if(!e.isConnected)return;const o=e.contentWindow;o?.location.pathname===new URL(i,location.href).pathname&&(o[c]||(h(o),a(e,{container:()=>o.document.getElementById("game-canvas")??o.document.body,canvasFrame:n=>f(o,n)})),o.document.readyState==="complete")||setTimeout(t,0)};t()}function f(e,t){return new Promise(o=>{e.requestAnimationFrame(()=>{const n=e.document.createElement("canvas");n.width=t.width,n.height=t.height;const r=n.getContext("2d");if(!r)return o(null);r.drawImage(t,0,0),o(n)})})}function h(e){e[c]=!0;for(const t of m){const o=e.console[t].bind(e.console);e.console[t]=(...n)=>{o(...n),console[t]("[Build Player]",...n)}}e.addEventListener("error",t=>{console.error("[Build Player] Uncaught",t.error??t.message)}),e.addEventListener("unhandledrejection",t=>{console.error("[Build Player] Unhandled rejection",t.reason)}),console.info(`[Build Player] Running ${e.document.title||"the build"}`)}function j(e){const t=s.useSyncExternalStore(d,l);return u.jsx("iframe",{title:"Build Player","data-build-player":t,src:`${i}?run=${t}`,ref:p,style:{width:"100%",height:"100%",border:0,display:"block",background:"#000"}},t)}export{j as default,F as point,U as title};
@@ -1,2 +1,2 @@
1
- import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{b4 as D,cP as F,c_ as H,eo as O,ep as I,eq as M,er as i,a7 as L,es as R,aZ as o,et as n,dh as G,aN as j,a6 as k,b1 as _,eu as J,ev as V,cp as U,ew as q,ex as Y}from"./index-Cjv2Ynte.js";import{r}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a as Z,c as A,u as K,e as Q,f as X,g as ee,h as te,r as P,i as C}from"./build-session-Bhmr1BX8.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./configurations-BICGR-Zc.js";const f="volter.project.json",S={name:"My Game",resolution:{width:1280,height:720},appId:"com.example.mygame"};function ie(){r.useSyncExternalStore(Z,A,A);const s=ee(),p=_(),a=p?D(p):null,[y,T]=r.useState(S),m=K(),[d,N]=r.useState("");r.useEffect(()=>{!d&&m.length>0&&N(m[0]?.id??"")},[m,d]);const x=r.useRef(null),h=r.useCallback(async()=>{const t=await F(f),l=t?JSON.parse(t):S;T({...S,...l,resolution:{...S.resolution,...l.resolution}})},[]);r.useEffect(()=>(h().catch(()=>{}),a?.subscribeAll(t=>{t===f&&h().catch(()=>{})})??(()=>{})),[a,h]),r.useEffect(()=>()=>{x.current&&clearTimeout(x.current)},[]);const v=r.useCallback(t=>{x.current&&clearTimeout(x.current),x.current=setTimeout(async()=>{const l=await F(f);if(!l)throw new Error(`Cannot edit build settings: ${f} is missing`);const u=JSON.parse(l),g=`${JSON.stringify({...u,name:t.name,resolution:t.resolution,appId:t.appId},null,2)}
1
+ import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{b4 as D,cP as F,c_ as H,eo as O,ep as I,eq as M,er as i,a7 as L,es as R,aZ as o,et as n,dh as G,aN as j,a6 as k,b1 as _,eu as J,ev as V,cp as U,ew as q,ex as Y}from"./index-ClgrFOcX.js";import{r}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a as Z,c as A,u as K,e as Q,f as X,g as ee,h as te,r as P,i as C}from"./build-session-C4jVDt-u.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./configurations-8qaUqMH7.js";const f="volter.project.json",S={name:"My Game",resolution:{width:1280,height:720},appId:"com.example.mygame"};function ie(){r.useSyncExternalStore(Z,A,A);const s=ee(),p=_(),a=p?D(p):null,[y,T]=r.useState(S),m=K(),[d,N]=r.useState("");r.useEffect(()=>{!d&&m.length>0&&N(m[0]?.id??"")},[m,d]);const x=r.useRef(null),h=r.useCallback(async()=>{const t=await F(f),l=t?JSON.parse(t):S;T({...S,...l,resolution:{...S.resolution,...l.resolution}})},[]);r.useEffect(()=>(h().catch(()=>{}),a?.subscribeAll(t=>{t===f&&h().catch(()=>{})})??(()=>{})),[a,h]),r.useEffect(()=>()=>{x.current&&clearTimeout(x.current)},[]);const v=r.useCallback(t=>{x.current&&clearTimeout(x.current),x.current=setTimeout(async()=>{const l=await F(f);if(!l)throw new Error(`Cannot edit build settings: ${f} is missing`);const u=JSON.parse(l),g=`${JSON.stringify({...u,name:t.name,resolution:t.resolution,appId:t.appId},null,2)}
2
2
  `;if(!a){await H(f,g);return}await a.write(f,g,{label:"Edit Build Settings",kind:"settings",contentType:"application/json"}).catch(()=>void h().catch(()=>{}))},500)},[a,h]),$=r.useCallback(t=>{T(l=>{const u={...l,...t};return v(u),u})},[v]),E=r.useCallback((t,l)=>{T(u=>{const g={...u,resolution:{...u.resolution,[t]:Math.round(l)}};return v(g),g})},[v]),c=s.phase,b=s.result?.report?.artifact??null;return e.jsxs("div",{"data-testid":"build-profiles-document",style:{display:"flex",flex:1,minHeight:0,background:O[1],pointerEvents:"auto"},children:[e.jsx("div",{style:le,children:m.map(t=>e.jsx(M,{selected:d===t.id,disabled:c==="building",onClick:()=>{c!=="building"&&N(t.id)},style:{padding:`${i[4]} ${i[6]}`,opacity:c==="building"&&d!==t.id?.4:1},children:e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:i[4]},children:[e.jsx(L,{icon:G,style:{fontSize:n.lg,color:d===t.id?R:o[2]}}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:n.md,fontWeight:600,color:d===t.id?o[1]:o[2]},children:t.label}),e.jsx("div",{style:{fontSize:n.sm,color:o[3],marginTop:1},children:t.subtitle})]})]})},t.id))}),e.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",minWidth:0,padding:`${i[5]} ${i[8]}`,maxWidth:560},children:[e.jsx("div",{style:W,children:"Project"}),e.jsxs("div",{style:w,children:[e.jsx("label",{style:B,children:"Name"}),e.jsx(j,{className:"volter-input",style:{flex:1},value:y.name,onChange:t=>$({name:t.target.value})})]}),e.jsxs("div",{style:w,children:[e.jsx("label",{style:B,children:"Resolution"}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:i[2],flex:1},children:[e.jsx(j,{type:"number",className:"volter-input",style:{width:0,flex:1},value:y.resolution.width,onChange:t=>{const l=Number.parseInt(t.target.value,10);Number.isFinite(l)&&l>0&&E("width",l)}}),e.jsx("span",{style:{fontSize:n.sm,color:o[3]},children:"×"}),e.jsx(j,{type:"number",className:"volter-input",style:{width:0,flex:1},value:y.resolution.height,onChange:t=>{const l=Number.parseInt(t.target.value,10);Number.isFinite(l)&&l>0&&E("height",l)}})]})]}),e.jsxs("div",{style:w,children:[e.jsx("label",{style:B,children:"App ID"}),e.jsx(j,{className:"volter-input",style:{flex:1},value:y.appId,onChange:t=>$({appId:t.target.value})})]}),e.jsxs("div",{style:{...w,marginTop:i[2]},children:[e.jsx("label",{style:B,children:"Output"}),e.jsx("span",{style:{fontSize:n.md,color:o[2]},children:b??"Artifact appears here after a build"})]}),e.jsx("div",{style:{marginTop:i[6],display:"flex",alignItems:"center",gap:i[4],paddingTop:i[4],borderTop:`1px solid ${I[1]}`},children:c==="building"?e.jsxs(e.Fragment,{children:[e.jsxs("span",{style:{fontSize:n.md,fontWeight:600,color:R},children:["Building for ",m.find(t=>t.id===s.target)?.label??s.target,"… (log in Build Output below)"]}),e.jsx(k,{size:"compact",onClick:te,children:"Cancel"})]}):e.jsxs(e.Fragment,{children:[c==="done"&&s.result&&e.jsx("span",{"data-testid":"build-profiles-result",style:{fontSize:n.md,fontWeight:600,color:s.result.ok?J:V},children:s.result.ok?"✓ Build complete":`✗ Build failed (exit ${s.result.code??"unknown"})`}),c==="done"&&s.result?.ok&&b&&e.jsx("a",{href:U(b),download:b,className:"volter-btn","data-variant":"secondary","data-size":"default",style:{textDecoration:"none",display:"inline-flex"},children:"Download"}),e.jsx(k,{variant:"primary","data-testid":"build-profiles-build",onClick:()=>{d&&(c==="done"&&P(),Q(d))},style:{marginLeft:"auto"},children:c==="done"?"Build Again":"Build"}),e.jsx(k,{"data-testid":"build-profiles-build-and-run",onClick:()=>{d&&(c==="done"&&P(),X(d))},children:"Build And Run"})]})}),c==="done"&&s.result?.report&&e.jsx(se,{report:s.result.report})]})]})}function se({report:s}){const p=s.largestFiles[0]?.bytes??1;return e.jsxs("section",{"data-testid":"build-report",style:{marginTop:i[6],paddingTop:i[5],borderTop:`1px solid ${I[1]}`},children:[e.jsx("div",{style:W,children:"Build report"}),e.jsxs("div",{style:{display:"flex",gap:i[4],marginBottom:i[5]},children:[e.jsx(z,{label:"Package",value:C(s.artifactBytes)}),e.jsx(z,{label:"Output",value:C(s.outputBytes)}),e.jsx(z,{label:"Files",value:String(s.fileCount)})]}),e.jsx("div",{style:{fontSize:n.sm,color:o[3],marginBottom:i[2]},children:"Largest output files"}),e.jsx("div",{style:{display:"grid",gap:3},children:s.largestFiles.slice(0,8).map(a=>e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) max-content",gap:i[3]},children:[e.jsxs("div",{title:a.path,style:{position:"relative",minWidth:0,overflow:"hidden",borderRadius:2},children:[e.jsx("div",{"aria-hidden":"true",style:{position:"absolute",inset:0,width:`${Math.max(2,a.bytes/p*100)}%`,background:"color-mix(in srgb, var(--volter-accent) 16%, transparent)"}}),e.jsx("div",{style:{position:"relative",padding:`${i[1]} ${i[2]}`,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:q,fontSize:n.sm,color:o[2]},children:a.path})]}),e.jsx("div",{style:{textAlign:"right",padding:`${i[1]} 0`,fontSize:n.sm,color:o[2]},children:C(a.bytes)})]},a.path))})]})}function z({label:s,value:p}){return e.jsxs("div",{style:{flex:1,padding:`${i[3]} ${i[4]}`,background:O[2],borderRadius:Y.sm},children:[e.jsx("div",{style:{fontSize:n.sm,color:o[3]},children:s}),e.jsx("div",{style:{marginTop:i[1],fontSize:n.lg,fontWeight:650,color:o[1]},children:p})]})}const le={width:160,flexShrink:0,borderRight:`1px solid ${I[1]}`,overflowY:"auto"},W={fontSize:n.sm,fontWeight:700,textTransform:"uppercase",color:o[3],letterSpacing:"0.05em",marginBottom:i[3]},w={display:"flex",alignItems:"center",gap:i[3],marginBottom:i[2]},B={width:65,fontSize:n.base,color:o[2],flexShrink:0},he="workspace.document",ge="Build Profiles";function ye(s){return e.jsx(ie,{})}export{ye as default,he as point,ge as title};
@@ -1 +1 @@
1
- import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r}from"./index-nmcBqr7Y.js";import{a,c as e,g as i}from"./build-session-Bhmr1BX8.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./configurations-BICGR-Zc.js";import"./index-Cjv2Ynte.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const x="workspace.status",B="Build Progress",h="left",S=30;function k(){r.useSyncExternalStore(a,e,e);const s=i();return s.phase==="idle"?null:s.phase==="building"?t.jsxs("span",{className:"volter-status-copy","data-testid":"status-build-progress","data-build-phase":"building","data-status-tone":"accent",children:["Building ",s.target,"…"]}):t.jsx("span",{className:"volter-status-copy","data-testid":"status-build-progress","data-build-phase":s.result?.ok?"complete":"failed","data-status-tone":s.result?.ok?"success":"danger",children:s.result?.ok?"Build complete":"Build failed"})}export{h as align,k as default,S as order,x as point,B as title};
1
+ import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r}from"./index-nmcBqr7Y.js";import{a,c as e,g as i}from"./build-session-C4jVDt-u.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./configurations-8qaUqMH7.js";import"./index-ClgrFOcX.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const x="workspace.status",B="Build Progress",h="left",S=30;function k(){r.useSyncExternalStore(a,e,e);const s=i();return s.phase==="idle"?null:s.phase==="building"?t.jsxs("span",{className:"volter-status-copy","data-testid":"status-build-progress","data-build-phase":"building","data-status-tone":"accent",children:["Building ",s.target,"…"]}):t.jsx("span",{className:"volter-status-copy","data-testid":"status-build-progress","data-build-phase":s.result?.ok?"complete":"failed","data-status-tone":s.result?.ok?"success":"danger",children:s.result?.ok?"Build complete":"Build failed"})}export{h as align,k as default,S as order,x as point,B as title};
@@ -1,4 +1,4 @@
1
- import{l as E,b as L}from"./configurations-BICGR-Zc.js";import{$ as y,r as c}from"./index-Cjv2Ynte.js";import{r as m}from"./index-nmcBqr7Y.js";function B(e){if(e<1024)return`${e} B`;const n=["KB","MB","GB"];let t=e/1024,i=n[0];for(let s=1;s<n.length&&t>=1024;s++)t/=1024,i=n[s];return`${t>=10?t.toFixed(1):t.toFixed(2)} ${i}`}const w="build",C="build-profiles.document";function M(){return c().workspace.openContributedDocument(C)}const U="build-player.document",W=`${y}/build/web/index.html`;let _=0;const p=new Set;function F(){return _}function j(e){return p.add(e),()=>{p.delete(e)}}function I(){_++;for(const e of p)e();return c().workspace.openContributedDocument(U)}async function J(e){await P(e),r.phase==="done"&&r.result?.ok&&I()}function Y(){const[e,n]=m.useState([]);return m.useEffect(()=>{let t=!1;return E().then(i=>{t||n(i.filter(s=>s.role==="build").map(s=>({id:s.id,label:s.id,subtitle:s.describe??s.kind})))}).catch(()=>{t||n([])}),()=>{t=!0}},[]),e}let r={phase:"idle",target:"",log:[],result:null},$=0;const h=new Set;let D=null;function u(e){r={...r,...e},$++,x();for(const n of h)n()}function q(e){return h.add(e),()=>{h.delete(e)}}function G(){return $}function O(){return r}function H(){r.phase!=="building"&&u({phase:"idle",log:[],result:null})}function K(){D?.abort(),u({phase:"idle"})}function R(){x(),c().output.show(w)}function x(){const e=O();let n=e.log.length?`${e.log.join(`
1
+ import{l as E,b as L}from"./configurations-8qaUqMH7.js";import{$ as y,r as c}from"./index-ClgrFOcX.js";import{r as m}from"./index-nmcBqr7Y.js";function B(e){if(e<1024)return`${e} B`;const n=["KB","MB","GB"];let t=e/1024,i=n[0];for(let s=1;s<n.length&&t>=1024;s++)t/=1024,i=n[s];return`${t>=10?t.toFixed(1):t.toFixed(2)} ${i}`}const w="build",C="build-profiles.document";function M(){return c().workspace.openContributedDocument(C)}const U="build-player.document",W=`${y}/build/web/index.html`;let _=0;const p=new Set;function F(){return _}function j(e){return p.add(e),()=>{p.delete(e)}}function I(){_++;for(const e of p)e();return c().workspace.openContributedDocument(U)}async function J(e){await P(e),r.phase==="done"&&r.result?.ok&&I()}function Y(){const[e,n]=m.useState([]);return m.useEffect(()=>{let t=!1;return E().then(i=>{t||n(i.filter(s=>s.role==="build").map(s=>({id:s.id,label:s.id,subtitle:s.describe??s.kind})))}).catch(()=>{t||n([])}),()=>{t=!0}},[]),e}let r={phase:"idle",target:"",log:[],result:null},$=0;const h=new Set;let D=null;function u(e){r={...r,...e},$++,x();for(const n of h)n()}function q(e){return h.add(e),()=>{h.delete(e)}}function G(){return $}function O(){return r}function H(){r.phase!=="building"&&u({phase:"idle",log:[],result:null})}function K(){D?.abort(),u({phase:"idle"})}function R(){x(),c().output.show(w)}function x(){const e=O();let n=e.log.length?`${e.log.join(`
2
2
  `)}
3
3
  `:"";if(e.phase==="done"&&e.result&&(n+=`
4
4
  ${e.result.ok?"Build complete.":`Build failed (exit code: ${e.result.code??"unknown"}).`}
@@ -1 +1 @@
1
- import{o}from"./build-session-Bhmr1BX8.js";import"./configurations-BICGR-Zc.js";import"./index-Cjv2Ynte.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";const d="workspace.action",n=[{id:"build.web",label:"Build for Web (itch.io)",execute:()=>{o()}},{id:"build.steam",label:"Build for Desktop (Steam)",execute:()=>{o()}}];export{n as actions,d as point};
1
+ import{o}from"./build-session-C4jVDt-u.js";import"./configurations-8qaUqMH7.js";import"./index-ClgrFOcX.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";const d="workspace.action",n=[{id:"build.web",label:"Build for Web (itch.io)",execute:()=>{o()}},{id:"build.steam",label:"Build for Desktop (Steam)",execute:()=>{o()}}];export{n as actions,d as point};
@@ -1 +1 @@
1
- import{o}from"./build-session-Bhmr1BX8.js";import"./configurations-BICGR-Zc.js";import"./index-Cjv2Ynte.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";const u="workspace.command",c={"show-build":{derivedRefresh:"always",handle:()=>o()?{ok:!0}:{ok:!1,error:"The Build Profiles document is not registered in this session."}}};export{c as commands,u as point};
1
+ import{o}from"./build-session-C4jVDt-u.js";import"./configurations-8qaUqMH7.js";import"./index-ClgrFOcX.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";const u="workspace.command",c={"show-build":{derivedRefresh:"always",handle:()=>o()?{ok:!0}:{ok:!1,error:"The Build Profiles document is not registered in this session."}}};export{c as commands,u as point};
@@ -1 +1 @@
1
- import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{r as e,a6 as a,a7 as s,a8 as i}from"./index-Cjv2Ynte.js";import{r as p}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{o as n}from"./build-session-Bhmr1BX8.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./configurations-BICGR-Zc.js";const h="workspace.header",g=10;function v(){const{session:t}=e(),o=p.useSyncExternalStore(t.subscribe,t.playState,t.playState)!=="stopped";return r.jsxs(a,{variant:"ghost",size:"compact","data-testid":"project-export","aria-label":"Export project",disabled:o,title:o?"Stop Play mode before exporting the project":"Export project",className:"volter-chrome-island volter-glass-island",onClick:()=>{n()},children:[r.jsx(s,{icon:i.action.export}),"Export"]})}export{v as default,g as order,h as point};
1
+ import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{r as e,a6 as a,a7 as s,a8 as i}from"./index-ClgrFOcX.js";import{r as p}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{o as n}from"./build-session-C4jVDt-u.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./configurations-8qaUqMH7.js";const h="workspace.header",g=10;function v(){const{session:t}=e(),o=p.useSyncExternalStore(t.subscribe,t.playState,t.playState)!=="stopped";return r.jsxs(a,{variant:"ghost",size:"compact","data-testid":"project-export","aria-label":"Export project",disabled:o,title:o?"Stop Play mode before exporting the project":"Export project",className:"volter-chrome-island volter-glass-island",onClick:()=>{n()},children:[r.jsx(s,{icon:i.action.export}),"Export"]})}export{v as default,g as order,h as point};
@@ -1 +1 @@
1
- import{o as t,d as i}from"./build-session-Bhmr1BX8.js";import"./configurations-BICGR-Zc.js";import"./index-Cjv2Ynte.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";const c="workspace.menu",a={menu:"window",items:[{id:"build-profiles",label:"Build Profiles",testId:"menu-build-profiles",execute:()=>{t()}},{id:"build-output",label:"Build Output",testId:"menu-build-output",execute:()=>{i()}}]};export{a as menu,c as point};
1
+ import{o as t,d as i}from"./build-session-C4jVDt-u.js";import"./configurations-8qaUqMH7.js";import"./index-ClgrFOcX.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";const c="workspace.menu",a={menu:"window",items:[{id:"build-profiles",label:"Build Profiles",testId:"menu-build-profiles",execute:()=>{t()}},{id:"build-output",label:"Build Output",testId:"menu-build-output",execute:()=>{i()}}]};export{a as menu,c as point};
@@ -1 +1 @@
1
- import{a as i,g as t,d as r}from"./build-session-Bhmr1BX8.js";import"./configurations-BICGR-Zc.js";import"./index-Cjv2Ynte.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";const B="workspace.service",b=()=>{let s=t().phase;return i(()=>{const o=t();o.phase==="done"&&s!=="done"&&o.result?.ok===!1&&r(),s=o.phase})};export{B as point,b as start};
1
+ import{a as i,g as t,d as r}from"./build-session-C4jVDt-u.js";import"./configurations-8qaUqMH7.js";import"./index-ClgrFOcX.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";const B="workspace.service",b=()=>{let s=t().phase;return i(()=>{const o=t();o.phase==="done"&&s!=="done"&&o.result?.ok===!1&&r(),s=o.phase})};export{B as point,b as start};
@@ -1 +1 @@
1
- import{u as i,c6 as e,c4 as o}from"./index-Cjv2Ynte.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";const d=i({type:o(["perspective","orthographic"]).describe("Camera projection type"),fov:e().optional().describe("Vertical field of view in degrees (perspective only)"),near:e().optional().describe("Near clipping plane distance"),far:e().optional().describe("Far clipping plane distance"),orthoSize:e().optional().describe("Half-height of the orthographic frustum (orthographic only)"),width:e().optional().describe("Render width in pixels. Defaults to viewport width"),height:e().optional().describe("Render height in pixels. Defaults to viewport height")}).describe("Camera configuration");export{d as CameraDescriptorSchema};
1
+ import{u as i,c6 as e,c4 as o}from"./index-ClgrFOcX.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";const d=i({type:o(["perspective","orthographic"]).describe("Camera projection type"),fov:e().optional().describe("Vertical field of view in degrees (perspective only)"),near:e().optional().describe("Near clipping plane distance"),far:e().optional().describe("Far clipping plane distance"),orthoSize:e().optional().describe("Half-height of the orthographic frustum (orthographic only)"),width:e().optional().describe("Render width in pixels. Defaults to viewport width"),height:e().optional().describe("Render height in pixels. Defaults to viewport height")}).describe("Camera configuration");export{d as CameraDescriptorSchema};
@@ -1 +1 @@
1
- import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{a as x}from"./three-contract-Dkt6PmWY.js";import{fd as m,bQ as f,fe as j,ff as s,aL as l}from"./index-Cjv2Ynte.js";import{r as u}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function h(n,t){const r=t?x(n.hierarchy,t):null;if(!r)return null;if(r.isCamera)return r;const i=r.userData._camera;return i?.isCamera?i:null}function b(n,t){return!!m()&&!!h(t,n?.id??null)}function C(n,t){return t.cameras.find(r=>r.nativeId===n.uuid)??t.cameras.find(r=>r.id===n.name||r.label===n.name)??null}function v(n){const[,t]=u.useReducer(r=>r+1,0);return u.useEffect(()=>{if(n)return n.subscribe(t)},[n]),n?.snapshot()??null}function g({adapter:n,nodeId:t}){const r=m(),i=v(r);if(!i)return null;const c=h(n,t);if(!c)return null;const a=C(c,i),d=a?.id===i.activeCameraId,o=i.transition,p=o?Math.max(0,o.durationSeconds-o.elapsedSeconds):null;return e.jsxs("div",{style:{display:"grid",gap:8},children:[a?null:e.jsx(f,{tone:"info",children:"This native camera is not registered with the active runtime controller."}),e.jsxs(j,{children:[e.jsx(s,{label:"Role",children:e.jsx(l,{tone:d?"success":"muted",children:d?"Active camera":a?"Registered camera":"Scene camera"})}),a?e.jsx(s,{label:"Runtime ID",children:e.jsx(l,{tone:"muted",children:a.id})}):null,a?.priority!==void 0?e.jsx(s,{label:"Priority",children:e.jsx(l,{tone:"muted",children:a.priority})}):null,a?.enabled!==void 0?e.jsx(s,{label:"Enabled",children:e.jsx(l,{tone:a.enabled?"success":"muted",children:a.enabled?"Yes":"No"})}):null,e.jsx(s,{label:"Active camera",children:e.jsx(l,{tone:"muted",children:i.activeCameraId??"None"})}),e.jsx(s,{label:"Controller",children:e.jsx(l,{tone:"muted",children:i.activeControllerId??"Gameplay / unowned"})}),e.jsx(s,{label:"Ownership depth",children:e.jsx(l,{tone:"muted",children:i.ownershipDepth})}),o?e.jsxs(e.Fragment,{children:[e.jsx(s,{label:"Blend",children:e.jsx(l,{tone:"muted",children:`${o.fromCameraId??"current pose"} → ${o.toCameraId}`})}),e.jsx(s,{label:"Progress",children:e.jsx(l,{tone:"muted",children:`${Math.round(o.progress*100)}% · ${p?.toFixed(2)}s left`})})]}):null]})]})}const N="selection.inspector",B="Runtime Camera",G="camera",M=350;function O(n,t){return b(n,t)}function P({adapter:n,nodeId:t}){return e.jsx(g,{adapter:n,nodeId:t})}export{P as default,G as icon,O as match,M as order,N as point,B as title};
1
+ import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{a as x}from"./three-contract-Dkt6PmWY.js";import{fd as m,bQ as f,fe as j,ff as s,aL as l}from"./index-ClgrFOcX.js";import{r as u}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function h(n,t){const r=t?x(n.hierarchy,t):null;if(!r)return null;if(r.isCamera)return r;const i=r.userData._camera;return i?.isCamera?i:null}function b(n,t){return!!m()&&!!h(t,n?.id??null)}function C(n,t){return t.cameras.find(r=>r.nativeId===n.uuid)??t.cameras.find(r=>r.id===n.name||r.label===n.name)??null}function v(n){const[,t]=u.useReducer(r=>r+1,0);return u.useEffect(()=>{if(n)return n.subscribe(t)},[n]),n?.snapshot()??null}function g({adapter:n,nodeId:t}){const r=m(),i=v(r);if(!i)return null;const c=h(n,t);if(!c)return null;const a=C(c,i),d=a?.id===i.activeCameraId,o=i.transition,p=o?Math.max(0,o.durationSeconds-o.elapsedSeconds):null;return e.jsxs("div",{style:{display:"grid",gap:8},children:[a?null:e.jsx(f,{tone:"info",children:"This native camera is not registered with the active runtime controller."}),e.jsxs(j,{children:[e.jsx(s,{label:"Role",children:e.jsx(l,{tone:d?"success":"muted",children:d?"Active camera":a?"Registered camera":"Scene camera"})}),a?e.jsx(s,{label:"Runtime ID",children:e.jsx(l,{tone:"muted",children:a.id})}):null,a?.priority!==void 0?e.jsx(s,{label:"Priority",children:e.jsx(l,{tone:"muted",children:a.priority})}):null,a?.enabled!==void 0?e.jsx(s,{label:"Enabled",children:e.jsx(l,{tone:a.enabled?"success":"muted",children:a.enabled?"Yes":"No"})}):null,e.jsx(s,{label:"Active camera",children:e.jsx(l,{tone:"muted",children:i.activeCameraId??"None"})}),e.jsx(s,{label:"Controller",children:e.jsx(l,{tone:"muted",children:i.activeControllerId??"Gameplay / unowned"})}),e.jsx(s,{label:"Ownership depth",children:e.jsx(l,{tone:"muted",children:i.ownershipDepth})}),o?e.jsxs(e.Fragment,{children:[e.jsx(s,{label:"Blend",children:e.jsx(l,{tone:"muted",children:`${o.fromCameraId??"current pose"} → ${o.toCameraId}`})}),e.jsx(s,{label:"Progress",children:e.jsx(l,{tone:"muted",children:`${Math.round(o.progress*100)}% · ${p?.toFixed(2)}s left`})})]}):null]})]})}const N="selection.inspector",B="Runtime Camera",G="camera",M=350;function O(n,t){return b(n,t)}function P({adapter:n,nodeId:t}){return e.jsx(g,{adapter:n,nodeId:t})}export{P as default,G as icon,O as match,M as order,N as point,B as title};