@volter/game-editor 0.5.137 → 0.5.139

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 (296) 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 +2160 -2160
  5. package/dist/assets/{AssetBudgetPanel-BL_p9339.js → AssetBudgetPanel-CjuDQvXh.js} +3 -3
  6. package/dist/assets/{AudioViewer-DktnhlSH.js → AudioViewer-CNqYeRNi.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-6x0UaNM_.js → CanvasBoardDocument-CmNuR9ae.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-CXaAheg1.js → CanvasSceneViewport-DvTkPUgn.js} +1 -1
  9. package/dist/assets/{ColorInput-Ck8ADXk4.js → ColorInput-BwQW6U_s.js} +1 -1
  10. package/dist/assets/{ColorPicker-BtcHqHyy.js → ColorPicker-BW6cWcGu.js} +1 -1
  11. package/dist/assets/{EntityModelDocument-D4w8QNAC.js → EntityModelDocument-B45uREqB.js} +1 -1
  12. package/dist/assets/{EnvironmentAssetDocument-DhTi3IQ-.js → EnvironmentAssetDocument-8F0JNdiM.js} +1 -1
  13. package/dist/assets/{GameplaySessionTimeline-BLyAR9I-.js → GameplaySessionTimeline-fGpjyiDW.js} +1 -1
  14. package/dist/assets/{ImageViewer-4LK68Mzp.js → ImageViewer-lE0hupl1.js} +1 -1
  15. package/dist/assets/InspectorObjectPreview-DE5nmrtn.js +1 -0
  16. package/dist/assets/{JsonAssetDocument-Ba3AARH9.js → JsonAssetDocument-BzW0mX2D.js} +1 -1
  17. package/dist/assets/{LiveModuleDocument-B0v52dB_.js → LiveModuleDocument-C4KOPaQ2.js} +1 -1
  18. package/dist/assets/{LutAssetDocument-CnOyLKfL.js → LutAssetDocument-DM8eFFMW.js} +1 -1
  19. package/dist/assets/{ModelAssetDocument-ASZdz4mQ.js → ModelAssetDocument-B66Nc9mt.js} +1 -1
  20. package/dist/assets/{NonThreeAuthoringBootstrap-CyJz_Uzg.js → NonThreeAuthoringBootstrap-BNAfKZfR.js} +1 -1
  21. package/dist/assets/{Object3DDocumentToolbar-zfzaJ97n.js → Object3DDocumentToolbar-CPWckRgr.js} +1 -1
  22. package/dist/assets/Object3DDocumentViewport-BMrvQ5Kf.js +2 -0
  23. package/dist/assets/{Object3DPreview-BJx8e2ML.js → Object3DPreview-36lk0UIE.js} +1 -1
  24. package/dist/assets/{OnlineAssetDetail-DYP5Z4SJ.js → OnlineAssetDetail-B9BScq83.js} +1 -1
  25. package/dist/assets/{PlayBar-pY88toV-.js → PlayBar-DEZQZ-nr.js} +1 -1
  26. package/dist/assets/{QuarksAssetDocument-UpcHy-Ko.js → QuarksAssetDocument-BLOfOnE3.js} +1 -1
  27. package/dist/assets/{ReactCanvasControls-TrIfWJ2O.js → ReactCanvasControls-B1FLc-mq.js} +1 -1
  28. package/dist/assets/{RootSelectionOverlay-DnjTD4TF.js → RootSelectionOverlay-DM1Rf518.js} +1 -1
  29. package/dist/assets/{ShaderAssetDocument-BSaq0f1m.js → ShaderAssetDocument-BXbdllfL.js} +1 -1
  30. package/dist/assets/{ShadowEditor-CQtZYOhd.js → ShadowEditor-_VQupFN-.js} +1 -1
  31. package/dist/assets/{SourceAssetViewer-Ouz_rsDR.js → SourceAssetViewer-DMgNpg0D.js} +1 -1
  32. package/dist/assets/{StageHost-xOoPaNP8.js → StageHost-ludQj81x.js} +2 -2
  33. package/dist/assets/{StoryPreviewMount-DGSG6_5s.js → StoryPreviewMount-DUnK9kFG.js} +1 -1
  34. package/dist/assets/{ThreeBoardDocument-JliFAb0Z.js → ThreeBoardDocument-CE4_ot0k.js} +2 -2
  35. package/dist/assets/{ThreeIsolationSceneContent-CtoVkziE.js → ThreeIsolationSceneContent-BOLqBhuv.js} +1 -1
  36. package/dist/assets/{ToolObject3DPreview-Bddd1uZf.js → ToolObject3DPreview-CFpKP0XW.js} +1 -1
  37. package/dist/assets/{Toolbar-Cgj6k55f.js → Toolbar-Bp9rS6kO.js} +1 -1
  38. package/dist/assets/{TransientHint-D7vfvRJQ.js → TransientHint-DBoWuJlJ.js} +1 -1
  39. package/dist/assets/{VideoViewer-DzmUv4vH.js → VideoViewer-CFyD9Kgi.js} +1 -1
  40. package/dist/assets/{ViewportShadingMenu-CrYRegjG.js → ViewportShadingMenu-BkqTtt1s.js} +1 -1
  41. package/dist/assets/{active-ingest-rfjYHzRY.js → active-ingest-UClxAck1.js} +2 -2
  42. package/dist/assets/{animation-clock-DKIhFcpc.js → animation-clock-DL7eB0yc.js} +1 -1
  43. package/dist/assets/{animation-mixers.service-QJm98cl8.js → animation-mixers.service-53pK8xiS.js} +1 -1
  44. package/dist/assets/{animation-timeline.utility-DjyiOLlq.js → animation-timeline.utility-7M6hGJn-.js} +1 -1
  45. package/dist/assets/{asset-budget-asset.menu-Bpuw4snR.js → asset-budget-asset.menu-DS7nTJj-.js} +1 -1
  46. package/dist/assets/{asset-budget.action-DE1qa9UX.js → asset-budget.action-CLLlqLpV.js} +1 -1
  47. package/dist/assets/{asset-budget.document-PLvRNbkT.js → asset-budget.document-CBj__W_j.js} +1 -1
  48. package/dist/assets/{asset-budget.menu-P3WQXz-x.js → asset-budget.menu-Dpit56eW.js} +1 -1
  49. package/dist/assets/{asset-editor-persistence-BzU_i50i.js → asset-editor-persistence-Bug7RRIw.js} +1 -1
  50. package/dist/assets/{asset-loaders-5P-I_WtO.js → asset-loaders-D6nZhO7W.js} +1 -1
  51. package/dist/assets/{asset-preview-WRMmcji5.js → asset-preview-DuK7on8l.js} +1 -1
  52. package/dist/assets/{audio-unlock.service-fHheprK3.js → audio-unlock.service-B4S6nX06.js} +1 -1
  53. package/dist/assets/{audio.utility-D_wgDrnF.js → audio.utility-BpuEWRtk.js} +1 -1
  54. package/dist/assets/autoplay.service-QRbYvo5H.js +1 -0
  55. package/dist/assets/{babylon-authoring-adapter-7buVjhsC.js → babylon-authoring-adapter-DUiLnYTl.js} +1 -1
  56. package/dist/assets/{binding-resolver-PJ-UzNU0.js → binding-resolver-D9Q2MV2d.js} +2 -2
  57. package/dist/assets/{blender-motion-worker-Fh1GJrP5.js → blender-motion-worker-CtT2cV3V.js} +1 -1
  58. package/dist/assets/{blender-node-editor.document-Cu-XDG-U.js → blender-node-editor.document-CM46THXO.js} +1 -1
  59. package/dist/assets/{blender-properties-tab-CSIr_Xnv.js → blender-properties-tab-DsmyRjvf.js} +1 -1
  60. package/dist/assets/{blender-runtime-host-UnEz3oog.js → blender-runtime-host-CzU1tMpu.js} +3 -3
  61. package/dist/assets/{blender-runtime-skin-BnlKizA9.js → blender-runtime-skin-Cym5LZv7.js} +40 -40
  62. package/dist/assets/blender-runtime.document-BALwDLT4.js +13 -0
  63. package/dist/assets/{blender-screenshot.menu-BVgLdRPT.js → blender-screenshot.menu-DFKYLZFA.js} +1 -1
  64. package/dist/assets/{blender-timeline.document-C8Buhfyp.js → blender-timeline.document-jaXu4ErX.js} +1 -1
  65. package/dist/assets/{blender-uv-editor.document-B6aSgely.js → blender-uv-editor.document-CR8chOjw.js} +1 -1
  66. package/dist/assets/{blender-version.status-C-kPhqLX.js → blender-version.status-BMvh4Fb7.js} +1 -1
  67. package/dist/assets/{blender.command-C3f4bw0p.js → blender.command-2ZCwq83N.js} +1 -1
  68. package/dist/assets/{board-guides-Ml9DEFDa.js → board-guides-B9_M1_yw.js} +1 -1
  69. package/dist/assets/{bridge.command-D2GfRwUr.js → bridge.command-CY4biuRb.js} +3 -3
  70. package/dist/assets/{browserAll-CwzGZYUo.js → browserAll-BJ6HgrrM.js} +1 -1
  71. package/dist/assets/{build-player.document-DH8r8PeA.js → build-player.document-yfN6ppi_.js} +1 -1
  72. package/dist/assets/{build-profiles.document-6SnHN25M.js → build-profiles.document-C78x96wQ.js} +1 -1
  73. package/dist/assets/{build-progress.status-BQxNokOF.js → build-progress.status-CRH236cv.js} +1 -1
  74. package/dist/assets/{build-session-CSbFMBF0.js → build-session-B-jVkhsK.js} +1 -1
  75. package/dist/assets/{build.action-D4MsL_eY.js → build.action-CaOwQVWx.js} +1 -1
  76. package/dist/assets/{build.command-BZmpNto8.js → build.command-TZ1XDxzG.js} +1 -1
  77. package/dist/assets/{build.header-Syb9WDFM.js → build.header-uSfplnt6.js} +1 -1
  78. package/dist/assets/{build.menu-DvGfyNwX.js → build.menu-BaFMcWMc.js} +1 -1
  79. package/dist/assets/{build.service-CJYTWRI5.js → build.service-Cev-zNra.js} +1 -1
  80. package/dist/assets/{camera-BdEYklj4.js → camera-Bno1KyTP.js} +1 -1
  81. package/dist/assets/{camera-runtime.inspector-B9U5eaJU.js → camera-runtime.inspector-D86JI7ys.js} +1 -1
  82. package/dist/assets/{canvas-design-mount-CfRTHR3_.js → canvas-design-mount-C2Taz437.js} +3 -3
  83. package/dist/assets/{canvas-entry-runtime-Cz1IFMLY.js → canvas-entry-runtime-Bfp_EKOs.js} +2 -2
  84. package/dist/assets/{canvas-preview-frames-DlTC4_NO.js → canvas-preview-frames-CzoYoSt0.js} +1 -1
  85. package/dist/assets/{canvas-story-capture.service-8ytcJys1.js → canvas-story-capture.service-B_8qdRMx.js} +2 -2
  86. package/dist/assets/{capability-coverage-D9fdVGHT.js → capability-coverage-DzW3P6PB.js} +1 -1
  87. package/dist/assets/{collaboration-presence-DLo5KG7N.js → collaboration-presence-D56QA1uu.js} +1 -1
  88. package/dist/assets/{collider-De19qQYt.js → collider-2ycsuTVp.js} +1 -1
  89. package/dist/assets/{component-board.service-BZUdDL_6.js → component-board.service-CMSPFS7M.js} +2 -2
  90. package/dist/assets/{component-board.service-DKDFiWeQ.js → component-board.service-Cgr3rV5m.js} +2 -2
  91. package/dist/assets/{component-board.service-B7ZPTksI.js → component-board.service-qLwbD7ZX.js} +2 -2
  92. package/dist/assets/{component-contracts.service-BN6Ug2yr.js → component-contracts.service-DaycBgEy.js} +1 -1
  93. package/dist/assets/{component-instance-root-BrhAlO40.js → component-instance-root-BtcOmix2.js} +1 -1
  94. package/dist/assets/{component-verbs.command-CVLZeqca.js → component-verbs.command-CgASCZ_i.js} +1 -1
  95. package/dist/assets/{component-verbs.service-DgLWf18f.js → component-verbs.service-MYm0Fubr.js} +1 -1
  96. package/dist/assets/{config-DR7dzlXU.js → config-DAHx_OTe.js} +2 -2
  97. package/dist/assets/{configurations-DEDB_dKj.js → configurations-B_3y0ROf.js} +1 -1
  98. package/dist/assets/{connection.status-BbkaF6UL.js → connection.status-DdvXX0nH.js} +1 -1
  99. package/dist/assets/{constraints.inspector-fcxkrvCy.js → constraints.inspector-BEYExuvJ.js} +1 -1
  100. package/dist/assets/{content-bounds-BEFyyUiy.js → content-bounds-uy3hDTXw.js} +1 -1
  101. package/dist/assets/{contract-system-adapters-iyIfvDkn.js → contract-system-adapters-DbOhqD2p.js} +1 -1
  102. package/dist/assets/{coverage.service-BmqAe5c5.js → coverage.service-3wf81o3O.js} +1 -1
  103. package/dist/assets/{create-runtime-Da8OYAg-.js → create-runtime-B_RHkiy2.js} +1 -1
  104. package/dist/assets/{curve-Ddzez5Vr.js → curve-Cbvp5PDK.js} +1 -1
  105. package/dist/assets/{data-asset-BV-pPrWA.js → data-asset-S-DmCs5W.js} +1 -1
  106. package/dist/assets/{data-ref-DOTCUhZo.js → data-ref-Bkfs_TKL.js} +1 -1
  107. package/dist/assets/{debug-bridge-CIkqXPzr.js → debug-bridge-Dw_lsP-r.js} +1 -1
  108. package/dist/assets/{debug-registry-415hd00O.js → debug-registry-BhFgg7r8.js} +1 -1
  109. package/dist/assets/{deferred-ingest-play-CZPBCGiW.js → deferred-ingest-play-BV2x0R2h.js} +2 -2
  110. package/dist/assets/{design-time-canvas-mount-CfUqadSh.js → design-time-canvas-mount-Dt2zC5Ld.js} +2 -2
  111. package/dist/assets/{design-time-layers-DvFAZiug.js → design-time-layers-Bx9HWC84.js} +1 -1
  112. package/dist/assets/{design-time-mount.service-6O8QVOLk.js → design-time-mount.service-DRCUW2Mi.js} +2 -2
  113. package/dist/assets/{design-time-mount.service-DSpyKXsQ.js → design-time-mount.service-bOSnO2Tq.js} +2 -2
  114. package/dist/assets/{design-time-react-mount-Dg3K5Vb7.js → design-time-react-mount-B5uOG0H7.js} +1 -1
  115. package/dist/assets/{document-preview-three-BPKflnyl.js → document-preview-three-BfnCwrpV.js} +1 -1
  116. package/dist/assets/{dom-authoring-adapter-DYik4nhZ.js → dom-authoring-adapter-BSC2MYSr.js} +1 -1
  117. package/dist/assets/{draco3d-D16fVUb-.js → draco3d-Dyoe3IcD.js} +1 -1
  118. package/dist/assets/{edit-mode-audio.service-DJcJDwN2.js → edit-mode-audio.service-CoCle552.js} +1 -1
  119. package/dist/assets/{edit-mode-authoring-Xo-XlCo-.js → edit-mode-authoring-B2Kesn9N.js} +1 -1
  120. package/dist/assets/{edit-mode-networking.service-DL3gFnhh.js → edit-mode-networking.service-DtyT4MnP.js} +1 -1
  121. package/dist/assets/{editor-api-CgBS1q8m.js → editor-api-D2w0Wuf7.js} +1 -1
  122. package/dist/assets/{editor-layers-B2m320yv.js → editor-layers-dgmb9OkA.js} +1 -1
  123. package/dist/assets/{editor-shell-store-KdxXpGn2.js → editor-shell-store-OpESIM4a.js} +1 -1
  124. package/dist/assets/{entity-object-Fb_5ma2W.js → entity-object-B79hRIdx.js} +1 -1
  125. package/dist/assets/{extend-Dg2-Yn4w.js → extend-DCwSMDqN.js} +1 -1
  126. package/dist/assets/{fork-menu-2nyNwyH5.js → fork-menu-VNthv9S2.js} +1 -1
  127. package/dist/assets/{frame-debugger-store-BchZPtKz.js → frame-debugger-store-Ljo9g747.js} +1 -1
  128. package/dist/assets/{game-contract-seams-DsC0kgqW.js → game-contract-seams-DUJgCAbE.js} +1 -1
  129. package/dist/assets/{game-css-scope-transform-IwoTW2wL.js → game-css-scope-transform-CuwV1R3U.js} +1 -1
  130. package/dist/assets/{game-document.service-BPXrIDw7.js → game-document.service-CgOMkodb.js} +1 -1
  131. package/dist/assets/{game-eval.command-9FpuxL8M.js → game-eval.command-DqFJazUI.js} +1 -1
  132. package/dist/assets/{game-module-access-ILUGtYxr.js → game-module-access-DLq6IxVQ.js} +1 -1
  133. package/dist/assets/{game-network-XzrrmFxu.js → game-network-rngD8A9s.js} +3 -3
  134. package/dist/assets/{gameplay-export-Dspv1GeR.js → gameplay-export-yv4RxuAP.js} +1 -1
  135. package/dist/assets/{gameplay-replay-CbXPo27d.js → gameplay-replay-DXNRtWAq.js} +1 -1
  136. package/dist/assets/{gameplay.command-BKBSP3vj.js → gameplay.command-B9l-Zd_e.js} +1 -1
  137. package/dist/assets/{generation-jobs-DmvFJoGi.js → generation-jobs-DjMjddEZ.js} +1 -1
  138. package/dist/assets/{generation.service-OdP1uc_Z.js → generation.service-B65RZ3Xj.js} +1 -1
  139. package/dist/assets/{generations-CDC0nCMp.js → generations-BogXUq8R.js} +1 -1
  140. package/dist/assets/{generations.status-vLjKvn3M.js → generations.status-DQ-cKRbO.js} +1 -1
  141. package/dist/assets/{hierarchy-marks-CoHDypTm.js → hierarchy-marks--hCaQPWK.js} +1 -1
  142. package/dist/assets/{hosted-asset-materialization-Bu6ZSD3G.js → hosted-asset-materialization-E4oslMed.js} +1 -1
  143. package/dist/assets/{index-f15YYxWL.js → index-8Wua2fLA.js} +1 -1
  144. package/dist/assets/{index-CegDwrqy.js → index-B1cMcOkR.js} +1 -1
  145. package/dist/assets/{index-CW-rFhM9.js → index-BU5Wa6YB.js} +1 -1
  146. package/dist/assets/{index-mZfhIfBo.js → index-BY6LqkgI.js} +1 -1
  147. package/dist/assets/{index-DTcp0csp.js → index-BYv-VrM5.js} +1 -1
  148. package/dist/assets/{index-BbSc59SM.js → index-COR1kS33.js} +2 -2
  149. package/dist/assets/{index-DtBoG1rj.js → index-CQ2mBTB3.js} +7 -7
  150. package/dist/assets/{index-BGZtg4qx.js → index-DB3OomiZ.js} +1 -1
  151. package/dist/assets/{index-BO-5HjZp.js → index-sMqw9o3s.js} +1 -1
  152. package/dist/assets/{inference-diagnostics-BwRAwBLo.js → inference-diagnostics-H8BhQPo1.js} +1 -1
  153. package/dist/assets/{ingest-boot-viewport-BwrmXq_Z.js → ingest-boot-viewport-7rPgtMec.js} +1 -1
  154. package/dist/assets/{ingest-siblings-BHwW0Y6G.js → ingest-siblings-jS7uWpHB.js} +1 -1
  155. package/dist/assets/{ingest-source-persistence-Bxus4r_m.js → ingest-source-persistence-DAeIROgB.js} +1 -1
  156. package/dist/assets/{ingest.service-BPmlNzzN.js → ingest.service-slwcN_Zt.js} +1 -1
  157. package/dist/assets/{inspect-n7usfpI0.js → inspect-C5cLskKr.js} +1 -1
  158. package/dist/assets/instances.command-DXvKf1k6.js +1 -0
  159. package/dist/assets/{json-history-resource-PBHlLHjq.js → json-history-resource-Bm80nf1w.js} +1 -1
  160. package/dist/assets/{layered-pick-zvehRB0r.js → layered-pick-BN_u4vpH.js} +1 -1
  161. package/dist/assets/{light-C_3P4pkm.js → light-BPAKY7kG.js} +1 -1
  162. package/dist/assets/{live-project-verbs-C66qL2o8.js → live-project-verbs-BCv08_fa.js} +1 -1
  163. package/dist/assets/{machine.document-D_Z1ZtQu.js → machine.document-CEnp_rCc.js} +1 -1
  164. package/dist/assets/{machines.finder-DxdPh_ba.js → machines.finder-BER4T2lc.js} +1 -1
  165. package/dist/assets/{material-BRTLViDb.js → material-3JMiH9rk.js} +1 -1
  166. package/dist/assets/{material-factory-DmrPuGpc.js → material-factory-Du7WUqib.js} +1 -1
  167. package/dist/assets/{mesh-CEK9kyS-.js → mesh-DMH0PrCb.js} +1 -1
  168. package/dist/assets/{model-asset-sections.service-C7pxh8o5.js → model-asset-sections.service-CrwDT75X.js} +1 -1
  169. package/dist/assets/{model-inspection-C47zYRXN.js → model-inspection-RazLBT4Q.js} +1 -1
  170. package/dist/assets/{model-thumbnail-alzUeGJW.js → model-thumbnail-DlJcpPzi.js} +1 -1
  171. package/dist/assets/{models.finder-BODg0nu3.js → models.finder-DIFXBoQE.js} +1 -1
  172. package/dist/assets/{module-mode-DVD9yrV3.js → module-mode-BSqPULWZ.js} +2 -2
  173. package/dist/assets/{mount-canvas-ingest-root-DRhaTu2f.js → mount-canvas-ingest-root-DcHtUiIX.js} +2 -2
  174. package/dist/assets/{mount-dom-ingest-root-BLmIOkea.js → mount-dom-ingest-root-BT-SneoF.js} +2 -2
  175. package/dist/assets/{mount-ingest-root-BZiQxJ9V.js → mount-ingest-root-BWqm1g8h.js} +2 -2
  176. package/dist/assets/{mount-manifest-DFzKOvfW.js → mount-manifest-Dk2kIP9S.js} +1 -1
  177. package/dist/assets/{mount-three-ingest-root-DUld8xJM.js → mount-three-ingest-root-DC7XVSNu.js} +1 -1
  178. package/dist/assets/{mounted-authoring-QoImH9NK.js → mounted-authoring-42mbkzQk.js} +1 -1
  179. package/dist/assets/{mounted-story-viewport-source-8DJkHA5k.js → mounted-story-viewport-source-DNALyUeR.js} +1 -1
  180. package/dist/assets/{native-debug-module-BAqd-dXr.js → native-debug-module-2WtZMm25.js} +1 -1
  181. package/dist/assets/{navigation-Bq1Z3-ir.js → navigation-BiKzso-N.js} +1 -1
  182. package/dist/assets/{navmesh.menu-DgHzTiSs.js → navmesh.menu-CRpN60zw.js} +1 -1
  183. package/dist/assets/{navmesh.service-SVOGOUz2.js → navmesh.service-DrEBUXWK.js} +1 -1
  184. package/dist/assets/network-observer.service-B8KW6Gxu.js +1 -0
  185. package/dist/assets/{network.utility-B_B3xy8l.js → network.utility-Don7G5oX.js} +1 -1
  186. package/dist/assets/{object3d-document-session-registry-CP4s5KB0.js → object3d-document-session-registry-BhLWtMoZ.js} +2 -2
  187. package/dist/assets/{oid-transform-DKHBA9o4.js → oid-transform-B_w-y892.js} +1 -1
  188. package/dist/assets/{particles-UXw5izQB.js → particles-Bcxa0rSB.js} +1 -1
  189. package/dist/assets/{pixi-authoring-adapter-BcxL0BYE.js → pixi-authoring-adapter-DNLOjEpY.js} +1 -1
  190. package/dist/assets/{pixi-live-write-target-DrzWsBEE.js → pixi-live-write-target-BfoISjV8.js} +1 -1
  191. package/dist/assets/{play.command-fZVVrYk0.js → play.command-C75rc-GE.js} +2 -2
  192. package/dist/assets/{presentation-C6pRfr0U.js → presentation-BJiNf5OD.js} +1 -1
  193. package/dist/assets/{product-h0b06kAI.js → product-lR88S-ss.js} +1 -1
  194. package/dist/assets/{profiler.action-Y2ael4fH.js → profiler.action-Bb0chqRo.js} +1 -1
  195. package/dist/assets/{profiler.menu-CFuRCWtC.js → profiler.menu-BSEfnsIH.js} +1 -1
  196. package/dist/assets/{profiler.utility-CzyPY0d9.js → profiler.utility-BHTVOPh5.js} +1 -1
  197. package/dist/assets/{project-authoring-session-D-gOry2E.js → project-authoring-session-Cmgm10J-.js} +2 -2
  198. package/dist/assets/{properties-bone-constraints.inspector-DhC96Qoa.js → properties-bone-constraints.inspector-DzkkZoCm.js} +1 -1
  199. package/dist/assets/{properties-bone.inspector-VO_EqJyX.js → properties-bone.inspector-KyF4U4m5.js} +1 -1
  200. package/dist/assets/{properties-collection.inspector-BmMEhIUd.js → properties-collection.inspector-PVgsrACR.js} +1 -1
  201. package/dist/assets/{properties-constraints.inspector-DLeGNshb.js → properties-constraints.inspector-CaVHavgQ.js} +1 -1
  202. package/dist/assets/{properties-data.inspector-Cwt6L5ZJ.js → properties-data.inspector-7KR8NYvm.js} +1 -1
  203. package/dist/assets/{properties-material.inspector-D_rajHnK.js → properties-material.inspector-Dxzt8Xcs.js} +1 -1
  204. package/dist/assets/{properties-modifiers.inspector-g8dRw0AH.js → properties-modifiers.inspector-esK_INJG.js} +1 -1
  205. package/dist/assets/{properties-object.inspector-BlWog9Nj.js → properties-object.inspector-Twn0WNsN.js} +1 -1
  206. package/dist/assets/{properties-output.inspector-B6a0ypEj.js → properties-output.inspector-BpZE-DAu.js} +1 -1
  207. package/dist/assets/{properties-particles.inspector-BFx3A-Ut.js → properties-particles.inspector-DFMWK_pm.js} +1 -1
  208. package/dist/assets/{properties-physics.inspector-Dg14VcGF.js → properties-physics.inspector-ldvafNIb.js} +1 -1
  209. package/dist/assets/{properties-render.inspector-D7eL3b9i.js → properties-render.inspector-Bul6aacN.js} +1 -1
  210. package/dist/assets/{properties-scene.inspector-Di1i5s2V.js → properties-scene.inspector-HVMqQVke.js} +1 -1
  211. package/dist/assets/{properties-texture.inspector-BpKUFkJU.js → properties-texture.inspector-DVqbNfLB.js} +1 -1
  212. package/dist/assets/{properties-view-layer.inspector-iRU1UCfp.js → properties-view-layer.inspector-CWXcsbp9.js} +1 -1
  213. package/dist/assets/{properties-world.inspector-COriTCOM.js → properties-world.inspector-rIgkn5hU.js} +1 -1
  214. package/dist/assets/{r3f-design-session-CyPRQPI4.js → r3f-design-session-NIeKhBOo.js} +2 -2
  215. package/dist/assets/{r3f-physics-binding-lk3em8Wm.js → r3f-physics-binding-Bnz_0MBc.js} +1 -1
  216. package/dist/assets/{r3f-source-authoring-adapter-Btc18riQ.js → r3f-source-authoring-adapter-CmYnK9fs.js} +1 -1
  217. package/dist/assets/{react-canvas-navigation-BUlrUBT_.js → react-canvas-navigation-DgfbnHxA.js} +1 -1
  218. package/dist/assets/{react-inspector.service-elcIxOZw.js → react-inspector.service-DIEnbFP5.js} +1 -1
  219. package/dist/assets/{react-story-board-cY8HytUW.js → react-story-board-ChhZ3xMR.js} +1 -1
  220. package/dist/assets/{react-three-rapier.esm-C-5WZnSr.js → react-three-rapier.esm-CBGmsKYj.js} +1 -1
  221. package/dist/assets/{react-world-authoring-adapter-C3vr2gLt.js → react-world-authoring-adapter-CbLvc5Xf.js} +1 -1
  222. package/dist/assets/{realm-services-CsF_yUuF.js → realm-services-Hkd3KXxA.js} +1 -1
  223. package/dist/assets/{reflection-probe-capture.inspector-UcJvFDvH.js → reflection-probe-capture.inspector-BmLhQ6Rt.js} +1 -1
  224. package/dist/assets/{registry-D1oavyje.js → registry-f7eUI3vB.js} +1 -1
  225. package/dist/assets/{relative-import-specifier-B29yTSkd.js → relative-import-specifier-N1r5PU5l.js} +1 -1
  226. package/dist/assets/{render-env-Dpixh45P.js → render-env-BmsPMzMD.js} +1 -1
  227. package/dist/assets/{render-features-gn44fKvh.js → render-features-8WptNlDn.js} +1 -1
  228. package/dist/assets/{render-settings-DKGmm6kq.js → render-settings-k4Hd5jrC.js} +1 -1
  229. package/dist/assets/{resolve-three-CAER2bjG.js → resolve-three-B6AVoQHZ.js} +3 -3
  230. package/dist/assets/{root-seam-contract-B6eFnKke.js → root-seam-contract-8hLS1SBd.js} +1 -1
  231. package/dist/assets/{run-selection-DKYCyepK.js → run-selection-BelqeQ8J.js} +1 -1
  232. package/dist/assets/{scene-capture-Dg7EEuLE.js → scene-capture-CNkinvGl.js} +1 -1
  233. package/dist/assets/{scene-document.service-B2yASKIM.js → scene-document.service-BZNMZjtI.js} +2 -2
  234. package/dist/assets/{scene-framing-SWsxPJBi.js → scene-framing-BxR6xAtj.js} +1 -1
  235. package/dist/assets/{seeded-random-CEtBWcGM.js → seeded-random-BTfLEYmi.js} +1 -1
  236. package/dist/assets/{setup-renderer-qGSTEOxf.js → setup-renderer-Hy8DUu6u.js} +1 -1
  237. package/dist/assets/{source-object3d-authoring-adapter-DDf2LiHb.js → source-object3d-authoring-adapter-CabVbvF1.js} +1 -1
  238. package/dist/assets/{source-persistence-backend-n6iBHtCn.js → source-persistence-backend-DfO7BsJw.js} +1 -1
  239. package/dist/assets/{stage-keyboard-CEUI0aJF.js → stage-keyboard-Cch0eYUh.js} +1 -1
  240. package/dist/assets/{stage-overlay-set-BMZNNFo7.js → stage-overlay-set-DFAZ4FXc.js} +1 -1
  241. package/dist/assets/{stage-presence-markers-Be-3uk2P.js → stage-presence-markers-CMEeirt8.js} +1 -1
  242. package/dist/assets/{stage-transform-tools-CwzL9Mrg.js → stage-transform-tools-Czje_10c.js} +1 -1
  243. package/dist/assets/{standard-viewport-dressing-4sheVRrB.js → standard-viewport-dressing-DTn1Fpqc.js} +1 -1
  244. package/dist/assets/{state-watch.action-BMOgWw_r.js → state-watch.action-DXMjTYPm.js} +1 -1
  245. package/dist/assets/{state-watch.menu-DHz2lYB2.js → state-watch.menu-mvWgMuJs.js} +1 -1
  246. package/dist/assets/{state-watch.utility-BHvFSFqv.js → state-watch.utility-huAfMHMT.js} +1 -1
  247. package/dist/assets/{story-capture-DhspmQHC.js → story-capture-BfudQb8A.js} +1 -1
  248. package/dist/assets/{story-documents-XcMOkMyc.js → story-documents-Bb4raAKr.js} +1 -1
  249. package/dist/assets/{story-documents.service-D55EB4C8.js → story-documents.service-DhtikHPg.js} +1 -1
  250. package/dist/assets/{story-documents.service-DRYWr5hu.js → story-documents.service-DjMSTc_l.js} +1 -1
  251. package/dist/assets/{story-media-presence-B2yzrh2l.js → story-media-presence-Dw2XtQ1w.js} +1 -1
  252. package/dist/assets/{story-pixi-preview-Bx0Rm8cy.js → story-pixi-preview-CNosFkIF.js} +1 -1
  253. package/dist/assets/{story-presentation-CbLklcbQ.js → story-presentation-BqyC-AzE.js} +1 -1
  254. package/dist/assets/{story-three-preview-BzuEMwmb.js → story-three-preview-DqncZLn4.js} +2 -2
  255. package/dist/assets/{studio-environment-CbxnE0zY.js → studio-environment-CR1cIDh0.js} +1 -1
  256. package/dist/assets/{surface-state-Dzjt3A8F.js → surface-state-CG7Ou_Jh.js} +1 -1
  257. package/dist/assets/{syntactic-prop-specs-CoiAhDuA.js → syntactic-prop-specs-aeB8_VU3.js} +1 -1
  258. package/dist/assets/{team-playtest.service-BWPuwLfQ.js → team-playtest.service-pb1LDXeP.js} +1 -1
  259. package/dist/assets/{three-YQlLm7Hb.js → three-D94Cuk32.js} +1 -1
  260. package/dist/assets/{three-authoring-adapter-CF52vBGj.js → three-authoring-adapter-BUj0tjgD.js} +1 -1
  261. package/dist/assets/three-authoring.service-p9it1aT8.js +2 -0
  262. package/dist/assets/{three-ingest-runtime-6f6Gp0Y-.js → three-ingest-runtime-DxmN_s10.js} +1 -1
  263. package/dist/assets/{three-integration-BL2B62jS.js → three-integration-BiI_lkIf.js} +2 -2
  264. package/dist/assets/three-integration.service-D3CYzRfO.js +1 -0
  265. package/dist/assets/{three-projection-core-BQ1xGj2a.js → three-projection-core-C7CgCiKg.js} +1 -1
  266. package/dist/assets/{three-state-D1y7vgTW.js → three-state-CXVRdni_.js} +1 -1
  267. package/dist/assets/{three-story-capture.service-DkJBT2Hq.js → three-story-capture.service-CsTBiEBK.js} +2 -2
  268. package/dist/assets/{three-story-model-BJUSLuUT.js → three-story-model-AMTDnnn-.js} +1 -1
  269. package/dist/assets/{three-viewport-presentation-D0OO-lGJ.js → three-viewport-presentation-DbG0uCGP.js} +1 -1
  270. package/dist/assets/{transform-mode-request-DIxkCD7e.js → transform-mode-request-LePIz6b6.js} +1 -1
  271. package/dist/assets/{transport-strip-YMlmStOb.js → transport-strip-DnuulxI4.js} +1 -1
  272. package/dist/assets/transport.header-CwcmYZNa.js +1 -0
  273. package/dist/assets/{tuples-7Iv2poqO.js → tuples-CNWCQlPR.js} +1 -1
  274. package/dist/assets/{ui-board-document-BL_1sf8L.js → ui-board-document-BBrzbh95.js} +2 -2
  275. package/dist/assets/{user-data-VvdppiN3.js → user-data-Bs7aRC-I.js} +1 -1
  276. package/dist/assets/{utility-view-state-j8fWSxfE.js → utility-view-state-96_iVt4c.js} +1 -1
  277. package/dist/assets/{viewport-door-CzxBXviv.js → viewport-door-d0NZ7oI-.js} +1 -1
  278. package/dist/assets/{viewport-root-presentation-BHaFMAFg.js → viewport-root-presentation-Bqr2fF0N.js} +1 -1
  279. package/dist/assets/{viewport-surface-status-Ekln2Geu.js → viewport-surface-status-Baan57-I.js} +1 -1
  280. package/dist/assets/{webworkerAll-BIolANfO.js → webworkerAll-C5Q6lZd-.js} +1 -1
  281. package/dist/assets/{workspace-arrangement-Cnx-VVZC.js → workspace-arrangement-rUj27SGX.js} +1 -1
  282. package/dist/assets/{world-documents-DdvjqwxD.js → world-documents-D7UiOblt.js} +1 -1
  283. package/dist/assets/{world-root-stage-binding-BoU0XTOU.js → world-root-stage-binding-Bn462UiR.js} +1 -1
  284. package/dist/assets/{xstate-animation-binding-C9x3BMf5.js → xstate-animation-binding-jpldSq-l.js} +1 -1
  285. package/dist/assets/{xstate-animation-meta-C3ijI6qG.js → xstate-animation-meta-B2NNMu30.js} +1 -1
  286. package/dist-node/cli.js +16 -16
  287. package/package.json +16 -16
  288. package/dist/assets/InspectorObjectPreview-9nlNQgIy.js +0 -1
  289. package/dist/assets/Object3DDocumentViewport-BMFELBeB.js +0 -2
  290. package/dist/assets/autoplay.service-0YppfrGb.js +0 -1
  291. package/dist/assets/blender-runtime.document-4nEvfoQT.js +0 -13
  292. package/dist/assets/instances.command-DyDJzCEI.js +0 -1
  293. package/dist/assets/network-observer.service-BxbPYgIs.js +0 -1
  294. package/dist/assets/three-authoring.service-CxhLAY2B.js +0 -2
  295. package/dist/assets/three-integration.service-DR85cZzE.js +0 -1
  296. package/dist/assets/transport.header-CbZJlLY1.js +0 -1
@@ -1,7 +1,7 @@
1
- import{r as E,ls as yt}from"./index-DtBoG1rj.js";import{a as bt}from"./preview-renderer-BrYNFV1p.js";import{v as Mt}from"./output-pass-HurwNl0G.js";import{_ as vt,fx as De,bi as Ue,aC as xt,d7 as Et,ej as kt,cP as be,el as St,cm as Bt,cl as Ve,fo as ue,ex as Ct,d5 as At,d9 as It,cJ as jt,e as We}from"./three.core-3arARmh6.js";import{f as Tt}from"./clip-planes-CnAI6DZn.js";import{a as Lt}from"./content-bounds-BEFyyUiy.js";const Ft=1024*1024,Ge={Uint8Array,Int8Array,Uint16Array,Int16Array,Uint32Array,Int32Array,Float32Array,Float64Array},_t=async t=>Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",t)),e=>e.toString(16).padStart(2,"0")).join("");class $t{constructor(){this.buffers=null,this.offsets=[]}reset(){this.buffers=null,this.offsets=[]}async accept(e){try{if(e.kind==="begin"){if(this.buffers)throw new Error("A frame value is already arriving");if(!e.lengths.length||e.lengths.length>4096||e.lengths.reduce((s,o)=>s+o,0)>2*1024**3||e.lengths.some(s=>!Number.isSafeInteger(s)||s<0||s>1024**3))throw new Error("Invalid frame buffer lengths");this.buffers=e.lengths.map(s=>new Uint8Array(s)),this.offsets=e.lengths.map(()=>0);return}if(!this.buffers)throw new Error("Frame chunk arrived without its manifest");if(e.kind==="bytes"){const s=this.buffers[e.slot];if(!s||!Number.isSafeInteger(e.offset)||e.offset!==this.offsets[e.slot]||e.bytes.byteLength>Ft||!e.bytes.byteLength||e.offset+e.bytes.byteLength>s.byteLength)throw new Error("Frame chunk is out of order or exceeds its bound");if(await _t(e.bytes)!==e.sha256)throw new Error("Frame chunk digest mismatch");s.set(e.bytes,e.offset),this.offsets[e.slot]=e.offset+e.bytes.byteLength;return}if(e.kind!=="end")throw new Error("Unknown frame chunk");const n=this.buffers;if(n.some((s,o)=>s.length!==this.offsets[o]))throw new Error("Frame value is incomplete");const r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(n[0]),(s,o)=>{if(!o||typeof o!="object"||!("$frameColumn"in o))return o;const a=n[o.$frameColumn],i=Ge[o.type];if(!Number.isSafeInteger(o.$frameColumn)||o.$frameColumn<1||!a||!Object.hasOwn(Ge,o.type)||!i||a.byteLength%i.BYTES_PER_ELEMENT)throw new Error("Invalid frame column descriptor");return new i(a.buffer)});return this.reset(),{value:r}}catch(n){throw this.reset(),n}}}const ze=4096;class Rt{#r;#o;#a=[];#n=new Map;#$=0;#h=null;#i=null;#l=!1;#k=!1;#S=e=>{!this.#k&&this.#y===0||(e.preventDefault(),e.returnValue="")};#f=new Map;#p=new Map;#w="engine-start";#B=null;#v=new Set;#g=null;#x=0;#C=0;#A=0;#c=null;#I=null;#u=null;constructor(e){this.#o=e,this.#r=new Worker(new URL("/assets/worker-CdXe6YZE.js",import.meta.url),{type:"module",name:"blender"}),globalThis.addEventListener?.("beforeunload",this.#S),this.#r.onmessage=n=>void this.#_(n.data),this.#r.onerror=n=>{const r=n.error,s=n.filename?` at ${n.filename}:${n.lineno}:${n.colno}`:"",o=r?.stack??r?.message??n.message,a=this.#a.length>0?`
1
+ import{r as M,ls as bt}from"./index-CQ2mBTB3.js";import{a as Mt}from"./preview-renderer-BrYNFV1p.js";import{v as vt}from"./output-pass-HurwNl0G.js";import{_ as xt,fx as De,bi as Ue,aC as Et,d7 as kt,ej as St,cP as be,el as Bt,cm as Ct,cl as Ve,fo as ue,ex as At,d5 as It,d9 as jt,cJ as Tt,e as We}from"./three.core-3arARmh6.js";import{f as Lt}from"./clip-planes-CnAI6DZn.js";import{a as Ft}from"./content-bounds-uy3hDTXw.js";const _t=1024*1024,Ge={Uint8Array,Int8Array,Uint16Array,Int16Array,Uint32Array,Int32Array,Float32Array,Float64Array},$t=async t=>Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",t)),e=>e.toString(16).padStart(2,"0")).join("");class Rt{constructor(){this.buffers=null,this.offsets=[]}reset(){this.buffers=null,this.offsets=[]}async accept(e){try{if(e.kind==="begin"){if(this.buffers)throw new Error("A frame value is already arriving");if(!e.lengths.length||e.lengths.length>4096||e.lengths.reduce((s,o)=>s+o,0)>2*1024**3||e.lengths.some(s=>!Number.isSafeInteger(s)||s<0||s>1024**3))throw new Error("Invalid frame buffer lengths");this.buffers=e.lengths.map(s=>new Uint8Array(s)),this.offsets=e.lengths.map(()=>0);return}if(!this.buffers)throw new Error("Frame chunk arrived without its manifest");if(e.kind==="bytes"){const s=this.buffers[e.slot];if(!s||!Number.isSafeInteger(e.offset)||e.offset!==this.offsets[e.slot]||e.bytes.byteLength>_t||!e.bytes.byteLength||e.offset+e.bytes.byteLength>s.byteLength)throw new Error("Frame chunk is out of order or exceeds its bound");if(await $t(e.bytes)!==e.sha256)throw new Error("Frame chunk digest mismatch");s.set(e.bytes,e.offset),this.offsets[e.slot]=e.offset+e.bytes.byteLength;return}if(e.kind!=="end")throw new Error("Unknown frame chunk");const n=this.buffers;if(n.some((s,o)=>s.length!==this.offsets[o]))throw new Error("Frame value is incomplete");const r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(n[0]),(s,o)=>{if(!o||typeof o!="object"||!("$frameColumn"in o))return o;const a=n[o.$frameColumn],i=Ge[o.type];if(!Number.isSafeInteger(o.$frameColumn)||o.$frameColumn<1||!a||!Object.hasOwn(Ge,o.type)||!i||a.byteLength%i.BYTES_PER_ELEMENT)throw new Error("Invalid frame column descriptor");return new i(a.buffer)});return this.reset(),{value:r}}catch(n){throw this.reset(),n}}}const ze=4096;class Ot{#r;#o;#a=[];#n=new Map;#$=0;#h=null;#i=null;#l=!1;#k=!1;#S=e=>{!this.#k&&this.#y===0||(e.preventDefault(),e.returnValue="")};#f=new Map;#p=new Map;#w="engine-start";#B=null;#v=new Set;#g=null;#x=0;#C=0;#A=0;#c=null;#I=null;#u=null;constructor(e){this.#o=e,this.#r=new Worker(new URL("/assets/worker-CdXe6YZE.js",import.meta.url),{type:"module",name:"blender"}),globalThis.addEventListener?.("beforeunload",this.#S),this.#r.onmessage=n=>void this.#_(n.data),this.#r.onerror=n=>{const r=n.error,s=n.filename?` at ${n.filename}:${n.lineno}:${n.colno}`:"",o=r?.stack??r?.message??n.message,a=this.#a.length>0?`
2
2
  Blender's last output:
3
3
  ${this.#a.join(`
4
- `)}`:"",i=this.#u===null?null:Math.round(this.#u/1048576),c=i!==null&&i>=ze-16?`Blender ran out of memory: its heap reached ${i} MB of the in-tab engine's ${ze} MB, and this scene needs more. `:"",u=new Error(`${c}Blender worker failed: ${o||"the worker script did not load"}${s}${a}`);console.error(u.message);for(const l of[...this.#n.keys()])this.#m(l);for(const l of this.#n.values())l.reject(u);this.#n.clear(),this.terminate()}}#s=null;#d=null;get project(){return this.#s}get document(){return this.#d}get lastOutput(){return[...this.#a]}start(e,n){return this.#s!==null&&this.#s!==e?Promise.reject(new Error(`The Blender session is bound to ${this.#s}, not ${e}`)):n!==void 0&&this.#d!==null&&this.#d!==n?Promise.reject(new Error(`Blender resource conflict: the session holds ${this.#d}; cannot open ${n}`)):(this.#s=e,this.#d??=n??"models/model.blend",this.#h??=this.#e({op:"start",project:e,...n===void 0?{}:{document:n}}),this.#h)}#t(){return this.#s===null?Promise.reject(new Error("The Blender session has not been started with a project (blender-start)")):this.start(this.#s)}async execute(e,n=!0,r="Blender Python"){return await this.#t(),await this.#e({op:"execute",code:e,history:n,label:r})}async historyGesture(e){await this.#t(),await this.#e({op:e})}async historyStep(e,n){return await this.#t(),(await this.#e({op:"history-step",token:e,direction:n})).moved}async sceneInfo(){return await this.#t(),await this.#e({op:"scene-info"})}async objectInfo(e){return await this.#t(),await this.#e({op:"object-info",name:e})}async rna(e,n){return await this.#t(),await this.#e({op:"rna",path:e,...n===void 0?{}:{names:n}})}async rnaContext(e,n){return await this.#t(),await this.#e({op:"rna-context",...e===void 0?{}:{object:e},...n===void 0?{}:{collection:n}})}async rnaSet(e,n,r,s,o=!0){return await this.#t(),await this.#e({op:"rna-set",history:o,path:e,property:n,value:r,...s===void 0?{}:{index:s}})}async viewShading(e){await this.#t(),await this.#e({op:"view-shading",shading:e})}async outliner(e){return await this.#t(),await this.#e({op:"outliner",...e===void 0?{}:{selected:e}})}async nodeTree(e){return await this.#t(),await this.#e({op:"node-tree",...e?.path===void 0?{}:{path:e.path},...e?.material===void 0?{}:{material:e.material}})}async uvLayout(e){return await this.#t(),await this.#e({op:"uv-layout",...e?.object===void 0?{}:{object:e.object},...e?.uvLayer===void 0?{}:{uvLayer:e.uvLayer}})}async rig(e){return await this.#t(),await this.#e({op:"rig",...e?.object===void 0?{}:{object:e.object}})}async actionClip(e){return await this.#t(),await this.#e({op:"action-clip",...e?.object===void 0?{}:{object:e.object},...e?.bake===void 0?{}:{bake:e.bake}})}async outlinerSet(e,n,r){return await this.#t(),await this.#e({op:"outliner-set",path:e,column:n,value:r})}async present(){await this.#t(),await this.#e({op:"present"})}async screenshotView(e){return await this.#t(),await this.#e({op:"screenshot-view",maxSize:e})}async readFile(e){return await this.#t(),await this.#e({op:"read-file",path:e})}async writeFile(e,n){await this.#t(),await this.#e({op:"write-file",path:e,bytes:n})}async listFiles(e){return await this.#t(),await this.#e({op:"list-files",path:e})}get presented(){return this.#I}stop(){return this.#l?Promise.resolve():this.#i?this.#i:(this.#i=(async()=>{(this.#h?await this.#h.then(()=>!0,()=>!1):!1)&&await this.#e({op:"flush-document"},!0),this.terminate()})().catch(e=>{throw this.#i=null,e}),this.#i)}terminate(){if(this.#M(),this.#l)return;this.#l=!0,globalThis.removeEventListener?.("beforeunload",this.#S);const e=this.#E("terminating worker");try{this.#r.terminate()}finally{e()}const n=new Error("The Blender session was terminated");for(const r of[...this.#n.keys()])this.#m(r);for(const r of this.#n.values())r.reject(n);this.#n.clear();for(const r of this.#v)r()}metrics(e=performance.now()){let n=null,r=this.#x,s=this.#B,o=this.#C,a=this.#A;for(const[i,c]of this.#f){const u=e-c;(n===null||u>n)&&(n=u),u>r&&(r=u,s=this.#p.get(i)??null),u>=5e3&&(o+=1),u>=3e4&&(a+=1)}return{inFlightMs:n===null?null:Math.round(n),lastCallMs:this.#g===null?null:Math.round(this.#g),maxCallMs:this.#g===null&&n===null?null:Math.round(r),maxCallLabel:s,currentPhase:this.#y?this.#w:null,completedCalls:this.#j,callsOver5s:o,callsOver30s:a,lastCallWindow:this.#c,wasmMemoryMB:this.#u===null?null:Math.round(this.#u/1048576)}}#m(e){const n=this.#f.get(e);if(n===void 0)return;this.#f.delete(e);const r=this.#p.get(e)??null;this.#p.delete(e),this.#j++;const s=performance.now()-n;this.#g=s,s>this.#x&&(this.#x=s,this.#B=r),s>=5e3&&(this.#C+=1),s>=3e4&&(this.#A+=1),this.#c!==null&&this.#c.start===n&&(this.#c={start:n,end:n+s})}#j=0;#y=0;#T=Promise.resolve();#e(e,n=!1){if(this.#l||this.#i&&!n)return Promise.reject(new Error("The Blender session is stopping or terminated"));const r=performance.now();let s=()=>{};this.#y++;const o=this.#T.then(async()=>{const a=this.#E(`running worker ${e.op}`);s=()=>{this.#v.delete(s)&&a()},this.#v.add(s),this.#w=e.op;let i=await this.#L(e);for(;i?.load==="continue";)this.#w=i.phase,i=await this.#L({op:"load-next",token:i.token});return i?.load==="done"?i.value:i}).finally(()=>{this.#y--,s();const a=Math.round(performance.now()-r);try{a>=1e3&&this.#o.log?.("log",`@@VOLTER-WORK op=${e.op} totalMs=${a}`)}catch{}});return this.#T=o.then(()=>{},()=>{}),o}#L(e){if(this.#l)return Promise.reject(new Error("The Blender session is terminated"));const n=++this.#$;return new Promise((r,s)=>{this.#n.set(n,{resolve:r,reject:s});const o=performance.now();this.#f.set(n,o),this.#p.set(n,e.op==="load-next"?`load-next after ${this.#w}`:e.op),this.#c={start:o,end:null};try{this.#r.postMessage({...e,id:n})}catch(a){this.#n.delete(n),this.#m(n),s(a instanceof Error?a:new Error(String(a)))}})}#E(e){try{const n=this.#o.work?.(e);return()=>{try{n?.()}catch{}}}catch{return()=>{}}}#F=new $t;#b=null;#M(){this.#F.reset();const e=this.#b;if(this.#b=null,e)try{Promise.resolve(this.#o.stage?.({...e,abort:!0})).catch(()=>{})}catch{}}async#_(e){if("op"in e){if(e.op==="frame-stream"){try{const o=await this.#F.accept(e.chunk);if(o){const a=o.value;if(a.op==="present"){await this.#_({...a,id:e.id});return}if(a.op!=="stage"||!this.#o.stage)throw new Error("The presenter does not support staged Blender frames");this.#b={session:a.session,revision:a.revision},await this.#o.stage(a)}this.#r.postMessage({op:"present-result",id:e.id})}catch(o){this.#M(),this.#r.postMessage({op:"present-result",id:e.id,error:o instanceof Error?o.message:String(o)})}return}if(e.op==="document-dirty"){this.#k=e.dirty;return}if(e.op==="history"){this.#o.history?.(e.entries);return}if(e.op==="log"){this.#a.push(e.text),this.#a.length>12&&this.#a.shift(),this.#o.log?.(e.level,e.text);return}if(e.op==="memory"){this.#u=e.bytes;return}const r=e.frame;typeof r?.session=="string"&&typeof r.revision=="number"&&(this.#I={session:r.session,revision:r.revision});const s=this.#E("presenting worker frame");try{const o=await this.#o.present(e.frame,e.description,e.capture);this.#b=null,this.#r.postMessage({op:"present-result",id:e.id,...o?.capture===void 0?{}:{capture:o.capture},...o!=null&&"held"in o?{held:o.held}:{}})}catch(o){this.#M(),this.#r.postMessage({op:"present-result",id:e.id,error:o instanceof Error?o.message:String(o)})}finally{s()}return}"error"in e&&this.#M();const n=this.#n.get(e.id);n&&(this.#n.delete(e.id),this.#m(e.id),"error"in e?n.reject(new Error(e.error)):n.resolve(e.result))}}const Ot="/assets/agx-base-srgb-BjWZJgrZ.lut",Nt="/assets/agx-look-medium-high-contrast-D5F_ob1L.lut",Pt="/assets/agx-look-punchy-dxsnycNs.lut",Dt="/assets/filmic-srgb-Ct35FIH6.lut",L=new Float64Array(12),qe=[0,0,0],O=new Float64Array(3),X=new Float64Array(3),F=new Int8Array([1,0,0,1,1,0,0,1,2,1,0,0,1,0,1,0,2,1,0,0,1,1,0,1,2,0,1,0,0,1,0,1,1,2,1,0,0,1,0,0,1,1,1,2,0,0,1,0,1,1,0,1,0,2]);function Ut(t,e,n){return t>e?e>n?0:t>n?1:2:n>e?3:n>t?4:5}function Je(t,e,n,r,s){const o=e*e,a=Math.min(1,Math.max(0,n))*(e-1),i=Math.min(1,Math.max(0,r))*(e-1),c=Math.min(1,Math.max(0,s))*(e-1),u=Math.min(Math.floor(a),e-2),l=Math.min(Math.floor(i),e-2),d=Math.min(Math.floor(c),e-2),k=a-u,m=i-l,S=c-d,b=(h,g,T,I)=>{const w=(u+g+(l+T)*e+(d+I)*o)*3;L[h]=t[w]/65535,L[h+1]=t[w+1]/65535,L[h+2]=t[w+2]/65535};b(0,0,0,0),b(9,1,1,1),O[0]=k,O[1]=m,O[2]=S;const p=Ut(k,m,S)*9;b(3,F[p],F[p+1],F[p+2]),b(6,F[p+3],F[p+4],F[p+5]);const A=O[F[p+6]],v=O[F[p+7]],f=O[F[p+8]];for(let h=0;h<3;h++){const g=L[h];qe[h]=g+A*(L[3+h]-g)+v*(L[6+h]-L[3+h])+f*(L[9+h]-L[6+h])}return qe}function Y(t){const e=t&32768?-1:1,n=t>>10&31,r=t&1023;return n===0?e*2**-24*r:n===31?r?Number.NaN:e*Number.POSITIVE_INFINITY:e*2**(n-15)*(1+r/1024)}function je(t,e,n,r){const s=new Uint8ClampedArray(e*4);for(let o=0;o<e;o++){const a=o*4,i=Y(t[a+3]),c=i===0?n:n/i;X[0]=Y(t[a])*c,X[1]=Y(t[a+1])*c,X[2]=Y(t[a+2])*c;const u=r(X);s[a]=Math.round(u[0]*255),s[a+1]=Math.round(u[1]*255),s[a+2]=Math.round(u[2]*255),s[a+3]=Math.round(Math.min(1,Math.max(0,i))*255)}return s}function Vt(t){return new URL(Object.assign({"./agx-base-srgb.lut":Ot,"./agx-look-medium-high-contrast.lut":Nt,"./agx-look-punchy.lut":Pt,"./filmic-srgb.lut":Dt})[`./${t.replace(/\.lut$/,"")}.lut`],import.meta.url)}const Wt=57,_=-12.47393,Qe=12.5260688117,Gt=[[.4123908,.3575843,.1804808],[.212639,.7151687,.0721923],[.0193308,.1191948,.9505322]],zt=[[1.5250528,-.3159135,-.1226583],[-.5091526,1.3333274,.1382844],[.0957153,.0508974,.7879558]];function He(t,e,n){const r=e[0],s=e[1],o=e[2];n[0]=t[0][0]*r+t[0][1]*s+t[0][2]*o,n[1]=t[1][0]*r+t[1][1]*s+t[1][2]*o,n[2]=t[2][0]*r+t[2][1]*s+t[2][2]*o}const Z=new Float64Array(3),Xe=new Float64Array(3),K=[0,0,0];function de(t){const e=Math.min(1,Math.max(0,t));return e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055}function et(t,e,n,r){return Je(t,Wt,e,n,r)}function qt(t,e){He(Gt,e,Xe),He(zt,Xe,Z);const n=Qe-_,r=et(t,(Math.log2(Math.max(Z[0],1e-10))-_)/n,(Math.log2(Math.max(Z[1],1e-10))-_)/n,(Math.log2(Math.max(Z[2],1e-10))-_)/n);return K[0]=de(Math.max(0,r[0])**2.4),K[1]=de(Math.max(0,r[1])**2.4),K[2]=de(Math.max(0,r[2])**2.4),K}const Ht={"AgX - Medium High Contrast":"agx-look-medium-high-contrast.lut","AgX - Punchy":"agx-look-punchy.lut"};function Xt(t,e){const n=Qe-_;return et(t,(Math.log2(Math.max(e[0],1e-10))-_)/n,(Math.log2(Math.max(e[1],1e-10))-_)/n,(Math.log2(Math.max(e[2],1e-10))-_)/n)}function Yt(t,e,n,r={}){const s=r.exposure??1,o=r.composedLook===!0?Xt:qt;return je(e,n,s,a=>o(t,a))}const tt=33,Me=tt**3*3,ve=4096,he=-12.473931188,fe=25;function pe(t,e){const n=Math.min(1,Math.max(0,e))*(ve-1),r=Math.min(Math.floor(n),ve-2),s=n-r;return((1-s)*t[Me+r]+s*t[Me+r+1])/65535}const J=[0,0,0];function Zt(t,e){const n=Je(t,tt,(Math.log2(Math.max(e[0],1e-10))-he)/fe,(Math.log2(Math.max(e[1],1e-10))-he)/fe,(Math.log2(Math.max(e[2],1e-10))-he)/fe);return J[0]=pe(t,n[0]/.66),J[1]=pe(t,n[1]/.66),J[2]=pe(t,n[2]/.66),J}function Kt(t,e,n,r){if(t.length!==Me+ve)throw new Error("Invalid Blender Filmic display table");return je(e,n,r,s=>Zt(t,s))}const W=2.4,$=.055,nt=$/(W-1),Jt=1/(W/(1+$)*((nt+$)/(1+$))**(W-1)),Qt=((nt+$)/(1+$))**W;function we(t){return t>0?t<Qt?t*Jt:(1+$)*t**(1/W)-$:0}const Q=[0,0,0];function en(t){return Q[0]=we(t[0]),Q[1]=we(t[1]),Q[2]=we(t[2]),Q}function tn(t,e,n){return je(t,e,n,en)}function rt(t,e,n,r){if(!Number.isFinite(n.width)||!Number.isFinite(n.height)||n.width<1||n.height<1)throw new Error("Scene capture requires finite positive dimensions");const s=Math.min(2048,Math.round(n.width)),o=Math.min(2048,Math.round(n.height)),a=r?1:2,i=s*a,c=o*a,u=bt(),l=u.renderer,d={target:l.getRenderTarget(),toneMapping:l.toneMapping,exposure:l.toneMappingExposure,colorSpace:l.outputColorSpace,shadows:l.shadowMap.enabled,shadowType:l.shadowMap.type,clearColor:l.getClearColor(new vt),clearAlpha:l.getClearAlpha(),background:t.background};let k,m,S=!1;try{k=new De(i,c,{type:Ue}),n.effect&&(k.depthTexture=new xt(i,c)),l.shadowMap.enabled=!0,l.shadowMap.type=Et,l.outputColorSpace=kt,l.toneMapping=n.toneMapping??be,l.toneMappingExposure=n.exposure??1,l.setClearColor(0,n.transparent?0:1),n.transparent&&(t.background=null),l.setRenderTarget(k),l.clear(),l.render(t,e);const b=n.effect?.render(l,k,t,e)??k;if(b.texture.type!==Ue||b.width!==i||b.height!==c)throw new Error("Scene capture effect must return a same-size half-float target");if(r){const w=new Uint16Array(i*c*4);return l.readRenderTargetPixels(b,0,0,i,c,w),S=!0,{pixels:w,width:s,height:o}}m=new De(i,c),Mt(n.transparent===!0).render(l,m,b,0,!1);const p=new Uint8Array(i*c*4);l.readRenderTargetPixels(m,0,0,i,c,p);const A=document.createElement("canvas");A.width=i,A.height=c;const v=A.getContext("2d");if(!v)throw new Error("Scene capture could not create an image canvas");const f=v.createImageData(i,c),h=i*4;for(let w=0;w<c;w++)f.data.set(p.subarray((c-1-w)*h,(c-w)*h),w*h);v.putImageData(f,0,0);const g=document.createElement("canvas");g.width=s,g.height=o;const T=g.getContext("2d");if(!T)throw new Error("Scene capture could not create an output canvas");T.drawImage(A,0,0,s,o);const I=g.toDataURL("image/png");return S=!0,I}finally{t.background=d.background,l.setRenderTarget(d.target),l.toneMapping=d.toneMapping,l.toneMappingExposure=d.exposure,l.outputColorSpace=d.colorSpace,l.shadowMap.enabled=d.shadows,l.shadowMap.type=d.shadowType,l.setClearColor(d.clearColor,d.clearAlpha),m?.dispose(),k?.dispose(),u.release({discard:!S})}}function nn(t,e,n){return rt(t,e,n,!0)}function rn(t,e,n){return rt(t,e,n,!1)}const on=t=>typeof t=="object"&&t!==null&&typeof t.subscribeFrames=="function"&&typeof t.objectForBlenderName=="function"&&typeof t.blenderObjectName=="function"&&typeof t.blenderSelection=="function"&&typeof t.setStageMode=="function";function Te(){const t=E().documents.context(ct());return on(t)?t:null}function sn(){return Te()?.blenderSelection()??{selected:[],active:null}}const an={tree:null,byId:new Map,parentOf:new Map,error:null,loading:!1};let xe=an,ot=0;const Ee=new Set;let D=null,ae=null,Le="",U=null;function ln(t){const e=new Map,n=new Map,r=(s,o)=>{e.set(s.id,s),n.set(s.id,o);for(const a of s.children)r(a,s.id)};for(const s of t?.rows??[])r(s,null);return{byId:e,parentOf:n}}function te(t){xe={...xe,...t},ot+=1;for(const e of[...Ee])e()}function Ln(t){return Ee.add(t),()=>{Ee.delete(t)}}function Fn(){return ot}function _n(){return xe}function Fe(t){U!==t&&(U=t,setTimeout(()=>{U===t&&(U=null,st(t===""?[]:t.split("\0")))},0))}let ge=0,ke=Promise.resolve();function st(t){const e=cn(t);return ke=e,e}async function cn(t){const e=t.join("\0"),n=++ge;ae=e,Le=e,te({loading:!0});try{const r=await Mn(t);if(n!==ge)return;Te()?.setStageMode(r?.mode??null),te({tree:r,...ln(r),loading:!1,error:null})}catch(r){if(n!==ge)return;te({loading:!1,error:at(r)})}}function un(){ae=null,Fe(Le);for(const t of[...Se])t()}const Se=new Set;function $n(t){return _e(),Se.add(t),()=>{Se.delete(t)}}let ee=!1,me=null;function _e(){const t=Te();if(D!==null&&me===t)return;D!==null&&(D(),D=null,me=null);const e=t;if(e!==null){D=e.subscribeFrames(un),me=e;return}ee||(ee=!0,E().documents.waitForContext(ct()).then(()=>{ee=!1,_e()}).catch(()=>{ee=!1}))}function Rn(t){if(!C())return;_e();const e=[...t].sort().join("\0");ae!==e&&Fe(e)}async function dn(t){if(!C())return;U=null;let e=st([...t].sort());for(;;){if(await e,ke===e)return;e=ke}}async function On(t,e,n){try{return await dt(t,e,n),ae=null,Fe(Le),!0}catch(r){return te({error:at(r)}),!1}}function at(t){return t instanceof Error?t.message:String(t)}const hn={transform:{cx:0,cy:0,zoom:1},looked:null,refusal:null,size:{w:0,h:0},framedAt:0,drawn:[]};let Be=hn,$e=0;const se=new Set;let it=0;function ye(){return Be}function Nn(){return $e}function Pn(t){return se.add(t),()=>{se.delete(t)}}function V(t){Be={...Be,...t},$e+=1;for(const e of[...se])e()}function fn(){it+=1,$e+=1;for(const t of[...se])t()}function Dn(){return it}function N(t){V({refusal:t})}const Ye=new Map;function pn(t){let e=Ye.get(t);return e||(e=fetch(Vt(t)).then(async n=>{if(!n.ok)throw new Error(`Blender display table ${t}: ${n.status} ${n.statusText}`);return new Uint16Array(await n.arrayBuffer())}),Ye.set(t,e)),e}function wn(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return new Uint16Array(n.buffer,n.byteOffset,n.byteLength>>1)}async function lt(t,e){const n=e.look??"None",r=e.toneMapping==="filmic",s=e.toneMapping==="none";if(!s&&e.toneMapping!=="agx"&&!r)throw new Error("Blender's Khronos PBR Neutral view transform has no scene-linear implementation in the browser, so it cannot resolve a composited or scene-referred frame (implemented: Standard, AgX, Filmic)");const o=s?null:r?"filmic-srgb.lut":n==="None"?"agx-base-srgb.lut":Ht[n];if(o===void 0)throw new Error(`Blender display transform has no table for look ${n}`);const a=o?await pn(o):null,i=e.linearInput,c=i?{pixels:wn(i.base64),width:i.width,height:i.height}:t;if(!c)throw new Error("Blender display transform requires a linear capture");const{pixels:u,width:l,height:d}=c,k=s?tn(u,l*d,e.exposure):r?Kt(a,u,l*d,e.exposure):Yt(a,u,l*d,{exposure:e.exposure,composedLook:n!=="None"}),m=document.createElement("canvas");m.width=l,m.height=d;const S=m.getContext("2d");if(!S)throw new Error("Blender display transform could not create its image canvas");const b=S.createImageData(l,d),p=l*4;for(let f=0;f<d;f++){const h=(d-1-f)*p;b.data.set(k.subarray(h,h+p),f*p)}S.putImageData(b,0,0);const A=m.toDataURL("image/png"),v={base64:A.slice(A.indexOf(",")+1),mimeType:"image/png"};if(e.linear===!0){const f=new Uint8Array(u.buffer,u.byteOffset,u.byteLength);let h="";for(let g=0;g<f.length;g+=32768)h+=String.fromCharCode(...f.subarray(g,g+32768));v.linearBase64=btoa(h),v.linearWidth=l,v.linearHeight=d}return v}async function gn(t,e,n,r,s=()=>{}){const o={none:be,agx:We,neutral:jt,filmic:be};await n.prepare(e),s();const a={effect:n.effect,width:r.width,height:r.height,transparent:r.transparent===!0,toneMapping:o[r.toneMapping]??We,exposure:r.exposure},i=r.toneMapping==="agx"||r.toneMapping==="filmic"||r.linear===!0?await lt(nn(t,e,a),r):null;if(s(),i)return i;const c=rn(t,e,a);if(!c)throw new Error("Blender render could not capture its image");return{base64:c.slice(c.indexOf(",")+1),mimeType:"image/png"}}const mn="document:blender:runtime";let x=null,Ze=0;function Un(t){const e=++Ze;return x=t,P(),()=>{Ze===e&&(x=null,P())}}function ne(){const t=y?.document,e=E().documents.activeId(),n=e?.startsWith("document:model:")?e.slice(15):x?.blend;return!n||!t||n===t?null:`Blender is editing ${t}; ${n} is not open. Return to ${t} before editing.`}function j(){return x?.documentId??mn}function ct(){return j()}async function Vn(t,e){const n=E();if(!n.session.open())throw new Error("Opening a model requires an open project session.");const r=n.projectLocalState.projectRootPath();if(r===null)throw new Error("Opening a model requires a project path.");if(x!==t||n.documents.activeId()!==t.documentId)return!1;const s=M(),o=s.start(r,t.blend);if(e(),await o,x!==t)return!1;const a=(await G()).snapshot();if(x!==t)return!1;const i=s.presented;return(!a||!i||a.session!==i.session||a.revision!==i.revision)&&await s.present(),x===t}function C(){return y?.project!=null&&ne()===null}let ut=0;const Ce=new Set;function Wn(){return ut}function Gn(t){return Ce.add(t),()=>{Ce.delete(t)}}function P(){ut+=1;for(const t of[...Ce])t()}async function zn(t,e){return C()?M().rna(t,e):null}async function qn(t,e){return C()?M().rnaContext(t,e):null}async function yn(t,e,n,r,s=!0){if(!C())return null;const o=await M().rnaSet(t,e,n,r,s);return P(),o}async function Hn(t){C()&&await M().viewShading(t)}async function bn(t,e=!0,n="Blender Python"){const r=await M().execute(t,e,n);P();const s=/^Error executing code:/.exec(r);return{text:r,executed:s===null,result:s===null?r.replace(/^Code executed successfully: ?/,""):"",error:s===null?null:r.replace(/^Error executing code: ?/,"")}}function Xn(){M().historyGesture("history-begin").catch(t=>E().console.error(`Could not begin Blender undo gesture: ${String(t)}`,"blender-history"))}async function Yn(){await M().historyGesture("history-end")}async function Mn(t){return C()?M().outliner(t):null}async function Zn(t){return C()?M().nodeTree(t):null}async function Kn(t){return C()?M().uvLayout(t):null}async function Jn(t){return C()?M().rig(t):null}async function Qn(t){return C()?M().actionClip(t):null}async function dt(t,e,n){if(!C())return null;const r=await M().outlinerSet(t,e,n);return P(),r}const vn={view:"blender-node-view",title:"Node Editor",verbs:[["state",void 0],["look",void 0],["view-all","Node Editor: Frame All"],["zoom",void 0],["pan",void 0],["move",void 0],["link",void 0],["set-value",void 0],["use-nodes",void 0],["collapse-panel",void 0]].map(([t,e])=>({id:t,...e?{title:e}:{},run:n=>ht({...n,action:t})}))};function ht(t){const e=typeof t.action=="string"?t.action:"state";switch(e){case"state":break;case"look":V({looked:typeof t.node=="string"?t.node:null,refusal:null});break;case"view-all":fn(),V({refusal:null});break;case"zoom":{const n=typeof t.zoom=="number"?t.zoom:1;V({transform:{...ye().transform,zoom:n},refusal:null});break}case"pan":{const n=ye().transform;V({transform:{...n,cx:typeof t.cx=="number"?t.cx:n.cx,cy:typeof t.cy=="number"?t.cy:n.cy},refusal:null});break}case"move":N(`Moving "${String(t.node??"a node")}" writes Node.location — editing parity is not the program.`);break;case"link":N("Dragging between sockets would make a link — editing parity is not the program.");break;case"set-value":N(`Changing "${String(t.socket??"a socket")}" writes the socket's default_value — editing parity is not the program.`);break;case"use-nodes":N("Use Nodes writes Material.use_nodes — editing parity is not the program.");break;case"collapse-panel":N(`Collapsing "${String(t.panel??"a panel")}" writes the panel's is_collapsed — editing parity is not the program.`);break;default:N(`blender-node-view: no action "${e}" — state, look, view-all, zoom, pan, and the refusals move, link, set-value, use-nodes, collapse-panel.`)}return ye()}let y=null;const re=new Set;function ft(){re.size&&E().history.invalidate([...re]),re.clear()}let Ae=null,Ke=!1;function oe(t){try{const e=E().session.beginWork(`Blender: ${t}`);return()=>{try{e()}catch{}}}catch{return()=>{}}}function Ie(){const t=oe("invalidating history and releasing runtime");try{ft(),Ae?.abort(),Ae=null,y?.terminate(),y=null,pt=null}finally{t()}}function xn(){Ke||(Ke=!0,E().session.onBeforeClose(async()=>{await y?.stop(),Ie()}),E().session.onEnded(Ie))}let pt=null;const En=t=>typeof t=="object"&&t!==null&&typeof t.applyFrame=="function"&&typeof t.stageFrame=="function"&&typeof t.snapshot=="function"&&typeof t.captureSnapshot=="function"&&typeof t.recordPresentation=="function"&&typeof t.recordPhotograph=="function";async function G(){const{documents:t}=E(),e=Date.now()+15e3;let n=j();for(;;){n=j();const r=await t.waitForContext(n,Math.max(0,Math.min(250,e-Date.now())));if(En(r))return r;if(Date.now()>=e)break}throw new Error(`The Blender Model document is not open, or the open one is not a Model this engine can present to (it must answer stageFrame, applyFrame, captureSnapshot, recordPresentation and recordPhotograph): nothing published a presentable view as ${n} within 15 s (bound model: ${x?.documentId??"none"}). Open the Model document first (\`volter blender-mcp\` opens it before its first call).`)}function M(){const t=ne();if(t)throw new Error(t);if(y!==null)return y;xn();const e=new AbortController;Ae=e;let n=!1,r=null;y=new Rt({work:oe,history:o=>{const a=y;if(!a)throw new Error("Blender history arrived before its runtime");for(const i of o){if("reset"in i){ft();continue}if(!i.resource)throw new Error("A Blender edit has no document resource");re.add(i.resource);const c=async u=>{if(y!==a)throw new Error("This Blender history belongs to a closed worker");const l=await a.historyStep(i.id,u);return P(),await dn(sn().selected),l};E().history.record({id:i.id,label:i.label,resources:[i.resource],document:j(),undo:()=>c("undo"),redo:()=>c("redo")})}},stage:async o=>{if(o.abort){r?.stageFrame(o),r=null;return}const a=ne();if(a)throw new Error(a);if(x===null)return;const i=j(),c=await G();if(e.signal.throwIfAborted(),j()!==i)throw new Error("Blender document changed during frame transfer");r=c,c.stageFrame(o)},present:async(o,a,i)=>{const c=ne();if(c)throw new Error(c);if(x===null){if(i?.render)throw new Error("Rendering a Blender frame needs the Model document open; nothing is presenting.");return{}}const u=j(),l=oe("waiting for Model presenter");let d;try{d=await G()}finally{l()}if(e.signal.throwIfAborted(),j()!==u)throw new Error("Blender document changed before its frame could be presented");const k=oe("applying frame to Model"),m=(()=>{try{return d.applyFrame(o)}finally{k()}})(),S=typeof m=="object"&&m!==null&&"held"in m,b=S?m.held:null,p=w=>({...w===void 0?{}:{capture:w},...S?{held:b}:{}});if(d.recordPresentation(a),!i||(pt=i,!i.render))return p(void 0);const A=d.snapshot(),v=()=>{if(e.signal.throwIfAborted(),j()!==u||d.snapshot()!==A)throw new Error("Blender capture document or source revision changed before completion")};if(i.render.linearInput){const w=await lt(null,i.render);return v(),p(w)}const{render:f,position:h,target:g,up:T}=i;if(!h||!g||!T)throw new Error("A Blender render capture must carry the scene camera position, target and up");if(n)throw new Error("A Blender render capture is already in progress");const I=d.captureSnapshot();n=!0,e.signal.addEventListener("abort",I.dispose,{once:!0});try{v();const w=new St;w.add(I.root),w.updateMatrixWorld(!0);const z=I.root.matrixWorld,ie=new Bt().copy(z).invert(),wt=new Ve().setFromMatrix4(z),gt=new Ve().setFromMatrix4(ie),le=new ue(h[0],h[1],h[2]).applyMatrix4(z),Re=new ue(g[0],g[1],g[2]).applyMatrix4(z),Oe=new ue(T[0],T[1],T[2]).applyMatrix3(wt),ce=Math.min(2048,Math.round(f.width))/Math.min(2048,Math.round(f.height)),Ne=Lt(I.root).getBoundingSphere(new Ct),q=Tt(le.distanceTo(Ne.center),Ne.radius);let R;if(f.orthographic){const H=f.fov/2;R=new At(-H*ce,H*ce,H,-H,q.near,q.far)}else R=new It(f.fov,ce,q.near,q.far);R.up.copy(Oe),R.position.copy(le),R.lookAt(Re),R.updateMatrixWorld(!0);const Pe={position:le.clone().applyMatrix4(ie).toArray(),target:Re.clone().applyMatrix4(ie).toArray(),up:Oe.clone().applyMatrix3(gt).toArray()};d.recordPhotograph({sent:{position:h,target:g,up:T},photographed:Pe,render:{width:f.width,height:f.height,fov:f.fov,orthographic:f.orthographic}});const mt=await gn(w,R,I,f,v);return p({...mt,camera:Pe})}finally{n=!1,e.signal.removeEventListener("abort",I.dispose),I.dispose()}},log:(o,a)=>console[o](`[blender] ${a}`)});const s=y;return E().session.reportWorkerCallMeter("Blender",()=>s.metrics()),y}const kn="models/model.blend",B=(t,e)=>{const n=t[e];if(typeof n!="string")throw new Error(`${String(t.type)} requires a string "${e}"`);return n};async function Sn(t){const e=E().projectLocalState.projectRootPath();if(e===null)return{};let n;try{n=await t.execute(`import bpy
4
+ `)}`:"",i=this.#u===null?null:Math.round(this.#u/1048576),c=i!==null&&i>=ze-16?`Blender ran out of memory: its heap reached ${i} MB of the in-tab engine's ${ze} MB, and this scene needs more. `:"",u=new Error(`${c}Blender worker failed: ${o||"the worker script did not load"}${s}${a}`);console.error(u.message);for(const l of[...this.#n.keys()])this.#m(l);for(const l of this.#n.values())l.reject(u);this.#n.clear(),this.terminate()}}#s=null;#d=null;get project(){return this.#s}get document(){return this.#d}get lastOutput(){return[...this.#a]}start(e,n){return this.#s!==null&&this.#s!==e?Promise.reject(new Error(`The Blender session is bound to ${this.#s}, not ${e}`)):n!==void 0&&this.#d!==null&&this.#d!==n?Promise.reject(new Error(`Blender resource conflict: the session holds ${this.#d}; cannot open ${n}`)):(this.#s=e,this.#d??=n??"models/model.blend",this.#h??=this.#e({op:"start",project:e,...n===void 0?{}:{document:n}}),this.#h)}#t(){return this.#s===null?Promise.reject(new Error("The Blender session has not been started with a project (blender-start)")):this.start(this.#s)}async execute(e,n=!0,r="Blender Python"){return await this.#t(),await this.#e({op:"execute",code:e,history:n,label:r})}async historyGesture(e){await this.#t(),await this.#e({op:e})}async historyStep(e,n){return await this.#t(),(await this.#e({op:"history-step",token:e,direction:n})).moved}async sceneInfo(){return await this.#t(),await this.#e({op:"scene-info"})}async objectInfo(e){return await this.#t(),await this.#e({op:"object-info",name:e})}async rna(e,n){return await this.#t(),await this.#e({op:"rna",path:e,...n===void 0?{}:{names:n}})}async rnaContext(e,n){return await this.#t(),await this.#e({op:"rna-context",...e===void 0?{}:{object:e},...n===void 0?{}:{collection:n}})}async rnaSet(e,n,r,s,o=!0){return await this.#t(),await this.#e({op:"rna-set",history:o,path:e,property:n,value:r,...s===void 0?{}:{index:s}})}async viewShading(e){await this.#t(),await this.#e({op:"view-shading",shading:e})}async outliner(e){return await this.#t(),await this.#e({op:"outliner",...e===void 0?{}:{selected:e}})}async nodeTree(e){return await this.#t(),await this.#e({op:"node-tree",...e?.path===void 0?{}:{path:e.path},...e?.material===void 0?{}:{material:e.material}})}async uvLayout(e){return await this.#t(),await this.#e({op:"uv-layout",...e?.object===void 0?{}:{object:e.object},...e?.uvLayer===void 0?{}:{uvLayer:e.uvLayer}})}async rig(e){return await this.#t(),await this.#e({op:"rig",...e?.object===void 0?{}:{object:e.object}})}async actionClip(e){return await this.#t(),await this.#e({op:"action-clip",...e?.object===void 0?{}:{object:e.object},...e?.bake===void 0?{}:{bake:e.bake}})}async outlinerSet(e,n,r){return await this.#t(),await this.#e({op:"outliner-set",path:e,column:n,value:r})}async present(){await this.#t(),await this.#e({op:"present"})}async screenshotView(e){return await this.#t(),await this.#e({op:"screenshot-view",maxSize:e})}async readFile(e){return await this.#t(),await this.#e({op:"read-file",path:e})}async writeFile(e,n){await this.#t(),await this.#e({op:"write-file",path:e,bytes:n})}async listFiles(e){return await this.#t(),await this.#e({op:"list-files",path:e})}get presented(){return this.#I}stop(){return this.#l?Promise.resolve():this.#i?this.#i:(this.#i=(async()=>{(this.#h?await this.#h.then(()=>!0,()=>!1):!1)&&await this.#e({op:"flush-document"},!0),this.terminate()})().catch(e=>{throw this.#i=null,e}),this.#i)}terminate(){if(this.#M(),this.#l)return;this.#l=!0,globalThis.removeEventListener?.("beforeunload",this.#S);const e=this.#E("terminating worker");try{this.#r.terminate()}finally{e()}const n=new Error("The Blender session was terminated");for(const r of[...this.#n.keys()])this.#m(r);for(const r of this.#n.values())r.reject(n);this.#n.clear();for(const r of this.#v)r()}metrics(e=performance.now()){let n=null,r=this.#x,s=this.#B,o=this.#C,a=this.#A;for(const[i,c]of this.#f){const u=e-c;(n===null||u>n)&&(n=u),u>r&&(r=u,s=this.#p.get(i)??null),u>=5e3&&(o+=1),u>=3e4&&(a+=1)}return{inFlightMs:n===null?null:Math.round(n),lastCallMs:this.#g===null?null:Math.round(this.#g),maxCallMs:this.#g===null&&n===null?null:Math.round(r),maxCallLabel:s,currentPhase:this.#y?this.#w:null,completedCalls:this.#j,callsOver5s:o,callsOver30s:a,lastCallWindow:this.#c,wasmMemoryMB:this.#u===null?null:Math.round(this.#u/1048576)}}#m(e){const n=this.#f.get(e);if(n===void 0)return;this.#f.delete(e);const r=this.#p.get(e)??null;this.#p.delete(e),this.#j++;const s=performance.now()-n;this.#g=s,s>this.#x&&(this.#x=s,this.#B=r),s>=5e3&&(this.#C+=1),s>=3e4&&(this.#A+=1),this.#c!==null&&this.#c.start===n&&(this.#c={start:n,end:n+s})}#j=0;#y=0;#T=Promise.resolve();#e(e,n=!1){if(this.#l||this.#i&&!n)return Promise.reject(new Error("The Blender session is stopping or terminated"));const r=performance.now();let s=()=>{};this.#y++;const o=this.#T.then(async()=>{const a=this.#E(`running worker ${e.op}`);s=()=>{this.#v.delete(s)&&a()},this.#v.add(s),this.#w=e.op;let i=await this.#L(e);for(;i?.load==="continue";)this.#w=i.phase,i=await this.#L({op:"load-next",token:i.token});return i?.load==="done"?i.value:i}).finally(()=>{this.#y--,s();const a=Math.round(performance.now()-r);try{a>=1e3&&this.#o.log?.("log",`@@VOLTER-WORK op=${e.op} totalMs=${a}`)}catch{}});return this.#T=o.then(()=>{},()=>{}),o}#L(e){if(this.#l)return Promise.reject(new Error("The Blender session is terminated"));const n=++this.#$;return new Promise((r,s)=>{this.#n.set(n,{resolve:r,reject:s});const o=performance.now();this.#f.set(n,o),this.#p.set(n,e.op==="load-next"?`load-next after ${this.#w}`:e.op),this.#c={start:o,end:null};try{this.#r.postMessage({...e,id:n})}catch(a){this.#n.delete(n),this.#m(n),s(a instanceof Error?a:new Error(String(a)))}})}#E(e){try{const n=this.#o.work?.(e);return()=>{try{n?.()}catch{}}}catch{return()=>{}}}#F=new Rt;#b=null;#M(){this.#F.reset();const e=this.#b;if(this.#b=null,e)try{Promise.resolve(this.#o.stage?.({...e,abort:!0})).catch(()=>{})}catch{}}async#_(e){if("op"in e){if(e.op==="frame-stream"){try{const o=await this.#F.accept(e.chunk);if(o){const a=o.value;if(a.op==="present"){await this.#_({...a,id:e.id});return}if(a.op!=="stage"||!this.#o.stage)throw new Error("The presenter does not support staged Blender frames");this.#b={session:a.session,revision:a.revision},await this.#o.stage(a)}this.#r.postMessage({op:"present-result",id:e.id})}catch(o){this.#M(),this.#r.postMessage({op:"present-result",id:e.id,error:o instanceof Error?o.message:String(o)})}return}if(e.op==="document-dirty"){this.#k=e.dirty;return}if(e.op==="history"){this.#o.history?.(e.entries);return}if(e.op==="log"){this.#a.push(e.text),this.#a.length>12&&this.#a.shift(),this.#o.log?.(e.level,e.text);return}if(e.op==="memory"){this.#u=e.bytes;return}const r=e.frame;typeof r?.session=="string"&&typeof r.revision=="number"&&(this.#I={session:r.session,revision:r.revision});const s=this.#E("presenting worker frame");try{const o=await this.#o.present(e.frame,e.description,e.capture);this.#b=null,this.#r.postMessage({op:"present-result",id:e.id,...o?.capture===void 0?{}:{capture:o.capture},...o!=null&&"held"in o?{held:o.held}:{}})}catch(o){this.#M(),this.#r.postMessage({op:"present-result",id:e.id,error:o instanceof Error?o.message:String(o)})}finally{s()}return}"error"in e&&this.#M();const n=this.#n.get(e.id);n&&(this.#n.delete(e.id),this.#m(e.id),"error"in e?n.reject(new Error(e.error)):n.resolve(e.result))}}const Nt="/assets/agx-base-srgb-BjWZJgrZ.lut",Pt="/assets/agx-look-medium-high-contrast-D5F_ob1L.lut",Dt="/assets/agx-look-punchy-dxsnycNs.lut",Ut="/assets/filmic-srgb-Ct35FIH6.lut",L=new Float64Array(12),qe=[0,0,0],O=new Float64Array(3),X=new Float64Array(3),F=new Int8Array([1,0,0,1,1,0,0,1,2,1,0,0,1,0,1,0,2,1,0,0,1,1,0,1,2,0,1,0,0,1,0,1,1,2,1,0,0,1,0,0,1,1,1,2,0,0,1,0,1,1,0,1,0,2]);function Vt(t,e,n){return t>e?e>n?0:t>n?1:2:n>e?3:n>t?4:5}function Je(t,e,n,r,s){const o=e*e,a=Math.min(1,Math.max(0,n))*(e-1),i=Math.min(1,Math.max(0,r))*(e-1),c=Math.min(1,Math.max(0,s))*(e-1),u=Math.min(Math.floor(a),e-2),l=Math.min(Math.floor(i),e-2),d=Math.min(Math.floor(c),e-2),k=a-u,m=i-l,S=c-d,b=(h,g,T,I)=>{const w=(u+g+(l+T)*e+(d+I)*o)*3;L[h]=t[w]/65535,L[h+1]=t[w+1]/65535,L[h+2]=t[w+2]/65535};b(0,0,0,0),b(9,1,1,1),O[0]=k,O[1]=m,O[2]=S;const p=Vt(k,m,S)*9;b(3,F[p],F[p+1],F[p+2]),b(6,F[p+3],F[p+4],F[p+5]);const A=O[F[p+6]],x=O[F[p+7]],f=O[F[p+8]];for(let h=0;h<3;h++){const g=L[h];qe[h]=g+A*(L[3+h]-g)+x*(L[6+h]-L[3+h])+f*(L[9+h]-L[6+h])}return qe}function Y(t){const e=t&32768?-1:1,n=t>>10&31,r=t&1023;return n===0?e*2**-24*r:n===31?r?Number.NaN:e*Number.POSITIVE_INFINITY:e*2**(n-15)*(1+r/1024)}function je(t,e,n,r){const s=new Uint8ClampedArray(e*4);for(let o=0;o<e;o++){const a=o*4,i=Y(t[a+3]),c=i===0?n:n/i;X[0]=Y(t[a])*c,X[1]=Y(t[a+1])*c,X[2]=Y(t[a+2])*c;const u=r(X);s[a]=Math.round(u[0]*255),s[a+1]=Math.round(u[1]*255),s[a+2]=Math.round(u[2]*255),s[a+3]=Math.round(Math.min(1,Math.max(0,i))*255)}return s}function Wt(t){return new URL(Object.assign({"./agx-base-srgb.lut":Nt,"./agx-look-medium-high-contrast.lut":Pt,"./agx-look-punchy.lut":Dt,"./filmic-srgb.lut":Ut})[`./${t.replace(/\.lut$/,"")}.lut`],import.meta.url)}const Gt=57,_=-12.47393,Qe=12.5260688117,zt=[[.4123908,.3575843,.1804808],[.212639,.7151687,.0721923],[.0193308,.1191948,.9505322]],qt=[[1.5250528,-.3159135,-.1226583],[-.5091526,1.3333274,.1382844],[.0957153,.0508974,.7879558]];function He(t,e,n){const r=e[0],s=e[1],o=e[2];n[0]=t[0][0]*r+t[0][1]*s+t[0][2]*o,n[1]=t[1][0]*r+t[1][1]*s+t[1][2]*o,n[2]=t[2][0]*r+t[2][1]*s+t[2][2]*o}const Z=new Float64Array(3),Xe=new Float64Array(3),K=[0,0,0];function de(t){const e=Math.min(1,Math.max(0,t));return e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055}function et(t,e,n,r){return Je(t,Gt,e,n,r)}function Ht(t,e){He(zt,e,Xe),He(qt,Xe,Z);const n=Qe-_,r=et(t,(Math.log2(Math.max(Z[0],1e-10))-_)/n,(Math.log2(Math.max(Z[1],1e-10))-_)/n,(Math.log2(Math.max(Z[2],1e-10))-_)/n);return K[0]=de(Math.max(0,r[0])**2.4),K[1]=de(Math.max(0,r[1])**2.4),K[2]=de(Math.max(0,r[2])**2.4),K}const Xt={"AgX - Medium High Contrast":"agx-look-medium-high-contrast.lut","AgX - Punchy":"agx-look-punchy.lut"};function Yt(t,e){const n=Qe-_;return et(t,(Math.log2(Math.max(e[0],1e-10))-_)/n,(Math.log2(Math.max(e[1],1e-10))-_)/n,(Math.log2(Math.max(e[2],1e-10))-_)/n)}function Zt(t,e,n,r={}){const s=r.exposure??1,o=r.composedLook===!0?Yt:Ht;return je(e,n,s,a=>o(t,a))}const tt=33,Me=tt**3*3,ve=4096,he=-12.473931188,fe=25;function pe(t,e){const n=Math.min(1,Math.max(0,e))*(ve-1),r=Math.min(Math.floor(n),ve-2),s=n-r;return((1-s)*t[Me+r]+s*t[Me+r+1])/65535}const J=[0,0,0];function Kt(t,e){const n=Je(t,tt,(Math.log2(Math.max(e[0],1e-10))-he)/fe,(Math.log2(Math.max(e[1],1e-10))-he)/fe,(Math.log2(Math.max(e[2],1e-10))-he)/fe);return J[0]=pe(t,n[0]/.66),J[1]=pe(t,n[1]/.66),J[2]=pe(t,n[2]/.66),J}function Jt(t,e,n,r){if(t.length!==Me+ve)throw new Error("Invalid Blender Filmic display table");return je(e,n,r,s=>Kt(t,s))}const W=2.4,$=.055,nt=$/(W-1),Qt=1/(W/(1+$)*((nt+$)/(1+$))**(W-1)),en=((nt+$)/(1+$))**W;function we(t){return t>0?t<en?t*Qt:(1+$)*t**(1/W)-$:0}const Q=[0,0,0];function tn(t){return Q[0]=we(t[0]),Q[1]=we(t[1]),Q[2]=we(t[2]),Q}function nn(t,e,n){return je(t,e,n,tn)}function rt(t,e,n,r){if(!Number.isFinite(n.width)||!Number.isFinite(n.height)||n.width<1||n.height<1)throw new Error("Scene capture requires finite positive dimensions");const s=Math.min(2048,Math.round(n.width)),o=Math.min(2048,Math.round(n.height)),a=r?1:2,i=s*a,c=o*a,u=Mt(),l=u.renderer,d={target:l.getRenderTarget(),toneMapping:l.toneMapping,exposure:l.toneMappingExposure,colorSpace:l.outputColorSpace,shadows:l.shadowMap.enabled,shadowType:l.shadowMap.type,clearColor:l.getClearColor(new xt),clearAlpha:l.getClearAlpha(),background:t.background};let k,m,S=!1;try{k=new De(i,c,{type:Ue}),n.effect&&(k.depthTexture=new Et(i,c)),l.shadowMap.enabled=!0,l.shadowMap.type=kt,l.outputColorSpace=St,l.toneMapping=n.toneMapping??be,l.toneMappingExposure=n.exposure??1,l.setClearColor(0,n.transparent?0:1),n.transparent&&(t.background=null),l.setRenderTarget(k),l.clear(),l.render(t,e);const b=n.effect?.render(l,k,t,e)??k;if(b.texture.type!==Ue||b.width!==i||b.height!==c)throw new Error("Scene capture effect must return a same-size half-float target");if(r){const w=new Uint16Array(i*c*4);return l.readRenderTargetPixels(b,0,0,i,c,w),S=!0,{pixels:w,width:s,height:o}}m=new De(i,c),vt(n.transparent===!0).render(l,m,b,0,!1);const p=new Uint8Array(i*c*4);l.readRenderTargetPixels(m,0,0,i,c,p);const A=document.createElement("canvas");A.width=i,A.height=c;const x=A.getContext("2d");if(!x)throw new Error("Scene capture could not create an image canvas");const f=x.createImageData(i,c),h=i*4;for(let w=0;w<c;w++)f.data.set(p.subarray((c-1-w)*h,(c-w)*h),w*h);x.putImageData(f,0,0);const g=document.createElement("canvas");g.width=s,g.height=o;const T=g.getContext("2d");if(!T)throw new Error("Scene capture could not create an output canvas");T.drawImage(A,0,0,s,o);const I=g.toDataURL("image/png");return S=!0,I}finally{t.background=d.background,l.setRenderTarget(d.target),l.toneMapping=d.toneMapping,l.toneMappingExposure=d.exposure,l.outputColorSpace=d.colorSpace,l.shadowMap.enabled=d.shadows,l.shadowMap.type=d.shadowType,l.setClearColor(d.clearColor,d.clearAlpha),m?.dispose(),k?.dispose(),u.release({discard:!S})}}function rn(t,e,n){return rt(t,e,n,!0)}function on(t,e,n){return rt(t,e,n,!1)}const sn=t=>typeof t=="object"&&t!==null&&typeof t.subscribeFrames=="function"&&typeof t.objectForBlenderName=="function"&&typeof t.blenderObjectName=="function"&&typeof t.blenderSelection=="function"&&typeof t.setStageMode=="function";function Te(){const t=M().documents.context(ut());return sn(t)?t:null}function an(){return Te()?.blenderSelection()??{selected:[],active:null}}const ln={tree:null,byId:new Map,parentOf:new Map,error:null,loading:!1};let xe=ln,ot=0;const Ee=new Set;let D=null,ae=null,Le="",U=null;function cn(t){const e=new Map,n=new Map,r=(s,o)=>{e.set(s.id,s),n.set(s.id,o);for(const a of s.children)r(a,s.id)};for(const s of t?.rows??[])r(s,null);return{byId:e,parentOf:n}}function te(t){xe={...xe,...t},ot+=1;for(const e of[...Ee])e()}function Fn(t){return Ee.add(t),()=>{Ee.delete(t)}}function _n(){return ot}function $n(){return xe}function Fe(t){U!==t&&(U=t,setTimeout(()=>{U===t&&(U=null,st(t===""?[]:t.split("\0")))},0))}let ge=0,ke=Promise.resolve();function st(t){const e=un(t);return ke=e,e}async function un(t){const e=t.join("\0"),n=++ge;ae=e,Le=e,te({loading:!0});try{const r=await vn(t);if(n!==ge)return;Te()?.setStageMode(r?.mode??null),te({tree:r,...cn(r),loading:!1,error:null})}catch(r){if(n!==ge)return;te({loading:!1,error:at(r)})}}function dn(){ae=null,Fe(Le);for(const t of[...Se])t()}const Se=new Set;function Rn(t){return _e(),Se.add(t),()=>{Se.delete(t)}}let ee=!1,me=null;function _e(){const t=Te();if(D!==null&&me===t)return;D!==null&&(D(),D=null,me=null);const e=t;if(e!==null){D=e.subscribeFrames(dn),me=e;return}ee||(ee=!0,M().documents.waitForContext(ut()).then(()=>{ee=!1,_e()}).catch(()=>{ee=!1}))}function On(t){if(!C())return;_e();const e=[...t].sort().join("\0");ae!==e&&Fe(e)}async function hn(t){if(!C())return;U=null;let e=st([...t].sort());for(;;){if(await e,ke===e)return;e=ke}}async function Nn(t,e,n){try{return await ht(t,e,n),ae=null,Fe(Le),!0}catch(r){return te({error:at(r)}),!1}}function at(t){return t instanceof Error?t.message:String(t)}const fn={transform:{cx:0,cy:0,zoom:1},looked:null,refusal:null,size:{w:0,h:0},framedAt:0,drawn:[]};let Be=fn,$e=0;const se=new Set;let it=0;function ye(){return Be}function Pn(){return $e}function Dn(t){return se.add(t),()=>{se.delete(t)}}function V(t){Be={...Be,...t},$e+=1;for(const e of[...se])e()}function pn(){it+=1,$e+=1;for(const t of[...se])t()}function Un(){return it}function N(t){V({refusal:t})}const Ye=new Map;function wn(t){let e=Ye.get(t);return e||(e=fetch(Wt(t)).then(async n=>{if(!n.ok)throw new Error(`Blender display table ${t}: ${n.status} ${n.statusText}`);return new Uint16Array(await n.arrayBuffer())}),Ye.set(t,e)),e}function gn(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return new Uint16Array(n.buffer,n.byteOffset,n.byteLength>>1)}async function lt(t,e){const n=e.look??"None",r=e.toneMapping==="filmic",s=e.toneMapping==="none";if(!s&&e.toneMapping!=="agx"&&!r)throw new Error("Blender's Khronos PBR Neutral view transform has no scene-linear implementation in the browser, so it cannot resolve a composited or scene-referred frame (implemented: Standard, AgX, Filmic)");const o=s?null:r?"filmic-srgb.lut":n==="None"?"agx-base-srgb.lut":Xt[n];if(o===void 0)throw new Error(`Blender display transform has no table for look ${n}`);const a=o?await wn(o):null,i=e.linearInput,c=i?{pixels:gn(i.base64),width:i.width,height:i.height}:t;if(!c)throw new Error("Blender display transform requires a linear capture");const{pixels:u,width:l,height:d}=c,k=s?nn(u,l*d,e.exposure):r?Jt(a,u,l*d,e.exposure):Zt(a,u,l*d,{exposure:e.exposure,composedLook:n!=="None"}),m=document.createElement("canvas");m.width=l,m.height=d;const S=m.getContext("2d");if(!S)throw new Error("Blender display transform could not create its image canvas");const b=S.createImageData(l,d),p=l*4;for(let f=0;f<d;f++){const h=(d-1-f)*p;b.data.set(k.subarray(h,h+p),f*p)}S.putImageData(b,0,0);const A=m.toDataURL("image/png"),x={base64:A.slice(A.indexOf(",")+1),mimeType:"image/png"};if(e.linear===!0){const f=new Uint8Array(u.buffer,u.byteOffset,u.byteLength);let h="";for(let g=0;g<f.length;g+=32768)h+=String.fromCharCode(...f.subarray(g,g+32768));x.linearBase64=btoa(h),x.linearWidth=l,x.linearHeight=d}return x}async function mn(t,e,n,r,s=()=>{}){const o={none:be,agx:We,neutral:Tt,filmic:be};await n.prepare(e),s();const a={effect:n.effect,width:r.width,height:r.height,transparent:r.transparent===!0,toneMapping:o[r.toneMapping]??We,exposure:r.exposure},i=r.toneMapping==="agx"||r.toneMapping==="filmic"||r.linear===!0?await lt(rn(t,e,a),r):null;if(s(),i)return i;const c=on(t,e,a);if(!c)throw new Error("Blender render could not capture its image");return{base64:c.slice(c.indexOf(",")+1),mimeType:"image/png"}}const ct="document:blender:runtime";let E=null,Ze=0;function Vn(t){const e=++Ze;return E=t,P(),()=>{Ze===e&&(E=null,P())}}function ne(){const t=y?.document,e=M().documents.activeId(),n=e?.startsWith("document:model:")?e.slice(15):E?.blend;return!n||!t||n===t?null:`Blender is editing ${t}; ${n} is not open. Return to ${t} before editing.`}function j(){return E?.documentId??ct}function ut(){return j()}function yn(t){if(E!==t)return!1;const e=M().documents.activeId();return!(e?.startsWith("document:model:")||e===ct)||e===t.documentId}async function Wn(t,e){const n=M();if(!n.session.open())throw new Error("Opening a model requires an open project session.");const r=n.projectLocalState.projectRootPath();if(r===null)throw new Error("Opening a model requires a project path.");if(!yn(t))return!1;const s=v(),o=s.start(r,t.blend);if(e(),await o,E!==t)return!1;const a=(await G()).snapshot();if(E!==t)return!1;const i=s.presented;return(!a||!i||a.session!==i.session||a.revision!==i.revision)&&await s.present(),E===t}function C(){return y?.project!=null&&ne()===null}let dt=0;const Ce=new Set;function Gn(){return dt}function zn(t){return Ce.add(t),()=>{Ce.delete(t)}}function P(){dt+=1;for(const t of[...Ce])t()}async function qn(t,e){return C()?v().rna(t,e):null}async function Hn(t,e){return C()?v().rnaContext(t,e):null}async function bn(t,e,n,r,s=!0){if(!C())return null;const o=await v().rnaSet(t,e,n,r,s);return P(),o}async function Xn(t){C()&&await v().viewShading(t)}async function Mn(t,e=!0,n="Blender Python"){const r=await v().execute(t,e,n);P();const s=/^Error executing code:/.exec(r);return{text:r,executed:s===null,result:s===null?r.replace(/^Code executed successfully: ?/,""):"",error:s===null?null:r.replace(/^Error executing code: ?/,"")}}function Yn(){v().historyGesture("history-begin").catch(t=>M().console.error(`Could not begin Blender undo gesture: ${String(t)}`,"blender-history"))}async function Zn(){await v().historyGesture("history-end")}async function vn(t){return C()?v().outliner(t):null}async function Kn(t){return C()?v().nodeTree(t):null}async function Jn(t){return C()?v().uvLayout(t):null}async function Qn(t){return C()?v().rig(t):null}async function er(t){return C()?v().actionClip(t):null}async function ht(t,e,n){if(!C())return null;const r=await v().outlinerSet(t,e,n);return P(),r}const xn={view:"blender-node-view",title:"Node Editor",verbs:[["state",void 0],["look",void 0],["view-all","Node Editor: Frame All"],["zoom",void 0],["pan",void 0],["move",void 0],["link",void 0],["set-value",void 0],["use-nodes",void 0],["collapse-panel",void 0]].map(([t,e])=>({id:t,...e?{title:e}:{},run:n=>ft({...n,action:t})}))};function ft(t){const e=typeof t.action=="string"?t.action:"state";switch(e){case"state":break;case"look":V({looked:typeof t.node=="string"?t.node:null,refusal:null});break;case"view-all":pn(),V({refusal:null});break;case"zoom":{const n=typeof t.zoom=="number"?t.zoom:1;V({transform:{...ye().transform,zoom:n},refusal:null});break}case"pan":{const n=ye().transform;V({transform:{...n,cx:typeof t.cx=="number"?t.cx:n.cx,cy:typeof t.cy=="number"?t.cy:n.cy},refusal:null});break}case"move":N(`Moving "${String(t.node??"a node")}" writes Node.location — editing parity is not the program.`);break;case"link":N("Dragging between sockets would make a link — editing parity is not the program.");break;case"set-value":N(`Changing "${String(t.socket??"a socket")}" writes the socket's default_value — editing parity is not the program.`);break;case"use-nodes":N("Use Nodes writes Material.use_nodes — editing parity is not the program.");break;case"collapse-panel":N(`Collapsing "${String(t.panel??"a panel")}" writes the panel's is_collapsed — editing parity is not the program.`);break;default:N(`blender-node-view: no action "${e}" — state, look, view-all, zoom, pan, and the refusals move, link, set-value, use-nodes, collapse-panel.`)}return ye()}let y=null;const re=new Set;function pt(){re.size&&M().history.invalidate([...re]),re.clear()}let Ae=null,Ke=!1;function oe(t){try{const e=M().session.beginWork(`Blender: ${t}`);return()=>{try{e()}catch{}}}catch{return()=>{}}}function Ie(){const t=oe("invalidating history and releasing runtime");try{pt(),Ae?.abort(),Ae=null,y?.terminate(),y=null,wt=null}finally{t()}}function En(){Ke||(Ke=!0,M().session.onBeforeClose(async()=>{await y?.stop(),Ie()}),M().session.onEnded(Ie))}let wt=null;const kn=t=>typeof t=="object"&&t!==null&&typeof t.applyFrame=="function"&&typeof t.stageFrame=="function"&&typeof t.snapshot=="function"&&typeof t.captureSnapshot=="function"&&typeof t.recordPresentation=="function"&&typeof t.recordPhotograph=="function";async function G(){const{documents:t}=M(),e=Date.now()+15e3;let n=j();for(;;){n=j();const r=await t.waitForContext(n,Math.max(0,Math.min(250,e-Date.now())));if(kn(r))return r;if(Date.now()>=e)break}throw new Error(`The Blender Model document is not open, or the open one is not a Model this engine can present to (it must answer stageFrame, applyFrame, captureSnapshot, recordPresentation and recordPhotograph): nothing published a presentable view as ${n} within 15 s (bound model: ${E?.documentId??"none"}). Open the Model document first (\`volter blender-mcp\` opens it before its first call).`)}function v(){const t=ne();if(t)throw new Error(t);if(y!==null)return y;En();const e=new AbortController;Ae=e;let n=!1,r=null;y=new Ot({work:oe,history:o=>{const a=y;if(!a)throw new Error("Blender history arrived before its runtime");for(const i of o){if("reset"in i){pt();continue}if(!i.resource)throw new Error("A Blender edit has no document resource");re.add(i.resource);const c=async u=>{if(y!==a)throw new Error("This Blender history belongs to a closed worker");const l=await a.historyStep(i.id,u);return P(),await hn(an().selected),l};M().history.record({id:i.id,label:i.label,resources:[i.resource],document:j(),undo:()=>c("undo"),redo:()=>c("redo")})}},stage:async o=>{if(o.abort){r?.stageFrame(o),r=null;return}const a=ne();if(a)throw new Error(a);if(E===null)return;const i=j(),c=await G();if(e.signal.throwIfAborted(),j()!==i)throw new Error("Blender document changed during frame transfer");r=c,c.stageFrame(o)},present:async(o,a,i)=>{const c=ne();if(c)throw new Error(c);if(E===null){if(i?.render)throw new Error("Rendering a Blender frame needs the Model document open; nothing is presenting.");return{}}const u=j(),l=oe("waiting for Model presenter");let d;try{d=await G()}finally{l()}if(e.signal.throwIfAborted(),j()!==u)throw new Error("Blender document changed before its frame could be presented");const k=oe("applying frame to Model"),m=(()=>{try{return d.applyFrame(o)}finally{k()}})(),S=typeof m=="object"&&m!==null&&"held"in m,b=S?m.held:null,p=w=>({...w===void 0?{}:{capture:w},...S?{held:b}:{}});if(d.recordPresentation(a),!i||(wt=i,!i.render))return p(void 0);const A=d.snapshot(),x=()=>{if(e.signal.throwIfAborted(),j()!==u||d.snapshot()!==A)throw new Error("Blender capture document or source revision changed before completion")};if(i.render.linearInput){const w=await lt(null,i.render);return x(),p(w)}const{render:f,position:h,target:g,up:T}=i;if(!h||!g||!T)throw new Error("A Blender render capture must carry the scene camera position, target and up");if(n)throw new Error("A Blender render capture is already in progress");const I=d.captureSnapshot();n=!0,e.signal.addEventListener("abort",I.dispose,{once:!0});try{x();const w=new Bt;w.add(I.root),w.updateMatrixWorld(!0);const z=I.root.matrixWorld,ie=new Ct().copy(z).invert(),gt=new Ve().setFromMatrix4(z),mt=new Ve().setFromMatrix4(ie),le=new ue(h[0],h[1],h[2]).applyMatrix4(z),Re=new ue(g[0],g[1],g[2]).applyMatrix4(z),Oe=new ue(T[0],T[1],T[2]).applyMatrix3(gt),ce=Math.min(2048,Math.round(f.width))/Math.min(2048,Math.round(f.height)),Ne=Ft(I.root).getBoundingSphere(new At),q=Lt(le.distanceTo(Ne.center),Ne.radius);let R;if(f.orthographic){const H=f.fov/2;R=new It(-H*ce,H*ce,H,-H,q.near,q.far)}else R=new jt(f.fov,ce,q.near,q.far);R.up.copy(Oe),R.position.copy(le),R.lookAt(Re),R.updateMatrixWorld(!0);const Pe={position:le.clone().applyMatrix4(ie).toArray(),target:Re.clone().applyMatrix4(ie).toArray(),up:Oe.clone().applyMatrix3(mt).toArray()};d.recordPhotograph({sent:{position:h,target:g,up:T},photographed:Pe,render:{width:f.width,height:f.height,fov:f.fov,orthographic:f.orthographic}});const yt=await mn(w,R,I,f,x);return p({...yt,camera:Pe})}finally{n=!1,e.signal.removeEventListener("abort",I.dispose),I.dispose()}},log:(o,a)=>console[o](`[blender] ${a}`)});const s=y;return M().session.reportWorkerCallMeter("Blender",()=>s.metrics()),y}const Sn="models/model.blend",B=(t,e)=>{const n=t[e];if(typeof n!="string")throw new Error(`${String(t.type)} requires a string "${e}"`);return n};async function Bn(t){const e=M().projectLocalState.projectRootPath();if(e===null)return{};let n;try{n=await t.execute(`import bpy
5
5
  print(bpy.data.filepath)
6
6
  `,!1)}catch{return{}}if(/^Error executing code:/m.test(n))return{};const r=n.replace(/^Code executed successfully:/,"").split(`
7
- `).map(o=>o.trim()).filter(o=>o.startsWith("/")).pop()??"";if(r==="")return{};const s=e.endsWith("/")?e:`${e}/`;return r.startsWith(s)?{document:r.slice(s.length)}:{}}async function er(t){const e=E();if(t.type==="blender-draw-batching"){if(typeof t.enabled!="boolean")return{ok:!1,error:"blender-draw-batching requires boolean enabled"};if(!y?.project||!e.session.open())return{ok:!1,error:"Open a Blender document before changing draw batching"};const n=await G();return n.setDrawBatching(t.enabled),{ok:!0,data:{instancing:n.drawStatistics()}}}if(t.type==="blender-status")return{ok:!0,data:{started:y?.project!=null,document:e.documents.context(j())!==void 0,instancing:y?.project!=null?(await G()).drawStatistics():null,lastOutput:y?.lastOutput??[]}};if(!e.session.open())return{ok:!1,error:`${t.type} needs an open project session; this editor page has none.`};try{const n=t.type==="blender-start"?B(t,"project"):null;let r=typeof t.document=="string"?t.document:void 0;if((t.type==="blender-stop"||t.type==="blender-start"&&t.fresh===!0)&&(await y?.stop(),Ie(),t.type==="blender-stop"))return{ok:!0,data:{stopped:!0}};if(t.type==="blender-start"&&!e.documents.context(j())){const o=await e.project.documentTable(),a=o.entries.filter(l=>l.kind==="model"),i=r!==void 0?a.find(l=>l.source?.path===r):a.find(l=>l.id===(x?.entryId??o.default))??(a.length===1?a[0]:void 0);if(!i)return{ok:!1,error:r!==void 0?`No declared Model document names ${r}.`:`Choose a Model document before starting Blender. Available: ${a.map(l=>l.id).join(", ")||"(none)"}.`};const c=i.id;if(r=i.source?.path,!await e.workspace.open({kind:"document",id:c}))return{ok:!1,error:`blender-start could not open the Blender Model document ${c}: nothing in this editor opens that document (the Model document ships with @volter/editor-blender).`}}const s=M();switch(t.type){case"blender-start":{const o=r!==void 0?r:x?.blend??kn;return{ok:!0,data:{...await s.start(n,o)}}}case"blender-execute":return{ok:!0,data:{result:(await bn(B(t,"code"))).text}};case"blender-scene-info":return{ok:!0,data:{result:await s.sceneInfo()}};case"blender-object-info":return{ok:!0,data:{result:await s.objectInfo(B(t,"name"))}};case"blender-rna":{const o=typeof t.names=="number"?t.names:void 0;return{ok:!0,data:{result:await s.rna(B(t,"path"),o)}}}case"blender-rna-context":{const o=typeof t.object=="string"?t.object:void 0,a=typeof t.collection=="string"?t.collection:void 0;return{ok:!0,data:{result:await s.rnaContext(o,a)}}}case"blender-rna-set":{const o=typeof t.index=="number"?t.index:void 0;return{ok:!0,data:{result:await yn(B(t,"path"),B(t,"property"),t.value,o)}}}case"blender-outliner":{const o=Array.isArray(t.selected)?t.selected.filter(a=>typeof a=="string"):void 0;return{ok:!0,data:{result:await s.outliner(o)}}}case"blender-node-tree":return{ok:!0,data:{result:await s.nodeTree({...typeof t.path=="string"?{path:t.path}:{},...typeof t.material=="string"?{material:t.material}:{}})}};case"blender-uv-layout":return{ok:!0,data:{result:await s.uvLayout({...typeof t.object=="string"?{object:t.object}:{},...typeof t.uvLayer=="string"?{uvLayer:t.uvLayer}:{}})}};case"blender-rig":return{ok:!0,data:{result:await s.rig({...typeof t.object=="string"?{object:t.object}:{}})}};case"blender-action-clip":return{ok:!0,data:{result:await s.actionClip({...typeof t.object=="string"?{object:t.object}:{},...typeof t.bake=="boolean"?{bake:t.bake}:{}})}};case"blender-node-view":{const o=typeof t.action=="string"?t.action:"state";return{ok:!0,data:{result:vn.verbs.some(i=>i.id===o)?yt("blender-node-view",o,t):ht(t)}}}case"blender-outliner-set":return{ok:!0,data:{result:await dt(B(t,"path"),B(t,"column"),t.value!==!1)}};case"blender-screenshot-view":{const o=typeof t.maxSize=="number"?t.maxSize:1e3,a={kind:"document",id:x?.entryId??"blender:runtime"};return{ok:!0,data:{...await s.screenshotView(o),document:a}}}case"blender-read-file":{const o=await s.readFile(B(t,"path")),a=B(t,"transferId"),i=await fetch(`/__editor/blender-file?id=${encodeURIComponent(a)}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([o])});return i.ok?{ok:!0,data:{bytes:o.length}}:{ok:!1,error:`Transfer ${a} was refused: ${i.status}`}}case"blender-write-file":{const o=atob(B(t,"base64")),a=Uint8Array.from(o,i=>i.charCodeAt(0));return await s.writeFile(B(t,"path"),a),{ok:!0,data:{written:a.length}}}case"blender-list-files":{const o=await s.listFiles(B(t,"path")),a=s.presented;return{ok:!0,data:{entries:o,...a?{session:a.session,revision:a.revision}:{},...await Sn(s)}}}}return{ok:!1,error:`Unknown Blender command ${t.type}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}export{Xn as A,On as B,Rn as C,bn as D,Te as E,Un as F,Vn as G,Hn as H,vn as N,Pn as a,Wn as b,V as c,ye as d,Zn as e,Dn as f,Qn as g,er as h,Jn as i,Kn as j,_n as k,ct as l,C as m,Nn as n,P as o,qn as p,zn as q,N as r,Gn as s,yn as t,$n as u,Ln as v,dn as w,sn as x,Fn as y,Yn as z};
7
+ `).map(o=>o.trim()).filter(o=>o.startsWith("/")).pop()??"";if(r==="")return{};const s=e.endsWith("/")?e:`${e}/`;return r.startsWith(s)?{document:r.slice(s.length)}:{}}async function tr(t){const e=M();if(t.type==="blender-draw-batching"){if(typeof t.enabled!="boolean")return{ok:!1,error:"blender-draw-batching requires boolean enabled"};if(!y?.project||!e.session.open())return{ok:!1,error:"Open a Blender document before changing draw batching"};const n=await G();return n.setDrawBatching(t.enabled),{ok:!0,data:{instancing:n.drawStatistics()}}}if(t.type==="blender-status")return{ok:!0,data:{started:y?.project!=null,document:e.documents.context(j())!==void 0,instancing:y?.project!=null?(await G()).drawStatistics():null,lastOutput:y?.lastOutput??[]}};if(!e.session.open())return{ok:!1,error:`${t.type} needs an open project session; this editor page has none.`};try{const n=t.type==="blender-start"?B(t,"project"):null;let r=typeof t.document=="string"?t.document:void 0;if((t.type==="blender-stop"||t.type==="blender-start"&&t.fresh===!0)&&(await y?.stop(),Ie(),t.type==="blender-stop"))return{ok:!0,data:{stopped:!0}};if(t.type==="blender-start"&&!e.documents.context(j())){const o=await e.project.documentTable(),a=o.entries.filter(l=>l.kind==="model"),i=r!==void 0?a.find(l=>l.source?.path===r):a.find(l=>l.id===(E?.entryId??o.default))??(a.length===1?a[0]:void 0);if(!i)return{ok:!1,error:r!==void 0?`No declared Model document names ${r}.`:`Choose a Model document before starting Blender. Available: ${a.map(l=>l.id).join(", ")||"(none)"}.`};const c=i.id;if(r=i.source?.path,!await e.workspace.open({kind:"document",id:c}))return{ok:!1,error:`blender-start could not open the Blender Model document ${c}: nothing in this editor opens that document (the Model document ships with @volter/editor-blender).`}}const s=v();switch(t.type){case"blender-start":{const o=r!==void 0?r:E?.blend??Sn;return{ok:!0,data:{...await s.start(n,o)}}}case"blender-execute":return{ok:!0,data:{result:(await Mn(B(t,"code"))).text}};case"blender-scene-info":return{ok:!0,data:{result:await s.sceneInfo()}};case"blender-object-info":return{ok:!0,data:{result:await s.objectInfo(B(t,"name"))}};case"blender-rna":{const o=typeof t.names=="number"?t.names:void 0;return{ok:!0,data:{result:await s.rna(B(t,"path"),o)}}}case"blender-rna-context":{const o=typeof t.object=="string"?t.object:void 0,a=typeof t.collection=="string"?t.collection:void 0;return{ok:!0,data:{result:await s.rnaContext(o,a)}}}case"blender-rna-set":{const o=typeof t.index=="number"?t.index:void 0;return{ok:!0,data:{result:await bn(B(t,"path"),B(t,"property"),t.value,o)}}}case"blender-outliner":{const o=Array.isArray(t.selected)?t.selected.filter(a=>typeof a=="string"):void 0;return{ok:!0,data:{result:await s.outliner(o)}}}case"blender-node-tree":return{ok:!0,data:{result:await s.nodeTree({...typeof t.path=="string"?{path:t.path}:{},...typeof t.material=="string"?{material:t.material}:{}})}};case"blender-uv-layout":return{ok:!0,data:{result:await s.uvLayout({...typeof t.object=="string"?{object:t.object}:{},...typeof t.uvLayer=="string"?{uvLayer:t.uvLayer}:{}})}};case"blender-rig":return{ok:!0,data:{result:await s.rig({...typeof t.object=="string"?{object:t.object}:{}})}};case"blender-action-clip":return{ok:!0,data:{result:await s.actionClip({...typeof t.object=="string"?{object:t.object}:{},...typeof t.bake=="boolean"?{bake:t.bake}:{}})}};case"blender-node-view":{const o=typeof t.action=="string"?t.action:"state";return{ok:!0,data:{result:xn.verbs.some(i=>i.id===o)?bt("blender-node-view",o,t):ft(t)}}}case"blender-outliner-set":return{ok:!0,data:{result:await ht(B(t,"path"),B(t,"column"),t.value!==!1)}};case"blender-screenshot-view":{const o=typeof t.maxSize=="number"?t.maxSize:1e3,a={kind:"document",id:E?.entryId??"blender:runtime"};return{ok:!0,data:{...await s.screenshotView(o),document:a}}}case"blender-read-file":{const o=await s.readFile(B(t,"path")),a=B(t,"transferId"),i=await fetch(`/__editor/blender-file?id=${encodeURIComponent(a)}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([o])});return i.ok?{ok:!0,data:{bytes:o.length}}:{ok:!1,error:`Transfer ${a} was refused: ${i.status}`}}case"blender-write-file":{const o=atob(B(t,"base64")),a=Uint8Array.from(o,i=>i.charCodeAt(0));return await s.writeFile(B(t,"path"),a),{ok:!0,data:{written:a.length}}}case"blender-list-files":{const o=await s.listFiles(B(t,"path")),a=s.presented;return{ok:!0,data:{entries:o,...a?{session:a.session,revision:a.revision}:{},...await Bn(s)}}}}return{ok:!1,error:`Unknown Blender command ${t.type}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}export{Yn as A,Nn as B,On as C,Mn as D,Te as E,Vn as F,yn as G,Wn as H,Xn as I,xn as N,Dn as a,Gn as b,V as c,ye as d,Kn as e,Un as f,er as g,tr as h,Qn as i,Jn as j,$n as k,ut as l,C as m,Pn as n,P as o,Hn as p,qn as q,N as r,zn as s,bn as t,Rn as u,Fn as v,hn as w,an as x,_n as y,Zn as z};