@volter/game-editor 0.5.80 → 0.5.82

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 (328) hide show
  1. package/BUNDLED_NOTICES +22 -22
  2. package/catalog/entries/blender.json +2 -2
  3. package/catalog/entries/music.json +2 -2
  4. package/dist/.vite/manifest.json +2115 -2114
  5. package/dist/assets/{AssetBudgetPanel-C-RNso12.js → AssetBudgetPanel-Iip49rxI.js} +3 -3
  6. package/dist/assets/{AudioViewer-BQ4yQJmw.js → AudioViewer-DmkOvskF.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-D1_2Ahx7.js → CanvasBoardDocument-DCS8uzQo.js} +1 -1
  8. package/dist/assets/CanvasSceneViewport-CfOuQiQ0.js +1 -0
  9. package/dist/assets/{ColorInput-B-GRGKwB.js → ColorInput-7CPpl8MI.js} +1 -1
  10. package/dist/assets/EntityModelDocument-CplmAib0.js +1 -0
  11. package/dist/assets/{EnvironmentAssetDocument-BbWPrmTc.js → EnvironmentAssetDocument-DlS6KFJu.js} +1 -1
  12. package/dist/assets/{GameplaySessionTimeline-Bi_Z_lDm.js → GameplaySessionTimeline-C3zH6edi.js} +1 -1
  13. package/dist/assets/{ImageViewer-CVYDgTSj.js → ImageViewer-C0lQ6YO0.js} +1 -1
  14. package/dist/assets/InspectorObjectPreview-Bjc1Tn-I.js +1 -0
  15. package/dist/assets/{JsonAssetDocument-O-o1eVJB.js → JsonAssetDocument-DjmH9CQH.js} +1 -1
  16. package/dist/assets/{LiveModuleDocument-CCpe63vw.js → LiveModuleDocument-Hiot8Q5L.js} +1 -1
  17. package/dist/assets/{LutAssetDocument-C_QGvjj7.js → LutAssetDocument-6bBwNMOn.js} +1 -1
  18. package/dist/assets/{ModelAssetDocument-DKyxph4r.js → ModelAssetDocument-G6ajiV51.js} +1 -1
  19. package/dist/assets/{NonThreeAuthoringBootstrap-DkfIBzMs.js → NonThreeAuthoringBootstrap-DpieYAMC.js} +1 -1
  20. package/dist/assets/Object3DDocumentToolbar-BtZkDxKa.js +1 -0
  21. package/dist/assets/Object3DDocumentViewport-BhH8afDi.js +2 -0
  22. package/dist/assets/{Object3DPreview-DI7aoPKe.js → Object3DPreview-DdrYVJUZ.js} +1 -1
  23. package/dist/assets/{OnlineAssetDetail-BIRXvQsJ.js → OnlineAssetDetail-D06eTe3y.js} +1 -1
  24. package/dist/assets/{PlayBar-BYVJHvd5.js → PlayBar-BbzjgLFJ.js} +1 -1
  25. package/dist/assets/{QuarksAssetDocument-DEcSmewA.js → QuarksAssetDocument-wGHNt4ov.js} +1 -1
  26. package/dist/assets/{ReactCanvasControls-DplBODky.js → ReactCanvasControls-BL2tOUj6.js} +1 -1
  27. package/dist/assets/{RootSelectionOverlay-BzEZwAaO.js → RootSelectionOverlay-C6Wu8nIs.js} +1 -1
  28. package/dist/assets/{ShaderAssetDocument-ysUJR4Np.js → ShaderAssetDocument-BDi8iNLA.js} +4 -4
  29. package/dist/assets/{ShadowEditor-BKz_sq1R.js → ShadowEditor-C3L0UWSH.js} +1 -1
  30. package/dist/assets/{SourceAssetViewer-DhoQonvP.js → SourceAssetViewer-D832bARo.js} +1 -1
  31. package/dist/assets/StageHost-Bor1eHEO.js +2 -0
  32. package/dist/assets/{StoryPreviewMount-BF6vqmhx.js → StoryPreviewMount-CmOEFzZY.js} +1 -1
  33. package/dist/assets/{ThreeBoardDocument-vedTeiN9.js → ThreeBoardDocument-BtBMGtiQ.js} +2 -2
  34. package/dist/assets/{ThreeIsolationSceneContent-TT4T-ehp.js → ThreeIsolationSceneContent-BEHNSEsi.js} +1 -1
  35. package/dist/assets/{ToolObject3DPreview-C52QCJAO.js → ToolObject3DPreview-76LMkfin.js} +1 -1
  36. package/dist/assets/{Toolbar-Bo-l61Lo.js → Toolbar-BEBQdxRz.js} +1 -1
  37. package/dist/assets/{TransientHint-DFAcEEFI.js → TransientHint-CzsdY8W6.js} +1 -1
  38. package/dist/assets/{VideoViewer-BM_9gSgl.js → VideoViewer-Ckrawyuq.js} +1 -1
  39. package/dist/assets/{ViewportShadingMenu-CWutLX1G.js → ViewportShadingMenu-BofQt6_4.js} +1 -1
  40. package/dist/assets/{active-ingest-BuNeO4Mb.js → active-ingest-D_ryI_R4.js} +2 -2
  41. package/dist/assets/{animation-clock-B-fl-HTL.js → animation-clock-QjtJDIsR.js} +1 -1
  42. package/dist/assets/{animation-mixers.service-DgxB7R_k.js → animation-mixers.service-BInUs1US.js} +1 -1
  43. package/dist/assets/{animation-timeline.utility-RWwRwQvM.js → animation-timeline.utility-DUrfNSwn.js} +1 -1
  44. package/dist/assets/{asset-budget-asset.menu-D2Tdwqxf.js → asset-budget-asset.menu-DVQEksFp.js} +1 -1
  45. package/dist/assets/{asset-budget.action-WMiFAlTi.js → asset-budget.action-C-ENAa52.js} +1 -1
  46. package/dist/assets/{asset-budget.document-CckPEzno.js → asset-budget.document-Bb1PyL3H.js} +1 -1
  47. package/dist/assets/{asset-budget.menu-DPMPOTSo.js → asset-budget.menu-CPi2yjBA.js} +1 -1
  48. package/dist/assets/{asset-editor-persistence-DttxUta0.js → asset-editor-persistence-Duoq7o22.js} +1 -1
  49. package/dist/assets/{asset-loaders-9M6lxMew.js → asset-loaders-BftJ2m7-.js} +1 -1
  50. package/dist/assets/{asset-preview-C36PaXvM.js → asset-preview-BS71mXsZ.js} +1 -1
  51. package/dist/assets/{audio-unlock.service-BeHFOKOB.js → audio-unlock.service-C3ygvDjU.js} +1 -1
  52. package/dist/assets/{audio.utility-HRjVG-Co.js → audio.utility-DF55sgHW.js} +1 -1
  53. package/dist/assets/autoplay.service-DaonKf7O.js +1 -0
  54. package/dist/assets/{babylon-authoring-adapter-BHQY7yIy.js → babylon-authoring-adapter-CmeehOBt.js} +1 -1
  55. package/dist/assets/{binding-resolver-TD7-fKuX.js → binding-resolver-DUz8C8Fs.js} +2 -2
  56. package/dist/assets/{blender-emscripten-engine-CieQeF-r.js → blender-emscripten-engine-DQljvfR7.js} +1 -1
  57. package/dist/assets/{blender-node-editor.document-Bw2QbNTV.js → blender-node-editor.document-B8S2TVMM.js} +1 -1
  58. package/dist/assets/{blender-properties-tab-BnIbJN4f.js → blender-properties-tab-y-_BeZDx.js} +1 -1
  59. package/dist/assets/blender-runtime-host-CUH6peXj.js +4 -0
  60. package/dist/assets/{blender-runtime-skin-CwXXiusi.js → blender-runtime-skin-B1tYITn2.js} +36 -36
  61. package/dist/assets/blender-runtime.document-DnSl0twI.js +12 -0
  62. package/dist/assets/{blender-timeline.document-CESN0FrA.js → blender-timeline.document-CeCylyXB.js} +1 -1
  63. package/dist/assets/{blender-uv-editor.document-BdIUMC5X.js → blender-uv-editor.document-DEllMw3a.js} +1 -1
  64. package/dist/assets/{blender-version.status-CBKgGtQ0.js → blender-version.status-CrT9NqK-.js} +1 -1
  65. package/dist/assets/{blender-wali-engine-KWIxfB_o.js → blender-wali-engine-CO-jG_ik.js} +1 -1
  66. package/dist/assets/{blender.command-ChUV_DJE.js → blender.command-GIjMG1-m.js} +1 -1
  67. package/dist/assets/{board-guides-ClHJXXuu.js → board-guides-B6TEPOPi.js} +1 -1
  68. package/dist/assets/{bridge.command-DK8zE8yt.js → bridge.command-D6qTcgje.js} +3 -3
  69. package/dist/assets/{browserAll-Be-P25YM.js → browserAll-k35XRFil.js} +1 -1
  70. package/dist/assets/build-player.document-CHxj4P8q.js +1 -0
  71. package/dist/assets/{build-profiles.document-CNZvcPor.js → build-profiles.document-CZCk1HYA.js} +2 -2
  72. package/dist/assets/{build-progress.status-BMfffkUW.js → build-progress.status-BNwBxP2a.js} +1 -1
  73. package/dist/assets/{build-session-BHUOWzok.js → build-session-CW2UyYFF.js} +1 -1
  74. package/dist/assets/{build.action-BGriOSGD.js → build.action-EmCcMu47.js} +1 -1
  75. package/dist/assets/{build.command-BU7Wcsn5.js → build.command-CzEckGcR.js} +1 -1
  76. package/dist/assets/{build.header-B6KRt0O_.js → build.header-CsYLpZbh.js} +1 -1
  77. package/dist/assets/{build.menu-CpxN2aww.js → build.menu-CaDkDQuy.js} +1 -1
  78. package/dist/assets/{build.service-LRCZ0vL7.js → build.service-BcKtbU0-.js} +1 -1
  79. package/dist/assets/{camera-D8fxcMUB.js → camera-BwWZUyKt.js} +1 -1
  80. package/dist/assets/{camera-runtime.inspector-5RS6wvw2.js → camera-runtime.inspector-CJyi3zmp.js} +1 -1
  81. package/dist/assets/{canvas-design-mount-CoKGVZii.js → canvas-design-mount-B_uwZkEU.js} +6 -6
  82. package/dist/assets/{canvas-entry-runtime-Do5zL9dN.js → canvas-entry-runtime-DskaohHK.js} +2 -2
  83. package/dist/assets/{canvas-preview-frames-Jsd4Gi5S.js → canvas-preview-frames-BzLeTumX.js} +1 -1
  84. package/dist/assets/{canvas-story-capture.service-0SYz8LrL.js → canvas-story-capture.service-C80CsS8r.js} +2 -2
  85. package/dist/assets/{capability-coverage-BqCZSu0R.js → capability-coverage-wd6bAhv3.js} +2 -2
  86. package/dist/assets/{collaboration-presence-WWC9ZQsq.js → collaboration-presence-DcPhahtF.js} +1 -1
  87. package/dist/assets/{collider-DsdfCyWG.js → collider-Dw2iWV3F.js} +1 -1
  88. package/dist/assets/{component-board.service-6JDsY08Z.js → component-board.service-CH99sgj0.js} +2 -2
  89. package/dist/assets/component-board.service-Cd1c9oSN.js +2 -0
  90. package/dist/assets/{component-board.service-DZWOfhbB.js → component-board.service-XAxyLCnM.js} +2 -2
  91. package/dist/assets/{component-contracts.service-DXfwve-4.js → component-contracts.service-DerT0BP-.js} +1 -1
  92. package/dist/assets/{component-instance-root-pq7uyyej.js → component-instance-root-Cw_-ajBX.js} +1 -1
  93. package/dist/assets/{component-verbs.command-Cd_-gQ-Z.js → component-verbs.command-BHK9M2Rk.js} +1 -1
  94. package/dist/assets/component-verbs.service-DsxhVcvk.js +1 -0
  95. package/dist/assets/{config-CnqnR-iz.js → config-1rCvm02z.js} +3 -3
  96. package/dist/assets/configurations-CRTYw0r9.js +1 -0
  97. package/dist/assets/{connection.status-BkhMFG12.js → connection.status-D4fjnH24.js} +1 -1
  98. package/dist/assets/{constraints.inspector-CPWFDlY8.js → constraints.inspector-BgnafOLf.js} +1 -1
  99. package/dist/assets/{content-bounds-Ax7CFkXJ.js → content-bounds-D5pXeHJN.js} +1 -1
  100. package/dist/assets/{contract-system-adapters-0Odxcy6d.js → contract-system-adapters-rVGdworX.js} +1 -1
  101. package/dist/assets/{coverage.service-CcKdk7iJ.js → coverage.service-BNme5Agb.js} +1 -1
  102. package/dist/assets/{create-runtime-BhdSylT1.js → create-runtime-CcuQTSfy.js} +2 -2
  103. package/dist/assets/{curve-DiuqWf0-.js → curve-DorFv33R.js} +1 -1
  104. package/dist/assets/{data-asset-BiqUYQnI.js → data-asset-CAE35Emh.js} +1 -1
  105. package/dist/assets/{data-ref-mo1ecq_T.js → data-ref-DXqRnZsJ.js} +1 -1
  106. package/dist/assets/{debug-bridge-BN4INYe7.js → debug-bridge-DdCJSEni.js} +1 -1
  107. package/dist/assets/{debug-registry-BW5cue8V.js → debug-registry-xQJcVubm.js} +1 -1
  108. package/dist/assets/deferred-ingest-play-CEnsC3uN.js +2 -0
  109. package/dist/assets/{design-time-canvas-mount-mhxQlHHP.js → design-time-canvas-mount-CPRrCPFA.js} +2 -2
  110. package/dist/assets/design-time-layers-hmGqBp06.js +1 -0
  111. package/dist/assets/{design-time-mount.service-Cs_mT_-d.js → design-time-mount.service-CEmJjRIJ.js} +2 -2
  112. package/dist/assets/{design-time-mount.service-DPEpO4ny.js → design-time-mount.service-CLL-1Za4.js} +2 -2
  113. package/dist/assets/{design-time-react-mount-RdZmD9Dp.js → design-time-react-mount-DmXi3GBy.js} +1 -1
  114. package/dist/assets/{document-preview-three-D4M5qFH3.js → document-preview-three-B4j_zNef.js} +1 -1
  115. package/dist/assets/{dom-authoring-adapter-B97hwEwz.js → dom-authoring-adapter-BklRbjZB.js} +1 -1
  116. package/dist/assets/{draco3d-B_PtVdzj.js → draco3d-CFWI1XDT.js} +1 -1
  117. package/dist/assets/{edit-mode-audio.service-BZxbnyf-.js → edit-mode-audio.service-SUzv0nHs.js} +1 -1
  118. package/dist/assets/{edit-mode-authoring-CVKwIPOy.js → edit-mode-authoring-CSt3zzmS.js} +1 -1
  119. package/dist/assets/{edit-mode-networking.service-2aXyBwkO.js → edit-mode-networking.service-D6UohrCr.js} +1 -1
  120. package/dist/assets/editor-api-WeHVNlEo.js +1 -0
  121. package/dist/assets/{editor-layers-DI1Wkr8F.js → editor-layers-CjeYrUlm.js} +1 -1
  122. package/dist/assets/{editor-shell-store-DlGykD-E.js → editor-shell-store-DckLm6m8.js} +1 -1
  123. package/dist/assets/{entity-object-C374JqRs.js → entity-object-V13bGmay.js} +1 -1
  124. package/dist/assets/{extend-BOaYynPp.js → extend-BQeRA-aV.js} +1 -1
  125. package/dist/assets/{fork-menu-DGjsgL8L.js → fork-menu-Bthg9viY.js} +1 -1
  126. package/dist/assets/{frame-debugger-store-Czy2FTqO.js → frame-debugger-store-DDxWlDPK.js} +1 -1
  127. package/dist/assets/{game-contract-seams-GoIZaA0s.js → game-contract-seams-DrYyE5PX.js} +1 -1
  128. package/dist/assets/{game-css-scope-transform-9t97Smqk.js → game-css-scope-transform-D5hQWaci.js} +1 -1
  129. package/dist/assets/game-document.service-cJ1yKc2V.js +1 -0
  130. package/dist/assets/{game-eval.command-BYEEWjUv.js → game-eval.command-CKo-W17_.js} +1 -1
  131. package/dist/assets/{game-module-access-BqevF7uR.js → game-module-access-DuptGLGx.js} +1 -1
  132. package/dist/assets/game-network-CAH_Jsh6.js +22 -0
  133. package/dist/assets/gameplay-export-B-JE4uSD.js +1 -0
  134. package/dist/assets/gameplay-replay-WyopKGyB.js +1 -0
  135. package/dist/assets/{gameplay.command-BrleMyQK.js → gameplay.command-D4cY3nOq.js} +1 -1
  136. package/dist/assets/generation-jobs-CcCrhKLM.js +1 -0
  137. package/dist/assets/{generation.service-nVpgwKEB.js → generation.service-CQwmLAOQ.js} +1 -1
  138. package/dist/assets/{generations-AU4LkWAl.js → generations-qfhCRH8C.js} +1 -1
  139. package/dist/assets/{generations.status-CSeb5inI.js → generations.status-CcbR2OfF.js} +1 -1
  140. package/dist/assets/{hierarchy-marks-EEQa08In.js → hierarchy-marks-B1jSqxSv.js} +1 -1
  141. package/dist/assets/{hosted-asset-materialization-DZlaRGkJ.js → hosted-asset-materialization-BZf-8JA1.js} +1 -1
  142. package/dist/assets/{index-ynpEqujB.js → index-CHa43s2p.js} +1 -1
  143. package/dist/assets/{index-N4BP9b5x.js → index-Cj_b0Ygc.js} +1 -1
  144. package/dist/assets/{index-CUBra63E.js → index-D-RMHSzb.js} +1 -1
  145. package/dist/assets/{index-BpXj_ZfC.js → index-DXtfej3G.js} +1 -1
  146. package/dist/assets/{index-BHccVo52.js → index-D_ViOFCz.js} +2 -2
  147. package/dist/assets/{index-DlFjiZgV.js → index-DrEVdQvN.js} +1 -1
  148. package/dist/assets/{index-flxMlfV4.js → index-V4J7xfRg.js} +7 -7
  149. package/dist/assets/{index-OlF4eBxk.js → index-aREcGExk.js} +1 -1
  150. package/dist/assets/index-yXSK_qPW.js +1 -0
  151. package/dist/assets/{inference-diagnostics-MWqnRUsN.js → inference-diagnostics-DoZQ1mpg.js} +1 -1
  152. package/dist/assets/{ingest-boot-viewport-CT1eaWqO.js → ingest-boot-viewport-DWdOtGGE.js} +1 -1
  153. package/dist/assets/ingest-siblings-DyvasVDH.js +1 -0
  154. package/dist/assets/{ingest-source-persistence-CJGE5-AU.js → ingest-source-persistence-CQOJeGhj.js} +1 -1
  155. package/dist/assets/{ingest.service-2TRoiqQ8.js → ingest.service-CqIcydem.js} +1 -1
  156. package/dist/assets/{inspect-Dl5bH02T.js → inspect-DiSjB-N1.js} +1 -1
  157. package/dist/assets/instances.command-COw2QpbN.js +1 -0
  158. package/dist/assets/{json-history-resource-DTUpacfx.js → json-history-resource-CH2nzMZh.js} +1 -1
  159. package/dist/assets/{layered-pick-DKNj5L29.js → layered-pick-BUr1U8lU.js} +1 -1
  160. package/dist/assets/{light-CX-83nBK.js → light-CxiGIJma.js} +1 -1
  161. package/dist/assets/live-project-verbs-CnknlUlT.js +1 -0
  162. package/dist/assets/{machine.document-DE8aRbOi.js → machine.document-D7jMrzXt.js} +1 -1
  163. package/dist/assets/{machines.finder-CZ3P0odZ.js → machines.finder-Dor3O0uf.js} +1 -1
  164. package/dist/assets/{material-f1KOKE_r.js → material-B6cH1Oqw.js} +1 -1
  165. package/dist/assets/{material-factory-DkCPSCLt.js → material-factory-BN3Lax5C.js} +1 -1
  166. package/dist/assets/{mesh-DM3TH9xS.js → mesh-Cj-CYroI.js} +1 -1
  167. package/dist/assets/{model-asset-sections.service-CL4Rlwvc.js → model-asset-sections.service-mC4WJFTA.js} +1 -1
  168. package/dist/assets/{model-inspection-BS3uYvYU.js → model-inspection-8o57YSZW.js} +1 -1
  169. package/dist/assets/{model-thumbnail-WJb6B3qQ.js → model-thumbnail-chePRlH7.js} +1 -1
  170. package/dist/assets/{models.finder-BXJhCiw9.js → models.finder-CKkT5ZdU.js} +1 -1
  171. package/dist/assets/{module-mode-CtoVZDhp.js → module-mode-BMiMhHI3.js} +2 -2
  172. package/dist/assets/{mount-canvas-ingest-root-DI8iSEV4.js → mount-canvas-ingest-root-B1swVIUJ.js} +2 -2
  173. package/dist/assets/{mount-dom-ingest-root-n4tbYw-j.js → mount-dom-ingest-root-B8hO5mht.js} +2 -2
  174. package/dist/assets/{mount-ingest-root-pyV6jEkB.js → mount-ingest-root-Cbnh-mSw.js} +2 -2
  175. package/dist/assets/{mount-manifest-DsGMOkm4.js → mount-manifest-B7oL1Abg.js} +1 -1
  176. package/dist/assets/{mount-three-ingest-root-CeH_uOP0.js → mount-three-ingest-root-BdUJx6ix.js} +1 -1
  177. package/dist/assets/{mounted-authoring-BHpx-z2Y.js → mounted-authoring-C47L5H5t.js} +1 -1
  178. package/dist/assets/{mounted-story-viewport-source-D8kOfa96.js → mounted-story-viewport-source-CyEK_vaq.js} +1 -1
  179. package/dist/assets/{native-debug-module-lR1oG4Vd.js → native-debug-module-JJOFtIVz.js} +1 -1
  180. package/dist/assets/{navigation-DvTw5hJ4.js → navigation-ROJM2w84.js} +1 -1
  181. package/dist/assets/{navmesh.menu-BaBNScgJ.js → navmesh.menu-DjefqtkI.js} +1 -1
  182. package/dist/assets/{navmesh.service-BK6BlOz3.js → navmesh.service-BPqjEQiq.js} +1 -1
  183. package/dist/assets/network-observer.service-GFzXuBMb.js +1 -0
  184. package/dist/assets/{network.utility-BJ3bZOCQ.js → network.utility-6Y5u53n8.js} +1 -1
  185. package/dist/assets/object3d-document-session-registry-DNCOGA3i.js +2 -0
  186. package/dist/assets/{oid-transform-RlofQ4tU.js → oid-transform-DQzN_Gl_.js} +1 -1
  187. package/dist/assets/{particles-CjR9Po6N.js → particles-DGdUmqOr.js} +1 -1
  188. package/dist/assets/{pixi-authoring-adapter-B_mXxWkJ.js → pixi-authoring-adapter-BRktdcIz.js} +1 -1
  189. package/dist/assets/{pixi-live-write-target-tm5yHKss.js → pixi-live-write-target-Dg0mdLaa.js} +1 -1
  190. package/dist/assets/play.command-4IDAqR5W.js +2 -0
  191. package/dist/assets/{presentation-gTgwItzD.js → presentation-8m-RDKIS.js} +1 -1
  192. package/dist/assets/{product-Cmel9X9k.js → product-t6tauO7R.js} +1 -1
  193. package/dist/assets/{profiler.action-DSM2uSYR.js → profiler.action-CXA4IkQB.js} +1 -1
  194. package/dist/assets/{profiler.menu-CcYyqUfU.js → profiler.menu-BgIBv4-I.js} +1 -1
  195. package/dist/assets/{profiler.utility-CQtqdQgC.js → profiler.utility-BYoRbfIK.js} +1 -1
  196. package/dist/assets/{project-authoring-session-BqZuntp2.js → project-authoring-session-DkekCxNv.js} +2 -2
  197. package/dist/assets/{properties-bone-constraints.inspector-D3XrqptB.js → properties-bone-constraints.inspector-DXpiCtf9.js} +1 -1
  198. package/dist/assets/{properties-bone.inspector-CmVamAC6.js → properties-bone.inspector-wIDsP4c5.js} +1 -1
  199. package/dist/assets/{properties-collection.inspector-BGi5eXmI.js → properties-collection.inspector-5SRPbqfM.js} +1 -1
  200. package/dist/assets/{properties-constraints.inspector-C62EOuWg.js → properties-constraints.inspector-DIjKz692.js} +1 -1
  201. package/dist/assets/{properties-data.inspector-qDFtLdw8.js → properties-data.inspector-DE6i8biZ.js} +1 -1
  202. package/dist/assets/{properties-material.inspector-B--PD0se.js → properties-material.inspector-Cu1UCPY4.js} +1 -1
  203. package/dist/assets/{properties-modifiers.inspector-1tdk1EKp.js → properties-modifiers.inspector-DsQzA638.js} +1 -1
  204. package/dist/assets/{properties-object.inspector-CYH5w2un.js → properties-object.inspector-C57X0GJq.js} +1 -1
  205. package/dist/assets/{properties-output.inspector-C78QuVlY.js → properties-output.inspector-DzrcFuRM.js} +1 -1
  206. package/dist/assets/{properties-particles.inspector-DyDiMjmC.js → properties-particles.inspector-DGqSnelN.js} +1 -1
  207. package/dist/assets/{properties-physics.inspector-DG5GOyLE.js → properties-physics.inspector-DIjhtiLe.js} +1 -1
  208. package/dist/assets/{properties-render.inspector-D8ldGTdq.js → properties-render.inspector-CX0orwn9.js} +1 -1
  209. package/dist/assets/{properties-scene.inspector-Cf_KBWbv.js → properties-scene.inspector-DaHNL_sq.js} +1 -1
  210. package/dist/assets/{properties-texture.inspector-BznU5kNc.js → properties-texture.inspector-B5hmxPRy.js} +1 -1
  211. package/dist/assets/{properties-view-layer.inspector-pnRv91FS.js → properties-view-layer.inspector-C7hdJgei.js} +1 -1
  212. package/dist/assets/{properties-world.inspector-CzUtvYuC.js → properties-world.inspector-EWTC6jNw.js} +1 -1
  213. package/dist/assets/r3f-design-session-CXlGV9hp.js +2 -0
  214. package/dist/assets/{r3f-physics-binding-D6DKTgwF.js → r3f-physics-binding-DZSIB0d_.js} +1 -1
  215. package/dist/assets/{r3f-source-authoring-adapter-nqn_PR3m.js → r3f-source-authoring-adapter-GR97EmII.js} +1 -1
  216. package/dist/assets/{react-canvas-navigation-WxI8Mxyc.js → react-canvas-navigation-L_mOnybL.js} +1 -1
  217. package/dist/assets/{react-inspector.service-C1Prvq6u.js → react-inspector.service-B4P3UnSY.js} +1 -1
  218. package/dist/assets/{react-story-board-BRUE9hN1.js → react-story-board-CT1_3sk_.js} +1 -1
  219. package/dist/assets/{react-three-rapier.esm-CA7vFsM3.js → react-three-rapier.esm-DyMNYoA_.js} +1 -1
  220. package/dist/assets/{react-world-authoring-adapter-DVNps-az.js → react-world-authoring-adapter-OR1SW2jI.js} +1 -1
  221. package/dist/assets/{realm-services-CL4ih5gp.js → realm-services-u0mnjXU9.js} +1 -1
  222. package/dist/assets/{reflection-probe-capture.inspector-C9mzBLI7.js → reflection-probe-capture.inspector-CTNlSaGW.js} +1 -1
  223. package/dist/assets/{registry-N8Uqh2X-.js → registry-wqakYaDW.js} +1 -1
  224. package/dist/assets/{relative-import-specifier-cRtWQWmH.js → relative-import-specifier-DXWVQf0o.js} +1 -1
  225. package/dist/assets/{render-env-xu-q_sLG.js → render-env-CN09NtDf.js} +1 -1
  226. package/dist/assets/{render-features-BMOBYkLQ.js → render-features-HCEupUJ6.js} +1 -1
  227. package/dist/assets/{render-settings-Cnd69vhe.js → render-settings-Clt6d05o.js} +1 -1
  228. package/dist/assets/{resolve-three-C9OlnFHx.js → resolve-three-CLzKVMx2.js} +13 -13
  229. package/dist/assets/{root-seam-contract-BoD0NaOZ.js → root-seam-contract-D2uQHWF9.js} +1 -1
  230. package/dist/assets/{run-selection-DL0vJV6z.js → run-selection-AyelFc9T.js} +1 -1
  231. package/dist/assets/{scene-capture-CoTN4qOO.js → scene-capture-WbPcLfJl.js} +1 -1
  232. package/dist/assets/{scene-document.service-kgtsh1r2.js → scene-document.service-4U6rDhCp.js} +2 -2
  233. package/dist/assets/{scene-framing-CljHc6tN.js → scene-framing-DzSL2Cld.js} +1 -1
  234. package/dist/assets/{seeded-random-BlGWBUER.js → seeded-random-tpdJjdqy.js} +1 -1
  235. package/dist/assets/{session-BMie6EFt.js → session-kSIjcXJT.js} +47 -8
  236. package/dist/assets/{setup-renderer-jOQdnmo7.js → setup-renderer-B5vZmCyu.js} +1 -1
  237. package/dist/assets/{source-object3d-authoring-adapter-qg_NN2PX.js → source-object3d-authoring-adapter-BQnQ3Qzg.js} +1 -1
  238. package/dist/assets/{source-persistence-backend-DoNJeJa8.js → source-persistence-backend-uyd6NiWD.js} +1 -1
  239. package/dist/assets/stage-keyboard-B2yrk2zu.js +1 -0
  240. package/dist/assets/stage-overlay-set-Cqtz3s06.js +1 -0
  241. package/dist/assets/{stage-presence-markers-Bu9mH0m_.js → stage-presence-markers-BgLs0Aj5.js} +1 -1
  242. package/dist/assets/stage-transform-tools-BHcz53td.js +1 -0
  243. package/dist/assets/{standard-viewport-dressing-B8VpmbHt.js → standard-viewport-dressing-uhv_3JvQ.js} +2 -2
  244. package/dist/assets/{state-watch.action-Dhb9xQb9.js → state-watch.action-BJ08HgcO.js} +1 -1
  245. package/dist/assets/{state-watch.menu-xf7oO-4l.js → state-watch.menu-rAULwijr.js} +1 -1
  246. package/dist/assets/{state-watch.utility-DnGO08TW.js → state-watch.utility-eEbQcj8t.js} +1 -1
  247. package/dist/assets/{story-capture-CyeAHem-.js → story-capture-B8wfSf5s.js} +1 -1
  248. package/dist/assets/{story-documents-DUm0LUTp.js → story-documents-Cm4jCkW5.js} +2 -2
  249. package/dist/assets/{story-documents.service-BWBSUjBO.js → story-documents.service-BDvQCslK.js} +1 -1
  250. package/dist/assets/{story-documents.service-DOvAnwES.js → story-documents.service-Cgtg6rXn.js} +1 -1
  251. package/dist/assets/story-media-presence-SGlp_afL.js +1 -0
  252. package/dist/assets/{story-pixi-preview-DHtzdru2.js → story-pixi-preview-D62Q_vIW.js} +1 -1
  253. package/dist/assets/{story-presentation-BpfNrI6t.js → story-presentation-CofUdEU7.js} +1 -1
  254. package/dist/assets/{story-three-preview-pzhR44fH.js → story-three-preview-B9O1wapP.js} +2 -2
  255. package/dist/assets/{studio-environment-Dw2FBct5.js → studio-environment-BIhqrtFc.js} +1 -1
  256. package/dist/assets/{surface-state-NwiDDkWI.js → surface-state-DrM3wsrr.js} +1 -1
  257. package/dist/assets/{syntactic-prop-specs-_Yk2QtpW.js → syntactic-prop-specs-BGz0N7Dg.js} +1 -1
  258. package/dist/assets/{team-playtest.service-DdUlOcrk.js → team-playtest.service-CiE8UJAe.js} +1 -1
  259. package/dist/assets/{three-2yjp9YMj.js → three-BQfhEwUz.js} +1 -1
  260. package/dist/assets/{three-authoring-adapter-B5h6dxvp.js → three-authoring-adapter-COBwREQO.js} +1 -1
  261. package/dist/assets/three-authoring.service-C0azvoq8.js +2 -0
  262. package/dist/assets/{three-ingest-runtime-B9surImB.js → three-ingest-runtime-BnRF_nJN.js} +1 -1
  263. package/dist/assets/three-integration-DeWYFf1x.js +2 -0
  264. package/dist/assets/three-integration.service-CoWCBTmg.js +1 -0
  265. package/dist/assets/{three-projection-core-xgnaC08N.js → three-projection-core-PQm-CO61.js} +1 -1
  266. package/dist/assets/{three-state-DVnNjIbQ.js → three-state-C7khRIQE.js} +1 -1
  267. package/dist/assets/{three-story-capture.service-DgVUrOW6.js → three-story-capture.service-B0oiGIfp.js} +2 -2
  268. package/dist/assets/three-story-model-D7g2pqfJ.js +1 -0
  269. package/dist/assets/{three-viewport-presentation-C5wGhMgD.js → three-viewport-presentation-B_tBudM-.js} +5 -5
  270. package/dist/assets/transform-mode-request-DWM6BdRA.js +1 -0
  271. package/dist/assets/{transport-strip-Dvkyjqwq.js → transport-strip-vgXGDgkI.js} +1 -1
  272. package/dist/assets/transport.header-CfVHXjrT.js +1 -0
  273. package/dist/assets/{tuples-tlEYpiUU.js → tuples-BnYrlQqS.js} +1 -1
  274. package/dist/assets/ui-board-document-B_-K9luq.js +2 -0
  275. package/dist/assets/{user-data-C8dmlLGA.js → user-data-CifDDvSr.js} +1 -1
  276. package/dist/assets/{utility-view-state-8ikycS0_.js → utility-view-state-BPl8Asup.js} +1 -1
  277. package/dist/assets/{viewport-door-Brt6-rPp.js → viewport-door-BCXEYmon.js} +1 -1
  278. package/dist/assets/{viewport-root-presentation-DEm3C1-i.js → viewport-root-presentation-DJLpUuf0.js} +1 -1
  279. package/dist/assets/{viewport-surface-status-Dbc5Yxun.js → viewport-surface-status-jwLhIK_M.js} +1 -1
  280. package/dist/assets/{webworkerAll-qWuefF-u.js → webworkerAll-P6jePa6X.js} +1 -1
  281. package/dist/assets/{worker-Gtu-EAm9.js → worker-CJIsrsP6.js} +1 -1
  282. package/dist/assets/{workspace-arrangement-BnGzBm57.js → workspace-arrangement-B_OcbQbj.js} +1 -1
  283. package/dist/assets/{world-documents-DH7drgx-.js → world-documents-Bx3j867R.js} +1 -1
  284. package/dist/assets/{world-root-stage-binding-DIigD-mK.js → world-root-stage-binding-LEhjWDkn.js} +1 -1
  285. package/dist/assets/{xstate-animation-binding-BpYb4mXT.js → xstate-animation-binding-Dionc_fC.js} +1 -1
  286. package/dist/assets/{xstate-animation-meta-0RXvMgDk.js → xstate-animation-meta-XEmD_qc_.js} +1 -1
  287. package/dist-node/cli.js +16 -16
  288. package/package.json +16 -16
  289. package/dist/assets/CanvasSceneViewport-BdHcsAyR.js +0 -1
  290. package/dist/assets/EntityModelDocument-BkRbfE7C.js +0 -1
  291. package/dist/assets/InspectorObjectPreview-BooanIbq.js +0 -1
  292. package/dist/assets/Object3DDocumentToolbar-BGkgzg_Y.js +0 -1
  293. package/dist/assets/Object3DDocumentViewport-C81c8PFJ.js +0 -2
  294. package/dist/assets/StageHost-CSw286Im.js +0 -2
  295. package/dist/assets/autoplay.service-EjNkSGFD.js +0 -1
  296. package/dist/assets/blender-runtime-host-W_QVh8pY.js +0 -4
  297. package/dist/assets/blender-runtime.document-CxTCG8RI.js +0 -12
  298. package/dist/assets/build-player.document-Clkf52m6.js +0 -1
  299. package/dist/assets/component-board.service-Dj_INzxs.js +0 -2
  300. package/dist/assets/component-verbs.service-Do8eBA--.js +0 -1
  301. package/dist/assets/configurations-DFYaoXBK.js +0 -1
  302. package/dist/assets/deferred-ingest-play-C6qytzjB.js +0 -2
  303. package/dist/assets/design-time-layers-CCEX-9ul.js +0 -1
  304. package/dist/assets/editor-api-B0aNu3G5.js +0 -1
  305. package/dist/assets/game-document.service-DBSsz8Ne.js +0 -1
  306. package/dist/assets/game-network-DtzKFtge.js +0 -22
  307. package/dist/assets/gameplay-export-BNVUERuW.js +0 -1
  308. package/dist/assets/gameplay-replay-DEKg9ROx.js +0 -1
  309. package/dist/assets/generation-jobs-Bmm6k_GH.js +0 -1
  310. package/dist/assets/index-PKSmixoy.js +0 -1
  311. package/dist/assets/ingest-siblings-BJ66Uen_.js +0 -1
  312. package/dist/assets/instances.command-2QbcHvH-.js +0 -1
  313. package/dist/assets/live-project-verbs-nmQ1saHI.js +0 -1
  314. package/dist/assets/network-observer.service-CskzAy97.js +0 -1
  315. package/dist/assets/object3d-document-session-registry-DI9WfJDy.js +0 -2
  316. package/dist/assets/play.command-BmsyGtu0.js +0 -2
  317. package/dist/assets/r3f-design-session-Dwqxg13i.js +0 -2
  318. package/dist/assets/stage-keyboard-jfRYkBwZ.js +0 -1
  319. package/dist/assets/stage-overlay-set-Bo-JC6N0.js +0 -1
  320. package/dist/assets/stage-transform-tools-CSnDpsY3.js +0 -1
  321. package/dist/assets/story-media-presence-7Tbl7-hO.js +0 -1
  322. package/dist/assets/three-authoring.service-CIVEDuMV.js +0 -2
  323. package/dist/assets/three-integration-K2zwKa-Z.js +0 -2
  324. package/dist/assets/three-integration.service-kjZ0g0er.js +0 -1
  325. package/dist/assets/three-story-model-B0qnMa7M.js +0 -1
  326. package/dist/assets/transform-mode-request-COfeHSRX.js +0 -1
  327. package/dist/assets/transport.header-CFTM9Q_n.js +0 -1
  328. package/dist/assets/ui-board-document-BlKR5Cyh.js +0 -2
@@ -1 +1 @@
1
- import{b as e,a as o}from"./blender-properties-tab-BnIbJN4f.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-flxMlfV4.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./blender-runtime-host-W_QVh8pY.js";import"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-Ax7CFkXJ.js";import"./hierarchy-marks-EEQa08In.js";import"./workspace-arrangement-BnGzBm57.js";const r=[{title:"Surface",engine:["BLENDER_EEVEE"],properties:["use_nodes","node_tree"]},{title:"Volume",closed:!0,engine:["BLENDER_EEVEE"],properties:["use_eevee_finite_volume"]},{title:"Mist Pass",closed:!0,from:"Mist",engine:["BLENDER_EEVEE"],properties:["start","depth","falloff"]},{title:"Settings",closed:!0,engine:["BLENDER_EEVEE"],properties:[],sub:[{title:"Light Probe",properties:["probe_resolution"]},{title:"Sun",properties:["sun_threshold","sun_angle"],sub:[{title:"Shadow",closed:!0,properties:["use_sun_shadow","use_sun_shadow_jitter","sun_shadow_jitter_overblur","sun_shadow_filter_radius","sun_shadow_maximum_resolution"]}]}]},{title:"Viewport Display",closed:!0,properties:["color"]},{title:"Animation",closed:!0,properties:["animation_data"]}],t={id:"world",standing:"any",curated:r},T="selection.inspector",v="World",A="properties-world",M=50,j="scene",x=o(t),y=e(t);export{y as default,A as icon,x as match,M as order,T as point,j as railGroup,v as title};
1
+ import{b as e,a as o}from"./blender-properties-tab-y-_BeZDx.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-V4J7xfRg.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./blender-runtime-host-CUH6peXj.js";import"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-D5pXeHJN.js";import"./hierarchy-marks-B1jSqxSv.js";import"./workspace-arrangement-B_OcbQbj.js";const r=[{title:"Surface",engine:["BLENDER_EEVEE"],properties:["use_nodes","node_tree"]},{title:"Volume",closed:!0,engine:["BLENDER_EEVEE"],properties:["use_eevee_finite_volume"]},{title:"Mist Pass",closed:!0,from:"Mist",engine:["BLENDER_EEVEE"],properties:["start","depth","falloff"]},{title:"Settings",closed:!0,engine:["BLENDER_EEVEE"],properties:[],sub:[{title:"Light Probe",properties:["probe_resolution"]},{title:"Sun",properties:["sun_threshold","sun_angle"],sub:[{title:"Shadow",closed:!0,properties:["use_sun_shadow","use_sun_shadow_jitter","sun_shadow_jitter_overblur","sun_shadow_filter_radius","sun_shadow_maximum_resolution"]}]}]},{title:"Viewport Display",closed:!0,properties:["color"]},{title:"Animation",closed:!0,properties:["animation_data"]}],t={id:"world",standing:"any",curated:r},T="selection.inspector",v="World",A="properties-world",M=50,j="scene",x=o(t),y=e(t);export{y as default,A as icon,x as match,M as order,T as point,j as railGroup,v as title};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/r3f-source-authoring-adapter-GR97EmII.js","assets/component-instance-root-Cw_-ajBX.js","assets/user-data-CifDDvSr.js","assets/workspace-arrangement-B_OcbQbj.js","assets/index-V4J7xfRg.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/live-gesture-lock-DJbrjOqf.js","assets/relative-import-specifier-DXWVQf0o.js","assets/three-projection-core-PQm-CO61.js","assets/editor-layers-CjeYrUlm.js","assets/three-BQfhEwUz.js","assets/entity-object-V13bGmay.js","assets/three-contract-Dkt6PmWY.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three.core-3arARmh6.js","assets/inference-diagnostics-DoZQ1mpg.js","assets/instance-fork-actions-D3sRzS3K.js","assets/oid-transform-DQzN_Gl_.js","assets/writer-tw6EcuVO.js","assets/r3f-physics-binding-DZSIB0d_.js","assets/object3d-authoring-subject-XccsO0xG.js","assets/user-data-CODoGZqA.js","assets/object-marks-BnvSuCTt.js","assets/three.module-BLhyNg0e.js"])))=>i.map(i=>d[i]);
2
+ import{gm as Me,af as Ae,gV as Ce,_ as Ee,gb as Pe,Y as T,p as ce,dO as pe,jB as xe,dx as de,jC as Fe,jD as Ie,bX as je,jE as De,jF as Be,jG as He,bW as Le,aB as Ve,b$ as ue,dv as Ge,hc as Oe}from"./index-V4J7xfRg.js";import{p as _e,B as fe,q as ye}from"./edit-mode-authoring-CSt3zzmS.js";import{F as ze,G as We,H as qe}from"./game-network-CAH_Jsh6.js";import{a as Ue}from"./binding-resolver-DUz8C8Fs.js";import{a as Ne}from"./realm-services-u0mnjXU9.js";import{p as Qe}from"./scene-framing-DzSL2Cld.js";import{i as Xe,b as Je,n as Ke,a as Ye}from"./native-debug-module-JJOFtIVz.js";import{createAssetCache as Ze}from"./assets-BcrMQHRv.js";import{d as ke,a as et,b as tt}from"./create-runtime-CcuQTSfy.js";import{T as ot}from"./three.module-BLhyNg0e.js";import{_ as me,fp as ee,el as st}from"./three.core-3arARmh6.js";import{w as rt,l as nt}from"./live-gesture-lock-DJbrjOqf.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./seeded-random-tpdJjdqy.js";import"./debug-registry-xQJcVubm.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-CnknlUlT.js";import"./capability-coverage-wd6bAhv3.js";import"./game-contract-seams-DrYyE5PX.js";import"./json-history-resource-CH2nzMZh.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-D_ryI_R4.js";import"./ingest-source-persistence-CQOJeGhj.js";import"./contract-system-adapters-rVGdworX.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-DJLpUuf0.js";import"./mounted-authoring-C47L5H5t.js";import"./entity-object-V13bGmay.js";import"./user-data-CifDDvSr.js";import"./workspace-arrangement-B_OcbQbj.js";import"./three-contract-Dkt6PmWY.js";import"./three-BQfhEwUz.js";import"./editor-layers-CjeYrUlm.js";import"./component-instance-root-Cw_-ajBX.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./adapter-surface-Y37Nzcyw.js";import"./three-authoring-adapter-COBwREQO.js";import"./source-persistence-backend-uyd6NiWD.js";import"./three-projection-core-PQm-CO61.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-DZSIB0d_.js";import"./deferred-ingest-play-CEnsC3uN.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-OR1SW2jI.js";import"./board-guides-B6TEPOPi.js";import"./relative-import-specifier-DXWVQf0o.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-DiSjB-N1.js";import"./inference-diagnostics-DoZQ1mpg.js";import"./writer-tw6EcuVO.js";import"./three-state-C7khRIQE.js";import"./editor-shell-store-DckLm6m8.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./viewport-door-BCXEYmon.js";import"./game-surface-defaults-D8S4cRxi.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./canvas-entry-runtime-DskaohHK.js";import"./three-ingest-runtime-BnRF_nJN.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./CSS3DRenderer-BsAqfavI.js";import"./native-entry-surface-BE8LJNdu.js";import"./loader-BTUKnX5Q.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./binding-Bmxqznjk.js";import"./root-stacking-BEd9ZvxC.js";import"./setup-renderer-B5vZmCyu.js";import"./index-DHhMOs_s.js";import"./defaults-DKiBJCPN.js";import"./render-settings-Clt6d05o.js";import"./render-features-HCEupUJ6.js";import"./loop-gate-report-N52EWFGD.js";import"./system-slot-E2mEdiih.js";import"./performance-profiler-CMbwGBuk.js";function it(t,e){const i=()=>{},a=new Set(["dispose","forceContextLoss","forceContextRestore","setAnimationLoop","setSize","setPixelRatio","setDrawingBufferSize"]),u=new Map,S={...e.shadowMap};let R=e.xr.enabled;const b=e.getClearColor(new me);let C=e.getClearAlpha(),M=null,V=0,G=0;const d=e.getViewport(new ee),h=e.getScissor(new ee);let P=e.getScissorTest(),y=!1,x=!1,F=!1;const O=(c,o,s,n,w)=>{typeof o=="number"?c.set(o,s,n,w):c.copy(o)},B=new Proxy(e.xr,{get(c,o){if(o==="enabled")return R;if(o==="setAnimationLoop"||o==="addEventListener"||o==="removeEventListener")return i;const s=Reflect.get(c,o,c);return typeof s=="function"?s.bind(c):s},set(c,o,s){return o==="enabled"?(R=s,!0):Reflect.set(c,o,s,c)}}),q=new Proxy(e.renderLists,{get(c,o){if(o==="dispose")return i;const s=Reflect.get(c,o,c);return typeof s=="function"?s.bind(c):s}});function _(c,o){const s=new Map,n={...e.shadowMap},w=e.xr.enabled,$=e.getClearColor(new me),I=e.getClearAlpha(),X=e.getRenderTarget(),J=e.getActiveCubeFace(),W=e.getActiveMipmapLevel(),U=e.getViewport(new ee),te=e.getScissor(new ee),K=e.getScissorTest();try{for(const[j,N]of u)s.set(j,Reflect.get(e,j)),Reflect.set(e,j,N);return Object.assign(e.shadowMap,S),e.xr.enabled=R,e.setClearColor(b,C),e.setViewport(d),e.setScissor(h),e.setScissorTest(P),e.setRenderTarget(M,V,G),y&&e.setViewport(d),x&&e.setScissor(h),F&&e.setScissorTest(P),c.apply(e,o)}finally{for(const[j,N]of s)Reflect.set(e,j,N);Object.assign(e.shadowMap,n),e.xr.enabled=w,e.setClearColor($,I),e.setViewport(U),e.setScissor(te),e.setScissorTest(K),e.setRenderTarget(X,J,W)}}const z=new Map;return new Proxy(e,{get(c,o){if(o==="domElement")return t;if(o==="shadowMap")return S;if(o==="xr")return B;if(o==="renderLists")return q;if(a.has(o))return i;if(o==="getRenderTarget")return()=>M;if(o==="getActiveCubeFace")return()=>V;if(o==="getActiveMipmapLevel")return()=>G;if(o==="setRenderTarget")return(n,w=0,$=0)=>{M=n,V=w,G=$,y=x=F=!1};if(o==="getViewport")return n=>n.copy(d);if(o==="getCurrentViewport")return n=>M&&!y?n.copy(M.viewport):(n.copy(d).multiplyScalar(e.getPixelRatio()),y?n.round():n.floor());if(o==="getScissor")return n=>n.copy(h);if(o==="getScissorTest")return()=>P;if(o==="setViewport")return(n,w,$,I)=>{O(d,n,w,$,I),y=!0};if(o==="setScissor")return(n,w,$,I)=>{O(h,n,w,$,I),x=!0};if(o==="setScissorTest")return n=>{P=n,F=!0};if(o==="getClearColor")return n=>n.copy(b);if(o==="getClearAlpha")return()=>C;if(o==="setClearColor")return(n,w=C)=>{b.set(n),C=w};if(o==="setClearAlpha")return n=>{C=n};if(u.has(o))return u.get(o);const s=Reflect.get(c,o,c);if(typeof s!="function")return s;if(!z.has(o)){const n=/^(render|compile|clear|copy|init|readRenderTarget)/.test(String(o));z.set(o,n?(...w)=>{if(!((o==="render"||String(o).startsWith("clear"))&&!M))return _(s,w)}:s.bind(c))}return z.get(o)},set(c,o,s){return o!=="domElement"&&u.set(o,s),!0}})}class at{pending=new WeakMap;remember(e,i){const a=[...i];a.length===0?this.pending.delete(e):this.pending.set(e,a)}take(e,i){const a=[...i],u=this.pending.get(e)??[];return this.pending.delete(e),a.length>0?a:u}}function he(t){return decodeURIComponent(t.split("?")[0]).replace(/^\/@fs\/(?=[A-Za-z]:\/)/,"").replace(/^\/@fs/,"")}class lt{sources=new Map;applied=new Map;expected=new Map;missingRevision=!1;source(e){this.sources.set(e.file,e)}complete(e){for(const[i,a]of this.sources){const u=e.filter(R=>a.timestamp===R.timestamp);(a.boundaries?a.boundaries.every(R=>u.some(b=>b.acceptedPath===R)):u.some(R=>he(R.acceptedPath)===i))&&(this.applied.set(a.path,a.sha),this.sources.delete(i))}}matches(e){const i=he(e.acceptedPath);return[...this.sources.values()].some(a=>a.timestamp===e.timestamp&&(a.boundaries?a.boundaries.includes(e.acceptedPath):a.file===i))}revision(e){for(const i of e)this.expected.set(i.path,i.sha),i.sha===null&&this.applied.delete(i.path)}needsRemount(){if(this.missingRevision)return!0;for(const[e,i]of this.expected)if(i===null||this.applied.get(e)!==i)return!0;return!1}missing(){this.missingRevision=!0}mounted(){this.expected.clear(),this.applied.clear(),this.sources.clear(),this.missingRevision=!1}}function ct(t){return t instanceof st||t!==null&&typeof t=="object"&&t.isScene===!0}function pt(t){return t.find(e=>e.surface==="three")?.id??null}const ge=new at;function dt(t,e,i){return new Error(`three root "${t}" failed to mount: ${e} did not export a RootAdapter or a default React component (exports: ${i.join(", ")||"(nothing)"}).`)}function ut(t,e){const i=je(e);T.error(`[r3f-design] world "${t}" failed to mount: ${i}`,"authoring");const a=De(i);return a&&Be(a).then(u=>T.error(`[r3f-design] world "${t}": ${He(u)}`,"authoring")),Le({worldId:t,kind:"three",identity:"default-three",message:i}),i}async function ft(t,e,i,a){const u=await t.loadEntryModule(i,e,"three"),S=a===i?u:await t.loadEntryModule(a,e,"three");return{designModule:u,rootModule:S}}function mt(t,e,i,a,u,S){ke(t,e,i,{id:a}),Xe(t,u?[u]:[]),Je(t,We(t,S?[S]:[]))}function ht(t){const e=document.createElement("canvas"),i=it(e,t),a=Ze(),u=et({loop:tt({update:()=>{}}),assets:a});return{game:u,host:{three:ot,surface:{canvas:e,width:1280,height:720},renderer:i,assets:a,headless:!1,game:u},dispose:()=>u.dispose()}}function we(t){return{id:t.id,kind:t.surface,adapter:t.adapter,entryOrScenePath:t.entry??t.scene,zOrder:t.zOrder??0,pausable:t.pausable??!0}}function ne(t){let e=!1,i=!1;const a=()=>{e||i||t.shell.playState!=="stopped"||(i=!0,ye())},u=t.shell.subscribe(a);return a(),()=>{e=!0,u()}}async function ls(t,e,i){const a=Ve();if(!a)return()=>{};const u=await Me();if(t.shell.playState!=="stopped")return ne(t);const S=_e(u);if(!S)return()=>{};const R=pt(Ae(S)),b=R?Ce(S,R):void 0;if(!b)return()=>{};const C=b.world?.entry??b.entry,M=b.world?.export;if(!C||!/\.(tsx|jsx)$/.test(C))return()=>{};const V=Ee(()=>import("./r3f-source-authoring-adapter-GR97EmII.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31])),G=Pe();let d=!1,h=!1,P=null,y=null,x=!1,F=null,O=!1,B=!1,q,_,z,c=null,o=null;const s=b.id,n=C,w=()=>{o||!c||d||h||t.shell.playState!=="stopped"||(o=c.systemAdapters,ue(o))},$=()=>{o&&(o=null,ue(null))},I=async()=>{const r=await Ne(a.rootPath,Ge()),{designModule:p,rootModule:f}=await ft(r,s,n,b.entry??n),l=Ke(s,f),m=Ye(s,f,"three"),g=await Ue(p,s,{...M===void 0?{}:{namedExport:M},entryPath:n});if(!g)throw dt(s,n,Object.keys(p));return M!==void 0?{adapter:g,entryDebug:l,entrySystems:m}:{adapter:g,entryDebug:l,entrySystems:m,components:p.components??p.behaviors}},X=async(r,p,f)=>{const{host:l,game:m,dispose:g}=ht(i);let v;try{v=await r.mount(l)}catch(Z){throw g(),Z}if(v.kind!=="three"||!ct(v.scene))throw v.dispose(),g(),new Error(`entry adapter for world "${s}" did not mount a three scene`);return mt(m,r,v,s,p,f),{root:v,game:m,disposeHost:g}},J=r=>{P=r.root,c=r.game,_?.();const p=r.game;_=p.subscribeSystemAdapters?.(()=>{if(c!==p)return;const f=p.systemAdapters;o&&(o=f,Oe(f)),t.shell.notifyIngestEdit()}),q=r.disposeHost},W=()=>{$(),_?.(),_=void 0,c=null;try{P?.dispose()}catch(r){T.error(`[r3f-design] dispose failed: ${r}`,"authoring")}P=null;try{q?.()}catch(r){T.error(`[r3f-design] design host dispose failed: ${r}`,"authoring")}q=void 0},U=()=>{if(!x)return;x=!1;const r=F;F=null,r?t.releaseAdoptedScene(r):t.exitPlayScene()},te=()=>{h=!0,U(),W(),e.replaceChild(s,new fe(t.shell,we(b),"R3F design session suspended by play mode — Stop restores it.")),t.shell.notifyIngestEdit()},K=r=>{const p=ut(s,r);e.replaceChild(s,new fe(t.shell,we(b),p)),t.shell.notifyIngestEdit()},j=setTimeout(()=>{T.warn(`[r3f-design] world "${s}" is still importing after 20s (${n}). The in-browser compiler or a module download may be stalled on a slow connection — it keeps trying; reload the tab if nothing appears.`,"authoring")},2e4);try{const[r,{R3fSourceAuthoringAdapter:p},f]=await Promise.all([I(),V,G]);if(clearTimeout(j),!r)return T.warn(`[r3f-design] world "${s}" produced no design entry (${n}) — the scene stays empty. This is a bug worth reporting; reload the tab to retry.`,"authoring"),()=>{};if(d)return()=>{};if(t.shell.playState!=="stopped")return ne(t);const l=await X(r.adapter,r.entryDebug,r.entrySystems);if(J(l),d||t.shell.playState!=="stopped")return W(),d?()=>{}:ne(t);y=new p(t,l.root.scene,{worldId:s,entryPath:n,writeBackend:f,physics:()=>ce(c?.systemAdapters.physics)}),e.replaceChild(s,y),ze(l.root.scene).then(v=>{v&&!d&&t.shell.notifyIngestEdit()});const m=ge.take(t,t.shell.selectedEntityIds);t.enterPlayScene(l.root.scene,l.root.rendererConfig),x=!0,F=l.root.scene,t.focusOnScene(()=>Qe(null,l.root.scene));const g=m.filter(v=>e.hierarchy.node(v)!==null);g.length>0&&t.shell.selectMultiple(g),pe(s),w(),t.shell.notifyIngestEdit(),T.log(`[r3f-design] world "${s}" mounted for design-time authoring (${n})`,"authoring")}catch(r){clearTimeout(j),K(r)}const N=(r,p,f,l,m)=>{const g=performance.now()-p;g<400||console.info(`[r3f-design] world "${r}" remounted in ${g.toFixed(0)}ms (import ${(f-p).toFixed(0)}ms, mount ${(l-f).toFixed(0)}ms, settle ${(m-l).toFixed(0)}ms, adopt ${(performance.now()-m).toFixed(0)}ms)`)},be=async()=>{if(d||h)return;const r=[...t.shell.selectedEntityIds],p=H,f=t.shell.projectHistory?.getSnapshot().busy===!0;let l="importing";const m=setTimeout(()=>{T.warn(`[r3f-design] world "${s}" remount is still ${l} after 20s (${n}) — it keeps trying; reload the tab if nothing appears.`,"authoring")},2e4),g=performance.now();let v=g,Z=g,ae=g;try{const D=await I();if(v=performance.now(),!D||d||h){console.info(`[r3f-design] world "${s}" remount abandoned after import (${D?d?"torn down":"suspended":"no entry"})`);return}l="mounting";const A=await X(D.adapter,D.entryDebug,D.entrySystems);Z=performance.now();for(let E=0;E<50&&(await rt(),await ve(),!(!nt()&&t.shell.projectHistory?.getSnapshot().busy!==!0));E+=1);if(ae=performance.now(),!d&&!h&&H!==p){A.root.dispose(),A.disposeHost(),L();return}if(d||h){console.info(`[r3f-design] world "${s}" remount abandoned after mount (${d?"torn down":"suspended"})`),A.root.dispose(),A.disposeHost();return}const k=new Set(t.shell.selectedEntityIds);if(U(),W(),J(A),y)y.adoptScene(A.root.scene),e.childAdapters().find(re=>re.worldId===s)?.adapter!==y&&(e.replaceChild(s,y),T.log(`[r3f-design] world "${s}" recovered and remounted for design-time authoring (${n})`,"authoring"));else{const[{R3fSourceAuthoringAdapter:E},re]=await Promise.all([V,G]);y=new E(t,A.root.scene,{worldId:s,entryPath:n,writeBackend:re,physics:()=>ce(c?.systemAdapters.physics)}),e.replaceChild(s,y),T.log(`[r3f-design] world "${s}" recovered and mounted for design-time authoring (${n})`,"authoring")}const $e=k.size>0&&(k.size!==r.length||r.some(E=>!k.has(E)));t.enterPlayScene(A.root.scene,A.root.rendererConfig),x=!0,F=A.root.scene;const le=($e?[...k]:r).filter(E=>y?.hierarchy.node(E)!==null);le.length>0&&t.shell.selectMultiple(le),pe(s),w(),t.shell.notifyIngestEdit(),N(s,g,v,Z,ae),Q.mounted(),clearTimeout(Y),B=!1}catch(D){K(D),!B&&!d&&!h?(B=!0,setTimeout(()=>{!d&&!h&&L()},400)):!d&&!h&&(H===p&&!f?Se(D):(B=!1,L()))}finally{clearTimeout(m),!d&&!h&&H!==p&&L()}},ve=async()=>{const r=t.shell.projectHistory;if(!r)return;const p=Date.now()+1e4;for(;r.getSnapshot().busy&&Date.now()<p;)await new Promise(f=>{const l=setTimeout(f,250),m=r.subscribe(()=>{clearTimeout(l),m(),f()})})},Se=async r=>{const p=r instanceof Error?r.message:String(r);if(!p.includes("fiber crashed"))return;if(/Could not load |Failed to fetch|Unexpected token '<'|not valid JSON/.test(p)){T.error(`World "${s}" failed to load a project asset (${p}). The edit is kept; the world remounts once the asset can be served.`,"authoring");return}const f=t.shell.projectHistory;if(!f)return;const l=f.getSnapshot(),m=l.canUndo?l.transactions[l.cursor-1]:void 0;if(!m||Date.now()-m.timestamp>15e3){console.info(`[r3f-design] world "${s}" crash auto-undo skipped (${m?"last edit too old":l.canUndo?"no entry":`cannot undo: busy=${l.busy} blocked=${l.blocked}`})`);return}if(!await f.undo().catch(()=>!1)){console.info(`[r3f-design] world "${s}" crash auto-undo refused by history`);return}B=!1,T.error(`Undid “${m.label}”: that edit crashed world "${s}" (${r instanceof Error?r.message:String(r)}). The previous source is restored.`,"authoring"),L()};let H=0;const Q=new lt;let Y;const L=()=>{if(d||h){console.info(`[r3f-design] world "${s}" remount skipped: ${d?"session torn down":"suspended for play"}`);return}O||(O=!0,setTimeout(()=>{O=!1,be()},80))},Re=xe(r=>{qe(r).then(()=>{H+=1,L()})});let oe=de()?.revision??0;const Te=Fe(r=>{H+=1;const f=de()?.revisions.filter(m=>m.revision>oe)??[];f.length!==r-oe&&Q.missing(),oe=r;const l=f.flatMap(m=>m.resources);Q.revision(l),!(l.length&&!Q.needsRemount())&&(clearTimeout(Y),Y=setTimeout(()=>{l.length&&!Q.needsRemount()||(H+=1,L())},2e3))});let ie=!1,se=!1;return z=t.shell.subscribe(()=>{if(!d){if(t.shell.playState==="stopped"?w():$(),!h&&!se&&t.shell.playState!=="stopped"){se=!0,Ie(()=>{se=!1,!(d||h||t.shell.playState==="stopped")&&te()});return}h&&!ie&&t.shell.playState==="stopped"&&(ie=!0,ye())}}),()=>{d=!0,console.info(`[r3f-design] world "${s}" design session torn down`),$(),Re(),Te(),clearTimeout(Y),z?.(),!h&&t.shell.playState==="stopped"&&t.shell.selectedEntityIds.size>0&&ge.remember(t,t.shell.selectedEntityIds),U(),W()}}export{ft as loadR3FDesignEntryModules,ls as mountR3FDesignSession,mt as registerR3FDesignRoot,ut as reportDesignMountFailure,dt as unresolvedDesignEntryError};
@@ -1 +1 @@
1
- import{eb as a,ay as i}from"./index-flxMlfV4.js";const h=new Map;function C(t,e){const n=h.get(t);if(n&&n.code===e)return n.sourceFile;const r=a.createSourceFile(t,e,a.ScriptTarget.Latest,!0,a.ScriptKind.TSX);return h.set(t,{code:e,sourceFile:r}),r}function v(){h.clear()}function O(t,e){return a.canHaveModifiers(t)?(a.getModifiers(t)??[]).some(n=>n.kind===e):!1}function m(t){let e=t.parent;for(;e;){if(a.isArrowFunction(e)||a.isFunctionExpression(e)||a.isFunctionDeclaration(e)||a.isMethodDeclaration(e))return e;e=e.parent}return null}function B(t){if(a.isNumericLiteral(t))return Number(t.text);if(a.isPrefixUnaryExpression(t)&&(t.operator===a.SyntaxKind.MinusToken||t.operator===a.SyntaxKind.PlusToken)&&a.isNumericLiteral(t.operand)){const e=Number(t.operand.text);return t.operator===a.SyntaxKind.MinusToken?-e:e}}function S(t,e){return t.attributes.properties.find(n=>a.isJsxAttribute(n)&&n.name.getText()===e)}function E(t){const n=S(t,"ref")?.initializer;return!n||!a.isJsxExpression(n)||!n.expression?null:a.isIdentifier(n.expression)?n.expression.text:null}const H=Object.freeze(Object.defineProperty({__proto__:null,clearAuthoringParseCache:v,enclosingScope:m,hasModifier:O,jsxAttribute:S,numericLiteral:B,parseAuthoringTsx:C,refIdentifier:E},Symbol.toStringTag,{value:"Module"}));function R(t,e){return e!=="position"&&e!=="rotation"&&e!=="scale"?!1:t?.physicsBinding?!0:t?.r3fAuthoring?.bodyForwarded?.includes(e)===!0}function J(t,e){const n=t?.physicsBinding;if(!n||e!=="position"&&e!=="rotation"&&e!=="scale")return null;const r=`${t.file.split("/").pop()??t.file}:${n.line}`,s=`${e} is owned by ${n.hook} at ${r}`;return n.forwarded.includes(e)?`${s}, which reads this component's own ${e} prop — write it where the instance is placed, not on this element`:n.literal.includes(e)?`${s} — the body spawns from that hook's own argument, and a hook argument has no write anchor`:`${s} — this node is placed by the simulation, so a ${e} written here is overwritten on the next frame`}const I=new Set(["useBox","useCompoundBody","useConvexPolyhedron","useCylinder","useHeightfield","useParticle","usePlane","useRaycastVehicle","useSphere","useTrimesh"]),N=new Set(["@react-three/cannon"]);function k(t){const e=new Map;for(const n of t.statements){if(!i.isImportDeclaration(n)||!i.isStringLiteral(n.moduleSpecifier)||!N.has(n.moduleSpecifier.text))continue;const r=n.importClause?.namedBindings;if(!(!r||!i.isNamedImports(r)))for(const s of r.elements){const u=s.propertyName?.text??s.name.text;I.has(u)&&e.set(s.name.text,u)}}return e}function $(t){const e=new Set,n=new Set,r=t?.[0];if(!r)return{whole:e,named:n};if(i.isIdentifier(r.name))return e.add(r.name.text),{whole:e,named:n};if(!i.isObjectBindingPattern(r.name))return{whole:e,named:n};for(const s of r.name.elements)i.isIdentifier(s.name)&&(s.dotDotDotToken?e.add(s.name.text):n.add(s.name.text));return{whole:e,named:n}}function y(t){return t==="position"||t==="rotation"||t==="scale"}function L(t){const e=t.arguments[0];if(!e)return;if(i.isObjectLiteralExpression(e))return e;if(!i.isArrowFunction(e)&&!i.isFunctionExpression(e))return;const n=e.body;if(i.isParenthesizedExpression(n)&&i.isObjectLiteralExpression(n.expression))return n.expression;if(i.isObjectLiteralExpression(n))return n;if(i.isBlock(n)){for(const r of n.statements)if(i.isReturnStatement(r)&&r.expression&&i.isObjectLiteralExpression(r.expression))return r.expression}}function M(t){return!i.isArrayLiteralExpression(t)||t.elements.length!==3?!1:t.elements.every(e=>{const n=i.isPrefixUnaryExpression(e)?e.operand:e;return i.isNumericLiteral(n)})}function F(t,e,n){return i.isIdentifier(t)?e.named.has(t.text):i.isPropertyAccessExpression(t)&&i.isIdentifier(t.expression)&&e.whole.has(t.expression.text)&&t.name.text===n}function T(t,e){if(i.isSpreadAssignment(t))return i.isIdentifier(t.expression)&&e.whole.has(t.expression.text)?[["position","forwarded"],["rotation","forwarded"]]:[];if(i.isShorthandPropertyAssignment(t)){const r=t.name.text;return y(r)?[[r,e.named.has(r)?"forwarded":"expression"]]:[]}if(!i.isPropertyAssignment(t)||!i.isIdentifier(t.name))return[];const n=t.name.text;return y(n)?M(t.initializer)?[[n,"literal"]]:[[n,F(t.initializer,e,n)?"forwarded":"expression"]]:[]}function j(t,e){const n=new Map;for(const s of t.properties)for(const[u,f]of T(s,e))n.set(u,f);const r=s=>[...n.entries()].filter(([,u])=>u===s).map(([u])=>u);return{forwarded:r("forwarded"),literal:r("literal")}}function D(t){const e=t.parent;if(!i.isVariableDeclaration(e)||!i.isArrayBindingPattern(e.name))return null;const n=e.name.elements[1];return n&&i.isBindingElement(n)&&i.isIdentifier(n.name)?n.name.text:null}function z(t,e,n){if(!t)return[];const r=new Set,s=new RegExp(`\\b${n.replace(/[$]/g,"\\$&")}\\.(position|rotation|scale)\\.(?:set|copy)\\s*\\(`,"g"),u=f=>{if(i.isCallExpression(f)&&/(^|\.)useFrame$/.test(f.expression.getText(e)))for(const p of f.getText(e).matchAll(s))r.add(p[1]);i.forEachChild(f,u)};return u(t),[...r]}function _(t){const e=t.parent;if(i.isVariableDeclaration(e)&&i.isArrayBindingPattern(e.name)){const r=e.name.elements[0];if(r&&i.isBindingElement(r)&&i.isIdentifier(r.name))return r.name.text}const n=t.arguments[1];return n&&i.isIdentifier(n)?n.text:null}function V(t){const e=k(t),n=new Map;if(e.size===0)return n;const r=new Map,s=(o,c)=>{const d=_(o);if(!d)return;const l=m(o),x=L(o),P=x?j(x,$(l?.parameters)):{forwarded:[],literal:[]},{line:A}=t.getLineAndCharacterOfPosition(o.getStart(t)),g=D(o),w=g?z(l,t,g):[],b=r.get(l)??new Map;b.set(d,{hook:c,line:A+1,...P,...w.length>0?{apiDriven:w}:{}}),r.set(l,b)},u=o=>{if(i.isCallExpression(o)&&i.isIdentifier(o.expression)){const c=e.get(o.expression.text);c&&s(o,c)}i.forEachChild(o,u)};if(u(t),r.size===0)return n;const f=o=>{const c=E(o);if(!c)return;let d=m(o);for(;;){const l=r.get(d)?.get(c);if(l)return l;if(d===null)return;d=m(d)}},p=o=>{if(i.isJsxOpeningElement(o)||i.isJsxSelfClosingElement(o)){const c=f(o);c&&n.set(o,c)}i.forEachChild(o,p)};return p(t),n}export{V as a,J as b,R as c,C as p,E as r,H as t};
1
+ import{eb as a,aD as i}from"./index-V4J7xfRg.js";const h=new Map;function C(t,e){const n=h.get(t);if(n&&n.code===e)return n.sourceFile;const r=a.createSourceFile(t,e,a.ScriptTarget.Latest,!0,a.ScriptKind.TSX);return h.set(t,{code:e,sourceFile:r}),r}function v(){h.clear()}function O(t,e){return a.canHaveModifiers(t)?(a.getModifiers(t)??[]).some(n=>n.kind===e):!1}function m(t){let e=t.parent;for(;e;){if(a.isArrowFunction(e)||a.isFunctionExpression(e)||a.isFunctionDeclaration(e)||a.isMethodDeclaration(e))return e;e=e.parent}return null}function B(t){if(a.isNumericLiteral(t))return Number(t.text);if(a.isPrefixUnaryExpression(t)&&(t.operator===a.SyntaxKind.MinusToken||t.operator===a.SyntaxKind.PlusToken)&&a.isNumericLiteral(t.operand)){const e=Number(t.operand.text);return t.operator===a.SyntaxKind.MinusToken?-e:e}}function S(t,e){return t.attributes.properties.find(n=>a.isJsxAttribute(n)&&n.name.getText()===e)}function E(t){const n=S(t,"ref")?.initializer;return!n||!a.isJsxExpression(n)||!n.expression?null:a.isIdentifier(n.expression)?n.expression.text:null}const H=Object.freeze(Object.defineProperty({__proto__:null,clearAuthoringParseCache:v,enclosingScope:m,hasModifier:O,jsxAttribute:S,numericLiteral:B,parseAuthoringTsx:C,refIdentifier:E},Symbol.toStringTag,{value:"Module"}));function R(t,e){return e!=="position"&&e!=="rotation"&&e!=="scale"?!1:t?.physicsBinding?!0:t?.r3fAuthoring?.bodyForwarded?.includes(e)===!0}function J(t,e){const n=t?.physicsBinding;if(!n||e!=="position"&&e!=="rotation"&&e!=="scale")return null;const r=`${t.file.split("/").pop()??t.file}:${n.line}`,s=`${e} is owned by ${n.hook} at ${r}`;return n.forwarded.includes(e)?`${s}, which reads this component's own ${e} prop — write it where the instance is placed, not on this element`:n.literal.includes(e)?`${s} — the body spawns from that hook's own argument, and a hook argument has no write anchor`:`${s} — this node is placed by the simulation, so a ${e} written here is overwritten on the next frame`}const I=new Set(["useBox","useCompoundBody","useConvexPolyhedron","useCylinder","useHeightfield","useParticle","usePlane","useRaycastVehicle","useSphere","useTrimesh"]),N=new Set(["@react-three/cannon"]);function k(t){const e=new Map;for(const n of t.statements){if(!i.isImportDeclaration(n)||!i.isStringLiteral(n.moduleSpecifier)||!N.has(n.moduleSpecifier.text))continue;const r=n.importClause?.namedBindings;if(!(!r||!i.isNamedImports(r)))for(const s of r.elements){const u=s.propertyName?.text??s.name.text;I.has(u)&&e.set(s.name.text,u)}}return e}function $(t){const e=new Set,n=new Set,r=t?.[0];if(!r)return{whole:e,named:n};if(i.isIdentifier(r.name))return e.add(r.name.text),{whole:e,named:n};if(!i.isObjectBindingPattern(r.name))return{whole:e,named:n};for(const s of r.name.elements)i.isIdentifier(s.name)&&(s.dotDotDotToken?e.add(s.name.text):n.add(s.name.text));return{whole:e,named:n}}function y(t){return t==="position"||t==="rotation"||t==="scale"}function L(t){const e=t.arguments[0];if(!e)return;if(i.isObjectLiteralExpression(e))return e;if(!i.isArrowFunction(e)&&!i.isFunctionExpression(e))return;const n=e.body;if(i.isParenthesizedExpression(n)&&i.isObjectLiteralExpression(n.expression))return n.expression;if(i.isObjectLiteralExpression(n))return n;if(i.isBlock(n)){for(const r of n.statements)if(i.isReturnStatement(r)&&r.expression&&i.isObjectLiteralExpression(r.expression))return r.expression}}function M(t){return!i.isArrayLiteralExpression(t)||t.elements.length!==3?!1:t.elements.every(e=>{const n=i.isPrefixUnaryExpression(e)?e.operand:e;return i.isNumericLiteral(n)})}function F(t,e,n){return i.isIdentifier(t)?e.named.has(t.text):i.isPropertyAccessExpression(t)&&i.isIdentifier(t.expression)&&e.whole.has(t.expression.text)&&t.name.text===n}function T(t,e){if(i.isSpreadAssignment(t))return i.isIdentifier(t.expression)&&e.whole.has(t.expression.text)?[["position","forwarded"],["rotation","forwarded"]]:[];if(i.isShorthandPropertyAssignment(t)){const r=t.name.text;return y(r)?[[r,e.named.has(r)?"forwarded":"expression"]]:[]}if(!i.isPropertyAssignment(t)||!i.isIdentifier(t.name))return[];const n=t.name.text;return y(n)?M(t.initializer)?[[n,"literal"]]:[[n,F(t.initializer,e,n)?"forwarded":"expression"]]:[]}function D(t,e){const n=new Map;for(const s of t.properties)for(const[u,f]of T(s,e))n.set(u,f);const r=s=>[...n.entries()].filter(([,u])=>u===s).map(([u])=>u);return{forwarded:r("forwarded"),literal:r("literal")}}function j(t){const e=t.parent;if(!i.isVariableDeclaration(e)||!i.isArrayBindingPattern(e.name))return null;const n=e.name.elements[1];return n&&i.isBindingElement(n)&&i.isIdentifier(n.name)?n.name.text:null}function z(t,e,n){if(!t)return[];const r=new Set,s=new RegExp(`\\b${n.replace(/[$]/g,"\\$&")}\\.(position|rotation|scale)\\.(?:set|copy)\\s*\\(`,"g"),u=f=>{if(i.isCallExpression(f)&&/(^|\.)useFrame$/.test(f.expression.getText(e)))for(const p of f.getText(e).matchAll(s))r.add(p[1]);i.forEachChild(f,u)};return u(t),[...r]}function _(t){const e=t.parent;if(i.isVariableDeclaration(e)&&i.isArrayBindingPattern(e.name)){const r=e.name.elements[0];if(r&&i.isBindingElement(r)&&i.isIdentifier(r.name))return r.name.text}const n=t.arguments[1];return n&&i.isIdentifier(n)?n.text:null}function V(t){const e=k(t),n=new Map;if(e.size===0)return n;const r=new Map,s=(o,c)=>{const d=_(o);if(!d)return;const l=m(o),x=L(o),P=x?D(x,$(l?.parameters)):{forwarded:[],literal:[]},{line:A}=t.getLineAndCharacterOfPosition(o.getStart(t)),g=j(o),w=g?z(l,t,g):[],b=r.get(l)??new Map;b.set(d,{hook:c,line:A+1,...P,...w.length>0?{apiDriven:w}:{}}),r.set(l,b)},u=o=>{if(i.isCallExpression(o)&&i.isIdentifier(o.expression)){const c=e.get(o.expression.text);c&&s(o,c)}i.forEachChild(o,u)};if(u(t),r.size===0)return n;const f=o=>{const c=E(o);if(!c)return;let d=m(o);for(;;){const l=r.get(d)?.get(c);if(l)return l;if(d===null)return;d=m(d)}},p=o=>{if(i.isJsxOpeningElement(o)||i.isJsxSelfClosingElement(o)){const c=f(o);c&&n.set(o,c)}i.forEachChild(o,p)};return p(t),n}export{V as a,J as b,R as c,C as p,E as r,H as t};
@@ -1,4 +1,4 @@
1
- import{d as Mt,b as _,r as Lt,o as M,a as re,i as ne}from"./component-instance-root-pq7uyyej.js";import{e as Ie,b as Ft}from"./live-gesture-lock-DJbrjOqf.js";import{r as Bt,c as jt}from"./relative-import-specifier-cRtWQWmH.js";import{S as Dt,C as Nt,r as Wt}from"./three-projection-core-xgnaC08N.js";import{ec as _t,gz as Ht,kT as zt,kU as B,kV as Jt,cy as Vt,fd as Ut,bm as ie,bn as oe,d4 as j,O as Pe,hb as ke,bo as Kt}from"./index-flxMlfV4.js";import{w as qt}from"./inference-diagnostics-MWqnRUsN.js";import{f as Gt,d as Xt,e as Ae,g as Zt,h as Qt,j as Yt,k as er,l as Ee,m as tr,n as rr}from"./instance-fork-actions-D3sRzS3K.js";import{c as nr,T as ir,n as or}from"./three-2yjp9YMj.js";import{l as H}from"./oid-transform-RlofQ4tU.js";import{c as sr,b as ar}from"./r3f-physics-binding-D6DKTgwF.js";import{f as fe,a as Te,i as xe,b as cr,o as lr}from"./writer-tw6EcuVO.js";import{isEditorOwnedObject as me}from"./editor-layers-DI1Wkr8F.js";import{object3DAuthoringSubjectOf as Ce}from"./object3d-authoring-subject-XccsO0xG.js";import{getUserData as ye}from"./user-data-CODoGZqA.js";import"./three.module-BLhyNg0e.js";import{cj as C,fo as m,eX as ur,ej as dr,cO as hr,dp as Y,I as Me}from"./three.core-3arARmh6.js";import"./user-data-C8dmlLGA.js";import"./workspace-arrangement-BnGzBm57.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./entity-object-C374JqRs.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./object-marks-BnvSuCTt.js";function pr(o){return`${o.code}|${o.file}|${o.line}|${o.col}`}function fr(...o){const e=new Set,t=[];for(const r of o)for(const n of r?.diagnostics??[]){const i=pr(n);e.has(i)||(e.add(i),t.push(n))}return t}const Le=["#7dd3fc","#60a5fa","#818cf8","#a78bfa","#c084fc"],Fe=1e3;function ft(o){return o.lod.updateWorldMatrix(!0,!1),o.lod.getWorldPosition(new m)}function Be(o){return Le[o%Le.length]}function mr(o){const e=ft(o),t=[],r=[];return o.lod.levels.forEach((n,i)=>{!Number.isFinite(n.distance)||n.distance<=0||(t.push({kind:"sphere",center:[e.x,e.y,e.z],radius:n.distance,color:Be(i),opacity:.56}),r.push({id:`lod:${encodeURIComponent(o.key)}:${i}`,label:`LOD ${i} distance`,position:[e.x+n.distance,e.y,e.z],color:Be(i),writable:o.writableDistances.has(i)}))}),{id:`lod:${o.key}`,category:"lod",guides:t,handles:r}}function yr(o){return Math.round(o*Fe)/Fe}function mt(o,e,t){const r=o.lod.levels[e-1]?.distance,n=o.lod.levels[e+1]?.distance,i=r===void 0?0:r+.01,s=n===void 0?Number.POSITIVE_INFINITY:Math.max(i,n-.01);return yr(C.clamp(t,i,s))}function je(o,e,t){const r=/^lod:([^:]+):(\d+)$/.exec(e);if(!r)return null;const n=decodeURIComponent(r[1]),i=Number(r[2]),s=o.find(c=>c.key===n);if(!s||!s.writableDistances.has(i))return null;const a=new m(...t).distanceTo(ft(s));return{binding:s,level:i,value:mt(s,i,a)}}function yt(o){const e=o.binding.lod.levels[o.level];e&&(e.distance=o.value)}const gt="#ff9f43",gr="#ffd166",De=1e3;function wr(o){const e=o.system?.emitterShape;return e&&typeof e.type=="string"?e:null}function $e(o){return encodeURIComponent(o.sourceOid)}function wt(o){return[o.x,o.y,o.z]}function br(o,e){return o.emitter.updateWorldMatrix(!0,!1),wt(e.clone().applyMatrix4(o.emitter.matrixWorld))}function b(o,e,t=.72){o.emitter.updateWorldMatrix(!0,!1);const r=o.emitter.matrixWorld;return{kind:"line",points:e.map(n=>wt(n.clone().applyMatrix4(r))),color:gt,opacity:t}}function k(o,e="xy",t=48,r=Math.PI*2){const n=[];for(let i=0;i<=t;i+=1){const s=i/t*r,a=Math.cos(s)*o,c=Math.sin(s)*o;n.push(e==="xy"?new m(a,c,0):e==="xz"?new m(a,0,c):new m(0,a,c))}return n}function Ne(o,e){return o.map(t=>t.clone().applyAxisAngle(new m(0,0,1),e))}function We(o,e,t=24){const r=[];for(let n=0;n<=t;n+=1){const i=n/t*Math.PI,s=Math.cos(i)*o,a=Math.sin(i)*o;r.push(new m(s,0,a))}return r}function P(o,e,t){const r=o[e];return typeof r=="number"&&Number.isFinite(r)?r:t}function vr(o){const e=o.shape,t=P(e,"radius",10),r=C.clamp(P(e,"arc",Math.PI*2),0,Math.PI*2),n=Math.abs(r-Math.PI*2)<.001;switch(e.type){case"point":return[b(o,[new m(-.2,0,0),new m(.2,0,0)]),b(o,[new m(0,-.2,0),new m(0,.2,0)]),b(o,[new m(0,0,-.2),new m(0,0,.2)])];case"sphere":return[b(o,k(t,"xy",48,r)),b(o,k(t,"xz"),.5),b(o,Ne(k(t,"xz"),n?Math.PI/2:r),.5)];case"hemisphere":return[b(o,k(t,"xy",48,r)),b(o,We(t),.55),b(o,Ne(We(t),n?Math.PI/2:r),.55)];case"cone":{const i=P(e,"angle",Math.PI/6),s=Math.max(t,1),a=[b(o,k(t,"xy",48,r))],c=n?[0,Math.PI/2,Math.PI,3*Math.PI/2]:[0,r/3,r*2/3,r];for(const l of c){const u=new m(Math.cos(l)*t,Math.sin(l)*t,0),d=u.clone().add(new m(Math.cos(l)*Math.sin(i),Math.sin(l)*Math.sin(i),Math.cos(i)).multiplyScalar(s));a.push(b(o,[u,d],.58))}return a}case"circle":return[b(o,k(t,"xy",48,r))];case"donut":{const i=P(e,"donutRadius",t*.2);return[b(o,k(Math.max(0,t-i),"xy",48,r),.45),b(o,k(t,"xy",48,r)),b(o,k(t+i,"xy",48,r),.45),b(o,k(i,"xz").map(s=>s.add(new m(t,0,0))),.45)]}case"rectangle":case"grid":{const i=P(e,"width",e.type==="grid"?1:10),s=P(e,"height",e.type==="grid"?1:10),a=i/2,c=s/2,l=[b(o,[new m(-a,-c,0),new m(a,-c,0),new m(a,c,0),new m(-a,c,0),new m(-a,-c,0)])];if(e.type==="grid"){const u=Math.min(16,Math.max(1,Math.round(P(e,"column",10)))),d=Math.min(16,Math.max(1,Math.round(P(e,"row",10))));for(let h=1;h<u;h+=1){const p=-a+h/u*i;l.push(b(o,[new m(p,-c,0),new m(p,c,0)],.24))}for(let h=1;h<d;h+=1){const p=-c+h/d*s;l.push(b(o,[new m(-a,p,0),new m(a,p,0)],.24))}}return l}}}function z(o,e,t,r){return{id:`particle:${$e(o)}:${e}`,label:t,position:br(o,r),color:e==="angle"?gr:gt,writable:o.writableFields.has(e)}}function Or(o){const e=o.shape,t=P(e,"radius",10),r=[];if(["sphere","hemisphere","cone","circle","donut"].includes(e.type)&&r.push(z(o,"radius","Emitter radius",new m(t,0,0))),e.type==="cone"){const n=P(e,"angle",Math.PI/6),i=Math.max(t,1);r.push(z(o,"angle","Cone angle",new m(t+Math.sin(n)*i,0,Math.cos(n)*i)))}return e.type==="donut"&&r.push(z(o,"donutRadius","Donut tube radius",new m(t,0,P(e,"donutRadius",t*.2)))),(e.type==="rectangle"||e.type==="grid")&&r.push(z(o,"width","Emitter width",new m(P(e,"width",1)/2,0,0)),z(o,"height","Emitter height",new m(0,P(e,"height",1)/2,0))),{id:`particle:${$e(o)}`,category:"particles",guides:vr(o),handles:r}}function se(o){return Math.round(o*De)/De}function bt(o,e){return o==="angle"?se(C.clamp(e,.01,Math.PI/2-.01)):o==="arc"?se(C.clamp(e,0,Math.PI*2)):o==="thickness"?se(C.clamp(e,0,1)):o==="column"||o==="row"?Math.max(1,Math.round(e)):se(Math.max(.01,e))}function Sr(o,e){return bt(o,e)}function _e(o,e,t){const r=/^particle:([^:]+):(radius|angle|donutRadius|width|height)$/.exec(e),n=r?o.find(l=>$e(l)===r[1]):void 0,i=r?.[2];if(!n||!i||!n.writableFields.has(i))return null;n.emitter.updateWorldMatrix(!0,!1);const s=n.emitter.worldToLocal(new m(...t)),a=P(n.shape,"radius",10);let c;return i==="radius"?c=n.shape.type==="sphere"||n.shape.type==="hemisphere"?s.length():Math.hypot(s.x,s.y):i==="angle"?c=Math.atan2(Math.max(0,Math.hypot(s.x,s.y)-a),Math.abs(s.z)||.001):i==="donutRadius"?c=Math.abs(s.z):i==="width"?c=Math.abs(s.x)*2:c=Math.abs(s.y)*2,{binding:n,field:i,value:bt(i,c)}}function vt(o){o.binding.shape[o.field]=o.value}const Ot={Light:"light",Material:"material",Camera:"camera",Audio:"audio"};function y(o,e,t,r,n,i=`${Ot[o]}.${t}`,s){return{prop:t,label:r,type:n,group:o,target:e,path:i,...s?{options:s}:{}}}function D(o,e,t){return{prop:o,label:e,type:"asset",group:"Material",target:"material",path:`${Ot.Material}.${o}`,colorSpace:t}}const Pr=[D("map","Base Color Map","srgb"),D("normalMap","Normal Map","linear"),D("roughnessMap","Roughness Map","linear"),D("metalnessMap","Metalness Map","linear"),D("emissiveMap","Emissive Map","srgb"),D("aoMap","Ambient Occlusion Map","linear")];function xr(o){const e=o;return e&&e.isColor?`#${e.getHexString()}`:void 0}const St="volterAssetPath",He=new WeakSet,$r=new ur;function Pt(o){const e=o;if(!e||!e.isTexture)return"";const t=e.userData?.[St];if(typeof t=="string"&&t)return t;if(e.name)return e.name;const r=e.image?.src;return typeof r=="string"?r:""}function Rr(o){return/^(?:[a-z]+:|\/)/i.test(o)?o:`/${o}`}function Ir(o,e,t){if(!o)return null;const r=o,n=r[e.prop],i=t==null?"":String(t);if(n&&He.has(n)&&Pt(n)!==i&&n.dispose(),!i)return r[e.prop]=null,o.needsUpdate=!0,"";const s=$r.load(Rr(i));return s.colorSpace=e.colorSpace==="srgb"?dr:hr,s.userData[St]=i,s.name=i,He.add(s),r[e.prop]=s,o.needsUpdate=!0,i}function kr(o){const e=o,t=[y("Light","self","color","Color","color"),y("Light","self","intensity","Intensity","number")];return(e.isPointLight||e.isSpotLight)&&t.push(y("Light","self","distance","Distance","number"),y("Light","self","decay","Decay","number")),e.isSpotLight&&t.push(y("Light","self","angle","Angle","number"),y("Light","self","penumbra","Penumbra","number")),t}function xt(o){const e=o;return e.isDirectionalLight||e.isPointLight||e.isSpotLight?y("Light","self","castShadow","Cast Shadow","boolean","shadow.cast"):void 0}function Ar(o){const e=o,t=[];e.color?.isColor&&t.push(y("Material","material","color","Color","color")),typeof e.roughness=="number"&&t.push(y("Material","material","roughness","Roughness","number")),typeof e.metalness=="number"&&t.push(y("Material","material","metalness","Metalness","number")),e.emissive?.isColor&&t.push(y("Material","material","emissive","Emissive","color")),t.push(y("Material","material","opacity","Opacity","number"),y("Material","material","transparent","Transparent","boolean")),typeof e.wireframe=="boolean"&&t.push(y("Material","material","wireframe","Wireframe","boolean"));const r=o;for(const n of Pr)n.prop in r&&t.push(n);return t}function Er(o){const e=o;return e.isPerspectiveCamera?[y("Camera","self","fov","FOV","number"),y("Camera","self","near","Near","number"),y("Camera","self","far","Far","number"),y("Camera","self","zoom","Zoom","number")]:e.isOrthographicCamera?[y("Camera","self","zoom","Zoom","number"),y("Camera","self","near","Near","number"),y("Camera","self","far","Far","number"),y("Camera","self","left","Left","number"),y("Camera","self","right","Right","number"),y("Camera","self","top","Top","number"),y("Camera","self","bottom","Bottom","number")]:[]}function ee(o){const e=o;return typeof e.getRefDistance=="function"&&typeof e.setRefDistance=="function"&&!!e.panner}function Tr(o="PositionalAudio"){return[y("Audio","self",o==="PositionalAudio"?"distance":"panner-refDistance","Reference Distance","number","audio.refDistance"),y("Audio","self","panner-distanceModel","Distance Model","enum","audio.distanceModel",["inverse","linear","exponential"]),y("Audio","self","panner-rolloffFactor","Rolloff","number","audio.rolloffFactor"),y("Audio","self","panner-maxDistance","Maximum Distance","number","audio.maxDistance"),y("Audio","self","panner-coneInnerAngle","Inner Cone","number","audio.coneInnerAngle"),y("Audio","self","panner-coneOuterAngle","Outer Cone","number","audio.coneOuterAngle"),y("Audio","self","panner-coneOuterGain","Outside Gain","number","audio.coneOuterGain")]}function $t(o,e,t){const r=o,n=[];return r.isLight&&n.push(...kr(o)),r.isCamera&&n.push(...Er(o)),ee(o)&&n.push(...Tr(t)),e&&n.push(...Ar(e)),n}function Q(o,e,t,r){const n=xt(o);return $t(o,e,r).find(i=>i.path===t)??(n?.path===t?n:void 0)}function Rt(o,e,t){return t.target==="material"?e:o}function J(o,e,t){if(t.group==="Audio"&&ee(o)){const i=o.panner;switch(t.path){case"audio.refDistance":return o.getRefDistance();case"audio.distanceModel":return o.getDistanceModel();case"audio.rolloffFactor":return o.getRolloffFactor();case"audio.maxDistance":return o.getMaxDistance();case"audio.coneInnerAngle":return i.coneInnerAngle;case"audio.coneOuterAngle":return i.coneOuterAngle;case"audio.coneOuterGain":return i.coneOuterGain}}const r=Rt(o,e,t);if(!r)return;const n=r[t.prop];return t.type==="color"?xr(n):t.type==="asset"?Pt(n):n}function Cr(o,e,t){if(e.path==="audio.distanceModel"){const n=String(t);return n!=="inverse"&&n!=="linear"&&n!=="exponential"?null:(o.setDistanceModel(n),n)}const r=Number(t);if(!Number.isFinite(r))return null;switch(e.path){case"audio.refDistance":return o.setRefDistance(Math.max(.01,r)),Math.max(.01,r);case"audio.rolloffFactor":return o.setRolloffFactor(Math.max(0,r)),Math.max(0,r);case"audio.maxDistance":return o.setMaxDistance(Math.max(o.getRefDistance()+.01,r)),Math.max(o.getRefDistance()+.01,r);case"audio.coneInnerAngle":{const n=Math.max(0,Math.min(o.panner.coneOuterAngle,r));return o.setDirectionalCone(n,o.panner.coneOuterAngle,o.panner.coneOuterGain),n}case"audio.coneOuterAngle":{const n=Math.max(o.panner.coneInnerAngle,Math.min(360,r));return o.setDirectionalCone(o.panner.coneInnerAngle,n,o.panner.coneOuterGain),n}case"audio.coneOuterGain":{const n=Math.max(0,Math.min(1,r));return o.setDirectionalCone(o.panner.coneInnerAngle,o.panner.coneOuterAngle,n),n}default:return null}}function T(o,e,t,r){if(t.group==="Audio"&&ee(o))return Cr(o,t,r);if(t.type==="asset")return Ir(e,t,r);const n=Rt(o,e,t);if(!n)return null;if(t.type==="color"){const s=String(r);return n[t.prop]?.set(s),s}if(t.type==="boolean"){const s=!!r;return n[t.prop]=s,ze(o,e,t),s}const i=Number(r);return Number.isFinite(i)?(n[t.prop]=i,ze(o,e,t),i):null}function ze(o,e,t){t.group==="Camera"&&o.updateProjectionMatrix?.(),t.target==="material"&&e&&(t.prop==="transparent"||t.prop==="wireframe")&&(e.needsUpdate=!0)}const Je="#42c8ff",Ve="#287fb8",Ue="#ffd166",Ke="#ff9f43",qe=100;function A(o){return[o.x,o.y,o.z]}function It(o){o.updateWorldMatrix(!0,!1);const e=o.getWorldPosition(new m),t=o.getWorldQuaternion(new Y);return{origin:e,forward:new m(0,0,1).applyQuaternion(t).normalize(),right:new m(1,0,0).applyQuaternion(t).normalize()}}function Ge(o,e,t,r,n){const i=C.degToRad(n/2);return o.clone().addScaledVector(e,Math.cos(i)*r).addScaledVector(t,Math.sin(i)*r)}function Mr(o,e){if(!ee(o))return null;const{origin:t,forward:r,right:n}=It(o),i=o.getRefDistance(),s=o.getMaxDistance(),a=o.getDistanceModel(),c=o.panner.coneInnerAngle,l=o.panner.coneOuterAngle,u=l<359.5,d=Math.max(1,Math.min(8,i*2.5)),h=[{kind:"sphere",center:A(t),radius:i,color:Je,opacity:.75}],p=[{id:"audio-ref-distance",label:"Reference distance",position:A(t.clone().addScaledVector(n,i)),color:Je,writable:e("audio.refDistance")}];return a==="linear"&&(h.push({kind:"sphere",center:A(t),radius:s,color:Ve,opacity:.42,dashed:!0}),p.push({id:"audio-max-distance",label:"Maximum distance",position:A(t.clone().addScaledVector(n,s)),color:Ve,writable:e("audio.maxDistance")})),u&&(h.push({kind:"cone",origin:A(t),direction:A(r),length:d,angle:l,color:Ke,opacity:.72}),p.push({id:"audio-outer-cone",label:"Outer cone angle",position:A(Ge(t,r,n,d,l)),color:Ke,writable:e("audio.coneOuterAngle")}),c<359.5&&(h.push({kind:"cone",origin:A(t),direction:A(r),length:d,angle:c,color:Ue,opacity:.58,dashed:!0}),p.push({id:"audio-inner-cone",label:"Inner cone angle",position:A(Ge(t,r,n,d,c)),color:Ue,writable:e("audio.coneInnerAngle")}))),{id:"positional-audio",category:"audio",guides:h,handles:p}}function ge(o){return Math.round(o*qe)/qe}function Lr(o,e,t,r){if(!ee(o))return null;const{origin:n,forward:i}=It(o),a=new m(...r).sub(n);let c,l;switch(t){case"audio-ref-distance":c="audio.refDistance",l=Math.max(.01,ge(a.length()));break;case"audio-max-distance":c="audio.maxDistance",l=Math.max(o.getRefDistance()+.01,ge(a.length()));break;case"audio-inner-cone":case"audio-outer-cone":{c=t==="audio-inner-cone"?"audio.coneInnerAngle":"audio.coneOuterAngle";const d=a.dot(i),h=Math.sqrt(Math.max(0,a.lengthSq()-d*d));l=ge(C.radToDeg(Math.atan2(h,d))*2);break}default:return null}const u=Q(o,null,c,e);return u?{field:u,value:l}:null}function Fr(o,e){T(o,null,e.field,e.value)}const Br="#00e58a",jr="#c77dff",ae=.01,Xe=1e3;function E(o){return Math.round(o*Xe)/Xe}function Dr(o){return[o.x,o.y,o.z]}function kt(o){return{center:new m(...o.position),rotation:new Y(...o.rotation)}}function ce(o,e){const{center:t,rotation:r}=kt(o);return Dr(new m(...e).applyQuaternion(r).add(t))}function le(o,e){return`collider:${encodeURIComponent(o.sourceOid)}:${e}`}function Nr(o){const{snapshot:e}=o,t=e.sensor?jr:Br,r={color:t,writable:o.writable},n=[],i=[];switch(e.shape.type){case"cuboid":{const s=e.shape.halfExtents;n.push({kind:"box",center:e.position,rotation:e.rotation,halfExtents:s,color:t,opacity:.78});for(const[a,c]of[[0,"X"],[1,"Y"],[2,"Z"]])for(const l of[-1,1]){const u=[0,0,0];u[a]=s[a]*l,i.push({id:le(o,`${a}:${l}`),label:`${c} ${l>0?"positive":"negative"} half extent`,position:ce(e,u),...r})}break}case"ball":n.push({kind:"sphere",center:e.position,radius:e.shape.radius,color:t,opacity:.78}),i.push({id:le(o,"radius"),label:"Collider radius",position:ce(e,[e.shape.radius,0,0]),...r});break;case"capsule":n.push({kind:"capsule",center:e.position,rotation:e.rotation,radius:e.shape.radius,halfHeight:e.shape.halfHeight,color:t,opacity:.78}),i.push({id:le(o,"radius"),label:"Collider radius",position:ce(e,[e.shape.radius,0,0]),...r},{id:le(o,"half-height"),label:"Collider half height",position:ce(e,[0,e.shape.halfHeight+e.shape.radius,0]),...r});break}return{id:`collider:${o.sourceOid}`,category:"colliders",guides:n,handles:i}}function Wr(o){if(!o.startsWith("collider:"))return null;const e=o.slice(9),t=e.indexOf(":");if(t<1)return null;try{return{oid:decodeURIComponent(e.slice(0,t)),part:e.slice(t+1)}}catch{return null}}function _r(o){return o>1e-8?o:1}function Ze(o,e,t){const r=Wr(e),n=r?o.find(u=>u.sourceOid===r.oid):null;if(!n||!r||!n.writable)return null;const{center:i,rotation:s}=kt(n.snapshot),a=new m(...t).sub(i).applyQuaternion(s.clone().invert()),c=n.snapshot.shape,l=n.snapshot.scale.map(_r);if(c.type==="cuboid"&&/^[012]:(?:-1|1)$/.test(r.part)){const u=Number(r.part[0]),d=[...c.halfExtents];return d[u]=Math.max(ae,E(Math.abs(a.getComponent(u)))),{sourceOid:n.sourceOid,colliderId:n.snapshot.id,shape:{type:"cuboid",halfExtents:d},args:d.map((h,p)=>E(h/l[p]))}}if(c.type==="ball"&&r.part==="radius"){const u=Math.max(ae,E(a.length()));return{sourceOid:n.sourceOid,colliderId:n.snapshot.id,shape:{type:"ball",radius:u},args:[E(u/l[0])]}}if(c.type==="capsule"){if(r.part==="radius"){const u=Math.max(ae,E(Math.hypot(a.x,a.z)));return{sourceOid:n.sourceOid,colliderId:n.snapshot.id,shape:{...c,radius:u},args:[E(c.halfHeight/l[0]),E(u/l[1])]}}if(r.part==="half-height"){const u=Math.max(ae,E(Math.abs(a.y)-c.radius));return{sourceOid:n.sourceOid,colliderId:n.snapshot.id,shape:{...c,halfHeight:u},args:[E(u/l[0]),E(c.radius/l[1])]}}}return null}const we="#ffb020",Qe=1e3;function Re(o){return`${o.source.line}:${o.source.col}`}function Ye(o,e){return`joint:${Re(o)}:${e}`}function Hr(o){const e=o.snapshot,t=[{kind:"line",points:[e.worldAnchor1,e.worldAnchor2],color:we,opacity:.9}];if(e.worldAxis){const r=new m(...e.worldAnchor1),n=new m(...e.worldAxis).normalize();t.push({kind:"line",points:[[r.x-n.x,r.y-n.y,r.z-n.z],[r.x+n.x,r.y+n.y,r.z+n.z]],color:"#ffd166",opacity:.82,dashed:!0})}return{id:`joint:${Re(o)}`,category:"joints",guides:t,handles:[{id:Ye(o,0),label:"Joint anchor A",position:e.worldAnchor1,color:we,writable:o.writable},{id:Ye(o,1),label:"Joint anchor B",position:e.worldAnchor2,color:we,writable:o.writable}]}}function be(o){return Math.round(o*Qe)/Qe}function zr(o){const e=/^joint:(\d+:\d+):([01])$/.exec(o);return e?{key:e[1],endpoint:Number(e[2])}:null}function Jr(o,e){return o.source.hook==="useFixedJoint"&&e===1?2:e}function et(o,e,t){const r=zr(e),n=r?o.find(d=>Re(d)===r.key):void 0;if(!n||!r||!n.writable||!n.source.params)return null;const i=n.snapshot,s=r.endpoint===0?i.body1Position:i.body2Position,a=r.endpoint===0?i.body1Rotation:i.body2Rotation,c=new m(...t).sub(new m(...s)).applyQuaternion(new Y(...a).invert()),l=[be(c.x),be(c.y),be(c.z)],u=n.source.params.map(d=>Array.isArray(d)?[...d]:d);return u[Jr(n,r.endpoint)]=l,{binding:n,endpoint:r.endpoint,anchor:l,params:u}}const tt="#ffd166",rt="#ff9f43",nt=1e3;function V(o){return[o.x,o.y,o.z]}function it(o){return Math.round(o*nt)/nt}function At(o){o.updateWorldMatrix(!0,!1);const e=o.getWorldQuaternion(new Y);return{origin:o.getWorldPosition(new m),rangeAxis:new m(1,0,0).applyQuaternion(e).normalize()}}function Et(o){o.updateWorldMatrix(!0,!1),o.target.updateWorldMatrix(!0,!1);const e=o.getWorldPosition(new m),r=o.target.getWorldPosition(new m).sub(e).normalize();r.lengthSq()<1e-8&&r.set(0,0,-1).applyQuaternion(o.getWorldQuaternion(new Y));const n=Math.abs(r.y)>.98?new m(1,0,0):new m(0,1,0),i=new m().crossVectors(r,n).normalize();return{origin:e,direction:r,radial:i}}function Vr(o,e,t,r,n){return o.clone().addScaledVector(e,Math.cos(n)*r).addScaledVector(t,Math.sin(n)*r)}function Ur(o,e){const t=o;if(!t.isPointLight&&!t.isSpotLight)return null;const{origin:r,rangeAxis:n}=At(o),i=typeof t.distance=="number"?t.distance:0,s=[],a=[];if(i>0&&(s.push({kind:"sphere",center:V(r),radius:i,color:tt,opacity:.62}),a.push({id:"light-range",label:"Light range",position:V(r.clone().addScaledVector(n,i)),color:tt,writable:e("light.distance")})),t.isSpotLight){const c=o,{direction:l,radial:u}=Et(c),d=r.distanceTo(c.target.getWorldPosition(new m)),h=i>0?i:Math.max(1,d),p=C.radToDeg(c.angle*2);s.push({kind:"cone",origin:V(r),direction:V(l),length:h,angle:p,color:rt,opacity:.75}),a.push({id:"light-angle",label:"Spot angle",position:V(Vr(r,l,u,h,c.angle)),color:rt,writable:e("light.angle")})}return s.length>0||a.length>0?{id:"light",category:"lights",guides:s,handles:a}:null}function Kr(o,e,t,r){const n=o,i=new m(...r);let s,a;if(t==="light-range"&&(n.isPointLight||n.isSpotLight))s="light.distance",a=Math.max(.01,it(i.distanceTo(At(o).origin)));else if(t==="light-angle"&&n.isSpotLight){s="light.angle";const{origin:l,direction:u}=Et(o),d=i.sub(l),h=d.dot(u),p=Math.sqrt(Math.max(0,d.lengthSq()-h*h));a=it(Math.max(.01,Math.min(Math.PI/2,Math.atan2(p,h))))}else return null;const c=Q(o,null,s,e);return c?{field:c,value:a}:null}function qr(o,e){T(o,null,e.field,e.value)}function Gr(o){const e=(t,r,n)=>{const i=o.object(t);if(!i)return null;const s=o.sourceTag(t),a=Kr(i,s,r,n);if(a)return{field:a.field,value:a.value,preview:()=>qr(i,a)};const c=Lr(i,s,r,n);return c?{field:c.field,value:c.value,preview:()=>Fr(i,c)}:null};return{layers:t=>{const r=o.object(t);if(!r)return[];const n=i=>o.writable(t,i);return[...o.colliderBindings(t).map(Nr),...o.jointBindings(t).map(Hr),...o.particleBindings(t).map(Or),...o.lodBindings(t).map(mr),Ur(r,n),Mr(r,n)].filter(i=>i!==null)},preview:(t,r,n)=>{const i=Ze(o.colliderBindings(t),r,n);if(i){o.previewCollider(i.colliderId,i.shape);return}const s=et(o.jointBindings(t),r,n);if(s){o.previewJointAnchor(s.binding.snapshot.id,s.endpoint,s.anchor);return}const a=_e(o.particleBindings(t),r,n);if(a){vt(a);return}const c=je(o.lodBindings(t),r,n);if(c){yt(c);return}e(t,r,n)?.preview()},commit:(t,r,n)=>{const i=Ze(o.colliderBindings(t),r,n);if(i)return o.commitCollider(t,i.sourceOid,i.args);const s=et(o.jointBindings(t),r,n);if(s)return o.commitJoint(s.binding,s.params);const a=_e(o.particleBindings(t),r,n);if(a)return o.commitParticle(a.binding,a.field,a.value);const c=je(o.lodBindings(t),r,n);if(c)return o.commitLodDistance(c.binding,c.level,c.value);const l=e(t,r,n);if(!(!l||!o.writable(t,l.field.path)))return o.commit(t,l.field.path,l.value)}}}const Z=/^-?\d+(\.\d+)?$/,Xr=/^#[0-9a-fA-F]{3,8}$/,U=1e-6;function $(o){const e=o.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z])([A-Z][a-z])/g,"$1 $2").trim();return e?e[0].toUpperCase()+e.slice(1):o}const Zr=new Set(["key","ref","data-oid","userData-oid","children"]),Qr=o=>Zr.has(o)||/^on[A-Z]/.test(o)||o.startsWith("userData-")||o.startsWith("__volter"),Yr=new Set(["position","rotation","scale","name","visible"]),en=new Set;function ue(o){return o instanceof Error?o.message:String(o)}function F(o){const e=Math.round(o*1e4)/1e4;return Object.is(e,-0)?"0":String(e)}function K(o){return`[${o.map(F).join(", ")}]`}function ve(o){return o.replace(/^\.?\//,"")}function ot(o){return o.replace(/["\\]/g,"")}function tn(o){return(o.split("/").pop()??o).replace(Ct,"")||"Model"}function rn(o){if(!xe(o))return!1;const e=o.trim().slice(1,-1).split(",").map(t=>t.trim()).filter(t=>t!=="");return e.length===3&&e.every(t=>Z.test(t))}function Oe(o){return o.isCamera===!0&&_(o)!==void 0}function R(o){const e=o.material;return Array.isArray(e)?e[0]??null:e??null}const de="this session has no source-write backend",O="jsx.",he="wrap.",N="collider.",st="joint.",at="particle.",Se="lod.",I="scene.background.",W="scene.environment.",S="scene.fog.",ct={CuboidCollider:"cuboid",BallCollider:"ball",CapsuleCollider:"capsule"},nn={useFixedJoint:"fixed",useSphericalJoint:"spherical",useRevoluteJoint:"revolute",usePrismaticJoint:"prismatic",useRopeJoint:"rope",useSpringJoint:"spring"};function q(o){return!!o&&o.isColor===!0}function on(o){return!!o&&o.isTexture===!0}function L(o){return!!o&&o.isFog===!0}function G(o){return!!o&&o.isFogExp2===!0}function lt(o){return o&&typeof o=="object"?o:null}function sn(o){const e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(o.trim());if(!e)return null;const t=e[1].toLowerCase();return t.length===3?t.split("").map(r=>`${r}${r}`).join(""):t}function an(o){return Array.isArray(o)}function Tt(o,e,t,r,n){const i=Array.isArray(e),s=Array.isArray(t),a=an(r);if(i||s||a)return!i||!s||!a||e.length!==t.length||e.length!==r.length?!1:e.every((l,u)=>Tt(o,l,t[u],r[u],n));if(e===t)return!0;const c=o.slice(r.start,r.end);return(typeof e=="number"?Number(c)!==e:c!==String(e))?!1:(n.push({start:r.start,end:r.end,text:typeof t=="number"?F(t):t?"true":"false"}),!0)}function cn(o,e){const t=o.source.params?.[e];if(t!==void 0)return t;const r=o.source.hook,n=o.snapshot;if(e===0)return n.anchor1;if(e===(r==="useFixedJoint"?2:1))return n.anchor2;if(e===2&&(r==="useRevoluteJoint"||r==="usePrismaticJoint"))return n.axis;if(e===3&&n.limits)return[n.limits.min,n.limits.max]}function ln(o,e){return e===void 0?o:Array.isArray(o)?o[e]:void 0}const ut={group:`<group>
1
+ import{d as Mt,b as _,r as Lt,o as M,a as re,i as ne}from"./component-instance-root-Cw_-ajBX.js";import{e as Ie,b as Ft}from"./live-gesture-lock-DJbrjOqf.js";import{r as Bt,c as jt}from"./relative-import-specifier-DXWVQf0o.js";import{S as Dt,C as Nt,r as Wt}from"./three-projection-core-PQm-CO61.js";import{ec as _t,gz as Ht,kX as zt,kY as B,kZ as Jt,d3 as Vt,fd as Ut,bT as ie,bU as oe,du as j,Y as Pe,hb as ke,bV as Kt}from"./index-V4J7xfRg.js";import{w as qt}from"./inference-diagnostics-DoZQ1mpg.js";import{f as Gt,d as Xt,e as Ae,g as Zt,h as Qt,j as Yt,k as er,l as Ee,m as tr,n as rr}from"./instance-fork-actions-D3sRzS3K.js";import{c as nr,T as ir,n as or}from"./three-BQfhEwUz.js";import{l as H}from"./oid-transform-DQzN_Gl_.js";import{c as sr,b as ar}from"./r3f-physics-binding-DZSIB0d_.js";import{f as fe,a as Te,i as xe,b as cr,o as lr}from"./writer-tw6EcuVO.js";import{isEditorOwnedObject as me}from"./editor-layers-CjeYrUlm.js";import{object3DAuthoringSubjectOf as Ce}from"./object3d-authoring-subject-XccsO0xG.js";import{getUserData as ye}from"./user-data-CODoGZqA.js";import"./three.module-BLhyNg0e.js";import{cj as C,fo as m,eX as ur,ej as dr,cO as hr,dp as Y,I as Me}from"./three.core-3arARmh6.js";import"./user-data-CifDDvSr.js";import"./workspace-arrangement-B_OcbQbj.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./entity-object-V13bGmay.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./object-marks-BnvSuCTt.js";function pr(o){return`${o.code}|${o.file}|${o.line}|${o.col}`}function fr(...o){const e=new Set,t=[];for(const r of o)for(const n of r?.diagnostics??[]){const i=pr(n);e.has(i)||(e.add(i),t.push(n))}return t}const Le=["#7dd3fc","#60a5fa","#818cf8","#a78bfa","#c084fc"],Fe=1e3;function ft(o){return o.lod.updateWorldMatrix(!0,!1),o.lod.getWorldPosition(new m)}function Be(o){return Le[o%Le.length]}function mr(o){const e=ft(o),t=[],r=[];return o.lod.levels.forEach((n,i)=>{!Number.isFinite(n.distance)||n.distance<=0||(t.push({kind:"sphere",center:[e.x,e.y,e.z],radius:n.distance,color:Be(i),opacity:.56}),r.push({id:`lod:${encodeURIComponent(o.key)}:${i}`,label:`LOD ${i} distance`,position:[e.x+n.distance,e.y,e.z],color:Be(i),writable:o.writableDistances.has(i)}))}),{id:`lod:${o.key}`,category:"lod",guides:t,handles:r}}function yr(o){return Math.round(o*Fe)/Fe}function mt(o,e,t){const r=o.lod.levels[e-1]?.distance,n=o.lod.levels[e+1]?.distance,i=r===void 0?0:r+.01,s=n===void 0?Number.POSITIVE_INFINITY:Math.max(i,n-.01);return yr(C.clamp(t,i,s))}function je(o,e,t){const r=/^lod:([^:]+):(\d+)$/.exec(e);if(!r)return null;const n=decodeURIComponent(r[1]),i=Number(r[2]),s=o.find(c=>c.key===n);if(!s||!s.writableDistances.has(i))return null;const a=new m(...t).distanceTo(ft(s));return{binding:s,level:i,value:mt(s,i,a)}}function yt(o){const e=o.binding.lod.levels[o.level];e&&(e.distance=o.value)}const gt="#ff9f43",gr="#ffd166",De=1e3;function wr(o){const e=o.system?.emitterShape;return e&&typeof e.type=="string"?e:null}function $e(o){return encodeURIComponent(o.sourceOid)}function wt(o){return[o.x,o.y,o.z]}function br(o,e){return o.emitter.updateWorldMatrix(!0,!1),wt(e.clone().applyMatrix4(o.emitter.matrixWorld))}function b(o,e,t=.72){o.emitter.updateWorldMatrix(!0,!1);const r=o.emitter.matrixWorld;return{kind:"line",points:e.map(n=>wt(n.clone().applyMatrix4(r))),color:gt,opacity:t}}function k(o,e="xy",t=48,r=Math.PI*2){const n=[];for(let i=0;i<=t;i+=1){const s=i/t*r,a=Math.cos(s)*o,c=Math.sin(s)*o;n.push(e==="xy"?new m(a,c,0):e==="xz"?new m(a,0,c):new m(0,a,c))}return n}function Ne(o,e){return o.map(t=>t.clone().applyAxisAngle(new m(0,0,1),e))}function We(o,e,t=24){const r=[];for(let n=0;n<=t;n+=1){const i=n/t*Math.PI,s=Math.cos(i)*o,a=Math.sin(i)*o;r.push(new m(s,0,a))}return r}function P(o,e,t){const r=o[e];return typeof r=="number"&&Number.isFinite(r)?r:t}function vr(o){const e=o.shape,t=P(e,"radius",10),r=C.clamp(P(e,"arc",Math.PI*2),0,Math.PI*2),n=Math.abs(r-Math.PI*2)<.001;switch(e.type){case"point":return[b(o,[new m(-.2,0,0),new m(.2,0,0)]),b(o,[new m(0,-.2,0),new m(0,.2,0)]),b(o,[new m(0,0,-.2),new m(0,0,.2)])];case"sphere":return[b(o,k(t,"xy",48,r)),b(o,k(t,"xz"),.5),b(o,Ne(k(t,"xz"),n?Math.PI/2:r),.5)];case"hemisphere":return[b(o,k(t,"xy",48,r)),b(o,We(t),.55),b(o,Ne(We(t),n?Math.PI/2:r),.55)];case"cone":{const i=P(e,"angle",Math.PI/6),s=Math.max(t,1),a=[b(o,k(t,"xy",48,r))],c=n?[0,Math.PI/2,Math.PI,3*Math.PI/2]:[0,r/3,r*2/3,r];for(const l of c){const u=new m(Math.cos(l)*t,Math.sin(l)*t,0),d=u.clone().add(new m(Math.cos(l)*Math.sin(i),Math.sin(l)*Math.sin(i),Math.cos(i)).multiplyScalar(s));a.push(b(o,[u,d],.58))}return a}case"circle":return[b(o,k(t,"xy",48,r))];case"donut":{const i=P(e,"donutRadius",t*.2);return[b(o,k(Math.max(0,t-i),"xy",48,r),.45),b(o,k(t,"xy",48,r)),b(o,k(t+i,"xy",48,r),.45),b(o,k(i,"xz").map(s=>s.add(new m(t,0,0))),.45)]}case"rectangle":case"grid":{const i=P(e,"width",e.type==="grid"?1:10),s=P(e,"height",e.type==="grid"?1:10),a=i/2,c=s/2,l=[b(o,[new m(-a,-c,0),new m(a,-c,0),new m(a,c,0),new m(-a,c,0),new m(-a,-c,0)])];if(e.type==="grid"){const u=Math.min(16,Math.max(1,Math.round(P(e,"column",10)))),d=Math.min(16,Math.max(1,Math.round(P(e,"row",10))));for(let h=1;h<u;h+=1){const p=-a+h/u*i;l.push(b(o,[new m(p,-c,0),new m(p,c,0)],.24))}for(let h=1;h<d;h+=1){const p=-c+h/d*s;l.push(b(o,[new m(-a,p,0),new m(a,p,0)],.24))}}return l}}}function z(o,e,t,r){return{id:`particle:${$e(o)}:${e}`,label:t,position:br(o,r),color:e==="angle"?gr:gt,writable:o.writableFields.has(e)}}function Or(o){const e=o.shape,t=P(e,"radius",10),r=[];if(["sphere","hemisphere","cone","circle","donut"].includes(e.type)&&r.push(z(o,"radius","Emitter radius",new m(t,0,0))),e.type==="cone"){const n=P(e,"angle",Math.PI/6),i=Math.max(t,1);r.push(z(o,"angle","Cone angle",new m(t+Math.sin(n)*i,0,Math.cos(n)*i)))}return e.type==="donut"&&r.push(z(o,"donutRadius","Donut tube radius",new m(t,0,P(e,"donutRadius",t*.2)))),(e.type==="rectangle"||e.type==="grid")&&r.push(z(o,"width","Emitter width",new m(P(e,"width",1)/2,0,0)),z(o,"height","Emitter height",new m(0,P(e,"height",1)/2,0))),{id:`particle:${$e(o)}`,category:"particles",guides:vr(o),handles:r}}function se(o){return Math.round(o*De)/De}function bt(o,e){return o==="angle"?se(C.clamp(e,.01,Math.PI/2-.01)):o==="arc"?se(C.clamp(e,0,Math.PI*2)):o==="thickness"?se(C.clamp(e,0,1)):o==="column"||o==="row"?Math.max(1,Math.round(e)):se(Math.max(.01,e))}function Sr(o,e){return bt(o,e)}function _e(o,e,t){const r=/^particle:([^:]+):(radius|angle|donutRadius|width|height)$/.exec(e),n=r?o.find(l=>$e(l)===r[1]):void 0,i=r?.[2];if(!n||!i||!n.writableFields.has(i))return null;n.emitter.updateWorldMatrix(!0,!1);const s=n.emitter.worldToLocal(new m(...t)),a=P(n.shape,"radius",10);let c;return i==="radius"?c=n.shape.type==="sphere"||n.shape.type==="hemisphere"?s.length():Math.hypot(s.x,s.y):i==="angle"?c=Math.atan2(Math.max(0,Math.hypot(s.x,s.y)-a),Math.abs(s.z)||.001):i==="donutRadius"?c=Math.abs(s.z):i==="width"?c=Math.abs(s.x)*2:c=Math.abs(s.y)*2,{binding:n,field:i,value:bt(i,c)}}function vt(o){o.binding.shape[o.field]=o.value}const Ot={Light:"light",Material:"material",Camera:"camera",Audio:"audio"};function y(o,e,t,r,n,i=`${Ot[o]}.${t}`,s){return{prop:t,label:r,type:n,group:o,target:e,path:i,...s?{options:s}:{}}}function D(o,e,t){return{prop:o,label:e,type:"asset",group:"Material",target:"material",path:`${Ot.Material}.${o}`,colorSpace:t}}const Pr=[D("map","Base Color Map","srgb"),D("normalMap","Normal Map","linear"),D("roughnessMap","Roughness Map","linear"),D("metalnessMap","Metalness Map","linear"),D("emissiveMap","Emissive Map","srgb"),D("aoMap","Ambient Occlusion Map","linear")];function xr(o){const e=o;return e&&e.isColor?`#${e.getHexString()}`:void 0}const St="volterAssetPath",He=new WeakSet,$r=new ur;function Pt(o){const e=o;if(!e||!e.isTexture)return"";const t=e.userData?.[St];if(typeof t=="string"&&t)return t;if(e.name)return e.name;const r=e.image?.src;return typeof r=="string"?r:""}function Rr(o){return/^(?:[a-z]+:|\/)/i.test(o)?o:`/${o}`}function Ir(o,e,t){if(!o)return null;const r=o,n=r[e.prop],i=t==null?"":String(t);if(n&&He.has(n)&&Pt(n)!==i&&n.dispose(),!i)return r[e.prop]=null,o.needsUpdate=!0,"";const s=$r.load(Rr(i));return s.colorSpace=e.colorSpace==="srgb"?dr:hr,s.userData[St]=i,s.name=i,He.add(s),r[e.prop]=s,o.needsUpdate=!0,i}function kr(o){const e=o,t=[y("Light","self","color","Color","color"),y("Light","self","intensity","Intensity","number")];return(e.isPointLight||e.isSpotLight)&&t.push(y("Light","self","distance","Distance","number"),y("Light","self","decay","Decay","number")),e.isSpotLight&&t.push(y("Light","self","angle","Angle","number"),y("Light","self","penumbra","Penumbra","number")),t}function xt(o){const e=o;return e.isDirectionalLight||e.isPointLight||e.isSpotLight?y("Light","self","castShadow","Cast Shadow","boolean","shadow.cast"):void 0}function Ar(o){const e=o,t=[];e.color?.isColor&&t.push(y("Material","material","color","Color","color")),typeof e.roughness=="number"&&t.push(y("Material","material","roughness","Roughness","number")),typeof e.metalness=="number"&&t.push(y("Material","material","metalness","Metalness","number")),e.emissive?.isColor&&t.push(y("Material","material","emissive","Emissive","color")),t.push(y("Material","material","opacity","Opacity","number"),y("Material","material","transparent","Transparent","boolean")),typeof e.wireframe=="boolean"&&t.push(y("Material","material","wireframe","Wireframe","boolean"));const r=o;for(const n of Pr)n.prop in r&&t.push(n);return t}function Er(o){const e=o;return e.isPerspectiveCamera?[y("Camera","self","fov","FOV","number"),y("Camera","self","near","Near","number"),y("Camera","self","far","Far","number"),y("Camera","self","zoom","Zoom","number")]:e.isOrthographicCamera?[y("Camera","self","zoom","Zoom","number"),y("Camera","self","near","Near","number"),y("Camera","self","far","Far","number"),y("Camera","self","left","Left","number"),y("Camera","self","right","Right","number"),y("Camera","self","top","Top","number"),y("Camera","self","bottom","Bottom","number")]:[]}function ee(o){const e=o;return typeof e.getRefDistance=="function"&&typeof e.setRefDistance=="function"&&!!e.panner}function Tr(o="PositionalAudio"){return[y("Audio","self",o==="PositionalAudio"?"distance":"panner-refDistance","Reference Distance","number","audio.refDistance"),y("Audio","self","panner-distanceModel","Distance Model","enum","audio.distanceModel",["inverse","linear","exponential"]),y("Audio","self","panner-rolloffFactor","Rolloff","number","audio.rolloffFactor"),y("Audio","self","panner-maxDistance","Maximum Distance","number","audio.maxDistance"),y("Audio","self","panner-coneInnerAngle","Inner Cone","number","audio.coneInnerAngle"),y("Audio","self","panner-coneOuterAngle","Outer Cone","number","audio.coneOuterAngle"),y("Audio","self","panner-coneOuterGain","Outside Gain","number","audio.coneOuterGain")]}function $t(o,e,t){const r=o,n=[];return r.isLight&&n.push(...kr(o)),r.isCamera&&n.push(...Er(o)),ee(o)&&n.push(...Tr(t)),e&&n.push(...Ar(e)),n}function Q(o,e,t,r){const n=xt(o);return $t(o,e,r).find(i=>i.path===t)??(n?.path===t?n:void 0)}function Rt(o,e,t){return t.target==="material"?e:o}function J(o,e,t){if(t.group==="Audio"&&ee(o)){const i=o.panner;switch(t.path){case"audio.refDistance":return o.getRefDistance();case"audio.distanceModel":return o.getDistanceModel();case"audio.rolloffFactor":return o.getRolloffFactor();case"audio.maxDistance":return o.getMaxDistance();case"audio.coneInnerAngle":return i.coneInnerAngle;case"audio.coneOuterAngle":return i.coneOuterAngle;case"audio.coneOuterGain":return i.coneOuterGain}}const r=Rt(o,e,t);if(!r)return;const n=r[t.prop];return t.type==="color"?xr(n):t.type==="asset"?Pt(n):n}function Cr(o,e,t){if(e.path==="audio.distanceModel"){const n=String(t);return n!=="inverse"&&n!=="linear"&&n!=="exponential"?null:(o.setDistanceModel(n),n)}const r=Number(t);if(!Number.isFinite(r))return null;switch(e.path){case"audio.refDistance":return o.setRefDistance(Math.max(.01,r)),Math.max(.01,r);case"audio.rolloffFactor":return o.setRolloffFactor(Math.max(0,r)),Math.max(0,r);case"audio.maxDistance":return o.setMaxDistance(Math.max(o.getRefDistance()+.01,r)),Math.max(o.getRefDistance()+.01,r);case"audio.coneInnerAngle":{const n=Math.max(0,Math.min(o.panner.coneOuterAngle,r));return o.setDirectionalCone(n,o.panner.coneOuterAngle,o.panner.coneOuterGain),n}case"audio.coneOuterAngle":{const n=Math.max(o.panner.coneInnerAngle,Math.min(360,r));return o.setDirectionalCone(o.panner.coneInnerAngle,n,o.panner.coneOuterGain),n}case"audio.coneOuterGain":{const n=Math.max(0,Math.min(1,r));return o.setDirectionalCone(o.panner.coneInnerAngle,o.panner.coneOuterAngle,n),n}default:return null}}function T(o,e,t,r){if(t.group==="Audio"&&ee(o))return Cr(o,t,r);if(t.type==="asset")return Ir(e,t,r);const n=Rt(o,e,t);if(!n)return null;if(t.type==="color"){const s=String(r);return n[t.prop]?.set(s),s}if(t.type==="boolean"){const s=!!r;return n[t.prop]=s,ze(o,e,t),s}const i=Number(r);return Number.isFinite(i)?(n[t.prop]=i,ze(o,e,t),i):null}function ze(o,e,t){t.group==="Camera"&&o.updateProjectionMatrix?.(),t.target==="material"&&e&&(t.prop==="transparent"||t.prop==="wireframe")&&(e.needsUpdate=!0)}const Je="#42c8ff",Ve="#287fb8",Ue="#ffd166",Ke="#ff9f43",qe=100;function A(o){return[o.x,o.y,o.z]}function It(o){o.updateWorldMatrix(!0,!1);const e=o.getWorldPosition(new m),t=o.getWorldQuaternion(new Y);return{origin:e,forward:new m(0,0,1).applyQuaternion(t).normalize(),right:new m(1,0,0).applyQuaternion(t).normalize()}}function Ge(o,e,t,r,n){const i=C.degToRad(n/2);return o.clone().addScaledVector(e,Math.cos(i)*r).addScaledVector(t,Math.sin(i)*r)}function Mr(o,e){if(!ee(o))return null;const{origin:t,forward:r,right:n}=It(o),i=o.getRefDistance(),s=o.getMaxDistance(),a=o.getDistanceModel(),c=o.panner.coneInnerAngle,l=o.panner.coneOuterAngle,u=l<359.5,d=Math.max(1,Math.min(8,i*2.5)),h=[{kind:"sphere",center:A(t),radius:i,color:Je,opacity:.75}],p=[{id:"audio-ref-distance",label:"Reference distance",position:A(t.clone().addScaledVector(n,i)),color:Je,writable:e("audio.refDistance")}];return a==="linear"&&(h.push({kind:"sphere",center:A(t),radius:s,color:Ve,opacity:.42,dashed:!0}),p.push({id:"audio-max-distance",label:"Maximum distance",position:A(t.clone().addScaledVector(n,s)),color:Ve,writable:e("audio.maxDistance")})),u&&(h.push({kind:"cone",origin:A(t),direction:A(r),length:d,angle:l,color:Ke,opacity:.72}),p.push({id:"audio-outer-cone",label:"Outer cone angle",position:A(Ge(t,r,n,d,l)),color:Ke,writable:e("audio.coneOuterAngle")}),c<359.5&&(h.push({kind:"cone",origin:A(t),direction:A(r),length:d,angle:c,color:Ue,opacity:.58,dashed:!0}),p.push({id:"audio-inner-cone",label:"Inner cone angle",position:A(Ge(t,r,n,d,c)),color:Ue,writable:e("audio.coneInnerAngle")}))),{id:"positional-audio",category:"audio",guides:h,handles:p}}function ge(o){return Math.round(o*qe)/qe}function Lr(o,e,t,r){if(!ee(o))return null;const{origin:n,forward:i}=It(o),a=new m(...r).sub(n);let c,l;switch(t){case"audio-ref-distance":c="audio.refDistance",l=Math.max(.01,ge(a.length()));break;case"audio-max-distance":c="audio.maxDistance",l=Math.max(o.getRefDistance()+.01,ge(a.length()));break;case"audio-inner-cone":case"audio-outer-cone":{c=t==="audio-inner-cone"?"audio.coneInnerAngle":"audio.coneOuterAngle";const d=a.dot(i),h=Math.sqrt(Math.max(0,a.lengthSq()-d*d));l=ge(C.radToDeg(Math.atan2(h,d))*2);break}default:return null}const u=Q(o,null,c,e);return u?{field:u,value:l}:null}function Fr(o,e){T(o,null,e.field,e.value)}const Br="#00e58a",jr="#c77dff",ae=.01,Xe=1e3;function E(o){return Math.round(o*Xe)/Xe}function Dr(o){return[o.x,o.y,o.z]}function kt(o){return{center:new m(...o.position),rotation:new Y(...o.rotation)}}function ce(o,e){const{center:t,rotation:r}=kt(o);return Dr(new m(...e).applyQuaternion(r).add(t))}function le(o,e){return`collider:${encodeURIComponent(o.sourceOid)}:${e}`}function Nr(o){const{snapshot:e}=o,t=e.sensor?jr:Br,r={color:t,writable:o.writable},n=[],i=[];switch(e.shape.type){case"cuboid":{const s=e.shape.halfExtents;n.push({kind:"box",center:e.position,rotation:e.rotation,halfExtents:s,color:t,opacity:.78});for(const[a,c]of[[0,"X"],[1,"Y"],[2,"Z"]])for(const l of[-1,1]){const u=[0,0,0];u[a]=s[a]*l,i.push({id:le(o,`${a}:${l}`),label:`${c} ${l>0?"positive":"negative"} half extent`,position:ce(e,u),...r})}break}case"ball":n.push({kind:"sphere",center:e.position,radius:e.shape.radius,color:t,opacity:.78}),i.push({id:le(o,"radius"),label:"Collider radius",position:ce(e,[e.shape.radius,0,0]),...r});break;case"capsule":n.push({kind:"capsule",center:e.position,rotation:e.rotation,radius:e.shape.radius,halfHeight:e.shape.halfHeight,color:t,opacity:.78}),i.push({id:le(o,"radius"),label:"Collider radius",position:ce(e,[e.shape.radius,0,0]),...r},{id:le(o,"half-height"),label:"Collider half height",position:ce(e,[0,e.shape.halfHeight+e.shape.radius,0]),...r});break}return{id:`collider:${o.sourceOid}`,category:"colliders",guides:n,handles:i}}function Wr(o){if(!o.startsWith("collider:"))return null;const e=o.slice(9),t=e.indexOf(":");if(t<1)return null;try{return{oid:decodeURIComponent(e.slice(0,t)),part:e.slice(t+1)}}catch{return null}}function _r(o){return o>1e-8?o:1}function Ze(o,e,t){const r=Wr(e),n=r?o.find(u=>u.sourceOid===r.oid):null;if(!n||!r||!n.writable)return null;const{center:i,rotation:s}=kt(n.snapshot),a=new m(...t).sub(i).applyQuaternion(s.clone().invert()),c=n.snapshot.shape,l=n.snapshot.scale.map(_r);if(c.type==="cuboid"&&/^[012]:(?:-1|1)$/.test(r.part)){const u=Number(r.part[0]),d=[...c.halfExtents];return d[u]=Math.max(ae,E(Math.abs(a.getComponent(u)))),{sourceOid:n.sourceOid,colliderId:n.snapshot.id,shape:{type:"cuboid",halfExtents:d},args:d.map((h,p)=>E(h/l[p]))}}if(c.type==="ball"&&r.part==="radius"){const u=Math.max(ae,E(a.length()));return{sourceOid:n.sourceOid,colliderId:n.snapshot.id,shape:{type:"ball",radius:u},args:[E(u/l[0])]}}if(c.type==="capsule"){if(r.part==="radius"){const u=Math.max(ae,E(Math.hypot(a.x,a.z)));return{sourceOid:n.sourceOid,colliderId:n.snapshot.id,shape:{...c,radius:u},args:[E(c.halfHeight/l[0]),E(u/l[1])]}}if(r.part==="half-height"){const u=Math.max(ae,E(Math.abs(a.y)-c.radius));return{sourceOid:n.sourceOid,colliderId:n.snapshot.id,shape:{...c,halfHeight:u},args:[E(u/l[0]),E(c.radius/l[1])]}}}return null}const we="#ffb020",Qe=1e3;function Re(o){return`${o.source.line}:${o.source.col}`}function Ye(o,e){return`joint:${Re(o)}:${e}`}function Hr(o){const e=o.snapshot,t=[{kind:"line",points:[e.worldAnchor1,e.worldAnchor2],color:we,opacity:.9}];if(e.worldAxis){const r=new m(...e.worldAnchor1),n=new m(...e.worldAxis).normalize();t.push({kind:"line",points:[[r.x-n.x,r.y-n.y,r.z-n.z],[r.x+n.x,r.y+n.y,r.z+n.z]],color:"#ffd166",opacity:.82,dashed:!0})}return{id:`joint:${Re(o)}`,category:"joints",guides:t,handles:[{id:Ye(o,0),label:"Joint anchor A",position:e.worldAnchor1,color:we,writable:o.writable},{id:Ye(o,1),label:"Joint anchor B",position:e.worldAnchor2,color:we,writable:o.writable}]}}function be(o){return Math.round(o*Qe)/Qe}function zr(o){const e=/^joint:(\d+:\d+):([01])$/.exec(o);return e?{key:e[1],endpoint:Number(e[2])}:null}function Jr(o,e){return o.source.hook==="useFixedJoint"&&e===1?2:e}function et(o,e,t){const r=zr(e),n=r?o.find(d=>Re(d)===r.key):void 0;if(!n||!r||!n.writable||!n.source.params)return null;const i=n.snapshot,s=r.endpoint===0?i.body1Position:i.body2Position,a=r.endpoint===0?i.body1Rotation:i.body2Rotation,c=new m(...t).sub(new m(...s)).applyQuaternion(new Y(...a).invert()),l=[be(c.x),be(c.y),be(c.z)],u=n.source.params.map(d=>Array.isArray(d)?[...d]:d);return u[Jr(n,r.endpoint)]=l,{binding:n,endpoint:r.endpoint,anchor:l,params:u}}const tt="#ffd166",rt="#ff9f43",nt=1e3;function V(o){return[o.x,o.y,o.z]}function it(o){return Math.round(o*nt)/nt}function At(o){o.updateWorldMatrix(!0,!1);const e=o.getWorldQuaternion(new Y);return{origin:o.getWorldPosition(new m),rangeAxis:new m(1,0,0).applyQuaternion(e).normalize()}}function Et(o){o.updateWorldMatrix(!0,!1),o.target.updateWorldMatrix(!0,!1);const e=o.getWorldPosition(new m),r=o.target.getWorldPosition(new m).sub(e).normalize();r.lengthSq()<1e-8&&r.set(0,0,-1).applyQuaternion(o.getWorldQuaternion(new Y));const n=Math.abs(r.y)>.98?new m(1,0,0):new m(0,1,0),i=new m().crossVectors(r,n).normalize();return{origin:e,direction:r,radial:i}}function Vr(o,e,t,r,n){return o.clone().addScaledVector(e,Math.cos(n)*r).addScaledVector(t,Math.sin(n)*r)}function Ur(o,e){const t=o;if(!t.isPointLight&&!t.isSpotLight)return null;const{origin:r,rangeAxis:n}=At(o),i=typeof t.distance=="number"?t.distance:0,s=[],a=[];if(i>0&&(s.push({kind:"sphere",center:V(r),radius:i,color:tt,opacity:.62}),a.push({id:"light-range",label:"Light range",position:V(r.clone().addScaledVector(n,i)),color:tt,writable:e("light.distance")})),t.isSpotLight){const c=o,{direction:l,radial:u}=Et(c),d=r.distanceTo(c.target.getWorldPosition(new m)),h=i>0?i:Math.max(1,d),p=C.radToDeg(c.angle*2);s.push({kind:"cone",origin:V(r),direction:V(l),length:h,angle:p,color:rt,opacity:.75}),a.push({id:"light-angle",label:"Spot angle",position:V(Vr(r,l,u,h,c.angle)),color:rt,writable:e("light.angle")})}return s.length>0||a.length>0?{id:"light",category:"lights",guides:s,handles:a}:null}function Kr(o,e,t,r){const n=o,i=new m(...r);let s,a;if(t==="light-range"&&(n.isPointLight||n.isSpotLight))s="light.distance",a=Math.max(.01,it(i.distanceTo(At(o).origin)));else if(t==="light-angle"&&n.isSpotLight){s="light.angle";const{origin:l,direction:u}=Et(o),d=i.sub(l),h=d.dot(u),p=Math.sqrt(Math.max(0,d.lengthSq()-h*h));a=it(Math.max(.01,Math.min(Math.PI/2,Math.atan2(p,h))))}else return null;const c=Q(o,null,s,e);return c?{field:c,value:a}:null}function qr(o,e){T(o,null,e.field,e.value)}function Gr(o){const e=(t,r,n)=>{const i=o.object(t);if(!i)return null;const s=o.sourceTag(t),a=Kr(i,s,r,n);if(a)return{field:a.field,value:a.value,preview:()=>qr(i,a)};const c=Lr(i,s,r,n);return c?{field:c.field,value:c.value,preview:()=>Fr(i,c)}:null};return{layers:t=>{const r=o.object(t);if(!r)return[];const n=i=>o.writable(t,i);return[...o.colliderBindings(t).map(Nr),...o.jointBindings(t).map(Hr),...o.particleBindings(t).map(Or),...o.lodBindings(t).map(mr),Ur(r,n),Mr(r,n)].filter(i=>i!==null)},preview:(t,r,n)=>{const i=Ze(o.colliderBindings(t),r,n);if(i){o.previewCollider(i.colliderId,i.shape);return}const s=et(o.jointBindings(t),r,n);if(s){o.previewJointAnchor(s.binding.snapshot.id,s.endpoint,s.anchor);return}const a=_e(o.particleBindings(t),r,n);if(a){vt(a);return}const c=je(o.lodBindings(t),r,n);if(c){yt(c);return}e(t,r,n)?.preview()},commit:(t,r,n)=>{const i=Ze(o.colliderBindings(t),r,n);if(i)return o.commitCollider(t,i.sourceOid,i.args);const s=et(o.jointBindings(t),r,n);if(s)return o.commitJoint(s.binding,s.params);const a=_e(o.particleBindings(t),r,n);if(a)return o.commitParticle(a.binding,a.field,a.value);const c=je(o.lodBindings(t),r,n);if(c)return o.commitLodDistance(c.binding,c.level,c.value);const l=e(t,r,n);if(!(!l||!o.writable(t,l.field.path)))return o.commit(t,l.field.path,l.value)}}}const Z=/^-?\d+(\.\d+)?$/,Xr=/^#[0-9a-fA-F]{3,8}$/,U=1e-6;function $(o){const e=o.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z])([A-Z][a-z])/g,"$1 $2").trim();return e?e[0].toUpperCase()+e.slice(1):o}const Zr=new Set(["key","ref","data-oid","userData-oid","children"]),Qr=o=>Zr.has(o)||/^on[A-Z]/.test(o)||o.startsWith("userData-")||o.startsWith("__volter"),Yr=new Set(["position","rotation","scale","name","visible"]),en=new Set;function ue(o){return o instanceof Error?o.message:String(o)}function F(o){const e=Math.round(o*1e4)/1e4;return Object.is(e,-0)?"0":String(e)}function K(o){return`[${o.map(F).join(", ")}]`}function ve(o){return o.replace(/^\.?\//,"")}function ot(o){return o.replace(/["\\]/g,"")}function tn(o){return(o.split("/").pop()??o).replace(Ct,"")||"Model"}function rn(o){if(!xe(o))return!1;const e=o.trim().slice(1,-1).split(",").map(t=>t.trim()).filter(t=>t!=="");return e.length===3&&e.every(t=>Z.test(t))}function Oe(o){return o.isCamera===!0&&_(o)!==void 0}function R(o){const e=o.material;return Array.isArray(e)?e[0]??null:e??null}const de="this session has no source-write backend",O="jsx.",he="wrap.",N="collider.",st="joint.",at="particle.",Se="lod.",I="scene.background.",W="scene.environment.",S="scene.fog.",ct={CuboidCollider:"cuboid",BallCollider:"ball",CapsuleCollider:"capsule"},nn={useFixedJoint:"fixed",useSphericalJoint:"spherical",useRevoluteJoint:"revolute",usePrismaticJoint:"prismatic",useRopeJoint:"rope",useSpringJoint:"spring"};function q(o){return!!o&&o.isColor===!0}function on(o){return!!o&&o.isTexture===!0}function L(o){return!!o&&o.isFog===!0}function G(o){return!!o&&o.isFogExp2===!0}function lt(o){return o&&typeof o=="object"?o:null}function sn(o){const e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(o.trim());if(!e)return null;const t=e[1].toLowerCase();return t.length===3?t.split("").map(r=>`${r}${r}`).join(""):t}function an(o){return Array.isArray(o)}function Tt(o,e,t,r,n){const i=Array.isArray(e),s=Array.isArray(t),a=an(r);if(i||s||a)return!i||!s||!a||e.length!==t.length||e.length!==r.length?!1:e.every((l,u)=>Tt(o,l,t[u],r[u],n));if(e===t)return!0;const c=o.slice(r.start,r.end);return(typeof e=="number"?Number(c)!==e:c!==String(e))?!1:(n.push({start:r.start,end:r.end,text:typeof t=="number"?F(t):t?"true":"false"}),!0)}function cn(o,e){const t=o.source.params?.[e];if(t!==void 0)return t;const r=o.source.hook,n=o.snapshot;if(e===0)return n.anchor1;if(e===(r==="useFixedJoint"?2:1))return n.anchor2;if(e===2&&(r==="useRevoluteJoint"||r==="usePrismaticJoint"))return n.axis;if(e===3&&n.limits)return[n.limits.min,n.limits.max]}function ln(o,e){return e===void 0?o:Array.isArray(o)?o[e]:void 0}const ut={group:`<group>
2
2
  </group>`,mesh:`<mesh position={[0, 0, 0]}>
3
3
  <boxGeometry />
4
4
  <meshStandardMaterial color="#8888ff" />
@@ -1 +1 @@
1
- import{cA as L}from"./index-flxMlfV4.js";const Y=.1,w=4,x=.02,X=32,b=.002,P=4;function g(t,o,i){return o===1?t*16:o===2?t*i:t}function D(t,o){let i=g(o.deltaX,o.deltaMode,o.bounds.width),s=g(o.deltaY,o.deltaMode,o.bounds.height);if(o.ctrlKey||o.metaKey){const n=Math.min(w,Math.max(Y,t.zoom*Math.exp(-s*b))),a=o.clientX-o.bounds.left,d=o.clientY-o.bounds.top,c=(a-t.x)/t.zoom,u=(d-t.y)/t.zoom;return{x:a-c*n,y:d-u*n,zoom:n}}return o.shiftKey&&i===0&&(i=s,s=0),{x:t.x-i,y:t.y-s,zoom:t.zoom}}function I(t,o){const i=g(o.deltaY,o.deltaMode,o.bounds.height),s=Math.min(X,Math.max(x,t.zoom*Math.exp(-i*b))),n=o.clientX-o.bounds.left,a=o.clientY-o.bounds.top,d=(n-t.x)/t.zoom,c=(a-t.y)/t.zoom;return{x:n-d*s,y:a-c*s,zoom:s}}function p(t){return t instanceof Element&&t.closest('[data-volter-canvas-navigation-ignore="true"]')!==null}function C(t,o,i,s={}){let n=null,a=!1,d="";const c=()=>t.querySelector('[data-testid="world-selection-overlay-interaction"]'),u=e=>{t.dataset.canvasPanning=e?"true":"false",t.style.cursor=e?"grabbing":"";const r=c();r&&(e?(d=r.style.cursor,r.style.cursor="grabbing"):r.style.cursor=d)},m=e=>{if(!n||e.pointerId!==n.pointerId)return;const r=n.button===1?4:2;if((e.buttons&r)===0){l(e);return}const f=e.clientX-n.startClientX,v=e.clientY-n.startClientY;if(!n.moved){if(Math.hypot(f,v)<=P)return;n.moved=!0,u(!0)}o.setPan(n.startPan.x+f,n.startPan.y+v)},l=e=>{if(!n||e.pointerId!==n.pointerId)return;const r=n.pointerId;n.button===2&&n.moved&&(a=!0),n=null,u(!1),t.hasPointerCapture?.(r)&&t.releasePointerCapture(r),window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)},h=e=>{const r=e.button===1,f=s.rightDragPans===!0&&e.button===2;!r&&!f||p(e.target)||(f&&(a=!1),e.preventDefault(),r&&e.stopPropagation(),n={pointerId:e.pointerId,button:e.button,startClientX:e.clientX,startClientY:e.clientY,startPan:o.get(),moved:r},t.setPointerCapture?.(e.pointerId),u(r),window.addEventListener("pointermove",m),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l))},E=e=>{e.button===1&&!p(e.target)&&e.preventDefault()},M=e=>{s.rightDragPans!==!0||!(n?.button===2&&n.moved)&&!a||(a=!1,e.preventDefault(),e.stopPropagation())},y=e=>{if(p(e.target))return;e.preventDefault(),e.stopPropagation();const r=i(o.get(),{clientX:e.clientX,clientY:e.clientY,deltaX:e.deltaX,deltaY:e.deltaY,deltaMode:e.deltaMode,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,bounds:t.getBoundingClientRect()});o.setView(r.x,r.y,r.zoom)};return t.addEventListener("pointerdown",h,!0),t.addEventListener("lostpointercapture",l,!0),t.addEventListener("mousedown",E,!0),t.addEventListener("contextmenu",M,!0),t.addEventListener("wheel",y,{capture:!0,passive:!1}),()=>{n=null,u(!1),t.removeEventListener("pointerdown",h,!0),t.removeEventListener("lostpointercapture",l,!0),t.removeEventListener("mousedown",E,!0),t.removeEventListener("contextmenu",M,!0),t.removeEventListener("wheel",y,!0),window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)}}function z(t,o=L){return C(t,o,D)}function N(t,o){return C(t,o,I,{rightDragPans:!0})}export{X as S,x as a,N as b,z as i};
1
+ import{d5 as L}from"./index-V4J7xfRg.js";const Y=.1,w=4,x=.02,X=32,b=.002,P=4;function g(t,o,i){return o===1?t*16:o===2?t*i:t}function D(t,o){let i=g(o.deltaX,o.deltaMode,o.bounds.width),s=g(o.deltaY,o.deltaMode,o.bounds.height);if(o.ctrlKey||o.metaKey){const n=Math.min(w,Math.max(Y,t.zoom*Math.exp(-s*b))),a=o.clientX-o.bounds.left,d=o.clientY-o.bounds.top,c=(a-t.x)/t.zoom,u=(d-t.y)/t.zoom;return{x:a-c*n,y:d-u*n,zoom:n}}return o.shiftKey&&i===0&&(i=s,s=0),{x:t.x-i,y:t.y-s,zoom:t.zoom}}function I(t,o){const i=g(o.deltaY,o.deltaMode,o.bounds.height),s=Math.min(X,Math.max(x,t.zoom*Math.exp(-i*b))),n=o.clientX-o.bounds.left,a=o.clientY-o.bounds.top,d=(n-t.x)/t.zoom,c=(a-t.y)/t.zoom;return{x:n-d*s,y:a-c*s,zoom:s}}function p(t){return t instanceof Element&&t.closest('[data-volter-canvas-navigation-ignore="true"]')!==null}function C(t,o,i,s={}){let n=null,a=!1,d="";const c=()=>t.querySelector('[data-testid="world-selection-overlay-interaction"]'),u=e=>{t.dataset.canvasPanning=e?"true":"false",t.style.cursor=e?"grabbing":"";const r=c();r&&(e?(d=r.style.cursor,r.style.cursor="grabbing"):r.style.cursor=d)},m=e=>{if(!n||e.pointerId!==n.pointerId)return;const r=n.button===1?4:2;if((e.buttons&r)===0){l(e);return}const f=e.clientX-n.startClientX,v=e.clientY-n.startClientY;if(!n.moved){if(Math.hypot(f,v)<=P)return;n.moved=!0,u(!0)}o.setPan(n.startPan.x+f,n.startPan.y+v)},l=e=>{if(!n||e.pointerId!==n.pointerId)return;const r=n.pointerId;n.button===2&&n.moved&&(a=!0),n=null,u(!1),t.hasPointerCapture?.(r)&&t.releasePointerCapture(r),window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)},h=e=>{const r=e.button===1,f=s.rightDragPans===!0&&e.button===2;!r&&!f||p(e.target)||(f&&(a=!1),e.preventDefault(),r&&e.stopPropagation(),n={pointerId:e.pointerId,button:e.button,startClientX:e.clientX,startClientY:e.clientY,startPan:o.get(),moved:r},t.setPointerCapture?.(e.pointerId),u(r),window.addEventListener("pointermove",m),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l))},E=e=>{e.button===1&&!p(e.target)&&e.preventDefault()},M=e=>{s.rightDragPans!==!0||!(n?.button===2&&n.moved)&&!a||(a=!1,e.preventDefault(),e.stopPropagation())},y=e=>{if(p(e.target))return;e.preventDefault(),e.stopPropagation();const r=i(o.get(),{clientX:e.clientX,clientY:e.clientY,deltaX:e.deltaX,deltaY:e.deltaY,deltaMode:e.deltaMode,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,bounds:t.getBoundingClientRect()});o.setView(r.x,r.y,r.zoom)};return t.addEventListener("pointerdown",h,!0),t.addEventListener("lostpointercapture",l,!0),t.addEventListener("mousedown",E,!0),t.addEventListener("contextmenu",M,!0),t.addEventListener("wheel",y,{capture:!0,passive:!1}),()=>{n=null,u(!1),t.removeEventListener("pointerdown",h,!0),t.removeEventListener("lostpointercapture",l,!0),t.removeEventListener("mousedown",E,!0),t.removeEventListener("contextmenu",M,!0),t.removeEventListener("wheel",y,!0),window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)}}function z(t,o=L){return C(t,o,D)}function N(t,o){return C(t,o,I,{rightDragPans:!0})}export{X as S,x as a,N as b,z as i};
@@ -1 +1 @@
1
- import{a as n}from"./jsx-runtime-DPjLkJKQ.js";import{eI as ye,eJ as ne,eK as xe,eL as be,eM as je,eN as Se,du as ve,eO as Ce,eP as Re,eQ as ke,eR as we,aA as Ee,eS as m,en as u,ep as j,a0 as k,eT as O,eU as $e,eV as H,dh as K,K as B,et as Te,aM as Y,eW as se,eX as Ie,eY as Ne,aR as Me,ar as ie,eZ as Oe,e_ as Ae}from"./index-flxMlfV4.js";import{r as v}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{p as re,G as ae,c as M,B as Be,A as Fe,S as A,a as _e,b as De,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 Ke}from"./ShadowEditor-BKz_sq1R.js";import{s as oe,a as U,b as Ve}from"./board-guides-ClHJXXuu.js";import{b as Ye}from"./eyedropper-session-bjPXnfeX.js";import{k as Je,l as Xe}from"./inspect-Dl5bH02T.js";import{D as Qe}from"./dom-authoring-adapter-B97hwEwz.js";import{R as D,c as Ze}from"./react-world-authoring-adapter-DVNps-az.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"./inference-diagnostics-MWqnRUsN.js";import"./json-history-resource-DTUpacfx.js";import"./relative-import-specifier-cRtWQWmH.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./writer-tw6EcuVO.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 D||s instanceof Qe?s:null}const qe=(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:{...Oe,padding:`${u[2]} ${u[4]}`},children:[n.jsx("span",{style:{width:Ae,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,M(c)),onChangeEnd:c=>a(e.path,M(c))})}):n.jsx(w,{label:e.label,testId:i,children:n.jsx(k,{type:"button",variant:"secondary",className:"volter-field-trigger","data-testid":i,disabled:s,onClick:()=>a(e.path,M(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 Z({prop:e,raw:t,disabled:s,testId:i,commit:a,label:o}){const c=De(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(Ke(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(_e,{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(A,{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(K,{"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(Me,{className:"volter-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*\)$/,_=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)>_||Math.abs(f)>_||Math.abs(d+l)>_||Math.abs(y-r)>_)return null;const S=Math.hypot(r,l);if(S<_)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(A,{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(A,{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(Z,{...r,label:"Filter"});case"backdrop-filter":return n.jsx(Z,{...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"?Ze(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(A,{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(K,{"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:[q(e,t,r.get("gridTemplateColumns"),"Cols",l),q(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 q(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(A,{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))},V=(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:O.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:()=>V(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:()=>V(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,M(N)),onChangeEnd:N=>p(b,M(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([M(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(A,{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:O.normal},children:r})]})}function Mt({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:O.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:O.normal},children:o}),n.jsx(Ot,{})]})}function Ot(){const e=v.useSyncExternalStore(Ve,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(K,{"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:O.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 At({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 D,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:O.normal,minWidth:0},children:[n.jsx("span",{style:{flexShrink:0,...i?{}:{color:m.accent}},children:o}),a&&n.jsx(At,{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 D&&n.jsx(Mt,{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 _t(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 D?{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 D&&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 Dt=xe();function Lt(){Dt.ensure(e=>{e(ye({match:qe,sections:_t,claims:[ne]}))})}const on="workspace.service";function ln(){return Lt(),()=>{}}export{on as point,ln as start};
1
+ import{a as n}from"./jsx-runtime-DPjLkJKQ.js";import{eI as ye,eJ as ne,eK as xe,eL as be,eM as je,eN as Se,dQ as ve,eO as Ce,eP as Re,eQ as ke,eR as we,aF as Ee,eS as m,en as u,ep as j,a5 as k,eT as O,eU as $e,eV as H,bG as K,T as B,et as Te,aM as Y,eW as se,eX as Ie,eY as Ne,aR as Me,aw as ie,eZ as Oe,e_ as Ae}from"./index-V4J7xfRg.js";import{r as v}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{p as re,G as ae,c as M,B as Be,A as Fe,S as A,a as _e,b as De,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 Ke}from"./ShadowEditor-C3L0UWSH.js";import{s as oe,a as U,b as Ve}from"./board-guides-B6TEPOPi.js";import{b as Ye}from"./eyedropper-session-bjPXnfeX.js";import{k as Je,l as Xe}from"./inspect-DiSjB-N1.js";import{D as Qe}from"./dom-authoring-adapter-BklRbjZB.js";import{R as D,c as Ze}from"./react-world-authoring-adapter-OR1SW2jI.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"./inference-diagnostics-DoZQ1mpg.js";import"./json-history-resource-CH2nzMZh.js";import"./relative-import-specifier-DXWVQf0o.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./writer-tw6EcuVO.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 D||s instanceof Qe?s:null}const qe=(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:{...Oe,padding:`${u[2]} ${u[4]}`},children:[n.jsx("span",{style:{width:Ae,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,M(c)),onChangeEnd:c=>a(e.path,M(c))})}):n.jsx(w,{label:e.label,testId:i,children:n.jsx(k,{type:"button",variant:"secondary",className:"volter-field-trigger","data-testid":i,disabled:s,onClick:()=>a(e.path,M(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 Z({prop:e,raw:t,disabled:s,testId:i,commit:a,label:o}){const c=De(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(Ke(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(_e,{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(A,{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(K,{"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(Me,{className:"volter-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*\)$/,_=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)>_||Math.abs(f)>_||Math.abs(d+l)>_||Math.abs(y-r)>_)return null;const S=Math.hypot(r,l);if(S<_)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(A,{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(A,{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(Z,{...r,label:"Filter"});case"backdrop-filter":return n.jsx(Z,{...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"?Ze(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(A,{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(K,{"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:[q(e,t,r.get("gridTemplateColumns"),"Cols",l),q(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 q(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(A,{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))},V=(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:O.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:()=>V(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:()=>V(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,M(N)),onChangeEnd:N=>p(b,M(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([M(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(A,{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:O.normal},children:r})]})}function Mt({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:O.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:O.normal},children:o}),n.jsx(Ot,{})]})}function Ot(){const e=v.useSyncExternalStore(Ve,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(K,{"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:O.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 At({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 D,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:O.normal,minWidth:0},children:[n.jsx("span",{style:{flexShrink:0,...i?{}:{color:m.accent}},children:o}),a&&n.jsx(At,{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 D&&n.jsx(Mt,{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 _t(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 D?{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 D&&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 Dt=xe();function Lt(){Dt.ensure(e=>{e(ye({match:qe,sections:_t,claims:[ne]}))})}const on="workspace.service";function ln(){return Lt(),()=>{}}export{on as point,ln as start};
@@ -1 +1 @@
1
- import"./jsx-runtime-DPjLkJKQ.js";import"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{c_ as Rt,af as b,da as Mt,db as ot,dc as _t}from"./index-flxMlfV4.js";const qt="#191c22",Kt="rgba(255, 255, 255, 0.2)",kt="#20242a",K="#2d323a";function St(){return`linear-gradient(45deg, ${K} 25%, transparent 25%, transparent 75%, ${K} 75%), linear-gradient(45deg, ${K} 25%, transparent 25%, transparent 75%, ${K} 75%)`}const B=20,Q=6,H=22,at=10,yt=B+Q,ft=H+at,It=.6,Ct=.4,Lt=.7,$t=.45;function pt(n,s,l){return n>=s?[1,!0]:n<=l?[0,!1]:[(n-l)/(s-l),!0]}function ht(n,s){const l=Math.max(0,n),i=s?Math.min(1,l/ft):0,[u,d]=pt(i,Lt,$t),c=Math.max(0,l-ft*i),y=Math.min(1,c/yt),[v,k]=pt(y,It,Ct),w=k?yt*y:0;return{frame:{scale:y,opacity:v,visible:k,offset:Q*y+B},group:s?{scale:i,opacity:u,visible:d,offset:w+at*i+H}:null}}function mt(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 Ot={width:null,height:null};let J=Ot;const st=new Set;function Bt(){return J}function Pt(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 u of st)u()}}function Jt(){Pt(null,null)}function Ft(n){return st.add(n),()=>st.delete(n)}const Tt=640,Vt=400,N=64,C=64,gt=72,zt=28,nt=C+H+at+B+Q;function wt(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(u=>{const d=l.get(u);return d?[d]:[]})}))}const Nt=n=>n.split("/").map(s=>s.trim()).filter(Boolean);function xt(n){const s=new Set(n.filter(i=>i.stories.length===1).map(i=>i.key)),l=[];{const i=new Map;for(const u of n){if(!s.has(u.key)){l.push({key:u.key,label:u.label,stories:[...u.stories]});continue}const d=Nt(u.label).slice(0,-1).join("/");let c=i.get(d);c||(c={key:`category:${d}`,label:d||null,stories:[]},i.set(d,c),l.push(c)),c.stories.push(...u.stories)}}return l}function Gt(n,s,l){const i=xt(wt(n,s)),u=new Map,d=new Map;let c=N,y=0;i.forEach((w,P)=>{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,A=Math.floor(f/E);I[m]=Math.max(I[m],h.width),R[A]=Math.max(R[A],h.height)});const F=I.map((h,f)=>I.slice(0,f).reduce((m,A)=>m+A+C,0)),W=R.map((h,f)=>R.slice(0,f).reduce((m,A)=>m+A+C,0)),$=P===0?Number.POSITIVE_INFINITY:w.label!==null?nt:C+B+Q;w.label!==null&&d.set(w.key,{x:N,y:c,roomAbove:$}),w.stories.forEach((h,f)=>{const m=Math.floor(f/E),A=f%E,D=L[f],{width:T,height:U}=D,it=N+F[A],Y=c+W[m];u.set(h.id,{x:it,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,O=R.reduce((h,f)=>h+f,0)+Math.max(0,S-1)*C;y=Math.max(y,x),c+=O+nt});const v=N*2+y,k=c-nt+N;return{layouts:u,groupOrigins:d,width:v,height:n.length?k:0}}const _=new WeakMap,rt=new Set,Ht=null;function G(){for(const n of rt)n()}function Qt(n){return rt.add(n),()=>rt.delete(n)}function Xt(n){return n?_.get(n)?.viewport()??Ht:null}function Zt(n,s){const l=n?_.get(n):void 0;return l?(l.setViewport(s),!0):!1}function te(n){const s=n?_.get(n):void 0;return!s||s.viewport().locked?!1:(s.setRotation(!s.viewport().rotated),!0)}function Wt(){const n=Bt();return{width:n.width??Tt,height:n.height??Vt}}function bt(n,s,l){if(s.width<=0||s.height<=0)return;const i=Math.max(1,n.clientWidth-gt*2),u=Math.max(1,n.clientHeight-gt*2),d=Math.min(l,Math.max(.1,Math.min(i/s.width,u/s.height)));_t(n.clientWidth/2-(s.x+s.width/2)*d,n.clientHeight/2-(s.y+s.height/2)*d,d)}function ee(n){const s=_.get(n);return s?(s.fitAll(),!0):!1}function oe(n,s,l){return n?_.get(n)?.selectAtClientPoint(s,l)??!1:!1}function ne(n,s,l){return n?_.get(n)?.zoomAtClientPoint(s,l)??!1:!1}function se(n,s,l,i,u){if(s.length===0)throw new Error("A React story board requires at least one story.");const d=n.parentElement;if(!d)throw new Error("A React story board layer must be attached before mounting.");n.dataset.volterReactStoryBoard="true",n.style.contain="none";const c=document.createElement("div");c.dataset.testid="react-story-board",c.dataset.volterReactStoryBoardCanvas="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.volterStoryBoardChromeFor=n.dataset.worldId??"",y.style.position="absolute",y.style.inset="0",y.style.zIndex=String(Rt.sticky),y.style.display=n.style.display||"block",y.style.pointerEvents="none",y.style.overflow="visible",d.appendChild(y);const v=new Map,k=new Map,w=new Map,P=new Map,E=new Map,S=new Map,L=wt(s,u.index),I=new Map,R=new Map,F=new Map,W=new Map;let $,x=s.some(t=>t.id===l)?l:s[0].id,O=!1,h=!1;const f=t=>{const e=u.resolve(t,t.frameSize??Wt(),F.has(t.id)?F.get(t.id):void 0,W.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 A=new Set(L.filter(t=>t.stories.length===1).map(t=>t.key)),D=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?D(e.title).at(-1):void 0)??D(t.label).at(-1);T.set(e.id,A.has(t.key)?o??e.label:e.label)}const U=xt(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=u.index.sections.find(et=>et.storyIds.includes(t.id))?.label??"",e.style.position="absolute",e.style.border=`1px solid ${b.boundary.strong}`,e.style.borderRadius="0",e.style.backgroundColor=kt,e.style.backgroundImage=St(),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=`${B}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=`${B}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}),k.set(t.id,p),w.set(t.id,a),P.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=P.get(t);r.setAttribute("aria-pressed",String(o)),r.style.color=o?b.accent.default:b.content.muted}},lt=(t,e)=>Number.isFinite(t)?t*e:Number.POSITIVE_INFINITY,j=()=>{const t=ot();for(const[e,o]of E){const r=P.get(e),{frame:a}=ht(lt(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`,mt(r,p>=zt?a:{...a,opacity:0,visible:!1})}for(const[e,o]of R){const r=I.get(e);if(!r)continue;const{group:a}=ht(lt(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`,mt(r,a))}},V=()=>{E.clear(),R.clear();const t=Gt(s,u.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:et,width:dt,height:ut}=a,z=f(r),g=v.get(r.id);g.element.style.left=`${p}px`,g.element.style.top=`${et}px`,g.element.style.width=`${dt}px`,g.element.style.height=`${ut}px`;const M=S.get(r.id);g.element.style.overflow=M?"hidden":"",g.content.style.width=`${M?M.mount.width:dt}px`,g.content.style.height=`${M?M.mount.height:ut}px`,g.content.style.left=`${M?-M.offset.x:0}px`,g.content.style.top=`${M?-M.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()},vt=()=>{const t=Number.parseFloat(c.style.width),e=Number.parseFloat(c.style.height);bt(d,{x:0,y:0,width:t,height:e},1)};let X=null;const Z=()=>{h||(h=!0,queueMicrotask(()=>{h=!1,!O&&(q(x,!0),X=ot())}))},q=(t,e=!1)=>{const o=v.get(t),r=E.get(t);!o||!r||(x=t,Y(),m(),G(),e&&bt(d,r,2))},ct=(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},Et=Ft(()=>{V(),Z()}),At=Mt(j);V(),Y(),j();const tt={element:c,frames:v,activeContent:()=>v.get(x).content,activate:q,clearError:t=>{const e=k.get(t);e&&(e.style.display="none",e.textContent="")},fitAll:vt,selectAtClientPoint:(t,e)=>{const o=ct(t,e);return!o||o===x?!1:(i(o,"highlight"),!0)},zoomAtClientPoint:(t,e)=>{const o=ct(t,e);return o?(i(o,"zoom"),!0):!1},setError:(t,e)=>{const o=k.get(t);o&&(o.textContent=e,o.style.display="block")},setMeasuredFrame:(t,e)=>{if(O||!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(),X!==null&&ot()===X&&Z()},setNote:t=>{for(const e of w.values())e.textContent=t??"",e.style.display=t===null?"none":"block"},viewport:()=>$,setViewport:t=>{$.locked||(F.set(x,t),V(),m(),G(),q(x,!0))},setRotation:t=>{$.locked||(W.set(x,t),V(),m(),G(),q(x,!0))},dispose:()=>{O||(O=!0,Et(),At(),_.get(d)===tt&&_.delete(d),G(),c.remove(),y.remove())}};return _.set(d,tt),G(),Z(),tt}export{qt as R,Qt as a,Xt as b,Zt as c,Pt as d,Jt as e,ee as f,Bt as g,se as h,Kt as i,oe as j,Gt as r,Ft as s,te as t,ne as z};
1
+ import"./jsx-runtime-DPjLkJKQ.js";import"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{dn as Rt,ak as b,dA as Mt,dB as ot,dC as kt}from"./index-V4J7xfRg.js";const qt="#191c22",Kt="rgba(255, 255, 255, 0.2)",_t="#20242a",K="#2d323a";function St(){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,at=10,yt=O+Q,ft=H+at,Ct=.6,It=.4,Lt=.7,$t=.45;function pt(n,s,l){return n>=s?[1,!0]:n<=l?[0,!1]:[(n-l)/(s-l),!0]}function ht(n,s){const l=Math.max(0,n),i=s?Math.min(1,l/ft):0,[u,d]=pt(i,Lt,$t),c=Math.max(0,l-ft*i),y=Math.min(1,c/yt),[v,_]=pt(y,Ct,It),w=_?yt*y:0;return{frame:{scale:y,opacity:v,visible:_,offset:Q*y+O},group:s?{scale:i,opacity:u,visible:d,offset:w+at*i+H}:null}}function mt(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 Bt={width:null,height:null};let J=Bt;const st=new Set;function Ot(){return J}function Pt(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 u of st)u()}}function Jt(){Pt(null,null)}function Ft(n){return st.add(n),()=>st.delete(n)}const Tt=640,Vt=400,N=64,I=64,gt=72,zt=28,nt=I+H+at+O+Q;function wt(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(u=>{const d=l.get(u);return d?[d]:[]})}))}const Nt=n=>n.split("/").map(s=>s.trim()).filter(Boolean);function xt(n){const s=new Set(n.filter(i=>i.stories.length===1).map(i=>i.key)),l=[];{const i=new Map;for(const u of n){if(!s.has(u.key)){l.push({key:u.key,label:u.label,stories:[...u.stories]});continue}const d=Nt(u.label).slice(0,-1).join("/");let c=i.get(d);c||(c={key:`category:${d}`,label:d||null,stories:[]},i.set(d,c),l.push(c)),c.stories.push(...u.stories)}}return l}function Gt(n,s,l){const i=xt(wt(n,s)),u=new Map,d=new Map;let c=N,y=0;i.forEach((w,P)=>{const A=Math.max(1,Math.ceil(Math.sqrt(w.stories.length))),S=Math.ceil(w.stories.length/A),L=w.stories.map(h=>l(h)),C=Array.from({length:A},()=>0),R=Array.from({length:S},()=>0);L.forEach((h,f)=>{const m=f%A,E=Math.floor(f/A);C[m]=Math.max(C[m],h.width),R[E]=Math.max(R[E],h.height)});const F=C.map((h,f)=>C.slice(0,f).reduce((m,E)=>m+E+I,0)),W=R.map((h,f)=>R.slice(0,f).reduce((m,E)=>m+E+I,0)),$=P===0?Number.POSITIVE_INFINITY:w.label!==null?nt:I+O+Q;w.label!==null&&d.set(w.key,{x:N,y:c,roomAbove:$}),w.stories.forEach((h,f)=>{const m=Math.floor(f/A),E=f%A,D=L[f],{width:T,height:U}=D,it=N+F[E],Y=c+W[m];u.set(h.id,{x:it,y:Y,width:T,height:U,roomAbove:m===0?$:I,withGroupLabel:i.length>1&&m===0&&w.label!==null})});const x=C.reduce((h,f)=>h+f,0)+Math.max(0,A-1)*I,B=R.reduce((h,f)=>h+f,0)+Math.max(0,S-1)*I;y=Math.max(y,x),c+=B+nt});const v=N*2+y,_=c-nt+N;return{layouts:u,groupOrigins:d,width:v,height:n.length?_:0}}const k=new WeakMap,rt=new Set,Ht=null;function G(){for(const n of rt)n()}function Qt(n){return rt.add(n),()=>rt.delete(n)}function Xt(n){return n?k.get(n)?.viewport()??Ht:null}function Zt(n,s){const l=n?k.get(n):void 0;return l?(l.setViewport(s),!0):!1}function te(n){const s=n?k.get(n):void 0;return!s||s.viewport().locked?!1:(s.setRotation(!s.viewport().rotated),!0)}function Wt(){const n=Ot();return{width:n.width??Tt,height:n.height??Vt}}function bt(n,s,l){if(s.width<=0||s.height<=0)return;const i=Math.max(1,n.clientWidth-gt*2),u=Math.max(1,n.clientHeight-gt*2),d=Math.min(l,Math.max(.1,Math.min(i/s.width,u/s.height)));kt(n.clientWidth/2-(s.x+s.width/2)*d,n.clientHeight/2-(s.y+s.height/2)*d,d)}function ee(n){const s=k.get(n);return s?(s.fitAll(),!0):!1}function oe(n,s,l){return n?k.get(n)?.selectAtClientPoint(s,l)??!1:!1}function ne(n,s,l){return n?k.get(n)?.zoomAtClientPoint(s,l)??!1:!1}function se(n,s,l,i,u){if(s.length===0)throw new Error("A React story board requires at least one story.");const d=n.parentElement;if(!d)throw new Error("A React story board layer must be attached before mounting.");n.dataset.volterReactStoryBoard="true",n.style.contain="none";const c=document.createElement("div");c.dataset.testid="react-story-board",c.dataset.volterReactStoryBoardCanvas="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.volterStoryBoardChromeFor=n.dataset.worldId??"",y.style.position="absolute",y.style.inset="0",y.style.zIndex=String(Rt.sticky),y.style.display=n.style.display||"block",y.style.pointerEvents="none",y.style.overflow="visible",d.appendChild(y);const v=new Map,_=new Map,w=new Map,P=new Map,A=new Map,S=new Map,L=wt(s,u.index),C=new Map,R=new Map,F=new Map,W=new Map;let $,x=s.some(t=>t.id===l)?l:s[0].id,B=!1,h=!1;const f=t=>{const e=u.resolve(t,t.frameSize??Wt(),F.has(t.id)?F.get(t.id):void 0,W.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 E=new Set(L.filter(t=>t.stories.length===1).map(t=>t.key)),D=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?D(e.title).at(-1):void 0)??D(t.label).at(-1);T.set(e.id,E.has(t.key)?o??e.label:e.label)}const U=xt(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=u.index.sections.find(et=>et.storyIds.includes(t.id))?.label??"",e.style.position="absolute",e.style.border=`1px solid ${b.boundary.strong}`,e.style.borderRadius="0",e.style.backgroundColor=_t,e.style.backgroundImage=St(),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),P.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),C.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=P.get(t);r.setAttribute("aria-pressed",String(o)),r.style.color=o?b.accent.default:b.content.muted}},lt=(t,e)=>Number.isFinite(t)?t*e:Number.POSITIVE_INFINITY,j=()=>{const t=ot();for(const[e,o]of A){const r=P.get(e),{frame:a}=ht(lt(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+I/2)*t.zoom);r.style.maxWidth=`${p}px`,mt(r,p>=zt?a:{...a,opacity:0,visible:!1})}for(const[e,o]of R){const r=C.get(e);if(!r)continue;const{group:a}=ht(lt(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`,mt(r,a))}},V=()=>{A.clear(),R.clear();const t=Gt(s,u.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;A.set(r.id,a);const{x:p,y:et,width:dt,height:ut}=a,z=f(r),g=v.get(r.id);g.element.style.left=`${p}px`,g.element.style.top=`${et}px`,g.element.style.width=`${dt}px`,g.element.style.height=`${ut}px`;const M=S.get(r.id);g.element.style.overflow=M?"hidden":"",g.content.style.width=`${M?M.mount.width:dt}px`,g.content.style.height=`${M?M.mount.height:ut}px`,g.content.style.left=`${M?-M.offset.x:0}px`,g.content.style.top=`${M?-M.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()},vt=()=>{const t=Number.parseFloat(c.style.width),e=Number.parseFloat(c.style.height);bt(d,{x:0,y:0,width:t,height:e},1)};let X=null;const Z=()=>{h||(h=!0,queueMicrotask(()=>{h=!1,!B&&(q(x,!0),X=ot())}))},q=(t,e=!1)=>{const o=v.get(t),r=A.get(t);!o||!r||(x=t,Y(),m(),G(),e&&bt(d,r,2))},ct=(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},At=Ft(()=>{V(),Z()}),Et=Mt(j);V(),Y(),j();const tt={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:vt,selectAtClientPoint:(t,e)=>{const o=ct(t,e);return!o||o===x?!1:(i(o,"highlight"),!0)},zoomAtClientPoint:(t,e)=>{const o=ct(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(),X!==null&&ot()===X&&Z()},setNote:t=>{for(const e of w.values())e.textContent=t??"",e.style.display=t===null?"none":"block"},viewport:()=>$,setViewport:t=>{$.locked||(F.set(x,t),V(),m(),G(),q(x,!0))},setRotation:t=>{$.locked||(W.set(x,t),V(),m(),G(),q(x,!0))},dispose:()=>{B||(B=!0,At(),Et(),k.get(d)===tt&&k.delete(d),G(),c.remove(),y.remove())}};return k.set(d,tt),G(),Z(),tt}export{qt as R,Qt as a,Xt as b,Zt as c,Pt as d,Jt as e,ee as f,Ot as g,se as h,Kt as i,oe as j,Gt as r,Ft as s,te as t,ne as z};