@volter/game-editor 0.5.83 → 0.5.85

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 (298) 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 +2110 -2110
  5. package/dist/assets/{AssetBudgetPanel-SrgQ5Lx5.js → AssetBudgetPanel-DbqhuHIo.js} +3 -3
  6. package/dist/assets/{AudioViewer-BqEwLSZN.js → AudioViewer-GtXM9rbr.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-BfzWZdLX.js → CanvasBoardDocument-O8pBVHKn.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-CQ7ewAlO.js → CanvasSceneViewport-DtwDaJKJ.js} +1 -1
  9. package/dist/assets/{ColorInput-DQ6YyPD_.js → ColorInput-CRyBpDQq.js} +1 -1
  10. package/dist/assets/{EntityModelDocument-By-BM9dS.js → EntityModelDocument-DrscE_y5.js} +1 -1
  11. package/dist/assets/{EnvironmentAssetDocument-CrD37BI0.js → EnvironmentAssetDocument-BmiRAECI.js} +1 -1
  12. package/dist/assets/{GameplaySessionTimeline-DYtnW0Si.js → GameplaySessionTimeline-BjGJpcPQ.js} +1 -1
  13. package/dist/assets/{ImageViewer-CZNpdUEA.js → ImageViewer-osC6A1zw.js} +1 -1
  14. package/dist/assets/InspectorObjectPreview-1wIvQUAG.js +1 -0
  15. package/dist/assets/{JsonAssetDocument-Bg74MDXy.js → JsonAssetDocument-BrGcL8u6.js} +1 -1
  16. package/dist/assets/{LiveModuleDocument-CSqzNMjn.js → LiveModuleDocument-BfjeS5ek.js} +1 -1
  17. package/dist/assets/{LutAssetDocument-CsboXa8x.js → LutAssetDocument-IOxcza3L.js} +1 -1
  18. package/dist/assets/{ModelAssetDocument-DDVoKZpQ.js → ModelAssetDocument-CZEfuJeH.js} +1 -1
  19. package/dist/assets/{NonThreeAuthoringBootstrap-DcqD6_34.js → NonThreeAuthoringBootstrap-B35b423-.js} +1 -1
  20. package/dist/assets/{Object3DDocumentToolbar-p2pd2TuS.js → Object3DDocumentToolbar-CMUOyfNv.js} +1 -1
  21. package/dist/assets/Object3DDocumentViewport-DP7pmssm.js +2 -0
  22. package/dist/assets/{Object3DPreview-Bv0fZcdS.js → Object3DPreview-C7wIOwEx.js} +1 -1
  23. package/dist/assets/{OnlineAssetDetail-CPDafN4x.js → OnlineAssetDetail-Cguz8uMS.js} +1 -1
  24. package/dist/assets/{PlayBar-CBD4rcED.js → PlayBar-Car3RsYK.js} +1 -1
  25. package/dist/assets/{QuarksAssetDocument-DUUhKUxZ.js → QuarksAssetDocument-JLf7KkmS.js} +1 -1
  26. package/dist/assets/{ReactCanvasControls-3ual87uP.js → ReactCanvasControls-DhPHMxcB.js} +1 -1
  27. package/dist/assets/{RootSelectionOverlay-DtX8yWUQ.js → RootSelectionOverlay-NY-pG6TW.js} +1 -1
  28. package/dist/assets/{ShaderAssetDocument-rkhRdPRk.js → ShaderAssetDocument-B66ZXR_k.js} +1 -1
  29. package/dist/assets/{ShadowEditor-B-3FlftY.js → ShadowEditor-JBPkG0FG.js} +1 -1
  30. package/dist/assets/{SourceAssetViewer-CsMPohqK.js → SourceAssetViewer-ByRB57v6.js} +1 -1
  31. package/dist/assets/{StageHost-BOaImrmu.js → StageHost-c2YTpj09.js} +2 -2
  32. package/dist/assets/{StoryPreviewMount-BI-ANJix.js → StoryPreviewMount-Cn5zM1Bd.js} +1 -1
  33. package/dist/assets/{ThreeBoardDocument-CoBjs8BP.js → ThreeBoardDocument-p_AO9pNH.js} +2 -2
  34. package/dist/assets/{ThreeIsolationSceneContent-uShwSK1O.js → ThreeIsolationSceneContent-CO6GX6jg.js} +1 -1
  35. package/dist/assets/{ToolObject3DPreview-CBZdWA_7.js → ToolObject3DPreview-BInX7lrX.js} +1 -1
  36. package/dist/assets/{Toolbar-DJK7o_be.js → Toolbar-DOGhpk6D.js} +1 -1
  37. package/dist/assets/{TransientHint-Dgu6u7U5.js → TransientHint-DmJHOf-a.js} +1 -1
  38. package/dist/assets/{VideoViewer-BwTcASO2.js → VideoViewer-DhcC5fnj.js} +1 -1
  39. package/dist/assets/{ViewportShadingMenu-DUROUZdC.js → ViewportShadingMenu-3ykoJTkE.js} +1 -1
  40. package/dist/assets/{active-ingest-Ra07ruDo.js → active-ingest-CumnBRLS.js} +2 -2
  41. package/dist/assets/{animation-clock-CKeqYCt9.js → animation-clock-qleVUbAK.js} +1 -1
  42. package/dist/assets/{animation-mixers.service-BNiEU2dA.js → animation-mixers.service-CdAp6V1n.js} +1 -1
  43. package/dist/assets/{animation-timeline.utility-DQqMh1lF.js → animation-timeline.utility-cbT8wcxw.js} +1 -1
  44. package/dist/assets/{asset-budget-asset.menu-DFFih9b4.js → asset-budget-asset.menu-DfQGo6Cb.js} +1 -1
  45. package/dist/assets/{asset-budget.action-C3SMMeSX.js → asset-budget.action-D_C2IA1n.js} +1 -1
  46. package/dist/assets/{asset-budget.document-B5NTy5dU.js → asset-budget.document-DCHL8q9U.js} +1 -1
  47. package/dist/assets/{asset-budget.menu-Cclz2utV.js → asset-budget.menu-7YZac2UB.js} +1 -1
  48. package/dist/assets/{asset-editor-persistence-DsIjTddX.js → asset-editor-persistence-R-OsGiGL.js} +1 -1
  49. package/dist/assets/{asset-loaders-CQiLyapK.js → asset-loaders-gpT3yOw4.js} +1 -1
  50. package/dist/assets/{asset-preview-BkFAKkZH.js → asset-preview-4eaPPopc.js} +1 -1
  51. package/dist/assets/{audio-unlock.service-CupzdUuC.js → audio-unlock.service-cDscXL-C.js} +1 -1
  52. package/dist/assets/{audio.utility-0il96T5s.js → audio.utility-B0M3VUHh.js} +1 -1
  53. package/dist/assets/autoplay.service-CfC4AhnN.js +1 -0
  54. package/dist/assets/{babylon-authoring-adapter-HZ_SbAet.js → babylon-authoring-adapter-D5kiqwwO.js} +1 -1
  55. package/dist/assets/{binding-resolver-BoecCqTq.js → binding-resolver-BkOGFxcc.js} +2 -2
  56. package/dist/assets/{blender-emscripten-engine-Dk-rq4bm.js → blender-emscripten-engine-3RrRUwov.js} +1 -1
  57. package/dist/assets/{blender-node-editor.document-B_MGPd1D.js → blender-node-editor.document-KiYRC69k.js} +1 -1
  58. package/dist/assets/{blender-properties-tab-ITmWT_gZ.js → blender-properties-tab-BogxW8QH.js} +1 -1
  59. package/dist/assets/{blender-runtime-host-CACzxt1b.js → blender-runtime-host-DNyw8Olv.js} +2 -2
  60. package/dist/assets/{blender-runtime-skin-CwFW2Hj7.js → blender-runtime-skin-BEmQAWR7.js} +1 -1
  61. package/dist/assets/blender-runtime.document-D35fDX0h.js +13 -0
  62. package/dist/assets/{blender-screenshot.menu-BFR44H0L.js → blender-screenshot.menu-D3D8dCBP.js} +1 -1
  63. package/dist/assets/{blender-timeline.document-C0Zzi8Vo.js → blender-timeline.document-D_1ZZ_Ff.js} +1 -1
  64. package/dist/assets/{blender-uv-editor.document-BktbYoor.js → blender-uv-editor.document-CfCaj3is.js} +1 -1
  65. package/dist/assets/{blender-version.status-CLPjDPFV.js → blender-version.status-KM1K9fGb.js} +1 -1
  66. package/dist/assets/blender-wali-engine-DGwF1KiV.js +2 -0
  67. package/dist/assets/{blender.command-DdHEHM62.js → blender.command-CNtXis3q.js} +1 -1
  68. package/dist/assets/{board-guides-DhwRYHGT.js → board-guides-DKVoBuLQ.js} +1 -1
  69. package/dist/assets/{bridge.command-D4O9w4ft.js → bridge.command-Ch1rKf7V.js} +3 -3
  70. package/dist/assets/{browserAll-BhQBgoJL.js → browserAll-BuOuOmp8.js} +1 -1
  71. package/dist/assets/{build-player.document-DFr-d97N.js → build-player.document-C1L75B7e.js} +1 -1
  72. package/dist/assets/{build-profiles.document-C-64YHSV.js → build-profiles.document-0y_nV_tX.js} +1 -1
  73. package/dist/assets/{build-progress.status-DVm95Lmt.js → build-progress.status-CxKTPRmz.js} +1 -1
  74. package/dist/assets/{build-session-C_SD2MNJ.js → build-session-D09WthJT.js} +1 -1
  75. package/dist/assets/{build.action-CPee4b_9.js → build.action-B9ae5K5g.js} +1 -1
  76. package/dist/assets/{build.command-CrZ5sHYt.js → build.command-BYioNJKj.js} +1 -1
  77. package/dist/assets/{build.header-DDbhXD6t.js → build.header-VHReusha.js} +1 -1
  78. package/dist/assets/{build.menu-Ci-W_A1E.js → build.menu-BDjQwQB3.js} +1 -1
  79. package/dist/assets/{build.service-CpUtTLP4.js → build.service-BiBXIGDQ.js} +1 -1
  80. package/dist/assets/{camera-BZM67LhS.js → camera-Byc8JjLF.js} +1 -1
  81. package/dist/assets/{camera-runtime.inspector-BLgPGd97.js → camera-runtime.inspector-BNAfh8Fz.js} +1 -1
  82. package/dist/assets/{canvas-design-mount-DPAhHuIQ.js → canvas-design-mount-ti2CRiML.js} +3 -3
  83. package/dist/assets/{canvas-entry-runtime-DeyvFKWS.js → canvas-entry-runtime-bFI672nP.js} +2 -2
  84. package/dist/assets/{canvas-preview-frames-Cm0GJ-40.js → canvas-preview-frames-B8snlgkC.js} +1 -1
  85. package/dist/assets/{canvas-story-capture.service-Ziv9XNot.js → canvas-story-capture.service-D4U4Wfsy.js} +2 -2
  86. package/dist/assets/{capability-coverage-39yK3DGt.js → capability-coverage-B1jH9ygH.js} +1 -1
  87. package/dist/assets/{collaboration-presence-MR8LW4mZ.js → collaboration-presence-DVung7kb.js} +1 -1
  88. package/dist/assets/{collider-4Sgmy-qt.js → collider-fpAcAbt8.js} +1 -1
  89. package/dist/assets/{component-board.service-DO_oHdnS.js → component-board.service-BibhRmsF.js} +2 -2
  90. package/dist/assets/{component-board.service-DRJcETCR.js → component-board.service-BuO23-GJ.js} +2 -2
  91. package/dist/assets/{component-board.service-BdcOkwgn.js → component-board.service-nj1N3Ru9.js} +2 -2
  92. package/dist/assets/{component-contracts.service-BYQTO1HK.js → component-contracts.service-k4s32nV6.js} +1 -1
  93. package/dist/assets/{component-instance-root-CzRnRMe6.js → component-instance-root-R39ACc0B.js} +1 -1
  94. package/dist/assets/{component-verbs.command-CFv5y_pR.js → component-verbs.command-C0ltuDfg.js} +1 -1
  95. package/dist/assets/{component-verbs.service-BMBAwqjA.js → component-verbs.service-WzrdNdYR.js} +1 -1
  96. package/dist/assets/{config-C6iAsozB.js → config-BS3JNuAm.js} +2 -2
  97. package/dist/assets/{configurations-Dua_x6Wx.js → configurations-BKffkAiM.js} +1 -1
  98. package/dist/assets/{connection.status-DQJvEgdT.js → connection.status-CC4NEgdb.js} +1 -1
  99. package/dist/assets/{constraints.inspector-AHeP-LBc.js → constraints.inspector-BfW6Grwf.js} +1 -1
  100. package/dist/assets/{content-bounds-tMCAobKq.js → content-bounds-6mX1FAkL.js} +1 -1
  101. package/dist/assets/{contract-system-adapters-D6ion7SF.js → contract-system-adapters-DNbQm4Uw.js} +1 -1
  102. package/dist/assets/{coverage.service-Dm_H5o74.js → coverage.service-CNmjbmf9.js} +1 -1
  103. package/dist/assets/{create-runtime-C82CmCbc.js → create-runtime-SH8rIdxg.js} +1 -1
  104. package/dist/assets/{curve-C7Gg05DV.js → curve-C7dnsCiL.js} +1 -1
  105. package/dist/assets/{data-asset-BquhdFX2.js → data-asset-CSg-4_Y2.js} +1 -1
  106. package/dist/assets/{data-ref-Dcq9KJIG.js → data-ref-DlKtqIBH.js} +1 -1
  107. package/dist/assets/{debug-bridge-DODnLefz.js → debug-bridge-VJcGzDgq.js} +1 -1
  108. package/dist/assets/{debug-registry-CwYeaZ9J.js → debug-registry-Cq7PaV_q.js} +1 -1
  109. package/dist/assets/{deferred-ingest-play-7EJo_GNB.js → deferred-ingest-play-B0mq5zKv.js} +2 -2
  110. package/dist/assets/{design-time-canvas-mount-DCINR1Hg.js → design-time-canvas-mount-BiXsp1Gr.js} +2 -2
  111. package/dist/assets/{design-time-layers-i1N-JjPz.js → design-time-layers-DTgtfssI.js} +1 -1
  112. package/dist/assets/{design-time-mount.service-CtnijZJJ.js → design-time-mount.service-Cpkjbxx9.js} +2 -2
  113. package/dist/assets/{design-time-mount.service-DrUVDx2-.js → design-time-mount.service-CrMy2pao.js} +2 -2
  114. package/dist/assets/{design-time-react-mount-CpgoPMGr.js → design-time-react-mount-Dlpw3z93.js} +1 -1
  115. package/dist/assets/{document-preview-three-CuBUMP4o.js → document-preview-three-BPwyKvjR.js} +1 -1
  116. package/dist/assets/{dom-authoring-adapter-DSM-2JgU.js → dom-authoring-adapter-BAVDYDHK.js} +1 -1
  117. package/dist/assets/{draco3d--d91Ay95.js → draco3d-C-3DlhXv.js} +1 -1
  118. package/dist/assets/{edit-mode-audio.service-C9_299G0.js → edit-mode-audio.service-Bu3nLteT.js} +1 -1
  119. package/dist/assets/{edit-mode-authoring-DgvzXpiM.js → edit-mode-authoring-BvPDax01.js} +1 -1
  120. package/dist/assets/{edit-mode-networking.service-B6l9ESo-.js → edit-mode-networking.service-oyKkGASl.js} +1 -1
  121. package/dist/assets/{editor-api-D9NJWRVZ.js → editor-api-B1n3kU2G.js} +1 -1
  122. package/dist/assets/{editor-layers-D7HXdvWY.js → editor-layers-ZGgcIXno.js} +1 -1
  123. package/dist/assets/{editor-shell-store-CGWO4Ldz.js → editor-shell-store-KRNd7FtA.js} +1 -1
  124. package/dist/assets/{entity-object-Dl04-FE8.js → entity-object-BTMm2bY3.js} +1 -1
  125. package/dist/assets/{extend-GXzJ7XU_.js → extend-DJH1fM6H.js} +1 -1
  126. package/dist/assets/{fork-menu-DO1KASKk.js → fork-menu-D2LJ6fJn.js} +1 -1
  127. package/dist/assets/{frame-debugger-store-DOewah-x.js → frame-debugger-store-DwuzAc1q.js} +1 -1
  128. package/dist/assets/{game-contract-seams-B5a-Ev-f.js → game-contract-seams-BuJ9qvxY.js} +1 -1
  129. package/dist/assets/{game-css-scope-transform-CQhuDfMR.js → game-css-scope-transform-CNO_5aIS.js} +1 -1
  130. package/dist/assets/{game-document.service-CMc6SfH9.js → game-document.service-BrmVONC9.js} +1 -1
  131. package/dist/assets/{game-eval.command-MY5YxNL-.js → game-eval.command-DJkIHZle.js} +1 -1
  132. package/dist/assets/{game-module-access-BafPamOR.js → game-module-access-DIQvmG0l.js} +1 -1
  133. package/dist/assets/{game-network-COQRxS_4.js → game-network-BRYhoaKR.js} +3 -3
  134. package/dist/assets/{gameplay-export-i_fnSpRp.js → gameplay-export-B4hdr1Rw.js} +1 -1
  135. package/dist/assets/{gameplay-replay-BM_frdpr.js → gameplay-replay-BcVJR-1V.js} +1 -1
  136. package/dist/assets/{gameplay.command-Dkp2IG9Q.js → gameplay.command-B1rxwm8I.js} +1 -1
  137. package/dist/assets/{generation-jobs-B6T_j2D_.js → generation-jobs-D4HC0-Zn.js} +1 -1
  138. package/dist/assets/{generation.service-BXJTa6dr.js → generation.service-Bevnciaw.js} +1 -1
  139. package/dist/assets/{generations-DqNhoKz8.js → generations-BKXjBIYJ.js} +1 -1
  140. package/dist/assets/{generations.status-Dt8TW7Lk.js → generations.status-oAxS1iQZ.js} +1 -1
  141. package/dist/assets/{hierarchy-marks-fSNwXIFe.js → hierarchy-marks-oIV0-4rJ.js} +1 -1
  142. package/dist/assets/{hosted-asset-materialization-76jdNP28.js → hosted-asset-materialization-DYCH-KIO.js} +1 -1
  143. package/dist/assets/{index-Cf-uQvPt.js → index-0EmrSmqO.js} +1 -1
  144. package/dist/assets/{index-cGaEzVz5.js → index-A4I14GlU.js} +1 -1
  145. package/dist/assets/{index-CKznhnFr.js → index-B4RlBzm4.js} +1 -1
  146. package/dist/assets/{index-cNdu8TlA.js → index-BGuzKHyq.js} +1 -1
  147. package/dist/assets/{index-C5tasxXb.js → index-CPCojg58.js} +7 -7
  148. package/dist/assets/{index-CO6HFW9e.js → index-ClHTVUg4.js} +1 -1
  149. package/dist/assets/{index-Cub6ESrb.js → index-Cw146_cY.js} +2 -2
  150. package/dist/assets/{index-D5pDWxZH.js → index-DOlOOG8A.js} +1 -1
  151. package/dist/assets/{index-c6fd_bqy.js → index-DbS15EJv.js} +1 -1
  152. package/dist/assets/{inference-diagnostics-D7uYs70A.js → inference-diagnostics-Dh-QkkEe.js} +1 -1
  153. package/dist/assets/{ingest-boot-viewport-CjtFKkMD.js → ingest-boot-viewport-DZmFn9n3.js} +1 -1
  154. package/dist/assets/{ingest-siblings-Dlx0quan.js → ingest-siblings-DL39Iqju.js} +1 -1
  155. package/dist/assets/{ingest-source-persistence-SAe0xIy-.js → ingest-source-persistence-D0LQoH45.js} +1 -1
  156. package/dist/assets/{ingest.service-BXkZ1vXa.js → ingest.service-DEfvpiN0.js} +1 -1
  157. package/dist/assets/{inspect-BqIL-41D.js → inspect-CA5VRJZ1.js} +1 -1
  158. package/dist/assets/instances.command-DJGqIaA7.js +1 -0
  159. package/dist/assets/{json-history-resource-BUJgH5iK.js → json-history-resource-DmiSZatB.js} +1 -1
  160. package/dist/assets/{layered-pick-RElCrqXb.js → layered-pick-F4Nppx6F.js} +1 -1
  161. package/dist/assets/{light-DLADuHH2.js → light-DHphSKgx.js} +1 -1
  162. package/dist/assets/{live-project-verbs-Cc1GXtG5.js → live-project-verbs-Dpyx06pd.js} +1 -1
  163. package/dist/assets/{machine.document-ER7OD-37.js → machine.document-Otoo2MEp.js} +1 -1
  164. package/dist/assets/{machines.finder-CZ2ZxPFR.js → machines.finder-Cpp9CXRb.js} +1 -1
  165. package/dist/assets/{material-CspuVO3Q.js → material-CbMlihkE.js} +1 -1
  166. package/dist/assets/{material-factory-KV4mqSzl.js → material-factory-BXR7VTXd.js} +1 -1
  167. package/dist/assets/{mesh-CrIkl8_H.js → mesh-BNtBc8OH.js} +1 -1
  168. package/dist/assets/{model-asset-sections.service-Cyom1FRs.js → model-asset-sections.service-CX9mj2OU.js} +1 -1
  169. package/dist/assets/{model-inspection-BLOiPoW4.js → model-inspection-CGHk38AF.js} +1 -1
  170. package/dist/assets/{model-thumbnail-B7DVMYtQ.js → model-thumbnail-BSDzS2s4.js} +1 -1
  171. package/dist/assets/{models.finder-At2wuWE3.js → models.finder-B6dLMnPd.js} +1 -1
  172. package/dist/assets/{module-mode-CHqvCb69.js → module-mode-CLRUiNIE.js} +2 -2
  173. package/dist/assets/{mount-canvas-ingest-root-uISMj3zn.js → mount-canvas-ingest-root-CfM02MlP.js} +2 -2
  174. package/dist/assets/{mount-dom-ingest-root-C8PsgrCd.js → mount-dom-ingest-root-B74PZht_.js} +2 -2
  175. package/dist/assets/{mount-ingest-root-Dmb_D_oY.js → mount-ingest-root-bMGl01QB.js} +2 -2
  176. package/dist/assets/{mount-manifest-CGwCOZO6.js → mount-manifest-DGlkvi3R.js} +1 -1
  177. package/dist/assets/{mount-three-ingest-root-BGdd6UoG.js → mount-three-ingest-root-BAS_JK7l.js} +1 -1
  178. package/dist/assets/{mounted-authoring-BS53gpIm.js → mounted-authoring-v7VlQXfv.js} +1 -1
  179. package/dist/assets/{mounted-story-viewport-source-CL9Ra-_N.js → mounted-story-viewport-source-DCSiaoxN.js} +1 -1
  180. package/dist/assets/{native-debug-module-DRmkIrIW.js → native-debug-module-DtRInjS1.js} +1 -1
  181. package/dist/assets/{navigation-DOuNvaV6.js → navigation-C4M6yoxY.js} +1 -1
  182. package/dist/assets/{navmesh.menu-9g4nO2dp.js → navmesh.menu-OTDCoFua.js} +1 -1
  183. package/dist/assets/{navmesh.service-B7MllQj9.js → navmesh.service-Csgys72O.js} +1 -1
  184. package/dist/assets/network-observer.service-km2g8b0A.js +1 -0
  185. package/dist/assets/{network.utility-BgzPLUS5.js → network.utility-Du_jSAcy.js} +1 -1
  186. package/dist/assets/{object3d-document-session-registry-Bk-I9jZH.js → object3d-document-session-registry-d0khadWE.js} +2 -2
  187. package/dist/assets/{oid-transform-CHeHFNUu.js → oid-transform-CQH40EvN.js} +1 -1
  188. package/dist/assets/{particles-RD4cI69F.js → particles-BywZnUF8.js} +1 -1
  189. package/dist/assets/{pixi-authoring-adapter-BuP3Qc7X.js → pixi-authoring-adapter-C2tLMn40.js} +1 -1
  190. package/dist/assets/{pixi-live-write-target-DzyXhmiw.js → pixi-live-write-target-CdEeBPdd.js} +1 -1
  191. package/dist/assets/{play.command-C7iZbm26.js → play.command-D_SLXGbK.js} +2 -2
  192. package/dist/assets/{presentation-43UAzXCV.js → presentation-DwrRhSDG.js} +1 -1
  193. package/dist/assets/{product-BfaoEtK8.js → product-Clqy_aQR.js} +1 -1
  194. package/dist/assets/{profiler.action-DIp4OPNA.js → profiler.action-B_FVCDMv.js} +1 -1
  195. package/dist/assets/{profiler.menu-tHZqii7c.js → profiler.menu-VBKBdxei.js} +1 -1
  196. package/dist/assets/{profiler.utility-CSg5WNN8.js → profiler.utility-BiJs_tQb.js} +1 -1
  197. package/dist/assets/{project-authoring-session-BbwFHEzZ.js → project-authoring-session-oy5hBwns.js} +2 -2
  198. package/dist/assets/{properties-bone-constraints.inspector-ooGWoGiI.js → properties-bone-constraints.inspector-DzUKXAPh.js} +1 -1
  199. package/dist/assets/{properties-bone.inspector-C_UdJjDe.js → properties-bone.inspector-DmQrhN79.js} +1 -1
  200. package/dist/assets/{properties-collection.inspector-Dm4MNZQK.js → properties-collection.inspector-XJ37WckN.js} +1 -1
  201. package/dist/assets/{properties-constraints.inspector-DlCHF3Nd.js → properties-constraints.inspector-QFablfr9.js} +1 -1
  202. package/dist/assets/{properties-data.inspector-DTfv2ILq.js → properties-data.inspector-DlP7i1wj.js} +1 -1
  203. package/dist/assets/{properties-material.inspector-C_-GsOvF.js → properties-material.inspector-n64vyIL1.js} +1 -1
  204. package/dist/assets/{properties-modifiers.inspector-BELGiG49.js → properties-modifiers.inspector-BdtDaOds.js} +1 -1
  205. package/dist/assets/{properties-object.inspector-COLlzAo4.js → properties-object.inspector-D4DiIdGc.js} +1 -1
  206. package/dist/assets/{properties-output.inspector-DLpqLRCp.js → properties-output.inspector-CSlItYZf.js} +1 -1
  207. package/dist/assets/{properties-particles.inspector-C8ZhuG-X.js → properties-particles.inspector-Cb7kruTo.js} +1 -1
  208. package/dist/assets/{properties-physics.inspector-DQ3fUdPx.js → properties-physics.inspector-Bt64Vum-.js} +1 -1
  209. package/dist/assets/{properties-render.inspector-DlPuoXQ-.js → properties-render.inspector-BxLGc0W1.js} +1 -1
  210. package/dist/assets/{properties-scene.inspector-itnV8qGu.js → properties-scene.inspector-yS59fXDq.js} +1 -1
  211. package/dist/assets/{properties-texture.inspector-BZbBAQ_O.js → properties-texture.inspector-M1kH0se_.js} +1 -1
  212. package/dist/assets/{properties-view-layer.inspector-CNOevOy3.js → properties-view-layer.inspector-Bhnqor8D.js} +1 -1
  213. package/dist/assets/{properties-world.inspector-C7u-dAkO.js → properties-world.inspector-BuorIrMM.js} +1 -1
  214. package/dist/assets/{r3f-design-session-DbXiRez3.js → r3f-design-session-1ToeZOmU.js} +2 -2
  215. package/dist/assets/{r3f-physics-binding-B8Je7bNy.js → r3f-physics-binding-BXSHDiyJ.js} +1 -1
  216. package/dist/assets/{r3f-source-authoring-adapter-CarxaAwC.js → r3f-source-authoring-adapter-DvEUAeJI.js} +1 -1
  217. package/dist/assets/{react-canvas-navigation-BTVCmK_d.js → react-canvas-navigation-BJpKAtGR.js} +1 -1
  218. package/dist/assets/{react-inspector.service-BV9ZVls7.js → react-inspector.service-D4bN7Blu.js} +1 -1
  219. package/dist/assets/{react-story-board-CETbMKNG.js → react-story-board-DGq9ptgS.js} +1 -1
  220. package/dist/assets/{react-three-rapier.esm-BQ3IBcaP.js → react-three-rapier.esm-DBid2y9e.js} +1 -1
  221. package/dist/assets/{react-world-authoring-adapter-DsywMgco.js → react-world-authoring-adapter-Cff7FsAj.js} +1 -1
  222. package/dist/assets/{realm-services-DoN23Ol2.js → realm-services-C0ZZHgtE.js} +1 -1
  223. package/dist/assets/{reflection-probe-capture.inspector-D0grUDdX.js → reflection-probe-capture.inspector-4ey0uhBh.js} +1 -1
  224. package/dist/assets/{registry-CZxNkOhN.js → registry-aISm60y9.js} +1 -1
  225. package/dist/assets/{relative-import-specifier-DMppRnNH.js → relative-import-specifier-CqgNxJFk.js} +1 -1
  226. package/dist/assets/{render-env-BAO3Rc6G.js → render-env-cvRaBQDG.js} +1 -1
  227. package/dist/assets/{render-features-CBm-s0QE.js → render-features-DOxvOOZ1.js} +1 -1
  228. package/dist/assets/{render-settings-DCZaLK-j.js → render-settings-Bx9QGvwd.js} +1 -1
  229. package/dist/assets/{resolve-three-Bwj7rkZB.js → resolve-three-CQl-KsgS.js} +3 -3
  230. package/dist/assets/{root-seam-contract-DMUsCBFW.js → root-seam-contract-BbtsWWys.js} +1 -1
  231. package/dist/assets/{run-selection-DRkjJF-w.js → run-selection-QKV9HubI.js} +1 -1
  232. package/dist/assets/{scene-capture-DVXdql_1.js → scene-capture-DLRSEfbm.js} +1 -1
  233. package/dist/assets/{scene-document.service-CxGQ1BN-.js → scene-document.service-CEsznyXd.js} +2 -2
  234. package/dist/assets/{scene-framing-DUd4lKtW.js → scene-framing-BmfB9q_Z.js} +1 -1
  235. package/dist/assets/{seeded-random-DzZFJTfh.js → seeded-random-WcHeAKbI.js} +1 -1
  236. package/dist/assets/{setup-renderer-DF2zFw-E.js → setup-renderer-CX3K4YbA.js} +1 -1
  237. package/dist/assets/{source-object3d-authoring-adapter-RimvAMDG.js → source-object3d-authoring-adapter-P0jgWX5D.js} +1 -1
  238. package/dist/assets/{source-persistence-backend-BRcy23H9.js → source-persistence-backend-9rhWirOd.js} +1 -1
  239. package/dist/assets/{stage-keyboard-JRZ1CNbL.js → stage-keyboard-AWDKfwov.js} +1 -1
  240. package/dist/assets/{stage-overlay-set-DHN11xPU.js → stage-overlay-set-HEckN24D.js} +1 -1
  241. package/dist/assets/{stage-presence-markers-AQuGIbnu.js → stage-presence-markers-CdwQPtfC.js} +1 -1
  242. package/dist/assets/{stage-transform-tools-B8u8n8gJ.js → stage-transform-tools-CHA1Xh2H.js} +1 -1
  243. package/dist/assets/{standard-viewport-dressing-NHKaiGVg.js → standard-viewport-dressing-BtBF7Vbc.js} +1 -1
  244. package/dist/assets/{state-watch.action-B_conRk5.js → state-watch.action-hckaGBK2.js} +1 -1
  245. package/dist/assets/{state-watch.menu-B6GNrnYH.js → state-watch.menu-D45FUTv1.js} +1 -1
  246. package/dist/assets/{state-watch.utility-CxuUOPhl.js → state-watch.utility-7-QTej_2.js} +1 -1
  247. package/dist/assets/{story-capture-DYXQlnlZ.js → story-capture-DmQTI0v4.js} +1 -1
  248. package/dist/assets/{story-documents-D_Tg0idt.js → story-documents-BxrcucWJ.js} +1 -1
  249. package/dist/assets/{story-documents.service-DQh0SkkQ.js → story-documents.service-CxjhQ-NB.js} +1 -1
  250. package/dist/assets/{story-documents.service-ES8nxeNu.js → story-documents.service-D4l0xeo_.js} +1 -1
  251. package/dist/assets/{story-media-presence-D4w-waFJ.js → story-media-presence-DQO4X40Q.js} +1 -1
  252. package/dist/assets/{story-pixi-preview-B6GFGUQG.js → story-pixi-preview-BXfVUpSo.js} +1 -1
  253. package/dist/assets/{story-presentation-6qhUDkv4.js → story-presentation-B7-Tk1Wd.js} +1 -1
  254. package/dist/assets/{story-three-preview-BgLSJIlN.js → story-three-preview-CPakJtus.js} +2 -2
  255. package/dist/assets/{studio-environment-BGU84AOG.js → studio-environment-BzV2N2t_.js} +1 -1
  256. package/dist/assets/{surface-state-BtNEZzCd.js → surface-state-D5H35ZmU.js} +1 -1
  257. package/dist/assets/{syntactic-prop-specs-B309atpv.js → syntactic-prop-specs-BOAEM4--.js} +1 -1
  258. package/dist/assets/{team-playtest.service-B8leDEE-.js → team-playtest.service-C8ZILJSZ.js} +1 -1
  259. package/dist/assets/{three-BRZq2Px5.js → three-BdFqc-uv.js} +1 -1
  260. package/dist/assets/{three-authoring-adapter-DkfGlaNQ.js → three-authoring-adapter-DVAQSXQF.js} +1 -1
  261. package/dist/assets/three-authoring.service-4R8HrWVV.js +2 -0
  262. package/dist/assets/{three-ingest-runtime-D9JoNRjk.js → three-ingest-runtime-Can_ZcUf.js} +1 -1
  263. package/dist/assets/{three-integration-D3zBmOoj.js → three-integration-BVRiaNfa.js} +2 -2
  264. package/dist/assets/three-integration.service-D5IfeqOm.js +1 -0
  265. package/dist/assets/{three-projection-core-Dt5ARGlM.js → three-projection-core-C1Lx5jx6.js} +1 -1
  266. package/dist/assets/{three-state-3qPk0Sq8.js → three-state-B9nzv3ez.js} +1 -1
  267. package/dist/assets/{three-story-capture.service-B3U2L4qG.js → three-story-capture.service-vM1fJnOm.js} +2 -2
  268. package/dist/assets/{three-story-model-C96x-E0V.js → three-story-model-Cy_pRRO_.js} +1 -1
  269. package/dist/assets/{three-viewport-presentation-DGctcUkE.js → three-viewport-presentation-fek-MzPi.js} +1 -1
  270. package/dist/assets/{transform-mode-request-C0cdwtJf.js → transform-mode-request-D26wDPlM.js} +1 -1
  271. package/dist/assets/{transport-strip-8OsPiJIm.js → transport-strip-D365dutm.js} +1 -1
  272. package/dist/assets/transport.header-DdFTLJw9.js +1 -0
  273. package/dist/assets/{tuples-CaBWqclR.js → tuples-BM0LFInQ.js} +1 -1
  274. package/dist/assets/{ui-board-document-BMTAhmJP.js → ui-board-document-DR1lcsOV.js} +2 -2
  275. package/dist/assets/{user-data-4Ls0MsfF.js → user-data-BkkB0ByQ.js} +1 -1
  276. package/dist/assets/{utility-view-state-gIzv2Oo_.js → utility-view-state-DisM-BPx.js} +1 -1
  277. package/dist/assets/{viewport-door-C4Fu0zS3.js → viewport-door-eEAtWKch.js} +1 -1
  278. package/dist/assets/{viewport-root-presentation-DMMIH4rt.js → viewport-root-presentation-C8DfKod7.js} +1 -1
  279. package/dist/assets/{viewport-surface-status-CdI6sQko.js → viewport-surface-status-DzuppPAk.js} +1 -1
  280. package/dist/assets/{webworkerAll-BINEvomm.js → webworkerAll-kCBexJEB.js} +1 -1
  281. package/dist/assets/{worker-Cu9kIzIf.js → worker-BRY0I3XJ.js} +1 -1
  282. package/dist/assets/{workspace-arrangement-w-T2xUGF.js → workspace-arrangement-BX83yYRw.js} +1 -1
  283. package/dist/assets/{world-documents-feEUCgVE.js → world-documents-CRlE_ow1.js} +1 -1
  284. package/dist/assets/{world-root-stage-binding-BDb6wt_C.js → world-root-stage-binding-CtcyZKvz.js} +1 -1
  285. package/dist/assets/{xstate-animation-binding-Bhz1Uhhw.js → xstate-animation-binding-2oim5-Rx.js} +1 -1
  286. package/dist/assets/{xstate-animation-meta-CvDlYgrt.js → xstate-animation-meta-BvCgna0q.js} +1 -1
  287. package/dist-node/cli.js +16 -16
  288. package/package.json +16 -16
  289. package/dist/assets/InspectorObjectPreview-gWOVV6Ll.js +0 -1
  290. package/dist/assets/Object3DDocumentViewport-BvNfSHi_.js +0 -2
  291. package/dist/assets/autoplay.service-SQBFaKvM.js +0 -1
  292. package/dist/assets/blender-runtime.document-CozOB5TX.js +0 -13
  293. package/dist/assets/blender-wali-engine-CUWSQ_vI.js +0 -2
  294. package/dist/assets/instances.command-wpQVWPb9.js +0 -1
  295. package/dist/assets/network-observer.service-DY_39EdG.js +0 -1
  296. package/dist/assets/three-authoring.service-sOchR4o8.js +0 -2
  297. package/dist/assets/three-integration.service-CE8aNHob.js +0 -1
  298. package/dist/assets/transport.header-D1Otpit3.js +0 -1
@@ -1 +1 @@
1
- import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{EDITOR_LAYER as Ke}from"./editor-layers-D7HXdvWY.js";import{df as Oe,a7 as V,bN as Ye,aL as te,bw as $,aM as G,kI as Je,bM as Ze,bP as et,a6 as Q,g$ as tt,hF as rt,j_ as nt,kJ as ot,Z as j,K as st,ci as at,kK as Se,cx as it,kL as ct,kM as lt,kN as ut,kO as Ce,kP as xe,aD as x,cU as dt,kQ as mt,cq as pt,cv as ft,kR as Pe,kS as Ee,kT as je,kU as ht,al as gt,kV as bt,kW as ke,dI as vt,kX as wt,kY as yt,j3 as St,iV as Ct,iW as xt,gK as Pt,gL as Et,j1 as jt,g2 as kt,g3 as Tt,g4 as At,g5 as Rt}from"./index-C5tasxXb.js";import{s as Mt,o as Vt}from"./object3d-document-session-registry-Bk-I9jZH.js";import{R as Ot}from"./RootSelectionOverlay-DtX8yWUQ.js";import{e as Lt,S as Ft}from"./surface-state-BtNEZzCd.js";import{r as f}from"./index-nmcBqr7Y.js";import{t as It}from"./surface-content-Dg9Kkazf.js";import"./index-CtzuWnCS.js";import{s as zt,d as Te,c as U,t as Wt,p as Le,v as Ae,b as Nt,e as _t,l as Dt,i as Qt}from"./camera-authoring-DYjhU5Zp.js";import{c as $t}from"./performance-profiler-CMbwGBuk.js";import{m as Gt}from"./renderer-ownership-BovSEcLv.js";import{applyWorldRendererConfig as Ut}from"./renderer-config-CaPR4dB_.js";import{getUserData as Fe}from"./user-data-CODoGZqA.js";import{detectKtx2Support as Bt}from"./loader-BTUKnX5Q.js";import{resolveRenderSettings as Ht}from"./render-settings-DCZaLK-j.js";import{createSoftParticleDepthPass as qt}from"./soft-particle-depth-DNGwWJ8c.js";import{ViewportShadingRenderer as Xt}from"./viewport-shading-D9BMDb1N.js";import{applyRendererSettings as Kt,applySceneRenderPipeline as Yt}from"./setup-renderer-DF2zFw-E.js";import{EffectComposer as Jt,EffectPass as Zt,BlendFunction as er,KernelSize as tr,OutlineEffect as rr}from"./index-DHhMOs_s.js";import{W as nr,T as or}from"./three.module-BLhyNg0e.js";import{d as sr}from"./design-time-mount-registry-DUpXCg1U.js";import{a as ar}from"./project-authoring-session-BbwFHEzZ.js";import"./three-integration-D3zBmOoj.js";import{registerPresentedCanvasFrame as ir}from"./canvas-preview-frames-Cm0GJ-40.js";import{i as cr}from"./editor-presentation-activity-CqJH4G9t.js";import{E as lr,s as ur,a as dr,t as mr,b as pr,c as fr,d as hr,r as gr,i as br}from"./three-viewport-presentation-DGctcUkE.js";import{a as Z}from"./entity-object-Dl04-FE8.js";import{w as vr}from"./editor-shell-store-CGWO4Ldz.js";import{p as wr}from"./viewport-root-presentation-DMMIH4rt.js";import{d as yr}from"./asset-editor-persistence-DsIjTddX.js";import{bindStagePresenceMarkers as Sr}from"./stage-presence-markers-AQuGIbnu.js";import{el as Cr,_ as ee,fo as D,d7 as xr,dp as Re}from"./three.core-3arARmh6.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./workspace-arrangement-w-T2xUGF.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./eyedropper-session-bjPXnfeX.js";import"./layered-pick-RElCrqXb.js";import"./root-stacking-BEd9ZvxC.js";import"./react-story-board-CETbMKNG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./inspect-BqIL-41D.js";import"./inference-diagnostics-D7uYs70A.js";import"./object-marks-BnvSuCTt.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./render-features-CBm-s0QE.js";import"./matcap-texture-Dm2c-VQa.js";import"./defaults-DKiBJCPN.js";import"./edit-mode-authoring-DgvzXpiM.js";import"./host-hierarchy-objects-BV3WqU2w.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"./user-data-4Ls0MsfF.js";import"./model-thumbnail-B7DVMYtQ.js";import"./studio-environment-BGU84AOG.js";import"./three-state-3qPk0Sq8.js";import"./hierarchy-marks-fSNwXIFe.js";import"./component-instance-root-CzRnRMe6.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-door-C4Fu0zS3.js";import"./content-bounds-tMCAobKq.js";import"./asset-preview-BkFAKkZH.js";import"./bitmap-label-Ct4k6ehY.js";import"./index-Cub6ESrb.js";import"./standard-viewport-dressing-NHKaiGVg.js";import"./clip-planes-CnAI6DZn.js";import"./three-BRZq2Px5.js";import"./model-inspection-BLOiPoW4.js";import"./OrbitControls-B13MKuwC.js";import"./LineSegments2-DN9pUfWA.js";import"./three.quarks.esm-C_HmSKXo.js";import"./live-gesture-lock-DJbrjOqf.js";import"./scene-framing-DUd4lKtW.js";import"./live-mixers-B-bwLZ7c.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./mounted-authoring-BS53gpIm.js";import"./collaboration-presence-MR8LW4mZ.js";function Pr({previewRef:r}){const{preview:e,previewPinned:s}=U(),[o,c]=f.useState(!1),a=f.useRef(null);if(f.useEffect(()=>{if(!o)return;const u=E=>{a.current?.contains(E.target)||c(!1)};return document.addEventListener("pointerdown",u),()=>document.removeEventListener("pointerdown",u)},[o]),!e)return null;const m=e.camera.isPerspectiveCamera&&Number.isFinite(e.camera.aspect)?e.camera.aspect:16/9;return i.jsxs("div",{className:"volter-camera-preview","data-testid":"camera-preview",children:[i.jsxs(Oe,{className:"volter-camera-preview-header",gap:4,align:"center",children:[i.jsx(V,{icon:Ye,size:"sm"}),i.jsx(te,{variant:"label",truncate:!0,className:"volter-camera-preview-title",title:`${e.name} · ${e.lens}`,children:e.name}),i.jsx($,{text:s?"Unpin camera preview":"Pin camera preview",children:i.jsx(G,{"aria-label":s?"Unpin camera preview":"Pin camera preview","aria-pressed":s,size:"compact",onClick:Wt,children:i.jsx(V,{icon:Je,size:"sm"})})}),i.jsxs("div",{ref:a,className:"volter-camera-preview-menu-anchor",children:[i.jsx($,{text:"Camera actions",children:i.jsx(G,{"aria-label":"Camera actions","aria-expanded":o,size:"compact",onClick:()=>c(u=>!u),children:i.jsx(V,{icon:Ze,size:"sm"})})}),o?i.jsxs(et,{className:"volter-camera-preview-menu",children:[i.jsx(Q,{variant:"ghost",size:"compact",disabled:!e.canAuthorPose,title:e.poseRefusal,onClick:()=>{c(!1),Le(e)},children:"Pilot Camera"}),i.jsx(Q,{variant:"ghost",size:"compact",onClick:()=>{c(!1),Ae(e)},children:"View Through Camera"}),i.jsx(Q,{variant:"ghost",size:"compact",disabled:!e.canAuthorPose,title:e.poseRefusal,onClick:()=>{c(!1),Nt(e)},children:"Align Camera to Current View"})]}):null]})]}),i.jsx("div",{ref:r,className:"volter-camera-preview-image",style:{aspectRatio:String(Math.max(.5,Math.min(3,m)))},role:"img","aria-label":`Live view through ${e.name}`,onDoubleClick:()=>Ae(e)})]})}function Er(){return i.jsxs("div",{className:"volter-camera-guides","aria-hidden":"true",children:[i.jsx("div",{className:"volter-camera-guide volter-camera-guide-v1"}),i.jsx("div",{className:"volter-camera-guide volter-camera-guide-v2"}),i.jsx("div",{className:"volter-camera-guide volter-camera-guide-h1"}),i.jsx("div",{className:"volter-camera-guide volter-camera-guide-h2"}),i.jsx("div",{className:"volter-camera-safe-frame"}),i.jsx("div",{className:"volter-camera-center-mark"})]})}function jr(){const{view:r,guidesVisible:e}=U();if(!r)return null;const s=r.mode==="pilot";return i.jsxs(i.Fragment,{children:[e?i.jsx(Er,{}):null,i.jsx(tt,{variant:"overlay",border:!0,className:"volter-camera-view-banner volter-chrome-island volter-glass-island","data-testid":"camera-view-banner",children:i.jsxs(Oe,{gap:6,align:"center",children:[i.jsx(rt,{children:s?"PILOTING":"CAMERA VIEW"}),i.jsx(te,{variant:"label",children:r.subject.name}),i.jsx(te,{variant:"caption",tone:"muted",children:"Exact camera view"}),i.jsx($,{text:e?"Hide composition guides":"Show composition guides",children:i.jsx(G,{"aria-label":e?"Hide composition guides":"Show composition guides","aria-pressed":e,size:"compact",onClick:_t,children:i.jsx(V,{icon:nt,size:"sm"})})}),s?null:i.jsx(Q,{size:"compact",variant:"primary",disabled:!r.subject.canAuthorPose,title:r.subject.poseRefusal,onClick:()=>Le(r.subject),children:"Pilot"}),i.jsx($,{text:"Exit camera view",children:i.jsx(G,{"aria-label":"Exit camera view",size:"compact",onClick:Dt,children:i.jsx(V,{icon:ot,size:"sm"})})})]})})]})}function kr({previewRef:r}){return f.useSyncExternalStore(zt,Te,Te),i.jsxs(i.Fragment,{children:[i.jsx(Pr,{previewRef:r}),i.jsx(jr,{})]})}function Tr(r){const e=r,s=e.getExtension("EXT_disjoint_timer_query_webgl2"),o=s!==null&&typeof e.createQuery=="function",c=[];let a=null,m=null;return{begin(){!o||a||(a=e.createQuery(),a&&e.beginQuery(s.TIME_ELAPSED_EXT,a))},end(){!o||!a||(e.endQuery(s.TIME_ELAPSED_EXT),c.push(a),a=null)},poll(){if(!o)return null;if(e.getParameter(s.GPU_DISJOINT_EXT)){for(const u of c.splice(0))e.deleteQuery(u);return null}for(;c.length>0;){const u=c[0];if(!e.getQueryParameter(u,e.QUERY_RESULT_AVAILABLE))break;c.shift(),m=e.getQueryParameter(u,e.QUERY_RESULT)/1e6,e.deleteQuery(u)}return m},dispose(){a&&(e.endQuery(s.TIME_ELAPSED_EXT),e.deleteQuery(a),a=null);for(const u of c.splice(0))e.deleteQuery(u)}}}const Ar=2e4,Rr=250,Mr=5e3;class Vr{#e=0;#t=0;#r=0;#n;constructor(e){this.#n=e}get pending(){return this.#e>0||this.#t>0}begin(e,s){this.#e=e+Ar,this.#t=s?e+Mr:0,this.#r=0,this.tick(e)}tick(e){if(!(!this.pending||e<this.#r)){if(this.#r=e+Rr,this.#t>0&&this.#n.seedFromGameCamera()){this.cancel();return}this.#e>0&&this.#n.frameContent()&&(this.#e=0),e>=this.#e&&(this.#e=0),e>=this.#t&&(this.#t=0)}}cancel(){this.#e=0,this.#t=0}}const Me=new WeakMap;function Or(r,e){if(!r)return e(),!0;if(Me.has(r))return!1;try{return e(),!0}catch(s){const o=s instanceof Error?s.message:String(s);return Me.set(r,o),j.warn(`The Scene view cannot draw this world with the editor's own renderer, and has stopped trying: ${o}. This world was built by a copy of three the editor did not make (a vendored bundle pins its own revision), and the editor draws it with ITS three — across a wide enough revision gap the two disagree about the renderer/material contract. The game itself is unaffected and still drawing: its own canvas is what the Game tab and ${st("screenshot")} show, and hierarchy, selection and inspection all still read the live world. It closes when the game resolves \`three\` to the host's instance — a bare, un-rewritten \`import 'three'\` in its own source.`,"ingest"),!1}}function Lr(){const r=at();r.addEventListener("server-log",s=>{try{Se(JSON.parse(s.data))}catch{}});let e=!1;return(async()=>{try{const s=await it();if(e)return;for(const o of s)Se(o)}catch{}})(),()=>{e=!0,r.close()}}const Ie="viewportPose";function Fr(){const r=ct(Ie);return r&&Array.isArray(r.position)&&r.position.length===3&&r.position.every(Number.isFinite)&&Array.isArray(r.target)&&r.target.length===3&&r.target.every(Number.isFinite)?r:null}function Ir(r,e){lt(Ie,{position:[r.position.x,r.position.y,r.position.z],target:[e.x,e.y,e.z]})}const Ve={id:"world",title:"World",lights:[{color:"#ffffff",intensity:1,direction:[-10,-20,-10],space:"world"}],ambient:{color:"#ffffff",intensity:.5},environmentIntensity:0};yt(Ve),St("world",{all:{lighting:{source:"studio",studioPreset:Ve.id,auto:{takeover:["light"],overridable:!0}}}});function zr(r,e,s){const o=document.createElement("canvas");o.setAttribute("aria-label",`${s} authoring viewport`),o.setAttribute("data-testid","editor-canvas"),o.setAttribute("aria-hidden","true"),o.tabIndex=-1,o.style.width="100%",o.style.height="100%",o.style.display="block",o.style.pointerEvents="auto",r.appendChild(o);const c=Math.max(1,e.clientWidth),a=Math.max(1,e.clientHeight),m=Math.min(window.devicePixelRatio||1,2);o.width=Math.ceil(c*m),o.height=Math.ceil(a*m);const u=Gt(new nr({canvas:o,antialias:!!Ht(void 0).antialias,powerPreference:"high-performance"}));return Kt(u,void 0,m),u.setSize(c,a),u.shadowMap.type=xr,u.info.autoReset=!1,Bt(u),{canvas:o,renderer:u,lease:null}}async function Wr(r){const e=pt(r.source,r.id);if(e)return e;let s=r.url,o=r.format??"gltf",c=r.includes;if(!s){const u=(await ft(r.source,r.id))[0];if(!u)return j.error(`No downloadable files for ${r.name}.`,"asset"),null;s=u.url,o=u.format,c=u.includes}const a={source:r.source,id:r.id,name:r.name,url:s,format:o};c&&(a.includes=c);const m=await yr(a);return m.ok&&m.path?`/${m.path}`:(j.error(`Could not download ${r.name}.`,"asset"),null)}function Nr(r){if(r.isCamera)return r;const e=Fe(r,"_camera");return e?.isCamera?e:null}function _r(r){const e=r;if(e.isPerspectiveCamera)return`${e.fov.toFixed(0)}° perspective`;const s=r;return s.isOrthographicCamera?`Orthographic · ${s.zoom.toFixed(2)}×`:r.type}function Dr(r,e){const s=r.transforms;if(!s)return{canAuthorPose:!1,poseRefusal:"This camera has no transform authoring path."};const o=s.editability?.(e,"position")??{writable:!0},c=s.editability?.(e,"rotation")??{writable:!0};return o.writable&&c.writable?{canAuthorPose:!0}:{canAuthorPose:!1,poseRefusal:o.reason??c.reason??"This camera pose is read-only."}}function Qr(r,e,s){const o=e.get(s)??null;if(!o)return null;const c=Nr(o);return c?{id:s,name:o.name||c.name||"Camera",camera:c,lens:_r(c),...Dr(r,s)}:null}function $r(r){const e=new Map;for(const[s,o]of r.objectMap){const c=Fe(o,"tags");Array.isArray(c)&&c.length>0&&e.set(s,c)}return e}function Gr(r){const{store:e,documentId:s,container:o,canvas:c,renderer:a,stats:m}=r,u=new Jt(a),E=qt(),O=new Xt,g=$t(),L=Tr(a.getContext()),ze=t=>{g.enabled&&L.begin();try{t()}finally{L.end()}},We=()=>g.enabled?L.poll():null,Ne=ut({id:s,label:"Scene viewport",kind:"scene",profiler:g}),b=new Cr,re=11184810;let B=Ce(c).background??re;b.background=new ee(B);const _e=xe(c,()=>{const t=Ce(c).background??re,l=b.background;l instanceof ee&&l.getHex()===B&&(b.background=new ee(t)),B=t});e.bindScene(b,a);const n=new lr(c,b,e,o,{renderer:a,onlineAssetResolver:Wr,onProjectionChange:ur}),De=n.bindPresentation(s,"world");e.bindScene(b,a,n.batchedRenderer,n.camera),e.setOrbitTarget(n.orbitControls.target);const H=new D,F=new D,ne=new D,oe=()=>{const t=n.renderCamera;t.getWorldPosition(H),n.cameraViewMode==="pilot"?F.copy(n.orbitControls.target):n.cameraViewMode?(t.getWorldDirection(ne),F.copy(H).add(ne.multiplyScalar(10))):F.copy(n.orbitControls.target);const l=t.fov;return{position:H,target:F,fov:typeof l=="number"?l:0}},k=Sr({scene:b,store:e,documentId:s,container:o,canvas:c,viewport:n,readVisibleCameraPose:oe});let se="",q=null,h=null,S=null,I=null;const ae=()=>{h&&fr(h,ke(a.domElement))},Qe=xe(a.domElement,ae),ie=()=>{if(!h)return;const t=x(e.shell),l=[...e.shell.selectedEntityIds].filter(d=>t.hierarchy.node(d)!==null).map(d=>Z(t,e.objectMap,d)).filter(d=>d!==null);hr(h,l);const p=h.selection.size>0;S&&(S.enabled=p,S.renderToScreen=p),I&&(I.renderToScreen=!p)};function T(){bt(e.shell),q?.(),q=null,h&&gr(a,h,S),h=null,S=null,I=null,Yt(u,a,e.scene??b,n.renderCamera,void 0,{basePixelRatio:Math.min(window.devicePixelRatio||1,2),objectMap:e.objectMap,entityTags:$r(e)}),h=pr({BlendFunction:er,KernelSize:tr,OutlineEffect:rr},a,e.scene??b,n.renderCamera,ke(a.domElement)),ae(),I=u.passes.at(-1)??null,S=new Zt(n.renderCamera,h),S.enabled=!1,u.addPass(S),ie();const t=e.adoptedImageConfig;t&&(q=Ut(or,a,t))}const ce=()=>{n.setProjection(mr().projection),e.setViewportCamera(n.freeCamera),T()},$e=dr(ce);ce();const X=t=>Qr(x(e.shell),e.objectMap,t);let v=null;const A=()=>{v&&(je(x(e.shell),v),v=null)},le=()=>{const t=U().view;t?.mode!=="pilot"||!t.subject.canAuthorPose||(v=t.subject.id,Pe(x(e.shell),v))},ue=()=>{if(!v||n.cameraViewMode!=="pilot")return;const t=X(v),l=x(e.shell),p=l.transforms;if(!t||!p)return;let d;try{d=p.get(v)}catch(w){j.error(w instanceof Error?w.message:String(w),"camera-authoring"),A();return}Ee(l,v,{position:t.camera.position.toArray(),rotation:t.camera.quaternion.toArray(),scale:d.scale}),e.shell.notifyIngestEdit()};n.orbitControls.addEventListener("start",le),n.orbitControls.addEventListener("change",ue),n.orbitControls.addEventListener("end",A);const Ge=Qt({active:()=>e.shell.playState==="stopped"&&e.shell.activeViewportTab==="edit",selected:()=>{const t=e.shell.selectedEntityId;return t?X(t):null},resolve:X,showView:(t,l)=>{A(),n.setCameraView(t.camera,l),T(),k.reportCamera()},leaveView:()=>{A(),n.clearCameraView(),T(),k.reportCamera()},alignToViewport:t=>{const l=x(e.shell),p=l.transforms;if(!p||!t.canAuthorPose)return;const d=e.objectMap.get(t.id)??null;if(!d)return;const w=n.camera.getWorldPosition(new D),C=n.camera.getWorldQuaternion(new Re),y=w.clone(),R=C.clone();if(d.parent){d.parent.updateWorldMatrix(!0,!1),d.parent.worldToLocal(y);const M=d.parent.getWorldQuaternion(new Re);R.premultiply(M.invert())}let ye;try{ye=p.get(t.id)}catch(M){j.error(M instanceof Error?M.message:String(M),"camera-authoring");return}Pe(l,t.id),Ee(l,t.id,{position:y.toArray(),rotation:R.toArray(),scale:ye.scale}),e.shell.notifyIngestEdit(),je(l,t.id)},subscribe:e.shell.subscribe});let de=null;const me=()=>{const t=ht(e.shell);t!==de&&(de=t,c.style.opacity=t?"1":"0",o.style.backgroundColor=t?"":gt.surface.raised,o.style.backgroundImage=t?"":"linear-gradient(45deg, #444649 25%, transparent 25%, transparent 75%, #444649 75%), linear-gradient(45deg, #444649 25%, transparent 25%, transparent 75%, #444649 75%)",o.style.backgroundPosition=t?"":"0 0, 8px 8px",o.style.backgroundSize=t?"":"16px 16px")};me();let pe=e.composerVersion;const Ue=e.shell.subscribe(()=>{me();const t=e.scene;t&&t!==n.currentScene&&n.setScene(t),n.objectMap=e.objectMap,n.syncFromStore(),e.composerVersion!==pe?(pe=e.composerVersion,T()):ie()});let z=null;const K=new Vr({seedFromGameCamera:()=>{const t=z?.()??null;return!!t&&n.seedFromGameCamera(t)},frameContent:()=>n.focusOnScene()}),fe=()=>{K.cancel(),z=null};n.orbitControls.addEventListener("start",fe);const he=()=>Ir(n.camera,n.orbitControls.target);n.orbitControls.addEventListener("end",he);const Be=e.shell.onViewportAction(t=>{switch(t.type){case"focus-entity":{const l=Z(x(e.shell),e.objectMap,t.id);l&&n.focusOn(l);break}case"focus-scene":{{const l=Fr();if(l){n.camera.position.set(...l.position),n.orbitControls.target.set(...l.target),n.orbitControls.update();break}}z=e.sceneCameraLookup,K.begin(performance.now(),z!==null);break}case"focus-selection":{const l=x(e.shell),p=[...e.shell.selectedEntityIds].map(d=>Z(l,e.objectMap,d)).filter(d=>d!==null);n.focusOnMultiple(p);break}case"snap-selection-to-floor":n.snapSelectionToFloor();break;case"set-view-preset":n.setViewPreset(t.preset);break;case"step-view":n.stepView(t.step);break;case"frame-all":n.focusOnScene();break;case"zoom-view":n.zoomStep(t.direction);break;case"set-camera-pose":n.setPose(t.position,t.target,t.fov);break}});Lr();const ge=new ResizeObserver(()=>{const t=Math.max(1,o.clientWidth),l=Math.max(1,o.clientHeight);a.setSize(t,l),u.setSize(t,l),n.resize(t,l)});ge.observe(o);let W=performance.now(),N=!0,P=!1,be=!1;function ve(t){return Or(n.currentScene,()=>{E.render(a,n.currentScene,n.renderCamera),n.renderWithInfrastructure(()=>{vr(n.currentScene,()=>O.render(n.currentScene,e.shadingMode,()=>u.render(t),br)),n.renderViewCube(a),n.renderCameraPreview(a,U().preview?.camera??null,r.cameraPreview())})})}const He=ir(c,async()=>{if(P||!cr()||!o.checkVisibility({visibilityProperty:!0,checkVisibilityCSS:!0})||!ve(0))return null;const t=document.createElement("canvas");return t.width=c.width,t.height=c.height,t.getContext("2d").drawImage(c,0,0),t}),Y=()=>wt(e.shell)===e.shell;function qe(t,l){if(P)return;if(l&&(W=t),!o.checkVisibility({visibilityProperty:!0,checkVisibilityCSS:!0})){W=t,N=!0,n.resolvePresentation();return}g.beginFrame();const p=t-W,d=p/1e3;Y()&&(m.frameTime=p,m.fps=1e3/p),W=t,k.syncMarkers(d),K.tick(t),g.beginPhase(),n.update(d),r.runFrame(d),n.batchedRenderer.update(d),g.endPhase("editor"),g.beginPhase(),a.info.reset(),ze(()=>{ve(d)}),g.reportRender({gpuMs:We(),drawCalls:a.info.render.calls,triangles:a.info.render.triangles,geometries:a.info.memory.geometries,textures:a.info.memory.textures}),g.endPhase("render"),Y()&&(m.drawCalls=a.info.render.calls,m.triangles=a.info.render.triangles),N&&be&&(N=!1,vt(s)),g.endFrame();const w=oe(),C=w.position,y=w.target;Y()&&(m.cameraPosition.x=C.x,m.cameraPosition.y=C.y,m.cameraPosition.z=C.z,m.cameraTarget.x=y.x,m.cameraTarget.y=y.y,m.cameraTarget.z=y.z);const R=`${C.x},${C.y},${C.z},${y.x},${y.y},${y.z},${w.fov}`;R!==se&&(se=R,k.reportCamera())}n.objectMap=e.objectMap,n.syncFromStore(),T();let J,_;async function Xe(t){if(P)return;r.onMountStatus("mounting"),_?.(),_=void 0,J=t,r.onRootIds(t.childAdapters().filter(d=>d.role==="world"&&d.kind==="three").map(d=>d.worldId));const l=sr("three");if(P||J!==t)return;const p=l?await l.mountWorldRootSession({store:e,composite:t,renderer:a}):()=>{};if(P||J!==t){p();return}_=p,P||r.onMountStatus("ready")}const we=ar(e.shell,Xe);return we.ready.then(()=>dt(mt(e.shell))).catch(t=>{j.error(`Editor boot failed: ${t instanceof Error?t.message:String(t)}`,"scene"),r.onMountStatus("ready")}).finally(()=>{be=!0,N=!0}),{scene:b,viewport:n,frame:qe,present:t=>wr(e,t),setHelper:(t,l)=>n.setHelper(t,l),dispose:()=>{P=!0,Ne(),He(),ge.disconnect(),Ue(),Be(),Ge(),n.orbitControls.removeEventListener("start",le),n.orbitControls.removeEventListener("change",ue),n.orbitControls.removeEventListener("end",A),n.orbitControls.removeEventListener("start",fe),n.orbitControls.removeEventListener("end",he),we.dispose(),_?.(),k.dispose(),O.dispose(),L.dispose(),$e(),Qe(),_e(),De(),h?.selection.clear(),E.dispose(),u.dispose()}}}function Ur({store:r,rootIds:e,mountStatus:s}){f.useSyncExternalStore(r.shell.subscribe,r.shell.getSnapshot);const o=f.useSyncExternalStore(kt,Tt),c=f.useSyncExternalStore(At,Rt),a=r.scene?.background,m=a!==null&&!(a?.isColor===!0&&a.getHex()===11184810),u=f.useMemo(()=>!!(r.scene&&It(r.scene,{includeBackground:!1,ignoredLayer:Ke})),[r.scene,r.shell.contentVersion]),E=!!(r.scene&&(m||u)),O=Lt({surface:"Scene",rootIds:e,phase:s==="mounting"?"loading":"ready",content:E?"present":s==="mounting"?"unknown":"empty",readiness:o,failures:c});return i.jsx(Ft,{explanation:O,testId:"scene-viewport-status"})}function Br({store:r,documentId:e,cameraPreviewRef:s,mountStatus:o,rootIds:c}){f.useSyncExternalStore(r.shell.subscribe,r.shell.getShellSnapshot??r.shell.getSnapshot),f.useSyncExternalStore(Ct,xt),f.useSyncExternalStore(Mt,Vt),f.useSyncExternalStore(Pt,Et);const a=jt(r.shell,e,"document");return i.jsxs(i.Fragment,{children:[a.surface!==null?i.jsx(Ot,{}):null,a.surface==="three"?i.jsx(kr,{previewRef:s}):null,i.jsx(Ur,{store:r,rootIds:c,mountStatus:o})]})}const ko={mountWorldRootSurface:zr,installWorldRootStage:Gr,Overlays:Br};export{ko as worldRootStageBinding};
1
+ import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{EDITOR_LAYER as Ke}from"./editor-layers-ZGgcIXno.js";import{df as Oe,a7 as V,bN as Ye,aL as te,bw as $,aM as G,kI as Je,bM as Ze,bP as et,a6 as Q,g$ as tt,hF as rt,j_ as nt,kJ as ot,Z as j,K as st,ci as at,kK as Se,cx as it,kL as ct,kM as lt,kN as ut,kO as Ce,kP as xe,aD as x,cU as dt,kQ as mt,cq as pt,cv as ft,kR as Pe,kS as Ee,kT as je,kU as ht,al as gt,kV as bt,kW as ke,dI as vt,kX as wt,kY as yt,j3 as St,iV as Ct,iW as xt,gK as Pt,gL as Et,j1 as jt,g2 as kt,g3 as Tt,g4 as At,g5 as Rt}from"./index-CPCojg58.js";import{s as Mt,o as Vt}from"./object3d-document-session-registry-d0khadWE.js";import{R as Ot}from"./RootSelectionOverlay-NY-pG6TW.js";import{e as Lt,S as Ft}from"./surface-state-D5H35ZmU.js";import{r as f}from"./index-nmcBqr7Y.js";import{t as It}from"./surface-content-Dg9Kkazf.js";import"./index-CtzuWnCS.js";import{s as zt,d as Te,c as U,t as Wt,p as Le,v as Ae,b as Nt,e as _t,l as Dt,i as Qt}from"./camera-authoring-DYjhU5Zp.js";import{c as $t}from"./performance-profiler-CMbwGBuk.js";import{m as Gt}from"./renderer-ownership-BovSEcLv.js";import{applyWorldRendererConfig as Ut}from"./renderer-config-CaPR4dB_.js";import{getUserData as Fe}from"./user-data-CODoGZqA.js";import{detectKtx2Support as Bt}from"./loader-BTUKnX5Q.js";import{resolveRenderSettings as Ht}from"./render-settings-Bx9QGvwd.js";import{createSoftParticleDepthPass as qt}from"./soft-particle-depth-DNGwWJ8c.js";import{ViewportShadingRenderer as Xt}from"./viewport-shading-D9BMDb1N.js";import{applyRendererSettings as Kt,applySceneRenderPipeline as Yt}from"./setup-renderer-CX3K4YbA.js";import{EffectComposer as Jt,EffectPass as Zt,BlendFunction as er,KernelSize as tr,OutlineEffect as rr}from"./index-DHhMOs_s.js";import{W as nr,T as or}from"./three.module-BLhyNg0e.js";import{d as sr}from"./design-time-mount-registry-DUpXCg1U.js";import{a as ar}from"./project-authoring-session-oy5hBwns.js";import"./three-integration-BVRiaNfa.js";import{registerPresentedCanvasFrame as ir}from"./canvas-preview-frames-B8snlgkC.js";import{i as cr}from"./editor-presentation-activity-CqJH4G9t.js";import{E as lr,s as ur,a as dr,t as mr,b as pr,c as fr,d as hr,r as gr,i as br}from"./three-viewport-presentation-fek-MzPi.js";import{a as Z}from"./entity-object-BTMm2bY3.js";import{w as vr}from"./editor-shell-store-KRNd7FtA.js";import{p as wr}from"./viewport-root-presentation-C8DfKod7.js";import{d as yr}from"./asset-editor-persistence-R-OsGiGL.js";import{bindStagePresenceMarkers as Sr}from"./stage-presence-markers-CdwQPtfC.js";import{el as Cr,_ as ee,fo as D,d7 as xr,dp as Re}from"./three.core-3arARmh6.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./workspace-arrangement-BX83yYRw.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./eyedropper-session-bjPXnfeX.js";import"./layered-pick-F4Nppx6F.js";import"./root-stacking-BEd9ZvxC.js";import"./react-story-board-DGq9ptgS.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./inspect-CA5VRJZ1.js";import"./inference-diagnostics-Dh-QkkEe.js";import"./object-marks-BnvSuCTt.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./render-features-DOxvOOZ1.js";import"./matcap-texture-Dm2c-VQa.js";import"./defaults-DKiBJCPN.js";import"./edit-mode-authoring-BvPDax01.js";import"./host-hierarchy-objects-BV3WqU2w.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"./user-data-BkkB0ByQ.js";import"./model-thumbnail-BSDzS2s4.js";import"./studio-environment-BzV2N2t_.js";import"./three-state-B9nzv3ez.js";import"./hierarchy-marks-oIV0-4rJ.js";import"./component-instance-root-R39ACc0B.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-door-eEAtWKch.js";import"./content-bounds-6mX1FAkL.js";import"./asset-preview-4eaPPopc.js";import"./bitmap-label-Ct4k6ehY.js";import"./index-Cw146_cY.js";import"./standard-viewport-dressing-BtBF7Vbc.js";import"./clip-planes-CnAI6DZn.js";import"./three-BdFqc-uv.js";import"./model-inspection-CGHk38AF.js";import"./OrbitControls-B13MKuwC.js";import"./LineSegments2-DN9pUfWA.js";import"./three.quarks.esm-C_HmSKXo.js";import"./live-gesture-lock-DJbrjOqf.js";import"./scene-framing-BmfB9q_Z.js";import"./live-mixers-B-bwLZ7c.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./mounted-authoring-v7VlQXfv.js";import"./collaboration-presence-DVung7kb.js";function Pr({previewRef:r}){const{preview:e,previewPinned:s}=U(),[o,c]=f.useState(!1),a=f.useRef(null);if(f.useEffect(()=>{if(!o)return;const u=E=>{a.current?.contains(E.target)||c(!1)};return document.addEventListener("pointerdown",u),()=>document.removeEventListener("pointerdown",u)},[o]),!e)return null;const m=e.camera.isPerspectiveCamera&&Number.isFinite(e.camera.aspect)?e.camera.aspect:16/9;return i.jsxs("div",{className:"volter-camera-preview","data-testid":"camera-preview",children:[i.jsxs(Oe,{className:"volter-camera-preview-header",gap:4,align:"center",children:[i.jsx(V,{icon:Ye,size:"sm"}),i.jsx(te,{variant:"label",truncate:!0,className:"volter-camera-preview-title",title:`${e.name} · ${e.lens}`,children:e.name}),i.jsx($,{text:s?"Unpin camera preview":"Pin camera preview",children:i.jsx(G,{"aria-label":s?"Unpin camera preview":"Pin camera preview","aria-pressed":s,size:"compact",onClick:Wt,children:i.jsx(V,{icon:Je,size:"sm"})})}),i.jsxs("div",{ref:a,className:"volter-camera-preview-menu-anchor",children:[i.jsx($,{text:"Camera actions",children:i.jsx(G,{"aria-label":"Camera actions","aria-expanded":o,size:"compact",onClick:()=>c(u=>!u),children:i.jsx(V,{icon:Ze,size:"sm"})})}),o?i.jsxs(et,{className:"volter-camera-preview-menu",children:[i.jsx(Q,{variant:"ghost",size:"compact",disabled:!e.canAuthorPose,title:e.poseRefusal,onClick:()=>{c(!1),Le(e)},children:"Pilot Camera"}),i.jsx(Q,{variant:"ghost",size:"compact",onClick:()=>{c(!1),Ae(e)},children:"View Through Camera"}),i.jsx(Q,{variant:"ghost",size:"compact",disabled:!e.canAuthorPose,title:e.poseRefusal,onClick:()=>{c(!1),Nt(e)},children:"Align Camera to Current View"})]}):null]})]}),i.jsx("div",{ref:r,className:"volter-camera-preview-image",style:{aspectRatio:String(Math.max(.5,Math.min(3,m)))},role:"img","aria-label":`Live view through ${e.name}`,onDoubleClick:()=>Ae(e)})]})}function Er(){return i.jsxs("div",{className:"volter-camera-guides","aria-hidden":"true",children:[i.jsx("div",{className:"volter-camera-guide volter-camera-guide-v1"}),i.jsx("div",{className:"volter-camera-guide volter-camera-guide-v2"}),i.jsx("div",{className:"volter-camera-guide volter-camera-guide-h1"}),i.jsx("div",{className:"volter-camera-guide volter-camera-guide-h2"}),i.jsx("div",{className:"volter-camera-safe-frame"}),i.jsx("div",{className:"volter-camera-center-mark"})]})}function jr(){const{view:r,guidesVisible:e}=U();if(!r)return null;const s=r.mode==="pilot";return i.jsxs(i.Fragment,{children:[e?i.jsx(Er,{}):null,i.jsx(tt,{variant:"overlay",border:!0,className:"volter-camera-view-banner volter-chrome-island volter-glass-island","data-testid":"camera-view-banner",children:i.jsxs(Oe,{gap:6,align:"center",children:[i.jsx(rt,{children:s?"PILOTING":"CAMERA VIEW"}),i.jsx(te,{variant:"label",children:r.subject.name}),i.jsx(te,{variant:"caption",tone:"muted",children:"Exact camera view"}),i.jsx($,{text:e?"Hide composition guides":"Show composition guides",children:i.jsx(G,{"aria-label":e?"Hide composition guides":"Show composition guides","aria-pressed":e,size:"compact",onClick:_t,children:i.jsx(V,{icon:nt,size:"sm"})})}),s?null:i.jsx(Q,{size:"compact",variant:"primary",disabled:!r.subject.canAuthorPose,title:r.subject.poseRefusal,onClick:()=>Le(r.subject),children:"Pilot"}),i.jsx($,{text:"Exit camera view",children:i.jsx(G,{"aria-label":"Exit camera view",size:"compact",onClick:Dt,children:i.jsx(V,{icon:ot,size:"sm"})})})]})})]})}function kr({previewRef:r}){return f.useSyncExternalStore(zt,Te,Te),i.jsxs(i.Fragment,{children:[i.jsx(Pr,{previewRef:r}),i.jsx(jr,{})]})}function Tr(r){const e=r,s=e.getExtension("EXT_disjoint_timer_query_webgl2"),o=s!==null&&typeof e.createQuery=="function",c=[];let a=null,m=null;return{begin(){!o||a||(a=e.createQuery(),a&&e.beginQuery(s.TIME_ELAPSED_EXT,a))},end(){!o||!a||(e.endQuery(s.TIME_ELAPSED_EXT),c.push(a),a=null)},poll(){if(!o)return null;if(e.getParameter(s.GPU_DISJOINT_EXT)){for(const u of c.splice(0))e.deleteQuery(u);return null}for(;c.length>0;){const u=c[0];if(!e.getQueryParameter(u,e.QUERY_RESULT_AVAILABLE))break;c.shift(),m=e.getQueryParameter(u,e.QUERY_RESULT)/1e6,e.deleteQuery(u)}return m},dispose(){a&&(e.endQuery(s.TIME_ELAPSED_EXT),e.deleteQuery(a),a=null);for(const u of c.splice(0))e.deleteQuery(u)}}}const Ar=2e4,Rr=250,Mr=5e3;class Vr{#e=0;#t=0;#r=0;#n;constructor(e){this.#n=e}get pending(){return this.#e>0||this.#t>0}begin(e,s){this.#e=e+Ar,this.#t=s?e+Mr:0,this.#r=0,this.tick(e)}tick(e){if(!(!this.pending||e<this.#r)){if(this.#r=e+Rr,this.#t>0&&this.#n.seedFromGameCamera()){this.cancel();return}this.#e>0&&this.#n.frameContent()&&(this.#e=0),e>=this.#e&&(this.#e=0),e>=this.#t&&(this.#t=0)}}cancel(){this.#e=0,this.#t=0}}const Me=new WeakMap;function Or(r,e){if(!r)return e(),!0;if(Me.has(r))return!1;try{return e(),!0}catch(s){const o=s instanceof Error?s.message:String(s);return Me.set(r,o),j.warn(`The Scene view cannot draw this world with the editor's own renderer, and has stopped trying: ${o}. This world was built by a copy of three the editor did not make (a vendored bundle pins its own revision), and the editor draws it with ITS three — across a wide enough revision gap the two disagree about the renderer/material contract. The game itself is unaffected and still drawing: its own canvas is what the Game tab and ${st("screenshot")} show, and hierarchy, selection and inspection all still read the live world. It closes when the game resolves \`three\` to the host's instance — a bare, un-rewritten \`import 'three'\` in its own source.`,"ingest"),!1}}function Lr(){const r=at();r.addEventListener("server-log",s=>{try{Se(JSON.parse(s.data))}catch{}});let e=!1;return(async()=>{try{const s=await it();if(e)return;for(const o of s)Se(o)}catch{}})(),()=>{e=!0,r.close()}}const Ie="viewportPose";function Fr(){const r=ct(Ie);return r&&Array.isArray(r.position)&&r.position.length===3&&r.position.every(Number.isFinite)&&Array.isArray(r.target)&&r.target.length===3&&r.target.every(Number.isFinite)?r:null}function Ir(r,e){lt(Ie,{position:[r.position.x,r.position.y,r.position.z],target:[e.x,e.y,e.z]})}const Ve={id:"world",title:"World",lights:[{color:"#ffffff",intensity:1,direction:[-10,-20,-10],space:"world"}],ambient:{color:"#ffffff",intensity:.5},environmentIntensity:0};yt(Ve),St("world",{all:{lighting:{source:"studio",studioPreset:Ve.id,auto:{takeover:["light"],overridable:!0}}}});function zr(r,e,s){const o=document.createElement("canvas");o.setAttribute("aria-label",`${s} authoring viewport`),o.setAttribute("data-testid","editor-canvas"),o.setAttribute("aria-hidden","true"),o.tabIndex=-1,o.style.width="100%",o.style.height="100%",o.style.display="block",o.style.pointerEvents="auto",r.appendChild(o);const c=Math.max(1,e.clientWidth),a=Math.max(1,e.clientHeight),m=Math.min(window.devicePixelRatio||1,2);o.width=Math.ceil(c*m),o.height=Math.ceil(a*m);const u=Gt(new nr({canvas:o,antialias:!!Ht(void 0).antialias,powerPreference:"high-performance"}));return Kt(u,void 0,m),u.setSize(c,a),u.shadowMap.type=xr,u.info.autoReset=!1,Bt(u),{canvas:o,renderer:u,lease:null}}async function Wr(r){const e=pt(r.source,r.id);if(e)return e;let s=r.url,o=r.format??"gltf",c=r.includes;if(!s){const u=(await ft(r.source,r.id))[0];if(!u)return j.error(`No downloadable files for ${r.name}.`,"asset"),null;s=u.url,o=u.format,c=u.includes}const a={source:r.source,id:r.id,name:r.name,url:s,format:o};c&&(a.includes=c);const m=await yr(a);return m.ok&&m.path?`/${m.path}`:(j.error(`Could not download ${r.name}.`,"asset"),null)}function Nr(r){if(r.isCamera)return r;const e=Fe(r,"_camera");return e?.isCamera?e:null}function _r(r){const e=r;if(e.isPerspectiveCamera)return`${e.fov.toFixed(0)}° perspective`;const s=r;return s.isOrthographicCamera?`Orthographic · ${s.zoom.toFixed(2)}×`:r.type}function Dr(r,e){const s=r.transforms;if(!s)return{canAuthorPose:!1,poseRefusal:"This camera has no transform authoring path."};const o=s.editability?.(e,"position")??{writable:!0},c=s.editability?.(e,"rotation")??{writable:!0};return o.writable&&c.writable?{canAuthorPose:!0}:{canAuthorPose:!1,poseRefusal:o.reason??c.reason??"This camera pose is read-only."}}function Qr(r,e,s){const o=e.get(s)??null;if(!o)return null;const c=Nr(o);return c?{id:s,name:o.name||c.name||"Camera",camera:c,lens:_r(c),...Dr(r,s)}:null}function $r(r){const e=new Map;for(const[s,o]of r.objectMap){const c=Fe(o,"tags");Array.isArray(c)&&c.length>0&&e.set(s,c)}return e}function Gr(r){const{store:e,documentId:s,container:o,canvas:c,renderer:a,stats:m}=r,u=new Jt(a),E=qt(),O=new Xt,g=$t(),L=Tr(a.getContext()),ze=t=>{g.enabled&&L.begin();try{t()}finally{L.end()}},We=()=>g.enabled?L.poll():null,Ne=ut({id:s,label:"Scene viewport",kind:"scene",profiler:g}),b=new Cr,re=11184810;let B=Ce(c).background??re;b.background=new ee(B);const _e=xe(c,()=>{const t=Ce(c).background??re,l=b.background;l instanceof ee&&l.getHex()===B&&(b.background=new ee(t)),B=t});e.bindScene(b,a);const n=new lr(c,b,e,o,{renderer:a,onlineAssetResolver:Wr,onProjectionChange:ur}),De=n.bindPresentation(s,"world");e.bindScene(b,a,n.batchedRenderer,n.camera),e.setOrbitTarget(n.orbitControls.target);const H=new D,F=new D,ne=new D,oe=()=>{const t=n.renderCamera;t.getWorldPosition(H),n.cameraViewMode==="pilot"?F.copy(n.orbitControls.target):n.cameraViewMode?(t.getWorldDirection(ne),F.copy(H).add(ne.multiplyScalar(10))):F.copy(n.orbitControls.target);const l=t.fov;return{position:H,target:F,fov:typeof l=="number"?l:0}},k=Sr({scene:b,store:e,documentId:s,container:o,canvas:c,viewport:n,readVisibleCameraPose:oe});let se="",q=null,h=null,S=null,I=null;const ae=()=>{h&&fr(h,ke(a.domElement))},Qe=xe(a.domElement,ae),ie=()=>{if(!h)return;const t=x(e.shell),l=[...e.shell.selectedEntityIds].filter(d=>t.hierarchy.node(d)!==null).map(d=>Z(t,e.objectMap,d)).filter(d=>d!==null);hr(h,l);const p=h.selection.size>0;S&&(S.enabled=p,S.renderToScreen=p),I&&(I.renderToScreen=!p)};function T(){bt(e.shell),q?.(),q=null,h&&gr(a,h,S),h=null,S=null,I=null,Yt(u,a,e.scene??b,n.renderCamera,void 0,{basePixelRatio:Math.min(window.devicePixelRatio||1,2),objectMap:e.objectMap,entityTags:$r(e)}),h=pr({BlendFunction:er,KernelSize:tr,OutlineEffect:rr},a,e.scene??b,n.renderCamera,ke(a.domElement)),ae(),I=u.passes.at(-1)??null,S=new Zt(n.renderCamera,h),S.enabled=!1,u.addPass(S),ie();const t=e.adoptedImageConfig;t&&(q=Ut(or,a,t))}const ce=()=>{n.setProjection(mr().projection),e.setViewportCamera(n.freeCamera),T()},$e=dr(ce);ce();const X=t=>Qr(x(e.shell),e.objectMap,t);let v=null;const A=()=>{v&&(je(x(e.shell),v),v=null)},le=()=>{const t=U().view;t?.mode!=="pilot"||!t.subject.canAuthorPose||(v=t.subject.id,Pe(x(e.shell),v))},ue=()=>{if(!v||n.cameraViewMode!=="pilot")return;const t=X(v),l=x(e.shell),p=l.transforms;if(!t||!p)return;let d;try{d=p.get(v)}catch(w){j.error(w instanceof Error?w.message:String(w),"camera-authoring"),A();return}Ee(l,v,{position:t.camera.position.toArray(),rotation:t.camera.quaternion.toArray(),scale:d.scale}),e.shell.notifyIngestEdit()};n.orbitControls.addEventListener("start",le),n.orbitControls.addEventListener("change",ue),n.orbitControls.addEventListener("end",A);const Ge=Qt({active:()=>e.shell.playState==="stopped"&&e.shell.activeViewportTab==="edit",selected:()=>{const t=e.shell.selectedEntityId;return t?X(t):null},resolve:X,showView:(t,l)=>{A(),n.setCameraView(t.camera,l),T(),k.reportCamera()},leaveView:()=>{A(),n.clearCameraView(),T(),k.reportCamera()},alignToViewport:t=>{const l=x(e.shell),p=l.transforms;if(!p||!t.canAuthorPose)return;const d=e.objectMap.get(t.id)??null;if(!d)return;const w=n.camera.getWorldPosition(new D),C=n.camera.getWorldQuaternion(new Re),y=w.clone(),R=C.clone();if(d.parent){d.parent.updateWorldMatrix(!0,!1),d.parent.worldToLocal(y);const M=d.parent.getWorldQuaternion(new Re);R.premultiply(M.invert())}let ye;try{ye=p.get(t.id)}catch(M){j.error(M instanceof Error?M.message:String(M),"camera-authoring");return}Pe(l,t.id),Ee(l,t.id,{position:y.toArray(),rotation:R.toArray(),scale:ye.scale}),e.shell.notifyIngestEdit(),je(l,t.id)},subscribe:e.shell.subscribe});let de=null;const me=()=>{const t=ht(e.shell);t!==de&&(de=t,c.style.opacity=t?"1":"0",o.style.backgroundColor=t?"":gt.surface.raised,o.style.backgroundImage=t?"":"linear-gradient(45deg, #444649 25%, transparent 25%, transparent 75%, #444649 75%), linear-gradient(45deg, #444649 25%, transparent 25%, transparent 75%, #444649 75%)",o.style.backgroundPosition=t?"":"0 0, 8px 8px",o.style.backgroundSize=t?"":"16px 16px")};me();let pe=e.composerVersion;const Ue=e.shell.subscribe(()=>{me();const t=e.scene;t&&t!==n.currentScene&&n.setScene(t),n.objectMap=e.objectMap,n.syncFromStore(),e.composerVersion!==pe?(pe=e.composerVersion,T()):ie()});let z=null;const K=new Vr({seedFromGameCamera:()=>{const t=z?.()??null;return!!t&&n.seedFromGameCamera(t)},frameContent:()=>n.focusOnScene()}),fe=()=>{K.cancel(),z=null};n.orbitControls.addEventListener("start",fe);const he=()=>Ir(n.camera,n.orbitControls.target);n.orbitControls.addEventListener("end",he);const Be=e.shell.onViewportAction(t=>{switch(t.type){case"focus-entity":{const l=Z(x(e.shell),e.objectMap,t.id);l&&n.focusOn(l);break}case"focus-scene":{{const l=Fr();if(l){n.camera.position.set(...l.position),n.orbitControls.target.set(...l.target),n.orbitControls.update();break}}z=e.sceneCameraLookup,K.begin(performance.now(),z!==null);break}case"focus-selection":{const l=x(e.shell),p=[...e.shell.selectedEntityIds].map(d=>Z(l,e.objectMap,d)).filter(d=>d!==null);n.focusOnMultiple(p);break}case"snap-selection-to-floor":n.snapSelectionToFloor();break;case"set-view-preset":n.setViewPreset(t.preset);break;case"step-view":n.stepView(t.step);break;case"frame-all":n.focusOnScene();break;case"zoom-view":n.zoomStep(t.direction);break;case"set-camera-pose":n.setPose(t.position,t.target,t.fov);break}});Lr();const ge=new ResizeObserver(()=>{const t=Math.max(1,o.clientWidth),l=Math.max(1,o.clientHeight);a.setSize(t,l),u.setSize(t,l),n.resize(t,l)});ge.observe(o);let W=performance.now(),N=!0,P=!1,be=!1;function ve(t){return Or(n.currentScene,()=>{E.render(a,n.currentScene,n.renderCamera),n.renderWithInfrastructure(()=>{vr(n.currentScene,()=>O.render(n.currentScene,e.shadingMode,()=>u.render(t),br)),n.renderViewCube(a),n.renderCameraPreview(a,U().preview?.camera??null,r.cameraPreview())})})}const He=ir(c,async()=>{if(P||!cr()||!o.checkVisibility({visibilityProperty:!0,checkVisibilityCSS:!0})||!ve(0))return null;const t=document.createElement("canvas");return t.width=c.width,t.height=c.height,t.getContext("2d").drawImage(c,0,0),t}),Y=()=>wt(e.shell)===e.shell;function qe(t,l){if(P)return;if(l&&(W=t),!o.checkVisibility({visibilityProperty:!0,checkVisibilityCSS:!0})){W=t,N=!0,n.resolvePresentation();return}g.beginFrame();const p=t-W,d=p/1e3;Y()&&(m.frameTime=p,m.fps=1e3/p),W=t,k.syncMarkers(d),K.tick(t),g.beginPhase(),n.update(d),r.runFrame(d),n.batchedRenderer.update(d),g.endPhase("editor"),g.beginPhase(),a.info.reset(),ze(()=>{ve(d)}),g.reportRender({gpuMs:We(),drawCalls:a.info.render.calls,triangles:a.info.render.triangles,geometries:a.info.memory.geometries,textures:a.info.memory.textures}),g.endPhase("render"),Y()&&(m.drawCalls=a.info.render.calls,m.triangles=a.info.render.triangles),N&&be&&(N=!1,vt(s)),g.endFrame();const w=oe(),C=w.position,y=w.target;Y()&&(m.cameraPosition.x=C.x,m.cameraPosition.y=C.y,m.cameraPosition.z=C.z,m.cameraTarget.x=y.x,m.cameraTarget.y=y.y,m.cameraTarget.z=y.z);const R=`${C.x},${C.y},${C.z},${y.x},${y.y},${y.z},${w.fov}`;R!==se&&(se=R,k.reportCamera())}n.objectMap=e.objectMap,n.syncFromStore(),T();let J,_;async function Xe(t){if(P)return;r.onMountStatus("mounting"),_?.(),_=void 0,J=t,r.onRootIds(t.childAdapters().filter(d=>d.role==="world"&&d.kind==="three").map(d=>d.worldId));const l=sr("three");if(P||J!==t)return;const p=l?await l.mountWorldRootSession({store:e,composite:t,renderer:a}):()=>{};if(P||J!==t){p();return}_=p,P||r.onMountStatus("ready")}const we=ar(e.shell,Xe);return we.ready.then(()=>dt(mt(e.shell))).catch(t=>{j.error(`Editor boot failed: ${t instanceof Error?t.message:String(t)}`,"scene"),r.onMountStatus("ready")}).finally(()=>{be=!0,N=!0}),{scene:b,viewport:n,frame:qe,present:t=>wr(e,t),setHelper:(t,l)=>n.setHelper(t,l),dispose:()=>{P=!0,Ne(),He(),ge.disconnect(),Ue(),Be(),Ge(),n.orbitControls.removeEventListener("start",le),n.orbitControls.removeEventListener("change",ue),n.orbitControls.removeEventListener("end",A),n.orbitControls.removeEventListener("start",fe),n.orbitControls.removeEventListener("end",he),we.dispose(),_?.(),k.dispose(),O.dispose(),L.dispose(),$e(),Qe(),_e(),De(),h?.selection.clear(),E.dispose(),u.dispose()}}}function Ur({store:r,rootIds:e,mountStatus:s}){f.useSyncExternalStore(r.shell.subscribe,r.shell.getSnapshot);const o=f.useSyncExternalStore(kt,Tt),c=f.useSyncExternalStore(At,Rt),a=r.scene?.background,m=a!==null&&!(a?.isColor===!0&&a.getHex()===11184810),u=f.useMemo(()=>!!(r.scene&&It(r.scene,{includeBackground:!1,ignoredLayer:Ke})),[r.scene,r.shell.contentVersion]),E=!!(r.scene&&(m||u)),O=Lt({surface:"Scene",rootIds:e,phase:s==="mounting"?"loading":"ready",content:E?"present":s==="mounting"?"unknown":"empty",readiness:o,failures:c});return i.jsx(Ft,{explanation:O,testId:"scene-viewport-status"})}function Br({store:r,documentId:e,cameraPreviewRef:s,mountStatus:o,rootIds:c}){f.useSyncExternalStore(r.shell.subscribe,r.shell.getShellSnapshot??r.shell.getSnapshot),f.useSyncExternalStore(Ct,xt),f.useSyncExternalStore(Mt,Vt),f.useSyncExternalStore(Pt,Et);const a=jt(r.shell,e,"document");return i.jsxs(i.Fragment,{children:[a.surface!==null?i.jsx(Ot,{}):null,a.surface==="three"?i.jsx(kr,{previewRef:s}):null,i.jsx(Ur,{store:r,rootIds:c,mountStatus:o})]})}const ko={mountWorldRootSurface:zr,installWorldRootStage:Gr,Overlays:Br};export{ko as worldRootStageBinding};
@@ -1 +1 @@
1
- import{collectMachineAnimationMeta as V,clipNamesOf as L,isBlendTreeAnimationMeta as S,asBlendTreeDef as z}from"./xstate-animation-meta-CvDlYgrt.js";import{cW as J,p as Z,c as _,cQ as ee,l as te,dk as ne,cf as ie,cd as oe}from"./three.core-3arARmh6.js";import"./index-C5tasxXb.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";class M extends Error{constructor(i,c){super(i),this.stateId=c,this.name="AnimationBindingError"}}function ae(n){const i=n.logic;if(i?.root)return i;const c=n.getSnapshot();if(c?.machine?.root)return c.machine;throw new M("[bindXStateAnimation] the actor exposes no state machine — only a state-machine actor carries the `meta.animation` this binder reads")}const W=n=>n.layer??"base",B=n=>n.weight??1,I=n=>n.blendMode??"override";function T(n){try{return ne.parseTrackName(n.name).nodeName??""}catch{const i=n.name.indexOf(".");return i<0?n.name:n.name.slice(0,i)}}function C(n,i,c){const o=new Set,l=[];for(const f of i){let u=!1;n.traverse(m=>{m.name===f&&(u=!0,m.traverse(d=>{d.name&&o.add(d.name)}))}),c.has(f)&&(u=!0,o.add(f)),u||l.push(f)}return{names:o,missing:l}}function se(n,i,c,o){const l=new Set(n.tracks.map(T)),f=i.include?C(c,i.include,l):void 0,u=i.exclude?C(c,i.exclude,l):void 0,m=[...f?.missing??[],...u?.missing??[]];if(m.length)throw new M(`[bindXStateAnimation] state "${o}" boneMask names unknown bones/objects: ${m.join(", ")}`,o);const d=n.tracks.filter(p=>{const w=T(p);return(!f||f.names.has(w))&&!u?.names.has(w)});if(d.length===0)throw new M(`[bindXStateAnimation] state "${o}" boneMask removes every track from clip "${n.name}"`,o);return new te(n.name,n.duration,d.map(p=>p.clone()))}function re(n){return n.reduce((i,c)=>c.weight>i.weight?c:i,n[0])}function Se(n,i,c,o={}){const l=i.getRoot(),f=o.root??(l instanceof J?l:void 0);if(!f)throw new M("[bindXStateAnimation] a THREE.Object3D `root` option is required when the mixer uses AnimationObjectGroup");const u=ae(n).root,m=V(u),d=new Map(m.map(t=>[t.stateId,t.meta]));for(const t of m)for(const e of L(t.meta))if(!c.has(e))throw new M(`[bindXStateAnimation] state "${t.stateId}" references clip "${e}", which is not present in the supplied clips map. Known clips: ${[...c.keys()].join(", ")||"(none)"}`,t.stateId);const p=new Map;function w(t,e,s){return W(e)!=="base"||!!e.boneMask||I(e)==="additive"?`${t}\0${s}`:s}for(const{stateId:t,meta:e}of m)for(const s of L(e)){const a=w(t,e,s);if(p.has(a))continue;const r=c.get(s);let h=e.boneMask?se(r,e.boneMask,f,t):r;(h!==r||a!==s)&&(h===r&&(h=r.clone()),h.name=`${r.name}@${W(e)}:${t}`),I(e)==="additive"?(Z.makeClipAdditive(h),h.blendMode=_):h.blendMode=ee,p.set(a,h)}const g=new Map;function K(t,e,s,a){let r=g.get(t);if(!r){const h=p.get(t);if(!h)throw new M(`[bindXStateAnimation] prepared clip "${t}" not found`);const v=i.clipAction(h);v.setEffectiveWeight(0),v.play(),r={action:v,clip:h},g.set(t,r)}return r.action.setLoop(e?ie:oe,1/0),r.action.clampWhenFinished=!e,r.action.timeScale=s,r.action.weight=a,r.action}function N(t){const e=o.selectParameters?o.selectParameters(t):t;return new Map(Object.entries(e??{}))}function D(t,e,s){return(S(e)?ce(z(e.blendTree),N(s)):[{clip:e.clip,weight:1}]).map(({clip:r,weight:h})=>({clip:r,weight:h,actionKey:w(t,e,r)}))}const y=new Map;let O=!1;function R(t,e,s){for(const a of t){if(a.actionKey===e)continue;const r=g.get(a.actionKey)?.action;r&&(s>0?r.fadeOut(s):r.setEffectiveWeight(0))}}function k(t,e){if(!S(t.meta))return;t.natural=D(t.stateId,t.meta,e);const s=B(t.meta);for(const a of t.natural)g.get(a.actionKey)?.action.setEffectiveWeight(a.weight*s)}function P(t,e,s){const a=W(e),r=y.get(a)??null,h=D(t,e,s),v=re(h),H=S(e)?!0:e.loop,Q=S(e)?1:e.speed,x=B(e);for(const b of h)K(b.actionKey,H,Q,x);const $=g.get(v.actionKey).action;$.reset().setEffectiveWeight(x);for(const b of h)b.actionKey!==v.actionKey&&g.get(b.actionKey).action.reset().setEffectiveWeight(0);const A=e.crossfade?.duration??0,U=e.crossfade?.warp??!1;if(!r)A>0&&$.fadeIn(A);else{R(r.natural,r.dominantActionKey,A);const b=g.get(r.dominantActionKey)?.action;b&&A>0?b.crossFadeTo($,A,U):(b?.setEffectiveWeight(0),$.setEffectiveWeight(x))}const j={layer:a,stateId:t,meta:e,natural:h,dominantActionKey:v.actionKey,crossfadeRemaining:A};y.set(a,j),S(e)&&A<=0&&k(j,s)}function q(t){return Object.keys(t.getMeta()).filter(e=>d.has(e))}function X(t){const e=new Map;for(const s of q(t)){const a=d.get(s),r=W(a),h=e.get(r);if(h)throw new M(`[bindXStateAnimation] animated states "${h}" and "${s}" are both active on layer "${r}". Give parallel regions distinct meta.animation.layer names.`,s);e.set(r,s)}for(const[s,a]of y)e.has(s)||(R(a.natural,void 0,0),y.delete(s));for(const[s,a]of e)y.get(s)?.stateId!==a&&P(a,d.get(a),t.context)}const F=n.getSnapshot();X(F);const G=n.subscribe(t=>{O||X(t)});function E(t){if(O)return;const e=t,s=n.getSnapshot().context;for(const a of y.values())a.crossfadeRemaining>0?(a.crossfadeRemaining=Math.max(0,a.crossfadeRemaining-e),a.crossfadeRemaining<=0&&k(a,s)):k(a,s);i.update(e)}const Y={tick:E,actor:n,getParameters:()=>N(n.getSnapshot().context),getActiveLayers:()=>[...y.values()].map(t=>({layer:t.layer,stateId:t.stateId,clips:t.natural.map(e=>e.clip),clipWeights:t.natural.map(e=>({clip:e.clip,weight:g.get(e.actionKey)?.action.getEffectiveWeight()??0})),weight:B(t.meta),blendMode:I(t.meta),...t.meta.boneMask?{boneMask:t.meta.boneMask}:{}})),dispose(){if(!O){O=!0,o.systems?.remove("animation",E),G.unsubscribe();for(const{action:t,clip:e}of g.values())t.stop(),i.uncacheAction(e,t.getRoot());g.clear(),y.clear()}}};return o.systems?.add("animation",E),Y}function ce(n,i){switch(n.type){case"1D":return le(n,i);case"2D":return fe(n,i);case"direct":return de(n);default:return n.children.map(c=>({clip:c.clip,weight:1/n.children.length}))}}function le(n,i){const c=Number(i.get(n.parameter)??0),o=[...n.children].sort((f,u)=>f.threshold-u.threshold),l=o.map(f=>({clip:f.clip,weight:0}));if(o.length===0)return l;if(o.length===1||c<=o[0].threshold)return l[0].weight=1,l;if(c>=o[o.length-1].threshold)return l[l.length-1].weight=1,l;for(let f=0;f<o.length-1;f++){const u=o[f],m=o[f+1];if(c>=u.threshold&&c<=m.threshold){const d=m.threshold-u.threshold,p=d>0?(c-u.threshold)/d:0;return l[f].weight=1-p,l[f+1].weight=p,l}}return l}function fe(n,i){const c=Number(i.get(n.parameter)??0),o=Number(i.get(n.parameterY??"")??0),l=n.children,f=l.map(d=>({clip:d.clip,weight:0}));let u=0;const m=[];for(const d of l){const p=c-d.threshold,w=o-(d.thresholdY??0),g=Math.sqrt(p*p+w*w),K=g<.001?1e3:1/g;m.push(K),u+=K}if(u>0)for(let d=0;d<f.length;d++)f[d].weight=m[d]/u;return f}function de(n){const i=n.children.map(o=>({clip:o.clip,weight:o.weight??0})),c=i.reduce((o,l)=>o+l.weight,0);if(c>0)for(const o of i)o.weight/=c;return i}export{M as AnimationBindingError,Se as bindXStateAnimation,ce as evaluateBlendTree,ae as machineOfXStateActor};
1
+ import{collectMachineAnimationMeta as V,clipNamesOf as L,isBlendTreeAnimationMeta as S,asBlendTreeDef as z}from"./xstate-animation-meta-BvCgna0q.js";import{cW as J,p as Z,c as _,cQ as ee,l as te,dk as ne,cf as ie,cd as oe}from"./three.core-3arARmh6.js";import"./index-CPCojg58.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";class M extends Error{constructor(i,c){super(i),this.stateId=c,this.name="AnimationBindingError"}}function ae(n){const i=n.logic;if(i?.root)return i;const c=n.getSnapshot();if(c?.machine?.root)return c.machine;throw new M("[bindXStateAnimation] the actor exposes no state machine — only a state-machine actor carries the `meta.animation` this binder reads")}const W=n=>n.layer??"base",B=n=>n.weight??1,I=n=>n.blendMode??"override";function T(n){try{return ne.parseTrackName(n.name).nodeName??""}catch{const i=n.name.indexOf(".");return i<0?n.name:n.name.slice(0,i)}}function C(n,i,c){const o=new Set,l=[];for(const f of i){let u=!1;n.traverse(m=>{m.name===f&&(u=!0,m.traverse(d=>{d.name&&o.add(d.name)}))}),c.has(f)&&(u=!0,o.add(f)),u||l.push(f)}return{names:o,missing:l}}function se(n,i,c,o){const l=new Set(n.tracks.map(T)),f=i.include?C(c,i.include,l):void 0,u=i.exclude?C(c,i.exclude,l):void 0,m=[...f?.missing??[],...u?.missing??[]];if(m.length)throw new M(`[bindXStateAnimation] state "${o}" boneMask names unknown bones/objects: ${m.join(", ")}`,o);const d=n.tracks.filter(p=>{const w=T(p);return(!f||f.names.has(w))&&!u?.names.has(w)});if(d.length===0)throw new M(`[bindXStateAnimation] state "${o}" boneMask removes every track from clip "${n.name}"`,o);return new te(n.name,n.duration,d.map(p=>p.clone()))}function re(n){return n.reduce((i,c)=>c.weight>i.weight?c:i,n[0])}function Se(n,i,c,o={}){const l=i.getRoot(),f=o.root??(l instanceof J?l:void 0);if(!f)throw new M("[bindXStateAnimation] a THREE.Object3D `root` option is required when the mixer uses AnimationObjectGroup");const u=ae(n).root,m=V(u),d=new Map(m.map(t=>[t.stateId,t.meta]));for(const t of m)for(const e of L(t.meta))if(!c.has(e))throw new M(`[bindXStateAnimation] state "${t.stateId}" references clip "${e}", which is not present in the supplied clips map. Known clips: ${[...c.keys()].join(", ")||"(none)"}`,t.stateId);const p=new Map;function w(t,e,s){return W(e)!=="base"||!!e.boneMask||I(e)==="additive"?`${t}\0${s}`:s}for(const{stateId:t,meta:e}of m)for(const s of L(e)){const a=w(t,e,s);if(p.has(a))continue;const r=c.get(s);let h=e.boneMask?se(r,e.boneMask,f,t):r;(h!==r||a!==s)&&(h===r&&(h=r.clone()),h.name=`${r.name}@${W(e)}:${t}`),I(e)==="additive"?(Z.makeClipAdditive(h),h.blendMode=_):h.blendMode=ee,p.set(a,h)}const g=new Map;function K(t,e,s,a){let r=g.get(t);if(!r){const h=p.get(t);if(!h)throw new M(`[bindXStateAnimation] prepared clip "${t}" not found`);const v=i.clipAction(h);v.setEffectiveWeight(0),v.play(),r={action:v,clip:h},g.set(t,r)}return r.action.setLoop(e?ie:oe,1/0),r.action.clampWhenFinished=!e,r.action.timeScale=s,r.action.weight=a,r.action}function N(t){const e=o.selectParameters?o.selectParameters(t):t;return new Map(Object.entries(e??{}))}function D(t,e,s){return(S(e)?ce(z(e.blendTree),N(s)):[{clip:e.clip,weight:1}]).map(({clip:r,weight:h})=>({clip:r,weight:h,actionKey:w(t,e,r)}))}const y=new Map;let O=!1;function R(t,e,s){for(const a of t){if(a.actionKey===e)continue;const r=g.get(a.actionKey)?.action;r&&(s>0?r.fadeOut(s):r.setEffectiveWeight(0))}}function k(t,e){if(!S(t.meta))return;t.natural=D(t.stateId,t.meta,e);const s=B(t.meta);for(const a of t.natural)g.get(a.actionKey)?.action.setEffectiveWeight(a.weight*s)}function P(t,e,s){const a=W(e),r=y.get(a)??null,h=D(t,e,s),v=re(h),H=S(e)?!0:e.loop,Q=S(e)?1:e.speed,x=B(e);for(const b of h)K(b.actionKey,H,Q,x);const $=g.get(v.actionKey).action;$.reset().setEffectiveWeight(x);for(const b of h)b.actionKey!==v.actionKey&&g.get(b.actionKey).action.reset().setEffectiveWeight(0);const A=e.crossfade?.duration??0,U=e.crossfade?.warp??!1;if(!r)A>0&&$.fadeIn(A);else{R(r.natural,r.dominantActionKey,A);const b=g.get(r.dominantActionKey)?.action;b&&A>0?b.crossFadeTo($,A,U):(b?.setEffectiveWeight(0),$.setEffectiveWeight(x))}const j={layer:a,stateId:t,meta:e,natural:h,dominantActionKey:v.actionKey,crossfadeRemaining:A};y.set(a,j),S(e)&&A<=0&&k(j,s)}function q(t){return Object.keys(t.getMeta()).filter(e=>d.has(e))}function X(t){const e=new Map;for(const s of q(t)){const a=d.get(s),r=W(a),h=e.get(r);if(h)throw new M(`[bindXStateAnimation] animated states "${h}" and "${s}" are both active on layer "${r}". Give parallel regions distinct meta.animation.layer names.`,s);e.set(r,s)}for(const[s,a]of y)e.has(s)||(R(a.natural,void 0,0),y.delete(s));for(const[s,a]of e)y.get(s)?.stateId!==a&&P(a,d.get(a),t.context)}const F=n.getSnapshot();X(F);const G=n.subscribe(t=>{O||X(t)});function E(t){if(O)return;const e=t,s=n.getSnapshot().context;for(const a of y.values())a.crossfadeRemaining>0?(a.crossfadeRemaining=Math.max(0,a.crossfadeRemaining-e),a.crossfadeRemaining<=0&&k(a,s)):k(a,s);i.update(e)}const Y={tick:E,actor:n,getParameters:()=>N(n.getSnapshot().context),getActiveLayers:()=>[...y.values()].map(t=>({layer:t.layer,stateId:t.stateId,clips:t.natural.map(e=>e.clip),clipWeights:t.natural.map(e=>({clip:e.clip,weight:g.get(e.actionKey)?.action.getEffectiveWeight()??0})),weight:B(t.meta),blendMode:I(t.meta),...t.meta.boneMask?{boneMask:t.meta.boneMask}:{}})),dispose(){if(!O){O=!0,o.systems?.remove("animation",E),G.unsubscribe();for(const{action:t,clip:e}of g.values())t.stop(),i.uncacheAction(e,t.getRoot());g.clear(),y.clear()}}};return o.systems?.add("animation",E),Y}function ce(n,i){switch(n.type){case"1D":return le(n,i);case"2D":return fe(n,i);case"direct":return de(n);default:return n.children.map(c=>({clip:c.clip,weight:1/n.children.length}))}}function le(n,i){const c=Number(i.get(n.parameter)??0),o=[...n.children].sort((f,u)=>f.threshold-u.threshold),l=o.map(f=>({clip:f.clip,weight:0}));if(o.length===0)return l;if(o.length===1||c<=o[0].threshold)return l[0].weight=1,l;if(c>=o[o.length-1].threshold)return l[l.length-1].weight=1,l;for(let f=0;f<o.length-1;f++){const u=o[f],m=o[f+1];if(c>=u.threshold&&c<=m.threshold){const d=m.threshold-u.threshold,p=d>0?(c-u.threshold)/d:0;return l[f].weight=1-p,l[f+1].weight=p,l}}return l}function fe(n,i){const c=Number(i.get(n.parameter)??0),o=Number(i.get(n.parameterY??"")??0),l=n.children,f=l.map(d=>({clip:d.clip,weight:0}));let u=0;const m=[];for(const d of l){const p=c-d.threshold,w=o-(d.thresholdY??0),g=Math.sqrt(p*p+w*w),K=g<.001?1e3:1/g;m.push(K),u+=K}if(u>0)for(let d=0;d<f.length;d++)f[d].weight=m[d]/u;return f}function de(n){const i=n.children.map(o=>({clip:o.clip,weight:o.weight??0})),c=i.reduce((o,l)=>o+l.weight,0);if(c>0)for(const o of i)o.weight/=c;return i}export{M as AnimationBindingError,Se as bindXStateAnimation,ce as evaluateBlendTree,ae as machineOfXStateActor};
@@ -1 +1 @@
1
- import{dZ as b,d_ as u,u as o,v as c,w as n,x as l,c6 as r,c5 as m,c4 as f}from"./index-C5tasxXb.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const d=o({clip:n().min(1).describe("Animation clip name this child plays"),threshold:r().describe("1D/2D blend position on the primary parameter axis"),thresholdY:r().optional().describe("2D blend position on the secondary parameter axis (2D blend trees only)"),weight:r().min(0).optional().describe('Explicit weight for "direct" blend trees (ignored by 1D/2D)')}).strict(),y=o({type:l("1D").describe("Interpolates linearly between sorted children by threshold"),parameter:n().min(1).describe("Context/selector value driving the blend"),children:c(d).min(2,"1D blend tree needs at least 2 children to interpolate between")}).strict(),v=o({type:l("2D").describe("Inverse-distance-weights children by (parameter, parameterY) position"),parameter:n().min(1).describe("Primary axis context/selector value"),parameterY:n().min(1).describe("Secondary axis context/selector value"),children:c(d.extend({thresholdY:r()})).min(1,"2D blend tree needs at least 1 child")}).strict(),g=o({type:l("direct").describe("Each child has an explicit weight, normalized to sum to 1"),parameter:n().default(""),children:c(d.extend({weight:r().min(0)})).min(1,"direct blend tree needs at least 1 child")}).strict(),A=b("type",[y,v,g]);function Y(e){return e}const p=o({duration:r().min(0).default(0).describe("Seconds to blend from the previously active clip into this state on entry, applied via native `AnimationAction.crossFadeTo`/`fadeIn` (E2). 0 = instant activation, no fade."),warp:m().default(!1).describe("Passed through to AnimationAction.crossFadeTo's `warp` param — linearly warps timeScale across the two clips during the blend so differing clip lengths line up. Default false.")}).strict().describe("Blend-in/out/crossfade timing for entering this state"),x=o({include:c(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are retained"),exclude:c(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are removed")}).strict().refine(e=>!!(e.include?.length||e.exclude?.length),{message:"boneMask needs at least one include or exclude bone name"}).describe("Filters animation tracks by named Object3D/Bone subtrees"),h={layer:n().min(1).optional().describe("Composition layer name; omitted means the single base layer"),weight:r().min(0).max(1).optional().describe("Layer weight multiplier from 0 to 1; defaults to 1"),blendMode:f(["override","additive"]).optional().describe("Native Three normal/override or additive action blending; defaults to override"),boneMask:x.optional().describe("Optional include/exclude filter applied to every clip track in this state")},w=o({clip:n().min(1).describe("Single clip to play while this XState state is active"),loop:m().default(!0).describe("Loop the clip (THREE.LoopRepeat) vs play once (THREE.LoopOnce, clamped on last frame)"),speed:r().positive().default(1).describe("Playback speed multiplier (AnimationAction.timeScale)"),crossfade:p.optional(),...h}).strict(),S=o({blendTree:A.describe("Multiple clips blended by a live context/selector-driven parameter"),crossfade:p.optional(),...h}).strict(),D=u([w,S]);function M(e){return"clip"in e}function $(e){return"blendTree"in e}class T extends Error{constructor(a,i,t){super(a),this.stateId=i,this.issues=t,this.name="AnimationMetaValidationError"}}function B(e,a){const i=D.safeParse(a);if(!i.success){const t=i.error.issues.map(s=>`${s.path.length?s.path.join("."):"(root)"}: ${s.message}`).join("; ");throw new T(`[xstate-animation] invalid meta.animation for state "${e}": ${t}`,e,i.error.issues)}return i.data}function R(e){const a=[],i=t=>{t.meta&&"animation"in t.meta&&t.meta.animation!==void 0&&a.push({stateId:t.id,meta:B(t.id,t.meta.animation)});for(const s of Object.values(t.states??{}))i(s)};return i(e),a}function H(e){return M(e)?[e.clip]:e.blendTree.children.map(a=>a.clip)}export{A as AnimationBlendTreeSchema,T as AnimationMetaValidationError,D as StateAnimationMetaSchema,Y as asBlendTreeDef,H as clipNamesOf,R as collectMachineAnimationMeta,$ as isBlendTreeAnimationMeta,M as isClipAnimationMeta,B as parseStateAnimationMeta};
1
+ import{dZ as b,d_ as u,u as o,v as c,w as n,x as l,c6 as r,c5 as m,c4 as f}from"./index-CPCojg58.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const d=o({clip:n().min(1).describe("Animation clip name this child plays"),threshold:r().describe("1D/2D blend position on the primary parameter axis"),thresholdY:r().optional().describe("2D blend position on the secondary parameter axis (2D blend trees only)"),weight:r().min(0).optional().describe('Explicit weight for "direct" blend trees (ignored by 1D/2D)')}).strict(),y=o({type:l("1D").describe("Interpolates linearly between sorted children by threshold"),parameter:n().min(1).describe("Context/selector value driving the blend"),children:c(d).min(2,"1D blend tree needs at least 2 children to interpolate between")}).strict(),v=o({type:l("2D").describe("Inverse-distance-weights children by (parameter, parameterY) position"),parameter:n().min(1).describe("Primary axis context/selector value"),parameterY:n().min(1).describe("Secondary axis context/selector value"),children:c(d.extend({thresholdY:r()})).min(1,"2D blend tree needs at least 1 child")}).strict(),g=o({type:l("direct").describe("Each child has an explicit weight, normalized to sum to 1"),parameter:n().default(""),children:c(d.extend({weight:r().min(0)})).min(1,"direct blend tree needs at least 1 child")}).strict(),A=b("type",[y,v,g]);function Y(e){return e}const p=o({duration:r().min(0).default(0).describe("Seconds to blend from the previously active clip into this state on entry, applied via native `AnimationAction.crossFadeTo`/`fadeIn` (E2). 0 = instant activation, no fade."),warp:m().default(!1).describe("Passed through to AnimationAction.crossFadeTo's `warp` param — linearly warps timeScale across the two clips during the blend so differing clip lengths line up. Default false.")}).strict().describe("Blend-in/out/crossfade timing for entering this state"),x=o({include:c(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are retained"),exclude:c(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are removed")}).strict().refine(e=>!!(e.include?.length||e.exclude?.length),{message:"boneMask needs at least one include or exclude bone name"}).describe("Filters animation tracks by named Object3D/Bone subtrees"),h={layer:n().min(1).optional().describe("Composition layer name; omitted means the single base layer"),weight:r().min(0).max(1).optional().describe("Layer weight multiplier from 0 to 1; defaults to 1"),blendMode:f(["override","additive"]).optional().describe("Native Three normal/override or additive action blending; defaults to override"),boneMask:x.optional().describe("Optional include/exclude filter applied to every clip track in this state")},w=o({clip:n().min(1).describe("Single clip to play while this XState state is active"),loop:m().default(!0).describe("Loop the clip (THREE.LoopRepeat) vs play once (THREE.LoopOnce, clamped on last frame)"),speed:r().positive().default(1).describe("Playback speed multiplier (AnimationAction.timeScale)"),crossfade:p.optional(),...h}).strict(),S=o({blendTree:A.describe("Multiple clips blended by a live context/selector-driven parameter"),crossfade:p.optional(),...h}).strict(),D=u([w,S]);function M(e){return"clip"in e}function $(e){return"blendTree"in e}class T extends Error{constructor(a,i,t){super(a),this.stateId=i,this.issues=t,this.name="AnimationMetaValidationError"}}function B(e,a){const i=D.safeParse(a);if(!i.success){const t=i.error.issues.map(s=>`${s.path.length?s.path.join("."):"(root)"}: ${s.message}`).join("; ");throw new T(`[xstate-animation] invalid meta.animation for state "${e}": ${t}`,e,i.error.issues)}return i.data}function R(e){const a=[],i=t=>{t.meta&&"animation"in t.meta&&t.meta.animation!==void 0&&a.push({stateId:t.id,meta:B(t.id,t.meta.animation)});for(const s of Object.values(t.states??{}))i(s)};return i(e),a}function H(e){return M(e)?[e.clip]:e.blendTree.children.map(a=>a.clip)}export{A as AnimationBlendTreeSchema,T as AnimationMetaValidationError,D as StateAnimationMetaSchema,Y as asBlendTreeDef,H as clipNamesOf,R as collectMachineAnimationMeta,$ as isBlendTreeAnimationMeta,M as isClipAnimationMeta,B as parseStateAnimationMeta};
package/dist-node/cli.js CHANGED
@@ -2313,7 +2313,7 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
2313
2313
  var package_default = {
2314
2314
  name: "@volter/game-editor",
2315
2315
  author: "Volter AI, Inc.",
2316
- version: "0.5.83",
2316
+ version: "0.5.85",
2317
2317
  publishConfig: {
2318
2318
  access: "public"
2319
2319
  },
@@ -2362,22 +2362,22 @@ var package_default = {
2362
2362
  }
2363
2363
  },
2364
2364
  dependencies: {
2365
- "@volter/editor-core": "0.5.83",
2366
- "@volter/editor-game": "0.5.83",
2367
- "@volter/editor-react": "0.5.83",
2368
- "@volter/editor-threejs": "0.5.83",
2369
- "@volter/editor-xstate": "0.5.83",
2370
- "@volter/editor-blender": "0.1.23",
2371
- "@volter/dawproject": "0.5.83",
2372
- "@volter/editor-dawproject": "0.5.83",
2373
- "@volter/blender-engine": "0.1.21",
2374
- "@volter/editor-project": "0.5.83",
2375
- "@volter/editor-sdk": "0.5.83",
2376
- "@volter/editor-live": "0.5.83",
2377
- "@volter/game-live": "0.5.83",
2365
+ "@volter/editor-core": "0.5.85",
2366
+ "@volter/editor-game": "0.5.85",
2367
+ "@volter/editor-react": "0.5.85",
2368
+ "@volter/editor-threejs": "0.5.85",
2369
+ "@volter/editor-xstate": "0.5.85",
2370
+ "@volter/editor-blender": "0.1.25",
2371
+ "@volter/dawproject": "0.5.85",
2372
+ "@volter/editor-dawproject": "0.5.85",
2373
+ "@volter/blender-engine": "0.1.23",
2374
+ "@volter/editor-project": "0.5.85",
2375
+ "@volter/editor-sdk": "0.5.85",
2376
+ "@volter/editor-live": "0.5.85",
2377
+ "@volter/game-live": "0.5.85",
2378
2378
  "@modelcontextprotocol/sdk": "1.30.0",
2379
- "@volter/game-runtime": "0.5.83",
2380
- "@volter/threejs-runtime": "0.5.83",
2379
+ "@volter/game-runtime": "0.5.85",
2380
+ "@volter/threejs-runtime": "0.5.85",
2381
2381
  undici: "7.29.1",
2382
2382
  typescript: "5.9.3",
2383
2383
  "@colyseus/schema": "^4.0.14",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@volter/game-editor",
3
3
  "author": "Volter AI, Inc.",
4
- "version": "0.5.83",
4
+ "version": "0.5.85",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -50,22 +50,22 @@
50
50
  }
51
51
  },
52
52
  "dependencies": {
53
- "@volter/editor-core": "0.5.83",
54
- "@volter/editor-game": "0.5.83",
55
- "@volter/editor-react": "0.5.83",
56
- "@volter/editor-threejs": "0.5.83",
57
- "@volter/editor-xstate": "0.5.83",
58
- "@volter/editor-blender": "0.1.23",
59
- "@volter/dawproject": "0.5.83",
60
- "@volter/editor-dawproject": "0.5.83",
61
- "@volter/blender-engine": "0.1.21",
62
- "@volter/editor-project": "0.5.83",
63
- "@volter/editor-sdk": "0.5.83",
64
- "@volter/editor-live": "0.5.83",
65
- "@volter/game-live": "0.5.83",
53
+ "@volter/editor-core": "0.5.85",
54
+ "@volter/editor-game": "0.5.85",
55
+ "@volter/editor-react": "0.5.85",
56
+ "@volter/editor-threejs": "0.5.85",
57
+ "@volter/editor-xstate": "0.5.85",
58
+ "@volter/editor-blender": "0.1.25",
59
+ "@volter/dawproject": "0.5.85",
60
+ "@volter/editor-dawproject": "0.5.85",
61
+ "@volter/blender-engine": "0.1.23",
62
+ "@volter/editor-project": "0.5.85",
63
+ "@volter/editor-sdk": "0.5.85",
64
+ "@volter/editor-live": "0.5.85",
65
+ "@volter/game-live": "0.5.85",
66
66
  "@modelcontextprotocol/sdk": "1.30.0",
67
- "@volter/game-runtime": "0.5.83",
68
- "@volter/threejs-runtime": "0.5.83",
67
+ "@volter/game-runtime": "0.5.85",
68
+ "@volter/threejs-runtime": "0.5.85",
69
69
  "undici": "7.29.1",
70
70
  "typescript": "5.9.3",
71
71
  "@colyseus/schema": "^4.0.14",
@@ -1 +0,0 @@
1
- import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{Object3DSnapshotDocument as m}from"./EntityModelDocument-By-BM9dS.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./editor-shell-store-CGWO4Ldz.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./Pass-D1MRT672.js";import"./editor-layers-D7HXdvWY.js";import"./workspace-arrangement-w-T2xUGF.js";import"./index-C5tasxXb.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./user-data-4Ls0MsfF.js";import"./entity-object-Dl04-FE8.js";import"./three-contract-Dkt6PmWY.js";import"./live-mixers-B-bwLZ7c.js";import"./asset-preview-BkFAKkZH.js";import"./renderer-ownership-BovSEcLv.js";import"./hierarchy-marks-fSNwXIFe.js";import"./studio-environment-BGU84AOG.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./bitmap-label-Ct4k6ehY.js";import"./StageHost-BOaImrmu.js";import"./three-state-3qPk0Sq8.js";import"./standard-viewport-dressing-NHKaiGVg.js";import"./content-bounds-tMCAobKq.js";import"./preview-renderer-BrYNFV1p.js";import"./live-gesture-lock-DJbrjOqf.js";import"./three-integration-D3zBmOoj.js";import"./host-hierarchy-objects-BV3WqU2w.js";import"./layered-pick-RElCrqXb.js";import"./root-stacking-BEd9ZvxC.js";import"./model-thumbnail-B7DVMYtQ.js";import"./object3d-document-session-registry-Bk-I9jZH.js";import"./component-instance-root-CzRnRMe6.js";import"./viewport-door-C4Fu0zS3.js";import"./model-inspection-BLOiPoW4.js";import"./three-viewport-presentation-DGctcUkE.js";import"./clip-planes-CnAI6DZn.js";import"./three-BRZq2Px5.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./OrbitControls-B13MKuwC.js";import"./LineSegments2-DN9pUfWA.js";import"./three.quarks.esm-C_HmSKXo.js";import"./scene-framing-DUd4lKtW.js";import"./source-object3d-authoring-adapter-RimvAMDG.js";import"./three-projection-core-Dt5ARGlM.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./transport-strip-8OsPiJIm.js";import"./viewport-surface-status-CdI6sQko.js";function ut({previewKey:o,object:r,displayName:i,fill:p=!1}){return t.jsx("div",{"data-testid":"inspector-object-preview",style:p?{position:"absolute",inset:0,overflow:"hidden"}:{width:"100%",height:220,minHeight:220,borderBottom:"1px solid var(--volter-structural-divider)",overflow:"hidden",position:"relative"},children:t.jsx(m,{documentId:`inspector-preview:${o}`,source:r,displayName:i,active:!0,chromeless:!0})})}export{ut as InspectorObjectPreview};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/StageHost-BOaImrmu.js","assets/index-C5tasxXb.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/three-state-3qPk0Sq8.js","assets/editor-shell-store-CGWO4Ldz.js","assets/output-pass-HurwNl0G.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/Pass-D1MRT672.js","assets/editor-layers-D7HXdvWY.js","assets/workspace-arrangement-w-T2xUGF.js","assets/user-data-4Ls0MsfF.js","assets/entity-object-Dl04-FE8.js","assets/three-contract-Dkt6PmWY.js","assets/standard-viewport-dressing-NHKaiGVg.js","assets/content-bounds-tMCAobKq.js","assets/hierarchy-marks-fSNwXIFe.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/preview-renderer-BrYNFV1p.js","assets/renderer-ownership-BovSEcLv.js","assets/live-mixers-B-bwLZ7c.js","assets/live-gesture-lock-DJbrjOqf.js","assets/three-integration-D3zBmOoj.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-RElCrqXb.js","assets/root-stacking-BEd9ZvxC.js","assets/model-thumbnail-B7DVMYtQ.js","assets/studio-environment-BGU84AOG.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/object3d-document-session-registry-Bk-I9jZH.js","assets/component-instance-root-CzRnRMe6.js","assets/viewport-door-C4Fu0zS3.js","assets/asset-preview-BkFAKkZH.js","assets/bitmap-label-Ct4k6ehY.js","assets/model-inspection-BLOiPoW4.js","assets/three-viewport-presentation-DGctcUkE.js","assets/clip-planes-CnAI6DZn.js","assets/three-BRZq2Px5.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/OrbitControls-B13MKuwC.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/scene-framing-DUd4lKtW.js","assets/source-object3d-authoring-adapter-RimvAMDG.js","assets/three-projection-core-Dt5ARGlM.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/transport-strip-8OsPiJIm.js","assets/viewport-surface-status-CdI6sQko.js"])))=>i.map(i=>d[i]);
2
- import{ak as r,_ as a}from"./index-C5tasxXb.js";import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as n}from"./index-nmcBqr7Y.js";import{V as c,O as u}from"./viewport-surface-status-CdI6sQko.js";const s=n.lazy(async()=>({default:(await a(()=>import("./StageHost-BOaImrmu.js").then(e=>e.S),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60]))).Object3DDocumentViewport}));function l(t){return i(t.documentId,t.chromeless),o.jsx(n.Suspense,{fallback:o.jsx(c,{testId:"object3d-document-loading",children:u}),children:o.jsx(s,{...t})})}function i(t,e=!1){n.useEffect(()=>{if(!e)return r(t)},[t,e])}export{l as O};
@@ -1 +0,0 @@
1
- import{T as i,r as m}from"./index-C5tasxXb.js";import{e as p}from"./game-network-COQRxS_4.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-DRmkIrIW.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CwYeaZ9J.js";import"./contract-system-adapters-D6ion7SF.js";import"./game-contract-seams-B5a-Ev-f.js";import"./seeded-random-DzZFJTfh.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-Cc1GXtG5.js";import"./capability-coverage-39yK3DGt.js";import"./edit-mode-authoring-DgvzXpiM.js";import"./json-history-resource-BUJgH5iK.js";import"./binding-resolver-BoecCqTq.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DoN23Ol2.js";import"./canvas-entry-runtime-DeyvFKWS.js";import"./three-ingest-runtime-D9JoNRjk.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-Ra07ruDo.js";import"./ingest-source-persistence-SAe0xIy-.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-DMMIH4rt.js";import"./mounted-authoring-BS53gpIm.js";import"./entity-object-Dl04-FE8.js";import"./user-data-4Ls0MsfF.js";import"./workspace-arrangement-w-T2xUGF.js";import"./three-contract-Dkt6PmWY.js";import"./three-BRZq2Px5.js";import"./editor-layers-D7HXdvWY.js";import"./component-instance-root-CzRnRMe6.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-DkfGlaNQ.js";import"./source-persistence-backend-BRcy23H9.js";import"./three-projection-core-Dt5ARGlM.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-B8Je7bNy.js";import"./deferred-ingest-play-7EJo_GNB.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DsywMgco.js";import"./board-guides-DhwRYHGT.js";import"./relative-import-specifier-DMppRnNH.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BqIL-41D.js";import"./inference-diagnostics-D7uYs70A.js";import"./writer-tw6EcuVO.js";import"./three-state-3qPk0Sq8.js";import"./editor-shell-store-CGWO4Ldz.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-C4Fu0zS3.js";import"./game-surface-defaults-D8S4cRxi.js";const Ut="workspace.service";function e(o){p().catch(t=>{m().console.error(`${o}: ${t instanceof Error?t.message:String(t)}`,"play")})}function bt(){let o,t=!1;const r=i(()=>{t||new URLSearchParams(window.location.search).get("play")==="1"&&(t=!0,o=window.setTimeout(()=>e("Could not enter requested Play mode"),0))});return()=>{o!==void 0&&window.clearTimeout(o),r()}}export{Ut as point,bt as start};
@@ -1,13 +0,0 @@
1
- import{a as d}from"./jsx-runtime-DPjLkJKQ.js";import{j3 as Oe,bt as ve,r as D,bv as Ce,fL as W,bB as N,bC as z,hR as Fe,bA as Re,j4 as Ne,bK as Ae,bq as Le,j5 as Me,j6 as ue,j7 as Te,j8 as Be,j9 as Ie,ja as pe,bs as $e}from"./index-C5tasxXb.js";import{c as Pe,a as q}from"./blender-runtime-skin-CwFW2Hj7.js";import{r as g}from"./index-nmcBqr7Y.js";import{u as De,v as J,k as Q,w as Z,x as Ve,y as le,t as be,z as Ge,A as We,B as fe,C as He,D as U,E as Ue,F as ze,G as Ke}from"./blender-runtime-host-CACzxt1b.js";import{r as Ye}from"./index-CtzuWnCS.js";import{a as Xe}from"./three-contract-Dkt6PmWY.js";import{o as re,b as K}from"./viewport-door-C4Fu0zS3.js";import{s as qe,a as Je}from"./object3d-document-session-registry-Bk-I9jZH.js";import{d9 as Qe}from"./three.core-3arARmh6.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./LineSegments2-DN9pUfWA.js";import"./three.module-BLhyNg0e.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-tMCAobKq.js";import"./hierarchy-marks-fSNwXIFe.js";import"./workspace-arrangement-w-T2xUGF.js";function we(e){const o=Number.isFinite(e)&&e>0?e:50;return{degrees:2*Math.atan(72/(2*o))*180/Math.PI,axis:"larger"}}Oe("model",{camera:{fov:we(50),opening:[.8187,.4458,.3617]},interaction:{bootTool:"select",boxSelect:"touch"},all:{lighting:{source:"studio",studioPreset:ve.id,auto:null,tone:{mapper:"none",exposure:1}},xray:{enabled:!1,alpha:.5}},modes:{wireframe:{xray:{enabled:!0,alpha:0}},preview:{lighting:{source:"preview",auto:null,preview:{sceneLights:!1,sun:{enabled:!1},environment:{enabled:!0,image:"blender:forest",energy:1,rotation:0}},tone:{mapper:"agx",exposure:1}},backdrop:{source:"fill"}},rendered:{lighting:{source:"scene",auto:null,tone:{mapper:"agx",exposure:1}},backdrop:{source:"scene"}}},overlays:{selection:{origins:!0}},world:{upAxis:"z"}});function Ze(e){return`blender-${e.toLowerCase().replace(/_/g,"-")}`}function $(e){return e?.type==="TSE_SOME_ID"&&e.struct==="Object"&&e.object!==void 0}function me(e){if(e.struct)return e.struct}function ge(e,o){return{id:e.id,label:e.name,role:"entity",kind:Ze(e.icon),...me(e)?{typeLabel:me(e)}:{},parentId:o,childIds:e.children.map(l=>l.id),defaultExpanded:e.expanded}}const et={transform:!0,inspectorFields:!1,persist:!0},te=new Set;function tt(e){for(const o of te)if(o.documentId===e||o.documentId===`object3d-document:${e}`)return o;return te.values().next().value??null}const rt=()=>({position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]});function nt(e,o){e.updateWorldMatrix(!0,!1);const l=o.matrixWorld.clone().invert().multiply(e.matrixWorld).elements;return[[l[0],l[1],l[2],l[3]],[l[4],l[5],l[6],l[7]],[l[8],l[9],l[10],l[11]],[l[12],l[13],l[14],l[15]]]}function Y(e,o){return`${e} needs a file, and this editor has no door to ask for one: the host's file door (\`EditorHost.files\`, \`@volter/editor-sdk/host\`) reads and writes project-relative paths and has no file-picker member, so there is nothing to open the workbench's own dialog through. Blender's row opens a file browser; run without one, the engine answers "${o}".`}const lt=[{kind:"mesh.plane",label:"Plane",group:"Mesh",call:"mesh.primitive_plane_add"},{kind:"mesh.cube",label:"Cube",group:"Mesh",call:"mesh.primitive_cube_add"},{kind:"mesh.circle",label:"Circle",group:"Mesh",call:"mesh.primitive_circle_add"},{kind:"mesh.uv-sphere",label:"UV Sphere",group:"Mesh",call:"mesh.primitive_uv_sphere_add"},{kind:"mesh.ico-sphere",label:"Ico Sphere",group:"Mesh",call:"mesh.primitive_ico_sphere_add"},{kind:"mesh.cylinder",label:"Cylinder",group:"Mesh",call:"mesh.primitive_cylinder_add"},{kind:"mesh.cone",label:"Cone",group:"Mesh",call:"mesh.primitive_cone_add"},{kind:"mesh.torus",label:"Torus",group:"Mesh",call:"mesh.primitive_torus_add"},{kind:"mesh.grid",label:"Grid",group:"Mesh",call:"mesh.primitive_grid_add",separatorBefore:!0},{kind:"mesh.monkey",label:"Monkey",group:"Mesh",call:"mesh.primitive_monkey_add"},{kind:"curve.bezier",label:"Bézier",group:"Curve",call:"curve.primitive_bezier_curve_add"},{kind:"curve.bezier-circle",label:"Circle",group:"Curve",call:"curve.primitive_bezier_circle_add"},{kind:"curve.nurbs-curve",label:"Nurbs Curve",group:"Curve",call:"curve.primitive_nurbs_curve_add",separatorBefore:!0},{kind:"curve.nurbs-circle",label:"Nurbs Circle",group:"Curve",call:"curve.primitive_nurbs_circle_add"},{kind:"curve.path",label:"Path",group:"Curve",call:"curve.primitive_nurbs_path_add"},{kind:"curve.empty-hair",label:"Empty Hair",group:"Curve",call:"object.curves_empty_hair_add",separatorBefore:!0},{kind:"curve.fur",label:"Fur",group:"Curve",call:"object.quick_fur"},{kind:"surface.nurbs-curve",label:"Nurbs Curve",group:"Surface",call:"surface.primitive_nurbs_surface_curve_add"},{kind:"surface.nurbs-circle",label:"Nurbs Circle",group:"Surface",call:"surface.primitive_nurbs_surface_circle_add"},{kind:"surface.nurbs-surface",label:"Nurbs Surface",group:"Surface",call:"surface.primitive_nurbs_surface_surface_add"},{kind:"surface.nurbs-cylinder",label:"Nurbs Cylinder",group:"Surface",call:"surface.primitive_nurbs_surface_cylinder_add"},{kind:"surface.nurbs-sphere",label:"Nurbs Sphere",group:"Surface",call:"surface.primitive_nurbs_surface_sphere_add"},{kind:"surface.nurbs-torus",label:"Nurbs Torus",group:"Surface",call:"surface.primitive_nurbs_surface_torus_add"},{kind:"metaball.ball",label:"Ball",group:"Metaball",call:"object.metaball_add, type='BALL'"},{kind:"metaball.capsule",label:"Capsule",group:"Metaball",call:"object.metaball_add, type='CAPSULE'"},{kind:"metaball.plane",label:"Plane",group:"Metaball",call:"object.metaball_add, type='PLANE'"},{kind:"metaball.ellipsoid",label:"Ellipsoid",group:"Metaball",call:"object.metaball_add, type='ELLIPSOID'"},{kind:"metaball.cube",label:"Cube",group:"Metaball",call:"object.metaball_add, type='CUBE'"},{kind:"text",label:"Text",group:null,call:"object.text_add"},{kind:"point-cloud",label:"Point Cloud",group:null,call:"object.pointcloud_random_add"},{kind:"volume.import",label:"Import OpenVDB...",group:"Volume",call:"object.volume_import",refusal:`${Y("Importing an OpenVDB volume","CANCELLED, with nothing created")} This build also has no OpenVDB at all (\`bpy.app.build_options.openvdb\` is False), so a file would not be read even with a picker.`},{kind:"volume.empty",label:"Empty",group:"Volume",call:"object.volume_add"},{kind:"grease-pencil.blank",label:"Blank",group:"Grease Pencil",call:"object.grease_pencil_add, type='EMPTY'"},{kind:"grease-pencil.stroke",label:"Stroke",group:"Grease Pencil",call:"object.grease_pencil_add, type='STROKE'"},{kind:"grease-pencil.monkey",label:"Monkey",group:"Grease Pencil",call:"object.grease_pencil_add, type='MONKEY'"},{kind:"grease-pencil.lineart-scene",label:"Scene Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_SCENE'",separatorBefore:!0},{kind:"grease-pencil.lineart-collection",label:"Collection Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_COLLECTION'"},{kind:"grease-pencil.lineart-object",label:"Object Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_OBJECT'"},{kind:"armature",label:"Armature",group:null,call:"object.armature_add"},{kind:"lattice.lattice",label:"Lattice",group:"Lattice",call:"object.add, type='LATTICE'"},{kind:"lattice.deform-selected",label:"Lattice Deform Selected",group:"Lattice",call:"object.lattice_add_to_selected"},{kind:"empty.plain-axes",label:"Plain Axes",group:"Empty",call:"object.empty_add, type='PLAIN_AXES'"},{kind:"empty.arrows",label:"Arrows",group:"Empty",call:"object.empty_add, type='ARROWS'"},{kind:"empty.single-arrow",label:"Single Arrow",group:"Empty",call:"object.empty_add, type='SINGLE_ARROW'"},{kind:"empty.circle",label:"Circle",group:"Empty",call:"object.empty_add, type='CIRCLE'"},{kind:"empty.cube",label:"Cube",group:"Empty",call:"object.empty_add, type='CUBE'"},{kind:"empty.sphere",label:"Sphere",group:"Empty",call:"object.empty_add, type='SPHERE'"},{kind:"empty.cone",label:"Cone",group:"Empty",call:"object.empty_add, type='CONE'"},{kind:"image.reference",label:"Reference...",group:"Image",call:"object.empty_image_add, background=False",refusal:Y("A reference image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.background",label:"Background...",group:"Image",call:"object.empty_image_add, background=True",refusal:Y("A background image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.mesh-plane",label:"Mesh Plane...",group:"Image",call:"image.import_as_mesh_planes",refusal:Y("An image as a mesh plane","CANCELLED, with nothing created")},{kind:"image.empty-image",label:"Empty Image",group:"Image",call:"object.empty_add, type='IMAGE'"},{kind:"light.point",label:"Point",group:"Light",call:"object.light_add, type='POINT'"},{kind:"light.sun",label:"Sun",group:"Light",call:"object.light_add, type='SUN'"},{kind:"light.spot",label:"Spot",group:"Light",call:"object.light_add, type='SPOT'"},{kind:"light.area",label:"Area",group:"Light",call:"object.light_add, type='AREA'"},{kind:"light-probe.sphere",label:"Sphere",group:"Light Probe",call:"object.lightprobe_add, type='SPHERE'"},{kind:"light-probe.plane",label:"Plane",group:"Light Probe",call:"object.lightprobe_add, type='PLANE'"},{kind:"light-probe.volume",label:"Volume",group:"Light Probe",call:"object.lightprobe_add, type='VOLUME'"},{kind:"camera",label:"Camera",group:null,call:"object.camera_add"},{kind:"speaker",label:"Speaker",group:null,call:"object.speaker_add"},{kind:"force-field.force",label:"Force",group:"Force Field",call:"object.effector_add, type='FORCE'"},{kind:"force-field.wind",label:"Wind",group:"Force Field",call:"object.effector_add, type='WIND'"},{kind:"force-field.vortex",label:"Vortex",group:"Force Field",call:"object.effector_add, type='VORTEX'"},{kind:"force-field.magnetic",label:"Magnetic",group:"Force Field",call:"object.effector_add, type='MAGNET'"},{kind:"force-field.harmonic",label:"Harmonic",group:"Force Field",call:"object.effector_add, type='HARMONIC'"},{kind:"force-field.charge",label:"Charge",group:"Force Field",call:"object.effector_add, type='CHARGE'"},{kind:"force-field.lennard-jones",label:"Lennard-Jones",group:"Force Field",call:"object.effector_add, type='LENNARDJ'"},{kind:"force-field.texture",label:"Texture",group:"Force Field",call:"object.effector_add, type='TEXTURE'"},{kind:"force-field.curve-guide",label:"Curve Guide",group:"Force Field",call:"object.effector_add, type='GUIDE'"},{kind:"force-field.boid",label:"Boid",group:"Force Field",call:"object.effector_add, type='BOID'"},{kind:"force-field.turbulence",label:"Turbulence",group:"Force Field",call:"object.effector_add, type='TURBULENCE'"},{kind:"force-field.drag",label:"Drag",group:"Force Field",call:"object.effector_add, type='DRAG'"},{kind:"force-field.fluid-flow",label:"Fluid Flow",group:"Force Field",call:"object.effector_add, type='FLUID'"}],ot="collection-instance:";function at(){const e=new Map;for(const o of Q().byId.values()){if(o.type!=="TSE_LAYER_COLLECTION")continue;const l=o.data;l===void 0||!l.startsWith("bpy.data.collections[")||e.has(o.name)||e.set(o.name,{kind:`${ot}${o.name}`,label:o.name,group:"Collection Instance",call:`object.collection_instance_add, collection=${V(o.name)}`})}return[...e.values()]}function ee(){return[...lt,...at()]}function st(e){const[o,...l]=e.call.split(", ");return`bpy.ops.${o}(${l.join(", ")})`}function V(e){return JSON.stringify(e)}const he=new Map;async function it(e){const o=/bpy\.ops\.([a-z_]+\.[a-z0-9_]+)\(/.exec(e)?.[1];if(o===void 0)return"Blender Python";const l=he.get(o);if(l!==void 0)return l;const s=await U(`import bpy
2
- print(bpy.ops.${o}.get_rna_type().name)`,!1),c=s.error===null?s.result.trim():"";return c===""?"Blender Python":(he.set(o,c),c)}async function H(e,o){const l=["before = {o.name for o in bpy.data.objects}",e,"made = [o.name for o in bpy.data.objects if o.name not in before]",'print("\\n".join(made))'].join(`
3
- `),s=await U(l,!0,o??await it(e));return s.error!==null?{made:[],error:s.error}:{made:s.result.split(`
4
- `).map(b=>b.trim()).filter(b=>b.length>0),error:null}}async function ct(e,o){const l=[`_sel = {${e.map(V).join(", ")}}`,"_vl = bpy.context.view_layer","for _o in _vl.objects:"," _o.select_set(_o.name in _sel)",o===null?"_vl.objects.active = None":`_vl.objects.active = bpy.data.objects.get(${V(o)})`].join(`
5
- `),s=await U(l,!1);s.error!==null&&D().console.error(`Blender refused the selection write: ${s.error}`,"blender-outliner")}async function ne(e,o){if(e.length===0)return{destination:"Nothing is selected, so there was nothing to run it on.",persisted:!1};const l=[`targets = [bpy.data.objects[n] for n in [${e.map(V).join(", ")}]]`,"with bpy.context.temp_override(selected_objects=targets, selected_editable_objects=targets, active_object=targets[0], object=targets[0]):",` ${o}`].join(`
6
- `),{error:s}=await H(l);return s!==null?{destination:s,persisted:!1}:(await Z(e),{destination:`Blender — ${o}; the session saves the .blend`,persisted:!0})}const dt={source:"document",label:"blender",detail:"These rows are Blender's own View Layer tree, read from the engine through RNA. Editing the model is a bpy call; the eye and render columns write the engine directly."},ut="This collection is excluded from the view layer (LayerCollection.exclude), so its viewport visibility is not what is hiding it. Clear the Exclude checkbox on this row first.";function Se(e){return({defaultAdapter:o})=>{const l=new Set;let s=[],c=null;const b=new Map,j=new Map,k=()=>{for(const n of[...l])n()},p=()=>Q().byId,E=n=>{const t=p().get(n),a=e();return t===void 0||a===null?null:t.type==="TSE_VIEW_COLLECTION_BASE"?a.root:t.object===void 0?null:a.objectForBlenderName(t.object)},O=n=>{const t=e();if(t===null)return null;for(const a of p().values())if($(a)&&t.objectForBlenderName(a.object)===n)return a.id;return null},v=n=>{for(const t of p().values())if($(t)&&t.object===n)return t.id;return null},h=n=>{if(p().has(n))return n;const t=Xe(o.hierarchy,n);return t===null?null:O(t)},x=n=>{const t=h(n);return t===null?null:E(t)},C=n=>{const t=x(n);return t===null?null:o.hierarchy.idForObject3D?.(t)??null},T={roots:()=>(He(A()),(Q().tree?.rows??[]).map(t=>ge(t,null))),node:n=>{const t=Q(),a=t.byId.has(n)?n:h(n),u=a===null?void 0:t.byId.get(a);return u===void 0?null:ge(u,t.parentOf.get(u.id)??null)},object3D:n=>x(n),idForObject3D:n=>O(n)};function A(){const n=p(),t=new Set;for(const a of s){const u=n.get(a)?.object;u!==void 0&&t.add(u)}return[...t]}const L=()=>{const n=[];for(const t of s){const a=x(t),u=a===null?null:o.hierarchy.idForObject3D?.(a);u&&n.push(u)}o.selection?.set(n,{intent:"exact"}),k()},M=()=>{const n=Ve(),t=`${le()}\0${n.active??""}\0${[...n.selected].sort().join("")}`;if(t===c)return;c=t;const a=n.selected.filter(m=>m!==n.active);n.active!==null&&a.push(n.active);const u=a.map(v).filter(m=>m!==null);u.length===s.length&&u.every((m,S)=>m===s[S])||(s=u,L())},r={get:()=>[...s],set:n=>{s=n.map(h).filter(m=>m!==null),L();const t=p(),a=[],u=[];for(const m of s){const S=t.get(m),F=S?.object;F===void 0?u.push(S?.name??m):a.includes(F)||a.push(F)}u.length>0&&D().console.warn(`${u.join(", ")} ${u.length===1?"is":"are"} not an object, so Blender's object selection does not carry ${u.length===1?"it":"them"}. Selecting a collection sets the ACTIVE COLLECTION in Blender, which is its own gesture and not in this editor yet.`,"blender-outliner"),ct(a,a.length===0?null:a[a.length-1])}},i=n=>p().get(n)?.restrict,f={properties:n=>{const t=i(n);if(t===void 0)return[];const a=p().get(n),u=[{path:"name",label:"Name",type:"string",readonly:!$(a)}];return t.hide!==void 0&&u.push({path:"visible",label:"Show in Viewport",type:"boolean"}),t.render!==void 0&&u.push({path:"renderVisible",label:"Show in Renders",type:"boolean"}),t.exclude!==void 0&&u.push({path:"exclude",label:"Exclude from View Layer",type:"boolean"}),u},get:(n,t)=>{const a=p().get(n);if(a!==void 0){if(t==="name")return a.name;if(t==="visible")return a.restrict?.hide===void 0?void 0:!a.restrict.hide;if(t==="renderVisible")return a.restrict?.render===void 0?void 0:!a.restrict.render;if(t==="exclude")return a.restrict?.exclude}},editability:(n,t)=>{const a=p().get(n);return a===void 0?{writable:!1}:t==="name"?$(a)?{writable:!0}:{writable:!1,reason:`Renaming a ${a.struct??a.type} is not in this Outliner yet — only an object row renames here. Rename it with bpy.`}:a.notInCollection?{writable:!1,reason:"This row is a child drawn under its parent although it is not in that collection, and Blender's Outliner draws it no restriction columns."}:t==="visible"&&a.restrict?.exclude===!0?{writable:!1,reason:ut}:{writable:!0}},set:async(n,t,a)=>{const u=p().get(n);if(u===void 0)return;if(t==="name"){if(!$(u))return;const S=String(a);if(S===u.name||S.length===0)return;await be(`bpy.data.objects[${V(u.object)}]`,"name",S),await Z([S]);const F=v(S);F!==null&&r.set([F]);return}if(t==="exclude"){await fe(u.path,"exclude",a===!0);return}const m=t==="visible"?"hide":t==="renderVisible"?"render":null;m!==null&&await fe(u.path,m,a===!1)}},w={get:n=>{const t=C(n);return(t===null?void 0:o.transforms?.get(t))??rt()},editability:n=>{const t=h(n),a=t===null?void 0:p().get(t);return $(a)&&E(a.id)!==null?{writable:!0}:{writable:!1,reason:`Only an object has a transform; this row is a ${a?.struct??a?.type??"row"}.`}},beginEdit:n=>{const t=x(n);t!==null&&!b.has(t)&&(b.set(t,t.matrixWorld.clone()),j.set(n,t),We())},apply:(n,t)=>{const a=x(n);a!==null&&(a.position.fromArray(t.position),a.quaternion.fromArray(t.rotation),a.scale.fromArray(t.scale),a.updateMatrix(),a.updateMatrixWorld(!0))},endEdit:async n=>{const t=j.get(n)??x(n);j.delete(n);const a=e();if(t===null)return;const u=b.get(t);b.delete(t);try{if(a===null||(t.updateWorldMatrix(!0,!1),u?.equals(t.matrixWorld)===!0))return;const m=a.blenderObjectName(t);if(m===null)return;const S=`bpy.data.objects[${JSON.stringify(m)}]`;try{return await be(S,"matrix_world",nt(t,a.root)),{destination:`Blender — ${S}.matrix_world; the session saves the .blend`,persisted:!0}}catch(F){return{destination:F instanceof Error?F.message:String(F),persisted:!1}}}finally{u&&await Ge()}}},y=n=>{const t=h(n),a=t===null?void 0:p().get(t);return $(a)?a.object:null},_=n=>({destination:n,persisted:!1}),B=async n=>{await Z(n);const t=n.map(v).filter(a=>a!==null);return t.length>0&&r.set(t),t[0]??""},P={creatableKinds:()=>ee().map(({kind:n,label:t})=>({kind:n,label:t})),create:n=>{const t=ee().find(u=>u.kind===n);if(t===void 0)return{id:"",ack:_(`${n} is not a row of Blender's Add menu that this editor adds. Its rows are: ${ee().map(u=>u.label).join(", ")}.`)};if(t.refusal!==void 0)return{id:"",ack:_(t.refusal)};const a=st(t);return{id:"",ack:(async()=>{const{made:u,error:m}=await H(a);return m!==null?_(m):u.length===0?_(`Blender ran ${a} and created nothing. The operator reported no error, so it cancelled — most often because it wanted a file browser or a context this headless engine has no window for.`):(await B(u),{destination:`Blender — ${a}; the session saves the .blend`,persisted:!0})})()}},remove:n=>P.removeMany?.([n])??void 0,removeMany:async n=>{const t=[];for(const S of n){const F=y(S);if(F===null){const de=h(S)===null?void 0:p().get(h(S));return _(`Only an object can be deleted here; this row is a ${de?.struct??de?.type??"row"}. Deleting a collection, a modifier or a vertex group is that datablock’s own bpy call.`)}t.push(F)}if(t.length===0)return _("Nothing selected to delete.");const u=[`targets = ${`[bpy.data.objects[n] for n in [${t.map(V).join(", ")}]]`}`,"with bpy.context.temp_override(selected_objects=targets, active_object=targets[0]):"," result = bpy.ops.object.delete(use_global=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled deleting the selected objects")'].join(`
7
- `),{error:m}=await H(u,"Delete Objects");return m!==null?_(m):(r.set([]),await Z([]),{destination:"Blender — bpy.ops.object.delete(use_global=False); the session saves the .blend",persisted:!0})},duplicate:n=>{const t=y(n);if(t===null)return{id:n,ack:_("Only an object can be duplicated here. Duplicating a collection is `bpy.ops.object.collection_instance_add`, its own gesture.")};const a=[`source = bpy.data.objects[${V(t)}]`,"with bpy.context.temp_override(selected_objects=[source], active_object=source):"," result = bpy.ops.object.duplicate(linked=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled duplicating the selected object")'].join(`
8
- `);return{id:n,ack:(async()=>{const{made:u,error:m}=await H(a,"Duplicate Object");return m!==null?_(m):(await B(u),{destination:`Blender — bpy.ops.object.duplicate(linked=False) on ${t}; the session saves the .blend`,persisted:!0})})()}},duplicateMany:async n=>{const t=[...new Set(n.map(y))];if(t.length===0||t.some(S=>S===null))return _("Select objects to duplicate; collections and data rows cannot be duplicated here.");const a=[`sources = [bpy.data.objects[name] for name in ${JSON.stringify(t)}]`,"with bpy.context.temp_override(selected_objects=sources, active_object=sources[0]):"," result = bpy.ops.object.duplicate(linked=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled duplicating the selected objects")'].join(`
9
- `),{made:u,error:m}=await H(a,"Duplicate Objects");return m!==null?_(m):(await B(u),{destination:"Blender — duplicate selected objects as one native operation; the session saves the .blend",persisted:!0})},reparent:()=>_("Reparenting is Blender's `bpy.ops.object.parent_set`, which needs a parent TYPE (Object, Object Keep Transform, Armature Deform, …) that a drag does not say. Set the parent on the object’s Relations panel, or with bpy.")},R={get documentId(){return o.documentId},get documentRootObject(){return o.documentRootObject},capabilities:et,provenance:dt,hierarchy:T,selection:r,inspector:f,transforms:w,structure:P,subscribe:n=>{l.add(n);const t=J(n),a=o.subscribe?.(n)??(()=>{});return()=>{l.delete(n),t(),a()}}},I={get documentId(){return R.documentId},selectedObjectNames:()=>A(),allObjectNames:()=>{const n=[];for(const t of p().values())$(t)&&n.push(t.object);return n},selectObjects:n=>{const t=n.map(v).filter(a=>a!==null);r.set(t)},rowIdForObject:n=>v(n),structure:P,subscribe:n=>{l.add(n);const t=J(n);return()=>{l.delete(n),t()}}};te.add(I);const G=De(M),Ee=J(M);return M(),{adapter:R,dispose:()=>{G(),Ee(),te.delete(I),l.clear()}}}}const pt=Se(Ue),oe="volter.blender.area-split:",ae=new Set,se=new Map;function bt(e){try{return globalThis.localStorage?.getItem(oe+e)==="1"}catch{return!1}}function ce(e){let o=se.get(e);return o===void 0&&(o=bt(e),se.set(e,o)),o}function ye(e,o){if(ce(e)!==o){se.set(e,o);try{o?globalThis.localStorage?.setItem(oe+e,"1"):globalThis.localStorage?.removeItem(oe+e)}catch{}for(const l of[...ae])l()}}function ke(e){return ae.add(e),()=>{ae.delete(e)}}const ft=[{label:"Location",call:"location=True, rotation=False, scale=False"},{label:"Rotation",call:"location=False, rotation=True, scale=False"},{label:"Scale",call:"location=False, rotation=False, scale=True"},{label:"All Transforms",call:"location=True, rotation=True, scale=True"}],mt=[{label:"Location",call:"bpy.ops.object.location_clear(clear_delta=False)"},{label:"Rotation",call:"bpy.ops.object.rotation_clear(clear_delta=False)"},{label:"Scale",call:"bpy.ops.object.scale_clear(clear_delta=False)"}],gt=[{label:"Geometry to Origin",type:"GEOMETRY_ORIGIN"},{label:"Origin to Geometry",type:"ORIGIN_GEOMETRY"},{label:"Origin to 3D Cursor",type:"ORIGIN_CURSOR"}],ht=[{submenu:"Mesh",at:"2699"},{submenu:"Curve",at:"2702"},{submenu:"Surface",at:"2704"},{submenu:"Metaball",at:"2705"},{kind:"text",at:"2706"},{kind:"point-cloud",at:"2707"},{submenu:"Volume",at:"2708"},{submenu:"Grease Pencil",at:"2709"},{separatorAt:"2711"},{kind:"armature",at:"2716"},{submenu:"Lattice",at:"2718"},{separatorAt:"2720"},{submenu:"Empty",at:"2722"},{submenu:"Image",at:"2723"},{separatorAt:"2725"},{submenu:"Light",at:"2727"},{submenu:"Light Probe",at:"2728"},{separatorAt:"2730"},{kind:"camera",at:"2735"},{separatorAt:"2737"},{kind:"speaker",at:"2739"},{separatorAt:"2741"},{submenu:"Force Field",at:"2743"},{separatorAt:"2745"},{submenu:"Collection Instance",at:"2759"}],yt="No Collections to Instance";function X({id:e,open:o,setOpen:l,anchorRef:s,children:c}){return d.jsxs("div",{ref:s,style:{position:"relative"},children:[d.jsx(Fe,{"data-testid":`blender-menu-${e}`,"aria-expanded":o===e,onClick:()=>l(o===e?null:e),onPointerEnter:()=>{o&&l(e)},style:{textTransform:"capitalize"},children:e}),o===e&&d.jsx(Re,{anchorRef:s,dismissBoundaryRef:s,align:"start",gap:0,clamp:!0,"aria-label":e,onDismiss:()=>l(null),children:c})]})}function jt(e,o,l){(async()=>{const s=await l;s===void 0||typeof s.destination!="string"||s.persisted!==!0&&e?.({tone:"error",title:`${o} was refused`,detail:s.destination})})()}function xe({documentId:e,notify:o}){g.useSyncExternalStore(J,le,le);const[l,s]=g.useState(null),c=g.useRef(null),b=g.useRef(null),j=g.useRef(null),k=g.useRef(null),p=g.useRef(null),E=g.useSyncExternalStore(ke,()=>e===void 0?!1:ce(e),()=>!1),O=tt(e);if(O===null)return null;const v=(r,i)=>()=>{s(null),jt(o,r,i(O))},h=O.selectedObjectNames(),x=O.allObjectNames(),C=h.length===0?"Nothing is selected.":void 0,T=ee(),A=r=>d.jsx(N,{"data-testid":`blender-add-${r.kind}`,disabled:r.refusal!==void 0,title:r.refusal,onSelect:v(`Add ${r.label}`,i=>i.structure.create(r.kind).ack),children:r.label},r.kind),L=r=>T.filter(i=>i.group===r).flatMap(i=>i.separatorBefore===!0?[d.jsx(z,{},`${i.kind}-separator`),A(i)]:[A(i)]),M=r=>{if("separatorAt"in r)return d.jsx(z,{},`separator-${r.separatorAt}`);if("kind"in r){const f=T.find(w=>w.kind===r.kind);return f===void 0?null:A(f)}const i=L(r.submenu);return i.length===0?d.jsx(N,{"data-testid":"blender-add-collection-instance",disabled:!0,children:yt},r.submenu):d.jsx(W,{label:r.submenu,"data-testid":`blender-add-${r.submenu.toLowerCase().replaceAll(" ","-")}`,children:i},r.submenu)};return d.jsxs(Ce,{compact:!0,label:"Blender Object Mode menus","data-testid":"blender-object-mode-menus",ref:c,children:[d.jsx(X,{id:"view",open:l,setOpen:s,anchorRef:b,children:d.jsxs(W,{label:"Area","data-testid":"blender-view-area",children:[d.jsx(N,{"data-testid":"blender-area-vertical-split",disabled:E||e===void 0,title:E?"This area is already split.":void 0,onSelect:()=>{s(null),e!==void 0&&ye(e,!0)},children:"Vertical Split"}),d.jsx(z,{}),d.jsx(N,{"data-testid":"blender-area-close",disabled:!E,title:E?void 0:"There is no second area to close.",onSelect:()=>{s(null),e!==void 0&&ye(e,!1)},children:"Close Area"})]})}),d.jsxs(X,{id:"select",open:l,setOpen:s,anchorRef:j,children:[d.jsx(N,{"data-testid":"blender-select-all",onSelect:v("Select All",r=>r.selectObjects(x)),children:"All"}),d.jsx(N,{"data-testid":"blender-select-none",onSelect:v("Select None",r=>r.selectObjects([])),children:"None"}),d.jsx(N,{"data-testid":"blender-select-invert",onSelect:v("Select Invert",r=>r.selectObjects(x.filter(i=>!h.includes(i)))),children:"Invert"})]}),d.jsx(X,{id:"add",open:l,setOpen:s,anchorRef:k,children:ht.map(r=>M(r))}),d.jsxs(X,{id:"object",open:l,setOpen:s,anchorRef:p,children:[d.jsx(W,{label:"Set Origin","data-testid":"blender-object-origin",children:gt.map(r=>d.jsx(N,{"data-testid":`blender-origin-${r.type}`,disabled:r.refusal!==void 0||h.length===0,title:r.refusal??C,onSelect:v(`Set Origin ▸ ${r.label}`,i=>ne(i.selectedObjectNames(),`bpy.ops.object.origin_set(type='${r.type}')`)),children:r.label},r.type))}),d.jsx(W,{label:"Clear","data-testid":"blender-object-clear",children:mt.map(r=>d.jsx(N,{"data-testid":`blender-clear-${r.label.toLowerCase()}`,disabled:h.length===0,title:C,onSelect:v(`Clear ▸ ${r.label}`,i=>ne(i.selectedObjectNames(),r.call)),children:r.label},r.label))}),d.jsx(W,{label:"Apply","data-testid":"blender-object-apply",children:ft.map(r=>d.jsx(N,{"data-testid":`blender-apply-${r.label.toLowerCase().replace(/ /g,"-")}`,disabled:h.length===0,title:C,onSelect:v(`Apply ▸ ${r.label}`,i=>ne(i.selectedObjectNames(),`bpy.ops.object.transform_apply(${r.call})`)),children:r.label},r.label))}),d.jsx(z,{}),d.jsx(N,{"data-testid":"blender-object-duplicate",disabled:h.length===0,title:C,onSelect:v("Duplicate Objects",async r=>{const i=r.selectedObjectNames().map(f=>r.rowIdForObject(f)).filter(f=>f!==null);return r.structure.duplicateMany?.(i)}),children:"Duplicate Objects"}),d.jsx(N,{"data-testid":"blender-object-delete",disabled:h.length===0,title:C,onSelect:v("Delete",r=>{const i=r.selectedObjectNames().map(f=>r.rowIdForObject(f)).filter(f=>f!==null);return r.structure.removeMany?.(i)}),children:"Delete"})]})]})}const Zt="workspace.document",er="Blender Model",tr=({documentId:e,notify:o})=>d.jsx(xe,{documentId:e,notify:o}),_t="model",rr="owned",nr=[],ie=Pe,je=new WeakMap;function vt(e){let o=je.get(e);return o||(o={subject:()=>{const l=q.playhead();return e.subjectLine(l===null?null:Math.floor(l))},gridScale:l=>e.gridUnitName(l),cameraView:{camera:()=>e.cameraViewCamera(),zoom:e.cameraViewZoom,pan:e.cameraViewPan,showing:l=>e.setCameraViewShowing(l),setPose:(l,s,c,b)=>{const{location:j,rotation:k}=e.blenderPose(s,c);return U(`from mathutils import Matrix, Quaternion, Vector
10
- import bpy
11
- object = bpy.data.objects[${JSON.stringify(l)}]
12
- object.matrix_world = Matrix.LocRotScale(Vector((${j.join(", ")})), Quaternion((${k.join(", ")})), object.matrix_world.to_scale())`,b,"Lock Camera to View").then(p=>{p.error!==null&&D().console.error(`Blender refused the camera's pose: ${p.error}`,"blender-camera")},p=>D().console.error(`The camera's pose was not written to Blender: ${String(p)}`,"blender-camera"))},view:(l,s,c,b)=>e.cameraView(l,s,c,b)}},je.set(e,o),o)}function lr(e){const{active:o,document:l,documentId:s,notify:c,publishContext:b}=e,j=l?.source?.path,k=l?.id,p=JSON.stringify([s,k,j]),[E,O]=g.useState(null),v=g.useRef({notify:c,publishContext:b});return v.current={notify:c,publishContext:b},g.useEffect(()=>{if(o===!1||!s)return;let h=!1,x;const C=j===void 0?null:{documentId:s,entryId:k,blend:j},T=ze(C),A=()=>{x=v.current.publishContext?.(ie)};return O(null),(async()=>{try{if(C){if(!await Ke(C,A))return}else A();h||O({key:p,error:null})}catch(L){if(h)return;x?.(),x=void 0;const M=L instanceof Error?L.message:String(L);O({key:p,error:M}),v.current.notify?.({tone:"error",title:`Blender could not open ${j??"the model"}`,detail:M})}})(),()=>{h=!0,x?.(),T()}},[o,j,s,k,p]),o===!1||!s?null:E?.key!==p?d.jsx("div",{role:"status",children:"Opening model…"}):E.error?d.jsx("div",{role:"alert",children:E.error}):d.jsx(wt,{...e})}function wt(e){const{documentId:o}=e,l=g.useSyncExternalStore(ke,()=>o?ce(o):!1,()=>!1),[s,c]=g.useState(null);if(g.useEffect(()=>{if(!l||!o)return;const k=`${o}#area-2`;Ne(k).drawMode===void 0&&Ae(k,{drawMode:"rendered"});const p=ie.follow();return c(p),()=>{c(null),p.dispose()}},[l,o]),!o)return null;const b=l?s:null,j={position:"relative",flex:"1 1 0",minWidth:0,margin:12};return d.jsxs("div",{style:b?{position:"absolute",inset:-12,display:"flex",gap:2}:{display:"contents"},children:[d.jsx("div",{style:b?j:{display:"contents"},children:d.jsx(_e,{...e,view:ie,main:!0})}),b&&d.jsxs("div",{style:j,"data-testid":"blender-second-area",children:[d.jsx(_e,{...e,documentId:`${o}#area-2`,view:b.view,main:!1}),d.jsx(St,{documentId:o,areaId:`${o}#area-2`,notify:e.notify})]})]})}function St({documentId:e,areaId:o,notify:l}){g.useSyncExternalStore(Me,ue,ue);const s=g.useSyncExternalStore(Te,()=>Be(e)),c=Ie(o)?.HeaderControls,b=g.useRef(null);return g.useEffect(()=>{const j=b.current,k=j?.parentElement;if(!k)return;const p=()=>pe(e,{headerWidth:k.getBoundingClientRect().width+12,shelf:j});p();const E=new ResizeObserver(p);return E.observe(k),()=>{E.disconnect(),pe(e,null)}},[e]),d.jsxs(d.Fragment,{children:[d.jsx("div",{ref:b,className:"volter-dock-document-shelf",role:"toolbar","aria-orientation":"vertical","aria-label":"Document tools"}),s&&Ye.createPortal(d.jsxs("div",{className:"volter-dock-document-toolbar-own","data-testid":`document-header:${o}`,style:{display:"flex",alignItems:"center"},children:[d.jsx(xe,{documentId:e,notify:l}),c&&d.jsx(g.Suspense,{fallback:null,children:d.jsx(c,{documentId:o})})]}),s)]})}function _e({active:e,document:o,documentId:l,surfaces:s,view:c,main:b}){const j=vt(c),k=g.useCallback(()=>({root:c.root,onChange(r){const i=c.onChange(r),f=q.subscribe(r);return()=>{i(),f()}},dispose(){}}),[c]),p=o?.source?.path,E=g.useCallback(r=>{const i=c.onChange(r),f=q.subscribe(r);let w=null;const y=()=>{w?.(),w=K().find(B=>B.documentId===l)?.onFrame(r)??null};y();const _=re(y);return()=>{i(),f(),_(),w?.()}},[l,c]),O=g.useSyncExternalStore(E,j.subject),v=g.useMemo(()=>b?pt:Se(()=>c),[b,c]);g.useEffect(()=>{if(b||!l)return;let r=!1;const i=()=>{if(r)return;const y=Je(l);y===null||c.cameraViewCamera()===null||(r=y.toggleCameraView())};i();const f=qe(i),w=c.subscribeFrames(i);return()=>{f(),w()}},[b,l,c]),g.useEffect(()=>{if(!l)return;const r=c.overlayGroups(),i=()=>{const w=K().find(y=>y.documentId===l);if(w)for(const{kind:y,object:_}of r)w.setHelper(y,_)};i();const f=re(i);return()=>{f();const w=K().find(y=>y.documentId===l);for(const{kind:y}of r)w?.setHelper(y,null)}},[l,c]),g.useEffect(()=>{if(!l||!b)return;const{transport:r}=D();let i=null;const f=()=>{if(i)return;const y=r.for(l);y&&(i=q.attachTo(y))};f();const w=r.subscribe(f);return()=>{w(),i?.()}},[l,b]),g.useEffect(()=>{if(!l)return;const r=()=>K().find(R=>R.documentId===l);let i,f=null;const w=new Qe,y=()=>r()?.rig().drawCamera()??w,_=()=>{const R=r();R!==i&&(f?.(),f=R?R.onFrame(()=>c.refreshRendered()):null,i=R);const{lighting:I}=$e(l);c.holdRendered(I.source==="scene"&&R?y:null),c.setWorkbench(I.source==="studio"&&I.studioPreset===ve.id)};_();const B=Le(_),P=re(_);return()=>{B(),P(),f?.(),c.holdRendered(null),c.setWorkbench(!1)}},[l,c]);const h=g.useRef(null),x=r=>r.button===2&&r.shiftKey&&r.target instanceof HTMLCanvasElement,C=r=>{if(!x(r)){h.current=null;return}r.preventDefault(),r.stopPropagation(),h.current={id:r.pointerId,x:r.clientX,y:r.clientY},r.isTrusted&&r.target.setPointerCapture(r.pointerId)},T=()=>{h.current=null},A=r=>{const i=h.current;if(i===null||r.pointerId!==i.id||r.button!==2||(h.current=null,r.preventDefault(),r.stopPropagation(),Math.hypot(r.clientX-i.x,r.clientY-i.y)>3))return;const f=c.placeCursor(r.clientX,r.clientY,r.target);if(f===null)return;const[w,y,_]=f.location,[B,P,R,I]=f.rotation;U(`from mathutils import Matrix, Quaternion, Vector
13
- bpy.context.scene.cursor.matrix = Matrix.LocRotScale(Vector((${w}, ${y}, ${_})), Quaternion((${B}, ${P}, ${R}, ${I})), None)`,!1,"Set 3D Cursor").then(G=>{G.error!==null&&D().console.error(`Blender refused the 3D cursor: ${G.error}`,"blender-cursor")},G=>D().console.error(`The 3D cursor was not written to Blender: ${String(G)}`,"blender-cursor"))},L=r=>{x(r)&&r.preventDefault()};if(!l)return null;const M=s.Object3DAuthoring;return d.jsx("div",{style:{display:"contents"},onPointerDownCapture:C,onPointerUpCapture:A,onPointerCancelCapture:T,onLostPointerCaptureCapture:T,onContextMenuCapture:L,children:d.jsx(M,{active:e??!0,documentId:l,sourcePath:p??"blender:runtime",displayName:o?.label??"Model",...O===null?{}:{subject:O},gridScale:j.gridScale,cameraView:j.cameraView,build:k,audit:!1,authoring:v,cameraDirection:[.8187,.4458,.3617],openingFit:3,openingView:c.savedView(),presentation:(()=>{const r=c.savedView();return r?{camera:{fov:we(r.lens)}}:null})(),stageKind:_t,dressing:{environment:!1,keyLight:!1,viewLocked:c.studioLights()}})})}export{tr as Toolbar,lr as default,_t as documentKind,nr as inspectorBuiltins,rr as inspectorRail,Zt as point,er as title};
@@ -1,2 +0,0 @@
1
- import{a as f,S as R,P,b as A,s as x,A as S,c as v,o as I}from"./worker-Cu9kIzIf.js";import{s as F}from"./session-kSIjcXJT.js";const u="/bw",O=`${R}/frame.bin`,k=new Set(["scripts/startup/vgai_three.py","scripts/startup/volter_three.py"]);async function p(e){const o=f(`wali/${e}`);try{return await import(o)}catch(l){throw new Error(`The substrate skew needs ${e}, which this editor serves from the WALI pack directory beside blender.wasm (${o}): ${l instanceof Error?l.message:String(l)}`)}}async function M(e,o){const l=performance.now(),r=await fetch(f("runtime.idx"));if(!r.ok)throw new Error(`${S}/runtime.idx answered ${r.status}`);const n=await r.json(),i=await fetch(f("runtime.bin"));if(!i.ok)throw new Error(`${S}/runtime.bin answered ${i.status}`);const s=new Uint8Array(await i.arrayBuffer());let a=0;for(const t of n.files){if(a+t.size>s.byteLength)throw new Error(`Blender runtime ${t.path}: bytes ${a}..${a+t.size} lie outside the ${s.byteLength}-byte runtime blob`);if(k.has(t.path)){a+=t.size;continue}const w=`${u}/${t.path}`;e.mkdirSync(w.slice(0,w.lastIndexOf("/")),{recursive:!0}),e.writeFileSync(w,s.subarray(a,a+t.size)),a+=t.size}if(a!==s.byteLength)throw new Error(`Blender runtime index accounts for ${a} of the ${s.byteLength} bytes served`);const h=Math.round(performance.now()-l);return o("log",`blender: staged Blender's ${n.files.length}-file runtime tree in ${h} ms`),{files:n.files.length,bytes:s.byteLength,ms:h}}async function D(e,o){const l=performance.now(),r=await fetch(f("runtime.idx"));if(!r.ok)throw new Error(`${S}/runtime.idx answered ${r.status}`);const n=await r.json(),i=n.files.reduce((d,m)=>d+m.size,0),s=await fetch(f("runtime.bin"));if(!s.ok||!s.body)throw new Error(`${S}/runtime.bin answered ${s.status}`);const a=new SharedArrayBuffer(i),h=new Uint8Array(a);let t=0;const w=s.body.getReader();for(;;){const{done:d,value:m}=await w.read();if(d)break;if(t+m.byteLength>i)throw new Error(`Blender runtime blob is longer than the ${i} bytes its index accounts for`);h.set(m,t),t+=m.byteLength}if(t!==i)throw new Error(`Blender runtime index accounts for ${i} bytes; the blob served ${t}`);const b=e(u,n.files,a,{mtimeMs:Date.now(),include:d=>!k.has(d)});return o("log",`blender: shared Blender's ${n.files.length}-file runtime tree in ${Math.round(performance.now()-l)} ms`),b}function N(e){const o=new Set,l=()=>{for(const r of[...o])r()};return e.on?.("change",l),e.on?.("delete",l),{...e.on?{changed:r=>new Promise(n=>{const i=()=>{clearTimeout(s),o.delete(i),n()},s=setTimeout(i,r);o.add(i)})}:{},readFile:r=>e.readFile(r),writeFile:(r,n)=>(e.writeFileSync(r,n),Promise.resolve()),mkdirTree:async r=>e.mkdirSync(r,{recursive:!0}),readdir:async r=>e.readdirSync(r),stat:async r=>{if(!e.existsSync(r))return null;const n=e.statSync(r);return{size:n.size,mode:n.mode&4095|(n.isDirectory()?16384:32768),mtimeMs:n.mtimeMs}},unlink:async r=>e.unlinkSync(r)}}async function C(e,o){const l=performance.now(),[r,n,i]=await Promise.all([p("browser-wali/worker-program.js"),p("browser-runtime/browser-memory-filesystem.js"),p("browser-wali/shared-file-layer.js").catch(()=>({}))]),s=r.BrowserWaliWorkerProgram,a=n.BrowserMemoryFileSystem;if(!s||!a)throw new Error("The substrate modules this editor served do not export BrowserWaliWorkerProgram and BrowserMemoryFileSystem; the WALI pack directory holds a browser-substrate this engine does not know.");const h=r.preloadWaliModule;h&&o.integrity&&h(f("blender.wasm"),o.integrity).catch(()=>{});const t=new a;for(const c of["/tmp","/root","/work",R,...P,e.project])t.mkdirSync(c,{recursive:!0});const w=i.sharedFileLayerFromIndex,b=w?await D(w,e.log):void 0;b||await M(t,e.log),t.writeFileSync(A,F);const d=o.workers??{pool:16,blender:4},m=new s(t,{url:f("blender.wasm"),...o.integrity?{integrity:o.integrity}:{},cwd:"/work",env:{HOME:"/root",TMPDIR:"/tmp",PATH:"/usr/bin:/bin",BLENDER_SYSTEM_RESOURCES:u,BLENDER_SYSTEM_SCRIPTS:`${u}/scripts`,BLENDER_SYSTEM_DATAFILES:`${u}/datafiles`,BLENDER_SYSTEM_PYTHON:`${u}/python`,PYTHONPATH:`${u}/python/lib/numpy313.zip:${u}/python/lib/wheels313.zip`,VOLTER_SESSION_ROOT:R,VOLTER_EXPORT_BUFFER_PATH:O,OPENIMAGEIO_THREADS:"1"},...b?{layers:[b]}:{},privateRoots:["/tmp"],threadPoolSize:d.pool,network:{allowedHosts:[],maxConnections:0,maxBytes:0}});let g=null,y=null;const $=c=>{for(const E of c.split(`
2
- `))E!==""&&(E.startsWith("@@VOLTER-READY ")&&(g=E.slice(15)),e.log(v(E),E))};for(m.run(["/blender","-b","--factory-startup","-noaudio","--python-use-system-env","-t",String(d.blender),"--python",A],{onStdout:$,onStderr:$,onDiagnostic:c=>e.log("error",`@@VOLTER-ERROR ${c}`)}).then(c=>{y=`Blender exited ${c.exitCode}`},c=>{y=c instanceof Error?c.message:String(c)}).finally(()=>{y!==null&&e.log("error",`@@VOLTER-ERROR the Blender program ended: ${y}`)});g===null;){if(y!==null)throw new Error(`Blender never reached its session: ${y}`);await x(5)}const B=performance.now()-l,L=JSON.parse(g);e.log("log",`blender: the substrate skew is up (${d.blender} Blender threads in a pool of ${d.pool}; Blender is SERIAL without -t N and says so)`);const T=N(t),{request:_}=I(T,e,()=>y);return{skew:"wali",banner:L,files:T,request:_,readArena:()=>t.readFile(O),bootMs:B,memoryBytes:()=>null,releasedPayloadBytes:null}}export{C as startWaliBlenderEngine};
@@ -1 +0,0 @@
1
- import{ah as m}from"./index-C5tasxXb.js";import{b as p,a as e,c as n,s}from"./game-network-COQRxS_4.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-DRmkIrIW.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CwYeaZ9J.js";import"./contract-system-adapters-D6ion7SF.js";import"./game-contract-seams-B5a-Ev-f.js";import"./seeded-random-DzZFJTfh.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-Cc1GXtG5.js";import"./capability-coverage-39yK3DGt.js";import"./edit-mode-authoring-DgvzXpiM.js";import"./json-history-resource-BUJgH5iK.js";import"./binding-resolver-BoecCqTq.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DoN23Ol2.js";import"./canvas-entry-runtime-DeyvFKWS.js";import"./three-ingest-runtime-D9JoNRjk.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-Ra07ruDo.js";import"./ingest-source-persistence-SAe0xIy-.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-DMMIH4rt.js";import"./mounted-authoring-BS53gpIm.js";import"./entity-object-Dl04-FE8.js";import"./user-data-4Ls0MsfF.js";import"./workspace-arrangement-w-T2xUGF.js";import"./three-contract-Dkt6PmWY.js";import"./three-BRZq2Px5.js";import"./editor-layers-D7HXdvWY.js";import"./component-instance-root-CzRnRMe6.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-DkfGlaNQ.js";import"./source-persistence-backend-BRcy23H9.js";import"./three-projection-core-Dt5ARGlM.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-B8Je7bNy.js";import"./deferred-ingest-play-7EJo_GNB.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DsywMgco.js";import"./board-guides-DhwRYHGT.js";import"./relative-import-specifier-DMppRnNH.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BqIL-41D.js";import"./inference-diagnostics-D7uYs70A.js";import"./writer-tw6EcuVO.js";import"./three-state-3qPk0Sq8.js";import"./editor-shell-store-CGWO4Ldz.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-C4Fu0zS3.js";import"./game-surface-defaults-D8S4cRxi.js";const zt="workspace.command",a=()=>({ok:!1,error:"not in play mode — start play before using the debug seam"}),Bt={"set-instance-count":{derivedRefresh:"always",handle:o=>{if(!e())return a();const r=o.names;if(Array.isArray(r)&&r.every(i=>typeof i=="string"))return r.length<1?{ok:!1,error:'set-instance-count "names" must have at least one entry.'}:(n(r),{ok:!0});const t=o.count;return typeof t!="number"||!Number.isFinite(t)||t<1?{ok:!1,error:`set-instance-count requires a whole "count" >= 1 (or a "names" array), got ${String(t)}.`}:(s(Math.floor(t)-1),{ok:!0})}},"list-instances":{derivedRefresh:"if-content-changed",handle:()=>({ok:!0,data:{instances:m(),named:p()}})}};export{Bt as commands,zt as point};
@@ -1 +0,0 @@
1
- import{i as t}from"./game-network-COQRxS_4.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-C5tasxXb.js";import"./index-nmcBqr7Y.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"./native-debug-module-DRmkIrIW.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CwYeaZ9J.js";import"./contract-system-adapters-D6ion7SF.js";import"./game-contract-seams-B5a-Ev-f.js";import"./seeded-random-DzZFJTfh.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-Cc1GXtG5.js";import"./capability-coverage-39yK3DGt.js";import"./edit-mode-authoring-DgvzXpiM.js";import"./json-history-resource-BUJgH5iK.js";import"./binding-resolver-BoecCqTq.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DoN23Ol2.js";import"./canvas-entry-runtime-DeyvFKWS.js";import"./three-ingest-runtime-D9JoNRjk.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-Ra07ruDo.js";import"./ingest-source-persistence-SAe0xIy-.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-DMMIH4rt.js";import"./mounted-authoring-BS53gpIm.js";import"./entity-object-Dl04-FE8.js";import"./user-data-4Ls0MsfF.js";import"./workspace-arrangement-w-T2xUGF.js";import"./three-contract-Dkt6PmWY.js";import"./three-BRZq2Px5.js";import"./editor-layers-D7HXdvWY.js";import"./component-instance-root-CzRnRMe6.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-DkfGlaNQ.js";import"./source-persistence-backend-BRcy23H9.js";import"./three-projection-core-Dt5ARGlM.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-B8Je7bNy.js";import"./deferred-ingest-play-7EJo_GNB.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DsywMgco.js";import"./board-guides-DhwRYHGT.js";import"./relative-import-specifier-DMppRnNH.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BqIL-41D.js";import"./inference-diagnostics-D7uYs70A.js";import"./writer-tw6EcuVO.js";import"./three-state-3qPk0Sq8.js";import"./editor-shell-store-CGWO4Ldz.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-C4Fu0zS3.js";import"./game-surface-defaults-D8S4cRxi.js";const zt="workspace.service";function At(){t()}export{zt as point,At as start};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/r3f-design-session-DbXiRez3.js","assets/index-C5tasxXb.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/edit-mode-authoring-DgvzXpiM.js","assets/game-network-COQRxS_4.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-DRmkIrIW.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-CwYeaZ9J.js","assets/contract-system-adapters-D6ion7SF.js","assets/game-contract-seams-B5a-Ev-f.js","assets/seeded-random-DzZFJTfh.js","assets/game-audio-BeCyd0Ha.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/events-156d8d12.esm-CYeuVCYr.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/index-bQE2NA0D.js","assets/live-project-verbs-Cc1GXtG5.js","assets/capability-coverage-39yK3DGt.js","assets/json-history-resource-BUJgH5iK.js","assets/binding-resolver-BoecCqTq.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-DoN23Ol2.js","assets/canvas-entry-runtime-DeyvFKWS.js","assets/three-ingest-runtime-D9JoNRjk.js","assets/EffectComposer-BEAt0PtQ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-DTnDQXm0.js","assets/Pass-D1MRT672.js","assets/CSS3DRenderer-BsAqfavI.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-BHA-cdrW.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/active-ingest-Ra07ruDo.js","assets/ingest-source-persistence-SAe0xIy-.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-DMMIH4rt.js","assets/mounted-authoring-BS53gpIm.js","assets/entity-object-Dl04-FE8.js","assets/user-data-4Ls0MsfF.js","assets/workspace-arrangement-w-T2xUGF.js","assets/three-contract-Dkt6PmWY.js","assets/three-BRZq2Px5.js","assets/editor-layers-D7HXdvWY.js","assets/component-instance-root-CzRnRMe6.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-DkfGlaNQ.js","assets/source-persistence-backend-BRcy23H9.js","assets/three-projection-core-Dt5ARGlM.js","assets/body-marks-C1LxJtQb.js","assets/user-data-CODoGZqA.js","assets/object-marks-BnvSuCTt.js","assets/structural-ids-BOo2BRoY.js","assets/object3d-authoring-subject-XccsO0xG.js","assets/r3f-physics-binding-B8Je7bNy.js","assets/deferred-ingest-play-7EJo_GNB.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-DsywMgco.js","assets/board-guides-DhwRYHGT.js","assets/relative-import-specifier-DMppRnNH.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-BqIL-41D.js","assets/inference-diagnostics-D7uYs70A.js","assets/writer-tw6EcuVO.js","assets/three-state-3qPk0Sq8.js","assets/editor-shell-store-CGWO4Ldz.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-C4Fu0zS3.js","assets/game-surface-defaults-D8S4cRxi.js","assets/scene-framing-DUd4lKtW.js","assets/assets-BcrMQHRv.js","assets/loader-BTUKnX5Q.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/create-runtime-C82CmCbc.js","assets/binding-Bmxqznjk.js","assets/root-stacking-BEd9ZvxC.js","assets/setup-renderer-DF2zFw-E.js","assets/index-DHhMOs_s.js","assets/defaults-DKiBJCPN.js","assets/render-settings-DCZaLK-j.js","assets/render-features-CBm-s0QE.js","assets/loop-gate-report-N52EWFGD.js","assets/system-slot-E2mEdiih.js","assets/performance-profiler-CMbwGBuk.js","assets/live-gesture-lock-DJbrjOqf.js"])))=>i.map(i=>d[i]);
2
- import{_ as s,aF as n}from"./index-C5tasxXb.js";import{r as a}from"./design-time-mount-registry-DUpXCg1U.js";import{q as c}from"./edit-mode-authoring-DgvzXpiM.js";import{a as u}from"./json-history-resource-BUJgH5iK.js";import{o as h}from"./three-authoring-adapter-DkfGlaNQ.js";import{t as i}from"./editor-shell-store-CGWO4Ldz.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"./component-instance-root-CzRnRMe6.js";import"./user-data-4Ls0MsfF.js";import"./workspace-arrangement-w-T2xUGF.js";import"./source-persistence-backend-BRcy23H9.js";import"./ingest-source-persistence-SAe0xIy-.js";import"./three-projection-core-Dt5ARGlM.js";import"./editor-layers-D7HXdvWY.js";import"./three-BRZq2Px5.js";import"./entity-object-Dl04-FE8.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three.core-3arARmh6.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"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-B8Je7bNy.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./Pass-D1MRT672.js";const U="workspace.service";function X(){const r=s(()=>import("./r3f-design-session-DbXiRez3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99]));r.catch(()=>{});const m=n("three",(t,o)=>h(i(t),()=>i(t).scene,o,u(o))),e=a({kind:"three",owner:"@volter/editor-game/three/three-authoring",async mountWorldRootSession(t){const o=t,{mountR3FDesignSession:p}=await r;return p(o.store,o.composite,o.renderer)}});return c(),()=>{e(),m()}}export{U as point,X as start};
@@ -1 +0,0 @@
1
- import{e as r}from"./three-integration-D3zBmOoj.js";import"./index-C5tasxXb.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-RElCrqXb.js";import"./root-stacking-BEd9ZvxC.js";import"./user-data-4Ls0MsfF.js";import"./workspace-arrangement-w-T2xUGF.js";import"./model-thumbnail-B7DVMYtQ.js";import"./studio-environment-BGU84AOG.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./object3d-document-session-registry-Bk-I9jZH.js";import"./three-state-3qPk0Sq8.js";import"./editor-shell-store-CGWO4Ldz.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./editor-layers-D7HXdvWY.js";import"./entity-object-Dl04-FE8.js";import"./three-contract-Dkt6PmWY.js";import"./hierarchy-marks-fSNwXIFe.js";import"./component-instance-root-CzRnRMe6.js";import"./viewport-door-C4Fu0zS3.js";import"./content-bounds-tMCAobKq.js";import"./asset-preview-BkFAKkZH.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{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as t}from"./index-C5tasxXb.js";import{r as m}from"./index-nmcBqr7Y.js";import{P as p}from"./PlayBar-CBD4rcED.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-Dua_x6Wx.js";import"./run-selection-DRkjJF-w.js";import"./game-network-COQRxS_4.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-DRmkIrIW.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CwYeaZ9J.js";import"./contract-system-adapters-D6ion7SF.js";import"./game-contract-seams-B5a-Ev-f.js";import"./seeded-random-DzZFJTfh.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-Cc1GXtG5.js";import"./capability-coverage-39yK3DGt.js";import"./edit-mode-authoring-DgvzXpiM.js";import"./json-history-resource-BUJgH5iK.js";import"./binding-resolver-BoecCqTq.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DoN23Ol2.js";import"./canvas-entry-runtime-DeyvFKWS.js";import"./three-ingest-runtime-D9JoNRjk.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-Ra07ruDo.js";import"./ingest-source-persistence-SAe0xIy-.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-DMMIH4rt.js";import"./mounted-authoring-BS53gpIm.js";import"./entity-object-Dl04-FE8.js";import"./user-data-4Ls0MsfF.js";import"./workspace-arrangement-w-T2xUGF.js";import"./three-contract-Dkt6PmWY.js";import"./three-BRZq2Px5.js";import"./editor-layers-D7HXdvWY.js";import"./component-instance-root-CzRnRMe6.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-DkfGlaNQ.js";import"./source-persistence-backend-BRcy23H9.js";import"./three-projection-core-Dt5ARGlM.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-B8Je7bNy.js";import"./deferred-ingest-play-7EJo_GNB.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DsywMgco.js";import"./board-guides-DhwRYHGT.js";import"./relative-import-specifier-DMppRnNH.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BqIL-41D.js";import"./inference-diagnostics-D7uYs70A.js";import"./writer-tw6EcuVO.js";import"./three-state-3qPk0Sq8.js";import"./editor-shell-store-CGWO4Ldz.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-C4Fu0zS3.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};