@volter/game-editor 0.5.89 → 0.5.91

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 (315) 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 +2150 -2119
  5. package/dist/assets/{AssetBudgetPanel-DzURBeos.js → AssetBudgetPanel-DoHols3L.js} +9 -9
  6. package/dist/assets/{AudioViewer-Bjv_IoEK.js → AudioViewer-DJpWQMh1.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-BGQ7YLW7.js → CanvasBoardDocument-DUkSFZ3M.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-zDjY0paV.js → CanvasSceneViewport-lY7d92L2.js} +1 -1
  9. package/dist/assets/{ColorInput-CuQY7Ukq.js → ColorInput-7cF4Leq3.js} +1 -1
  10. package/dist/assets/ColorPicker-B2gSkOna.js +1 -0
  11. package/dist/assets/{EntityModelDocument-Ci2gTM0_.js → EntityModelDocument-DFLHmO4x.js} +1 -1
  12. package/dist/assets/{EnvironmentAssetDocument-sGeD9CmA.js → EnvironmentAssetDocument-C_10a-a0.js} +1 -1
  13. package/dist/assets/{GameplaySessionTimeline-BOP2Rzca.js → GameplaySessionTimeline-BMz5GHq5.js} +1 -1
  14. package/dist/assets/{ImageViewer-BcGUTWQl.js → ImageViewer-CEtC82uC.js} +1 -1
  15. package/dist/assets/InspectorObjectPreview-CO8cF8ht.js +1 -0
  16. package/dist/assets/{JsonAssetDocument-Xr6gjvcn.js → JsonAssetDocument-BjmItF9c.js} +1 -1
  17. package/dist/assets/{LiveModuleDocument-9cuyXCj5.js → LiveModuleDocument-DxsfqWPz.js} +1 -1
  18. package/dist/assets/{LutAssetDocument-Bsha8T14.js → LutAssetDocument-BWgoofXc.js} +1 -1
  19. package/dist/assets/{ModelAssetDocument-7R43ez0l.js → ModelAssetDocument-CCOUnfNZ.js} +1 -1
  20. package/dist/assets/{NonThreeAuthoringBootstrap-wLP33ygR.js → NonThreeAuthoringBootstrap-U8pDO_5y.js} +1 -1
  21. package/dist/assets/{Object3DDocumentToolbar-CIq-prtb.js → Object3DDocumentToolbar-CJE4T3cC.js} +1 -1
  22. package/dist/assets/Object3DDocumentViewport-CmgIuzQv.js +2 -0
  23. package/dist/assets/{Object3DPreview-4vfSYgvf.js → Object3DPreview-CbcdszHX.js} +1 -1
  24. package/dist/assets/{OnlineAssetDetail-BPVmIMPQ.js → OnlineAssetDetail-BaW-VQoM.js} +1 -1
  25. package/dist/assets/{PlayBar-BvBQdixl.js → PlayBar-Dt55-XQi.js} +1 -1
  26. package/dist/assets/{QuarksAssetDocument-NerGNPg0.js → QuarksAssetDocument-B6NS06Qk.js} +1 -1
  27. package/dist/assets/{ReactCanvasControls-SptIZCBm.js → ReactCanvasControls-B3DU4o7S.js} +1 -1
  28. package/dist/assets/{RootSelectionOverlay-D7sUM12Z.js → RootSelectionOverlay-DGhqE3ru.js} +1 -1
  29. package/dist/assets/{ShaderAssetDocument-DEt0lzyh.js → ShaderAssetDocument-C6ew-WgT.js} +2 -2
  30. package/dist/assets/ShadowEditor-BTWOn0NH.js +1 -0
  31. package/dist/assets/{SourceAssetViewer-MYdqpyCb.js → SourceAssetViewer-BHIPNJyW.js} +1 -1
  32. package/dist/assets/{StageHost-CiSH61U_.js → StageHost-CgQvlJ6q.js} +2 -2
  33. package/dist/assets/{StoryPreviewMount-CfSy0VwU.js → StoryPreviewMount-BODkiKx5.js} +1 -1
  34. package/dist/assets/{ThreeBoardDocument-CtUpkbIn.js → ThreeBoardDocument-2Hape4Gq.js} +2 -2
  35. package/dist/assets/{ThreeIsolationSceneContent-BYYWnbjH.js → ThreeIsolationSceneContent-DmeEOKni.js} +1 -1
  36. package/dist/assets/{ToolObject3DPreview-OBfMBUDF.js → ToolObject3DPreview-BLUyNI0a.js} +1 -1
  37. package/dist/assets/{Toolbar-CxS4bdaI.js → Toolbar-BaTvvAae.js} +1 -1
  38. package/dist/assets/{TransientHint-D61eMqKf.js → TransientHint-Bf1GHsWL.js} +1 -1
  39. package/dist/assets/{VideoViewer-CipXVi35.js → VideoViewer-D_aUwqjA.js} +1 -1
  40. package/dist/assets/{ViewportShadingMenu-DTn7jMyb.js → ViewportShadingMenu-C3thhpMD.js} +1 -1
  41. package/dist/assets/{active-ingest-LYjpgY9a.js → active-ingest-CPY5d7Ae.js} +2 -2
  42. package/dist/assets/{animation-clock-BcjKnlWY.js → animation-clock-BUG7-Hj6.js} +1 -1
  43. package/dist/assets/{animation-mixers.service-DlJoI9HX.js → animation-mixers.service-UqRHpBS5.js} +1 -1
  44. package/dist/assets/{animation-timeline.utility-BU8dSrf_.js → animation-timeline.utility-vjZNsvAC.js} +1 -1
  45. package/dist/assets/{asset-budget-asset.menu-B8IP-Hc9.js → asset-budget-asset.menu-Btshx1dW.js} +1 -1
  46. package/dist/assets/{asset-budget.action-C4kmlL33.js → asset-budget.action-Jb6hBA39.js} +1 -1
  47. package/dist/assets/{asset-budget.document-C9UTBsOF.js → asset-budget.document-BFWXwNI0.js} +1 -1
  48. package/dist/assets/{asset-budget.menu-B-iPbxew.js → asset-budget.menu-BTPSwcMa.js} +1 -1
  49. package/dist/assets/{asset-editor-persistence-BRnb4jvT.js → asset-editor-persistence-CL-0YalT.js} +1 -1
  50. package/dist/assets/{asset-loaders-C3GABpnY.js → asset-loaders-nDvCLina.js} +1 -1
  51. package/dist/assets/{asset-preview-C_0EqGmT.js → asset-preview-BqLvTtnb.js} +1 -1
  52. package/dist/assets/{audio-unlock.service-BptKOQO1.js → audio-unlock.service-DnCb3tjQ.js} +1 -1
  53. package/dist/assets/{audio.utility-DCWEdoWy.js → audio.utility-DlkiEBfp.js} +1 -1
  54. package/dist/assets/autoplay.service-CJv46a1s.js +1 -0
  55. package/dist/assets/{babylon-authoring-adapter-CACBsDlN.js → babylon-authoring-adapter-CnxkYjhp.js} +1 -1
  56. package/dist/assets/{binding-resolver-BU_WvMpR.js → binding-resolver-cWcQuwXj.js} +2 -2
  57. package/dist/assets/{blender-node-editor.document-QB62WBX4.js → blender-node-editor.document-DIAjTz4F.js} +1 -1
  58. package/dist/assets/blender-properties-tab-DXuz6Cpg.js +3 -0
  59. package/dist/assets/{blender-runtime-host-DpyeRB-e.js → blender-runtime-host-CJwNrADC.js} +1 -1
  60. package/dist/assets/{blender-runtime-skin-B-KaOx39.js → blender-runtime-skin-6IzekhAd.js} +1 -1
  61. package/dist/assets/blender-runtime.document-Rf7NwTan.js +13 -0
  62. package/dist/assets/{blender-screenshot.menu-DcgjDXya.js → blender-screenshot.menu-CZagx_wX.js} +1 -1
  63. package/dist/assets/{blender-timeline.document-C7-UEVr2.js → blender-timeline.document-DzhgQIDL.js} +1 -1
  64. package/dist/assets/{blender-uv-editor.document-lclK5qPX.js → blender-uv-editor.document-ClearI2D.js} +1 -1
  65. package/dist/assets/{blender-version.status-DZv7eV2U.js → blender-version.status-BkFPoDDf.js} +1 -1
  66. package/dist/assets/{blender.command-BjHEelMQ.js → blender.command-BrtEn062.js} +1 -1
  67. package/dist/assets/{board-guides-BA6WCb96.js → board-guides-D-k2cJcJ.js} +1 -1
  68. package/dist/assets/{bridge.command-CUhxGpj2.js → bridge.command-CgLcpLfB.js} +3 -3
  69. package/dist/assets/{browserAll-EMydKylk.js → browserAll-CGgcubIt.js} +1 -1
  70. package/dist/assets/{build-player.document-DF_n7mCc.js → build-player.document-DhIDZKN-.js} +1 -1
  71. package/dist/assets/{build-profiles.document-BGmStXtV.js → build-profiles.document-3r5ZhcB2.js} +1 -1
  72. package/dist/assets/{build-progress.status-BNYV8dLT.js → build-progress.status-B1PXTSq7.js} +1 -1
  73. package/dist/assets/{build-session-Dfo6ygXA.js → build-session-ulklRzSk.js} +1 -1
  74. package/dist/assets/{build.action-DyzZR4nY.js → build.action-B5miC2Fi.js} +1 -1
  75. package/dist/assets/{build.command-D1dxLByR.js → build.command-Cys5G5ZA.js} +1 -1
  76. package/dist/assets/{build.header-Dd4Vfzk5.js → build.header-BJLJN9mP.js} +1 -1
  77. package/dist/assets/{build.menu-haq0aE0s.js → build.menu-bi39YVfp.js} +1 -1
  78. package/dist/assets/{build.service-C0PLYrGi.js → build.service-DC4h7GhW.js} +1 -1
  79. package/dist/assets/{camera-BQnvv5fW.js → camera-B9Y3RW7X.js} +1 -1
  80. package/dist/assets/{camera-runtime.inspector-DY8V2BIf.js → camera-runtime.inspector-D22mhDzD.js} +1 -1
  81. package/dist/assets/{canvas-design-mount-BHkK0LpO.js → canvas-design-mount-Bp3K3717.js} +4 -4
  82. package/dist/assets/{canvas-entry-runtime-0dJpA53a.js → canvas-entry-runtime-BHOqndB_.js} +2 -2
  83. package/dist/assets/{canvas-preview-frames-BFWsz9nA.js → canvas-preview-frames-2tJZVdS2.js} +1 -1
  84. package/dist/assets/{canvas-story-capture.service-DkK9YEBa.js → canvas-story-capture.service-DANEGQnC.js} +2 -2
  85. package/dist/assets/{capability-coverage-LbU4Sxnt.js → capability-coverage-BOaPg0KC.js} +1 -1
  86. package/dist/assets/{collaboration-presence-B_rzt_Ua.js → collaboration-presence-CaATXsiz.js} +1 -1
  87. package/dist/assets/{collider-ByI7A54k.js → collider-DZkp1rvK.js} +1 -1
  88. package/dist/assets/{component-board.service-DtE1d9v1.js → component-board.service-Bba7cD7r.js} +2 -2
  89. package/dist/assets/{component-board.service-C0oYmE9t.js → component-board.service-CDeqmtPt.js} +2 -2
  90. package/dist/assets/{component-board.service-BpDTVVAI.js → component-board.service-CwKm1aEc.js} +2 -2
  91. package/dist/assets/{component-contracts.service-FqaewMKQ.js → component-contracts.service-kh4-IF8j.js} +1 -1
  92. package/dist/assets/{component-instance-root-BNr-40yw.js → component-instance-root-JAQpC4Pi.js} +1 -1
  93. package/dist/assets/{component-verbs.command-DGDMOsdk.js → component-verbs.command-DNG8KytX.js} +1 -1
  94. package/dist/assets/{component-verbs.service-C1NY4Sth.js → component-verbs.service-CQCmsdNk.js} +1 -1
  95. package/dist/assets/{config-BNYp1dbK.js → config-D8XyIZPl.js} +2 -2
  96. package/dist/assets/{configurations-WH5EPk8d.js → configurations-Bzh9kmrk.js} +1 -1
  97. package/dist/assets/{connection.status-hDer8RHe.js → connection.status-ChQR4f5Y.js} +1 -1
  98. package/dist/assets/{constraints.inspector-DCDUNzXi.js → constraints.inspector-Ddo1UQNJ.js} +1 -1
  99. package/dist/assets/{content-bounds-DMLXg0Ob.js → content-bounds-B_xPBrsP.js} +1 -1
  100. package/dist/assets/{contract-system-adapters-CsMtQANL.js → contract-system-adapters-C1oaetXB.js} +1 -1
  101. package/dist/assets/{coverage.service-DkOf3jFn.js → coverage.service-DIQXHW6Q.js} +1 -1
  102. package/dist/assets/{create-runtime-A9IjDY9I.js → create-runtime-BQdKNIfc.js} +3 -3
  103. package/dist/assets/{curve-DOpfSq5v.js → curve-BEKFgt87.js} +1 -1
  104. package/dist/assets/{data-asset-CNGL3WNY.js → data-asset-BZA163so.js} +1 -1
  105. package/dist/assets/{data-ref-CZlj4K6p.js → data-ref-BUMaOgK6.js} +1 -1
  106. package/dist/assets/{debug-bridge-C2ydYYkR.js → debug-bridge-B8Do4Q6K.js} +1 -1
  107. package/dist/assets/{debug-registry-SleqbaS2.js → debug-registry-CoiJ_gHM.js} +1 -1
  108. package/dist/assets/{deferred-ingest-play-BSFkfZKQ.js → deferred-ingest-play-DJeWQ-He.js} +2 -2
  109. package/dist/assets/{design-time-canvas-mount-D65uuYQ7.js → design-time-canvas-mount-B_5sxSjq.js} +2 -2
  110. package/dist/assets/{design-time-layers-q1BaQsMZ.js → design-time-layers-Bspf2qH5.js} +1 -1
  111. package/dist/assets/{design-time-mount.service-D6XPrjMo.js → design-time-mount.service-038G1MnB.js} +2 -2
  112. package/dist/assets/{design-time-mount.service-BZXwHkG9.js → design-time-mount.service-BE5vpW1Y.js} +2 -2
  113. package/dist/assets/{design-time-react-mount-C7V61i4j.js → design-time-react-mount--CifCE6t.js} +1 -1
  114. package/dist/assets/{document-preview-three-C7Lqobxp.js → document-preview-three-D46Hv_l-.js} +1 -1
  115. package/dist/assets/{dom-authoring-adapter-COdzQqK7.js → dom-authoring-adapter-CI_qQmaE.js} +1 -1
  116. package/dist/assets/{draco3d-iz9iYVwt.js → draco3d-FJXe8NCw.js} +1 -1
  117. package/dist/assets/{edit-mode-audio.service-BQwXzUX5.js → edit-mode-audio.service-qKdc6y7a.js} +1 -1
  118. package/dist/assets/{edit-mode-authoring-yRPEq3c6.js → edit-mode-authoring-C0sf0ewd.js} +1 -1
  119. package/dist/assets/{edit-mode-networking.service-VQu-oNGR.js → edit-mode-networking.service-D-eLZBVJ.js} +1 -1
  120. package/dist/assets/{editor-api-DkYQ4Mf7.js → editor-api-DeTJ2F2f.js} +1 -1
  121. package/dist/assets/{editor-layers-psmpPtJ8.js → editor-layers-B43PZgUF.js} +1 -1
  122. package/dist/assets/{editor-shell-store-CLsRck8r.js → editor-shell-store-CW9Fjab9.js} +1 -1
  123. package/dist/assets/{entity-object-CI5Ws16u.js → entity-object-C40NpVSX.js} +1 -1
  124. package/dist/assets/{extend-CVyU45KC.js → extend-CB1ggOZp.js} +1 -1
  125. package/dist/assets/{fork-menu-fgKUSFoA.js → fork-menu-ByAv7gfK.js} +1 -1
  126. package/dist/assets/{frame-debugger-store-C4h48Lk1.js → frame-debugger-store-BOL6rL6i.js} +1 -1
  127. package/dist/assets/{game-contract-seams-CtyMWXL3.js → game-contract-seams-Dq1YiGya.js} +1 -1
  128. package/dist/assets/{game-css-scope-transform-BRD7WElK.js → game-css-scope-transform-zF8z1rZz.js} +1 -1
  129. package/dist/assets/{game-document.service-5xW7XyMV.js → game-document.service-DlSkuYvA.js} +1 -1
  130. package/dist/assets/{game-eval.command-BsdLCKBs.js → game-eval.command-Cnr70bCU.js} +1 -1
  131. package/dist/assets/{game-module-access-DzeZ8taf.js → game-module-access-Pz5cgPiz.js} +1 -1
  132. package/dist/assets/{game-network-BadWSUYT.js → game-network-D8nKKSRC.js} +3 -3
  133. package/dist/assets/{gameplay-export-CzpOG_fP.js → gameplay-export-FFcX1OzU.js} +1 -1
  134. package/dist/assets/{gameplay-replay-CiA4AIid.js → gameplay-replay-CVwLaTax.js} +1 -1
  135. package/dist/assets/{gameplay.command-D34pNEIv.js → gameplay.command-64STQYm4.js} +1 -1
  136. package/dist/assets/{generation-jobs-DXPVDHPe.js → generation-jobs-BOOUx41p.js} +1 -1
  137. package/dist/assets/{generation.service-D-v4Kboa.js → generation.service-BJn-hOAW.js} +1 -1
  138. package/dist/assets/{generations-D4MdQolQ.js → generations-BuBWfmYF.js} +1 -1
  139. package/dist/assets/{generations.status-CnpAZzCw.js → generations.status-Cw7FBmHO.js} +1 -1
  140. package/dist/assets/{hierarchy-marks-BUeQ6to3.js → hierarchy-marks-r1SCnl92.js} +1 -1
  141. package/dist/assets/{hosted-asset-materialization-e4G0wAK4.js → hosted-asset-materialization-CCfM8rX8.js} +2 -2
  142. package/dist/assets/{index-DouvpS6-.js → index-BTlpcjdl.js} +2 -2
  143. package/dist/assets/{index-D34RCuxS.js → index-C5X85WM3.js} +1 -1
  144. package/dist/assets/{index-6ys6rxaj.js → index-CDTbPbQM.js} +1 -1
  145. package/dist/assets/{index-C5D8xjRu.js → index-CRFTAXpT.js} +1 -1
  146. package/dist/assets/{index-BUSnq0Z6.js → index-CiKYIRrk.js} +1 -1
  147. package/dist/assets/index-DNuUwvUR.js +1 -0
  148. package/dist/assets/{index-DAZrOXB3.js → index-DnZE2Fb2.js} +1 -1
  149. package/dist/assets/{index-DBIFLhzt.js → index-EO6Vl92s.js} +9 -9
  150. package/dist/assets/{index-C6GLGVwl.js → index-tsU_SOUL.js} +1 -1
  151. package/dist/assets/{inference-diagnostics-CDR3DmKF.js → inference-diagnostics-18bkEAju.js} +1 -1
  152. package/dist/assets/{ingest-boot-viewport-BTBeKgzE.js → ingest-boot-viewport-BuSUroou.js} +1 -1
  153. package/dist/assets/{ingest-siblings-Cj7VEwcy.js → ingest-siblings-B3ExLPmT.js} +1 -1
  154. package/dist/assets/{ingest-source-persistence-Bfhu6YfK.js → ingest-source-persistence-C2eN6TUG.js} +1 -1
  155. package/dist/assets/{ingest.service-BU4np-aB.js → ingest.service-DPCT2mkC.js} +1 -1
  156. package/dist/assets/{inspect-Ddg78nmj.js → inspect-BqpAh85y.js} +1 -1
  157. package/dist/assets/instances.command-BTMfzHFj.js +1 -0
  158. package/dist/assets/{json-history-resource-DFBTBtzt.js → json-history-resource-BjCvVkMa.js} +1 -1
  159. package/dist/assets/{layered-pick-C0UzN9rC.js → layered-pick-Ciu7uLFh.js} +1 -1
  160. package/dist/assets/{light-DglaQiPf.js → light-CXcgEBDG.js} +1 -1
  161. package/dist/assets/{live-project-verbs-CJ_zDSoA.js → live-project-verbs-BBbF8usb.js} +1 -1
  162. package/dist/assets/{machine.document-DKgl-HxK.js → machine.document-Bdci5A4S.js} +1 -1
  163. package/dist/assets/{machines.finder-rzKrqf0P.js → machines.finder-CvEKAnGk.js} +1 -1
  164. package/dist/assets/{material-BtLdoiM1.js → material-ClpgTT47.js} +1 -1
  165. package/dist/assets/{material-factory-DVTrr57P.js → material-factory-Df67vZ1z.js} +1 -1
  166. package/dist/assets/{mesh-Dg-hqV4U.js → mesh-DkaFE4sY.js} +1 -1
  167. package/dist/assets/{model-asset-sections.service-Dz77qWhH.js → model-asset-sections.service-CBOHxNFe.js} +1 -1
  168. package/dist/assets/{model-inspection-BajTg63P.js → model-inspection-DcL5cH7Y.js} +1 -1
  169. package/dist/assets/{model-thumbnail-DQHRVOqE.js → model-thumbnail-C6YzkBEi.js} +1 -1
  170. package/dist/assets/{models.finder-Jhy7YA-r.js → models.finder-DfEs64WT.js} +1 -1
  171. package/dist/assets/{module-mode-B4YjyMYv.js → module-mode-f-SD3z04.js} +2 -2
  172. package/dist/assets/{mount-canvas-ingest-root-XkqClzbU.js → mount-canvas-ingest-root-BnxcPl2U.js} +2 -2
  173. package/dist/assets/{mount-dom-ingest-root-witYuq5g.js → mount-dom-ingest-root-CfwImvJz.js} +2 -2
  174. package/dist/assets/{mount-ingest-root-DeA7CLzy.js → mount-ingest-root-Dh6Z1uso.js} +2 -2
  175. package/dist/assets/{mount-manifest-ivMktbkB.js → mount-manifest-CAxRLPYT.js} +1 -1
  176. package/dist/assets/{mount-three-ingest-root-BmDUnQow.js → mount-three-ingest-root-CoqxTpZB.js} +1 -1
  177. package/dist/assets/{mounted-authoring-zPVxiKxa.js → mounted-authoring-DfEm9qgt.js} +1 -1
  178. package/dist/assets/{mounted-story-viewport-source-ByPTlo40.js → mounted-story-viewport-source-WBFaoqod.js} +1 -1
  179. package/dist/assets/{native-debug-module-DEIj-ml1.js → native-debug-module-piwWLOP6.js} +1 -1
  180. package/dist/assets/{navigation-Yf3zwolr.js → navigation-DYa_HSby.js} +1 -1
  181. package/dist/assets/{navmesh.menu-CaH6tdbH.js → navmesh.menu-B0MJEIPE.js} +1 -1
  182. package/dist/assets/{navmesh.service-qPZ8sHuM.js → navmesh.service-BpsPIRLZ.js} +1 -1
  183. package/dist/assets/network-observer.service-CBgzPOhw.js +1 -0
  184. package/dist/assets/{network.utility-DCa1vV7t.js → network.utility-DMr-AxKs.js} +1 -1
  185. package/dist/assets/{object3d-document-session-registry-DYr6Iepm.js → object3d-document-session-registry-3YUZT4RT.js} +2 -2
  186. package/dist/assets/{oid-transform-DP9nPVMY.js → oid-transform-DsAJ1P8o.js} +1 -1
  187. package/dist/assets/{particles-HwlzQnli.js → particles-vZ9UmSDz.js} +1 -1
  188. package/dist/assets/{pixi-authoring-adapter-CQVwY0mw.js → pixi-authoring-adapter-QT0kN-JP.js} +1 -1
  189. package/dist/assets/{pixi-live-write-target-B0CUAzvW.js → pixi-live-write-target-DM9cdS1_.js} +1 -1
  190. package/dist/assets/{play.command-CSYsCbbE.js → play.command-DH2eNjdZ.js} +2 -2
  191. package/dist/assets/{presentation-1SZXKXRj.js → presentation-VcgXp-GO.js} +1 -1
  192. package/dist/assets/{product-CF4E_r6C.js → product-x_cfmfQ9.js} +1 -1
  193. package/dist/assets/{profiler.action-BIvAZOpX.js → profiler.action-C3xlnyom.js} +1 -1
  194. package/dist/assets/{profiler.menu-B-IVHBPz.js → profiler.menu-DSUi8xT3.js} +1 -1
  195. package/dist/assets/{profiler.utility-CKeHA3jm.js → profiler.utility-BRSMJoGZ.js} +1 -1
  196. package/dist/assets/{project-authoring-session-d1SmjQh8.js → project-authoring-session-CwEQV0bP.js} +2 -2
  197. package/dist/assets/properties-bone-constraints.inspector-Ct1jO5Ue.js +1 -0
  198. package/dist/assets/properties-bone.inspector-DxGQlndA.js +1 -0
  199. package/dist/assets/properties-collection.inspector-lK30X7Jh.js +1 -0
  200. package/dist/assets/properties-constraints.inspector-Da8piE2V.js +1 -0
  201. package/dist/assets/properties-data.inspector-WI4fuv2D.js +1 -0
  202. package/dist/assets/properties-material.inspector-CQwIjVw1.js +1 -0
  203. package/dist/assets/properties-modifiers.inspector-BzQAh_u0.js +1 -0
  204. package/dist/assets/properties-object.inspector-Du6jNcII.js +1 -0
  205. package/dist/assets/properties-output.inspector-BQzIXPdl.js +1 -0
  206. package/dist/assets/properties-particles.inspector-C-lSFNSf.js +1 -0
  207. package/dist/assets/properties-physics.inspector-CwC0aupw.js +1 -0
  208. package/dist/assets/properties-render.inspector-D0P3nYYJ.js +1 -0
  209. package/dist/assets/properties-scene.inspector-bM362PAU.js +1 -0
  210. package/dist/assets/properties-texture.inspector-8ucuWCLj.js +1 -0
  211. package/dist/assets/properties-view-layer.inspector-DWOu3YE3.js +1 -0
  212. package/dist/assets/properties-world.inspector-BDTb__xL.js +1 -0
  213. package/dist/assets/{r3f-design-session-DqKrI14b.js → r3f-design-session-gQuaJFCS.js} +2 -2
  214. package/dist/assets/{r3f-physics-binding-CoSwbmVM.js → r3f-physics-binding-CFwn2dZ0.js} +1 -1
  215. package/dist/assets/{r3f-source-authoring-adapter-BG3vhahx.js → r3f-source-authoring-adapter-DhFdCSs7.js} +1 -1
  216. package/dist/assets/{react-canvas-navigation-DoPpWrKL.js → react-canvas-navigation-VKHmF9L9.js} +1 -1
  217. package/dist/assets/react-inspector.service-DheFnb_w.js +1 -0
  218. package/dist/assets/{react-story-board-DOAfFP3M.js → react-story-board-BdHhG7gL.js} +1 -1
  219. package/dist/assets/{react-three-rapier.esm-BAEEeUsU.js → react-three-rapier.esm-W_y4UeT-.js} +1 -1
  220. package/dist/assets/{react-world-authoring-adapter-DArpj4xo.js → react-world-authoring-adapter-Cey0R-Ml.js} +1 -1
  221. package/dist/assets/{realm-services-qj234a0C.js → realm-services-Bw73w74M.js} +1 -1
  222. package/dist/assets/{reflection-probe-capture.inspector-DQTWUver.js → reflection-probe-capture.inspector-Dqj4TwMY.js} +1 -1
  223. package/dist/assets/{registry-CHxUhnK7.js → registry-DCdpQPdB.js} +1 -1
  224. package/dist/assets/{relative-import-specifier-CCwfBo2s.js → relative-import-specifier-DjG-Lv03.js} +1 -1
  225. package/dist/assets/{render-env-B5TZmt31.js → render-env-D12b4e03.js} +1 -1
  226. package/dist/assets/{render-features-B8bt5hFs.js → render-features-w9Z-Cv_p.js} +1 -1
  227. package/dist/assets/{render-settings-D7S62Nwc.js → render-settings-CGDwkhhL.js} +1 -1
  228. package/dist/assets/{resolve-three-CXRmbpha.js → resolve-three-Bl4aEdGL.js} +3 -3
  229. package/dist/assets/{root-seam-contract-Rc5I2-cn.js → root-seam-contract-Dx597Ute.js} +1 -1
  230. package/dist/assets/{run-selection-v_KGXaMz.js → run-selection-D-nxwjch.js} +1 -1
  231. package/dist/assets/{scene-capture-D4xR-bOK.js → scene-capture-BYzNQlcZ.js} +1 -1
  232. package/dist/assets/{scene-document.service-B4alF5qm.js → scene-document.service-DvdbtjUB.js} +2 -2
  233. package/dist/assets/{scene-framing-DFvmwkrW.js → scene-framing-zyo6Dgey.js} +1 -1
  234. package/dist/assets/{seeded-random-z3KAs46E.js → seeded-random-BcjdE8-O.js} +1 -1
  235. package/dist/assets/{setup-renderer-BZFzQu0R.js → setup-renderer-BoEjWIJ6.js} +1 -1
  236. package/dist/assets/{source-object3d-authoring-adapter-CzJdhhwn.js → source-object3d-authoring-adapter-D-mc1Hsq.js} +1 -1
  237. package/dist/assets/{source-persistence-backend-CNNtYr-8.js → source-persistence-backend-DPS956_W.js} +1 -1
  238. package/dist/assets/{stage-keyboard-7_1scYGH.js → stage-keyboard-DD-47U0X.js} +1 -1
  239. package/dist/assets/{stage-overlay-set-BdCP3eMw.js → stage-overlay-set-jLin7LCZ.js} +1 -1
  240. package/dist/assets/{stage-presence-markers-DT5j8fjP.js → stage-presence-markers-BzL60lxC.js} +1 -1
  241. package/dist/assets/{stage-transform-tools-i3ajje5q.js → stage-transform-tools-CXEtn6e_.js} +1 -1
  242. package/dist/assets/{standard-viewport-dressing-BfmTiIR4.js → standard-viewport-dressing-DzgsLMqH.js} +1 -1
  243. package/dist/assets/{state-watch.action-B2f1FDbM.js → state-watch.action-C0r205X2.js} +1 -1
  244. package/dist/assets/{state-watch.menu-BlXPZu9x.js → state-watch.menu-CIOq9XcQ.js} +1 -1
  245. package/dist/assets/{state-watch.utility-v0OIiOK5.js → state-watch.utility-B5Mps4k8.js} +1 -1
  246. package/dist/assets/{story-capture-DAZ6UX6l.js → story-capture-BL_OEjAJ.js} +1 -1
  247. package/dist/assets/{story-documents-skwdip6D.js → story-documents-uyxMmUzs.js} +1 -1
  248. package/dist/assets/{story-documents.service-DsiGg2Wu.js → story-documents.service-Cu17YnfS.js} +1 -1
  249. package/dist/assets/{story-documents.service-14jxNb7v.js → story-documents.service-L9mW5dVf.js} +1 -1
  250. package/dist/assets/{story-media-presence-Cjm_WU4H.js → story-media-presence-CsYCXCgg.js} +1 -1
  251. package/dist/assets/{story-pixi-preview-BfrC6Uip.js → story-pixi-preview-BaS3gW36.js} +1 -1
  252. package/dist/assets/{story-presentation-D2yF9kbW.js → story-presentation-Inb0tF8V.js} +1 -1
  253. package/dist/assets/{story-three-preview-E2uJuH0p.js → story-three-preview-N78COIhD.js} +2 -2
  254. package/dist/assets/{studio-environment-Kj8vdH82.js → studio-environment-BRMTYTp1.js} +1 -1
  255. package/dist/assets/{surface-state-P-IhoubG.js → surface-state-l4D0tVlT.js} +1 -1
  256. package/dist/assets/{syntactic-prop-specs-DWKYi4Ib.js → syntactic-prop-specs-DOQMV1SJ.js} +1 -1
  257. package/dist/assets/{team-playtest.service-Da2I3-HT.js → team-playtest.service-CHIX8ZaT.js} +1 -1
  258. package/dist/assets/{three-43Ky3-7O.js → three-DItubEyv.js} +1 -1
  259. package/dist/assets/{three-authoring-adapter-ChAme627.js → three-authoring-adapter-jGnbMYIc.js} +1 -1
  260. package/dist/assets/three-authoring.service-UK1utJDS.js +2 -0
  261. package/dist/assets/{three-ingest-runtime-CsWe59E_.js → three-ingest-runtime-DlApOywz.js} +1 -1
  262. package/dist/assets/{three-integration-BG2YybqE.js → three-integration-lFHyckTb.js} +2 -2
  263. package/dist/assets/three-integration.service-CvbLexeR.js +1 -0
  264. package/dist/assets/{three-projection-core-BKmXcOPL.js → three-projection-core-Bsu421K7.js} +1 -1
  265. package/dist/assets/{three-state-DnYP1ZtA.js → three-state-15gXjQ51.js} +1 -1
  266. package/dist/assets/{three-story-capture.service-DBEJS-XE.js → three-story-capture.service-B369fV1j.js} +2 -2
  267. package/dist/assets/{three-story-model-mOvJH3cm.js → three-story-model-D8xXaW4_.js} +1 -1
  268. package/dist/assets/{three-viewport-presentation-BHtVY2rJ.js → three-viewport-presentation-DlCyoe_E.js} +1 -1
  269. package/dist/assets/{transform-mode-request-BuKv4Vre.js → transform-mode-request-BT4Zmx_G.js} +1 -1
  270. package/dist/assets/{transport-strip-BmlKGYbk.js → transport-strip-DHbAk_5x.js} +1 -1
  271. package/dist/assets/transport.header-D6MQXDZh.js +1 -0
  272. package/dist/assets/{tuples-BpJkRF4Y.js → tuples-BcU64Mu6.js} +1 -1
  273. package/dist/assets/{ui-board-document-BVE1yfZS.js → ui-board-document-CptsO8E6.js} +2 -2
  274. package/dist/assets/{user-data-FwfU1u6l.js → user-data-DnahhlAD.js} +1 -1
  275. package/dist/assets/{utility-view-state-C4KOJ6su.js → utility-view-state-GfzV3cfg.js} +1 -1
  276. package/dist/assets/{viewport-door-CQdsFqWV.js → viewport-door-Dbl8EH3p.js} +1 -1
  277. package/dist/assets/{viewport-root-presentation-CnkX7rnP.js → viewport-root-presentation-CG43sAj5.js} +1 -1
  278. package/dist/assets/{viewport-surface-status-_DF-oTje.js → viewport-surface-status-C9vuKKQB.js} +1 -1
  279. package/dist/assets/{webworkerAll-CVRDBA6B.js → webworkerAll-DE92JZIw.js} +1 -1
  280. package/dist/assets/{workspace-arrangement-B2HQOv9w.js → workspace-arrangement-COs530TA.js} +1 -1
  281. package/dist/assets/{world-documents-Bk_76qpi.js → world-documents-80AAIyS9.js} +1 -1
  282. package/dist/assets/{world-root-stage-binding-BBvT6Ll0.js → world-root-stage-binding-umHFwInD.js} +1 -1
  283. package/dist/assets/{xstate-animation-binding-BU0uAeKC.js → xstate-animation-binding-_aMqz-nR.js} +1 -1
  284. package/dist/assets/{xstate-animation-meta-DybNY6kD.js → xstate-animation-meta-CzxfXjaY.js} +1 -1
  285. package/dist-node/cli.js +16 -16
  286. package/package.json +16 -16
  287. package/dist/assets/InspectorObjectPreview-DmfoiHtC.js +0 -1
  288. package/dist/assets/Object3DDocumentViewport-5UbfDYx0.js +0 -2
  289. package/dist/assets/ShadowEditor-CuWsWRr6.js +0 -1
  290. package/dist/assets/autoplay.service-D_fRasDc.js +0 -1
  291. package/dist/assets/blender-properties-tab-BD_ERulO.js +0 -3
  292. package/dist/assets/blender-runtime.document-CTLsZn-9.js +0 -12
  293. package/dist/assets/index-BV1zcaKy.js +0 -1
  294. package/dist/assets/instances.command-eYwh5Dyr.js +0 -1
  295. package/dist/assets/network-observer.service-BGd1BMED.js +0 -1
  296. package/dist/assets/properties-bone-constraints.inspector-C1nbUxby.js +0 -1
  297. package/dist/assets/properties-bone.inspector-B4CVy1PL.js +0 -1
  298. package/dist/assets/properties-collection.inspector-BAb5XRrg.js +0 -1
  299. package/dist/assets/properties-constraints.inspector-CTi1QOaJ.js +0 -1
  300. package/dist/assets/properties-data.inspector-Bu4Um-vv.js +0 -1
  301. package/dist/assets/properties-material.inspector-CakxEoQj.js +0 -1
  302. package/dist/assets/properties-modifiers.inspector-ClQMHVFK.js +0 -1
  303. package/dist/assets/properties-object.inspector-C1Ab-w33.js +0 -1
  304. package/dist/assets/properties-output.inspector-Dcu8lb8C.js +0 -1
  305. package/dist/assets/properties-particles.inspector-Dfs-ZBpE.js +0 -1
  306. package/dist/assets/properties-physics.inspector-Ce4mMWzM.js +0 -1
  307. package/dist/assets/properties-render.inspector-DWri-DTC.js +0 -1
  308. package/dist/assets/properties-scene.inspector-BSNjU00G.js +0 -1
  309. package/dist/assets/properties-texture.inspector-DnH7CwRl.js +0 -1
  310. package/dist/assets/properties-view-layer.inspector-B19cZc6X.js +0 -1
  311. package/dist/assets/properties-world.inspector-BSt8WRSj.js +0 -1
  312. package/dist/assets/react-inspector.service-CrqYw3Jb.js +0 -1
  313. package/dist/assets/three-authoring.service-CkS5Twej.js +0 -2
  314. package/dist/assets/three-integration.service-BxtSDKHH.js +0 -1
  315. package/dist/assets/transport.header-B9Zj0jSD.js +0 -1
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/spark.module-Byplgb8G.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/Pass-D1MRT672.js"])))=>i.map(i=>d[i]);
2
- import{_ as g}from"./index-DBIFLhzt.js";import{s as f}from"./user-data-FwfU1u6l.js";import{D as T,K as S,M as E}from"./KTX2Loader-CaqVE6nY.js";import{GLTFLoader as L}from"./GLTFLoader-KeoruJgS.js";import{cc as M,eX as v,fo as p,co as I,K as b}from"./three.core-3arARmh6.js";import{createStandardEnvironment as x}from"./environment-Dg-YaLsA.js";let D="/";function w(t){return t.startsWith("/")||t.startsWith("http")||t.startsWith("data:")||t.startsWith("blob:")?t:D+t}const r=new M;r.setURLModifier(w);new v(r);const h=new T(r);h.setDecoderPath("/jsm/libs/draco/gltf/");const _=new S(r);_.setTranscoderPath("/jsm/libs/basis/");const l=new L(r);l.setDRACOLoader(h);l.setKTX2Loader(_);l.setMeshoptDecoder(E);function N(t){return w(t)}const i=new Map;async function z(t,a){let e=i.get(t);!e&&a&&(e=Promise.resolve(a),i.set(t,e)),e||(e=fetch(N(t)).then(async s=>{if(!s.ok)throw new Error(`Failed to load Gaussian splat: ${t} (${s.status} ${s.statusText})`);return new Uint8Array(await s.arrayBuffer())}),i.set(t,e));try{const[{SplatMesh:s},u]=await Promise.all([g(()=>import("./spark.module-Byplgb8G.js"),__vite__mapDeps([0,1,2,3])),e]),o=new s({fileBytes:u,fileName:t,raycastable:!0});await o.initialized,f(o,"gaussianSplat",{src:t,numSplats:o.numSplats});const d=o.getBoundingBox();if(!d.isEmpty()){const m=d.getSize(new p).multiplyScalar(1.5),y=d.getCenter(new p),n=new I(new b(m.x,m.y,m.z));n.name="__volter_splat_bounds",n.position.copy(y),n.visible=!1,n.raycast=()=>{},f(n,"engineInternal",!0),o.add(n)}return o}catch(s){throw i.delete(t),s}}const O=.45,C=.25,c=new WeakMap;function K(t,a){let e=c.get(a);e||(e=x(a),c.set(a,e)),t.environment=e.texture,t.environmentIntensity=O}function V(t){const a=c.get(t);a&&(c.delete(t),a.dispose())}export{C as S,K as a,V as d,l as g,z as l,N as r};
2
+ import{_ as g}from"./index-EO6Vl92s.js";import{s as f}from"./user-data-DnahhlAD.js";import{D as T,K as S,M as E}from"./KTX2Loader-CaqVE6nY.js";import{GLTFLoader as L}from"./GLTFLoader-KeoruJgS.js";import{cc as M,eX as v,fo as p,co as I,K as b}from"./three.core-3arARmh6.js";import{createStandardEnvironment as x}from"./environment-Dg-YaLsA.js";let D="/";function w(t){return t.startsWith("/")||t.startsWith("http")||t.startsWith("data:")||t.startsWith("blob:")?t:D+t}const r=new M;r.setURLModifier(w);new v(r);const h=new T(r);h.setDecoderPath("/jsm/libs/draco/gltf/");const _=new S(r);_.setTranscoderPath("/jsm/libs/basis/");const l=new L(r);l.setDRACOLoader(h);l.setKTX2Loader(_);l.setMeshoptDecoder(E);function N(t){return w(t)}const i=new Map;async function z(t,a){let e=i.get(t);!e&&a&&(e=Promise.resolve(a),i.set(t,e)),e||(e=fetch(N(t)).then(async s=>{if(!s.ok)throw new Error(`Failed to load Gaussian splat: ${t} (${s.status} ${s.statusText})`);return new Uint8Array(await s.arrayBuffer())}),i.set(t,e));try{const[{SplatMesh:s},u]=await Promise.all([g(()=>import("./spark.module-Byplgb8G.js"),__vite__mapDeps([0,1,2,3])),e]),o=new s({fileBytes:u,fileName:t,raycastable:!0});await o.initialized,f(o,"gaussianSplat",{src:t,numSplats:o.numSplats});const d=o.getBoundingBox();if(!d.isEmpty()){const m=d.getSize(new p).multiplyScalar(1.5),y=d.getCenter(new p),n=new I(new b(m.x,m.y,m.z));n.name="__volter_splat_bounds",n.position.copy(y),n.visible=!1,n.raycast=()=>{},f(n,"engineInternal",!0),o.add(n)}return o}catch(s){throw i.delete(t),s}}const O=.45,C=.25,c=new WeakMap;function K(t,a){let e=c.get(a);e||(e=x(a),c.set(a,e)),t.environment=e.texture,t.environmentIntensity=O}function V(t){const a=c.get(t);a&&(c.delete(t),a.dispose())}export{C as S,K as a,V as d,l as g,z as l,N as r};
@@ -1,3 +1,3 @@
1
- import{a as s}from"./jsx-runtime-DPjLkJKQ.js";import"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{ey as a}from"./index-DBIFLhzt.js";function $({explanation:e,testId:t,style:o}){return e?s.jsx(a,{"data-testid":t,tone:e.tone,title:e.title,description:s.jsx("span",{style:{whiteSpace:"pre-wrap"},children:e.description}),style:{position:"absolute",inset:0,pointerEvents:"none",...o}}):null}function r(e){return e.map(t=>`“${t}”`).join(", ")}function d(e,t){const o=t.map(n=>n.worldId);return{tone:"error",title:o.length===1?`${e} root ${r(o)} failed`:`${o.length} ${e} roots failed`,description:`${t.map(n=>`${n.worldId} (${n.kind}, ${n.identity}): ${n.message}`).join(`
1
+ import{a as s}from"./jsx-runtime-DPjLkJKQ.js";import"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{eB as a}from"./index-EO6Vl92s.js";function $({explanation:e,testId:t,style:o}){return e?s.jsx(a,{"data-testid":t,tone:e.tone,title:e.title,description:s.jsx("span",{style:{whiteSpace:"pre-wrap"},children:e.description}),style:{position:"absolute",inset:0,pointerEvents:"none",...o}}):null}function r(e){return e.map(t=>`“${t}”`).join(", ")}function d(e,t){const o=t.map(n=>n.worldId);return{tone:"error",title:o.length===1?`${e} root ${r(o)} failed`:`${o.length} ${e} roots failed`,description:`${t.map(n=>`${n.worldId} (${n.kind}, ${n.identity}): ${n.message}`).join(`
2
2
  `)}
3
3
  If this followed an edit, Undo (Ctrl+Z) restores the previous source and remounts.`}}function c(e,t){return{tone:"loading",title:t.length===0?`Loading ${e}`:t.length===1?`Loading ${e} root ${r(t)}`:`Loading ${t.length} ${e} roots`,description:t.length===0?"Reading the project declaration to identify the root that belongs here.":`Waiting for ${r(t)} to finish mounting.`}}function u(e,t){return t.length===0?{tone:"neutral",title:`No ${e} root`,description:"No declared root belongs to this surface."}:{tone:"neutral",title:"No renderable content",description:(t.length===1?`Root ${r(t)} mounted successfully but currently produces no renderable content.`:`Roots ${r(t)} mounted successfully but currently produce no renderable content.`)+" If this world builds its content under its game systems, press Play (▶) to run it."}}function m(e){if(e.content==="present")return null;if(e.playSuspended)return{tone:"neutral",title:"Editing paused during Play",description:`${r(e.rootIds)} is running in the Game tab. Press Stop (⏹) to edit it here.`};const t=new Set(e.rootIds),o=(e.failures??[]).filter(i=>t.has(i.worldId));if(o.length>0)return d(e.surface,o);if(e.disclosure)return{tone:"neutral",title:`No ${e.surface} editor for ${r(e.rootIds)}`,description:e.disclosure};const n=(e.readiness??[]).filter(i=>i.state==="waiting"&&t.has(i.rootId)).map(i=>i.rootId),l=n.length>0?n:e.rootIds;return e.phase==="loading"||n.length>0||e.content==="unknown"?c(e.surface,l):u(e.surface,e.rootIds)}export{$ as S,m as e};
@@ -1 +1 @@
1
- import{aE as t}from"./index-DBIFLhzt.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 c(e){if(!e)return{type:null};switch(e.kind){case t.SyntaxKind.StringKeyword:return{type:"string"};case t.SyntaxKind.NumberKeyword:return{type:"number"};case t.SyntaxKind.BooleanKeyword:return{type:"boolean"}}if(t.isUnionTypeNode(e)){const n=[];for(const r of e.types){if(!t.isLiteralTypeNode(r))return{type:null};if(t.isStringLiteral(r.literal))n.push(r.literal.text);else if(t.isNumericLiteral(r.literal))n.push(Number(r.literal.text));else return{type:null}}return n.length>0?{type:"enum",options:n}:{type:null}}return t.isTupleTypeNode(e)&&e.elements.length===3&&e.elements.every(n=>n.kind===t.SyntaxKind.NumberKeyword)?{type:"vec3"}:{type:null}}function y(e,n,r){if(!e||!t.isTypeReferenceNode(e)||!t.isIdentifier(e.typeName)||e.typeArguments&&e.typeArguments.length>0)return e;const s=e.typeName.text,i=f(n,s);if(i)return t.isTypeAliasDeclaration(i)?i.type:e;const a=r.get(s);return a?a.type:e}function m(e,n,r,s){for(const i of e){if(!t.isPropertySignature(i))continue;const a=t.isIdentifier(i.name)||t.isStringLiteral(i.name)?i.name.text:null;a&&n.set(a,{optional:i.questionToken!==void 0,...c(y(i.type,r,s))})}}function f(e,n){for(const r of e.statements)if((t.isTypeAliasDeclaration(r)||t.isInterfaceDeclaration(r))&&r.name.text===n)return r;return null}function p(e,n,r,s,i){if(i>4)return;if(t.isTypeLiteralNode(e)){m(e.members,s,n,r);return}if(t.isIntersectionTypeNode(e)){for(const l of e.types)p(l,n,r,s,i+1);return}if(!t.isTypeReferenceNode(e)||!t.isIdentifier(e.typeName))return;const a=e.typeName.text,o=f(n,a);if(o){t.isTypeAliasDeclaration(o)?p(o.type,n,r,s,i+1):m(o.members,s,n,r);return}const u=r.get(a);u&&p(u.type,u.sf,new Map,s,i+1)}function x(e,n){const r=e.getText(n);if(t.isStringLiteral(e)||t.isNoSubstitutionTemplateLiteral(e))return{defaultText:r,defaultValue:e.text};if(t.isNumericLiteral(e))return{defaultText:r,defaultValue:Number(e.text)};if(t.isPrefixUnaryExpression(e)&&e.operator===t.SyntaxKind.MinusToken&&t.isNumericLiteral(e.operand))return{defaultText:r,defaultValue:-Number(e.operand.text)};if(e.kind===t.SyntaxKind.TrueKeyword)return{defaultText:r,defaultValue:!0};if(e.kind===t.SyntaxKind.FalseKeyword)return{defaultText:r,defaultValue:!1};if(t.isArrayLiteralExpression(e)){const s=[];for(const i of e.elements)if(t.isNumericLiteral(i))s.push(Number(i.text));else if(t.isPrefixUnaryExpression(i)&&i.operator===t.SyntaxKind.MinusToken&&t.isNumericLiteral(i.operand))s.push(-Number(i.operand.text));else return{defaultText:r};return{defaultText:r,defaultValue:s}}return{defaultText:r}}function N(e){return t.isFunctionDeclaration(e)&&e.name&&e.parameters[0]?{name:e.name.text,parameter:e.parameters[0]}:t.isVariableDeclaration(e)&&t.isIdentifier(e.name)&&e.initializer&&(t.isArrowFunction(e.initializer)||t.isFunctionExpression(e.initializer))&&e.initializer.parameters[0]?{name:e.name.text,parameter:e.initializer.parameters[0]}:null}function V(e,n){const r=new Map,s=i=>{const a=N(i);if(a&&/^[A-Z]/.test(a.name)&&!r.has(a.name)){const o=b(a.parameter,e,n);o.length>0&&r.set(a.name,o)}(t.isSourceFile(i)||t.isVariableStatement(i)||t.isVariableDeclarationList(i))&&t.forEachChild(i,s)};return s(e),r}function b(e,n,r){const s=new Map;if(t.isObjectBindingPattern(e.name))for(const a of e.name.elements){if(a.dotDotDotToken)continue;const o=a.propertyName??a.name;!t.isIdentifier(o)||!a.initializer||s.set(o.text,x(a.initializer,n))}const i=new Map;if(e.type&&p(e.type,n,r,i,0),i.size>0){const a=[];for(const[o,u]of i){const l=s.get(o);a.push({name:o,type:u.type,...u.options?{options:u.options}:{},optional:u.optional||l!==void 0,...l??{}})}return a}return[...s].map(([a,o])=>({name:a,type:null,optional:!0,...o}))}export{V as localComponentPropSpecs};
1
+ import{aE as t}from"./index-EO6Vl92s.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 c(e){if(!e)return{type:null};switch(e.kind){case t.SyntaxKind.StringKeyword:return{type:"string"};case t.SyntaxKind.NumberKeyword:return{type:"number"};case t.SyntaxKind.BooleanKeyword:return{type:"boolean"}}if(t.isUnionTypeNode(e)){const n=[];for(const r of e.types){if(!t.isLiteralTypeNode(r))return{type:null};if(t.isStringLiteral(r.literal))n.push(r.literal.text);else if(t.isNumericLiteral(r.literal))n.push(Number(r.literal.text));else return{type:null}}return n.length>0?{type:"enum",options:n}:{type:null}}return t.isTupleTypeNode(e)&&e.elements.length===3&&e.elements.every(n=>n.kind===t.SyntaxKind.NumberKeyword)?{type:"vec3"}:{type:null}}function y(e,n,r){if(!e||!t.isTypeReferenceNode(e)||!t.isIdentifier(e.typeName)||e.typeArguments&&e.typeArguments.length>0)return e;const s=e.typeName.text,i=f(n,s);if(i)return t.isTypeAliasDeclaration(i)?i.type:e;const a=r.get(s);return a?a.type:e}function m(e,n,r,s){for(const i of e){if(!t.isPropertySignature(i))continue;const a=t.isIdentifier(i.name)||t.isStringLiteral(i.name)?i.name.text:null;a&&n.set(a,{optional:i.questionToken!==void 0,...c(y(i.type,r,s))})}}function f(e,n){for(const r of e.statements)if((t.isTypeAliasDeclaration(r)||t.isInterfaceDeclaration(r))&&r.name.text===n)return r;return null}function p(e,n,r,s,i){if(i>4)return;if(t.isTypeLiteralNode(e)){m(e.members,s,n,r);return}if(t.isIntersectionTypeNode(e)){for(const l of e.types)p(l,n,r,s,i+1);return}if(!t.isTypeReferenceNode(e)||!t.isIdentifier(e.typeName))return;const a=e.typeName.text,o=f(n,a);if(o){t.isTypeAliasDeclaration(o)?p(o.type,n,r,s,i+1):m(o.members,s,n,r);return}const u=r.get(a);u&&p(u.type,u.sf,new Map,s,i+1)}function x(e,n){const r=e.getText(n);if(t.isStringLiteral(e)||t.isNoSubstitutionTemplateLiteral(e))return{defaultText:r,defaultValue:e.text};if(t.isNumericLiteral(e))return{defaultText:r,defaultValue:Number(e.text)};if(t.isPrefixUnaryExpression(e)&&e.operator===t.SyntaxKind.MinusToken&&t.isNumericLiteral(e.operand))return{defaultText:r,defaultValue:-Number(e.operand.text)};if(e.kind===t.SyntaxKind.TrueKeyword)return{defaultText:r,defaultValue:!0};if(e.kind===t.SyntaxKind.FalseKeyword)return{defaultText:r,defaultValue:!1};if(t.isArrayLiteralExpression(e)){const s=[];for(const i of e.elements)if(t.isNumericLiteral(i))s.push(Number(i.text));else if(t.isPrefixUnaryExpression(i)&&i.operator===t.SyntaxKind.MinusToken&&t.isNumericLiteral(i.operand))s.push(-Number(i.operand.text));else return{defaultText:r};return{defaultText:r,defaultValue:s}}return{defaultText:r}}function N(e){return t.isFunctionDeclaration(e)&&e.name&&e.parameters[0]?{name:e.name.text,parameter:e.parameters[0]}:t.isVariableDeclaration(e)&&t.isIdentifier(e.name)&&e.initializer&&(t.isArrowFunction(e.initializer)||t.isFunctionExpression(e.initializer))&&e.initializer.parameters[0]?{name:e.name.text,parameter:e.initializer.parameters[0]}:null}function V(e,n){const r=new Map,s=i=>{const a=N(i);if(a&&/^[A-Z]/.test(a.name)&&!r.has(a.name)){const o=b(a.parameter,e,n);o.length>0&&r.set(a.name,o)}(t.isSourceFile(i)||t.isVariableStatement(i)||t.isVariableDeclarationList(i))&&t.forEachChild(i,s)};return s(e),r}function b(e,n,r){const s=new Map;if(t.isObjectBindingPattern(e.name))for(const a of e.name.elements){if(a.dotDotDotToken)continue;const o=a.propertyName??a.name;!t.isIdentifier(o)||!a.initializer||s.set(o.text,x(a.initializer,n))}const i=new Map;if(e.type&&p(e.type,n,r,i,0),i.size>0){const a=[];for(const[o,u]of i){const l=s.get(o);a.push({name:o,type:u.type,...u.options?{options:u.options}:{},optional:u.optional||l!==void 0,...l??{}})}return a}return[...s].map(([a,o])=>({name:a,type:null,optional:!0,...o}))}export{V as localComponentPropSpecs};
@@ -1 +1 @@
1
- import{an as d,ao as k,ap as b,aq as N}from"./index-DBIFLhzt.js";import{r as m}from"./collaboration-presence-B_rzt_Ua.js";import{e as v,j as P,m as I}from"./game-network-BadWSUYT.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-DEIj-ml1.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-SleqbaS2.js";import"./contract-system-adapters-CsMtQANL.js";import"./game-contract-seams-CtyMWXL3.js";import"./seeded-random-z3KAs46E.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-CJ_zDSoA.js";import"./capability-coverage-LbU4Sxnt.js";import"./edit-mode-authoring-yRPEq3c6.js";import"./json-history-resource-DFBTBtzt.js";import"./binding-resolver-BU_WvMpR.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-qj234a0C.js";import"./canvas-entry-runtime-0dJpA53a.js";import"./three-ingest-runtime-CsWe59E_.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-LYjpgY9a.js";import"./ingest-source-persistence-Bfhu6YfK.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-CnkX7rnP.js";import"./mounted-authoring-zPVxiKxa.js";import"./entity-object-CI5Ws16u.js";import"./user-data-FwfU1u6l.js";import"./workspace-arrangement-B2HQOv9w.js";import"./three-contract-Dkt6PmWY.js";import"./three-43Ky3-7O.js";import"./editor-layers-psmpPtJ8.js";import"./component-instance-root-BNr-40yw.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-ChAme627.js";import"./source-persistence-backend-CNNtYr-8.js";import"./three-projection-core-BKmXcOPL.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-CoSwbmVM.js";import"./deferred-ingest-play-BSFkfZKQ.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DArpj4xo.js";import"./board-guides-BA6WCb96.js";import"./relative-import-specifier-CCwfBo2s.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-Ddg78nmj.js";import"./inference-diagnostics-CDR3DmKF.js";import"./writer-tw6EcuVO.js";import"./three-state-DnYP1ZtA.js";import"./editor-shell-store-CLsRck8r.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-CQdsFqWV.js";import"./game-surface-defaults-D8S4cRxi.js";const Yt="workspace.service";function Zt(){let i=null;const p=new Set;let e=null,n=null,a=d();const l=()=>{e?.(),e=null,n?.(),n=null,a=null},y=k(u=>{const w=u.participants.find(r=>r.participantId===b)?.capabilities.includes("test")??!1,t=u.activePlaytest,s=I();if(!w||!t){i=null,l(),m({playtest:null}),s?.mode==="team"&&P(),t||p.clear();return}s?.mode==="team"&&s.id===t.id||i!==t.id&&(p.has(t.id)||(i=t.id,m({playtest:{id:t.id,play:"starting",networking:"connecting",roomName:null,problem:null}}),v(t.seed,{mode:"team",id:t.id,roomKey:t.roomKey,revision:t.revision,participantId:b}).then(()=>{if(i!==t.id)return;l();const r=()=>{const o=d(),c=o?.getConnectionState?.(),f=o?.getRoomInfo?.();m({playtest:{id:t.id,play:"ready",networking:o?c==="connected"&&f?"ready":c==="error"?"error":"connecting":"not-declared",roomName:f?.roomName??null,problem:c==="error"?"The game networking adapter reported an error.":null}})},g=()=>{const o=d();o!==a&&(e?.(),a=o,e=o?.subscribe(r)??null),r()};n=N(g),g()}).catch(r=>{i===t.id&&(i=null,p.add(t.id),m({playtest:{id:t.id,play:"error",networking:"error",roomName:null,problem:r instanceof Error?r.message:String(r)}}))})))});return()=>{l(),y()}}export{Yt as point,Zt as start};
1
+ import{an as d,ao as k,ap as b,aq as N}from"./index-EO6Vl92s.js";import{r as m}from"./collaboration-presence-CaATXsiz.js";import{e as v,j as P,m as I}from"./game-network-D8nKKSRC.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-piwWLOP6.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CoiJ_gHM.js";import"./contract-system-adapters-C1oaetXB.js";import"./game-contract-seams-Dq1YiGya.js";import"./seeded-random-BcjdE8-O.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-BBbF8usb.js";import"./capability-coverage-BOaPg0KC.js";import"./edit-mode-authoring-C0sf0ewd.js";import"./json-history-resource-BjCvVkMa.js";import"./binding-resolver-cWcQuwXj.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-Bw73w74M.js";import"./canvas-entry-runtime-BHOqndB_.js";import"./three-ingest-runtime-DlApOywz.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-CPY5d7Ae.js";import"./ingest-source-persistence-C2eN6TUG.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-CG43sAj5.js";import"./mounted-authoring-DfEm9qgt.js";import"./entity-object-C40NpVSX.js";import"./user-data-DnahhlAD.js";import"./workspace-arrangement-COs530TA.js";import"./three-contract-Dkt6PmWY.js";import"./three-DItubEyv.js";import"./editor-layers-B43PZgUF.js";import"./component-instance-root-JAQpC4Pi.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-jGnbMYIc.js";import"./source-persistence-backend-DPS956_W.js";import"./three-projection-core-Bsu421K7.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-CFwn2dZ0.js";import"./deferred-ingest-play-DJeWQ-He.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-Cey0R-Ml.js";import"./board-guides-D-k2cJcJ.js";import"./relative-import-specifier-DjG-Lv03.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BqpAh85y.js";import"./inference-diagnostics-18bkEAju.js";import"./writer-tw6EcuVO.js";import"./three-state-15gXjQ51.js";import"./editor-shell-store-CW9Fjab9.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Dbl8EH3p.js";import"./game-surface-defaults-D8S4cRxi.js";const Yt="workspace.service";function Zt(){let i=null;const p=new Set;let e=null,n=null,a=d();const l=()=>{e?.(),e=null,n?.(),n=null,a=null},y=k(u=>{const w=u.participants.find(r=>r.participantId===b)?.capabilities.includes("test")??!1,t=u.activePlaytest,s=I();if(!w||!t){i=null,l(),m({playtest:null}),s?.mode==="team"&&P(),t||p.clear();return}s?.mode==="team"&&s.id===t.id||i!==t.id&&(p.has(t.id)||(i=t.id,m({playtest:{id:t.id,play:"starting",networking:"connecting",roomName:null,problem:null}}),v(t.seed,{mode:"team",id:t.id,roomKey:t.roomKey,revision:t.revision,participantId:b}).then(()=>{if(i!==t.id)return;l();const r=()=>{const o=d(),c=o?.getConnectionState?.(),f=o?.getRoomInfo?.();m({playtest:{id:t.id,play:"ready",networking:o?c==="connected"&&f?"ready":c==="error"?"error":"connecting":"not-declared",roomName:f?.roomName??null,problem:c==="error"?"The game networking adapter reported an error.":null}})},g=()=>{const o=d();o!==a&&(e?.(),a=o,e=o?.subscribe(r)??null),r()};n=N(g),g()}).catch(r=>{i===t.id&&(i=null,p.add(t.id),m({playtest:{id:t.id,play:"error",networking:"error",roomName:null,problem:r instanceof Error?r.message:String(r)}}))})))});return()=>{l(),y()}}export{Yt as point,Zt as start};
@@ -1 +1 @@
1
- import{isInEditorOwnedSubtree as V,isEditorOwnedObject as P}from"./editor-layers-psmpPtJ8.js";import{g as k}from"./user-data-FwfU1u6l.js";import{b as E,c as S}from"./component-instance-root-BNr-40yw.js";import{n as K,e as $,s as A}from"./entity-object-CI5Ws16u.js";import{s as W}from"./viewport-editor-controls-BYaAZ_Ku.js";import{fd as z,e6 as G,B as U}from"./three.core-3arARmh6.js";function q(n){const t=k(n,"constraints");return Array.isArray(t)?t.filter(e=>!!e&&typeof e=="object"&&typeof e.getSnapshot=="function"&&!!e.config):[]}const M="ingest:camera",J=1<<31;function Q(n){return(n.layers.mask&J)!==0}function Y(n,t){const e=new Map;let r=0,s=0,f=0;const u=(i,c)=>{const o=`ingest:${c}:${i.type}:${i.name||""}`;e.set(o,i),r++,i.isLight?f++:i.isMesh&&s++,d(i,c)},d=(i,c)=>{let o=0;for(const h of i.children)Q(h)||(u(h,c?`${c}/${o}`:`${o}`),o++)};return d(n,""),t&&(e.set(M,t),r++),{byId:e,count:r,meshes:s,lights:f}}function Z(n){const t=k(n,"authoringSubject");return t&&typeof t.label=="string"&&typeof t.kind=="string"?t:null}function X(n){const t=k(n,"reflectionProbe");if(!t||typeof t!="object")return null;const e=t;return e.config&&typeof e.recapture=="function"&&typeof e.getSnapshot=="function"?t:null}let D=null;function ht(n){D=n,W(n?.editorControls??null)}function tt(){return D}function C(n){return n.depthWrite===!1&&n.side===U}function et(n){const t=n.material;return t?Array.isArray(t)?t.length>0&&t.every(C):C(t):!1}function L(n,t,e,r=()=>!1,s){const f=tt();if(!f)return[];const u=f.canvas.getBoundingClientRect();if(u.width<=0||u.height<=0||!Number.isFinite(t)||!Number.isFinite(e)||t<u.left||e<u.top||t>=u.left+u.width||e>=u.top+u.height)return[];const d=new z((t-u.left)/u.width*2-1,-((e-u.top)/u.height)*2+1),i=new G;i.layers.enableAll(),i.setFromCamera(d,f.camera);const c=new Set(s?.objects??n.objectMap.values()),o=[...c].filter(b=>{for(let I=b.parent;I;I=I.parent)if(c.has(I))return!1;return!0});for(const b of o)b.traverse(I=>{const m=I;m.isSkinnedMesh&&(m.boundingBox=null,m.boundingSphere=null)});const h=i.intersectObjects(o,!0),p=[],v=new Set;for(const b of h){if(V(b.object)||et(b.object))continue;let I=b.object,m=null;if(s)for(;I&&m===null;)m=s.idForObject3D(I),I=I.parent;else{const a=K(I);m=a?$(a)??null:null}m!==null&&!r(m)&&!v.has(m)&&(v.add(m),p.push(m))}return nt(p,o,h.length,t,e),p}function nt(n,t,e,r,s){n.length>0||r===0&&s===0||console.info(`[viewport-pick] click selected nothing (candidates ${t.length}, rayHits ${e}, resolvedIds 0)`)}function st(n,t,e,r=()=>!1,s){return L(n,t,e,r,s)[0]??null}const R={count:0,meshes:0,lights:0,instancedMeshes:0,instances:0};let x=0;function H(n){let t=0,e=0;for(const r of n.values()){const s=r.object;s.isInstancedMesh&&(t++,e+=typeof s.count=="number"?s.count:0)}return{instancedMeshes:t,instances:e}}function F(n){let t=0,e=0;for(const r of n.values()){const s=r.object;s.isLight?e++:s.isMesh&&t++}return{count:n.size,meshes:t,lights:e,...H(n)}}function T(n,t){const e=new Map,r=[],s=t.skip??P;t.begin?.(n);const f=(u,d,i,c)=>{if(s(u))return;const o=t.identify(u,{path:d,ownerId:i,ownedByAncestor:c});o!==null&&(A(u,o),e.set(o,{object:u,id:o,parentId:i,childIds:[]}),i===null?r.push(o):e.get(i)?.childIds.push(o));const h=c||o!==null;u.children.forEach((p,v)=>{f(p,[...d,v],o??i,h)}),t.leave?.(u,o)};return n.children.forEach((u,d)=>{f(u,[d],null,!1)}),{nodes:e,rootIds:r,stats:F(e)}}const it="r3f:";function O(n,t){return`${it}${n}:${t}`}function rt(n){const t=new Map,e=new Map,r=(d,i)=>d===i||d.startsWith(`${i}#`)&&/^\d+$/u.test(d.slice(i.length+1)),s=d=>{e.clear();const i=c=>{if(P(c))return;const o=E(c),h=$(c);if(o!==void 0&&h!==void 0){const p=O(n,o);r(h,p)&&!e.has(h)&&e.set(h,c)}for(const p of c.children)i(p)};for(const c of d.children)i(c)},f=(d,i)=>{const c=$(d);if(c===void 0||i===void 0)return c;const o=O(n,i);return r(c,o)?e.get(c)===d?c:void 0:c},u=(d,i)=>{const c=O(n,i);let o=t.get(i)??0,h=S(c,o);for(;e.has(h);)o+=1,h=S(c,o);return t.set(i,o+1),e.set(h,d),h};return{begin:d=>{t.clear(),s(d)},identify:(d,i)=>{const c=E(d),o=f(d,c);if(o!==void 0)return o;const h=c===void 0?void 0:u(d,c);return h!==void 0||!i.ownedByAncestor||k(d,"authoringRoot")===!0?h??`live:${n}:${x++}`:null}}}function N(n,t){return T(n,rt(t))}function pt(n,t){const{nodes:e}=N(n,t),r=new Map;for(const[s,f]of e)r.set(s,f.object);return r}function yt(n,t={}){const e=t.camera;return{incremental:{kind:"live-oid",worldId:n},project:r=>{const s=N(r,n);return!e||[...s.nodes.values()].some(f=>f.object===e)?s:(A(e,M),s.nodes.set(M,{object:e,id:M,parentId:null,childIds:[]}),s.rootIds.push(M),{...s,stats:{...s.stats,count:s.nodes.size}})}}}function gt(n={}){const t=n.camera;return{project:e=>{const r=Y(e,t),s=new Map;for(const[d,i]of r.byId)s.set(i,d);const f=new Map,u=[];for(const[d,i]of r.byId){const c=i.parent,o=(c&&c!==e?s.get(c):void 0)??null,h=i.children.map(p=>s.get(p)).filter(p=>p!==void 0);f.set(d,{object:i,id:d,parentId:o,childIds:h}),o===null&&u.push(d)}return{nodes:f,rootIds:u,stats:{count:r.count,meshes:r.meshes,lights:r.lights,...H(f)}}}}}function It(n){let t=new Map,e=new Map;return{get instanceRoots(){return t},get representatives(){return e},project:r=>{const s=new Map,f=new Map,u=new Map,d=new Set,i=new Map,c=T(r,{identify:(o,h)=>{const p=E(o);if(p===void 0)return O(n,`@${h.path.join(".")}`);const v=s.get(p)??0;return s.set(p,v+1),v===0&&u.set(p,o),d.has(p)||(f.set(p,(f.get(p)??0)+1),d.add(p),i.set(o,p)),S(O(n,p),v)},leave:o=>{const h=i.get(o);h!==void 0&&(d.delete(h),i.delete(o))}});return t=f,e=u,c}}}function mt(n){return{project:t=>T(t,{skip:e=>!!k(e,"editorHelper")||e.isSkeletonHelper===!0,identify:(e,r)=>`source-object:${n}:${r.path.join(".")}`})}}function vt(n){const t=Z(n);return t?t.kind:q(n).length>0?"constraint-owner":X(n)?"reflection-probe":n.isSkinnedMesh?"skinned-mesh":n.isBone?"bone":n.isLight?"light":n.isCamera?"camera":n.type==="Audio"||n.type==="PositionalAudio"||n.type==="AudioListener"?"audio":n.isMesh?"mesh":n.children.length>0?"group":"object"}function ot(n,t){for(let e=n.parent;e!==null;e=e.parent)if(e===t)return!0;return!1}function _(n,t){if(n===t)return!0;for(let e=n.parent;e!==null;e=e.parent)if(e===t)return!0;return!1}class wt{constructor(t,e={}){this.identity=t,this.options=e}nodesById=new Map;objectsById=new Map;idsByObjectIndex=new Map;roots=[];walkStats=R;project(t){if(!t)return this.nodesById=new Map,this.objectsById=new Map,this.idsByObjectIndex=new Map,this.roots=[],this.walkStats=R,this.walkStats;const{nodes:e,rootIds:r,stats:s}=this.identity.project(t);return this.nodesById=e,this.objectsById=new Map([...e].map(([f,u])=>[f,u.object])),this.idsByObjectIndex=new Map([...e].map(([f,u])=>[u.object,f])),this.roots=r,this.walkStats=s,s}projectSubtrees(t,e){const r=this.identity.incremental;if(t===null||r?.kind!=="live-oid")return null;const s=e.filter((a,l)=>e.indexOf(a)===l&&!e.some(y=>y!==a&&ot(a,y))),f=this.roots,u=new Set,d=new Set,i=new Set;for(const a of s)a.traverse(l=>{const y=this.idsByObjectIndex.get(l);if(y===void 0)return;const g=this.nodesById.get(y);g?.parentId!==null&&g?.parentId!==void 0&&i.add(g.parentId),u.add(y),this.nodesById.delete(y),this.objectsById.delete(y),this.idsByObjectIndex.delete(l)});const c=P,o=(a,l)=>{const y=this.objectsById.get(a);return y===void 0||y===l},h=(a,l)=>{const y=$(a);if(y!==void 0&&o(y,a))return y;const g=E(a);if(g!==void 0){const w=O(r.worldId,g);let B=0,j=S(w,B);for(;!o(j,a);)j=S(w,++B);return j}if(!l||k(a,"authoringRoot")===!0){let w=`live:${r.worldId}:${x++}`;for(;!o(w,a);)w=`live:${r.worldId}:${x++}`;return w}return null},p=(a,l,y)=>{if(c(a))return;const g=h(a,y);g!==null&&(A(a,g),this.nodesById.set(g,{object:a,id:g,parentId:l,childIds:[]}),this.objectsById.set(g,a),this.idsByObjectIndex.set(a,g),d.add(g),l!==null&&i.add(l));const w=g??l,B=y||g!==null;for(const j of a.children)p(j,w,B)};for(const a of s){if(!_(a,t))continue;let l=a.parent,y=null;for(;l!==null&&l!==t;){const g=this.idsByObjectIndex.get(l);if(g!==void 0){y=g;break}l=l.parent}p(a,y,y!==null)}const v=a=>{const l=[],y=g=>{if(c(g))return;const w=this.idsByObjectIndex.get(g);if(w!==void 0){l.push(w);return}for(const B of g.children)y(B)};for(const g of a.children)y(g);return l};for(const a of i){const l=this.nodesById.get(a);l!==void 0&&l.childIds.splice(0,l.childIds.length,...v(l.object))}for(const a of d){const l=this.nodesById.get(a);l!==void 0&&l.childIds.splice(0,l.childIds.length,...v(l.object))}const b=v(t),I=this.roots.filter(a=>{const l=this.objectsById.get(a);return l!==void 0&&!_(l,t)&&!u.has(a)});this.roots=[...b,...I],this.walkStats=F(this.nodesById);const m=f.length!==this.roots.length||f.some((a,l)=>a!==this.roots[l]);return{removedIds:u,addedIds:d,changedParentIds:i,rootsChanged:m}}get nodes(){return this.nodesById}get objects(){return this.objectsById}get idsByObject(){return this.idsByObjectIndex}get rootIds(){return this.roots}get stats(){return this.walkStats}node(t){return this.nodesById.get(t)??null}rootNodes(){return this.roots.map(t=>this.nodesById.get(t)).filter(t=>t!==void 0)}objectOf(t){return this.objectsById.get(t)??null}idOf(t){return this.idsByObjectIndex.get(t)??null}childIdsOf(t){const e=[];for(const r of t){const s=this.idsByObjectIndex.get(r);s!==void 0&&e.push(s)}return e}objectMapSnapshot(){return new Map(this.objectsById)}pick(t,e,r,s){return st(t,e,r,s,this.pickProjection())}candidates(t,e,r,s){return L(t,e,r,s,this.pickProjection())}pickProjection(){if(this.options.pickScope!=="store-object-map")return{objects:this.objectsById.values(),idForObject3D:t=>this.idOf(t)}}}export{wt as T,yt as a,gt as b,It as c,mt as d,q as e,ht as f,vt as n,Z as o,X as r,pt as s};
1
+ import{isInEditorOwnedSubtree as V,isEditorOwnedObject as P}from"./editor-layers-B43PZgUF.js";import{g as k}from"./user-data-DnahhlAD.js";import{b as E,c as S}from"./component-instance-root-JAQpC4Pi.js";import{n as K,e as $,s as A}from"./entity-object-C40NpVSX.js";import{s as W}from"./viewport-editor-controls-BYaAZ_Ku.js";import{fd as z,e6 as G,B as U}from"./three.core-3arARmh6.js";function q(n){const t=k(n,"constraints");return Array.isArray(t)?t.filter(e=>!!e&&typeof e=="object"&&typeof e.getSnapshot=="function"&&!!e.config):[]}const M="ingest:camera",J=1<<31;function Q(n){return(n.layers.mask&J)!==0}function Y(n,t){const e=new Map;let r=0,s=0,f=0;const u=(i,c)=>{const o=`ingest:${c}:${i.type}:${i.name||""}`;e.set(o,i),r++,i.isLight?f++:i.isMesh&&s++,d(i,c)},d=(i,c)=>{let o=0;for(const h of i.children)Q(h)||(u(h,c?`${c}/${o}`:`${o}`),o++)};return d(n,""),t&&(e.set(M,t),r++),{byId:e,count:r,meshes:s,lights:f}}function Z(n){const t=k(n,"authoringSubject");return t&&typeof t.label=="string"&&typeof t.kind=="string"?t:null}function X(n){const t=k(n,"reflectionProbe");if(!t||typeof t!="object")return null;const e=t;return e.config&&typeof e.recapture=="function"&&typeof e.getSnapshot=="function"?t:null}let D=null;function ht(n){D=n,W(n?.editorControls??null)}function tt(){return D}function C(n){return n.depthWrite===!1&&n.side===U}function et(n){const t=n.material;return t?Array.isArray(t)?t.length>0&&t.every(C):C(t):!1}function L(n,t,e,r=()=>!1,s){const f=tt();if(!f)return[];const u=f.canvas.getBoundingClientRect();if(u.width<=0||u.height<=0||!Number.isFinite(t)||!Number.isFinite(e)||t<u.left||e<u.top||t>=u.left+u.width||e>=u.top+u.height)return[];const d=new z((t-u.left)/u.width*2-1,-((e-u.top)/u.height)*2+1),i=new G;i.layers.enableAll(),i.setFromCamera(d,f.camera);const c=new Set(s?.objects??n.objectMap.values()),o=[...c].filter(b=>{for(let I=b.parent;I;I=I.parent)if(c.has(I))return!1;return!0});for(const b of o)b.traverse(I=>{const m=I;m.isSkinnedMesh&&(m.boundingBox=null,m.boundingSphere=null)});const h=i.intersectObjects(o,!0),p=[],v=new Set;for(const b of h){if(V(b.object)||et(b.object))continue;let I=b.object,m=null;if(s)for(;I&&m===null;)m=s.idForObject3D(I),I=I.parent;else{const a=K(I);m=a?$(a)??null:null}m!==null&&!r(m)&&!v.has(m)&&(v.add(m),p.push(m))}return nt(p,o,h.length,t,e),p}function nt(n,t,e,r,s){n.length>0||r===0&&s===0||console.info(`[viewport-pick] click selected nothing (candidates ${t.length}, rayHits ${e}, resolvedIds 0)`)}function st(n,t,e,r=()=>!1,s){return L(n,t,e,r,s)[0]??null}const R={count:0,meshes:0,lights:0,instancedMeshes:0,instances:0};let x=0;function H(n){let t=0,e=0;for(const r of n.values()){const s=r.object;s.isInstancedMesh&&(t++,e+=typeof s.count=="number"?s.count:0)}return{instancedMeshes:t,instances:e}}function F(n){let t=0,e=0;for(const r of n.values()){const s=r.object;s.isLight?e++:s.isMesh&&t++}return{count:n.size,meshes:t,lights:e,...H(n)}}function T(n,t){const e=new Map,r=[],s=t.skip??P;t.begin?.(n);const f=(u,d,i,c)=>{if(s(u))return;const o=t.identify(u,{path:d,ownerId:i,ownedByAncestor:c});o!==null&&(A(u,o),e.set(o,{object:u,id:o,parentId:i,childIds:[]}),i===null?r.push(o):e.get(i)?.childIds.push(o));const h=c||o!==null;u.children.forEach((p,v)=>{f(p,[...d,v],o??i,h)}),t.leave?.(u,o)};return n.children.forEach((u,d)=>{f(u,[d],null,!1)}),{nodes:e,rootIds:r,stats:F(e)}}const it="r3f:";function O(n,t){return`${it}${n}:${t}`}function rt(n){const t=new Map,e=new Map,r=(d,i)=>d===i||d.startsWith(`${i}#`)&&/^\d+$/u.test(d.slice(i.length+1)),s=d=>{e.clear();const i=c=>{if(P(c))return;const o=E(c),h=$(c);if(o!==void 0&&h!==void 0){const p=O(n,o);r(h,p)&&!e.has(h)&&e.set(h,c)}for(const p of c.children)i(p)};for(const c of d.children)i(c)},f=(d,i)=>{const c=$(d);if(c===void 0||i===void 0)return c;const o=O(n,i);return r(c,o)?e.get(c)===d?c:void 0:c},u=(d,i)=>{const c=O(n,i);let o=t.get(i)??0,h=S(c,o);for(;e.has(h);)o+=1,h=S(c,o);return t.set(i,o+1),e.set(h,d),h};return{begin:d=>{t.clear(),s(d)},identify:(d,i)=>{const c=E(d),o=f(d,c);if(o!==void 0)return o;const h=c===void 0?void 0:u(d,c);return h!==void 0||!i.ownedByAncestor||k(d,"authoringRoot")===!0?h??`live:${n}:${x++}`:null}}}function N(n,t){return T(n,rt(t))}function pt(n,t){const{nodes:e}=N(n,t),r=new Map;for(const[s,f]of e)r.set(s,f.object);return r}function yt(n,t={}){const e=t.camera;return{incremental:{kind:"live-oid",worldId:n},project:r=>{const s=N(r,n);return!e||[...s.nodes.values()].some(f=>f.object===e)?s:(A(e,M),s.nodes.set(M,{object:e,id:M,parentId:null,childIds:[]}),s.rootIds.push(M),{...s,stats:{...s.stats,count:s.nodes.size}})}}}function gt(n={}){const t=n.camera;return{project:e=>{const r=Y(e,t),s=new Map;for(const[d,i]of r.byId)s.set(i,d);const f=new Map,u=[];for(const[d,i]of r.byId){const c=i.parent,o=(c&&c!==e?s.get(c):void 0)??null,h=i.children.map(p=>s.get(p)).filter(p=>p!==void 0);f.set(d,{object:i,id:d,parentId:o,childIds:h}),o===null&&u.push(d)}return{nodes:f,rootIds:u,stats:{count:r.count,meshes:r.meshes,lights:r.lights,...H(f)}}}}}function It(n){let t=new Map,e=new Map;return{get instanceRoots(){return t},get representatives(){return e},project:r=>{const s=new Map,f=new Map,u=new Map,d=new Set,i=new Map,c=T(r,{identify:(o,h)=>{const p=E(o);if(p===void 0)return O(n,`@${h.path.join(".")}`);const v=s.get(p)??0;return s.set(p,v+1),v===0&&u.set(p,o),d.has(p)||(f.set(p,(f.get(p)??0)+1),d.add(p),i.set(o,p)),S(O(n,p),v)},leave:o=>{const h=i.get(o);h!==void 0&&(d.delete(h),i.delete(o))}});return t=f,e=u,c}}}function mt(n){return{project:t=>T(t,{skip:e=>!!k(e,"editorHelper")||e.isSkeletonHelper===!0,identify:(e,r)=>`source-object:${n}:${r.path.join(".")}`})}}function vt(n){const t=Z(n);return t?t.kind:q(n).length>0?"constraint-owner":X(n)?"reflection-probe":n.isSkinnedMesh?"skinned-mesh":n.isBone?"bone":n.isLight?"light":n.isCamera?"camera":n.type==="Audio"||n.type==="PositionalAudio"||n.type==="AudioListener"?"audio":n.isMesh?"mesh":n.children.length>0?"group":"object"}function ot(n,t){for(let e=n.parent;e!==null;e=e.parent)if(e===t)return!0;return!1}function _(n,t){if(n===t)return!0;for(let e=n.parent;e!==null;e=e.parent)if(e===t)return!0;return!1}class wt{constructor(t,e={}){this.identity=t,this.options=e}nodesById=new Map;objectsById=new Map;idsByObjectIndex=new Map;roots=[];walkStats=R;project(t){if(!t)return this.nodesById=new Map,this.objectsById=new Map,this.idsByObjectIndex=new Map,this.roots=[],this.walkStats=R,this.walkStats;const{nodes:e,rootIds:r,stats:s}=this.identity.project(t);return this.nodesById=e,this.objectsById=new Map([...e].map(([f,u])=>[f,u.object])),this.idsByObjectIndex=new Map([...e].map(([f,u])=>[u.object,f])),this.roots=r,this.walkStats=s,s}projectSubtrees(t,e){const r=this.identity.incremental;if(t===null||r?.kind!=="live-oid")return null;const s=e.filter((a,l)=>e.indexOf(a)===l&&!e.some(y=>y!==a&&ot(a,y))),f=this.roots,u=new Set,d=new Set,i=new Set;for(const a of s)a.traverse(l=>{const y=this.idsByObjectIndex.get(l);if(y===void 0)return;const g=this.nodesById.get(y);g?.parentId!==null&&g?.parentId!==void 0&&i.add(g.parentId),u.add(y),this.nodesById.delete(y),this.objectsById.delete(y),this.idsByObjectIndex.delete(l)});const c=P,o=(a,l)=>{const y=this.objectsById.get(a);return y===void 0||y===l},h=(a,l)=>{const y=$(a);if(y!==void 0&&o(y,a))return y;const g=E(a);if(g!==void 0){const w=O(r.worldId,g);let B=0,j=S(w,B);for(;!o(j,a);)j=S(w,++B);return j}if(!l||k(a,"authoringRoot")===!0){let w=`live:${r.worldId}:${x++}`;for(;!o(w,a);)w=`live:${r.worldId}:${x++}`;return w}return null},p=(a,l,y)=>{if(c(a))return;const g=h(a,y);g!==null&&(A(a,g),this.nodesById.set(g,{object:a,id:g,parentId:l,childIds:[]}),this.objectsById.set(g,a),this.idsByObjectIndex.set(a,g),d.add(g),l!==null&&i.add(l));const w=g??l,B=y||g!==null;for(const j of a.children)p(j,w,B)};for(const a of s){if(!_(a,t))continue;let l=a.parent,y=null;for(;l!==null&&l!==t;){const g=this.idsByObjectIndex.get(l);if(g!==void 0){y=g;break}l=l.parent}p(a,y,y!==null)}const v=a=>{const l=[],y=g=>{if(c(g))return;const w=this.idsByObjectIndex.get(g);if(w!==void 0){l.push(w);return}for(const B of g.children)y(B)};for(const g of a.children)y(g);return l};for(const a of i){const l=this.nodesById.get(a);l!==void 0&&l.childIds.splice(0,l.childIds.length,...v(l.object))}for(const a of d){const l=this.nodesById.get(a);l!==void 0&&l.childIds.splice(0,l.childIds.length,...v(l.object))}const b=v(t),I=this.roots.filter(a=>{const l=this.objectsById.get(a);return l!==void 0&&!_(l,t)&&!u.has(a)});this.roots=[...b,...I],this.walkStats=F(this.nodesById);const m=f.length!==this.roots.length||f.some((a,l)=>a!==this.roots[l]);return{removedIds:u,addedIds:d,changedParentIds:i,rootsChanged:m}}get nodes(){return this.nodesById}get objects(){return this.objectsById}get idsByObject(){return this.idsByObjectIndex}get rootIds(){return this.roots}get stats(){return this.walkStats}node(t){return this.nodesById.get(t)??null}rootNodes(){return this.roots.map(t=>this.nodesById.get(t)).filter(t=>t!==void 0)}objectOf(t){return this.objectsById.get(t)??null}idOf(t){return this.idsByObjectIndex.get(t)??null}childIdsOf(t){const e=[];for(const r of t){const s=this.idsByObjectIndex.get(r);s!==void 0&&e.push(s)}return e}objectMapSnapshot(){return new Map(this.objectsById)}pick(t,e,r,s){return st(t,e,r,s,this.pickProjection())}candidates(t,e,r,s){return L(t,e,r,s,this.pickProjection())}pickProjection(){if(this.options.pickScope!=="store-object-map")return{objects:this.objectsById.values(),idForObject3D:t=>this.idOf(t)}}}export{wt as T,yt as a,gt as b,It as c,mt as d,q as e,ht as f,vt as n,Z as o,X as r,pt as s};
@@ -1 +1 @@
1
- import{dx as k,ed as _,Z as v,ay as A,aC as z,e8 as O,gA as W,gB as R,q as P,bU as U,gC as G,an as N,bV as L,bS as Q,bT as Y,k as Z,bW as q}from"./index-DBIFLhzt.js";import{a as ee,o as te,b as C}from"./component-instance-root-BNr-40yw.js";import{c as re,p as x,m as se,a as oe}from"./source-persistence-backend-CNNtYr-8.js";import{J as ie,c as ne}from"./json-history-resource-DFBTBtzt.js";import{r as f,d as ae,a as ce}from"./ingest-source-persistence-Bfhu6YfK.js";import{r as le}from"./three-projection-core-BKmXcOPL.js";import{a as D,T as he,n as ue,b as de}from"./three-43Ky3-7O.js";import{isEditorOwnedObject as T}from"./editor-layers-psmpPtJ8.js";import{bodyOwningNode as F}from"./body-marks-C1LxJtQb.js";import{colorMaterialOf as y}from"./structural-ids-BOo2BRoY.js";import{object3DAuthoringSubjectOf as H}from"./object3d-authoring-subject-XccsO0xG.js";import{createRapierBodyEditing as fe}from"./rapier-physics-adapter-CaZqWLu0.js";import{getUserData as m}from"./user-data-CODoGZqA.js";import{b as me,c as pe}from"./r3f-physics-binding-CoSwbmVM.js";const be={position:{owner:"self",member:"position",kind:"vector3"},rotation:{owner:"self",member:"rotation",kind:"euler"},scale:{owner:"self",member:"scale",kind:"vector3"},visible:{owner:"self",member:"visible",kind:"boolean"},name:{owner:"self",member:"name",kind:"string"},"material.color":{owner:"material",member:"color",kind:"color"},"light.color":{owner:"self",member:"color",kind:"color"},"light.intensity":{owner:"self",member:"intensity",kind:"number"},"light.distance":{owner:"self",member:"distance",kind:"number"},"camera.fov":{owner:"self",member:"fov",kind:"number"},"camera.near":{owner:"self",member:"near",kind:"number"},"camera.far":{owner:"self",member:"far",kind:"number"},"shadow.cast":{owner:"self",member:"castShadow",kind:"boolean"},"shadow.receive":{owner:"self",member:"receiveShadow",kind:"boolean"}},ye={position:{owner:"self",member:"position",kind:"vector2",componentMembers:["x","y"]},rotation:{owner:"self",member:"rotation",kind:"number"},scale:{owner:"self",member:"scale",kind:"vector2"},visible:{owner:"self",member:"visible",kind:"boolean"},name:{owner:"self",member:"label",kind:"string"},alpha:{owner:"self",member:"alpha",kind:"number"},tint:{owner:"self",member:"tint",kind:"color"}},ge={position:{owner:"self",member:"position",kind:"vector3"},rotation:{owner:"self",member:"rotation",kind:"euler"},scale:{owner:"self",member:"scaling",kind:"vector3"},name:{owner:"self",member:"name",kind:"string"},visible:{owner:"self",member:"isVisible",kind:"boolean"},visibility:{owner:"self",member:"visibility",kind:"number"}};function J(l,t="three"){return(t==="pixi"?ye:t==="babylon"?ge:be)[l]??null}const K="the game's own JSX source (source-stamp write-back)",S={position:"position",rotation:"rotation",scale:"scale",visible:"visible",name:"name","material.color":"color","light.color":"color","light.intensity":"intensity","light.distance":"distance","camera.fov":"fov","camera.near":"near","camera.far":"far","shadow.cast":"castShadow","shadow.receive":"receiveShadow"};function M(l){const t=Math.round(l*1e4)/1e4;return Object.is(t,-0)?"0":String(t)}function V(l,t){const e=J(l)?.kind;return e==="vector3"||e==="euler"?!Array.isArray(t)||t.length!==3||!t.every(r=>typeof r=="number"&&Number.isFinite(r))?null:`[${t.map(M).join(", ")}]`:e==="number"?typeof t=="number"&&Number.isFinite(t)?M(t):null:e==="boolean"?typeof t=="boolean"?String(t):null:(e==="color"||e==="string")&&typeof t=="string"?t.replace(/["\\]/g,""):null}function X(l,t){const e=me(l??void 0,t);if(e)return e;const r=l?.r3fAuthoring;if(!r||t!=="position"&&t!=="rotation"&&t!=="scale")return null;const s=`<${l?.tag??"this component"}>`;return r.simulationOwnedTransform===!0?`${s} drives its own ${t} every frame — this instance is placed by the simulation, not by the editor`:r.transformProps.includes(t)?null:`${s} does not forward ${t} to its native root`}function I(l){const t=l.file.replaceAll("\\","/"),e=z()?.rootPath.replaceAll("\\","/").replace(/\/$/,""),r=e&&t.startsWith(`${e}/`)?t.slice(e.length+1):t;return{anchored:!0,kind:"source",file:r,line:l.line,col:l.col,display:`${r}:${l.line}`}}async function De(l){try{const e=await(l??k("Live source locations"))?.index?.();return r=>{const s=e?.[r];return s?I(s):null}}catch{return()=>null}}async function ve(l,t,e){const r=l.writeProp;if(!r)throw new Error("the gesture-scoped source writer cannot write JSX props");let s=0;for(const{property:o,text:i}of e){const a=await r(t,o,i,{addIfMissing:!0,allowShapeUpgrade:!0});if(a.dynamic)throw new Error(`${o} is bound to a JSX expression, not an authored literal`);if(!a.changed&&a.error)throw new Error(a.error);a.changed&&s++}return s}function we(l){const t=l.backend??k("The Play→source transform committer"),e=_(t,l.history),r=o=>o?!e?.runGesture||!e.writeProp||!e.index?{available:!1,reason:"This editor session cannot open a checksum-guarded project-source gesture."}:{available:!0}:{available:!1,reason:"This live node has no OID source stamp, so no authored literal owns its pose."},s=o=>(v.warn(`[play] Commit live transform to source refused: ${o}`,"play-mode"),{destination:A,persisted:!1});return{availability:r,async commit(o,i){const a=r(o);if(!a.available||!o||!e?.runGesture||!e.index)return s(a.reason??"the source writer is unavailable");const c=(await e.index())[o]??null;if(!c)return s(`the current source index has no entry for OID "${o}"`);const h=["position","rotation","scale"].map(d=>{const j=X(c,d);if(j)throw new Error(j);const w=i[d],$=w===void 0?null:V(d,w);if($===null)throw new Error(`${d} is not a finite transform literal`);return{property:d,text:$}});let u;try{u=await e.runGesture("Commit Play Transform to Source",d=>ve(d,o,h))}catch(d){return s(d instanceof Error?d.message:String(d))}return u===0?(v.log("[play] Source already matches the selected live transform.","play-mode"),{destination:"source already matched the live transform",persisted:!1}):(v.log(`[play] Committed ${u} live transform literal(s) to ${c.file}:${c.line}.`,"play-mode"),{destination:K,persisted:!0})}}}function Se(l){let t=null,e=new Map,r=!1;const s=async()=>{const n=t?.index;if(n)try{e=new Map(Object.entries(await n.call(t))),r=!0}catch{}},o=n=>n?e.get(n)??null:null,i=n=>{const c=o(n);return c?I(c).display:null},a=(n,c)=>{if(!n)return{ok:!1,reason:"this object carries no source stamp — the game built it at runtime rather than writing it as an element of its own source"};if(!t?.writeProp)return{ok:!1,reason:"this editor tier cannot write project source"};const h=S[c];if(!h)return{ok:!1,reason:`${c} has no JSX attribute this seam can write`};const u=X(o(n),h);if(u)return{ok:!1,reason:u};if(!O()){const d=i(n);return{ok:!1,reason:`${d?`written at ${d}`:"source-stamped"}, but this game is playing — hold it to author`}}return{ok:!0}};return{attach(){const n=l.backend??k("This world’s OID source persistence")??null;t=n?_(n,l.history)??n:null,s()},anchor(n){const c=e.get(n);return c?I(c):null},physicsPlaced(n,c){return pe(o(n)??void 0,S[c]??c)},describe({sourceOid:n,property:c}){const h=a(n,c);if(!h.ok)return`Live-only edit — ${h.reason}.`;const u=i(n);return u?`Persisting to ${u}.`:`Persisting to this element's own JSX${r?"":" (source index still loading)"}.`},gate({sourceOid:n,property:c}){return a(n,c)},armed:()=>t?.writeProp!==void 0&&O(),report:(n,c)=>f(n,c),async write(n){const c=a(n.sourceOid,n.property);if(!c.ok)return f(n.label,c.reason),!1;const h=S[n.property],u=V(n.property,n.next);if(u===null)return f(n.label,`the new ${n.property} is not a value this seam can spell as a JSX literal`),!1;try{const d=await t.writeProp(n.sourceOid,h,u,{addIfMissing:!0,allowShapeUpgrade:!0});return d.dynamic?(f(n.label,`${h} at ${i(n.sourceOid)??"this element"} is bound to a JSX expression, not a literal`),!1):d.changed?(v.log(`[ingest] ${n.label} written to the game's own source — ${h} → ${i(n.sourceOid)??n.sourceOid}`),s(),!0):(f(n.label,d.error??"the source writer made no change"),!1)}catch(d){return f(n.label,`the write failed: ${d instanceof Error?d.message:String(d)}`),!1}},removal:{available({sourceOid:n,property:c}){return t?.removeProp?a(n,c).ok:!1},async perform(n){const c=a(n.sourceOid,n.property);if(!c.ok||!t?.removeProp)return f(n.label,c.ok?"this editor tier cannot remove project source":c.reason),!1;const h=S[n.property];try{const u=await t.removeProp(n.sourceOid,h);return u.dynamic?(f(n.label,`${h} at ${i(n.sourceOid)??"this element"} is bound to a JSX expression — removing it would delete the game's own wiring, not an override`),!1):u.changed?(v.log(`[ingest] ${n.label} — ${h} dropped from the game's own source at ${i(n.sourceOid)??n.sourceOid}`),s(),!0):(f(n.label,u.error??`${i(n.sourceOid)??"this element"} authors no ${h} attribute, so there was nothing to drop`),!1)}catch(u){return f(n.label,`the removal failed: ${u instanceof Error?u.message:String(u)}`),!1}}},destination(){return t?.writeProp&&O()?K:A},dispose(){t=null,e=new Map,r=!1}}}const je={source:"live",label:"live",detail:"Running objects adopted from the live scene. Edits affect this session only and are discarded when play stops."},Oe="Applied to the running world; code that drives this transform each frame may overwrite it.",Ce={source:"foreign",label:"live-only",detail:"Unmodified ingested game — edits apply to the running game for this session only and are never saved."},Ie={source:"foreign",label:"game source",detail:"Ingested game whose own source carries the editor's authoring stamps — a literal JSX prop writes back to the game’s own file (expression-bound props stay read-only)."};function p(l){return l.isLight?l:null}function g(l){const t=l;return t.isPointLight||t.isSpotLight?t:null}function ke(l){const t=l;return t.isDirectionalLight||t.isPointLight||t.isSpotLight?t:null}function b(l){const t=l;return t.isPerspectiveCamera?t:null}function B(l){const t=l;return t.isMesh&&t.geometry?t.geometry:null}class E{constructor(t,e,r){if(this.store=t,this.options=r,this.sceneRef=e,this.identity=r.identity,this.projector=new he(this.identity,{pickScope:"projection"}),this.persist=r.persistence??null,this.loop=r.loop,this.frameControl=r.frameControl??"adapter",this.provenance=r.provenance??je,r.sourceCommit){const i={availability:a=>r.sourceCommit.availability(C(this.objectOf(a))),commit:async a=>{const n=this.objectOf(a),c=this.captureChannelBaseline(a)??{},h=await r.sourceCommit.commit(C(n),c);return h.persisted&&this.store.shell.notifyIngestEdit(),h}};Object.assign(this.transforms,{sourceCommit:i})}r.sourceDeclaresStories&&(this.stories=W("three",t.shell,i=>{const a=this.hierarchy.node(i);return a?.role!=="component"?null:{name:a.typeLabel??a.label}})),this.refresh(),this.watchStructure();const s=t.shell.projectHistory;this.historyResource=this.persist&&s?new ie({history:s,kind:"session-state",scope:"session",subject:{...r.journal,id:`${r.journal.id}/live-three-edits`},displayName:"Live edits",capture:()=>this.captureHistoryState(),conflictIdentity:i=>i.edits,restore:async i=>{this.restoreHistoryState(i)}}):null;const o=this.persist;o&&(o.attach({read:(i,a)=>this.readChannel(i,a),apply:(i,a,n)=>this.applyChannel(i,a,n)}),this.persistence={...ne(),get destination(){return o.destination()}},o.readSiteLiterals&&(this.instances=this.creationSiteInstances(o)))}sceneRef;projector;watchedForStructure=new Set;changedStructureRoots=new Set;structureRefreshQueued=!1;disposed=!1;crossSurfaceStructureRevision=0;hasCrossSurfaceStructure=!1;identity;persist;loop;frameControl;instanceLiterals=new Map;instanceLiteralRequests=new Map;markedBodies=fe(t=>{const e=this.objectOf(t);if(!e)return{kind:"unresolved"};const r=F(e);return r?{kind:"body",body:r}:{kind:"no-body"}});bodyOwnershipByObject=new WeakMap;physicsFor(t){const e=R();return e&&P(e,t)!=="unresolved"?e:null}edits={};historyResource;editStartState;editBaseline;capabilities={transform:!0,inspectorFields:!0,persist:!1};stories;instances;provenance;persistence;get scene(){return typeof this.sceneRef=="function"?this.sceneRef():this.sceneRef}refresh(){const t=this.projector.project(this.scene);return this.refreshCrossSurfacePresence(),this.crossSurfaceStructureRevision++,t}crossSurfaceStructureSignature(){return this.hasCrossSurfaceStructure?String(this.crossSurfaceStructureRevision):null}objectCarriesCrossSurfaceStructure(t){return m(t,"authoringHierarchyId")!==void 0||m(t,"authoringHierarchyParentId")!==void 0||m(t,"authoringHierarchyOrder")!==void 0}subtreeCarriesCrossSurfaceStructure(t){let e=!1;return t.traverse(r=>{this.objectCarriesCrossSurfaceStructure(r)&&(e=!0)}),e}refreshCrossSurfacePresence(){this.hasCrossSurfaceStructure=!1;for(const t of this.projector.nodes.values())if(this.objectCarriesCrossSurfaceStructure(t.object)){this.hasCrossSurfaceStructure=!0;return}}onStructureChanged=t=>{T(t.child)||this.disposed||(this.changedStructureRoots.add(t.child),!this.structureRefreshQueued&&(this.structureRefreshQueued=!0,queueMicrotask(()=>{if(this.structureRefreshQueued=!1,this.disposed)return;const e=[...this.changedStructureRoots];this.changedStructureRoots.clear();const r=e.some(o=>this.subtreeCarriesCrossSurfaceStructure(o));for(const o of e)this.unwatchStructureSubtree(o);const s=this.projector.projectSubtrees(this.scene,e);if(s===null)this.refresh(),this.watchStructure();else for(const o of e)this.structureRootIsAttached(o)&&this.watchStructureSubtree(o);r&&(this.refreshCrossSurfacePresence(),this.crossSurfaceStructureRevision++),this.syncAdoptedObjectMap(s??void 0),this.store.notifyIngestObjectMapEdit(s===null?void 0:{changedParentIds:s.changedParentIds,rootsChanged:s.rootsChanged,addedIds:s.addedIds,removedIds:s.removedIds})})))};watchStructure(){for(const e of this.watchedForStructure)e.removeEventListener("childadded",this.onStructureChanged),e.removeEventListener("childremoved",this.onStructureChanged);this.watchedForStructure.clear();const t=this.scene;t&&this.watchStructureSubtree(t)}watchStructureSubtree(t){const e=r=>{if(!(T(r)||this.watchedForStructure.has(r))){r.addEventListener("childadded",this.onStructureChanged),r.addEventListener("childremoved",this.onStructureChanged),this.watchedForStructure.add(r);for(const s of r.children)e(s)}};e(t)}structureRootIsAttached(t){const e=this.scene;if(e===null)return!1;for(let r=t;r!==null;r=r.parent)if(r===e)return!0;return!1}unwatchStructureSubtree(t){t.traverse(e=>{this.watchedForStructure.delete(e)&&(e.removeEventListener("childadded",this.onStructureChanged),e.removeEventListener("childremoved",this.onStructureChanged))})}syncAdoptedObjectMap(t){const e=this.scene;if(!e||this.store.scene!==e)return;const r=this.store.objectMap;if(t===void 0){r.clear();for(const[o,i]of this.projector.objectMapSnapshot())r.set(o,i)}else{for(const o of t.removedIds)r.delete(o);for(const o of t.addedIds){const i=this.projector.objectOf(o);i!==null&&r.set(o,i)}}const s=[...this.store.shell.selectedEntityIds].filter(o=>r.has(o));s.length!==this.store.shell.selectedEntityIds.size&&this.store.shell.selectMultiple(s)}invalidate(){this.refresh()}adoptScene(t){this.sceneRef=t,this.refresh(),this.watchStructure(),this.syncAdoptedObjectMap()}objectOf(t){return this.projector.objectOf(t)}objectMapSnapshot(){return this.projector.objectMapSnapshot()}record(t,e){this.edits[t]={...this.edits[t],...e}}toEditorNode(t){const e=t.object,r=m(e,"authoringHierarchyId"),s=m(e,"authoringHierarchyParentId"),o=m(e,"authoringHierarchyOrder"),i=ee(e)&&m(e,"authoringRoot")!==!0,a=m(e,"authoringComponent"),n=(i?m(e,"authoringLabel"):void 0)||e.name||e.type;return{id:t.id,label:n,role:i?"component":"entity",kind:ue(e),typeLabel:i?a||n:e.type,parentId:t.parentId,childIds:[...t.childIds],...r===void 0?{}:{crossSurfaceId:r},...s===void 0?{}:{crossSurfaceParentId:s},...o===void 0?{}:{crossSurfaceOrder:o}}}hierarchy={crossSurfaceStructureSignature:()=>this.crossSurfaceStructureSignature(),roots:()=>this.projector.rootNodes().map(t=>this.toEditorNode(t)),node:t=>{const e=this.projector.node(t);return e?this.toEditorNode(e):null},object3D:t=>this.objectOf(t),idForObject3D:t=>this.projector.idOf(t)};selection={get:()=>[...this.store.shell.selectedEntityIds],set:t=>this.store.shell.selectMultiple(t),resolve:(t,e)=>{const r=this.hierarchy.node(t);if(!r)return null;const s=[];let o=r,i=0;for(;o&&i++<1e3;)(o.role==="component"||o.role==="instance")&&s.push(o),o=o.parentId?this.hierarchy.node(o.parentId):null;const a=s.reverse();if(a.length===0)return{id:t};const n=e?.scopeId?a.findIndex(u=>u.id===e.scopeId):-1,c=n>=0?Math.min(n+1,a.length-1):0,h=e?.intent==="deep"?Math.min(c+1,a.length-1):c;return{id:a[h].id}}};pickable={pick:(t,e)=>(this.refresh(),this.projector.pick(this.store,t,e)),candidates:(t,e)=>(this.refresh(),this.projector.candidates(this.store,t,e))};truth={resolve:(t,e)=>{const r=this.anchorFor(t,e);return{site:r.anchor,writeAnchorKind:r.anchorKind}}};related=re(t=>this.truth.resolve(t,"position").site);transforms={get:t=>le(this.objectOf(t)),editability:(t,e)=>{if(!this.objectOf(t))return{writable:!1,reason:G};const r=N();return r?.networkId(t)&&!r.editable(t)?{writable:!1,reason:"This transform is controlled by remote or server network authority."}:this.bodyOwns(t)?{writable:!0,reason:"Moves the physics body that owns this node.",...this.removableFlag(t,e)}:this.frameControl==="host"&&this.store.shell.playState==="playing"?{writable:!0,reason:Oe,...this.removableFlag(t,e)}:this.persist?{writable:!0,reason:this.persist.describe(this.anchorFor(t,e)),...this.removableFlag(t,e)}:{writable:!0}},beginEdit:t=>{this.historyResource?.assertCanMutate(),!(!this.objectOf(t)||!this.editableByNetwork(t))&&(this.loop?.pause(),this.physicsFor(t)?.freeze(t),this.markedBodies.freeze(t),this.editStartState=this.persist?this.captureHistoryState():void 0,this.editBaseline=void 0)},apply:(t,e)=>{!this.objectOf(t)||!this.editableByNetwork(t)||(this.persist&&!this.editBaseline&&(this.editBaseline=this.captureChannelBaseline(t)),this.writeTransform(t,e),this.physicsFor(t)?.commit(t,e),this.markedBodies.commit(t,e),this.store.shell.notifyIngestEdit())},endEdit:t=>{this.loop?.resume();const e=this.objectOf(t),r=`Transform ${e?.name||"Object"}`,s=this.editStartState,o=this.editBaseline;return this.editStartState=void 0,this.editBaseline=void 0,e&&(this.physicsFor(t)?.unfreeze(t),this.markedBodies.unfreeze(t),this.store.shell.notifyIngestEdit()),this.persist?this.persistOrJournal(t,r,s,o):void 0},remove:(t,e)=>{if(this.persist?.removal)return U(this.pipedRemove(t,e))}};removableFlag(t,e){const r=this.persist?.removal;return r?r.available(this.anchorFor(t,e))?{removable:!0}:{}:{}}pipedRemove(t,e){const r=this.persist,s=r.removal,o=`Remove ${this.objectOf(t)?.name||"Object"} ${e}`;return{resolve:()=>{const i=this.anchorFor(t,e);return s.available(i)?i.anchorKind==="live-only"?L(r.describe(i)):{reaches:"writer",anchorKind:i.anchorKind,destination:r.destination(),write:()=>s.perform({...i,label:o})}:L(r.describe(i))},record:()=>{},report:i=>{r.armed()&&r.report(o,i)}}}bodyOwns(t){const e=this.objectOf(t);if(!e)return!1;const r=this.bodyOwnershipByObject.get(e);if(r!==void 0)return r;const s=R(),o=s?P(s,t):void 0;if(o==="physics")return this.bodyOwnershipByObject.set(e,!0),!0;const i=F(e)!==void 0;return(i||o==="editor")&&this.bodyOwnershipByObject.set(e,i),i}editableByNetwork(t){const e=N();return e?e.editable(t):!0}inspector={properties:t=>{const e=this.objectOf(t);if(!e)return[];const r=[{path:"name",label:"Name",type:"string"},{path:"visible",label:"Visible",type:"boolean"},{path:"object.type",label:"Native type",type:"string",readonly:!0}],s=H(e);return s?.fields&&r.push(...s.fields().filter(i=>!["name","visible"].includes(i.path)).map(({value:i,...a})=>a)),y(e)&&r.push({path:"material.color",label:"Color",type:"color",group:"Material"}),p(e)&&(r.push({path:"light.intensity",label:"Intensity",type:"number"}),r.push({path:"light.color",label:"Light Color",type:"color"}),g(e)&&r.push({path:"light.distance",label:"Distance",type:"number"}),ke(e)&&r.push({path:"shadow.cast",label:"Cast Shadow",type:"boolean"})),b(e)&&(r.push({path:"camera.fov",label:"FOV",type:"number"}),r.push({path:"camera.near",label:"Near",type:"number"}),r.push({path:"camera.far",label:"Far",type:"number"})),B(e)&&(r.push({path:"mesh.vertices",label:"Vertices",type:"number",readonly:!0}),r.push({path:"shadow.cast",label:"Cast Shadow",type:"boolean"}),r.push({path:"shadow.receive",label:"Receive Shadow",type:"boolean"})),r},get:(t,e)=>{const r=this.objectOf(t);if(!r)return;if(e==="name")return r.name;if(e==="visible")return r.visible;if(e==="object.type")return r.type;const s=H(r)?.fields?.().find(o=>o.path===e);if(s)return s.value();if(e==="material.color"){const o=y(r);return o?`#${o.color.getHexString()}`:void 0}if(e==="light.intensity")return p(r)?.intensity;if(e==="light.distance")return g(r)?.distance;if(e==="light.color"){const o=p(r);return o?`#${o.color.getHexString()}`:void 0}if(e==="camera.fov")return b(r)?.fov;if(e==="camera.near")return b(r)?.near;if(e==="camera.far")return b(r)?.far;if(e==="mesh.vertices"){const o=B(r);return o?o.getAttribute("position")?.count??0:void 0}if(e==="shadow.cast")return r.castShadow;if(e==="shadow.receive")return r.receiveShadow},set:(t,e,r)=>{if(this.historyResource?.assertCanMutate(),!this.persist){this.writeProp(t,e,r);return}const s=this.captureHistoryState(),o=this.readChannel(t,e);this.writeProp(t,e,r);const i=`Set ${this.objectOf(t)?.name||"Object"} ${e}`,a=this.readChannel(t,e);if(!(o!==void 0&&a!==void 0&&JSON.stringify(o)!==JSON.stringify(a))){this.recordHistory(i,s);return}return x({backend:this.persist,subject:()=>this.anchorFor(t,e),baseline:o,next:a,label:i,journal:()=>this.recordHistory(i,s)})}};subscribe(t){return this.store.shell.subscribe(t)}dispose(){this.disposed=!0;for(const t of this.watchedForStructure)t.removeEventListener("childadded",this.onStructureChanged),t.removeEventListener("childremoved",this.onStructureChanged);this.watchedForStructure.clear(),this.changedStructureRoots.clear(),this.historyResource?.dispose(),this.persist?.dispose()}readChannel(t,e){const r=this.objectOf(t);if(r)return e==="position"?r.position.toArray():e==="rotation"?[r.rotation.x,r.rotation.y,r.rotation.z]:e==="scale"?r.scale.toArray():this.inspector.get(t,e)}applyChannel(t,e,r){const s=this.objectOf(t);if(s){if(e==="position"&&Array.isArray(r))s.position.fromArray(r);else if(e==="rotation"&&Array.isArray(r)){const[o,i,a]=r;s.rotation.set(o??0,i??0,a??0)}else if(e==="scale"&&Array.isArray(r))s.scale.fromArray(r);else{this.writeProp(t,e,r);return}this.store.shell.notifyIngestEdit()}}writeTransform(t,e){this.historyResource?.assertCanMutate();const r=this.objectOf(t);r&&(r.position.set(e.position[0],e.position[1],e.position[2]),r.quaternion.set(e.rotation[0],e.rotation[1],e.rotation[2],e.rotation[3]),r.scale.set(e.scale[0],e.scale[1],e.scale[2]),this.record(t,{position:e.position,rotation:e.rotation,scale:e.scale}))}writeProp(t,e,r){const s=this.objectOf(t);if(s){if(e==="name")s.name=String(r);else if(e==="visible")s.visible=!!r,this.record(t,{visible:s.visible});else if(e==="material.color"){const o=y(s);o&&(o.color.set(String(r)),this.record(t,{color:`#${o.color.getHexString()}`}))}else if(e==="light.intensity"){const o=p(s);o&&(o.intensity=Number(r))}else if(e==="light.distance"){const o=g(s);o&&(o.distance=Number(r))}else if(e==="light.color")p(s)?.color.set(String(r));else if(e==="camera.fov"||e==="camera.near"||e==="camera.far"){const o=b(s);o&&(o[e.split(".")[1]]=Number(r),o.updateProjectionMatrix())}else e==="shadow.cast"?s.castShadow=!!r:e==="shadow.receive"&&(s.receiveShadow=!!r);this.store.shell.notifyIngestEdit()}}anchorFor(t,e){const r=this.objectOf(t),s=J(e),o=r&&s?.owner==="material"?y(r):r,i=s?.owner==="material"?te(o):C(o),a=i?this.persist?.anchor?.(i):null;if(a){const h=i?this.persist?.physicsPlaced?.(i,e):!1;return{entityId:t,property:e,anchor:a,anchorKind:h?"physics-binding":"source-prop",instances:1,sourceOid:i}}const n=ae(o);if(n!==null)return{entityId:t,property:e,anchor:ce(n),anchorKind:"data-record",instances:1,...i?{sourceOid:i}:{}};const c=i?this.options.sourceAnchor?.(i)??{anchored:!1,reason:"The source index has not resolved this object’s OID."}:Q(o??null);return{entityId:t,property:e,anchor:c,anchorKind:i?this.persist?.anchor?"source-prop":"live-only":c.anchored?"construction-literal":"live-only",instances:c.anchored&&c.kind==="source"?i?1:Y(c):0,...i?{sourceOid:i}:{}}}measureWriteReach(){this.refresh();let t=0;const e=Z();for(const r of this.projector.nodes.keys()){const s=this.anchorFor(r,"position");e[s.anchorKind]++,s.anchor.anchored&&t++}return{addressable:t,total:this.projector.nodes.size,destination:this.persist?.destination()??A,byKind:e}}captureChannelBaseline(t){const e=this.objectOf(t);if(e)return{position:e.position.toArray(),rotation:[e.rotation.x,e.rotation.y,e.rotation.z],scale:e.scale.toArray()}}persistOrJournal(t,e,r,s){const o=this.persist;if(!o)return;const i=s?this.captureChannelBaseline(t):void 0,a=s&&i?Object.keys(s).filter(c=>JSON.stringify(s[c])!==JSON.stringify(i[c])):[];a.length>1&&o.report(e,se(a));const n=a.length===1?a[0]:null;if(n===null){this.recordHistory(e,r);return}return x({backend:o,subject:()=>this.anchorFor(t,n),baseline:s[n],next:i[n],label:e,journal:()=>this.recordHistory(e,r)})}creationSiteKey(t){const e=t.anchor;return e.anchored&&e.kind==="source"?`${e.file}:${e.line}:${e.col}`:null}instancePropertyPaths(t,e){const r=["position","rotation","scale",...this.inspector.properties(t).filter(s=>!s.readonly).map(s=>s.path)];return[...new Set(r)].filter(s=>this.creationSiteKey(this.anchorFor(t,s))===e)}loadInstanceLiterals(t,e,r,s){const o=this.instanceLiteralRequests.get(s);if(o)return o;const i=this.instancePropertyPaths(e,s).map(n=>({property:n,live:this.readChannel(e,n)})).filter(n=>n.live!==void 0),a=t.readSiteLiterals({anchor:r.anchor,instances:r.instances,writeScope:"creation-site",properties:i}).then(n=>(this.instanceLiterals.set(s,n),this.store.shell.notifyIngestEdit(),n));return this.instanceLiteralRequests.set(s,a),a}sameInstanceValue(t,e){return Array.isArray(t)&&Array.isArray(e)?t.length===e.length&&t.every((r,s)=>this.sameInstanceValue(r,e[s])):typeof t=="number"&&typeof e=="number"?Math.abs(t-e)<=1e-6:t===e}instanceComponentName(t){return t.constructor.name||t.type}instanceCountLabel(t){return`${t} ${t===1?"instance":"instances"}`}instanceOverride(t,e,r,s,o){const i=s[r],a=this.readChannel(e,r);if(!i||i.literal===null||a===void 0||this.sameInstanceValue(i.literal,a))return null;const n=t.gate({...this.anchorFor(e,r),writeScope:"creation-site"}),c=i.writable?n.ok?void 0:n.reason:i.reason,h=this.inspector.properties(e).find(u=>u.path===r)?.label??r;return{path:r,label:h,value:a,...i.text?{defaultText:i.text}:{},canApplyToComponent:c===void 0,...c?{applyUnavailableReason:c}:{},affectedInstanceCount:o.instances}}async applyInstanceDefault(t,e,r,s){const o={...this.anchorFor(r,s),writeScope:"creation-site"},i=this.creationSiteKey(o);if(!i)return{changed:!1,message:"This object has no source site."};const a=this.objectOf(r);if(!a)return{changed:!1,message:"This object is no longer in the live world."};const n=(await e(r,o,i))[s];if(!n)return{changed:!1,message:`The construction site names no ${s}.`};if(n.literal===null)return{changed:!1,message:`The construction site names no ${s} default.`};const c=this.readChannel(r,s);if(c===void 0)return{changed:!1,message:`${s} has no live value.`};if(!n.writable)return{changed:!1,message:n.reason??`${s} cannot be rewritten.`};const h=t.gate(o);if(!h.ok)return{changed:!1,message:h.reason};const u=o.instances,d=`Apply ${s} to ${this.instanceComponentName(a)} default (${this.instanceCountLabel(u)})`;if(!await t.write({...o,baseline:n.literal,next:c,label:d}))return{changed:!1,message:`${d} did not land; the console names why.`};this.instanceLiterals.delete(i),this.instanceLiteralRequests.delete(i),this.store.shell.notifyIngestEdit();const w=o.anchor.anchored?o.anchor.display:"this source site";return{changed:!0,message:`${s} now applies to all ${this.instanceCountLabel(u)} from ${w}.`,write:{destination:w,persisted:!0}}}creationSiteInstances(t){const e=async(r,s,o)=>this.instanceLiterals.get(o)??this.loadInstanceLiterals(t,r,s,o);return{describe:r=>{const s=this.anchorFor(r,"position"),o=this.creationSiteKey(s),i=this.objectOf(r);if(!o||!i)return null;const a=this.instanceLiterals.get(o);if(!a)return this.loadInstanceLiterals(t,r,s,o),null;if(Object.keys(a).length===0)return null;const n=this.instancePropertyPaths(r,o).map(c=>this.instanceOverride(t,r,c,a,s)).filter(c=>c!==null);return{componentName:this.instanceComponentName(i),...s.anchor.anchored?{sourcePath:s.anchor.display}:{},overrides:n}},revert:async(r,s)=>{const o=this.anchorFor(r,"position"),i=this.creationSiteKey(o);if(!i)return;const a=await e(r,o,i),n=this.captureHistoryState();let c=0;for(const h of s){const u=a[h]?.literal;u!=null&&(this.applyChannel(r,h,u),c++)}return c>0&&this.recordHistory(`Revert ${c} instance override(s)`,n),c>0?q:void 0},applyToComponent:(r,s)=>this.applyInstanceDefault(t,e,r,s)}}recordHistory(t,e){!this.historyResource||!e||this.historyResource.record(t,e,this.captureHistoryState()).catch(r=>{v.error(`[ingest] failed to journal "${t}" into project history — the edit is applied but has no history entry (it cannot be undone): ${r instanceof Error?r.message:String(r)}`)})}captureHistoryState(){const t={};for(const[e,r]of this.projector.nodes){const s=r.object,o=y(s),i=p(s),a=b(s);t[e]={name:s.name,visible:s.visible,transform:this.transforms.get(e),...o?{color:`#${o.color.getHexString()}`}:{},...i?{lightIntensity:i.intensity,lightColor:`#${i.color.getHexString()}`,...g(s)?{lightDistance:g(s).distance}:{}}:{},...a?{camera:{fov:a.fov,near:a.near,far:a.far}}:{},castShadow:s.castShadow,receiveShadow:s.receiveShadow}}return{edits:structuredClone(this.edits),objects:t}}restoreHistoryState(t){for(const[e,r]of Object.entries(t.objects)){const s=this.objectOf(e);if(!s)continue;s.name=r.name,s.visible=r.visible,s.position.fromArray(r.transform.position),s.quaternion.fromArray(r.transform.rotation),s.scale.fromArray(r.transform.scale),this.physicsFor(e)?.commit(e,r.transform),this.markedBodies.commit(e,r.transform),r.color&&y(s)?.color.set(r.color);const o=p(s);if(o&&(r.lightIntensity!==void 0&&(o.intensity=r.lightIntensity),r.lightColor&&o.color.set(r.lightColor),r.lightDistance!==void 0)){const a=g(s);a&&(a.distance=r.lightDistance)}const i=b(s);i&&r.camera&&(i.fov=r.camera.fov,i.near=r.camera.near,i.far=r.camera.far,i.updateProjectionMatrix()),s.castShadow=r.castShadow,s.receiveShadow=r.receiveShadow}this.edits=structuredClone(t.edits),this.store.shell.notifyIngestEdit()}}function Je(l,t,e){return new E(l,t,{identity:de({camera:e.camera}),journal:e.journal,persistence:oe({history:l.shell.projectHistory,writer:e.sourceWriter}),loop:e.loop,...e.frameControl?{frameControl:e.frameControl}:{},provenance:Ce})}function Ke(l,t,e){return new E(l,t,{identity:D(e.worldId,{camera:e.camera}),journal:e.journal,persistence:Se({history:l.shell.projectHistory,backend:e.backend}),loop:e.loop,...e.frameControl?{frameControl:e.frameControl}:{},provenance:Ie,sourceDeclaresStories:!0})}function Ve(l,t,e,r,s={}){return new E(l,t,{identity:D(e),journal:r,frameControl:"host",sourceAnchor:s.sourceAnchor,...s.explicitSourceCommit?{sourceCommit:we({history:l.shell.projectHistory,...s.backend?{backend:s.backend}:{}})}:{}})}export{Ke as a,Ve as o,De as r,Je as s};
1
+ import{dx as k,eg as _,Z as v,ay as E,aC as z,eb as O,gC as W,gD as R,q as P,bU as U,gE as G,an as N,bV as L,bS as Q,bT as Y,k as Z,bW as q}from"./index-EO6Vl92s.js";import{a as ee,o as te,b as C}from"./component-instance-root-JAQpC4Pi.js";import{c as re,p as x,m as se,a as oe}from"./source-persistence-backend-DPS956_W.js";import{J as ie,c as ne}from"./json-history-resource-BjCvVkMa.js";import{r as f,d as ae,a as ce}from"./ingest-source-persistence-C2eN6TUG.js";import{r as le}from"./three-projection-core-Bsu421K7.js";import{a as D,T as he,n as ue,b as de}from"./three-DItubEyv.js";import{isEditorOwnedObject as T}from"./editor-layers-B43PZgUF.js";import{bodyOwningNode as F}from"./body-marks-C1LxJtQb.js";import{colorMaterialOf as y}from"./structural-ids-BOo2BRoY.js";import{object3DAuthoringSubjectOf as H}from"./object3d-authoring-subject-XccsO0xG.js";import{createRapierBodyEditing as fe}from"./rapier-physics-adapter-CaZqWLu0.js";import{getUserData as m}from"./user-data-CODoGZqA.js";import{b as me,c as pe}from"./r3f-physics-binding-CFwn2dZ0.js";const be={position:{owner:"self",member:"position",kind:"vector3"},rotation:{owner:"self",member:"rotation",kind:"euler"},scale:{owner:"self",member:"scale",kind:"vector3"},visible:{owner:"self",member:"visible",kind:"boolean"},name:{owner:"self",member:"name",kind:"string"},"material.color":{owner:"material",member:"color",kind:"color"},"light.color":{owner:"self",member:"color",kind:"color"},"light.intensity":{owner:"self",member:"intensity",kind:"number"},"light.distance":{owner:"self",member:"distance",kind:"number"},"camera.fov":{owner:"self",member:"fov",kind:"number"},"camera.near":{owner:"self",member:"near",kind:"number"},"camera.far":{owner:"self",member:"far",kind:"number"},"shadow.cast":{owner:"self",member:"castShadow",kind:"boolean"},"shadow.receive":{owner:"self",member:"receiveShadow",kind:"boolean"}},ye={position:{owner:"self",member:"position",kind:"vector2",componentMembers:["x","y"]},rotation:{owner:"self",member:"rotation",kind:"number"},scale:{owner:"self",member:"scale",kind:"vector2"},visible:{owner:"self",member:"visible",kind:"boolean"},name:{owner:"self",member:"label",kind:"string"},alpha:{owner:"self",member:"alpha",kind:"number"},tint:{owner:"self",member:"tint",kind:"color"}},ge={position:{owner:"self",member:"position",kind:"vector3"},rotation:{owner:"self",member:"rotation",kind:"euler"},scale:{owner:"self",member:"scaling",kind:"vector3"},name:{owner:"self",member:"name",kind:"string"},visible:{owner:"self",member:"isVisible",kind:"boolean"},visibility:{owner:"self",member:"visibility",kind:"number"}};function J(l,t="three"){return(t==="pixi"?ye:t==="babylon"?ge:be)[l]??null}const K="the game's own JSX source (source-stamp write-back)",S={position:"position",rotation:"rotation",scale:"scale",visible:"visible",name:"name","material.color":"color","light.color":"color","light.intensity":"intensity","light.distance":"distance","camera.fov":"fov","camera.near":"near","camera.far":"far","shadow.cast":"castShadow","shadow.receive":"receiveShadow"};function M(l){const t=Math.round(l*1e4)/1e4;return Object.is(t,-0)?"0":String(t)}function V(l,t){const e=J(l)?.kind;return e==="vector3"||e==="euler"?!Array.isArray(t)||t.length!==3||!t.every(r=>typeof r=="number"&&Number.isFinite(r))?null:`[${t.map(M).join(", ")}]`:e==="number"?typeof t=="number"&&Number.isFinite(t)?M(t):null:e==="boolean"?typeof t=="boolean"?String(t):null:(e==="color"||e==="string")&&typeof t=="string"?t.replace(/["\\]/g,""):null}function X(l,t){const e=me(l??void 0,t);if(e)return e;const r=l?.r3fAuthoring;if(!r||t!=="position"&&t!=="rotation"&&t!=="scale")return null;const s=`<${l?.tag??"this component"}>`;return r.simulationOwnedTransform===!0?`${s} drives its own ${t} every frame — this instance is placed by the simulation, not by the editor`:r.transformProps.includes(t)?null:`${s} does not forward ${t} to its native root`}function I(l){const t=l.file.replaceAll("\\","/"),e=z()?.rootPath.replaceAll("\\","/").replace(/\/$/,""),r=e&&t.startsWith(`${e}/`)?t.slice(e.length+1):t;return{anchored:!0,kind:"source",file:r,line:l.line,col:l.col,display:`${r}:${l.line}`}}async function De(l){try{const e=await(l??k("Live source locations"))?.index?.();return r=>{const s=e?.[r];return s?I(s):null}}catch{return()=>null}}async function ve(l,t,e){const r=l.writeProp;if(!r)throw new Error("the gesture-scoped source writer cannot write JSX props");let s=0;for(const{property:o,text:i}of e){const a=await r(t,o,i,{addIfMissing:!0,allowShapeUpgrade:!0});if(a.dynamic)throw new Error(`${o} is bound to a JSX expression, not an authored literal`);if(!a.changed&&a.error)throw new Error(a.error);a.changed&&s++}return s}function we(l){const t=l.backend??k("The Play→source transform committer"),e=_(t,l.history),r=o=>o?!e?.runGesture||!e.writeProp||!e.index?{available:!1,reason:"This editor session cannot open a checksum-guarded project-source gesture."}:{available:!0}:{available:!1,reason:"This live node has no OID source stamp, so no authored literal owns its pose."},s=o=>(v.warn(`[play] Commit live transform to source refused: ${o}`,"play-mode"),{destination:E,persisted:!1});return{availability:r,async commit(o,i){const a=r(o);if(!a.available||!o||!e?.runGesture||!e.index)return s(a.reason??"the source writer is unavailable");const c=(await e.index())[o]??null;if(!c)return s(`the current source index has no entry for OID "${o}"`);const h=["position","rotation","scale"].map(d=>{const j=X(c,d);if(j)throw new Error(j);const w=i[d],$=w===void 0?null:V(d,w);if($===null)throw new Error(`${d} is not a finite transform literal`);return{property:d,text:$}});let u;try{u=await e.runGesture("Commit Play Transform to Source",d=>ve(d,o,h))}catch(d){return s(d instanceof Error?d.message:String(d))}return u===0?(v.log("[play] Source already matches the selected live transform.","play-mode"),{destination:"source already matched the live transform",persisted:!1}):(v.log(`[play] Committed ${u} live transform literal(s) to ${c.file}:${c.line}.`,"play-mode"),{destination:K,persisted:!0})}}}function Se(l){let t=null,e=new Map,r=!1;const s=async()=>{const n=t?.index;if(n)try{e=new Map(Object.entries(await n.call(t))),r=!0}catch{}},o=n=>n?e.get(n)??null:null,i=n=>{const c=o(n);return c?I(c).display:null},a=(n,c)=>{if(!n)return{ok:!1,reason:"this object carries no source stamp — the game built it at runtime rather than writing it as an element of its own source"};if(!t?.writeProp)return{ok:!1,reason:"this editor tier cannot write project source"};const h=S[c];if(!h)return{ok:!1,reason:`${c} has no JSX attribute this seam can write`};const u=X(o(n),h);if(u)return{ok:!1,reason:u};if(!O()){const d=i(n);return{ok:!1,reason:`${d?`written at ${d}`:"source-stamped"}, but this game is playing — hold it to author`}}return{ok:!0}};return{attach(){const n=l.backend??k("This world’s OID source persistence")??null;t=n?_(n,l.history)??n:null,s()},anchor(n){const c=e.get(n);return c?I(c):null},physicsPlaced(n,c){return pe(o(n)??void 0,S[c]??c)},describe({sourceOid:n,property:c}){const h=a(n,c);if(!h.ok)return`Live-only edit — ${h.reason}.`;const u=i(n);return u?`Persisting to ${u}.`:`Persisting to this element's own JSX${r?"":" (source index still loading)"}.`},gate({sourceOid:n,property:c}){return a(n,c)},armed:()=>t?.writeProp!==void 0&&O(),report:(n,c)=>f(n,c),async write(n){const c=a(n.sourceOid,n.property);if(!c.ok)return f(n.label,c.reason),!1;const h=S[n.property],u=V(n.property,n.next);if(u===null)return f(n.label,`the new ${n.property} is not a value this seam can spell as a JSX literal`),!1;try{const d=await t.writeProp(n.sourceOid,h,u,{addIfMissing:!0,allowShapeUpgrade:!0});return d.dynamic?(f(n.label,`${h} at ${i(n.sourceOid)??"this element"} is bound to a JSX expression, not a literal`),!1):d.changed?(v.log(`[ingest] ${n.label} written to the game's own source — ${h} → ${i(n.sourceOid)??n.sourceOid}`),s(),!0):(f(n.label,d.error??"the source writer made no change"),!1)}catch(d){return f(n.label,`the write failed: ${d instanceof Error?d.message:String(d)}`),!1}},removal:{available({sourceOid:n,property:c}){return t?.removeProp?a(n,c).ok:!1},async perform(n){const c=a(n.sourceOid,n.property);if(!c.ok||!t?.removeProp)return f(n.label,c.ok?"this editor tier cannot remove project source":c.reason),!1;const h=S[n.property];try{const u=await t.removeProp(n.sourceOid,h);return u.dynamic?(f(n.label,`${h} at ${i(n.sourceOid)??"this element"} is bound to a JSX expression — removing it would delete the game's own wiring, not an override`),!1):u.changed?(v.log(`[ingest] ${n.label} — ${h} dropped from the game's own source at ${i(n.sourceOid)??n.sourceOid}`),s(),!0):(f(n.label,u.error??`${i(n.sourceOid)??"this element"} authors no ${h} attribute, so there was nothing to drop`),!1)}catch(u){return f(n.label,`the removal failed: ${u instanceof Error?u.message:String(u)}`),!1}}},destination(){return t?.writeProp&&O()?K:E},dispose(){t=null,e=new Map,r=!1}}}const je={source:"live",label:"live",detail:"Running objects adopted from the live scene. Edits affect this session only and are discarded when play stops."},Oe="Applied to the running world; code that drives this transform each frame may overwrite it.",Ce={source:"foreign",label:"live-only",detail:"Unmodified ingested game — edits apply to the running game for this session only and are never saved."},Ie={source:"foreign",label:"game source",detail:"Ingested game whose own source carries the editor's authoring stamps — a literal JSX prop writes back to the game’s own file (expression-bound props stay read-only)."};function p(l){return l.isLight?l:null}function g(l){const t=l;return t.isPointLight||t.isSpotLight?t:null}function ke(l){const t=l;return t.isDirectionalLight||t.isPointLight||t.isSpotLight?t:null}function b(l){const t=l;return t.isPerspectiveCamera?t:null}function B(l){const t=l;return t.isMesh&&t.geometry?t.geometry:null}class A{constructor(t,e,r){if(this.store=t,this.options=r,this.sceneRef=e,this.identity=r.identity,this.projector=new he(this.identity,{pickScope:"projection"}),this.persist=r.persistence??null,this.loop=r.loop,this.frameControl=r.frameControl??"adapter",this.provenance=r.provenance??je,r.sourceCommit){const i={availability:a=>r.sourceCommit.availability(C(this.objectOf(a))),commit:async a=>{const n=this.objectOf(a),c=this.captureChannelBaseline(a)??{},h=await r.sourceCommit.commit(C(n),c);return h.persisted&&this.store.shell.notifyIngestEdit(),h}};Object.assign(this.transforms,{sourceCommit:i})}r.sourceDeclaresStories&&(this.stories=W("three",t.shell,i=>{const a=this.hierarchy.node(i);return a?.role!=="component"?null:{name:a.typeLabel??a.label}})),this.refresh(),this.watchStructure();const s=t.shell.projectHistory;this.historyResource=this.persist&&s?new ie({history:s,kind:"session-state",scope:"session",subject:{...r.journal,id:`${r.journal.id}/live-three-edits`},displayName:"Live edits",capture:()=>this.captureHistoryState(),conflictIdentity:i=>i.edits,restore:async i=>{this.restoreHistoryState(i)}}):null;const o=this.persist;o&&(o.attach({read:(i,a)=>this.readChannel(i,a),apply:(i,a,n)=>this.applyChannel(i,a,n)}),this.persistence={...ne(),get destination(){return o.destination()}},o.readSiteLiterals&&(this.instances=this.creationSiteInstances(o)))}sceneRef;projector;watchedForStructure=new Set;changedStructureRoots=new Set;structureRefreshQueued=!1;disposed=!1;crossSurfaceStructureRevision=0;hasCrossSurfaceStructure=!1;identity;persist;loop;frameControl;instanceLiterals=new Map;instanceLiteralRequests=new Map;markedBodies=fe(t=>{const e=this.objectOf(t);if(!e)return{kind:"unresolved"};const r=F(e);return r?{kind:"body",body:r}:{kind:"no-body"}});bodyOwnershipByObject=new WeakMap;physicsFor(t){const e=R();return e&&P(e,t)!=="unresolved"?e:null}edits={};historyResource;editStartState;editBaseline;capabilities={transform:!0,inspectorFields:!0,persist:!1};stories;instances;provenance;persistence;get scene(){return typeof this.sceneRef=="function"?this.sceneRef():this.sceneRef}refresh(){const t=this.projector.project(this.scene);return this.refreshCrossSurfacePresence(),this.crossSurfaceStructureRevision++,t}crossSurfaceStructureSignature(){return this.hasCrossSurfaceStructure?String(this.crossSurfaceStructureRevision):null}objectCarriesCrossSurfaceStructure(t){return m(t,"authoringHierarchyId")!==void 0||m(t,"authoringHierarchyParentId")!==void 0||m(t,"authoringHierarchyOrder")!==void 0}subtreeCarriesCrossSurfaceStructure(t){let e=!1;return t.traverse(r=>{this.objectCarriesCrossSurfaceStructure(r)&&(e=!0)}),e}refreshCrossSurfacePresence(){this.hasCrossSurfaceStructure=!1;for(const t of this.projector.nodes.values())if(this.objectCarriesCrossSurfaceStructure(t.object)){this.hasCrossSurfaceStructure=!0;return}}onStructureChanged=t=>{T(t.child)||this.disposed||(this.changedStructureRoots.add(t.child),!this.structureRefreshQueued&&(this.structureRefreshQueued=!0,queueMicrotask(()=>{if(this.structureRefreshQueued=!1,this.disposed)return;const e=[...this.changedStructureRoots];this.changedStructureRoots.clear();const r=e.some(o=>this.subtreeCarriesCrossSurfaceStructure(o));for(const o of e)this.unwatchStructureSubtree(o);const s=this.projector.projectSubtrees(this.scene,e);if(s===null)this.refresh(),this.watchStructure();else for(const o of e)this.structureRootIsAttached(o)&&this.watchStructureSubtree(o);r&&(this.refreshCrossSurfacePresence(),this.crossSurfaceStructureRevision++),this.syncAdoptedObjectMap(s??void 0),this.store.notifyIngestObjectMapEdit(s===null?void 0:{changedParentIds:s.changedParentIds,rootsChanged:s.rootsChanged,addedIds:s.addedIds,removedIds:s.removedIds})})))};watchStructure(){for(const e of this.watchedForStructure)e.removeEventListener("childadded",this.onStructureChanged),e.removeEventListener("childremoved",this.onStructureChanged);this.watchedForStructure.clear();const t=this.scene;t&&this.watchStructureSubtree(t)}watchStructureSubtree(t){const e=r=>{if(!(T(r)||this.watchedForStructure.has(r))){r.addEventListener("childadded",this.onStructureChanged),r.addEventListener("childremoved",this.onStructureChanged),this.watchedForStructure.add(r);for(const s of r.children)e(s)}};e(t)}structureRootIsAttached(t){const e=this.scene;if(e===null)return!1;for(let r=t;r!==null;r=r.parent)if(r===e)return!0;return!1}unwatchStructureSubtree(t){t.traverse(e=>{this.watchedForStructure.delete(e)&&(e.removeEventListener("childadded",this.onStructureChanged),e.removeEventListener("childremoved",this.onStructureChanged))})}syncAdoptedObjectMap(t){const e=this.scene;if(!e||this.store.scene!==e)return;const r=this.store.objectMap;if(t===void 0){r.clear();for(const[o,i]of this.projector.objectMapSnapshot())r.set(o,i)}else{for(const o of t.removedIds)r.delete(o);for(const o of t.addedIds){const i=this.projector.objectOf(o);i!==null&&r.set(o,i)}}const s=[...this.store.shell.selectedEntityIds].filter(o=>r.has(o));s.length!==this.store.shell.selectedEntityIds.size&&this.store.shell.selectMultiple(s)}invalidate(){this.refresh()}adoptScene(t){this.sceneRef=t,this.refresh(),this.watchStructure(),this.syncAdoptedObjectMap()}objectOf(t){return this.projector.objectOf(t)}objectMapSnapshot(){return this.projector.objectMapSnapshot()}record(t,e){this.edits[t]={...this.edits[t],...e}}toEditorNode(t){const e=t.object,r=m(e,"authoringHierarchyId"),s=m(e,"authoringHierarchyParentId"),o=m(e,"authoringHierarchyOrder"),i=ee(e)&&m(e,"authoringRoot")!==!0,a=m(e,"authoringComponent"),n=(i?m(e,"authoringLabel"):void 0)||e.name||e.type;return{id:t.id,label:n,role:i?"component":"entity",kind:ue(e),typeLabel:i?a||n:e.type,parentId:t.parentId,childIds:[...t.childIds],...r===void 0?{}:{crossSurfaceId:r},...s===void 0?{}:{crossSurfaceParentId:s},...o===void 0?{}:{crossSurfaceOrder:o}}}hierarchy={crossSurfaceStructureSignature:()=>this.crossSurfaceStructureSignature(),roots:()=>this.projector.rootNodes().map(t=>this.toEditorNode(t)),node:t=>{const e=this.projector.node(t);return e?this.toEditorNode(e):null},object3D:t=>this.objectOf(t),idForObject3D:t=>this.projector.idOf(t)};selection={get:()=>[...this.store.shell.selectedEntityIds],set:t=>this.store.shell.selectMultiple(t),resolve:(t,e)=>{const r=this.hierarchy.node(t);if(!r)return null;const s=[];let o=r,i=0;for(;o&&i++<1e3;)(o.role==="component"||o.role==="instance")&&s.push(o),o=o.parentId?this.hierarchy.node(o.parentId):null;const a=s.reverse();if(a.length===0)return{id:t};const n=e?.scopeId?a.findIndex(u=>u.id===e.scopeId):-1,c=n>=0?Math.min(n+1,a.length-1):0,h=e?.intent==="deep"?Math.min(c+1,a.length-1):c;return{id:a[h].id}}};pickable={pick:(t,e)=>(this.refresh(),this.projector.pick(this.store,t,e)),candidates:(t,e)=>(this.refresh(),this.projector.candidates(this.store,t,e))};truth={resolve:(t,e)=>{const r=this.anchorFor(t,e);return{site:r.anchor,writeAnchorKind:r.anchorKind}}};related=re(t=>this.truth.resolve(t,"position").site);transforms={get:t=>le(this.objectOf(t)),editability:(t,e)=>{if(!this.objectOf(t))return{writable:!1,reason:G};const r=N();return r?.networkId(t)&&!r.editable(t)?{writable:!1,reason:"This transform is controlled by remote or server network authority."}:this.bodyOwns(t)?{writable:!0,reason:"Moves the physics body that owns this node.",...this.removableFlag(t,e)}:this.frameControl==="host"&&this.store.shell.playState==="playing"?{writable:!0,reason:Oe,...this.removableFlag(t,e)}:this.persist?{writable:!0,reason:this.persist.describe(this.anchorFor(t,e)),...this.removableFlag(t,e)}:{writable:!0}},beginEdit:t=>{this.historyResource?.assertCanMutate(),!(!this.objectOf(t)||!this.editableByNetwork(t))&&(this.loop?.pause(),this.physicsFor(t)?.freeze(t),this.markedBodies.freeze(t),this.editStartState=this.persist?this.captureHistoryState():void 0,this.editBaseline=void 0)},apply:(t,e)=>{!this.objectOf(t)||!this.editableByNetwork(t)||(this.persist&&!this.editBaseline&&(this.editBaseline=this.captureChannelBaseline(t)),this.writeTransform(t,e),this.physicsFor(t)?.commit(t,e),this.markedBodies.commit(t,e),this.store.shell.notifyIngestEdit())},endEdit:t=>{this.loop?.resume();const e=this.objectOf(t),r=`Transform ${e?.name||"Object"}`,s=this.editStartState,o=this.editBaseline;return this.editStartState=void 0,this.editBaseline=void 0,e&&(this.physicsFor(t)?.unfreeze(t),this.markedBodies.unfreeze(t),this.store.shell.notifyIngestEdit()),this.persist?this.persistOrJournal(t,r,s,o):void 0},remove:(t,e)=>{if(this.persist?.removal)return U(this.pipedRemove(t,e))}};removableFlag(t,e){const r=this.persist?.removal;return r?r.available(this.anchorFor(t,e))?{removable:!0}:{}:{}}pipedRemove(t,e){const r=this.persist,s=r.removal,o=`Remove ${this.objectOf(t)?.name||"Object"} ${e}`;return{resolve:()=>{const i=this.anchorFor(t,e);return s.available(i)?i.anchorKind==="live-only"?L(r.describe(i)):{reaches:"writer",anchorKind:i.anchorKind,destination:r.destination(),write:()=>s.perform({...i,label:o})}:L(r.describe(i))},record:()=>{},report:i=>{r.armed()&&r.report(o,i)}}}bodyOwns(t){const e=this.objectOf(t);if(!e)return!1;const r=this.bodyOwnershipByObject.get(e);if(r!==void 0)return r;const s=R(),o=s?P(s,t):void 0;if(o==="physics")return this.bodyOwnershipByObject.set(e,!0),!0;const i=F(e)!==void 0;return(i||o==="editor")&&this.bodyOwnershipByObject.set(e,i),i}editableByNetwork(t){const e=N();return e?e.editable(t):!0}inspector={properties:t=>{const e=this.objectOf(t);if(!e)return[];const r=[{path:"name",label:"Name",type:"string"},{path:"visible",label:"Visible",type:"boolean"},{path:"object.type",label:"Native type",type:"string",readonly:!0}],s=H(e);return s?.fields&&r.push(...s.fields().filter(i=>!["name","visible"].includes(i.path)).map(({value:i,...a})=>a)),y(e)&&r.push({path:"material.color",label:"Color",type:"color",group:"Material"}),p(e)&&(r.push({path:"light.intensity",label:"Intensity",type:"number"}),r.push({path:"light.color",label:"Light Color",type:"color"}),g(e)&&r.push({path:"light.distance",label:"Distance",type:"number"}),ke(e)&&r.push({path:"shadow.cast",label:"Cast Shadow",type:"boolean"})),b(e)&&(r.push({path:"camera.fov",label:"FOV",type:"number"}),r.push({path:"camera.near",label:"Near",type:"number"}),r.push({path:"camera.far",label:"Far",type:"number"})),B(e)&&(r.push({path:"mesh.vertices",label:"Vertices",type:"number",readonly:!0}),r.push({path:"shadow.cast",label:"Cast Shadow",type:"boolean"}),r.push({path:"shadow.receive",label:"Receive Shadow",type:"boolean"})),r},get:(t,e)=>{const r=this.objectOf(t);if(!r)return;if(e==="name")return r.name;if(e==="visible")return r.visible;if(e==="object.type")return r.type;const s=H(r)?.fields?.().find(o=>o.path===e);if(s)return s.value();if(e==="material.color"){const o=y(r);return o?`#${o.color.getHexString()}`:void 0}if(e==="light.intensity")return p(r)?.intensity;if(e==="light.distance")return g(r)?.distance;if(e==="light.color"){const o=p(r);return o?`#${o.color.getHexString()}`:void 0}if(e==="camera.fov")return b(r)?.fov;if(e==="camera.near")return b(r)?.near;if(e==="camera.far")return b(r)?.far;if(e==="mesh.vertices"){const o=B(r);return o?o.getAttribute("position")?.count??0:void 0}if(e==="shadow.cast")return r.castShadow;if(e==="shadow.receive")return r.receiveShadow},set:(t,e,r)=>{if(this.historyResource?.assertCanMutate(),!this.persist){this.writeProp(t,e,r);return}const s=this.captureHistoryState(),o=this.readChannel(t,e);this.writeProp(t,e,r);const i=`Set ${this.objectOf(t)?.name||"Object"} ${e}`,a=this.readChannel(t,e);if(!(o!==void 0&&a!==void 0&&JSON.stringify(o)!==JSON.stringify(a))){this.recordHistory(i,s);return}return x({backend:this.persist,subject:()=>this.anchorFor(t,e),baseline:o,next:a,label:i,journal:()=>this.recordHistory(i,s)})}};subscribe(t){return this.store.shell.subscribe(t)}dispose(){this.disposed=!0;for(const t of this.watchedForStructure)t.removeEventListener("childadded",this.onStructureChanged),t.removeEventListener("childremoved",this.onStructureChanged);this.watchedForStructure.clear(),this.changedStructureRoots.clear(),this.historyResource?.dispose(),this.persist?.dispose()}readChannel(t,e){const r=this.objectOf(t);if(r)return e==="position"?r.position.toArray():e==="rotation"?[r.rotation.x,r.rotation.y,r.rotation.z]:e==="scale"?r.scale.toArray():this.inspector.get(t,e)}applyChannel(t,e,r){const s=this.objectOf(t);if(s){if(e==="position"&&Array.isArray(r))s.position.fromArray(r);else if(e==="rotation"&&Array.isArray(r)){const[o,i,a]=r;s.rotation.set(o??0,i??0,a??0)}else if(e==="scale"&&Array.isArray(r))s.scale.fromArray(r);else{this.writeProp(t,e,r);return}this.store.shell.notifyIngestEdit()}}writeTransform(t,e){this.historyResource?.assertCanMutate();const r=this.objectOf(t);r&&(r.position.set(e.position[0],e.position[1],e.position[2]),r.quaternion.set(e.rotation[0],e.rotation[1],e.rotation[2],e.rotation[3]),r.scale.set(e.scale[0],e.scale[1],e.scale[2]),this.record(t,{position:e.position,rotation:e.rotation,scale:e.scale}))}writeProp(t,e,r){const s=this.objectOf(t);if(s){if(e==="name")s.name=String(r);else if(e==="visible")s.visible=!!r,this.record(t,{visible:s.visible});else if(e==="material.color"){const o=y(s);o&&(o.color.set(String(r)),this.record(t,{color:`#${o.color.getHexString()}`}))}else if(e==="light.intensity"){const o=p(s);o&&(o.intensity=Number(r))}else if(e==="light.distance"){const o=g(s);o&&(o.distance=Number(r))}else if(e==="light.color")p(s)?.color.set(String(r));else if(e==="camera.fov"||e==="camera.near"||e==="camera.far"){const o=b(s);o&&(o[e.split(".")[1]]=Number(r),o.updateProjectionMatrix())}else e==="shadow.cast"?s.castShadow=!!r:e==="shadow.receive"&&(s.receiveShadow=!!r);this.store.shell.notifyIngestEdit()}}anchorFor(t,e){const r=this.objectOf(t),s=J(e),o=r&&s?.owner==="material"?y(r):r,i=s?.owner==="material"?te(o):C(o),a=i?this.persist?.anchor?.(i):null;if(a){const h=i?this.persist?.physicsPlaced?.(i,e):!1;return{entityId:t,property:e,anchor:a,anchorKind:h?"physics-binding":"source-prop",instances:1,sourceOid:i}}const n=ae(o);if(n!==null)return{entityId:t,property:e,anchor:ce(n),anchorKind:"data-record",instances:1,...i?{sourceOid:i}:{}};const c=i?this.options.sourceAnchor?.(i)??{anchored:!1,reason:"The source index has not resolved this object’s OID."}:Q(o??null);return{entityId:t,property:e,anchor:c,anchorKind:i?this.persist?.anchor?"source-prop":"live-only":c.anchored?"construction-literal":"live-only",instances:c.anchored&&c.kind==="source"?i?1:Y(c):0,...i?{sourceOid:i}:{}}}measureWriteReach(){this.refresh();let t=0;const e=Z();for(const r of this.projector.nodes.keys()){const s=this.anchorFor(r,"position");e[s.anchorKind]++,s.anchor.anchored&&t++}return{addressable:t,total:this.projector.nodes.size,destination:this.persist?.destination()??E,byKind:e}}captureChannelBaseline(t){const e=this.objectOf(t);if(e)return{position:e.position.toArray(),rotation:[e.rotation.x,e.rotation.y,e.rotation.z],scale:e.scale.toArray()}}persistOrJournal(t,e,r,s){const o=this.persist;if(!o)return;const i=s?this.captureChannelBaseline(t):void 0,a=s&&i?Object.keys(s).filter(c=>JSON.stringify(s[c])!==JSON.stringify(i[c])):[];a.length>1&&o.report(e,se(a));const n=a.length===1?a[0]:null;if(n===null){this.recordHistory(e,r);return}return x({backend:o,subject:()=>this.anchorFor(t,n),baseline:s[n],next:i[n],label:e,journal:()=>this.recordHistory(e,r)})}creationSiteKey(t){const e=t.anchor;return e.anchored&&e.kind==="source"?`${e.file}:${e.line}:${e.col}`:null}instancePropertyPaths(t,e){const r=["position","rotation","scale",...this.inspector.properties(t).filter(s=>!s.readonly).map(s=>s.path)];return[...new Set(r)].filter(s=>this.creationSiteKey(this.anchorFor(t,s))===e)}loadInstanceLiterals(t,e,r,s){const o=this.instanceLiteralRequests.get(s);if(o)return o;const i=this.instancePropertyPaths(e,s).map(n=>({property:n,live:this.readChannel(e,n)})).filter(n=>n.live!==void 0),a=t.readSiteLiterals({anchor:r.anchor,instances:r.instances,writeScope:"creation-site",properties:i}).then(n=>(this.instanceLiterals.set(s,n),this.store.shell.notifyIngestEdit(),n));return this.instanceLiteralRequests.set(s,a),a}sameInstanceValue(t,e){return Array.isArray(t)&&Array.isArray(e)?t.length===e.length&&t.every((r,s)=>this.sameInstanceValue(r,e[s])):typeof t=="number"&&typeof e=="number"?Math.abs(t-e)<=1e-6:t===e}instanceComponentName(t){return t.constructor.name||t.type}instanceCountLabel(t){return`${t} ${t===1?"instance":"instances"}`}instanceOverride(t,e,r,s,o){const i=s[r],a=this.readChannel(e,r);if(!i||i.literal===null||a===void 0||this.sameInstanceValue(i.literal,a))return null;const n=t.gate({...this.anchorFor(e,r),writeScope:"creation-site"}),c=i.writable?n.ok?void 0:n.reason:i.reason,h=this.inspector.properties(e).find(u=>u.path===r)?.label??r;return{path:r,label:h,value:a,...i.text?{defaultText:i.text}:{},canApplyToComponent:c===void 0,...c?{applyUnavailableReason:c}:{},affectedInstanceCount:o.instances}}async applyInstanceDefault(t,e,r,s){const o={...this.anchorFor(r,s),writeScope:"creation-site"},i=this.creationSiteKey(o);if(!i)return{changed:!1,message:"This object has no source site."};const a=this.objectOf(r);if(!a)return{changed:!1,message:"This object is no longer in the live world."};const n=(await e(r,o,i))[s];if(!n)return{changed:!1,message:`The construction site names no ${s}.`};if(n.literal===null)return{changed:!1,message:`The construction site names no ${s} default.`};const c=this.readChannel(r,s);if(c===void 0)return{changed:!1,message:`${s} has no live value.`};if(!n.writable)return{changed:!1,message:n.reason??`${s} cannot be rewritten.`};const h=t.gate(o);if(!h.ok)return{changed:!1,message:h.reason};const u=o.instances,d=`Apply ${s} to ${this.instanceComponentName(a)} default (${this.instanceCountLabel(u)})`;if(!await t.write({...o,baseline:n.literal,next:c,label:d}))return{changed:!1,message:`${d} did not land; the console names why.`};this.instanceLiterals.delete(i),this.instanceLiteralRequests.delete(i),this.store.shell.notifyIngestEdit();const w=o.anchor.anchored?o.anchor.display:"this source site";return{changed:!0,message:`${s} now applies to all ${this.instanceCountLabel(u)} from ${w}.`,write:{destination:w,persisted:!0}}}creationSiteInstances(t){const e=async(r,s,o)=>this.instanceLiterals.get(o)??this.loadInstanceLiterals(t,r,s,o);return{describe:r=>{const s=this.anchorFor(r,"position"),o=this.creationSiteKey(s),i=this.objectOf(r);if(!o||!i)return null;const a=this.instanceLiterals.get(o);if(!a)return this.loadInstanceLiterals(t,r,s,o),null;if(Object.keys(a).length===0)return null;const n=this.instancePropertyPaths(r,o).map(c=>this.instanceOverride(t,r,c,a,s)).filter(c=>c!==null);return{componentName:this.instanceComponentName(i),...s.anchor.anchored?{sourcePath:s.anchor.display}:{},overrides:n}},revert:async(r,s)=>{const o=this.anchorFor(r,"position"),i=this.creationSiteKey(o);if(!i)return;const a=await e(r,o,i),n=this.captureHistoryState();let c=0;for(const h of s){const u=a[h]?.literal;u!=null&&(this.applyChannel(r,h,u),c++)}return c>0&&this.recordHistory(`Revert ${c} instance override(s)`,n),c>0?q:void 0},applyToComponent:(r,s)=>this.applyInstanceDefault(t,e,r,s)}}recordHistory(t,e){!this.historyResource||!e||this.historyResource.record(t,e,this.captureHistoryState()).catch(r=>{v.error(`[ingest] failed to journal "${t}" into project history — the edit is applied but has no history entry (it cannot be undone): ${r instanceof Error?r.message:String(r)}`)})}captureHistoryState(){const t={};for(const[e,r]of this.projector.nodes){const s=r.object,o=y(s),i=p(s),a=b(s);t[e]={name:s.name,visible:s.visible,transform:this.transforms.get(e),...o?{color:`#${o.color.getHexString()}`}:{},...i?{lightIntensity:i.intensity,lightColor:`#${i.color.getHexString()}`,...g(s)?{lightDistance:g(s).distance}:{}}:{},...a?{camera:{fov:a.fov,near:a.near,far:a.far}}:{},castShadow:s.castShadow,receiveShadow:s.receiveShadow}}return{edits:structuredClone(this.edits),objects:t}}restoreHistoryState(t){for(const[e,r]of Object.entries(t.objects)){const s=this.objectOf(e);if(!s)continue;s.name=r.name,s.visible=r.visible,s.position.fromArray(r.transform.position),s.quaternion.fromArray(r.transform.rotation),s.scale.fromArray(r.transform.scale),this.physicsFor(e)?.commit(e,r.transform),this.markedBodies.commit(e,r.transform),r.color&&y(s)?.color.set(r.color);const o=p(s);if(o&&(r.lightIntensity!==void 0&&(o.intensity=r.lightIntensity),r.lightColor&&o.color.set(r.lightColor),r.lightDistance!==void 0)){const a=g(s);a&&(a.distance=r.lightDistance)}const i=b(s);i&&r.camera&&(i.fov=r.camera.fov,i.near=r.camera.near,i.far=r.camera.far,i.updateProjectionMatrix()),s.castShadow=r.castShadow,s.receiveShadow=r.receiveShadow}this.edits=structuredClone(t.edits),this.store.shell.notifyIngestEdit()}}function Je(l,t,e){return new A(l,t,{identity:de({camera:e.camera}),journal:e.journal,persistence:oe({history:l.shell.projectHistory,writer:e.sourceWriter}),loop:e.loop,...e.frameControl?{frameControl:e.frameControl}:{},provenance:Ce})}function Ke(l,t,e){return new A(l,t,{identity:D(e.worldId,{camera:e.camera}),journal:e.journal,persistence:Se({history:l.shell.projectHistory,backend:e.backend}),loop:e.loop,...e.frameControl?{frameControl:e.frameControl}:{},provenance:Ie,sourceDeclaresStories:!0})}function Ve(l,t,e,r,s={}){return new A(l,t,{identity:D(e),journal:r,frameControl:"host",sourceAnchor:s.sourceAnchor,...s.explicitSourceCommit?{sourceCommit:we({history:l.shell.projectHistory,...s.backend?{backend:s.backend}:{}})}:{}})}export{Ke as a,Ve as o,De as r,Je as s};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/r3f-design-session-gQuaJFCS.js","assets/index-EO6Vl92s.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-C0sf0ewd.js","assets/game-network-D8nKKSRC.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-piwWLOP6.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-CoiJ_gHM.js","assets/contract-system-adapters-C1oaetXB.js","assets/game-contract-seams-Dq1YiGya.js","assets/seeded-random-BcjdE8-O.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-BBbF8usb.js","assets/capability-coverage-BOaPg0KC.js","assets/json-history-resource-BjCvVkMa.js","assets/binding-resolver-cWcQuwXj.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-Bw73w74M.js","assets/canvas-entry-runtime-BHOqndB_.js","assets/three-ingest-runtime-DlApOywz.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-CPY5d7Ae.js","assets/ingest-source-persistence-C2eN6TUG.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-CG43sAj5.js","assets/mounted-authoring-DfEm9qgt.js","assets/entity-object-C40NpVSX.js","assets/user-data-DnahhlAD.js","assets/workspace-arrangement-COs530TA.js","assets/three-contract-Dkt6PmWY.js","assets/three-DItubEyv.js","assets/editor-layers-B43PZgUF.js","assets/component-instance-root-JAQpC4Pi.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-jGnbMYIc.js","assets/source-persistence-backend-DPS956_W.js","assets/three-projection-core-Bsu421K7.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-CFwn2dZ0.js","assets/deferred-ingest-play-DJeWQ-He.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-Cey0R-Ml.js","assets/board-guides-D-k2cJcJ.js","assets/relative-import-specifier-DjG-Lv03.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-BqpAh85y.js","assets/inference-diagnostics-18bkEAju.js","assets/writer-tw6EcuVO.js","assets/three-state-15gXjQ51.js","assets/editor-shell-store-CW9Fjab9.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-Dbl8EH3p.js","assets/game-surface-defaults-D8S4cRxi.js","assets/scene-framing-zyo6Dgey.js","assets/assets-BcrMQHRv.js","assets/loader-BTUKnX5Q.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/create-runtime-BQdKNIfc.js","assets/binding-Bmxqznjk.js","assets/root-stacking-BEd9ZvxC.js","assets/setup-renderer-BoEjWIJ6.js","assets/index-DHhMOs_s.js","assets/defaults-DKiBJCPN.js","assets/render-settings-CGDwkhhL.js","assets/render-features-w9Z-Cv_p.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-EO6Vl92s.js";import{r as a}from"./design-time-mount-registry-DUpXCg1U.js";import{q as c}from"./edit-mode-authoring-C0sf0ewd.js";import{a as u}from"./json-history-resource-BjCvVkMa.js";import{o as h}from"./three-authoring-adapter-jGnbMYIc.js";import{t as i}from"./editor-shell-store-CW9Fjab9.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-JAQpC4Pi.js";import"./user-data-DnahhlAD.js";import"./workspace-arrangement-COs530TA.js";import"./source-persistence-backend-DPS956_W.js";import"./ingest-source-persistence-C2eN6TUG.js";import"./three-projection-core-Bsu421K7.js";import"./editor-layers-B43PZgUF.js";import"./three-DItubEyv.js";import"./entity-object-C40NpVSX.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-CFwn2dZ0.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-gQuaJFCS.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 +1 @@
1
- import{T as n}from"./three.module-BLhyNg0e.js";import{EffectComposer as i}from"./EffectComposer-BEAt0PtQ.js";import{CSS3DRenderer as s}from"./CSS3DRenderer-BsAqfavI.js";import{X as m,Y as c}from"./index-DBIFLhzt.js";const a={three:n,EffectComposer:i,CSS3DRenderer:s};let r=null;async function f(){const e=await import(c),t=["projectThree","EffectComposer","CSS3DRenderer"].filter(o=>e[o]===void 0||e[o]===null);if(t.length>0)throw new Error(`The packaged runtime's synthetic three-ingest module did not export ${t.join(", ")} — see vite-plugin-module-doorways.ts.`);return{three:e.projectThree,EffectComposer:e.EffectComposer,CSS3DRenderer:e.CSS3DRenderer}}async function h(){return await m()?(r||(r=f()),r):a}export{h as r};
1
+ import{T as n}from"./three.module-BLhyNg0e.js";import{EffectComposer as i}from"./EffectComposer-BEAt0PtQ.js";import{CSS3DRenderer as s}from"./CSS3DRenderer-BsAqfavI.js";import{X as m,Y as c}from"./index-EO6Vl92s.js";const a={three:n,EffectComposer:i,CSS3DRenderer:s};let r=null;async function f(){const e=await import(c),t=["projectThree","EffectComposer","CSS3DRenderer"].filter(o=>e[o]===void 0||e[o]===null);if(t.length>0)throw new Error(`The packaged runtime's synthetic three-ingest module did not export ${t.join(", ")} — see vite-plugin-module-doorways.ts.`);return{three:e.projectThree,EffectComposer:e.EffectComposer,CSS3DRenderer:e.CSS3DRenderer}}async function h(){return await m()?(r||(r=f()),r):a}export{h as r};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ToolObject3DPreview-OBfMBUDF.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/Object3DPreview-4vfSYgvf.js","assets/index-DBIFLhzt.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/OrbitControls-B13MKuwC.js","assets/asset-preview-C_0EqGmT.js","assets/editor-layers-psmpPtJ8.js","assets/workspace-arrangement-B2HQOv9w.js","assets/renderer-ownership-BovSEcLv.js","assets/hierarchy-marks-BUeQ6to3.js","assets/studio-environment-Kj8vdH82.js","assets/user-data-FwfU1u6l.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/bitmap-label-Ct4k6ehY.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/model-thumbnail-DQHRVOqE.js","assets/StageHost-CiSH61U_.js","assets/three-state-DnYP1ZtA.js","assets/editor-shell-store-CLsRck8r.js","assets/output-pass-HurwNl0G.js","assets/Pass-D1MRT672.js","assets/entity-object-CI5Ws16u.js","assets/three-contract-Dkt6PmWY.js","assets/standard-viewport-dressing-BfmTiIR4.js","assets/content-bounds-DMLXg0Ob.js","assets/preview-renderer-BrYNFV1p.js","assets/live-mixers-B-bwLZ7c.js","assets/live-gesture-lock-DJbrjOqf.js","assets/model-inspection-BajTg63P.js","assets/three-viewport-presentation-BHtVY2rJ.js","assets/clip-planes-CnAI6DZn.js","assets/three-43Ky3-7O.js","assets/component-instance-root-BNr-40yw.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/scene-framing-DFvmwkrW.js","assets/object3d-document-session-registry-DYr6Iepm.js","assets/source-object3d-authoring-adapter-CzJdhhwn.js","assets/three-projection-core-BKmXcOPL.js","assets/viewport-door-CQdsFqWV.js","assets/transport-strip-BmlKGYbk.js","assets/viewport-surface-status-_DF-oTje.js","assets/ModelAssetDocument-7R43ez0l.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-C0UzN9rC.js","assets/root-stacking-BEd9ZvxC.js","assets/EntityModelDocument-Ci2gTM0_.js","assets/EnvironmentAssetDocument-sGeD9CmA.js","assets/asset-editor-persistence-BRnb4jvT.js","assets/LutAssetDocument-Bsha8T14.js","assets/index-DHhMOs_s.js","assets/ShaderAssetDocument-DEt0lzyh.js","assets/ColorInput-CuQY7Ukq.js","assets/LiveModuleDocument-9cuyXCj5.js","assets/Object3DDocumentViewport-5UbfDYx0.js","assets/QuarksAssetDocument-NerGNPg0.js","assets/project-provenance-BGnJXJwa.js","assets/InspectorObjectPreview-DmfoiHtC.js"])))=>i.map(i=>d[i]);
2
- import{aH as Ne,kV as Le,kU as re,aG as Fe,lV as ze,g6 as Be,dt as He,aD as We,_ as E,ak as qe,lW as Ue,lX as Ge,lY as $e,lZ as Qe,l_ as Ye,l$ as Je,m0 as Ke,m1 as Xe,m2 as Ze,hi as et,m3 as tt,b_ as rt,m4 as nt,m5 as ot,m6 as _e,kX as F,E as ne,F as at,y as H,bL as st,m7 as it,r as Se,K as ct,G as ut,m8 as lt,m9 as dt,ma as G,T as pt,c$ as ft,kM as mt}from"./index-DBIFLhzt.js";import{r as ht}from"./host-hierarchy-objects-BV3WqU2w.js";import{m as Pe,l as vt}from"./renderer-ownership-BovSEcLv.js";import{W as Me}from"./three.module-BLhyNg0e.js";import{cP as Ee,ej as Ce,_ as X,I as gt,fo as A,V as Ae,dp as Z,cp as z,el as wt,bh as oe,d5 as yt,T as bt,c1 as ae,cu as _t,aI as St,d as Pt,ct as Mt,cx as Et}from"./three.core-3arARmh6.js";import{i as Ct}from"./preview-renderer-BrYNFV1p.js";import{a as At}from"./layered-pick-C0UzN9rC.js";import{g as W}from"./user-data-FwfU1u6l.js";import{a as y}from"./jsx-runtime-DPjLkJKQ.js";import{r as g}from"./index-nmcBqr7Y.js";import{r as Tt}from"./model-thumbnail-DQHRVOqE.js";import{c as xt,a as Te}from"./object3d-document-session-registry-DYr6Iepm.js";import{t as j}from"./three-state-DnYP1ZtA.js";import{a as q}from"./entity-object-CI5Ws16u.js";import{i as xe,c as Ot}from"./hierarchy-marks-BUeQ6to3.js";import{a as kt}from"./component-instance-root-BNr-40yw.js";import{a as Dt}from"./three-contract-Dkt6PmWY.js";import{t as V}from"./editor-shell-store-CLsRck8r.js";import{d as It,a as U}from"./viewport-door-CQdsFqWV.js";import{a as Rt}from"./content-bounds-DMLXg0Ob.js";import{h as jt,d as Oe,p as Vt,j as se,r as ie,s as Nt,k as ce,A as Lt,n as Ft,o as zt,b as Bt,q as Ht,m as Wt,t as qt,f as Ut,C as Gt,u as ue,v as $t,w as $,x as Qt,y as Yt,z as Jt,B as Kt,D as Xt,E as Zt,F as er,c as tr,a as rr}from"./asset-preview-C_0EqGmT.js";const nr=1,k=[];function K(t){const e=k.indexOf(t);e>=0&&k.splice(e,1),t.renderer.dispose(),t.renderer.forceContextLoss(),t.canvas.remove()}function or(t,e){const r=document.createElement("canvas");r.style.width="100%",r.style.height="100%",r.style.display="block",r.width=Math.max(1,t),r.height=Math.max(1,e);const n={canvas:r,renderer:Pe(new Me({canvas:r,antialias:!0,alpha:!0})),leased:!0,lost:!1,onContextLost:null};return r.addEventListener("webglcontextlost",()=>{n.lost=!0,n.onContextLost?.();const o=k.indexOf(n);o>=0&&k.splice(o,1),n.leased||K(n)}),k.push(n),n}function ar(t){const{renderer:e}=t;e.setRenderTarget(null),e.setScissorTest(!1),e.setViewport(0,0,Math.max(1,t.canvas.width),Math.max(1,t.canvas.height)),e.setScissor(0,0,Math.max(1,t.canvas.width),Math.max(1,t.canvas.height)),e.autoClear=!0,e.autoClearColor=!0,e.autoClearDepth=!0,e.autoClearStencil=!0,e.sortObjects=!0,e.localClippingEnabled=!1,e.clippingPlanes=[],e.shadowMap.enabled=!1,e.shadowMap.autoUpdate=!0,e.toneMapping=Ee,e.toneMappingExposure=1,e.outputColorSpace=Ce,e.xr.enabled=!1,e.setAnimationLoop(null),e.setClearColor(0,0),e.clear(!0,!0,!0),e.info.reset()}function En(t,e,r){let n=k.find(s=>!s.leased&&!s.lost);n||(n=or(t,e)),n.leased=!0,n.onContextLost=r??null;const o=n;let a=!1;return{canvas:o.canvas,renderer:o.renderer,release(){if(a)return;if(a=!0,o.leased=!1,o.onContextLost=null,o.canvas.remove(),o.lost){K(o);return}ar(o);const s=k.filter(i=>!i.leased&&!i.lost);for(const i of s.slice(nr))K(i)}}}function sr(){return{active:k.filter(t=>t.leased&&!t.lost).length,idle:k.filter(t=>!t.leased&&!t.lost).length}}function ir(t,e){if(e!==null&&Ne(e))for(const n of t.values())n.visible=!1}const cr=new X("#aaaaaa");function ur(t){t.background=cr,t.fog=null,t.environment=null,t.traverse(e=>{W(e,"envObject")&&(e.visible=!1)})}const lr={activeAuthoring:t=>We(t),panelAuthoring:t=>He(t).adapter,pick:(t,e,r,n)=>At(t,e,r,{intent:n}),toolOwner:(t,e)=>Be(t,e),toolOwnerPainted:(t,e)=>re(t)&&ze(t,e),threeSurfaceShowing:(t,e)=>re(t)&&(e instanceof Fe?e.childAdapters().some(r=>r.kind==="three"):!e.rects&&typeof e.hierarchy.object3D=="function"),threeViewportRootId:t=>Le(t),applyRootHiddenVisibility:ir,suppressRootEnvironment:ur},dr=g.lazy(async()=>({default:(await E(async()=>{const{ToolObject3DPreview:t}=await import("./ToolObject3DPreview-OBfMBUDF.js");return{ToolObject3DPreview:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]))).ToolObject3DPreview})),pr=g.lazy(async()=>({default:(await E(async()=>{const{ToolObject3DAuthoring:t}=await import("./StageHost-CiSH61U_.js").then(e=>e.S);return{ToolObject3DAuthoring:t}},__vite__mapDeps([32,4,5,2,6,1,7,8,9,10,11,33,34,35,12,13,36,16,17,21,37,38,39,40,19,25,26,27,28,41,18,42,43,44,45,46,47,48,49,31,20,22,23,24,14,50,51,52,53,54,55,30,56,57,58]))).ToolObject3DAuthoring}));function fr(t){return y.jsx(g.Suspense,{fallback:y.jsx("div",{style:{minHeight:240},children:"Loading 3D preview…"}),children:y.jsx(dr,{...t})})}function mr(t){return g.useEffect(()=>qe(t.documentId),[t.documentId]),y.jsx(g.Suspense,{fallback:y.jsx("div",{style:{minHeight:240},children:"Loading 3D authoring surface…"}),children:y.jsx(pr,{...t})})}const le={model:g.lazy(async()=>{const{ModelAssetDocument:t}=await E(async()=>{const{ModelAssetDocument:e}=await import("./ModelAssetDocument-7R43ez0l.js");return{ModelAssetDocument:e}},__vite__mapDeps([59,1,2,5,6,7,8,4,9,10,11,15,16,17,18,19,20,21,22,12,13,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,14,50,51,52,53,54,55,30,56,57,58,60,61,62]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,displayName:e.displayName,active:e.active})}}),"entity-model":g.lazy(async()=>{const{EntityModelDocument:t}=await E(async()=>{const{EntityModelDocument:e}=await import("./EntityModelDocument-Ci2gTM0_.js");return{EntityModelDocument:e}},__vite__mapDeps([63,1,2,34,35,12,13,36,16,17,4,5,6,7,8,9,10,11,21,37,38,42,15,18,19,20,22,23,24,25,26,27,28,29,32,33,39,40,41,43,44,45,46,47,48,49,31,14,50,51,52,53,54,55,30,56,57,58,60,61,62]));return{default:e=>y.jsx(t,{documentId:e.documentId,entityId:e.entityId??"",displayName:e.displayName,active:e.active})}}),environment:g.lazy(async()=>{const{EnvironmentAssetDocument:t}=await E(async()=>{const{EnvironmentAssetDocument:e}=await import("./EnvironmentAssetDocument-sGeD9CmA.js");return{EnvironmentAssetDocument:e}},__vite__mapDeps([64,1,2,4,5,6,7,8,9,10,11,12,13,14,27,28,65]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),lut:g.lazy(async()=>{const{LutAssetDocument:t}=await E(async()=>{const{LutAssetDocument:e}=await import("./LutAssetDocument-Bsha8T14.js");return{LutAssetDocument:e}},__vite__mapDeps([66,1,2,4,5,6,7,8,9,10,11,67,12,13,65]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),shader:g.lazy(async()=>{const{ShaderAssetDocument:t}=await E(async()=>{const{ShaderAssetDocument:e}=await import("./ShaderAssetDocument-DEt0lzyh.js");return{ShaderAssetDocument:e}},__vite__mapDeps([68,1,2,4,5,6,7,8,9,10,11,69,12,13,65]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),"model-preview":g.lazy(async()=>{const{Object3DPreview:t}=await E(async()=>{const{Object3DPreview:e}=await import("./Object3DPreview-4vfSYgvf.js");return{Object3DPreview:e}},__vite__mapDeps([3,4,5,2,6,1,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]));return{default:e=>y.jsx(t,{assetPath:e.assetPath,...e.materialPath?{materialPath:e.materialPath}:{},displayName:e.displayName})}}),module:g.lazy(async()=>{const{LiveModuleDocument:t}=await E(async()=>{const{LiveModuleDocument:e}=await import("./LiveModuleDocument-9cuyXCj5.js");return{LiveModuleDocument:e}},__vite__mapDeps([70,1,2,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,12,13,23,24,25,26,27,28,29,53,71,58,39,40]));return{default:e=>e.projectRoot?y.jsx(t,{documentId:e.documentId,projectRoot:e.projectRoot,modulePath:(e.assetPath.split(/[?#]/,1)[0]??e.assetPath).replace(/^\//,""),displayName:e.displayName,active:e.active,fallback:e.fallback}):e.fallback}})},hr={recognize:async(t,e)=>(await E(async()=>{const{loadNativeQuarksJsonSource:r}=await import("./QuarksAssetDocument-NerGNPg0.js");return{loadNativeQuarksJsonSource:r}},__vite__mapDeps([72,1,2,5,6,7,8,4,9,10,11,20,21,17,22,12,13,23,24,25,26,27,28,51,73,32,33,34,35,36,16,37,38,39,40,19,41,18,42,43,44,45,46,47,48,49,31,14,50,52,53,54,55,30,56,57,58,60,61,62,15,29]))).loadNativeQuarksJsonSource(t,e),Viewer:g.lazy(async()=>{const{QuarksAssetDocument:t}=await E(async()=>{const{QuarksAssetDocument:e}=await import("./QuarksAssetDocument-NerGNPg0.js");return{QuarksAssetDocument:e}},__vite__mapDeps([72,1,2,5,6,7,8,4,9,10,11,20,21,17,22,12,13,23,24,25,26,27,28,51,73,32,33,34,35,36,16,37,38,39,40,19,41,18,42,43,44,45,46,47,48,49,31,14,50,52,53,54,55,30,56,57,58,60,61,62,15,29]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,displayName:e.displayName,active:e.active,source:e.content})}})};function vr(){const t=[...Object.keys(le).map(e=>Ue(e,le[e])),Ge(hr)];return()=>{for(const e of t)e()}}async function de(t){const e=new Image;return e.src=t,await e.decode(),e}function gr(){return $e((t,e)=>{const r=j();if(r&&r.viewportCanvas()===t)return(async()=>{const o=await Qe(t);if(o)return o;const a=r.captureViewportImage(e);return a?de(a):null})();const n=xt().find(o=>o.renderer.domElement===t);return n?(async()=>{const o=await n.requestPresentedFrame();if(o)return o;const a=n.captureImage(e);return a?de(a):null})():null})}function wr(t){const e=Ot(t);if(e||xe(t)||W(t,"authoringRoot")===!0||!kt(t))return e;const r=W(t,"authoringComponent");return typeof r=="string"&&r?r:void 0}function yr(t){if(typeof t.object3D!="function")return Ye;const r=new Map;return n=>{if(r.has(n))return r.get(n);const o=Dt(t,n),a=o?{componentRoot:wr(o),authoredEntity:W(o,"authoringRoot")===!0,builtInternal:xe(o)}:void 0;return r.set(n,a),a}}const br=1e-4,_r="World-anchored — content is placed in world space by the game each frame; moving this container offsets future placements away from their source.";function ke(t){if(!t)return 0;const e=t;if(e.isInstancedMesh!==!0)return 0;const r=e.count;return typeof r=="number"&&r>0?r:0}function Sr(t){const e=t.elements;for(let r=0;r<16;r++){const n=r%5===0?1:0,o=e[r];if(!Number.isFinite(o)||Math.abs(o-n)>br)return!1}return!0}const pe=new gt,fe=new A;function Pr(t,e){const r=ke(t);if(r===0)return null;const n=Mr(t,e);return{units:r,detail:De(r),worldAnchored:n,note:n?_r:null}}function Mr(t,e){if(!e||e.isEmpty()||!Sr(t.matrixWorld))return!1;const r=t.geometry;return r.boundingBox===null&&r.computeBoundingBox(),r.boundingBox?(pe.copy(r.boundingBox),e.getCenter(fe),!pe.containsPoint(fe)):!1}function Er(t){const e=ke(t);return e===0?null:De(e)}function De(t){return`${t} instanced unit${t===1?"":"s"}`}function Cr(){return Je({detail:(t,e,r)=>Er(q(t,V(r).objectMap,e)),marks:t=>yr(t),structureLog:t=>{const e=V(t);return{epoch:()=>e.gizmoEpoch,parentChangesSince:r=>e.ingestObjectMapChangesSince(r)}}})}function Ar(t){return Math.min(1600,Math.max(800,900+t*25))}function Tr(t){return t<.5?4*t*t*t:1-(-2*t+2)**3/2}function Ie(t,e,r=new A(0,1,0)){const n=new A().subVectors(e,t),o=n.length();if(o<1e-6)return[t.clone(),t.clone(),e.clone(),e.clone()];const a=Math.min(o*.18,6),s=new A().crossVectors(n,r);s.lengthSq()>1e-9?s.normalize().multiplyScalar(Math.min(o*.08,2.5)):s.set(0,0,0);const i=r.clone().normalize().multiplyScalar(a),u=t.clone().addScaledVector(n,.3).add(i).add(s),m=e.clone().addScaledVector(n,-.3).addScaledVector(i,.6).addScaledVector(s,.5);return[t.clone(),u,m,e.clone()]}const xr=1<<31;function Or(t){return(t.layers.mask&xr)!==0||/gizmo/i.test(t.name)}function Re(t){if(Or(t))return null;if(t.isCamera)return t;for(const e of t.children){const r=Re(e);if(r)return r}return null}function kr(t,e,r){const n=new A,o=new Z;return e.getWorldPosition(n),e.getWorldQuaternion(o),{entityId:t,position:n.toArray(),quaternion:o.toArray(),fov:r}}function Dr(t){for(const[e,r]of t.objectMap){const n=Re(r);if(!n)continue;const o=n;return kr(e,n,o.isPerspectiveCamera?o.fov:60)}return null}function Ir(t){t.curve=new Ae(Ie(t.startPos,t.endPos))}let N=null;function Rr(t){const e=U(),r=j()?.objectMap,n=r?Dr({objectMap:r}):null;if(!n||!e)return!1;const o=e.camera.position.clone(),a=new A().fromArray(n.position);return N={runtime:{startPos:o,startQuat:e.camera.quaternion.clone(),startFov:e.camera.fov,endPos:a,endQuat:new Z().fromArray(n.quaternion),endFov:n.fov,curve:new Ae(Ie(o,a)),startedAt:performance.now(),durationMs:Ar(o.distanceTo(a)),landed:!1},snapshot:{position:e.camera.position.clone(),target:e.orbit.target.clone(),up:e.camera.up.clone(),fov:e.camera.fov},onLanded:t,getLiveCamera:null,driving:!0},e.orbit.enabled=!1,!0}function jr(){const t=U(),e=N;if(!e||(e.driving=!1,!t))return;const r=t.camera,n=new A(0,0,-1).applyQuaternion(r.quaternion),o=Math.max(1,e.snapshot.position.distanceTo(e.snapshot.target));t.orbit.target.copy(r.position).addScaledVector(n,o),r.up.set(0,1,0).applyQuaternion(r.quaternion),t.orbit.enabled=!0}function Vr(){const t=N;if(!t)return;N=null;const e=U();if(!e)return;const r=t.snapshot;e.camera.position.copy(r.position),e.orbit.target.copy(r.target),e.camera.up.copy(r.up),e.camera.lookAt(r.target),e.camera.fov!==r.fov&&(e.camera.fov=r.fov,e.camera.updateProjectionMatrix()),e.orbit.enabled=!0,e.orbit.update()}const Q=new A,me=new Z;It(Nr);function Nr(){const t=N,e=U();if(!t||!e||!t.driving)return;const r=t.runtime,n=t.getLiveCamera?.()??null,o=n?.isObject3D?n:null;if(o){o.getWorldPosition(Q),o.getWorldQuaternion(me),Q.distanceToSquared(r.endPos)>1e-8&&(r.endPos.copy(Q),Ir(r)),r.endQuat.copy(me);const u=o.fov;typeof u=="number"&&(r.endFov=u)}const a=e.camera;if(r.landed){a.position.copy(r.endPos),a.quaternion.copy(r.endQuat),a.fov!==r.endFov&&(a.fov=r.endFov,a.updateProjectionMatrix());return}const s=Math.min(1,(performance.now()-r.startedAt)/r.durationMs),i=Tr(s);a.position.copy(r.curve.getPoint(i)),a.quaternion.slerpQuaternions(r.startQuat,r.endQuat,i),a.fov=r.startFov+(r.endFov-r.startFov)*i,a.updateProjectionMatrix(),s>=1&&(r.landed=!0,t.onLanded())}function Lr(){return Ke({begin:Rr,track:t=>{N&&(N.getLiveCamera=t)},settle:jr,end:Vr})}const Fr=g.lazy(()=>E(()=>import("./InspectorObjectPreview-DmfoiHtC.js"),__vite__mapDeps([74,1,2,63,34,35,12,13,36,16,17,4,5,6,7,8,9,10,11,21,37,38,42,15,18,19,20,22,23,24,25,26,27,28,29,32,33,39,40,41,43,44,45,46,47,48,49,31,14,50,51,52,53,54,55,30,56,57,58,60,61,62])).then(t=>({default:t.InspectorObjectPreview})));function zr(t,e){return{preview:t.isCamera?null:({displayName:r,previewKey:n,actions:o})=>a=>g.createElement(Ze,{picture:()=>g.createElement(Fr,{previewKey:n,object:t,displayName:r,fill:!0}),previewKey:n,actions:o,...a?{mode:a}:{}}),instanced:Pr(t,Rt(t)),assetDocument:e}}function Br(){return Xe((t,e)=>{const r=j();if(!r)return null;const n=q(t,r.objectMap,e);return n?zr(n,r.objectMap.has(e)?{open:()=>et("asset-editor:entity",r.shell,{entityId:e,title:n.name||e})}:null):null})}const he=new WeakMap,ee={activeAuthoring(t){let e=he.get(t);return e||(e=rt(t,"No authoring adapter"),he.set(t,e)),e},panelAuthoring(t){return ee.activeAuthoring(t)},pick(){return null},toolOwner:tt,toolOwnerPainted(){return!0},threeSurfaceShowing(t,e){return!e.rects&&typeof e.hierarchy.object3D=="function"},threeViewportRootId(){return null},applyRootHiddenVisibility(){},suppressRootEnvironment(){}};let B=ee;function Hr(t){if(B!==t){if(B!==ee)throw new Error("A viewport authoring policy is already installed.");B=t}}function Cn(){return B}const ve=0,Wr=16777215,ge=10;function qr(t){return Vt(t,"Compare reference GLB")}function we(t,e){const r=Bt(t),n=new oe;n.rotation.y=Ht(e),n.add(r);const o=new oe;o.add(n),o.updateWorldMatrix(!0,!0);const a=Wt(o,"front"),s=[a.center.x-a.size.x/2,a.center.y-a.size.y/2,a.center.z-a.size.z/2],i=[a.center.x+a.size.x/2,a.center.y+a.size.y/2,a.center.z+a.size.z/2],u=qt(s,i);return o.scale.setScalar(u.scale),o.position.set(...u.position),o.updateWorldMatrix(!0,!0),{wrapper:o,dispose:()=>Ut(r)}}function Ur(t,e){const r=Gt,n=r*e,o=new yt(-n,n,r,-r,.01,ge*4),a=t==="front"?new A(0,0,1):new A(1,0,0);return o.position.set(0,ue,0).addScaledVector(a,ge),o.up.set(0,1,0),o.lookAt(0,ue,0),o.updateProjectionMatrix(),o.updateMatrixWorld(!0),o}function Gr(t,e,r={}){const n=se(r.width),o=se(r.height),a=n/o,s=[];let i=null;try{const u=we(t,ie(t));s.push(u.dispose);const m=we(e,r.refForward??ie(e));s.push(m.dispose);const P=new z({color:Wr});s.push(()=>P.dispose());const T=p=>{const c=new wt;return c.background=new X(ve),c.overrideMaterial=P,c.add(p),c},d=T(u.wrapper),w=T(m.wrapper),b=Pe(new Me({antialias:!1,alpha:!1,preserveDrawingBuffer:!0}));i=b,b.setPixelRatio(1),b.toneMapping=Ee,b.setClearColor(ve,1),b.setSize(n,o,!1);const x=document.createElement("canvas");x.width=n,x.height=o;const _=x.getContext("2d");if(!_)throw new Error("Unable to create the compare readback canvas.");const M=(p,c,I,v)=>{b.render(p,c),_.clearRect(0,0,n,o),_.drawImage(b.domElement,0,0);const S=_.getImageData(0,0,n,o).data,R=Nt(S,n*o);if(!R.some(te=>te!==0))throw new Error(`Compare ${v} view rendered an empty ${I} silhouette — nothing to score.`);return{image:{base64:ce(x),mimeType:"image/png"},mask:R}},h=document.createElement("canvas");h.width=n,h.height=o;const C=h.getContext("2d");if(!C)throw new Error("Unable to create the compare overlay canvas.");const D=[];for(const p of Lt){const c=Ur(p,a),I=M(d,c,"asset",p),v=M(w,c,"reference",p),S=Ft(I.mask,v.mask);C.putImageData(new ImageData(zt(I.mask,v.mask),n,o),0,0),D.push({view:p,iou:S.iou,overlay:{base64:ce(h),mimeType:"image/png"},asset:I.image,ref:v.image})}return{width:n,height:o,views:D}}finally{i?.dispose(),i?.forceContextLoss();for(const u of s.reverse())u()}}async function $r(t,e,r={}){const n=await jt(t);try{return await je(n,e,r)}finally{Oe(n)}}async function je(t,e,r={}){const n=await qr(e);try{return Gr(t,n,r)}finally{Oe(n)}}async function Qr(t,e){const r=e.assetPath,n=e.entityId,o=e.glbBase64;if(+(typeof r=="string")+ +(typeof n=="string")+ +(typeof o=="string")!==1)return{ok:!1,error:"capture-asset-preview requires exactly one of assetPath, entityId or glbBase64."};const s=e.width,i=e.height,u=e.background,m=e.shots,P=e.shotSet,T=e.forward,d=e.compare,w=e.stage,b=e.camera,x=e.pose;if(s!==void 0&&typeof s!="number"||i!==void 0&&typeof i!="number"||u!==void 0&&u!=="neutral"&&u!=="transparent"||m!==void 0&&m!=="source")return{ok:!1,error:"Invalid asset preview dimensions, background, or shots mode."};if(w!==void 0&&w!=="lab"&&w!=="scene")return{ok:!1,error:`capture-asset-preview stage must be "lab" or "scene", got ${String(w)}.`};if(P!==void 0&&m!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine a shotSet definition with a shots mode."};const _=nt("capture-asset-preview",b);if(typeof _=="string")return{ok:!1,error:_};const M=ot("capture-asset-preview",x);if(typeof M=="string")return{ok:!1,error:M};if((_||M)&&(m!==void 0||P!==void 0||d!==void 0||w==="scene"))return{ok:!1,error:'capture-asset-preview cannot combine camera/pose with a shots mode, a shotSet definition, compare, or stage "scene" — those legs stage their own cameras and poses.'};let h;if(P!==void 0)try{h=$t(P)}catch(c){return{ok:!1,error:c instanceof Error?c.message:String(c)}}const C=$(T);if(m==="source"&&C===null)return{ok:!1,error:"capture-asset-preview --shots source requires a non-degenerate forward [x,y,z]."};if(d!==void 0){if(m!==void 0||h!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine compare with shots."};if(typeof d!="object"||d===null||typeof d.glbBase64!="string"||d.forward!==void 0&&$(d.forward)===null)return{ok:!1,error:"capture-asset-preview compare requires { glbBase64: string, forward?: [x, y, z] } with a non-degenerate ground-plane forward."}}if(typeof o=="string"){if(m!==void 0||d!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine glbBase64 with a named shots mode or compare."};if(w==="scene")return{ok:!1,error:'capture-asset-preview stage "scene" photographs a live scene entity — glbBase64 bytes stand nowhere in the scene.'}}const D=w==="scene"?t.scene:null;if(w==="scene"){if(typeof n!="string")return{ok:!1,error:'capture-asset-preview stage "scene" photographs a live scene entity — pass entityId, not assetPath.'};if(m!==void 0||h!==void 0||d!==void 0)return{ok:!1,error:'capture-asset-preview cannot combine stage "scene" with a shots mode, a shotSet definition or compare.'};if(!D)return{ok:!1,error:'capture-asset-preview stage "scene" requires a bound viewport scene; none is bound yet.'}}const p=typeof n=="string"?q(_e(t.shell),t.objectMap,n):null;if(typeof n=="string"&&!p)return{ok:!1,error:`Entity not found: ${n}`};try{const c={...typeof s=="number"?{width:s}:{},...typeof i=="number"?{height:i}:{},...u?{background:u}:{},..._?{camera:_}:{},...M?{pose:M}:{}};if(d!==void 0){const v=d,S=$(v.forward),R={...typeof s=="number"?{width:s}:{},...typeof i=="number"?{height:i}:{},...S?{refForward:S}:{}};return{ok:!0,data:{...typeof r=="string"?await $r(r,v.glbBase64,R):await je(p,v.glbBase64,R)}}}return h!==void 0?{ok:!0,data:{...typeof o=="string"?await Qt(o,h,c):typeof r=="string"?await Yt(r,h,c):Jt(p,h,c)}}:m==="source"?{ok:!0,data:{...typeof r=="string"?await Kt(r,C,c):Xt(p,C,c)}}:D?{ok:!0,data:{...Zt(p,D,c)}}:typeof o=="string"?{ok:!0,data:{...await er(o,c)}}:{ok:!0,data:{...typeof r=="string"?await tr(r,c):rr(p,c)}}}catch(c){return{ok:!1,error:c instanceof Error?c.message:String(c)}}}const Ve=256;function Yr(t){const e=Math.min(1,Math.max(0,t));return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}function Y(t,e,r){const n=Math.hypot(t,e,r)||1;return[t/n,e/n,r/n]}function Jr(t=Ve){const e=document.createElement("canvas");e.width=t,e.height=t;const r=e.getContext("2d");if(!r)return e;const n=r.createImageData(t,t),o=Y(-.45,.62,.64),a=Y(.65,-.35,.5),s=Y(o[0],o[1],o[2]+1),i=[.7,.69,.68],u=[.34,.4,.52],m=[.85,.88,1];for(let P=0;P<t;P++)for(let T=0;T<t;T++){const d=(T+.5)/t/.5-1,w=1-(P+.5)/t/.5,b=d*d+w*w,x=b>1,_=x?1/Math.sqrt(b):1,M=d*_,h=w*_,C=x?0:Math.sqrt(Math.max(0,1-b)),D=Math.max(0,M*o[0]+h*o[1]+C*o[2]),p=Math.max(0,M*a[0]+h*a[1]+C*a[2]),c=Math.max(0,M*s[0]+h*s[1]+C*s[2])**42*.5,I=(1-C)**3.2*.4,v=(P*t+T)*4;for(let S=0;S<3;S++){const R=i[S]*(.16+.8*D)+u[S]*.3*p+m[S]*I+c;n.data[v+S]=Math.round(Yr(R)*255)}n.data[v+3]=255}return r.putImageData(n,0,0),e}function Kr(t=Ve){const e=new bt(Jr(t));return e.colorSpace=Ce,e.minFilter=ae,e.magFilter=ae,e.generateMipmaps=!1,e.needsUpdate=!0,e}const ye=["solid","preview","rendered","clay","unlit","wireframe","matcap","normals","overdraw"];function Xr(t){return t.color?.clone()??new X(12502993)}function J(t,e){return t[e]??null}class An{_derived=new Map;_normals=new _t;_matcap=null;_matcapTexture=null;_overdraw=new z({color:16777215,transparent:!0,opacity:.08,depthTest:!1,depthWrite:!1,blending:Pt,side:St,toneMapped:!1});render(e,r,n,o=()=>!0){if(r==="solid"||r==="preview"||r==="rendered"){n();return}const a=[];e.traverse(s=>{const i=s;!i.isMesh||!i.material||!o(i)||(a.push({mesh:i,material:i.material}),i.material=Array.isArray(i.material)?i.material.map(u=>this._materialFor(u,r)):this._materialFor(i.material,r))});try{n()}finally{for(const{mesh:s,material:i}of a)s.material=i}}dispose(){for(const e of this._derived.values())e.clay.dispose(),e.unlit.dispose(),e.wireframe.dispose();this._derived.clear(),this._normals.dispose(),this._overdraw.dispose(),this._matcap?.dispose(),this._matcapTexture?.dispose(),this._matcap=null,this._matcapTexture=null}_materialFor(e,r){if(r==="normals")return this._normals;if(r==="overdraw")return this._overdraw;if(r==="matcap")return this._matcap||(this._matcapTexture=Kr(),this._matcap=new Mt({matcap:this._matcapTexture,toneMapped:!1})),this._matcap;let n=this._derived.get(e);if(!n){const o={color:Xr(e),map:J(e,"map"),alphaMap:J(e,"alphaMap"),alphaTest:e.alphaTest,opacity:e.opacity,transparent:e.transparent,side:e.side,depthTest:e.depthTest,depthWrite:e.depthWrite,vertexColors:!!e.vertexColors,fog:e.fog??!0};n={clay:new Et({color:11450048,roughness:.82,metalness:0,flatShading:!0,alphaMap:J(e,"alphaMap"),alphaTest:e.alphaTest,opacity:e.opacity,transparent:e.transparent,side:e.side,depthTest:e.depthTest,depthWrite:e.depthWrite}),unlit:new z(o),wireframe:new z({...o,wireframe:!0})},this._derived.set(e,n)}return n[r]}}function O(){const t=H();return t?Te(t):null}function l(t,e,r="none"){return{...e===void 0?{}:{timeoutMs:e},derivedRefresh:r,handle:n=>{const o=j();return o?t(o,n):{ok:!1,error:`${n.type} needs an editor session; none has opened yet.`}}}}const f={ok:!0},Zr={"focus-entity":l((t,e)=>(O()?.frameIds([e.id])||t.shell.focusOnEntity(e.id),f)),"frame-entity":l((t,e)=>{const r=e.id;if(typeof r!="string"||r.length===0)return{ok:!1,error:'frame-entity requires a string "id" (the entity to frame).'};const n=O();if(n)return n.frameIds([r])?f:{ok:!1,error:`Entity not found: ${r}`,data:{code:"ENTITY_NOT_FOUND"}};const o=_e(t.shell);return o.hierarchy.node(r)!==null&&o.rects||q(o,t.objectMap,r)?(t.shell.focusOnEntity(r),f):{ok:!1,error:`Entity not found: ${r}`,data:{code:"ENTITY_NOT_FOUND"}}}),"focus-selection":l(t=>(O()?.frameSelection()||t.shell.focusOnSelection(),f)),"view-preset":l((t,e)=>{const r=e.preset,n=["top","front","right","perspective"];if(typeof r!="string"||!n.includes(r))return{ok:!1,error:`view-preset requires one of ${n.join(", ")}, got ${r===void 0?"nothing":JSON.stringify(r)}.`};const o=r,a=O();return a?a.setViewPreset(o==="perspective"?"isometric":o):t.shell.setViewPreset(o),f}),"set-camera":l((t,e)=>{const r=e.position,n=e.target,o=e.fov;if(!r||!n||typeof r.x!="number"||typeof r.y!="number"||typeof r.z!="number"||typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return{ok:!1,error:"set-camera requires numeric {x,y,z} position and target."};const a=O();return a?a.setCameraPose(r,n,o):t.shell.setCameraPose(r,n,o),f}),"document-orbit":l((t,e)=>be(e),12e4),"document-turntable":l((t,e)=>be(e),12e4),"document-frame":l((t,e)=>{const r=O();if(!r)return{ok:!1,error:"document-frame needs an Object3D document open and active. For the Scene viewport use `frame-entity`/`focus-selection`.",data:{code:"NO_ACTIVE_OBJECT3D_DOCUMENT"}};const n=e.fit;return n!==void 0&&(typeof n!="number"||!(n>=.1&&n<=10))?{ok:!1,error:'document-frame: "fit" must be a number in 0.1..10.'}:r.frame(typeof n=="number"?n:1)?{ok:!0,data:{...r.cameraPose()}}:{ok:!1,error:"Nothing to frame: the document subject has no measurable bounds.",data:{code:"EMPTY_FRAME_BOUNDS"}}}),"capture-viewport":l(async(t,e)=>{const r=it(e);if("error"in r)return{ok:!1,error:r.error};if(t.hasAdoptedScene)try{const s=await Se().documents.captureActive(r.size);return{ok:!0,data:{base64:s.base64,mimeType:s.mimeType}}}catch(s){return{ok:!1,error:s instanceof Error?s.message:String(s)}}const n=t.captureViewportImage(r.size);if(!n)return{ok:!1,error:`This door photographs the editor's own three.js Scene viewport, and nothing has bound one (no renderer/scene/camera). A canvas-surface world (a first-party canvas root, or a PixiJS/Phaser/Babylon ingest) never binds it — it draws on its own canvas in the Game document. Capture that through \`capture-active-document\` (\`editor.captureActiveDocument()\`) or the running game through \`bridge-screenshot\` (${ct("screenshot")}).`};const o=n.indexOf(",");return{ok:!0,data:{base64:o>=0?n.slice(o+1):n,mimeType:"image/png"}}},void 0,"if-content-changed"),"capture-asset-preview":l((t,e)=>Qr(t,e),3e4,"if-content-changed"),"set-grid":l((t,e)=>{const r=H();return!r||!ne(r)?{ok:!1,error:"set-grid: the active document draws no grid."}:(st(r,e.enabled),f)}),"set-helpers":l((t,e)=>{const r=F(t.shell);return r.showHelpers!==e.enabled&&r.toggleHelpers(),f}),"set-stats":l((t,e)=>{const r=F(t.shell);return V(r).showStats!==e.enabled&&V(r).toggleStats(),f}),"set-shading-mode":l((t,e)=>{const r=O(),n=e.mode,o=r?[...ye,"uv","vertex-colors"]:ye;if(typeof n!="string"||!o.includes(n))return{ok:!1,error:`No shading mode "${String(n)}"; the modes are ${o.join(", ")}.`};if(n==="preview"||n==="rendered"){const a=H(),s=a?ne(a)?.stageKind:void 0;if(!r||!s||at(s)?.modes?.[n]?.lighting===void 0)return{ok:!1,error:`Shading mode "${n}" is lit as a stage says, and the active document's stage says nothing for it.`}}return r?r.setMode(e.mode):t.setShadingMode(e.mode),f}),"set-helper-type":l((t,e)=>{const r=F(t.shell),n=e.helperType,o=O();return o&&n==="bounds"?(o.setBounds(e.enabled),f):o&&n==="skeletons"?(o.setSkeleton(e.enabled),f):(r.helperVisibility[n]!==e.enabled&&r.toggleHelperType(n),f)}),"set-transform-mode":l((t,e)=>(t.shell.setTransformMode(e.mode),f)),"set-transform-space":l((t,e)=>(t.shell.setTransformSpace(e.space),f)),"set-snap":l((t,e)=>(t.shell.snapEnabled!==e.enabled&&t.shell.toggleSnap(),f))};async function be(t){const e=O();if(!e)return{ok:!1,error:`${t.type} needs an Object3D document open and active (a model, a live module, an entity model). Open one with \`editor.openAsset(<path>)\` first.`,data:{code:"NO_ACTIVE_OBJECT3D_DOCUMENT"}};const r=t.type==="document-orbit"?t.duration:t.seconds;return r!==void 0&&(typeof r!="number"||!(r>=0&&r<=60))?{ok:!1,error:`${t.type}: the move's length must be a number of seconds in 0..60.`}:{ok:!0,data:{...t.type==="document-orbit"?await e.orbit({...typeof t.azimuth=="number"?{azimuth:t.azimuth}:{},...typeof t.elevation=="number"?{elevation:t.elevation}:{},...typeof r=="number"?{duration:r}:{}}):await e.turntable({...typeof r=="number"?{seconds:r}:{},...typeof t.revolutions=="number"?{revolutions:t.revolutions}:{}})}}}function en(){return Se().session.reportFacet(()=>{const t=j();if(!t)return{};const e=F(t.shell),r=H(),n=r?Te(r)?.presentation():void 0,o=V(e).cameraPose;return{showGrid:r?ut(r):!0,showHelpers:e.showHelpers,showStats:V(e).showStats,shadingMode:n?.mode??t.shadingMode,helperVisibility:{...e.helperVisibility,...n?{bounds:n.bounds,skeletons:n.skeleton}:{}},transformMode:e.transformMode,transformSpace:t.shell.transformSpace,snapEnabled:t.shell.snapEnabled,...o?{camera:{position:{x:o.position.x,y:o.position.y,z:o.position.z},target:{x:o.target.x,y:o.target.y,z:o.target.z},fov:o.fov}}:{}}})}const tn={save:t=>mt("view",t),saveThumbnail:ft},rn=new Map;let L=null;function Tn(){if(L)return L;const t=[lt({Object3DPreview:fr,Object3DAuthoring:mr}),dt("three-viewport",Zr),vr(),Br(),Tt(),en(),gr(),Cr(),Lr(),ht({object:e=>j()?.objectMap.get(e)??null,objects:()=>j()?.objectMap??rn}),G("hostLive",vt),G("interactive",sr),G("inspectorPreview",Ct),pt(e=>V(e).attachStatePersistence(tn))];return Hr(lr),L=()=>{for(const e of t.reverse())e();L=null},L}export{An as V,En as a,Pr as d,Tn as e,ke as i,Cn as v};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ToolObject3DPreview-BLUyNI0a.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/Object3DPreview-CbcdszHX.js","assets/index-EO6Vl92s.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/OrbitControls-B13MKuwC.js","assets/asset-preview-BqLvTtnb.js","assets/editor-layers-B43PZgUF.js","assets/workspace-arrangement-COs530TA.js","assets/renderer-ownership-BovSEcLv.js","assets/hierarchy-marks-r1SCnl92.js","assets/studio-environment-BRMTYTp1.js","assets/user-data-DnahhlAD.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/bitmap-label-Ct4k6ehY.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/model-thumbnail-C6YzkBEi.js","assets/StageHost-CgQvlJ6q.js","assets/three-state-15gXjQ51.js","assets/editor-shell-store-CW9Fjab9.js","assets/output-pass-HurwNl0G.js","assets/Pass-D1MRT672.js","assets/entity-object-C40NpVSX.js","assets/three-contract-Dkt6PmWY.js","assets/standard-viewport-dressing-DzgsLMqH.js","assets/content-bounds-B_xPBrsP.js","assets/preview-renderer-BrYNFV1p.js","assets/live-mixers-B-bwLZ7c.js","assets/live-gesture-lock-DJbrjOqf.js","assets/model-inspection-DcL5cH7Y.js","assets/three-viewport-presentation-DlCyoe_E.js","assets/clip-planes-CnAI6DZn.js","assets/three-DItubEyv.js","assets/component-instance-root-JAQpC4Pi.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/scene-framing-zyo6Dgey.js","assets/object3d-document-session-registry-3YUZT4RT.js","assets/source-object3d-authoring-adapter-D-mc1Hsq.js","assets/three-projection-core-Bsu421K7.js","assets/viewport-door-Dbl8EH3p.js","assets/transport-strip-DHbAk_5x.js","assets/viewport-surface-status-C9vuKKQB.js","assets/ModelAssetDocument-CCOUnfNZ.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-Ciu7uLFh.js","assets/root-stacking-BEd9ZvxC.js","assets/EntityModelDocument-DFLHmO4x.js","assets/EnvironmentAssetDocument-C_10a-a0.js","assets/asset-editor-persistence-CL-0YalT.js","assets/LutAssetDocument-BWgoofXc.js","assets/index-DHhMOs_s.js","assets/ShaderAssetDocument-C6ew-WgT.js","assets/ColorInput-7cF4Leq3.js","assets/LiveModuleDocument-DxsfqWPz.js","assets/Object3DDocumentViewport-CmgIuzQv.js","assets/QuarksAssetDocument-B6NS06Qk.js","assets/project-provenance-BGnJXJwa.js","assets/InspectorObjectPreview-CO8cF8ht.js"])))=>i.map(i=>d[i]);
2
+ import{aH as Ne,kW as Le,kV as re,aG as Fe,lV as ze,g8 as Be,dt as He,aD as We,_ as M,ak as qe,lW as Ue,lX as Ge,lY as $e,lZ as Qe,l_ as Ye,l$ as Je,m0 as Ke,m1 as Ze,m2 as Xe,hk as et,m3 as tt,b_ as rt,m4 as nt,m5 as ot,m6 as _e,kY as F,E as ne,F as at,y as H,bL as st,m7 as it,r as Se,K as ct,G as ut,m8 as lt,m9 as dt,ma as G,T as pt,c$ as ft,kN as mt}from"./index-EO6Vl92s.js";import{r as ht}from"./host-hierarchy-objects-BV3WqU2w.js";import{m as Pe,l as vt}from"./renderer-ownership-BovSEcLv.js";import{W as Ee}from"./three.module-BLhyNg0e.js";import{cP as Me,ej as Ce,_ as Z,I as gt,fo as A,V as Ae,dp as X,cp as z,el as wt,bh as oe,d5 as yt,T as bt,c1 as ae,cu as _t,aI as St,d as Pt,ct as Et,cx as Mt}from"./three.core-3arARmh6.js";import{i as Ct}from"./preview-renderer-BrYNFV1p.js";import{a as At}from"./layered-pick-Ciu7uLFh.js";import{g as W}from"./user-data-DnahhlAD.js";import{a as y}from"./jsx-runtime-DPjLkJKQ.js";import{r as g}from"./index-nmcBqr7Y.js";import{r as Tt}from"./model-thumbnail-C6YzkBEi.js";import{c as xt,a as Te}from"./object3d-document-session-registry-3YUZT4RT.js";import{t as j}from"./three-state-15gXjQ51.js";import{a as q}from"./entity-object-C40NpVSX.js";import{i as xe,c as Ot}from"./hierarchy-marks-r1SCnl92.js";import{a as kt}from"./component-instance-root-JAQpC4Pi.js";import{a as Dt}from"./three-contract-Dkt6PmWY.js";import{t as V}from"./editor-shell-store-CW9Fjab9.js";import{d as It,a as U}from"./viewport-door-Dbl8EH3p.js";import{a as Rt}from"./content-bounds-B_xPBrsP.js";import{h as jt,d as Oe,p as Vt,j as se,r as ie,s as Nt,k as ce,A as Lt,n as Ft,o as zt,b as Bt,q as Ht,m as Wt,t as qt,f as Ut,C as Gt,u as ue,v as $t,w as $,x as Qt,y as Yt,z as Jt,B as Kt,D as Zt,E as Xt,F as er,c as tr,a as rr}from"./asset-preview-BqLvTtnb.js";const nr=1,k=[];function K(t){const e=k.indexOf(t);e>=0&&k.splice(e,1),t.renderer.dispose(),t.renderer.forceContextLoss(),t.canvas.remove()}function or(t,e){const r=document.createElement("canvas");r.style.width="100%",r.style.height="100%",r.style.display="block",r.width=Math.max(1,t),r.height=Math.max(1,e);const n={canvas:r,renderer:Pe(new Ee({canvas:r,antialias:!0,alpha:!0})),leased:!0,lost:!1,onContextLost:null};return r.addEventListener("webglcontextlost",()=>{n.lost=!0,n.onContextLost?.();const o=k.indexOf(n);o>=0&&k.splice(o,1),n.leased||K(n)}),k.push(n),n}function ar(t){const{renderer:e}=t;e.setRenderTarget(null),e.setScissorTest(!1),e.setViewport(0,0,Math.max(1,t.canvas.width),Math.max(1,t.canvas.height)),e.setScissor(0,0,Math.max(1,t.canvas.width),Math.max(1,t.canvas.height)),e.autoClear=!0,e.autoClearColor=!0,e.autoClearDepth=!0,e.autoClearStencil=!0,e.sortObjects=!0,e.localClippingEnabled=!1,e.clippingPlanes=[],e.shadowMap.enabled=!1,e.shadowMap.autoUpdate=!0,e.toneMapping=Me,e.toneMappingExposure=1,e.outputColorSpace=Ce,e.xr.enabled=!1,e.setAnimationLoop(null),e.setClearColor(0,0),e.clear(!0,!0,!0),e.info.reset()}function Mn(t,e,r){let n=k.find(s=>!s.leased&&!s.lost);n||(n=or(t,e)),n.leased=!0,n.onContextLost=r??null;const o=n;let a=!1;return{canvas:o.canvas,renderer:o.renderer,release(){if(a)return;if(a=!0,o.leased=!1,o.onContextLost=null,o.canvas.remove(),o.lost){K(o);return}ar(o);const s=k.filter(i=>!i.leased&&!i.lost);for(const i of s.slice(nr))K(i)}}}function sr(){return{active:k.filter(t=>t.leased&&!t.lost).length,idle:k.filter(t=>!t.leased&&!t.lost).length}}function ir(t,e){if(e!==null&&Ne(e))for(const n of t.values())n.visible=!1}const cr=new Z("#aaaaaa");function ur(t){t.background=cr,t.fog=null,t.environment=null,t.traverse(e=>{W(e,"envObject")&&(e.visible=!1)})}const lr={activeAuthoring:t=>We(t),panelAuthoring:t=>He(t).adapter,pick:(t,e,r,n)=>At(t,e,r,{intent:n}),toolOwner:(t,e)=>Be(t,e),toolOwnerPainted:(t,e)=>re(t)&&ze(t,e),threeSurfaceShowing:(t,e)=>re(t)&&(e instanceof Fe?e.childAdapters().some(r=>r.kind==="three"):!e.rects&&typeof e.hierarchy.object3D=="function"),threeViewportRootId:t=>Le(t),applyRootHiddenVisibility:ir,suppressRootEnvironment:ur},dr=g.lazy(async()=>({default:(await M(async()=>{const{ToolObject3DPreview:t}=await import("./ToolObject3DPreview-BLUyNI0a.js");return{ToolObject3DPreview:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]))).ToolObject3DPreview})),pr=g.lazy(async()=>({default:(await M(async()=>{const{ToolObject3DAuthoring:t}=await import("./StageHost-CgQvlJ6q.js").then(e=>e.S);return{ToolObject3DAuthoring:t}},__vite__mapDeps([32,4,5,2,6,1,7,8,9,10,11,33,34,35,12,13,36,16,17,21,37,38,39,40,19,25,26,27,28,41,18,42,43,44,45,46,47,48,49,31,20,22,23,24,14,50,51,52,53,54,55,30,56,57,58]))).ToolObject3DAuthoring}));function fr(t){return y.jsx(g.Suspense,{fallback:y.jsx("div",{style:{minHeight:240},children:"Loading 3D preview…"}),children:y.jsx(dr,{...t})})}function mr(t){return g.useEffect(()=>qe(t.documentId),[t.documentId]),y.jsx(g.Suspense,{fallback:y.jsx("div",{style:{minHeight:240},children:"Loading 3D authoring surface…"}),children:y.jsx(pr,{...t})})}const le={model:g.lazy(async()=>{const{ModelAssetDocument:t}=await M(async()=>{const{ModelAssetDocument:e}=await import("./ModelAssetDocument-CCOUnfNZ.js");return{ModelAssetDocument:e}},__vite__mapDeps([59,1,2,5,6,7,8,4,9,10,11,15,16,17,18,19,20,21,22,12,13,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,14,50,51,52,53,54,55,30,56,57,58,60,61,62]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,displayName:e.displayName,active:e.active})}}),"entity-model":g.lazy(async()=>{const{EntityModelDocument:t}=await M(async()=>{const{EntityModelDocument:e}=await import("./EntityModelDocument-DFLHmO4x.js");return{EntityModelDocument:e}},__vite__mapDeps([63,1,2,34,35,12,13,36,16,17,4,5,6,7,8,9,10,11,21,37,38,42,15,18,19,20,22,23,24,25,26,27,28,29,32,33,39,40,41,43,44,45,46,47,48,49,31,14,50,51,52,53,54,55,30,56,57,58,60,61,62]));return{default:e=>y.jsx(t,{documentId:e.documentId,entityId:e.entityId??"",displayName:e.displayName,active:e.active})}}),environment:g.lazy(async()=>{const{EnvironmentAssetDocument:t}=await M(async()=>{const{EnvironmentAssetDocument:e}=await import("./EnvironmentAssetDocument-C_10a-a0.js");return{EnvironmentAssetDocument:e}},__vite__mapDeps([64,1,2,4,5,6,7,8,9,10,11,12,13,14,27,28,65]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),lut:g.lazy(async()=>{const{LutAssetDocument:t}=await M(async()=>{const{LutAssetDocument:e}=await import("./LutAssetDocument-BWgoofXc.js");return{LutAssetDocument:e}},__vite__mapDeps([66,1,2,4,5,6,7,8,9,10,11,67,12,13,65]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),shader:g.lazy(async()=>{const{ShaderAssetDocument:t}=await M(async()=>{const{ShaderAssetDocument:e}=await import("./ShaderAssetDocument-C6ew-WgT.js");return{ShaderAssetDocument:e}},__vite__mapDeps([68,1,2,4,5,6,7,8,9,10,11,69,12,13,65]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,active:e.active})}}),"model-preview":g.lazy(async()=>{const{Object3DPreview:t}=await M(async()=>{const{Object3DPreview:e}=await import("./Object3DPreview-CbcdszHX.js");return{Object3DPreview:e}},__vite__mapDeps([3,4,5,2,6,1,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]));return{default:e=>y.jsx(t,{assetPath:e.assetPath,...e.materialPath?{materialPath:e.materialPath}:{},displayName:e.displayName})}}),module:g.lazy(async()=>{const{LiveModuleDocument:t}=await M(async()=>{const{LiveModuleDocument:e}=await import("./LiveModuleDocument-DxsfqWPz.js");return{LiveModuleDocument:e}},__vite__mapDeps([70,1,2,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,12,13,23,24,25,26,27,28,29,53,71,58,39,40]));return{default:e=>e.projectRoot?y.jsx(t,{documentId:e.documentId,projectRoot:e.projectRoot,modulePath:(e.assetPath.split(/[?#]/,1)[0]??e.assetPath).replace(/^\//,""),displayName:e.displayName,active:e.active,fallback:e.fallback}):e.fallback}})},hr={recognize:async(t,e)=>(await M(async()=>{const{loadNativeQuarksJsonSource:r}=await import("./QuarksAssetDocument-B6NS06Qk.js");return{loadNativeQuarksJsonSource:r}},__vite__mapDeps([72,1,2,5,6,7,8,4,9,10,11,20,21,17,22,12,13,23,24,25,26,27,28,51,73,32,33,34,35,36,16,37,38,39,40,19,41,18,42,43,44,45,46,47,48,49,31,14,50,52,53,54,55,30,56,57,58,60,61,62,15,29]))).loadNativeQuarksJsonSource(t,e),Viewer:g.lazy(async()=>{const{QuarksAssetDocument:t}=await M(async()=>{const{QuarksAssetDocument:e}=await import("./QuarksAssetDocument-B6NS06Qk.js");return{QuarksAssetDocument:e}},__vite__mapDeps([72,1,2,5,6,7,8,4,9,10,11,20,21,17,22,12,13,23,24,25,26,27,28,51,73,32,33,34,35,36,16,37,38,39,40,19,41,18,42,43,44,45,46,47,48,49,31,14,50,52,53,54,55,30,56,57,58,60,61,62,15,29]));return{default:e=>y.jsx(t,{documentId:e.documentId,assetPath:e.assetPath,displayName:e.displayName,active:e.active,source:e.content})}})};function vr(){const t=[...Object.keys(le).map(e=>Ue(e,le[e])),Ge(hr)];return()=>{for(const e of t)e()}}async function de(t){const e=new Image;return e.src=t,await e.decode(),e}function gr(){return $e((t,e)=>{const r=j();if(r&&r.viewportCanvas()===t)return(async()=>{const o=await Qe(t);if(o)return o;const a=r.captureViewportImage(e);return a?de(a):null})();const n=xt().find(o=>o.renderer.domElement===t);return n?(async()=>{const o=await n.requestPresentedFrame();if(o)return o;const a=n.captureImage(e);return a?de(a):null})():null})}function wr(t){const e=Ot(t);if(e||xe(t)||W(t,"authoringRoot")===!0||!kt(t))return e;const r=W(t,"authoringComponent");return typeof r=="string"&&r?r:void 0}function yr(t){if(typeof t.object3D!="function")return Ye;const r=new Map;return n=>{if(r.has(n))return r.get(n);const o=Dt(t,n),a=o?{componentRoot:wr(o),authoredEntity:W(o,"authoringRoot")===!0,builtInternal:xe(o)}:void 0;return r.set(n,a),a}}const br=1e-4,_r="World-anchored — content is placed in world space by the game each frame; moving this container offsets future placements away from their source.";function ke(t){if(!t)return 0;const e=t;if(e.isInstancedMesh!==!0)return 0;const r=e.count;return typeof r=="number"&&r>0?r:0}function Sr(t){const e=t.elements;for(let r=0;r<16;r++){const n=r%5===0?1:0,o=e[r];if(!Number.isFinite(o)||Math.abs(o-n)>br)return!1}return!0}const pe=new gt,fe=new A;function Pr(t,e){const r=ke(t);if(r===0)return null;const n=Er(t,e);return{units:r,detail:De(r),worldAnchored:n,note:n?_r:null}}function Er(t,e){if(!e||e.isEmpty()||!Sr(t.matrixWorld))return!1;const r=t.geometry;return r.boundingBox===null&&r.computeBoundingBox(),r.boundingBox?(pe.copy(r.boundingBox),e.getCenter(fe),!pe.containsPoint(fe)):!1}function Mr(t){const e=ke(t);return e===0?null:De(e)}function De(t){return`${t} instanced unit${t===1?"":"s"}`}function Cr(){return Je({detail:(t,e,r)=>Mr(q(t,V(r).objectMap,e)),marks:t=>yr(t),structureLog:t=>{const e=V(t);return{epoch:()=>e.gizmoEpoch,parentChangesSince:r=>e.ingestObjectMapChangesSince(r)}}})}function Ar(t){return Math.min(1600,Math.max(800,900+t*25))}function Tr(t){return t<.5?4*t*t*t:1-(-2*t+2)**3/2}function Ie(t,e,r=new A(0,1,0)){const n=new A().subVectors(e,t),o=n.length();if(o<1e-6)return[t.clone(),t.clone(),e.clone(),e.clone()];const a=Math.min(o*.18,6),s=new A().crossVectors(n,r);s.lengthSq()>1e-9?s.normalize().multiplyScalar(Math.min(o*.08,2.5)):s.set(0,0,0);const i=r.clone().normalize().multiplyScalar(a),u=t.clone().addScaledVector(n,.3).add(i).add(s),m=e.clone().addScaledVector(n,-.3).addScaledVector(i,.6).addScaledVector(s,.5);return[t.clone(),u,m,e.clone()]}const xr=1<<31;function Or(t){return(t.layers.mask&xr)!==0||/gizmo/i.test(t.name)}function Re(t){if(Or(t))return null;if(t.isCamera)return t;for(const e of t.children){const r=Re(e);if(r)return r}return null}function kr(t,e,r){const n=new A,o=new X;return e.getWorldPosition(n),e.getWorldQuaternion(o),{entityId:t,position:n.toArray(),quaternion:o.toArray(),fov:r}}function Dr(t){for(const[e,r]of t.objectMap){const n=Re(r);if(!n)continue;const o=n;return kr(e,n,o.isPerspectiveCamera?o.fov:60)}return null}function Ir(t){t.curve=new Ae(Ie(t.startPos,t.endPos))}let N=null;function Rr(t){const e=U(),r=j()?.objectMap,n=r?Dr({objectMap:r}):null;if(!n||!e)return!1;const o=e.camera.position.clone(),a=new A().fromArray(n.position);return N={runtime:{startPos:o,startQuat:e.camera.quaternion.clone(),startFov:e.camera.fov,endPos:a,endQuat:new X().fromArray(n.quaternion),endFov:n.fov,curve:new Ae(Ie(o,a)),startedAt:performance.now(),durationMs:Ar(o.distanceTo(a)),landed:!1},snapshot:{position:e.camera.position.clone(),target:e.orbit.target.clone(),up:e.camera.up.clone(),fov:e.camera.fov},onLanded:t,getLiveCamera:null,driving:!0},e.orbit.enabled=!1,!0}function jr(){const t=U(),e=N;if(!e||(e.driving=!1,!t))return;const r=t.camera,n=new A(0,0,-1).applyQuaternion(r.quaternion),o=Math.max(1,e.snapshot.position.distanceTo(e.snapshot.target));t.orbit.target.copy(r.position).addScaledVector(n,o),r.up.set(0,1,0).applyQuaternion(r.quaternion),t.orbit.enabled=!0}function Vr(){const t=N;if(!t)return;N=null;const e=U();if(!e)return;const r=t.snapshot;e.camera.position.copy(r.position),e.orbit.target.copy(r.target),e.camera.up.copy(r.up),e.camera.lookAt(r.target),e.camera.fov!==r.fov&&(e.camera.fov=r.fov,e.camera.updateProjectionMatrix()),e.orbit.enabled=!0,e.orbit.update()}const Q=new A,me=new X;It(Nr);function Nr(){const t=N,e=U();if(!t||!e||!t.driving)return;const r=t.runtime,n=t.getLiveCamera?.()??null,o=n?.isObject3D?n:null;if(o){o.getWorldPosition(Q),o.getWorldQuaternion(me),Q.distanceToSquared(r.endPos)>1e-8&&(r.endPos.copy(Q),Ir(r)),r.endQuat.copy(me);const u=o.fov;typeof u=="number"&&(r.endFov=u)}const a=e.camera;if(r.landed){a.position.copy(r.endPos),a.quaternion.copy(r.endQuat),a.fov!==r.endFov&&(a.fov=r.endFov,a.updateProjectionMatrix());return}const s=Math.min(1,(performance.now()-r.startedAt)/r.durationMs),i=Tr(s);a.position.copy(r.curve.getPoint(i)),a.quaternion.slerpQuaternions(r.startQuat,r.endQuat,i),a.fov=r.startFov+(r.endFov-r.startFov)*i,a.updateProjectionMatrix(),s>=1&&(r.landed=!0,t.onLanded())}function Lr(){return Ke({begin:Rr,track:t=>{N&&(N.getLiveCamera=t)},settle:jr,end:Vr})}const Fr=g.lazy(()=>M(()=>import("./InspectorObjectPreview-CO8cF8ht.js"),__vite__mapDeps([74,1,2,63,34,35,12,13,36,16,17,4,5,6,7,8,9,10,11,21,37,38,42,15,18,19,20,22,23,24,25,26,27,28,29,32,33,39,40,41,43,44,45,46,47,48,49,31,14,50,51,52,53,54,55,30,56,57,58,60,61,62])).then(t=>({default:t.InspectorObjectPreview})));function zr(t,e){return{preview:t.isCamera?null:({displayName:r,previewKey:n,actions:o})=>a=>g.createElement(Xe,{picture:()=>g.createElement(Fr,{previewKey:n,object:t,displayName:r,fill:!0}),previewKey:n,actions:o,...a?{mode:a}:{}}),instanced:Pr(t,Rt(t)),assetDocument:e}}function Br(){return Ze((t,e)=>{const r=j();if(!r)return null;const n=q(t,r.objectMap,e);return n?zr(n,r.objectMap.has(e)?{open:()=>et("asset-editor:entity",r.shell,{entityId:e,title:n.name||e})}:null):null})}const he=new WeakMap,ee={activeAuthoring(t){let e=he.get(t);return e||(e=rt(t,"No authoring adapter"),he.set(t,e)),e},panelAuthoring(t){return ee.activeAuthoring(t)},pick(){return null},toolOwner:tt,toolOwnerPainted(){return!0},threeSurfaceShowing(t,e){return!e.rects&&typeof e.hierarchy.object3D=="function"},threeViewportRootId(){return null},applyRootHiddenVisibility(){},suppressRootEnvironment(){}};let B=ee;function Hr(t){if(B!==t){if(B!==ee)throw new Error("A viewport authoring policy is already installed.");B=t}}function Cn(){return B}const ve=0,Wr=16777215,ge=10;function qr(t){return Vt(t,"Compare reference GLB")}function we(t,e){const r=Bt(t),n=new oe;n.rotation.y=Ht(e),n.add(r);const o=new oe;o.add(n),o.updateWorldMatrix(!0,!0);const a=Wt(o,"front"),s=[a.center.x-a.size.x/2,a.center.y-a.size.y/2,a.center.z-a.size.z/2],i=[a.center.x+a.size.x/2,a.center.y+a.size.y/2,a.center.z+a.size.z/2],u=qt(s,i);return o.scale.setScalar(u.scale),o.position.set(...u.position),o.updateWorldMatrix(!0,!0),{wrapper:o,dispose:()=>Ut(r)}}function Ur(t,e){const r=Gt,n=r*e,o=new yt(-n,n,r,-r,.01,ge*4),a=t==="front"?new A(0,0,1):new A(1,0,0);return o.position.set(0,ue,0).addScaledVector(a,ge),o.up.set(0,1,0),o.lookAt(0,ue,0),o.updateProjectionMatrix(),o.updateMatrixWorld(!0),o}function Gr(t,e,r={}){const n=se(r.width),o=se(r.height),a=n/o,s=[];let i=null;try{const u=we(t,ie(t));s.push(u.dispose);const m=we(e,r.refForward??ie(e));s.push(m.dispose);const P=new z({color:Wr});s.push(()=>P.dispose());const T=p=>{const c=new wt;return c.background=new Z(ve),c.overrideMaterial=P,c.add(p),c},d=T(u.wrapper),w=T(m.wrapper),b=Pe(new Ee({antialias:!1,alpha:!1,preserveDrawingBuffer:!0}));i=b,b.setPixelRatio(1),b.toneMapping=Me,b.setClearColor(ve,1),b.setSize(n,o,!1);const x=document.createElement("canvas");x.width=n,x.height=o;const _=x.getContext("2d");if(!_)throw new Error("Unable to create the compare readback canvas.");const E=(p,c,I,v)=>{b.render(p,c),_.clearRect(0,0,n,o),_.drawImage(b.domElement,0,0);const S=_.getImageData(0,0,n,o).data,R=Nt(S,n*o);if(!R.some(te=>te!==0))throw new Error(`Compare ${v} view rendered an empty ${I} silhouette — nothing to score.`);return{image:{base64:ce(x),mimeType:"image/png"},mask:R}},h=document.createElement("canvas");h.width=n,h.height=o;const C=h.getContext("2d");if(!C)throw new Error("Unable to create the compare overlay canvas.");const D=[];for(const p of Lt){const c=Ur(p,a),I=E(d,c,"asset",p),v=E(w,c,"reference",p),S=Ft(I.mask,v.mask);C.putImageData(new ImageData(zt(I.mask,v.mask),n,o),0,0),D.push({view:p,iou:S.iou,overlay:{base64:ce(h),mimeType:"image/png"},asset:I.image,ref:v.image})}return{width:n,height:o,views:D}}finally{i?.dispose(),i?.forceContextLoss();for(const u of s.reverse())u()}}async function $r(t,e,r={}){const n=await jt(t);try{return await je(n,e,r)}finally{Oe(n)}}async function je(t,e,r={}){const n=await qr(e);try{return Gr(t,n,r)}finally{Oe(n)}}async function Qr(t,e){const r=e.assetPath,n=e.entityId,o=e.glbBase64;if(+(typeof r=="string")+ +(typeof n=="string")+ +(typeof o=="string")!==1)return{ok:!1,error:"capture-asset-preview requires exactly one of assetPath, entityId or glbBase64."};const s=e.width,i=e.height,u=e.background,m=e.shots,P=e.shotSet,T=e.forward,d=e.compare,w=e.stage,b=e.camera,x=e.pose;if(s!==void 0&&typeof s!="number"||i!==void 0&&typeof i!="number"||u!==void 0&&u!=="neutral"&&u!=="transparent"||m!==void 0&&m!=="source")return{ok:!1,error:"Invalid asset preview dimensions, background, or shots mode."};if(w!==void 0&&w!=="lab"&&w!=="scene")return{ok:!1,error:`capture-asset-preview stage must be "lab" or "scene", got ${String(w)}.`};if(P!==void 0&&m!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine a shotSet definition with a shots mode."};const _=nt("capture-asset-preview",b);if(typeof _=="string")return{ok:!1,error:_};const E=ot("capture-asset-preview",x);if(typeof E=="string")return{ok:!1,error:E};if((_||E)&&(m!==void 0||P!==void 0||d!==void 0||w==="scene"))return{ok:!1,error:'capture-asset-preview cannot combine camera/pose with a shots mode, a shotSet definition, compare, or stage "scene" — those legs stage their own cameras and poses.'};let h;if(P!==void 0)try{h=$t(P)}catch(c){return{ok:!1,error:c instanceof Error?c.message:String(c)}}const C=$(T);if(m==="source"&&C===null)return{ok:!1,error:"capture-asset-preview --shots source requires a non-degenerate forward [x,y,z]."};if(d!==void 0){if(m!==void 0||h!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine compare with shots."};if(typeof d!="object"||d===null||typeof d.glbBase64!="string"||d.forward!==void 0&&$(d.forward)===null)return{ok:!1,error:"capture-asset-preview compare requires { glbBase64: string, forward?: [x, y, z] } with a non-degenerate ground-plane forward."}}if(typeof o=="string"){if(m!==void 0||d!==void 0)return{ok:!1,error:"capture-asset-preview cannot combine glbBase64 with a named shots mode or compare."};if(w==="scene")return{ok:!1,error:'capture-asset-preview stage "scene" photographs a live scene entity — glbBase64 bytes stand nowhere in the scene.'}}const D=w==="scene"?t.scene:null;if(w==="scene"){if(typeof n!="string")return{ok:!1,error:'capture-asset-preview stage "scene" photographs a live scene entity — pass entityId, not assetPath.'};if(m!==void 0||h!==void 0||d!==void 0)return{ok:!1,error:'capture-asset-preview cannot combine stage "scene" with a shots mode, a shotSet definition or compare.'};if(!D)return{ok:!1,error:'capture-asset-preview stage "scene" requires a bound viewport scene; none is bound yet.'}}const p=typeof n=="string"?q(_e(t.shell),t.objectMap,n):null;if(typeof n=="string"&&!p)return{ok:!1,error:`Entity not found: ${n}`};try{const c={...typeof s=="number"?{width:s}:{},...typeof i=="number"?{height:i}:{},...u?{background:u}:{},..._?{camera:_}:{},...E?{pose:E}:{}};if(d!==void 0){const v=d,S=$(v.forward),R={...typeof s=="number"?{width:s}:{},...typeof i=="number"?{height:i}:{},...S?{refForward:S}:{}};return{ok:!0,data:{...typeof r=="string"?await $r(r,v.glbBase64,R):await je(p,v.glbBase64,R)}}}return h!==void 0?{ok:!0,data:{...typeof o=="string"?await Qt(o,h,c):typeof r=="string"?await Yt(r,h,c):Jt(p,h,c)}}:m==="source"?{ok:!0,data:{...typeof r=="string"?await Kt(r,C,c):Zt(p,C,c)}}:D?{ok:!0,data:{...Xt(p,D,c)}}:typeof o=="string"?{ok:!0,data:{...await er(o,c)}}:{ok:!0,data:{...typeof r=="string"?await tr(r,c):rr(p,c)}}}catch(c){return{ok:!1,error:c instanceof Error?c.message:String(c)}}}const Ve=256;function Yr(t){const e=Math.min(1,Math.max(0,t));return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}function Y(t,e,r){const n=Math.hypot(t,e,r)||1;return[t/n,e/n,r/n]}function Jr(t=Ve){const e=document.createElement("canvas");e.width=t,e.height=t;const r=e.getContext("2d");if(!r)return e;const n=r.createImageData(t,t),o=Y(-.45,.62,.64),a=Y(.65,-.35,.5),s=Y(o[0],o[1],o[2]+1),i=[.7,.69,.68],u=[.34,.4,.52],m=[.85,.88,1];for(let P=0;P<t;P++)for(let T=0;T<t;T++){const d=(T+.5)/t/.5-1,w=1-(P+.5)/t/.5,b=d*d+w*w,x=b>1,_=x?1/Math.sqrt(b):1,E=d*_,h=w*_,C=x?0:Math.sqrt(Math.max(0,1-b)),D=Math.max(0,E*o[0]+h*o[1]+C*o[2]),p=Math.max(0,E*a[0]+h*a[1]+C*a[2]),c=Math.max(0,E*s[0]+h*s[1]+C*s[2])**42*.5,I=(1-C)**3.2*.4,v=(P*t+T)*4;for(let S=0;S<3;S++){const R=i[S]*(.16+.8*D)+u[S]*.3*p+m[S]*I+c;n.data[v+S]=Math.round(Yr(R)*255)}n.data[v+3]=255}return r.putImageData(n,0,0),e}function Kr(t=Ve){const e=new bt(Jr(t));return e.colorSpace=Ce,e.minFilter=ae,e.magFilter=ae,e.generateMipmaps=!1,e.needsUpdate=!0,e}const ye=["solid","preview","rendered","clay","unlit","wireframe","matcap","normals","overdraw"];function Zr(t){return t.color?.clone()??new Z(12502993)}function J(t,e){return t[e]??null}class An{_derived=new Map;_normals=new _t;_matcap=null;_matcapTexture=null;_overdraw=new z({color:16777215,transparent:!0,opacity:.08,depthTest:!1,depthWrite:!1,blending:Pt,side:St,toneMapped:!1});render(e,r,n,o=()=>!0){if(r==="solid"||r==="preview"||r==="rendered"){n();return}const a=[];e.traverse(s=>{const i=s;!i.isMesh||!i.material||!o(i)||(a.push({mesh:i,material:i.material}),i.material=Array.isArray(i.material)?i.material.map(u=>this._materialFor(u,r)):this._materialFor(i.material,r))});try{n()}finally{for(const{mesh:s,material:i}of a)s.material=i}}dispose(){for(const e of this._derived.values())e.clay.dispose(),e.unlit.dispose(),e.wireframe.dispose();this._derived.clear(),this._normals.dispose(),this._overdraw.dispose(),this._matcap?.dispose(),this._matcapTexture?.dispose(),this._matcap=null,this._matcapTexture=null}_materialFor(e,r){if(r==="normals")return this._normals;if(r==="overdraw")return this._overdraw;if(r==="matcap")return this._matcap||(this._matcapTexture=Kr(),this._matcap=new Et({matcap:this._matcapTexture,toneMapped:!1})),this._matcap;let n=this._derived.get(e);if(!n){const o={color:Zr(e),map:J(e,"map"),alphaMap:J(e,"alphaMap"),alphaTest:e.alphaTest,opacity:e.opacity,transparent:e.transparent,side:e.side,depthTest:e.depthTest,depthWrite:e.depthWrite,vertexColors:!!e.vertexColors,fog:e.fog??!0};n={clay:new Mt({color:11450048,roughness:.82,metalness:0,flatShading:!0,alphaMap:J(e,"alphaMap"),alphaTest:e.alphaTest,opacity:e.opacity,transparent:e.transparent,side:e.side,depthTest:e.depthTest,depthWrite:e.depthWrite}),unlit:new z(o),wireframe:new z({...o,wireframe:!0})},this._derived.set(e,n)}return n[r]}}function O(){const t=H();return t?Te(t):null}function l(t,e,r="none"){return{...e===void 0?{}:{timeoutMs:e},derivedRefresh:r,handle:n=>{const o=j();return o?t(o,n):{ok:!1,error:`${n.type} needs an editor session; none has opened yet.`}}}}const f={ok:!0},Xr={"focus-entity":l((t,e)=>(O()?.frameIds([e.id])||t.shell.focusOnEntity(e.id),f)),"frame-entity":l((t,e)=>{const r=e.id;if(typeof r!="string"||r.length===0)return{ok:!1,error:'frame-entity requires a string "id" (the entity to frame).'};const n=O();if(n)return n.frameIds([r])?f:{ok:!1,error:`Entity not found: ${r}`,data:{code:"ENTITY_NOT_FOUND"}};const o=_e(t.shell);return o.hierarchy.node(r)!==null&&o.rects||q(o,t.objectMap,r)?(t.shell.focusOnEntity(r),f):{ok:!1,error:`Entity not found: ${r}`,data:{code:"ENTITY_NOT_FOUND"}}}),"focus-selection":l(t=>(O()?.frameSelection()||t.shell.focusOnSelection(),f)),"view-preset":l((t,e)=>{const r=e.preset,n=["top","front","right","perspective"];if(typeof r!="string"||!n.includes(r))return{ok:!1,error:`view-preset requires one of ${n.join(", ")}, got ${r===void 0?"nothing":JSON.stringify(r)}.`};const o=r,a=O();return a?a.setViewPreset(o==="perspective"?"isometric":o):t.shell.setViewPreset(o),f}),"set-camera":l((t,e)=>{const r=e.position,n=e.target,o=e.fov;if(!r||!n||typeof r.x!="number"||typeof r.y!="number"||typeof r.z!="number"||typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return{ok:!1,error:"set-camera requires numeric {x,y,z} position and target."};const a=O();return a?a.setCameraPose(r,n,o):t.shell.setCameraPose(r,n,o),f}),"document-orbit":l((t,e)=>be(e),12e4),"document-turntable":l((t,e)=>be(e),12e4),"document-frame":l((t,e)=>{const r=O();if(!r)return{ok:!1,error:"document-frame needs an Object3D document open and active. For the Scene viewport use `frame-entity`/`focus-selection`.",data:{code:"NO_ACTIVE_OBJECT3D_DOCUMENT"}};const n=e.fit;return n!==void 0&&(typeof n!="number"||!(n>=.1&&n<=10))?{ok:!1,error:'document-frame: "fit" must be a number in 0.1..10.'}:r.frame(typeof n=="number"?n:1)?{ok:!0,data:{...r.cameraPose()}}:{ok:!1,error:"Nothing to frame: the document subject has no measurable bounds.",data:{code:"EMPTY_FRAME_BOUNDS"}}}),"capture-viewport":l(async(t,e)=>{const r=it(e);if("error"in r)return{ok:!1,error:r.error};if(t.hasAdoptedScene)try{const s=await Se().documents.captureActive(r.size);return{ok:!0,data:{base64:s.base64,mimeType:s.mimeType}}}catch(s){return{ok:!1,error:s instanceof Error?s.message:String(s)}}const n=t.captureViewportImage(r.size);if(!n)return{ok:!1,error:`This door photographs the editor's own three.js Scene viewport, and nothing has bound one (no renderer/scene/camera). A canvas-surface world (a first-party canvas root, or a PixiJS/Phaser/Babylon ingest) never binds it — it draws on its own canvas in the Game document. Capture that through \`capture-active-document\` (\`editor.captureActiveDocument()\`) or the running game through \`bridge-screenshot\` (${ct("screenshot")}).`};const o=n.indexOf(",");return{ok:!0,data:{base64:o>=0?n.slice(o+1):n,mimeType:"image/png"}}},void 0,"if-content-changed"),"capture-asset-preview":l((t,e)=>Qr(t,e),3e4,"if-content-changed"),"set-grid":l((t,e)=>{const r=H();return!r||!ne(r)?{ok:!1,error:"set-grid: the active document draws no grid."}:(st(r,e.enabled),f)}),"set-helpers":l((t,e)=>{const r=F(t.shell);return r.showHelpers!==e.enabled&&r.toggleHelpers(),f}),"set-stats":l((t,e)=>{const r=F(t.shell);return V(r).showStats!==e.enabled&&V(r).toggleStats(),f}),"set-shading-mode":l((t,e)=>{const r=O(),n=e.mode,o=r?[...ye,"uv","vertex-colors"]:ye;if(typeof n!="string"||!o.includes(n))return{ok:!1,error:`No shading mode "${String(n)}"; the modes are ${o.join(", ")}.`};if(n==="preview"||n==="rendered"){const a=H(),s=a?ne(a)?.stageKind:void 0;if(!r||!s||at(s)?.modes?.[n]?.lighting===void 0)return{ok:!1,error:`Shading mode "${n}" is lit as a stage says, and the active document's stage says nothing for it.`}}return r?r.setMode(e.mode):t.setShadingMode(e.mode),f}),"set-helper-type":l((t,e)=>{const r=F(t.shell),n=e.helperType,o=O();return o&&n==="bounds"?(o.setBounds(e.enabled),f):o&&n==="skeletons"?(o.setSkeleton(e.enabled),f):(r.helperVisibility[n]!==e.enabled&&r.toggleHelperType(n),f)}),"set-transform-mode":l((t,e)=>(t.shell.setTransformMode(e.mode),f)),"set-transform-space":l((t,e)=>(t.shell.setTransformSpace(e.space),f)),"set-snap":l((t,e)=>(t.shell.snapEnabled!==e.enabled&&t.shell.toggleSnap(),f))};async function be(t){const e=O();if(!e)return{ok:!1,error:`${t.type} needs an Object3D document open and active (a model, a live module, an entity model). Open one with \`editor.openAsset(<path>)\` first.`,data:{code:"NO_ACTIVE_OBJECT3D_DOCUMENT"}};const r=t.type==="document-orbit"?t.duration:t.seconds;return r!==void 0&&(typeof r!="number"||!(r>=0&&r<=60))?{ok:!1,error:`${t.type}: the move's length must be a number of seconds in 0..60.`}:{ok:!0,data:{...t.type==="document-orbit"?await e.orbit({...typeof t.azimuth=="number"?{azimuth:t.azimuth}:{},...typeof t.elevation=="number"?{elevation:t.elevation}:{},...typeof r=="number"?{duration:r}:{}}):await e.turntable({...typeof r=="number"?{seconds:r}:{},...typeof t.revolutions=="number"?{revolutions:t.revolutions}:{}})}}}function en(){return Se().session.reportFacet(()=>{const t=j();if(!t)return{};const e=F(t.shell),r=H(),n=r?Te(r)?.presentation():void 0,o=V(e).cameraPose;return{showGrid:r?ut(r):!0,showHelpers:e.showHelpers,showStats:V(e).showStats,shadingMode:n?.mode??t.shadingMode,helperVisibility:{...e.helperVisibility,...n?{bounds:n.bounds,skeletons:n.skeleton}:{}},transformMode:e.transformMode,transformSpace:t.shell.transformSpace,snapEnabled:t.shell.snapEnabled,...o?{camera:{position:{x:o.position.x,y:o.position.y,z:o.position.z},target:{x:o.target.x,y:o.target.y,z:o.target.z},fov:o.fov}}:{}}})}const tn={save:t=>mt("view",t),saveThumbnail:ft},rn=new Map;let L=null;function Tn(){if(L)return L;const t=[lt({Object3DPreview:fr,Object3DAuthoring:mr}),dt("three-viewport",Xr),vr(),Br(),Tt(),en(),gr(),Cr(),Lr(),ht({object:e=>j()?.objectMap.get(e)??null,objects:()=>j()?.objectMap??rn}),G("hostLive",vt),G("interactive",sr),G("inspectorPreview",Ct),pt(e=>V(e).attachStatePersistence(tn))];return Hr(lr),L=()=>{for(const e of t.reverse())e();L=null},L}export{An as V,Mn as a,Pr as d,Tn as e,ke as i,Cn as v};
@@ -0,0 +1 @@
1
+ import{e as r}from"./three-integration-lFHyckTb.js";import"./index-EO6Vl92s.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-Ciu7uLFh.js";import"./root-stacking-BEd9ZvxC.js";import"./user-data-DnahhlAD.js";import"./workspace-arrangement-COs530TA.js";import"./model-thumbnail-C6YzkBEi.js";import"./studio-environment-BRMTYTp1.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./object3d-document-session-registry-3YUZT4RT.js";import"./three-state-15gXjQ51.js";import"./editor-shell-store-CW9Fjab9.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./editor-layers-B43PZgUF.js";import"./entity-object-C40NpVSX.js";import"./three-contract-Dkt6PmWY.js";import"./hierarchy-marks-r1SCnl92.js";import"./component-instance-root-JAQpC4Pi.js";import"./viewport-door-Dbl8EH3p.js";import"./content-bounds-B_xPBrsP.js";import"./asset-preview-BqLvTtnb.js";import"./bitmap-label-Ct4k6ehY.js";const Q="workspace.service";function R(){return r()}export{Q as point,R as start};
@@ -1 +1 @@
1
- import{isEditorOwnedObject as f}from"./editor-layers-psmpPtJ8.js";import{o as h,n as I}from"./three-43Ky3-7O.js";import{g as n}from"./user-data-FwfU1u6l.js";import{fo as u,dp as O}from"./three.core-3arARmh6.js";const l=new u,p=new O,c=new u;function m(e){return e.matrixAutoUpdate===!1?(e.matrix.decompose(l,p,c),{position:l.toArray(),quaternion:p.toArray(),scale:c.toArray()}):{position:e.position.toArray(),quaternion:e.quaternion.toArray(),scale:e.scale.toArray()}}function y(e,t){return e.length===t.length&&e.every((o,s)=>o===t[s])}class v{constructor(t){this.options=t,this.selected=[...t.initial]}adopted=[];selected;current(){const t=[...this.options.store.selectedEntityIds].filter(this.options.owns);return y(t,this.adopted)||(this.adopted=t,this.selected=t,this.options.onChange?.(t)),[...this.selected]}publish(t){this.selected=[...t];const o=this.selected.filter(this.options.owns);this.adopted=o,this.options.onChange?.(o),this.options.store.selectMultiple(o)}}function q(e){if(!e)return{position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]};const t=m(e);return{position:t.position,rotation:t.quaternion,scale:t.scale}}function a(e){return e.type==="Object3D"&&e.name===""&&h(e)===null&&e.userData.oid===void 0&&n(e,"authoringInstance")===void 0&&n(e,"authoringRoot")!==!0&&n(e,"volterComponentRoot")===void 0}class C{constructor(t){this.options=t,this.rootIdSet=new Set(t.rootIds)}rootIdSet;childObjects(t){return t.children.flatMap(o=>f(o)?[]:a(o)?this.childObjects(o):[o])}childIds(t){return this.options.projector.childIdsOf(this.childObjects(t))}rootObjects(){return this.options.rootIds.flatMap(t=>{const o=this.options.projector.objectOf(t);return o?a(o)?this.childObjects(o):[o]:[]})}rootIds(){return this.options.projector.childIdsOf(this.rootObjects())}parentId(t){const{projector:o,scene:s,documentNodeId:i}=this.options,d=o.idOf(t);if(d!==null&&this.rootIdSet.has(d))return i;let r=t.parent;for(;r&&r!==s&&a(r);)r=r.parent;return r&&r!==s?o.idOf(r)??i:i}node(t){const o=h(t);return{id:this.options.projector.idOf(t),label:o?.label||t.name||t.type||"Object3D",role:"entity",kind:I(t),...o?.typeLabel?{typeLabel:o.typeLabel}:{},parentId:this.parentId(t),childIds:this.childIds(t)}}}export{C,v as S,q as r};
1
+ import{isEditorOwnedObject as f}from"./editor-layers-B43PZgUF.js";import{o as h,n as I}from"./three-DItubEyv.js";import{g as n}from"./user-data-DnahhlAD.js";import{fo as u,dp as O}from"./three.core-3arARmh6.js";const l=new u,p=new O,c=new u;function m(e){return e.matrixAutoUpdate===!1?(e.matrix.decompose(l,p,c),{position:l.toArray(),quaternion:p.toArray(),scale:c.toArray()}):{position:e.position.toArray(),quaternion:e.quaternion.toArray(),scale:e.scale.toArray()}}function y(e,t){return e.length===t.length&&e.every((o,s)=>o===t[s])}class v{constructor(t){this.options=t,this.selected=[...t.initial]}adopted=[];selected;current(){const t=[...this.options.store.selectedEntityIds].filter(this.options.owns);return y(t,this.adopted)||(this.adopted=t,this.selected=t,this.options.onChange?.(t)),[...this.selected]}publish(t){this.selected=[...t];const o=this.selected.filter(this.options.owns);this.adopted=o,this.options.onChange?.(o),this.options.store.selectMultiple(o)}}function q(e){if(!e)return{position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]};const t=m(e);return{position:t.position,rotation:t.quaternion,scale:t.scale}}function a(e){return e.type==="Object3D"&&e.name===""&&h(e)===null&&e.userData.oid===void 0&&n(e,"authoringInstance")===void 0&&n(e,"authoringRoot")!==!0&&n(e,"volterComponentRoot")===void 0}class C{constructor(t){this.options=t,this.rootIdSet=new Set(t.rootIds)}rootIdSet;childObjects(t){return t.children.flatMap(o=>f(o)?[]:a(o)?this.childObjects(o):[o])}childIds(t){return this.options.projector.childIdsOf(this.childObjects(t))}rootObjects(){return this.options.rootIds.flatMap(t=>{const o=this.options.projector.objectOf(t);return o?a(o)?this.childObjects(o):[o]:[]})}rootIds(){return this.options.projector.childIdsOf(this.rootObjects())}parentId(t){const{projector:o,scene:s,documentNodeId:i}=this.options,d=o.idOf(t);if(d!==null&&this.rootIdSet.has(d))return i;let r=t.parent;for(;r&&r!==s&&a(r);)r=r.parent;return r&&r!==s?o.idOf(r)??i:i}node(t){const o=h(t);return{id:this.options.projector.idOf(t),label:o?.label||t.name||t.type||"Object3D",role:"entity",kind:I(t),...o?.typeLabel?{typeLabel:o.typeLabel}:{},parentId:this.parentId(t),childIds:this.childIds(t)}}}export{C,v as S,q as r};
@@ -1 +1 @@
1
- import{t as r}from"./editor-shell-store-CLsRck8r.js";import{T as o,U as n,V as u}from"./index-DBIFLhzt.js";function a(t){return t===null?null:r(t)}function l(){return r(n())}function S(){return a(u())}function f(t){return o(e=>t(r(e)))}export{a,f as o,S as t,l as u};
1
+ import{t as r}from"./editor-shell-store-CW9Fjab9.js";import{T as o,U as n,V as u}from"./index-EO6Vl92s.js";function a(t){return t===null?null:r(t)}function l(){return r(n())}function S(){return a(u())}function f(t){return o(e=>t(r(e)))}export{a,f as o,S as t,l as u};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/story-three-preview-E2uJuH0p.js","assets/index-DBIFLhzt.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/asset-preview-C_0EqGmT.js","assets/editor-layers-psmpPtJ8.js","assets/workspace-arrangement-B2HQOv9w.js","assets/renderer-ownership-BovSEcLv.js","assets/hierarchy-marks-BUeQ6to3.js","assets/studio-environment-Kj8vdH82.js","assets/user-data-FwfU1u6l.js","assets/KTX2Loader-CaqVE6nY.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/bitmap-label-Ct4k6ehY.js","assets/crash-null-boundary-v3a0uEgw.js","assets/events-156d8d12.esm-CYeuVCYr.js","assets/index-bQE2NA0D.js","assets/story-mount-turn-DFRTj5hi.js"])))=>i.map(i=>d[i]);
2
- import{fp as i,_ as n,fq as a}from"./index-DBIFLhzt.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 s(){return typeof WebGLRenderingContext<"u"&&typeof navigator<"u"&&!navigator.userAgent.toLowerCase().includes("jsdom")}function p(){return s()?i("three",async(e,o)=>{const t=await n(()=>import("./story-three-preview-E2uJuH0p.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]));try{return await t.captureStoryComponentThumbnail(e,o)}catch(r){throw t.isStoryThreeClassificationRefusal(r)?new a("This story is not a three.js story."):r}}):()=>{}}const C="workspace.service";function T(){return p()}export{C as point,T as start};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/story-three-preview-N78COIhD.js","assets/index-EO6Vl92s.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/asset-preview-BqLvTtnb.js","assets/editor-layers-B43PZgUF.js","assets/workspace-arrangement-COs530TA.js","assets/renderer-ownership-BovSEcLv.js","assets/hierarchy-marks-r1SCnl92.js","assets/studio-environment-BRMTYTp1.js","assets/user-data-DnahhlAD.js","assets/KTX2Loader-CaqVE6nY.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/bitmap-label-Ct4k6ehY.js","assets/crash-null-boundary-v3a0uEgw.js","assets/events-156d8d12.esm-CYeuVCYr.js","assets/index-bQE2NA0D.js","assets/story-mount-turn-DFRTj5hi.js"])))=>i.map(i=>d[i]);
2
+ import{fr as i,_ as n,fs as a}from"./index-EO6Vl92s.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 s(){return typeof WebGLRenderingContext<"u"&&typeof navigator<"u"&&!navigator.userAgent.toLowerCase().includes("jsdom")}function p(){return s()?i("three",async(e,o)=>{const r=await n(()=>import("./story-three-preview-N78COIhD.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]));try{return await r.captureStoryComponentThumbnail(e,o)}catch(t){throw r.isStoryThreeClassificationRefusal(t)?new a("This story is not a three.js story."):t}}):()=>{}}const C="workspace.service";function T(){return p()}export{C as point,T as start};
@@ -1 +1 @@
1
- import{au as d,aw as a,av as m}from"./index-DBIFLhzt.js";function u(o){return o.children.length>0}function c(o){const n=m(),t=[];for(const e of o){const r=d({modulePath:e.modulePath,regions:n});if(r.medium==="dom"){t.push(e);continue}r.via==="undeclared"&&e.modulePath&&a(e.modulePath,r.reason)}return t}export{c as d,u as m};
1
+ import{au as d,aw as a,av as m}from"./index-EO6Vl92s.js";function u(o){return o.children.length>0}function c(o){const n=m(),t=[];for(const e of o){const r=d({modulePath:e.modulePath,regions:n});if(r.medium==="dom"){t.push(e);continue}r.via==="undeclared"&&e.modulePath&&a(e.modulePath,r.reason)}return t}export{c as d,u as m};