@volter/game-editor 0.5.155 → 0.5.157

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 (294) 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 +2156 -2156
  5. package/dist/assets/{AssetBudgetPanel-B2Wb7-b1.js → AssetBudgetPanel-X38cPCO3.js} +3 -3
  6. package/dist/assets/{AudioViewer-gge--M-h.js → AudioViewer-xMM7RZH9.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-CyGiXrEJ.js → CanvasBoardDocument-DCyh4eaO.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-ChG9oRS8.js → CanvasSceneViewport-BA8eRjJY.js} +1 -1
  9. package/dist/assets/{ColorInput-Dzpqy-J3.js → ColorInput-y8NzQ5q8.js} +1 -1
  10. package/dist/assets/{ColorPicker-CqJPBHlh.js → ColorPicker-C3HI90eU.js} +1 -1
  11. package/dist/assets/{EntityModelDocument-D7XDf6uB.js → EntityModelDocument-DrWN0e0N.js} +1 -1
  12. package/dist/assets/{EnvironmentAssetDocument-BgO7Hl3g.js → EnvironmentAssetDocument-Bv8M7C1O.js} +1 -1
  13. package/dist/assets/{GameplaySessionTimeline-BBmwHCKA.js → GameplaySessionTimeline-mMVtRemn.js} +1 -1
  14. package/dist/assets/{ImageViewer-BjxoscVa.js → ImageViewer-D1mswm2G.js} +1 -1
  15. package/dist/assets/InspectorObjectPreview-DMNRuc0X.js +1 -0
  16. package/dist/assets/{JsonAssetDocument-D81JuRAm.js → JsonAssetDocument-DxLYMceV.js} +1 -1
  17. package/dist/assets/{LiveModuleDocument-bgStMiU1.js → LiveModuleDocument-BOO4_ypf.js} +1 -1
  18. package/dist/assets/{LutAssetDocument-cl9Jq0Zw.js → LutAssetDocument-jf9ogNqN.js} +1 -1
  19. package/dist/assets/{ModelAssetDocument-CYCLKpxJ.js → ModelAssetDocument-DbtKJsGQ.js} +1 -1
  20. package/dist/assets/{NonThreeAuthoringBootstrap-DhHjvD5d.js → NonThreeAuthoringBootstrap-ChEoVJQP.js} +1 -1
  21. package/dist/assets/{Object3DDocumentToolbar-CQbARBIW.js → Object3DDocumentToolbar-Y-jpI3WD.js} +1 -1
  22. package/dist/assets/Object3DDocumentViewport-BOi94JfA.js +2 -0
  23. package/dist/assets/{Object3DPreview-BOZYzjz_.js → Object3DPreview-7LnLFpmg.js} +1 -1
  24. package/dist/assets/{OnlineAssetDetail-DdKHHjxg.js → OnlineAssetDetail-DVdZv1D1.js} +1 -1
  25. package/dist/assets/{PlayBar-CAarfEOh.js → PlayBar-B-GGRbBB.js} +1 -1
  26. package/dist/assets/{QuarksAssetDocument-GTbawoy7.js → QuarksAssetDocument-2MqOJHlY.js} +1 -1
  27. package/dist/assets/{ReactCanvasControls-DIFkxeKv.js → ReactCanvasControls-COp1PvO1.js} +1 -1
  28. package/dist/assets/{RootSelectionOverlay-Dv_w1D9s.js → RootSelectionOverlay-6M-HHI3M.js} +1 -1
  29. package/dist/assets/{ShaderAssetDocument-OA-nshNN.js → ShaderAssetDocument-PrwCSYxk.js} +1 -1
  30. package/dist/assets/{ShadowEditor-Cp1QVCo9.js → ShadowEditor-EXaJ1Kud.js} +1 -1
  31. package/dist/assets/{SourceAssetViewer-CGGHBzgL.js → SourceAssetViewer-Bk_LGk7S.js} +1 -1
  32. package/dist/assets/{StageHost-BMgCrIPG.js → StageHost-CK78ezTC.js} +2 -2
  33. package/dist/assets/{StoryPreviewMount-CyF7FwI7.js → StoryPreviewMount-IbbNNzF4.js} +1 -1
  34. package/dist/assets/{ThreeBoardDocument-DCJkLWU8.js → ThreeBoardDocument-DUakOh0j.js} +2 -2
  35. package/dist/assets/{ThreeIsolationSceneContent-CxsM-QHW.js → ThreeIsolationSceneContent-BjAyHzL2.js} +1 -1
  36. package/dist/assets/{ToolObject3DPreview-lsAoRxtr.js → ToolObject3DPreview-CRb_pBHc.js} +1 -1
  37. package/dist/assets/{Toolbar-yvFlRv8R.js → Toolbar-Bb7KArdo.js} +1 -1
  38. package/dist/assets/{TransientHint-Bslncm_l.js → TransientHint-BlB2atrU.js} +1 -1
  39. package/dist/assets/{VideoViewer-Ba-e91kP.js → VideoViewer-D5fNjrcg.js} +1 -1
  40. package/dist/assets/{ViewportShadingMenu-CgbuQ0e-.js → ViewportShadingMenu-D_-wHbzW.js} +1 -1
  41. package/dist/assets/{active-ingest-CJ2U5L1O.js → active-ingest-DJ8FmH5M.js} +2 -2
  42. package/dist/assets/{animation-clock-CVpGQSVj.js → animation-clock-CINkiVZd.js} +1 -1
  43. package/dist/assets/{animation-mixers.service-CI0K1tfi.js → animation-mixers.service-BST_khGa.js} +1 -1
  44. package/dist/assets/{animation-timeline.utility-Wg6WxkxK.js → animation-timeline.utility-X54fMzvE.js} +1 -1
  45. package/dist/assets/{asset-budget-asset.menu-BbCBxjLY.js → asset-budget-asset.menu-CfJth8-V.js} +1 -1
  46. package/dist/assets/{asset-budget.action-CK8h0v1A.js → asset-budget.action-ByyoIoUI.js} +1 -1
  47. package/dist/assets/{asset-budget.document-CYVcDLvH.js → asset-budget.document-CO1NrMEa.js} +1 -1
  48. package/dist/assets/{asset-budget.menu-BcTijQ2R.js → asset-budget.menu-Cb99KwLd.js} +1 -1
  49. package/dist/assets/{asset-editor-persistence-DWp0E8cc.js → asset-editor-persistence-BF2Eqt0F.js} +1 -1
  50. package/dist/assets/{asset-loaders-Bo91oPiL.js → asset-loaders-2LtXp4_y.js} +1 -1
  51. package/dist/assets/{asset-preview-BUpxsHNd.js → asset-preview-t-7PYPjJ.js} +1 -1
  52. package/dist/assets/{audio-unlock.service-CyiXe5qk.js → audio-unlock.service-DwkIGA6J.js} +1 -1
  53. package/dist/assets/{audio.utility-BN4mANCx.js → audio.utility-Mn4GcZIb.js} +1 -1
  54. package/dist/assets/autoplay.service-D7c8d5PV.js +1 -0
  55. package/dist/assets/{babylon-authoring-adapter-C-EAsfMr.js → babylon-authoring-adapter-BB5HErRG.js} +1 -1
  56. package/dist/assets/{binding-resolver-DoOAFM2m.js → binding-resolver-CXF3o1ZX.js} +2 -2
  57. package/dist/assets/{blender-node-editor.document-BzkGPs0i.js → blender-node-editor.document-djNJTSeo.js} +1 -1
  58. package/dist/assets/{blender-properties-tab-B1ggqOYB.js → blender-properties-tab-06D6TYA0.js} +1 -1
  59. package/dist/assets/{blender-runtime-host-MJZEPwHA.js → blender-runtime-host-Cqitl1ZO.js} +1 -1
  60. package/dist/assets/{blender-runtime-skin-hw-op7Nt.js → blender-runtime-skin-RX6nlrgy.js} +72 -58
  61. package/dist/assets/{blender-runtime.document-CvTyAou8.js → blender-runtime.document-pgD63Zep.js} +10 -10
  62. package/dist/assets/{blender-screenshot.menu-C4VXpXVa.js → blender-screenshot.menu-DZ44fIU0.js} +1 -1
  63. package/dist/assets/{blender-timeline.document-BRFDd7JZ.js → blender-timeline.document-D53mR9D6.js} +1 -1
  64. package/dist/assets/{blender-uv-editor.document-CM09ITWu.js → blender-uv-editor.document-Dux9ZXaj.js} +1 -1
  65. package/dist/assets/{blender-version.status-CPyc_-kA.js → blender-version.status-hK0_7tRC.js} +1 -1
  66. package/dist/assets/{blender.command-ktKz-2Zi.js → blender.command-BF9RHCP_.js} +1 -1
  67. package/dist/assets/{board-guides-CCiyx8cT.js → board-guides-BYnclES1.js} +1 -1
  68. package/dist/assets/{bridge.command-tP5j6w72.js → bridge.command-CS12Cp-B.js} +3 -3
  69. package/dist/assets/{browserAll-BSQVVrNG.js → browserAll-CGQ_uBbB.js} +1 -1
  70. package/dist/assets/{build-player.document-BwbBXtF5.js → build-player.document-RpeG8U_t.js} +1 -1
  71. package/dist/assets/{build-profiles.document-UiF_BsjE.js → build-profiles.document-DydU-eTF.js} +1 -1
  72. package/dist/assets/{build-progress.status-Bf5KpnxC.js → build-progress.status-arvTBGok.js} +1 -1
  73. package/dist/assets/{build-session-C4jVDt-u.js → build-session-D8B-93_A.js} +1 -1
  74. package/dist/assets/{build.action-DP2d1Uhj.js → build.action-CYKD0CrB.js} +1 -1
  75. package/dist/assets/{build.command-D5pyNcoj.js → build.command-BH-4yWaL.js} +1 -1
  76. package/dist/assets/{build.header-DupBIAOw.js → build.header-B5-bZp5Z.js} +1 -1
  77. package/dist/assets/{build.menu-DWrKtdoV.js → build.menu-CyOe8xXz.js} +1 -1
  78. package/dist/assets/{build.service-qnz73gSX.js → build.service-BuhAa1EB.js} +1 -1
  79. package/dist/assets/{camera-C74U5X7o.js → camera-KM5i-TaU.js} +1 -1
  80. package/dist/assets/{camera-runtime.inspector-B2l34Xhl.js → camera-runtime.inspector-DA-GqhBI.js} +1 -1
  81. package/dist/assets/{canvas-design-mount-D4M3E1AX.js → canvas-design-mount-PWQPVLiY.js} +3 -3
  82. package/dist/assets/{canvas-entry-runtime-CLOuJcgT.js → canvas-entry-runtime-nWfnVKYb.js} +2 -2
  83. package/dist/assets/{canvas-preview-frames-CSCcu2sG.js → canvas-preview-frames-BwWVTr-u.js} +1 -1
  84. package/dist/assets/{canvas-story-capture.service-onD_xSpQ.js → canvas-story-capture.service-B1o-VBky.js} +2 -2
  85. package/dist/assets/{capability-coverage-EnZ99FoT.js → capability-coverage-aT7nf05J.js} +1 -1
  86. package/dist/assets/{collaboration-presence-1_UMOAkw.js → collaboration-presence-h1Fxju0A.js} +1 -1
  87. package/dist/assets/{collider-C6R1tHfa.js → collider-BDLEjrr-.js} +1 -1
  88. package/dist/assets/{component-board.service-Ckl-5tA4.js → component-board.service-CetsHh4L.js} +2 -2
  89. package/dist/assets/{component-board.service-Cuf_SXeA.js → component-board.service-DAeFLAlB.js} +2 -2
  90. package/dist/assets/{component-board.service-BX_2bwX3.js → component-board.service-qH45JxuD.js} +2 -2
  91. package/dist/assets/{component-contracts.service-rI-rbvDG.js → component-contracts.service-nYhZ_ceu.js} +1 -1
  92. package/dist/assets/{component-instance-root-wO1p-rLr.js → component-instance-root-QYCCyhxU.js} +1 -1
  93. package/dist/assets/{component-verbs.command-O2bwqmK3.js → component-verbs.command-y1H2CFq-.js} +1 -1
  94. package/dist/assets/{component-verbs.service-BiiQMtJt.js → component-verbs.service-QvBBdzY3.js} +1 -1
  95. package/dist/assets/{config-dVnV1cxW.js → config-YwJJtCF0.js} +2 -2
  96. package/dist/assets/{configurations-8qaUqMH7.js → configurations-B52h5RGp.js} +1 -1
  97. package/dist/assets/{connection.status-vH9WCDDg.js → connection.status-DnEU1lk4.js} +1 -1
  98. package/dist/assets/{constraints.inspector-C7UjUxPR.js → constraints.inspector-DgbM_8l2.js} +1 -1
  99. package/dist/assets/{content-bounds-Dl5Y3LLv.js → content-bounds-BRS42hfD.js} +1 -1
  100. package/dist/assets/{contract-system-adapters-BDUpDoKd.js → contract-system-adapters-DIpeIRm_.js} +1 -1
  101. package/dist/assets/{coverage.service-IS7Oklo8.js → coverage.service-Cjy9MO9F.js} +1 -1
  102. package/dist/assets/{create-runtime-Bucz0XVU.js → create-runtime-ByZWXstA.js} +1 -1
  103. package/dist/assets/{curve-D0Q6TczG.js → curve-DaFJmPin.js} +1 -1
  104. package/dist/assets/{data-asset-B0a1y8M-.js → data-asset-DRCqFyxF.js} +1 -1
  105. package/dist/assets/{data-ref-dRt2Wi5L.js → data-ref-CkvCIusA.js} +1 -1
  106. package/dist/assets/{debug-bridge-EhDkhrLX.js → debug-bridge-C7NLsHKu.js} +1 -1
  107. package/dist/assets/{debug-registry-B2THKz1v.js → debug-registry-BzagDrhV.js} +1 -1
  108. package/dist/assets/{deferred-ingest-play-To3ZratW.js → deferred-ingest-play-DMp_yRhc.js} +2 -2
  109. package/dist/assets/{design-time-canvas-mount-BnSaRAbS.js → design-time-canvas-mount-kB1ZRIvt.js} +2 -2
  110. package/dist/assets/{design-time-layers-OMAIxOrv.js → design-time-layers-Dzu3jW_N.js} +1 -1
  111. package/dist/assets/{design-time-mount.service-RFkiqPIn.js → design-time-mount.service-CLEJHBLW.js} +2 -2
  112. package/dist/assets/{design-time-mount.service-Bgr_nCDs.js → design-time-mount.service-Dgswmfff.js} +2 -2
  113. package/dist/assets/{design-time-react-mount-BsSBoX7J.js → design-time-react-mount-B71UACVS.js} +1 -1
  114. package/dist/assets/{document-preview-three-Qni0oVBw.js → document-preview-three-DxAxdZRF.js} +1 -1
  115. package/dist/assets/{dom-authoring-adapter-DsUgOtQy.js → dom-authoring-adapter-CQiwffQ4.js} +1 -1
  116. package/dist/assets/{draco3d-DyZllcka.js → draco3d-CWfPSgkb.js} +1 -1
  117. package/dist/assets/{edit-mode-audio.service-CjXNAZEs.js → edit-mode-audio.service-CikRAHOi.js} +1 -1
  118. package/dist/assets/{edit-mode-authoring-BDgZD47j.js → edit-mode-authoring-DthrLbz-.js} +1 -1
  119. package/dist/assets/{edit-mode-networking.service-3dUr2g_0.js → edit-mode-networking.service-DBmK8YGU.js} +1 -1
  120. package/dist/assets/{editor-api-DTrNJMXL.js → editor-api-CqqOlRSi.js} +1 -1
  121. package/dist/assets/{editor-layers-DwaX5UFy.js → editor-layers-k0AjpomL.js} +1 -1
  122. package/dist/assets/{editor-shell-store-aKHbAoCV.js → editor-shell-store-B3c29A3l.js} +1 -1
  123. package/dist/assets/{entity-object-BLJ-I8XT.js → entity-object-BOLh6DVA.js} +1 -1
  124. package/dist/assets/{extend-6LrR7eSL.js → extend-CJ7vLkP1.js} +1 -1
  125. package/dist/assets/{fork-menu-V-FM6YuY.js → fork-menu-Bzl-5_GA.js} +1 -1
  126. package/dist/assets/{frame-debugger-store-DwDC0wAm.js → frame-debugger-store-NGsJt0AK.js} +1 -1
  127. package/dist/assets/{game-contract-seams-C22a4B79.js → game-contract-seams-CuBiefwV.js} +1 -1
  128. package/dist/assets/{game-css-scope-transform-Wv0ZdTsR.js → game-css-scope-transform-5yv5zl6t.js} +1 -1
  129. package/dist/assets/{game-document.service-BzvFIWCc.js → game-document.service-DtML_s2L.js} +1 -1
  130. package/dist/assets/{game-eval.command-DpQn_nY8.js → game-eval.command-Cghc-6r3.js} +1 -1
  131. package/dist/assets/{game-module-access-BI6oBa8Y.js → game-module-access-DPnqfsy_.js} +1 -1
  132. package/dist/assets/{game-network-Deo8lcPw.js → game-network-TjOj3K-Z.js} +3 -3
  133. package/dist/assets/{gameplay-export-BOLhxmII.js → gameplay-export-ebDdiP9T.js} +1 -1
  134. package/dist/assets/{gameplay-replay-Dkvmv6hf.js → gameplay-replay-B4BPQnTZ.js} +1 -1
  135. package/dist/assets/{gameplay.command-DCKqLv7C.js → gameplay.command-C__OjBjz.js} +1 -1
  136. package/dist/assets/{generation-jobs-6D562vMB.js → generation-jobs-C57_oOgx.js} +1 -1
  137. package/dist/assets/{generation.service-BFRoLb7y.js → generation.service-BJel-Oiy.js} +1 -1
  138. package/dist/assets/{generations-HwV1btKK.js → generations-DNfmqqzL.js} +1 -1
  139. package/dist/assets/{generations.status-BLiDcKsg.js → generations.status-nXpY7bFU.js} +1 -1
  140. package/dist/assets/{hierarchy-marks-DeG4E4Ke.js → hierarchy-marks-C2temlO0.js} +1 -1
  141. package/dist/assets/{hosted-asset-materialization-Bod7CEMF.js → hosted-asset-materialization-BtbO5pyX.js} +1 -1
  142. package/dist/assets/{index-CLUA6PYq.js → index-7J5pTwW2.js} +1 -1
  143. package/dist/assets/{index-KIR4Has5.js → index-B5GZkByz.js} +1 -1
  144. package/dist/assets/{index-CdLhNxor.js → index-B69_nH5F.js} +1 -1
  145. package/dist/assets/{index-ClgrFOcX.js → index-BfqJPhFO.js} +7 -7
  146. package/dist/assets/{index-DkYeh000.js → index-BiH6f3Mk.js} +1 -1
  147. package/dist/assets/{index-CHOT9sYh.js → index-CFS_B4hc.js} +2 -2
  148. package/dist/assets/{index-CyLPQ8pY.js → index-DYoPv2Wb.js} +1 -1
  149. package/dist/assets/{index-4hL3-0yz.js → index-my7iu018.js} +1 -1
  150. package/dist/assets/{index-jS3rfNkZ.js → index-zXacXllH.js} +1 -1
  151. package/dist/assets/{inference-diagnostics-BmZ5ggEK.js → inference-diagnostics-NvA3SRR7.js} +1 -1
  152. package/dist/assets/{ingest-boot-viewport-CipkFljr.js → ingest-boot-viewport-DHhBi66w.js} +1 -1
  153. package/dist/assets/{ingest-siblings-CEwYp-xg.js → ingest-siblings-CMWO3uRZ.js} +1 -1
  154. package/dist/assets/{ingest-source-persistence-CVU1rTj0.js → ingest-source-persistence-CrXFBT__.js} +1 -1
  155. package/dist/assets/{ingest.service-bNqvcqoK.js → ingest.service-BYEo4j1s.js} +1 -1
  156. package/dist/assets/{inspect-BunjdqX7.js → inspect-UxYR9Ls5.js} +1 -1
  157. package/dist/assets/instances.command-DDOJ3aWq.js +1 -0
  158. package/dist/assets/{json-history-resource-CDEoQe1R.js → json-history-resource-De8KJl61.js} +1 -1
  159. package/dist/assets/{layered-pick-guh6WlA7.js → layered-pick-Dito5b_J.js} +1 -1
  160. package/dist/assets/{light-BPZivpCK.js → light-BnSS9Nzc.js} +1 -1
  161. package/dist/assets/{live-project-verbs-Bqmxbr2o.js → live-project-verbs-CDRzC_D1.js} +1 -1
  162. package/dist/assets/{machine.document-CAFPFq5K.js → machine.document-CVG78EGi.js} +1 -1
  163. package/dist/assets/{machines.finder-CbUWReMp.js → machines.finder-vrUR_Pb_.js} +1 -1
  164. package/dist/assets/{material-huG6lNEK.js → material-7mmxSi8g.js} +1 -1
  165. package/dist/assets/{material-factory-BkyOzJ7B.js → material-factory-CXvJ2goL.js} +1 -1
  166. package/dist/assets/{mesh-CjCfRcFK.js → mesh-DpK09Vho.js} +1 -1
  167. package/dist/assets/{model-asset-sections.service-Dt4V2K2v.js → model-asset-sections.service-ByE7kOXW.js} +1 -1
  168. package/dist/assets/{model-inspection-BDA5jikL.js → model-inspection-PgxfYOnI.js} +1 -1
  169. package/dist/assets/{model-thumbnail-CF3qGQWb.js → model-thumbnail-Dnv7DCt7.js} +1 -1
  170. package/dist/assets/{models.finder-yh4YeGrA.js → models.finder-BaD41xeQ.js} +1 -1
  171. package/dist/assets/{module-mode-D8en13PD.js → module-mode-Bb9fFtEw.js} +2 -2
  172. package/dist/assets/{mount-canvas-ingest-root-JOkm2Ypj.js → mount-canvas-ingest-root-B0_ckx79.js} +2 -2
  173. package/dist/assets/{mount-dom-ingest-root-CVXFnJZb.js → mount-dom-ingest-root-BnZQSayp.js} +2 -2
  174. package/dist/assets/{mount-ingest-root-C3o0o28C.js → mount-ingest-root-DHVNQKHi.js} +2 -2
  175. package/dist/assets/{mount-manifest-d7WQ9MYp.js → mount-manifest-cYykTsXQ.js} +1 -1
  176. package/dist/assets/{mount-three-ingest-root-Dqd4XWP1.js → mount-three-ingest-root-CI-gjlh8.js} +1 -1
  177. package/dist/assets/{mounted-authoring-B697dYuN.js → mounted-authoring-B2dc__pv.js} +1 -1
  178. package/dist/assets/{mounted-story-viewport-source-BvNZ3QQn.js → mounted-story-viewport-source-Ceh05FK8.js} +1 -1
  179. package/dist/assets/{native-debug-module-iX2-V5kg.js → native-debug-module-L_Ofssyj.js} +1 -1
  180. package/dist/assets/{navigation-CIl9OY1F.js → navigation-CADCnkrx.js} +1 -1
  181. package/dist/assets/{navmesh.menu-DrMoj7Ag.js → navmesh.menu-3D6ZEGhB.js} +1 -1
  182. package/dist/assets/{navmesh.service-CTr1NVfz.js → navmesh.service-D_TdU1xw.js} +1 -1
  183. package/dist/assets/network-observer.service-D9nUCc15.js +1 -0
  184. package/dist/assets/{network.utility-Btexm5ao.js → network.utility-B3riF8KT.js} +1 -1
  185. package/dist/assets/{object3d-document-session-registry-CADiW-LP.js → object3d-document-session-registry-CLizyhis.js} +2 -2
  186. package/dist/assets/{oid-transform-Ca1oU_Ei.js → oid-transform-CinlfHYa.js} +1 -1
  187. package/dist/assets/{particles-D1oPwNJh.js → particles--V50tPi5.js} +1 -1
  188. package/dist/assets/{pixi-authoring-adapter-B1BBfTju.js → pixi-authoring-adapter-qbP0YW7g.js} +1 -1
  189. package/dist/assets/{pixi-live-write-target-BcUhtqmJ.js → pixi-live-write-target-coTAFFGW.js} +1 -1
  190. package/dist/assets/{play.command-ScnwcvJr.js → play.command-kc7rzTlg.js} +2 -2
  191. package/dist/assets/{presentation-DPfnCjNA.js → presentation-jBjhcEq1.js} +1 -1
  192. package/dist/assets/{product-D_9saRiZ.js → product-DgYRVeaY.js} +1 -1
  193. package/dist/assets/{profiler.action-PXTw93E5.js → profiler.action-Dj94ZJLY.js} +1 -1
  194. package/dist/assets/{profiler.menu-DPFV6QQD.js → profiler.menu-BHplCv7a.js} +1 -1
  195. package/dist/assets/{profiler.utility-eDooJGnI.js → profiler.utility-D32oIOGk.js} +1 -1
  196. package/dist/assets/{project-authoring-session-BmeutotA.js → project-authoring-session-Cd8SeWEJ.js} +2 -2
  197. package/dist/assets/{properties-bone-constraints.inspector-BW0V1WXQ.js → properties-bone-constraints.inspector-VPTHP6BI.js} +1 -1
  198. package/dist/assets/{properties-bone.inspector-DIvTZhY8.js → properties-bone.inspector-4GD1gzCp.js} +1 -1
  199. package/dist/assets/{properties-collection.inspector-Dbt5XMhs.js → properties-collection.inspector-CehoAair.js} +1 -1
  200. package/dist/assets/{properties-constraints.inspector-5SvB0GDC.js → properties-constraints.inspector-LgPoqURT.js} +1 -1
  201. package/dist/assets/{properties-data.inspector-C-SngIsI.js → properties-data.inspector-D3uEJD3t.js} +1 -1
  202. package/dist/assets/{properties-material.inspector-CYAWsvsX.js → properties-material.inspector-2n9K5IFo.js} +1 -1
  203. package/dist/assets/{properties-modifiers.inspector-XN6BL-Ll.js → properties-modifiers.inspector-B_RsuDyF.js} +1 -1
  204. package/dist/assets/{properties-object.inspector-CfryU0kN.js → properties-object.inspector-CBZA72yZ.js} +1 -1
  205. package/dist/assets/{properties-output.inspector-COfgmFUW.js → properties-output.inspector-DxDAmKI-.js} +1 -1
  206. package/dist/assets/{properties-particles.inspector-BCh0vFr6.js → properties-particles.inspector-pPS920CT.js} +1 -1
  207. package/dist/assets/{properties-physics.inspector-B6to1u6U.js → properties-physics.inspector-XUnPp5Q3.js} +1 -1
  208. package/dist/assets/{properties-render.inspector-C4hVfo7j.js → properties-render.inspector-DnC4sgP3.js} +1 -1
  209. package/dist/assets/{properties-scene.inspector-dKta4xn5.js → properties-scene.inspector-MZ-gCrYM.js} +1 -1
  210. package/dist/assets/{properties-texture.inspector-ZlNhW25m.js → properties-texture.inspector-B7QGBzm5.js} +1 -1
  211. package/dist/assets/{properties-view-layer.inspector-CIxHmkDR.js → properties-view-layer.inspector-rt2qT9SA.js} +1 -1
  212. package/dist/assets/{properties-world.inspector-Ce0q2dmK.js → properties-world.inspector-Vg7GD9HK.js} +1 -1
  213. package/dist/assets/{r3f-design-session-1riISktt.js → r3f-design-session-DfRwB6oN.js} +2 -2
  214. package/dist/assets/{r3f-physics-binding-DuG97FR9.js → r3f-physics-binding-EfYECbQc.js} +1 -1
  215. package/dist/assets/{r3f-source-authoring-adapter-B8qqrdwk.js → r3f-source-authoring-adapter-CVupdJt5.js} +1 -1
  216. package/dist/assets/{react-canvas-navigation-CxBm8iw8.js → react-canvas-navigation-DwiPTVdH.js} +1 -1
  217. package/dist/assets/{react-inspector.service-BcdePwno.js → react-inspector.service-DffkStxd.js} +1 -1
  218. package/dist/assets/{react-story-board-CMvkLAkF.js → react-story-board-CynnmKqO.js} +1 -1
  219. package/dist/assets/{react-three-rapier.esm-D5svf-ME.js → react-three-rapier.esm-DnUfnQnM.js} +1 -1
  220. package/dist/assets/{react-world-authoring-adapter-Dq8NqvWu.js → react-world-authoring-adapter-Cf1jv2dl.js} +1 -1
  221. package/dist/assets/{realm-services-CqjVBanw.js → realm-services-CxfLBQQ9.js} +1 -1
  222. package/dist/assets/{reflection-probe-capture.inspector-uEvyppEj.js → reflection-probe-capture.inspector-DfzDNtJF.js} +1 -1
  223. package/dist/assets/{registry-D7lFIA8c.js → registry-69pUwZEm.js} +1 -1
  224. package/dist/assets/{relative-import-specifier-CA9mSNXO.js → relative-import-specifier-J1WeZQaJ.js} +1 -1
  225. package/dist/assets/{render-env-BHasp-z3.js → render-env-CmR-momj.js} +1 -1
  226. package/dist/assets/{render-features-sSb1-c5x.js → render-features-D7pQr-dE.js} +1 -1
  227. package/dist/assets/{render-settings-CUbo4Sw5.js → render-settings-BUT8gPkc.js} +1 -1
  228. package/dist/assets/{resolve-three-TQ367RQD.js → resolve-three-Dhw2LtAp.js} +3 -3
  229. package/dist/assets/{root-seam-contract-CneTgNww.js → root-seam-contract-BFs0rvG9.js} +1 -1
  230. package/dist/assets/{run-selection-CNsOQTEG.js → run-selection-CEuu_sxz.js} +1 -1
  231. package/dist/assets/{scene-capture-KbdRgsD3.js → scene-capture-DgUSqWTB.js} +1 -1
  232. package/dist/assets/{scene-document.service-CmPSUocW.js → scene-document.service-BDDoO22G.js} +2 -2
  233. package/dist/assets/{scene-framing-B5JC4NeG.js → scene-framing-Dm-rCn3G.js} +1 -1
  234. package/dist/assets/{seeded-random-B6zqGkWP.js → seeded-random-C9256-Ag.js} +1 -1
  235. package/dist/assets/{setup-renderer-efjIBSGF.js → setup-renderer-CWvtkVDR.js} +1 -1
  236. package/dist/assets/{source-object3d-authoring-adapter-DeeboYub.js → source-object3d-authoring-adapter-ehtz9UK_.js} +1 -1
  237. package/dist/assets/{source-persistence-backend-Cwy93SmQ.js → source-persistence-backend-CbCbDOjd.js} +1 -1
  238. package/dist/assets/{stage-keyboard-GNCaTXLA.js → stage-keyboard-DiRyZTZd.js} +1 -1
  239. package/dist/assets/{stage-overlay-set-DV3SCzJb.js → stage-overlay-set-6pmCmKpX.js} +1 -1
  240. package/dist/assets/{stage-presence-markers-CBEU1Kzo.js → stage-presence-markers-mZPecAeK.js} +1 -1
  241. package/dist/assets/{stage-transform-tools-C9nNDW6n.js → stage-transform-tools-Qc0QjPrc.js} +1 -1
  242. package/dist/assets/{standard-viewport-dressing-BJkGwiNT.js → standard-viewport-dressing-BhTPIZTQ.js} +1 -1
  243. package/dist/assets/{state-watch.action-Doz_jrzS.js → state-watch.action-DJfW26od.js} +1 -1
  244. package/dist/assets/{state-watch.menu-Dj4DUUxN.js → state-watch.menu-B1GRE_HT.js} +1 -1
  245. package/dist/assets/{state-watch.utility-COPa8xpV.js → state-watch.utility-BQaTOFU-.js} +1 -1
  246. package/dist/assets/{story-capture-stRSY4PQ.js → story-capture-DZNUtuCH.js} +1 -1
  247. package/dist/assets/{story-documents-CYzWYY1o.js → story-documents-DArOiGNt.js} +1 -1
  248. package/dist/assets/{story-documents.service-DJBu4rve.js → story-documents.service-Bi89tZQ5.js} +1 -1
  249. package/dist/assets/{story-documents.service-C5r8KFEG.js → story-documents.service-DaPhxnzw.js} +1 -1
  250. package/dist/assets/{story-media-presence-D4AIsAtK.js → story-media-presence-CMJ7U-7_.js} +1 -1
  251. package/dist/assets/{story-pixi-preview-mPo3OFOd.js → story-pixi-preview-jmF1ab99.js} +1 -1
  252. package/dist/assets/{story-presentation-Dw4Vw65P.js → story-presentation-DNXF37vS.js} +1 -1
  253. package/dist/assets/{story-three-preview-CWM0Rj7x.js → story-three-preview-CH6Kk934.js} +2 -2
  254. package/dist/assets/{studio-environment-Bw9zMFE8.js → studio-environment-BNM-AjAn.js} +1 -1
  255. package/dist/assets/{surface-state-b_H4iOCJ.js → surface-state-BLuxJ4lb.js} +1 -1
  256. package/dist/assets/{syntactic-prop-specs-BCdwWi-T.js → syntactic-prop-specs-Coas9J4z.js} +1 -1
  257. package/dist/assets/{team-playtest.service-CnxdTghn.js → team-playtest.service-C3cEeDBv.js} +1 -1
  258. package/dist/assets/{three-DWy0sZom.js → three-BvhtsSAr.js} +1 -1
  259. package/dist/assets/{three-authoring-adapter-9LcUBPaU.js → three-authoring-adapter-K8a5THvW.js} +1 -1
  260. package/dist/assets/three-authoring.service-D-uSiCHc.js +2 -0
  261. package/dist/assets/{three-ingest-runtime-x9nLmUl-.js → three-ingest-runtime-QhrURliQ.js} +1 -1
  262. package/dist/assets/{three-integration-DB-xQHD5.js → three-integration-CaC8ivB7.js} +2 -2
  263. package/dist/assets/three-integration.service-BvTtbtlD.js +1 -0
  264. package/dist/assets/{three-projection-core-IUovHgg_.js → three-projection-core-C2Zj6hTy.js} +1 -1
  265. package/dist/assets/{three-state-_ImCbP87.js → three-state-cYB28OIz.js} +1 -1
  266. package/dist/assets/{three-story-capture.service-wKwfSnqA.js → three-story-capture.service-H2Z2O7Nz.js} +2 -2
  267. package/dist/assets/{three-story-model-BxWKcl9d.js → three-story-model-DVfgIOzi.js} +1 -1
  268. package/dist/assets/{three-viewport-presentation-Bg86EsDJ.js → three-viewport-presentation-DoViPvQB.js} +1 -1
  269. package/dist/assets/{transform-mode-request-BnV8FSnx.js → transform-mode-request-CflM_ccL.js} +1 -1
  270. package/dist/assets/{transport-strip-BZQnaxFN.js → transport-strip-DPoEy7PU.js} +1 -1
  271. package/dist/assets/transport.header-DdI58npA.js +1 -0
  272. package/dist/assets/{tuples-DR33sMq6.js → tuples-CA3u4T9B.js} +1 -1
  273. package/dist/assets/{ui-board-document-VJMvm6Ks.js → ui-board-document-CoKY7MDM.js} +2 -2
  274. package/dist/assets/{user-data-DL6HsBPf.js → user-data-CTT8ZvVB.js} +1 -1
  275. package/dist/assets/{utility-view-state-ghWXsYXq.js → utility-view-state-BaO3Fx_-.js} +1 -1
  276. package/dist/assets/{viewport-door-BV_lf5uK.js → viewport-door-BBtilr3V.js} +1 -1
  277. package/dist/assets/{viewport-root-presentation-CKqhX3mt.js → viewport-root-presentation-DmDBAZ8E.js} +1 -1
  278. package/dist/assets/{viewport-surface-status-D7M2L2lI.js → viewport-surface-status-BiDiAZ6z.js} +1 -1
  279. package/dist/assets/{webworkerAll-DDbFvxgB.js → webworkerAll-BCvjBZqG.js} +1 -1
  280. package/dist/assets/{workspace-arrangement-86_8Kk5K.js → workspace-arrangement-BXM0R-Uu.js} +1 -1
  281. package/dist/assets/{world-documents-DeNJUefV.js → world-documents-DGk_J8cp.js} +1 -1
  282. package/dist/assets/{world-root-stage-binding-VOrldLB4.js → world-root-stage-binding-KaIVpo80.js} +1 -1
  283. package/dist/assets/{xstate-animation-binding-747CfEeB.js → xstate-animation-binding-D_kxRsxS.js} +1 -1
  284. package/dist/assets/{xstate-animation-meta-DNMlMnr-.js → xstate-animation-meta-CX5oWqQv.js} +1 -1
  285. package/dist-node/cli.js +16 -16
  286. package/package.json +16 -16
  287. package/dist/assets/InspectorObjectPreview-C87CasN_.js +0 -1
  288. package/dist/assets/Object3DDocumentViewport-BpiyRQ5p.js +0 -2
  289. package/dist/assets/autoplay.service-CKBqjozr.js +0 -1
  290. package/dist/assets/instances.command-DzcXdKuG.js +0 -1
  291. package/dist/assets/network-observer.service-DyzpGKA7.js +0 -1
  292. package/dist/assets/three-authoring.service-DdTMF4A2.js +0 -2
  293. package/dist/assets/three-integration.service-DwToRGIc.js +0 -1
  294. package/dist/assets/transport.header-1SF4ZbEd.js +0 -1
@@ -1 +1 @@
1
- import{g as re,a as oe}from"./board-guides-CCiyx8cT.js";import{eg as se,bj as ne,bi as ie,as as ae,eh as le,dL as P,d4 as D,dC as M,ax as I,dv as $,ei as C,ej as ce,ek as de,el as O,em as ue,bU as pe,Z as he,bV as ge}from"./index-ClgrFOcX.js";import{r as fe,c as ye}from"./relative-import-specifier-CA9mSNXO.js";import{s as be}from"./story-arg-descriptors-Ek86ExX7.js";import{b as me,a as Se,c as we,d as Re,e as E,f as ve,g as y,h as j,i as Ie,j as Ee}from"./inspect-BunjdqX7.js";import{n as W,p as Ae,t as ke}from"./writer-tw6EcuVO.js";const _={count:0},Te="data-oid";function xe(u){return{count:u.size}}function K(u){return u.tagName.toLowerCase()==="svg"}function Y(u,e){const t=new Map,r=[];e.begin?.();const o=(s,n,i)=>{const l=Array.from(s.children);l.forEach((d,c)=>{if(e.skip?.(d))return;const a=e.identify(d,{ownerId:n,ownedByAncestor:i,parent:s,siblingIndex:c,siblings:l});a!==null&&(t.set(a,{object:d,id:a,parentId:n,childIds:[]}),n===null?r.push(a):t.get(n)?.childIds.push(a));const p=a??n,g=i||a!==null;e.descend?.(d)!==!1&&o(d,p,g),e.leave?.(d,a)})};return o(u,null,!1),{nodes:t,rootIds:r,stats:xe(t)}}function Ze(){return{project:u=>{const e=new Map;return Y(u,{begin:()=>e.clear(),identify:(t,r)=>{const o=t.tagName.toLowerCase();let s=0;for(let c=0;c<r.siblingIndex;c++)r.siblings[c].tagName.toLowerCase()===o&&s++;const n=`${o}[${s}]`,i=r.ownerId?e.get(r.ownerId)??"":"",l=i?`${i}/${n}`:n,d=`rdom:${l}`;return e.set(d,l),d},descend:t=>!K(t)})}}}function q(){return{project:u=>{const e=new Map;return Y(u,{begin:()=>e.clear(),identify:t=>{const r=t.getAttribute(Te);if(!r)return null;const o=e.get(r)??0;return e.set(r,o+1),o===0?r:`${r}#${o}`},descend:t=>!K(t)})}}}function Pe(u){return q().project(u)}class $e{constructor(e){this.identity=e}nodesById=new Map;objectsById=new Map;idsByObjectIndex=new Map;roots=[];walkStats=_;project(e){if(!e)return this.nodesById=new Map,this.objectsById=new Map,this.idsByObjectIndex=new Map,this.roots=[],this.walkStats=_,this.walkStats;const{nodes:t,rootIds:r,stats:o}=this.identity.project(e);return this.nodesById=t,this.objectsById=new Map([...t].map(([s,n])=>[s,n.object])),this.idsByObjectIndex=new Map([...t].map(([s,n])=>[n.object,s])),this.roots=r,this.walkStats=o,o}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(e){return this.nodesById.get(e)??null}rootNodes(){return this.roots.map(e=>this.nodesById.get(e)).filter(e=>e!==void 0)}objectOf(e){return this.objectsById.get(e)??null}idOf(e){return this.idsByObjectIndex.get(e)??null}}const H=64;function S(u){const e=u?.replace(/\s+/g," ").trim();return e?e.length<=H?e:`${e.slice(0,H-1).trimEnd()}…`:null}function x(u,e){return u?u[e]:void 0}const Ce=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*[\d.]+\s*)?\)$/;function Oe(u){if(typeof u!="string"||u==="")return;if(u.startsWith("#"))return u;const e=Ce.exec(u);if(!e)return;const t=r=>Number.parseInt(r,10).toString(16).padStart(2,"0");return`#${t(e[1])}${t(e[2])}${t(e[3])}`}function Be(u,e){switch(u){case"width":case"height":case"marginTop":case"marginRight":case"marginBottom":case"marginLeft":case"paddingTop":case"paddingRight":case"paddingBottom":case"paddingLeft":return{prop:u,cssValue:t=>`${t}px`};case"x":return e?{prop:"left",cssValue:t=>`${t}px`}:null;case"y":return e?{prop:"top",cssValue:t=>`${t}px`}:null;case"rotate":return{prop:"transform",cssValue:t=>`rotate(${t}deg)`};default:return null}}const Ne="data-oid",Le="http://www.w3.org/1999/xhtml",De=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function F(u,e){const t=u.namespaceURI;return t!=null&&t!==Le?!1:!De.has(e)}function A(u){const e=u.replaceAll("\\","/").replace(/^\.\//,""),t=e.lastIndexOf("/src/");return t>=0?e.slice(t+1):e}function Me(u){return Q(Pe(u))}function Q(u){const e=new Map;for(const[t,r]of u.nodes)e.set(t,{id:t,oid:r.object.getAttribute(Ne)??t,tag:r.object.tagName.toLowerCase(),el:r.object,parentId:r.parentId,childIds:[...r.childIds]});return{nodes:e,rootIds:[...u.rootIds]}}const Z=[{prop:"display",label:"Display",type:"enum",group:"Layout",options:["block","flex","grid","inline","inline-block","inline-flex","none"]},{prop:"flexDirection",label:"Direction",type:"enum",group:"Layout",options:["row","column","row-reverse","column-reverse"]},{prop:"flexWrap",label:"Wrap",type:"enum",group:"Layout",options:["nowrap","wrap","wrap-reverse"]},{prop:"justifyContent",label:"Justify",type:"enum",group:"Layout",options:["flex-start","center","flex-end","space-between","space-around","space-evenly"]},{prop:"alignItems",label:"Align",type:"enum",group:"Layout",options:["stretch","flex-start","center","flex-end","baseline"]},{prop:"gap",label:"Gap",type:"number",group:"Layout"},{prop:"gridTemplateColumns",label:"Columns",type:"string",group:"Layout"},{prop:"gridTemplateRows",label:"Rows",type:"string",group:"Layout"},{prop:"gridAutoFlow",label:"Flow",type:"enum",group:"Layout",options:["row","column","row dense","column dense"]},{prop:"rowGap",label:"Row Gap",type:"number",group:"Layout"},{prop:"columnGap",label:"Col Gap",type:"number",group:"Layout"},{prop:"gridColumn",label:"Grid Col",type:"string",group:"Layout"},{prop:"gridRow",label:"Grid Row",type:"string",group:"Layout"},{prop:"justifySelf",label:"Justify Self",type:"enum",group:"Layout",options:["auto","start","center","end","stretch"]},{prop:"overflow",label:"Overflow",type:"enum",group:"Layout",options:["visible","hidden","scroll","auto"]},{prop:"width",label:"Width",type:"number",group:"Layout"},{prop:"height",label:"Height",type:"number",group:"Layout"},{prop:"minWidth",label:"Min W",type:"number",group:"Layout"},{prop:"minHeight",label:"Min H",type:"number",group:"Layout"},{prop:"maxWidth",label:"Max W",type:"number",group:"Layout"},{prop:"maxHeight",label:"Max H",type:"number",group:"Layout"},{prop:"position",label:"Position",type:"enum",group:"Position",options:["static","relative","absolute","fixed","sticky"]},{prop:"top",label:"Top",type:"number",group:"Position"},{prop:"right",label:"Right",type:"number",group:"Position"},{prop:"bottom",label:"Bottom",type:"number",group:"Position"},{prop:"left",label:"Left",type:"number",group:"Position"},{prop:"zIndex",label:"Z Index",type:"number",group:"Position"},{prop:"flexGrow",label:"Grow",type:"number",group:"Position"},{prop:"flexShrink",label:"Shrink",type:"number",group:"Position"},{prop:"flexBasis",label:"Basis",type:"string",group:"Position"},{prop:"alignSelf",label:"Self Align",type:"enum",group:"Position",options:["auto","stretch","flex-start","center","flex-end","baseline"]},{prop:"marginTop",label:"Margin T",type:"number",group:"Spacing"},{prop:"marginRight",label:"Margin R",type:"number",group:"Spacing"},{prop:"marginBottom",label:"Margin B",type:"number",group:"Spacing"},{prop:"marginLeft",label:"Margin L",type:"number",group:"Spacing"},{prop:"paddingTop",label:"Padding T",type:"number",group:"Spacing"},{prop:"paddingRight",label:"Padding R",type:"number",group:"Spacing"},{prop:"paddingBottom",label:"Padding B",type:"number",group:"Spacing"},{prop:"paddingLeft",label:"Padding L",type:"number",group:"Spacing"},{prop:"color",label:"Color",type:"color",group:"Type"},{prop:"fontSize",label:"Size",type:"number",group:"Type"},{prop:"fontWeight",label:"Weight",type:"string",group:"Type"},{prop:"lineHeight",label:"Line H",type:"string",group:"Type"},{prop:"letterSpacing",label:"Spacing",type:"string",group:"Type"},{prop:"textAlign",label:"Align",type:"enum",group:"Type",options:["left","center","right","justify"]},{prop:"textTransform",label:"Transform",type:"enum",group:"Type",options:["none","uppercase","lowercase","capitalize"]},{prop:"fontStyle",label:"Style",type:"enum",group:"Type",options:["normal","italic"]},{prop:"fontFamily",label:"Font",type:"string",group:"Type"},{prop:"textDecoration",label:"Decoration",type:"enum",group:"Type",options:["none","underline","line-through","overline"]},{prop:"backgroundColor",label:"Background",type:"color",group:"Fill"},{prop:"backgroundImage",label:"Fills",type:"string",group:"Fill"},{prop:"backgroundSize",label:"Size",type:"enum",group:"Fill",options:["auto","cover","contain"]},{prop:"backgroundPosition",label:"Pos",type:"string",group:"Fill"},{prop:"backgroundRepeat",label:"Repeat",type:"enum",group:"Fill",options:["repeat","no-repeat","repeat-x","repeat-y"]},{prop:"borderColor",label:"Border Color",type:"color",group:"Stroke"},{prop:"borderWidth",label:"Border Width",type:"number",group:"Stroke"},{prop:"borderStyle",label:"Border Style",type:"enum",group:"Stroke",options:["none","solid","dashed","dotted","double"]},{prop:"borderRadius",label:"Radius",type:"number",group:"Stroke"},{prop:"opacity",label:"Opacity",type:"number",group:"Effects"},{prop:"boxShadow",label:"Box Shadow",type:"string",group:"Effects"},{prop:"mixBlendMode",label:"Blend",type:"enum",group:"Effects",options:["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"]},{prop:"filter",label:"Filter",type:"string",group:"Effects"},{prop:"backdropFilter",label:"Backdrop",type:"string",group:"Effects"},{prop:"textShadow",label:"Text Shadow",type:"string",group:"Effects"},{prop:"cursor",label:"Cursor",type:"enum",group:"Effects",options:["auto","default","pointer","text","move","wait","help","crosshair","not-allowed","grab","grabbing","zoom-in","zoom-out","col-resize","row-resize","none"]},{prop:"transform",label:"Transform",type:"string",group:"Transform"}],f="style.",w="component source (JSX, via /__ui-source — writes are immediate; nothing pending to flush)",B="component source (JSX) — no source-write backend in this session",b="prop.",R="token.",k="story.arg.",G="text",je=30;let z=!1;const V=40,U="The source value is a dynamic expression, so replacing it with a literal is guarded.",ee={border:["borderWidth","borderStyle","borderColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],borderStyle:["borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"],margin:["marginTop","marginRight","marginBottom","marginLeft"],inset:["top","right","bottom","left"]},J=new Map(Object.entries(ee).flatMap(([u,e])=>e.map(t=>[t,u])));function We(u){const e=[];for(let t=J.get(u);t;t=J.get(t))e.unshift(t);return e}const T="portable-document",N="React Preview",_e=new Map(Z.map(({prop:u,type:e})=>[u,e])),He={borderTopLeftRadius:"borderRadius",borderTopRightRadius:"borderRadius",borderBottomLeftRadius:"borderRadius",borderBottomRightRadius:"borderRadius",borderTopWidth:"borderWidth",borderRightWidth:"borderWidth",borderBottomWidth:"borderWidth",borderLeftWidth:"borderWidth",borderTopStyle:"borderStyle",borderRightStyle:"borderStyle",borderBottomStyle:"borderStyle",borderLeftStyle:"borderStyle",borderTopColor:"borderColor",borderRightColor:"borderColor",borderBottomColor:"borderColor",borderLeftColor:"borderColor"},Fe=[{kind:"div",label:"Container"},{kind:"span",label:"Text"},{kind:"p",label:"Paragraph"},{kind:"button",label:"Button"},{kind:"a",label:"Link"},{kind:"img",label:"Image"},{kind:"ul",label:"List"},{kind:"li",label:"List Item"}],Ge=/\.(?:avif|gif|jpe?g|png|svg|webp)(?:[?#].*)?$/i;function ze(u,e){return e.type==="number"?String(Number(u)):e.type==="boolean"?u===!0||u==="true"?"true":"false":e.type==="vec3"&&Array.isArray(u)?`[${u.map(t=>Number(t)).join(", ")}]`:e.type==="json"?JSON.stringify(u):JSON.stringify(String(u))}const Ve={source:"source-code",label:"jsx",detail:"The JSX source is the document — edits write back to the component source file."};function X(u){const e=u;return(typeof e?.getAttribute=="function"?e.getAttribute("class")??"":"").split(/\s+/).filter(Boolean)}function Ue(u,e){const t=u.style;return typeof t?.getPropertyValue!="function"?!1:t.getPropertyValue(Ee(e))!==""}class et{constructor(e,t,r={}){this.root=e,this.store=t,this.assetRoot=r.assetRoot??e,this.provenance=r.provenance??Ve,this.writeBackend=se(r.writeBackend,t.projectHistory),this.computedStyle=r.computedStyle??me,this.matchedCssRules=r.matchedCssRules??(a=>Se(a));const o=()=>{const a=this.root,p=typeof Element<"u"&&a instanceof Element?a.querySelector("[data-volter-game-styles]")??a.closest?.("[data-volter-game-styles]")??a:typeof document<"u"?document.documentElement:null;return typeof getComputedStyle=="function"&&p instanceof Element?getComputedStyle(p):void 0};this.designTokens=r.designTokens??(()=>we(o())),this.designTokenValue=r.designTokens?a=>r.designTokens().find(p=>p.name===a)?.value:a=>o()?.getPropertyValue(a).trim()||void 0,this.portableStories=[...r.portableStories??[]];for(const a of this.portableStories)this.portableStoryArgs.set(a.id,{...a.args??{}});const s=r.portableDocuments??(this.portableStories.length>0?[{id:T,label:N,storyIds:this.portableStories.map(a=>a.id)}]:[]),n=new Set(this.portableStories.map(a=>a.id)),i=new Set,l=new Set,d=s.flatMap(a=>{if(l.has(a.id))return[];l.add(a.id);const p=a.storyIds.filter(g=>!n.has(g)||i.has(g)?!1:(i.add(g),!0));return p.length===0?[]:[{id:a.id,label:a.label??(a.path?ne(ie({modulePath:a.path,title:a.title})):N),...a.path?{path:a.path}:{},storyIds:p}]}),c=this.portableStories.map(a=>a.id).filter(a=>!i.has(a));c.length>0&&d.push({id:l.has(T)?`${T}:unassigned`:T,label:N,storyIds:c}),this.portableDocuments=d,this.portableHierarchy=r.portableHierarchy??null,this.portableDefaultStoryId=this.portableStories.some(a=>a.id===r.activePortableStoryId)?r.activePortableStoryId??null:this.portableStories[0]?.id??null,this.onPortableStoryApplied=r.onPortableStoryApplied,this.onPortableStoryArgsChanged=r.onPortableStoryArgsChanged,this.activeStoryId=this.portableDefaultStoryId,this.capabilities={transform:!1,inspectorFields:!0,persist:!0};{const a=ae(()=>this.reconcileEchoAfterReload());this.disposeReloadSignal=a}this.writeBackend?.index&&this.writeBackend.index().then(a=>{this.oidIndex=new Map(Object.entries(a)),this.store.notifyIngestEdit()}).catch(()=>{})}capabilities;provenance;writeBackend;projector=new $e(q());hierarchySnapshotCache=null;hierarchySnapshotClearQueued=!1;computedStyle;matchedCssRules;designTokens;designTokenValue;oidIndex=new Map;dirty=!1;valueEcho=new Map;guardedPaths=new Map;lockedIds=new Set;assetRoot;pendingSourceReconcile=0;lastResolvedSelection=[];selectionRepairWatching=!1;disposeReloadSignal;portableStories;portableStoryArgs=new Map;portableDocuments;portableHierarchy;portableDefaultStoryId;onPortableStoryApplied;onPortableStoryArgsChanged;activeStoryId=null;boxEditSession=null;boxEditTail=Promise.resolve();snapshot(){return this.projector.project(this.root),Q({nodes:this.projector.nodes,rootIds:[...this.projector.rootIds]})}hierarchySnapshot(){return this.hierarchySnapshotCache??=this.snapshot(),this.hierarchySnapshotClearQueued||(this.hierarchySnapshotClearQueued=!0,queueMicrotask(()=>{this.hierarchySnapshotCache=null,this.hierarchySnapshotClearQueued=!1})),this.hierarchySnapshotCache}async refreshOidIndex(){const e=await this.writeBackend?.index?.();e&&(this.oidIndex=new Map(Object.entries(e)),this.store.notifyIngestEdit())}setEcho(e,t,r){let o=this.valueEcho.get(e);o||(o=new Map,this.valueEcho.set(e,o)),o.set(t,r)}clearEcho(e,t){const r=this.valueEcho.get(e);r&&(r.delete(t),r.size===0&&this.valueEcho.delete(e))}markGuarded(e,t,r){this.guardedPaths.set(`${e}|${t}`,r)}readEcho(e,t){const r=this.valueEcho.get(e);return r?.has(t)?{hit:!0,value:r.get(t)}:{hit:!1,value:void 0}}reconcileEchoAfterReload(){this.scheduleSelectionRepair(),!(this.valueEcho.size===0&&this.pendingSourceReconcile===0)&&(this.valueEcho.clear(),this.pendingSourceReconcile>0&&this.pendingSourceReconcile--,this.store.notifyIngestEdit())}scheduleSelectionRepair(){if(this.selectionRepairWatching||this.lastResolvedSelection.length===0)return;this.selectionRepairWatching=!0;let e=0,t=!1;const r=()=>{if(e++,t=this.repairSelectionAfterReprojection(t)||t,e>=je){this.selectionRepairWatching=!1;return}setTimeout(r,V)};setTimeout(r,V)}repairSelectionAfterReprojection(e){const t=this.lastResolvedSelection;if(t.length===0||this.store.selectedEntityIds.size>0)return!1;const r=this.snapshot(),o=t.filter(s=>r.nodes.has(s));return o.length===0?(e||console.warn(`[ReactRootAuthoringAdapter] the re-projection dropped the selection (${t.join(", ")}) and none of those ids resolve in the remounted tree, so it cannot be restored. An inspector write issued now has no subject — re-select.`),this.lastResolvedSelection=[],!0):(!e&&!z&&(z=!0,console.warn(`[ReactRootAuthoringAdapter] OPEN DEFECT, repaired: an HMR re-projection drops this root's selection, and the editor is putting it back — restoring ${o.length} of ${t.length} id(s) that still resolve in the remounted tree (${o.join(", ")}). A write issued in that window has no subject. Named once per session; the repair runs on every re-projection.`)),this.store.selectMultiple([...o]),!0)}disposeReactRootAdapter(){this.disposeReloadSignal?.()}componentName(e){return this.oidIndex.get(e.oid)?.component??Re(e.el)??null}elementLabel(e,t){const r=S(e.el.getAttribute("data-volter-name"));if(r)return r;const o=e.el.getAttribute("aria-labelledby");if(o){const l=o.split(/\s+/).map(c=>Array.from(t.nodes.values()).find(a=>a.el.getAttribute("id")===c)).map(c=>S(c?.el.textContent)).filter(c=>c!==null),d=S(l.join(" "));if(d)return d}const s=S(e.el.getAttribute("aria-label"));if(s)return s;if(["section","article","aside","nav","main","header","footer"].includes(e.tag)){const l=e.childIds.map(c=>t.nodes.get(c)).find(c=>c!==void 0&&/^h[1-6]$/.test(c.tag)),d=S(l?.el.textContent);if(d)return d}if(/^(h[1-6]|p|span|label|button|a|time|output|dt|dd|li|legend|caption|summary)$/.test(e.tag)){const l=S(e.el.textContent);if(l)return l}for(const l of["alt","title","placeholder","name"]){const d=S(e.el.getAttribute(l));if(d)return d}const n=e.el.getAttribute("id");if(n)return`#${n}`;const i=(e.el.getAttribute("class")??"").split(/\s+/).filter(Boolean)[0];return i?`${e.tag}.${i}`:e.tag}toEditorNode(e,t=this.snapshot()){const r=this.componentName(e),o=e.parentId?t.nodes.get(e.parentId):null,s=o?this.componentName(o):null,n=r!==null&&r!==s,i=e.el.getAttribute("data-volter-hierarchy-id"),l=e.el.getAttribute("data-volter-hierarchy-parent-id"),d=e.el.getAttribute("data-volter-hierarchy-order"),c=e.el.getAttribute("data-volter-hierarchy-group-label"),a=d===null?void 0:Number(d),p={id:e.id,label:n?r:this.elementLabel(e,t),...n?{secondaryLabel:`<${e.tag}>`}:{},role:n?"component":"element",kind:e.tag,parentId:e.parentId,childIds:e.childIds,...i===null?{}:{crossSurfaceId:i},...l===null?{}:{crossSurfaceParentId:l},...a===void 0||!Number.isInteger(a)?{}:{crossSurfaceOrder:a},...c===null?{}:{crossSurfaceGroupLabel:c}};return this.portableStories.length>0&&p.parentId===null?{...p,parentId:this.activeStoryId}:p}crossSurfaceStructureSignature(){const e=this.hierarchySnapshot(),t=new Set;for(const r of e.nodes.values())(r.el.getAttribute("data-volter-hierarchy-id")!==null||r.el.getAttribute("data-volter-hierarchy-parent-id")!==null||r.el.getAttribute("data-volter-hierarchy-order")!==null||r.el.getAttribute("data-volter-hierarchy-group-label")!==null)&&t.add(r.id);return t.size===0?null:JSON.stringify([...e.nodes.values()].flatMap(r=>{if(!t.has(r.id))return[];let o=r.parentId;for(;o!==null&&!t.has(o);)o=e.nodes.get(o)?.parentId??null;return[[r.id,o,r.el.getAttribute("data-volter-hierarchy-id"),r.el.getAttribute("data-volter-hierarchy-parent-id"),r.el.getAttribute("data-volter-hierarchy-order"),r.el.getAttribute("data-volter-hierarchy-group-label")]]}))}portableDocumentNode(e){return{id:e.id,label:e.label,...e.path?{secondaryLabel:e.path}:{},role:"document",kind:"tsx",parentId:null,childIds:[...e.storyIds]}}portableDocumentForStory(e){return this.portableDocuments.find(t=>t.storyIds.includes(e))??null}portableHierarchyNode(e){return this.portableHierarchy?.nodes.find(t=>t.id===e)??null}portableStoriesForNode(e){if(e===le)return[...this.portableStories];if(!this.portableHierarchy)return[...this.portableStories];const t=this.portableHierarchyNode(e);if(t&&t.role!=="component")return[];const r=t?.role==="component"?t.id:this.portableHierarchy.storyParentIds.get(e)??this.portableHierarchy.storyParentIds.get(this.activeStoryId??"");if(!r)return[];const o=this.portableHierarchyNode(r),s=new Set(o?.childIds??[]);return this.portableStories.filter(n=>s.has(n.id))}portableStoryNode(e,t){const r=e.id===this.activeStoryId;return{id:e.id,label:e.label,role:"story",kind:"story",parentId:this.portableHierarchy?.storyParentIds.get(e.id)??this.portableDocumentForStory(e.id)?.id??T,childIds:r?t:[]}}hierarchy={crossSurfaceStructureSignature:()=>this.crossSurfaceStructureSignature(),roots:()=>{const e=this.hierarchySnapshot(),{nodes:t,rootIds:r}=e;return this.portableStories.length>0?this.portableHierarchy?this.portableHierarchy.rootIds.flatMap(o=>{const s=this.portableHierarchy?.nodes.find(n=>n.id===o);return s?[{...s,childIds:[...s.childIds]}]:[]}):this.portableDocuments.map(o=>this.portableDocumentNode(o)):r.map(o=>this.toEditorNode(t.get(o),e))},node:e=>{if(this.portableStories.length>0){const o=this.portableHierarchy?.nodes.find(i=>i.id===e);if(o)return{...o,childIds:[...o.childIds]};const s=this.portableDocuments.find(i=>i.id===e);if(s)return this.portableDocumentNode(s);const n=this.portableStories.find(i=>i.id===e);if(n)return this.portableStoryNode(n,this.hierarchySnapshot().rootIds)}const t=this.hierarchySnapshot(),r=t.nodes.get(e);return r?this.toEditorNode(r,t):null}};selection={get:()=>{const e=[...this.store.selectedEntityIds];return e.length>0&&(this.lastResolvedSelection=e),e},set:e=>this.store.selectMultiple(e),resolve:(e,t)=>{const r=this.hierarchy.node(e);if(!r)return null;const o=[];let s=r,n=0;for(;s&&n++<1e3;)(s.role==="component"||s.role==="instance"||s.role==="boundary")&&o.push(s),s=s.parentId?this.hierarchy.node(s.parentId):null;const i=o.reverse();if(i.length===0)return{id:e};const l=t?.scopeId?i.findIndex(a=>a.id===t.scopeId):-1;let d=l>=0?l+1:0;return t?.intent==="deep"&&(d+=1),{id:(i[d]??r).id}}};truth={resolve:e=>{const t=this.snapshot().nodes.get(e);if(!t)return{site:{anchored:!1,reason:"This row is a design document, not a JSX element."},writeAnchorKind:void 0};const r=this.oidIndex.get(t.oid),o=this.writeBackend?"source-prop":"live-only";if(!r)return{site:{anchored:!1,reason:"Source metadata is still loading or unavailable."},writeAnchorKind:o};const s=A(r.file);return{site:{anchored:!0,kind:"source",file:s,line:r.line,col:r.col,display:`${s}:${r.line}`},writeAnchorKind:o}}};related={links:e=>this.hierarchy.node(e)?.role!=="component"||this.stories.storiesFor(e).length===0?[]:[{id:`definition:${P}`,title:"Open in UI Components",open:()=>{D(P)}}]};instanceSource(e){const t=this.snapshot().nodes.get(e);if(!t||this.hierarchy.node(e)?.role!=="component")return null;const r=E(t.el);if(!r)return null;const o=this.oidIndex.get(r.callSiteOid);return!o||!/^[A-Z]/.test(o.tag)?null:{node:t,callSiteOid:r.callSiteOid,callSite:o,props:r.props}}instanceProp(e,t){if(!t.startsWith(b))return null;const r=this.instanceSource(e);if(!r)return null;const o=t.slice(b.length),s=r.callSite.props?.find(i=>i.name===o),n=r.callSite.authoredProps?.find(i=>i.name===o);return s&&n?{source:r,prop:o,spec:s,authored:n}:null}affectedInstances(e,t){const r=this.instanceSource(e);if(!r)return 0;let o=0;for(const s of this.snapshot().nodes.values()){const n=E(s.el);if(!n)continue;const i=this.oidIndex.get(n.callSiteOid);!i||i.tag!==r.callSite.tag||(s.id===e||!i.authoredProps?.some(l=>l.name===t))&&o++}return Math.max(1,o)}instances={openComponent:()=>{D(P)},describe:e=>{const t=this.instanceSource(e);if(!t||this.stories.storiesFor(e).length===0)return null;const r=Object.entries(t.props).flatMap(([o,s])=>{const n=`${b}${o}`,i=this.instanceProp(e,n);if(!i)return[];const l=i.authored.literal&&i.spec.defaultValue!==void 0&&t.node.oid!==t.callSiteOid&&!!this.writeBackend?.runGesture&&!!this.writeBackend.writeComponentDefault&&!!this.writeBackend.removeProp;return[{path:n,label:o,value:s,...i.spec.defaultText===void 0?{}:{defaultText:i.spec.defaultText},canApplyToComponent:l,affectedInstanceCount:this.affectedInstances(e,o),...l?{}:{applyUnavailableReason:i.authored.literal?i.spec.defaultValue===void 0?"The component default is computed or absent, so source cannot be changed safely.":"This session cannot atomically update the component and its callsite.":"The callsite value is a dynamic expression, so it cannot become a component literal."}}]});return{componentName:t.callSite.tag,sourcePath:A(t.callSite.file),overrides:r}},revert:async(e,t)=>{const r=this.instanceSource(e),o=this.writeBackend;if(!r||!o?.removeProp)return;const s=t.map(l=>this.instanceProp(e,l)?.prop).filter(l=>!!l);let n=!1;const i=async l=>{for(const d of s){const c=await l.removeProp?.(r.callSiteOid,d);n||=c?.changed===!0}};if(s.length>1&&o.runGesture?await o.runGesture(`Revert ${s.length} Overrides`,i):await i(o),!!n)return this.dirty=!0,this.pendingSourceReconcile++,await this.refreshOidIndex(),{destination:w,persisted:!0}},applyToComponent:async(e,t)=>{const r=this.instanceProp(e,t),o=this.writeBackend;if(!r||!r.authored.literal||r.spec.defaultValue===void 0||r.source.node.oid===r.source.callSiteOid||!o?.runGesture||!o.writeComponentDefault||!o.removeProp)return{changed:!1,message:"Apply was refused because both literal source writes are not available."};const s=r.source.props[r.prop];return await o.runGesture(`Apply ${r.prop} to ${r.source.callSite.tag}`,async n=>{const i=await n.writeComponentDefault?.(r.source.node.oid,r.prop,ze(s,r.spec));if(!i?.changed)throw new Error(i?.error??"The component default did not change.");const l=await n.removeProp?.(r.source.callSiteOid,r.prop);if(!l?.changed)throw new Error(l?.error??"The callsite override was not removed.")}),this.dirty=!0,this.pendingSourceReconcile++,await this.refreshOidIndex(),{changed:!0,message:`${r.prop} now defaults to ${String(s)} in ${r.source.callSite.tag}.`,write:{destination:w,persisted:!0}}}};pickable={pick:(e,t)=>{const{nodes:r}=this.snapshot();let o=null,s=Number.POSITIVE_INFINITY,n=-1,i=-1;for(const l of r.values()){if(i++,this.lockedIds.has(l.id)||x(l.el.style,"pointerEvents")==="none")continue;const d=l.el.getBoundingClientRect?.();if(!d||e<d.left||e>d.right||t<d.top||t>d.bottom)continue;const c=d.width*d.height;(c<s||c===s&&i>n)&&(o=l.id,s=c,n=i)}return o}};hostRect(){const e=this.root.getBoundingClientRect?.();return{left:e?.left??0,top:e?.top??0}}toHostRelative(e){const t=this.hostRect(),r=M().zoom;return{x:(e.left-t.left)/r,y:(e.top-t.top)/r,width:e.width/r,height:e.height/r}}rects={rect:e=>{const r=this.snapshot().nodes.get(e)?.el.getBoundingClientRect?.();return r?this.toHostRelative(r):null},contextRects:e=>{const{nodes:t}=this.snapshot(),r=t.get(e);if(!r)return{};const o=r.parentId?t.get(r.parentId):void 0,s=o?.el.getBoundingClientRect?.(),i=(o?o.childIds:this.snapshot().rootIds).filter(h=>h!==e).map(h=>t.get(h)?.el.getBoundingClientRect?.()).filter(h=>h!=null).map(h=>this.toHostRelative(h)),l=r.el,d=l.getBoundingClientRect?.();let c;if(d){const h=I(y(l,"borderTopWidth",this.computedStyle))??0,v=I(y(l,"borderRightWidth",this.computedStyle))??0,te=I(y(l,"borderBottomWidth",this.computedStyle))??0,L=I(y(l,"borderLeftWidth",this.computedStyle))??0;c=this.toHostRelative({left:d.left+L,top:d.top+h,width:Math.max(0,d.width-L-v),height:Math.max(0,d.height-h-te)})}const a=re(),p=this.hostRect(),g=M().zoom,m=a.x.length>0||a.y.length>0?{x:a.x.map(h=>(h-p.left)/g),y:a.y.map(h=>(h-p.top)/g)}:void 0;return{...s?{parent:this.toHostRelative(s)}:{},...i.length?{siblings:i}:{},...c?{paddingBox:c}:{},...m?{guideEdges:m}:{}}},emptyContainers:()=>{const{nodes:e}=this.snapshot(),t=[];for(const r of e.values()){const o=r.el.getBoundingClientRect?.();!o||!F(r.el,r.tag)||t.push({oid:r.id,rect:this.toHostRelative(o),displayName:r.tag,hasVisibleChildren:r.el.children.length>0,hasText:(r.el.textContent??"").trim().length>0})}return ve(t).map(r=>({id:r.oid,rect:r.rect,displayName:r.displayName}))}};colorSample={backgroundChainAt:(e,t)=>{const r=this.pickable.pick(e,t);if(!r)return null;const{nodes:o}=this.snapshot(),s=[];let n=o.get(r);for(;n;)s.push(y(n.el,"backgroundColor",this.computedStyle)),n=n.parentId?o.get(n.parentId):void 0;return s}};boxEdit={begin:e=>{this.boxEditSession={id:e,touched:new Map,priorInline:new Map}},apply:(e,t)=>{const r=this.boxEditSession;if(!r||r.id!==e)return;const o=this.snapshot().nodes.get(e);if(!o)return;const s=y(o.el,"position",this.computedStyle),n=s==="absolute"||s==="fixed";for(const[i,l]of Object.entries(t)){const d=Be(i,n);if(!d){console.warn(`[ReactRootAuthoringAdapter] boxEdit: dropping patch key "${i}" for "${e}" — `+(i==="x"||i==="y"?`node is not absolutely/fixed positioned (computed position: "${s}"), no left/top to move`:"unrecognized box-edit patch key")),(i==="x"||i==="y")&&!r.hinted&&(r.hinted=!0,$(`${o.tag} flows in its layout (position: ${s}), so a drag cannot move it. Set Position to "abs" in the Inspector to place it freely; drag a handle to resize.`));continue}if(!r.priorInline.has(d.prop)){const p=x(o.el.style,d.prop);r.priorInline.set(d.prop,p==null?"":String(p))}let c=l;if((i==="x"||i==="y")&&typeof l=="number"){const p=o.el,g=p.getBoundingClientRect?.();if(g&&typeof p.offsetLeft=="number"&&typeof p.offsetTop=="number"){const m=this.toHostRelative(g),h=i==="x"?m.x-p.offsetLeft:m.y-p.offsetTop;c=Math.round(l-h)}}const a=d.cssValue(c);o.el.style&&(o.el.style[d.prop]=a),r.touched.set(d.prop,d.prop==="transform"?a:c)}},end:e=>{const t=this.boxEditSession;this.boxEditSession=null,!(!t||t.id!==e||t.touched.size===0)&&(this.boxEditTail=this.boxEditTail.then(()=>this.commitBoxEdit(e,t.touched,t.priorInline),()=>this.commitBoxEdit(e,t.touched,t.priorInline)),this.boxEditTail.catch(r=>{console.error("[ReactRootAuthoringAdapter] box edit failed and was not committed.",r)}))}};async commitBoxEdit(e,t,r){const o=this.dirty;for(const[i,l]of t)this.setEcho(e,`${f}${i}`,l);let s=0;this.lastStyleWriteRefusal=null;const n=async i=>{for(const[l,d]of t){const c=typeof d=="number"?`${d}px`:d;await this.writeStyleEntry(e,l,c,r.get(l),i)&&(s+=1)}if(s===0&&t.size>0){const l=this.lastStyleWriteRefusal??"the write was refused without a reason";he.error(`The last edit on this element was NOT saved — ${l}`,"authoring"),$("Not saved: the edit could not be written to source — see the Console.")}};try{this.writeBackend?.runGesture?await this.writeBackend.runGesture(`Edit ${t.size} Styles`,n):await n(this.writeBackend)}catch(i){const l=this.snapshot().nodes.get(e);for(const[d,c]of r)this.clearEcho(e,`${f}${d}`),l?.el.style&&(l.el.style[d]=c);throw this.dirty=o,this.store.notifyIngestEdit(),i}}text={get:e=>{if(this.guardedPaths.has(`${e}|${G}`))return null;const t=this.snapshot().nodes.get(e);if(!t||t.el.children.length>0)return null;const r=t.el.textContent;if(r==null)return null;const o=r.trim();return o||null},set:(e,t)=>{this.editText(e,t)}};inspector={properties:e=>{const t=this.portableHierarchyNode(e);if(t)return t.secondaryLabel?[{path:"document.path",label:"Source",type:"string",readonly:!0,group:"Document"}]:[];const r=this.portableDocuments.find(n=>n.id===e);if(r)return r.path?[{path:"document.path",label:"Source",type:"string",readonly:!0,group:"Document"}]:[];if(this.portableStories.some(n=>n.id===e))return this.portableStoryArgDescriptors(e);const s=[...Z.map(({prop:n,label:i,type:l,group:d,options:c})=>({path:`${f}${n}`,label:i,type:l,group:d,...c?{options:c}:{}})),...this.propDescriptors(e),...this.tokenDescriptors()];return this.guardedPaths.size===0?s:s.map(n=>{const i=this.guardedPaths.get(`${e}|${n.path}`);return i?{...n,readonly:!0,readonlyReason:i}:n})},get:(e,t)=>{const r=this.portableHierarchyNode(e);if(r)return t==="document.path"?r.secondaryLabel:void 0;const o=this.portableDocuments.find(a=>a.id===e);if(o)return t==="document.path"?o.path:void 0;if(this.portableStories.some(a=>a.id===e))return t==="story.active"?e===this.activeStoryId:t.startsWith(k)?this.portableStoryArgs.get(e)?.[t.slice(k.length)]:void 0;const s=this.readEcho(e,t);if(s.hit)return s.value;if(t==="locked")return this.lockedIds.has(e);if(t==="visible"){const a=this.readEcho(e,`${f}visibility`);if(a.hit)return a.value!=="hidden";const p=this.snapshot().nodes.get(e);return p?y(p.el,"visibility",this.computedStyle)!=="hidden":void 0}if(t.startsWith(R)){const a=t.slice(R.length);return this.designTokenValue(a)}if(t.startsWith(b)){const a=this.snapshot().nodes.get(e);return(a?E(a.el):null)?.props[t.slice(b.length)]}if(!t.startsWith(f))return;const n=t.slice(f.length),i=this.snapshot().nodes.get(e);if(!i)return;const l=x(i.el.style,n),d=typeof l=="string"&&l!==""?l:typeof l=="number"?String(l):y(i.el,n,this.computedStyle),c=_e.get(n);return c==="number"?I(d):c==="color"?Oe(d):d||void 0},set:(e,t,r)=>{if(this.portableHierarchyNode(e)||this.portableDocuments.some(s=>s.id===e))return;if(this.portableStories.some(s=>s.id===e)){if(!t.startsWith(k))return;const s=t.slice(k.length),n=this.portableStoryArgs.get(e);if(!n||!(s in n))return;const i={...n,[s]:r};this.portableStoryArgs.set(e,i),this.onPortableStoryArgsChanged?.(e,{...i}),this.store.notifyIngestEdit();return}if(t==="locked"){r?this.lockedIds.add(e):this.lockedIds.delete(e),this.store.notifyIngestEdit();return}if(t==="visible"){const s=r?"visible":"hidden";return this.setEcho(e,`${f}visibility`,s),this.pipedSourceWrite(()=>this.writeStyle(e,"visibility",s))}if(t.startsWith(b))return this.setEcho(e,t,r),this.pipedSourceWrite(()=>this.writePropEdit(e,t.slice(b.length),String(r)));if(t.startsWith(R))return this.setEcho(e,t,r),this.pipedSourceWrite(()=>this.writeTokenValue(e,t.slice(R.length),String(r)));if(!t.startsWith(f))return;const o=t.slice(f.length);return this.setEcho(e,t,r),this.pipedSourceWrite(()=>this.writeStyle(e,o,r))},remove:(e,t)=>{if(!t.startsWith(f))return;const r=t.slice(f.length),o=He[r];return o?this.setEcho(e,t,this.inspector.get(e,`${f}${o}`)):this.clearEcho(e,t),this.pipedSourceWrite(()=>this.removeStyleProp(e,r))}};assetSubject={get:e=>this.assetSubjectForNode(this.snapshot(),e),entries:()=>{const e=Me(this.assetRoot);return[...e.nodes.keys()].flatMap(t=>{const r=this.assetSubjectForNode(e,t);return r?[{id:t,subject:r}]:[]})}};assetSubjectForNode(e,t){const r=e.nodes.get(t);if(!r||r.tag!=="svg"||!r.el.outerHTML)return null;const o=this.oidIndex.get(r.oid);return{kind:"image",name:this.componentName(r)??this.elementLabel(r,e),mediaType:"image/svg+xml",text:r.el.outerHTML,...o?.file?{sourcePath:A(o.file)}:{}}}portableStoryArgDescriptors(e){return be(this.portableStoryArgs.get(e)??{},k)}portableArgs(e){const t=this.portableStoryArgs.get(e);return t?{...t}:null}elementClasses(e){const r=this.snapshot().nodes.get(e)?.el;if(!r||typeof r.getAttribute!="function")return[];const o=(r.getAttribute("class")??"").split(/\s+/).filter(Boolean),s=(typeof r.closest=="function"?r.closest("[data-volter-game-styles]"):null)??r.ownerDocument;return o.map(n=>{let i=0;try{i=s?.querySelectorAll?.(`.${CSS.escape(n)}`).length??0}catch{}return{name:n,count:i,styledIn:j(n)?.sourceFile??null}})}async writeNamedStyle(e,t){const r=this.snapshot().nodes.get(e);if(!r)return{changed:!1,error:`"${e}" no longer resolves in this root`};const o=c=>(console.warn(`[ReactRootAuthoringAdapter] named-style ${t.kind} refused: ${c}`),{changed:!1,error:c});if(t.kind==="remove"){const c=await C({op:"remove",oid:r.oid,className:t.className});return c.changed?(this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0}):o(c.error??"no change")}if(j(t.className)){const c=await C({op:"apply",oid:r.oid,className:t.className});return c.changed?(this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0}):o(c.error??"the element already wears this class")}const n=c=>c!==void 0&&!c.includes("/packages/editor/")&&!c.includes("/node_modules/")&&!c.includes("/vendor/"),i=this.matchedCssRules(r.el).filter(c=>n(c.sourceFile)),l=i[i.length-1]?.sourceFile??Ie().find(n),d=await C({op:"create",oid:r.oid,className:t.className,...l!==void 0?{file:l}:{}});return d.changed?(this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0,created:!0}):o(d.error??"no change")}async writeStory(e,t){const r=this.portableStories.find(n=>n.id===e);if(!r)return{changed:!1,error:`unknown portable story '${e}'`};if(!r.name||!r.modulePath)return{changed:!1,error:`story '${r.label}' carries no source address (name/modulePath) — it is not writable from this session`};const o=t.kind==="save-as"?{op:"save",file:r.modulePath,name:t.name,args:this.portableStoryArgs.get(e)??{}}:t.kind==="rename"?{op:"rename",file:r.modulePath,name:r.name,newName:t.newName}:{op:"delete",file:r.modulePath,name:r.name},s=await ce(o);if(!s.changed)return console.warn(`[ReactRootAuthoringAdapter] csf-story ${t.kind} refused for '${r.label}': ${s.error??"no change"}`),{changed:!1,...s.error!==void 0?{error:s.error}:{}};if(t.kind==="rename")r.name=t.newName,r.label=t.newName.replace(/([a-z])([A-Z])/g,"$1 $2");else if(t.kind==="delete"){const n=this.portableStories.indexOf(r);n>=0&&this.portableStories.splice(n,1),this.activeStoryId===e&&(this.activeStoryId=null)}return this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0}}resetPortableArgs(e){const t=this.portableStories.find(o=>o.id===e);if(!t)return;const r={...t.args??{}};this.portableStoryArgs.set(e,r),this.onPortableStoryArgsChanged?.(e,{...r}),this.store.notifyIngestEdit()}propDescriptors(e){const t=this.snapshot().nodes.get(e),r=t?E(t.el):null;return r?Object.keys(r.props).map(o=>({path:`${b}${o}`,label:o,type:"string",group:"Props"})):[]}tokenDescriptors(){return this.designTokens().map(e=>({path:`${R}${e.name}`,label:e.name,type:"string",group:"Tokens",readonly:!e.declaredIn}))}async writeTokenValue(e,t,r){const o=`${R}${t}`,s=this.designTokens().find(l=>l.name===t);if(!s)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] unknown design token "${t}".`),!1;if(!s.declaredIn)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] token "${t}" has no stylesheet declaration to edit — it is set by script (a theme data module mirroring itself onto :root, or host style). Edit that source; it is plain data.`),!1;const n=this.writeBackend;if(!n?.writeCss)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] cannot write token "${t}": no css-capable source-write backend in this session (hosted/no dev server).`),!1;const i=await n.writeCss(s.declaredIn.sourceFile,s.declaredIn.selector,t,r);return i.changed?(this.dirty=!0,this.store.notifyIngestEdit(),!0):(this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] token write refused/no-op for "${t}" at ${s.declaredIn.sourceFile} (${s.declaredIn.selector}): ${i.error??"no change"}`),!1)}stories={storiesFor:e=>this.portableStories.length>0?this.portableStoriesForNode(e):[],active:e=>this.activeStoryId,apply:(e,t)=>{if(t!==null&&!this.portableStories.some(r=>r.id===t)){console.warn(`[ReactRootAuthoringAdapter] stories.apply: unknown portable CSF story id "${t}" — ignoring.`);return}this.activeStoryId=t??this.portableDefaultStoryId,this.onPortableStoryApplied?.(t),this.store.notifyIngestEdit()},unavailable:()=>de()};structure={create:(e,t)=>({id:"",ack:this.structOp(t??"","create",{wrapperTag:e})}),remove:e=>this.removeElement(e),removeMany:e=>this.removeManyElements(e),duplicate:e=>({id:e,ack:this.structOp(e,"duplicate")}),reparent:(e,t)=>{const r=t?this.oidOf(t):void 0;return r?this.structOp(e,"reparent",{parentOid:r}):this.structRefusal(`reparent refused: "${t??"the document root"}" has no authored source element to move into.`)},reorder:(e,t)=>{const r=t===null?this.snapshot().nodes.get(e)?.parentId??null:null;return this.reorder(e,t,r)},creatableKinds:()=>[...Fe],wrap:(e,t)=>this.wrap(e,t),unwrap:e=>this.unwrap(e)};assetDrop={accepts:(e,t,r)=>this.assetDropPlan(e,t,r).ok,drop:(e,t,r)=>{const o=this.assetDropPlan(e,t,r);return o.ok?this.structOp(o.parentId,"create",{snippet:o.snippet,...o.ensureImport?{ensureImport:o.ensureImport}:{}}):this.structRefusal(`asset drop refused — ${o.reason}`)}};assetDropPlan(e,t,r){if(!this.writeBackend)return{ok:!1,reason:"This session has no source writer, so nothing can be added."};const o=this.snapshot().nodes.get(e);if(!o)return{ok:!1,reason:"That row has no authored JSX element."};if(!F(o.el,o.tag))return{ok:!1,reason:`<${o.tag}> cannot contain child elements.`};const s=r?.item?.kind==="component"?r.item:null;if(s){if(s.surface!=="dom")return{ok:!1,reason:`${s.name} is a ${s.surface} component, not a React UI component.`};const n=this.sourceLocation(e)?.file;return n?{ok:!0,parentId:e,snippet:`<${s.name} />`,ensureImport:{name:s.name,module:this.relativeProjectModule(n,s.sourcePath),kind:s.exportKind}}:{ok:!1,reason:"The target source location has not loaded yet."}}return Ge.test(t)?{ok:!0,parentId:e,snippet:`<img src=${JSON.stringify(t)} alt="" />`}:{ok:!1,reason:`${t} is not a browser image asset and has no DOM element to become.`}}relativeProjectModule(e,t){return fe(A(e),A(t))}wrap(e,t="div"){return this.structOp(e,"wrap",{wrapperTag:t})}unwrap(e){return this.structOp(e,"unwrap")}reorder(e,t,r){const o={},s=t?this.oidOf(t):void 0,n=r?this.oidOf(r):void 0;return s&&(o.targetOid=s),n&&(o.parentOid=n),this.structOp(e,"reorder",o)}oidOf(e){return this.snapshot().nodes.get(e)?.oid}sourceLocation(e){const t=this.oidOf(e);if(t)return this.oidIndex.get(t)}structOp(e,t,r){return this.structPipe.structOp(this.oidOf(e),e,t,r,w)}lastStyleWriteRefusal=null;refuseStyleWrite(e){this.lastStyleWriteRefusal=e,console.warn(e)}async writeStyleEntry(e,t,r,o,s=this.writeBackend){const n=`${f}${t}`,i=this.snapshot().nodes.get(e);if(!i)return this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] cannot write "${t}": "${e}" no longer resolves in this root (the tree was re-projected — an HMR remount — between the selection and the write). Nothing was written. Re-select and retry.`),!1;if(!s)return this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] cannot write "${t}" on "${e}": no source-write backend in this session (hosted/no dev server) — selection/inspection still work.`),!1;await this.expandShorthandsFor(e,t,s);const l=oe();if(l!==null){const c=W(this.matchedCssRules(i.el),X(i.el)),a=s.writeCss?c?null:"no style class carries this element — create one in the Style class row first (inline styles cannot be responsive, so a breakpoint edit needs a class rule).":"breakpoint edits need the dev-server css door (a hosted session cannot write @media).";if(a!==null||!c||!s.writeCss)return this.clearEcho(e,n),a&&(this.markGuarded(e,n,a),$(a)),this.store.notifyIngestEdit(),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] breakpoint edit refused: ${a}`),!1;const p=await s.writeCss(c.sourceFile,c.selectorText,t,O(t,r),l);return p.changed?(this.dirty=!0,this.store.notifyIngestEdit(),!0):(this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] breakpoint css write refused/no-op for "${c.selectorText}" ${t} at ${l}: ${p.error??"no change"}`),!1)}if(s.writeCss){const c=this.matchedCssRules(i.el),a=Ae(c,t),p=!a&&!Ue(i.el,t)?W(c,X(i.el)):null,g=a?.rule??p;if(g){const m={rule:g},{rule:h}=m,v=await s.writeCss(h.sourceFile,h.selectorText,t,O(t,r));if(v.changed)return this.dirty=!0,this.store.notifyIngestEdit(),!0;if(!v.generated)return this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] CSS write refused/no-op for selector "${h.selectorText}" prop "${t}": ${v.error??"no change"}`),!1}}r=ue(r,x(i.el.style,t));const d=await s.writeStyle(i.oid,t,r);if(!d.changed){this.clearEcho(e,n);const c=d.tokenRef?ke(t,d.tokenRef):d.dynamic?U:null;return c&&this.markGuarded(e,n,c),this.store.notifyIngestEdit(),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] style write refused/no-op for oid "${i.oid}" prop "${t}": ${c??d.error??"no change"}`),!1}return this.dirty=!0,o===void 0&&i.el.style&&(i.el.style[t]=O(t,r)),this.store.notifyIngestEdit(),!0}async writeStyle(e,t,r){return this.writeStyleEntry(e,t,r)}async expandShorthandsFor(e,t,r){const o=We(t);if(o.length===0)return;const s=this.snapshot().nodes.get(e);if(!(!s||!r))for(const n of o){const i=ee[n]??[],l=i.map(d=>y(s.el,d,this.computedStyle));if(await this.removeStyleProp(e,n,r))for(const[d,c]of i.entries()){if(c===t)continue;const a=l[d];a&&await this.writeStyleEntry(e,c,a,void 0,r)}}}async removeStyleProp(e,t,r=this.writeBackend){const o=this.snapshot().nodes.get(e);return!o||!r||!(await r.removeStyle(o.oid,t)).changed?!1:(this.dirty=!0,o.el.style&&delete o.el.style[t],this.store.notifyIngestEdit(),!0)}async editText(e,t){const r=this.snapshot().nodes.get(e);if(!r)return;if(!this.writeBackend?.writeText){console.warn(`[ReactRootAuthoringAdapter] cannot edit text on "${e}": no source-write backend with text support in this session (hosted/no dev server).`);return}const o=await this.writeBackend.writeText(r.oid,t);if(!o.changed){o.dynamic&&this.markGuarded(e,G,"The body has an expression or child elements, so replacing it with text is guarded."),this.store.notifyIngestEdit(),console.warn(`[ReactRootAuthoringAdapter] text edit refused/no-op for oid "${r.oid}": ${o.dynamic?"body has an expression/children (guarded)":o.error??"no change"}`);return}this.dirty=!0,this.pendingSourceReconcile++,this.store.notifyIngestEdit()}async writePropEdit(e,t,r){const o=`${b}${t}`,s=this.snapshot().nodes.get(e);if(!s)return this.clearEcho(e,o),!1;if(!this.writeBackend?.writeProp)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] cannot write prop "${t}" on "${e}": no source-write backend with prop support in this session (hosted/no dev server).`),!1;const n=E(s.el);if(!n)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] "${e}" is not a component call site with props — cannot write prop "${t}".`),!1;const i=await this.writeBackend.writeProp(n.callSiteOid,t,r);return i.changed?(this.dirty=!0,this.store.notifyIngestEdit(),!0):(this.clearEcho(e,o),i.dynamic&&this.markGuarded(e,o,U),this.store.notifyIngestEdit(),console.warn(`[ReactRootAuthoringAdapter] prop write refused/no-op for oid "${n.callSiteOid}" prop "${t}": ${i.dynamic?"value is a dynamic expression (guarded)":i.error??"no change"}`),!1)}removeElement(e){const t=this.snapshot().nodes.get(e);return t?this.structPipe.structOp(t.oid,e,"delete",void 0,w):this.structRefusal(`cannot delete "${e}": no such node in this world.`)}removeManyElements(e){const t=this.snapshot(),r=[...new Set(e.map(o=>t.nodes.get(o)?.oid).filter(o=>!!o))];return r.length===0?this.structRefusal("batch delete reached no source-addressable element."):this.structPipe.structMany(r,"delete",void 0,w)}subscribe(e){return this.store.subscribe(e)}get persistence(){const e=this.writeBackend;return{isDirty:()=>this.dirty,save:async()=>{},destination:e?w:B}}pipedSourceWrite(e){return pe({resolve:()=>this.writeBackend?{reaches:"writer",anchorKind:"source-prop",destination:w,write:e}:ge(B),record:()=>{},report:t=>console.warn(`[ReactRootAuthoringAdapter] this edit stays live-only — ${t}.`)})}structPipe=ye({report:e=>console.warn(`[ReactRootAuthoringAdapter] ${e}`),noWriterReason:B,backend:()=>this.writeBackend,onChanged:()=>{this.dirty=!0,this.pendingSourceReconcile++,this.store.notifyIngestEdit()}});structRefusal(e){return this.structPipe.structRefusal(e)}}export{$e as D,et as R,x as a,Oe as c,Be as m,Ze as s,Me as w};
1
+ import{g as re,a as oe}from"./board-guides-BYnclES1.js";import{eg as se,bj as ne,bi as ie,as as ae,eh as le,dL as P,d4 as D,dC as M,ax as I,dv as $,ei as C,ej as ce,ek as de,el as O,em as ue,bU as pe,Z as he,bV as ge}from"./index-BfqJPhFO.js";import{r as fe,c as ye}from"./relative-import-specifier-J1WeZQaJ.js";import{s as be}from"./story-arg-descriptors-Ek86ExX7.js";import{b as me,a as Se,c as we,d as Re,e as E,f as ve,g as y,h as j,i as Ie,j as Ee}from"./inspect-UxYR9Ls5.js";import{n as W,p as Ae,t as ke}from"./writer-tw6EcuVO.js";const _={count:0},Te="data-oid";function xe(u){return{count:u.size}}function K(u){return u.tagName.toLowerCase()==="svg"}function Y(u,e){const t=new Map,r=[];e.begin?.();const o=(s,n,i)=>{const l=Array.from(s.children);l.forEach((d,c)=>{if(e.skip?.(d))return;const a=e.identify(d,{ownerId:n,ownedByAncestor:i,parent:s,siblingIndex:c,siblings:l});a!==null&&(t.set(a,{object:d,id:a,parentId:n,childIds:[]}),n===null?r.push(a):t.get(n)?.childIds.push(a));const p=a??n,g=i||a!==null;e.descend?.(d)!==!1&&o(d,p,g),e.leave?.(d,a)})};return o(u,null,!1),{nodes:t,rootIds:r,stats:xe(t)}}function Ze(){return{project:u=>{const e=new Map;return Y(u,{begin:()=>e.clear(),identify:(t,r)=>{const o=t.tagName.toLowerCase();let s=0;for(let c=0;c<r.siblingIndex;c++)r.siblings[c].tagName.toLowerCase()===o&&s++;const n=`${o}[${s}]`,i=r.ownerId?e.get(r.ownerId)??"":"",l=i?`${i}/${n}`:n,d=`rdom:${l}`;return e.set(d,l),d},descend:t=>!K(t)})}}}function q(){return{project:u=>{const e=new Map;return Y(u,{begin:()=>e.clear(),identify:t=>{const r=t.getAttribute(Te);if(!r)return null;const o=e.get(r)??0;return e.set(r,o+1),o===0?r:`${r}#${o}`},descend:t=>!K(t)})}}}function Pe(u){return q().project(u)}class $e{constructor(e){this.identity=e}nodesById=new Map;objectsById=new Map;idsByObjectIndex=new Map;roots=[];walkStats=_;project(e){if(!e)return this.nodesById=new Map,this.objectsById=new Map,this.idsByObjectIndex=new Map,this.roots=[],this.walkStats=_,this.walkStats;const{nodes:t,rootIds:r,stats:o}=this.identity.project(e);return this.nodesById=t,this.objectsById=new Map([...t].map(([s,n])=>[s,n.object])),this.idsByObjectIndex=new Map([...t].map(([s,n])=>[n.object,s])),this.roots=r,this.walkStats=o,o}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(e){return this.nodesById.get(e)??null}rootNodes(){return this.roots.map(e=>this.nodesById.get(e)).filter(e=>e!==void 0)}objectOf(e){return this.objectsById.get(e)??null}idOf(e){return this.idsByObjectIndex.get(e)??null}}const H=64;function S(u){const e=u?.replace(/\s+/g," ").trim();return e?e.length<=H?e:`${e.slice(0,H-1).trimEnd()}…`:null}function x(u,e){return u?u[e]:void 0}const Ce=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*[\d.]+\s*)?\)$/;function Oe(u){if(typeof u!="string"||u==="")return;if(u.startsWith("#"))return u;const e=Ce.exec(u);if(!e)return;const t=r=>Number.parseInt(r,10).toString(16).padStart(2,"0");return`#${t(e[1])}${t(e[2])}${t(e[3])}`}function Be(u,e){switch(u){case"width":case"height":case"marginTop":case"marginRight":case"marginBottom":case"marginLeft":case"paddingTop":case"paddingRight":case"paddingBottom":case"paddingLeft":return{prop:u,cssValue:t=>`${t}px`};case"x":return e?{prop:"left",cssValue:t=>`${t}px`}:null;case"y":return e?{prop:"top",cssValue:t=>`${t}px`}:null;case"rotate":return{prop:"transform",cssValue:t=>`rotate(${t}deg)`};default:return null}}const Ne="data-oid",Le="http://www.w3.org/1999/xhtml",De=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function F(u,e){const t=u.namespaceURI;return t!=null&&t!==Le?!1:!De.has(e)}function A(u){const e=u.replaceAll("\\","/").replace(/^\.\//,""),t=e.lastIndexOf("/src/");return t>=0?e.slice(t+1):e}function Me(u){return Q(Pe(u))}function Q(u){const e=new Map;for(const[t,r]of u.nodes)e.set(t,{id:t,oid:r.object.getAttribute(Ne)??t,tag:r.object.tagName.toLowerCase(),el:r.object,parentId:r.parentId,childIds:[...r.childIds]});return{nodes:e,rootIds:[...u.rootIds]}}const Z=[{prop:"display",label:"Display",type:"enum",group:"Layout",options:["block","flex","grid","inline","inline-block","inline-flex","none"]},{prop:"flexDirection",label:"Direction",type:"enum",group:"Layout",options:["row","column","row-reverse","column-reverse"]},{prop:"flexWrap",label:"Wrap",type:"enum",group:"Layout",options:["nowrap","wrap","wrap-reverse"]},{prop:"justifyContent",label:"Justify",type:"enum",group:"Layout",options:["flex-start","center","flex-end","space-between","space-around","space-evenly"]},{prop:"alignItems",label:"Align",type:"enum",group:"Layout",options:["stretch","flex-start","center","flex-end","baseline"]},{prop:"gap",label:"Gap",type:"number",group:"Layout"},{prop:"gridTemplateColumns",label:"Columns",type:"string",group:"Layout"},{prop:"gridTemplateRows",label:"Rows",type:"string",group:"Layout"},{prop:"gridAutoFlow",label:"Flow",type:"enum",group:"Layout",options:["row","column","row dense","column dense"]},{prop:"rowGap",label:"Row Gap",type:"number",group:"Layout"},{prop:"columnGap",label:"Col Gap",type:"number",group:"Layout"},{prop:"gridColumn",label:"Grid Col",type:"string",group:"Layout"},{prop:"gridRow",label:"Grid Row",type:"string",group:"Layout"},{prop:"justifySelf",label:"Justify Self",type:"enum",group:"Layout",options:["auto","start","center","end","stretch"]},{prop:"overflow",label:"Overflow",type:"enum",group:"Layout",options:["visible","hidden","scroll","auto"]},{prop:"width",label:"Width",type:"number",group:"Layout"},{prop:"height",label:"Height",type:"number",group:"Layout"},{prop:"minWidth",label:"Min W",type:"number",group:"Layout"},{prop:"minHeight",label:"Min H",type:"number",group:"Layout"},{prop:"maxWidth",label:"Max W",type:"number",group:"Layout"},{prop:"maxHeight",label:"Max H",type:"number",group:"Layout"},{prop:"position",label:"Position",type:"enum",group:"Position",options:["static","relative","absolute","fixed","sticky"]},{prop:"top",label:"Top",type:"number",group:"Position"},{prop:"right",label:"Right",type:"number",group:"Position"},{prop:"bottom",label:"Bottom",type:"number",group:"Position"},{prop:"left",label:"Left",type:"number",group:"Position"},{prop:"zIndex",label:"Z Index",type:"number",group:"Position"},{prop:"flexGrow",label:"Grow",type:"number",group:"Position"},{prop:"flexShrink",label:"Shrink",type:"number",group:"Position"},{prop:"flexBasis",label:"Basis",type:"string",group:"Position"},{prop:"alignSelf",label:"Self Align",type:"enum",group:"Position",options:["auto","stretch","flex-start","center","flex-end","baseline"]},{prop:"marginTop",label:"Margin T",type:"number",group:"Spacing"},{prop:"marginRight",label:"Margin R",type:"number",group:"Spacing"},{prop:"marginBottom",label:"Margin B",type:"number",group:"Spacing"},{prop:"marginLeft",label:"Margin L",type:"number",group:"Spacing"},{prop:"paddingTop",label:"Padding T",type:"number",group:"Spacing"},{prop:"paddingRight",label:"Padding R",type:"number",group:"Spacing"},{prop:"paddingBottom",label:"Padding B",type:"number",group:"Spacing"},{prop:"paddingLeft",label:"Padding L",type:"number",group:"Spacing"},{prop:"color",label:"Color",type:"color",group:"Type"},{prop:"fontSize",label:"Size",type:"number",group:"Type"},{prop:"fontWeight",label:"Weight",type:"string",group:"Type"},{prop:"lineHeight",label:"Line H",type:"string",group:"Type"},{prop:"letterSpacing",label:"Spacing",type:"string",group:"Type"},{prop:"textAlign",label:"Align",type:"enum",group:"Type",options:["left","center","right","justify"]},{prop:"textTransform",label:"Transform",type:"enum",group:"Type",options:["none","uppercase","lowercase","capitalize"]},{prop:"fontStyle",label:"Style",type:"enum",group:"Type",options:["normal","italic"]},{prop:"fontFamily",label:"Font",type:"string",group:"Type"},{prop:"textDecoration",label:"Decoration",type:"enum",group:"Type",options:["none","underline","line-through","overline"]},{prop:"backgroundColor",label:"Background",type:"color",group:"Fill"},{prop:"backgroundImage",label:"Fills",type:"string",group:"Fill"},{prop:"backgroundSize",label:"Size",type:"enum",group:"Fill",options:["auto","cover","contain"]},{prop:"backgroundPosition",label:"Pos",type:"string",group:"Fill"},{prop:"backgroundRepeat",label:"Repeat",type:"enum",group:"Fill",options:["repeat","no-repeat","repeat-x","repeat-y"]},{prop:"borderColor",label:"Border Color",type:"color",group:"Stroke"},{prop:"borderWidth",label:"Border Width",type:"number",group:"Stroke"},{prop:"borderStyle",label:"Border Style",type:"enum",group:"Stroke",options:["none","solid","dashed","dotted","double"]},{prop:"borderRadius",label:"Radius",type:"number",group:"Stroke"},{prop:"opacity",label:"Opacity",type:"number",group:"Effects"},{prop:"boxShadow",label:"Box Shadow",type:"string",group:"Effects"},{prop:"mixBlendMode",label:"Blend",type:"enum",group:"Effects",options:["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"]},{prop:"filter",label:"Filter",type:"string",group:"Effects"},{prop:"backdropFilter",label:"Backdrop",type:"string",group:"Effects"},{prop:"textShadow",label:"Text Shadow",type:"string",group:"Effects"},{prop:"cursor",label:"Cursor",type:"enum",group:"Effects",options:["auto","default","pointer","text","move","wait","help","crosshair","not-allowed","grab","grabbing","zoom-in","zoom-out","col-resize","row-resize","none"]},{prop:"transform",label:"Transform",type:"string",group:"Transform"}],f="style.",w="component source (JSX, via /__ui-source — writes are immediate; nothing pending to flush)",B="component source (JSX) — no source-write backend in this session",b="prop.",R="token.",k="story.arg.",G="text",je=30;let z=!1;const V=40,U="The source value is a dynamic expression, so replacing it with a literal is guarded.",ee={border:["borderWidth","borderStyle","borderColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],borderStyle:["borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"],margin:["marginTop","marginRight","marginBottom","marginLeft"],inset:["top","right","bottom","left"]},J=new Map(Object.entries(ee).flatMap(([u,e])=>e.map(t=>[t,u])));function We(u){const e=[];for(let t=J.get(u);t;t=J.get(t))e.unshift(t);return e}const T="portable-document",N="React Preview",_e=new Map(Z.map(({prop:u,type:e})=>[u,e])),He={borderTopLeftRadius:"borderRadius",borderTopRightRadius:"borderRadius",borderBottomLeftRadius:"borderRadius",borderBottomRightRadius:"borderRadius",borderTopWidth:"borderWidth",borderRightWidth:"borderWidth",borderBottomWidth:"borderWidth",borderLeftWidth:"borderWidth",borderTopStyle:"borderStyle",borderRightStyle:"borderStyle",borderBottomStyle:"borderStyle",borderLeftStyle:"borderStyle",borderTopColor:"borderColor",borderRightColor:"borderColor",borderBottomColor:"borderColor",borderLeftColor:"borderColor"},Fe=[{kind:"div",label:"Container"},{kind:"span",label:"Text"},{kind:"p",label:"Paragraph"},{kind:"button",label:"Button"},{kind:"a",label:"Link"},{kind:"img",label:"Image"},{kind:"ul",label:"List"},{kind:"li",label:"List Item"}],Ge=/\.(?:avif|gif|jpe?g|png|svg|webp)(?:[?#].*)?$/i;function ze(u,e){return e.type==="number"?String(Number(u)):e.type==="boolean"?u===!0||u==="true"?"true":"false":e.type==="vec3"&&Array.isArray(u)?`[${u.map(t=>Number(t)).join(", ")}]`:e.type==="json"?JSON.stringify(u):JSON.stringify(String(u))}const Ve={source:"source-code",label:"jsx",detail:"The JSX source is the document — edits write back to the component source file."};function X(u){const e=u;return(typeof e?.getAttribute=="function"?e.getAttribute("class")??"":"").split(/\s+/).filter(Boolean)}function Ue(u,e){const t=u.style;return typeof t?.getPropertyValue!="function"?!1:t.getPropertyValue(Ee(e))!==""}class et{constructor(e,t,r={}){this.root=e,this.store=t,this.assetRoot=r.assetRoot??e,this.provenance=r.provenance??Ve,this.writeBackend=se(r.writeBackend,t.projectHistory),this.computedStyle=r.computedStyle??me,this.matchedCssRules=r.matchedCssRules??(a=>Se(a));const o=()=>{const a=this.root,p=typeof Element<"u"&&a instanceof Element?a.querySelector("[data-volter-game-styles]")??a.closest?.("[data-volter-game-styles]")??a:typeof document<"u"?document.documentElement:null;return typeof getComputedStyle=="function"&&p instanceof Element?getComputedStyle(p):void 0};this.designTokens=r.designTokens??(()=>we(o())),this.designTokenValue=r.designTokens?a=>r.designTokens().find(p=>p.name===a)?.value:a=>o()?.getPropertyValue(a).trim()||void 0,this.portableStories=[...r.portableStories??[]];for(const a of this.portableStories)this.portableStoryArgs.set(a.id,{...a.args??{}});const s=r.portableDocuments??(this.portableStories.length>0?[{id:T,label:N,storyIds:this.portableStories.map(a=>a.id)}]:[]),n=new Set(this.portableStories.map(a=>a.id)),i=new Set,l=new Set,d=s.flatMap(a=>{if(l.has(a.id))return[];l.add(a.id);const p=a.storyIds.filter(g=>!n.has(g)||i.has(g)?!1:(i.add(g),!0));return p.length===0?[]:[{id:a.id,label:a.label??(a.path?ne(ie({modulePath:a.path,title:a.title})):N),...a.path?{path:a.path}:{},storyIds:p}]}),c=this.portableStories.map(a=>a.id).filter(a=>!i.has(a));c.length>0&&d.push({id:l.has(T)?`${T}:unassigned`:T,label:N,storyIds:c}),this.portableDocuments=d,this.portableHierarchy=r.portableHierarchy??null,this.portableDefaultStoryId=this.portableStories.some(a=>a.id===r.activePortableStoryId)?r.activePortableStoryId??null:this.portableStories[0]?.id??null,this.onPortableStoryApplied=r.onPortableStoryApplied,this.onPortableStoryArgsChanged=r.onPortableStoryArgsChanged,this.activeStoryId=this.portableDefaultStoryId,this.capabilities={transform:!1,inspectorFields:!0,persist:!0};{const a=ae(()=>this.reconcileEchoAfterReload());this.disposeReloadSignal=a}this.writeBackend?.index&&this.writeBackend.index().then(a=>{this.oidIndex=new Map(Object.entries(a)),this.store.notifyIngestEdit()}).catch(()=>{})}capabilities;provenance;writeBackend;projector=new $e(q());hierarchySnapshotCache=null;hierarchySnapshotClearQueued=!1;computedStyle;matchedCssRules;designTokens;designTokenValue;oidIndex=new Map;dirty=!1;valueEcho=new Map;guardedPaths=new Map;lockedIds=new Set;assetRoot;pendingSourceReconcile=0;lastResolvedSelection=[];selectionRepairWatching=!1;disposeReloadSignal;portableStories;portableStoryArgs=new Map;portableDocuments;portableHierarchy;portableDefaultStoryId;onPortableStoryApplied;onPortableStoryArgsChanged;activeStoryId=null;boxEditSession=null;boxEditTail=Promise.resolve();snapshot(){return this.projector.project(this.root),Q({nodes:this.projector.nodes,rootIds:[...this.projector.rootIds]})}hierarchySnapshot(){return this.hierarchySnapshotCache??=this.snapshot(),this.hierarchySnapshotClearQueued||(this.hierarchySnapshotClearQueued=!0,queueMicrotask(()=>{this.hierarchySnapshotCache=null,this.hierarchySnapshotClearQueued=!1})),this.hierarchySnapshotCache}async refreshOidIndex(){const e=await this.writeBackend?.index?.();e&&(this.oidIndex=new Map(Object.entries(e)),this.store.notifyIngestEdit())}setEcho(e,t,r){let o=this.valueEcho.get(e);o||(o=new Map,this.valueEcho.set(e,o)),o.set(t,r)}clearEcho(e,t){const r=this.valueEcho.get(e);r&&(r.delete(t),r.size===0&&this.valueEcho.delete(e))}markGuarded(e,t,r){this.guardedPaths.set(`${e}|${t}`,r)}readEcho(e,t){const r=this.valueEcho.get(e);return r?.has(t)?{hit:!0,value:r.get(t)}:{hit:!1,value:void 0}}reconcileEchoAfterReload(){this.scheduleSelectionRepair(),!(this.valueEcho.size===0&&this.pendingSourceReconcile===0)&&(this.valueEcho.clear(),this.pendingSourceReconcile>0&&this.pendingSourceReconcile--,this.store.notifyIngestEdit())}scheduleSelectionRepair(){if(this.selectionRepairWatching||this.lastResolvedSelection.length===0)return;this.selectionRepairWatching=!0;let e=0,t=!1;const r=()=>{if(e++,t=this.repairSelectionAfterReprojection(t)||t,e>=je){this.selectionRepairWatching=!1;return}setTimeout(r,V)};setTimeout(r,V)}repairSelectionAfterReprojection(e){const t=this.lastResolvedSelection;if(t.length===0||this.store.selectedEntityIds.size>0)return!1;const r=this.snapshot(),o=t.filter(s=>r.nodes.has(s));return o.length===0?(e||console.warn(`[ReactRootAuthoringAdapter] the re-projection dropped the selection (${t.join(", ")}) and none of those ids resolve in the remounted tree, so it cannot be restored. An inspector write issued now has no subject — re-select.`),this.lastResolvedSelection=[],!0):(!e&&!z&&(z=!0,console.warn(`[ReactRootAuthoringAdapter] OPEN DEFECT, repaired: an HMR re-projection drops this root's selection, and the editor is putting it back — restoring ${o.length} of ${t.length} id(s) that still resolve in the remounted tree (${o.join(", ")}). A write issued in that window has no subject. Named once per session; the repair runs on every re-projection.`)),this.store.selectMultiple([...o]),!0)}disposeReactRootAdapter(){this.disposeReloadSignal?.()}componentName(e){return this.oidIndex.get(e.oid)?.component??Re(e.el)??null}elementLabel(e,t){const r=S(e.el.getAttribute("data-volter-name"));if(r)return r;const o=e.el.getAttribute("aria-labelledby");if(o){const l=o.split(/\s+/).map(c=>Array.from(t.nodes.values()).find(a=>a.el.getAttribute("id")===c)).map(c=>S(c?.el.textContent)).filter(c=>c!==null),d=S(l.join(" "));if(d)return d}const s=S(e.el.getAttribute("aria-label"));if(s)return s;if(["section","article","aside","nav","main","header","footer"].includes(e.tag)){const l=e.childIds.map(c=>t.nodes.get(c)).find(c=>c!==void 0&&/^h[1-6]$/.test(c.tag)),d=S(l?.el.textContent);if(d)return d}if(/^(h[1-6]|p|span|label|button|a|time|output|dt|dd|li|legend|caption|summary)$/.test(e.tag)){const l=S(e.el.textContent);if(l)return l}for(const l of["alt","title","placeholder","name"]){const d=S(e.el.getAttribute(l));if(d)return d}const n=e.el.getAttribute("id");if(n)return`#${n}`;const i=(e.el.getAttribute("class")??"").split(/\s+/).filter(Boolean)[0];return i?`${e.tag}.${i}`:e.tag}toEditorNode(e,t=this.snapshot()){const r=this.componentName(e),o=e.parentId?t.nodes.get(e.parentId):null,s=o?this.componentName(o):null,n=r!==null&&r!==s,i=e.el.getAttribute("data-volter-hierarchy-id"),l=e.el.getAttribute("data-volter-hierarchy-parent-id"),d=e.el.getAttribute("data-volter-hierarchy-order"),c=e.el.getAttribute("data-volter-hierarchy-group-label"),a=d===null?void 0:Number(d),p={id:e.id,label:n?r:this.elementLabel(e,t),...n?{secondaryLabel:`<${e.tag}>`}:{},role:n?"component":"element",kind:e.tag,parentId:e.parentId,childIds:e.childIds,...i===null?{}:{crossSurfaceId:i},...l===null?{}:{crossSurfaceParentId:l},...a===void 0||!Number.isInteger(a)?{}:{crossSurfaceOrder:a},...c===null?{}:{crossSurfaceGroupLabel:c}};return this.portableStories.length>0&&p.parentId===null?{...p,parentId:this.activeStoryId}:p}crossSurfaceStructureSignature(){const e=this.hierarchySnapshot(),t=new Set;for(const r of e.nodes.values())(r.el.getAttribute("data-volter-hierarchy-id")!==null||r.el.getAttribute("data-volter-hierarchy-parent-id")!==null||r.el.getAttribute("data-volter-hierarchy-order")!==null||r.el.getAttribute("data-volter-hierarchy-group-label")!==null)&&t.add(r.id);return t.size===0?null:JSON.stringify([...e.nodes.values()].flatMap(r=>{if(!t.has(r.id))return[];let o=r.parentId;for(;o!==null&&!t.has(o);)o=e.nodes.get(o)?.parentId??null;return[[r.id,o,r.el.getAttribute("data-volter-hierarchy-id"),r.el.getAttribute("data-volter-hierarchy-parent-id"),r.el.getAttribute("data-volter-hierarchy-order"),r.el.getAttribute("data-volter-hierarchy-group-label")]]}))}portableDocumentNode(e){return{id:e.id,label:e.label,...e.path?{secondaryLabel:e.path}:{},role:"document",kind:"tsx",parentId:null,childIds:[...e.storyIds]}}portableDocumentForStory(e){return this.portableDocuments.find(t=>t.storyIds.includes(e))??null}portableHierarchyNode(e){return this.portableHierarchy?.nodes.find(t=>t.id===e)??null}portableStoriesForNode(e){if(e===le)return[...this.portableStories];if(!this.portableHierarchy)return[...this.portableStories];const t=this.portableHierarchyNode(e);if(t&&t.role!=="component")return[];const r=t?.role==="component"?t.id:this.portableHierarchy.storyParentIds.get(e)??this.portableHierarchy.storyParentIds.get(this.activeStoryId??"");if(!r)return[];const o=this.portableHierarchyNode(r),s=new Set(o?.childIds??[]);return this.portableStories.filter(n=>s.has(n.id))}portableStoryNode(e,t){const r=e.id===this.activeStoryId;return{id:e.id,label:e.label,role:"story",kind:"story",parentId:this.portableHierarchy?.storyParentIds.get(e.id)??this.portableDocumentForStory(e.id)?.id??T,childIds:r?t:[]}}hierarchy={crossSurfaceStructureSignature:()=>this.crossSurfaceStructureSignature(),roots:()=>{const e=this.hierarchySnapshot(),{nodes:t,rootIds:r}=e;return this.portableStories.length>0?this.portableHierarchy?this.portableHierarchy.rootIds.flatMap(o=>{const s=this.portableHierarchy?.nodes.find(n=>n.id===o);return s?[{...s,childIds:[...s.childIds]}]:[]}):this.portableDocuments.map(o=>this.portableDocumentNode(o)):r.map(o=>this.toEditorNode(t.get(o),e))},node:e=>{if(this.portableStories.length>0){const o=this.portableHierarchy?.nodes.find(i=>i.id===e);if(o)return{...o,childIds:[...o.childIds]};const s=this.portableDocuments.find(i=>i.id===e);if(s)return this.portableDocumentNode(s);const n=this.portableStories.find(i=>i.id===e);if(n)return this.portableStoryNode(n,this.hierarchySnapshot().rootIds)}const t=this.hierarchySnapshot(),r=t.nodes.get(e);return r?this.toEditorNode(r,t):null}};selection={get:()=>{const e=[...this.store.selectedEntityIds];return e.length>0&&(this.lastResolvedSelection=e),e},set:e=>this.store.selectMultiple(e),resolve:(e,t)=>{const r=this.hierarchy.node(e);if(!r)return null;const o=[];let s=r,n=0;for(;s&&n++<1e3;)(s.role==="component"||s.role==="instance"||s.role==="boundary")&&o.push(s),s=s.parentId?this.hierarchy.node(s.parentId):null;const i=o.reverse();if(i.length===0)return{id:e};const l=t?.scopeId?i.findIndex(a=>a.id===t.scopeId):-1;let d=l>=0?l+1:0;return t?.intent==="deep"&&(d+=1),{id:(i[d]??r).id}}};truth={resolve:e=>{const t=this.snapshot().nodes.get(e);if(!t)return{site:{anchored:!1,reason:"This row is a design document, not a JSX element."},writeAnchorKind:void 0};const r=this.oidIndex.get(t.oid),o=this.writeBackend?"source-prop":"live-only";if(!r)return{site:{anchored:!1,reason:"Source metadata is still loading or unavailable."},writeAnchorKind:o};const s=A(r.file);return{site:{anchored:!0,kind:"source",file:s,line:r.line,col:r.col,display:`${s}:${r.line}`},writeAnchorKind:o}}};related={links:e=>this.hierarchy.node(e)?.role!=="component"||this.stories.storiesFor(e).length===0?[]:[{id:`definition:${P}`,title:"Open in UI Components",open:()=>{D(P)}}]};instanceSource(e){const t=this.snapshot().nodes.get(e);if(!t||this.hierarchy.node(e)?.role!=="component")return null;const r=E(t.el);if(!r)return null;const o=this.oidIndex.get(r.callSiteOid);return!o||!/^[A-Z]/.test(o.tag)?null:{node:t,callSiteOid:r.callSiteOid,callSite:o,props:r.props}}instanceProp(e,t){if(!t.startsWith(b))return null;const r=this.instanceSource(e);if(!r)return null;const o=t.slice(b.length),s=r.callSite.props?.find(i=>i.name===o),n=r.callSite.authoredProps?.find(i=>i.name===o);return s&&n?{source:r,prop:o,spec:s,authored:n}:null}affectedInstances(e,t){const r=this.instanceSource(e);if(!r)return 0;let o=0;for(const s of this.snapshot().nodes.values()){const n=E(s.el);if(!n)continue;const i=this.oidIndex.get(n.callSiteOid);!i||i.tag!==r.callSite.tag||(s.id===e||!i.authoredProps?.some(l=>l.name===t))&&o++}return Math.max(1,o)}instances={openComponent:()=>{D(P)},describe:e=>{const t=this.instanceSource(e);if(!t||this.stories.storiesFor(e).length===0)return null;const r=Object.entries(t.props).flatMap(([o,s])=>{const n=`${b}${o}`,i=this.instanceProp(e,n);if(!i)return[];const l=i.authored.literal&&i.spec.defaultValue!==void 0&&t.node.oid!==t.callSiteOid&&!!this.writeBackend?.runGesture&&!!this.writeBackend.writeComponentDefault&&!!this.writeBackend.removeProp;return[{path:n,label:o,value:s,...i.spec.defaultText===void 0?{}:{defaultText:i.spec.defaultText},canApplyToComponent:l,affectedInstanceCount:this.affectedInstances(e,o),...l?{}:{applyUnavailableReason:i.authored.literal?i.spec.defaultValue===void 0?"The component default is computed or absent, so source cannot be changed safely.":"This session cannot atomically update the component and its callsite.":"The callsite value is a dynamic expression, so it cannot become a component literal."}}]});return{componentName:t.callSite.tag,sourcePath:A(t.callSite.file),overrides:r}},revert:async(e,t)=>{const r=this.instanceSource(e),o=this.writeBackend;if(!r||!o?.removeProp)return;const s=t.map(l=>this.instanceProp(e,l)?.prop).filter(l=>!!l);let n=!1;const i=async l=>{for(const d of s){const c=await l.removeProp?.(r.callSiteOid,d);n||=c?.changed===!0}};if(s.length>1&&o.runGesture?await o.runGesture(`Revert ${s.length} Overrides`,i):await i(o),!!n)return this.dirty=!0,this.pendingSourceReconcile++,await this.refreshOidIndex(),{destination:w,persisted:!0}},applyToComponent:async(e,t)=>{const r=this.instanceProp(e,t),o=this.writeBackend;if(!r||!r.authored.literal||r.spec.defaultValue===void 0||r.source.node.oid===r.source.callSiteOid||!o?.runGesture||!o.writeComponentDefault||!o.removeProp)return{changed:!1,message:"Apply was refused because both literal source writes are not available."};const s=r.source.props[r.prop];return await o.runGesture(`Apply ${r.prop} to ${r.source.callSite.tag}`,async n=>{const i=await n.writeComponentDefault?.(r.source.node.oid,r.prop,ze(s,r.spec));if(!i?.changed)throw new Error(i?.error??"The component default did not change.");const l=await n.removeProp?.(r.source.callSiteOid,r.prop);if(!l?.changed)throw new Error(l?.error??"The callsite override was not removed.")}),this.dirty=!0,this.pendingSourceReconcile++,await this.refreshOidIndex(),{changed:!0,message:`${r.prop} now defaults to ${String(s)} in ${r.source.callSite.tag}.`,write:{destination:w,persisted:!0}}}};pickable={pick:(e,t)=>{const{nodes:r}=this.snapshot();let o=null,s=Number.POSITIVE_INFINITY,n=-1,i=-1;for(const l of r.values()){if(i++,this.lockedIds.has(l.id)||x(l.el.style,"pointerEvents")==="none")continue;const d=l.el.getBoundingClientRect?.();if(!d||e<d.left||e>d.right||t<d.top||t>d.bottom)continue;const c=d.width*d.height;(c<s||c===s&&i>n)&&(o=l.id,s=c,n=i)}return o}};hostRect(){const e=this.root.getBoundingClientRect?.();return{left:e?.left??0,top:e?.top??0}}toHostRelative(e){const t=this.hostRect(),r=M().zoom;return{x:(e.left-t.left)/r,y:(e.top-t.top)/r,width:e.width/r,height:e.height/r}}rects={rect:e=>{const r=this.snapshot().nodes.get(e)?.el.getBoundingClientRect?.();return r?this.toHostRelative(r):null},contextRects:e=>{const{nodes:t}=this.snapshot(),r=t.get(e);if(!r)return{};const o=r.parentId?t.get(r.parentId):void 0,s=o?.el.getBoundingClientRect?.(),i=(o?o.childIds:this.snapshot().rootIds).filter(h=>h!==e).map(h=>t.get(h)?.el.getBoundingClientRect?.()).filter(h=>h!=null).map(h=>this.toHostRelative(h)),l=r.el,d=l.getBoundingClientRect?.();let c;if(d){const h=I(y(l,"borderTopWidth",this.computedStyle))??0,v=I(y(l,"borderRightWidth",this.computedStyle))??0,te=I(y(l,"borderBottomWidth",this.computedStyle))??0,L=I(y(l,"borderLeftWidth",this.computedStyle))??0;c=this.toHostRelative({left:d.left+L,top:d.top+h,width:Math.max(0,d.width-L-v),height:Math.max(0,d.height-h-te)})}const a=re(),p=this.hostRect(),g=M().zoom,m=a.x.length>0||a.y.length>0?{x:a.x.map(h=>(h-p.left)/g),y:a.y.map(h=>(h-p.top)/g)}:void 0;return{...s?{parent:this.toHostRelative(s)}:{},...i.length?{siblings:i}:{},...c?{paddingBox:c}:{},...m?{guideEdges:m}:{}}},emptyContainers:()=>{const{nodes:e}=this.snapshot(),t=[];for(const r of e.values()){const o=r.el.getBoundingClientRect?.();!o||!F(r.el,r.tag)||t.push({oid:r.id,rect:this.toHostRelative(o),displayName:r.tag,hasVisibleChildren:r.el.children.length>0,hasText:(r.el.textContent??"").trim().length>0})}return ve(t).map(r=>({id:r.oid,rect:r.rect,displayName:r.displayName}))}};colorSample={backgroundChainAt:(e,t)=>{const r=this.pickable.pick(e,t);if(!r)return null;const{nodes:o}=this.snapshot(),s=[];let n=o.get(r);for(;n;)s.push(y(n.el,"backgroundColor",this.computedStyle)),n=n.parentId?o.get(n.parentId):void 0;return s}};boxEdit={begin:e=>{this.boxEditSession={id:e,touched:new Map,priorInline:new Map}},apply:(e,t)=>{const r=this.boxEditSession;if(!r||r.id!==e)return;const o=this.snapshot().nodes.get(e);if(!o)return;const s=y(o.el,"position",this.computedStyle),n=s==="absolute"||s==="fixed";for(const[i,l]of Object.entries(t)){const d=Be(i,n);if(!d){console.warn(`[ReactRootAuthoringAdapter] boxEdit: dropping patch key "${i}" for "${e}" — `+(i==="x"||i==="y"?`node is not absolutely/fixed positioned (computed position: "${s}"), no left/top to move`:"unrecognized box-edit patch key")),(i==="x"||i==="y")&&!r.hinted&&(r.hinted=!0,$(`${o.tag} flows in its layout (position: ${s}), so a drag cannot move it. Set Position to "abs" in the Inspector to place it freely; drag a handle to resize.`));continue}if(!r.priorInline.has(d.prop)){const p=x(o.el.style,d.prop);r.priorInline.set(d.prop,p==null?"":String(p))}let c=l;if((i==="x"||i==="y")&&typeof l=="number"){const p=o.el,g=p.getBoundingClientRect?.();if(g&&typeof p.offsetLeft=="number"&&typeof p.offsetTop=="number"){const m=this.toHostRelative(g),h=i==="x"?m.x-p.offsetLeft:m.y-p.offsetTop;c=Math.round(l-h)}}const a=d.cssValue(c);o.el.style&&(o.el.style[d.prop]=a),r.touched.set(d.prop,d.prop==="transform"?a:c)}},end:e=>{const t=this.boxEditSession;this.boxEditSession=null,!(!t||t.id!==e||t.touched.size===0)&&(this.boxEditTail=this.boxEditTail.then(()=>this.commitBoxEdit(e,t.touched,t.priorInline),()=>this.commitBoxEdit(e,t.touched,t.priorInline)),this.boxEditTail.catch(r=>{console.error("[ReactRootAuthoringAdapter] box edit failed and was not committed.",r)}))}};async commitBoxEdit(e,t,r){const o=this.dirty;for(const[i,l]of t)this.setEcho(e,`${f}${i}`,l);let s=0;this.lastStyleWriteRefusal=null;const n=async i=>{for(const[l,d]of t){const c=typeof d=="number"?`${d}px`:d;await this.writeStyleEntry(e,l,c,r.get(l),i)&&(s+=1)}if(s===0&&t.size>0){const l=this.lastStyleWriteRefusal??"the write was refused without a reason";he.error(`The last edit on this element was NOT saved — ${l}`,"authoring"),$("Not saved: the edit could not be written to source — see the Console.")}};try{this.writeBackend?.runGesture?await this.writeBackend.runGesture(`Edit ${t.size} Styles`,n):await n(this.writeBackend)}catch(i){const l=this.snapshot().nodes.get(e);for(const[d,c]of r)this.clearEcho(e,`${f}${d}`),l?.el.style&&(l.el.style[d]=c);throw this.dirty=o,this.store.notifyIngestEdit(),i}}text={get:e=>{if(this.guardedPaths.has(`${e}|${G}`))return null;const t=this.snapshot().nodes.get(e);if(!t||t.el.children.length>0)return null;const r=t.el.textContent;if(r==null)return null;const o=r.trim();return o||null},set:(e,t)=>{this.editText(e,t)}};inspector={properties:e=>{const t=this.portableHierarchyNode(e);if(t)return t.secondaryLabel?[{path:"document.path",label:"Source",type:"string",readonly:!0,group:"Document"}]:[];const r=this.portableDocuments.find(n=>n.id===e);if(r)return r.path?[{path:"document.path",label:"Source",type:"string",readonly:!0,group:"Document"}]:[];if(this.portableStories.some(n=>n.id===e))return this.portableStoryArgDescriptors(e);const s=[...Z.map(({prop:n,label:i,type:l,group:d,options:c})=>({path:`${f}${n}`,label:i,type:l,group:d,...c?{options:c}:{}})),...this.propDescriptors(e),...this.tokenDescriptors()];return this.guardedPaths.size===0?s:s.map(n=>{const i=this.guardedPaths.get(`${e}|${n.path}`);return i?{...n,readonly:!0,readonlyReason:i}:n})},get:(e,t)=>{const r=this.portableHierarchyNode(e);if(r)return t==="document.path"?r.secondaryLabel:void 0;const o=this.portableDocuments.find(a=>a.id===e);if(o)return t==="document.path"?o.path:void 0;if(this.portableStories.some(a=>a.id===e))return t==="story.active"?e===this.activeStoryId:t.startsWith(k)?this.portableStoryArgs.get(e)?.[t.slice(k.length)]:void 0;const s=this.readEcho(e,t);if(s.hit)return s.value;if(t==="locked")return this.lockedIds.has(e);if(t==="visible"){const a=this.readEcho(e,`${f}visibility`);if(a.hit)return a.value!=="hidden";const p=this.snapshot().nodes.get(e);return p?y(p.el,"visibility",this.computedStyle)!=="hidden":void 0}if(t.startsWith(R)){const a=t.slice(R.length);return this.designTokenValue(a)}if(t.startsWith(b)){const a=this.snapshot().nodes.get(e);return(a?E(a.el):null)?.props[t.slice(b.length)]}if(!t.startsWith(f))return;const n=t.slice(f.length),i=this.snapshot().nodes.get(e);if(!i)return;const l=x(i.el.style,n),d=typeof l=="string"&&l!==""?l:typeof l=="number"?String(l):y(i.el,n,this.computedStyle),c=_e.get(n);return c==="number"?I(d):c==="color"?Oe(d):d||void 0},set:(e,t,r)=>{if(this.portableHierarchyNode(e)||this.portableDocuments.some(s=>s.id===e))return;if(this.portableStories.some(s=>s.id===e)){if(!t.startsWith(k))return;const s=t.slice(k.length),n=this.portableStoryArgs.get(e);if(!n||!(s in n))return;const i={...n,[s]:r};this.portableStoryArgs.set(e,i),this.onPortableStoryArgsChanged?.(e,{...i}),this.store.notifyIngestEdit();return}if(t==="locked"){r?this.lockedIds.add(e):this.lockedIds.delete(e),this.store.notifyIngestEdit();return}if(t==="visible"){const s=r?"visible":"hidden";return this.setEcho(e,`${f}visibility`,s),this.pipedSourceWrite(()=>this.writeStyle(e,"visibility",s))}if(t.startsWith(b))return this.setEcho(e,t,r),this.pipedSourceWrite(()=>this.writePropEdit(e,t.slice(b.length),String(r)));if(t.startsWith(R))return this.setEcho(e,t,r),this.pipedSourceWrite(()=>this.writeTokenValue(e,t.slice(R.length),String(r)));if(!t.startsWith(f))return;const o=t.slice(f.length);return this.setEcho(e,t,r),this.pipedSourceWrite(()=>this.writeStyle(e,o,r))},remove:(e,t)=>{if(!t.startsWith(f))return;const r=t.slice(f.length),o=He[r];return o?this.setEcho(e,t,this.inspector.get(e,`${f}${o}`)):this.clearEcho(e,t),this.pipedSourceWrite(()=>this.removeStyleProp(e,r))}};assetSubject={get:e=>this.assetSubjectForNode(this.snapshot(),e),entries:()=>{const e=Me(this.assetRoot);return[...e.nodes.keys()].flatMap(t=>{const r=this.assetSubjectForNode(e,t);return r?[{id:t,subject:r}]:[]})}};assetSubjectForNode(e,t){const r=e.nodes.get(t);if(!r||r.tag!=="svg"||!r.el.outerHTML)return null;const o=this.oidIndex.get(r.oid);return{kind:"image",name:this.componentName(r)??this.elementLabel(r,e),mediaType:"image/svg+xml",text:r.el.outerHTML,...o?.file?{sourcePath:A(o.file)}:{}}}portableStoryArgDescriptors(e){return be(this.portableStoryArgs.get(e)??{},k)}portableArgs(e){const t=this.portableStoryArgs.get(e);return t?{...t}:null}elementClasses(e){const r=this.snapshot().nodes.get(e)?.el;if(!r||typeof r.getAttribute!="function")return[];const o=(r.getAttribute("class")??"").split(/\s+/).filter(Boolean),s=(typeof r.closest=="function"?r.closest("[data-volter-game-styles]"):null)??r.ownerDocument;return o.map(n=>{let i=0;try{i=s?.querySelectorAll?.(`.${CSS.escape(n)}`).length??0}catch{}return{name:n,count:i,styledIn:j(n)?.sourceFile??null}})}async writeNamedStyle(e,t){const r=this.snapshot().nodes.get(e);if(!r)return{changed:!1,error:`"${e}" no longer resolves in this root`};const o=c=>(console.warn(`[ReactRootAuthoringAdapter] named-style ${t.kind} refused: ${c}`),{changed:!1,error:c});if(t.kind==="remove"){const c=await C({op:"remove",oid:r.oid,className:t.className});return c.changed?(this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0}):o(c.error??"no change")}if(j(t.className)){const c=await C({op:"apply",oid:r.oid,className:t.className});return c.changed?(this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0}):o(c.error??"the element already wears this class")}const n=c=>c!==void 0&&!c.includes("/packages/editor/")&&!c.includes("/node_modules/")&&!c.includes("/vendor/"),i=this.matchedCssRules(r.el).filter(c=>n(c.sourceFile)),l=i[i.length-1]?.sourceFile??Ie().find(n),d=await C({op:"create",oid:r.oid,className:t.className,...l!==void 0?{file:l}:{}});return d.changed?(this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0,created:!0}):o(d.error??"no change")}async writeStory(e,t){const r=this.portableStories.find(n=>n.id===e);if(!r)return{changed:!1,error:`unknown portable story '${e}'`};if(!r.name||!r.modulePath)return{changed:!1,error:`story '${r.label}' carries no source address (name/modulePath) — it is not writable from this session`};const o=t.kind==="save-as"?{op:"save",file:r.modulePath,name:t.name,args:this.portableStoryArgs.get(e)??{}}:t.kind==="rename"?{op:"rename",file:r.modulePath,name:r.name,newName:t.newName}:{op:"delete",file:r.modulePath,name:r.name},s=await ce(o);if(!s.changed)return console.warn(`[ReactRootAuthoringAdapter] csf-story ${t.kind} refused for '${r.label}': ${s.error??"no change"}`),{changed:!1,...s.error!==void 0?{error:s.error}:{}};if(t.kind==="rename")r.name=t.newName,r.label=t.newName.replace(/([a-z])([A-Z])/g,"$1 $2");else if(t.kind==="delete"){const n=this.portableStories.indexOf(r);n>=0&&this.portableStories.splice(n,1),this.activeStoryId===e&&(this.activeStoryId=null)}return this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0}}resetPortableArgs(e){const t=this.portableStories.find(o=>o.id===e);if(!t)return;const r={...t.args??{}};this.portableStoryArgs.set(e,r),this.onPortableStoryArgsChanged?.(e,{...r}),this.store.notifyIngestEdit()}propDescriptors(e){const t=this.snapshot().nodes.get(e),r=t?E(t.el):null;return r?Object.keys(r.props).map(o=>({path:`${b}${o}`,label:o,type:"string",group:"Props"})):[]}tokenDescriptors(){return this.designTokens().map(e=>({path:`${R}${e.name}`,label:e.name,type:"string",group:"Tokens",readonly:!e.declaredIn}))}async writeTokenValue(e,t,r){const o=`${R}${t}`,s=this.designTokens().find(l=>l.name===t);if(!s)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] unknown design token "${t}".`),!1;if(!s.declaredIn)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] token "${t}" has no stylesheet declaration to edit — it is set by script (a theme data module mirroring itself onto :root, or host style). Edit that source; it is plain data.`),!1;const n=this.writeBackend;if(!n?.writeCss)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] cannot write token "${t}": no css-capable source-write backend in this session (hosted/no dev server).`),!1;const i=await n.writeCss(s.declaredIn.sourceFile,s.declaredIn.selector,t,r);return i.changed?(this.dirty=!0,this.store.notifyIngestEdit(),!0):(this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] token write refused/no-op for "${t}" at ${s.declaredIn.sourceFile} (${s.declaredIn.selector}): ${i.error??"no change"}`),!1)}stories={storiesFor:e=>this.portableStories.length>0?this.portableStoriesForNode(e):[],active:e=>this.activeStoryId,apply:(e,t)=>{if(t!==null&&!this.portableStories.some(r=>r.id===t)){console.warn(`[ReactRootAuthoringAdapter] stories.apply: unknown portable CSF story id "${t}" — ignoring.`);return}this.activeStoryId=t??this.portableDefaultStoryId,this.onPortableStoryApplied?.(t),this.store.notifyIngestEdit()},unavailable:()=>de()};structure={create:(e,t)=>({id:"",ack:this.structOp(t??"","create",{wrapperTag:e})}),remove:e=>this.removeElement(e),removeMany:e=>this.removeManyElements(e),duplicate:e=>({id:e,ack:this.structOp(e,"duplicate")}),reparent:(e,t)=>{const r=t?this.oidOf(t):void 0;return r?this.structOp(e,"reparent",{parentOid:r}):this.structRefusal(`reparent refused: "${t??"the document root"}" has no authored source element to move into.`)},reorder:(e,t)=>{const r=t===null?this.snapshot().nodes.get(e)?.parentId??null:null;return this.reorder(e,t,r)},creatableKinds:()=>[...Fe],wrap:(e,t)=>this.wrap(e,t),unwrap:e=>this.unwrap(e)};assetDrop={accepts:(e,t,r)=>this.assetDropPlan(e,t,r).ok,drop:(e,t,r)=>{const o=this.assetDropPlan(e,t,r);return o.ok?this.structOp(o.parentId,"create",{snippet:o.snippet,...o.ensureImport?{ensureImport:o.ensureImport}:{}}):this.structRefusal(`asset drop refused — ${o.reason}`)}};assetDropPlan(e,t,r){if(!this.writeBackend)return{ok:!1,reason:"This session has no source writer, so nothing can be added."};const o=this.snapshot().nodes.get(e);if(!o)return{ok:!1,reason:"That row has no authored JSX element."};if(!F(o.el,o.tag))return{ok:!1,reason:`<${o.tag}> cannot contain child elements.`};const s=r?.item?.kind==="component"?r.item:null;if(s){if(s.surface!=="dom")return{ok:!1,reason:`${s.name} is a ${s.surface} component, not a React UI component.`};const n=this.sourceLocation(e)?.file;return n?{ok:!0,parentId:e,snippet:`<${s.name} />`,ensureImport:{name:s.name,module:this.relativeProjectModule(n,s.sourcePath),kind:s.exportKind}}:{ok:!1,reason:"The target source location has not loaded yet."}}return Ge.test(t)?{ok:!0,parentId:e,snippet:`<img src=${JSON.stringify(t)} alt="" />`}:{ok:!1,reason:`${t} is not a browser image asset and has no DOM element to become.`}}relativeProjectModule(e,t){return fe(A(e),A(t))}wrap(e,t="div"){return this.structOp(e,"wrap",{wrapperTag:t})}unwrap(e){return this.structOp(e,"unwrap")}reorder(e,t,r){const o={},s=t?this.oidOf(t):void 0,n=r?this.oidOf(r):void 0;return s&&(o.targetOid=s),n&&(o.parentOid=n),this.structOp(e,"reorder",o)}oidOf(e){return this.snapshot().nodes.get(e)?.oid}sourceLocation(e){const t=this.oidOf(e);if(t)return this.oidIndex.get(t)}structOp(e,t,r){return this.structPipe.structOp(this.oidOf(e),e,t,r,w)}lastStyleWriteRefusal=null;refuseStyleWrite(e){this.lastStyleWriteRefusal=e,console.warn(e)}async writeStyleEntry(e,t,r,o,s=this.writeBackend){const n=`${f}${t}`,i=this.snapshot().nodes.get(e);if(!i)return this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] cannot write "${t}": "${e}" no longer resolves in this root (the tree was re-projected — an HMR remount — between the selection and the write). Nothing was written. Re-select and retry.`),!1;if(!s)return this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] cannot write "${t}" on "${e}": no source-write backend in this session (hosted/no dev server) — selection/inspection still work.`),!1;await this.expandShorthandsFor(e,t,s);const l=oe();if(l!==null){const c=W(this.matchedCssRules(i.el),X(i.el)),a=s.writeCss?c?null:"no style class carries this element — create one in the Style class row first (inline styles cannot be responsive, so a breakpoint edit needs a class rule).":"breakpoint edits need the dev-server css door (a hosted session cannot write @media).";if(a!==null||!c||!s.writeCss)return this.clearEcho(e,n),a&&(this.markGuarded(e,n,a),$(a)),this.store.notifyIngestEdit(),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] breakpoint edit refused: ${a}`),!1;const p=await s.writeCss(c.sourceFile,c.selectorText,t,O(t,r),l);return p.changed?(this.dirty=!0,this.store.notifyIngestEdit(),!0):(this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] breakpoint css write refused/no-op for "${c.selectorText}" ${t} at ${l}: ${p.error??"no change"}`),!1)}if(s.writeCss){const c=this.matchedCssRules(i.el),a=Ae(c,t),p=!a&&!Ue(i.el,t)?W(c,X(i.el)):null,g=a?.rule??p;if(g){const m={rule:g},{rule:h}=m,v=await s.writeCss(h.sourceFile,h.selectorText,t,O(t,r));if(v.changed)return this.dirty=!0,this.store.notifyIngestEdit(),!0;if(!v.generated)return this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] CSS write refused/no-op for selector "${h.selectorText}" prop "${t}": ${v.error??"no change"}`),!1}}r=ue(r,x(i.el.style,t));const d=await s.writeStyle(i.oid,t,r);if(!d.changed){this.clearEcho(e,n);const c=d.tokenRef?ke(t,d.tokenRef):d.dynamic?U:null;return c&&this.markGuarded(e,n,c),this.store.notifyIngestEdit(),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] style write refused/no-op for oid "${i.oid}" prop "${t}": ${c??d.error??"no change"}`),!1}return this.dirty=!0,o===void 0&&i.el.style&&(i.el.style[t]=O(t,r)),this.store.notifyIngestEdit(),!0}async writeStyle(e,t,r){return this.writeStyleEntry(e,t,r)}async expandShorthandsFor(e,t,r){const o=We(t);if(o.length===0)return;const s=this.snapshot().nodes.get(e);if(!(!s||!r))for(const n of o){const i=ee[n]??[],l=i.map(d=>y(s.el,d,this.computedStyle));if(await this.removeStyleProp(e,n,r))for(const[d,c]of i.entries()){if(c===t)continue;const a=l[d];a&&await this.writeStyleEntry(e,c,a,void 0,r)}}}async removeStyleProp(e,t,r=this.writeBackend){const o=this.snapshot().nodes.get(e);return!o||!r||!(await r.removeStyle(o.oid,t)).changed?!1:(this.dirty=!0,o.el.style&&delete o.el.style[t],this.store.notifyIngestEdit(),!0)}async editText(e,t){const r=this.snapshot().nodes.get(e);if(!r)return;if(!this.writeBackend?.writeText){console.warn(`[ReactRootAuthoringAdapter] cannot edit text on "${e}": no source-write backend with text support in this session (hosted/no dev server).`);return}const o=await this.writeBackend.writeText(r.oid,t);if(!o.changed){o.dynamic&&this.markGuarded(e,G,"The body has an expression or child elements, so replacing it with text is guarded."),this.store.notifyIngestEdit(),console.warn(`[ReactRootAuthoringAdapter] text edit refused/no-op for oid "${r.oid}": ${o.dynamic?"body has an expression/children (guarded)":o.error??"no change"}`);return}this.dirty=!0,this.pendingSourceReconcile++,this.store.notifyIngestEdit()}async writePropEdit(e,t,r){const o=`${b}${t}`,s=this.snapshot().nodes.get(e);if(!s)return this.clearEcho(e,o),!1;if(!this.writeBackend?.writeProp)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] cannot write prop "${t}" on "${e}": no source-write backend with prop support in this session (hosted/no dev server).`),!1;const n=E(s.el);if(!n)return this.clearEcho(e,o),console.warn(`[ReactRootAuthoringAdapter] "${e}" is not a component call site with props — cannot write prop "${t}".`),!1;const i=await this.writeBackend.writeProp(n.callSiteOid,t,r);return i.changed?(this.dirty=!0,this.store.notifyIngestEdit(),!0):(this.clearEcho(e,o),i.dynamic&&this.markGuarded(e,o,U),this.store.notifyIngestEdit(),console.warn(`[ReactRootAuthoringAdapter] prop write refused/no-op for oid "${n.callSiteOid}" prop "${t}": ${i.dynamic?"value is a dynamic expression (guarded)":i.error??"no change"}`),!1)}removeElement(e){const t=this.snapshot().nodes.get(e);return t?this.structPipe.structOp(t.oid,e,"delete",void 0,w):this.structRefusal(`cannot delete "${e}": no such node in this world.`)}removeManyElements(e){const t=this.snapshot(),r=[...new Set(e.map(o=>t.nodes.get(o)?.oid).filter(o=>!!o))];return r.length===0?this.structRefusal("batch delete reached no source-addressable element."):this.structPipe.structMany(r,"delete",void 0,w)}subscribe(e){return this.store.subscribe(e)}get persistence(){const e=this.writeBackend;return{isDirty:()=>this.dirty,save:async()=>{},destination:e?w:B}}pipedSourceWrite(e){return pe({resolve:()=>this.writeBackend?{reaches:"writer",anchorKind:"source-prop",destination:w,write:e}:ge(B),record:()=>{},report:t=>console.warn(`[ReactRootAuthoringAdapter] this edit stays live-only — ${t}.`)})}structPipe=ye({report:e=>console.warn(`[ReactRootAuthoringAdapter] ${e}`),noWriterReason:B,backend:()=>this.writeBackend,onChanged:()=>{this.dirty=!0,this.pendingSourceReconcile++,this.store.notifyIngestEdit()}});structRefusal(e){return this.structPipe.structRefusal(e)}}export{$e as D,et as R,x as a,Oe as c,Be as m,Ze as s,Me as w};
@@ -1 +1 @@
1
- import{X as c,e9 as n,ea as s}from"./index-ClgrFOcX.js";import{resolveCanvasEntryAdapterForEditor as f}from"./canvas-entry-runtime-CLOuJcgT.js";import{r as o}from"./index-nmcBqr7Y.js";import{r as i}from"./index-CtzuWnCS.js";import{a as m}from"./client-DNXj_opT.js";import{r as R}from"./three-ingest-runtime-x9nLmUl-.js";function l(){return{createElement:o.createElement,createRoot:m.createRoot,useEffect:o.useEffect,useRef:o.useRef,flushSync:i.flushSync}}async function d(){const e=await import(n);if(typeof e.createElement!="function"||typeof e.createRoot!="function"||typeof e.useEffect!="function"||typeof e.useRef!="function"||typeof e.flushSync!="function")throw new Error(`The packaged runtime's synthetic react-world-runtime module ("${n}") did not export createElement/createRoot/useEffect/useRef/flushSync as functions — see vite-plugin-module-doorways.ts.`);return{createElement:e.createElement,createRoot:e.createRoot,useEffect:e.useEffect,useRef:e.useRef,flushSync:e.flushSync}}let r=null;async function p(){return await c()?(r||(r=d()),r):l()}const E={pixiRuntime:f,reactDomRuntime:p,threeIngestRuntime:R};function y(e,t){return async(a,g,h,u)=>await import(s(e,a,t,u))}async function I(e,t){return{id:await c()?"packaged":"dev",projectRoot:e,epoch:t,loadEntryModule:y(e,t),entryReach:"full",...E}}export{I as a,p as r};
1
+ import{X as c,e9 as n,ea as s}from"./index-BfqJPhFO.js";import{resolveCanvasEntryAdapterForEditor as f}from"./canvas-entry-runtime-nWfnVKYb.js";import{r as o}from"./index-nmcBqr7Y.js";import{r as i}from"./index-CtzuWnCS.js";import{a as m}from"./client-DNXj_opT.js";import{r as R}from"./three-ingest-runtime-QhrURliQ.js";function l(){return{createElement:o.createElement,createRoot:m.createRoot,useEffect:o.useEffect,useRef:o.useRef,flushSync:i.flushSync}}async function d(){const e=await import(n);if(typeof e.createElement!="function"||typeof e.createRoot!="function"||typeof e.useEffect!="function"||typeof e.useRef!="function"||typeof e.flushSync!="function")throw new Error(`The packaged runtime's synthetic react-world-runtime module ("${n}") did not export createElement/createRoot/useEffect/useRef/flushSync as functions — see vite-plugin-module-doorways.ts.`);return{createElement:e.createElement,createRoot:e.createRoot,useEffect:e.useEffect,useRef:e.useRef,flushSync:e.flushSync}}let r=null;async function p(){return await c()?(r||(r=d()),r):l()}const E={pixiRuntime:f,reactDomRuntime:p,threeIngestRuntime:R};function y(e,t){return async(a,g,h,u)=>await import(s(e,a,t,u))}async function I(e,t){return{id:await c()?"packaged":"dev",projectRoot:e,epoch:t,loadEntryModule:y(e,t),entryReach:"full",...E}}export{I as a,p as r};
@@ -1 +1 @@
1
- import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{a as l}from"./three-contract-Dkt6PmWY.js";import{reflectionProbeOf as m}from"./reflection-probe-sIto9mh0.js";import{r as d}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{bQ as f,fe as h,ff as a,aL as s,a6 as x}from"./index-ClgrFOcX.js";import{u as b}from"./three-state-_ImCbP87.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./editor-shell-store-aKHbAoCV.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./Pass-D1MRT672.js";import"./editor-layers-DwaX5UFy.js";import"./workspace-arrangement-86_8Kk5K.js";import"./user-data-DL6HsBPf.js";import"./entity-object-BLJ-I8XT.js";function j(r,o){return r?.kind==="reflection-probe"}const g={idle:"Not captured",queued:"Capture queued",capturing:"Capturing…",ready:"Ready",error:"Capture failed"},C={status:"idle",lastCapturedAt:null};function S({adapter:r,nodeId:o}){const i=b(),c=o?i.objectMap.get(o)??l(r.hierarchy,o):null,e=m(c),n=d.useSyncExternalStore(u=>e?.subscribe(u)??(()=>{}),()=>e?.getSnapshot()??C);if(!e)return null;const p=e.config.captureMode==="on-change"?"On change":e.config.captureMode==="realtime"?"Realtime":"Manual";return t.jsxs(t.Fragment,{children:[n.status==="error"&&n.message?t.jsx(f,{tone:"error",children:n.message}):null,t.jsxs(h,{children:[t.jsx(a,{label:"Status",children:t.jsx(s,{tone:n.status==="error"?"danger":n.status==="ready"?"success":"muted",children:g[n.status]})}),t.jsx(a,{label:"Update",children:t.jsx(s,{tone:"muted",children:p})}),t.jsx(a,{label:"Cubemap",children:t.jsx(s,{tone:"muted",children:`${e.config.resolution} × ${e.config.resolution}`})}),t.jsx(a,{label:"Capture",children:t.jsx(x,{size:"compact",disabled:n.status==="capturing",onClick:()=>e.recapture(),children:"Recapture"})})]})]})}const v="selection.inspector",D="Capture",J="camera-rotate",K=500;function V(r,o){return j(r)}function W({adapter:r,nodeId:o}){return t.jsx(S,{adapter:r,nodeId:o})}export{W as default,J as icon,V as match,K as order,v as point,D as title};
1
+ import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{a as l}from"./three-contract-Dkt6PmWY.js";import{reflectionProbeOf as m}from"./reflection-probe-sIto9mh0.js";import{r as d}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{bQ as f,fe as h,ff as a,aL as s,a6 as x}from"./index-BfqJPhFO.js";import{u as b}from"./three-state-cYB28OIz.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./editor-shell-store-B3c29A3l.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./Pass-D1MRT672.js";import"./editor-layers-k0AjpomL.js";import"./workspace-arrangement-BXM0R-Uu.js";import"./user-data-CTT8ZvVB.js";import"./entity-object-BOLh6DVA.js";function j(r,o){return r?.kind==="reflection-probe"}const g={idle:"Not captured",queued:"Capture queued",capturing:"Capturing…",ready:"Ready",error:"Capture failed"},C={status:"idle",lastCapturedAt:null};function S({adapter:r,nodeId:o}){const i=b(),c=o?i.objectMap.get(o)??l(r.hierarchy,o):null,e=m(c),n=d.useSyncExternalStore(u=>e?.subscribe(u)??(()=>{}),()=>e?.getSnapshot()??C);if(!e)return null;const p=e.config.captureMode==="on-change"?"On change":e.config.captureMode==="realtime"?"Realtime":"Manual";return t.jsxs(t.Fragment,{children:[n.status==="error"&&n.message?t.jsx(f,{tone:"error",children:n.message}):null,t.jsxs(h,{children:[t.jsx(a,{label:"Status",children:t.jsx(s,{tone:n.status==="error"?"danger":n.status==="ready"?"success":"muted",children:g[n.status]})}),t.jsx(a,{label:"Update",children:t.jsx(s,{tone:"muted",children:p})}),t.jsx(a,{label:"Cubemap",children:t.jsx(s,{tone:"muted",children:`${e.config.resolution} × ${e.config.resolution}`})}),t.jsx(a,{label:"Capture",children:t.jsx(x,{size:"compact",disabled:n.status==="capturing",onClick:()=>e.recapture(),children:"Recapture"})})]})]})}const v="selection.inspector",D="Capture",J="camera-rotate",K=500;function V(r,o){return j(r)}function W({adapter:r,nodeId:o}){return t.jsx(S,{adapter:r,nodeId:o})}export{W as default,J as icon,V as match,K as order,v as point,D as title};
@@ -1 +1 @@
1
- import{af as l,ag as d}from"./index-ClgrFOcX.js";const f=Object.assign({}),$=Object.assign({}),c=Object.assign({}),o="volter.adapter.ts",g="packages/editor/src/ingest/games";function b(t){return c[u(t,o)]?`${g}/${t}/${o}`:null}async function M(t){const e=c[u(t,o)];return e?await e():null}const h=Object.assign({}),p=/^\.\/games\/([^/]+)\/volter\.project\.json$/;function u(t,e){return`./games/${t}/${e}`}function m(t){const e=p.exec(t);if(!e?.[1])throw new Error(`ingest registry: unexpected manifest glob key "${t}"`);return e[1]}function E(t,e){const a=l(e,{configurationKinds:"defer"}),n=d(a);if(n.length!==1)throw new Error(`ingest registry: "${t}/volter.project.json" must declare exactly one root (found ${n.length}).`);const r=n[0];if(r.adapter.type!=="ingest")throw new Error(`ingest registry: "${t}/volter.project.json"'s root must be an { ingest } root (found adapter identity "${r.adapter.identity}").`);const i=r;return{folderId:t,manifest:a,root:i,surface:i.adapter.surface}}let s=null;function y(){return s||(s=Object.entries(f).map(([t,e])=>E(m(t),e)).sort((t,e)=>t.folderId.localeCompare(e.folderId))),s}function R(t){return y().filter(e=>e.surface===t)}export{b as a,R as b,h as c,$ as e,u as g,M as i};
1
+ import{af as l,ag as d}from"./index-BfqJPhFO.js";const f=Object.assign({}),$=Object.assign({}),c=Object.assign({}),o="volter.adapter.ts",g="packages/editor/src/ingest/games";function b(t){return c[u(t,o)]?`${g}/${t}/${o}`:null}async function M(t){const e=c[u(t,o)];return e?await e():null}const h=Object.assign({}),p=/^\.\/games\/([^/]+)\/volter\.project\.json$/;function u(t,e){return`./games/${t}/${e}`}function m(t){const e=p.exec(t);if(!e?.[1])throw new Error(`ingest registry: unexpected manifest glob key "${t}"`);return e[1]}function E(t,e){const a=l(e,{configurationKinds:"defer"}),n=d(a);if(n.length!==1)throw new Error(`ingest registry: "${t}/volter.project.json" must declare exactly one root (found ${n.length}).`);const r=n[0];if(r.adapter.type!=="ingest")throw new Error(`ingest registry: "${t}/volter.project.json"'s root must be an { ingest } root (found adapter identity "${r.adapter.identity}").`);const i=r;return{folderId:t,manifest:a,root:i,surface:i.adapter.surface}}let s=null;function y(){return s||(s=Object.entries(f).map(([t,e])=>E(m(t),e)).sort((t,e)=>t.folderId.localeCompare(e.folderId))),s}function R(t){return y().filter(e=>e.surface===t)}export{b as a,R as b,h as c,$ as e,u as g,M as i};
@@ -1 +1 @@
1
- import{bU as l,dv as h,bV as d}from"./index-ClgrFOcX.js";function w(r){const c=(t,e,n,a)=>l({resolve:()=>n?{reaches:"writer",anchorKind:"source-structure",destination:a,write:t}:d(r.noWriterReason),record:()=>{},report:o=>r.report(`"${e}" stays live-only — ${o}.`)}),s=(t,e)=>l({resolve:()=>d(t),record:()=>{},report:n=>{r.report(n),e&&h(e)}});return{pipedStruct:c,structRefusal:s,structOp:(t,e,n,a,o)=>t?c(async()=>{const u=await r.backend().writeStruct(t,n,a);return u.changed?(await r.onChanged(),!0):(r.report(`struct "${n}" refused/no-op for oid "${t}": ${u.error??"no change"}`),!1)},n,r.backend()?.writeStruct!==void 0,o):s(`"${n}" refused: "${e}" has no source stamp.`),structMany:(t,e,n,a)=>c(async()=>{const i=await r.backend().writeStructMany(t,e,n);return i.changed?(await r.onChanged(),!0):(r.report(`batch "${e}" refused/no-op: ${i.error??"no change"}`),!1)},`${e} (batch)`,r.backend()?.writeStructMany!==void 0,a)}}function $(r,c){const s=p(r).split("/").filter(Boolean).slice(0,-1),t=p(c).replace(/\.[cm]?[jt]sx?$/,"").split("/").filter(Boolean);let e=0;for(;e<s.length&&e<t.length&&s[e]===t[e];)e+=1;const a=[...new Array(s.length-e).fill(".."),...t.slice(e)].join("/");return a.startsWith(".")?a:`./${a}`}function p(r){return r.replace(/\\/g,"/").replace(/^\.\//,"")}export{w as c,$ as r};
1
+ import{bU as l,dv as h,bV as d}from"./index-BfqJPhFO.js";function w(r){const c=(t,e,n,a)=>l({resolve:()=>n?{reaches:"writer",anchorKind:"source-structure",destination:a,write:t}:d(r.noWriterReason),record:()=>{},report:o=>r.report(`"${e}" stays live-only — ${o}.`)}),s=(t,e)=>l({resolve:()=>d(t),record:()=>{},report:n=>{r.report(n),e&&h(e)}});return{pipedStruct:c,structRefusal:s,structOp:(t,e,n,a,o)=>t?c(async()=>{const u=await r.backend().writeStruct(t,n,a);return u.changed?(await r.onChanged(),!0):(r.report(`struct "${n}" refused/no-op for oid "${t}": ${u.error??"no change"}`),!1)},n,r.backend()?.writeStruct!==void 0,o):s(`"${n}" refused: "${e}" has no source stamp.`),structMany:(t,e,n,a)=>c(async()=>{const i=await r.backend().writeStructMany(t,e,n);return i.changed?(await r.onChanged(),!0):(r.report(`batch "${e}" refused/no-op: ${i.error??"no change"}`),!1)},`${e} (batch)`,r.backend()?.writeStructMany!==void 0,a)}}function $(r,c){const s=p(r).split("/").filter(Boolean).slice(0,-1),t=p(c).replace(/\.[cm]?[jt]sx?$/,"").split("/").filter(Boolean);let e=0;for(;e<s.length&&e<t.length&&s[e]===t[e];)e+=1;const a=[...new Array(s.length-e).fill(".."),...t.slice(e)].join("/");return a.startsWith(".")?a:`./${a}`}function p(r){return r.replace(/\\/g,"/").replace(/^\.\//,"")}export{w as c,$ as r};
@@ -1 +1 @@
1
- import{buildRenderingZod as a}from"./render-features-sSb1-c5x.js";import{u as o,c6 as e,c5 as i,w as t,v as s,c4 as n}from"./index-ClgrFOcX.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const r=o({mode:n(["none","linear","reinhard","cineon","aces","agx"]).optional().describe("Tone mapping operator"),exposure:e().optional().describe("Exposure level")}).describe("Tone mapping configuration"),l=o({bloom:o({enabled:i().optional().describe("Enable bloom effect"),intensity:e().optional().describe("Bloom intensity multiplier"),luminanceThreshold:e().optional().describe("Minimum luminance to trigger bloom"),luminanceSmoothing:e().optional().describe("Smoothing applied to luminance threshold")}).optional().describe("Bloom glow effect"),vignette:o({enabled:i().optional().describe("Enable vignette effect"),darkness:e().optional().describe("Vignette darkness intensity"),offset:e().optional().describe("Vignette offset from center")}).optional().describe("Screen-edge darkening effect"),brightnessContrast:o({enabled:i().optional().describe("Enable brightness/contrast adjustment"),brightness:e().optional().describe("Brightness adjustment (-1 to 1)"),contrast:e().optional().describe("Contrast adjustment (-1 to 1)")}).optional().describe("Brightness and contrast color adjustment"),hueSaturation:o({enabled:i().optional().describe("Enable hue/saturation adjustment"),hue:e().optional().describe("Hue rotation in radians"),saturation:e().optional().describe("Saturation adjustment (-1 to 1)")}).optional().describe("Hue rotation and saturation color adjustment"),sepia:o({enabled:i().optional().describe("Enable sepia tone"),intensity:e().optional().describe("Sepia effect intensity (0 to 1)")}).optional().describe("Warm sepia tone for vintage photograph look"),colorDepth:o({enabled:i().optional().describe("Enable color depth reduction"),bits:e().optional().describe("Number of color bits per channel (1–16)")}).optional().describe("Reduce color bit depth for posterized/banded look"),chromaticAberration:o({enabled:i().optional().describe("Enable chromatic aberration"),offsetX:e().optional().describe("Horizontal color fringe offset"),offsetY:e().optional().describe("Vertical color fringe offset"),radialModulation:i().optional().describe("Increase effect toward screen edges"),modulationOffset:e().optional().describe("Radial modulation offset from center")}).optional().describe("Lens chromatic aberration (color fringing at screen edges)"),lensDistortion:o({enabled:i().optional().describe("Enable lens distortion"),distortionX:e().optional().describe("Horizontal barrel/pincushion distortion"),distortionY:e().optional().describe("Vertical barrel/pincushion distortion"),focalLengthX:e().optional().describe("Horizontal focal length"),focalLengthY:e().optional().describe("Vertical focal length"),skew:e().optional().describe("Lens skew angle")}).optional().describe("Barrel/pincushion lens distortion"),depthOfField:o({enabled:i().optional().describe("Enable depth of field"),worldFocusDistance:e().optional().describe("Focus distance in world units"),worldFocusRange:e().optional().describe("Focus range in world units"),bokehScale:e().optional().describe("Bokeh blur scale"),focalLength:e().optional().describe("Camera focal length in mm")}).optional().describe("Physically-based depth of field with bokeh blur"),tiltShift:o({enabled:i().optional().describe("Enable tilt-shift effect"),offset:e().optional().describe("Focus band offset from center"),rotation:e().optional().describe("Focus band rotation in radians"),focusArea:e().optional().describe("Focus band width (0–1)"),feather:e().optional().describe("Blur falloff smoothness")}).optional().describe("Tilt-shift miniature-world blur effect"),noise:o({enabled:i().optional().describe("Enable film grain noise"),premultiply:i().optional().describe("Multiply noise with input color instead of adding")}).optional().describe("Random per-pixel noise overlay (film grain)"),scanline:o({enabled:i().optional().describe("Enable scanline overlay"),density:e().optional().describe("Number of scanlines across screen height")}).optional().describe("Horizontal scanline overlay (CRT monitor look)"),dotScreen:o({enabled:i().optional().describe("Enable dot screen halftone"),angle:e().optional().describe("Pattern angle in radians"),scale:e().optional().describe("Pattern dot scale")}).optional().describe("Halftone dot pattern (newspaper/comic look)"),grid:o({enabled:i().optional().describe("Enable grid overlay"),scale:e().optional().describe("Grid cell scale"),lineWidth:e().optional().describe("Grid line width")}).optional().describe("Visible grid pattern overlay"),pixelation:o({enabled:i().optional().describe("Enable pixelation"),granularity:e().optional().describe("Pixel size (higher = more pixelated)")}).optional().describe("Reduce resolution for pixel-art / mosaic effect"),glitch:o({enabled:i().optional().describe("Enable digital glitch effect"),delayX:e().optional().describe("Minimum delay between glitches (seconds)"),delayY:e().optional().describe("Maximum delay between glitches (seconds)"),durationX:e().optional().describe("Minimum glitch duration (seconds)"),durationY:e().optional().describe("Maximum glitch duration (seconds)"),strengthX:e().optional().describe("Minimum glitch strength"),strengthY:e().optional().describe("Maximum glitch strength"),columns:e().optional().describe("Number of glitch columns"),ratio:e().optional().describe("Glitch ratio (0–1)")}).optional().describe("Random digital glitch artifacts (block displacement, color shifting)"),shockWave:o({enabled:i().optional().describe("Enable shock wave distortion"),speed:e().optional().describe("Wave propagation speed"),maxRadius:e().optional().describe("Maximum wave radius"),waveSize:e().optional().describe("Width of the distortion wave"),amplitude:e().optional().describe("Distortion strength"),positionX:e().optional().describe("Wave origin X in world space"),positionY:e().optional().describe("Wave origin Y in world space"),positionZ:e().optional().describe("Wave origin Z in world space")}).optional().describe("Expanding spherical distortion wave from a point"),smaa:o({enabled:i().optional().describe("Enable SMAA anti-aliasing"),preset:n(["low","medium","high","ultra"]).optional().describe("Quality preset (higher = better quality, more cost)")}).optional().describe("Subpixel Morphological Anti-Aliasing"),ssao:o({enabled:i().optional().describe("Enable screen-space ambient occlusion"),radius:e().optional().describe("Occlusion sampling radius"),intensity:e().optional().describe("Occlusion intensity multiplier"),bias:e().optional().describe("Depth bias to reduce self-occlusion artifacts"),samples:e().optional().describe("Number of occlusion samples per pixel"),rings:e().optional().describe("Number of spiral sample rings"),fade:e().optional().describe("Distance at which occlusion fades out"),color:t().optional().describe("Occlusion tint color as CSS hex")}).optional().describe("Screen-space ambient occlusion (darken creases and crevices)"),n8ao:o({enabled:i().optional().describe("Enable N8AO ambient occlusion"),aoSamples:e().optional().describe("Number of AO samples (default 16)"),aoRadius:e().optional().describe("AO sampling radius in world units"),intensity:e().optional().describe("AO intensity multiplier"),denoiseSamples:e().optional().describe("Number of denoise samples"),denoiseRadius:e().optional().describe("Denoise blur radius"),distanceFalloff:e().optional().describe("AO distance falloff"),screenSpaceRadius:i().optional().describe("Use screen-space radius instead of world-space"),color:t().optional().describe("AO tint color as CSS hex"),halfRes:i().optional().describe("Render AO at half resolution for performance")}).optional().describe("High-quality ambient occlusion (N8AO — alternative to SSAO)"),godRays:o({enabled:i().optional().describe("Enable god rays"),sourceEntity:t().optional().describe("Entity ID of the light source mesh"),density:e().optional().describe("Ray density"),decay:e().optional().describe("Ray intensity decay along distance"),weight:e().optional().describe("Ray weight / brightness"),exposure:e().optional().describe("Overall god ray exposure"),samples:e().optional().describe("Number of ray-march samples")}).optional().describe("Volumetric light shafts from a light source entity"),outline:o({enabled:i().optional().describe("Enable outline effect"),tags:s(t()).optional().describe("Entity tags to outline"),edgeStrength:e().optional().describe("Outline edge thickness / strength"),pulseSpeed:e().optional().describe("Outline pulse animation speed (0 = no pulse)"),visibleEdgeColor:t().optional().describe("Color of visible edges as CSS hex"),hiddenEdgeColor:t().optional().describe("Color of hidden/occluded edges as CSS hex"),xRay:i().optional().describe("Show outline through occluding objects")}).optional().describe("Highlight entities matching tags with colored outlines"),ssr:o({enabled:i().optional().describe("Enable screen-space reflections"),intensity:e().optional().describe("Reflection intensity"),exponent:e().optional().describe("Reflection falloff exponent"),distance:e().optional().describe("Maximum reflection ray distance"),thickness:e().optional().describe("Depth thickness for hit testing"),maxRoughness:e().optional().describe("Maximum roughness for reflections (0–1)")}).optional().describe("Screen-space reflections for reflective/glossy surfaces"),ssgi:o({enabled:i().optional().describe("Enable screen-space global illumination"),intensity:e().optional().describe("Indirect light intensity"),distance:e().optional().describe("Maximum GI ray distance"),thickness:e().optional().describe("Depth thickness for hit testing"),maxRoughness:e().optional().describe("Maximum roughness for GI (0–1)")}).optional().describe("Screen-space global illumination (indirect lighting bounce)"),motionBlur:o({enabled:i().optional().describe("Enable motion blur"),intensity:e().optional().describe("Motion blur intensity"),jitter:e().optional().describe("Sample jitter amount"),samples:e().optional().describe("Number of blur samples")}).optional().describe("Per-object motion blur from camera and object movement")}).describe("Post-processing effects"),S=o({toneMapping:r.optional().describe("Tone mapping configuration"),postProcessing:l.optional().describe("Post-processing effects (bloom, vignette, SSAO, SSR, ...)"),rendering:a().optional().describe("Render feature toggles (auto-batching, culling, LOD, shadows, etc.). Omit a field to inherit the engine default. Derived from the render-feature registry.")}).describe("Renderer-level settings read by setup/setup-renderer.ts");export{l as PostProcessingDescriptorSchema,S as RenderEnvironmentSchema,r as ToneMappingDescriptorSchema};
1
+ import{buildRenderingZod as a}from"./render-features-D7pQr-dE.js";import{u as o,c6 as e,c5 as i,w as t,v as s,c4 as n}from"./index-BfqJPhFO.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const r=o({mode:n(["none","linear","reinhard","cineon","aces","agx"]).optional().describe("Tone mapping operator"),exposure:e().optional().describe("Exposure level")}).describe("Tone mapping configuration"),l=o({bloom:o({enabled:i().optional().describe("Enable bloom effect"),intensity:e().optional().describe("Bloom intensity multiplier"),luminanceThreshold:e().optional().describe("Minimum luminance to trigger bloom"),luminanceSmoothing:e().optional().describe("Smoothing applied to luminance threshold")}).optional().describe("Bloom glow effect"),vignette:o({enabled:i().optional().describe("Enable vignette effect"),darkness:e().optional().describe("Vignette darkness intensity"),offset:e().optional().describe("Vignette offset from center")}).optional().describe("Screen-edge darkening effect"),brightnessContrast:o({enabled:i().optional().describe("Enable brightness/contrast adjustment"),brightness:e().optional().describe("Brightness adjustment (-1 to 1)"),contrast:e().optional().describe("Contrast adjustment (-1 to 1)")}).optional().describe("Brightness and contrast color adjustment"),hueSaturation:o({enabled:i().optional().describe("Enable hue/saturation adjustment"),hue:e().optional().describe("Hue rotation in radians"),saturation:e().optional().describe("Saturation adjustment (-1 to 1)")}).optional().describe("Hue rotation and saturation color adjustment"),sepia:o({enabled:i().optional().describe("Enable sepia tone"),intensity:e().optional().describe("Sepia effect intensity (0 to 1)")}).optional().describe("Warm sepia tone for vintage photograph look"),colorDepth:o({enabled:i().optional().describe("Enable color depth reduction"),bits:e().optional().describe("Number of color bits per channel (1–16)")}).optional().describe("Reduce color bit depth for posterized/banded look"),chromaticAberration:o({enabled:i().optional().describe("Enable chromatic aberration"),offsetX:e().optional().describe("Horizontal color fringe offset"),offsetY:e().optional().describe("Vertical color fringe offset"),radialModulation:i().optional().describe("Increase effect toward screen edges"),modulationOffset:e().optional().describe("Radial modulation offset from center")}).optional().describe("Lens chromatic aberration (color fringing at screen edges)"),lensDistortion:o({enabled:i().optional().describe("Enable lens distortion"),distortionX:e().optional().describe("Horizontal barrel/pincushion distortion"),distortionY:e().optional().describe("Vertical barrel/pincushion distortion"),focalLengthX:e().optional().describe("Horizontal focal length"),focalLengthY:e().optional().describe("Vertical focal length"),skew:e().optional().describe("Lens skew angle")}).optional().describe("Barrel/pincushion lens distortion"),depthOfField:o({enabled:i().optional().describe("Enable depth of field"),worldFocusDistance:e().optional().describe("Focus distance in world units"),worldFocusRange:e().optional().describe("Focus range in world units"),bokehScale:e().optional().describe("Bokeh blur scale"),focalLength:e().optional().describe("Camera focal length in mm")}).optional().describe("Physically-based depth of field with bokeh blur"),tiltShift:o({enabled:i().optional().describe("Enable tilt-shift effect"),offset:e().optional().describe("Focus band offset from center"),rotation:e().optional().describe("Focus band rotation in radians"),focusArea:e().optional().describe("Focus band width (0–1)"),feather:e().optional().describe("Blur falloff smoothness")}).optional().describe("Tilt-shift miniature-world blur effect"),noise:o({enabled:i().optional().describe("Enable film grain noise"),premultiply:i().optional().describe("Multiply noise with input color instead of adding")}).optional().describe("Random per-pixel noise overlay (film grain)"),scanline:o({enabled:i().optional().describe("Enable scanline overlay"),density:e().optional().describe("Number of scanlines across screen height")}).optional().describe("Horizontal scanline overlay (CRT monitor look)"),dotScreen:o({enabled:i().optional().describe("Enable dot screen halftone"),angle:e().optional().describe("Pattern angle in radians"),scale:e().optional().describe("Pattern dot scale")}).optional().describe("Halftone dot pattern (newspaper/comic look)"),grid:o({enabled:i().optional().describe("Enable grid overlay"),scale:e().optional().describe("Grid cell scale"),lineWidth:e().optional().describe("Grid line width")}).optional().describe("Visible grid pattern overlay"),pixelation:o({enabled:i().optional().describe("Enable pixelation"),granularity:e().optional().describe("Pixel size (higher = more pixelated)")}).optional().describe("Reduce resolution for pixel-art / mosaic effect"),glitch:o({enabled:i().optional().describe("Enable digital glitch effect"),delayX:e().optional().describe("Minimum delay between glitches (seconds)"),delayY:e().optional().describe("Maximum delay between glitches (seconds)"),durationX:e().optional().describe("Minimum glitch duration (seconds)"),durationY:e().optional().describe("Maximum glitch duration (seconds)"),strengthX:e().optional().describe("Minimum glitch strength"),strengthY:e().optional().describe("Maximum glitch strength"),columns:e().optional().describe("Number of glitch columns"),ratio:e().optional().describe("Glitch ratio (0–1)")}).optional().describe("Random digital glitch artifacts (block displacement, color shifting)"),shockWave:o({enabled:i().optional().describe("Enable shock wave distortion"),speed:e().optional().describe("Wave propagation speed"),maxRadius:e().optional().describe("Maximum wave radius"),waveSize:e().optional().describe("Width of the distortion wave"),amplitude:e().optional().describe("Distortion strength"),positionX:e().optional().describe("Wave origin X in world space"),positionY:e().optional().describe("Wave origin Y in world space"),positionZ:e().optional().describe("Wave origin Z in world space")}).optional().describe("Expanding spherical distortion wave from a point"),smaa:o({enabled:i().optional().describe("Enable SMAA anti-aliasing"),preset:n(["low","medium","high","ultra"]).optional().describe("Quality preset (higher = better quality, more cost)")}).optional().describe("Subpixel Morphological Anti-Aliasing"),ssao:o({enabled:i().optional().describe("Enable screen-space ambient occlusion"),radius:e().optional().describe("Occlusion sampling radius"),intensity:e().optional().describe("Occlusion intensity multiplier"),bias:e().optional().describe("Depth bias to reduce self-occlusion artifacts"),samples:e().optional().describe("Number of occlusion samples per pixel"),rings:e().optional().describe("Number of spiral sample rings"),fade:e().optional().describe("Distance at which occlusion fades out"),color:t().optional().describe("Occlusion tint color as CSS hex")}).optional().describe("Screen-space ambient occlusion (darken creases and crevices)"),n8ao:o({enabled:i().optional().describe("Enable N8AO ambient occlusion"),aoSamples:e().optional().describe("Number of AO samples (default 16)"),aoRadius:e().optional().describe("AO sampling radius in world units"),intensity:e().optional().describe("AO intensity multiplier"),denoiseSamples:e().optional().describe("Number of denoise samples"),denoiseRadius:e().optional().describe("Denoise blur radius"),distanceFalloff:e().optional().describe("AO distance falloff"),screenSpaceRadius:i().optional().describe("Use screen-space radius instead of world-space"),color:t().optional().describe("AO tint color as CSS hex"),halfRes:i().optional().describe("Render AO at half resolution for performance")}).optional().describe("High-quality ambient occlusion (N8AO — alternative to SSAO)"),godRays:o({enabled:i().optional().describe("Enable god rays"),sourceEntity:t().optional().describe("Entity ID of the light source mesh"),density:e().optional().describe("Ray density"),decay:e().optional().describe("Ray intensity decay along distance"),weight:e().optional().describe("Ray weight / brightness"),exposure:e().optional().describe("Overall god ray exposure"),samples:e().optional().describe("Number of ray-march samples")}).optional().describe("Volumetric light shafts from a light source entity"),outline:o({enabled:i().optional().describe("Enable outline effect"),tags:s(t()).optional().describe("Entity tags to outline"),edgeStrength:e().optional().describe("Outline edge thickness / strength"),pulseSpeed:e().optional().describe("Outline pulse animation speed (0 = no pulse)"),visibleEdgeColor:t().optional().describe("Color of visible edges as CSS hex"),hiddenEdgeColor:t().optional().describe("Color of hidden/occluded edges as CSS hex"),xRay:i().optional().describe("Show outline through occluding objects")}).optional().describe("Highlight entities matching tags with colored outlines"),ssr:o({enabled:i().optional().describe("Enable screen-space reflections"),intensity:e().optional().describe("Reflection intensity"),exponent:e().optional().describe("Reflection falloff exponent"),distance:e().optional().describe("Maximum reflection ray distance"),thickness:e().optional().describe("Depth thickness for hit testing"),maxRoughness:e().optional().describe("Maximum roughness for reflections (0–1)")}).optional().describe("Screen-space reflections for reflective/glossy surfaces"),ssgi:o({enabled:i().optional().describe("Enable screen-space global illumination"),intensity:e().optional().describe("Indirect light intensity"),distance:e().optional().describe("Maximum GI ray distance"),thickness:e().optional().describe("Depth thickness for hit testing"),maxRoughness:e().optional().describe("Maximum roughness for GI (0–1)")}).optional().describe("Screen-space global illumination (indirect lighting bounce)"),motionBlur:o({enabled:i().optional().describe("Enable motion blur"),intensity:e().optional().describe("Motion blur intensity"),jitter:e().optional().describe("Sample jitter amount"),samples:e().optional().describe("Number of blur samples")}).optional().describe("Per-object motion blur from camera and object movement")}).describe("Post-processing effects"),S=o({toneMapping:r.optional().describe("Tone mapping configuration"),postProcessing:l.optional().describe("Post-processing effects (bloom, vignette, SSAO, SSR, ...)"),rendering:a().optional().describe("Render feature toggles (auto-batching, culling, LOD, shadows, etc.). Omit a field to inherit the engine default. Derived from the render-feature registry.")}).describe("Renderer-level settings read by setup/setup-renderer.ts");export{l as PostProcessingDescriptorSchema,S as RenderEnvironmentSchema,r as ToneMappingDescriptorSchema};
@@ -1 +1 @@
1
- import{c4 as l,u as o,c5 as a,c6 as s}from"./index-ClgrFOcX.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const r=[{key:"frustumCulling",label:"Frustum culling",description:"Per-instance frustum culling for batched content.",kind:"toggle",default:!0,apply:"live",perEntity:!0},{key:"shadows",label:"Shadows",description:"Enable the shadow map. Per-entity cast/receive still applies.",kind:"toggle",default:!0,apply:"live",perEntity:!0},{key:"postProcessing",label:"Post-processing",description:"Master switch for the post-processing stack (individual effects nest beneath it).",kind:"toggle",default:!0,apply:"live",perEntity:!1},{key:"resolutionScale",label:"Resolution scale",description:"Device-pixel-ratio multiplier (1.0 = native). The cheapest perf dial.",kind:"number",default:1,apply:"live",perEntity:!1,range:[.25,2]},{key:"antialias",label:"Antialiasing",description:"MSAA via renderer construction. Applies on reload (renderer re-init).",kind:"toggle",default:!0,apply:"reload",perEntity:!1}],b=new Map(r.map(t=>[t.key,t]));function h(t={}){const n={};for(const e of r){if(t.perEntityOnly&&!e.perEntity)continue;let i;e.kind==="toggle"?i=a():e.kind==="number"?i=s():i=l(e.options),n[e.key]=i.optional().describe(e.description)}return o(n).describe(t.perEntityOnly?"Per-entity render overrides (omit a field to inherit from the scene/engine default)":"Scene render settings (omit a field to inherit the engine default)")}export{r as RENDER_FEATURES,b as RENDER_FEATURE_BY_KEY,h as buildRenderingZod};
1
+ import{c4 as l,u as o,c5 as a,c6 as s}from"./index-BfqJPhFO.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const r=[{key:"frustumCulling",label:"Frustum culling",description:"Per-instance frustum culling for batched content.",kind:"toggle",default:!0,apply:"live",perEntity:!0},{key:"shadows",label:"Shadows",description:"Enable the shadow map. Per-entity cast/receive still applies.",kind:"toggle",default:!0,apply:"live",perEntity:!0},{key:"postProcessing",label:"Post-processing",description:"Master switch for the post-processing stack (individual effects nest beneath it).",kind:"toggle",default:!0,apply:"live",perEntity:!1},{key:"resolutionScale",label:"Resolution scale",description:"Device-pixel-ratio multiplier (1.0 = native). The cheapest perf dial.",kind:"number",default:1,apply:"live",perEntity:!1,range:[.25,2]},{key:"antialias",label:"Antialiasing",description:"MSAA via renderer construction. Applies on reload (renderer re-init).",kind:"toggle",default:!0,apply:"reload",perEntity:!1}],b=new Map(r.map(t=>[t.key,t]));function h(t={}){const n={};for(const e of r){if(t.perEntityOnly&&!e.perEntity)continue;let i;e.kind==="toggle"?i=a():e.kind==="number"?i=s():i=l(e.options),n[e.key]=i.optional().describe(e.description)}return o(n).describe(t.perEntityOnly?"Per-entity render overrides (omit a field to inherit from the scene/engine default)":"Scene render settings (omit a field to inherit the engine default)")}export{r as RENDER_FEATURES,b as RENDER_FEATURE_BY_KEY,h as buildRenderingZod};
@@ -1 +1 @@
1
- import{RENDER_FEATURES as o}from"./render-features-sSb1-c5x.js";import"./index-ClgrFOcX.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 n(r,t){const s={};for(const e of o){const i=e.perEntity?t?.[e.key]:void 0;s[e.key]=i??r?.[e.key]??e.default}return s}class E{values;listeners=new Set;constructor(t){this.values=n(t)}get(t){return this.values[t]}set(t,s){if(this.values[t]!==s){this.values[t]=s;for(const e of this.listeners)e(t,s)}}forEntity(t,s){return s?.[t]??this.values[t]}subscribe(t){return this.listeners.add(t),()=>this.listeners.delete(t)}snapshot(){return{...this.values}}}export{E as RenderSettings,n as resolveRenderSettings};
1
+ import{RENDER_FEATURES as o}from"./render-features-D7pQr-dE.js";import"./index-BfqJPhFO.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 n(r,t){const s={};for(const e of o){const i=e.perEntity?t?.[e.key]:void 0;s[e.key]=i??r?.[e.key]??e.default}return s}class E{values;listeners=new Set;constructor(t){this.values=n(t)}get(t){return this.values[t]}set(t,s){if(this.values[t]!==s){this.values[t]=s;for(const e of this.listeners)e(t,s)}}forEntity(t,s){return s?.[t]??this.values[t]}subscribe(t){return this.listeners.add(t),()=>this.listeners.delete(t)}snapshot(){return{...this.values}}}export{E as RenderSettings,n as resolveRenderSettings};