@volter/game-editor 0.5.82 → 0.5.84

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 (332) 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/catalog/entries/reflections.json +1 -1
  5. package/catalog/project-source/src/lib/reflections/ReflectionProbe.tsx +34 -5
  6. package/catalog/project-source/src/lib/reflections/index.ts +1 -0
  7. package/catalog/project-source/src/lib/reflections/probe-controller.ts +44 -3
  8. package/catalog/project-source/src/lib/reflections/reflection-probe-registry.ts +32 -7
  9. package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +638 -160
  10. package/dist/.vite/manifest.json +2213 -2195
  11. package/dist/assets/{AssetBudgetPanel-Iip49rxI.js → AssetBudgetPanel-BZy2XeqE.js} +3 -3
  12. package/dist/assets/{AudioViewer-DmkOvskF.js → AudioViewer-DIuzLzET.js} +1 -1
  13. package/dist/assets/{CanvasBoardDocument-DCS8uzQo.js → CanvasBoardDocument-3ZxWTKes.js} +1 -1
  14. package/dist/assets/{CanvasSceneViewport-CfOuQiQ0.js → CanvasSceneViewport-BP7FC2z5.js} +1 -1
  15. package/dist/assets/{ColorInput-7CPpl8MI.js → ColorInput-Bm2EzmOy.js} +1 -1
  16. package/dist/assets/EntityModelDocument-Cy-Qproq.js +1 -0
  17. package/dist/assets/{EnvironmentAssetDocument-DlS6KFJu.js → EnvironmentAssetDocument-B8VmbxfT.js} +1 -1
  18. package/dist/assets/{GameplaySessionTimeline-C3zH6edi.js → GameplaySessionTimeline-CDcfr07j.js} +1 -1
  19. package/dist/assets/{ImageViewer-C0lQ6YO0.js → ImageViewer-BNFjkWbV.js} +1 -1
  20. package/dist/assets/InspectorObjectPreview-DZS_A4lG.js +1 -0
  21. package/dist/assets/{JsonAssetDocument-DjmH9CQH.js → JsonAssetDocument-BkdsklFn.js} +1 -1
  22. package/dist/assets/{LiveModuleDocument-Hiot8Q5L.js → LiveModuleDocument-BEDGzgpM.js} +1 -1
  23. package/dist/assets/{LutAssetDocument-6bBwNMOn.js → LutAssetDocument-RmvH4zzl.js} +1 -1
  24. package/dist/assets/ModelAssetDocument-BgkVc8nF.js +1 -0
  25. package/dist/assets/{NonThreeAuthoringBootstrap-DpieYAMC.js → NonThreeAuthoringBootstrap-CcXUHOp3.js} +1 -1
  26. package/dist/assets/{Object3DDocumentToolbar-BtZkDxKa.js → Object3DDocumentToolbar-DaqNoA9f.js} +1 -1
  27. package/dist/assets/Object3DDocumentViewport-DFMCzcLc.js +2 -0
  28. package/dist/assets/{Object3DPreview-DdrYVJUZ.js → Object3DPreview-Dr4GQgGl.js} +1 -1
  29. package/dist/assets/{OnlineAssetDetail-D06eTe3y.js → OnlineAssetDetail-BPAK7Ras.js} +1 -1
  30. package/dist/assets/{PlayBar-BbzjgLFJ.js → PlayBar--cmmDXMt.js} +1 -1
  31. package/dist/assets/{QuarksAssetDocument-wGHNt4ov.js → QuarksAssetDocument-DYr9l2tH.js} +1 -1
  32. package/dist/assets/{ReactCanvasControls-BL2tOUj6.js → ReactCanvasControls-CoK-IJcH.js} +1 -1
  33. package/dist/assets/{RootSelectionOverlay-C6Wu8nIs.js → RootSelectionOverlay-Jz5Ll7BT.js} +1 -1
  34. package/dist/assets/{ShaderAssetDocument-BDi8iNLA.js → ShaderAssetDocument-Fn1SuMaS.js} +3 -3
  35. package/dist/assets/{ShadowEditor-C3L0UWSH.js → ShadowEditor-IrEJWfde.js} +1 -1
  36. package/dist/assets/{SourceAssetViewer-D832bARo.js → SourceAssetViewer-C6gxbMdi.js} +1 -1
  37. package/dist/assets/StageHost-eySsTLUI.js +2 -0
  38. package/dist/assets/{StoryPreviewMount-CmOEFzZY.js → StoryPreviewMount-CkBS-oOC.js} +1 -1
  39. package/dist/assets/{ThreeBoardDocument-BtBMGtiQ.js → ThreeBoardDocument-DiQabLNJ.js} +2 -2
  40. package/dist/assets/{ThreeIsolationSceneContent-BEHNSEsi.js → ThreeIsolationSceneContent-_p4Y5QZ6.js} +1 -1
  41. package/dist/assets/{ToolObject3DPreview-76LMkfin.js → ToolObject3DPreview-CSADrilV.js} +1 -1
  42. package/dist/assets/{Toolbar-BEBQdxRz.js → Toolbar-DhQAiAOw.js} +1 -1
  43. package/dist/assets/{TransientHint-CzsdY8W6.js → TransientHint-B3roDMmv.js} +1 -1
  44. package/dist/assets/{VideoViewer-Ckrawyuq.js → VideoViewer-DARXMIes.js} +1 -1
  45. package/dist/assets/{ViewportShadingMenu-BofQt6_4.js → ViewportShadingMenu-DC5996me.js} +1 -1
  46. package/dist/assets/{active-ingest-D_ryI_R4.js → active-ingest-BQBCy_Hx.js} +3 -3
  47. package/dist/assets/{animation-clock-QjtJDIsR.js → animation-clock-DAhQxVz9.js} +1 -1
  48. package/dist/assets/{animation-mixers.service-BInUs1US.js → animation-mixers.service-cc5qCZnh.js} +1 -1
  49. package/dist/assets/{animation-timeline.utility-DUrfNSwn.js → animation-timeline.utility-DXa0g-qN.js} +1 -1
  50. package/dist/assets/{asset-budget-asset.menu-DVQEksFp.js → asset-budget-asset.menu-DjEcxL08.js} +1 -1
  51. package/dist/assets/{asset-budget.action-C-ENAa52.js → asset-budget.action-D7-3Scj7.js} +1 -1
  52. package/dist/assets/{asset-budget.document-Bb1PyL3H.js → asset-budget.document-Dmn7QkMR.js} +1 -1
  53. package/dist/assets/{asset-budget.menu-CPi2yjBA.js → asset-budget.menu-djdA3Q-S.js} +1 -1
  54. package/dist/assets/{asset-editor-persistence-Duoq7o22.js → asset-editor-persistence-Dcy1Joo-.js} +1 -1
  55. package/dist/assets/{asset-loaders-BftJ2m7-.js → asset-loaders-B0eV8Nk_.js} +1 -1
  56. package/dist/assets/{asset-preview-BS71mXsZ.js → asset-preview-CGO8kmg5.js} +1 -1
  57. package/dist/assets/{audio-unlock.service-C3ygvDjU.js → audio-unlock.service-Bgp8fUjH.js} +1 -1
  58. package/dist/assets/{audio.utility-DF55sgHW.js → audio.utility-DM2IZjJR.js} +1 -1
  59. package/dist/assets/autoplay.service-aGTnDCDQ.js +1 -0
  60. package/dist/assets/{babylon-authoring-adapter-CmeehOBt.js → babylon-authoring-adapter-CNYnKhpl.js} +1 -1
  61. package/dist/assets/{binding-resolver-DUz8C8Fs.js → binding-resolver-By6DQSMJ.js} +2 -2
  62. package/dist/assets/blender-emscripten-engine-3RrRUwov.js +2 -0
  63. package/dist/assets/{blender-node-editor.document-B8S2TVMM.js → blender-node-editor.document-DDxLnK24.js} +1 -1
  64. package/dist/assets/{blender-properties-tab-y-_BeZDx.js → blender-properties-tab-DoLvP4a6.js} +1 -1
  65. package/dist/assets/{blender-runtime-host-CUH6peXj.js → blender-runtime-host-pYPr56UP.js} +2 -2
  66. package/dist/assets/{blender-runtime-skin-B1tYITn2.js → blender-runtime-skin-DGw7Uk4l.js} +13 -13
  67. package/dist/assets/blender-runtime.document-Bvlzayok.js +13 -0
  68. package/dist/assets/blender-screenshot.menu-BSfC-1EL.js +1 -0
  69. package/dist/assets/{blender-timeline.document-CeCylyXB.js → blender-timeline.document-D0P1AfdK.js} +1 -1
  70. package/dist/assets/{blender-uv-editor.document-DEllMw3a.js → blender-uv-editor.document-DEb_AwLC.js} +1 -1
  71. package/dist/assets/{blender-version.status-CrT9NqK-.js → blender-version.status-LifaPI0C.js} +1 -1
  72. package/dist/assets/blender-wali-engine-DGwF1KiV.js +2 -0
  73. package/dist/assets/{blender.command-GIjMG1-m.js → blender.command-DDOcs1dZ.js} +1 -1
  74. package/dist/assets/{board-guides-B6TEPOPi.js → board-guides-CQWXbsSW.js} +1 -1
  75. package/dist/assets/bridge.command-CJCc-avL.js +3 -0
  76. package/dist/assets/{browserAll-k35XRFil.js → browserAll-_6V_eM5P.js} +1 -1
  77. package/dist/assets/{build-player.document-CHxj4P8q.js → build-player.document-Dz_Mq8Pd.js} +1 -1
  78. package/dist/assets/{build-profiles.document-CZCk1HYA.js → build-profiles.document-CLCc3EbW.js} +2 -2
  79. package/dist/assets/{build-progress.status-BNwBxP2a.js → build-progress.status-BfR8rtJ_.js} +1 -1
  80. package/dist/assets/{build-session-CW2UyYFF.js → build-session-BkZeQ_S3.js} +1 -1
  81. package/dist/assets/{build.action-EmCcMu47.js → build.action-SVlllu1R.js} +1 -1
  82. package/dist/assets/{build.command-CzEckGcR.js → build.command-D6c8WqIx.js} +1 -1
  83. package/dist/assets/{build.header-CsYLpZbh.js → build.header-B_QEABFH.js} +1 -1
  84. package/dist/assets/{build.menu-CaDkDQuy.js → build.menu-wIEk8uq4.js} +1 -1
  85. package/dist/assets/{build.service-BcKtbU0-.js → build.service-C24aQmEn.js} +1 -1
  86. package/dist/assets/{camera-BwWZUyKt.js → camera-AsAJwixA.js} +1 -1
  87. package/dist/assets/{camera-runtime.inspector-CJyi3zmp.js → camera-runtime.inspector-EWiln7HZ.js} +1 -1
  88. package/dist/assets/{canvas-design-mount-B_uwZkEU.js → canvas-design-mount-7wA1io5I.js} +4 -4
  89. package/dist/assets/{canvas-entry-runtime-DskaohHK.js → canvas-entry-runtime-DxHv6Yxk.js} +2 -2
  90. package/dist/assets/{canvas-preview-frames-BzLeTumX.js → canvas-preview-frames-BJNr8ArE.js} +1 -1
  91. package/dist/assets/{canvas-story-capture.service-C80CsS8r.js → canvas-story-capture.service-DaHquc4I.js} +2 -2
  92. package/dist/assets/{capability-coverage-wd6bAhv3.js → capability-coverage-Fjv84QQN.js} +3 -3
  93. package/dist/assets/collaboration-presence-BYi9wylK.js +1 -0
  94. package/dist/assets/{collider-Dw2iWV3F.js → collider-BVans4YU.js} +1 -1
  95. package/dist/assets/{component-board.service-XAxyLCnM.js → component-board.service-6eXUhS3p.js} +2 -2
  96. package/dist/assets/component-board.service-C1VJog-q.js +2 -0
  97. package/dist/assets/{component-board.service-CH99sgj0.js → component-board.service-cNKaXoxN.js} +2 -2
  98. package/dist/assets/{component-contracts.service-DerT0BP-.js → component-contracts.service-B9e64gRX.js} +1 -1
  99. package/dist/assets/{component-instance-root-Cw_-ajBX.js → component-instance-root-Cw2jcbxa.js} +1 -1
  100. package/dist/assets/{component-verbs.command-BHK9M2Rk.js → component-verbs.command-CKmDlrFh.js} +1 -1
  101. package/dist/assets/component-verbs.service-C6MrL6R1.js +1 -0
  102. package/dist/assets/{config-1rCvm02z.js → config-CXA3itWR.js} +3 -3
  103. package/dist/assets/{configurations-CRTYw0r9.js → configurations-fjyekkEX.js} +1 -1
  104. package/dist/assets/{connection.status-D4fjnH24.js → connection.status-DmthQqVz.js} +1 -1
  105. package/dist/assets/{constraints.inspector-BgnafOLf.js → constraints.inspector-CvJlw3rw.js} +1 -1
  106. package/dist/assets/{content-bounds-D5pXeHJN.js → content-bounds-vfJMc-IO.js} +1 -1
  107. package/dist/assets/{contract-system-adapters-rVGdworX.js → contract-system-adapters-BL22QlsE.js} +1 -1
  108. package/dist/assets/{coverage.service-BNme5Agb.js → coverage.service-BO-eNB08.js} +2 -2
  109. package/dist/assets/{create-runtime-CcuQTSfy.js → create-runtime-DJ21Fa_i.js} +2 -2
  110. package/dist/assets/{curve-DorFv33R.js → curve-CiO2-ZoW.js} +1 -1
  111. package/dist/assets/{data-asset-CAE35Emh.js → data-asset-ByLXUC98.js} +1 -1
  112. package/dist/assets/{data-ref-DXqRnZsJ.js → data-ref-DpW1ZAc3.js} +1 -1
  113. package/dist/assets/{debug-bridge-DdCJSEni.js → debug-bridge-Bjh7HoG_.js} +1 -1
  114. package/dist/assets/{debug-registry-xQJcVubm.js → debug-registry-Bty6AiHN.js} +1 -1
  115. package/dist/assets/{deferred-ingest-play-CEnsC3uN.js → deferred-ingest-play-BDtHDAut.js} +2 -2
  116. package/dist/assets/{design-time-canvas-mount-CPRrCPFA.js → design-time-canvas-mount-CpNAFajF.js} +2 -2
  117. package/dist/assets/{design-time-layers-hmGqBp06.js → design-time-layers-BjbCzOaH.js} +1 -1
  118. package/dist/assets/{design-time-mount.service-CEmJjRIJ.js → design-time-mount.service-D2nvXCrm.js} +2 -2
  119. package/dist/assets/{design-time-mount.service-CLL-1Za4.js → design-time-mount.service-x4-8taot.js} +2 -2
  120. package/dist/assets/{design-time-react-mount-DmXi3GBy.js → design-time-react-mount-DlBtYE3L.js} +1 -1
  121. package/dist/assets/{document-preview-three-B4j_zNef.js → document-preview-three-CSHYA1BH.js} +1 -1
  122. package/dist/assets/{dom-authoring-adapter-BklRbjZB.js → dom-authoring-adapter-BRkZp4sE.js} +1 -1
  123. package/dist/assets/{draco3d-CFWI1XDT.js → draco3d-az59P8mF.js} +1 -1
  124. package/dist/assets/{edit-mode-audio.service-SUzv0nHs.js → edit-mode-audio.service--N5HyK0y.js} +1 -1
  125. package/dist/assets/{edit-mode-authoring-CSt3zzmS.js → edit-mode-authoring-BeMAYXYR.js} +1 -1
  126. package/dist/assets/{edit-mode-networking.service-D6UohrCr.js → edit-mode-networking.service-ByUOzpRh.js} +1 -1
  127. package/dist/assets/editor-api-dfe-lCMZ.js +1 -0
  128. package/dist/assets/{editor-layers-CjeYrUlm.js → editor-layers-Djcn6Scw.js} +1 -1
  129. package/dist/assets/{editor-shell-store-DckLm6m8.js → editor-shell-store-Br2L1Fw1.js} +1 -1
  130. package/dist/assets/{entity-object-V13bGmay.js → entity-object-BiOrbQZM.js} +1 -1
  131. package/dist/assets/{extend-BQeRA-aV.js → extend-BMnknpN1.js} +1 -1
  132. package/dist/assets/fork-menu-BOn71mbn.js +1 -0
  133. package/dist/assets/{frame-debugger-store-DDxWlDPK.js → frame-debugger-store-DVchJN-z.js} +1 -1
  134. package/dist/assets/{game-contract-seams-DrYyE5PX.js → game-contract-seams-gIFojMW2.js} +1 -1
  135. package/dist/assets/{game-css-scope-transform-D5hQWaci.js → game-css-scope-transform-Dab-AkD5.js} +1 -1
  136. package/dist/assets/{game-document.service-cJ1yKc2V.js → game-document.service-CFLg-vRz.js} +1 -1
  137. package/dist/assets/{game-eval.command-CKo-W17_.js → game-eval.command-Xch06afq.js} +1 -1
  138. package/dist/assets/{game-module-access-DuptGLGx.js → game-module-access-BDliSO9v.js} +1 -1
  139. package/dist/assets/{game-network-CAH_Jsh6.js → game-network-CTdS02CN.js} +3 -3
  140. package/dist/assets/{gameplay-export-B-JE4uSD.js → gameplay-export-Ct4wopUb.js} +1 -1
  141. package/dist/assets/gameplay-replay-xk1wnQ88.js +1 -0
  142. package/dist/assets/{gameplay.command-D4cY3nOq.js → gameplay.command-W3Sq7zn-.js} +1 -1
  143. package/dist/assets/{generation-jobs-CcCrhKLM.js → generation-jobs-BTP2zuZi.js} +1 -1
  144. package/dist/assets/{generation.service-CQwmLAOQ.js → generation.service-CHPmGb7B.js} +1 -1
  145. package/dist/assets/{generations-qfhCRH8C.js → generations-C7ppzxDW.js} +1 -1
  146. package/dist/assets/{generations.status-CcbR2OfF.js → generations.status-Cxb0-UxC.js} +1 -1
  147. package/dist/assets/{hierarchy-marks-B1jSqxSv.js → hierarchy-marks-3Iq1RFIh.js} +1 -1
  148. package/dist/assets/{hosted-asset-materialization-BZf-8JA1.js → hosted-asset-materialization-BK8ZfMnr.js} +2 -2
  149. package/dist/assets/ibl-override-material-C09OAhCc.js +6 -0
  150. package/dist/assets/{index-V4J7xfRg.js → index-BXH2Jsun.js} +294 -294
  151. package/dist/assets/index-CAf6mYXW.js +1 -0
  152. package/dist/assets/{index-aREcGExk.js → index-CP5WJuE9.js} +1 -1
  153. package/dist/assets/{index-D_ViOFCz.js → index-D9H8FkR3.js} +2 -2
  154. package/dist/assets/{index-DrEVdQvN.js → index-DAuA0xMo.js} +1 -1
  155. package/dist/assets/{index-CHa43s2p.js → index-DkTiDXNY.js} +1 -1
  156. package/dist/assets/{index-D-RMHSzb.js → index-Kznwz4yS.js} +1 -1
  157. package/dist/assets/{index-DXtfej3G.js → index-Yw9pOoLh.js} +1 -1
  158. package/dist/assets/{index-Cj_b0Ygc.js → index-k1tDFKMg.js} +1 -1
  159. package/dist/assets/{inference-diagnostics-DoZQ1mpg.js → inference-diagnostics-CxWL3UhK.js} +1 -1
  160. package/dist/assets/{ingest-boot-viewport-DWdOtGGE.js → ingest-boot-viewport-BeYyFYst.js} +1 -1
  161. package/dist/assets/{ingest-siblings-DyvasVDH.js → ingest-siblings-DGjWGyZo.js} +1 -1
  162. package/dist/assets/{ingest-source-persistence-CQOJeGhj.js → ingest-source-persistence-BFkLdeMy.js} +1 -1
  163. package/dist/assets/{ingest.service-CqIcydem.js → ingest.service-adZJNY83.js} +1 -1
  164. package/dist/assets/{inspect-DiSjB-N1.js → inspect-Dah00n9O.js} +1 -1
  165. package/dist/assets/instances.command-neq95jyN.js +1 -0
  166. package/dist/assets/{json-history-resource-CH2nzMZh.js → json-history-resource-DYW614tc.js} +1 -1
  167. package/dist/assets/layered-pick-Cn98HSnj.js +1 -0
  168. package/dist/assets/{light-CxiGIJma.js → light-nb6H9zi_.js} +1 -1
  169. package/dist/assets/{live-project-verbs-CnknlUlT.js → live-project-verbs-CyWrvvzK.js} +1 -1
  170. package/dist/assets/{machine.document-D7jMrzXt.js → machine.document-BlWIYspE.js} +1 -1
  171. package/dist/assets/{machines.finder-Dor3O0uf.js → machines.finder-D-nBx1QJ.js} +1 -1
  172. package/dist/assets/material-CcQQ-mP8.js +1 -0
  173. package/dist/assets/{material-factory-BN3Lax5C.js → material-factory-CKO4sgCS.js} +1 -1
  174. package/dist/assets/{mesh-Cj-CYroI.js → mesh-CGB8fhbT.js} +1 -1
  175. package/dist/assets/{model-asset-sections.service-mC4WJFTA.js → model-asset-sections.service-oZwOlxI-.js} +1 -1
  176. package/dist/assets/{model-inspection-8o57YSZW.js → model-inspection-B5p-uq9q.js} +1 -1
  177. package/dist/assets/{model-thumbnail-chePRlH7.js → model-thumbnail-Cgyfafqg.js} +1 -1
  178. package/dist/assets/{models.finder-CKkT5ZdU.js → models.finder-v4ShdgaO.js} +1 -1
  179. package/dist/assets/{module-mode-BMiMhHI3.js → module-mode-BBCbx1-D.js} +2 -2
  180. package/dist/assets/{mount-canvas-ingest-root-B1swVIUJ.js → mount-canvas-ingest-root-9CLvzAsA.js} +2 -2
  181. package/dist/assets/{mount-dom-ingest-root-B8hO5mht.js → mount-dom-ingest-root-CZA1Dw6t.js} +2 -2
  182. package/dist/assets/{mount-ingest-root-Cbnh-mSw.js → mount-ingest-root-hudyfrT7.js} +2 -2
  183. package/dist/assets/{mount-manifest-B7oL1Abg.js → mount-manifest-C_z-xK97.js} +1 -1
  184. package/dist/assets/{mount-three-ingest-root-BdUJx6ix.js → mount-three-ingest-root-DWoCP70F.js} +1 -1
  185. package/dist/assets/{mounted-authoring-C47L5H5t.js → mounted-authoring-DMWjUr2Z.js} +1 -1
  186. package/dist/assets/{mounted-story-viewport-source-CyEK_vaq.js → mounted-story-viewport-source-Iq6tisms.js} +1 -1
  187. package/dist/assets/{native-debug-module-JJOFtIVz.js → native-debug-module-BO5dlpfD.js} +1 -1
  188. package/dist/assets/{navigation-ROJM2w84.js → navigation-BzH049Ad.js} +1 -1
  189. package/dist/assets/{navmesh.menu-DjefqtkI.js → navmesh.menu-CicRFavg.js} +1 -1
  190. package/dist/assets/{navmesh.service-BPqjEQiq.js → navmesh.service-B0zUTaL0.js} +1 -1
  191. package/dist/assets/network-observer.service-CvC30rDc.js +1 -0
  192. package/dist/assets/{network.utility-6Y5u53n8.js → network.utility-DTpK-Ri9.js} +1 -1
  193. package/dist/assets/{object3d-document-session-registry-DNCOGA3i.js → object3d-document-session-registry-CTeivmwK.js} +2 -2
  194. package/dist/assets/{oid-transform-DQzN_Gl_.js → oid-transform-xxKy1722.js} +1 -1
  195. package/dist/assets/{particles-DGdUmqOr.js → particles-CeOU09tg.js} +1 -1
  196. package/dist/assets/{pixi-authoring-adapter-BRktdcIz.js → pixi-authoring-adapter-qwgLB4nb.js} +1 -1
  197. package/dist/assets/{pixi-live-write-target-Dg0mdLaa.js → pixi-live-write-target-B-E2O-WC.js} +1 -1
  198. package/dist/assets/{play.command-4IDAqR5W.js → play.command-CAhUsYcp.js} +2 -2
  199. package/dist/assets/{presentation-8m-RDKIS.js → presentation-BKcWD0nx.js} +1 -1
  200. package/dist/assets/{product-t6tauO7R.js → product-C8OFGza7.js} +1 -1
  201. package/dist/assets/{profiler.action-CXA4IkQB.js → profiler.action-CyjXGHbx.js} +1 -1
  202. package/dist/assets/{profiler.menu-BgIBv4-I.js → profiler.menu-DXHAGF3Z.js} +1 -1
  203. package/dist/assets/{profiler.utility-BYoRbfIK.js → profiler.utility-Qx-aaTdo.js} +1 -1
  204. package/dist/assets/{project-authoring-session-DkekCxNv.js → project-authoring-session-B0YSloNS.js} +2 -2
  205. package/dist/assets/{properties-bone-constraints.inspector-DXpiCtf9.js → properties-bone-constraints.inspector-C-dwjglB.js} +1 -1
  206. package/dist/assets/{properties-bone.inspector-wIDsP4c5.js → properties-bone.inspector-CeZIE99V.js} +1 -1
  207. package/dist/assets/{properties-collection.inspector-5SRPbqfM.js → properties-collection.inspector-DiSBJpTu.js} +1 -1
  208. package/dist/assets/{properties-constraints.inspector-DIjKz692.js → properties-constraints.inspector-2DxnBAIf.js} +1 -1
  209. package/dist/assets/{properties-data.inspector-DE6i8biZ.js → properties-data.inspector-DvSzTW7_.js} +1 -1
  210. package/dist/assets/{properties-material.inspector-Cu1UCPY4.js → properties-material.inspector-XPNSk9iW.js} +1 -1
  211. package/dist/assets/{properties-modifiers.inspector-DsQzA638.js → properties-modifiers.inspector-8pjl5OY9.js} +1 -1
  212. package/dist/assets/{properties-object.inspector-C57X0GJq.js → properties-object.inspector-a30WyA7Q.js} +1 -1
  213. package/dist/assets/{properties-output.inspector-DzrcFuRM.js → properties-output.inspector-B9JochaR.js} +1 -1
  214. package/dist/assets/{properties-particles.inspector-DGqSnelN.js → properties-particles.inspector-D6rRhjyA.js} +1 -1
  215. package/dist/assets/{properties-physics.inspector-DIjhtiLe.js → properties-physics.inspector-BcJFxv6L.js} +1 -1
  216. package/dist/assets/{properties-render.inspector-CX0orwn9.js → properties-render.inspector-DHPbElDL.js} +1 -1
  217. package/dist/assets/{properties-scene.inspector-DaHNL_sq.js → properties-scene.inspector-ZJueIZwx.js} +1 -1
  218. package/dist/assets/{properties-texture.inspector-B5hmxPRy.js → properties-texture.inspector-CvUhb-u8.js} +1 -1
  219. package/dist/assets/{properties-view-layer.inspector-C7hdJgei.js → properties-view-layer.inspector-CaaGgMEq.js} +1 -1
  220. package/dist/assets/{properties-world.inspector-EWTC6jNw.js → properties-world.inspector-10GD8Fpy.js} +1 -1
  221. package/dist/assets/{r3f-design-session-CXlGV9hp.js → r3f-design-session-CVxU3s62.js} +2 -2
  222. package/dist/assets/{r3f-physics-binding-DZSIB0d_.js → r3f-physics-binding-jUszsaB2.js} +1 -1
  223. package/dist/assets/{r3f-source-authoring-adapter-GR97EmII.js → r3f-source-authoring-adapter-Cmxf0Hvz.js} +1 -1
  224. package/dist/assets/{react-canvas-navigation-L_mOnybL.js → react-canvas-navigation-B-5CNIty.js} +1 -1
  225. package/dist/assets/{react-inspector.service-B4P3UnSY.js → react-inspector.service-wpEmCNFv.js} +1 -1
  226. package/dist/assets/{react-story-board-CT1_3sk_.js → react-story-board-CMghMNcN.js} +1 -1
  227. package/dist/assets/{react-three-rapier.esm-DyMNYoA_.js → react-three-rapier.esm-LvsEG944.js} +1 -1
  228. package/dist/assets/{react-world-authoring-adapter-OR1SW2jI.js → react-world-authoring-adapter-qVYWC2NO.js} +1 -1
  229. package/dist/assets/{realm-services-u0mnjXU9.js → realm-services-DvRrMpdg.js} +1 -1
  230. package/dist/assets/{reflection-probe-capture.inspector-CTNlSaGW.js → reflection-probe-capture.inspector-vo8ShT8w.js} +1 -1
  231. package/dist/assets/{registry-wqakYaDW.js → registry-CC-Vb6qS.js} +1 -1
  232. package/dist/assets/{relative-import-specifier-DXWVQf0o.js → relative-import-specifier-CT_YQo7I.js} +1 -1
  233. package/dist/assets/{render-env-CN09NtDf.js → render-env-YEmoFtX3.js} +1 -1
  234. package/dist/assets/{render-features-HCEupUJ6.js → render-features-B7OI7f1i.js} +1 -1
  235. package/dist/assets/{render-settings-Clt6d05o.js → render-settings-Mh_ddGef.js} +1 -1
  236. package/dist/assets/{resolve-three-CLzKVMx2.js → resolve-three-0A-COMTr.js} +3 -3
  237. package/dist/assets/{root-seam-contract-D2uQHWF9.js → root-seam-contract-SVcCHdYl.js} +1 -1
  238. package/dist/assets/{run-selection-AyelFc9T.js → run-selection-HF9_7IwN.js} +1 -1
  239. package/dist/assets/{scene-capture-WbPcLfJl.js → scene-capture-BvNIvwYD.js} +1 -1
  240. package/dist/assets/{scene-document.service-4U6rDhCp.js → scene-document.service-Ck2pGl4I.js} +2 -2
  241. package/dist/assets/{scene-framing-DzSL2Cld.js → scene-framing-BgT3O3rp.js} +1 -1
  242. package/dist/assets/{seeded-random-tpdJjdqy.js → seeded-random-BVxDLbEH.js} +1 -1
  243. package/dist/assets/{setup-renderer-B5vZmCyu.js → setup-renderer-BCSUurTm.js} +1 -1
  244. package/dist/assets/{source-object3d-authoring-adapter-BQnQ3Qzg.js → source-object3d-authoring-adapter-CShEQbUV.js} +1 -1
  245. package/dist/assets/{source-persistence-backend-uyd6NiWD.js → source-persistence-backend-DOkAuppW.js} +1 -1
  246. package/dist/assets/{stage-keyboard-B2yrk2zu.js → stage-keyboard-BJEP_zFM.js} +1 -1
  247. package/dist/assets/{stage-overlay-set-Cqtz3s06.js → stage-overlay-set-U3RYk04i.js} +1 -1
  248. package/dist/assets/{stage-presence-markers-BgLs0Aj5.js → stage-presence-markers-C9j53BR-.js} +1 -1
  249. package/dist/assets/stage-transform-tools-D9eCTssP.js +1 -0
  250. package/dist/assets/{standard-viewport-dressing-uhv_3JvQ.js → standard-viewport-dressing-CCVrTojE.js} +3 -3
  251. package/dist/assets/{state-watch.action-BJ08HgcO.js → state-watch.action-fGEIwj5w.js} +1 -1
  252. package/dist/assets/{state-watch.menu-rAULwijr.js → state-watch.menu-Bvi0XsP3.js} +1 -1
  253. package/dist/assets/{state-watch.utility-eEbQcj8t.js → state-watch.utility-BNhj8Nnx.js} +1 -1
  254. package/dist/assets/story-capture-D0GNxNYo.js +1 -0
  255. package/dist/assets/{story-documents-Cm4jCkW5.js → story-documents-BF53RkDW.js} +2 -2
  256. package/dist/assets/{story-documents.service-BDvQCslK.js → story-documents.service-cTbf9p1e.js} +1 -1
  257. package/dist/assets/{story-documents.service-Cgtg6rXn.js → story-documents.service-mW6CBXLc.js} +1 -1
  258. package/dist/assets/story-media-presence-DsyVqDVF.js +1 -0
  259. package/dist/assets/{story-pixi-preview-D62Q_vIW.js → story-pixi-preview-DpjZcKtE.js} +1 -1
  260. package/dist/assets/{story-presentation-CofUdEU7.js → story-presentation-CNkoc9rw.js} +1 -1
  261. package/dist/assets/{story-three-preview-B9O1wapP.js → story-three-preview--fB-XR3A.js} +2 -2
  262. package/dist/assets/{studio-environment-BIhqrtFc.js → studio-environment-TibfpTB9.js} +1 -1
  263. package/dist/assets/{surface-state-DrM3wsrr.js → surface-state-Bt3iAf79.js} +1 -1
  264. package/dist/assets/{syntactic-prop-specs-BGz0N7Dg.js → syntactic-prop-specs-CN0U9uqz.js} +1 -1
  265. package/dist/assets/{team-playtest.service-CiE8UJAe.js → team-playtest.service-DiziYIhq.js} +1 -1
  266. package/dist/assets/{three-BQfhEwUz.js → three-DfbLdx-e.js} +1 -1
  267. package/dist/assets/{three-authoring-adapter-COBwREQO.js → three-authoring-adapter-CtjX4v6r.js} +1 -1
  268. package/dist/assets/three-authoring.service-BruYh1LE.js +2 -0
  269. package/dist/assets/{three-ingest-runtime-BnRF_nJN.js → three-ingest-runtime-V4l_ZpBp.js} +1 -1
  270. package/dist/assets/three-integration-BxG_D6RK.js +2 -0
  271. package/dist/assets/three-integration.service-CBSTLULk.js +1 -0
  272. package/dist/assets/{three-projection-core-PQm-CO61.js → three-projection-core-CyqdOvLG.js} +1 -1
  273. package/dist/assets/{three-state-C7khRIQE.js → three-state-B9ax7cgA.js} +1 -1
  274. package/dist/assets/{three-story-capture.service-B0oiGIfp.js → three-story-capture.service-CUVsgZa5.js} +2 -2
  275. package/dist/assets/three-story-model-NEuWKJe1.js +1 -0
  276. package/dist/assets/{three-viewport-presentation-B_tBudM-.js → three-viewport-presentation-Da0lYO0_.js} +1 -1
  277. package/dist/assets/{transform-mode-request-DWM6BdRA.js → transform-mode-request-Bfse_kvX.js} +1 -1
  278. package/dist/assets/{transport-strip-vgXGDgkI.js → transport-strip-DYbGjuX-.js} +1 -1
  279. package/dist/assets/transport.header-BglFgDzu.js +1 -0
  280. package/dist/assets/{tuples-BnYrlQqS.js → tuples-CMTm7T5T.js} +1 -1
  281. package/dist/assets/ui-board-document-GaFlpf81.js +2 -0
  282. package/dist/assets/{user-data-CifDDvSr.js → user-data-CYeyy9Su.js} +1 -1
  283. package/dist/assets/{utility-view-state-BPl8Asup.js → utility-view-state-Ye00iOCB.js} +1 -1
  284. package/dist/assets/{viewport-door-BCXEYmon.js → viewport-door-CCXNhxOW.js} +1 -1
  285. package/dist/assets/{viewport-root-presentation-DJLpUuf0.js → viewport-root-presentation-52V6g9Ae.js} +1 -1
  286. package/dist/assets/{viewport-surface-status-jwLhIK_M.js → viewport-surface-status-BtHfBssH.js} +1 -1
  287. package/dist/assets/{webworkerAll-P6jePa6X.js → webworkerAll-D7_8g3e0.js} +1 -1
  288. package/dist/assets/worker-BRY0I3XJ.js +2 -0
  289. package/dist/assets/{workspace-arrangement-B_OcbQbj.js → workspace-arrangement-D8CXsifv.js} +1 -1
  290. package/dist/assets/{world-documents-Bx3j867R.js → world-documents-C4AdTIHw.js} +1 -1
  291. package/dist/assets/{world-root-stage-binding-LEhjWDkn.js → world-root-stage-binding-CvEyzq0c.js} +1 -1
  292. package/dist/assets/{xstate-animation-binding-Dionc_fC.js → xstate-animation-binding-CmmOqqwV.js} +1 -1
  293. package/dist/assets/{xstate-animation-meta-XEmD_qc_.js → xstate-animation-meta-BSBJhOAT.js} +1 -1
  294. package/dist-node/cli.js +21 -18
  295. package/package.json +16 -16
  296. package/template/src/lib/reflections/ReflectionProbe.tsx +34 -5
  297. package/template/src/lib/reflections/index.ts +1 -0
  298. package/template/src/lib/reflections/probe-controller.ts +44 -3
  299. package/template/src/lib/reflections/reflection-probe-registry.ts +32 -7
  300. package/template/src/lib/reflections/volume-reflection-material.ts +638 -160
  301. package/dist/assets/EntityModelDocument-CplmAib0.js +0 -1
  302. package/dist/assets/InspectorObjectPreview-Bjc1Tn-I.js +0 -1
  303. package/dist/assets/ModelAssetDocument-G6ajiV51.js +0 -1
  304. package/dist/assets/Object3DDocumentViewport-BhH8afDi.js +0 -2
  305. package/dist/assets/StageHost-Bor1eHEO.js +0 -2
  306. package/dist/assets/autoplay.service-DaonKf7O.js +0 -1
  307. package/dist/assets/blender-emscripten-engine-DQljvfR7.js +0 -2
  308. package/dist/assets/blender-runtime.document-DnSl0twI.js +0 -12
  309. package/dist/assets/blender-wali-engine-CO-jG_ik.js +0 -2
  310. package/dist/assets/bridge.command-D6qTcgje.js +0 -3
  311. package/dist/assets/collaboration-presence-DcPhahtF.js +0 -1
  312. package/dist/assets/component-board.service-Cd1c9oSN.js +0 -2
  313. package/dist/assets/component-verbs.service-DsxhVcvk.js +0 -1
  314. package/dist/assets/editor-api-WeHVNlEo.js +0 -1
  315. package/dist/assets/fork-menu-Bthg9viY.js +0 -1
  316. package/dist/assets/gameplay-replay-WyopKGyB.js +0 -1
  317. package/dist/assets/ibl-override-material-CMo_a49U.js +0 -6
  318. package/dist/assets/index-yXSK_qPW.js +0 -1
  319. package/dist/assets/instances.command-COw2QpbN.js +0 -1
  320. package/dist/assets/layered-pick-BUr1U8lU.js +0 -1
  321. package/dist/assets/material-B6cH1Oqw.js +0 -1
  322. package/dist/assets/network-observer.service-GFzXuBMb.js +0 -1
  323. package/dist/assets/stage-transform-tools-BHcz53td.js +0 -1
  324. package/dist/assets/story-capture-B8wfSf5s.js +0 -1
  325. package/dist/assets/story-media-presence-SGlp_afL.js +0 -1
  326. package/dist/assets/three-authoring.service-C0azvoq8.js +0 -2
  327. package/dist/assets/three-integration-DeWYFf1x.js +0 -2
  328. package/dist/assets/three-integration.service-CoWCBTmg.js +0 -1
  329. package/dist/assets/three-story-model-D7g2pqfJ.js +0 -1
  330. package/dist/assets/transport.header-CfVHXjrT.js +0 -1
  331. package/dist/assets/ui-board-document-B_-K9luq.js +0 -2
  332. package/dist/assets/worker-CJIsrsP6.js +0 -2
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ToolObject3DPreview-76LMkfin.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/Object3DPreview-DdrYVJUZ.js","assets/index-V4J7xfRg.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/OrbitControls-B13MKuwC.js","assets/asset-preview-BS71mXsZ.js","assets/editor-layers-CjeYrUlm.js","assets/workspace-arrangement-B_OcbQbj.js","assets/renderer-ownership-BovSEcLv.js","assets/hierarchy-marks-B1jSqxSv.js","assets/studio-environment-BIhqrtFc.js","assets/user-data-CifDDvSr.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/bitmap-label-Ct4k6ehY.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/model-thumbnail-chePRlH7.js","assets/StageHost-Bor1eHEO.js","assets/three-state-C7khRIQE.js","assets/editor-shell-store-DckLm6m8.js","assets/output-pass-HurwNl0G.js","assets/Pass-D1MRT672.js","assets/entity-object-V13bGmay.js","assets/three-contract-Dkt6PmWY.js","assets/standard-viewport-dressing-uhv_3JvQ.js","assets/content-bounds-D5pXeHJN.js","assets/preview-renderer-BrYNFV1p.js","assets/live-mixers-B-bwLZ7c.js","assets/live-gesture-lock-DJbrjOqf.js","assets/model-inspection-8o57YSZW.js","assets/three-viewport-presentation-B_tBudM-.js","assets/clip-planes-CnAI6DZn.js","assets/three-BQfhEwUz.js","assets/component-instance-root-Cw_-ajBX.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/scene-framing-DzSL2Cld.js","assets/object3d-document-session-registry-DNCOGA3i.js","assets/source-object3d-authoring-adapter-BQnQ3Qzg.js","assets/three-projection-core-PQm-CO61.js","assets/viewport-door-BCXEYmon.js","assets/transport-strip-vgXGDgkI.js","assets/viewport-surface-status-jwLhIK_M.js","assets/ModelAssetDocument-G6ajiV51.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-BUr1U8lU.js","assets/root-stacking-BEd9ZvxC.js","assets/EntityModelDocument-CplmAib0.js","assets/EnvironmentAssetDocument-DlS6KFJu.js","assets/asset-editor-persistence-Duoq7o22.js","assets/LutAssetDocument-6bBwNMOn.js","assets/index-DHhMOs_s.js","assets/ShaderAssetDocument-BDi8iNLA.js","assets/ColorInput-7CPpl8MI.js","assets/LiveModuleDocument-Hiot8Q5L.js","assets/Object3DDocumentViewport-BhH8afDi.js","assets/QuarksAssetDocument-wGHNt4ov.js","assets/project-provenance-BGnJXJwa.js","assets/InspectorObjectPreview-Bjc1Tn-I.js"])))=>i.map(i=>d[i]);
2
- import{aG as Ie,kR as Me,kQ as Z,aF as Te,lp as Re,g5 as xe,ds as je,aC as Ve,_ as y,aj as Ne,lq as Le,lr as ze,ls as Fe,lt as Be,lu as He,lv as qe,lw as Ue,lx as We,ly as Ge,hh as Qe,lz as $e,bZ as Ye,lA as Je,lB as Ke,lC as he,kT as z,B as X,E as Ze,x as B,bK as Xe,lD as et,r as ve,J as tt,F as rt,lE as ot,lF as nt,lG as W,Q as at,c_ as st,kI as it}from"./index-V4J7xfRg.js";import{r as ct}from"./host-hierarchy-objects-BV3WqU2w.js";import{m as ge,l as ut}from"./renderer-ownership-BovSEcLv.js";import{W as we}from"./three.module-BLhyNg0e.js";import{cP as ye,ej as lt,_ as be,I as dt,fo as P,V as Se,dp as Y,cp as ft,el as pt,bh as ee,d5 as mt}from"./three.core-3arARmh6.js";import{i as ht}from"./preview-renderer-BrYNFV1p.js";import{a as vt}from"./layered-pick-BUr1U8lU.js";import{g as H}from"./user-data-CifDDvSr.js";import{a as h}from"./jsx-runtime-DPjLkJKQ.js";import{r as f}from"./index-nmcBqr7Y.js";import{r as gt}from"./model-thumbnail-chePRlH7.js";import{b as wt,a as Pe}from"./object3d-document-session-registry-DNCOGA3i.js";import{t as k}from"./three-state-C7khRIQE.js";import{a as q}from"./entity-object-V13bGmay.js";import{i as _e,c as yt}from"./hierarchy-marks-B1jSqxSv.js";import{a as bt}from"./component-instance-root-Cw_-ajBX.js";import{a as St}from"./three-contract-Dkt6PmWY.js";import{t as D}from"./editor-shell-store-DckLm6m8.js";import{c as Pt,a as U}from"./viewport-door-BCXEYmon.js";import{a as _t}from"./content-bounds-D5pXeHJN.js";import{h as Et,d as Ee,p as Ct,j as te,r as re,s as At,k as oe,A as Ot,n as kt,o as Dt,b as It,q as Mt,m as Tt,t as Rt,f as xt,C as jt,u as ne,v as Vt,w as G,x as Nt,y as Lt,z as zt,B as Ft,D as Bt,E as Ht,F as qt,c as Ut,a as Wt}from"./asset-preview-BS71mXsZ.js";const Gt=1,C=[];function $(t){const e=C.indexOf(t);e>=0&&C.splice(e,1),t.renderer.dispose(),t.renderer.forceContextLoss(),t.canvas.remove()}function Qt(t,e){const r=document.createElement("canvas");r.style.width="100%",r.style.height="100%",r.style.display="block",r.width=Math.max(1,t),r.height=Math.max(1,e);const o={canvas:r,renderer:ge(new we({canvas:r,antialias:!0,alpha:!0})),leased:!0,lost:!1,onContextLost:null};return r.addEventListener("webglcontextlost",()=>{o.lost=!0,o.onContextLost?.();const n=C.indexOf(o);n>=0&&C.splice(n,1),o.leased||$(o)}),C.push(o),o}function $t(t){const{renderer:e}=t;e.setRenderTarget(null),e.setScissorTest(!1),e.setViewport(0,0,Math.max(1,t.canvas.width),Math.max(1,t.canvas.height)),e.setScissor(0,0,Math.max(1,t.canvas.width),Math.max(1,t.canvas.height)),e.autoClear=!0,e.autoClearColor=!0,e.autoClearDepth=!0,e.autoClearStencil=!0,e.sortObjects=!0,e.localClippingEnabled=!1,e.clippingPlanes=[],e.shadowMap.enabled=!1,e.shadowMap.autoUpdate=!0,e.toneMapping=ye,e.toneMappingExposure=1,e.outputColorSpace=lt,e.xr.enabled=!1,e.setAnimationLoop(null),e.setClearColor(0,0),e.clear(!0,!0,!0),e.info.reset()}function uo(t,e,r){let o=C.find(s=>!s.leased&&!s.lost);o||(o=Qt(t,e)),o.leased=!0,o.onContextLost=r??null;const n=o;let a=!1;return{canvas:n.canvas,renderer:n.renderer,release(){if(a)return;if(a=!0,n.leased=!1,n.onContextLost=null,n.canvas.remove(),n.lost){$(n);return}$t(n);const s=C.filter(c=>!c.leased&&!c.lost);for(const c of s.slice(Gt))$(c)}}}function Yt(){return{active:C.filter(t=>t.leased&&!t.lost).length,idle:C.filter(t=>!t.leased&&!t.lost).length}}function Jt(t,e){if(e!==null&&Ie(e))for(const o of t.values())o.visible=!1}const Kt=new be("#aaaaaa");function Zt(t){t.background=Kt,t.fog=null,t.environment=null,t.traverse(e=>{H(e,"envObject")&&(e.visible=!1)})}const Xt={activeAuthoring:t=>Ve(t),panelAuthoring:t=>je(t).adapter,pick:(t,e,r,o)=>vt(t,e,r,{intent:o}),toolOwner:(t,e)=>xe(t,e),toolOwnerPainted:(t,e)=>Z(t)&&Re(t,e),threeSurfaceShowing:(t,e)=>Z(t)&&(e instanceof Te?e.childAdapters().some(r=>r.kind==="three"):!e.rects&&typeof e.hierarchy.object3D=="function"),threeViewportRootId:t=>Me(t),applyRootHiddenVisibility:Jt,suppressRootEnvironment:Zt},er=f.lazy(async()=>({default:(await y(async()=>{const{ToolObject3DPreview:t}=await import("./ToolObject3DPreview-76LMkfin.js");return{ToolObject3DPreview:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]))).ToolObject3DPreview})),tr=f.lazy(async()=>({default:(await y(async()=>{const{ToolObject3DAuthoring:t}=await import("./StageHost-Bor1eHEO.js").then(e=>e.S);return{ToolObject3DAuthoring:t}},__vite__mapDeps([32,4,5,2,6,1,7,8,9,10,11,33,34,35,12,13,36,16,17,21,37,38,39,40,19,25,26,27,28,41,18,42,43,44,45,46,47,48,49,31,20,22,23,24,14,50,51,52,53,54,55,30,56,57,58]))).ToolObject3DAuthoring}));function rr(t){return h.jsx(f.Suspense,{fallback:h.jsx("div",{style:{minHeight:240},children:"Loading 3D preview…"}),children:h.jsx(er,{...t})})}function or(t){return f.useEffect(()=>Ne(t.documentId),[t.documentId]),h.jsx(f.Suspense,{fallback:h.jsx("div",{style:{minHeight:240},children:"Loading 3D authoring surface…"}),children:h.jsx(tr,{...t})})}const ae={model:f.lazy(async()=>{const{ModelAssetDocument:t}=await y(async()=>{const{ModelAssetDocument:e}=await import("./ModelAssetDocument-G6ajiV51.js");return{ModelAssetDocument:e}},__vite__mapDeps([59,1,2,5,6,7,8,4,9,10,11,15,16,17,18,19,20,21,22,12,13,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,14,50,51,52,53,54,55,30,56,57,58,60,61,62]));return{default:e=>h.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,displayName:e.displayName,active:e.active})}}),"entity-model":f.lazy(async()=>{const{EntityModelDocument:t}=await y(async()=>{const{EntityModelDocument:e}=await import("./EntityModelDocument-CplmAib0.js");return{EntityModelDocument:e}},__vite__mapDeps([63,1,2,34,35,12,13,36,16,17,4,5,6,7,8,9,10,11,21,37,38,42,15,18,19,20,22,23,24,25,26,27,28,29,32,33,39,40,41,43,44,45,46,47,48,49,31,14,50,51,52,53,54,55,30,56,57,58,60,61,62]));return{default:e=>h.jsx(t,{documentId:e.documentId,entityId:e.entityId??"",displayName:e.displayName,active:e.active})}}),environment:f.lazy(async()=>{const{EnvironmentAssetDocument:t}=await y(async()=>{const{EnvironmentAssetDocument:e}=await import("./EnvironmentAssetDocument-DlS6KFJu.js");return{EnvironmentAssetDocument:e}},__vite__mapDeps([64,1,2,4,5,6,7,8,9,10,11,12,13,14,27,28,65]));return{default:e=>h.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),lut:f.lazy(async()=>{const{LutAssetDocument:t}=await y(async()=>{const{LutAssetDocument:e}=await import("./LutAssetDocument-6bBwNMOn.js");return{LutAssetDocument:e}},__vite__mapDeps([66,1,2,4,5,6,7,8,9,10,11,67,12,13,65]));return{default:e=>h.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),shader:f.lazy(async()=>{const{ShaderAssetDocument:t}=await y(async()=>{const{ShaderAssetDocument:e}=await import("./ShaderAssetDocument-BDi8iNLA.js");return{ShaderAssetDocument:e}},__vite__mapDeps([68,1,2,4,5,6,7,8,9,10,11,69,12,13,65]));return{default:e=>h.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),"model-preview":f.lazy(async()=>{const{Object3DPreview:t}=await y(async()=>{const{Object3DPreview:e}=await import("./Object3DPreview-DdrYVJUZ.js");return{Object3DPreview:e}},__vite__mapDeps([3,4,5,2,6,1,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]));return{default:e=>h.jsx(t,{assetPath:e.assetPath,...e.materialPath?{materialPath:e.materialPath}:{},displayName:e.displayName})}}),module:f.lazy(async()=>{const{LiveModuleDocument:t}=await y(async()=>{const{LiveModuleDocument:e}=await import("./LiveModuleDocument-Hiot8Q5L.js");return{LiveModuleDocument:e}},__vite__mapDeps([70,1,2,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,12,13,23,24,25,26,27,28,29,53,71,58,39,40]));return{default:e=>e.projectRoot?h.jsx(t,{documentId:e.documentId,projectRoot:e.projectRoot,modulePath:(e.assetPath.split(/[?#]/,1)[0]??e.assetPath).replace(/^\//,""),displayName:e.displayName,active:e.active,fallback:e.fallback}):e.fallback}})},nr={recognize:async(t,e)=>(await y(async()=>{const{loadNativeQuarksJsonSource:r}=await import("./QuarksAssetDocument-wGHNt4ov.js");return{loadNativeQuarksJsonSource:r}},__vite__mapDeps([72,1,2,5,6,7,8,4,9,10,11,20,21,17,22,12,13,23,24,25,26,27,28,51,73,32,33,34,35,36,16,37,38,39,40,19,41,18,42,43,44,45,46,47,48,49,31,14,50,52,53,54,55,30,56,57,58,60,61,62,15,29]))).loadNativeQuarksJsonSource(t,e),Viewer:f.lazy(async()=>{const{QuarksAssetDocument:t}=await y(async()=>{const{QuarksAssetDocument:e}=await import("./QuarksAssetDocument-wGHNt4ov.js");return{QuarksAssetDocument:e}},__vite__mapDeps([72,1,2,5,6,7,8,4,9,10,11,20,21,17,22,12,13,23,24,25,26,27,28,51,73,32,33,34,35,36,16,37,38,39,40,19,41,18,42,43,44,45,46,47,48,49,31,14,50,52,53,54,55,30,56,57,58,60,61,62,15,29]));return{default:e=>h.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,displayName:e.displayName,active:e.active,source:e.content})}})};function ar(){const t=[...Object.keys(ae).map(e=>Le(e,ae[e])),ze(nr)];return()=>{for(const e of t)e()}}async function se(t){const e=new Image;return e.src=t,await e.decode(),e}function sr(){return Fe((t,e)=>{const r=k();if(r&&r.viewportCanvas()===t)return(async()=>{const n=await Be(t);if(n)return n;const a=r.captureViewportImage(e);return a?se(a):null})();const o=wt().find(n=>n.renderer.domElement===t);return o?(async()=>{const n=await o.requestPresentedFrame();if(n)return n;const a=o.captureImage(e);return a?se(a):null})():null})}function ir(t){const e=yt(t);if(e||_e(t)||H(t,"authoringRoot")===!0||!bt(t))return e;const r=H(t,"authoringComponent");return typeof r=="string"&&r?r:void 0}function cr(t){if(typeof t.object3D!="function")return He;const r=new Map;return o=>{if(r.has(o))return r.get(o);const n=St(t,o),a=n?{componentRoot:ir(n),authoredEntity:H(n,"authoringRoot")===!0,builtInternal:_e(n)}:void 0;return r.set(o,a),a}}const ur=1e-4,lr="World-anchored — content is placed in world space by the game each frame; moving this container offsets future placements away from their source.";function Ce(t){if(!t)return 0;const e=t;if(e.isInstancedMesh!==!0)return 0;const r=e.count;return typeof r=="number"&&r>0?r:0}function dr(t){const e=t.elements;for(let r=0;r<16;r++){const o=r%5===0?1:0,n=e[r];if(!Number.isFinite(n)||Math.abs(n-o)>ur)return!1}return!0}const ie=new dt,ce=new P;function fr(t,e){const r=Ce(t);if(r===0)return null;const o=pr(t,e);return{units:r,detail:Ae(r),worldAnchored:o,note:o?lr:null}}function pr(t,e){if(!e||e.isEmpty()||!dr(t.matrixWorld))return!1;const r=t.geometry;return r.boundingBox===null&&r.computeBoundingBox(),r.boundingBox?(ie.copy(r.boundingBox),e.getCenter(ce),!ie.containsPoint(ce)):!1}function mr(t){const e=Ce(t);return e===0?null:Ae(e)}function Ae(t){return`${t} instanced unit${t===1?"":"s"}`}function hr(){return qe({detail:(t,e,r)=>mr(q(t,D(r).objectMap,e)),marks:t=>cr(t),structureLog:t=>{const e=D(t);return{epoch:()=>e.gizmoEpoch,parentChangesSince:r=>e.ingestObjectMapChangesSince(r)}}})}function vr(t){return Math.min(1600,Math.max(800,900+t*25))}function gr(t){return t<.5?4*t*t*t:1-(-2*t+2)**3/2}function Oe(t,e,r=new P(0,1,0)){const o=new P().subVectors(e,t),n=o.length();if(n<1e-6)return[t.clone(),t.clone(),e.clone(),e.clone()];const a=Math.min(n*.18,6),s=new P().crossVectors(o,r);s.lengthSq()>1e-9?s.normalize().multiplyScalar(Math.min(n*.08,2.5)):s.set(0,0,0);const c=r.clone().normalize().multiplyScalar(a),u=t.clone().addScaledVector(o,.3).add(c).add(s),m=e.clone().addScaledVector(o,-.3).addScaledVector(c,.6).addScaledVector(s,.5);return[t.clone(),u,m,e.clone()]}const wr=1<<31;function yr(t){return(t.layers.mask&wr)!==0||/gizmo/i.test(t.name)}function ke(t){if(yr(t))return null;if(t.isCamera)return t;for(const e of t.children){const r=ke(e);if(r)return r}return null}function br(t,e,r){const o=new P,n=new Y;return e.getWorldPosition(o),e.getWorldQuaternion(n),{entityId:t,position:o.toArray(),quaternion:n.toArray(),fov:r}}function Sr(t){for(const[e,r]of t.objectMap){const o=ke(r);if(!o)continue;const n=o;return br(e,o,n.isPerspectiveCamera?n.fov:60)}return null}function Pr(t){t.curve=new Se(Oe(t.startPos,t.endPos))}let I=null;function _r(t){const e=U(),r=k()?.objectMap,o=r?Sr({objectMap:r}):null;if(!o||!e)return!1;const n=e.camera.position.clone(),a=new P().fromArray(o.position);return I={runtime:{startPos:n,startQuat:e.camera.quaternion.clone(),startFov:e.camera.fov,endPos:a,endQuat:new Y().fromArray(o.quaternion),endFov:o.fov,curve:new Se(Oe(n,a)),startedAt:performance.now(),durationMs:vr(n.distanceTo(a)),landed:!1},snapshot:{position:e.camera.position.clone(),target:e.orbit.target.clone(),up:e.camera.up.clone(),fov:e.camera.fov},onLanded:t,getLiveCamera:null,driving:!0},e.orbit.enabled=!1,!0}function Er(){const t=U(),e=I;if(!e||(e.driving=!1,!t))return;const r=t.camera,o=new P(0,0,-1).applyQuaternion(r.quaternion),n=Math.max(1,e.snapshot.position.distanceTo(e.snapshot.target));t.orbit.target.copy(r.position).addScaledVector(o,n),r.up.set(0,1,0).applyQuaternion(r.quaternion),t.orbit.enabled=!0}function Cr(){const t=I;if(!t)return;I=null;const e=U();if(!e)return;const r=t.snapshot;e.camera.position.copy(r.position),e.orbit.target.copy(r.target),e.camera.up.copy(r.up),e.camera.lookAt(r.target),e.camera.fov!==r.fov&&(e.camera.fov=r.fov,e.camera.updateProjectionMatrix()),e.orbit.enabled=!0,e.orbit.update()}const Q=new P,ue=new Y;Pt(Ar);function Ar(){const t=I,e=U();if(!t||!e||!t.driving)return;const r=t.runtime,o=t.getLiveCamera?.()??null,n=o?.isObject3D?o:null;if(n){n.getWorldPosition(Q),n.getWorldQuaternion(ue),Q.distanceToSquared(r.endPos)>1e-8&&(r.endPos.copy(Q),Pr(r)),r.endQuat.copy(ue);const u=n.fov;typeof u=="number"&&(r.endFov=u)}const a=e.camera;if(r.landed){a.position.copy(r.endPos),a.quaternion.copy(r.endQuat),a.fov!==r.endFov&&(a.fov=r.endFov,a.updateProjectionMatrix());return}const s=Math.min(1,(performance.now()-r.startedAt)/r.durationMs),c=gr(s);a.position.copy(r.curve.getPoint(c)),a.quaternion.slerpQuaternions(r.startQuat,r.endQuat,c),a.fov=r.startFov+(r.endFov-r.startFov)*c,a.updateProjectionMatrix(),s>=1&&(r.landed=!0,t.onLanded())}function Or(){return Ue({begin:_r,track:t=>{I&&(I.getLiveCamera=t)},settle:Er,end:Cr})}const kr=f.lazy(()=>y(()=>import("./InspectorObjectPreview-Bjc1Tn-I.js"),__vite__mapDeps([74,1,2,63,34,35,12,13,36,16,17,4,5,6,7,8,9,10,11,21,37,38,42,15,18,19,20,22,23,24,25,26,27,28,29,32,33,39,40,41,43,44,45,46,47,48,49,31,14,50,51,52,53,54,55,30,56,57,58,60,61,62])).then(t=>({default:t.InspectorObjectPreview})));function Dr(t,e){return{preview:t.isCamera?null:({displayName:r,previewKey:o,actions:n})=>a=>f.createElement(Ge,{picture:()=>f.createElement(kr,{previewKey:o,object:t,displayName:r,fill:!0}),previewKey:o,actions:n,...a?{mode:a}:{}}),instanced:fr(t,_t(t)),assetDocument:e}}function Ir(){return We((t,e)=>{const r=k();if(!r)return null;const o=q(t,r.objectMap,e);return o?Dr(o,r.objectMap.has(e)?{open:()=>Qe("asset-editor:entity",r.shell,{entityId:e,title:o.name||e})}:null):null})}const le=new WeakMap,J={activeAuthoring(t){let e=le.get(t);return e||(e=Ye(t,"No authoring adapter"),le.set(t,e)),e},panelAuthoring(t){return J.activeAuthoring(t)},pick(){return null},toolOwner:$e,toolOwnerPainted(){return!0},threeSurfaceShowing(t,e){return!e.rects&&typeof e.hierarchy.object3D=="function"},threeViewportRootId(){return null},applyRootHiddenVisibility(){},suppressRootEnvironment(){}};let F=J;function Mr(t){if(F!==t){if(F!==J)throw new Error("A viewport authoring policy is already installed.");F=t}}function lo(){return F}const de=0,Tr=16777215,fe=10;function Rr(t){return Ct(t,"Compare reference GLB")}function pe(t,e){const r=It(t),o=new ee;o.rotation.y=Mt(e),o.add(r);const n=new ee;n.add(o),n.updateWorldMatrix(!0,!0);const a=Tt(n,"front"),s=[a.center.x-a.size.x/2,a.center.y-a.size.y/2,a.center.z-a.size.z/2],c=[a.center.x+a.size.x/2,a.center.y+a.size.y/2,a.center.z+a.size.z/2],u=Rt(s,c);return n.scale.setScalar(u.scale),n.position.set(...u.position),n.updateWorldMatrix(!0,!0),{wrapper:n,dispose:()=>xt(r)}}function xr(t,e){const r=jt,o=r*e,n=new mt(-o,o,r,-r,.01,fe*4),a=t==="front"?new P(0,0,1):new P(1,0,0);return n.position.set(0,ne,0).addScaledVector(a,fe),n.up.set(0,1,0),n.lookAt(0,ne,0),n.updateProjectionMatrix(),n.updateMatrixWorld(!0),n}function jr(t,e,r={}){const o=te(r.width),n=te(r.height),a=o/n,s=[];let c=null;try{const u=pe(t,re(t));s.push(u.dispose);const m=pe(e,r.refForward??re(e));s.push(m.dispose);const O=new ft({color:Tr});s.push(()=>O.dispose());const L=p=>{const i=new pt;return i.background=new be(de),i.overrideMaterial=O,i.add(p),i},v=L(u.wrapper),b=L(m.wrapper),_=ge(new we({antialias:!1,alpha:!1,preserveDrawingBuffer:!0}));c=_,_.setPixelRatio(1),_.toneMapping=ye,_.setClearColor(de,1),_.setSize(o,n,!1);const M=document.createElement("canvas");M.width=o,M.height=n;const S=M.getContext("2d");if(!S)throw new Error("Unable to create the compare readback canvas.");const A=(p,i,x,g)=>{_.render(p,i),S.clearRect(0,0,o,n),S.drawImage(_.domElement,0,0);const j=S.getImageData(0,0,o,n).data,V=At(j,o*n);if(!V.some(K=>K!==0))throw new Error(`Compare ${g} view rendered an empty ${x} silhouette — nothing to score.`);return{image:{base64:oe(M),mimeType:"image/png"},mask:V}},w=document.createElement("canvas");w.width=o,w.height=n;const T=w.getContext("2d");if(!T)throw new Error("Unable to create the compare overlay canvas.");const R=[];for(const p of Ot){const i=xr(p,a),x=A(v,i,"asset",p),g=A(b,i,"reference",p),j=kt(x.mask,g.mask);T.putImageData(new ImageData(Dt(x.mask,g.mask),o,n),0,0),R.push({view:p,iou:j.iou,overlay:{base64:oe(w),mimeType:"image/png"},asset:x.image,ref:g.image})}return{width:o,height:n,views:R}}finally{c?.dispose(),c?.forceContextLoss();for(const u of s.reverse())u()}}async function Vr(t,e,r={}){const o=await Et(t);try{return await De(o,e,r)}finally{Ee(o)}}async function De(t,e,r={}){const o=await Rr(e);try{return jr(t,o,r)}finally{Ee(o)}}async function Nr(t,e){const r=e.assetPath,o=e.entityId,n=e.glbBase64;if(+(typeof r=="string")+ +(typeof o=="string")+ +(typeof n=="string")!==1)return{ok:!1,error:"capture-asset-preview requires exactly one of assetPath, entityId or glbBase64."};const s=e.width,c=e.height,u=e.background,m=e.shots,O=e.shotSet,L=e.forward,v=e.compare,b=e.stage,_=e.camera,M=e.pose;if(s!==void 0&&typeof s!="number"||c!==void 0&&typeof c!="number"||u!==void 0&&u!=="neutral"&&u!=="transparent"||m!==void 0&&m!=="source")return{ok:!1,error:"Invalid asset preview dimensions, background, or shots mode."};if(b!==void 0&&b!=="lab"&&b!=="scene")return{ok:!1,error:`capture-asset-preview stage must be "lab" or "scene", got ${String(b)}.`};if(O!==void 0&&m!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine a shotSet definition with a shots mode."};const S=Je("capture-asset-preview",_);if(typeof S=="string")return{ok:!1,error:S};const A=Ke("capture-asset-preview",M);if(typeof A=="string")return{ok:!1,error:A};if((S||A)&&(m!==void 0||O!==void 0||v!==void 0||b==="scene"))return{ok:!1,error:'capture-asset-preview cannot combine camera/pose with a shots mode, a shotSet definition, compare, or stage "scene" — those legs stage their own cameras and poses.'};let w;if(O!==void 0)try{w=Vt(O)}catch(i){return{ok:!1,error:i instanceof Error?i.message:String(i)}}const T=G(L);if(m==="source"&&T===null)return{ok:!1,error:"capture-asset-preview --shots source requires a non-degenerate forward [x,y,z]."};if(v!==void 0){if(m!==void 0||w!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine compare with shots."};if(typeof v!="object"||v===null||typeof v.glbBase64!="string"||v.forward!==void 0&&G(v.forward)===null)return{ok:!1,error:"capture-asset-preview compare requires { glbBase64: string, forward?: [x, y, z] } with a non-degenerate ground-plane forward."}}if(typeof n=="string"){if(m!==void 0||v!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine glbBase64 with a named shots mode or compare."};if(b==="scene")return{ok:!1,error:'capture-asset-preview stage "scene" photographs a live scene entity — glbBase64 bytes stand nowhere in the scene.'}}const R=b==="scene"?t.scene:null;if(b==="scene"){if(typeof o!="string")return{ok:!1,error:'capture-asset-preview stage "scene" photographs a live scene entity — pass entityId, not assetPath.'};if(m!==void 0||w!==void 0||v!==void 0)return{ok:!1,error:'capture-asset-preview cannot combine stage "scene" with a shots mode, a shotSet definition or compare.'};if(!R)return{ok:!1,error:'capture-asset-preview stage "scene" requires a bound viewport scene; none is bound yet.'}}const p=typeof o=="string"?q(he(t.shell),t.objectMap,o):null;if(typeof o=="string"&&!p)return{ok:!1,error:`Entity not found: ${o}`};try{const i={...typeof s=="number"?{width:s}:{},...typeof c=="number"?{height:c}:{},...u?{background:u}:{},...S?{camera:S}:{},...A?{pose:A}:{}};if(v!==void 0){const g=v,j=G(g.forward),V={...typeof s=="number"?{width:s}:{},...typeof c=="number"?{height:c}:{},...j?{refForward:j}:{}};return{ok:!0,data:{...typeof r=="string"?await Vr(r,g.glbBase64,V):await De(p,g.glbBase64,V)}}}return w!==void 0?{ok:!0,data:{...typeof n=="string"?await Nt(n,w,i):typeof r=="string"?await Lt(r,w,i):zt(p,w,i)}}:m==="source"?{ok:!0,data:{...typeof r=="string"?await Ft(r,T,i):Bt(p,T,i)}}:R?{ok:!0,data:{...Ht(p,R,i)}}:typeof n=="string"?{ok:!0,data:{...await qt(n,i)}}:{ok:!0,data:{...typeof r=="string"?await Ut(r,i):Wt(p,i)}}}catch(i){return{ok:!1,error:i instanceof Error?i.message:String(i)}}}function E(){const t=B();return t?Pe(t):null}function l(t,e,r="none"){return{...e===void 0?{}:{timeoutMs:e},derivedRefresh:r,handle:o=>{const n=k();return n?t(n,o):{ok:!1,error:`${o.type} needs an editor session; none has opened yet.`}}}}const d={ok:!0},Lr={"focus-entity":l((t,e)=>(E()?.frameIds([e.id])||t.shell.focusOnEntity(e.id),d)),"frame-entity":l((t,e)=>{const r=e.id;if(typeof r!="string"||r.length===0)return{ok:!1,error:'frame-entity requires a string "id" (the entity to frame).'};const o=E();if(o)return o.frameIds([r])?d:{ok:!1,error:`Entity not found: ${r}`,data:{code:"ENTITY_NOT_FOUND"}};const n=he(t.shell);return n.hierarchy.node(r)!==null&&n.rects||q(n,t.objectMap,r)?(t.shell.focusOnEntity(r),d):{ok:!1,error:`Entity not found: ${r}`,data:{code:"ENTITY_NOT_FOUND"}}}),"focus-selection":l(t=>(E()?.frameSelection()||t.shell.focusOnSelection(),d)),"view-preset":l((t,e)=>{const r=e.preset,o=["top","front","right","perspective"];if(typeof r!="string"||!o.includes(r))return{ok:!1,error:`view-preset requires one of ${o.join(", ")}, got ${r===void 0?"nothing":JSON.stringify(r)}.`};const n=r,a=E();return a?a.setViewPreset(n==="perspective"?"isometric":n):t.shell.setViewPreset(n),d}),"set-camera":l((t,e)=>{const r=e.position,o=e.target,n=e.fov;if(!r||!o||typeof r.x!="number"||typeof r.y!="number"||typeof r.z!="number"||typeof o.x!="number"||typeof o.y!="number"||typeof o.z!="number")return{ok:!1,error:"set-camera requires numeric {x,y,z} position and target."};const a=E();return a?a.setCameraPose(r,o,n):t.shell.setCameraPose(r,o,n),d}),"document-orbit":l((t,e)=>me(e),12e4),"document-turntable":l((t,e)=>me(e),12e4),"document-frame":l((t,e)=>{const r=E();if(!r)return{ok:!1,error:"document-frame needs an Object3D document open and active. For the Scene viewport use `frame-entity`/`focus-selection`.",data:{code:"NO_ACTIVE_OBJECT3D_DOCUMENT"}};const o=e.fit;return o!==void 0&&(typeof o!="number"||!(o>=.1&&o<=10))?{ok:!1,error:'document-frame: "fit" must be a number in 0.1..10.'}:r.frame(typeof o=="number"?o:1)?{ok:!0,data:{...r.cameraPose()}}:{ok:!1,error:"Nothing to frame: the document subject has no measurable bounds.",data:{code:"EMPTY_FRAME_BOUNDS"}}}),"capture-viewport":l(async(t,e)=>{const r=et(e);if("error"in r)return{ok:!1,error:r.error};if(t.hasAdoptedScene)try{const s=await ve().documents.captureActive(r.size);return{ok:!0,data:{base64:s.base64,mimeType:s.mimeType}}}catch(s){return{ok:!1,error:s instanceof Error?s.message:String(s)}}const o=t.captureViewportImage(r.size);if(!o)return{ok:!1,error:`This door photographs the editor's own three.js Scene viewport, and nothing has bound one (no renderer/scene/camera). A canvas-surface world (a first-party canvas root, or a PixiJS/Phaser/Babylon ingest) never binds it — it draws on its own canvas in the Game document. Capture that through \`capture-active-document\` (\`editor.captureActiveDocument()\`) or the running game through \`bridge-screenshot\` (${tt("screenshot")}).`};const n=o.indexOf(",");return{ok:!0,data:{base64:n>=0?o.slice(n+1):o,mimeType:"image/png"}}},void 0,"if-content-changed"),"capture-asset-preview":l((t,e)=>Nr(t,e),3e4,"if-content-changed"),"set-grid":l((t,e)=>{const r=B();return!r||!X(r)?{ok:!1,error:"set-grid: the active document draws no grid."}:(Xe(r,e.enabled),d)}),"set-helpers":l((t,e)=>{const r=z(t.shell);return r.showHelpers!==e.enabled&&r.toggleHelpers(),d}),"set-stats":l((t,e)=>{const r=z(t.shell);return D(r).showStats!==e.enabled&&D(r).toggleStats(),d}),"set-shading-mode":l((t,e)=>{const r=E(),o=e.mode;if(o==="preview"||o==="rendered"){const n=B(),a=n?X(n)?.stageKind:void 0;if(!r||!a||Ze(a)?.modes?.[o]?.lighting===void 0)return{ok:!1,error:`Shading mode "${o}" is lit as a stage says, and the active document's stage says nothing for it.`}}return r?r.setMode(e.mode):t.setShadingMode(e.mode),d}),"set-helper-type":l((t,e)=>{const r=z(t.shell),o=e.helperType,n=E();return n&&o==="bounds"?(n.setBounds(e.enabled),d):n&&o==="skeletons"?(n.setSkeleton(e.enabled),d):(r.helperVisibility[o]!==e.enabled&&r.toggleHelperType(o),d)}),"set-transform-mode":l((t,e)=>(t.shell.setTransformMode(e.mode),d)),"set-transform-space":l((t,e)=>(t.shell.setTransformSpace(e.space),d)),"set-snap":l((t,e)=>(t.shell.snapEnabled!==e.enabled&&t.shell.toggleSnap(),d))};async function me(t){const e=E();if(!e)return{ok:!1,error:`${t.type} needs an Object3D document open and active (a model, a live module, an entity model). Open one with \`editor.openAsset(<path>)\` first.`,data:{code:"NO_ACTIVE_OBJECT3D_DOCUMENT"}};const r=t.type==="document-orbit"?t.duration:t.seconds;return r!==void 0&&(typeof r!="number"||!(r>=0&&r<=60))?{ok:!1,error:`${t.type}: the move's length must be a number of seconds in 0..60.`}:{ok:!0,data:{...t.type==="document-orbit"?await e.orbit({...typeof t.azimuth=="number"?{azimuth:t.azimuth}:{},...typeof t.elevation=="number"?{elevation:t.elevation}:{},...typeof r=="number"?{duration:r}:{}}):await e.turntable({...typeof r=="number"?{seconds:r}:{},...typeof t.revolutions=="number"?{revolutions:t.revolutions}:{}})}}}function zr(){return ve().session.reportFacet(()=>{const t=k();if(!t)return{};const e=z(t.shell),r=B(),o=r?Pe(r)?.presentation():void 0,n=D(e).cameraPose;return{showGrid:r?rt(r):!0,showHelpers:e.showHelpers,showStats:D(e).showStats,shadingMode:o?.mode??t.shadingMode,helperVisibility:{...e.helperVisibility,...o?{bounds:o.bounds,skeletons:o.skeleton}:{}},transformMode:e.transformMode,transformSpace:t.shell.transformSpace,snapEnabled:t.shell.snapEnabled,...n?{camera:{position:{x:n.position.x,y:n.position.y,z:n.position.z},target:{x:n.target.x,y:n.target.y,z:n.target.z},fov:n.fov}}:{}}})}const Fr={save:t=>it("view",t),saveThumbnail:st},Br=new Map;let N=null;function fo(){if(N)return N;const t=[ot({Object3DPreview:rr,Object3DAuthoring:or}),nt("three-viewport",Lr),ar(),Ir(),gt(),zr(),sr(),hr(),Or(),ct({object:e=>k()?.objectMap.get(e)??null,objects:()=>k()?.objectMap??Br}),W("hostLive",ut),W("interactive",Yt),W("inspectorPreview",ht),at(e=>D(e).attachStatePersistence(Fr))];return Mr(Xt),N=()=>{for(const e of t.reverse())e();N=null},N}export{uo as a,fr as d,fo as e,Ce as i,lo as v};
@@ -1 +0,0 @@
1
- import{e as r}from"./three-integration-DeWYFf1x.js";import"./index-V4J7xfRg.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./host-hierarchy-objects-BV3WqU2w.js";import"./renderer-ownership-BovSEcLv.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./layered-pick-BUr1U8lU.js";import"./root-stacking-BEd9ZvxC.js";import"./user-data-CifDDvSr.js";import"./workspace-arrangement-B_OcbQbj.js";import"./model-thumbnail-chePRlH7.js";import"./studio-environment-BIhqrtFc.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./object3d-document-session-registry-DNCOGA3i.js";import"./three-state-C7khRIQE.js";import"./editor-shell-store-DckLm6m8.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./editor-layers-CjeYrUlm.js";import"./entity-object-V13bGmay.js";import"./three-contract-Dkt6PmWY.js";import"./hierarchy-marks-B1jSqxSv.js";import"./component-instance-root-Cw_-ajBX.js";import"./viewport-door-BCXEYmon.js";import"./content-bounds-D5pXeHJN.js";import"./asset-preview-BS71mXsZ.js";import"./bitmap-label-Ct4k6ehY.js";const Q="workspace.service";function R(){return r()}export{Q as point,R as start};
@@ -1 +0,0 @@
1
- import{at as d,av as a,au as m}from"./index-V4J7xfRg.js";function u(o){return o.children.length>0}function c(o){const n=m(),r=[];for(const e of o){const t=d({modulePath:e.modulePath,regions:n});if(t.medium==="dom"){r.push(e);continue}t.via==="undeclared"&&e.modulePath&&a(e.modulePath,t.reason)}return r}export{c as d,u as m};
@@ -1 +0,0 @@
1
- import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as t}from"./index-V4J7xfRg.js";import{r as m}from"./index-nmcBqr7Y.js";import{P as p}from"./PlayBar-BbzjgLFJ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./configurations-CRTYw0r9.js";import"./run-selection-AyelFc9T.js";import"./game-network-CAH_Jsh6.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-JJOFtIVz.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-xQJcVubm.js";import"./contract-system-adapters-rVGdworX.js";import"./game-contract-seams-DrYyE5PX.js";import"./seeded-random-tpdJjdqy.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-CnknlUlT.js";import"./capability-coverage-wd6bAhv3.js";import"./edit-mode-authoring-CSt3zzmS.js";import"./json-history-resource-CH2nzMZh.js";import"./binding-resolver-DUz8C8Fs.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-u0mnjXU9.js";import"./canvas-entry-runtime-DskaohHK.js";import"./three-ingest-runtime-BnRF_nJN.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-D_ryI_R4.js";import"./ingest-source-persistence-CQOJeGhj.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-DJLpUuf0.js";import"./mounted-authoring-C47L5H5t.js";import"./entity-object-V13bGmay.js";import"./user-data-CifDDvSr.js";import"./workspace-arrangement-B_OcbQbj.js";import"./three-contract-Dkt6PmWY.js";import"./three-BQfhEwUz.js";import"./editor-layers-CjeYrUlm.js";import"./component-instance-root-Cw_-ajBX.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-COBwREQO.js";import"./source-persistence-backend-uyd6NiWD.js";import"./three-projection-core-PQm-CO61.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-DZSIB0d_.js";import"./deferred-ingest-play-CEnsC3uN.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-OR1SW2jI.js";import"./board-guides-B6TEPOPi.js";import"./relative-import-specifier-DXWVQf0o.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-DiSjB-N1.js";import"./inference-diagnostics-DoZQ1mpg.js";import"./writer-tw6EcuVO.js";import"./three-state-C7khRIQE.js";import"./editor-shell-store-DckLm6m8.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BCXEYmon.js";import"./game-surface-defaults-D8S4cRxi.js";const Dr="workspace.header",Fr=0;function Gr(){const{project:r}=t();return m.useSyncExternalStore(r.subscribe,r.mounts,r.mounts)?o.jsx(p,{}):null}export{Gr as default,Fr as order,Dr as point};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/story-capture-B8wfSf5s.js","assets/react-story-board-CT1_3sk_.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-V4J7xfRg.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/bitmap-label-Ct4k6ehY.js","assets/StoryPreviewMount-CmOEFzZY.js","assets/story-presentation-CofUdEU7.js"])))=>i.map(i=>d[i]);
2
- import{dJ as m,ar as s,dK as a,aB as n,_ as c,b9 as d}from"./index-V4J7xfRg.js";import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{d as l,p as v,r as P}from"./design-time-layers-hmGqBp06.js";import{RootDocumentContent as _}from"./world-documents-Bx3j867R.js";import{U as w}from"./component-board.service-Cd1c9oSN.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./root-stacking-BEd9ZvxC.js";import"./edit-mode-authoring-CSt3zzmS.js";import"./design-time-mount-registry-DUpXCg1U.js";import"./react-story-board-CT1_3sk_.js";import"./game-surface-defaults-D8S4cRxi.js";import"./react-canvas-navigation-L_mOnybL.js";import"./component-board-registry-DrIa2csL.js";import"./surface-state-DrM3wsrr.js";import"./board-guides-B6TEPOPi.js";import"./CanvasSceneViewport-CfOuQiQ0.js";import"./RootSelectionOverlay-C6Wu8nIs.js";import"./eyedropper-session-bjPXnfeX.js";import"./layered-pick-BUr1U8lU.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./inspect-DiSjB-N1.js";import"./inference-diagnostics-DoZQ1mpg.js";import"./Toolbar-BEBQdxRz.js";import"./transform-mode-request-DWM6BdRA.js";import"./TransientHint-CzsdY8W6.js";import"./ReactCanvasControls-BL2tOUj6.js";import"./story-media-presence-SGlp_afL.js";const y={revision:()=>JSON.stringify(d().map(({id:i,modulePath:t})=>[i,t])),subscribe:s,capture:async({width:i,height:t})=>{const{captureDomStoryBoardPreview:o}=await c(async()=>{const{captureDomStoryBoardPreview:e}=await import("./story-capture-B8wfSf5s.js");return{captureDomStoryBoardPreview:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]));return o(i,t)}};function Z({store:i,composite:t}){const o=l(t).find(r=>r.kind==="dom")??v(),e=r=>u.jsx(_,{...r,composite:t,descriptor:o,store:i});m({id:a,title:w,kind:"world",workspaceRole:"authored-subject",provenance:{rootId:o.worldId,...o.path?{sourcePath:o.path}:{}},Content:e,preview:y,presentation:()=>{const r=n()?.rootPath,p=r?P(r,o.worldId):void 0;return{kind:"workspace",id:a,...p?{story:p}:{}}}},{category:"canvas",default:!t.childAdapters().some(r=>r.kind==="three"||r.kind==="canvas")})}export{Z as installUiBoard};
@@ -1,2 +0,0 @@
1
- const d="/work/.volter-session",ae=`${d}/session.py`,se=[`${d}/in`,`${d}/reply`],P="/__editor/blender-wasm";function D(e){return new URL(`${P}/${e}`,import.meta.url).href}async function M(){const e=await fetch(D("status"));return e.ok?await e.json():{available:!1,skew:null,dir:null,sizes:{},encoded:{},missing:[`${P}/status answered ${e.status}`]}}async function J(e){const t=await M();if(!t.available)throw new Error(`The headless Blender WebAssembly build is not served by this editor: ${t.missing.join("; ")}`);if(t.skew==="wali"){const{startWaliBlenderEngine:n}=await import("./blender-wali-engine-CO-jG_ik.js");return n(e,t)}const{startEmscriptenBlenderEngine:r}=await import("./blender-emscripten-engine-DQljvfR7.js");return r(e,t)}function U(e){return e<200?1:e<5e3?5:25}const C=e=>new Promise(t=>setTimeout(t,e)),B=new TextDecoder;function ie(e,t,r){let n=0,a=0;const o=new Set;async function s(u){for(const l of o)u.has(`${l}.done`)||(await e.unlink(`${d}/reply/${l}.json`),await e.unlink(`${d}/reply/${l}.done`),o.delete(l))}async function i(){let u;try{u=await e.readdir(`${d}/ask`)}catch{return}const l=new Set(u.filter(w=>w.endsWith(".done")));await s(l);for(const w of l){const h=w.slice(0,-5);if(Number(h)<=a)continue;a=Number(h);const $=JSON.parse(B.decode(await e.readFile(`${d}/ask/${h}.json`)));let p;try{p=await t.ask($)}catch(S){p={error:S instanceof Error?S.message:String(S)}}await Promise.all([e.writeFile(`${d}/reply/${h}.json`,JSON.stringify(p??null)),e.writeFile(`${d}/reply/${h}.done`,"1")]),o.add(h)}}async function c(u){const l=String(++n);await Promise.all([e.writeFile(`${d}/in/${l}.json`,JSON.stringify(u)),e.writeFile(`${d}/in/${l}.done`,"1")]);const w=performance.now();for(;;){if(await i(),await e.stat(`${d}/out/${l}.done`)){const p=JSON.parse(B.decode(await e.readFile(`${d}/out/${l}.json`)));if(await e.unlink(`${d}/in/${l}.json`),await e.unlink(`${d}/in/${l}.done`),p.error)throw new Error(p.error);return p.result}const h=r?.();if(h)throw new Error(`Blender is gone, so this call will never be answered: ${h}. The session keeps its directory and its cached banner, so every later call would wait on the same missing answer; start a new program with \`blender-start {fresh: true}\` (\`VOLTER_BLENDER_FRESH_SESSION=1\` for the battery harness).`);const $=U(performance.now()-w);await(e.changed?e.changed($):C($))}}return{request:c}}const L=e=>typeof e=="object"&&e!==null&&typeof e.offset=="number"&&typeof e.length=="number"&&typeof e.dtype=="string"&&typeof e.count=="number"&&typeof e.stride=="number",W={f32:e=>new Float32Array(e.buffer,e.byteOffset,e.byteLength>>2),f64:e=>new Float64Array(e.buffer,e.byteOffset,e.byteLength>>3),u32:e=>new Uint32Array(e.buffer,e.byteOffset,e.byteLength>>2),i32:e=>new Int32Array(e.buffer,e.byteOffset,e.byteLength>>2),u16:e=>new Uint16Array(e.buffer,e.byteOffset,e.byteLength>>1),i16:e=>new Int16Array(e.buffer,e.byteOffset,e.byteLength>>1),u8:e=>e,i8:e=>new Int8Array(e.buffer,e.byteOffset,e.byteLength)};function z(e,t,r){const n=W[r.dtype];if(!n)throw new Error(`Blender frame column ${t}: unknown dtype ${r.dtype}`);const{offset:a,length:o}=r;if(a<0||o<0||a+o>e.byteLength)throw new Error(`Blender frame column ${t}: bytes ${a}..${a+o} lie outside the ${e.byteLength}-byte export arena`);const s=e.subarray(a,a+o).slice(),i=n(s),c=r.count*r.stride;if(i.length!==c)throw new Error(`Blender frame column ${t}: ${i.length} values, ${c} declared (${r.count} x ${r.stride})`);return i}function H(e,t){const r=(n,a)=>{if(L(n)){const o=z(e,a,n);return a==="co"?Float64Array.from(o):o}if(Array.isArray(n))return n.map(o=>r(o,a));if(typeof n=="object"&&n!==null){const o={};for(const[s,i]of Object.entries(n))o[s]=r(i,s);return o}return n};return r(t,"")}async function V(e,t){const r=async(n,a)=>{if(L(n)){const{offset:o,length:s,dtype:i}=n;if(o<0||s<0||o+s>e.byteLength)throw new Error(`Blender frame column ${a}: bytes ${o}..${o+s} lie outside the ${e.byteLength}-byte export arena`);const c=e.subarray(o,o+s).slice(),u=await crypto.subtle.digest("SHA-256",c),l=[...new Uint8Array(u)].map(w=>w.toString(16).padStart(2,"0")).join("");return{dtype:i,length:s,sha256:l}}if(Array.isArray(n))return Promise.all(n.map(o=>r(o,a)));if(typeof n=="object"&&n!==null){const o={};for(const[s,i]of Object.entries(n))o[s]=await r(i,s);return o}return n};return r(t,"")}const m=e=>self.postMessage(e),k=(e,t)=>m({op:"log",level:e,text:t});let b=null,v=null,G=0;const j=new Map;function K(e,t,r){const n=++G,a=[],o=e;for(const s of[o?.meshes??{},o?.images??{}])for(const i of Object.values(s))for(const c of Object.values(i))ArrayBuffer.isView(c)&&c.buffer instanceof ArrayBuffer&&!a.includes(c.buffer)&&a.push(c.buffer);return new Promise((s,i)=>{j.set(n,{resolve:s,reject:i}),self.postMessage({op:"present",id:n,frame:e,description:t,...r?{capture:r}:{}},a)})}let f=null,E=null,T=!1,A=Promise.resolve();function Q(e){const t=A.then(e);return A=t.catch(()=>{}),t}function N(e){T=e,m({op:"document-dirty",dirty:e})}async function R(){if(!f||E===null)return;const e=E;let t;try{t=await f.request({op:"save-document"})}catch(n){throw new Error(`The Blender document ${e} could not be saved: ${g(n)}`)}if(!t?.saved||typeof t.path!="string")throw new Error(`Blender did not save the document ${e}`);let r;try{r=await f.files.readFile(t.path)}catch(n){throw new Error(`The Blender document ${e} could not be read back out of the engine: ${g(n)}`)}y.delete(t.path);try{const n=await fetch(`/__editor/blender-document?path=${encodeURIComponent(e)}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([r])});if(!n.ok){const a=await n.text().catch(()=>"");throw new Error(`HTTP ${n.status} ${a}`)}}catch(n){throw new Error(`The Blender document ${e} was not written to the project: ${g(n)}`)}N(!1),k("log",`@@VOLTER-DOCUMENT ${JSON.stringify({path:e,bytes:r.length})}`)}async function X(e,t){const r={engine:null},n=await J({project:e,log:k,ask:async({frame:o,capture:s,saveDue:i})=>{if(!r.engine)throw new Error("The Blender session presented before it started");i&&E!==null&&N(!0);const c=await r.engine.readArena(),u=await V(c,o),l=await K(H(c,o),u,s);return{...typeof l.capture=="object"&&l.capture!==null?l.capture:{},..."held"in l?{held:l.held}:{}}}});r.engine=n,f=n,t&&await _(n.files,e);const a=await n.request({op:"start",project:e,...t?{document:t}:{}});return t&&(E=t),b={start:async()=>a,execute:async o=>{const s=await n.request({op:"execute",code:o});return s.error?`Error executing code: ${s.error}`:`Code executed successfully: ${s.result}`},sceneInfo:async()=>JSON.stringify(await n.request({op:"scene-info"}),null,2),objectInfo:async o=>JSON.stringify(await n.request({op:"object-info",name:o}),null,2),screenshotView:async o=>(await n.request({op:"present",capture:{size:o}}),JSON.stringify({view:{size:o}}))},{...a,engine:"blender-wasm",skew:n.skew,bootMs:Math.round(n.bootMs),releasedPayloadMB:n.releasedPayloadBytes===null?null:Math.round(n.releasedPayloadBytes/1048576)}}async function Y(){try{const e=await fetch("/__editor/blender-wasm/status");return e.ok?await e.json():{available:!1,missing:[`status answered ${e.status}`]}}catch(e){return{available:!1,missing:[String(e)]}}}async function Z(e,t){if(b)throw new Error("The Blender session is already started");if(!e.startsWith("/"))throw new Error("The Blender session needs the project's absolute path");if(t!==void 0&&!q(t))throw new Error(`The Blender document must be a project-relative .blend path with no traversal (models/model.blend); got ${JSON.stringify(t)}`);const r=await Y();if(!r.available)throw new Error(`Headless Blender is not served by this editor, so there is no modeling engine: ${r.missing.join("; ")}. The engine is Blender compiled to WebAssembly (packages/blender-engine/wasm, or the directory VOLTER_BLENDER_WASM_DIR names); nothing stands in for it.`);return v=e,X(e,t)}function q(e){return!e.endsWith(".blend")||e.startsWith("/")||e.includes("\\")?!1:e.split("/").every(r=>r!==""&&r!=="."&&r!=="..")}const x=new Set;function O(e){x.has(e)||(x.add(e),k("error",e))}async function ee(e){const t=s=>(O(`The project's files are not readable from Python: ${s}`),null);let r;try{r=await fetch("/__editor/blender-project-index")}catch(s){return t(String(s))}if(!r.ok)return t(`/__editor/blender-project-index answered ${r.status}`);let n;try{if(n=await r.json(),typeof n?.root!="string"||!Array.isArray(n.files))return t("invalid project index")}catch(s){return t(String(s))}const{root:a,files:o}=n;return a!==e&&O(`The editor serving this tab has ${a} open, not ${e}; its files are mounted at ${e}, which is where Python is looking.`),o}const y=new Map;async function te(e,t){const r=await e.stat(t);return r?`${r.size}:${r.mtimeMs}`:""}async function _(e,t){const r=await ee(t);if(!r)return;const n=new Set(r.map(a=>`${t}/${a.path}`));for(const a of[...y.keys()])if(!n.has(a)){try{await e.unlink(a)}catch{}y.delete(a)}for(const a of r){const o=`${t}/${a.path}`,s=`${a.size}:${a.mtime}`;if(y.get(o)?.host===s||!y.has(o)&&await e.stat(o)!==null)continue;const i=await fetch(`/__editor/blender-project-file?path=${encodeURIComponent(a.path)}`);if(!i.ok){O(`${a.path}: HTTP ${i.status}`);continue}const c=o.slice(0,o.lastIndexOf("/"));c&&await e.mkdirTree(c),await e.writeFile(o,new Uint8Array(await i.arrayBuffer())),y.set(o,{host:s,engine:await te(e,o)})}}async function ne(e,t){const r=[],n=async a=>{let o;try{o=await e.readdir(a)}catch{return}for(const s of o){if(s==="."||s==="..")continue;const i=`${a.replace(/\/$/,"")}/${s}`,c=await e.stat(i);if(c){if((c.mode&61440)===16384){await n(i);continue}y.get(i)?.engine!==`${c.size}:${c.mtimeMs}`&&r.push({path:i,size:c.size,mtime:c.mtimeMs})}}};return await n(t),r}async function F(e){switch(e.op){case"start":return Z(e.project,e.document);case"present-result":{const n=j.get(e.id);j.delete(e.id),n&&(e.error?n.reject(new Error(e.error)):n.resolve({...e.capture===void 0?{}:{capture:e.capture},..."held"in e?{held:e.held}:{}}));return}}if(!b||!v||!f)throw new Error("The Blender session has not started");const t=f.files,r=f.request.bind(f);switch(e.op){case"flush-document":return T?(await R(),{saved:!0}):{saved:!1};case"history-begin":case"history-end":return r({op:e.op});case"history-step":return r({op:"history-step",token:e.token,direction:e.direction});case"execute":await _(t,v);{const n=await r({op:"execute",code:e.code,history:e.history??!0,label:e.label??"Blender Python"});return n.error?`Error executing code: ${n.error}`:`Code executed successfully: ${n.result}`}case"present":return r({op:"present"});case"scene-info":return b.sceneInfo();case"object-info":return b.objectInfo(e.name);case"rna":return r({op:"rna",path:e.path,...e.names===void 0?{}:{names:e.names}});case"rna-context":return r({op:"rna-context",...e.object===void 0?{}:{object:e.object},...e.collection===void 0?{}:{collection:e.collection}});case"rna-set":return r({op:"rna-set",history:e.history!==!1,path:e.path,property:e.property,value:e.value,...e.index===void 0?{}:{index:e.index}});case"outliner":return r({op:"outliner",...e.selected===void 0?{}:{selected:[...e.selected]}});case"node-tree":return r({op:"node-tree",...e.path===void 0?{}:{path:e.path},...e.material===void 0?{}:{material:e.material}});case"uv-layout":return r({op:"uv-layout",...e.object===void 0?{}:{object:e.object},...e.uvLayer===void 0?{}:{uvLayer:e.uvLayer}});case"rig":return r({op:"rig",...e.object===void 0?{}:{object:e.object}});case"action-clip":return r({op:"action-clip",...e.object===void 0?{}:{object:e.object},...e.bake===void 0?{}:{bake:e.bake}});case"outliner-set":return r({op:"outliner-set",path:e.path,column:e.column,value:e.value});case"screenshot-view":return JSON.parse(await b.screenshotView(e.maxSize));case"read-file":return t.readFile(e.path);case"write-file":{const n=e.path.slice(0,e.path.lastIndexOf("/"));n&&await t.mkdirTree(n),await t.writeFile(e.path,e.bytes),y.delete(e.path);return}case"list-files":return ne(t,e.path)}throw new Error(`Unknown Blender worker request ${e.op}`)}function g(e){if(e instanceof Error)return e.stack??`${e.name}: ${e.message}`;if(typeof e=="object"&&e!==null){const t=e;if(typeof t.message=="string")return typeof t.name=="string"?`${t.name}: ${t.message}`:t.message;try{return JSON.stringify(e)??Object.prototype.toString.call(e)}catch{return Object.prototype.toString.call(e)}}return String(e)}function re(){if(!f)return;const e=f.memoryBytes();e!==null&&m({op:"memory",bytes:e})}self.onmessage=e=>{const t=e.data;if(t.op==="present-result"){F(t);return}Q(()=>oe(t))};async function oe(e){try{const t=await F(e);T&&await R(),await I(),m({id:e.id,result:t})}catch(t){let r=g(t);try{await I()}catch(n){r+=`
2
- Unable to deliver Blender history: ${g(n)}`}m({id:e.id,error:r})}re()}async function I(){if(!f||!b)return;const e=await f.request({op:"history-events"});e.length&&m({op:"history",entries:e})}export{P as A,se as P,d as S,D as a,ae as b,ie as o,C as s};