@volter/game-editor 0.5.65

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 (653) hide show
  1. package/BUNDLED_NOTICES +11228 -0
  2. package/LICENSE +686 -0
  3. package/LICENSE-BLENDER +1409 -0
  4. package/LICENSE-MCP +21 -0
  5. package/NOTICE +21 -0
  6. package/catalog/entries/audio.json +14 -0
  7. package/catalog/entries/bake.json +36 -0
  8. package/catalog/entries/blender.json +17 -0
  9. package/catalog/entries/react-root.json +24 -0
  10. package/catalog/entries/reflections.json +29 -0
  11. package/catalog/entries/static-batch.json +25 -0
  12. package/catalog/project-source/LICENSE +37 -0
  13. package/catalog/project-source/src/contributions/bake.kind.ts +40 -0
  14. package/catalog/project-source/src/contributions/builder-document.tsx +65 -0
  15. package/catalog/project-source/src/contributions/builder-state.ts +27 -0
  16. package/catalog/project-source/src/contributions/builder-ui.tsx +61 -0
  17. package/catalog/project-source/src/contributions/module-source.ts +502 -0
  18. package/catalog/project-source/src/contributions/pages.finder.ts +61 -0
  19. package/catalog/project-source/src/lib/audio/sfx.ts +255 -0
  20. package/catalog/project-source/src/lib/bake/asset-seed.ts +128 -0
  21. package/catalog/project-source/src/lib/bake/bake-schema.ts +65 -0
  22. package/catalog/project-source/src/lib/bake/clip-layering.ts +203 -0
  23. package/catalog/project-source/src/lib/bake/gltf-bake.ts +657 -0
  24. package/catalog/project-source/src/lib/bake/mesh-slice.ts +157 -0
  25. package/catalog/project-source/src/lib/bake/node-image.ts +463 -0
  26. package/catalog/project-source/src/lib/bake/object3d-bake.ts +121 -0
  27. package/catalog/project-source/src/lib/bake/object3d-lifecycle.ts +15 -0
  28. package/catalog/project-source/src/lib/bake/object3d-source.ts +8 -0
  29. package/catalog/project-source/src/lib/bake/params.ts +75 -0
  30. package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +217 -0
  31. package/catalog/project-source/src/lib/bake/use-model.ts +95 -0
  32. package/catalog/project-source/src/lib/react-root/index.ts +20 -0
  33. package/catalog/project-source/src/lib/react-root/react-root-adapter.tsx +57 -0
  34. package/catalog/project-source/src/lib/reflections/ReflectionProbe.tsx +201 -0
  35. package/catalog/project-source/src/lib/reflections/index.ts +19 -0
  36. package/catalog/project-source/src/lib/reflections/probe-controller.ts +75 -0
  37. package/catalog/project-source/src/lib/reflections/reflection-probe-registry.ts +402 -0
  38. package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +416 -0
  39. package/catalog/project-source/src/lib/static-batch/Frozen.tsx +91 -0
  40. package/catalog/project-source/src/lib/static-batch/freeze.ts +579 -0
  41. package/catalog/project-source/src/lib/static-batch/index.ts +44 -0
  42. package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +149 -0
  43. package/catalog/project-source/src/lib/static-batch/shadow-cache.ts +171 -0
  44. package/catalog/project-source/src/tools/bake-module.tool.ts +139 -0
  45. package/catalog/project-source/src/tools/bake-preview.tool.ts +475 -0
  46. package/dist/.vite/manifest.json +8304 -0
  47. package/dist/assets/AssetBudgetPanel-J9--TZPU.js +23 -0
  48. package/dist/assets/AudioViewer-CR7333fe.js +1 -0
  49. package/dist/assets/BVHLoader-6bQIXhMX.js +1 -0
  50. package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +1 -0
  51. package/dist/assets/CCDIKSolver-CD7vLpsK.js +1 -0
  52. package/dist/assets/CSS3DRenderer-CL7ABLVK.js +1 -0
  53. package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +1 -0
  54. package/dist/assets/ColladaLoader-aVOPIsCh.js +3 -0
  55. package/dist/assets/ColorInput-DQBNrW-K.js +1 -0
  56. package/dist/assets/ConvexGeometry-CAzXlPVG.js +1 -0
  57. package/dist/assets/ConvexHull-BINCESFp.js +1 -0
  58. package/dist/assets/CopyShader-BzTUYzf6.js +24 -0
  59. package/dist/assets/DecalGeometry-160KRdfg.js +1 -0
  60. package/dist/assets/EXRLoader-Cdans_oJ.js +1 -0
  61. package/dist/assets/EffectComposer-DQxfsXBZ.js +1 -0
  62. package/dist/assets/EntityModelDocument-Ccvw66N9.js +1 -0
  63. package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +1 -0
  64. package/dist/assets/FBXLoader-B4MoUtAn.js +1 -0
  65. package/dist/assets/Fbo-Dz-Soul3.js +1 -0
  66. package/dist/assets/FontLoader-CvGoVI5a.js +2 -0
  67. package/dist/assets/GLTFExporter-HgrCle4L.js +1 -0
  68. package/dist/assets/GameplaySessionTimeline-B52W3FVZ.js +1 -0
  69. package/dist/assets/Gltf-UHVWKz65.js +2 -0
  70. package/dist/assets/HDRLoader-THU88oVD.js +5 -0
  71. package/dist/assets/ImageViewer-Tn7s_MnW.js +1 -0
  72. package/dist/assets/InspectorCanvasPreview-CEr_Kxna.js +1 -0
  73. package/dist/assets/InspectorObjectPreview-CVejvLRg.js +1 -0
  74. package/dist/assets/JsonAssetDocument-C7VGcLhu.js +3 -0
  75. package/dist/assets/LineSegments2-CsOpKSiM.js +370 -0
  76. package/dist/assets/MTLLoader-_Xzd4_0p.js +2 -0
  77. package/dist/assets/MarchingCubes-Bsp4wrzd.js +1 -0
  78. package/dist/assets/MeshBVH-BiDHDcu-.js +1 -0
  79. package/dist/assets/ModelAssetDocument-F5GACirk.js +1 -0
  80. package/dist/assets/NonThreeAuthoringBootstrap-C3woOMxX.js +1 -0
  81. package/dist/assets/OBJLoader-BhIC6Hwo.js +5 -0
  82. package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +2 -0
  83. package/dist/assets/Object3DPreview-DL8oi7Xs.js +2 -0
  84. package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +2 -0
  85. package/dist/assets/OrbitControls-CM3bPray.js +1 -0
  86. package/dist/assets/OrbitControls-DLpayAaK.js +1 -0
  87. package/dist/assets/OrthographicCamera-bQozawrh.js +1 -0
  88. package/dist/assets/PLYLoader-DYQqs5Ik.js +2 -0
  89. package/dist/assets/PerspectiveCamera-CQ2lh01o.js +1 -0
  90. package/dist/assets/PlayBar-BR-Vg3Jb.js +2 -0
  91. package/dist/assets/RGBELoader-BgBcQv8j.js +1 -0
  92. package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +1 -0
  93. package/dist/assets/RenderPass-DPrn-Uky.js +1 -0
  94. package/dist/assets/ResolutionPicker-C67vs1F3.js +1 -0
  95. package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +1 -0
  96. package/dist/assets/RoundedBox-BDGBg6QZ.js +1 -0
  97. package/dist/assets/RoundedBoxGeometry-CyUuYPfW.js +1 -0
  98. package/dist/assets/STLLoader-Dyv3lsxY.js +1 -0
  99. package/dist/assets/SelectionBox-D_75KrNW.js +1 -0
  100. package/dist/assets/ShaderPass-QYRpPuFJ.js +1 -0
  101. package/dist/assets/ShadowEditor-DkImwu1Y.js +1 -0
  102. package/dist/assets/SimplifyModifier-C8ayvRzd.js +1 -0
  103. package/dist/assets/SkeletonUtils-Cps8GOC6.js +1 -0
  104. package/dist/assets/Sky-CQKCgYDs.js +154 -0
  105. package/dist/assets/SourceAssetViewer-2SWQoUut.js +12 -0
  106. package/dist/assets/StageHost-BN-IoTef.js +2 -0
  107. package/dist/assets/StoryPreviewMount-DjyxRCXu.js +1 -0
  108. package/dist/assets/TDSLoader-D_T8XJ81.js +1 -0
  109. package/dist/assets/TextGeometry-DOWAEUV0.js +1 -0
  110. package/dist/assets/ThreeBoardDocument-CVncZyIq.js +2 -0
  111. package/dist/assets/ThreeIsolationSceneContent-C8C8whSF.js +1 -0
  112. package/dist/assets/ToolObject3DPreview-BRoDWe4Q.js +1 -0
  113. package/dist/assets/TrackballControls-DfznuQTh.js +1 -0
  114. package/dist/assets/TransientHint-BB1fwrvK.js +1 -0
  115. package/dist/assets/UnrealBloomPass-CR-cS_K5.js +83 -0
  116. package/dist/assets/VideoViewer-C6kocgIU.js +1 -0
  117. package/dist/assets/_commonjsHelpers-D6-XlEtG.js +1 -0
  118. package/dist/assets/active-ingest-CT6jSGhr.js +3 -0
  119. package/dist/assets/adapter-surface-Y37Nzcyw.js +1 -0
  120. package/dist/assets/after-paint-CB4bz1-e.js +1 -0
  121. package/dist/assets/agx-base-srgb-BjWZJgrZ.lut +0 -0
  122. package/dist/assets/agx-look-medium-high-contrast-D5F_ob1L.lut +0 -0
  123. package/dist/assets/agx-look-punchy-dxsnycNs.lut +0 -0
  124. package/dist/assets/animation-clock-CnjZqfJp.js +1 -0
  125. package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +1 -0
  126. package/dist/assets/asset-budget.action-DCzzcuTh.js +1 -0
  127. package/dist/assets/asset-budget.document-BWU8wnVW.js +1 -0
  128. package/dist/assets/asset-budget.menu-BGZpT_31.js +1 -0
  129. package/dist/assets/asset-editor-persistence-BBaONOJt.js +1 -0
  130. package/dist/assets/asset-loaders-BOy5Ss8k.js +2 -0
  131. package/dist/assets/asset-parse-error-BHMwBRU3.js +3 -0
  132. package/dist/assets/assets-BuSoGjBX.js +1 -0
  133. package/dist/assets/audio-meter-CyiToeUW.js +1 -0
  134. package/dist/assets/audio-unlock.service-CfUgUQVy.js +1 -0
  135. package/dist/assets/audio.utility-C6K6jem8.js +1 -0
  136. package/dist/assets/authoring-CgcOFhGS.js +1 -0
  137. package/dist/assets/autoplay.service-BZBGNSvt.js +1 -0
  138. package/dist/assets/axe-LkjAB6Lv.js +30 -0
  139. package/dist/assets/babylon-authoring-adapter-CL02gWDn.js +1 -0
  140. package/dist/assets/binding-Bmxqznjk.js +1 -0
  141. package/dist/assets/binding-identity-DcTpbvyg.js +1 -0
  142. package/dist/assets/binding-resolver-Dsh-6Vor.js +2 -0
  143. package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +2 -0
  144. package/dist/assets/blender-node-editor.document-iIDkB9sI.js +1 -0
  145. package/dist/assets/blender-properties-tab-C5CyPydi.js +3 -0
  146. package/dist/assets/blender-runtime-host-BpBwGv7r.js +4 -0
  147. package/dist/assets/blender-runtime-skin-DyQ9B6CR.js +7140 -0
  148. package/dist/assets/blender-runtime.document-lIYhhPtv.js +8 -0
  149. package/dist/assets/blender-timeline.document-77fx96N7.js +1 -0
  150. package/dist/assets/blender-uv-editor.document-fsT7B4gV.js +1 -0
  151. package/dist/assets/blender-version.status-o6dBm3n6.js +1 -0
  152. package/dist/assets/blender-wali-engine-wTOcrOMC.js +2 -0
  153. package/dist/assets/blender.command-BtJeWk-A.js +1 -0
  154. package/dist/assets/blender.keymap-GAQgeklK.js +1 -0
  155. package/dist/assets/blender.status-ujwGU6dU.js +1 -0
  156. package/dist/assets/blender.style-Dcem5f_T.js +1 -0
  157. package/dist/assets/board-guides-DziKSTss.js +1 -0
  158. package/dist/assets/body-marks-h_xDxiDE.js +1 -0
  159. package/dist/assets/bridge.command-o5gDNEwa.js +3 -0
  160. package/dist/assets/browserAll-DeWblVez.js +1 -0
  161. package/dist/assets/build-profiles.document-kW8iw8Xj.js +2 -0
  162. package/dist/assets/build-progress.status-BNRLytg2.js +1 -0
  163. package/dist/assets/build-session-C_sg3CEn.js +9 -0
  164. package/dist/assets/build.action-lYjTLb7K.js +1 -0
  165. package/dist/assets/build.command-DIGgUPU_.js +1 -0
  166. package/dist/assets/build.header-CKajx5U3.js +1 -0
  167. package/dist/assets/build.menu-BdU0QXny.js +1 -0
  168. package/dist/assets/build.service-CbBAyeu3.js +1 -0
  169. package/dist/assets/bus-mixer-CGfWDP3C.js +1 -0
  170. package/dist/assets/camera-KEsKvOL7.js +1 -0
  171. package/dist/assets/camera-runtime.inspector-B7unX4g1.js +1 -0
  172. package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +2 -0
  173. package/dist/assets/capability-coverage-Czas4C18.js +7 -0
  174. package/dist/assets/chrome-trace-YZHMz60-.js +1 -0
  175. package/dist/assets/client-DNXj_opT.js +25 -0
  176. package/dist/assets/clip-planes-CnAI6DZn.js +1 -0
  177. package/dist/assets/collaboration-presence-DLoZ7EA3.js +1 -0
  178. package/dist/assets/collider-Bw0mXlsW.js +1 -0
  179. package/dist/assets/collider-dimensions-9xoFADXN.js +1 -0
  180. package/dist/assets/collision-system-DpNUJRJ3.js +1 -0
  181. package/dist/assets/command-results-CUQD49AB.js +1 -0
  182. package/dist/assets/component-board-registry-DrIa2csL.js +1 -0
  183. package/dist/assets/component-board.service-DCwcUssB.js +2 -0
  184. package/dist/assets/component-board.service-DidCyM4O.js +2 -0
  185. package/dist/assets/component-verbs.command-7xzfjGMZ.js +1 -0
  186. package/dist/assets/component-verbs.service-Bv9jId3q.js +1 -0
  187. package/dist/assets/config-CEZk921y.js +6 -0
  188. package/dist/assets/configurations-DTBMdaTL.js +1 -0
  189. package/dist/assets/connection.status-BifnQdOs.js +1 -0
  190. package/dist/assets/console-bridge-CHcb-xk5.js +1 -0
  191. package/dist/assets/constraint-De8f1Uiq.js +1 -0
  192. package/dist/assets/constraints.inspector-B9U9Yj-u.js +1 -0
  193. package/dist/assets/countdown-timer-CUm74dom.js +1 -0
  194. package/dist/assets/coverage.service-VTX5Mcsx.js +3 -0
  195. package/dist/assets/crash-null-boundary-v3a0uEgw.js +1 -0
  196. package/dist/assets/create-runtime-CVCc1BDx.js +1 -0
  197. package/dist/assets/curve-7Q79VgU4.js +1 -0
  198. package/dist/assets/data-asset-4hjS642k.js +5 -0
  199. package/dist/assets/data-check-core-CQEjuFyt.js +1 -0
  200. package/dist/assets/data-ref-CQI28C0D.js +1 -0
  201. package/dist/assets/debug-bridge-CCohG-d-.js +1 -0
  202. package/dist/assets/debug-registry-Dgvitx8M.js +1 -0
  203. package/dist/assets/defaults-DKiBJCPN.js +1 -0
  204. package/dist/assets/deferred-commands-CEMmvL47.js +1 -0
  205. package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +2 -0
  206. package/dist/assets/design-time-layers-wYgOTgni.js +1 -0
  207. package/dist/assets/design-time-mount-registry-DUpXCg1U.js +1 -0
  208. package/dist/assets/design-time-mount.service-BzY21e1F.js +2 -0
  209. package/dist/assets/design-time-react-mount-DM9WLrF2.js +1 -0
  210. package/dist/assets/dev-build-gDYrq68M.js +1 -0
  211. package/dist/assets/directional-shadow-fit-BVkOKAv2.js +1 -0
  212. package/dist/assets/document-preview-three-Kbg2GCLm.js +1 -0
  213. package/dist/assets/dom-authoring-adapter-CY8C7f4T.js +1 -0
  214. package/dist/assets/draco3d-BBUTcNkz.js +1 -0
  215. package/dist/assets/draco_decoder-DsQ12WqX.wasm +0 -0
  216. package/dist/assets/draco_encoder-2Tcju8Ns.wasm +0 -0
  217. package/dist/assets/edit-mode-audio.service-Bzetwd5B.js +1 -0
  218. package/dist/assets/edit-mode-authoring-B47TfLqu.js +1 -0
  219. package/dist/assets/edit-mode-networking.service-YCX6RRb_.js +1 -0
  220. package/dist/assets/editor-api-BoJIcyZG.js +1 -0
  221. package/dist/assets/editor-port-C_FeBdeV.js +1 -0
  222. package/dist/assets/editor-presentation-activity-C7SNSmTd.js +1 -0
  223. package/dist/assets/entry-adjudication-Cq8Yeb74.js +1 -0
  224. package/dist/assets/environment-capture-7himRh2L.js +1 -0
  225. package/dist/assets/esbuild-BHljloGq.wasm +0 -0
  226. package/dist/assets/events-156d8d12.esm-ErOhDXXB.js +36 -0
  227. package/dist/assets/extend-B-eOccUm.js +36 -0
  228. package/dist/assets/extends-CF3RwP-h.js +1 -0
  229. package/dist/assets/eyedropper-session-bjPXnfeX.js +1 -0
  230. package/dist/assets/fflate.module-DPuTF8aG.js +6 -0
  231. package/dist/assets/filmic-srgb-Ct35FIH6.lut +0 -0
  232. package/dist/assets/first-party-audio-system-DxnGJOER.js +1 -0
  233. package/dist/assets/first-party-navigation-system-CL5Bquub.js +1 -0
  234. package/dist/assets/fork-menu-BoVyw2Wu.js +1 -0
  235. package/dist/assets/frame-debugger-store-D1Mf_5up.js +1 -0
  236. package/dist/assets/frame-delta-D2nsw_Ht.js +1 -0
  237. package/dist/assets/frame-pacing-D5acoOzO.js +1 -0
  238. package/dist/assets/frame-selector-cache-cCeUbcjG.js +1 -0
  239. package/dist/assets/game-DHOZVb-7.js +1 -0
  240. package/dist/assets/game-contract-seams-a5YXejOu.js +1 -0
  241. package/dist/assets/game-css-scope-transform-Eng4wS8E.js +33 -0
  242. package/dist/assets/game-document.service-DbRfx2V0.js +1 -0
  243. package/dist/assets/game-eval.command-D-7Dxbj_.js +2 -0
  244. package/dist/assets/game-input-seams-CIQdetRw.js +1 -0
  245. package/dist/assets/game-loop-CZvXlY00.js +1 -0
  246. package/dist/assets/game-module-access-B2mFxv-i.js +1 -0
  247. package/dist/assets/game.layout-CBASrvQu.js +1 -0
  248. package/dist/assets/gameplay-export-BoKXm51x.js +1 -0
  249. package/dist/assets/gameplay-replay-e5umMlXv.js +1 -0
  250. package/dist/assets/gameplay-rng-trap-CTNhm-UW.js +3 -0
  251. package/dist/assets/gameplay.command-DxcVYX6F.js +1 -0
  252. package/dist/assets/generation-DhwCUHPf.css +1 -0
  253. package/dist/assets/generation-jobs-BQrXbGp_.js +1 -0
  254. package/dist/assets/generation.service-CDIgObuw.js +1 -0
  255. package/dist/assets/generations-DzUogZsM.js +1 -0
  256. package/dist/assets/generations.status-CgOUBCum.js +1 -0
  257. package/dist/assets/hierarchy-marks-BLPfSIym.js +1 -0
  258. package/dist/assets/host-pointer-DbGSCjE9.js +1 -0
  259. package/dist/assets/hosted-asset-materialization-CiIvWkGU.js +2 -0
  260. package/dist/assets/ibl-override-material-BlmCxFKq.js +6 -0
  261. package/dist/assets/index-96FBF1Oj.js +1 -0
  262. package/dist/assets/index-BAWkB0dv.js +1 -0
  263. package/dist/assets/index-BDnS2b6S.js +1 -0
  264. package/dist/assets/index-BHp07vN0.js +2 -0
  265. package/dist/assets/index-BMxv2MNV.js +1 -0
  266. package/dist/assets/index-BP6wv2A0.js +5 -0
  267. package/dist/assets/index-BcCBqgM_.js +952 -0
  268. package/dist/assets/index-Bge9JUr6.js +1 -0
  269. package/dist/assets/index-BjTCPEQ7.js +134 -0
  270. package/dist/assets/index-BncK9THk.js +1 -0
  271. package/dist/assets/index-CJbYy-CF.js +3 -0
  272. package/dist/assets/index-CVCb_ImQ.js +1 -0
  273. package/dist/assets/index-CZd9o7Lu.js +1 -0
  274. package/dist/assets/index-CanA16PU.js +2 -0
  275. package/dist/assets/index-CinJrH5C.js +9 -0
  276. package/dist/assets/index-CtzuWnCS.js +1 -0
  277. package/dist/assets/index-D2fNXpHa.css +1 -0
  278. package/dist/assets/index-DUpHH6JR.js +3120 -0
  279. package/dist/assets/index-DUqP1RMl.js +1 -0
  280. package/dist/assets/index-D_NuPfjr.js +9 -0
  281. package/dist/assets/index-Da9JhEvW.js +25 -0
  282. package/dist/assets/index-DgapqSPi.js +7 -0
  283. package/dist/assets/index-FUuS4qwW.js +562 -0
  284. package/dist/assets/index-GIL7oGEO.js +4894 -0
  285. package/dist/assets/index-IEjydI9d.js +1 -0
  286. package/dist/assets/index-OrYXPk3Z.js +487 -0
  287. package/dist/assets/index-V1R-e5Bd.js +1 -0
  288. package/dist/assets/index-bQE2NA0D.js +1 -0
  289. package/dist/assets/index-gHZae-lw.js +13 -0
  290. package/dist/assets/index-mjWQmGhM.js +1 -0
  291. package/dist/assets/index-nmcBqr7Y.js +1 -0
  292. package/dist/assets/inference-diagnostics-Dhmtfbq_.js +1 -0
  293. package/dist/assets/ingest-BbYMC2vQ.js +1 -0
  294. package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +1 -0
  295. package/dist/assets/ingest-siblings-Bop2kqVl.js +1 -0
  296. package/dist/assets/ingest-source-persistence-C_6Hiyra.js +1 -0
  297. package/dist/assets/ingest.service-BTDnQfM1.js +1 -0
  298. package/dist/assets/input-manager-DH_hGW6d.js +1 -0
  299. package/dist/assets/input-router-BNQvtIqw.js +1 -0
  300. package/dist/assets/inspect-BZfi3mmo.js +1 -0
  301. package/dist/assets/inspection-CObLhnrs.js +1 -0
  302. package/dist/assets/instance-fork-actions-D3sRzS3K.js +1 -0
  303. package/dist/assets/instances.command-D6UkZNO8.js +1 -0
  304. package/dist/assets/instruments-CKR02Y8I.js +1 -0
  305. package/dist/assets/json-history-resource-BbxllWfV.js +1 -0
  306. package/dist/assets/jsx-runtime-DPjLkJKQ.js +9 -0
  307. package/dist/assets/light-D-_wsKTq.js +1 -0
  308. package/dist/assets/light-camera-factory-CWbbe9gI.js +1 -0
  309. package/dist/assets/lil-gui.module.min-BF55BEwA.js +10 -0
  310. package/dist/assets/live-behaviors-Bxq49Maz.js +1 -0
  311. package/dist/assets/live-gesture-lock-DJbrjOqf.js +1 -0
  312. package/dist/assets/loader-CaF_I7Yt.js +1 -0
  313. package/dist/assets/logger-Dqis-7W1.js +1 -0
  314. package/dist/assets/loop-gate-report-N52EWFGD.js +1 -0
  315. package/dist/assets/matcap-texture-CVfalpWT.js +1 -0
  316. package/dist/assets/material-CpAdjDxn.js +1 -0
  317. package/dist/assets/material-factory-Bz6h__6g.js +1 -0
  318. package/dist/assets/mesh-B3WPtNKO.js +1 -0
  319. package/dist/assets/mesh-shadow-CZnXrw_l.js +1 -0
  320. package/dist/assets/mikktspace.module-DO88SLib.js +1 -0
  321. package/dist/assets/model-asset-sections-CFvvihfx.css +1 -0
  322. package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +1 -0
  323. package/dist/assets/model.layout-BJUEQYUI.js +1 -0
  324. package/dist/assets/models.finder-G2jQgIRu.js +1 -0
  325. package/dist/assets/module-mode-DVBLT9d-.js +2 -0
  326. package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +2 -0
  327. package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +2 -0
  328. package/dist/assets/mount-game-6t9cKNo4.js +1 -0
  329. package/dist/assets/mount-ingest-root-glv2SSWf.js +2 -0
  330. package/dist/assets/mount-manifest-CGVxhmAw.js +1 -0
  331. package/dist/assets/mount-readiness-Ds0HvvLH.js +4 -0
  332. package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +1 -0
  333. package/dist/assets/mounted-authoring-Dmg5xmhP.js +1 -0
  334. package/dist/assets/mounted-story-viewport-source-DjP6RA9U.js +1 -0
  335. package/dist/assets/native-debug-module-CWicoSGD.js +1 -0
  336. package/dist/assets/native-entry-surface-BE8LJNdu.js +1 -0
  337. package/dist/assets/navigation-CIiCx-SM.js +1 -0
  338. package/dist/assets/navmesh-workflow-store-Cmnm57TB.js +1 -0
  339. package/dist/assets/navmesh.menu-CAKiH8PW.js +1 -0
  340. package/dist/assets/navmesh.service-jgDWlgj1.js +1 -0
  341. package/dist/assets/network.utility-CEu5nHf7.js +1 -0
  342. package/dist/assets/object-marks-DwvIEBOK.js +1 -0
  343. package/dist/assets/object3d-authoring-subject-CH5sI2oP.js +1 -0
  344. package/dist/assets/output-DK8waum9.js +195 -0
  345. package/dist/assets/particles-Y626p22p.js +1 -0
  346. package/dist/assets/particles-factory-DnLOHXT8.js +1 -0
  347. package/dist/assets/pasteboard-materialize-BqSS4QzV.js +20 -0
  348. package/dist/assets/pasteboard.action-DU3UHtJG.js +2 -0
  349. package/dist/assets/performance-profiler-D_Jey87L.js +1 -0
  350. package/dist/assets/physics-registry-B2Jkp8e6.js +1 -0
  351. package/dist/assets/physics-registry-CUB9cT9p.js +1 -0
  352. package/dist/assets/pixi-authoring-adapter-CjibysC3.js +1 -0
  353. package/dist/assets/pixi-live-write-target-DuWydlWb.js +1 -0
  354. package/dist/assets/pixi-primitive-DlWbUPN9.js +1 -0
  355. package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +1 -0
  356. package/dist/assets/pixi-story-model-DNkfnWUV.js +1 -0
  357. package/dist/assets/pixi-transform-channels-VjdohT11.js +1 -0
  358. package/dist/assets/play-mode-BFU2PCkG.js +22 -0
  359. package/dist/assets/play.command-BpqqLqkq.js +2 -0
  360. package/dist/assets/playtest-BXIL1JEF.js +1 -0
  361. package/dist/assets/pose-guard-6Osb2cFu.js +1 -0
  362. package/dist/assets/presentation-BPP5pXeQ.js +1 -0
  363. package/dist/assets/product-DFhyARJj.js +1 -0
  364. package/dist/assets/profiler.action-CaXJDp3t.js +1 -0
  365. package/dist/assets/profiler.menu-BIMF6Bi4.js +1 -0
  366. package/dist/assets/profiler.utility-BExw9wBO.js +1 -0
  367. package/dist/assets/project-authoring-session-Bnt6icLr.js +2 -0
  368. package/dist/assets/project-provenance-BoP3nrle.js +1 -0
  369. package/dist/assets/prompt-labels-DSMdM2_B.js +1 -0
  370. package/dist/assets/properties-bone-constraints.inspector-ByT6p7S-.js +1 -0
  371. package/dist/assets/properties-bone.inspector-z4qJwKO5.js +1 -0
  372. package/dist/assets/properties-collection.inspector-D0_3ijWU.js +1 -0
  373. package/dist/assets/properties-constraints.inspector-CESzjuls.js +1 -0
  374. package/dist/assets/properties-data.inspector-hG8Wgyzb.js +1 -0
  375. package/dist/assets/properties-material.inspector-CzY0JCQ6.js +1 -0
  376. package/dist/assets/properties-modifiers.inspector-3dDhwf7g.js +1 -0
  377. package/dist/assets/properties-object.inspector-CiarfxkT.js +1 -0
  378. package/dist/assets/properties-output.inspector-DKJxmKSD.js +1 -0
  379. package/dist/assets/properties-particles.inspector-CCEdYWGm.js +1 -0
  380. package/dist/assets/properties-physics.inspector-B2c0KUyA.js +1 -0
  381. package/dist/assets/properties-render.inspector-Bcm0HLRW.js +1 -0
  382. package/dist/assets/properties-scene.inspector-PIM_eTb_.js +1 -0
  383. package/dist/assets/properties-texture.inspector-CgFlnyr8.js +1 -0
  384. package/dist/assets/properties-view-layer.inspector-DGjF_Aqo.js +1 -0
  385. package/dist/assets/properties-world.inspector-CrMvaRvB.js +1 -0
  386. package/dist/assets/r3f-design-session-D-4yyDO9.js +2 -0
  387. package/dist/assets/r3f-physics-binding-BBo8oma9.js +1 -0
  388. package/dist/assets/r3f-root-factory-z9llD1OU.js +1 -0
  389. package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +13 -0
  390. package/dist/assets/rapier-physics-adapter-CaZqWLu0.js +1 -0
  391. package/dist/assets/rapier-physics-bridge-CMoeVo3Y.js +1 -0
  392. package/dist/assets/react-18-By2b4xR9.js +1 -0
  393. package/dist/assets/react-inspector.service-B_neRnSK.js +1 -0
  394. package/dist/assets/react-root-CEz5NTck.js +1 -0
  395. package/dist/assets/react-story-board-BDDwiE2H.js +1 -0
  396. package/dist/assets/react-three-fiber.esm-CycrbDlA.js +1 -0
  397. package/dist/assets/react-three-rapier.esm-CEfKpvxT.js +1 -0
  398. package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +1 -0
  399. package/dist/assets/realm-services-CobQsq_X.js +1 -0
  400. package/dist/assets/rebind-controller-Dtq19Vb3.js +1 -0
  401. package/dist/assets/recast-navigation.wasm-compat-Dsoa_MD-.js +1 -0
  402. package/dist/assets/reflection-probe-Don-M3Fj.js +1 -0
  403. package/dist/assets/reflection-probe-capture.inspector-CmFUoJCx.js +1 -0
  404. package/dist/assets/register-render-vitals-BiZk29b2.js +1 -0
  405. package/dist/assets/registry-02YZjMNp.js +1 -0
  406. package/dist/assets/relative-path-guard-GiM7Lsz8.js +1 -0
  407. package/dist/assets/render-audio-control-vMRlePWb.js +1 -0
  408. package/dist/assets/render-batch-system-0vq7p0VC.js +1 -0
  409. package/dist/assets/render-census-BrQX_CXv.js +1 -0
  410. package/dist/assets/render-control-Df3yTiyr.js +1 -0
  411. package/dist/assets/render-env-D2IV2x5k.js +1 -0
  412. package/dist/assets/render-features-CPQ_e568.js +1 -0
  413. package/dist/assets/render-seed-DF4JHy7P.js +1 -0
  414. package/dist/assets/render-settings-Bw4W9SYF.js +1 -0
  415. package/dist/assets/render-vitals-BZ5HtvMi.js +1 -0
  416. package/dist/assets/renderer-config-BqG4O8i9.js +1 -0
  417. package/dist/assets/resolve-three-SZE_WWUM.js +702 -0
  418. package/dist/assets/root-seam-contract-Z0VWX3Bk.js +1 -0
  419. package/dist/assets/rrweb-Cd2ifIRP.js +142 -0
  420. package/dist/assets/run-ticks-settled-C4ksViyA.js +1 -0
  421. package/dist/assets/runtime-inspection-l2iFQSsg.js +1 -0
  422. package/dist/assets/scene-capture-BQKzU0NT.js +1 -0
  423. package/dist/assets/scene-capture-CGYF-Viw.js +1 -0
  424. package/dist/assets/scene-document.service-qkDjUrlP.js +2 -0
  425. package/dist/assets/scene-framing-Cat0GtyJ.js +1 -0
  426. package/dist/assets/scene-index-B6BZOHMk.js +1 -0
  427. package/dist/assets/scene-query-C7_N-TpI.js +1 -0
  428. package/dist/assets/schema-kl9-2B_J.js +1 -0
  429. package/dist/assets/sculpt.layout-zJF55yCR.js +1 -0
  430. package/dist/assets/seeded-random-i3mtgBKZ.js +1 -0
  431. package/dist/assets/session-CZ5JPg-z.js +4877 -0
  432. package/dist/assets/setup-audio-S8GQF91f.js +1 -0
  433. package/dist/assets/setup-particles-GCXlnkj_.js +1 -0
  434. package/dist/assets/setup-physics-BeZ7-LKD.js +1 -0
  435. package/dist/assets/setup-renderer-DVXaSGin.js +1587 -0
  436. package/dist/assets/shading.layout-DULYZV6M.js +1 -0
  437. package/dist/assets/sim-clock-CLflx7kg.js +1 -0
  438. package/dist/assets/sky-precompute-worker-ChN7J87v.js +1 -0
  439. package/dist/assets/soft-particle-depth-DGvfQDi1.js +1 -0
  440. package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +1 -0
  441. package/dist/assets/source-persistence-backend-C-aR-B_Y.js +1 -0
  442. package/dist/assets/spark-renderer-lifecycle-ynWESJcv.js +1 -0
  443. package/dist/assets/spark.module-4pXQoz5d.js +12120 -0
  444. package/dist/assets/stage-invalidation-DBg3C3Ta.js +1 -0
  445. package/dist/assets/stage-keyboard-n-5kKH-m.js +1 -0
  446. package/dist/assets/stage-overlay-set-B9zp2sLB.js +1 -0
  447. package/dist/assets/stage-presence-markers-DiGI6A45.js +1 -0
  448. package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +7 -0
  449. package/dist/assets/state-bridge-DLP1jLRW.js +1 -0
  450. package/dist/assets/state-watch.action-BOvQR2qt.js +1 -0
  451. package/dist/assets/state-watch.menu-CNLvDeeY.js +1 -0
  452. package/dist/assets/state-watch.utility-Bg1tTTQU.js +1 -0
  453. package/dist/assets/static-batch-advisor-B13QEH7d.js +1 -0
  454. package/dist/assets/stats.module-BL02l9NC.js +1 -0
  455. package/dist/assets/story-arg-descriptors-Ek86ExX7.js +1 -0
  456. package/dist/assets/story-capture-_gC8dXV-.js +1 -0
  457. package/dist/assets/story-documents--TDLaPeL.js +3 -0
  458. package/dist/assets/story-documents.service-BiS_YbNQ.js +1 -0
  459. package/dist/assets/story-documents.service-CxOPYJ2j.js +1 -0
  460. package/dist/assets/story-media-presence-BHzk2IV5.js +1 -0
  461. package/dist/assets/story-mount-turn-DFRTj5hi.js +1 -0
  462. package/dist/assets/story-pixi-preview-BUrOJZXS.js +1 -0
  463. package/dist/assets/story-presentation-j2AVN-mK.js +1 -0
  464. package/dist/assets/story-three-preview-BHEDZzcl.js +2 -0
  465. package/dist/assets/structural-ids-Dc-7rEwi.js +1 -0
  466. package/dist/assets/structural-signature-0w-i_ats.js +1 -0
  467. package/dist/assets/surface-content-Dg9Kkazf.js +1 -0
  468. package/dist/assets/surface-state-DaxyruCj.js +3 -0
  469. package/dist/assets/system-adapters-rIC8FSGP.js +1 -0
  470. package/dist/assets/system-runner-DkOjxEBt.js +1 -0
  471. package/dist/assets/system-slot-E2mEdiih.js +1 -0
  472. package/dist/assets/team-playtest.service-DqOinFVA.js +1 -0
  473. package/dist/assets/texture.layout-DASpHVht.js +1 -0
  474. package/dist/assets/three-CDSueJyJ.js +1 -0
  475. package/dist/assets/three-authoring-adapter-CmSQ3Vui.js +1 -0
  476. package/dist/assets/three-authoring.service-iuHLwtf1.js +2 -0
  477. package/dist/assets/three-ingest-runtime-QzDYk6tU.js +1 -0
  478. package/dist/assets/three-projection-core-BmKMZ-nf.js +1 -0
  479. package/dist/assets/three-viewport-presentation-QBQpSdMh.js +1 -0
  480. package/dist/assets/three.module-D396a9Mn.js +3840 -0
  481. package/dist/assets/three.quarks.esm-B1C61jGo.js +1039 -0
  482. package/dist/assets/tools-B_NJsk05.js +1 -0
  483. package/dist/assets/transform-writer-BhBBTx33.js +1 -0
  484. package/dist/assets/transport.header-B-6HQlU2.js +1 -0
  485. package/dist/assets/trigger-volume-BNK2XzPL.js +1 -0
  486. package/dist/assets/tuples-CIQ4Bn1U.js +1 -0
  487. package/dist/assets/tween.module-DciWpAG6.js +1 -0
  488. package/dist/assets/ui-board-document-Bwtt--xp.js +2 -0
  489. package/dist/assets/unexported-game-trap-Dm1JYKHy.js +2 -0
  490. package/dist/assets/unmanaged-root-detector-B8CpbkSN.js +2 -0
  491. package/dist/assets/upstream-pin-BdgRH6ID.js +1 -0
  492. package/dist/assets/use-data-Dzq-MytE.js +1 -0
  493. package/dist/assets/use-live-actor-state-DErbWQWF.js +1 -0
  494. package/dist/assets/use-selection-DbR73-xd.js +1 -0
  495. package/dist/assets/user-data-BB2Of6Ht.js +1 -0
  496. package/dist/assets/utility-view-state-BHypxA33.js +1 -0
  497. package/dist/assets/uv-editing.layout-BEKHxmHw.js +1 -0
  498. package/dist/assets/vgai-shared-fontawesome-CU65D4Ij.js +1 -0
  499. package/dist/assets/vgai-shared-jsx-dev-runtime-DFDKL7fx.js +1 -0
  500. package/dist/assets/vgai-shared-jsx-runtime-DIqBpTut.js +1 -0
  501. package/dist/assets/vgai-shared-react-BT7rMc2H.js +1 -0
  502. package/dist/assets/vgai-shared-react-dom-DFajMqMT.js +1 -0
  503. package/dist/assets/vgai-shared-react-dom-client-S0ozfl6_.js +1 -0
  504. package/dist/assets/vgai-shared-three-Bc5PvpLM.js +1 -0
  505. package/dist/assets/viewport-pick-context-DkawXbEi.js +1 -0
  506. package/dist/assets/viewport-root-presentation-CWsE56K6.js +1 -0
  507. package/dist/assets/viewport-shading-BuA88e_A.js +1 -0
  508. package/dist/assets/viewport-shading-boundary-B_-_gABg.js +82 -0
  509. package/dist/assets/viewport-surface-status-B3om4Kcf.js +1 -0
  510. package/dist/assets/vision_bundle-DX0dWqEa.js +15 -0
  511. package/dist/assets/voxel-surface-DtcsSWRL.js +1 -0
  512. package/dist/assets/wav-encode-D31zWF6O.js +1 -0
  513. package/dist/assets/webgl-frame-capture-FlF9zQmW.js +1 -0
  514. package/dist/assets/webgl-gpu-timer-D3YX7RaD.js +1 -0
  515. package/dist/assets/webworkerAll-CM2o_dnz.js +1 -0
  516. package/dist/assets/worker-UrMcrc5_.js +2 -0
  517. package/dist/assets/world-documents-147tiFZe.js +1 -0
  518. package/dist/assets/world-root-stage-binding-vwTrtBz6.js +1 -0
  519. package/dist/assets/world-state-BWG-IcOd.js +1 -0
  520. package/dist/assets/writer-B-KovzkA.js +5 -0
  521. package/dist/assets/xstate-animation-binding-Brd0NST6.js +1 -0
  522. package/dist/assets/xstate-animation-meta-Q3u9zh_m.js +1 -0
  523. package/dist/assets/xstate-behavior.action-B8UluFBK.js +1 -0
  524. package/dist/assets/xstate-behavior.document-CKAsE45I.js +1 -0
  525. package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +1 -0
  526. package/dist/assets/xstate-behavior.menu-BXbPICIh.js +1 -0
  527. package/dist/assets/xstate-inspection-BsZv8LS9.js +1 -0
  528. package/dist/vgai-shared-react.json +10 -0
  529. package/dist/vgai-shared-three.json +3 -0
  530. package/dist-node/cli.js +9320 -0
  531. package/dist-node/create.js +3239 -0
  532. package/package.json +91 -0
  533. package/presets.mjs +2 -0
  534. package/src/contributions.d.ts +4 -0
  535. package/src/index.ts +38 -0
  536. package/starter/cube.blend +0 -0
  537. package/starter/cube.py +81 -0
  538. package/template/.agents/references/project-manual.md +341 -0
  539. package/template/.agents/skills/editor/SKILL.md +53 -0
  540. package/template/.agents/skills/editor/agents/openai.yaml +4 -0
  541. package/template/.agents/skills/editor/references/editor-control.md +363 -0
  542. package/template/.agents/skills/vgai-3d-models/SKILL.md +64 -0
  543. package/template/.agents/skills/vgai-ingest-existing-game/SKILL.md +112 -0
  544. package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +347 -0
  545. package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
  546. package/template/.agents/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
  547. package/template/.claude/skills/editor/SKILL.md +53 -0
  548. package/template/.claude/skills/editor/agents/openai.yaml +4 -0
  549. package/template/.claude/skills/editor/references/editor-control.md +363 -0
  550. package/template/.claude/skills/vgai-3d-models/SKILL.md +64 -0
  551. package/template/.claude/skills/vgai-ingest-existing-game/SKILL.md +112 -0
  552. package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +347 -0
  553. package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
  554. package/template/.claude/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
  555. package/template/.github/copilot-instructions.md +6 -0
  556. package/template/.github/skills/editor/SKILL.md +53 -0
  557. package/template/.github/skills/editor/agents/openai.yaml +4 -0
  558. package/template/.github/skills/editor/references/editor-control.md +363 -0
  559. package/template/.github/skills/vgai-3d-models/SKILL.md +64 -0
  560. package/template/.github/skills/vgai-ingest-existing-game/SKILL.md +112 -0
  561. package/template/.github/skills/vgai-threejs-authoring/SKILL.md +347 -0
  562. package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
  563. package/template/.github/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
  564. package/template/.mcp.json +12 -0
  565. package/template/.vgai/assets.json +1 -0
  566. package/template/.vgai/provenance.json +4 -0
  567. package/template/.volter/tracker/validation/.preset.base.mts +178 -0
  568. package/template/.volter/tracker/validation/preset.mts +186 -0
  569. package/template/.volter/tracker/visualizer/.extension.base.tsx +14 -0
  570. package/template/.volter/tracker/visualizer/extension.tsx +14 -0
  571. package/template/.volter/tracker-config.json +17 -0
  572. package/template/AGENTS.md +176 -0
  573. package/template/CLAUDE.md +1 -0
  574. package/template/DEVLOG.md +20 -0
  575. package/template/IDIOMS.md +118 -0
  576. package/template/LICENSE +30 -0
  577. package/template/README.md +83 -0
  578. package/template/ROADMAP.md +20 -0
  579. package/template/asset-manifest.json +3 -0
  580. package/template/check-idioms.ts +1533 -0
  581. package/template/index.html +18 -0
  582. package/template/manifest-entry-modules-plugin.ts +53 -0
  583. package/template/package.json +62 -0
  584. package/template/public/jsm/libs/basis/basis_transcoder.js +19 -0
  585. package/template/public/jsm/libs/basis/basis_transcoder.wasm +0 -0
  586. package/template/public/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  587. package/template/public/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  588. package/template/public/jsm/libs/draco/gltf/draco_encoder.js +33 -0
  589. package/template/public/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  590. package/template/public/shaders/daylight-sky.frag.glsl +15 -0
  591. package/template/public/shaders/daylight-sky.vert.glsl +7 -0
  592. package/template/scripts/patch-drei-stats-gl.mjs +35 -0
  593. package/template/server/colyseus-setup.ts +111 -0
  594. package/template/server/loopback.ts +76 -0
  595. package/template/server/main.ts +78 -0
  596. package/template/server/rooms/arena-room.ts +488 -0
  597. package/template/server/rooms/game-room.ts +274 -0
  598. package/template/server/rooms.ts +15 -0
  599. package/template/server/tsconfig.json +19 -0
  600. package/template/src/bot/QaTester.tsx +35 -0
  601. package/template/src/bot/behaviors.ts +203 -0
  602. package/template/src/bot/bot-station.ts +192 -0
  603. package/template/src/bot/tester-run.ts +238 -0
  604. package/template/src/bot/tester-station.ts +193 -0
  605. package/template/src/components/environment/DaylightSky.tsx +54 -0
  606. package/template/src/components/environment/Ground.tsx +129 -0
  607. package/template/src/components/environment/SceneAtmosphere.tsx +14 -0
  608. package/template/src/components/environment/SoftGroundShadow.tsx +62 -0
  609. package/template/src/components/environment/SunShadowFit.tsx +141 -0
  610. package/template/src/contributions/README.md +98 -0
  611. package/template/src/contributions/analytics.analytics.tsx +26 -0
  612. package/template/src/contributions/data.document.tsx +35 -0
  613. package/template/src/contributions/pages.finder.ts +61 -0
  614. package/template/src/contributions/tester.inspector.tsx +64 -0
  615. package/template/src/contributions/use-game-modules.ts +80 -0
  616. package/template/src/data/README.md +17 -0
  617. package/template/src/input.ts +97 -0
  618. package/template/src/lib/audio/capability.json +4 -0
  619. package/template/src/lib/audio/sfx.ts +255 -0
  620. package/template/src/lib/react-root/capability.json +4 -0
  621. package/template/src/lib/react-root/index.ts +20 -0
  622. package/template/src/lib/react-root/react-root-adapter.tsx +57 -0
  623. package/template/src/lib/reflections/ReflectionProbe.tsx +201 -0
  624. package/template/src/lib/reflections/capability.json +4 -0
  625. package/template/src/lib/reflections/index.ts +19 -0
  626. package/template/src/lib/reflections/probe-controller.ts +75 -0
  627. package/template/src/lib/reflections/reflection-probe-registry.ts +402 -0
  628. package/template/src/lib/reflections/volume-reflection-material.ts +416 -0
  629. package/template/src/lib/static-batch/Frozen.tsx +91 -0
  630. package/template/src/lib/static-batch/capability.json +4 -0
  631. package/template/src/lib/static-batch/freeze.ts +579 -0
  632. package/template/src/lib/static-batch/index.ts +44 -0
  633. package/template/src/lib/static-batch/mutation-watch.ts +149 -0
  634. package/template/src/lib/static-batch/shadow-cache.ts +171 -0
  635. package/template/src/main.ts +63 -0
  636. package/template/src/manifest-entry-modules.d.ts +3 -0
  637. package/template/src/prefabs/HeroBox.stories.tsx +23 -0
  638. package/template/src/prefabs/HeroBox.tsx +35 -0
  639. package/template/src/scenes/MainScene.tsx +77 -0
  640. package/template/src/world.tsx +87 -0
  641. package/template/tsconfig.json +35 -0
  642. package/template/tsconfig.node.json +32 -0
  643. package/template/tsconfig.tools.json +22 -0
  644. package/template/validate-asset-content.ts +27 -0
  645. package/template/validate-assets.ts +60 -0
  646. package/template/validate-manifest.ts +55 -0
  647. package/template/vgai.adapter.ts +76 -0
  648. package/template/vgai.project.json +24 -0
  649. package/template/vite.config.ts +247 -0
  650. package/template-dotfiles/gitignore +63 -0
  651. package/workbench/src/media/game-cover.css +83 -0
  652. package/workbench/src/product.contribution.ts +188 -0
  653. package/workbench/src/vgaiGameSkew.ts +276 -0
@@ -0,0 +1 @@
1
+ import{g as re,a as oe}from"./board-guides-DziKSTss.js";import{dE as se,bP as ne,bO as ie,av as ae,dF as le,dj as P,d9 as M,bA as j,aA as I,dG as $,dH as C,dI as ce,dJ as de,dK as O,dL as ue,bT as he,V as pe,bU as ge}from"./index-GIL7oGEO.js";import{r as fe,n as W,p as ye,t as be,c as me}from"./writer-B-KovzkA.js";import{s as Se}from"./story-arg-descriptors-Ek86ExX7.js";import{b as we,a as Re,c as ve,d as Ie,e as E,f as Ee,g as m,h as Ae,i as _,j as Te,k as ke}from"./inspect-BZfi3mmo.js";const H={count:0},xe="data-oid";function Pe(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 c=Array.from(s.children);c.forEach((d,l)=>{if(e.skip?.(d))return;const a=e.identify(d,{ownerId:n,ownedByAncestor:i,parent:s,siblingIndex:l,siblings:c});a!==null&&(t.set(a,{object:d,id:a,parentId:n,childIds:[]}),n===null?r.push(a):t.get(n)?.childIds.push(a));const h=a??n,p=i||a!==null;e.descend?.(d)!==!1&&o(d,h,p),e.leave?.(d,a)})};return o(u,null,!1),{nodes:t,rootIds:r,stats:Pe(t)}}function et(){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 l=0;l<r.siblingIndex;l++)r.siblings[l].tagName.toLowerCase()===o&&s++;const n=`${o}[${s}]`,i=r.ownerId?e.get(r.ownerId)??"":"",c=i?`${i}/${n}`:n,d=`rdom:${c}`;return e.set(d,c),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(xe);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 $e(u){return q().project(u)}class Ce{constructor(e){this.identity=e}nodesById=new Map;objectsById=new Map;idsByObjectIndex=new Map;roots=[];walkStats=H;project(e){if(!e)return this.nodesById=new Map,this.objectsById=new Map,this.idsByObjectIndex=new Map,this.roots=[],this.walkStats=H,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 F=64;function S(u){const e=u?.replace(/\s+/g," ").trim();return e?e.length<=F?e:`${e.slice(0,F-1).trimEnd()}…`:null}function x(u,e){return u?u[e]:void 0}const Oe=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*[\d.]+\s*)?\)$/;function Be(u){if(typeof u!="string"||u==="")return;if(u.startsWith("#"))return u;const e=Oe.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 Ne(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}}function Le(u){return u.getAttribute("data-vgai-at")==="true"}const De="data-oid",Me="http://www.w3.org/1999/xhtml",je=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function G(u,e){const t=u.namespaceURI;return t!=null&&t!==Me?!1:!je.has(e)}function A(u){const e=u.replaceAll("\\","/").replace(/^\.\//,""),t=e.lastIndexOf("/src/");return t>=0?e.slice(t+1):e}function We(u){return Q($e(u))}function Q(u){const e=new Map;for(const[t,r]of u.nodes)e.set(t,{id:t,oid:r.object.getAttribute(De)??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",y="prop.",R="token.",T="story.arg.",z="text",_e=30;let V=!1;const U=40,N="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 He(u){const e=[];for(let t=J.get(u);t;t=J.get(t))e.unshift(t);return e}const k="portable-document",L="React Preview",Fe=new Map(Z.map(({prop:u,type:e})=>[u,e])),Ge={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"},ze=[{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"}],Ve=/\.(?:avif|gif|jpe?g|png|svg|webp)(?:[?#].*)?$/i;function Ue(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 Je={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 Xe(u,e){const t=u.style;return typeof t?.getPropertyValue!="function"?!1:t.getPropertyValue(ke(e))!==""}class tt{constructor(e,t,r={}){this.root=e,this.store=t,this.assetRoot=r.assetRoot??e,this.provenance=r.provenance??Je,this.writeBackend=se(r.writeBackend,t.projectHistory),this.computedStyle=r.computedStyle??we,this.matchedCssRules=r.matchedCssRules??(a=>Re(a));const o=()=>{const a=this.root,h=typeof Element<"u"&&a instanceof Element?a.querySelector("[data-vgai-game-styles]")??a.closest?.("[data-vgai-game-styles]")??a:typeof document<"u"?document.documentElement:null;return typeof getComputedStyle=="function"&&h instanceof Element?getComputedStyle(h):void 0};this.designTokens=r.designTokens??(()=>ve(o())),this.designTokenValue=r.designTokens?a=>r.designTokens().find(h=>h.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:k,label:L,storyIds:this.portableStories.map(a=>a.id)}]:[]),n=new Set(this.portableStories.map(a=>a.id)),i=new Set,c=new Set,d=s.flatMap(a=>{if(c.has(a.id))return[];c.add(a.id);const h=a.storyIds.filter(p=>!n.has(p)||i.has(p)?!1:(i.add(p),!0));return h.length===0?[]:[{id:a.id,label:a.label??(a.path?ne(ie({modulePath:a.path,title:a.title})):L),...a.path?{path:a.path}:{},storyIds:h}]}),l=this.portableStories.map(a=>a.id).filter(a=>!i.has(a));l.length>0&&d.push({id:c.has(k)?`${k}:unassigned`:k,label:L,storyIds:l}),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 Ce(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>=_e){this.selectionRepairWatching=!1;return}setTimeout(r,U)};setTimeout(r,U)}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&&!V&&(V=!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??Ie(e.el)??null}elementLabel(e,t){const r=S(e.el.getAttribute("data-vgai-name"));if(r)return r;const o=e.el.getAttribute("aria-labelledby");if(o){const c=o.split(/\s+/).map(l=>Array.from(t.nodes.values()).find(a=>a.el.getAttribute("id")===l)).map(l=>S(l?.el.textContent)).filter(l=>l!==null),d=S(c.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 c=e.childIds.map(l=>t.nodes.get(l)).find(l=>l!==void 0&&/^h[1-6]$/.test(l.tag)),d=S(c?.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 c=S(e.el.textContent);if(c)return c}for(const c of["alt","title","placeholder","name"]){const d=S(e.el.getAttribute(c));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-vgai-hierarchy-id"),c=e.el.getAttribute("data-vgai-hierarchy-parent-id"),d=e.el.getAttribute("data-vgai-hierarchy-order"),l=e.el.getAttribute("data-vgai-hierarchy-group-label"),a=d===null?void 0:Number(d),h={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},...c===null?{}:{crossSurfaceParentId:c},...a===void 0||!Number.isInteger(a)?{}:{crossSurfaceOrder:a},...l===null?{}:{crossSurfaceGroupLabel:l}};return this.portableStories.length>0&&h.parentId===null?{...h,parentId:this.activeStoryId}:h}crossSurfaceStructureSignature(){const e=this.hierarchySnapshot(),t=new Set;for(const r of e.nodes.values())(r.el.getAttribute("data-vgai-hierarchy-id")!==null||r.el.getAttribute("data-vgai-hierarchy-parent-id")!==null||r.el.getAttribute("data-vgai-hierarchy-order")!==null||r.el.getAttribute("data-vgai-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-vgai-hierarchy-id"),r.el.getAttribute("data-vgai-hierarchy-parent-id"),r.el.getAttribute("data-vgai-hierarchy-order"),r.el.getAttribute("data-vgai-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??k,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 c=t?.scopeId?i.findIndex(a=>a.id===t.scopeId):-1;let d=c>=0?c+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:()=>{M(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(y))return null;const r=this.instanceSource(e);if(!r)return null;const o=t.slice(y.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(c=>c.name===t))&&o++}return Math.max(1,o)}instances={openComponent:()=>{M(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=`${y}${o}`,i=this.instanceProp(e,n);if(!i)return[];const c=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:c,affectedInstanceCount:this.affectedInstances(e,o),...c?{}:{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(c=>this.instanceProp(e,c)?.prop).filter(c=>!!c);let n=!1;const i=async c=>{for(const d of s){const l=await c.removeProp?.(r.callSiteOid,d);n||=l?.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,Ue(s,r.spec));if(!i?.changed)throw new Error(i?.error??"The component default did not change.");const c=await n.removeProp?.(r.source.callSiteOid,r.prop);if(!c?.changed)throw new Error(c?.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 c of r.values()){if(i++,this.lockedIds.has(c.id)||x(c.el.style,"pointerEvents")==="none")continue;const d=c.el.getBoundingClientRect?.();if(!d||e<d.left||e>d.right||t<d.top||t>d.bottom)continue;const l=d.width*d.height;(l<s||l===s&&i>n)&&(o=c.id,s=l,n=i)}return o===null?null:this.resolvePlacementUnit(o)}};resolvePlacementUnit(e){const{nodes:t}=this.snapshot(),o=t.get(e)?.el;if(!o?.closest||o.getAttribute?.("data-vgai-at")==="true")return e;const s=o.closest('[data-vgai-at="true"]');if(!s)return e;for(const[n,i]of t)if(i.el===s)return n;return e}hostRect(){const e=this.root.getBoundingClientRect?.();return{left:e?.left??0,top:e?.top??0}}toHostRelative(e){const t=this.hostRect(),r=j().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(g=>g!==e).map(g=>t.get(g)?.el.getBoundingClientRect?.()).filter(g=>g!=null).map(g=>this.toHostRelative(g)),c=r.el,d=c.getBoundingClientRect?.();let l;if(d){const g=I(m(c,"borderTopWidth",this.computedStyle))??0,v=I(m(c,"borderRightWidth",this.computedStyle))??0,te=I(m(c,"borderBottomWidth",this.computedStyle))??0,D=I(m(c,"borderLeftWidth",this.computedStyle))??0;l=this.toHostRelative({left:d.left+D,top:d.top+g,width:Math.max(0,d.width-D-v),height:Math.max(0,d.height-g-te)})}const a=re(),h=this.hostRect(),p=j().zoom,b=a.x.length>0||a.y.length>0?{x:a.x.map(g=>(g-h.left)/p),y:a.y.map(g=>(g-h.top)/p)}:void 0;return{...s?{parent:this.toHostRelative(s)}:{},...i.length?{siblings:i}:{},...l?{paddingBox:l}:{},...b?{guideEdges:b}:{}}},emptyContainers:()=>{const{nodes:e}=this.snapshot(),t=[];for(const r of e.values()){const o=r.el.getBoundingClientRect?.();!o||!G(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 Ee(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(m(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=m(o.el,"position",this.computedStyle),n=s==="absolute"||s==="fixed";for(const[i,c]of Object.entries(t)){const d=Ne(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 h=x(o.el.style,d.prop);r.priorInline.set(d.prop,h==null?"":String(h))}let l=c;if((i==="x"||i==="y")&&typeof c=="number"){const h=o.el,p=h.getBoundingClientRect?.();if(p&&typeof h.offsetLeft=="number"&&typeof h.offsetTop=="number"){const b=this.toHostRelative(p),g=i==="x"?b.x-h.offsetLeft:b.y-h.offsetTop;l=Math.round(c-g)}}const a=d.cssValue(l);o.el.style&&(o.el.style[d.prop]=a),r.touched.set(d.prop,d.prop==="transform"?a:l)}},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,s=this.snapshot().nodes.get(e),n=s&&Le(s.el)?Ae(s.el):null,i=l=>n===null?null:l==="left"?"x":l==="top"?"y":null;for(const[l,a]of t){const h=i(l);h&&typeof a=="number"?this.setEcho(e,`${y}${h}`,String(Math.round(a))):this.setEcho(e,`${f}${l}`,a)}let c=0;this.lastStyleWriteRefusal=null;const d=async l=>{for(const[a,h]of t){const p=i(a);if(p&&typeof h=="number"){await this.writeAtPlacement(e,n,p,h,l),c+=1;continue}const b=typeof h=="number"?`${h}px`:h;await this.writeStyleEntry(e,a,b,r.get(a),l)&&(c+=1)}if(c===0&&t.size>0){const a=this.lastStyleWriteRefusal??"the write was refused without a reason";pe.error(`The last edit on this element was NOT saved — ${a}`,"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`,d):await d(this.writeBackend)}catch(l){const a=this.snapshot().nodes.get(e);for(const[h,p]of r)this.clearEcho(e,`${f}${h}`),a?.el.style&&(a.el.style[h]=p);throw this.dirty=o,this.store.notifyIngestEdit(),l}}async writeAtPlacement(e,t,r,o,s){const n=`${y}${r}`,i=s??this.writeBackend;if(!i?.writeProp){this.clearEcho(e,n),console.warn(`[ReactRootAuthoringAdapter] cannot write At placement "${r}" on "${e}": no source-write backend with prop support in this session (hosted/no dev server).`);return}const c=await i.writeProp(t,r,String(Math.round(o)),{addIfMissing:!0});if(!c.changed){this.clearEcho(e,n),c.dynamic&&this.markGuarded(e,n,N),this.store.notifyIngestEdit(),console.warn(`[ReactRootAuthoringAdapter] At placement write refused/no-op for oid "${t}" prop "${r}": ${c.dynamic?"value is a dynamic expression (guarded) — authored truth the drag must not flatten":c.error??"no change"}`);return}this.dirty=!0}text={get:e=>{if(this.guardedPaths.has(`${e}|${z}`))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:c,group:d,options:l})=>({path:`${f}${n}`,label:i,type:c,group:d,...l?{options:l}:{}})),...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(T)?this.portableStoryArgs.get(e)?.[t.slice(T.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 h=this.snapshot().nodes.get(e);return h?m(h.el,"visibility",this.computedStyle)!=="hidden":void 0}if(t.startsWith(R)){const a=t.slice(R.length);return this.designTokenValue(a)}if(t.startsWith(y)){const a=this.snapshot().nodes.get(e);return(a?E(a.el):null)?.props[t.slice(y.length)]}if(!t.startsWith(f))return;const n=t.slice(f.length),i=this.snapshot().nodes.get(e);if(!i)return;const c=x(i.el.style,n),d=typeof c=="string"&&c!==""?c:typeof c=="number"?String(c):m(i.el,n,this.computedStyle),l=Fe.get(n);return l==="number"?I(d):l==="color"?Be(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(T))return;const s=t.slice(T.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(y))return this.setEcho(e,t,r),this.pipedSourceWrite(()=>this.writePropEdit(e,t.slice(y.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=Ge[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=We(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 Se(this.portableStoryArgs.get(e)??{},T)}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-vgai-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:_(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=l=>(console.warn(`[ReactRootAuthoringAdapter] named-style ${t.kind} refused: ${l}`),{changed:!1,error:l});if(t.kind==="remove"){const l=await C({op:"remove",oid:r.oid,className:t.className});return l.changed?(this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0}):o(l.error??"no change")}if(_(t.className)){const l=await C({op:"apply",oid:r.oid,className:t.className});return l.changed?(this.dirty=!0,this.store.notifyIngestEdit(),{changed:!0}):o(l.error??"the element already wears this class")}const n=l=>l!==void 0&&!l.includes("/packages/editor/")&&!l.includes("/node_modules/")&&!l.includes("/vendor/"),i=this.matchedCssRules(r.el).filter(l=>n(l.sourceFile)),c=i[i.length-1]?.sourceFile??Te().find(n),d=await C({op:"create",oid:r.oid,className:t.className,...c!==void 0?{file:c}:{}});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:`${y}${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(c=>c.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:()=>[...ze],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(!G(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 Ve.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 c=oe();if(c!==null){const l=W(this.matchedCssRules(i.el),X(i.el)),a=s.writeCss?l?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||!l||!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 h=await s.writeCss(l.sourceFile,l.selectorText,t,O(t,r),c);return h.changed?(this.dirty=!0,this.store.notifyIngestEdit(),!0):(this.clearEcho(e,n),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] breakpoint css write refused/no-op for "${l.selectorText}" ${t} at ${c}: ${h.error??"no change"}`),!1)}if(s.writeCss){const l=this.matchedCssRules(i.el),a=ye(l,t),h=!a&&!Xe(i.el,t)?W(l,X(i.el)):null,p=a?.rule??h;if(p){const b={rule:p},{rule:g}=b,v=await s.writeCss(g.sourceFile,g.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 "${g.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 l=d.tokenRef?be(t,d.tokenRef):d.dynamic?N:null;return l&&this.markGuarded(e,n,l),this.store.notifyIngestEdit(),this.refuseStyleWrite(`[ReactRootAuthoringAdapter] style write refused/no-op for oid "${i.oid}" prop "${t}": ${l??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=He(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]??[],c=i.map(d=>m(s.el,d,this.computedStyle));if(await this.removeStyleProp(e,n,r))for(const[d,l]of i.entries()){if(l===t)continue;const a=c[d];a&&await this.writeStyleEntry(e,l,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,z,"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=`${y}${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,N),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 he({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=me({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{Ce as D,tt as R,x as a,Be as c,Ne as m,et as s,We as w};
@@ -0,0 +1 @@
1
+ import{Q as c,dz as a,dv as s}from"./index-GIL7oGEO.js";import{resolveCanvasEntryAdapterForEditor as f}from"./canvas-entry-runtime-SfBxaR9M.js";import{WorldProvider as d}from"./world-state-BWG-IcOd.js";import{r}from"./index-nmcBqr7Y.js";import{r as m}from"./index-CtzuWnCS.js";import{a as l}from"./client-DNXj_opT.js";import{r as R}from"./three-ingest-runtime-QzDYk6tU.js";function p(){return{createElement:r.createElement,createRoot:l.createRoot,useEffect:r.useEffect,useRef:r.useRef,flushSync:m.flushSync,engineWorldProvider:d}}async function E(){const e=await import(a);if(typeof e.createElement!="function"||typeof e.createRoot!="function"||typeof e.useEffect!="function"||typeof e.useRef!="function"||typeof e.flushSync!="function"||typeof e.EngineWorldProvider!="function")throw new Error(`The packaged runtime's synthetic react-world-runtime module ("${a}") did not export createElement/createRoot/useEffect/useRef/flushSync/EngineWorldProvider as functions — see vite-plugin-module-doorways.ts.`);return{createElement:e.createElement,createRoot:e.createRoot,useEffect:e.useEffect,useRef:e.useRef,flushSync:e.flushSync,engineWorldProvider:e.EngineWorldProvider}}let o=null;async function i(){return await c()?(o||(o=E()),o):p()}async function I(){return(await i()).engineWorldProvider}const y={pixiRuntime:f,reactDomRuntime:i,threeIngestRuntime:R};function g(e,t){return async(n,v,P,u)=>await import(s(e,n,t,u))}async function T(e,t){return{id:await c()?"packaged":"dev",projectRoot:e,epoch:t,loadEntryModule:g(e,t),entryReach:"full",...y}}export{T as a,i as b,I as r};
@@ -0,0 +1 @@
1
+ class r{constructor(t){this.input=t}state={status:"idle"};getState(){return this.state}listen(t,s="replace",e=0){this.state={status:"listening",actionName:t,mode:s,index:e}}cancel(){this.state={status:"idle"}}capture(t){if(this.state.status!=="listening")return this.state;const{actionName:s,mode:e,index:i}=this.state,a=this.input.findConflicts(t,s);return a.length>0?(this.state={status:"conflict",actionName:s,mode:e,index:i,proposed:t,conflicts:a},this.state):(this.apply(s,e,i,t),this.state={status:"applied",actionName:s,binding:t},this.state)}resolveOverride(){if(this.state.status!=="conflict")return this.state;const{actionName:t,mode:s,index:e,proposed:i}=this.state;return this.apply(t,s,e,i),this.state={status:"applied",actionName:t,binding:i},this.state}apply(t,s,e,i){s==="add"?this.input.addBinding(t,i):this.input.replaceBinding(t,e,i)}}export{r as RebindController};