@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{a as n}from"./jsx-runtime-DPjLkJKQ.js";import{e7 as ye,e8 as ne,e9 as xe,ea as be,eb as je,ec as Se,b0 as ve,ed as Ce,ee as Re,ef as ke,eg as we,eh as Ee,ei as m,dP as u,dR as j,a4 as k,ej as M,ek as $e,el as H,em as V,aY as B,dW as Te,bo as Y,en as se,eo as Ie,ep as Ne,aV as Ae,aA as ie,eq as Me,er as Oe}from"./index-GIL7oGEO.js";import{r as v}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{p as re,G as ae,c as A,B as Be,A as Fe,S as O,a as De,b as _e,F as Le,d as J,e as ze,f as Pe,T as We,g as X,h as Ge,C as He,i as Ue,j as Ve}from"./ShadowEditor-DkImwu1Y.js";import{s as oe,a as U,b as Ke}from"./board-guides-DziKSTss.js";import{b as Ye}from"./eyedropper-session-bjPXnfeX.js";import{l as Je,m as Xe}from"./inspect-BZfi3mmo.js";import{D as qe}from"./dom-authoring-adapter-CY8C7f4T.js";import{R as _,c as Qe}from"./react-world-authoring-adapter-DmrwM3py.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./three.module-D396a9Mn.js";import"./inference-diagnostics-Dhmtfbq_.js";import"./json-history-resource-BbxllWfV.js";import"./writer-B-KovzkA.js";import"./story-arg-descriptors-Ek86ExX7.js";function le(e,t){if(!e)return null;const s=(()=>{if(!(t instanceof Ee))return t;const i=t.ownerOf(e.id);return i===null?null:t.childAdapters().find(a=>a.worldId===i)?.adapter??null})();return s instanceof _||s instanceof qe?s:null}const Ze=(e,t)=>le(e,t)!==null,et="element",tt=1500,nt="story",st=1600;function T(e){const t=e.indexOf(".");return t===-1?e:e.slice(t+1)}function it(e){const t=T(e.path);return e.type==="color"?"color":/^fontFamily$/i.test(t)?"font":t==="background"||t==="backgroundImage"?"gradient":t==="boxShadow"?"shadow":t==="textShadow"?"text-shadow":t==="filter"?"filter":t==="backdropFilter"?"backdrop-filter":t==="borderRadius"?"radius":e.type==="string"&&t==="transform"?"transform":e.type==="boolean"?"checkbox":e.type==="enum"?"select":e.type==="json"?"json":e.type==="number"?"scrub":"text"}function rt(e,t,s,i){if(!(e.path==="style.borderWidth"||e.path==="style.borderStyle"||e.path==="style.borderColor"))return!1;const o=t.get("style.borderWidth"),c=t.get("style.borderStyle"),r=t.get("style.borderColor");return!o||!c||!r?!1:(i.push({kind:"border",width:o,style:c,color:r}),s.add(o.path),s.add(c.path),s.add(r.path),!0)}function at(e,t,s,i){if(!(e.path==="style.justifyContent"||e.path==="style.alignItems"))return!1;const o=t.get("style.justifyContent"),c=t.get("style.alignItems");return!o||!c?!1:(i.push({kind:"align",justify:o,align:c}),s.add(o.path),s.add(c.path),!0)}function ce(e){const t=new Map(e.map(a=>[a.path,a])),s=new Set,i=[];for(const a of e)s.has(a.path)||rt(a,t,s,i)||at(a,t,s,i)||i.push({kind:"single",prop:a});return i}function L(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function F(e){return`react-prop-${e.replace(/\./g,"-")}`}const de={type:"linear",angle:180,stops:[{color:"#ffffff",position:0},{color:"#000000",position:1}]};function w({label:e,testId:t,children:s}){return n.jsxs("div",{"data-testid":t?`${t}-row`:void 0,style:{...Me,padding:`${u[2]} ${u[4]}`},children:[n.jsx("span",{style:{width:Oe,flexShrink:0,fontSize:j.base,color:m.textMuted},children:e}),n.jsx("div",{style:{flex:1,minWidth:0},children:s})]})}function ot({prop:e,raw:t,disabled:s,testId:i,commit:a}){return n.jsx(w,{label:e.label,testId:i,children:n.jsx(He,{testId:i,value:String(t??"#ffffff"),disabled:s,onChange:o=>a(e.path,o),onChangeEnd:o=>a(e.path,o),eyedropperFallback:()=>Xe([String(t??"")]),onEyedropperPick:o=>Ye(o)})})}function lt({prop:e,raw:t,disabled:s,fonts:i,testId:a,commit:o}){return n.jsx(w,{label:e.label,testId:a,children:n.jsx(Ge,{testId:a,value:String(t??""),fonts:i,disabled:s,onChange:c=>o(e.path,c)})})}function ct({prop:e,raw:t,disabled:s,testId:i,commit:a}){const o=re(String(t??"none"));return o?n.jsx(w,{label:e.label,testId:i,children:n.jsx(ae,{testId:i,value:o,disabled:s,onChange:c=>a(e.path,A(c)),onChangeEnd:c=>a(e.path,A(c))})}):n.jsx(w,{label:e.label,testId:i,children:n.jsx(k,{type:"button",variant:"secondary",className:"vgai-field-trigger","data-testid":i,disabled:s,onClick:()=>a(e.path,A(de)),children:"No gradient — click to add"})})}function q({prop:e,raw:t,disabled:s,testId:i,commit:a,withSpreadInset:o}){const c=ze(String(t??"none"),o),r=o?Pe:We;return n.jsx(w,{label:e.label,testId:i,children:n.jsx(r,{value:c,disabled:s,onChange:l=>a(e.path,X(l,o)),onChangeEnd:l=>a(e.path,X(l,o))})})}function Q({prop:e,raw:t,disabled:s,testId:i,commit:a,label:o}){const c=_e(String(t??"none"));return n.jsx(w,{label:e.label,testId:i,children:n.jsx(Le,{testId:i,label:o,value:c,disabled:s,onChange:r=>a(e.path,J(r)),onChangeEnd:r=>a(e.path,J(r))})})}const G=[{key:"topLeft",suffix:"TopLeft"},{key:"topRight",suffix:"TopRight"},{key:"bottomLeft",suffix:"BottomLeft"},{key:"bottomRight",suffix:"BottomRight"}];function dt({adapter:e,id:t,prop:s,raw:i,disabled:a,testId:o,commit:c,removeStyle:r}){const l=L(i),d=G.reduce((g,{key:f,suffix:S})=>{const x=e.inspector?.get(t,`style.border${S}Radius`);return g[f]=ie(x)??l,g},{}),y=g=>{if(Ve(g)){c(s.path,g.topLeft);for(const{suffix:f}of G)r(`style.border${f}Radius`);return}for(const{key:f,suffix:S}of G)c(`style.border${S}Radius`,g[f])};return n.jsx(w,{label:s.label,testId:o,children:n.jsx(De,{value:d,disabled:a,onChange:y,onChangeEnd:y})})}function ut({prop:e,raw:t,disabled:s,testId:i,commit:a}){const o=se.has(T(e.path))?"":"px";return n.jsx(O,{testId:i,label:e.label,value:L(t),unit:o,disabled:s,onChange:c=>a(e.path,c),onChangeEnd:c=>a(e.path,c),style:{padding:`${u[2]} ${u[4]}`}})}function pt({prop:e,raw:t,disabled:s,testId:i,commit:a}){return n.jsx(w,{label:e.label,testId:i,children:n.jsx(V,{"data-testid":i,value:String(t??""),disabled:s,"data-dynamic":s||void 0,onChange:o=>a(e.path,o.target.value),style:{width:"100%"},children:(e.options??[]).map(o=>n.jsx("option",{value:String(o),children:String(o)},String(o)))})})}function gt({prop:e,raw:t,disabled:s,testId:i,commit:a}){return n.jsxs("label",{style:{display:"flex",gap:u[3],alignItems:"center",padding:`${u[3]} ${u[4]}`,fontSize:j.md},children:[n.jsx(Ae,{className:"vgai-checkbox","data-testid":i,checked:t!==!1,disabled:s,onChange:o=>a(e.path,o.target.checked)}),e.label]})}function ht({prop:e,raw:t,disabled:s,testId:i,commit:a}){return n.jsx(w,{label:e.label,testId:i,children:n.jsx(Ne,{"data-testid":i,defaultValue:JSON.stringify(t??null),disabled:s,"data-dynamic":s||void 0,"data-variant":"code",style:{width:"100%",minHeight:40},onBlur:o=>{try{a(e.path,JSON.parse(o.target.value))}catch{}}})})}function ue({prop:e,raw:t,disabled:s,testId:i,commit:a}){return n.jsx(w,{label:e.label,testId:i,children:n.jsx(Ie,{type:"text","data-testid":i,readOnly:s,"data-dynamic":s||void 0,value:String(t??""),onCommit:o=>a(e.path,o),style:{width:"100%"}})})}const ft=/^rotate\(\s*(-?[\d.]+)deg\s*\)\s*scale\(\s*(-?[\d.]+)\s*\)$/i,mt=/^scale\(\s*(-?[\d.]+)\s*\)\s*rotate\(\s*(-?[\d.]+)deg\s*\)$/i,yt=/^rotate\(\s*(-?[\d.]+)deg\s*\)$/i,xt=/^scale\(\s*(-?[\d.]+)\s*\)$/i,bt=/^matrix\(\s*(-?[\d.eE+-]+)\s*,\s*(-?[\d.eE+-]+)\s*,\s*(-?[\d.eE+-]+)\s*,\s*(-?[\d.eE+-]+)\s*,\s*(-?[\d.eE+-]+)\s*,\s*(-?[\d.eE+-]+)\s*\)$/,D=1e-4;function jt(e){const t=e.trim();if(t===""||t==="none")return{rotateDeg:0,scale:1};const s=ft.exec(t);if(s)return{rotateDeg:Number(s[1]),scale:Number(s[2])};const i=mt.exec(t);if(i)return{rotateDeg:Number(i[2]),scale:Number(i[1])};const a=yt.exec(t);if(a)return{rotateDeg:Number(a[1]),scale:1};const o=xt.exec(t);if(o)return{rotateDeg:0,scale:Number(o[1])};const c=bt.exec(t);if(!c)return null;const[r,l,d,y,g,f]=c.slice(1,7).map(Number);if(Math.abs(g)>D||Math.abs(f)>D||Math.abs(d+l)>D||Math.abs(y-r)>D)return null;const S=Math.hypot(r,l);if(S<D)return null;const x=Math.atan2(l,r)*180/Math.PI;return{rotateDeg:Math.round(x*100)/100,scale:Math.round(S*1e3)/1e3}}function St(e){return`rotate(${e.rotateDeg}deg) scale(${e.scale})`}function vt(e){const{prop:t,raw:s,disabled:i,testId:a,commit:o}=e,c=jt(String(s??"none"));if(!c)return n.jsx(ue,{...e});const r=l=>o(t.path,St(l));return n.jsx(w,{label:t.label,testId:a,children:n.jsxs("div",{style:{display:"flex",gap:u[3]},children:[n.jsx(O,{testId:`${a}-rotate`,label:"Rotate",value:c.rotateDeg,unit:"deg",disabled:i,onChange:l=>r({...c,rotateDeg:l}),onChangeEnd:l=>r({...c,rotateDeg:l}),style:{flex:1}}),n.jsx(O,{testId:`${a}-scale`,label:"Scale",value:c.scale,unit:"x",step:.1,disabled:i,onChange:l=>r({...c,scale:l}),onChangeEnd:l=>r({...c,scale:l}),style:{flex:1}})]})})}function $({adapter:e,id:t,prop:s,fonts:i}){const a=B(),o=(l,d)=>{e.inspector?.set(t,l,d),a.notifyIngestEdit()},c=l=>{e.inspector?.remove?.(t,l),a.notifyIngestEdit()},r={prop:s,raw:e.inspector?.get(t,s.path),disabled:s.readonly,testId:F(s.path),commit:o,fonts:i};switch(it(s)){case"color":return n.jsx(ot,{...r});case"font":return n.jsx(lt,{...r});case"gradient":return n.jsx(ct,{...r});case"shadow":return n.jsx(q,{...r,withSpreadInset:!0});case"text-shadow":return n.jsx(q,{...r,withSpreadInset:!1});case"filter":return n.jsx(Q,{...r,label:"Filter"});case"backdrop-filter":return n.jsx(Q,{...r,label:"Backdrop Filter"});case"radius":return n.jsx(dt,{...r,adapter:e,id:t,removeStyle:c});case"transform":return n.jsx(vt,{...r});case"scrub":return n.jsx(ut,{...r});case"select":return n.jsx(pt,{...r});case"checkbox":return n.jsx(gt,{...r});case"json":return n.jsx(ht,{...r});default:return n.jsx(ue,{...r})}}function pe({adapter:e,id:t,row:s}){const i=B(),a=(r,l)=>{e.inspector?.set(t,r,l),i.notifyIngestEdit()},o=r=>{e.inspector?.remove?.(t,r),i.notifyIngestEdit()};if(s.kind==="border"){const r={width:L(e.inspector?.get(t,s.width.path)),style:String(e.inspector?.get(t,s.style.path)??"solid"),color:String(e.inspector?.get(t,s.color.path)??"#000000")},l=f=>{const S=ie(e.inspector?.get(t,`style.border${f}Width`)),x=e.inspector?.get(t,`style.border${f}Style`),C=e.inspector?.get(t,`style.border${f}Color`),p=typeof C=="string"?Qe(C):void 0;return{width:S??r.width,style:typeof x=="string"&&x?x:r.style,color:p??r.color}},d={top:l("Top"),right:l("Right"),bottom:l("Bottom"),left:l("Left")},y=["Top","Right","Bottom","Left"],g=f=>{if(Ue(f)){a(s.width.path,f.top.width),a(s.style.path,f.top.style),a(s.color.path,f.top.color);for(const x of y)o(`style.border${x}Width`),o(`style.border${x}Style`),o(`style.border${x}Color`);return}const S=y.map(x=>({suffix:x,side:f[x.toLowerCase()]}));for(const{suffix:x,side:C}of S)a(`style.border${x}Width`,C.width),a(`style.border${x}Style`,C.style),a(`style.border${x}Color`,C.color)};return n.jsx(w,{label:"Border",testId:"react-prop-border",children:n.jsx(Be,{value:d,onChange:g,onChangeEnd:g})})}const c={justify:e.inspector?.get(t,s.justify.path)??"flex-start",align:e.inspector?.get(t,s.align.path)??"flex-start"};return n.jsx(w,{label:"Align",testId:"react-prop-align",children:n.jsx(Fe,{value:c,onChange:r=>{a(s.justify.path,r.justify),a(s.align.path,r.align)}})})}function z(e){return e.kind==="single"?e.prop.path:e.kind==="border"?`border:${e.width.path}`:`align:${e.justify.path}`}function E(e,t,s,i,a){if(!s)return null;const o=se.has(T(s.path))?"":"px",c=F(s.path);return n.jsx(O,{testId:c,label:i,value:L(e.inspector?.get(t,s.path)),unit:o,disabled:s.readonly,onChange:r=>a(s.path,r),onChangeEnd:r=>a(s.path,r),style:{flex:1,minWidth:0}},s.path)}function Ct({adapter:e,id:t,props:s,fonts:i,showConstraints:a,onToggleConstraints:o}){const c=B(),r=new Map(s.map(p=>[T(p.path),p])),l=(p,P)=>{e.inspector?.set(t,p,P),c.notifyIngestEdit()},d=String(e.inspector?.get(t,r.get("display")?.path??"style.display")??""),y=d==="flex"||d==="inline-flex",g=d==="grid"||d==="inline-grid",f=r.get("display"),S=r.get("gap"),x=ce(s.filter(p=>["justifyContent","alignItems"].includes(T(p.path)))),C=["flexDirection","flexWrap","overflow"].map(p=>r.get(p)).filter(p=>!!p);return n.jsxs("div",{style:{padding:"2px 8px 7px"},children:[n.jsxs("div",{style:{display:"flex",gap:u[3]},children:[E(e,t,r.get("width"),"W",l),E(e,t,r.get("height"),"H",l)]}),a&&n.jsxs("div",{"data-testid":"react-layout-constraints",style:{marginTop:5},children:[n.jsxs("div",{style:{display:"flex",gap:u[3]},children:[E(e,t,r.get("minWidth"),"Min W",l),E(e,t,r.get("minHeight"),"Min H",l)]}),n.jsxs("div",{style:{display:"flex",gap:u[3],marginTop:u[2]},children:[E(e,t,r.get("maxWidth"),"Max W",l),E(e,t,r.get("maxHeight"),"Max H",l)]})]}),n.jsx(k,{type:"button",variant:"ghost",size:"compact","data-testid":"react-layout-toggle-constraints",onClick:o,style:{display:"flex",margin:"2px auto 5px"},children:a?"− constraints":"··· constraints"}),n.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1.35fr) minmax(0, 1fr)",gap:u[3]},children:[f&&n.jsx(V,{"data-testid":F(f.path),value:d,disabled:f.readonly,"data-dynamic":f.readonly||void 0,onChange:p=>l(f.path,p.target.value),style:{width:"100%"},children:(f.options??[]).map(p=>n.jsx("option",{value:String(p),children:String(p)},String(p)))}),E(e,t,S,"Gap",l)]}),y&&n.jsxs("div",{"data-testid":"react-layout-flex-controls",style:{marginTop:5},children:[C.filter(p=>T(p.path)!=="overflow").map(p=>n.jsx($,{adapter:e,id:t,prop:p,fonts:i},p.path)),x.map(p=>p.kind==="single"?n.jsx($,{adapter:e,id:t,prop:p.prop,fonts:i},z(p)):n.jsx(pe,{adapter:e,id:t,row:p},z(p)))]}),g&&n.jsxs("div",{"data-testid":"react-layout-grid-controls",style:{marginTop:5},children:[n.jsxs("div",{style:{display:"flex",gap:u[3]},children:[Z(e,t,r.get("gridTemplateColumns"),"Cols",l),Z(e,t,r.get("gridTemplateRows"),"Rows",l)]}),[r.get("gridTemplateColumns"),r.get("gridTemplateRows")].filter(p=>!!p).map(p=>n.jsx($,{adapter:e,id:t,prop:p,fonts:i},p.path)),n.jsxs("div",{style:{display:"flex",gap:u[3],marginTop:u[1]},children:[E(e,t,r.get("rowGap"),"Row Gap",l),E(e,t,r.get("columnGap"),"Col Gap",l)]}),r.get("gridAutoFlow")&&n.jsx($,{adapter:e,id:t,prop:r.get("gridAutoFlow"),fonts:i})]}),C.filter(p=>T(p.path)==="overflow").map(p=>n.jsx($,{adapter:e,id:t,prop:p,fonts:i},p.path)),n.jsx(Rt,{adapter:e,id:t,byName:r,fonts:i})]})}function ge(e){const t=e.trim();if(!t||t==="none")return 0;const s=[];let i=0,a=0;for(let c=0;c<t.length;c++){const r=t[c];r==="("||r==="["?i++:r===")"||r==="]"?i--:r===" "&&i===0&&(c>a&&s.push(t.slice(a,c)),a=c+1)}a<t.length&&s.push(t.slice(a));let o=0;for(const c of s){const r=/^repeat\(\s*(\d+)\s*,([\s\S]*)\)$/.exec(c);o+=r?.[1]&&r[2]!==void 0?Number(r[1])*ge(r[2]):1}return o}function Z(e,t,s,i,a){if(!s)return null;let o=null;const c=r=>{const d=`repeat(${Math.max(1,Math.round(r))}, 1fr)`;d!==o&&(o=d,a(s.path,d))};return n.jsx(O,{testId:`${F(s.path)}-count`,label:i,value:ge(String(e.inspector?.get(t,s.path)??"")),min:1,disabled:s.readonly,onChange:c,onChangeEnd:c,style:{flex:1,minWidth:0}},`${s.path}-count`)}function Rt({adapter:e,id:t,byName:s,fonts:i}){const[a,o]=v.useState(!1),c=["gridColumn","gridRow","justifySelf"].map(r=>s.get(r)).filter(r=>!!r);return c.length===0?null:n.jsxs(n.Fragment,{children:[n.jsx(k,{type:"button",variant:"ghost",size:"compact","data-testid":"react-layout-toggle-grid-item",onClick:()=>o(r=>!r),style:{display:"flex",margin:"2px auto 0"},children:a?"− grid item":"··· grid item"}),a&&n.jsx("div",{"data-testid":"react-layout-grid-item",children:c.map(r=>n.jsx($,{adapter:e,id:t,prop:r,fonts:i},r.path))})]})}function kt(e){const t=e.trim();if(!t||t==="none")return[];const s=[];let i=0,a=0;for(let o=0;o<t.length;o++){const c=t[o];c==="("?i++:c===")"?i--:c===","&&i===0&&(s.push(t.slice(a,o).trim()),a=o+1)}return s.push(t.slice(a).trim()),s.filter(Boolean)}function ee(e){return/^url\((['"]?)([\s\S]*)\1\)$/.exec(e.trim())?.[2]??null}function wt({adapter:e,id:t,props:s,fonts:i}){const a=B(),o=new Map(s.map(h=>[T(h.path),h])),c=(h,b)=>{e.inspector?.set(t,h,b),a.notifyIngestEdit()},r=o.get("backgroundImage"),l=o.get("backgroundColor"),[d,y]=v.useState(null),[g,f]=v.useState(null),S=String(r?e.inspector?.get(t,r.path)??"":""),x=kt(S),C=h=>{if(r){if(h.length>0){c(r.path,h.join(", "));return}e.inspector?.remove?.(t,r.path),a.notifyIngestEdit()}},p=(h,b)=>C(x.map((R,I)=>I===h?b:R)),P=h=>{y(null),C(x.filter((b,R)=>R!==h))},K=(h,b)=>{const R=[...x],I=R[h+b];I===void 0||R[h]===void 0||(R[h+b]=R[h],R[h]=I,y(null),C(R))},W={background:"none",border:"none",color:m.textMuted,cursor:"pointer",fontSize:j.base,padding:`${u[2]} ${u[3]}`,lineHeight:M.tight};return n.jsxs("div",{"data-testid":"react-fill-list",style:{padding:"2px 8px 7px"},children:[x.map((h,b)=>{const R=re(h),I=ee(h),me=R?`${R.type} gradient`:I!==null?I.split("/").pop()??"image":h.slice(0,22);return n.jsxs("div",{style:{marginBottom:3},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:5},children:[n.jsxs("button",{type:"button","data-testid":`react-fill-layer-${b}`,title:h,onClick:()=>y(d===b?null:b),style:{display:"flex",alignItems:"center",gap:u[3],flex:1,minWidth:0,background:"none",border:"none",cursor:"pointer",padding:`${u[1]} 0`,color:m.text,fontSize:j.base,textAlign:"left"},children:[n.jsx("span",{style:{width:16,height:16,flexShrink:0,borderRadius:Te.sm,border:`1px solid ${m.border}`,background:h,backgroundSize:"cover"}}),n.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:me})]}),b>0&&n.jsx("button",{type:"button","data-testid":`react-fill-up-${b}`,title:"Raise this fill",onClick:()=>K(b,-1),style:W,children:"↑"}),b<x.length-1&&n.jsx("button",{type:"button","data-testid":`react-fill-down-${b}`,title:"Lower this fill",onClick:()=>K(b,1),style:W,children:"↓"}),n.jsx("button",{type:"button","data-testid":`react-fill-remove-${b}`,title:"Remove this fill (CSS has no hidden-layer state — removing is Figma's eye)",onClick:()=>P(b),style:W,children:"✕"})]}),d===b&&R&&n.jsx(ae,{testId:`react-fill-gradient-${b}`,value:R,onChange:N=>p(b,A(N)),onChangeEnd:N=>p(b,A(N))}),d===b&&I!==null&&n.jsx(Y,{"data-testid":`react-fill-url-${b}`,defaultValue:I,placeholder:"image url",onBlur:N=>p(b,`url("${N.target.value.trim()}")`),onKeyDown:N=>{N.key==="Enter"&&p(b,`url("${N.currentTarget.value.trim()}")`)},style:{width:"100%",marginTop:u[1]}})]},`${b}-${h.slice(0,24)}`)}),g!==null&&n.jsx(Y,{"data-testid":"react-fill-image-draft",value:g,placeholder:"image url — Enter to add",autoFocus:!0,onChange:h=>f(h.target.value),onKeyDown:h=>{h.key==="Enter"&&g.trim()&&(C([`url("${g.trim()}")`,...x]),f(null)),h.key==="Escape"&&f(null)},style:{width:"100%",marginBottom:3}}),n.jsxs("div",{style:{display:"flex",gap:u[2]},children:[n.jsx(k,{type:"button",variant:"ghost",size:"compact","data-testid":"react-fill-add-gradient",onClick:()=>{C([A(de),...x]),y(0)},children:"+ gradient"}),n.jsx(k,{type:"button",variant:"ghost",size:"compact","data-testid":"react-fill-add-image",onClick:()=>f(""),children:"+ image"})]}),x.some(h=>ee(h)!==null)&&["backgroundSize","backgroundPosition","backgroundRepeat"].map(h=>o.get(h)).filter(h=>!!h).map(h=>n.jsx($,{adapter:e,id:t,prop:h,fonts:i},h.path)),l&&n.jsx($,{adapter:e,id:t,prop:l,fonts:i})]})}function Et({adapter:e,id:t,props:s,fonts:i}){const a=B(),o=new Map(s.map(g=>[T(g.path),g])),c=o.get("position"),r=String(c?e.inspector?.get(t,c.path)??"static":"static"),l=(g,f)=>{e.inspector?.set(t,g,f),a.notifyIngestEdit()},d=["top","right","bottom","left"],y=["zIndex","flexGrow","flexShrink","flexBasis","alignSelf"].map(g=>o.get(g)).filter(g=>!!g);return n.jsxs("div",{style:{padding:"2px 8px 7px"},children:[c&&n.jsx("div",{"data-testid":F(c.path),style:{display:"grid",gridTemplateColumns:"repeat(5, 1fr)",gap:u[1]},children:(c.options??[]).map(g=>{const f=String(g),S=f===r;return n.jsx(k,{type:"button",variant:S?"primary":"secondary",size:"compact","aria-pressed":S,title:f,disabled:c.readonly,onClick:()=>l(c.path,f),children:f.slice(0,3)},f)})}),r!=="static"&&n.jsx("div",{"data-testid":"react-position-offsets",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:u[2],marginTop:u[3]},children:d.map(g=>E(e,t,o.get(g),g[0].toUpperCase(),l))}),y.length>0&&n.jsxs("div",{style:{borderTop:`1px solid ${m.border}`,marginTop:7,paddingTop:3},children:[n.jsx("div",{style:{color:m.textMuted,fontSize:j.xs,padding:"2px 0 1px"},children:"STACKING & FLEX ITEM"}),y.map(g=>n.jsx($,{adapter:e,id:t,prop:g,fonts:i},g.path))]})]})}function $t({adapter:e,id:t,props:s}){const i=B(),a=new Map(s.map(d=>[T(d.path),d])),o=(d,y)=>{e.inspector?.set(t,d,y),i.notifyIngestEdit()},c=d=>{const y=a.get(d);return y?n.jsx(O,{testId:F(y.path),label:"",value:L(e.inspector?.get(t,y.path)),unit:"px",disabled:y.readonly,onChange:g=>o(y.path,g),onChangeEnd:g=>o(y.path,g),style:{width:46,minWidth:0,flex:"none"}},y.path):n.jsx("span",{},d)},r=d=>n.jsx("span",{style:{position:"absolute",top:2,left:6,fontSize:8,letterSpacing:".08em",color:m.textMuted,pointerEvents:"none"},children:d}),l={display:"flex",alignItems:"center",justifyContent:"center"};return n.jsx("div",{style:{padding:`${u[1]} ${u[4]} ${u[4]}`},"data-testid":"react-spacing-box",children:n.jsxs("div",{style:{position:"relative",border:`1px solid ${m.border}`,borderRadius:4,padding:"11px 4px 3px"},children:[r("MARGIN"),n.jsx("div",{style:l,children:c("marginTop")}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:u[1]},children:[c("marginLeft"),n.jsxs("div",{style:{position:"relative",flex:1,minWidth:0,border:`1px dashed ${m.border}`,borderRadius:4,padding:"11px 4px 3px"},children:[r("PADDING"),n.jsx("div",{style:l,children:c("paddingTop")}),n.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:u[1]},children:[c("paddingLeft"),c("paddingRight")]}),n.jsx("div",{style:l,children:c("paddingBottom")})]}),c("marginRight")]}),n.jsx("div",{style:l,children:c("marginBottom")})]})})}function Tt({name:e,groupId:t,props:s,adapter:i,id:a,fonts:o}){const[c,r]=v.useState(!1),l=ce(s);return n.jsxs("div",{"data-testid":`react-inspector-group-${t}`,children:[e==="Layout"&&n.jsx(Ct,{adapter:i,id:a,props:s,fonts:o,showConstraints:c,onToggleConstraints:()=>r(d=>!d)}),e==="Position"&&n.jsx(Et,{adapter:i,id:a,props:s,fonts:o}),e==="Spacing"&&n.jsx($t,{adapter:i,id:a,props:s}),e==="Fill"&&n.jsx(wt,{adapter:i,id:a,props:s,fonts:o}),e!=="Layout"&&e!=="Position"&&e!=="Spacing"&&e!=="Fill"&&l.map(d=>d.kind==="single"?n.jsx($,{adapter:i,id:a,prop:d.prop,fonts:o},z(d)):n.jsx(pe,{adapter:i,id:a,row:d},z(d)))]})}function It({adapter:e,node:t}){const s=[];let i=t,a=0;for(;i&&a++<100;)s.unshift(i),i=i.parentId?e.hierarchy.node(i.parentId):null;return n.jsx("nav",{"aria-label":"Selection ancestry","data-testid":"react-inspector-breadcrumbs",style:{display:"flex",alignItems:"center",gap:3,padding:`${u[3]} ${u[4]}`,overflowX:"auto",borderBottom:`1px solid ${m.border}`,whiteSpace:"nowrap"},children:s.map((o,c)=>n.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:3},children:[c>0&&n.jsx("span",{style:{color:m.textMuted},children:"/"}),n.jsx(k,{type:"button",variant:"ghost",size:"compact","aria-current":o.id===t.id?"page":void 0,title:o.secondaryLabel??o.label,onClick:()=>$e(e,[o.id]),children:o.label})]},o.id))})}function Nt({owner:e,node:t}){const s=e.portableArgs(t.id),[i,a]=v.useState("idle"),[o,c]=v.useState(""),[r,l]=v.useState(null),d=async y=>{const g=await e.writeStory(t.id,y);l(g.changed?null:g.error??"refused"),g.changed&&(a("idle"),c(""))};return n.jsxs("div",{"data-testid":"react-story-controls-header",style:{borderBottom:`1px solid ${m.border}`},children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:u[4],padding:"7px 8px"},children:[n.jsxs("div",{style:{minWidth:0},children:[n.jsx("div",{style:{color:m.text,fontSize:j.md,fontWeight:600},children:t.label}),n.jsx("div",{style:{color:m.textMuted,fontSize:j.sm},children:s?`${Object.keys(s).length} args · session controls`:"Portable CSF story"})]}),n.jsx(k,{type:"button",variant:"secondary",size:"compact","data-testid":"react-story-reset-args",onClick:()=>e.resetPortableArgs(t.id),children:"Reset"})]}),n.jsxs("div",{style:{display:"flex",gap:u[2],padding:`0 ${u[4]} ${u[3]}`,flexWrap:"wrap"},children:[n.jsx(k,{type:"button",variant:"ghost",size:"compact","data-testid":"react-story-save-as",title:"Write the CURRENT session args as a new story export in this file",onClick:()=>{l(null),c(""),a(i==="save-as"?"idle":"save-as")},children:"Save as…"}),n.jsx(k,{type:"button",variant:"ghost",size:"compact","data-testid":"react-story-rename",onClick:()=>{l(null),c(""),a(i==="rename"?"idle":"rename")},children:"Rename…"}),i==="confirm-delete"?n.jsx(k,{type:"button",variant:"secondary",size:"compact","data-testid":"react-story-delete-confirm",onClick:()=>void d({kind:"delete"}),children:"Delete story?"}):n.jsx(k,{type:"button",variant:"ghost",size:"compact","data-testid":"react-story-delete",onClick:()=>{l(null),a("confirm-delete")},children:"Delete"})]}),(i==="save-as"||i==="rename")&&n.jsxs("div",{style:{display:"flex",gap:u[2],padding:`0 ${u[4]} ${u[4]}`,alignItems:"center"},children:[n.jsx("input",{"data-testid":"react-story-name-input",autoFocus:!0,value:o,placeholder:i==="save-as"?"NewStoryName":`Rename ${t.label}`,onChange:y=>c(y.target.value),onKeyDown:y=>{y.key==="Enter"&&o.trim()&&d(i==="save-as"?{kind:"save-as",name:o.trim()}:{kind:"rename",newName:o.trim()}),y.key==="Escape"&&a("idle")},style:{flex:1,minWidth:0,background:m.neutralHover,border:`1px solid ${m.border}`,borderRadius:4,color:m.text,fontSize:j.base,padding:"3px 6px"}}),n.jsx(k,{type:"button",variant:"secondary",size:"compact","data-testid":"react-story-name-commit",onClick:()=>void d(i==="save-as"?{kind:"save-as",name:o.trim()}:{kind:"rename",newName:o.trim()}),children:i==="save-as"?"Save":"Rename"})]}),r&&n.jsx("div",{"data-testid":"react-story-write-notice",style:{padding:`0 ${u[4]} ${u[4]}`,color:fe(),fontSize:j.sm,lineHeight:M.normal},children:r})]})}function At({owner:e,nodeId:t}){const s=e.elementClasses(t),[i,a]=v.useState(""),[o,c]=v.useState(null),r=async()=>{const l=i.trim().replace(/^\./,"");if(!l)return;const d=await e.writeNamedStyle(t,{kind:"set",className:l});c(d.changed?null:d.error??"refused"),d.changed&&a("")};return n.jsxs("div",{"data-testid":"react-element-classes",style:{padding:`${u[3]} ${u[4]}`,borderBottom:`1px solid ${m.border}`},children:[n.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:u[2],alignItems:"center"},children:[n.jsx("span",{style:{fontSize:j.sm,color:m.textMuted,marginRight:u[1]},children:"Style class"}),s.map(l=>n.jsxs("span",{"data-testid":`react-class-chip-${l.name}`,title:l.styledIn?`.${l.name} — ${l.count} element${l.count===1?"":"s"} in this game share this style (${l.styledIn.split("/").pop()??l.styledIn})`:`.${l.name} — utility/generated class (no first-party rule to edit)`,style:{display:"inline-flex",alignItems:"center",gap:3,fontFamily:H,fontSize:j.sm,color:l.styledIn?m.text:m.textMuted,background:m.neutralHover,border:`1px solid ${m.border}`,borderRadius:4,padding:"1px 4px"},children:[".",l.name,l.count>1&&n.jsxs("span",{style:{color:m.textMuted,fontSize:j.xs},children:["×",l.count]}),n.jsx("button",{type:"button","data-testid":`react-class-remove-${l.name}`,title:`Remove .${l.name} from this element`,onClick:()=>void e.writeNamedStyle(t,{kind:"remove",className:l.name}).then(d=>c(d.changed?null:d.error??"refused")),style:{background:"none",border:"none",color:m.textMuted,cursor:"pointer",fontSize:j.base,padding:"3px 5px",margin:"-3px -4px -3px -1px",lineHeight:M.tight},children:"✕"})]},l.name)),n.jsx("input",{"data-testid":"react-class-input",value:i,placeholder:s.length===0?"create style…":"add class…",title:"Type a class name — an existing first-party class is applied; a new name creates a style from this element's inline declarations",onChange:l=>{a(l.target.value),o&&c(null)},onKeyDown:l=>{l.key==="Enter"&&r(),l.key==="Escape"&&a("")},style:{flex:1,minWidth:72,background:"transparent",border:`1px dashed ${m.border}`,borderRadius:4,color:m.text,fontSize:j.sm,fontFamily:H,padding:"2px 5px"}})]}),o&&n.jsx("div",{"data-testid":"react-class-notice",style:{paddingTop:u[2],color:fe(),fontSize:j.sm,lineHeight:M.normal},children:o}),n.jsx(Mt,{})]})}function Mt(){const e=v.useSyncExternalStore(Ke,U);return n.jsxs(n.Fragment,{children:[n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:5,paddingTop:5},children:[n.jsx("span",{style:{fontSize:j.sm,color:m.textMuted},children:"Breakpoint"}),n.jsx(V,{"data-testid":"react-breakpoint-select",value:e??"",onChange:t=>oe(t.target.value||null),style:{fontSize:j.sm,flex:1,...e?{color:m.accent,borderColor:m.accent}:{}},children:he.map(t=>n.jsx("option",{value:t.media??"",children:t.label},t.label))})]}),e&&n.jsxs("div",{"data-testid":"react-breakpoint-note",style:{paddingTop:3,color:m.textMuted,fontSize:j.xs,lineHeight:M.normal},children:["Style edits write @media ",e," — previewed live by frame width."]})]})}const he=[{label:"Base",media:null},{label:"Tablet ≤991",media:"(max-width: 991px)"},{label:"Phone L ≤767",media:"(max-width: 767px)"},{label:"Phone ≤479",media:"(max-width: 479px)"}];function fe(){return"#e06c75"}function Ot({entry:e}){const[t,s]=v.useState(!1),i=`${e.file}:${e.line}`,a=`${e.file.split("/").pop()??e.file}:${e.line}`,o=async()=>{try{await navigator.clipboard.writeText(i),s(!0),setTimeout(()=>s(!1),1500)}catch{}};return n.jsx("button",{type:"button","data-testid":"react-source-location",title:`${i} — click to copy the path`,onClick:()=>void o(),style:{fontFamily:H,fontSize:"inherit",color:m.textMuted,cursor:"pointer",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,background:"none",border:"none",padding:0,textAlign:"left"},children:t?"Copied":a})}function Bt({owner:e,node:t,nodeId:s}){const i=e instanceof _,a=i?e.sourceLocation(s):void 0,o=t?.role==="story"?`Story · ${t.label}`:t?.role==="document"?`CSF · ${t.secondaryLabel??t.label}`:i?"Source":"Session overlay — not written to source",c=t?.role==="story"?`${t.label} is the active portable CSF design state.`:t?.role==="document"?`${t.secondaryLabel??t.label} owns this root's design states.`:i?`Edits change ${t?.label??"this component"}'s source — every rendered instance updates.`:"This is an ingested game: edits persist as a per-project overlay only, never written to source.";return n.jsxs("div",{"data-testid":i?"react-lane-b-disclosure":"react-overlay-disclosure",title:c,style:{display:"flex",alignItems:"center",gap:u[3],padding:`${u[1]} ${u[4]} ${u[3]}`,borderBottom:`1px solid ${m.border}`,color:m.textMuted,fontSize:j.sm,lineHeight:M.normal,minWidth:0},children:[n.jsx("span",{style:{flexShrink:0,...i?{}:{color:m.accent}},children:o}),a&&n.jsx(Ot,{entry:a})]})}function Ft({adapter:e,node:t,nodeId:s,owner:i}){return n.jsxs("div",{"data-testid":"react-inspector-section",children:[n.jsx(It,{adapter:e,node:t}),i instanceof _&&n.jsx(At,{owner:i,nodeId:s}),n.jsx(Bt,{owner:i,node:t,nodeId:s})]})}function te({adapter:e,id:t,name:s,groupId:i,props:a}){const o=v.useMemo(()=>Je(),[]);return n.jsx(Tt,{name:s,groupId:i,props:a,adapter:e,id:t,fonts:o})}function Dt(e,t){const s=le(e,t);if(!s||!e)return[];const i=e.id,a=(t.inspector?.properties(i)??[]).filter(l=>l.path!=="name"),{ungrouped:o,groups:c}=be(a),r=[{id:et,title:"Element",icon:je,order:tt,body:{kind:"custom",render:()=>v.createElement(Ft,{adapter:t,node:e,nodeId:i,owner:s}),...s instanceof _?{data:{classes:s.elementClasses(i),breakpoint:U()},editable:{fields:[{path:"element.breakpoint",label:"Breakpoint",type:"enum",options:he.map(l=>l.media??"")}],io:{get:l=>l==="element.breakpoint"?U()??"":void 0,set:(l,d)=>{l==="element.breakpoint"&&oe(typeof d=="string"&&d?d:null)}}}}:{}}}];return e.role==="story"&&s instanceof _&&r.push({id:nt,title:"Story",icon:Se,order:st,body:{kind:"custom",render:()=>v.createElement(Nt,{owner:s,node:e})}}),o.length>0&&r.push({id:ne,title:"Style",icon:Ce,order:ve,defaultOpen:!0,body:{kind:"custom",render:()=>v.createElement(te,{adapter:t,id:i,name:"Style",groupId:"style",props:o})}}),c.forEach((l,d)=>{r.push({id:we(l.groupId),title:l.name,icon:ke(l.name),order:Re+d,defaultOpen:!0,body:{kind:"custom",render:()=>v.createElement(te,{adapter:t,id:i,name:l.name,groupId:l.groupId,props:l.properties})}})}),r}const _t=xe();function Lt(){_t.ensure(e=>{e(ye({match:Ze,sections:Dt,claims:[ne]}))})}const on="workspace.service";function ln(){return Lt(),()=>{}}export{on as point,ln as start};
@@ -0,0 +1 @@
1
+ import{r as u}from"./realm-services-CobQsq_X.js";function m(e,t,n){if(typeof t.default!="function")throw new Error(`resolveRootBinding: world "${e.id}" (${n}) entry module does not default-export a component — got ${typeof t.default}. A react world's \`entry\` must default-export a React component.`);return t.default}function y(e,t,n){const o=t.game;if(!o)throw new Error(`resolveRootBinding: world "${e.id}" (${n}) mount() received a DomHostContext with no \`game\` — WorldProvider needs a live Game at mount time and this host did not carry one.`);return o}async function p(e,t,n){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a dom root with no \`entry\` — this should have been rejected by manifest validation.`);const o=await t.loadEntryModule(e.entry,e.id,"dom");return n?.(o),m(e,o,"dom")}function l(e,t,n,o,r,i){return{id:e.id,async mount(d){const f=y(e,d,t),a=await r.reactDomRuntime(),s=a.createRoot(d.container),c=()=>{s.render(a.createElement(o,{game:f,children:a.createElement(n)}))};return i?a.flushSync(c):c(),{kind:"dom",container:d.container,drivesOwnLoop:!1,dispose(){s.unmount()}}}}}async function g(e,t,n){const o=await p(e,t,n),r=await u();return l(e,"dom",o,r,t,!0)}async function h(e,t){const{adapter:n}=e;if(n.type!=="ingest")throw new Error(`resolveRootBinding: world "${e.id}" is not an { ingest } world.`);if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" (ingest-react) has no \`entry\` — an ingested react world's \`entry\` MUST point at a host-shim module that imports the vendored game's own component and default-exports it.`);const o=await t.loadEntryModule(e.entry,e.id,"dom"),r=m(e,o,"ingest-react"),i=await u();return{adapter:l(e,"ingest-react",r,i,t,!1),module:o}}export{h as a,g as b,p as r};
@@ -0,0 +1 @@
1
+ import"./jsx-runtime-DPjLkJKQ.js";import"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{bD as Et,ao as b,bt as At,bA as Mt,gk as Rt}from"./index-GIL7oGEO.js";const kt={width:null,height:null};let J=kt;const et=new Set;function _t(){return J}function St(n,s){const l=n===null?null:Math.max(1,Math.round(n)),i=s===null?null:Math.max(1,Math.round(s));if(!(J.width===l&&J.height===i)){J={width:l,height:i};for(const d of et)d()}}function jt(){St(null,null)}function It(n){return et.add(n),()=>et.delete(n)}const qt="#191c22",Kt="rgba(255, 255, 255, 0.2)",Ct="#20242a",K="#2d323a";function Lt(){return`linear-gradient(45deg, ${K} 25%, transparent 25%, transparent 75%, ${K} 75%), linear-gradient(45deg, ${K} 25%, transparent 25%, transparent 75%, ${K} 75%)`}const O=20,Q=6,H=22,nt=10,dt=O+Q,ut=H+nt,$t=.6,Bt=.4,Ot=.7,Ft=.45;function yt(n,s,l){return n>=s?[1,!0]:n<=l?[0,!1]:[(n-l)/(s-l),!0]}function ft(n,s){const l=Math.max(0,n),i=s?Math.min(1,l/ut):0,[d,u]=yt(i,Ot,Ft),c=Math.max(0,l-ut*i),y=Math.min(1,c/dt),[v,_]=yt(y,$t,Bt),w=_?dt*y:0;return{frame:{scale:y,opacity:v,visible:_,offset:Q*y+O},group:s?{scale:i,opacity:d,visible:u,offset:w+nt*i+H}:null}}function pt(n,s){n.style.transformOrigin="0 100%",n.style.transform=s.scale>=1?"":`scale(${s.scale})`,n.style.opacity=s.visible?String(s.opacity):"0",n.style.display=s.visible?"":"none"}const Pt=640,Tt=400,N=64,C=64,ht=72,Vt=28,tt=C+H+nt+O+Q;function gt(n,s){const l=new Map(n.map(i=>[i.id,i]));return s.sections.map(i=>({key:i.id,label:i.label,stories:i.storyIds.flatMap(d=>{const u=l.get(d);return u?[u]:[]})}))}const zt=n=>n.split("/").map(s=>s.trim()).filter(Boolean);function bt(n){const s=new Set(n.filter(i=>i.stories.length===1).map(i=>i.key)),l=[];{const i=new Map;for(const d of n){if(!s.has(d.key)){l.push({key:d.key,label:d.label,stories:[...d.stories]});continue}const u=zt(d.label).slice(0,-1).join("/");let c=i.get(u);c||(c={key:`category:${u}`,label:u||null,stories:[]},i.set(u,c),l.push(c)),c.stories.push(...d.stories)}}return l}function Nt(n,s,l){const i=bt(gt(n,s)),d=new Map,u=new Map;let c=N,y=0;i.forEach((w,F)=>{const E=Math.max(1,Math.ceil(Math.sqrt(w.stories.length))),S=Math.ceil(w.stories.length/E),L=w.stories.map(h=>l(h)),I=Array.from({length:E},()=>0),R=Array.from({length:S},()=>0);L.forEach((h,f)=>{const m=f%E,M=Math.floor(f/E);I[m]=Math.max(I[m],h.width),R[M]=Math.max(R[M],h.height)});const P=I.map((h,f)=>I.slice(0,f).reduce((m,M)=>m+M+C,0)),D=R.map((h,f)=>R.slice(0,f).reduce((m,M)=>m+M+C,0)),$=F===0?Number.POSITIVE_INFINITY:w.label!==null?tt:C+O+Q;w.label!==null&&u.set(w.key,{x:N,y:c,roomAbove:$}),w.stories.forEach((h,f)=>{const m=Math.floor(f/E),M=f%E,W=L[f],{width:T,height:U}=W,st=N+P[M],Y=c+D[m];d.set(h.id,{x:st,y:Y,width:T,height:U,roomAbove:m===0?$:C,withGroupLabel:i.length>1&&m===0&&w.label!==null})});const x=I.reduce((h,f)=>h+f,0)+Math.max(0,E-1)*C,B=R.reduce((h,f)=>h+f,0)+Math.max(0,S-1)*C;y=Math.max(y,x),c+=B+tt});const v=N*2+y,_=c-tt+N;return{layouts:d,groupOrigins:u,width:v,height:n.length?_:0}}const A=new WeakMap,ot=new Set,Gt=null;function G(){for(const n of ot)n()}function Jt(n){return ot.add(n),()=>ot.delete(n)}function Qt(n){const s=n?A.get(n)??(n.parentElement?A.get(n.parentElement):void 0):void 0;if(!s)return null;const l=[];for(const[i,d]of s.frames)l.push({storyId:i,x:Math.round(Number.parseFloat(d.element.style.left)||0),y:Math.round(Number.parseFloat(d.element.style.top)||0)});return l}function Xt(n){return n?A.get(n)?.viewport()??Gt:null}function Zt(n,s){const l=n?A.get(n):void 0;return l?(l.setViewport(s),!0):!1}function te(n){const s=n?A.get(n):void 0;return!s||s.viewport().locked?!1:(s.setRotation(!s.viewport().rotated),!0)}function Ht(){const n=_t();return{width:n.width??Pt,height:n.height??Tt}}function mt(n,s,l){if(s.width<=0||s.height<=0)return;const i=Math.max(1,n.clientWidth-ht*2),d=Math.max(1,n.clientHeight-ht*2),u=Math.min(l,Math.max(.1,Math.min(i/s.width,d/s.height)));Rt(n.clientWidth/2-(s.x+s.width/2)*u,n.clientHeight/2-(s.y+s.height/2)*u,u)}function ee(n){const s=A.get(n);return s?(s.fitAll(),!0):!1}function oe(n,s,l){return n?A.get(n)?.selectAtClientPoint(s,l)??!1:!1}function ne(n,s,l){return n?A.get(n)?.zoomAtClientPoint(s,l)??!1:!1}function se(n,s,l,i,d){if(s.length===0)throw new Error("A React story board requires at least one story.");const u=n.parentElement;if(!u)throw new Error("A React story board layer must be attached before mounting.");n.dataset.vgaiReactStoryBoard="true",n.style.contain="none";const c=document.createElement("div");c.dataset.testid="react-story-board",c.dataset.vgaiReactStoryBoardCanvas="true",c.style.position="absolute",c.style.left="0",c.style.top="0",c.style.transformOrigin="0 0",n.appendChild(c);const y=document.createElement("div");y.dataset.testid="react-story-board-chrome",y.dataset.vgaiStoryBoardChromeFor=n.dataset.worldId??"",y.style.position="absolute",y.style.inset="0",y.style.zIndex=String(Et.sticky),y.style.display=n.style.display||"block",y.style.pointerEvents="none",y.style.overflow="visible",u.appendChild(y);const v=new Map,_=new Map,w=new Map,F=new Map,E=new Map,S=new Map,L=gt(s,d.index),I=new Map,R=new Map,P=new Map,D=new Map;let $,x=s.some(t=>t.id===l)?l:s[0].id,B=!1,h=!1;const f=t=>{const e=d.resolve(t,t.frameSize??Ht(),P.has(t.id)?P.get(t.id):void 0,D.get(t.id)),o=S.get(t.id);return o?{...e,width:o.frame.width,height:o.frame.height,layout:"fullscreen"}:t.frameSize?{...e,layout:"fullscreen"}:e},m=()=>{const t=f(s.find(e=>e.id===x));$={storyId:x,selectedViewportId:t.selectedViewportId,locked:t.locked,rotated:t.rotated,choices:t.choices}};m();const M=new Set(L.filter(t=>t.stories.length===1).map(t=>t.key)),W=t=>t.split("/").map(e=>e.trim()).filter(Boolean),T=new Map;for(const t of L)for(const e of t.stories){const o=(e.title?W(e.title).at(-1):void 0)??W(t.label).at(-1);T.set(e.id,M.has(t.key)?o??e.label:e.label)}const U=bt(L);for(const t of L.flatMap(e=>e.stories)){const e=document.createElement("section");e.dataset.testid="react-story-frame",e.dataset.storyId=t.id,e.dataset.storyLabel=t.label,e.dataset.storyGroup=d.index.sections.find(Z=>Z.storyIds.includes(t.id))?.label??"",e.style.position="absolute",e.style.border=`1px solid ${b.boundary.strong}`,e.style.borderRadius="0",e.style.backgroundColor=Ct,e.style.backgroundImage=Lt(),e.style.backgroundPosition="0 0, 8px 8px",e.style.backgroundSize="16px 16px",e.style.boxShadow="none";const o=document.createElement("button");o.type="button",o.dataset.testid="react-story-frame-label",o.dataset.storyId=t.id,o.title=`${T.get(t.id)??t.label} — click to select, double-click to zoom — ${t.modulePath}`,o.textContent=T.get(t.id)??t.label,o.style.position="absolute",o.style.height=`${O}px`,o.style.padding="0 2px",o.style.border="0",o.style.appearance="none",o.style.background="transparent",o.style.color=b.content.primary,o.style.font=`600 12px ${b.typography.sans}`,o.style.lineHeight=`${O}px`,o.style.textAlign="left",o.style.cursor="default",o.style.pointerEvents="auto",o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.style.width="max-content",o.addEventListener("click",()=>i(t.id,"highlight")),o.addEventListener("dblclick",()=>i(t.id,"zoom"));const r=document.createElement("div");r.dataset.testid="react-story-frame-content",r.dataset.storyId=t.id,r.style.position="absolute",r.style.left="0",r.style.top="0",r.style.overflow="hidden",r.style.contain="layout paint",r.style.boxSizing="border-box";const a=document.createElement("div");a.dataset.testid="react-story-frame-note",a.dataset.storyId=t.id,a.style.position="absolute",a.style.left="0",a.style.right="0",a.style.bottom="0",a.style.display="none",a.style.padding="6px 8px",a.style.boxSizing="border-box",a.style.background=b.surface.overlay,a.style.color=b.content.muted,a.style.font=`11px ${b.typography.sans}`,a.style.pointerEvents="none";const p=document.createElement("div");p.dataset.testid="react-story-frame-error",p.dataset.storyId=t.id,p.style.position="absolute",p.style.inset="0",p.style.display="none",p.style.padding="16px",p.style.boxSizing="border-box",p.style.background=b.surface.overlay,p.style.color=b.semantic.danger,p.style.font=`12px ${b.typography.mono}`,p.style.pointerEvents="none",e.append(r,a,p),c.appendChild(e),y.appendChild(o),v.set(t.id,{element:e,content:r}),_.set(t.id,p),w.set(t.id,a),F.set(t.id,o)}if(U.length>1)for(const t of U){if(t.label===null)continue;const e=document.createElement("div");e.dataset.testid="react-story-group-label",e.dataset.storyGroup=t.key,e.textContent=t.label,e.style.position="absolute",e.style.height=`${H}px`,e.style.lineHeight=`${H}px`,e.style.color=b.content.primary,e.style.font=`700 14px ${b.typography.sans}`,e.style.whiteSpace="nowrap",e.style.pointerEvents="none",e.style.width="max-content",y.appendChild(e),I.set(t.key,e)}const Y=()=>{for(const[t,e]of v){const o=t===x;e.element.dataset.active=o?"true":"false",e.element.style.outline=o?`2px solid ${b.accent.default}`:"none",e.element.style.outlineOffset=o?"3px":"0";const r=F.get(t);r.setAttribute("aria-pressed",String(o)),r.style.color=o?b.accent.default:b.content.muted}},rt=(t,e)=>Number.isFinite(t)?t*e:Number.POSITIVE_INFINITY,j=()=>{const t=Mt();for(const[e,o]of E){const r=F.get(e),{frame:a}=ft(rt(o.roomAbove,t.zoom),o.withGroupLabel);r.style.left=`${t.x+o.x*t.zoom}px`,r.style.top=`${t.y+o.y*t.zoom-a.offset}px`;const p=Math.max(1,(o.width+C/2)*t.zoom);r.style.maxWidth=`${p}px`,pt(r,p>=Vt?a:{...a,opacity:0,visible:!1})}for(const[e,o]of R){const r=I.get(e);if(!r)continue;const{group:a}=ft(rt(o.roomAbove,t.zoom),!0);a&&(r.style.left=`${t.x+o.x*t.zoom}px`,r.style.top=`${t.y+o.y*t.zoom-a.offset}px`,pt(r,a))}},V=()=>{E.clear(),R.clear();const t=Nt(s,d.index,f);for(const[r,a]of t.groupOrigins)R.set(r,a);for(const r of s){const a=t.layouts.get(r.id);if(!a)continue;E.set(r.id,a);const{x:p,y:Z,width:lt,height:ct}=a,z=f(r),g=v.get(r.id);g.element.style.left=`${p}px`,g.element.style.top=`${Z}px`,g.element.style.width=`${lt}px`,g.element.style.height=`${ct}px`;const k=S.get(r.id);g.element.style.overflow=k?"hidden":"",g.content.style.width=`${k?k.mount.width:lt}px`,g.content.style.height=`${k?k.mount.height:ct}px`,g.content.style.left=`${k?-k.offset.x:0}px`,g.content.style.top=`${k?-k.offset.y:0}px`,g.content.dataset.storyLayout=z.layout,g.content.style.padding=z.layout==="padded"?"16px":"0",g.content.style.display=z.layout==="centered"?"flex":"block",g.content.style.alignItems=z.layout==="centered"?"center":"",g.content.style.justifyContent=z.layout==="centered"?"center":""}const e=t.width,o=t.height;c.style.width=`${e}px`,c.style.height=`${o}px`,n.style.width=`${e}px`,n.style.height=`${o}px`,j()},wt=()=>{const t=Number.parseFloat(c.style.width),e=Number.parseFloat(c.style.height);mt(u,{x:0,y:0,width:t,height:e},1)},at=()=>{h||(h=!0,queueMicrotask(()=>{h=!1,B||q(x,!0)}))},q=(t,e=!1)=>{const o=v.get(t),r=E.get(t);!o||!r||(x=t,Y(),m(),G(),e&&mt(u,r,2))},it=(t,e)=>{for(const[o,r]of v){const a=r.content.getBoundingClientRect();if(t>=a.left&&t<=a.right&&e>=a.top&&e<=a.bottom)return o}return null},xt=It(()=>{V(),at()}),vt=At(j);V(),Y(),j();const X={element:c,frames:v,activeContent:()=>v.get(x).content,activate:q,clearError:t=>{const e=_.get(t);e&&(e.style.display="none",e.textContent="")},fitAll:wt,selectAtClientPoint:(t,e)=>{const o=it(t,e);return!o||o===x?!1:(i(o,"highlight"),!0)},zoomAtClientPoint:(t,e)=>{const o=it(t,e);return o?(i(o,"zoom"),!0):!1},setError:(t,e)=>{const o=_.get(t);o&&(o.textContent=e,o.style.display="block")},setMeasuredFrame:(t,e)=>{if(B||!v.has(t))return;const o=S.get(t);if(e===null){if(!o)return;S.delete(t)}else{if(o&&o.frame.width===e.frame.width&&o.frame.height===e.frame.height&&o.mount.width===e.mount.width&&o.mount.height===e.mount.height&&o.offset.x===e.offset.x&&o.offset.y===e.offset.y)return;S.set(t,e)}V(),j()},setNote:t=>{for(const e of w.values())e.textContent=t??"",e.style.display=t===null?"none":"block"},viewport:()=>$,setViewport:t=>{$.locked||(P.set(x,t),V(),m(),G(),q(x,!0))},setRotation:t=>{$.locked||(D.set(x,t),V(),m(),G(),q(x,!0))},dispose:()=>{B||(B=!0,xt(),vt(),A.get(u)===X&&A.delete(u),G(),c.remove(),y.remove())}};return A.set(u,X),G(),at(),X}export{qt as R,It as a,Nt as b,Qt as c,se as d,Jt as e,Xt as f,_t as g,Zt as h,ee as i,Kt as j,oe as k,jt as r,St as s,te as t,ne as z};
@@ -0,0 +1 @@
1
+ import{e as N,g as J,h as K,i as Q,c as U,a as V,j as Z,E as $,B as ee,k as re}from"./events-156d8d12.esm-ErOhDXXB.js";import{t as xe,_ as ze,l as Re,m as Ce,n as Le,o as He,b as je,p as Be,q as Oe,r as Te,v as ke,w as Se,x as Me,y as Fe,f as Ge,z as Ie,A as Ae,C as Pe,d as Xe,D as De,F as We,G as Ye,H as _e,u as qe}from"./events-156d8d12.esm-ErOhDXXB.js";import{r as n}from"./index-nmcBqr7Y.js";import{T as te}from"./three.module-D396a9Mn.js";import{m as ne}from"./index-bQE2NA0D.js";import{a as c}from"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./client-DNXj_opT.js";import"./index-CinJrH5C.js";function A(r,t){let s;return(...a)=>{window.clearTimeout(s),s=window.setTimeout(()=>r(...a),t)}}function oe({debounce:r,scroll:t,polyfill:s,offsetSize:a}={debounce:0,scroll:!1,offsetSize:!1}){const f=s||(typeof window>"u"?class{}:window.ResizeObserver);if(!f)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[u,g]=n.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),e=n.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:u,orientationHandler:null}),d=r?typeof r=="number"?r:r.scroll:null,v=r?typeof r=="number"?r:r.resize:null,p=n.useRef(!1);n.useEffect(()=>(p.current=!0,()=>void(p.current=!1)));const[C,y,l]=n.useMemo(()=>{const o=()=>{if(!e.current.element)return;const{left:H,top:j,width:B,height:z,bottom:O,right:T,x:k,y:E}=e.current.element.getBoundingClientRect(),i={left:H,top:j,width:B,height:z,bottom:O,right:T,x:k,y:E};e.current.element instanceof HTMLElement&&a&&(i.height=e.current.element.offsetHeight,i.width=e.current.element.offsetWidth),Object.freeze(i),p.current&&!ae(e.current.lastBounds,i)&&g(e.current.lastBounds=i)};return[o,v?A(o,v):o,d?A(o,d):o]},[g,a,d,v]);function w(){e.current.scrollContainers&&(e.current.scrollContainers.forEach(o=>o.removeEventListener("scroll",l,!0)),e.current.scrollContainers=null),e.current.resizeObserver&&(e.current.resizeObserver.disconnect(),e.current.resizeObserver=null),e.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",e.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",e.current.orientationHandler))}function x(){e.current.element&&(e.current.resizeObserver=new f(l),e.current.resizeObserver.observe(e.current.element),t&&e.current.scrollContainers&&e.current.scrollContainers.forEach(o=>o.addEventListener("scroll",l,{capture:!0,passive:!0})),e.current.orientationHandler=()=>{l()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",e.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",e.current.orientationHandler))}const L=o=>{!o||o===e.current.element||(w(),e.current.element=o,e.current.scrollContainers=P(o),x())};return ie(l,!!t),se(y),n.useEffect(()=>{w(),x()},[t,l,y]),n.useEffect(()=>w,[]),[L,u,C]}function se(r){n.useEffect(()=>{const t=r;return window.addEventListener("resize",t),()=>void window.removeEventListener("resize",t)},[r])}function ie(r,t){n.useEffect(()=>{if(t){const s=r;return window.addEventListener("scroll",s,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",s,!0)}},[r,t])}function P(r){const t=[];if(!r||r===document.body)return t;const{overflow:s,overflowX:a,overflowY:f}=window.getComputedStyle(r);return[s,a,f].some(u=>u==="auto"||u==="scroll")&&t.push(r),[...t,...P(r.parentElement)]}const ce=["x","y","top","bottom","left","right","width","height"],ae=(r,t)=>ce.every(s=>r[s]===t[s]);function le({ref:r,children:t,fallback:s,resize:a,style:f,gl:u,events:g=V,eventSource:e,eventPrefix:d,shadows:v,linear:p,flat:C,legacy:y,orthographic:l,frameloop:w,dpr:x,performance:L,raycaster:o,camera:H,scene:j,onPointerMissed:B,onCreated:z,...O}){n.useMemo(()=>N(te),[]);const T=J(),[k,E]=oe({scroll:!0,debounce:{scroll:50,resize:0},...a}),i=n.useRef(null),S=n.useRef(null);n.useImperativeHandle(r,()=>i.current);const M=K(B),[F,X]=n.useState(!1),[G,D]=n.useState(!1);if(F)throw F;if(G)throw G;const R=n.useRef(null);Q(()=>{const b=i.current;if(E.width>0&&E.height>0&&b){R.current||(R.current=U(b));async function Y(){await R.current.configure({gl:u,scene:j,events:g,shadows:v,linear:p,flat:C,legacy:y,orthographic:l,frameloop:w,dpr:x,performance:L,raycaster:o,camera:H,size:E,onPointerMissed:(...h)=>M.current==null?void 0:M.current(...h),onCreated:h=>{h.events.connect==null||h.events.connect(e?Z(e)?e.current:e:S.current),d&&h.setEvents({compute:(I,m)=>{const _=I[d+"X"],q=I[d+"Y"];m.pointer.set(_/m.size.width*2-1,-(q/m.size.height)*2+1),m.raycaster.setFromCamera(m.pointer,m.camera)}}),z?.(h)}}),R.current.render(c.jsx(T,{children:c.jsx($,{set:D,children:c.jsx(n.Suspense,{fallback:c.jsx(ee,{set:X}),children:t??null})})}))}Y()}}),n.useEffect(()=>{const b=i.current;if(b)return()=>re(b)},[]);const W=e?"none":"auto";return c.jsx("div",{ref:S,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:W,...f},...O,children:c.jsx("div",{ref:k,style:{width:"100%",height:"100%"},children:c.jsx("canvas",{ref:i,style:{display:"block"},children:s})})})}function be(r){return c.jsx(ne,{children:c.jsx(le,{...r})})}export{be as Canvas,xe as ReactThreeFiber,ze as _roots,Re as act,Ce as addAfterEffect,Le as addEffect,He as addTail,je as advance,Be as applyProps,Oe as buildGraph,Te as context,ke as createEvents,Se as createPortal,U as createRoot,Me as dispose,V as events,N as extend,Fe as flushGlobalEffects,Ge as flushSync,Ie as getRootState,Ae as invalidate,Pe as reconciler,re as unmountComponentAtNode,Xe as useFrame,De as useGraph,We as useInstanceHandle,Ye as useLoader,_e as useStore,qe as useThree};