@volter/game-editor 0.5.81 → 0.5.83

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 (347) hide show
  1. package/BUNDLED_NOTICES +22 -22
  2. package/catalog/entries/blender.json +2 -2
  3. package/catalog/entries/music.json +2 -2
  4. package/catalog/entries/reflections.json +1 -1
  5. package/catalog/project-source/src/lib/reflections/ReflectionProbe.tsx +34 -5
  6. package/catalog/project-source/src/lib/reflections/index.ts +1 -0
  7. package/catalog/project-source/src/lib/reflections/probe-controller.ts +44 -3
  8. package/catalog/project-source/src/lib/reflections/reflection-probe-registry.ts +32 -7
  9. package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +638 -160
  10. package/dist/.vite/manifest.json +2184 -2165
  11. package/dist/assets/{AssetBudgetPanel-CfVYW4ED.js → AssetBudgetPanel-SrgQ5Lx5.js} +3 -3
  12. package/dist/assets/{AudioViewer-J10BXrtm.js → AudioViewer-BqEwLSZN.js} +1 -1
  13. package/dist/assets/{CanvasBoardDocument-BgIbuOQF.js → CanvasBoardDocument-BfzWZdLX.js} +1 -1
  14. package/dist/assets/CanvasSceneViewport-CQ7ewAlO.js +1 -0
  15. package/dist/assets/{ColorInput-fX1V5l8_.js → ColorInput-DQ6YyPD_.js} +1 -1
  16. package/dist/assets/EntityModelDocument-By-BM9dS.js +1 -0
  17. package/dist/assets/{EnvironmentAssetDocument-QuLkCom9.js → EnvironmentAssetDocument-CrD37BI0.js} +1 -1
  18. package/dist/assets/{GameplaySessionTimeline-D0z5Mc0R.js → GameplaySessionTimeline-DYtnW0Si.js} +1 -1
  19. package/dist/assets/{ImageViewer-DWUPPWRf.js → ImageViewer-CZNpdUEA.js} +1 -1
  20. package/dist/assets/InspectorObjectPreview-gWOVV6Ll.js +1 -0
  21. package/dist/assets/{JsonAssetDocument-C0Lr6RwY.js → JsonAssetDocument-Bg74MDXy.js} +1 -1
  22. package/dist/assets/{LiveModuleDocument-CaGmr0EA.js → LiveModuleDocument-CSqzNMjn.js} +1 -1
  23. package/dist/assets/{LutAssetDocument-B6GmsOYd.js → LutAssetDocument-CsboXa8x.js} +1 -1
  24. package/dist/assets/ModelAssetDocument-DDVoKZpQ.js +1 -0
  25. package/dist/assets/{NonThreeAuthoringBootstrap-byKqf1kp.js → NonThreeAuthoringBootstrap-DcqD6_34.js} +1 -1
  26. package/dist/assets/Object3DDocumentToolbar-p2pd2TuS.js +1 -0
  27. package/dist/assets/Object3DDocumentViewport-BvNfSHi_.js +2 -0
  28. package/dist/assets/{Object3DPreview-pn9i3vwZ.js → Object3DPreview-Bv0fZcdS.js} +1 -1
  29. package/dist/assets/{OnlineAssetDetail-PDCDAcqz.js → OnlineAssetDetail-CPDafN4x.js} +1 -1
  30. package/dist/assets/{PlayBar-DEnkv3v6.js → PlayBar-CBD4rcED.js} +1 -1
  31. package/dist/assets/{QuarksAssetDocument-2x66XymD.js → QuarksAssetDocument-DUUhKUxZ.js} +1 -1
  32. package/dist/assets/{ReactCanvasControls-rFwp2CeP.js → ReactCanvasControls-3ual87uP.js} +1 -1
  33. package/dist/assets/{RootSelectionOverlay-B9rf-SSV.js → RootSelectionOverlay-DtX8yWUQ.js} +1 -1
  34. package/dist/assets/{ShaderAssetDocument-ImI6jbzB.js → ShaderAssetDocument-rkhRdPRk.js} +5 -5
  35. package/dist/assets/{ShadowEditor-DXxVxTzk.js → ShadowEditor-B-3FlftY.js} +1 -1
  36. package/dist/assets/{SourceAssetViewer-CMbp_o7v.js → SourceAssetViewer-CsMPohqK.js} +1 -1
  37. package/dist/assets/StageHost-BOaImrmu.js +2 -0
  38. package/dist/assets/{StoryPreviewMount-D2zLWzWy.js → StoryPreviewMount-BI-ANJix.js} +1 -1
  39. package/dist/assets/{ThreeBoardDocument-nX3UiY3u.js → ThreeBoardDocument-CoBjs8BP.js} +2 -2
  40. package/dist/assets/{ThreeIsolationSceneContent-CGHM0vsg.js → ThreeIsolationSceneContent-uShwSK1O.js} +1 -1
  41. package/dist/assets/{ToolObject3DPreview-BfNcqtFv.js → ToolObject3DPreview-CBZdWA_7.js} +1 -1
  42. package/dist/assets/{Toolbar-BJRJsbHG.js → Toolbar-DJK7o_be.js} +1 -1
  43. package/dist/assets/{TransientHint-CDvYgnzu.js → TransientHint-Dgu6u7U5.js} +1 -1
  44. package/dist/assets/{VideoViewer-B6Dv2zeQ.js → VideoViewer-BwTcASO2.js} +1 -1
  45. package/dist/assets/{ViewportShadingMenu-CrTY7tnk.js → ViewportShadingMenu-DUROUZdC.js} +1 -1
  46. package/dist/assets/{active-ingest-lrfMBhf9.js → active-ingest-Ra07ruDo.js} +3 -3
  47. package/dist/assets/{animation-clock-DktVGV5-.js → animation-clock-CKeqYCt9.js} +1 -1
  48. package/dist/assets/{animation-mixers.service-fkojNtor.js → animation-mixers.service-BNiEU2dA.js} +1 -1
  49. package/dist/assets/{animation-timeline.utility-DDrUZKe8.js → animation-timeline.utility-DQqMh1lF.js} +1 -1
  50. package/dist/assets/{asset-budget-asset.menu-CDlgKSO9.js → asset-budget-asset.menu-DFFih9b4.js} +1 -1
  51. package/dist/assets/{asset-budget.action-D6n-wIR3.js → asset-budget.action-C3SMMeSX.js} +1 -1
  52. package/dist/assets/{asset-budget.document-DFByoagB.js → asset-budget.document-B5NTy5dU.js} +1 -1
  53. package/dist/assets/{asset-budget.menu-B2u_1dWR.js → asset-budget.menu-Cclz2utV.js} +1 -1
  54. package/dist/assets/{asset-editor-persistence-e6bYhVnm.js → asset-editor-persistence-DsIjTddX.js} +1 -1
  55. package/dist/assets/{asset-loaders-Bsq-3hNt.js → asset-loaders-CQiLyapK.js} +1 -1
  56. package/dist/assets/{asset-preview-B7j9QV6N.js → asset-preview-BkFAKkZH.js} +1 -1
  57. package/dist/assets/{audio-unlock.service-7oO4YVIj.js → audio-unlock.service-CupzdUuC.js} +1 -1
  58. package/dist/assets/{audio.utility-9fcsT3YY.js → audio.utility-0il96T5s.js} +1 -1
  59. package/dist/assets/autoplay.service-SQBFaKvM.js +1 -0
  60. package/dist/assets/{babylon-authoring-adapter-BJfYxqDM.js → babylon-authoring-adapter-HZ_SbAet.js} +1 -1
  61. package/dist/assets/{binding-resolver-CBXePHiR.js → binding-resolver-BoecCqTq.js} +2 -2
  62. package/dist/assets/blender-emscripten-engine-Dk-rq4bm.js +2 -0
  63. package/dist/assets/{blender-node-editor.document-xA7eGv3-.js → blender-node-editor.document-B_MGPd1D.js} +1 -1
  64. package/dist/assets/{blender-properties-tab-nY8UOQUL.js → blender-properties-tab-ITmWT_gZ.js} +1 -1
  65. package/dist/assets/blender-runtime-host-CACzxt1b.js +4 -0
  66. package/dist/assets/{blender-runtime-skin-D3Arti9-.js → blender-runtime-skin-CwFW2Hj7.js} +36 -36
  67. package/dist/assets/blender-runtime.document-CozOB5TX.js +13 -0
  68. package/dist/assets/blender-screenshot.menu-BFR44H0L.js +1 -0
  69. package/dist/assets/{blender-timeline.document-DXoQ7y8E.js → blender-timeline.document-C0Zzi8Vo.js} +1 -1
  70. package/dist/assets/{blender-uv-editor.document-CMOyob1N.js → blender-uv-editor.document-BktbYoor.js} +1 -1
  71. package/dist/assets/{blender-version.status-16xnuezC.js → blender-version.status-CLPjDPFV.js} +1 -1
  72. package/dist/assets/blender-wali-engine-CUWSQ_vI.js +2 -0
  73. package/dist/assets/{blender.command-Br2EUk6Q.js → blender.command-DdHEHM62.js} +1 -1
  74. package/dist/assets/{board-guides-whelE-Dr.js → board-guides-DhwRYHGT.js} +1 -1
  75. package/dist/assets/bridge.command-D4O9w4ft.js +3 -0
  76. package/dist/assets/{browserAll-BfZu7-UJ.js → browserAll-BhQBgoJL.js} +1 -1
  77. package/dist/assets/build-player.document-DFr-d97N.js +1 -0
  78. package/dist/assets/{build-profiles.document-DNncGOL3.js → build-profiles.document-C-64YHSV.js} +2 -2
  79. package/dist/assets/{build-progress.status-DnJetNft.js → build-progress.status-DVm95Lmt.js} +1 -1
  80. package/dist/assets/{build-session-BaEmzCkm.js → build-session-C_SD2MNJ.js} +1 -1
  81. package/dist/assets/{build.action-exbllMgM.js → build.action-CPee4b_9.js} +1 -1
  82. package/dist/assets/{build.command-Imykh8LN.js → build.command-CrZ5sHYt.js} +1 -1
  83. package/dist/assets/{build.header-9RzLy3UQ.js → build.header-DDbhXD6t.js} +1 -1
  84. package/dist/assets/{build.menu-CRhA3yID.js → build.menu-Ci-W_A1E.js} +1 -1
  85. package/dist/assets/{build.service-CxIdSEPw.js → build.service-CpUtTLP4.js} +1 -1
  86. package/dist/assets/{camera-BiBGeQQ4.js → camera-BZM67LhS.js} +1 -1
  87. package/dist/assets/{camera-runtime.inspector-DmRFynxC.js → camera-runtime.inspector-BLgPGd97.js} +1 -1
  88. package/dist/assets/{canvas-design-mount-DJ6zQJKG.js → canvas-design-mount-DPAhHuIQ.js} +6 -6
  89. package/dist/assets/{canvas-entry-runtime-Cjga4XYp.js → canvas-entry-runtime-DeyvFKWS.js} +2 -2
  90. package/dist/assets/{canvas-preview-frames-EoYgD6W4.js → canvas-preview-frames-Cm0GJ-40.js} +1 -1
  91. package/dist/assets/{canvas-story-capture.service-D5UntNCd.js → canvas-story-capture.service-Ziv9XNot.js} +2 -2
  92. package/dist/assets/{capability-coverage-9qm5WVwt.js → capability-coverage-39yK3DGt.js} +4 -4
  93. package/dist/assets/collaboration-presence-MR8LW4mZ.js +1 -0
  94. package/dist/assets/{collider-CTHtUvnl.js → collider-4Sgmy-qt.js} +1 -1
  95. package/dist/assets/{component-board.service-yIS2UB-T.js → component-board.service-BdcOkwgn.js} +2 -2
  96. package/dist/assets/{component-board.service-Bf-ETQF0.js → component-board.service-DO_oHdnS.js} +2 -2
  97. package/dist/assets/{component-board.service-foqmr9Ii.js → component-board.service-DRJcETCR.js} +2 -2
  98. package/dist/assets/{component-contracts.service-Do9hADdW.js → component-contracts.service-BYQTO1HK.js} +1 -1
  99. package/dist/assets/{component-instance-root-MBgAuUpp.js → component-instance-root-CzRnRMe6.js} +1 -1
  100. package/dist/assets/{component-verbs.command-DtMdPuyO.js → component-verbs.command-CFv5y_pR.js} +1 -1
  101. package/dist/assets/component-verbs.service-BMBAwqjA.js +1 -0
  102. package/dist/assets/{config-B6tt9xy3.js → config-C6iAsozB.js} +2 -2
  103. package/dist/assets/configurations-Dua_x6Wx.js +1 -0
  104. package/dist/assets/{connection.status-BNPvWdJD.js → connection.status-DQJvEgdT.js} +1 -1
  105. package/dist/assets/{constraints.inspector-DoOn25Lk.js → constraints.inspector-AHeP-LBc.js} +1 -1
  106. package/dist/assets/{content-bounds-BFpR_e--.js → content-bounds-tMCAobKq.js} +1 -1
  107. package/dist/assets/{contract-system-adapters-BRHtWOi_.js → contract-system-adapters-D6ion7SF.js} +1 -1
  108. package/dist/assets/{coverage.service-BB1XhwsL.js → coverage.service-Dm_H5o74.js} +2 -2
  109. package/dist/assets/{create-runtime-B6u6x5eK.js → create-runtime-C82CmCbc.js} +2 -2
  110. package/dist/assets/{curve-D11mIGoN.js → curve-C7Gg05DV.js} +1 -1
  111. package/dist/assets/{data-asset-DejEwzXj.js → data-asset-BquhdFX2.js} +1 -1
  112. package/dist/assets/{data-ref-DJNVzksb.js → data-ref-Dcq9KJIG.js} +1 -1
  113. package/dist/assets/{debug-bridge-DlGIEyTc.js → debug-bridge-DODnLefz.js} +1 -1
  114. package/dist/assets/{debug-registry-Dagj3b6J.js → debug-registry-CwYeaZ9J.js} +1 -1
  115. package/dist/assets/deferred-ingest-play-7EJo_GNB.js +2 -0
  116. package/dist/assets/{design-time-canvas-mount-Cpb_jITI.js → design-time-canvas-mount-DCINR1Hg.js} +2 -2
  117. package/dist/assets/{design-time-layers-DT4X-pJp.js → design-time-layers-i1N-JjPz.js} +1 -1
  118. package/dist/assets/{design-time-mount.service-DEa-41ij.js → design-time-mount.service-CtnijZJJ.js} +2 -2
  119. package/dist/assets/{design-time-mount.service-Ck5Hjxtn.js → design-time-mount.service-DrUVDx2-.js} +2 -2
  120. package/dist/assets/{design-time-react-mount-DCTpYS51.js → design-time-react-mount-CpgoPMGr.js} +1 -1
  121. package/dist/assets/{document-preview-three-TjlxMDBR.js → document-preview-three-CuBUMP4o.js} +1 -1
  122. package/dist/assets/{dom-authoring-adapter-C3ZsI41l.js → dom-authoring-adapter-DSM-2JgU.js} +1 -1
  123. package/dist/assets/{draco3d-Ddr7J1sS.js → draco3d--d91Ay95.js} +1 -1
  124. package/dist/assets/{edit-mode-audio.service-D047aZ6I.js → edit-mode-audio.service-C9_299G0.js} +1 -1
  125. package/dist/assets/{edit-mode-authoring-DubxVdEM.js → edit-mode-authoring-DgvzXpiM.js} +1 -1
  126. package/dist/assets/{edit-mode-networking.service-DitjC2ZL.js → edit-mode-networking.service-B6l9ESo-.js} +1 -1
  127. package/dist/assets/editor-api-D9NJWRVZ.js +1 -0
  128. package/dist/assets/{editor-layers-BK3fNRb7.js → editor-layers-D7HXdvWY.js} +1 -1
  129. package/dist/assets/{editor-shell-store-Bro0arjr.js → editor-shell-store-CGWO4Ldz.js} +1 -1
  130. package/dist/assets/{entity-object-BFppZ54X.js → entity-object-Dl04-FE8.js} +1 -1
  131. package/dist/assets/{extend-MkXq6t1H.js → extend-GXzJ7XU_.js} +1 -1
  132. package/dist/assets/fork-menu-DO1KASKk.js +1 -0
  133. package/dist/assets/{frame-debugger-store-xbOH83D0.js → frame-debugger-store-DOewah-x.js} +1 -1
  134. package/dist/assets/{game-contract-seams-5IUqvr7b.js → game-contract-seams-B5a-Ev-f.js} +1 -1
  135. package/dist/assets/{game-css-scope-transform-DDAoTvZQ.js → game-css-scope-transform-CQhuDfMR.js} +1 -1
  136. package/dist/assets/game-document.service-CMc6SfH9.js +1 -0
  137. package/dist/assets/{game-eval.command-DcFoKUe7.js → game-eval.command-MY5YxNL-.js} +1 -1
  138. package/dist/assets/{game-module-access-ABBzTWg7.js → game-module-access-BafPamOR.js} +1 -1
  139. package/dist/assets/game-network-COQRxS_4.js +22 -0
  140. package/dist/assets/gameplay-export-i_fnSpRp.js +1 -0
  141. package/dist/assets/gameplay-replay-BM_frdpr.js +1 -0
  142. package/dist/assets/{gameplay.command-qdQLKC3A.js → gameplay.command-Dkp2IG9Q.js} +1 -1
  143. package/dist/assets/generation-jobs-B6T_j2D_.js +1 -0
  144. package/dist/assets/{generation.service-CdwRWoIV.js → generation.service-BXJTa6dr.js} +1 -1
  145. package/dist/assets/{generations-nW4LG5qG.js → generations-DqNhoKz8.js} +1 -1
  146. package/dist/assets/{generations.status-DgjVrgGL.js → generations.status-Dt8TW7Lk.js} +1 -1
  147. package/dist/assets/{hierarchy-marks-Pb6wnNcu.js → hierarchy-marks-fSNwXIFe.js} +1 -1
  148. package/dist/assets/{hosted-asset-materialization-BCnTLunr.js → hosted-asset-materialization-76jdNP28.js} +2 -2
  149. package/dist/assets/ibl-override-material-C09OAhCc.js +6 -0
  150. package/dist/assets/{index-CvGsVzTo.js → index-C5tasxXb.js} +294 -294
  151. package/dist/assets/{index-D7q1gYjq.js → index-CKznhnFr.js} +1 -1
  152. package/dist/assets/{index-BPuw4yre.js → index-CO6HFW9e.js} +1 -1
  153. package/dist/assets/{index-CaZZDx3x.js → index-Cf-uQvPt.js} +1 -1
  154. package/dist/assets/{index-BlWeDGvp.js → index-Cub6ESrb.js} +2 -2
  155. package/dist/assets/{index-Ds9fZyOU.js → index-D5pDWxZH.js} +1 -1
  156. package/dist/assets/{index-BYoN6-Qw.js → index-c6fd_bqy.js} +1 -1
  157. package/dist/assets/{index-Bz4YDJ7o.js → index-cGaEzVz5.js} +1 -1
  158. package/dist/assets/{index-Db2ixdvK.js → index-cNdu8TlA.js} +1 -1
  159. package/dist/assets/{inference-diagnostics-BCwXk-CS.js → inference-diagnostics-D7uYs70A.js} +1 -1
  160. package/dist/assets/{ingest-boot-viewport-BPER30gQ.js → ingest-boot-viewport-CjtFKkMD.js} +1 -1
  161. package/dist/assets/ingest-siblings-Dlx0quan.js +1 -0
  162. package/dist/assets/{ingest-source-persistence-CPlDA2D8.js → ingest-source-persistence-SAe0xIy-.js} +1 -1
  163. package/dist/assets/{ingest.service-BhwFGlqY.js → ingest.service-BXkZ1vXa.js} +1 -1
  164. package/dist/assets/{inspect-DxfAFkho.js → inspect-BqIL-41D.js} +1 -1
  165. package/dist/assets/instances.command-wpQVWPb9.js +1 -0
  166. package/dist/assets/{json-history-resource-CckDydoO.js → json-history-resource-BUJgH5iK.js} +1 -1
  167. package/dist/assets/layered-pick-RElCrqXb.js +1 -0
  168. package/dist/assets/{light-DF4nTzTq.js → light-DLADuHH2.js} +1 -1
  169. package/dist/assets/live-project-verbs-Cc1GXtG5.js +1 -0
  170. package/dist/assets/{machine.document-DaPLAXaa.js → machine.document-ER7OD-37.js} +1 -1
  171. package/dist/assets/{machines.finder-C9s8SFtp.js → machines.finder-CZ2ZxPFR.js} +1 -1
  172. package/dist/assets/material-CspuVO3Q.js +1 -0
  173. package/dist/assets/{material-factory-CCcnlv8E.js → material-factory-KV4mqSzl.js} +1 -1
  174. package/dist/assets/{mesh-CVBvSsCX.js → mesh-CrIkl8_H.js} +1 -1
  175. package/dist/assets/{model-asset-sections.service-vVRv6iOD.js → model-asset-sections.service-Cyom1FRs.js} +1 -1
  176. package/dist/assets/{model-inspection-Dd-hn5v2.js → model-inspection-BLOiPoW4.js} +1 -1
  177. package/dist/assets/{model-thumbnail-BDU_QU37.js → model-thumbnail-B7DVMYtQ.js} +1 -1
  178. package/dist/assets/{models.finder-CQMZz5xX.js → models.finder-At2wuWE3.js} +1 -1
  179. package/dist/assets/{module-mode-DcBz3aI7.js → module-mode-CHqvCb69.js} +2 -2
  180. package/dist/assets/{mount-canvas-ingest-root-DMWeT_c3.js → mount-canvas-ingest-root-uISMj3zn.js} +2 -2
  181. package/dist/assets/{mount-dom-ingest-root-Bx1TmleJ.js → mount-dom-ingest-root-C8PsgrCd.js} +2 -2
  182. package/dist/assets/{mount-ingest-root-BDP8atUq.js → mount-ingest-root-Dmb_D_oY.js} +2 -2
  183. package/dist/assets/{mount-manifest-C5QVCZlS.js → mount-manifest-CGwCOZO6.js} +1 -1
  184. package/dist/assets/{mount-three-ingest-root-DSmhgOJn.js → mount-three-ingest-root-BGdd6UoG.js} +1 -1
  185. package/dist/assets/{mounted-authoring-D-tXkNKH.js → mounted-authoring-BS53gpIm.js} +1 -1
  186. package/dist/assets/{mounted-story-viewport-source-Snu9yn1n.js → mounted-story-viewport-source-CL9Ra-_N.js} +1 -1
  187. package/dist/assets/{native-debug-module-XfhvyMrK.js → native-debug-module-DRmkIrIW.js} +1 -1
  188. package/dist/assets/{navigation-CTTcWe0R.js → navigation-DOuNvaV6.js} +1 -1
  189. package/dist/assets/{navmesh.menu-mFjQ30B0.js → navmesh.menu-9g4nO2dp.js} +1 -1
  190. package/dist/assets/{navmesh.service-BJPp7ZXu.js → navmesh.service-B7MllQj9.js} +1 -1
  191. package/dist/assets/network-observer.service-DY_39EdG.js +1 -0
  192. package/dist/assets/{network.utility-C-_7MTIV.js → network.utility-BgzPLUS5.js} +1 -1
  193. package/dist/assets/object3d-document-session-registry-Bk-I9jZH.js +2 -0
  194. package/dist/assets/{oid-transform-Bgdv7kST.js → oid-transform-CHeHFNUu.js} +1 -1
  195. package/dist/assets/{particles-CHXYb9Jd.js → particles-RD4cI69F.js} +1 -1
  196. package/dist/assets/{pixi-authoring-adapter-lj5CidSR.js → pixi-authoring-adapter-BuP3Qc7X.js} +1 -1
  197. package/dist/assets/{pixi-live-write-target-BEL9GCCr.js → pixi-live-write-target-DzyXhmiw.js} +1 -1
  198. package/dist/assets/play.command-C7iZbm26.js +2 -0
  199. package/dist/assets/{presentation-CmK-bEDi.js → presentation-43UAzXCV.js} +1 -1
  200. package/dist/assets/{product-gjrRHe-K.js → product-BfaoEtK8.js} +1 -1
  201. package/dist/assets/{profiler.action-CZ6UQi9A.js → profiler.action-DIp4OPNA.js} +1 -1
  202. package/dist/assets/{profiler.menu-DxbnC3d6.js → profiler.menu-tHZqii7c.js} +1 -1
  203. package/dist/assets/{profiler.utility-BvARl7sM.js → profiler.utility-CSg5WNN8.js} +1 -1
  204. package/dist/assets/{project-authoring-session-CBKXzBlD.js → project-authoring-session-BbwFHEzZ.js} +2 -2
  205. package/dist/assets/{properties-bone-constraints.inspector-Co8UpbhC.js → properties-bone-constraints.inspector-ooGWoGiI.js} +1 -1
  206. package/dist/assets/{properties-bone.inspector-CFXh2lQH.js → properties-bone.inspector-C_UdJjDe.js} +1 -1
  207. package/dist/assets/{properties-collection.inspector-Jq9X8fEq.js → properties-collection.inspector-Dm4MNZQK.js} +1 -1
  208. package/dist/assets/{properties-constraints.inspector-CMcKD_Jc.js → properties-constraints.inspector-DlCHF3Nd.js} +1 -1
  209. package/dist/assets/{properties-data.inspector-cP3izSat.js → properties-data.inspector-DTfv2ILq.js} +1 -1
  210. package/dist/assets/{properties-material.inspector-CrZIovv9.js → properties-material.inspector-C_-GsOvF.js} +1 -1
  211. package/dist/assets/{properties-modifiers.inspector-DqQMxoiL.js → properties-modifiers.inspector-BELGiG49.js} +1 -1
  212. package/dist/assets/{properties-object.inspector-DM63eANJ.js → properties-object.inspector-COLlzAo4.js} +1 -1
  213. package/dist/assets/{properties-output.inspector-B475IBEd.js → properties-output.inspector-DLpqLRCp.js} +1 -1
  214. package/dist/assets/{properties-particles.inspector-vGXQ4kWx.js → properties-particles.inspector-C8ZhuG-X.js} +1 -1
  215. package/dist/assets/{properties-physics.inspector-CfwqpVGS.js → properties-physics.inspector-DQ3fUdPx.js} +1 -1
  216. package/dist/assets/{properties-render.inspector-BYLknsM7.js → properties-render.inspector-DlPuoXQ-.js} +1 -1
  217. package/dist/assets/{properties-scene.inspector-BcIZBfGk.js → properties-scene.inspector-itnV8qGu.js} +1 -1
  218. package/dist/assets/{properties-texture.inspector-p3Owurhl.js → properties-texture.inspector-BZbBAQ_O.js} +1 -1
  219. package/dist/assets/{properties-view-layer.inspector-CN-5jzB9.js → properties-view-layer.inspector-CNOevOy3.js} +1 -1
  220. package/dist/assets/{properties-world.inspector-DVp8fYWx.js → properties-world.inspector-C7u-dAkO.js} +1 -1
  221. package/dist/assets/r3f-design-session-DbXiRez3.js +2 -0
  222. package/dist/assets/{r3f-physics-binding-BcTFD1ZS.js → r3f-physics-binding-B8Je7bNy.js} +1 -1
  223. package/dist/assets/{r3f-source-authoring-adapter-DVnhzoxp.js → r3f-source-authoring-adapter-CarxaAwC.js} +1 -1
  224. package/dist/assets/{react-canvas-navigation-CBorZtWB.js → react-canvas-navigation-BTVCmK_d.js} +1 -1
  225. package/dist/assets/{react-inspector.service-Dc99kogU.js → react-inspector.service-BV9ZVls7.js} +1 -1
  226. package/dist/assets/{react-story-board-6-BjI32N.js → react-story-board-CETbMKNG.js} +1 -1
  227. package/dist/assets/{react-three-rapier.esm-BO2XPUEM.js → react-three-rapier.esm-BQ3IBcaP.js} +1 -1
  228. package/dist/assets/{react-world-authoring-adapter-B6BiehHR.js → react-world-authoring-adapter-DsywMgco.js} +1 -1
  229. package/dist/assets/{realm-services-DCnaxwIb.js → realm-services-DoN23Ol2.js} +1 -1
  230. package/dist/assets/{reflection-probe-capture.inspector-CWneVfEe.js → reflection-probe-capture.inspector-D0grUDdX.js} +1 -1
  231. package/dist/assets/{registry-BQ9YcFZF.js → registry-CZxNkOhN.js} +1 -1
  232. package/dist/assets/{relative-import-specifier-BvzqkvYS.js → relative-import-specifier-DMppRnNH.js} +1 -1
  233. package/dist/assets/{render-env-F320_iHT.js → render-env-BAO3Rc6G.js} +1 -1
  234. package/dist/assets/{render-features-DFwHsGxu.js → render-features-CBm-s0QE.js} +1 -1
  235. package/dist/assets/{render-settings-BPcHd4LA.js → render-settings-DCZaLK-j.js} +1 -1
  236. package/dist/assets/{resolve-three-CnxafYrg.js → resolve-three-Bwj7rkZB.js} +13 -13
  237. package/dist/assets/{root-seam-contract-CueaHgB9.js → root-seam-contract-DMUsCBFW.js} +1 -1
  238. package/dist/assets/{run-selection-BMQWV9Fn.js → run-selection-DRkjJF-w.js} +1 -1
  239. package/dist/assets/{scene-capture-DcMYbX9_.js → scene-capture-DVXdql_1.js} +1 -1
  240. package/dist/assets/{scene-document.service-CZpLI3b6.js → scene-document.service-CxGQ1BN-.js} +2 -2
  241. package/dist/assets/{scene-framing-nVyYC4Y-.js → scene-framing-DUd4lKtW.js} +1 -1
  242. package/dist/assets/{seeded-random-D0QPgfm6.js → seeded-random-DzZFJTfh.js} +1 -1
  243. package/dist/assets/{setup-renderer-ji8Qt-PP.js → setup-renderer-DF2zFw-E.js} +1 -1
  244. package/dist/assets/{source-object3d-authoring-adapter-owosRx07.js → source-object3d-authoring-adapter-RimvAMDG.js} +1 -1
  245. package/dist/assets/{source-persistence-backend-Djuk0m-7.js → source-persistence-backend-BRcy23H9.js} +1 -1
  246. package/dist/assets/stage-keyboard-JRZ1CNbL.js +1 -0
  247. package/dist/assets/stage-overlay-set-DHN11xPU.js +1 -0
  248. package/dist/assets/{stage-presence-markers-CQlXR9fX.js → stage-presence-markers-AQuGIbnu.js} +1 -1
  249. package/dist/assets/stage-transform-tools-B8u8n8gJ.js +1 -0
  250. package/dist/assets/{standard-viewport-dressing-e4mnLmI6.js → standard-viewport-dressing-NHKaiGVg.js} +3 -3
  251. package/dist/assets/{state-watch.action-Cv3W67Kr.js → state-watch.action-B_conRk5.js} +1 -1
  252. package/dist/assets/{state-watch.menu-Cuziz9RM.js → state-watch.menu-B6GNrnYH.js} +1 -1
  253. package/dist/assets/{state-watch.utility-B1zkFd_6.js → state-watch.utility-CxuUOPhl.js} +1 -1
  254. package/dist/assets/story-capture-DYXQlnlZ.js +1 -0
  255. package/dist/assets/{story-documents-Cjoy-ydN.js → story-documents-D_Tg0idt.js} +1 -1
  256. package/dist/assets/{story-documents.service-Csto-LsX.js → story-documents.service-DQh0SkkQ.js} +1 -1
  257. package/dist/assets/{story-documents.service-gVxcUtso.js → story-documents.service-ES8nxeNu.js} +1 -1
  258. package/dist/assets/story-media-presence-D4w-waFJ.js +1 -0
  259. package/dist/assets/{story-pixi-preview-uA6AevDw.js → story-pixi-preview-B6GFGUQG.js} +1 -1
  260. package/dist/assets/{story-presentation-DgAoj9Qt.js → story-presentation-6qhUDkv4.js} +1 -1
  261. package/dist/assets/{story-three-preview-CQYi1rZ_.js → story-three-preview-BgLSJIlN.js} +2 -2
  262. package/dist/assets/{studio-environment-DK0ke0m0.js → studio-environment-BGU84AOG.js} +1 -1
  263. package/dist/assets/{surface-state-DlUcJe84.js → surface-state-BtNEZzCd.js} +1 -1
  264. package/dist/assets/{syntactic-prop-specs-92aOVqyZ.js → syntactic-prop-specs-B309atpv.js} +1 -1
  265. package/dist/assets/{team-playtest.service-CGBismiY.js → team-playtest.service-B8leDEE-.js} +1 -1
  266. package/dist/assets/{three-bdxPiUPb.js → three-BRZq2Px5.js} +1 -1
  267. package/dist/assets/{three-authoring-adapter-BuqO9MDt.js → three-authoring-adapter-DkfGlaNQ.js} +1 -1
  268. package/dist/assets/three-authoring.service-sOchR4o8.js +2 -0
  269. package/dist/assets/{three-ingest-runtime-CwRnwvb0.js → three-ingest-runtime-D9JoNRjk.js} +1 -1
  270. package/dist/assets/three-integration-D3zBmOoj.js +2 -0
  271. package/dist/assets/three-integration.service-CE8aNHob.js +1 -0
  272. package/dist/assets/{three-projection-core-BO23VKAP.js → three-projection-core-Dt5ARGlM.js} +1 -1
  273. package/dist/assets/{three-state-BhQOBgKC.js → three-state-3qPk0Sq8.js} +1 -1
  274. package/dist/assets/{three-story-capture.service-BAtrzxHq.js → three-story-capture.service-B3U2L4qG.js} +2 -2
  275. package/dist/assets/{three-story-model-D_bo7Gl-.js → three-story-model-C96x-E0V.js} +1 -1
  276. package/dist/assets/{three-viewport-presentation-CWanX03c.js → three-viewport-presentation-DGctcUkE.js} +5 -5
  277. package/dist/assets/transform-mode-request-C0cdwtJf.js +1 -0
  278. package/dist/assets/{transport-strip-CFLRAIQd.js → transport-strip-8OsPiJIm.js} +1 -1
  279. package/dist/assets/transport.header-D1Otpit3.js +1 -0
  280. package/dist/assets/{tuples-BKzzn3tK.js → tuples-CaBWqclR.js} +1 -1
  281. package/dist/assets/ui-board-document-BMTAhmJP.js +2 -0
  282. package/dist/assets/{user-data-DfBtZvxw.js → user-data-4Ls0MsfF.js} +1 -1
  283. package/dist/assets/{utility-view-state-CL4NJh3n.js → utility-view-state-gIzv2Oo_.js} +1 -1
  284. package/dist/assets/{viewport-door-CuJjGYTz.js → viewport-door-C4Fu0zS3.js} +1 -1
  285. package/dist/assets/{viewport-root-presentation-CkSAEMH-.js → viewport-root-presentation-DMMIH4rt.js} +1 -1
  286. package/dist/assets/{viewport-surface-status-D3t-0oLs.js → viewport-surface-status-CdI6sQko.js} +1 -1
  287. package/dist/assets/{webworkerAll-DCmB9rsA.js → webworkerAll-BINEvomm.js} +1 -1
  288. package/dist/assets/worker-Cu9kIzIf.js +2 -0
  289. package/dist/assets/{workspace-arrangement-C9uemwSK.js → workspace-arrangement-w-T2xUGF.js} +1 -1
  290. package/dist/assets/{world-documents-Dvn8e5I0.js → world-documents-feEUCgVE.js} +1 -1
  291. package/dist/assets/{world-root-stage-binding-BB7acZV_.js → world-root-stage-binding-BDb6wt_C.js} +1 -1
  292. package/dist/assets/{xstate-animation-binding-DctwT981.js → xstate-animation-binding-Bhz1Uhhw.js} +1 -1
  293. package/dist/assets/{xstate-animation-meta-s4Vc8Wu3.js → xstate-animation-meta-CvDlYgrt.js} +1 -1
  294. package/dist-node/cli.js +21 -18
  295. package/package.json +16 -16
  296. package/template/src/lib/reflections/ReflectionProbe.tsx +34 -5
  297. package/template/src/lib/reflections/index.ts +1 -0
  298. package/template/src/lib/reflections/probe-controller.ts +44 -3
  299. package/template/src/lib/reflections/reflection-probe-registry.ts +32 -7
  300. package/template/src/lib/reflections/volume-reflection-material.ts +638 -160
  301. package/dist/assets/CanvasSceneViewport-Z8OReqpB.js +0 -1
  302. package/dist/assets/EntityModelDocument-BltE1A7W.js +0 -1
  303. package/dist/assets/InspectorObjectPreview-BpttBw3o.js +0 -1
  304. package/dist/assets/ModelAssetDocument-BBDnXTQm.js +0 -1
  305. package/dist/assets/Object3DDocumentToolbar-BHuuMZnS.js +0 -1
  306. package/dist/assets/Object3DDocumentViewport-ByDDwGJD.js +0 -2
  307. package/dist/assets/StageHost-D1Sz5aud.js +0 -2
  308. package/dist/assets/autoplay.service-DncOrn-K.js +0 -1
  309. package/dist/assets/blender-emscripten-engine-DQljvfR7.js +0 -2
  310. package/dist/assets/blender-runtime-host-CcqXT39s.js +0 -4
  311. package/dist/assets/blender-runtime.document-DDW5jIJe.js +0 -12
  312. package/dist/assets/blender-wali-engine-CO-jG_ik.js +0 -2
  313. package/dist/assets/bridge.command-T93eURWq.js +0 -3
  314. package/dist/assets/build-player.document-DJQLP4xM.js +0 -1
  315. package/dist/assets/collaboration-presence-Q6zcL5v0.js +0 -1
  316. package/dist/assets/component-verbs.service-CJYq28Zw.js +0 -1
  317. package/dist/assets/configurations-BcYOQ7i-.js +0 -1
  318. package/dist/assets/deferred-ingest-play-DZiOEH9a.js +0 -2
  319. package/dist/assets/editor-api-CPh65aBN.js +0 -1
  320. package/dist/assets/fork-menu-DzoCyQvA.js +0 -1
  321. package/dist/assets/game-document.service-CxfiFnxt.js +0 -1
  322. package/dist/assets/game-network-BPTyOFqA.js +0 -22
  323. package/dist/assets/gameplay-export-CRnHCUBb.js +0 -1
  324. package/dist/assets/gameplay-replay-yPaMxi2o.js +0 -1
  325. package/dist/assets/generation-jobs-Cy1oE-Ff.js +0 -1
  326. package/dist/assets/ibl-override-material-CMo_a49U.js +0 -6
  327. package/dist/assets/ingest-siblings-2QHhcCgA.js +0 -1
  328. package/dist/assets/instances.command-BJ-I9vtW.js +0 -1
  329. package/dist/assets/layered-pick-BaxBYi7u.js +0 -1
  330. package/dist/assets/live-project-verbs-B7S-wGjC.js +0 -1
  331. package/dist/assets/material-rGFsBrD0.js +0 -1
  332. package/dist/assets/network-observer.service-CjeDB1Id.js +0 -1
  333. package/dist/assets/object3d-document-session-registry-CWaOPDYg.js +0 -2
  334. package/dist/assets/play.command-C9QyYFgv.js +0 -2
  335. package/dist/assets/r3f-design-session-Cyy1sDGH.js +0 -2
  336. package/dist/assets/stage-keyboard-G6HMStmP.js +0 -1
  337. package/dist/assets/stage-overlay-set-ChHqsFiR.js +0 -1
  338. package/dist/assets/stage-transform-tools-BM9u9Awe.js +0 -1
  339. package/dist/assets/story-capture-Drqhmo7i.js +0 -1
  340. package/dist/assets/story-media-presence-CYc2fP4y.js +0 -1
  341. package/dist/assets/three-authoring.service-CMym8IbB.js +0 -2
  342. package/dist/assets/three-integration-BHoulbny.js +0 -2
  343. package/dist/assets/three-integration.service-BlgF9hV3.js +0 -1
  344. package/dist/assets/transform-mode-request-Bg6T_rOC.js +0 -1
  345. package/dist/assets/transport.header-B3dK1KaC.js +0 -1
  346. package/dist/assets/ui-board-document-DMxgQ-9n.js +0 -2
  347. package/dist/assets/worker-CJIsrsP6.js +0 -2
@@ -1 +1 @@
1
- import{r as it,a as at}from"./design-time-layers-DT4X-pJp.js";import{f8 as st,b9 as lt,g5 as ut,g6 as dt,O as E,g7 as mt,g8 as L,bq as Y,dk as H,am as ct,eH as U,an as $,d5 as pt,ch as ht,g9 as z}from"./index-CvGsVzTo.js";import{h as ft,d as gt,g as bt}from"./react-story-board-6-BjI32N.js";import{C as wt}from"./crash-null-boundary-v3a0uEgw.js";import{r as yt,a as St}from"./realm-services-DCnaxwIb.js";import{r as It}from"./react-root-BHA-cdrW.js";import{m as Rt}from"./StoryPreviewMount-D2zLWzWy.js";import{c as vt,s as Pt}from"./story-presentation-DgAoj9Qt.js";import{d as Mt}from"./three-story-model-D_bo7Gl-.js";import{c as Ct}from"./inspect-DxfAFkho.js";import{R as J}from"./react-world-authoring-adapter-B6BiehHR.js";import"./root-stacking-BEd9ZvxC.js";import"./edit-mode-authoring-DubxVdEM.js";import"./design-time-mount-registry-DUpXCg1U.js";import"./game-surface-defaults-D8S4cRxi.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"./canvas-entry-runtime-Cjga4XYp.js";import"./debug-registry-Dagj3b6J.js";import"./three-ingest-runtime-CwRnwvb0.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./inference-diagnostics-BCwXk-CS.js";import"./board-guides-whelE-Dr.js";import"./relative-import-specifier-BvzqkvYS.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./writer-tw6EcuVO.js";function Et(e){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="svg"||o==="SVG"||o==="PICTURE")return!0;const r=getComputedStyle(e);if(r.visibility==="hidden"||r.display==="none")return!1;if(xt(r.backgroundColor)||r.backgroundImage&&r.backgroundImage!=="none"||r.boxShadow&&r.boxShadow!=="none"||r.borderStyle!=="none"&&r.borderStyle!==""&&(parseFloat(r.borderTopWidth)>0||parseFloat(r.borderRightWidth)>0||parseFloat(r.borderBottomWidth)>0||parseFloat(r.borderLeftWidth)>0))return!0;for(const n of e.childNodes)if(n.nodeType===Node.TEXT_NODE&&(n.textContent??"").trim()!=="")return!0;return!1}function xt(e){if(!e||e==="transparent")return!1;const o=/^rgba\(\s*[\d.]+\s*,\s*[\d.]+\s*,\s*[\d.]+\s*,\s*([\d.]+)\s*\)$/.exec(e);return o?parseFloat(o[1])>0:!0}function Nt(e,o=r=>r.getBoundingClientRect()){const r=o(e),n=e.offsetWidth;if(r.width<=0||n<=0)return null;const s=r.width/n;let d=Number.POSITIVE_INFINITY,c=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,y=Number.NEGATIVE_INFINITY;for(const p of e.querySelectorAll("*")){if(!Et(p))continue;const m=o(p);m.width<=0||m.height<=0||(d=Math.min(d,(m.left-r.left)/s),c=Math.min(c,(m.top-r.top)/s),i=Math.max(i,(m.right-r.left)/s),y=Math.max(y,(m.bottom-r.top)/s))}return i<=d||y<=c?null:{x:d,y:c,width:i-d,height:y-c}}let x=!1;function kt(e,o){if(!e)return;z({adapter:e,seam:"editor.stories.apply",stage:"effect",detail:`the design board applied portable story ${o}`,run:()=>e.stories.apply(o,o)});const r=e.selection;r&&z({adapter:e,seam:"editor.selection.set",stage:"effect",detail:`the design board selected portable story ${o}`,run:()=>r.set([o])})}let X=!1;async function Ft(){if(X)return;X=!0;const e=bt();if(!(e.width!==null||e.height!==null))try{const o=await ht("volter.project.json");if(!o)return;const r=JSON.parse(o),n=r.resolution?.width,s=r.resolution?.height;if(typeof n!="number"||typeof s!="number"||n<64||s<64||n>4096||s>4096)return;gt(n,s)}catch{}}function Tt(e,o){return{id:e,surface:"dom",description:void 0,adapter:{type:"builtin",identity:"dom",surface:"dom"},entry:o,zOrder:0,pausable:!0,loop:"gated"}}async function At(e,o){try{const r=await St(o,pt());return{ok:!0,Entry:await It(e,r)}}catch(r){return{ok:!1,error:r}}}async function we(e,o,r){const{projectRootPath:n,store:s,activationDocumentId:d}=r;x?x=!1:await st({rootPath:n});const c=lt(),i=Mt(c),y=e.path,p=y?await At(Tt(e.worldId,y),n):{ok:!1,error:new Error(`design-time react layer "${e.worldId}": no \`entry\` declared — nothing to mount.`)},m=p.ok?ut(p.Entry):void 0,Q=m?dt(m,e.path):null,j=i.find(g=>g.id===Q?.id)??null;if(i.length>0){const g=it(n,e.worldId),R=i.find(t=>t.id===g)??j??i[0];e.path&&!j&&E.warn(`[design-time-layers] React root "${e.worldId}" has no story naming its entry component${m?` "${m}"`:""} — the board opens on "${R.label}". Give a *.stories.tsx a \`meta.component\` of this root's entry component to choose its default preview.`,"authoring");let k=!1,M=null,F=null;const T=new Map,D=vt(i);await Ft();const l=ft(o,i.map(t=>({id:t.id,label:t.label,modulePath:t.modulePath,...t.title?{title:t.title}:{},parameters:t.parameters,...t.globals?{globals:t.globals}:{},...t.viewportLocked!==void 0?{viewportLocked:t.viewportLocked}:{}})),R.id,(t,u)=>{F=u,kt(M,t)},Pt(i,D)),_=t=>{if(k)return;const u=l.frames.get(t.id);if(!u)return;if(t.parameters?.layout==="fullscreen"){l.setMeasuredFrame(t.id,null);return}const a={width:u.content.offsetWidth,height:u.content.offsetHeight},f=a.width>0?Nt(u.content):null;if(!f){l.setMeasuredFrame(t.id,null);return}const C=8,S=48;let b=Math.max(0,f.x-C),w=Math.max(0,f.y-C),v=Math.min(a.width,f.x+f.width+C),P=Math.min(a.height,f.y+f.height+C);if(v-b<S){const A=(S-(v-b))/2;b=Math.max(0,b-A),v=Math.min(a.width,b+S)}if(P-w<S){const A=(S-(P-w))/2;w=Math.max(0,w-A),P=Math.min(a.height,w+S)}if(v-b>=a.width*.9&&P-w>=a.height*.9){l.setMeasuredFrame(t.id,null);return}l.setMeasuredFrame(t.id,{frame:{width:Math.round(v-b),height:Math.round(P-w)},mount:a,offset:{x:Math.round(b),y:Math.round(w)}})},rt=t=>{setTimeout(()=>_(t),0),setTimeout(()=>_(t),1e3)},G=async(t,u=t.args)=>{const h=l.frames.get(t.id)?.content;if(h){try{const a=await Rt(h,t.modulePath,t.name,t.Component,u);if(!a)return;if(k){a.unmount();return}T.set(t.id,a),l.clearError(t.id),rt(t)}catch(a){const f=Y(a);l.setError(t.id,f),E.error(`[design-time-layers] React root "${e.worldId}" failed mounting portable story "${t.name}": ${f}`,"authoring")}s.notifyIngestEdit()}};await Promise.all(i.map(t=>G(t))),l.setNote(mt().note),g&&l.activate(R.id,!0);const O=new Map(i.map(t=>[t.id,t])),nt={tagName:"DIV",get children(){return l.activeContent().children},getAttribute:t=>o.getAttribute(t),getBoundingClientRect:()=>o.getBoundingClientRect(),get style(){return o.style},get textContent(){return l.activeContent().textContent}},q=await L();return M=new J(nt,s,{...q?{writeBackend:q}:{},designTokens:()=>{const t=l.activeContent(),u=t.closest?.("[data-volter-game-styles]")??t.querySelector?.("[data-volter-game-styles]")??t;return Ct(getComputedStyle(u))},assetRoot:o,portableStories:i.map(t=>({id:t.id,label:t.label,args:t.args,name:t.name,modulePath:t.modulePath})),portableHierarchy:D,activePortableStoryId:R.id,onPortableStoryApplied:t=>{const u=(t?O.get(t):null)??R;at(n,e.worldId,u.id);const h=F;F=null,l.activate(u.id,h===null||h==="zoom")},onPortableStoryArgsChanged:(t,u)=>{const h=O.get(t);h&&G(h,u).catch(a=>{E.error(`[design-time-layers] React root "${e.worldId}" failed updating portable story "${h.name}" args: ${Y(a)}`,"authoring")})}}),d&&requestAnimationFrame(()=>H(d)),{adapter:M,dispose:()=>{k=!0,M.disposeReactRootAdapter();for(const t of T.values())t.unmount();T.clear(),l.dispose()}}}if(!p.ok)throw p.error instanceof Error?p.error:new Error(String(p.error));E.warn(`[design-time-layers] React root "${e.worldId}" has no portable CSF preview — the project declares no UI stories. Add a *.stories.tsx; give it a \`meta.component\` of this root's entry component${m?` (${m}, ${e.path})`:""} to make it this root’s default preview. Falling back to rendering the entry bare.`,"authoring");const Z=p.Entry,{createElement:B,createRoot:tt,flushSync:et}=await yt(),N=tt(o),ot=g=>{N.render(B(wt,{key:"__entry__",onCaught:g,children:B(Z)}))};let I=null;if(et(()=>{ot(g=>{I=g})}),I!==null)throw N.unmount(),I instanceof Error?I:new Error(String(I));const V=await L(),W=new J(o,s,{...V?{writeBackend:V}:{}});return d&&requestAnimationFrame(()=>H(d)),{adapter:W,dispose:()=>{W.disposeReactRootAdapter(),N.unmount()}}}function K(){return $().map(e=>e.ok?e.stories.map(o=>o.id).join(","):`!${e.modulePath}`).join("|")}function ye(e){let o=U()?$():null,r=o===null?null:K(),n=null;const s=ct(()=>{if(!U())return;const d=$(),c=K();if(o===null){o=d,r=c;return}const i=c!==r;o=d,r=c,i&&(n!==null&&clearTimeout(n),n=setTimeout(()=>{n=null,x=!0,e(),setTimeout(()=>{x=!1},0)},250))});return()=>{n!==null&&clearTimeout(n),n=null,s()}}export{we as mountReactDesignLayer,ye as reprojectWhenStoriesRepublish};
1
+ import{r as it,a as at}from"./design-time-layers-i1N-JjPz.js";import{f9 as st,ba as lt,g9 as ut,ga as dt,Z as E,gb as mt,gc as Y,bY as q,dI as U,as as ct,eI as z,at as $,dw as pt,cP as ft,gd as H}from"./index-C5tasxXb.js";import{h as ht,d as gt,g as bt}from"./react-story-board-CETbMKNG.js";import{C as wt}from"./crash-null-boundary-v3a0uEgw.js";import{r as yt,a as St}from"./realm-services-DoN23Ol2.js";import{r as It}from"./react-root-BHA-cdrW.js";import{m as Pt}from"./StoryPreviewMount-BI-ANJix.js";import{c as Rt,s as vt}from"./story-presentation-6qhUDkv4.js";import{d as Mt}from"./three-story-model-C96x-E0V.js";import{c as Ct}from"./inspect-BqIL-41D.js";import{R as J}from"./react-world-authoring-adapter-DsywMgco.js";import"./root-stacking-BEd9ZvxC.js";import"./edit-mode-authoring-DgvzXpiM.js";import"./design-time-mount-registry-DUpXCg1U.js";import"./game-surface-defaults-D8S4cRxi.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"./canvas-entry-runtime-DeyvFKWS.js";import"./debug-registry-CwYeaZ9J.js";import"./three-ingest-runtime-D9JoNRjk.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./inference-diagnostics-D7uYs70A.js";import"./board-guides-DhwRYHGT.js";import"./relative-import-specifier-DMppRnNH.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./writer-tw6EcuVO.js";function Et(e){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="svg"||o==="SVG"||o==="PICTURE")return!0;const r=getComputedStyle(e);if(r.visibility==="hidden"||r.display==="none")return!1;if(xt(r.backgroundColor)||r.backgroundImage&&r.backgroundImage!=="none"||r.boxShadow&&r.boxShadow!=="none"||r.borderStyle!=="none"&&r.borderStyle!==""&&(parseFloat(r.borderTopWidth)>0||parseFloat(r.borderRightWidth)>0||parseFloat(r.borderBottomWidth)>0||parseFloat(r.borderLeftWidth)>0))return!0;for(const n of e.childNodes)if(n.nodeType===Node.TEXT_NODE&&(n.textContent??"").trim()!=="")return!0;return!1}function xt(e){if(!e||e==="transparent")return!1;const o=/^rgba\(\s*[\d.]+\s*,\s*[\d.]+\s*,\s*[\d.]+\s*,\s*([\d.]+)\s*\)$/.exec(e);return o?parseFloat(o[1])>0:!0}function Nt(e,o=r=>r.getBoundingClientRect()){const r=o(e),n=e.offsetWidth;if(r.width<=0||n<=0)return null;const s=r.width/n;let d=Number.POSITIVE_INFINITY,c=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,y=Number.NEGATIVE_INFINITY;for(const p of e.querySelectorAll("*")){if(!Et(p))continue;const m=o(p);m.width<=0||m.height<=0||(d=Math.min(d,(m.left-r.left)/s),c=Math.min(c,(m.top-r.top)/s),i=Math.max(i,(m.right-r.left)/s),y=Math.max(y,(m.bottom-r.top)/s))}return i<=d||y<=c?null:{x:d,y:c,width:i-d,height:y-c}}let x=!1;function kt(e,o){if(!e)return;H({adapter:e,seam:"editor.stories.apply",stage:"effect",detail:`the design board applied portable story ${o}`,run:()=>e.stories.apply(o,o)});const r=e.selection;r&&H({adapter:e,seam:"editor.selection.set",stage:"effect",detail:`the design board selected portable story ${o}`,run:()=>r.set([o])})}let X=!1;async function Ft(){if(X)return;X=!0;const e=bt();if(!(e.width!==null||e.height!==null))try{const o=await ft("volter.project.json");if(!o)return;const r=JSON.parse(o),n=r.resolution?.width,s=r.resolution?.height;if(typeof n!="number"||typeof s!="number"||n<64||s<64||n>4096||s>4096)return;gt(n,s)}catch{}}function Tt(e,o){return{id:e,surface:"dom",description:void 0,adapter:{type:"builtin",identity:"dom",surface:"dom"},entry:o,zOrder:0,pausable:!0,loop:"gated"}}async function At(e,o){try{const r=await St(o,pt());return{ok:!0,Entry:await It(e,r)}}catch(r){return{ok:!1,error:r}}}async function we(e,o,r){const{projectRootPath:n,store:s,activationDocumentId:d}=r;x?x=!1:await st({rootPath:n});const c=lt(),i=Mt(c),y=e.path,p=y?await At(Tt(e.worldId,y),n):{ok:!1,error:new Error(`design-time react layer "${e.worldId}": no \`entry\` declared — nothing to mount.`)},m=p.ok?ut(p.Entry):void 0,K=m?dt(m,e.path):null,j=i.find(g=>g.id===K?.id)??null;if(i.length>0){const g=it(n,e.worldId),P=i.find(t=>t.id===g)??j??i[0];e.path&&!j&&E.warn(`[design-time-layers] React root "${e.worldId}" has no story naming its entry component${m?` "${m}"`:""} — the board opens on "${P.label}". Give a *.stories.tsx a \`meta.component\` of this root's entry component to choose its default preview.`,"authoring");let k=!1,M=null,F=null;const T=new Map,D=Rt(i);await Ft();const l=ht(o,i.map(t=>({id:t.id,label:t.label,modulePath:t.modulePath,...t.title?{title:t.title}:{},parameters:t.parameters,...t.globals?{globals:t.globals}:{},...t.viewportLocked!==void 0?{viewportLocked:t.viewportLocked}:{}})),P.id,(t,u)=>{F=u,kt(M,t)},vt(i,D)),_=t=>{if(k)return;const u=l.frames.get(t.id);if(!u)return;if(t.parameters?.layout==="fullscreen"){l.setMeasuredFrame(t.id,null);return}const a={width:u.content.offsetWidth,height:u.content.offsetHeight},h=a.width>0?Nt(u.content):null;if(!h){l.setMeasuredFrame(t.id,null);return}const C=8,S=48;let b=Math.max(0,h.x-C),w=Math.max(0,h.y-C),R=Math.min(a.width,h.x+h.width+C),v=Math.min(a.height,h.y+h.height+C);if(R-b<S){const A=(S-(R-b))/2;b=Math.max(0,b-A),R=Math.min(a.width,b+S)}if(v-w<S){const A=(S-(v-w))/2;w=Math.max(0,w-A),v=Math.min(a.height,w+S)}if(R-b>=a.width*.9&&v-w>=a.height*.9){l.setMeasuredFrame(t.id,null);return}l.setMeasuredFrame(t.id,{frame:{width:Math.round(R-b),height:Math.round(v-w)},mount:a,offset:{x:Math.round(b),y:Math.round(w)}})},rt=t=>{setTimeout(()=>_(t),0),setTimeout(()=>_(t),1e3)},G=async(t,u=t.args)=>{const f=l.frames.get(t.id)?.content;if(f){try{const a=await Pt(f,t.modulePath,t.name,t.Component,u);if(!a)return;if(k){a.unmount();return}T.set(t.id,a),l.clearError(t.id),rt(t)}catch(a){const h=q(a);l.setError(t.id,h),E.error(`[design-time-layers] React root "${e.worldId}" failed mounting portable story "${t.name}": ${h}`,"authoring")}s.notifyIngestEdit()}};await Promise.all(i.map(t=>G(t))),l.setNote(mt().note),g&&l.activate(P.id,!0);const L=new Map(i.map(t=>[t.id,t])),nt={tagName:"DIV",get children(){return l.activeContent().children},getAttribute:t=>o.getAttribute(t),getBoundingClientRect:()=>o.getBoundingClientRect(),get style(){return o.style},get textContent(){return l.activeContent().textContent}},O=await Y();return M=new J(nt,s,{...O?{writeBackend:O}:{},designTokens:()=>{const t=l.activeContent(),u=t.closest?.("[data-volter-game-styles]")??t.querySelector?.("[data-volter-game-styles]")??t;return Ct(getComputedStyle(u))},assetRoot:o,portableStories:i.map(t=>({id:t.id,label:t.label,args:t.args,name:t.name,modulePath:t.modulePath})),portableHierarchy:D,activePortableStoryId:P.id,onPortableStoryApplied:t=>{const u=(t?L.get(t):null)??P;at(n,e.worldId,u.id);const f=F;F=null,l.activate(u.id,f===null||f==="zoom")},onPortableStoryArgsChanged:(t,u)=>{const f=L.get(t);f&&G(f,u).catch(a=>{E.error(`[design-time-layers] React root "${e.worldId}" failed updating portable story "${f.name}" args: ${q(a)}`,"authoring")})}}),d&&requestAnimationFrame(()=>U(d)),{adapter:M,dispose:()=>{k=!0,M.disposeReactRootAdapter();for(const t of T.values())t.unmount();T.clear(),l.dispose()}}}if(!p.ok)throw p.error instanceof Error?p.error:new Error(String(p.error));E.warn(`[design-time-layers] React root "${e.worldId}" has no portable CSF preview — the project declares no UI stories. Add a *.stories.tsx; give it a \`meta.component\` of this root's entry component${m?` (${m}, ${e.path})`:""} to make it this root’s default preview. Falling back to rendering the entry bare.`,"authoring");const Q=p.Entry,{createElement:B,createRoot:tt,flushSync:et}=await yt(),N=tt(o),ot=g=>{N.render(B(wt,{key:"__entry__",onCaught:g,children:B(Q)}))};let I=null;if(et(()=>{ot(g=>{I=g})}),I!==null)throw N.unmount(),I instanceof Error?I:new Error(String(I));const V=await Y(),W=new J(o,s,{...V?{writeBackend:V}:{}});return d&&requestAnimationFrame(()=>U(d)),{adapter:W,dispose:()=>{W.disposeReactRootAdapter(),N.unmount()}}}function Z(){return $().map(e=>e.ok?e.stories.map(o=>o.id).join(","):`!${e.modulePath}`).join("|")}function ye(e){let o=z()?$():null,r=o===null?null:Z(),n=null;const s=ct(()=>{if(!z())return;const d=$(),c=Z();if(o===null){o=d,r=c;return}const i=c!==r;o=d,r=c,i&&(n!==null&&clearTimeout(n),n=setTimeout(()=>{n=null,x=!0,e(),setTimeout(()=>{x=!1},0)},250))});return()=>{n!==null&&clearTimeout(n),n=null,s()}}export{we as mountReactDesignLayer,ye as reprojectWhenStoriesRepublish};
@@ -1 +1 @@
1
- import{c as g}from"./content-bounds-BFpR_e--.js";import{isEditorOwnedObject as u}from"./editor-layers-BK3fNRb7.js";import{m as x}from"./renderer-ownership-BovSEcLv.js";import{W as w}from"./three.module-BLhyNg0e.js";import{f as C}from"./scene-framing-nVyYC4Y-.js";import{ej as y,A as M,d9 as d,fo as s,ex as v,cj as S}from"./three.core-3arARmh6.js";import"./hierarchy-marks-Pb6wnNcu.js";import"./workspace-arrangement-C9uemwSK.js";import"./index-CvGsVzTo.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";function W(n){const e=[];return n.traverse(a=>{!u(a)&&a.isCamera&&e.push(a)}),e}function R(n,e){const a=[];n.traverse(r=>{r.parent&&u(r)&&a.push({object:r,parent:r.parent})});for(const{object:r}of a)r.removeFromParent();let t;try{t=g(n)}finally{for(const{object:r,parent:h}of a)h.add(r)}const o=t.filter(r=>!r.overlay&&!r.enclosure),c=C(o.map(r=>r.box)),i=new d(42,e,.01,1e5),f=c.isEmpty()?new s:c.getCenter(new s),m=c.isEmpty()?1:Math.max(.01,c.getBoundingSphere(new v).radius),p=m/Math.sin(S.degToRad(i.fov/2));return i.position.copy(f).addScaledVector(new s(1,.75,1).normalize(),p*1.15),i.lookAt(f),i.near=Math.max(.001,p-m*2.5),i.far=p+m*3,i.updateProjectionMatrix(),i.updateMatrixWorld(!0),i}function P(n,e){if(e.camera){const t=new d(e.camera.fov??42,e.width/e.height,.01,1e5);return t.position.set(e.camera.position.x,e.camera.position.y,e.camera.position.z),t.lookAt(e.camera.target.x,e.camera.target.y,e.camera.target.z),t.updateMatrixWorld(!0),t}const a=W(n);if(a.length===1){const t=a[0].clone();return t.matrixWorld.copy(a[0].matrixWorld),t.matrixWorld.decompose(t.position,t.quaternion,t.scale),t instanceof d&&(t.aspect=e.width/e.height,t.updateProjectionMatrix()),t}return R(n,e.width/e.height)}function I(n,e,a,t){e.updateMatrixWorld(!0);const l=P(n,a),o=x(new w({antialias:!0,alpha:!0,preserveDrawingBuffer:!0}));let c;try{return c=t?.(o),o.setPixelRatio(1),o.setSize(a.width,a.height,!1),o.outputColorSpace=y,o.toneMapping=M,o.setClearColor(2106411,e.background===null?0:1),o.render(e,l),o.domElement.toDataURL("image/png")}finally{c?.(),o.dispose(),o.forceContextLoss()}}export{I as captureAuthoredThreeScenePreview};
1
+ import{c as g}from"./content-bounds-tMCAobKq.js";import{isEditorOwnedObject as u}from"./editor-layers-D7HXdvWY.js";import{m as x}from"./renderer-ownership-BovSEcLv.js";import{W as w}from"./three.module-BLhyNg0e.js";import{f as C}from"./scene-framing-DUd4lKtW.js";import{ej as y,A as M,d9 as d,fo as s,ex as v,cj as S}from"./three.core-3arARmh6.js";import"./hierarchy-marks-fSNwXIFe.js";import"./workspace-arrangement-w-T2xUGF.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";function W(n){const e=[];return n.traverse(a=>{!u(a)&&a.isCamera&&e.push(a)}),e}function R(n,e){const a=[];n.traverse(r=>{r.parent&&u(r)&&a.push({object:r,parent:r.parent})});for(const{object:r}of a)r.removeFromParent();let t;try{t=g(n)}finally{for(const{object:r,parent:h}of a)h.add(r)}const o=t.filter(r=>!r.overlay&&!r.enclosure),c=C(o.map(r=>r.box)),i=new d(42,e,.01,1e5),f=c.isEmpty()?new s:c.getCenter(new s),m=c.isEmpty()?1:Math.max(.01,c.getBoundingSphere(new v).radius),p=m/Math.sin(S.degToRad(i.fov/2));return i.position.copy(f).addScaledVector(new s(1,.75,1).normalize(),p*1.15),i.lookAt(f),i.near=Math.max(.001,p-m*2.5),i.far=p+m*3,i.updateProjectionMatrix(),i.updateMatrixWorld(!0),i}function P(n,e){if(e.camera){const t=new d(e.camera.fov??42,e.width/e.height,.01,1e5);return t.position.set(e.camera.position.x,e.camera.position.y,e.camera.position.z),t.lookAt(e.camera.target.x,e.camera.target.y,e.camera.target.z),t.updateMatrixWorld(!0),t}const a=W(n);if(a.length===1){const t=a[0].clone();return t.matrixWorld.copy(a[0].matrixWorld),t.matrixWorld.decompose(t.position,t.quaternion,t.scale),t instanceof d&&(t.aspect=e.width/e.height,t.updateProjectionMatrix()),t}return R(n,e.width/e.height)}function I(n,e,a,t){e.updateMatrixWorld(!0);const l=P(n,a),o=x(new w({antialias:!0,alpha:!0,preserveDrawingBuffer:!0}));let c;try{return c=t?.(o),o.setPixelRatio(1),o.setSize(a.width,a.height,!1),o.outputColorSpace=y,o.toneMapping=M,o.setClearColor(2106411,e.background===null?0:1),o.render(e,l),o.domElement.toDataURL("image/png")}finally{c?.(),o.dispose(),o.forceContextLoss()}}export{I as captureAuthoredThreeScenePreview};
@@ -1 +1 @@
1
- import{ar as y,as as v}from"./index-CvGsVzTo.js";import{J as R,c as x}from"./json-history-resource-CckDydoO.js";import{D as C,s as w,a as b,c as k,m as T}from"./react-world-authoring-adapter-B6BiehHR.js";import{g as p,b as u}from"./inspect-DxfAFkho.js";function H(a){const e=(typeof a=="string"?a:a?.baseVal)?.trim()??"";if(e)return e.split(/\s+/)[0]}function S(a,t){if(a.id)return`${t}#${a.id}`;const e=H(a.className??"");return e?`${t}.${e}`:t}function j(a){const t=new Map;for(const[e,s]of a.nodes)t.set(e,{id:e,tag:s.object.tagName.toLowerCase(),el:s.object,parentId:s.parentId,childIds:[...s.childIds]});return{nodes:t,rootIds:[...a.rootIds]}}const g=[{prop:"color",label:"Color",type:"color"},{prop:"backgroundColor",label:"Background",type:"color"},{prop:"borderColor",label:"Border Color",type:"color"},{prop:"fontSize",label:"Font Size",type:"number"},{prop:"width",label:"Width",type:"number"},{prop:"height",label:"Height",type:"number"},{prop:"padding",label:"Padding",type:"number"},{prop:"margin",label:"Margin",type:"number"},{prop:"borderRadius",label:"Border Radius",type:"number"},{prop:"gap",label:"Gap",type:"number"},{prop:"display",label:"Display",type:"enum",options:["flex","block","none","grid"]},{prop:"textAlign",label:"Text Align",type:"enum",options:["left","center","right"]},{prop:"flexDirection",label:"Flex Direction",type:"enum",options:["row","column"]}],f="style.",M=new Map(g.map(({prop:a,type:t})=>[a,t]));class D{constructor(t,e,s){this.root=t,this.store=e;const o=e.shell.projectHistory;this.historyResource=o?new R({history:o,kind:"session-state",scope:"session",subject:{...s.journal,id:`${s.journal.id}/react-dom-edits`},displayName:"React DOM edits",capture:()=>this.captureHistoryState(),restore:async i=>{this.restoreHistoryState(i)}}):null}capabilities={transform:!1,inspectorFields:!0,persist:!1};provenance={source:"foreign",label:"live-only",detail:"Unmodified ingested React game — style edits apply for this session only and are never saved."};doc={};historyResource;projector=new C(w());snapCache=null;snapInvalidationScheduled=!1;boxEditSession=null;lockedIds=new Set;snapshot(){if(this.snapCache)return this.snapCache;this.projector.project(this.root);const t=j(this.projector);return this.snapCache=t,this.snapInvalidationScheduled||(this.snapInvalidationScheduled=!0,queueMicrotask(()=>{this.snapCache=null,this.snapInvalidationScheduled=!1})),t}nodeCount(){return this.snapshot().nodes.size}toEditorNode(t){return{id:t.id,label:S(t.el,t.tag),role:"element",kind:t.tag,parentId:t.parentId,childIds:t.childIds}}applyStyleToElement(t,e,s){t.style&&(t.style[e]=s)}recordStyleEdit(t,e,s){const o=this.doc[t]??{};o[e]=s,this.doc[t]=o}hierarchy={roots:()=>{const{nodes:t,rootIds:e}=this.snapshot();return e.map(s=>this.toEditorNode(t.get(s)))},node:t=>{const e=this.snapshot().nodes.get(t);return e?this.toEditorNode(e):null}};selection={get:()=>[...this.store.shell.selectedEntityIds],set:t=>this.store.shell.selectMultiple(t)};pickable={pick:(t,e)=>{const{nodes:s}=this.snapshot();let o=null,i=Number.POSITIVE_INFINITY,r=-1,l=-1;for(const c of s.values()){if(l++,this.lockedIds.has(c.id)||c.el.style?.pointerEvents==="none")continue;const n=c.el.getBoundingClientRect?.();if(!n||t<n.left||t>n.right||e<n.top||e>n.bottom)continue;const h=n.width*n.height;(h<i||h===i&&l>r)&&(o=c.id,i=h,r=l)}return o}};hostRect(){const t=this.root.getBoundingClientRect?.();return{left:t?.left??0,top:t?.top??0}}toHostRelative(t){const e=this.hostRect();return{x:t.left-e.left,y:t.top-e.top,width:t.width,height:t.height}}rects={rect:t=>{const s=this.snapshot().nodes.get(t)?.el.getBoundingClientRect?.();return s?this.toHostRelative(s):null},contextRects:t=>{const{nodes:e}=this.snapshot(),s=e.get(t);if(!s)return{};const o=s.parentId?e.get(s.parentId):void 0,i=o?.el.getBoundingClientRect?.(),l=(o?o.childIds:this.snapshot().rootIds).filter(d=>d!==t).map(d=>e.get(d)?.el.getBoundingClientRect?.()).filter(d=>d!=null).map(d=>this.toHostRelative(d)),c=s.el,n=c.getBoundingClientRect?.();let h;if(n){const d=y(p(c,"borderTopWidth",u))??0,I=y(p(c,"borderRightWidth",u))??0,E=y(p(c,"borderBottomWidth",u))??0,m=y(p(c,"borderLeftWidth",u))??0;h=this.toHostRelative({left:n.left+m,top:n.top+d,width:Math.max(0,n.width-m-I),height:Math.max(0,n.height-d-E)})}return{...i?{parent:this.toHostRelative(i)}:{},...l.length?{siblings:l}:{},...h?{paddingBox:h}:{}}}};colorSample={backgroundChainAt:(t,e)=>{const s=this.pickable.pick(t,e);if(!s)return null;const{nodes:o}=this.snapshot(),i=[];let r=o.get(s);for(;r;)i.push(p(r.el,"backgroundColor",u)),r=r.parentId?o.get(r.parentId):void 0;return i}};boxEdit={begin:t=>{this.historyResource?.assertCanMutate(),this.boxEditSession={id:t,touched:new Map,priorInline:new Map}},apply:(t,e)=>{this.historyResource?.assertCanMutate();const s=this.boxEditSession;if(!s||s.id!==t)return;const o=this.snapshot().nodes.get(t);if(!o)return;const i=p(o.el,"position",u),r=i==="absolute"||i==="fixed";for(const[l,c]of Object.entries(e)){const n=T(l,r);if(!n){console.warn(`[DomAuthoringAdapter] boxEdit: dropping patch key "${l}" for "${t}" — `+(l==="x"||l==="y"?`node is not absolutely/fixed positioned (computed position: "${i}"), no left/top to move`:"unrecognized box-edit patch key"));continue}if(!s.priorInline.has(n.prop)){const d=b(o.el.style,n.prop);s.priorInline.set(n.prop,d==null?"":String(d))}const h=n.cssValue(c);this.applyStyleToElement(o.el,n.prop,h),s.touched.set(n.prop,h)}},end:t=>{const e=this.boxEditSession;this.boxEditSession=null,!(!e||e.id!==t||e.touched.size===0)&&this.commitBoxEdit(t,e.touched,e.priorInline)}};commitBoxEdit(t,e,s){this.historyResource?.assertCanMutate();const o=this.captureHistoryState(),i=o.styles[t]??{};o.styles[t]=i;for(const[l,c]of s)i[l]=c;let r=!1;for(const[l,c]of e)r=this.writeStyleEntry(t,l,c)||r;r&&this.historyResource&&this.historyResource.record(`Edit ${e.size} Styles`,o,this.captureHistoryState()).catch(()=>{})}inspector={properties:()=>g.map(({prop:t,label:e,type:s,options:o})=>({path:`${f}${t}`,label:e,type:s,...o?{options:o}:{}})),get:(t,e)=>{if(e==="locked")return this.lockedIds.has(t);if(e==="visible"){const l=this.snapshot().nodes.get(t);return l?b(l.el.style,"visibility")!=="hidden":void 0}if(!e.startsWith(f))return;const s=e.slice(f.length),o=this.snapshot().nodes.get(t);if(!o)return;const i=b(o.el.style,s),r=M.get(s);return r==="number"?y(i):r==="color"?k(i):i},set:(t,e,s)=>{if(e==="locked"){s?this.lockedIds.add(t):this.lockedIds.delete(t),this.store.shell.notifyIngestEdit();return}if(e==="visible"){this.writeStyle(t,"visibility",s?"visible":"hidden");return}if(!e.startsWith(f))return;const o=e.slice(f.length);this.writeStyle(t,o,String(s))}};assetSubject={get:t=>this.assetSubjectForNode(this.snapshot(),t),entries:()=>{const t=this.snapshot();return[...t.nodes.keys()].flatMap(e=>{const s=this.assetSubjectForNode(t,e);return s?[{id:e,subject:s}]:[]})}};assetSubjectForNode(t,e){const s=t.nodes.get(e);return!s||s.tag!=="svg"||!s.el.outerHTML?null:{kind:"image",name:S(s.el,s.tag),mediaType:"image/svg+xml",text:s.el.outerHTML}}writeStyleEntry(t,e,s){const o=this.snapshot().nodes.get(t);return o?(this.applyStyleToElement(o.el,e,s),this.recordStyleEdit(t,e,s),this.store.shell.notifyIngestEdit(),!0):!1}writeStyle(t,e,s){this.historyResource?.assertCanMutate();const o=this.captureHistoryState();this.writeStyleEntry(t,e,s)&&this.historyResource&&this.historyResource.record(`Set ${e}`,o,this.captureHistoryState()).catch(()=>{})}dispose(){this.historyResource?.dispose()}captureHistoryState(){const t={};for(const[e,s]of this.snapshot().nodes){const o={};for(const{prop:i}of g){const r=b(s.el.style,i);r!==""&&(o[i]=String(r))}t[e]=o}return{edits:structuredClone(this.doc),styles:t}}restoreHistoryState(t){for(const s of Object.keys(this.doc))delete this.doc[s];Object.assign(this.doc,structuredClone(t.edits));const{nodes:e}=this.snapshot();for(const[s,o]of e){const i=t.styles[s]??{};for(const{prop:r}of g)this.applyStyleToElement(o.el,r,i[r]??"")}this.store.shell.notifyIngestEdit()}subscribe(t){return this.store.shell.subscribe(t)}get persistence(){return{...x(),destination:v}}}export{D};
1
+ import{ax as y,ay as v}from"./index-C5tasxXb.js";import{J as R,c as x}from"./json-history-resource-BUJgH5iK.js";import{D as C,s as w,a as b,c as k,m as T}from"./react-world-authoring-adapter-DsywMgco.js";import{g as p,b as u}from"./inspect-BqIL-41D.js";function H(a){const e=(typeof a=="string"?a:a?.baseVal)?.trim()??"";if(e)return e.split(/\s+/)[0]}function S(a,t){if(a.id)return`${t}#${a.id}`;const e=H(a.className??"");return e?`${t}.${e}`:t}function j(a){const t=new Map;for(const[e,s]of a.nodes)t.set(e,{id:e,tag:s.object.tagName.toLowerCase(),el:s.object,parentId:s.parentId,childIds:[...s.childIds]});return{nodes:t,rootIds:[...a.rootIds]}}const g=[{prop:"color",label:"Color",type:"color"},{prop:"backgroundColor",label:"Background",type:"color"},{prop:"borderColor",label:"Border Color",type:"color"},{prop:"fontSize",label:"Font Size",type:"number"},{prop:"width",label:"Width",type:"number"},{prop:"height",label:"Height",type:"number"},{prop:"padding",label:"Padding",type:"number"},{prop:"margin",label:"Margin",type:"number"},{prop:"borderRadius",label:"Border Radius",type:"number"},{prop:"gap",label:"Gap",type:"number"},{prop:"display",label:"Display",type:"enum",options:["flex","block","none","grid"]},{prop:"textAlign",label:"Text Align",type:"enum",options:["left","center","right"]},{prop:"flexDirection",label:"Flex Direction",type:"enum",options:["row","column"]}],f="style.",M=new Map(g.map(({prop:a,type:t})=>[a,t]));class D{constructor(t,e,s){this.root=t,this.store=e;const o=e.shell.projectHistory;this.historyResource=o?new R({history:o,kind:"session-state",scope:"session",subject:{...s.journal,id:`${s.journal.id}/react-dom-edits`},displayName:"React DOM edits",capture:()=>this.captureHistoryState(),restore:async i=>{this.restoreHistoryState(i)}}):null}capabilities={transform:!1,inspectorFields:!0,persist:!1};provenance={source:"foreign",label:"live-only",detail:"Unmodified ingested React game — style edits apply for this session only and are never saved."};doc={};historyResource;projector=new C(w());snapCache=null;snapInvalidationScheduled=!1;boxEditSession=null;lockedIds=new Set;snapshot(){if(this.snapCache)return this.snapCache;this.projector.project(this.root);const t=j(this.projector);return this.snapCache=t,this.snapInvalidationScheduled||(this.snapInvalidationScheduled=!0,queueMicrotask(()=>{this.snapCache=null,this.snapInvalidationScheduled=!1})),t}nodeCount(){return this.snapshot().nodes.size}toEditorNode(t){return{id:t.id,label:S(t.el,t.tag),role:"element",kind:t.tag,parentId:t.parentId,childIds:t.childIds}}applyStyleToElement(t,e,s){t.style&&(t.style[e]=s)}recordStyleEdit(t,e,s){const o=this.doc[t]??{};o[e]=s,this.doc[t]=o}hierarchy={roots:()=>{const{nodes:t,rootIds:e}=this.snapshot();return e.map(s=>this.toEditorNode(t.get(s)))},node:t=>{const e=this.snapshot().nodes.get(t);return e?this.toEditorNode(e):null}};selection={get:()=>[...this.store.shell.selectedEntityIds],set:t=>this.store.shell.selectMultiple(t)};pickable={pick:(t,e)=>{const{nodes:s}=this.snapshot();let o=null,i=Number.POSITIVE_INFINITY,r=-1,l=-1;for(const c of s.values()){if(l++,this.lockedIds.has(c.id)||c.el.style?.pointerEvents==="none")continue;const n=c.el.getBoundingClientRect?.();if(!n||t<n.left||t>n.right||e<n.top||e>n.bottom)continue;const h=n.width*n.height;(h<i||h===i&&l>r)&&(o=c.id,i=h,r=l)}return o}};hostRect(){const t=this.root.getBoundingClientRect?.();return{left:t?.left??0,top:t?.top??0}}toHostRelative(t){const e=this.hostRect();return{x:t.left-e.left,y:t.top-e.top,width:t.width,height:t.height}}rects={rect:t=>{const s=this.snapshot().nodes.get(t)?.el.getBoundingClientRect?.();return s?this.toHostRelative(s):null},contextRects:t=>{const{nodes:e}=this.snapshot(),s=e.get(t);if(!s)return{};const o=s.parentId?e.get(s.parentId):void 0,i=o?.el.getBoundingClientRect?.(),l=(o?o.childIds:this.snapshot().rootIds).filter(d=>d!==t).map(d=>e.get(d)?.el.getBoundingClientRect?.()).filter(d=>d!=null).map(d=>this.toHostRelative(d)),c=s.el,n=c.getBoundingClientRect?.();let h;if(n){const d=y(p(c,"borderTopWidth",u))??0,I=y(p(c,"borderRightWidth",u))??0,E=y(p(c,"borderBottomWidth",u))??0,m=y(p(c,"borderLeftWidth",u))??0;h=this.toHostRelative({left:n.left+m,top:n.top+d,width:Math.max(0,n.width-m-I),height:Math.max(0,n.height-d-E)})}return{...i?{parent:this.toHostRelative(i)}:{},...l.length?{siblings:l}:{},...h?{paddingBox:h}:{}}}};colorSample={backgroundChainAt:(t,e)=>{const s=this.pickable.pick(t,e);if(!s)return null;const{nodes:o}=this.snapshot(),i=[];let r=o.get(s);for(;r;)i.push(p(r.el,"backgroundColor",u)),r=r.parentId?o.get(r.parentId):void 0;return i}};boxEdit={begin:t=>{this.historyResource?.assertCanMutate(),this.boxEditSession={id:t,touched:new Map,priorInline:new Map}},apply:(t,e)=>{this.historyResource?.assertCanMutate();const s=this.boxEditSession;if(!s||s.id!==t)return;const o=this.snapshot().nodes.get(t);if(!o)return;const i=p(o.el,"position",u),r=i==="absolute"||i==="fixed";for(const[l,c]of Object.entries(e)){const n=T(l,r);if(!n){console.warn(`[DomAuthoringAdapter] boxEdit: dropping patch key "${l}" for "${t}" — `+(l==="x"||l==="y"?`node is not absolutely/fixed positioned (computed position: "${i}"), no left/top to move`:"unrecognized box-edit patch key"));continue}if(!s.priorInline.has(n.prop)){const d=b(o.el.style,n.prop);s.priorInline.set(n.prop,d==null?"":String(d))}const h=n.cssValue(c);this.applyStyleToElement(o.el,n.prop,h),s.touched.set(n.prop,h)}},end:t=>{const e=this.boxEditSession;this.boxEditSession=null,!(!e||e.id!==t||e.touched.size===0)&&this.commitBoxEdit(t,e.touched,e.priorInline)}};commitBoxEdit(t,e,s){this.historyResource?.assertCanMutate();const o=this.captureHistoryState(),i=o.styles[t]??{};o.styles[t]=i;for(const[l,c]of s)i[l]=c;let r=!1;for(const[l,c]of e)r=this.writeStyleEntry(t,l,c)||r;r&&this.historyResource&&this.historyResource.record(`Edit ${e.size} Styles`,o,this.captureHistoryState()).catch(()=>{})}inspector={properties:()=>g.map(({prop:t,label:e,type:s,options:o})=>({path:`${f}${t}`,label:e,type:s,...o?{options:o}:{}})),get:(t,e)=>{if(e==="locked")return this.lockedIds.has(t);if(e==="visible"){const l=this.snapshot().nodes.get(t);return l?b(l.el.style,"visibility")!=="hidden":void 0}if(!e.startsWith(f))return;const s=e.slice(f.length),o=this.snapshot().nodes.get(t);if(!o)return;const i=b(o.el.style,s),r=M.get(s);return r==="number"?y(i):r==="color"?k(i):i},set:(t,e,s)=>{if(e==="locked"){s?this.lockedIds.add(t):this.lockedIds.delete(t),this.store.shell.notifyIngestEdit();return}if(e==="visible"){this.writeStyle(t,"visibility",s?"visible":"hidden");return}if(!e.startsWith(f))return;const o=e.slice(f.length);this.writeStyle(t,o,String(s))}};assetSubject={get:t=>this.assetSubjectForNode(this.snapshot(),t),entries:()=>{const t=this.snapshot();return[...t.nodes.keys()].flatMap(e=>{const s=this.assetSubjectForNode(t,e);return s?[{id:e,subject:s}]:[]})}};assetSubjectForNode(t,e){const s=t.nodes.get(e);return!s||s.tag!=="svg"||!s.el.outerHTML?null:{kind:"image",name:S(s.el,s.tag),mediaType:"image/svg+xml",text:s.el.outerHTML}}writeStyleEntry(t,e,s){const o=this.snapshot().nodes.get(t);return o?(this.applyStyleToElement(o.el,e,s),this.recordStyleEdit(t,e,s),this.store.shell.notifyIngestEdit(),!0):!1}writeStyle(t,e,s){this.historyResource?.assertCanMutate();const o=this.captureHistoryState();this.writeStyleEntry(t,e,s)&&this.historyResource&&this.historyResource.record(`Set ${e}`,o,this.captureHistoryState()).catch(()=>{})}dispose(){this.historyResource?.dispose()}captureHistoryState(){const t={};for(const[e,s]of this.snapshot().nodes){const o={};for(const{prop:i}of g){const r=b(s.el.style,i);r!==""&&(o[i]=String(r))}t[e]=o}return{edits:structuredClone(this.doc),styles:t}}restoreHistoryState(t){for(const s of Object.keys(this.doc))delete this.doc[s];Object.assign(this.doc,structuredClone(t.edits));const{nodes:e}=this.snapshot();for(const[s,o]of e){const i=t.styles[s]??{};for(const{prop:r}of g)this.applyStyleToElement(o.el,r,i[r]??"")}this.store.shell.notifyIngestEdit()}subscribe(t){return this.store.shell.subscribe(t)}get persistence(){return{...x(),destination:v}}}export{D};