@volter/game-editor 0.5.155 → 0.5.156

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/BUNDLED_NOTICES +22 -22
  2. package/catalog/entries/blender.json +2 -2
  3. package/catalog/entries/music.json +2 -2
  4. package/dist/.vite/manifest.json +2138 -2138
  5. package/dist/assets/{AssetBudgetPanel-B2Wb7-b1.js → AssetBudgetPanel-BQdPOlqp.js} +3 -3
  6. package/dist/assets/{AudioViewer-gge--M-h.js → AudioViewer-C5y-GQP-.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-CyGiXrEJ.js → CanvasBoardDocument-DbChIzOl.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-ChG9oRS8.js → CanvasSceneViewport-BAUsxjQl.js} +1 -1
  9. package/dist/assets/{ColorInput-Dzpqy-J3.js → ColorInput-DGN6sIXS.js} +1 -1
  10. package/dist/assets/{ColorPicker-CqJPBHlh.js → ColorPicker-C83d-sVK.js} +1 -1
  11. package/dist/assets/{EntityModelDocument-D7XDf6uB.js → EntityModelDocument-D4IbBjti.js} +1 -1
  12. package/dist/assets/{EnvironmentAssetDocument-BgO7Hl3g.js → EnvironmentAssetDocument-BqTeI8cz.js} +1 -1
  13. package/dist/assets/{GameplaySessionTimeline-BBmwHCKA.js → GameplaySessionTimeline-FqH6Sz1y.js} +1 -1
  14. package/dist/assets/{ImageViewer-BjxoscVa.js → ImageViewer-C_4yhkuB.js} +1 -1
  15. package/dist/assets/InspectorObjectPreview-DCEUdndv.js +1 -0
  16. package/dist/assets/{JsonAssetDocument-D81JuRAm.js → JsonAssetDocument-C-drMm6I.js} +1 -1
  17. package/dist/assets/{LiveModuleDocument-bgStMiU1.js → LiveModuleDocument-C73e8H-p.js} +1 -1
  18. package/dist/assets/{LutAssetDocument-cl9Jq0Zw.js → LutAssetDocument-DfBf46zV.js} +1 -1
  19. package/dist/assets/{ModelAssetDocument-CYCLKpxJ.js → ModelAssetDocument-BgP4YOdh.js} +1 -1
  20. package/dist/assets/{NonThreeAuthoringBootstrap-DhHjvD5d.js → NonThreeAuthoringBootstrap-qnG1AmuP.js} +1 -1
  21. package/dist/assets/{Object3DDocumentToolbar-CQbARBIW.js → Object3DDocumentToolbar-34bmavxS.js} +1 -1
  22. package/dist/assets/Object3DDocumentViewport-Blr8aQeS.js +2 -0
  23. package/dist/assets/{Object3DPreview-BOZYzjz_.js → Object3DPreview-wWjXCo6v.js} +1 -1
  24. package/dist/assets/{OnlineAssetDetail-DdKHHjxg.js → OnlineAssetDetail-C4iaJDOr.js} +1 -1
  25. package/dist/assets/{PlayBar-CAarfEOh.js → PlayBar-CBvuzv1Q.js} +1 -1
  26. package/dist/assets/{QuarksAssetDocument-GTbawoy7.js → QuarksAssetDocument-BlYjfRGp.js} +1 -1
  27. package/dist/assets/{ReactCanvasControls-DIFkxeKv.js → ReactCanvasControls-C06AmSIB.js} +1 -1
  28. package/dist/assets/{RootSelectionOverlay-Dv_w1D9s.js → RootSelectionOverlay-CPw5aFQf.js} +1 -1
  29. package/dist/assets/{ShaderAssetDocument-OA-nshNN.js → ShaderAssetDocument-BVeK6Owt.js} +1 -1
  30. package/dist/assets/{ShadowEditor-Cp1QVCo9.js → ShadowEditor-BKEyyzOq.js} +1 -1
  31. package/dist/assets/{SourceAssetViewer-CGGHBzgL.js → SourceAssetViewer-DB6Fg4Re.js} +1 -1
  32. package/dist/assets/{StageHost-BMgCrIPG.js → StageHost-dHitOcUe.js} +2 -2
  33. package/dist/assets/{StoryPreviewMount-CyF7FwI7.js → StoryPreviewMount-BONsNxze.js} +1 -1
  34. package/dist/assets/{ThreeBoardDocument-DCJkLWU8.js → ThreeBoardDocument-D4CSNWux.js} +2 -2
  35. package/dist/assets/{ThreeIsolationSceneContent-CxsM-QHW.js → ThreeIsolationSceneContent-DkXfPv14.js} +1 -1
  36. package/dist/assets/{ToolObject3DPreview-lsAoRxtr.js → ToolObject3DPreview-DvGqYC9c.js} +1 -1
  37. package/dist/assets/{Toolbar-yvFlRv8R.js → Toolbar-BqUPRrhs.js} +1 -1
  38. package/dist/assets/{TransientHint-Bslncm_l.js → TransientHint-w6qEumzV.js} +1 -1
  39. package/dist/assets/{VideoViewer-Ba-e91kP.js → VideoViewer-B99XdTSg.js} +1 -1
  40. package/dist/assets/{ViewportShadingMenu-CgbuQ0e-.js → ViewportShadingMenu-9AaJLhq_.js} +1 -1
  41. package/dist/assets/{active-ingest-CJ2U5L1O.js → active-ingest-DwF45MBm.js} +2 -2
  42. package/dist/assets/{animation-clock-CVpGQSVj.js → animation-clock-DW8tJ4l7.js} +1 -1
  43. package/dist/assets/{animation-mixers.service-CI0K1tfi.js → animation-mixers.service-kllpdYjk.js} +1 -1
  44. package/dist/assets/{animation-timeline.utility-Wg6WxkxK.js → animation-timeline.utility-C9UVqsSv.js} +1 -1
  45. package/dist/assets/{asset-budget-asset.menu-BbCBxjLY.js → asset-budget-asset.menu-Cl8tmAtz.js} +1 -1
  46. package/dist/assets/{asset-budget.action-CK8h0v1A.js → asset-budget.action-dw6ctYdi.js} +1 -1
  47. package/dist/assets/{asset-budget.document-CYVcDLvH.js → asset-budget.document-BfDL1bS4.js} +1 -1
  48. package/dist/assets/{asset-budget.menu-BcTijQ2R.js → asset-budget.menu-DiOMl0Yh.js} +1 -1
  49. package/dist/assets/{asset-editor-persistence-DWp0E8cc.js → asset-editor-persistence-D2o6zb5I.js} +1 -1
  50. package/dist/assets/{asset-loaders-Bo91oPiL.js → asset-loaders-bMb8Nvq8.js} +1 -1
  51. package/dist/assets/{asset-preview-BUpxsHNd.js → asset-preview-uRqIcg3G.js} +1 -1
  52. package/dist/assets/{audio-unlock.service-CyiXe5qk.js → audio-unlock.service-CBeaLfYT.js} +1 -1
  53. package/dist/assets/{audio.utility-BN4mANCx.js → audio.utility-iWLchCUR.js} +1 -1
  54. package/dist/assets/autoplay.service---Nu6koq.js +1 -0
  55. package/dist/assets/{babylon-authoring-adapter-C-EAsfMr.js → babylon-authoring-adapter-Bt8B089v.js} +1 -1
  56. package/dist/assets/{binding-resolver-DoOAFM2m.js → binding-resolver-qdReeiXP.js} +2 -2
  57. package/dist/assets/{blender-node-editor.document-BzkGPs0i.js → blender-node-editor.document-DHj3Luuz.js} +1 -1
  58. package/dist/assets/{blender-properties-tab-B1ggqOYB.js → blender-properties-tab-mrwIpZz_.js} +1 -1
  59. package/dist/assets/{blender-runtime-host-MJZEPwHA.js → blender-runtime-host-rAbOjzv5.js} +1 -1
  60. package/dist/assets/{blender-runtime-skin-hw-op7Nt.js → blender-runtime-skin-CVACAkwd.js} +2 -2
  61. package/dist/assets/{blender-runtime.document-CvTyAou8.js → blender-runtime.document-VP-2qjfk.js} +10 -10
  62. package/dist/assets/{blender-screenshot.menu-C4VXpXVa.js → blender-screenshot.menu-B_zThqdR.js} +1 -1
  63. package/dist/assets/{blender-timeline.document-BRFDd7JZ.js → blender-timeline.document-BMNJBWXP.js} +1 -1
  64. package/dist/assets/{blender-uv-editor.document-CM09ITWu.js → blender-uv-editor.document-B2xmye2O.js} +1 -1
  65. package/dist/assets/{blender-version.status-CPyc_-kA.js → blender-version.status-BzVGyJhB.js} +1 -1
  66. package/dist/assets/{blender.command-ktKz-2Zi.js → blender.command-CNlvvxaj.js} +1 -1
  67. package/dist/assets/{board-guides-CCiyx8cT.js → board-guides-BPvQZ1ob.js} +1 -1
  68. package/dist/assets/{bridge.command-tP5j6w72.js → bridge.command-dqFe1Lyp.js} +3 -3
  69. package/dist/assets/{browserAll-BSQVVrNG.js → browserAll-DLXEw1rV.js} +1 -1
  70. package/dist/assets/{build-player.document-BwbBXtF5.js → build-player.document-Bra3vDcF.js} +1 -1
  71. package/dist/assets/{build-profiles.document-UiF_BsjE.js → build-profiles.document-DuSvWEO8.js} +1 -1
  72. package/dist/assets/{build-progress.status-Bf5KpnxC.js → build-progress.status-hkKRXBcc.js} +1 -1
  73. package/dist/assets/{build-session-C4jVDt-u.js → build-session-B5GOV8fm.js} +1 -1
  74. package/dist/assets/{build.action-DP2d1Uhj.js → build.action-DUrS97Yw.js} +1 -1
  75. package/dist/assets/{build.command-D5pyNcoj.js → build.command-fNnr9pdz.js} +1 -1
  76. package/dist/assets/{build.header-DupBIAOw.js → build.header-C-WQMQD8.js} +1 -1
  77. package/dist/assets/{build.menu-DWrKtdoV.js → build.menu-CsVJRmY6.js} +1 -1
  78. package/dist/assets/{build.service-qnz73gSX.js → build.service-CJfK8K6X.js} +1 -1
  79. package/dist/assets/{camera-C74U5X7o.js → camera-CpvCFt-Y.js} +1 -1
  80. package/dist/assets/{camera-runtime.inspector-B2l34Xhl.js → camera-runtime.inspector-BwSdtfTT.js} +1 -1
  81. package/dist/assets/{canvas-design-mount-D4M3E1AX.js → canvas-design-mount-CE-67ZS9.js} +3 -3
  82. package/dist/assets/{canvas-entry-runtime-CLOuJcgT.js → canvas-entry-runtime-CBpGQGRw.js} +2 -2
  83. package/dist/assets/{canvas-preview-frames-CSCcu2sG.js → canvas-preview-frames-DoDVjE4O.js} +1 -1
  84. package/dist/assets/{canvas-story-capture.service-onD_xSpQ.js → canvas-story-capture.service-hibqSqwB.js} +2 -2
  85. package/dist/assets/{capability-coverage-EnZ99FoT.js → capability-coverage-DWVel6Wq.js} +1 -1
  86. package/dist/assets/{collaboration-presence-1_UMOAkw.js → collaboration-presence-B9eqNDDB.js} +1 -1
  87. package/dist/assets/{collider-C6R1tHfa.js → collider-DD5wreOq.js} +1 -1
  88. package/dist/assets/{component-board.service-BX_2bwX3.js → component-board.service-B1RineLo.js} +2 -2
  89. package/dist/assets/{component-board.service-Cuf_SXeA.js → component-board.service-eXvcrWzD.js} +2 -2
  90. package/dist/assets/{component-board.service-Ckl-5tA4.js → component-board.service-r8KlRes9.js} +2 -2
  91. package/dist/assets/{component-contracts.service-rI-rbvDG.js → component-contracts.service-YWaJqTzM.js} +1 -1
  92. package/dist/assets/{component-instance-root-wO1p-rLr.js → component-instance-root-BrRLxTKu.js} +1 -1
  93. package/dist/assets/{component-verbs.command-O2bwqmK3.js → component-verbs.command-D5LCfxHY.js} +1 -1
  94. package/dist/assets/{component-verbs.service-BiiQMtJt.js → component-verbs.service-BUTHHNRT.js} +1 -1
  95. package/dist/assets/{config-dVnV1cxW.js → config-DQqPM4dV.js} +2 -2
  96. package/dist/assets/{configurations-8qaUqMH7.js → configurations-Dn9LLbWO.js} +1 -1
  97. package/dist/assets/{connection.status-vH9WCDDg.js → connection.status-CMZKs7ch.js} +1 -1
  98. package/dist/assets/{constraints.inspector-C7UjUxPR.js → constraints.inspector-CRay8pK8.js} +1 -1
  99. package/dist/assets/{content-bounds-Dl5Y3LLv.js → content-bounds-UvcUv1DD.js} +1 -1
  100. package/dist/assets/{contract-system-adapters-BDUpDoKd.js → contract-system-adapters-Bbw5uUUi.js} +1 -1
  101. package/dist/assets/{coverage.service-IS7Oklo8.js → coverage.service-DeTXoRCC.js} +1 -1
  102. package/dist/assets/{create-runtime-Bucz0XVU.js → create-runtime-Z7LcpKwn.js} +1 -1
  103. package/dist/assets/{curve-D0Q6TczG.js → curve-DGhnvtG4.js} +1 -1
  104. package/dist/assets/{data-asset-B0a1y8M-.js → data-asset-CrnqULWS.js} +1 -1
  105. package/dist/assets/{data-ref-dRt2Wi5L.js → data-ref-ym18xkxV.js} +1 -1
  106. package/dist/assets/{debug-bridge-EhDkhrLX.js → debug-bridge-BknWW_8M.js} +1 -1
  107. package/dist/assets/{debug-registry-B2THKz1v.js → debug-registry-C7poEnyY.js} +1 -1
  108. package/dist/assets/{deferred-ingest-play-To3ZratW.js → deferred-ingest-play-3qS-wvgF.js} +2 -2
  109. package/dist/assets/{design-time-canvas-mount-BnSaRAbS.js → design-time-canvas-mount-JkGmMINz.js} +2 -2
  110. package/dist/assets/{design-time-layers-OMAIxOrv.js → design-time-layers-nxUfMfKI.js} +1 -1
  111. package/dist/assets/{design-time-mount.service-Bgr_nCDs.js → design-time-mount.service-DQganiM8.js} +2 -2
  112. package/dist/assets/{design-time-mount.service-RFkiqPIn.js → design-time-mount.service-EBZKN6cL.js} +2 -2
  113. package/dist/assets/{design-time-react-mount-BsSBoX7J.js → design-time-react-mount-COvuTCBY.js} +1 -1
  114. package/dist/assets/{document-preview-three-Qni0oVBw.js → document-preview-three-BaWpv458.js} +1 -1
  115. package/dist/assets/{dom-authoring-adapter-DsUgOtQy.js → dom-authoring-adapter-wlPbZwHo.js} +1 -1
  116. package/dist/assets/{draco3d-DyZllcka.js → draco3d-DdFfLaRu.js} +1 -1
  117. package/dist/assets/{edit-mode-audio.service-CjXNAZEs.js → edit-mode-audio.service-B74d6zkz.js} +1 -1
  118. package/dist/assets/{edit-mode-authoring-BDgZD47j.js → edit-mode-authoring-Cf83TffW.js} +1 -1
  119. package/dist/assets/{edit-mode-networking.service-3dUr2g_0.js → edit-mode-networking.service-C7FSPHzl.js} +1 -1
  120. package/dist/assets/{editor-api-DTrNJMXL.js → editor-api-DLfSJ2g2.js} +1 -1
  121. package/dist/assets/{editor-layers-DwaX5UFy.js → editor-layers-BVicagU1.js} +1 -1
  122. package/dist/assets/{editor-shell-store-aKHbAoCV.js → editor-shell-store-CV73gQk5.js} +1 -1
  123. package/dist/assets/{entity-object-BLJ-I8XT.js → entity-object-DTQ4I2K5.js} +1 -1
  124. package/dist/assets/{extend-6LrR7eSL.js → extend-B7YOIXSU.js} +1 -1
  125. package/dist/assets/{fork-menu-V-FM6YuY.js → fork-menu-BToX8Jv4.js} +1 -1
  126. package/dist/assets/{frame-debugger-store-DwDC0wAm.js → frame-debugger-store-CuCtiEQ1.js} +1 -1
  127. package/dist/assets/{game-contract-seams-C22a4B79.js → game-contract-seams-DRUf45xM.js} +1 -1
  128. package/dist/assets/{game-css-scope-transform-Wv0ZdTsR.js → game-css-scope-transform-rbFoxfMV.js} +1 -1
  129. package/dist/assets/{game-document.service-BzvFIWCc.js → game-document.service-D409VVnQ.js} +1 -1
  130. package/dist/assets/{game-eval.command-DpQn_nY8.js → game-eval.command-BJ51kPy3.js} +1 -1
  131. package/dist/assets/{game-module-access-BI6oBa8Y.js → game-module-access-ib9tWhJc.js} +1 -1
  132. package/dist/assets/{game-network-Deo8lcPw.js → game-network-BZM-o9Ey.js} +3 -3
  133. package/dist/assets/{gameplay-export-BOLhxmII.js → gameplay-export-Bsvbs7wO.js} +1 -1
  134. package/dist/assets/{gameplay-replay-Dkvmv6hf.js → gameplay-replay-k_14DJ5F.js} +1 -1
  135. package/dist/assets/{gameplay.command-DCKqLv7C.js → gameplay.command-DGVwoOz_.js} +1 -1
  136. package/dist/assets/{generation-jobs-6D562vMB.js → generation-jobs-BxpAnwDo.js} +1 -1
  137. package/dist/assets/{generation.service-BFRoLb7y.js → generation.service-D1win2Pl.js} +1 -1
  138. package/dist/assets/{generations-HwV1btKK.js → generations-Dlu2fhGN.js} +1 -1
  139. package/dist/assets/{generations.status-BLiDcKsg.js → generations.status-BPYUSGr_.js} +1 -1
  140. package/dist/assets/{hierarchy-marks-DeG4E4Ke.js → hierarchy-marks-Dn7SO2iG.js} +1 -1
  141. package/dist/assets/{hosted-asset-materialization-Bod7CEMF.js → hosted-asset-materialization-DPmn23AM.js} +1 -1
  142. package/dist/assets/{index-CLUA6PYq.js → index-B41IX0yA.js} +1 -1
  143. package/dist/assets/{index-CyLPQ8pY.js → index-B4NI0L5I.js} +1 -1
  144. package/dist/assets/{index-DkYeh000.js → index-BjUxirz3.js} +1 -1
  145. package/dist/assets/{index-KIR4Has5.js → index-C_XSSPHO.js} +1 -1
  146. package/dist/assets/{index-4hL3-0yz.js → index-Cp9b5Qfa.js} +1 -1
  147. package/dist/assets/{index-jS3rfNkZ.js → index-D1nMmQxJ.js} +1 -1
  148. package/dist/assets/{index-ClgrFOcX.js → index-D9shXtZ9.js} +7 -7
  149. package/dist/assets/{index-CHOT9sYh.js → index-FWtJb07f.js} +2 -2
  150. package/dist/assets/{index-CdLhNxor.js → index-_-7lUYI-.js} +1 -1
  151. package/dist/assets/{inference-diagnostics-BmZ5ggEK.js → inference-diagnostics-V4igFQX2.js} +1 -1
  152. package/dist/assets/{ingest-boot-viewport-CipkFljr.js → ingest-boot-viewport-DBpKatwo.js} +1 -1
  153. package/dist/assets/{ingest-siblings-CEwYp-xg.js → ingest-siblings-C8OmNNTc.js} +1 -1
  154. package/dist/assets/{ingest-source-persistence-CVU1rTj0.js → ingest-source-persistence-DH7q9G1S.js} +1 -1
  155. package/dist/assets/{ingest.service-bNqvcqoK.js → ingest.service-D3Ru3YUS.js} +1 -1
  156. package/dist/assets/{inspect-BunjdqX7.js → inspect-Bhr2b3pa.js} +1 -1
  157. package/dist/assets/instances.command-CDIwEW8H.js +1 -0
  158. package/dist/assets/{json-history-resource-CDEoQe1R.js → json-history-resource-B8_YpeAT.js} +1 -1
  159. package/dist/assets/{layered-pick-guh6WlA7.js → layered-pick-MdBIQeUt.js} +1 -1
  160. package/dist/assets/{light-BPZivpCK.js → light-BvCKNW4e.js} +1 -1
  161. package/dist/assets/{live-project-verbs-Bqmxbr2o.js → live-project-verbs-DggWGgn-.js} +1 -1
  162. package/dist/assets/{machine.document-CAFPFq5K.js → machine.document-CTyXmK5a.js} +1 -1
  163. package/dist/assets/{machines.finder-CbUWReMp.js → machines.finder-C6WR7N-k.js} +1 -1
  164. package/dist/assets/{material-huG6lNEK.js → material-BoHGaIcq.js} +1 -1
  165. package/dist/assets/{material-factory-BkyOzJ7B.js → material-factory-D-cyMEti.js} +1 -1
  166. package/dist/assets/{mesh-CjCfRcFK.js → mesh-B-ksBKUU.js} +1 -1
  167. package/dist/assets/{model-asset-sections.service-Dt4V2K2v.js → model-asset-sections.service-DHsGD1SZ.js} +1 -1
  168. package/dist/assets/{model-inspection-BDA5jikL.js → model-inspection-Bsfj6b48.js} +1 -1
  169. package/dist/assets/{model-thumbnail-CF3qGQWb.js → model-thumbnail-Bp-1yQ-X.js} +1 -1
  170. package/dist/assets/{models.finder-yh4YeGrA.js → models.finder-DksRlbR8.js} +1 -1
  171. package/dist/assets/{module-mode-D8en13PD.js → module-mode-qROy_5Tk.js} +2 -2
  172. package/dist/assets/{mount-canvas-ingest-root-JOkm2Ypj.js → mount-canvas-ingest-root-CLbJS_Ob.js} +2 -2
  173. package/dist/assets/{mount-dom-ingest-root-CVXFnJZb.js → mount-dom-ingest-root-CI7VtdaS.js} +2 -2
  174. package/dist/assets/{mount-ingest-root-C3o0o28C.js → mount-ingest-root-BX_usF8y.js} +2 -2
  175. package/dist/assets/{mount-manifest-d7WQ9MYp.js → mount-manifest-lQBlK2Y1.js} +1 -1
  176. package/dist/assets/{mount-three-ingest-root-Dqd4XWP1.js → mount-three-ingest-root-g6yhs1S-.js} +1 -1
  177. package/dist/assets/{mounted-authoring-B697dYuN.js → mounted-authoring-D5cvzNXX.js} +1 -1
  178. package/dist/assets/{mounted-story-viewport-source-BvNZ3QQn.js → mounted-story-viewport-source-C-RZo_xH.js} +1 -1
  179. package/dist/assets/{native-debug-module-iX2-V5kg.js → native-debug-module-Bh_HQdg_.js} +1 -1
  180. package/dist/assets/{navigation-CIl9OY1F.js → navigation-DVO5eQO6.js} +1 -1
  181. package/dist/assets/{navmesh.menu-DrMoj7Ag.js → navmesh.menu-Cu9R-p4V.js} +1 -1
  182. package/dist/assets/{navmesh.service-CTr1NVfz.js → navmesh.service-D6EeQxE0.js} +1 -1
  183. package/dist/assets/network-observer.service-CLE3M7gH.js +1 -0
  184. package/dist/assets/{network.utility-Btexm5ao.js → network.utility-D4Uo1xUC.js} +1 -1
  185. package/dist/assets/{object3d-document-session-registry-CADiW-LP.js → object3d-document-session-registry-bor-eSgr.js} +2 -2
  186. package/dist/assets/{oid-transform-Ca1oU_Ei.js → oid-transform-rEmA5PfE.js} +1 -1
  187. package/dist/assets/{particles-D1oPwNJh.js → particles-BxlIkQUX.js} +1 -1
  188. package/dist/assets/{pixi-authoring-adapter-B1BBfTju.js → pixi-authoring-adapter-CTSRtvNw.js} +1 -1
  189. package/dist/assets/{pixi-live-write-target-BcUhtqmJ.js → pixi-live-write-target-DaUAvNu7.js} +1 -1
  190. package/dist/assets/{play.command-ScnwcvJr.js → play.command-BtV56gUr.js} +2 -2
  191. package/dist/assets/{presentation-DPfnCjNA.js → presentation-DxTT40_3.js} +1 -1
  192. package/dist/assets/{product-D_9saRiZ.js → product-BAGhTFHw.js} +1 -1
  193. package/dist/assets/{profiler.action-PXTw93E5.js → profiler.action-DaSS1RoY.js} +1 -1
  194. package/dist/assets/{profiler.menu-DPFV6QQD.js → profiler.menu-5OyI3lyY.js} +1 -1
  195. package/dist/assets/{profiler.utility-eDooJGnI.js → profiler.utility-DLzaMOPh.js} +1 -1
  196. package/dist/assets/{project-authoring-session-BmeutotA.js → project-authoring-session-DZOgiTch.js} +2 -2
  197. package/dist/assets/{properties-bone-constraints.inspector-BW0V1WXQ.js → properties-bone-constraints.inspector-JMlHKfN2.js} +1 -1
  198. package/dist/assets/{properties-bone.inspector-DIvTZhY8.js → properties-bone.inspector-C-c7iGEx.js} +1 -1
  199. package/dist/assets/{properties-collection.inspector-Dbt5XMhs.js → properties-collection.inspector-PXHDUs1b.js} +1 -1
  200. package/dist/assets/{properties-constraints.inspector-5SvB0GDC.js → properties-constraints.inspector-CQnnGi1O.js} +1 -1
  201. package/dist/assets/{properties-data.inspector-C-SngIsI.js → properties-data.inspector-DuEPeVBm.js} +1 -1
  202. package/dist/assets/{properties-material.inspector-CYAWsvsX.js → properties-material.inspector-BhKP0Zc_.js} +1 -1
  203. package/dist/assets/{properties-modifiers.inspector-XN6BL-Ll.js → properties-modifiers.inspector-lOMb72vk.js} +1 -1
  204. package/dist/assets/{properties-object.inspector-CfryU0kN.js → properties-object.inspector-BU2hn26Q.js} +1 -1
  205. package/dist/assets/{properties-output.inspector-COfgmFUW.js → properties-output.inspector-yNaC3IgX.js} +1 -1
  206. package/dist/assets/{properties-particles.inspector-BCh0vFr6.js → properties-particles.inspector-CaHfdQZB.js} +1 -1
  207. package/dist/assets/{properties-physics.inspector-B6to1u6U.js → properties-physics.inspector-Bt9Xjyu-.js} +1 -1
  208. package/dist/assets/{properties-render.inspector-C4hVfo7j.js → properties-render.inspector-Cl8UBLPY.js} +1 -1
  209. package/dist/assets/{properties-scene.inspector-dKta4xn5.js → properties-scene.inspector-D9cgONMx.js} +1 -1
  210. package/dist/assets/{properties-texture.inspector-ZlNhW25m.js → properties-texture.inspector-804GEF8F.js} +1 -1
  211. package/dist/assets/{properties-view-layer.inspector-CIxHmkDR.js → properties-view-layer.inspector-CLo0Z-B1.js} +1 -1
  212. package/dist/assets/{properties-world.inspector-Ce0q2dmK.js → properties-world.inspector-CjywenDE.js} +1 -1
  213. package/dist/assets/{r3f-design-session-1riISktt.js → r3f-design-session-B2k02ypD.js} +2 -2
  214. package/dist/assets/{r3f-physics-binding-DuG97FR9.js → r3f-physics-binding-D1rgVgsz.js} +1 -1
  215. package/dist/assets/{r3f-source-authoring-adapter-B8qqrdwk.js → r3f-source-authoring-adapter-Dj0r13-b.js} +1 -1
  216. package/dist/assets/{react-canvas-navigation-CxBm8iw8.js → react-canvas-navigation-t00NiEKB.js} +1 -1
  217. package/dist/assets/{react-inspector.service-BcdePwno.js → react-inspector.service-Xp4f-M0O.js} +1 -1
  218. package/dist/assets/{react-story-board-CMvkLAkF.js → react-story-board-DAQaZNga.js} +1 -1
  219. package/dist/assets/{react-three-rapier.esm-D5svf-ME.js → react-three-rapier.esm-D13B7Exz.js} +1 -1
  220. package/dist/assets/{react-world-authoring-adapter-Dq8NqvWu.js → react-world-authoring-adapter-zzyaxcpN.js} +1 -1
  221. package/dist/assets/{realm-services-CqjVBanw.js → realm-services-CyeBcuLZ.js} +1 -1
  222. package/dist/assets/{reflection-probe-capture.inspector-uEvyppEj.js → reflection-probe-capture.inspector-BpdGQ2gf.js} +1 -1
  223. package/dist/assets/{registry-D7lFIA8c.js → registry-DM1tIelZ.js} +1 -1
  224. package/dist/assets/{relative-import-specifier-CA9mSNXO.js → relative-import-specifier-txHdCBKR.js} +1 -1
  225. package/dist/assets/{render-env-BHasp-z3.js → render-env-DiO35wd3.js} +1 -1
  226. package/dist/assets/{render-features-sSb1-c5x.js → render-features-Bv3_74_x.js} +1 -1
  227. package/dist/assets/{render-settings-CUbo4Sw5.js → render-settings-8kb_yvkr.js} +1 -1
  228. package/dist/assets/{resolve-three-TQ367RQD.js → resolve-three-D9rgCC5Z.js} +3 -3
  229. package/dist/assets/{root-seam-contract-CneTgNww.js → root-seam-contract-BgkkJVuJ.js} +1 -1
  230. package/dist/assets/{run-selection-CNsOQTEG.js → run-selection-WrcYgYP3.js} +1 -1
  231. package/dist/assets/{scene-capture-KbdRgsD3.js → scene-capture-C08wT5TW.js} +1 -1
  232. package/dist/assets/{scene-document.service-CmPSUocW.js → scene-document.service-D7sb6hvQ.js} +2 -2
  233. package/dist/assets/{scene-framing-B5JC4NeG.js → scene-framing-BSvegpi4.js} +1 -1
  234. package/dist/assets/{seeded-random-B6zqGkWP.js → seeded-random-Bc5190so.js} +1 -1
  235. package/dist/assets/{setup-renderer-efjIBSGF.js → setup-renderer-JwrNwzqH.js} +1 -1
  236. package/dist/assets/{source-object3d-authoring-adapter-DeeboYub.js → source-object3d-authoring-adapter-BJwLQVsv.js} +1 -1
  237. package/dist/assets/{source-persistence-backend-Cwy93SmQ.js → source-persistence-backend-DsG30XMj.js} +1 -1
  238. package/dist/assets/{stage-keyboard-GNCaTXLA.js → stage-keyboard-BnzybgXw.js} +1 -1
  239. package/dist/assets/{stage-overlay-set-DV3SCzJb.js → stage-overlay-set-BWxO_Pk6.js} +1 -1
  240. package/dist/assets/{stage-presence-markers-CBEU1Kzo.js → stage-presence-markers-BD5JPVX6.js} +1 -1
  241. package/dist/assets/{stage-transform-tools-C9nNDW6n.js → stage-transform-tools-CHvXlnKB.js} +1 -1
  242. package/dist/assets/{standard-viewport-dressing-BJkGwiNT.js → standard-viewport-dressing-4xAZCGJ3.js} +1 -1
  243. package/dist/assets/{state-watch.action-Doz_jrzS.js → state-watch.action-0KAywung.js} +1 -1
  244. package/dist/assets/{state-watch.menu-Dj4DUUxN.js → state-watch.menu-4xjTZIEx.js} +1 -1
  245. package/dist/assets/{state-watch.utility-COPa8xpV.js → state-watch.utility-DZgzPGEZ.js} +1 -1
  246. package/dist/assets/{story-capture-stRSY4PQ.js → story-capture-d695eMLJ.js} +1 -1
  247. package/dist/assets/{story-documents-CYzWYY1o.js → story-documents-C1hZeYU3.js} +1 -1
  248. package/dist/assets/{story-documents.service-DJBu4rve.js → story-documents.service-CSXB6uqT.js} +1 -1
  249. package/dist/assets/{story-documents.service-C5r8KFEG.js → story-documents.service-bB0UDbvA.js} +1 -1
  250. package/dist/assets/{story-media-presence-D4AIsAtK.js → story-media-presence-CxD6G_Mu.js} +1 -1
  251. package/dist/assets/{story-pixi-preview-mPo3OFOd.js → story-pixi-preview-CJKGDBKs.js} +1 -1
  252. package/dist/assets/{story-presentation-Dw4Vw65P.js → story-presentation-BBS9x4BP.js} +1 -1
  253. package/dist/assets/{story-three-preview-CWM0Rj7x.js → story-three-preview-v22RRpqB.js} +2 -2
  254. package/dist/assets/{studio-environment-Bw9zMFE8.js → studio-environment-CvCEc6PK.js} +1 -1
  255. package/dist/assets/{surface-state-b_H4iOCJ.js → surface-state-EsG-yMSi.js} +1 -1
  256. package/dist/assets/{syntactic-prop-specs-BCdwWi-T.js → syntactic-prop-specs-DvSr6VoQ.js} +1 -1
  257. package/dist/assets/{team-playtest.service-CnxdTghn.js → team-playtest.service-Bp6j6MAv.js} +1 -1
  258. package/dist/assets/{three-DWy0sZom.js → three-Do16bEo9.js} +1 -1
  259. package/dist/assets/{three-authoring-adapter-9LcUBPaU.js → three-authoring-adapter-C2QFVlpK.js} +1 -1
  260. package/dist/assets/three-authoring.service-DxL4grJx.js +2 -0
  261. package/dist/assets/{three-ingest-runtime-x9nLmUl-.js → three-ingest-runtime-DW-lHDmp.js} +1 -1
  262. package/dist/assets/{three-integration-DB-xQHD5.js → three-integration-C1onOQwq.js} +2 -2
  263. package/dist/assets/three-integration.service-26hsEOk3.js +1 -0
  264. package/dist/assets/{three-projection-core-IUovHgg_.js → three-projection-core-1FETWj5n.js} +1 -1
  265. package/dist/assets/{three-state-_ImCbP87.js → three-state-d-szeOea.js} +1 -1
  266. package/dist/assets/{three-story-capture.service-wKwfSnqA.js → three-story-capture.service-gnrRzcjj.js} +2 -2
  267. package/dist/assets/{three-story-model-BxWKcl9d.js → three-story-model-CbEMWEte.js} +1 -1
  268. package/dist/assets/{three-viewport-presentation-Bg86EsDJ.js → three-viewport-presentation-D1ysWIW4.js} +1 -1
  269. package/dist/assets/{transform-mode-request-BnV8FSnx.js → transform-mode-request-B3AxgwGW.js} +1 -1
  270. package/dist/assets/{transport-strip-BZQnaxFN.js → transport-strip-D4N14xHx.js} +1 -1
  271. package/dist/assets/transport.header-D3j_V-tN.js +1 -0
  272. package/dist/assets/{tuples-DR33sMq6.js → tuples-B3URXxaa.js} +1 -1
  273. package/dist/assets/{ui-board-document-VJMvm6Ks.js → ui-board-document-BSrfzH8L.js} +2 -2
  274. package/dist/assets/{user-data-DL6HsBPf.js → user-data-DHB4MWum.js} +1 -1
  275. package/dist/assets/{utility-view-state-ghWXsYXq.js → utility-view-state-CfZ51NRS.js} +1 -1
  276. package/dist/assets/{viewport-door-BV_lf5uK.js → viewport-door-DkDcO9tp.js} +1 -1
  277. package/dist/assets/{viewport-root-presentation-CKqhX3mt.js → viewport-root-presentation-DtuBFJ-J.js} +1 -1
  278. package/dist/assets/{viewport-surface-status-D7M2L2lI.js → viewport-surface-status-HKbJtC2G.js} +1 -1
  279. package/dist/assets/{webworkerAll-DDbFvxgB.js → webworkerAll-JD3yAUg1.js} +1 -1
  280. package/dist/assets/{workspace-arrangement-86_8Kk5K.js → workspace-arrangement-BOk46mGq.js} +1 -1
  281. package/dist/assets/{world-documents-DeNJUefV.js → world-documents-AnhAH_9y.js} +1 -1
  282. package/dist/assets/{world-root-stage-binding-VOrldLB4.js → world-root-stage-binding-H0SUNbfK.js} +1 -1
  283. package/dist/assets/{xstate-animation-binding-747CfEeB.js → xstate-animation-binding-BjWKb5ne.js} +1 -1
  284. package/dist/assets/{xstate-animation-meta-DNMlMnr-.js → xstate-animation-meta-CTBp-Vc5.js} +1 -1
  285. package/dist-node/cli.js +16 -16
  286. package/package.json +16 -16
  287. package/dist/assets/InspectorObjectPreview-C87CasN_.js +0 -1
  288. package/dist/assets/Object3DDocumentViewport-BpiyRQ5p.js +0 -2
  289. package/dist/assets/autoplay.service-CKBqjozr.js +0 -1
  290. package/dist/assets/instances.command-DzcXdKuG.js +0 -1
  291. package/dist/assets/network-observer.service-DyzpGKA7.js +0 -1
  292. package/dist/assets/three-authoring.service-DdTMF4A2.js +0 -2
  293. package/dist/assets/three-integration.service-DwToRGIc.js +0 -1
  294. package/dist/assets/transport.header-1SF4ZbEd.js +0 -1
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DHhMOs_s.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/stage-transform-tools-C9nNDW6n.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-ClgrFOcX.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/editor-shell-store-aKHbAoCV.js","assets/output-pass-HurwNl0G.js","assets/Pass-D1MRT672.js","assets/editor-layers-DwaX5UFy.js","assets/workspace-arrangement-86_8Kk5K.js","assets/user-data-DL6HsBPf.js","assets/entity-object-BLJ-I8XT.js","assets/three-contract-Dkt6PmWY.js","assets/Toolbar-yvFlRv8R.js","assets/transform-mode-request-BnV8FSnx.js","assets/three-state-_ImCbP87.js","assets/standard-viewport-dressing-BJkGwiNT.js","assets/content-bounds-Dl5Y3LLv.js","assets/hierarchy-marks-DeG4E4Ke.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/preview-renderer-BrYNFV1p.js","assets/renderer-ownership-BovSEcLv.js","assets/live-mixers-B-bwLZ7c.js","assets/live-gesture-lock-DJbrjOqf.js","assets/three-integration-DB-xQHD5.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-guh6WlA7.js","assets/root-stacking-BEd9ZvxC.js","assets/model-thumbnail-CF3qGQWb.js","assets/studio-environment-Bw9zMFE8.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/object3d-document-session-registry-CADiW-LP.js","assets/component-instance-root-wO1p-rLr.js","assets/viewport-door-BV_lf5uK.js","assets/asset-preview-BUpxsHNd.js","assets/bitmap-label-Ct4k6ehY.js","assets/model-inspection-BDA5jikL.js","assets/three-viewport-presentation-Bg86EsDJ.js","assets/clip-planes-CnAI6DZn.js","assets/three-DWy0sZom.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/OrbitControls-B13MKuwC.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/scene-framing-B5JC4NeG.js","assets/source-object3d-authoring-adapter-DeeboYub.js","assets/three-projection-core-IUovHgg_.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/transport-strip-BZQnaxFN.js","assets/viewport-surface-status-D7M2L2lI.js","assets/stage-overlay-set-DV3SCzJb.js","assets/TransientHint-Bslncm_l.js","assets/ViewportShadingMenu-CgbuQ0e-.js","assets/stage-keyboard-GNCaTXLA.js","assets/camera-authoring-DYjhU5Zp.js","assets/stage-presence-markers-CBEU1Kzo.js","assets/collaboration-presence-1_UMOAkw.js"])))=>i.map(i=>d[i]);
2
- import{kQ as Vr,ln as wr,kX as Ke,Z as bs,eX as Yn,lt as Kn,_ as st,G as Zn,lu as Qn,j1 as sn,bw as et,aM as Be,a7 as Se,bz as Jn,bN as ei,a6 as Ze,lv as ti,bP as ri,de as si,aL as ys,df as Ss,lw as nn,lx as ni,iX as ii,bq as Cr,br as xs,bs as tt,al as rt,er as oi,ly as ai,lz as ci,a8 as ye,ak as li,lA as ui,lB as hi,lC as di,lD as pi,lE as fi,hl as mi,lF as gi,b5 as vi,lG as on,aQ as wi,gM as bi,lH as Ps,lI as Cs,lJ as ks,b1 as Ms,kP as Es,fC as Os,lK as yi,F as Si,bu as xi,bt as Rs,lL as Pi,bK as Ci,j4 as ki,gm as js,lM as Mi,lN as Ei,lO as Oi,hg as Ri,dI as ji,kY as Ti,kO as Ai,fX as Vi,gg as Li,lP as Ts,B as Fi,lQ as Di,bR as Bi}from"./index-ClgrFOcX.js";import{a as p}from"./jsx-runtime-DPjLkJKQ.js";import{t as kr,a as Hi}from"./three-state-_ImCbP87.js";import{i as H,b as _i,a as zi,w as Wi,c as Ii,s as As}from"./standard-viewport-dressing-BJkGwiNT.js";import{r as m}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a as Mr}from"./content-bounds-Dl5Y3LLv.js";import{EDITOR_LAYER as an,isInEditorOwnedSubtree as Vs}from"./editor-layers-DwaX5UFy.js";import{createStandardEnvironment as Ni}from"./environment-Dg-YaLsA.js";import{a as $i}from"./preview-renderer-BrYNFV1p.js";import{s as cn}from"./user-data-DL6HsBPf.js";import{el as Gi,cm as Er,n as Ui,cq as qi,ch as br,co as Xi,ev as Yi,cW as Ls,E as Fs,bu as Ki,bh as Nt,N as ln,M as un,dg as hn,df as dn,fo as F,_ as be,d5 as Or,d9 as Zi,L as Ds,I as Rr,ez as Qi,dp as jr,cj as Tr,em as Ji,cp as eo,c0 as to,aO as ro,bX as so,fx as Bs,bi as no,eu as io,cg as we,T as oo,ej as pn,A as ao,d7 as co,eW as Hs,fd as mt,e6 as _s}from"./three.core-3arARmh6.js";import{s as lo,a as uo}from"./live-mixers-B-bwLZ7c.js";import{l as ho,w as po}from"./live-gesture-lock-DJbrjOqf.js";import{v as fo}from"./output-pass-HurwNl0G.js";import{V as mo,a as go}from"./three-integration-DB-xQHD5.js";import{a as He}from"./three-contract-Dkt6PmWY.js";import{d as $t,f as vo}from"./model-inspection-BDA5jikL.js";import{c as wo,p as It,d as zs,i as Ws,r as bo,b as yo,a as So,t as Is,s as Ns,C as xo,e as Po,f as Co,E as ko}from"./three-viewport-presentation-Bg86EsDJ.js";import{s as Ar}from"./workspace-arrangement-86_8Kk5K.js";import{a as Mo,b as Eo,L as Oo}from"./LineSegments2-DN9pUfWA.js";import{s as Ro,o as jo,a as To,b as Ao}from"./object3d-document-session-registry-CADiW-LP.js";import{S as Vo}from"./source-object3d-authoring-adapter-DeeboYub.js";import{s as Lo,i as yr}from"./editor-presentation-activity-CqJH4G9t.js";import{r as $s,c as Gs}from"./viewport-door-BV_lf5uK.js";import{T as Fo}from"./transport-strip-BZQnaxFN.js";import{V as Do,O as Bo}from"./viewport-surface-status-D7M2L2lI.js";import{t as fn}from"./editor-shell-store-aKHbAoCV.js";class mn extends Gi{previousMatrix=new Er;updateMatrix(){const e=this.matrixWorldNeedsUpdate;this.previousMatrix.copy(this.matrix),super.updateMatrix(),!e&&this.previousMatrix.equals(this.matrix)&&(this.matrixWorldNeedsUpdate=!1)}}const gn=30;function vn(n,e,t){return n<e?e:n>t?t:n}function Ho(n,e){const t=n.animations;if(t.length===0)return null;const r=new Ui(n);let i=t[0];if(!i)return null;const a=o=>{r.stopAllAction();const l=r.clipAction(o);l.paused=!1,l.play(),i=o};a(i);const c=e.attach({id:n.uuid,label:n.name||i.name||"Clip",range:()=>({start:0,end:i?.duration??0,fps:gn}),seek:o=>{r.setTime(vn(o,0,i?.duration??0))},clips:()=>t.map(o=>({id:o.name,label:o.name})),setClip:o=>{const l=t.find(d=>d.name===o);l&&a(l)}});return()=>{c(),r.stopAllAction(),r.uncacheRoot(n)}}function _o(n,e){const t=uo(n);if(!t)return null;let r=t.clips.values().next().value;if(!r)return null;const i=c=>{t.mixer.stopAllAction();const o=t.mixer.clipAction(c);o.paused=!1,o.play(),r=c};return e.attach({id:n.uuid,label:n.name||r.name||"Animation",range:()=>({start:0,end:r?.duration??0,fps:gn}),seek:c=>{t.mixer.setTime(vn(c,0,r?.duration??0))},clips:()=>[...t.clips.entries()].map(([c,o])=>({id:c,label:o.name||c})),setClip:c=>{const o=t.clips.get(c);o&&i(o)}})}function Us(n,e,t={}){const r=new Map,i=()=>{const o=new Set;(typeof n=="function"?n():n)?.traverse(d=>{if(r.has(d.uuid)){o.add(d.uuid);return}const y=_o(d,e)??Ho(d,e);y&&(r.set(d.uuid,y),o.add(d.uuid))});for(const[d,y]of[...r])o.has(d)||(y(),r.delete(d))};i();const a=t.rescanOnLiveMixers,c=a?lo(()=>{a()&&i()}):()=>{};return{refresh:i,dispose:()=>{c();for(const o of r.values())o();r.clear()}}}const je=()=>globalThis.performance?.now()??Date.now();function zo(n,e){return n.length===0?0:n[Math.min(n.length-1,Math.floor((n.length-1)*e))]??0}function Wo(n=!1){const e=new Set,t=[],r=new Map,i=new Map,a=new Map;let c=[],o=[],l=n,d=!1,y=!1,w=0,C=0,P=0;const N=[];let _=0,E=0,k={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},$={enabled:l,recording:y,fps:0,cpuMs:0,p95Ms:0,p99Ms:0,frames:[],phases:[],systems:[],components:[],render:k};function Q(){const x=t.at(-1),q=t.slice();let z;const Y=D=>(z??=q.map(Z=>Z.intervalMs).filter(Z=>Z>0).sort((Z,V)=>Z-V),zo(z,D));$={enabled:l,recording:y,fps:x?.intervalMs?1e3/x.intervalMs:0,cpuMs:x?.cpuMs??0,get p95Ms(){return Y(.95)},get p99Ms(){return Y(.99)},frames:q,phases:x?.phases??[],systems:[...i].map(([D,Z])=>({name:D,ms:Z})).sort((D,Z)=>Z.ms-D.ms),components:[...a].map(([D,Z])=>({name:D,ms:Z})).sort((D,Z)=>Z.ms-D.ms),render:k};for(const D of e)D()}return{get enabled(){return l},set enabled(x){l!==x&&(l=x,x&&!d&&(P=0),Q())},get telemetryEnabled(){return d},set telemetryEnabled(x){if(d===x)return;const q=!l&&!d;d=x,x&&q&&(P=0),Q()},get recording(){return y},startRecording(){const x=!l&&!d;l=!0,x&&(P=0),y=!0,t.length=0,Q()},stopRecording(){y=!1,Q()},clear(){t.length=0,Q()},beginFrame(){!l&&!d||(r.clear(),i.clear(),a.clear(),c=[],o=[],N.length=0,k={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},C=je())},beginPhase(){l&&N.push(je())},endPhase(x){if(!l)return;const q=N.pop()??C,z=je()-q,Y=r.get(x);r.set(x,{ms:(Y?.ms??0)+z,startMs:Y?.startMs??q-C}),y&&performance.measure(`volter.phase.${x}`,{start:q,duration:z})},systemObserver:{beginSystem(){l&&(_=je())},endSystem(x,q,z){if(!l)return;const Y=je(),D=`${x} / ${q} / ${z}`;i.set(D,(i.get(D)??0)+Y-_),c.push({name:D,phase:q,startMs:_-C,ms:Y-_})}},beginComponent(){y&&(E=je())},endComponent(x,q=""){if(!y)return;const z=je();a.set(x,(a.get(x)??0)+z-E),o.push({name:x,phase:q,startMs:E-C,ms:z-E})},reportRender(x){l&&(k={gpuMs:x.gpuMs??k.gpuMs,drawCalls:k.drawCalls+x.drawCalls,triangles:k.triangles+x.triangles,geometries:k.geometries+x.geometries,textures:k.textures+x.textures,renderPasses:x.renderPasses===void 0?k.renderPasses:(k.renderPasses??0)+x.renderPasses})},endFrame(){if(!l&&!d)return;const x=je(),q=P===0?0:C-P;P=C;const z={id:++w,timestamp:x,intervalMs:q,cpuMs:x-C,phases:[...r].map(([Y,{ms:D,startMs:Z}])=>({name:Y,ms:D,startMs:Z})).sort((Y,D)=>D.ms-Y.ms),systems:c.slice(),components:o.slice(),render:{...k}};t.push(z),t.length>600&&t.splice(0,t.length-600),y&&performance.measure("volter.frame",{start:C,duration:z.cpuMs}),Q()},subscribe(x){return e.add(x),()=>{e.delete(x)}},getSnapshot(){return $},exportJSON(){return JSON.stringify({version:2,capturedAt:new Date().toISOString(),frames:t},null,2)}}}class Io{sources=new Map;frame=0;count=0;bind(e){this.frame++;const t=e.renderBufferDirect,r=this;return e.renderBufferDirect=function(i,a,c,o,l,d){const y=a?.overrideMaterial===o?r.get(o,c,l):o;return t.call(this,i,a,c,y,l,d)},()=>{e.renderBufferDirect=t}}get(e,t,r){if(!(e instanceof qi)||e.transparent||e.map||e.alphaMap||e.displacementMap||e.clippingPlanes||e.onBeforeCompile!==br.prototype.onBeforeCompile||e.customProgramCacheKey!==br.prototype.customProgramCacheKey||e.onBeforeRender!==br.prototype.onBeforeRender||!(r instanceof Xi)||r instanceof Yi||Object.keys(t.morphAttributes).length||r.onAfterRender!==Ls.prototype.onAfterRender)return e;const i=r instanceof Fs,a=r instanceof Ki;if(r.onBeforeRender!==(i?Fs.prototype.onBeforeRender:Ls.prototype.onBeforeRender)||a&&(r.instanceColor||r.morphTexture)||i&&Reflect.get(r,"colorTexture")!==null)return e;const c=(i?1:a?2:0)+(e.vertexColors&&t.getAttribute("color")?.itemSize===4?4:0);let o=this.sources.get(e);if(!o){if(this.count>=32)return e;o=new Map,this.sources.set(e,o)}let l=o.get(c);if(l)l.frame!==this.frame&&(l.material.copy(e),l.version!==e.version&&(l.material.needsUpdate=!0),l.version=e.version,l.frame=this.frame);else{if(this.count>=32)return e;l={material:e.clone(),frame:this.frame,version:e.version},o.set(c,l),this.count++}return l.material}dispose(){for(const e of this.sources.values())for(const{material:t}of e.values())t.dispose();this.sources.clear(),this.count=0}}class No extends Nt{constructor(e,t){super(),this.bones=e;const r=new Set;for(const o of e){const l=o.parent;l?.isBone&&this.addSegment(l,o,r);for(const d of o.children)d.isBone&&this.addSegment(o,d,r)}this.linePositions=new Float32Array(Math.max(this.segments.length*6,6));const i=new Mo;i.setPositions(this.linePositions),this.lineMaterial=new Eo({color:t,linewidth:5,worldUnits:!1,depthTest:!1,depthWrite:!1,toneMapped:!1,alphaToCoverage:!0}),this.lines=new Oo(i,this.lineMaterial),this.lines.onBeforeRender=o=>{o.getSize(this.lineMaterial.resolution)},this.lines.frustumCulled=!1,this.lines.renderOrder=1001,this.add(this.lines),this.pointPositions=new Float32Array(Math.max(e.length*3,3));const a=new ln;a.setAttribute("position",new un(this.pointPositions,3));const c=new hn({color:t,size:11,sizeAttenuation:!1,depthTest:!1,depthWrite:!1,toneMapped:!1});this.points=new dn(a,c),this.points.frustumCulled=!1,this.points.renderOrder=1002,this.add(this.points),this.name="__object3d_document_bone_selection",Ar(this,"editorHelper",!0),this.traverse(o=>o.layers.set(an)),this.update()}segments=[];linePositions;pointPositions;lines;lineMaterial;points;worldPosition=new F;setColor(e){this.lineMaterial.color.setHex(e),this.points.material.color.setHex(e)}update(){let e=0;for(const[i,a]of this.segments)i.getWorldPosition(this.worldPosition),this.linePositions.set(this.worldPosition.toArray(),e),a.getWorldPosition(this.worldPosition),this.linePositions.set(this.worldPosition.toArray(),e+3),e+=6;const t=this.lines.geometry.getAttribute("instanceStart");t&&(t.data.needsUpdate=!0),e=0;for(const i of this.bones)i.getWorldPosition(this.worldPosition),this.pointPositions.set(this.worldPosition.toArray(),e),e+=3;const r=this.points.geometry.getAttribute("position");r&&(r.needsUpdate=!0)}dispose(){this.lines.geometry.dispose(),this.lineMaterial.dispose(),this.points.geometry.dispose(),this.points.material.dispose()}addSegment(e,t,r){const i=`${e.uuid}:${t.uuid}`;r.has(i)||(r.add(i),this.segments.push([e,t]))}}const $o="skeletons",Sr=new be(58879),xr=new be(16756736);function Go(n){const e=n.geometry.getAttribute("color");for(let r=0;r<e.count;r+=2)e.setXYZ(r,Sr.r,Sr.g,Sr.b),r+1<e.count&&e.setXYZ(r+1,xr.r,xr.g,xr.b);e.needsUpdate=!0,n.renderOrder=999;const t=n.material;t.depthTest=!1,t.depthWrite=!1,t.toneMapped=!1,Ar(n,"editorHelper",!0),Ar(n,"editorHelperType",$o),n.traverse(r=>r.layers.set(an))}const Uo=1,qo=700,Xo=.001,Yo=Math.PI-.001,Ko=n=>n<.5?4*n*n*n:1-(-2*n+2)**3/2,Zo=n=>n;function Qe(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}const qs={mode:"solid",background:"neutral",projection:"perspective",skeleton:!1,bounds:!1},Xs=1119773;class Qo{constructor(e,t,r,i,a,c,o=new be(2106410),l=null){this.documentId=e,this.root=t,this.scene=r,this.renderer=i,this.viewport=a,this.authoring=c,this.neutralBackground=o,this.frameBox=l,this.unsubscribeSelectionTheme=Vr(i.domElement,this.syncSelectionTheme),a.orbitControls.addEventListener("start",this.cancelLookForHuman),this.unsubscribeRotateStart=a.onRotateStart(this.autoPerspective),this.unsubscribeAxisView=a.onAxisView(this.axisView)}profiler=Wo();shading=new mo;depthDrawMaterials=new Io;helpers=[];skeletonHelper=null;boundsHelper=null;boneSelectionHighlight=null;boneSelectionSignature="";composer=null;composerLoading=!1;disposed=!1;sceneRenderPass=null;selectionOutline=null;selectionOutlinePass=null;selectedObjects=[];selectionOrigins=null;renderWidth=1;renderHeight=1;orthographicCamera=new Or;captureAspect=null;cameraOverride=null;cameraViewSource=null;through=null;leaving=!1;viewMemo=null;throughPerspective=new Zi;throughOrthographic=new Or;beforeRender=null;state=qs;version=0;listeners=new Set;unsubscribeSelectionTheme=()=>{};flight=null;flightPose=new F;topologyOverlay=null;topologyFollowers=[];unsubscribeRotateStart;unsubscribeAxisView;axisView=()=>(this.leaveCameraView(!1),this.settleFlight("superseded"),wr().autoPerspective&&this.setProjection("orthographic"),!0);autoPerspective=()=>{if(!wr().autoPerspective||this.cameraView()!==null||this.state.projection!=="orthographic")return;const e=this.viewport.camera,t=e.position.clone().sub(this.viewport.orbitControls.target),r=new F(0,1,0).applyQuaternion(e.quaternion);$t(t,r)!==null&&this.setProjection("perspective")};replaceContent(e,t){H(),this.selectionOutline?.selection.clear(),this.selectedObjects=[],this.boneSelectionSignature="",this.clearBoneSelectionHighlight(),this.clearSkeletonHelper(),this.clearBoundsHelper(),this.clearTopologyOverlay(),this.root=e,this.authoring=t,this.state.mode==="wireframe"&&this.buildTopologyOverlay(),this.state.bounds&&(this.boundsHelper=new Ds(e,16757844),this.addHelper(this.boundsHelper,"bounds")),this.syncSelectionPresentation(),this.refreshSkeletonHelper(),this.notify()}cancelLookForHuman=()=>{this.settleFlight("human")};selectionColors=null;syncSelectionTheme=()=>{this.selectionColors=Ke(this.renderer.domElement);const e=this.selectionColors.visible;this.selectionOutline&&wo(this.selectionOutline,Ke(this.renderer.domElement)),this.boneSelectionHighlight?.setColor(e)};subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));getSnapshot=()=>this.version;presentation(){return this.state}resolveFrameBounds(e="selection"){const t=e==="all"?[]:this.authoring?.selection?.get()??[];if(t.length>0){const r=new Rr;let i=!1;for(const a of t){const c=this.authoring?He(this.authoring.hierarchy,a):null;if(!c)continue;const o=Mr(c);o.isEmpty()||(r.union(o),i=!0)}if(i)return r}return this.frameBox&&!this.frameBox.isEmpty()?this.frameBox:Mr(this.root)}frame(e=1,t="selection"){this.leaveCameraView(!1);const r=this.resolveFrameBounds(t);if(r.isEmpty()){let l=0,d=0;return this.root.traverse(y=>{const w=y.geometry;w&&(l+=1,d+=w.getAttribute("position")?.count??0)}),bs.warn(`frame: nothing to frame — root "${this.root.name}" (${this.root.children.length} children, ${l} meshes, ${d} positions), selection ${JSON.stringify(this.authoring?.selection?.get()??[])}, frameBox ${this.frameBox?this.frameBox.isEmpty()?"empty":"set":"none"}`,"document"),!1}this.settleFlight("superseded");const i=r.getCenter(new F),a=this.viewport.camera.position.clone().sub(this.viewport.orbitControls.target).normalize();a.lengthSq()===0&&a.set(.8,.5,-1).normalize();const c=Math.min(10,Math.max(.1,Qe(e,1))),o=It(r,this.viewport.camera,a)*c;return this.viewport.setPose(i.clone().addScaledVector(a,o),i),!0}orbit(e){return this.launchFlight(Qe(e.azimuth,0),Qe(e.elevation,0),Math.min(60,Math.max(0,Qe(e.duration,.6))),Ko)}turntable(e){const t=Qe(e.revolutions,1);return this.launchFlight(t*Math.PI*2,0,Math.min(60,Math.max(0,Qe(e.seconds,6))),Zo)}looking(){return this.flight!==null}launchFlight(e,t,r,i){this.settleFlight("superseded");const a=this.viewport.camera,c=this.viewport.orbitControls.target.clone(),o=new Qi().setFromVector3(a.position.clone().sub(c)),l=o.radius>1e-4?o.radius:Math.max(this.resolveFrameBounds().getSize(new F).length(),1),d={pivot:c,radius:l,startTheta:o.theta,startPhi:o.phi,deltaTheta:e,deltaPhi:-t,duration:r,ease:i,elapsed:0,theta:o.theta,phi:o.phi,settle:null};this.flight=d;const y=new Promise(w=>{d.settle=w});return this.applyFlightPose(d,0),r<=0&&this.settleFlight(null),y}applyFlightPose(e,t){const r=e.ease(t);e.theta=e.startTheta+e.deltaTheta*r,e.phi=Math.min(Yo,Math.max(Xo,e.startPhi+e.deltaPhi*r));const i=this.viewport.camera;i.position.setFromSphericalCoords(e.radius,e.phi,e.theta).add(e.pivot),this.viewport.orbitControls.target.copy(e.pivot),i.lookAt(e.pivot),i.updateMatrixWorld(),this.flightPose.copy(i.position)}advanceLook(e){const t=this.flight;if(!t)return;const r=Math.max(1e-4,t.radius*.001);if(this.viewport.camera.position.distanceToSquared(this.flightPose)>r*r){this.settleFlight("human");return}e>0&&Number.isFinite(e)&&(t.elapsed+=e);const i=t.duration<=0?1:Math.min(1,t.elapsed/t.duration);this.applyFlightPose(t,i),i>=1&&this.settleFlight(null)}settleFlight(e){const t=this.flight;if(!t)return;this.flight=null;const r={completed:e===null,azimuth:t.theta,elevation:Math.PI/2-t.phi,seconds:Math.min(t.elapsed,t.duration)};t.settle?.(e===null?r:{...r,cancelledBy:e})}select(e){H(),this.authoring&&Yn(this.authoring,[...e])}selection(){return[...this.authoring?.selection?.get()??[]]}idForObject(e){return this.authoring?.hierarchy.idForObject3D?.(e)??null}syncSelectionPresentation(){H();const e=(this.authoring?.selection?.get()??[]).map(i=>this.authoring?He(this.authoring.hierarchy,i):null).filter(i=>i!==null);if(this.selectedObjects=e,this.selectionOutline&&(zs(this.selectionOutline,this.selectionOutlineWanted?e:[]),this.syncComposerOutput()),this.selectionOrigins){const i=Ke(this.renderer.domElement);this.selectionOrigins.update(e,{visible:i.visible,...i.active?{active:i.active.visible}:{}})}const t=e.filter(i=>!!i.isBone),r=t.map(i=>i.uuid).join("\0");r!==this.boneSelectionSignature&&(this.boneSelectionSignature=r,this.clearBoneSelectionHighlight(),t.length>0&&(this.boneSelectionHighlight=new No(t,Ke(this.renderer.domElement).visible),this.scene.add(this.boneSelectionHighlight)),this.refreshSkeletonHelper())}frameSelection(){return this.frameIds(this.authoring?.selection?.get()??[])}frameIds(e){this.leaveCameraView(!1),this.settleFlight("superseded");const t=e.map(r=>this.authoring?He(this.authoring.hierarchy,r):null).filter(r=>r!==null);return t.length===0?!1:t.every(r=>r.isBone)?(this.frameBones(t),!0):(this.viewport.focusOnMultiple(t),!0)}setViewPreset(e,t="bounds"){H(),this.leaveCameraView(!1),this.settleFlight("superseded");const r=vo(e);let i,a;if(t==="view")i=this.viewport.orbitControls.target.clone(),a=this.viewport.camera.position.distanceTo(i);else{const l=this.resolveFrameBounds();if(l.isEmpty())return;i=l.getCenter(new F),a=It(l,this.viewport.camera,r)}const c=i.clone().addScaledVector(r,a),o=e==="top"?{x:0,y:0,z:-1}:e==="bottom"?{x:0,y:0,z:1}:{x:0,y:1,z:0};this.viewport.setPose(c,i,void 0,o),this.setProjection(e==="isometric"?"perspective":"orthographic")}setCameraPose(e,t,r){H(),this.leaveCameraView(!1),this.settleFlight("superseded"),this.viewport.setPose(e,t,r)}cameraPose(){return{position:this.viewport.camera.position.toArray(),target:this.viewport.orbitControls.target.toArray(),fov:this.viewport.camera.fov}}camera(){if(this.cameraOverride)return this.cameraOverride;const e=this.drawnCamera();return this.viewport.setGizmoCamera(e===this.viewport.camera?null:e),e}drawnCamera(){const e=this.through?this.cameraView():null;return e?this.throughCamera(e):(this.through&&!this.leaving&&(this.leaving=!0,queueMicrotask(()=>{this.leaving=!1,this.through&&!this.cameraView()&&this.leaveCameraView(!1)})),this.state.projection==="perspective"?this.viewport.camera:(this.syncOrthographicCamera(),this.orthographicCamera))}setCameraViewSource(e){this.cameraViewSource!==e&&(this.cameraViewSource=e,e||this.leaveCameraView(!1),this.notify())}hasCameraView(){return this.cameraViewSource!==null}cameraView(){const e=this.through,t=this.cameraViewSource;if(!e||!t)return null;const r=this.renderer.domElement,i=this.captureAspect?{width:this.captureAspect,height:1}:{width:r.clientWidth,height:r.clientHeight},a=this.viewport.camera,c=e.locked?`${a.position.toArray().join(",")}|${a.quaternion.toArray().join(",")}`:"",o=`${e.camera}|${i.width}|${i.height}|${e.zoom}|${e.offset.join(",")}|${c}`;if(this.viewMemo?.key===o)return this.viewMemo.view;const l=t.view(e.camera,i,e.zoom,e.offset),d=l&&e.locked?{...l,position:a.position.toArray(),quaternion:a.quaternion.toArray()}:l;return this.viewMemo={key:o,view:d},queueMicrotask(()=>{this.viewMemo=null}),d}toggleCameraView(){if(this.through)return this.leaveCameraView(!0),!0;const e=this.cameraViewSource,t=e?.camera()??null;if(!e)return!1;if(t===null)return bs.warn("camera view: No active camera — the scene has no camera to look through","document"),!1;H(),this.settleFlight("superseded");const r=this.viewport,i=r.orbitControls,a=i.enableDamping;return i.enableDamping=!1,i.update(),i.enableDamping=a,this.through={camera:t,zoom:e.zoom.opening,offset:[0,0],left:{position:r.camera.position.clone(),target:r.orbitControls.target.clone(),up:r.camera.up.clone(),projection:this.state.projection},release:this.captureCameraViewInput(),locked:!1},e.showing?.(t),this.notify(),!0}cameraViewLocked(){return!this.through||!this.cameraViewSource?.setPose?null:this.through.locked}toggleCameraViewLock(){const e=this.through,t=this.cameraViewSource;if(!(!e||!t?.setPose)){if(e.release(),e.locked=!e.locked,!e.locked)e.release=this.captureCameraViewInput();else{const r=this.cameraView(),i=this.viewport.orbitControls,a=this.viewport.camera;if(r){const E=new F(...r.position),k=new jr(...r.quaternion),$=e.left.position.distanceTo(e.left.target);a.up.set(0,1,0).applyQuaternion(k),a.position.copy(E),a.quaternion.copy(k),i.target.copy(E).addScaledVector(new F(0,0,-1).applyQuaternion(k),$),i.update()}const c=i.enabled;i.enabled=!0;const o=i.enableDamping;i.enableDamping=!1;const l=e.camera,d=E=>({position:a.position.toArray(),quaternion:a.quaternion.toArray(),final:E});let y=!1,w=null,C=!1;const P=E=>{if(y){w={...E,final:E.final||(w?.final??!1)};return}y=!0,w=null,Promise.resolve(t.setPose(l,E.position,E.quaternion,E.final)).catch(()=>{}).finally(()=>{y=!1,w&&P(w)})},N=()=>{C=!0,H(),this.notify(),P(d(!1))},_=()=>{C&&(C=!1,P(d(!0)))};i.addEventListener("change",N),i.addEventListener("end",_),e.release=()=>{_(),i.removeEventListener("change",N),i.removeEventListener("end",_),i.enabled=c,i.enableDamping=o}}this.viewMemo=null,H(),this.notify()}}cameraViewZoom(){return this.through?.zoom??null}setCameraViewZoom(e){const t=this.through,r=this.cameraViewSource;!t||!r||!Number.isFinite(e)||e<=0||(t.zoom=Math.min(r.zoom.max,Math.max(r.zoom.min,e)),H(),this.notify())}zoomCameraView(e){this.through&&this.setCameraViewZoom(this.through.zoom*e)}panCameraView(e,t){const r=this.through,i=this.cameraViewSource;if(!r||!i)return;const[a,c]=i.pan(r.offset,r.zoom,e,t);r.offset=[a,c],H(),this.notify()}leaveCameraView(e){const t=this.through;if(!t)return;const r=this.cameraView();t.release(),this.through=null,this.viewMemo=null,this.cameraViewSource?.showing?.(null),this.viewport.setGizmoCamera(null);const i=this.viewport;if(e)i.camera.position.copy(t.left.position),i.camera.up.copy(t.left.up),i.orbitControls.target.copy(t.left.target),this.state={...this.state,projection:t.left.projection};else if(r){const a=t.left.position.distanceTo(t.left.target),c=new F(...r.position),o=new jr(...r.quaternion),l=new F(0,0,-1).applyQuaternion(o);i.camera.up.set(0,1,0).applyQuaternion(o),i.camera.position.copy(c),i.orbitControls.target.copy(c).addScaledVector(l,a);const d=$t(t.left.position.clone().sub(t.left.target),t.left.up)!==null,y=wr().autoPerspective&&d?"perspective":t.left.projection;this.state={...this.state,projection:y}}i.camera.lookAt(i.orbitControls.target),i.orbitControls.update(),H(),this.notify()}throughCamera(e){const{left:t,right:r,top:i,bottom:a}=e.window,c=this.viewport.camera.layers.mask;if(e.projection==="orthographic"){const l=this.throughOrthographic;return Object.assign(l,{left:t,right:r,top:i,bottom:a,near:e.near,far:e.far,zoom:1}),l.position.set(...e.position),l.quaternion.set(...e.quaternion),l.layers.mask=c,l.updateProjectionMatrix(),l.updateMatrixWorld(!0),l}const o=this.throughPerspective;return o.near=e.near,o.far=e.far,o.fov=Tr.radToDeg(2*Math.atan((i-a)/2)),o.aspect=(r-t)/(i-a),o.zoom=1,o.position.set(...e.position),o.quaternion.set(...e.quaternion),o.layers.mask=c,o.projectionMatrix.makePerspective(t*e.near,r*e.near,i*e.near,a*e.near,e.near,e.far),o.projectionMatrixInverse.copy(o.projectionMatrix).invert(),o.updateMatrixWorld(!0),o}captureCameraViewInput(){const e=this.viewport.orbitControls,t=this.renderer.domElement,r=t.parentElement??t,i=e.enabled;e.enabled=!1;const a=o=>{o.target!==t||o.deltaY===0||(o.preventDefault(),this.zoomCameraView(o.deltaY<0?1.2:1/1.2))},c=o=>{if(o.target!==t)return;const l=e.mouseButtons;let d=[l.LEFT,l.MIDDLE,l.RIGHT][o.button]??null;const y=o.ctrlKey||o.metaKey||o.shiftKey;if(o.button===1&&(o.ctrlKey||o.metaKey)&&d===we.ROTATE?d=we.DOLLY:y&&d===we.ROTATE?d=we.PAN:y&&d===we.PAN&&(d=we.ROTATE),d===we.ROTATE){this.leaveCameraView(!1);return}if(d!==we.PAN&&d!==we.DOLLY)return;o.preventDefault();const w=t.getBoundingClientRect();let C=o.clientX,P=o.clientY;const N=this.through?.zoom??1,_=Math.max(5+o.clientY-w.top,1),E=$=>{if(d===we.PAN){this.panCameraView(($.clientX-C)/Math.max(w.width,1),($.clientY-P)/Math.max(w.height,1)),C=$.clientX,P=$.clientY;return}const Q=Math.max(.01,2*((5+$.clientY-w.top)/_-1)+1);this.setCameraViewZoom(N/Q)},k=()=>{window.removeEventListener("pointermove",E),window.removeEventListener("pointerup",k),window.removeEventListener("pointercancel",k)};window.addEventListener("pointermove",E),window.addEventListener("pointerup",k),window.addEventListener("pointercancel",k)};return r.addEventListener("wheel",a,{capture:!0,passive:!1}),r.addEventListener("pointerdown",c,{capture:!0}),()=>{r.removeEventListener("wheel",a,{capture:!0}),r.removeEventListener("pointerdown",c,{capture:!0}),e.enabled=i}}projection(){return this.state.projection}setProjection(e){H(),this.state.projection!==e&&(this.state={...this.state,projection:e},this.notify())}setMode(e){H(),this.state.mode!==e&&(this.clearDiagnosticPresentation(),this.state={...this.state,mode:e},e==="uv"?this.scene.overrideMaterial=new Ji({vertexShader:"varying vec2 vUv; void main(){ vUv=uv; gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0); }",fragmentShader:"varying vec2 vUv; void main(){ gl_FragColor=vec4(vUv,0.0,1.0); }"}):e==="vertex-colors"?this.scene.overrideMaterial=new eo({vertexColors:!0}):e==="wireframe"&&this.buildTopologyOverlay(),this.notify())}buildTopologyOverlay(){const e=new Nt,t=[];this.root.updateMatrixWorld(!0),this.root.traverse(r=>{const i=r;if(!i.isMesh||!i.geometry)return;const a=new to(new ro(i.geometry,Uo),new so({color:Xs,toneMapped:!1,transparent:!0,opacity:.85,depthTest:!1,depthWrite:!1}));a.matrixAutoUpdate=!1,a.matrixWorldAutoUpdate=!1,a.matrixWorld.copy(i.matrixWorld),a.frustumCulled=!1,a.renderOrder=2,e.add(a),t.push({line:a,source:i})}),t.length!==0&&(this.topologyOverlay=e,this.topologyFollowers=t,this.addHelper(e,"topology"))}syncTopologyOverlay(){this.topologyFollowers.some(({source:i})=>i.parent===null)&&(this.clearTopologyOverlay(),this.buildTopologyOverlay()),this.selectionColors??=Ke(this.renderer.domElement);const e=this.selectionColors,t=this.selectedObjects.at(-1)??null,r=(i,a)=>{for(let c=i;c;c=c.parent)if(c===a)return!0;return!1};for(const{line:i,source:a}of this.topologyFollowers){i.matrixWorld.copy(a.matrixWorld),i.visible=a.visible;const c=i.material,o=t!==null&&r(a,t),l=o||this.selectedObjects.some(y=>r(a,y)),d=o?e.active?.visible??e.visible:l?e.visible:null;c.color.setHex(d??Xs)}}clearTopologyOverlay(){for(const{line:r}of this.topologyFollowers.splice(0))r.geometry.dispose(),r.material.dispose();const e=this.topologyOverlay;if(this.topologyOverlay=null,!e)return;e.removeFromParent();const t=this.helpers.indexOf(e);t>=0&&this.helpers.splice(t,1)}setBounds(e){H(),this.state.bounds!==e&&(this.state={...this.state,bounds:e},e?(this.boundsHelper=new Ds(this.root,16757844),this.addHelper(this.boundsHelper,"bounds")):this.clearBoundsHelper(),this.notify())}setSkeleton(e){H(),this.state.skeleton!==e&&(this.state={...this.state,skeleton:e},this.refreshSkeletonHelper(),this.notify())}neutralBackgroundTexture(){return this.neutralBackground}setNeutralBackground(e){H();const t=this.scene.background,r=this.neutralBackground,i=t===r||t instanceof be&&r instanceof be&&t.equals(r);this.neutralBackground=e,i&&(this.scene.background=e)}setBackground(e){H(),this.state.background!==e&&(this.scene.background=e==="transparent"?null:this.neutralBackground,this.state={...this.state,background:e},this.notify())}resetPresentation(){H(),Kn(this.documentId),this.clearDiagnosticPresentation(),this.state=qs,this.refreshSkeletonHelper(),this.clearBoundsHelper(),this.scene.background=this.neutralBackground,this.viewport.camera.up.set(0,1,0),this.frame(),this.notify()}setBeforeRender(e){this.beforeRender=e}presentedFrameWaiters=[];presentsFrames=!1;setPresentsFrames(e){this.presentsFrames=e,e||this.resolvePresentedFrame(null)}requestPresentedFrame(){return this.presentsFrames?new Promise(e=>{let t=!1;const r=i=>{t||(t=!0,e(i))};this.presentedFrameWaiters.push(r),H(),setTimeout(()=>r(null),qo)}):Promise.resolve(null)}needsFrame(){return this.flight!==null||this.presentedFrameWaiters.length>0}servePresentedFrame(){if(this.presentedFrameWaiters.length===0)return;const e=this.renderer.domElement,t=document.createElement("canvas");t.width=Math.max(1,e.width),t.height=Math.max(1,e.height);const r=t.getContext("2d");if(!r){this.resolvePresentedFrame(null);return}r.drawImage(e,0,0),this.resolvePresentedFrame(t)}resolvePresentedFrame(e){const t=this.presentedFrameWaiters;this.presentedFrameWaiters=[];for(const r of t)r(e)}render(e,t=!1){const r=this.beforeRender?.(t),i=this.depthDrawMaterials.bind(this.renderer);try{this.boneSelectionHighlight?.update();const a=this.camera(),c=this.state.mode;if(this.boundsHelper?.update(),this.selectionOrigins?.place(),c==="uv"||c==="vertex-colors"){e(a);return}if(c==="wireframe"&&this.topologyOverlay){if(this.syncTopologyOverlay(),this.xray.enabled&&this.xray.alpha<=0){const o=new Set;this.root.traverse(l=>{const d=l;if(d.isMesh)for(const y of Array.isArray(d.material)?d.material:[d.material])y?.visible&&(y.visible=!1,o.add(y))});try{e(a)}finally{for(const l of o)l.visible=!0}return}this.shading.render(this.scene,"clay",()=>e(a),Ws);return}this.shading.render(this.scene,c,()=>e(a),Ws)}finally{i(),r?.()}}renderViewport(e=0,t=!1){this.advanceLook(e),this.ensureComposer(),this.render(r=>{const i=this.composer;if(!i){this.renderer.render(this.scene,r);return}i.setMainScene(this.scene),i.setMainCamera(r),i.render(e)},t)}resize(e,t){H(),this.renderWidth=Math.max(1,e),this.renderHeight=Math.max(1,t),this.composer?.setSize(this.renderWidth,this.renderHeight)}renderCapture(e,t){this.render(r=>{if(!t){e(r);return}const i=this.scene.background,a=this.renderer.getClearColor(new be),c=this.renderer.getClearAlpha();try{this.scene.background=null,this.renderer.setClearColor(0,0),e(r)}finally{this.scene.background=i,this.renderer.setClearColor(a,c)}})}captureImage(e=512){const t=typeof e=="number"?e:e.width,r=typeof e=="number"?e:e.height;if(!Number.isFinite(t)||t<1||!Number.isFinite(r)||r<1)return null;const i=Math.min(2048,Math.round(t)),a=Math.min(2048,Math.round(r)),c=i*2,o=a*2,l=new Bs(c,o,{type:no}),d=new Bs(c,o),y=this.renderer.getRenderTarget(),w=this.renderer.getPixelRatio(),C=this.viewport.camera,P=C.aspect;try{this.captureAspect=i/a;const N=typeof e=="number"?void 0:e.camera;N?this.cameraOverride=N:(C.aspect=i/a,C.updateProjectionMatrix()),this.renderer.setPixelRatio(1),this.renderer.setRenderTarget(l),this.renderCapture(z=>this.renderSolidForCapture(z,l,c,o),typeof e!="number"&&e.transparent===!0),fo(typeof e!="number"&&e.transparent===!0).render(this.renderer,d,l,0,!1);const _=c*4,E=new Uint8Array(_*o);this.renderer.readRenderTargetPixels(d,0,0,c,o,E);const k=document.createElement("canvas");k.width=c,k.height=o;const $=k.getContext("2d");if(!$)return null;const Q=$.createImageData(c,o);for(let z=0;z<o;z++){const Y=(o-1-z)*_,D=z*_;Q.data.set(E.subarray(Y,Y+_),D)}$.putImageData(Q,0,0);const x=document.createElement("canvas");x.width=i,x.height=a;const q=x.getContext("2d");return q?(q.drawImage(k,0,0,i,a),x.toDataURL("image/png")):null}finally{this.captureAspect=null,this.cameraOverride=null,C.aspect=P,C.updateProjectionMatrix(),this.renderer.setRenderTarget(y),this.renderer.setPixelRatio(w),this.composer?.setSize(this.renderWidth,this.renderHeight,!1),d.dispose(),l.dispose(),H()}}dispose(){this.disposed=!0,this.leaveCameraView(!1),this.selectionOrigins?.dispose(),this.selectionOrigins=null,this.settleFlight("closed"),this.viewport.orbitControls.removeEventListener("start",this.cancelLookForHuman),this.unsubscribeRotateStart(),this.unsubscribeAxisView(),this.unsubscribeSelectionTheme(),this.clearDiagnosticPresentation(),this.clearBoneSelectionHighlight(),this.clearBoundsHelper(),this.clearSkeletonHelper(),this.selectionOutline&&bo(this.renderer,this.selectionOutline,this.selectionOutlinePass),this.composer?.dispose(),this.sceneRenderPass=null,this.selectionOutline=null,this.selectionOutlinePass=null,this.composer=null,this.shading.dispose(),this.depthDrawMaterials.dispose(),this.listeners.clear()}addHelper(e,t){e.name=`__object3d_document_${t}`,cn(e,"editorHelper",!0),this.scene.add(e),this.helpers.push(e)}get selectionOutlineEnabled(){return this.selectionOutlineWanted}set selectionOutlineEnabled(e){e!==this.selectionOutlineWanted&&(this.selectionOutlineWanted=e,e?this.syncSelectionPresentation():(this.selectionOutline?.selection.clear(),this.syncComposerOutput()))}selectionOutlineWanted=!0;xray={enabled:!1,alpha:1};setXray(e){this.xray.enabled===e.enabled&&this.xray.alpha===e.alpha||(this.xray=e,H())}set selectionOriginsEnabled(e){e!==(this.selectionOrigins!==null)&&(e?(this.selectionOrigins=new ta,this.scene.add(this.selectionOrigins),this.syncSelectionPresentation()):(this.selectionOrigins?.dispose(),this.selectionOrigins=null,H()))}ensureComposer(){this.selectionOutlineWanted&&(this.composer||this.composerLoading||this.disposed||(this.composerLoading=!0,st(()=>import("./index-DHhMOs_s.js"),__vite__mapDeps([0,1,2])).then(e=>{if(this.composerLoading=!1,this.disposed||this.composer)return;const t=this.camera(),r=new e.EffectComposer(this.renderer);this.sceneRenderPass=new e.RenderPass(this.scene,t),r.addPass(this.sceneRenderPass),this.selectionOutline=yo(e,this.renderer,this.scene,t,Ke(this.renderer.domElement)),this.syncSelectionTheme(),zs(this.selectionOutline,this.selectedObjects),this.selectionOutlinePass=new e.EffectPass(t,this.selectionOutline),r.addPass(this.selectionOutlinePass),this.composer=r,this.syncComposerOutput(),r.setSize(this.renderWidth,this.renderHeight),H()}).catch(()=>{this.composerLoading=!1})))}renderSolidForCapture(e,t,r,i){const a=this.composer,c=(this.selectionOutline?.selection.size??0)>0;if(!a||!c||!this.sceneRenderPass||!this.selectionOutlinePass){this.renderer.render(this.scene,e);return}const o=this.renderWidth,l=this.renderHeight;try{this.sceneRenderPass.renderToScreen=!1,this.selectionOutlinePass.renderToScreen=!1,a.setSize(r,i,!1),this.sceneRenderPass.render(this.renderer,a.inputBuffer,a.outputBuffer,0),this.selectionOutlinePass.render(this.renderer,a.inputBuffer,t,0)}finally{a.setSize(o,l,!1),this.syncComposerOutput(),this.renderer.setRenderTarget(t)}}syncComposerOutput(){const e=(this.selectionOutline?.selection.size??0)>0;this.sceneRenderPass&&(this.sceneRenderPass.renderToScreen=!e),this.selectionOutlinePass&&(this.selectionOutlinePass.enabled=e,this.selectionOutlinePass.renderToScreen=e)}refreshSkeletonHelper(){const e=this.state.skeleton||this.boneSelectionHighlight!==null;e&&!this.skeletonHelper?(this.skeletonHelper=new io(this.root),Go(this.skeletonHelper),this.scene.add(this.skeletonHelper)):e||this.clearSkeletonHelper()}clearSkeletonHelper(){this.skeletonHelper&&(this.skeletonHelper.removeFromParent(),this.skeletonHelper.dispose(),this.skeletonHelper=null)}clearBoneSelectionHighlight(){this.boneSelectionHighlight&&(this.boneSelectionHighlight.removeFromParent(),this.boneSelectionHighlight.dispose(),this.boneSelectionHighlight=null)}clearBoundsHelper(){if(!this.boundsHelper)return;const e=this.boundsHelper;this.boundsHelper=null;const t=this.helpers.indexOf(e);t>=0&&this.helpers.splice(t,1),e.removeFromParent(),e.geometry.dispose(),Array.isArray(e.material)?e.material.forEach(r=>{r.dispose()}):e.material.dispose()}frameBones(e){const t=new Rr,r=new F;for(const l of e){t.expandByPoint(l.getWorldPosition(r)),l.parent?.isBone&&t.expandByPoint(l.parent.getWorldPosition(r));for(const d of l.children)d.isBone&&t.expandByPoint(d.getWorldPosition(r))}const i=t.getCenter(new F),a=Math.max(t.getSize(new F).length(),.2);t.expandByScalar(a*.35);const c=this.viewport.camera.position.clone().sub(this.viewport.orbitControls.target).normalize(),o=It(t,this.viewport.camera,c);this.viewport.setPose(i.clone().addScaledVector(c,o),i)}syncOrthographicCamera(){const e=this.viewport.camera,t=this.viewport.orbitControls.target,r=Math.max(e.position.distanceTo(t),.001),i=Math.max(r*Math.tan(Tr.degToRad(e.fov)/2),.001),a=Math.max(this.renderer.domElement.clientWidth,1),c=Math.max(this.renderer.domElement.clientHeight,1),o=this.captureAspect??a/c;this.orthographicCamera.left=-i*o,this.orthographicCamera.right=i*o,this.orthographicCamera.top=i,this.orthographicCamera.bottom=-i,this.orthographicCamera.near=e.near,this.orthographicCamera.far=e.far,this.orthographicCamera.position.copy(e.position),this.orthographicCamera.quaternion.copy(e.quaternion),this.orthographicCamera.up.copy(e.up),this.orthographicCamera.layers.mask=e.layers.mask,this.orthographicCamera.updateProjectionMatrix(),this.orthographicCamera.updateMatrixWorld(!0)}clearDiagnosticPresentation(){this.clearTopologyOverlay(),this.scene.overrideMaterial?.dispose(),this.scene.overrideMaterial=null;for(const e of this.helpers.splice(0)){e.removeFromParent();const t=e;t.geometry?.dispose();const r=t.material;Array.isArray(r)?r.forEach(i=>{i.dispose()}):r?.dispose()}}notify(){this.version++;for(const e of this.listeners)e()}}const Jo=7;let gt=null;function ea(){if(gt)return gt;const n=64,e=document.createElement("canvas");e.width=n,e.height=n;const t=e.getContext("2d");return t.beginPath(),t.arc(n/2,n/2,n/2-1,0,Math.PI*2),t.fillStyle="rgba(0, 0, 0, 0.75)",t.fill(),t.beginPath(),t.arc(n/2,n/2,n/2-8,0,Math.PI*2),t.fillStyle="#ffffff",t.fill(),gt=new oo(e),gt.colorSpace=pn,gt}class ta extends dn{objects=[];origin=new F;constructor(){super(new ln,new hn({map:ea(),size:Jo,sizeAttenuation:!1,transparent:!0,alphaTest:.05,depthTest:!1,depthWrite:!1,toneMapped:!1})),this.name="volter:selection-origins",this.userData.editorHelper=!0,this.renderOrder=1e3,this.frustumCulled=!1,this.raycast=()=>{}}update(e,t){this.objects=e,this.material.color.setHex(e.length===1&&t.active!==void 0?t.active:t.visible),this.visible=e.length>0}place(){const e=this.objects.length;let t=this.geometry.getAttribute("position");(t===void 0||t.count<e)&&(this.geometry.dispose(),t=new un(new Float32Array(Math.max(e,8)*3),3),this.geometry.setAttribute("position",t)),this.geometry.setDrawRange(0,e),this.objects.forEach((r,i)=>{r.getWorldPosition(this.origin),t.setXYZ(i,this.origin.x,this.origin.y,this.origin.z)}),t.needsUpdate=!0}dispose(){this.removeFromParent(),this.geometry.dispose(),this.material.dispose()}}class ra{constructor(e){this.options=e}active=null;settling=!1;idleWaiters=new Set;begin(e){if(this.active||this.settling)return!1;try{const t=this.options.begin(e);return t?(this.active={pointerId:e.pointerId,gesture:t},!0):!1}catch(t){return this.options.reportError(t),!1}}update(e){if(!(!this.active||this.active.pointerId!==e.pointerId))try{this.active.gesture.update(e)}catch(t){this.cancelWithError(t)}}async commit(e){const t=this.take(e.pointerId);if(!t)return!1;this.settling=!0;try{return await t.commit(e),await this.options.persist(t.label),!0}catch(r){try{await t.cancel()}catch(i){return this.options.reportError({operationError:r,rollbackError:i}),!1}return this.options.reportError(r),!1}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}async cancel(e){const t=this.take(e);if(!t)return!1;this.settling=!0;try{return await t.cancel(),!0}catch(r){return this.options.reportError(r),!1}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}async settle(){this.active&&await this.cancel(),this.settling&&await new Promise(e=>this.idleWaiters.add(e))}hasActiveGesture(){return this.active!==null}take(e){if(!this.active||e!==void 0&&this.active.pointerId!==e)return null;const t=this.active.gesture;return this.active=null,t}async cancelWithError(e){const t=this.take();if(t){this.settling=!0;try{await t.cancel(),this.options.reportError(e)}catch(r){this.options.reportError({operationError:e,rollbackError:r})}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}}}class sa{constructor(e,t){this.frame=e,this.releaseRenderer=t,this.unsubscribeActivity=Lo(()=>this.syncActivity())}rafId=0;running=!1;disposed=!1;active=!1;unsubscribeActivity;get isDisposed(){return this.disposed}get isRunning(){return this.running}setActive(e){this.disposed||(this.active=e,this.syncActivity())}syncActivity(){this.active&&yr()?this.start():this.stop()}redraw(){this.running&&!this.disposed&&yr()&&this.guardedFrame(performance.now())}dispose(){this.stop(),!this.disposed&&(this.disposed=!0,this.unsubscribeActivity(),this.releaseRenderer())}start(){this.disposed||this.running||(this.running=!0,this.guardedFrame(performance.now(),!0),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick)))}lastFrameFailure=null;guardedFrame(e,t=!1){try{this.frame(e,t),this.lastFrameFailure=null}catch(r){const i=r instanceof Error?r.message:String(r);i!==this.lastFrameFailure&&(this.lastFrameFailure=i,console.error("[document renderer] a frame threw; the loop continues:",r))}}stop(){this.running=!1,this.rafId!==0&&(cancelAnimationFrame(this.rafId),this.rafId=0)}tick=e=>{if(!(!this.running||this.disposed)){if(!yr()){this.stop();return}this.guardedFrame(e),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick))}}}const na=new Set(["solid","clay","unlit","wireframe","normals","overdraw"]);function ia(n,e){return{read:()=>{const t=n.cameraPose;if(!t)return null;const{position:r,target:i}=t;return{camera:{position:{x:r.x,y:r.y,z:r.z},target:{x:i.x,y:i.y,z:i.z},...t.fov?{fov:t.fov}:{}},diagnostic:n.shadingMode,grid:Zn(e)}},setDiagnostic:t=>na.has(t)?(n.setShadingMode(t),!0):!1,setCamera:t=>typeof t!="string"?(n.shell.setCameraPose(t.position,t.target,t.fov),!0):t==="isometric"?!1:(n.shell.setViewPreset(t),!0),frame:t=>t==="document"?!1:(n.shell.focusOnSelection(),!0)}}function oa(n){const e=kr();return e?Qn(sn(e.shell,n)):"none"}const aa=m.lazy(()=>st(()=>import("./stage-transform-tools-C9nNDW6n.js"),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,13,14,15,1,2,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63])).then(n=>({default:n.ThreeStageTransformTools}))),ca=m.lazy(()=>st(()=>import("./stage-transform-tools-C9nNDW6n.js"),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,13,14,15,1,2,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63])).then(n=>({default:n.ThreeStageTransformControls})));function Ys(n){return{transformTools:()=>oa(n),TransformTools:aa,TransformControls:ca}}class la{constructor(e,t,r){this.create=e,this.isOpen=t,this.subscribe=r}states=new Map;generations=new WeakMap;unsubscribe=null;claim(e){const t=this.states.get(e)??[];let r=t.find(i=>!i.inUse);return r||(r=this.create(e),t.push(r),this.states.set(e,t)),r.inUse=!0,this.generations.set(r,this.generation(r)+1),this.unsubscribe??=this.subscribe(()=>this.discardClosed()),r}generation(e){return this.generations.get(e)??0}release(e,t=this.generation(e)){this.generation(e)===t&&(e.inUse=!1,queueMicrotask(()=>this.discardClosed()))}retain(e,t,r){if(!this.isOpen(e.documentId)||!this.states.get(e.documentId)?.includes(e)||this.generation(e)!==r){t.dispose();return}const i=e.source;e.source=t,i!==t&&i?.dispose()}discardClosed(){const e=[];for(const[r,i]of this.states){if(this.isOpen(r))continue;const a=i.filter(c=>c.inUse);e.push(...i.filter(c=>!c.inUse)),a.length?this.states.set(r,a):this.states.delete(r)}this.states.size===0&&(this.unsubscribe?.(),this.unsubscribe=null);const t=[];for(const r of e){const i=r.source;r.source=null;try{i?.dispose()}catch(a){t.push(a)}}if(t.length)throw new AggregateError(t,"Retained document cleanup failed")}}const ua=m.lazy(async()=>({default:(await st(()=>import("./stage-overlay-set-DV3SCzJb.js"),__vite__mapDeps([64,4,5,7,8,6,9,10,11,12,13,45,65,66,24,14,15,1,2,16,17,18,19,20,21,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63]))).StageOverlaySet}));function ha(n){return p.jsx(m.Suspense,{fallback:null,children:p.jsx(ua,{...n})})}function Ks(n,e,t){if(e==="orthographic"){const r=$t(n.camera.position.clone().sub(n.orbitControls.target),new F(0,1,0).applyQuaternion(n.camera.quaternion));return r!==null?r:t==="short"?"Iso":"Orthographic"}return t==="short"?"Persp":"Perspective"}const da=()=>()=>{},Zs=()=>0;function pa({shell:n,documentId:e,label:t,kebab:r=!1}){const i=m.useSyncExternalStore(So,Is,Is);m.useSyncExternalStore(Ro,jo);const a=e?To(e):null;m.useSyncExternalStore(a?.subscribe??da,a?.getSnapshot??Zs,a?.getSnapshot??Zs);const c=a?a.projection():i.projection,o=C=>{a?a.setProjection(C):Ns(C)},[l,d]=m.useState(!1),y=m.useRef(null);m.useEffect(()=>{if(!l)return;const C=P=>{y.current?.contains(P.target)||d(!1)};return document.addEventListener("mousedown",C),()=>document.removeEventListener("mousedown",C)},[l]);const w=C=>{if(a){a.setViewPreset(C,"view");return}Ns("orthographic"),n.setViewPreset(C)};return p.jsxs("div",{ref:y,className:"volter-viewport-popover-anchor",children:[t===void 0?p.jsx(et,{text:c==="perspective"?"Perspective":"Orthographic",children:p.jsx(Be,{"aria-label":"Viewport views","aria-expanded":l,size:"comfortable",onClick:()=>d(C=>!C),children:p.jsx(Se,{icon:l?Jn:ei,size:"md"})})}):p.jsxs(Ze,{size:"comfortable",variant:"ghost","aria-label":"Viewport views","aria-expanded":l,"data-testid":"viewport-view-name",onClick:()=>d(C=>!C),children:[r?p.jsx(Se,{icon:ti,size:"sm"}):null,t]}),l?p.jsx(ri,{style:{minWidth:230},children:p.jsxs(si,{gap:3,children:[p.jsx(ys,{variant:"caption",tone:"muted",children:"Projection"}),p.jsxs(Ss,{gap:1,children:[p.jsx(Ze,{size:"compact",variant:c==="perspective"?"primary":"ghost",onClick:()=>o("perspective"),children:"Perspective"}),p.jsx(Ze,{size:"compact",variant:c==="orthographic"?"primary":"ghost",onClick:()=>o("orthographic"),children:"Orthographic"})]}),p.jsx(ys,{variant:"caption",tone:"muted",children:"Axis View"}),p.jsxs(Ss,{gap:1,children:[p.jsx(Ze,{size:"compact",variant:"ghost",onClick:()=>w("top"),children:"Top"}),p.jsx(Ze,{size:"compact",variant:"ghost",onClick:()=>w("front"),children:"Front"}),p.jsx(Ze,{size:"compact",variant:"ghost",onClick:()=>w("right"),children:"Right"})]})]})}):null]})}const fa=Co;function Qs(n){return Vr(null,n)}const ma=()=>()=>{},Js=()=>0,ga=5,va=58;function wa(n,e){const t=e?.camera()??n.renderCamera,r=n.camera.position,i=n.orbitControls.target,a=t.isOrthographicCamera?wn(t,n,e):0;return[r.x,r.y,r.z,i.x,i.y,i.z,a].map(c=>c.toPrecision(6)).join(",")}function wn(n,e,t){const r=e.orbitControls.domElement,i=Math.max(1,t?.renderer.domElement.height??(r?.clientHeight??1)*(r?.ownerDocument.defaultView?.devicePixelRatio??1));return(n.top-n.bottom)/n.zoom/i}function ba({viewport:n,documentId:e,session:t,store:r,projection:i,displayName:a,objectName:c,statistics:o,subject:l,gridScale:d}){m.useSyncExternalStore(r.subscribe,r.getShellSnapshot??r.getSnapshot),m.useSyncExternalStore(m.useCallback(V=>{const B=n?.orbitControls;return B?.addEventListener("change",V),()=>B?.removeEventListener("change",V)},[n]),()=>n?wa(n,t):""),m.useSyncExternalStore(t?.subscribe??ma,t?.getSnapshot??Js,t?.getSnapshot??Js);const y=m.useSyncExternalStore(Qs,nn),w=m.useSyncExternalStore(Qs,ni),C=y&&!w?rt.content.onAccent:rt.content.primary,P=ii();m.useSyncExternalStore(Cr,xs,xs);const N=tt(e).overlays.navigationControls;if(!n)return null;const _=$t(n.camera.position.clone().sub(n.orbitControls.target),new F(0,1,0).applyQuaternion(n.camera.quaternion))??"User",E=t?.projection()??i,k=t?.cameraView()??null,$=k?`Camera ${k.projection==="perspective"?"Perspective":"Orthographic"}`:`${_} ${E==="perspective"?"Perspective":"Orthographic"}`,Q=r.selectedEntityId,x=(Q===null?null:c(Q))||null,q=l??(x===null||x===a?a:`${a} | ${x}`),z=t?.camera()??n.renderCamera,Y=d&&!k&&_!=="User"&&z.isOrthographicCamera?d(wn(z,n,t)):null,D=V=>{V.preventDefault();const B=V.currentTarget;B.setPointerCapture(V.pointerId);const xe=n.orbitControls.domElement?.getBoundingClientRect().top??0,Te=Math.max(5+V.clientY-xe,1),le=n.camera,de=n.orbitControls.target,ue=le.position.clone().sub(de),re=!t&&n.renderCamera instanceof Or?n.renderCamera:null,ie=re?.zoom??1,Ae=t?.cameraViewZoom()??null,pe=fe=>{const _e=5+fe.clientY-xe,Pe=Math.max(.01,2*(_e/Te-1)+1);Ae!==null&&t?.cameraView()?t.setCameraViewZoom(Ae/Pe):re?(re.zoom=ie/Pe,re.updateProjectionMatrix()):le.position.copy(de).addScaledVector(ue,Pe),n.orbitControls.update()},J=()=>{B.removeEventListener("pointermove",pe),B.removeEventListener("pointerup",J),B.removeEventListener("pointercancel",J),B.removeEventListener("lostpointercapture",J)};B.addEventListener("pointermove",pe),B.addEventListener("pointerup",J),B.addEventListener("pointercancel",J),B.addEventListener("lostpointercapture",J)},Z=V=>{V.preventDefault();const B=V.currentTarget;B.setPointerCapture(V.pointerId);let xe=V.clientX,Te=V.clientY;const le=new F,de=new F,ue=ie=>{const Ae=ie.clientX-xe,pe=ie.clientY-Te;if(xe=ie.clientX,Te=ie.clientY,t?.cameraView()){const it=t.renderer.domElement;t.panCameraView(Ae/Math.max(it.clientWidth,1),pe/Math.max(it.clientHeight,1));return}const J=n.camera,fe=n.orbitControls.target,_e=J.position.distanceTo(fe),Pe=Math.max(1,B.ownerDocument.defaultView?.innerHeight??1),nt=2*_e*Math.tan(Tr.degToRad(J.fov/2))/Pe;le.setFromMatrixColumn(J.matrixWorld,0).multiplyScalar(-Ae*nt),de.setFromMatrixColumn(J.matrixWorld,1).multiplyScalar(pe*nt),J.position.add(le).add(de),fe.add(le).add(de),n.orbitControls.update()},re=()=>{B.removeEventListener("pointermove",ue),B.removeEventListener("pointerup",re),B.removeEventListener("pointercancel",re),B.removeEventListener("lostpointercapture",re)};B.addEventListener("pointermove",ue),B.addEventListener("pointerup",re),B.addEventListener("pointercancel",re),B.addEventListener("lostpointercapture",re)};return p.jsxs(p.Fragment,{children:[P.viewName==="text"&&r.showHelpers?p.jsxs("div",{"data-testid":"viewport-view-text","aria-hidden":"true",style:{position:"absolute",top:"var(--volter-space-3)",left:"calc(var(--volter-space-4) + var(--volter-control-comfortable-height) * 2 + var(--volter-space-4))",display:"flex",flexDirection:"column",gap:"var(--volter-space-1)",fontSize:"var(--volter-font-sm)",color:C,textShadow:"var(--volter-content-text-shadow, none)",pointerEvents:"none",userSelect:"none"},children:[p.jsx("span",{children:$}),p.jsx("span",{children:q}),Y?p.jsx("span",{"data-testid":"viewport-grid-scale",children:Y}):null,o&&o.length>0?p.jsx("div",{"data-testid":"viewport-statistics",style:{display:"grid",gridTemplateColumns:`${va}px auto`,rowGap:"var(--volter-space-1)",marginTop:oi[ga]},children:o.map(V=>p.jsxs(m.Fragment,{children:[p.jsx("span",{children:V.label}),p.jsx("span",{children:V.value})]},V.id))}):null]}):null,P.viewName==="menu"?p.jsx("div",{className:"volter-viewport-view-pill",style:{position:"absolute",top:"var(--volter-viewport-overlay-top, var(--volter-space-4))",left:"var(--volter-stage-name-left, calc(var(--volter-space-4) + var(--volter-control-comfortable-height) * 2 + var(--volter-space-4)))",zIndex:"calc(var(--volter-z-dropdown, 1000) - 1)",pointerEvents:"auto"},children:p.jsx(pa,{shell:r,documentId:e,label:Ks(n,E,"long"),kebab:!0})}):null,P.viewName==="gizmo"?p.jsxs("button",{type:"button","data-testid":"viewport-view-name",className:"volter-viewport-gizmo-label","aria-label":E==="perspective"?"Switch to orthographic":"Switch to perspective",onClick:()=>{const V=E==="perspective"?"orthographic":"perspective";t?t.setProjection(V):n.setProjection(V)},style:{position:"absolute",top:Po+4,right:xo,transform:"translateX(50%)",display:"inline-flex",alignItems:"center",gap:"var(--volter-space-1)",padding:0,border:0,background:"none",fontSize:"var(--volter-font-sm)",color:C,textShadow:"var(--volter-content-text-shadow, none)",cursor:"pointer",pointerEvents:"auto"},children:[p.jsx(Se,{size:"xs",icon:E==="perspective"?ai:ci}),Ks(n,E,"short")]}):null,N&&r.showGizmos?p.jsxs("div",{"data-testid":"viewport-navigation",role:"toolbar","aria-label":"Navigation","aria-orientation":"vertical",className:"volter-chrome-island volter-viewport-navigation",style:{position:"absolute",top:fa,right:"var(--volter-space-6)",display:"flex",flexDirection:"column",gap:"var(--volter-space-1)",padding:"var(--volter-space-1) 0",borderRadius:"var(--volter-radius-full)",background:"var(--volter-island-surface, var(--volter-surface-overlay))",pointerEvents:"auto"},children:[p.jsx(et,{text:"Zoom (drag)",children:p.jsx(Be,{size:"comfortable","aria-label":"Zoom the view",onPointerDown:D,children:p.jsx(Se,{size:"2xl",icon:ye.viewport.zoomIn})})}),p.jsx(et,{text:"Pan (drag)",children:p.jsx(Be,{size:"comfortable","aria-label":"Pan the view",onPointerDown:Z,children:p.jsx(Se,{size:"2xl",icon:ye.viewport.pan})})}),t?.hasCameraView()?p.jsx(et,{text:k?"Leave the camera view":"Look through the camera",children:p.jsx(Be,{size:"comfortable","aria-label":"Toggle the camera view",onClick:()=>t.toggleCameraView(),children:p.jsx(Se,{size:"2xl",icon:k?ye.viewport.cameraView:ye.viewport.camera})})}):null,k&&t?.cameraViewLocked()!==null?p.jsx(et,{text:t?.cameraViewLocked()?"Unlock the camera from the view":"Lock the camera to the view",children:p.jsx(Be,{size:"comfortable","aria-label":"Lock the camera to the view",onClick:()=>t?.toggleCameraViewLock(),children:p.jsx(Se,{size:"2xl",icon:t?.cameraViewLocked()?ye.viewport.cameraLocked:ye.viewport.cameraUnlocked})})}):null,k||P.viewName==="gizmo"?null:p.jsx(et,{text:E==="perspective"?"Orthographic":"Perspective",children:p.jsx(Be,{size:"comfortable","aria-label":"Toggle perspective and orthographic",onClick:()=>{const V=E==="perspective"?"orthographic":"perspective";t?t.setProjection(V):n.setProjection(V)},children:p.jsx(Se,{size:"2xl",icon:E==="orthographic"?ye.viewport.projectionOrthographic:ye.viewport.projection})})})]}):null,k&&t?p.jsx(ya,{view:k,canvas:t.renderer.domElement,locked:t.cameraViewLocked()===!0}):null]})}function ya({view:n,canvas:e,locked:t}){const[r,i]=m.useState(null),[,a]=m.useState(0);m.useEffect(()=>{const E=new ResizeObserver(()=>a(k=>k+1));return E.observe(e),()=>E.disconnect()},[e]);const c=e.clientWidth,o=e.clientHeight,l=e.ownerDocument.defaultView?.devicePixelRatio??1,d=e.getBoundingClientRect(),y=r?.getBoundingClientRect(),w=1/l,C=n.frame.left*c-w,P=n.frame.top*o-w,N=n.frame.width*c+2*w,_=n.frame.height*o+2*w;return p.jsx("div",{ref:i,"aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none"},children:y?p.jsxs("svg",{"data-testid":"viewport-camera-frame",width:c,height:o,style:{position:"absolute",left:d.left-y.left,top:d.top-y.top},children:[n.passepartout.opacity>0?p.jsx("path",{d:`M0 0H${c}V${o}H0Z M${C} ${P}V${P+_}H${C+N}V${P}Z`,fill:n.passepartout.color,fillOpacity:n.passepartout.opacity,fillRule:"evenodd"}):null,n.passepartout.opacity>0?p.jsx("rect",{x:C,y:P,width:N,height:_,fill:"none",stroke:n.border.solid,strokeWidth:w,shapeRendering:"crispEdges"}):null,p.jsx("rect",{x:C,y:P,width:N,height:_,fill:"none",stroke:n.border.dashed,strokeWidth:w,strokeDasharray:`${3*w} ${3*w}`,shapeRendering:"crispEdges"}),t?p.jsx("rect",{x:C-w,y:P-w,width:N+2*w,height:_+2*w,fill:"none",stroke:n.border.locked,strokeWidth:w,strokeDasharray:`${3*w} ${3*w}`,shapeRendering:"crispEdges"}):null]}):null})}const Sa=m.lazy(async()=>({default:(await st(()=>import("./stage-keyboard-GNCaTXLA.js"),__vite__mapDeps([67,7,5,8,68,6,4,9,10,11,12,13,45,23]))).StageKeyboardBinding})),xa=n=>{const e=n.split(":");return(e[0]==="document"?e[1]:e[0])??n},en=()=>Bi(),Pr=12;function tn(n){if(!n)return null;const e=new Rr(new F(n.min[0],n.min[1],n.min[2]),new F(n.max[0],n.max[1],n.max[2]));return e.isEmpty()?null:e}const Pa=500;function Ca(n){return Vr(null,n)}const ka=["solid","preview","rendered","clay","unlit","wireframe","matcap","normals","overdraw"];let Ma=0;const Je=new la(n=>({documentId:n,store:fn(new on),inUse:!1,source:null,camera:null,presentation:null,transport:null,contentSeconds:0,transportAdvances:0}),n=>wi().some(e=>e.descriptor.id===n),bi);function Ea({canvasHostRef:n}){return p.jsx("div",{ref:n,style:{position:"absolute",inset:0}})}function Oa(n,e,t,r,i){if(e==="inspector-preview"){const l=$i();return l.canvas.setAttribute("aria-label",`${t} authoring viewport`),n.appendChild(l.canvas),{canvas:l.canvas,renderer:l.renderer,lease:l}}const a=go(r.width,r.height,i),{canvas:c,renderer:o}=a;return c.setAttribute("aria-label",`${t} authoring viewport`),n.appendChild(c),{canvas:c,renderer:o,lease:a}}class rn{constructor(e,t,r){this.lane=e,this.surface=t,this.store=r??fn(new on),this.transport=new Di(this.store.shell)}scene=new mn;store;cleanups=[];rendererSession=new sa((e,t)=>this.frame?.(e,t),()=>{});viewport=null;session=null;dressing=null;presentationRig=null;applyPresentation=null;backdropOverridden=!1;documentStudio=null;contentLights=[];contentHas={light:!1,"directional-light":!1};darkened=[];darkenContentLights(){for(const t of this.contentLights)t.visible&&(t.visible=!1,this.darkened.push(t));if(this.darkened.length===0)return 0;const e=this.darkened.length;return this.scene.onAfterRender=()=>{for(const t of this.darkened)t.visible=!0;this.darkened=[],this.scene.onAfterRender=()=>{}},e}defaultEnvironment=null;defaultBackground=null;adapter=null;presentationAdapter=null;content=null;frame=null;syncHostScene=null;presence=null;initialized=!1;contentSeconds=0;transportAdvances=0;users=0;closed=!1;released=!1;get isClosed(){return this.closed}transport;borrow(){this.users++;let e=!1;return()=>{e||(e=!0,this.users--,this.releaseIfClosed())}}close(){this.closed=!0,this.frame=null,this.syncHostScene=null,this.session?.setBeforeRender(null),this.session?.setPresentsFrames(!1),this.rendererSession.setActive(!1),this.content?.dispose(),this.transport.dispose(),this.releaseIfClosed()}releaseIfClosed(){if(!this.closed||this.users!==0||this.released)return;this.released=!0;const{lease:e,renderer:t,canvas:r}=this.surface;for(const i of[...this.cleanups.splice(0),()=>this.session?.dispose(),()=>this.viewport?.dispose(),()=>this.rendererSession.dispose(),()=>this.dressing?.dispose(),...e?[()=>e.release()]:[()=>t.dispose(),()=>t.forceContextLoss(),()=>r.remove()]])try{i()}catch(a){console.error("Object3D document cleanup failed.",a)}}}function bn({documentId:n,sourcePath:e,build:t,displayName:r="Source Object3D",background:i,cameraDirection:a,persistence:c,documentSource:o,authoring:l,interaction:d,selectionOutline:y=!0,active:w=!0,audit:C=!0,chromeless:P=!1,modelSource:N,assetType:_,sourceAuthoring:E,dressing:k,rendererLane:$="own",onOpenNode:Q,frameBounds:x,openingFrameBounds:q,openingFit:z,openingView:Y,presentation:D,cameraView:Z,stageKind:V,statistics:B,subject:xe,gridScale:Te,content:le}){const de=V??xa(n);m.useEffect(()=>{if(!P)return li(n)},[n,P]);const ue=Hi(ui()),re=ue??kr(),ie=re?sn(re.shell,n,P?"embedded":"document"):null,Ae=m.useSyncExternalStore(Ca,nn),pe=ie!==null&&hi(ie,Ae),J=m.useRef(pe);J.current=pe;const fe=ie!==null&&di(ie),_e=m.useRef(fe);_e.current=fe;const Pe=ie!==null&&pi(ie),nt=m.useRef(Pe);nt.current=Pe;const it=fi(),Gt=m.useRef(it);Gt.current=it;const Ut=m.useRef(null),qt=m.useRef(null),X=m.useRef(null),Ve=m.useRef(null);(!Ve.current||Ve.current.documentId!==n)&&(Ve.current&&Je.release(Ve.current),Ve.current=Je.claim(n)),m.useEffect(()=>{const R=Ve.current,me=Je.generation(R);return()=>Je.release(R,me)},[n]);const G=Ve.current,ze=le?.kind==="world-root",Xt=w||ze,Lr=m.useRef(le?.kind==="world-root"?le.load:null);Lr.current=le?.kind==="world-root"?le.load:null;const[We,Yt]=m.useState(Xt);m.useEffect(()=>Yt(Xt),[Xt]);const Kt=m.useRef(y);m.useEffect(()=>{Kt.current=y;const R=X.current?.session;R&&(R.selectionOutlineEnabled=$!=="inspector-preview"&&y),X.current?.applyPresentation?.()},[y,$]);const Fr=m.useRef(Promise.resolve()),Zt=m.useRef(!1);m.useEffect(()=>{if(We)return ot.current=!1,tr("building"),()=>{const R=X.current;if(R&&!ze){Zt.current=!vt.current;const me=R.store.cameraPose;G.camera=me&&R.viewport?{...me,up:R.viewport.camera.up.clone()}:null,G.presentation=R.session?.presentation()??null,G.transport=R.transport.snapshot(),G.contentSeconds=R.contentSeconds,G.transportAdvances=R.transportAdvances}yt.current=null,St.current=null,bt.current=null,wt.current=null,R?.close(),X.current=null}},[n,$,G,We,ze]);const Dr=m.useRef(Q);Dr.current=Q;const Br=m.useRef(x);Br.current=x;const Hr=m.useRef(q);Hr.current=q;const Qt=m.useRef(Y);Qt.current=Y;const _r=m.useRef(D);_r.current=D;const zr=m.useRef(Z);zr.current=Z;const vt=m.useRef(w);vt.current=w;const Wr=m.useRef(w),Ir=m.useRef({build:t,sourcePath:e});m.useEffect(()=>{const R=Ir.current;Ir.current={build:t,sourcePath:e},!(R.build===t&&R.sourcePath===e)&&!We&&G.source&&(G.source.dispose(),G.source=null)},[t,G,e,We]);const wt=m.useRef(null),ot=m.useRef(!1),bt=m.useRef(null),yt=m.useRef(null),St=m.useRef(null),[Jt,oe]=m.useState(null),[er,tr]=m.useState("building"),[Nr,yn]=m.useState(null),[Sn,xn]=m.useState("mounting"),[Pn,Cn]=m.useState([]),$r=m.useRef(null),[Gr,kn]=m.useState("perspective"),[Mn,Ur]=m.useState(null),xt=m.useRef(null);xt.current=Mn;const rr=a?.[0],sr=a?.[1],nr=a?.[2],at=N?.kind,ir=N?.kind==="project-file"?N.path:void 0,Pt=N?.kind==="entity"?N.entityId:void 0,qr=k?.environment,Xr=k?.background,Yr=k?.keyLight,or=k?.grid,ct=k?.viewLocked,ar=k?.toneMapping;w&&mi(n),m.useEffect(()=>{let R=!1;if(!We)return;const me=async Ce=>{const U=Ut.current,lt=qt.current;if(!U||!lt||X.current)return;const M=Gt.current;if(!M){oe("The world root needs the editor shell above it; this host has none.");return}const ut=await Ce();if(R||X.current)return;yn(()=>ut),Ps();const s=new rn("own",ut.mountWorldRootSurface(lt,U,r),kr()??void 0);X.current=s,s.cleanups.push(Cs(n,s.store.shell)),s.cleanups.push(ks(n,s.transport)),s.cleanups.push(Fi(n,{...ia(s.store,n),...Ys(n)}));const ae=ut.installWorldRootStage({store:s.store,documentId:n,container:U,canvas:s.surface.canvas,renderer:s.surface.renderer,stats:M,cameraPreview:()=>$r.current,onMountStatus:xn,onRootIds:Cn,runFrame:ke=>$s(n,ke)});s.viewport=ae.viewport,s.frame=ae.frame,s.content={scene:ae.scene,settle:()=>Promise.resolve(),dispose:async()=>ae.dispose()};const j=Us(()=>s.store.scene??ae.scene,s.transport,{rescanOnLiveMixers:()=>s.store.shell.playState==="stopped"});let se=0;s.cleanups.push(()=>j.dispose()),s.cleanups.push(s.store.shell.subscribe(()=>{if(s.store.shell.playState!=="stopped")return;const ke=performance.now();ke-se<Pa||(se=ke,j.refresh())})),s.cleanups.push(Gs({camera:ae.viewport.camera,drawCamera:()=>ae.viewport.renderCamera,orbit:ae.viewport.orbitControls,scene:ae.scene},ae.present,ae.setHelper,{documentId:n})),wt.current=s.rendererSession,s.initialized=!0,Ts(),tr("ready"),s.rendererSession.setActive(!0)},On=async()=>{for(await X.current?.content?.settle();ho();)await po();if(R)return;const Ce=Lr.current;if(Ce)return me(Ce);const U=Ut.current,lt=qt.current;if(!U||!lt)return;if(!t||e===void 0){oe("This stage shows `build` content and was given no `build()`/`sourcePath`.");return}let M;const ut=Je.generation(G);try{M=G.source??t(),G.source=null}catch(ee){oe(ee instanceof Error?ee.message:String(ee));return}try{X.current||(Ps(),X.current=new rn($,Oa(lt,$,r,{width:Math.max(1,U.clientWidth),height:Math.max(1,U.clientHeight)},()=>{Yt(!1),window.setTimeout(()=>{vt.current&&Yt(!0)},0)}),G.store),X.current.contentSeconds=G.contentSeconds,X.current.transportAdvances=G.transportAdvances)}catch(ee){throw M.dispose(),ee}const s=X.current,ae=s.borrow(),{renderer:j,canvas:se,lease:ke}=s.surface,T=s.store;P||(s.cleanups.push(Cs(n,T.shell)),s.cleanups.push(ks(n,s.transport)));const kt=Ms();kt&&T.shell.attachHistory(kt);const lr=$==="inspector-preview",Ie=J.current,Zr=_e.current,Qr=nt.current,L=new mn,Mt=M.root.parent;L.add(M.root),M.animations&&(M.root.animations=[...M.animations]);const ur={root:M.root,animations:M.root.animations};let Ne=null,$e=null,Ge=null,Me=null,he=null,Et=null,Ot=null,Rt=null,jt=null,Tt=null,hr=null,Jr=null,es=null,ts=!1,At=!1,Vt=null;const dr={scene:L,settle:()=>he?.settle()??Promise.resolve(),dispose:()=>{if(Vt)return Vt;At=!0;const ee=Zt.current;return Zt.current=!1,Et&&U.removeEventListener("pointerdown",Et,!0),Ot&&U.removeEventListener("pointermove",Ot,!0),Rt&&U.removeEventListener("pointerup",Rt,!0),jt&&U.removeEventListener("pointercancel",jt,!0),Tt&&window.removeEventListener("keydown",Tt),hr?.(),hr=null,Vt=(async()=>{await he?.settle();const ht=[];for(const Lt of[()=>Me?.dispose(),()=>$e?.dispose?.(),()=>Ne?.dispose(),()=>L.removeFromParent(),()=>{ee?Je.retain(G,M,ut):M.dispose()},ae])try{Lt()}catch(ge){ht.push(ge)}ht.length&&console.error("Object3D source cleanup failed.",...ht)})(),Vt}};try{const ee=async u=>{try{const g=ur;if(o&&!c){if(!g)throw new Error("Project history is unavailable; the edit was not saved.");const h=Ms();if(!h)throw new Error("Project history is unavailable; the edit was not saved.");const v=o.serialize(g);if(v===null)return oe(null),!1;const f=await en().replaceSource(h,{file:o.path,source:v,label:u??o.label??`Edit ${r}`});return oe(null),f}if(!c)throw new Error("This Asset Lab document has no persistence binding.");if(!Ge||!g)throw new Error("Project history is unavailable; the edit was not saved.");const{persisted:b}=await(await Ge).commit(g,u);return oe(null),b}catch(g){throw oe(g instanceof Error?g.message:JSON.stringify(g)),g}};Ne=new Vo(T,L,{documentId:n,title:r,sourcePath:e,documentKind:Qr?"asset":"source",audit:C,...M.hierarchyRoots?{hierarchyRoots:M.hierarchyRoots}:{},...at==="project-file"&&ir?{modelSource:{kind:at,path:ir}}:at==="entity"&&Pt?{modelSource:{kind:at,entityId:Pt}}:{}});const ht={documentId:n,sourcePath:e,root:M.root,animations:M.root.animations,scene:L,defaultAdapter:Ne,commit:ee};$e=l?.(ht)??null;const Lt=$e?Ne:null;!$e&&E&&($e=E({store:T,scene:L,...M.hierarchyRoots?{hierarchyRoots:M.hierarchyRoots}:{}}),Ne.dispose()),Ge=c&&kt?en().openPersistence({binding:c,document:ur,history:kt}):null,Ge&&Ge.catch(u=>{!At&&X.current?.content===dr&&oe(u instanceof Error?u.message:JSON.stringify(u))});const ge=$e?.adapter??Ne;if(!s.dressing){j.outputColorSpace=pn,j.toneMapping=ar??ao,j.shadowMap.enabled=!0,j.shadowMap.type=co,j.info.autoReset=!1,j.setPixelRatio(Math.min(window.devicePixelRatio,2)),Ie&&j.setClearColor(0,0);const u=qr===!1?null:ke&&"environment"in ke?ke.environment():Ni(j),g=Es(se);s.dressing=_i(s.scene,{environment:u,background:!Ie&&i===void 0&&Xr!==!1,keyLight:!1,grid:or===!0,content:M.root}),!Ie&&i!==void 0?s.scene.background=new be(i):!Ie&&g.background!==null&&(s.scene.background=new be(g.background)),s.defaultEnvironment=s.scene.environment,s.defaultBackground=s.scene.background;{const b=new zi(s.scene,H);s.presentationRig=b,Os(n,de);let h=s.store.shell.showHelpers;const v=()=>{const f=tt(n);if(h=s.store.shell.showHelpers,b.apply(f,j,ar),s.viewport?.setStageFunction(f.world,f.interaction),s.viewport?.setFieldOfView(f.camera.fov),s.viewport?.setSelectionMarks(f.overlays.selection),s.viewport?.setGridMajorEvery(f.overlays.grid.majorEvery),s.viewport?.setAxisLines(f.overlays.axes),s.viewport?.setNavigation(f.overlays.navigation),s.viewport?.setGridVisible(f.overlays.grid.visible&&h),s.session){const O=s.session.presentation().mode==="wireframe"&&f.xray.enabled&&f.xray.alpha<=0;s.session.selectionOutlineEnabled=!lr&&h&&Kt.current&&f.overlays.selection.outline&&!O,s.session.selectionOriginsEnabled=!lr&&h&&f.overlays.selection.origins,s.session.setXray(f.xray)}H()};s.applyPresentation=v,v(),s.cleanups.push(Cr(v)),s.cleanups.push(s.store.shell.subscribe(()=>{s.store.shell.showHelpers!==h&&v()})),s.cleanups.push(yi(()=>{b.forgetFailedImages(),v()})),s.cleanups.push(()=>{b.dispose(),s.presentationRig===b&&(s.presentationRig=null)})}s.cleanups.push(()=>{s.defaultBackground instanceof Hs&&s.defaultBackground!==s.dressing?.backgroundTexture&&s.defaultBackground.dispose()})}const rs=(u,g)=>{const b=s.adapter,h=s.viewport;if(!b||!h)return null;const v=se.getBoundingClientRect(),f=new mt((u-v.left)/Math.max(v.width,1)*2-1,-((g-v.top)/Math.max(v.height,1))*2+1),O=new _s;O.layers.enableAll(),O.params.Line2={threshold:4},O.setFromCamera(f,s.session?.camera()??h.camera);const K=s.presentationAdapter,ce=W=>{for(let I=W;I;I=I.parent){const Oe=K?.hierarchy.idForObject3D?.(I)??b.hierarchy.idForObject3D?.(I);if(Oe)return Oe}return null};let ve=null;for(const W of O.intersectObjects([...T.objectMap.values()],!0)){if(Vs(W.object))continue;const I=ce(W.object);if(I){ve={distance:W.distance,id:I};break}}const Xe=h.visibleHelpers().filter(W=>W.userData.volterPickable===!0);for(const W of O.intersectObjects(Xe,!0)){let I=null,Oe=!0;for(let Re=W.object;Re;Re=Re.parent)Re.visible||(Oe=!1),I??=Re.userData.volterPicksAs??null;if(!Oe)continue;const Fe=I?ce(I):null;if(Fe){(!ve||W.distance<ve.distance)&&(ve={distance:W.distance,id:Fe});break}}return ve?.id??null};if(!s.viewport){s.viewport=new ko(se,s.scene,T,U,{renderer:j,authoring:()=>s.adapter??ge,pick:rs,drawCamera:()=>s.session?.camera()??s.viewport.camera,publishPickContext:!1,onProjectionChange:kn,chromeInsetPx:P||Zr?0:Pr,lightRig:!1}),or===!0&&s.viewport.grid.removeFromParent();const u=g=>{const b=rs(g.clientX,g.clientY),h=b&&s.adapter?He(s.adapter.hierarchy,b):null;h&&Dr.current?.(h)};U.addEventListener("dblclick",u),s.cleanups.push(()=>U.removeEventListener("dblclick",u))}const S=s.viewport;if(ct){const u=S.camera;s.scene.add(u);const g=new Nt;g.name="volter:document-studio",g.add(ct),u.add(g),s.documentStudio=g,s.cleanups.push(()=>{ct.removeFromParent(),g.removeFromParent(),s.documentStudio===g&&(s.documentStudio=null),u.removeFromParent()})}if(d){const u=new Nt;u.name="__object3d_document_overlay",cn(u,"editorHelper",!0),L.add(u),Me=d.setup({root:M.root,scene:L,renderer:j,overlay:u,camera:()=>s.session?.camera()??S.camera,writable:c!==void 0||o!==void 0});const g=h=>{const v=se.getBoundingClientRect(),f=new mt((h.clientX-v.left)/Math.max(v.width,1)*2-1,-((h.clientY-v.top)/Math.max(v.height,1))*2+1),O=new _s;return O.layers.enableAll(),O.setFromCamera(f,s.session?.camera()??S.camera),{pointerId:h.pointerId,button:h.button,buttons:h.buttons,clientX:h.clientX,clientY:h.clientY,altKey:h.altKey,ctrlKey:h.ctrlKey,metaKey:h.metaKey,shiftKey:h.shiftKey,ray:O.ray.clone(),hits:O.intersectObjects([M.root,u],!0)}};he=new ra({begin:h=>{if(!c&&!o)throw new Error("This Asset Lab document has no persistence binding; project gestures are read-only.");return Me.begin(h)},persist:async h=>{await ee(h)},reportError:h=>oe(h instanceof Error?h.message:JSON.stringify(h))});const b=h=>{h.preventDefault(),h.stopPropagation()};Et=h=>{h.target instanceof Element&&h.target.closest('[role="alert"], [role="toolbar"]')!==null||he?.begin(g(h))&&(b(h),h.isTrusted&&se.setPointerCapture?.(h.pointerId))},Ot=h=>{he?.hasActiveGesture()&&(b(h),he.update(g(h)))},Rt=h=>{he?.hasActiveGesture()&&(b(h),se.hasPointerCapture?.(h.pointerId)&&se.releasePointerCapture?.(h.pointerId),he.commit(g(h)))},jt=h=>{he?.hasActiveGesture()&&(b(h),he.cancel(h.pointerId))},Tt=h=>{h.key!=="Escape"||!he?.hasActiveGesture()||(h.preventDefault(),he.cancel())},Jr=()=>{U.addEventListener("pointerdown",Et,!0),U.addEventListener("pointermove",Ot,!0),U.addEventListener("pointerup",Rt,!0),U.addEventListener("pointercancel",jt,!0),window.addEventListener("keydown",Tt)}}const Le=s.content,ss=[...T.shell.selectedEntityIds],dt=s.adapter,jn=s.presentationAdapter,Tn=new Map(T.objectMap),Ue=s.session?.root,An=s.frame,Vn=s.syncHostScene,Ln=yt.current,Fn=St.current,Dn=bt.current,ns=s.session?.neutralBackgroundTexture(),Bn=s.dressing.lights.map(u=>u.visible),Hn=s.cleanups.length,_n=s.initialized;if(es=()=>{L.removeFromParent(),Mt&&Mt.add(M.root),Le&&s.scene.add(Le.scene),s.adapter=dt,s.presentationAdapter=jn,s.content=Le,s.frame=An,s.syncHostScene=Vn,s.initialized=_n;for(const u of s.cleanups.splice(Hn))u();!Ue&&s.session&&(s.session.dispose(),s.session=null),T.objectMap.clear();for(const[u,g]of Tn)T.objectMap.set(u,g);Le&&T.bindScene(Le.scene,j,S.batchedRenderer,S.camera),Ue&&dt&&s.session?.replaceContent(Ue,dt),yt.current=Ln,St.current=Fn,bt.current=Dn,xt.current=dt,Ur(dt),ns!==void 0&&s.session?.setNeutralBackground(ns),s.dressing?.lights.forEach((u,g)=>{u.visible=Bn[g]??!0}),Ue&&(s.dressing?.frameContent(Ue),s.presentationRig?.placeFloor(Ue)),T.shell.selectMultiple(ss),T.notifyIngestObjectMapEdit()},Le?.scene.removeFromParent(),s.scene.add(L),s.adapter=ge,s.presentationAdapter=Lt,s.content=dr,T.bindScene(L,j,S.batchedRenderer,S.camera),T.setOrbitTarget(S.orbitControls.target),T.objectMap.clear(),L.traverse(u=>{const g=Lt?.hierarchy.idForObject3D?.(u)??ge.hierarchy.idForObject3D?.(u);g&&T.objectMap.set(g,u)}),s.session)s.session.replaceContent(M.root,ge);else{const u=tn(Br.current),g=tn(Hr.current)??u,b=tt(n).camera;S.setFieldOfView(b.fov);const h=Qt.current,v=rr!==void 0&&sr!==void 0&&nr!==void 0;if(!h&&!v){const f=S.orbitControls.target,O=S.camera.position.distanceTo(f);S.camera.position.copy(f).addScaledVector(new F(...b.opening).normalize(),O)}if(g||S.focusOn(M.root),h){const f=new F(...h.target),O=new F(...h.direction).normalize();S.camera.position.copy(f).addScaledVector(O,h.distance),S.camera.up.set(0,1,0),h.up&&S.camera.up.set(...h.up),S.orbitControls.target.copy(f)}else if(v){const f=g??Mr(M.root),O=f.getCenter(new F),K=new F(rr,sr,nr).normalize(),ce=It(f,S.camera,K)*Math.min(10,Math.max(.1,z??1));S.camera.position.copy(O).add(K.multiplyScalar(ce)),S.orbitControls.target.copy(O)}if(s.session=new Qo(n,M.root,s.scene,j,S,ge,Ie?null:i===void 0?s.dressing.backgroundTexture:new be(i),u),s.session.selectionOutlineEnabled=!lr&&Kt.current,s.session.setCameraViewSource(zr.current??null),s.applyPresentation?.(),Qt.current?.projection==="orthographic"&&s.session.setProjection("orthographic"),!Ie&&i===void 0&&s.dressing.backgroundTexture){const f=s.session;s.cleanups.push(Wi(()=>{const O=Es(se).background,K=s.defaultBackground;s.defaultBackground=O!==null?new be(O):Ii(),f.neutralBackgroundTexture()===K&&f.setNeutralBackground(s.defaultBackground),K instanceof Hs&&K!==s.dressing?.backgroundTexture&&K.dispose()}))}}const pt=G.camera;pt&&(S.setPose(pt.position,pt.target,pt.fov||void 0,pt.up),S.setProjection(Gr),G.camera=null);const A=s.session;yt.current=ur,St.current=Ge,bt.current=Me,xt.current=ge,Ur(ge);const pr=Si(de)?.all?.lighting!==void 0||xi(de)?null:ct?{all:{lighting:{source:"studio",studioPreset:Rs.id,auto:null}}}:Yr===!1?{all:{lighting:{source:"scene"}}}:null,Ft=_r.current??null;Os(n,de,pr&&Ft?Pi(pr,Ft):Ft??pr);const fr=new Set(ka);let is;const os=()=>{const u=s.session?.presentation().mode;u!==is&&(is=u,s.applyPresentation?.()),!(u===void 0||!fr.has(u))&&tt(n).drawMode!==u&&Ci(n,{drawMode:u})},mr=Ft?.drawMode??ki(n).drawMode;mr!==void 0&&fr.has(mr)&&s.session&&s.session.setMode(mr),os();const zn=s.session?.subscribe(os),Wn=Cr(()=>{const u=s.session,g=tt(n).drawMode;u&&u.presentation().mode!==g&&fr.has(u.presentation().mode)&&u.setMode(g)});s.cleanups.push(()=>{zn?.(),Wn()});const Dt=[];M.root.traverse(u=>{u.isLight&&Dt.push(u)});const In={light:Dt.length>0,"directional-light":Dt.some(u=>u.isDirectionalLight)};s.contentLights=Dt,s.contentHas=In,s.dressing.frameContent(M.root),s.presentationRig?.placeFloor(M.root),s.cleanups.push(T.shell.subscribe(()=>s.presentationRig?.placeFloor(M.root)));const as=new Set;T.shell.selectMultiple(ss.filter(u=>{const g=T.objectMap.get(u)??He(ge.hierarchy,u);if(g===null&&!T.objectMap.has(u))return!1;const b=g??u;return as.has(b)?!1:(as.add(b),!0)})),T.notifyIngestObjectMapEdit(),A.syncSelectionPresentation(),Jr?.(),oe(null),P||js(n);let Bt=L.background;A.setNeutralBackground(Bt??s.defaultBackground);const qe=G.presentation;qe&&(A.setMode(qe.mode),A.setBackground(qe.background),A.setProjection(qe.projection),A.setSkeleton(qe.skeleton),A.setBounds(qe.bounds),G.presentation=null);const Nn=()=>{s.viewport?.alignGridToView(A.camera(),j.domElement.width),s.scene.environment=L.environment??s.defaultEnvironment,s.scene.fog=L.fog,s.scene.environmentIntensity=L.environmentIntensity,s.scene.environmentRotation.copy(L.environmentRotation),s.scene.backgroundIntensity=L.backgroundIntensity,s.scene.backgroundBlurriness=L.backgroundBlurriness,s.scene.backgroundRotation.copy(L.backgroundRotation);const u=s.presentationRig;if(u){const g=u.resolveSource({...s.contentHas,environment:L.environment!==null}),b=u.environment();b&&(s.scene.environment=b.texture??s.defaultEnvironment,s.scene.environmentIntensity=b.intensity,s.scene.environmentRotation.set(0,b.rotation,0));const h=u.backdrop();h!=="keep"?(s.scene.background=h.value,s.scene.backgroundBlurriness=h.blur,s.scene.backgroundIntensity=h.intensity,s.scene.backgroundRotation.set(0,h.rotation,0),s.backdropOverridden=!0):s.backdropOverridden&&(s.scene.background=A.neutralBackgroundTexture(),s.scene.backgroundBlurriness=L.backgroundBlurriness,s.scene.backgroundIntensity=L.backgroundIntensity,s.backdropOverridden=!1);const v=g==="studio"&&u.presetId()===Rs.id;s.documentStudio&&(s.documentStudio.visible=v);const f=g==="studio"&&!v||g==="preview"&&!u.sceneLightsShown()?s.darkenContentLights():0;u.update(A.camera()),Mi(n,{source:g,presetId:u.presetId(),presetLights:u.lightsVisible(),documentStudio:s.documentStudio?s.documentStudio.visible:null,contentLights:s.contentLights.length,contentLightsDarkened:f,environmentIntensity:s.scene.environmentIntensity,environmentImage:u.imageReport().shown,environmentImagePending:u.imageReport().pending,toneMapping:String(j.toneMapping)})}Bt!==L.background&&(Bt=L.background,A.setNeutralBackground(Bt??s.defaultBackground))};s.syncHostScene=Nn,A.setBeforeRender(u=>{s.syncHostScene?.();const g=A.presentation().mode,b=u&&["solid","preview","clay","unlit","matcap"].includes(g);return M.prepareDraw?.(A.camera(),{interactive:b,height:j.domElement.height,multiDraw:j.extensions.has("WEBGL_multi_draw")})}),A.setPresentsFrames(!0);const $n=u=>{At||!(u>0)||!Number.isFinite(u)||(s.contentSeconds+=u,s.transportAdvances++,M.update?.(u))},Gn=Us(M.root,s.transport);s.cleanups.push(()=>Gn.dispose());const Ee=G.transport;Ee&&(Ee.activeSubject&&s.transport.setActiveSubject(Ee.activeSubject),s.transport.setLoop(Ee.range.loop),s.transport.setTimeScale(Ee.timeScale),s.transport.seek(Ee.time),Ee.playbackState==="playing"?s.transport.play():Ee.playbackState==="paused"&&s.transport.pause(),G.transport=null);let gr=performance.now();const cs=typeof M.onChange=="function";let Ht=!0;const _t=()=>{Ht=!0};if(cs){const u=M.onChange(_t),g=T.shell.subscribe(_t),b=["pointerdown","pointermove","pointerup","pointerleave","wheel","keydown","keyup"];for(const h of b)U.addEventListener(h,_t,{capture:!0,passive:!0});hr=()=>{u(),g();for(const h of b)U.removeEventListener(h,_t,{capture:!0})}}let ls=-1;const us=new Er,hs=new Er,ds=new mt,ps=new mt;let fs,ms=null,gs=Number.NaN;const Un=u=>{if(!cs||Ht||u>0||As()!==ls||A.needsFrame()||s.presence?.live()||Me?.prepareFrame||Me?.update||(S.batchedRenderer.batches?.length??0)>0)return!0;const g=A.camera();return g.updateMatrixWorld(),j.getDrawingBufferSize(ps),!g.matrixWorld.equals(us)||!g.projectionMatrix.equals(hs)||!ps.equals(ds)||s.scene.background!==fs||j.toneMapping!==ms||j.toneMappingExposure!==gs},qn=()=>{Ht=!1,ls=As();const u=A.camera();us.copy(u.matrixWorld),hs.copy(u.projectionMatrix),j.getDrawingBufferSize(ds),fs=s.scene.background,ms=j.toneMapping,gs=j.toneMappingExposure};let ft=null;const vs=(u,g)=>{if(At||!j||!S)return;const b=j,h=S,v=A?.profiler;v?.beginFrame(),g&&(gr=u);const f=Math.min((u-gr)/1e3,.1);gr=u,v?.beginPhase();const O=s.transport.tick(f);if(O>0&&$n(O),Me?.prepareFrame?.(f),Me?.update?.(f),v?.endPhase("animation"),v?.beginPhase(),s.presence?.syncMarkers(f),S.update(f),P||$s(n,f),ft){const I=A.camera();I.quaternion.copy(ft),I.updateMatrixWorld(!0)}if(S.batchedRenderer.update(f),v?.endPhase("editor"),!g&&!Un(O)){v?.endFrame();return}v?.beginPhase(),b.info.reset();const K=!ot.current&&Ei()===n;K&&Oi(n);const ce=K?Date.now():0,ve=s.scene.overrideMaterial,Xe=A.presentation().mode;Xe!=="uv"&&Xe!=="vertex-colors"&&(s.scene.overrideMaterial=L.overrideMaterial);try{h.renderWithInfrastructure(()=>{A.renderViewport(f,ft!==null||!g&&!A.needsFrame()),h.renderViewCube(b)})}finally{s.scene.overrideMaterial=ve}A.servePresentedFrame(),qn(),ot.current||(ot.current=!0,K&&Ri("first-render",Date.now()-ce),ji(n),tr("ready")),v?.reportRender({gpuMs:null,drawCalls:b.info.render.calls,triangles:b.info.render.triangles,geometries:b.info.memory.geometries,textures:b.info.memory.textures}),v?.endPhase("render"),v?.endFrame();const W=Gt.current;if(W&&ue&&Ti(ue.shell)===T.shell){const I=A.cameraPose();W.frameTime=f*1e3,W.fps=f>0?1/f:0,W.drawCalls=b.info.render.calls,W.triangles=b.info.render.triangles,W.cameraPosition.x=I.position[0],W.cameraPosition.y=I.position[1],W.cameraPosition.z=I.position[2],W.cameraTarget.x=I.target[0],W.cameraTarget.y=I.target[1],W.cameraTarget.z=I.target[2]}};s.frame=vs;const Xn=(u,g="full")=>{if(!j)throw new Error("This stage has no renderer yet.");const b=j,h=b.getContext(),v=new Uint8Array(4),f=[],O=[],K=[],ce=A.camera(),ve=ce.quaternion.clone(),Xe=new F(0,1,0);try{for(let te=0;te<=u;te++){g==="navigation"&&(ft=ve.clone().multiply(new jr().setFromAxisAngle(Xe,(te+1)*5e-4)));const ne=performance.now();vs(ne,!0);const De=performance.now();h.readPixels(0,0,1,1,h.RGBA,h.UNSIGNED_BYTE,v);const Wt=performance.now();te>0&&(f.push(Wt-ne),O.push(De-ne),K.push(Wt-De))}}finally{ft=null,ce.quaternion.copy(ve),ce.updateMatrixWorld(!0),Ht=!0}const W={calls:b.info.render.calls,triangles:b.info.render.triangles};let I=0,Oe=0;s.scene.traverseVisible(te=>{const ne=te;if(!ne.isMesh||!ne.geometry||Vs(ne))return;I++;const De=ne.geometry.getIndex(),Wt=De?De.count:ne.geometry.getAttribute("position")?.count??0;Oe+=Math.floor(Wt/3)*(ne.count??1)});const Fe=[...f].sort((te,ne)=>te-ne),Re=te=>Fe[Math.min(Fe.length-1,Math.floor(te*Fe.length))]??0,zt=b.getDrawingBufferSize(new mt),vr=b.getPixelRatio(),Ye=te=>Math.round(te*100)/100,ws=te=>Ye(te.sort((ne,De)=>ne-De)[Math.floor(te.length/2)]??0);return{frames:u,quality:g,medianMs:Ye(Re(.5)),p95Ms:Ye(Re(.95)),minMs:Ye(Fe[0]??0),submitMedianMs:ws(O),completionWaitMedianMs:ws(K),width:zt.x,height:zt.y,cssWidth:Ye(zt.x/vr),cssHeight:Ye(zt.y/vr),devicePixelRatio:vr,drawn:W,scene:{meshes:I,triangles:Oe},drawMode:tt(n).drawMode}};if(wt.current=s.rendererSession,!s.initialized){P||(s.cleanups.push(Gs({camera:S.camera,drawCamera:()=>s.session?.camera()??S.camera,orbit:S.orbitControls,scene:s.scene,frameCost:(v,f)=>Xn(v,f)},()=>null,(v,f)=>S.setHelper(v,f),{documentId:n})),st(()=>import("./stage-presence-markers-CBEU1Kzo.js"),__vite__mapDeps([69,4,5,7,8,9,10,6,11,12,13,26,27,18,2,70])).then(v=>{if(s.isClosed||X.current!==s||s.presence)return;const f=v.bindStagePresenceMarkers({scene:s.scene,store:T,documentId:n,container:U,canvas:se,viewport:S,readVisibleCameraPose:()=>{const O=s.session?.camera()??S.renderCamera,K=O.getWorldPosition(new F),ce=O.fov;return{position:K,target:S.orbitControls.target,fov:typeof ce=="number"?ce:0}}});s.presence=f,s.cleanups.push(()=>f.dispose())}),s.cleanups.push(Ao(A,Ys(n))),s.cleanups.push(Ai({id:n,label:r,kind:Qr?"asset":"source",profiler:A.profiler}))),!P&&!Zr&&s.cleanups.push(Vi(n,()=>({adapter:s.adapter,nodeId:s.adapter?.selection?.get()[0]??null})));const u=P?`${n}#chromeless-${++Ma}`:n;s.cleanups.push(Li({id:u,label:r,contentClock:()=>s.contentSeconds,transportAdvances:()=>s.transportAdvances})),s.cleanups.push(T.shell.onViewportAction(v=>{switch(v.type){case"focus-selection":case"focus-scene":!s.session?.frame()&&s.session?.root&&S.focusOn(s.session.root);break;case"focus-entity":{const f=s.adapter?He(s.adapter.hierarchy,v.id):null;f&&S.focusOn(f);break}case"snap-selection-to-floor":S.snapSelectionToFloor();break;case"set-view-preset":s.session?s.session.setViewPreset(v.preset==="perspective"?"isometric":v.preset,"view"):S.setViewPreset(v.preset);break;case"toggle-camera-view":s.session?.toggleCameraView();break;case"frame-all":!s.session?.frame(1,"all")&&s.session?.root?S.focusOn(s.session.root):s.session||S.focusOnScene();break;case"zoom-view":s.session?.cameraView()&&!s.session.cameraViewLocked()?s.session.zoomCameraView(v.direction>0?1.2:1/1.2):S.zoomStep(v.direction);break;case"step-view":if(s.session?.cameraView()&&!s.session.cameraViewLocked())break;S.stepView(v.step);break;case"toggle-projection":{const f=s.session;if(f?.cameraView())break;const K=(f?f.projection():S.projection)==="perspective"?"orthographic":"perspective";f?f.setProjection(K):S.setProjection(K);break}case"set-camera-pose":S.setPose(v.position,v.target,v.fov);break}}));let g="";s.cleanups.push(T.shell.subscribe(()=>{S.objectMap=T.objectMap,S.syncFromStore(),s.session?.syncSelectionPresentation();const v=(s.adapter?.selection?.get()??[]).join("\0");v!==g&&(g=v,P||js(n))}));const b=()=>{const v=Math.max(1,U.clientWidth),f=Math.max(1,U.clientHeight),O=j.getPixelRatio();(se.width!==Math.floor(v*O)||se.height!==Math.floor(f*O))&&j.setSize(v,f,!1),S.resize(v,f),s.session?.resize(v,f),s.rendererSession.redraw()},h=new ResizeObserver(b);h.observe(U),s.cleanups.push(()=>h.disconnect()),b(),s.initialized=!0,Ts()}S.objectMap=T.objectMap,S.syncFromStore(),s.rendererSession.setActive(vt.current),s.rendererSession.redraw(),ts=!0,Le?.dispose()}catch(ee){if(!ts)try{es?.()}finally{Mt&&M.root.parent===L&&Mt.add(M.root),dr.dispose()}console.error(`[object3d document] ${r}: source update failed`,ee),oe(ee instanceof Error?ee.message:String(ee))}},Rn=Fr.current.then(On);return Fr.current=Rn.catch(Ce=>{R||oe(Ce instanceof Error?Ce.message:String(Ce))}),()=>{R=!0}},[l,i,t,rr,sr,nr,r,n,pe,Xr,qr,or,Yr,ct,ar,P,Pt,at,ir,d,c,o,$,G,We,E,e,ze]),m.useEffect(()=>{const R=wt.current,me=w&&!Wr.current;Wr.current=w,R&&(me&&(ot.current=!1,gi(n)),R.setActive(w||ze))},[w,n,ze]);const Ct=X.current,cr=er==="ready"&&Ct?.viewport?{store:Ct.store,viewport:Ct.viewport,canvas:Ct.surface.canvas}:null,En=m.useCallback(()=>{const R=xt.current;return R?{adapter:R,nodeId:R.selection?.get()[0]??R.hierarchy.roots()[0]?.id??null}:null},[]),Kr=p.jsx("div",{"data-testid":"tool-object3d-authoring","data-volter-chromeless":P||void 0,className:pe?"volter-object3d-studio-stage":void 0,style:{position:P||fe?"relative":"absolute",...P?{width:"100%",height:"100%"}:fe?{flex:1,minHeight:0}:{inset:-Pr},overflow:"hidden",background:pe?void 0:rt.surface.raised,pointerEvents:"auto"},children:p.jsxs("div",{ref:Ut,style:{position:"absolute",inset:0,minHeight:0,overflow:"hidden"},children:[p.jsx(Ea,{canvasHostRef:qt}),w&&cr&&!P?p.jsx(m.Suspense,{fallback:null,children:p.jsx(Sa,{stage:cr})}):null,ue&&!P?p.jsx(ha,{store:ue,documentId:n,stage:cr,active:w,chrome:"document"}):null,ue&&Nr?p.jsx(Nr.Overlays,{store:ue,documentId:n,cameraPreviewRef:$r,mountStatus:Sn,rootIds:Pn}):null,Jt&&p.jsx("div",{role:"alert",style:{position:"absolute",insetInline:0,top:0,display:"flex",justifyContent:"center",padding:"var(--volter-space-3)",pointerEvents:"none"},children:p.jsxs("div",{className:"volter-chrome-island",style:{display:"flex",alignItems:"center",gap:"var(--volter-space-3)",maxWidth:"80%",padding:"var(--volter-space-2) var(--volter-space-3)",borderRadius:"var(--volter-radius-md)",border:`var(--volter-stroke-resting) solid ${rt.semantic.danger}`,background:rt.surface.raised,color:rt.semantic.danger,pointerEvents:"auto"},children:[p.jsx("span",{children:Jt}),p.jsx(Be,{size:"compact","aria-label":"Dismiss",onClick:()=>oe(null),"data-testid":"object3d-document-error-dismiss",children:p.jsx(Se,{icon:ye.action.close})})]})}),!Jt&&er==="building"&&p.jsx(Do,{testId:"object3d-document-status",children:Bo}),p.jsx("div",{style:{position:"absolute",inset:P||fe?0:Pr,pointerEvents:"none"},children:!P&&er==="ready"&&X.current&&p.jsx(ba,{viewport:X.current.viewport,documentId:n,session:X.current.session,store:X.current.store.shell,projection:Gr,displayName:r,...B?{statistics:B}:{},...xe!==void 0?{subject:xe}:{},...Te?{gridScale:Te}:{},objectName:R=>(me=>me?He(me.hierarchy,R)?.name:void 0)(X.current?.adapter)??X.current?.store.objectMap.get(R)?.name??null})})]})});return fe?p.jsx(vi,{documentId:n,active:w,type:_??(Pt?"entity":"model"),title:r,status:e,selection:En,fill:!0,children:p.jsxs("div",{className:"volter-object3d-asset-workspace",children:[Kr,p.jsx(Fo,{transport:X.current?.transport??null})]})}):Kr}function Ra(n){return p.jsx(bn,{...n})}const ic=Object.freeze(Object.defineProperty({__proto__:null,Object3DDocumentViewport:bn,ToolObject3DAuthoring:Ra},Symbol.toStringTag,{value:"Module"}));export{bn as O,ic as S,pa as V,Ks as s,oa as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DHhMOs_s.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/stage-transform-tools-CHvXlnKB.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D9shXtZ9.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/editor-shell-store-CV73gQk5.js","assets/output-pass-HurwNl0G.js","assets/Pass-D1MRT672.js","assets/editor-layers-BVicagU1.js","assets/workspace-arrangement-BOk46mGq.js","assets/user-data-DHB4MWum.js","assets/entity-object-DTQ4I2K5.js","assets/three-contract-Dkt6PmWY.js","assets/Toolbar-BqUPRrhs.js","assets/transform-mode-request-B3AxgwGW.js","assets/three-state-d-szeOea.js","assets/standard-viewport-dressing-4xAZCGJ3.js","assets/content-bounds-UvcUv1DD.js","assets/hierarchy-marks-Dn7SO2iG.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/preview-renderer-BrYNFV1p.js","assets/renderer-ownership-BovSEcLv.js","assets/live-mixers-B-bwLZ7c.js","assets/live-gesture-lock-DJbrjOqf.js","assets/three-integration-C1onOQwq.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-MdBIQeUt.js","assets/root-stacking-BEd9ZvxC.js","assets/model-thumbnail-Bp-1yQ-X.js","assets/studio-environment-CvCEc6PK.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/object3d-document-session-registry-bor-eSgr.js","assets/component-instance-root-BrRLxTKu.js","assets/viewport-door-DkDcO9tp.js","assets/asset-preview-uRqIcg3G.js","assets/bitmap-label-Ct4k6ehY.js","assets/model-inspection-Bsfj6b48.js","assets/three-viewport-presentation-D1ysWIW4.js","assets/clip-planes-CnAI6DZn.js","assets/three-Do16bEo9.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/OrbitControls-B13MKuwC.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/scene-framing-BSvegpi4.js","assets/source-object3d-authoring-adapter-BJwLQVsv.js","assets/three-projection-core-1FETWj5n.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/transport-strip-D4N14xHx.js","assets/viewport-surface-status-HKbJtC2G.js","assets/stage-overlay-set-BWxO_Pk6.js","assets/TransientHint-w6qEumzV.js","assets/ViewportShadingMenu-9AaJLhq_.js","assets/stage-keyboard-BnzybgXw.js","assets/camera-authoring-DYjhU5Zp.js","assets/stage-presence-markers-BD5JPVX6.js","assets/collaboration-presence-B9eqNDDB.js"])))=>i.map(i=>d[i]);
2
+ import{kQ as Vr,ln as wr,kX as Ke,Z as bs,eX as Yn,lt as Kn,_ as st,G as Zn,lu as Qn,j1 as sn,bw as et,aM as Be,a7 as Se,bz as Jn,bN as ei,a6 as Ze,lv as ti,bP as ri,de as si,aL as ys,df as Ss,lw as nn,lx as ni,iX as ii,bq as Cr,br as xs,bs as tt,al as rt,er as oi,ly as ai,lz as ci,a8 as ye,ak as li,lA as ui,lB as hi,lC as di,lD as pi,lE as fi,hl as mi,lF as gi,b5 as vi,lG as on,aQ as wi,gM as bi,lH as Ps,lI as Cs,lJ as ks,b1 as Ms,kP as Es,fC as Os,lK as yi,F as Si,bu as xi,bt as Rs,lL as Pi,bK as Ci,j4 as ki,gm as js,lM as Mi,lN as Ei,lO as Oi,hg as Ri,dI as ji,kY as Ti,kO as Ai,fX as Vi,gg as Li,lP as Ts,B as Fi,lQ as Di,bR as Bi}from"./index-D9shXtZ9.js";import{a as p}from"./jsx-runtime-DPjLkJKQ.js";import{t as kr,a as Hi}from"./three-state-d-szeOea.js";import{i as H,b as _i,a as zi,w as Wi,c as Ii,s as As}from"./standard-viewport-dressing-4xAZCGJ3.js";import{r as m}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a as Mr}from"./content-bounds-UvcUv1DD.js";import{EDITOR_LAYER as an,isInEditorOwnedSubtree as Vs}from"./editor-layers-BVicagU1.js";import{createStandardEnvironment as Ni}from"./environment-Dg-YaLsA.js";import{a as $i}from"./preview-renderer-BrYNFV1p.js";import{s as cn}from"./user-data-DHB4MWum.js";import{el as Gi,cm as Er,n as Ui,cq as qi,ch as br,co as Xi,ev as Yi,cW as Ls,E as Fs,bu as Ki,bh as Nt,N as ln,M as un,dg as hn,df as dn,fo as F,_ as be,d5 as Or,d9 as Zi,L as Ds,I as Rr,ez as Qi,dp as jr,cj as Tr,em as Ji,cp as eo,c0 as to,aO as ro,bX as so,fx as Bs,bi as no,eu as io,cg as we,T as oo,ej as pn,A as ao,d7 as co,eW as Hs,fd as mt,e6 as _s}from"./three.core-3arARmh6.js";import{s as lo,a as uo}from"./live-mixers-B-bwLZ7c.js";import{l as ho,w as po}from"./live-gesture-lock-DJbrjOqf.js";import{v as fo}from"./output-pass-HurwNl0G.js";import{V as mo,a as go}from"./three-integration-C1onOQwq.js";import{a as He}from"./three-contract-Dkt6PmWY.js";import{d as $t,f as vo}from"./model-inspection-Bsfj6b48.js";import{c as wo,p as It,d as zs,i as Ws,r as bo,b as yo,a as So,t as Is,s as Ns,C as xo,e as Po,f as Co,E as ko}from"./three-viewport-presentation-D1ysWIW4.js";import{s as Ar}from"./workspace-arrangement-BOk46mGq.js";import{a as Mo,b as Eo,L as Oo}from"./LineSegments2-DN9pUfWA.js";import{s as Ro,o as jo,a as To,b as Ao}from"./object3d-document-session-registry-bor-eSgr.js";import{S as Vo}from"./source-object3d-authoring-adapter-BJwLQVsv.js";import{s as Lo,i as yr}from"./editor-presentation-activity-CqJH4G9t.js";import{r as $s,c as Gs}from"./viewport-door-DkDcO9tp.js";import{T as Fo}from"./transport-strip-D4N14xHx.js";import{V as Do,O as Bo}from"./viewport-surface-status-HKbJtC2G.js";import{t as fn}from"./editor-shell-store-CV73gQk5.js";class mn extends Gi{previousMatrix=new Er;updateMatrix(){const e=this.matrixWorldNeedsUpdate;this.previousMatrix.copy(this.matrix),super.updateMatrix(),!e&&this.previousMatrix.equals(this.matrix)&&(this.matrixWorldNeedsUpdate=!1)}}const gn=30;function vn(n,e,t){return n<e?e:n>t?t:n}function Ho(n,e){const t=n.animations;if(t.length===0)return null;const r=new Ui(n);let i=t[0];if(!i)return null;const a=o=>{r.stopAllAction();const l=r.clipAction(o);l.paused=!1,l.play(),i=o};a(i);const c=e.attach({id:n.uuid,label:n.name||i.name||"Clip",range:()=>({start:0,end:i?.duration??0,fps:gn}),seek:o=>{r.setTime(vn(o,0,i?.duration??0))},clips:()=>t.map(o=>({id:o.name,label:o.name})),setClip:o=>{const l=t.find(d=>d.name===o);l&&a(l)}});return()=>{c(),r.stopAllAction(),r.uncacheRoot(n)}}function _o(n,e){const t=uo(n);if(!t)return null;let r=t.clips.values().next().value;if(!r)return null;const i=c=>{t.mixer.stopAllAction();const o=t.mixer.clipAction(c);o.paused=!1,o.play(),r=c};return e.attach({id:n.uuid,label:n.name||r.name||"Animation",range:()=>({start:0,end:r?.duration??0,fps:gn}),seek:c=>{t.mixer.setTime(vn(c,0,r?.duration??0))},clips:()=>[...t.clips.entries()].map(([c,o])=>({id:c,label:o.name||c})),setClip:c=>{const o=t.clips.get(c);o&&i(o)}})}function Us(n,e,t={}){const r=new Map,i=()=>{const o=new Set;(typeof n=="function"?n():n)?.traverse(d=>{if(r.has(d.uuid)){o.add(d.uuid);return}const y=_o(d,e)??Ho(d,e);y&&(r.set(d.uuid,y),o.add(d.uuid))});for(const[d,y]of[...r])o.has(d)||(y(),r.delete(d))};i();const a=t.rescanOnLiveMixers,c=a?lo(()=>{a()&&i()}):()=>{};return{refresh:i,dispose:()=>{c();for(const o of r.values())o();r.clear()}}}const je=()=>globalThis.performance?.now()??Date.now();function zo(n,e){return n.length===0?0:n[Math.min(n.length-1,Math.floor((n.length-1)*e))]??0}function Wo(n=!1){const e=new Set,t=[],r=new Map,i=new Map,a=new Map;let c=[],o=[],l=n,d=!1,y=!1,w=0,C=0,P=0;const N=[];let _=0,E=0,k={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},$={enabled:l,recording:y,fps:0,cpuMs:0,p95Ms:0,p99Ms:0,frames:[],phases:[],systems:[],components:[],render:k};function Q(){const x=t.at(-1),q=t.slice();let z;const Y=D=>(z??=q.map(Z=>Z.intervalMs).filter(Z=>Z>0).sort((Z,V)=>Z-V),zo(z,D));$={enabled:l,recording:y,fps:x?.intervalMs?1e3/x.intervalMs:0,cpuMs:x?.cpuMs??0,get p95Ms(){return Y(.95)},get p99Ms(){return Y(.99)},frames:q,phases:x?.phases??[],systems:[...i].map(([D,Z])=>({name:D,ms:Z})).sort((D,Z)=>Z.ms-D.ms),components:[...a].map(([D,Z])=>({name:D,ms:Z})).sort((D,Z)=>Z.ms-D.ms),render:k};for(const D of e)D()}return{get enabled(){return l},set enabled(x){l!==x&&(l=x,x&&!d&&(P=0),Q())},get telemetryEnabled(){return d},set telemetryEnabled(x){if(d===x)return;const q=!l&&!d;d=x,x&&q&&(P=0),Q()},get recording(){return y},startRecording(){const x=!l&&!d;l=!0,x&&(P=0),y=!0,t.length=0,Q()},stopRecording(){y=!1,Q()},clear(){t.length=0,Q()},beginFrame(){!l&&!d||(r.clear(),i.clear(),a.clear(),c=[],o=[],N.length=0,k={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},C=je())},beginPhase(){l&&N.push(je())},endPhase(x){if(!l)return;const q=N.pop()??C,z=je()-q,Y=r.get(x);r.set(x,{ms:(Y?.ms??0)+z,startMs:Y?.startMs??q-C}),y&&performance.measure(`volter.phase.${x}`,{start:q,duration:z})},systemObserver:{beginSystem(){l&&(_=je())},endSystem(x,q,z){if(!l)return;const Y=je(),D=`${x} / ${q} / ${z}`;i.set(D,(i.get(D)??0)+Y-_),c.push({name:D,phase:q,startMs:_-C,ms:Y-_})}},beginComponent(){y&&(E=je())},endComponent(x,q=""){if(!y)return;const z=je();a.set(x,(a.get(x)??0)+z-E),o.push({name:x,phase:q,startMs:E-C,ms:z-E})},reportRender(x){l&&(k={gpuMs:x.gpuMs??k.gpuMs,drawCalls:k.drawCalls+x.drawCalls,triangles:k.triangles+x.triangles,geometries:k.geometries+x.geometries,textures:k.textures+x.textures,renderPasses:x.renderPasses===void 0?k.renderPasses:(k.renderPasses??0)+x.renderPasses})},endFrame(){if(!l&&!d)return;const x=je(),q=P===0?0:C-P;P=C;const z={id:++w,timestamp:x,intervalMs:q,cpuMs:x-C,phases:[...r].map(([Y,{ms:D,startMs:Z}])=>({name:Y,ms:D,startMs:Z})).sort((Y,D)=>D.ms-Y.ms),systems:c.slice(),components:o.slice(),render:{...k}};t.push(z),t.length>600&&t.splice(0,t.length-600),y&&performance.measure("volter.frame",{start:C,duration:z.cpuMs}),Q()},subscribe(x){return e.add(x),()=>{e.delete(x)}},getSnapshot(){return $},exportJSON(){return JSON.stringify({version:2,capturedAt:new Date().toISOString(),frames:t},null,2)}}}class Io{sources=new Map;frame=0;count=0;bind(e){this.frame++;const t=e.renderBufferDirect,r=this;return e.renderBufferDirect=function(i,a,c,o,l,d){const y=a?.overrideMaterial===o?r.get(o,c,l):o;return t.call(this,i,a,c,y,l,d)},()=>{e.renderBufferDirect=t}}get(e,t,r){if(!(e instanceof qi)||e.transparent||e.map||e.alphaMap||e.displacementMap||e.clippingPlanes||e.onBeforeCompile!==br.prototype.onBeforeCompile||e.customProgramCacheKey!==br.prototype.customProgramCacheKey||e.onBeforeRender!==br.prototype.onBeforeRender||!(r instanceof Xi)||r instanceof Yi||Object.keys(t.morphAttributes).length||r.onAfterRender!==Ls.prototype.onAfterRender)return e;const i=r instanceof Fs,a=r instanceof Ki;if(r.onBeforeRender!==(i?Fs.prototype.onBeforeRender:Ls.prototype.onBeforeRender)||a&&(r.instanceColor||r.morphTexture)||i&&Reflect.get(r,"colorTexture")!==null)return e;const c=(i?1:a?2:0)+(e.vertexColors&&t.getAttribute("color")?.itemSize===4?4:0);let o=this.sources.get(e);if(!o){if(this.count>=32)return e;o=new Map,this.sources.set(e,o)}let l=o.get(c);if(l)l.frame!==this.frame&&(l.material.copy(e),l.version!==e.version&&(l.material.needsUpdate=!0),l.version=e.version,l.frame=this.frame);else{if(this.count>=32)return e;l={material:e.clone(),frame:this.frame,version:e.version},o.set(c,l),this.count++}return l.material}dispose(){for(const e of this.sources.values())for(const{material:t}of e.values())t.dispose();this.sources.clear(),this.count=0}}class No extends Nt{constructor(e,t){super(),this.bones=e;const r=new Set;for(const o of e){const l=o.parent;l?.isBone&&this.addSegment(l,o,r);for(const d of o.children)d.isBone&&this.addSegment(o,d,r)}this.linePositions=new Float32Array(Math.max(this.segments.length*6,6));const i=new Mo;i.setPositions(this.linePositions),this.lineMaterial=new Eo({color:t,linewidth:5,worldUnits:!1,depthTest:!1,depthWrite:!1,toneMapped:!1,alphaToCoverage:!0}),this.lines=new Oo(i,this.lineMaterial),this.lines.onBeforeRender=o=>{o.getSize(this.lineMaterial.resolution)},this.lines.frustumCulled=!1,this.lines.renderOrder=1001,this.add(this.lines),this.pointPositions=new Float32Array(Math.max(e.length*3,3));const a=new ln;a.setAttribute("position",new un(this.pointPositions,3));const c=new hn({color:t,size:11,sizeAttenuation:!1,depthTest:!1,depthWrite:!1,toneMapped:!1});this.points=new dn(a,c),this.points.frustumCulled=!1,this.points.renderOrder=1002,this.add(this.points),this.name="__object3d_document_bone_selection",Ar(this,"editorHelper",!0),this.traverse(o=>o.layers.set(an)),this.update()}segments=[];linePositions;pointPositions;lines;lineMaterial;points;worldPosition=new F;setColor(e){this.lineMaterial.color.setHex(e),this.points.material.color.setHex(e)}update(){let e=0;for(const[i,a]of this.segments)i.getWorldPosition(this.worldPosition),this.linePositions.set(this.worldPosition.toArray(),e),a.getWorldPosition(this.worldPosition),this.linePositions.set(this.worldPosition.toArray(),e+3),e+=6;const t=this.lines.geometry.getAttribute("instanceStart");t&&(t.data.needsUpdate=!0),e=0;for(const i of this.bones)i.getWorldPosition(this.worldPosition),this.pointPositions.set(this.worldPosition.toArray(),e),e+=3;const r=this.points.geometry.getAttribute("position");r&&(r.needsUpdate=!0)}dispose(){this.lines.geometry.dispose(),this.lineMaterial.dispose(),this.points.geometry.dispose(),this.points.material.dispose()}addSegment(e,t,r){const i=`${e.uuid}:${t.uuid}`;r.has(i)||(r.add(i),this.segments.push([e,t]))}}const $o="skeletons",Sr=new be(58879),xr=new be(16756736);function Go(n){const e=n.geometry.getAttribute("color");for(let r=0;r<e.count;r+=2)e.setXYZ(r,Sr.r,Sr.g,Sr.b),r+1<e.count&&e.setXYZ(r+1,xr.r,xr.g,xr.b);e.needsUpdate=!0,n.renderOrder=999;const t=n.material;t.depthTest=!1,t.depthWrite=!1,t.toneMapped=!1,Ar(n,"editorHelper",!0),Ar(n,"editorHelperType",$o),n.traverse(r=>r.layers.set(an))}const Uo=1,qo=700,Xo=.001,Yo=Math.PI-.001,Ko=n=>n<.5?4*n*n*n:1-(-2*n+2)**3/2,Zo=n=>n;function Qe(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}const qs={mode:"solid",background:"neutral",projection:"perspective",skeleton:!1,bounds:!1},Xs=1119773;class Qo{constructor(e,t,r,i,a,c,o=new be(2106410),l=null){this.documentId=e,this.root=t,this.scene=r,this.renderer=i,this.viewport=a,this.authoring=c,this.neutralBackground=o,this.frameBox=l,this.unsubscribeSelectionTheme=Vr(i.domElement,this.syncSelectionTheme),a.orbitControls.addEventListener("start",this.cancelLookForHuman),this.unsubscribeRotateStart=a.onRotateStart(this.autoPerspective),this.unsubscribeAxisView=a.onAxisView(this.axisView)}profiler=Wo();shading=new mo;depthDrawMaterials=new Io;helpers=[];skeletonHelper=null;boundsHelper=null;boneSelectionHighlight=null;boneSelectionSignature="";composer=null;composerLoading=!1;disposed=!1;sceneRenderPass=null;selectionOutline=null;selectionOutlinePass=null;selectedObjects=[];selectionOrigins=null;renderWidth=1;renderHeight=1;orthographicCamera=new Or;captureAspect=null;cameraOverride=null;cameraViewSource=null;through=null;leaving=!1;viewMemo=null;throughPerspective=new Zi;throughOrthographic=new Or;beforeRender=null;state=qs;version=0;listeners=new Set;unsubscribeSelectionTheme=()=>{};flight=null;flightPose=new F;topologyOverlay=null;topologyFollowers=[];unsubscribeRotateStart;unsubscribeAxisView;axisView=()=>(this.leaveCameraView(!1),this.settleFlight("superseded"),wr().autoPerspective&&this.setProjection("orthographic"),!0);autoPerspective=()=>{if(!wr().autoPerspective||this.cameraView()!==null||this.state.projection!=="orthographic")return;const e=this.viewport.camera,t=e.position.clone().sub(this.viewport.orbitControls.target),r=new F(0,1,0).applyQuaternion(e.quaternion);$t(t,r)!==null&&this.setProjection("perspective")};replaceContent(e,t){H(),this.selectionOutline?.selection.clear(),this.selectedObjects=[],this.boneSelectionSignature="",this.clearBoneSelectionHighlight(),this.clearSkeletonHelper(),this.clearBoundsHelper(),this.clearTopologyOverlay(),this.root=e,this.authoring=t,this.state.mode==="wireframe"&&this.buildTopologyOverlay(),this.state.bounds&&(this.boundsHelper=new Ds(e,16757844),this.addHelper(this.boundsHelper,"bounds")),this.syncSelectionPresentation(),this.refreshSkeletonHelper(),this.notify()}cancelLookForHuman=()=>{this.settleFlight("human")};selectionColors=null;syncSelectionTheme=()=>{this.selectionColors=Ke(this.renderer.domElement);const e=this.selectionColors.visible;this.selectionOutline&&wo(this.selectionOutline,Ke(this.renderer.domElement)),this.boneSelectionHighlight?.setColor(e)};subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));getSnapshot=()=>this.version;presentation(){return this.state}resolveFrameBounds(e="selection"){const t=e==="all"?[]:this.authoring?.selection?.get()??[];if(t.length>0){const r=new Rr;let i=!1;for(const a of t){const c=this.authoring?He(this.authoring.hierarchy,a):null;if(!c)continue;const o=Mr(c);o.isEmpty()||(r.union(o),i=!0)}if(i)return r}return this.frameBox&&!this.frameBox.isEmpty()?this.frameBox:Mr(this.root)}frame(e=1,t="selection"){this.leaveCameraView(!1);const r=this.resolveFrameBounds(t);if(r.isEmpty()){let l=0,d=0;return this.root.traverse(y=>{const w=y.geometry;w&&(l+=1,d+=w.getAttribute("position")?.count??0)}),bs.warn(`frame: nothing to frame — root "${this.root.name}" (${this.root.children.length} children, ${l} meshes, ${d} positions), selection ${JSON.stringify(this.authoring?.selection?.get()??[])}, frameBox ${this.frameBox?this.frameBox.isEmpty()?"empty":"set":"none"}`,"document"),!1}this.settleFlight("superseded");const i=r.getCenter(new F),a=this.viewport.camera.position.clone().sub(this.viewport.orbitControls.target).normalize();a.lengthSq()===0&&a.set(.8,.5,-1).normalize();const c=Math.min(10,Math.max(.1,Qe(e,1))),o=It(r,this.viewport.camera,a)*c;return this.viewport.setPose(i.clone().addScaledVector(a,o),i),!0}orbit(e){return this.launchFlight(Qe(e.azimuth,0),Qe(e.elevation,0),Math.min(60,Math.max(0,Qe(e.duration,.6))),Ko)}turntable(e){const t=Qe(e.revolutions,1);return this.launchFlight(t*Math.PI*2,0,Math.min(60,Math.max(0,Qe(e.seconds,6))),Zo)}looking(){return this.flight!==null}launchFlight(e,t,r,i){this.settleFlight("superseded");const a=this.viewport.camera,c=this.viewport.orbitControls.target.clone(),o=new Qi().setFromVector3(a.position.clone().sub(c)),l=o.radius>1e-4?o.radius:Math.max(this.resolveFrameBounds().getSize(new F).length(),1),d={pivot:c,radius:l,startTheta:o.theta,startPhi:o.phi,deltaTheta:e,deltaPhi:-t,duration:r,ease:i,elapsed:0,theta:o.theta,phi:o.phi,settle:null};this.flight=d;const y=new Promise(w=>{d.settle=w});return this.applyFlightPose(d,0),r<=0&&this.settleFlight(null),y}applyFlightPose(e,t){const r=e.ease(t);e.theta=e.startTheta+e.deltaTheta*r,e.phi=Math.min(Yo,Math.max(Xo,e.startPhi+e.deltaPhi*r));const i=this.viewport.camera;i.position.setFromSphericalCoords(e.radius,e.phi,e.theta).add(e.pivot),this.viewport.orbitControls.target.copy(e.pivot),i.lookAt(e.pivot),i.updateMatrixWorld(),this.flightPose.copy(i.position)}advanceLook(e){const t=this.flight;if(!t)return;const r=Math.max(1e-4,t.radius*.001);if(this.viewport.camera.position.distanceToSquared(this.flightPose)>r*r){this.settleFlight("human");return}e>0&&Number.isFinite(e)&&(t.elapsed+=e);const i=t.duration<=0?1:Math.min(1,t.elapsed/t.duration);this.applyFlightPose(t,i),i>=1&&this.settleFlight(null)}settleFlight(e){const t=this.flight;if(!t)return;this.flight=null;const r={completed:e===null,azimuth:t.theta,elevation:Math.PI/2-t.phi,seconds:Math.min(t.elapsed,t.duration)};t.settle?.(e===null?r:{...r,cancelledBy:e})}select(e){H(),this.authoring&&Yn(this.authoring,[...e])}selection(){return[...this.authoring?.selection?.get()??[]]}idForObject(e){return this.authoring?.hierarchy.idForObject3D?.(e)??null}syncSelectionPresentation(){H();const e=(this.authoring?.selection?.get()??[]).map(i=>this.authoring?He(this.authoring.hierarchy,i):null).filter(i=>i!==null);if(this.selectedObjects=e,this.selectionOutline&&(zs(this.selectionOutline,this.selectionOutlineWanted?e:[]),this.syncComposerOutput()),this.selectionOrigins){const i=Ke(this.renderer.domElement);this.selectionOrigins.update(e,{visible:i.visible,...i.active?{active:i.active.visible}:{}})}const t=e.filter(i=>!!i.isBone),r=t.map(i=>i.uuid).join("\0");r!==this.boneSelectionSignature&&(this.boneSelectionSignature=r,this.clearBoneSelectionHighlight(),t.length>0&&(this.boneSelectionHighlight=new No(t,Ke(this.renderer.domElement).visible),this.scene.add(this.boneSelectionHighlight)),this.refreshSkeletonHelper())}frameSelection(){return this.frameIds(this.authoring?.selection?.get()??[])}frameIds(e){this.leaveCameraView(!1),this.settleFlight("superseded");const t=e.map(r=>this.authoring?He(this.authoring.hierarchy,r):null).filter(r=>r!==null);return t.length===0?!1:t.every(r=>r.isBone)?(this.frameBones(t),!0):(this.viewport.focusOnMultiple(t),!0)}setViewPreset(e,t="bounds"){H(),this.leaveCameraView(!1),this.settleFlight("superseded");const r=vo(e);let i,a;if(t==="view")i=this.viewport.orbitControls.target.clone(),a=this.viewport.camera.position.distanceTo(i);else{const l=this.resolveFrameBounds();if(l.isEmpty())return;i=l.getCenter(new F),a=It(l,this.viewport.camera,r)}const c=i.clone().addScaledVector(r,a),o=e==="top"?{x:0,y:0,z:-1}:e==="bottom"?{x:0,y:0,z:1}:{x:0,y:1,z:0};this.viewport.setPose(c,i,void 0,o),this.setProjection(e==="isometric"?"perspective":"orthographic")}setCameraPose(e,t,r){H(),this.leaveCameraView(!1),this.settleFlight("superseded"),this.viewport.setPose(e,t,r)}cameraPose(){return{position:this.viewport.camera.position.toArray(),target:this.viewport.orbitControls.target.toArray(),fov:this.viewport.camera.fov}}camera(){if(this.cameraOverride)return this.cameraOverride;const e=this.drawnCamera();return this.viewport.setGizmoCamera(e===this.viewport.camera?null:e),e}drawnCamera(){const e=this.through?this.cameraView():null;return e?this.throughCamera(e):(this.through&&!this.leaving&&(this.leaving=!0,queueMicrotask(()=>{this.leaving=!1,this.through&&!this.cameraView()&&this.leaveCameraView(!1)})),this.state.projection==="perspective"?this.viewport.camera:(this.syncOrthographicCamera(),this.orthographicCamera))}setCameraViewSource(e){this.cameraViewSource!==e&&(this.cameraViewSource=e,e||this.leaveCameraView(!1),this.notify())}hasCameraView(){return this.cameraViewSource!==null}cameraView(){const e=this.through,t=this.cameraViewSource;if(!e||!t)return null;const r=this.renderer.domElement,i=this.captureAspect?{width:this.captureAspect,height:1}:{width:r.clientWidth,height:r.clientHeight},a=this.viewport.camera,c=e.locked?`${a.position.toArray().join(",")}|${a.quaternion.toArray().join(",")}`:"",o=`${e.camera}|${i.width}|${i.height}|${e.zoom}|${e.offset.join(",")}|${c}`;if(this.viewMemo?.key===o)return this.viewMemo.view;const l=t.view(e.camera,i,e.zoom,e.offset),d=l&&e.locked?{...l,position:a.position.toArray(),quaternion:a.quaternion.toArray()}:l;return this.viewMemo={key:o,view:d},queueMicrotask(()=>{this.viewMemo=null}),d}toggleCameraView(){if(this.through)return this.leaveCameraView(!0),!0;const e=this.cameraViewSource,t=e?.camera()??null;if(!e)return!1;if(t===null)return bs.warn("camera view: No active camera — the scene has no camera to look through","document"),!1;H(),this.settleFlight("superseded");const r=this.viewport,i=r.orbitControls,a=i.enableDamping;return i.enableDamping=!1,i.update(),i.enableDamping=a,this.through={camera:t,zoom:e.zoom.opening,offset:[0,0],left:{position:r.camera.position.clone(),target:r.orbitControls.target.clone(),up:r.camera.up.clone(),projection:this.state.projection},release:this.captureCameraViewInput(),locked:!1},e.showing?.(t),this.notify(),!0}cameraViewLocked(){return!this.through||!this.cameraViewSource?.setPose?null:this.through.locked}toggleCameraViewLock(){const e=this.through,t=this.cameraViewSource;if(!(!e||!t?.setPose)){if(e.release(),e.locked=!e.locked,!e.locked)e.release=this.captureCameraViewInput();else{const r=this.cameraView(),i=this.viewport.orbitControls,a=this.viewport.camera;if(r){const E=new F(...r.position),k=new jr(...r.quaternion),$=e.left.position.distanceTo(e.left.target);a.up.set(0,1,0).applyQuaternion(k),a.position.copy(E),a.quaternion.copy(k),i.target.copy(E).addScaledVector(new F(0,0,-1).applyQuaternion(k),$),i.update()}const c=i.enabled;i.enabled=!0;const o=i.enableDamping;i.enableDamping=!1;const l=e.camera,d=E=>({position:a.position.toArray(),quaternion:a.quaternion.toArray(),final:E});let y=!1,w=null,C=!1;const P=E=>{if(y){w={...E,final:E.final||(w?.final??!1)};return}y=!0,w=null,Promise.resolve(t.setPose(l,E.position,E.quaternion,E.final)).catch(()=>{}).finally(()=>{y=!1,w&&P(w)})},N=()=>{C=!0,H(),this.notify(),P(d(!1))},_=()=>{C&&(C=!1,P(d(!0)))};i.addEventListener("change",N),i.addEventListener("end",_),e.release=()=>{_(),i.removeEventListener("change",N),i.removeEventListener("end",_),i.enabled=c,i.enableDamping=o}}this.viewMemo=null,H(),this.notify()}}cameraViewZoom(){return this.through?.zoom??null}setCameraViewZoom(e){const t=this.through,r=this.cameraViewSource;!t||!r||!Number.isFinite(e)||e<=0||(t.zoom=Math.min(r.zoom.max,Math.max(r.zoom.min,e)),H(),this.notify())}zoomCameraView(e){this.through&&this.setCameraViewZoom(this.through.zoom*e)}panCameraView(e,t){const r=this.through,i=this.cameraViewSource;if(!r||!i)return;const[a,c]=i.pan(r.offset,r.zoom,e,t);r.offset=[a,c],H(),this.notify()}leaveCameraView(e){const t=this.through;if(!t)return;const r=this.cameraView();t.release(),this.through=null,this.viewMemo=null,this.cameraViewSource?.showing?.(null),this.viewport.setGizmoCamera(null);const i=this.viewport;if(e)i.camera.position.copy(t.left.position),i.camera.up.copy(t.left.up),i.orbitControls.target.copy(t.left.target),this.state={...this.state,projection:t.left.projection};else if(r){const a=t.left.position.distanceTo(t.left.target),c=new F(...r.position),o=new jr(...r.quaternion),l=new F(0,0,-1).applyQuaternion(o);i.camera.up.set(0,1,0).applyQuaternion(o),i.camera.position.copy(c),i.orbitControls.target.copy(c).addScaledVector(l,a);const d=$t(t.left.position.clone().sub(t.left.target),t.left.up)!==null,y=wr().autoPerspective&&d?"perspective":t.left.projection;this.state={...this.state,projection:y}}i.camera.lookAt(i.orbitControls.target),i.orbitControls.update(),H(),this.notify()}throughCamera(e){const{left:t,right:r,top:i,bottom:a}=e.window,c=this.viewport.camera.layers.mask;if(e.projection==="orthographic"){const l=this.throughOrthographic;return Object.assign(l,{left:t,right:r,top:i,bottom:a,near:e.near,far:e.far,zoom:1}),l.position.set(...e.position),l.quaternion.set(...e.quaternion),l.layers.mask=c,l.updateProjectionMatrix(),l.updateMatrixWorld(!0),l}const o=this.throughPerspective;return o.near=e.near,o.far=e.far,o.fov=Tr.radToDeg(2*Math.atan((i-a)/2)),o.aspect=(r-t)/(i-a),o.zoom=1,o.position.set(...e.position),o.quaternion.set(...e.quaternion),o.layers.mask=c,o.projectionMatrix.makePerspective(t*e.near,r*e.near,i*e.near,a*e.near,e.near,e.far),o.projectionMatrixInverse.copy(o.projectionMatrix).invert(),o.updateMatrixWorld(!0),o}captureCameraViewInput(){const e=this.viewport.orbitControls,t=this.renderer.domElement,r=t.parentElement??t,i=e.enabled;e.enabled=!1;const a=o=>{o.target!==t||o.deltaY===0||(o.preventDefault(),this.zoomCameraView(o.deltaY<0?1.2:1/1.2))},c=o=>{if(o.target!==t)return;const l=e.mouseButtons;let d=[l.LEFT,l.MIDDLE,l.RIGHT][o.button]??null;const y=o.ctrlKey||o.metaKey||o.shiftKey;if(o.button===1&&(o.ctrlKey||o.metaKey)&&d===we.ROTATE?d=we.DOLLY:y&&d===we.ROTATE?d=we.PAN:y&&d===we.PAN&&(d=we.ROTATE),d===we.ROTATE){this.leaveCameraView(!1);return}if(d!==we.PAN&&d!==we.DOLLY)return;o.preventDefault();const w=t.getBoundingClientRect();let C=o.clientX,P=o.clientY;const N=this.through?.zoom??1,_=Math.max(5+o.clientY-w.top,1),E=$=>{if(d===we.PAN){this.panCameraView(($.clientX-C)/Math.max(w.width,1),($.clientY-P)/Math.max(w.height,1)),C=$.clientX,P=$.clientY;return}const Q=Math.max(.01,2*((5+$.clientY-w.top)/_-1)+1);this.setCameraViewZoom(N/Q)},k=()=>{window.removeEventListener("pointermove",E),window.removeEventListener("pointerup",k),window.removeEventListener("pointercancel",k)};window.addEventListener("pointermove",E),window.addEventListener("pointerup",k),window.addEventListener("pointercancel",k)};return r.addEventListener("wheel",a,{capture:!0,passive:!1}),r.addEventListener("pointerdown",c,{capture:!0}),()=>{r.removeEventListener("wheel",a,{capture:!0}),r.removeEventListener("pointerdown",c,{capture:!0}),e.enabled=i}}projection(){return this.state.projection}setProjection(e){H(),this.state.projection!==e&&(this.state={...this.state,projection:e},this.notify())}setMode(e){H(),this.state.mode!==e&&(this.clearDiagnosticPresentation(),this.state={...this.state,mode:e},e==="uv"?this.scene.overrideMaterial=new Ji({vertexShader:"varying vec2 vUv; void main(){ vUv=uv; gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0); }",fragmentShader:"varying vec2 vUv; void main(){ gl_FragColor=vec4(vUv,0.0,1.0); }"}):e==="vertex-colors"?this.scene.overrideMaterial=new eo({vertexColors:!0}):e==="wireframe"&&this.buildTopologyOverlay(),this.notify())}buildTopologyOverlay(){const e=new Nt,t=[];this.root.updateMatrixWorld(!0),this.root.traverse(r=>{const i=r;if(!i.isMesh||!i.geometry)return;const a=new to(new ro(i.geometry,Uo),new so({color:Xs,toneMapped:!1,transparent:!0,opacity:.85,depthTest:!1,depthWrite:!1}));a.matrixAutoUpdate=!1,a.matrixWorldAutoUpdate=!1,a.matrixWorld.copy(i.matrixWorld),a.frustumCulled=!1,a.renderOrder=2,e.add(a),t.push({line:a,source:i})}),t.length!==0&&(this.topologyOverlay=e,this.topologyFollowers=t,this.addHelper(e,"topology"))}syncTopologyOverlay(){this.topologyFollowers.some(({source:i})=>i.parent===null)&&(this.clearTopologyOverlay(),this.buildTopologyOverlay()),this.selectionColors??=Ke(this.renderer.domElement);const e=this.selectionColors,t=this.selectedObjects.at(-1)??null,r=(i,a)=>{for(let c=i;c;c=c.parent)if(c===a)return!0;return!1};for(const{line:i,source:a}of this.topologyFollowers){i.matrixWorld.copy(a.matrixWorld),i.visible=a.visible;const c=i.material,o=t!==null&&r(a,t),l=o||this.selectedObjects.some(y=>r(a,y)),d=o?e.active?.visible??e.visible:l?e.visible:null;c.color.setHex(d??Xs)}}clearTopologyOverlay(){for(const{line:r}of this.topologyFollowers.splice(0))r.geometry.dispose(),r.material.dispose();const e=this.topologyOverlay;if(this.topologyOverlay=null,!e)return;e.removeFromParent();const t=this.helpers.indexOf(e);t>=0&&this.helpers.splice(t,1)}setBounds(e){H(),this.state.bounds!==e&&(this.state={...this.state,bounds:e},e?(this.boundsHelper=new Ds(this.root,16757844),this.addHelper(this.boundsHelper,"bounds")):this.clearBoundsHelper(),this.notify())}setSkeleton(e){H(),this.state.skeleton!==e&&(this.state={...this.state,skeleton:e},this.refreshSkeletonHelper(),this.notify())}neutralBackgroundTexture(){return this.neutralBackground}setNeutralBackground(e){H();const t=this.scene.background,r=this.neutralBackground,i=t===r||t instanceof be&&r instanceof be&&t.equals(r);this.neutralBackground=e,i&&(this.scene.background=e)}setBackground(e){H(),this.state.background!==e&&(this.scene.background=e==="transparent"?null:this.neutralBackground,this.state={...this.state,background:e},this.notify())}resetPresentation(){H(),Kn(this.documentId),this.clearDiagnosticPresentation(),this.state=qs,this.refreshSkeletonHelper(),this.clearBoundsHelper(),this.scene.background=this.neutralBackground,this.viewport.camera.up.set(0,1,0),this.frame(),this.notify()}setBeforeRender(e){this.beforeRender=e}presentedFrameWaiters=[];presentsFrames=!1;setPresentsFrames(e){this.presentsFrames=e,e||this.resolvePresentedFrame(null)}requestPresentedFrame(){return this.presentsFrames?new Promise(e=>{let t=!1;const r=i=>{t||(t=!0,e(i))};this.presentedFrameWaiters.push(r),H(),setTimeout(()=>r(null),qo)}):Promise.resolve(null)}needsFrame(){return this.flight!==null||this.presentedFrameWaiters.length>0}servePresentedFrame(){if(this.presentedFrameWaiters.length===0)return;const e=this.renderer.domElement,t=document.createElement("canvas");t.width=Math.max(1,e.width),t.height=Math.max(1,e.height);const r=t.getContext("2d");if(!r){this.resolvePresentedFrame(null);return}r.drawImage(e,0,0),this.resolvePresentedFrame(t)}resolvePresentedFrame(e){const t=this.presentedFrameWaiters;this.presentedFrameWaiters=[];for(const r of t)r(e)}render(e,t=!1){const r=this.beforeRender?.(t),i=this.depthDrawMaterials.bind(this.renderer);try{this.boneSelectionHighlight?.update();const a=this.camera(),c=this.state.mode;if(this.boundsHelper?.update(),this.selectionOrigins?.place(),c==="uv"||c==="vertex-colors"){e(a);return}if(c==="wireframe"&&this.topologyOverlay){if(this.syncTopologyOverlay(),this.xray.enabled&&this.xray.alpha<=0){const o=new Set;this.root.traverse(l=>{const d=l;if(d.isMesh)for(const y of Array.isArray(d.material)?d.material:[d.material])y?.visible&&(y.visible=!1,o.add(y))});try{e(a)}finally{for(const l of o)l.visible=!0}return}this.shading.render(this.scene,"clay",()=>e(a),Ws);return}this.shading.render(this.scene,c,()=>e(a),Ws)}finally{i(),r?.()}}renderViewport(e=0,t=!1){this.advanceLook(e),this.ensureComposer(),this.render(r=>{const i=this.composer;if(!i){this.renderer.render(this.scene,r);return}i.setMainScene(this.scene),i.setMainCamera(r),i.render(e)},t)}resize(e,t){H(),this.renderWidth=Math.max(1,e),this.renderHeight=Math.max(1,t),this.composer?.setSize(this.renderWidth,this.renderHeight)}renderCapture(e,t){this.render(r=>{if(!t){e(r);return}const i=this.scene.background,a=this.renderer.getClearColor(new be),c=this.renderer.getClearAlpha();try{this.scene.background=null,this.renderer.setClearColor(0,0),e(r)}finally{this.scene.background=i,this.renderer.setClearColor(a,c)}})}captureImage(e=512){const t=typeof e=="number"?e:e.width,r=typeof e=="number"?e:e.height;if(!Number.isFinite(t)||t<1||!Number.isFinite(r)||r<1)return null;const i=Math.min(2048,Math.round(t)),a=Math.min(2048,Math.round(r)),c=i*2,o=a*2,l=new Bs(c,o,{type:no}),d=new Bs(c,o),y=this.renderer.getRenderTarget(),w=this.renderer.getPixelRatio(),C=this.viewport.camera,P=C.aspect;try{this.captureAspect=i/a;const N=typeof e=="number"?void 0:e.camera;N?this.cameraOverride=N:(C.aspect=i/a,C.updateProjectionMatrix()),this.renderer.setPixelRatio(1),this.renderer.setRenderTarget(l),this.renderCapture(z=>this.renderSolidForCapture(z,l,c,o),typeof e!="number"&&e.transparent===!0),fo(typeof e!="number"&&e.transparent===!0).render(this.renderer,d,l,0,!1);const _=c*4,E=new Uint8Array(_*o);this.renderer.readRenderTargetPixels(d,0,0,c,o,E);const k=document.createElement("canvas");k.width=c,k.height=o;const $=k.getContext("2d");if(!$)return null;const Q=$.createImageData(c,o);for(let z=0;z<o;z++){const Y=(o-1-z)*_,D=z*_;Q.data.set(E.subarray(Y,Y+_),D)}$.putImageData(Q,0,0);const x=document.createElement("canvas");x.width=i,x.height=a;const q=x.getContext("2d");return q?(q.drawImage(k,0,0,i,a),x.toDataURL("image/png")):null}finally{this.captureAspect=null,this.cameraOverride=null,C.aspect=P,C.updateProjectionMatrix(),this.renderer.setRenderTarget(y),this.renderer.setPixelRatio(w),this.composer?.setSize(this.renderWidth,this.renderHeight,!1),d.dispose(),l.dispose(),H()}}dispose(){this.disposed=!0,this.leaveCameraView(!1),this.selectionOrigins?.dispose(),this.selectionOrigins=null,this.settleFlight("closed"),this.viewport.orbitControls.removeEventListener("start",this.cancelLookForHuman),this.unsubscribeRotateStart(),this.unsubscribeAxisView(),this.unsubscribeSelectionTheme(),this.clearDiagnosticPresentation(),this.clearBoneSelectionHighlight(),this.clearBoundsHelper(),this.clearSkeletonHelper(),this.selectionOutline&&bo(this.renderer,this.selectionOutline,this.selectionOutlinePass),this.composer?.dispose(),this.sceneRenderPass=null,this.selectionOutline=null,this.selectionOutlinePass=null,this.composer=null,this.shading.dispose(),this.depthDrawMaterials.dispose(),this.listeners.clear()}addHelper(e,t){e.name=`__object3d_document_${t}`,cn(e,"editorHelper",!0),this.scene.add(e),this.helpers.push(e)}get selectionOutlineEnabled(){return this.selectionOutlineWanted}set selectionOutlineEnabled(e){e!==this.selectionOutlineWanted&&(this.selectionOutlineWanted=e,e?this.syncSelectionPresentation():(this.selectionOutline?.selection.clear(),this.syncComposerOutput()))}selectionOutlineWanted=!0;xray={enabled:!1,alpha:1};setXray(e){this.xray.enabled===e.enabled&&this.xray.alpha===e.alpha||(this.xray=e,H())}set selectionOriginsEnabled(e){e!==(this.selectionOrigins!==null)&&(e?(this.selectionOrigins=new ta,this.scene.add(this.selectionOrigins),this.syncSelectionPresentation()):(this.selectionOrigins?.dispose(),this.selectionOrigins=null,H()))}ensureComposer(){this.selectionOutlineWanted&&(this.composer||this.composerLoading||this.disposed||(this.composerLoading=!0,st(()=>import("./index-DHhMOs_s.js"),__vite__mapDeps([0,1,2])).then(e=>{if(this.composerLoading=!1,this.disposed||this.composer)return;const t=this.camera(),r=new e.EffectComposer(this.renderer);this.sceneRenderPass=new e.RenderPass(this.scene,t),r.addPass(this.sceneRenderPass),this.selectionOutline=yo(e,this.renderer,this.scene,t,Ke(this.renderer.domElement)),this.syncSelectionTheme(),zs(this.selectionOutline,this.selectedObjects),this.selectionOutlinePass=new e.EffectPass(t,this.selectionOutline),r.addPass(this.selectionOutlinePass),this.composer=r,this.syncComposerOutput(),r.setSize(this.renderWidth,this.renderHeight),H()}).catch(()=>{this.composerLoading=!1})))}renderSolidForCapture(e,t,r,i){const a=this.composer,c=(this.selectionOutline?.selection.size??0)>0;if(!a||!c||!this.sceneRenderPass||!this.selectionOutlinePass){this.renderer.render(this.scene,e);return}const o=this.renderWidth,l=this.renderHeight;try{this.sceneRenderPass.renderToScreen=!1,this.selectionOutlinePass.renderToScreen=!1,a.setSize(r,i,!1),this.sceneRenderPass.render(this.renderer,a.inputBuffer,a.outputBuffer,0),this.selectionOutlinePass.render(this.renderer,a.inputBuffer,t,0)}finally{a.setSize(o,l,!1),this.syncComposerOutput(),this.renderer.setRenderTarget(t)}}syncComposerOutput(){const e=(this.selectionOutline?.selection.size??0)>0;this.sceneRenderPass&&(this.sceneRenderPass.renderToScreen=!e),this.selectionOutlinePass&&(this.selectionOutlinePass.enabled=e,this.selectionOutlinePass.renderToScreen=e)}refreshSkeletonHelper(){const e=this.state.skeleton||this.boneSelectionHighlight!==null;e&&!this.skeletonHelper?(this.skeletonHelper=new io(this.root),Go(this.skeletonHelper),this.scene.add(this.skeletonHelper)):e||this.clearSkeletonHelper()}clearSkeletonHelper(){this.skeletonHelper&&(this.skeletonHelper.removeFromParent(),this.skeletonHelper.dispose(),this.skeletonHelper=null)}clearBoneSelectionHighlight(){this.boneSelectionHighlight&&(this.boneSelectionHighlight.removeFromParent(),this.boneSelectionHighlight.dispose(),this.boneSelectionHighlight=null)}clearBoundsHelper(){if(!this.boundsHelper)return;const e=this.boundsHelper;this.boundsHelper=null;const t=this.helpers.indexOf(e);t>=0&&this.helpers.splice(t,1),e.removeFromParent(),e.geometry.dispose(),Array.isArray(e.material)?e.material.forEach(r=>{r.dispose()}):e.material.dispose()}frameBones(e){const t=new Rr,r=new F;for(const l of e){t.expandByPoint(l.getWorldPosition(r)),l.parent?.isBone&&t.expandByPoint(l.parent.getWorldPosition(r));for(const d of l.children)d.isBone&&t.expandByPoint(d.getWorldPosition(r))}const i=t.getCenter(new F),a=Math.max(t.getSize(new F).length(),.2);t.expandByScalar(a*.35);const c=this.viewport.camera.position.clone().sub(this.viewport.orbitControls.target).normalize(),o=It(t,this.viewport.camera,c);this.viewport.setPose(i.clone().addScaledVector(c,o),i)}syncOrthographicCamera(){const e=this.viewport.camera,t=this.viewport.orbitControls.target,r=Math.max(e.position.distanceTo(t),.001),i=Math.max(r*Math.tan(Tr.degToRad(e.fov)/2),.001),a=Math.max(this.renderer.domElement.clientWidth,1),c=Math.max(this.renderer.domElement.clientHeight,1),o=this.captureAspect??a/c;this.orthographicCamera.left=-i*o,this.orthographicCamera.right=i*o,this.orthographicCamera.top=i,this.orthographicCamera.bottom=-i,this.orthographicCamera.near=e.near,this.orthographicCamera.far=e.far,this.orthographicCamera.position.copy(e.position),this.orthographicCamera.quaternion.copy(e.quaternion),this.orthographicCamera.up.copy(e.up),this.orthographicCamera.layers.mask=e.layers.mask,this.orthographicCamera.updateProjectionMatrix(),this.orthographicCamera.updateMatrixWorld(!0)}clearDiagnosticPresentation(){this.clearTopologyOverlay(),this.scene.overrideMaterial?.dispose(),this.scene.overrideMaterial=null;for(const e of this.helpers.splice(0)){e.removeFromParent();const t=e;t.geometry?.dispose();const r=t.material;Array.isArray(r)?r.forEach(i=>{i.dispose()}):r?.dispose()}}notify(){this.version++;for(const e of this.listeners)e()}}const Jo=7;let gt=null;function ea(){if(gt)return gt;const n=64,e=document.createElement("canvas");e.width=n,e.height=n;const t=e.getContext("2d");return t.beginPath(),t.arc(n/2,n/2,n/2-1,0,Math.PI*2),t.fillStyle="rgba(0, 0, 0, 0.75)",t.fill(),t.beginPath(),t.arc(n/2,n/2,n/2-8,0,Math.PI*2),t.fillStyle="#ffffff",t.fill(),gt=new oo(e),gt.colorSpace=pn,gt}class ta extends dn{objects=[];origin=new F;constructor(){super(new ln,new hn({map:ea(),size:Jo,sizeAttenuation:!1,transparent:!0,alphaTest:.05,depthTest:!1,depthWrite:!1,toneMapped:!1})),this.name="volter:selection-origins",this.userData.editorHelper=!0,this.renderOrder=1e3,this.frustumCulled=!1,this.raycast=()=>{}}update(e,t){this.objects=e,this.material.color.setHex(e.length===1&&t.active!==void 0?t.active:t.visible),this.visible=e.length>0}place(){const e=this.objects.length;let t=this.geometry.getAttribute("position");(t===void 0||t.count<e)&&(this.geometry.dispose(),t=new un(new Float32Array(Math.max(e,8)*3),3),this.geometry.setAttribute("position",t)),this.geometry.setDrawRange(0,e),this.objects.forEach((r,i)=>{r.getWorldPosition(this.origin),t.setXYZ(i,this.origin.x,this.origin.y,this.origin.z)}),t.needsUpdate=!0}dispose(){this.removeFromParent(),this.geometry.dispose(),this.material.dispose()}}class ra{constructor(e){this.options=e}active=null;settling=!1;idleWaiters=new Set;begin(e){if(this.active||this.settling)return!1;try{const t=this.options.begin(e);return t?(this.active={pointerId:e.pointerId,gesture:t},!0):!1}catch(t){return this.options.reportError(t),!1}}update(e){if(!(!this.active||this.active.pointerId!==e.pointerId))try{this.active.gesture.update(e)}catch(t){this.cancelWithError(t)}}async commit(e){const t=this.take(e.pointerId);if(!t)return!1;this.settling=!0;try{return await t.commit(e),await this.options.persist(t.label),!0}catch(r){try{await t.cancel()}catch(i){return this.options.reportError({operationError:r,rollbackError:i}),!1}return this.options.reportError(r),!1}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}async cancel(e){const t=this.take(e);if(!t)return!1;this.settling=!0;try{return await t.cancel(),!0}catch(r){return this.options.reportError(r),!1}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}async settle(){this.active&&await this.cancel(),this.settling&&await new Promise(e=>this.idleWaiters.add(e))}hasActiveGesture(){return this.active!==null}take(e){if(!this.active||e!==void 0&&this.active.pointerId!==e)return null;const t=this.active.gesture;return this.active=null,t}async cancelWithError(e){const t=this.take();if(t){this.settling=!0;try{await t.cancel(),this.options.reportError(e)}catch(r){this.options.reportError({operationError:e,rollbackError:r})}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}}}class sa{constructor(e,t){this.frame=e,this.releaseRenderer=t,this.unsubscribeActivity=Lo(()=>this.syncActivity())}rafId=0;running=!1;disposed=!1;active=!1;unsubscribeActivity;get isDisposed(){return this.disposed}get isRunning(){return this.running}setActive(e){this.disposed||(this.active=e,this.syncActivity())}syncActivity(){this.active&&yr()?this.start():this.stop()}redraw(){this.running&&!this.disposed&&yr()&&this.guardedFrame(performance.now())}dispose(){this.stop(),!this.disposed&&(this.disposed=!0,this.unsubscribeActivity(),this.releaseRenderer())}start(){this.disposed||this.running||(this.running=!0,this.guardedFrame(performance.now(),!0),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick)))}lastFrameFailure=null;guardedFrame(e,t=!1){try{this.frame(e,t),this.lastFrameFailure=null}catch(r){const i=r instanceof Error?r.message:String(r);i!==this.lastFrameFailure&&(this.lastFrameFailure=i,console.error("[document renderer] a frame threw; the loop continues:",r))}}stop(){this.running=!1,this.rafId!==0&&(cancelAnimationFrame(this.rafId),this.rafId=0)}tick=e=>{if(!(!this.running||this.disposed)){if(!yr()){this.stop();return}this.guardedFrame(e),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick))}}}const na=new Set(["solid","clay","unlit","wireframe","normals","overdraw"]);function ia(n,e){return{read:()=>{const t=n.cameraPose;if(!t)return null;const{position:r,target:i}=t;return{camera:{position:{x:r.x,y:r.y,z:r.z},target:{x:i.x,y:i.y,z:i.z},...t.fov?{fov:t.fov}:{}},diagnostic:n.shadingMode,grid:Zn(e)}},setDiagnostic:t=>na.has(t)?(n.setShadingMode(t),!0):!1,setCamera:t=>typeof t!="string"?(n.shell.setCameraPose(t.position,t.target,t.fov),!0):t==="isometric"?!1:(n.shell.setViewPreset(t),!0),frame:t=>t==="document"?!1:(n.shell.focusOnSelection(),!0)}}function oa(n){const e=kr();return e?Qn(sn(e.shell,n)):"none"}const aa=m.lazy(()=>st(()=>import("./stage-transform-tools-CHvXlnKB.js"),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,13,14,15,1,2,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63])).then(n=>({default:n.ThreeStageTransformTools}))),ca=m.lazy(()=>st(()=>import("./stage-transform-tools-CHvXlnKB.js"),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,13,14,15,1,2,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63])).then(n=>({default:n.ThreeStageTransformControls})));function Ys(n){return{transformTools:()=>oa(n),TransformTools:aa,TransformControls:ca}}class la{constructor(e,t,r){this.create=e,this.isOpen=t,this.subscribe=r}states=new Map;generations=new WeakMap;unsubscribe=null;claim(e){const t=this.states.get(e)??[];let r=t.find(i=>!i.inUse);return r||(r=this.create(e),t.push(r),this.states.set(e,t)),r.inUse=!0,this.generations.set(r,this.generation(r)+1),this.unsubscribe??=this.subscribe(()=>this.discardClosed()),r}generation(e){return this.generations.get(e)??0}release(e,t=this.generation(e)){this.generation(e)===t&&(e.inUse=!1,queueMicrotask(()=>this.discardClosed()))}retain(e,t,r){if(!this.isOpen(e.documentId)||!this.states.get(e.documentId)?.includes(e)||this.generation(e)!==r){t.dispose();return}const i=e.source;e.source=t,i!==t&&i?.dispose()}discardClosed(){const e=[];for(const[r,i]of this.states){if(this.isOpen(r))continue;const a=i.filter(c=>c.inUse);e.push(...i.filter(c=>!c.inUse)),a.length?this.states.set(r,a):this.states.delete(r)}this.states.size===0&&(this.unsubscribe?.(),this.unsubscribe=null);const t=[];for(const r of e){const i=r.source;r.source=null;try{i?.dispose()}catch(a){t.push(a)}}if(t.length)throw new AggregateError(t,"Retained document cleanup failed")}}const ua=m.lazy(async()=>({default:(await st(()=>import("./stage-overlay-set-BWxO_Pk6.js"),__vite__mapDeps([64,4,5,7,8,6,9,10,11,12,13,45,65,66,24,14,15,1,2,16,17,18,19,20,21,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63]))).StageOverlaySet}));function ha(n){return p.jsx(m.Suspense,{fallback:null,children:p.jsx(ua,{...n})})}function Ks(n,e,t){if(e==="orthographic"){const r=$t(n.camera.position.clone().sub(n.orbitControls.target),new F(0,1,0).applyQuaternion(n.camera.quaternion));return r!==null?r:t==="short"?"Iso":"Orthographic"}return t==="short"?"Persp":"Perspective"}const da=()=>()=>{},Zs=()=>0;function pa({shell:n,documentId:e,label:t,kebab:r=!1}){const i=m.useSyncExternalStore(So,Is,Is);m.useSyncExternalStore(Ro,jo);const a=e?To(e):null;m.useSyncExternalStore(a?.subscribe??da,a?.getSnapshot??Zs,a?.getSnapshot??Zs);const c=a?a.projection():i.projection,o=C=>{a?a.setProjection(C):Ns(C)},[l,d]=m.useState(!1),y=m.useRef(null);m.useEffect(()=>{if(!l)return;const C=P=>{y.current?.contains(P.target)||d(!1)};return document.addEventListener("mousedown",C),()=>document.removeEventListener("mousedown",C)},[l]);const w=C=>{if(a){a.setViewPreset(C,"view");return}Ns("orthographic"),n.setViewPreset(C)};return p.jsxs("div",{ref:y,className:"volter-viewport-popover-anchor",children:[t===void 0?p.jsx(et,{text:c==="perspective"?"Perspective":"Orthographic",children:p.jsx(Be,{"aria-label":"Viewport views","aria-expanded":l,size:"comfortable",onClick:()=>d(C=>!C),children:p.jsx(Se,{icon:l?Jn:ei,size:"md"})})}):p.jsxs(Ze,{size:"comfortable",variant:"ghost","aria-label":"Viewport views","aria-expanded":l,"data-testid":"viewport-view-name",onClick:()=>d(C=>!C),children:[r?p.jsx(Se,{icon:ti,size:"sm"}):null,t]}),l?p.jsx(ri,{style:{minWidth:230},children:p.jsxs(si,{gap:3,children:[p.jsx(ys,{variant:"caption",tone:"muted",children:"Projection"}),p.jsxs(Ss,{gap:1,children:[p.jsx(Ze,{size:"compact",variant:c==="perspective"?"primary":"ghost",onClick:()=>o("perspective"),children:"Perspective"}),p.jsx(Ze,{size:"compact",variant:c==="orthographic"?"primary":"ghost",onClick:()=>o("orthographic"),children:"Orthographic"})]}),p.jsx(ys,{variant:"caption",tone:"muted",children:"Axis View"}),p.jsxs(Ss,{gap:1,children:[p.jsx(Ze,{size:"compact",variant:"ghost",onClick:()=>w("top"),children:"Top"}),p.jsx(Ze,{size:"compact",variant:"ghost",onClick:()=>w("front"),children:"Front"}),p.jsx(Ze,{size:"compact",variant:"ghost",onClick:()=>w("right"),children:"Right"})]})]})}):null]})}const fa=Co;function Qs(n){return Vr(null,n)}const ma=()=>()=>{},Js=()=>0,ga=5,va=58;function wa(n,e){const t=e?.camera()??n.renderCamera,r=n.camera.position,i=n.orbitControls.target,a=t.isOrthographicCamera?wn(t,n,e):0;return[r.x,r.y,r.z,i.x,i.y,i.z,a].map(c=>c.toPrecision(6)).join(",")}function wn(n,e,t){const r=e.orbitControls.domElement,i=Math.max(1,t?.renderer.domElement.height??(r?.clientHeight??1)*(r?.ownerDocument.defaultView?.devicePixelRatio??1));return(n.top-n.bottom)/n.zoom/i}function ba({viewport:n,documentId:e,session:t,store:r,projection:i,displayName:a,objectName:c,statistics:o,subject:l,gridScale:d}){m.useSyncExternalStore(r.subscribe,r.getShellSnapshot??r.getSnapshot),m.useSyncExternalStore(m.useCallback(V=>{const B=n?.orbitControls;return B?.addEventListener("change",V),()=>B?.removeEventListener("change",V)},[n]),()=>n?wa(n,t):""),m.useSyncExternalStore(t?.subscribe??ma,t?.getSnapshot??Js,t?.getSnapshot??Js);const y=m.useSyncExternalStore(Qs,nn),w=m.useSyncExternalStore(Qs,ni),C=y&&!w?rt.content.onAccent:rt.content.primary,P=ii();m.useSyncExternalStore(Cr,xs,xs);const N=tt(e).overlays.navigationControls;if(!n)return null;const _=$t(n.camera.position.clone().sub(n.orbitControls.target),new F(0,1,0).applyQuaternion(n.camera.quaternion))??"User",E=t?.projection()??i,k=t?.cameraView()??null,$=k?`Camera ${k.projection==="perspective"?"Perspective":"Orthographic"}`:`${_} ${E==="perspective"?"Perspective":"Orthographic"}`,Q=r.selectedEntityId,x=(Q===null?null:c(Q))||null,q=l??(x===null||x===a?a:`${a} | ${x}`),z=t?.camera()??n.renderCamera,Y=d&&!k&&_!=="User"&&z.isOrthographicCamera?d(wn(z,n,t)):null,D=V=>{V.preventDefault();const B=V.currentTarget;B.setPointerCapture(V.pointerId);const xe=n.orbitControls.domElement?.getBoundingClientRect().top??0,Te=Math.max(5+V.clientY-xe,1),le=n.camera,de=n.orbitControls.target,ue=le.position.clone().sub(de),re=!t&&n.renderCamera instanceof Or?n.renderCamera:null,ie=re?.zoom??1,Ae=t?.cameraViewZoom()??null,pe=fe=>{const _e=5+fe.clientY-xe,Pe=Math.max(.01,2*(_e/Te-1)+1);Ae!==null&&t?.cameraView()?t.setCameraViewZoom(Ae/Pe):re?(re.zoom=ie/Pe,re.updateProjectionMatrix()):le.position.copy(de).addScaledVector(ue,Pe),n.orbitControls.update()},J=()=>{B.removeEventListener("pointermove",pe),B.removeEventListener("pointerup",J),B.removeEventListener("pointercancel",J),B.removeEventListener("lostpointercapture",J)};B.addEventListener("pointermove",pe),B.addEventListener("pointerup",J),B.addEventListener("pointercancel",J),B.addEventListener("lostpointercapture",J)},Z=V=>{V.preventDefault();const B=V.currentTarget;B.setPointerCapture(V.pointerId);let xe=V.clientX,Te=V.clientY;const le=new F,de=new F,ue=ie=>{const Ae=ie.clientX-xe,pe=ie.clientY-Te;if(xe=ie.clientX,Te=ie.clientY,t?.cameraView()){const it=t.renderer.domElement;t.panCameraView(Ae/Math.max(it.clientWidth,1),pe/Math.max(it.clientHeight,1));return}const J=n.camera,fe=n.orbitControls.target,_e=J.position.distanceTo(fe),Pe=Math.max(1,B.ownerDocument.defaultView?.innerHeight??1),nt=2*_e*Math.tan(Tr.degToRad(J.fov/2))/Pe;le.setFromMatrixColumn(J.matrixWorld,0).multiplyScalar(-Ae*nt),de.setFromMatrixColumn(J.matrixWorld,1).multiplyScalar(pe*nt),J.position.add(le).add(de),fe.add(le).add(de),n.orbitControls.update()},re=()=>{B.removeEventListener("pointermove",ue),B.removeEventListener("pointerup",re),B.removeEventListener("pointercancel",re),B.removeEventListener("lostpointercapture",re)};B.addEventListener("pointermove",ue),B.addEventListener("pointerup",re),B.addEventListener("pointercancel",re),B.addEventListener("lostpointercapture",re)};return p.jsxs(p.Fragment,{children:[P.viewName==="text"&&r.showHelpers?p.jsxs("div",{"data-testid":"viewport-view-text","aria-hidden":"true",style:{position:"absolute",top:"var(--volter-space-3)",left:"calc(var(--volter-space-4) + var(--volter-control-comfortable-height) * 2 + var(--volter-space-4))",display:"flex",flexDirection:"column",gap:"var(--volter-space-1)",fontSize:"var(--volter-font-sm)",color:C,textShadow:"var(--volter-content-text-shadow, none)",pointerEvents:"none",userSelect:"none"},children:[p.jsx("span",{children:$}),p.jsx("span",{children:q}),Y?p.jsx("span",{"data-testid":"viewport-grid-scale",children:Y}):null,o&&o.length>0?p.jsx("div",{"data-testid":"viewport-statistics",style:{display:"grid",gridTemplateColumns:`${va}px auto`,rowGap:"var(--volter-space-1)",marginTop:oi[ga]},children:o.map(V=>p.jsxs(m.Fragment,{children:[p.jsx("span",{children:V.label}),p.jsx("span",{children:V.value})]},V.id))}):null]}):null,P.viewName==="menu"?p.jsx("div",{className:"volter-viewport-view-pill",style:{position:"absolute",top:"var(--volter-viewport-overlay-top, var(--volter-space-4))",left:"var(--volter-stage-name-left, calc(var(--volter-space-4) + var(--volter-control-comfortable-height) * 2 + var(--volter-space-4)))",zIndex:"calc(var(--volter-z-dropdown, 1000) - 1)",pointerEvents:"auto"},children:p.jsx(pa,{shell:r,documentId:e,label:Ks(n,E,"long"),kebab:!0})}):null,P.viewName==="gizmo"?p.jsxs("button",{type:"button","data-testid":"viewport-view-name",className:"volter-viewport-gizmo-label","aria-label":E==="perspective"?"Switch to orthographic":"Switch to perspective",onClick:()=>{const V=E==="perspective"?"orthographic":"perspective";t?t.setProjection(V):n.setProjection(V)},style:{position:"absolute",top:Po+4,right:xo,transform:"translateX(50%)",display:"inline-flex",alignItems:"center",gap:"var(--volter-space-1)",padding:0,border:0,background:"none",fontSize:"var(--volter-font-sm)",color:C,textShadow:"var(--volter-content-text-shadow, none)",cursor:"pointer",pointerEvents:"auto"},children:[p.jsx(Se,{size:"xs",icon:E==="perspective"?ai:ci}),Ks(n,E,"short")]}):null,N&&r.showGizmos?p.jsxs("div",{"data-testid":"viewport-navigation",role:"toolbar","aria-label":"Navigation","aria-orientation":"vertical",className:"volter-chrome-island volter-viewport-navigation",style:{position:"absolute",top:fa,right:"var(--volter-space-6)",display:"flex",flexDirection:"column",gap:"var(--volter-space-1)",padding:"var(--volter-space-1) 0",borderRadius:"var(--volter-radius-full)",background:"var(--volter-island-surface, var(--volter-surface-overlay))",pointerEvents:"auto"},children:[p.jsx(et,{text:"Zoom (drag)",children:p.jsx(Be,{size:"comfortable","aria-label":"Zoom the view",onPointerDown:D,children:p.jsx(Se,{size:"2xl",icon:ye.viewport.zoomIn})})}),p.jsx(et,{text:"Pan (drag)",children:p.jsx(Be,{size:"comfortable","aria-label":"Pan the view",onPointerDown:Z,children:p.jsx(Se,{size:"2xl",icon:ye.viewport.pan})})}),t?.hasCameraView()?p.jsx(et,{text:k?"Leave the camera view":"Look through the camera",children:p.jsx(Be,{size:"comfortable","aria-label":"Toggle the camera view",onClick:()=>t.toggleCameraView(),children:p.jsx(Se,{size:"2xl",icon:k?ye.viewport.cameraView:ye.viewport.camera})})}):null,k&&t?.cameraViewLocked()!==null?p.jsx(et,{text:t?.cameraViewLocked()?"Unlock the camera from the view":"Lock the camera to the view",children:p.jsx(Be,{size:"comfortable","aria-label":"Lock the camera to the view",onClick:()=>t?.toggleCameraViewLock(),children:p.jsx(Se,{size:"2xl",icon:t?.cameraViewLocked()?ye.viewport.cameraLocked:ye.viewport.cameraUnlocked})})}):null,k||P.viewName==="gizmo"?null:p.jsx(et,{text:E==="perspective"?"Orthographic":"Perspective",children:p.jsx(Be,{size:"comfortable","aria-label":"Toggle perspective and orthographic",onClick:()=>{const V=E==="perspective"?"orthographic":"perspective";t?t.setProjection(V):n.setProjection(V)},children:p.jsx(Se,{size:"2xl",icon:E==="orthographic"?ye.viewport.projectionOrthographic:ye.viewport.projection})})})]}):null,k&&t?p.jsx(ya,{view:k,canvas:t.renderer.domElement,locked:t.cameraViewLocked()===!0}):null]})}function ya({view:n,canvas:e,locked:t}){const[r,i]=m.useState(null),[,a]=m.useState(0);m.useEffect(()=>{const E=new ResizeObserver(()=>a(k=>k+1));return E.observe(e),()=>E.disconnect()},[e]);const c=e.clientWidth,o=e.clientHeight,l=e.ownerDocument.defaultView?.devicePixelRatio??1,d=e.getBoundingClientRect(),y=r?.getBoundingClientRect(),w=1/l,C=n.frame.left*c-w,P=n.frame.top*o-w,N=n.frame.width*c+2*w,_=n.frame.height*o+2*w;return p.jsx("div",{ref:i,"aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none"},children:y?p.jsxs("svg",{"data-testid":"viewport-camera-frame",width:c,height:o,style:{position:"absolute",left:d.left-y.left,top:d.top-y.top},children:[n.passepartout.opacity>0?p.jsx("path",{d:`M0 0H${c}V${o}H0Z M${C} ${P}V${P+_}H${C+N}V${P}Z`,fill:n.passepartout.color,fillOpacity:n.passepartout.opacity,fillRule:"evenodd"}):null,n.passepartout.opacity>0?p.jsx("rect",{x:C,y:P,width:N,height:_,fill:"none",stroke:n.border.solid,strokeWidth:w,shapeRendering:"crispEdges"}):null,p.jsx("rect",{x:C,y:P,width:N,height:_,fill:"none",stroke:n.border.dashed,strokeWidth:w,strokeDasharray:`${3*w} ${3*w}`,shapeRendering:"crispEdges"}),t?p.jsx("rect",{x:C-w,y:P-w,width:N+2*w,height:_+2*w,fill:"none",stroke:n.border.locked,strokeWidth:w,strokeDasharray:`${3*w} ${3*w}`,shapeRendering:"crispEdges"}):null]}):null})}const Sa=m.lazy(async()=>({default:(await st(()=>import("./stage-keyboard-BnzybgXw.js"),__vite__mapDeps([67,7,5,8,68,6,4,9,10,11,12,13,45,23]))).StageKeyboardBinding})),xa=n=>{const e=n.split(":");return(e[0]==="document"?e[1]:e[0])??n},en=()=>Bi(),Pr=12;function tn(n){if(!n)return null;const e=new Rr(new F(n.min[0],n.min[1],n.min[2]),new F(n.max[0],n.max[1],n.max[2]));return e.isEmpty()?null:e}const Pa=500;function Ca(n){return Vr(null,n)}const ka=["solid","preview","rendered","clay","unlit","wireframe","matcap","normals","overdraw"];let Ma=0;const Je=new la(n=>({documentId:n,store:fn(new on),inUse:!1,source:null,camera:null,presentation:null,transport:null,contentSeconds:0,transportAdvances:0}),n=>wi().some(e=>e.descriptor.id===n),bi);function Ea({canvasHostRef:n}){return p.jsx("div",{ref:n,style:{position:"absolute",inset:0}})}function Oa(n,e,t,r,i){if(e==="inspector-preview"){const l=$i();return l.canvas.setAttribute("aria-label",`${t} authoring viewport`),n.appendChild(l.canvas),{canvas:l.canvas,renderer:l.renderer,lease:l}}const a=go(r.width,r.height,i),{canvas:c,renderer:o}=a;return c.setAttribute("aria-label",`${t} authoring viewport`),n.appendChild(c),{canvas:c,renderer:o,lease:a}}class rn{constructor(e,t,r){this.lane=e,this.surface=t,this.store=r??fn(new on),this.transport=new Di(this.store.shell)}scene=new mn;store;cleanups=[];rendererSession=new sa((e,t)=>this.frame?.(e,t),()=>{});viewport=null;session=null;dressing=null;presentationRig=null;applyPresentation=null;backdropOverridden=!1;documentStudio=null;contentLights=[];contentHas={light:!1,"directional-light":!1};darkened=[];darkenContentLights(){for(const t of this.contentLights)t.visible&&(t.visible=!1,this.darkened.push(t));if(this.darkened.length===0)return 0;const e=this.darkened.length;return this.scene.onAfterRender=()=>{for(const t of this.darkened)t.visible=!0;this.darkened=[],this.scene.onAfterRender=()=>{}},e}defaultEnvironment=null;defaultBackground=null;adapter=null;presentationAdapter=null;content=null;frame=null;syncHostScene=null;presence=null;initialized=!1;contentSeconds=0;transportAdvances=0;users=0;closed=!1;released=!1;get isClosed(){return this.closed}transport;borrow(){this.users++;let e=!1;return()=>{e||(e=!0,this.users--,this.releaseIfClosed())}}close(){this.closed=!0,this.frame=null,this.syncHostScene=null,this.session?.setBeforeRender(null),this.session?.setPresentsFrames(!1),this.rendererSession.setActive(!1),this.content?.dispose(),this.transport.dispose(),this.releaseIfClosed()}releaseIfClosed(){if(!this.closed||this.users!==0||this.released)return;this.released=!0;const{lease:e,renderer:t,canvas:r}=this.surface;for(const i of[...this.cleanups.splice(0),()=>this.session?.dispose(),()=>this.viewport?.dispose(),()=>this.rendererSession.dispose(),()=>this.dressing?.dispose(),...e?[()=>e.release()]:[()=>t.dispose(),()=>t.forceContextLoss(),()=>r.remove()]])try{i()}catch(a){console.error("Object3D document cleanup failed.",a)}}}function bn({documentId:n,sourcePath:e,build:t,displayName:r="Source Object3D",background:i,cameraDirection:a,persistence:c,documentSource:o,authoring:l,interaction:d,selectionOutline:y=!0,active:w=!0,audit:C=!0,chromeless:P=!1,modelSource:N,assetType:_,sourceAuthoring:E,dressing:k,rendererLane:$="own",onOpenNode:Q,frameBounds:x,openingFrameBounds:q,openingFit:z,openingView:Y,presentation:D,cameraView:Z,stageKind:V,statistics:B,subject:xe,gridScale:Te,content:le}){const de=V??xa(n);m.useEffect(()=>{if(!P)return li(n)},[n,P]);const ue=Hi(ui()),re=ue??kr(),ie=re?sn(re.shell,n,P?"embedded":"document"):null,Ae=m.useSyncExternalStore(Ca,nn),pe=ie!==null&&hi(ie,Ae),J=m.useRef(pe);J.current=pe;const fe=ie!==null&&di(ie),_e=m.useRef(fe);_e.current=fe;const Pe=ie!==null&&pi(ie),nt=m.useRef(Pe);nt.current=Pe;const it=fi(),Gt=m.useRef(it);Gt.current=it;const Ut=m.useRef(null),qt=m.useRef(null),X=m.useRef(null),Ve=m.useRef(null);(!Ve.current||Ve.current.documentId!==n)&&(Ve.current&&Je.release(Ve.current),Ve.current=Je.claim(n)),m.useEffect(()=>{const R=Ve.current,me=Je.generation(R);return()=>Je.release(R,me)},[n]);const G=Ve.current,ze=le?.kind==="world-root",Xt=w||ze,Lr=m.useRef(le?.kind==="world-root"?le.load:null);Lr.current=le?.kind==="world-root"?le.load:null;const[We,Yt]=m.useState(Xt);m.useEffect(()=>Yt(Xt),[Xt]);const Kt=m.useRef(y);m.useEffect(()=>{Kt.current=y;const R=X.current?.session;R&&(R.selectionOutlineEnabled=$!=="inspector-preview"&&y),X.current?.applyPresentation?.()},[y,$]);const Fr=m.useRef(Promise.resolve()),Zt=m.useRef(!1);m.useEffect(()=>{if(We)return ot.current=!1,tr("building"),()=>{const R=X.current;if(R&&!ze){Zt.current=!vt.current;const me=R.store.cameraPose;G.camera=me&&R.viewport?{...me,up:R.viewport.camera.up.clone()}:null,G.presentation=R.session?.presentation()??null,G.transport=R.transport.snapshot(),G.contentSeconds=R.contentSeconds,G.transportAdvances=R.transportAdvances}yt.current=null,St.current=null,bt.current=null,wt.current=null,R?.close(),X.current=null}},[n,$,G,We,ze]);const Dr=m.useRef(Q);Dr.current=Q;const Br=m.useRef(x);Br.current=x;const Hr=m.useRef(q);Hr.current=q;const Qt=m.useRef(Y);Qt.current=Y;const _r=m.useRef(D);_r.current=D;const zr=m.useRef(Z);zr.current=Z;const vt=m.useRef(w);vt.current=w;const Wr=m.useRef(w),Ir=m.useRef({build:t,sourcePath:e});m.useEffect(()=>{const R=Ir.current;Ir.current={build:t,sourcePath:e},!(R.build===t&&R.sourcePath===e)&&!We&&G.source&&(G.source.dispose(),G.source=null)},[t,G,e,We]);const wt=m.useRef(null),ot=m.useRef(!1),bt=m.useRef(null),yt=m.useRef(null),St=m.useRef(null),[Jt,oe]=m.useState(null),[er,tr]=m.useState("building"),[Nr,yn]=m.useState(null),[Sn,xn]=m.useState("mounting"),[Pn,Cn]=m.useState([]),$r=m.useRef(null),[Gr,kn]=m.useState("perspective"),[Mn,Ur]=m.useState(null),xt=m.useRef(null);xt.current=Mn;const rr=a?.[0],sr=a?.[1],nr=a?.[2],at=N?.kind,ir=N?.kind==="project-file"?N.path:void 0,Pt=N?.kind==="entity"?N.entityId:void 0,qr=k?.environment,Xr=k?.background,Yr=k?.keyLight,or=k?.grid,ct=k?.viewLocked,ar=k?.toneMapping;w&&mi(n),m.useEffect(()=>{let R=!1;if(!We)return;const me=async Ce=>{const U=Ut.current,lt=qt.current;if(!U||!lt||X.current)return;const M=Gt.current;if(!M){oe("The world root needs the editor shell above it; this host has none.");return}const ut=await Ce();if(R||X.current)return;yn(()=>ut),Ps();const s=new rn("own",ut.mountWorldRootSurface(lt,U,r),kr()??void 0);X.current=s,s.cleanups.push(Cs(n,s.store.shell)),s.cleanups.push(ks(n,s.transport)),s.cleanups.push(Fi(n,{...ia(s.store,n),...Ys(n)}));const ae=ut.installWorldRootStage({store:s.store,documentId:n,container:U,canvas:s.surface.canvas,renderer:s.surface.renderer,stats:M,cameraPreview:()=>$r.current,onMountStatus:xn,onRootIds:Cn,runFrame:ke=>$s(n,ke)});s.viewport=ae.viewport,s.frame=ae.frame,s.content={scene:ae.scene,settle:()=>Promise.resolve(),dispose:async()=>ae.dispose()};const j=Us(()=>s.store.scene??ae.scene,s.transport,{rescanOnLiveMixers:()=>s.store.shell.playState==="stopped"});let se=0;s.cleanups.push(()=>j.dispose()),s.cleanups.push(s.store.shell.subscribe(()=>{if(s.store.shell.playState!=="stopped")return;const ke=performance.now();ke-se<Pa||(se=ke,j.refresh())})),s.cleanups.push(Gs({camera:ae.viewport.camera,drawCamera:()=>ae.viewport.renderCamera,orbit:ae.viewport.orbitControls,scene:ae.scene},ae.present,ae.setHelper,{documentId:n})),wt.current=s.rendererSession,s.initialized=!0,Ts(),tr("ready"),s.rendererSession.setActive(!0)},On=async()=>{for(await X.current?.content?.settle();ho();)await po();if(R)return;const Ce=Lr.current;if(Ce)return me(Ce);const U=Ut.current,lt=qt.current;if(!U||!lt)return;if(!t||e===void 0){oe("This stage shows `build` content and was given no `build()`/`sourcePath`.");return}let M;const ut=Je.generation(G);try{M=G.source??t(),G.source=null}catch(ee){oe(ee instanceof Error?ee.message:String(ee));return}try{X.current||(Ps(),X.current=new rn($,Oa(lt,$,r,{width:Math.max(1,U.clientWidth),height:Math.max(1,U.clientHeight)},()=>{Yt(!1),window.setTimeout(()=>{vt.current&&Yt(!0)},0)}),G.store),X.current.contentSeconds=G.contentSeconds,X.current.transportAdvances=G.transportAdvances)}catch(ee){throw M.dispose(),ee}const s=X.current,ae=s.borrow(),{renderer:j,canvas:se,lease:ke}=s.surface,T=s.store;P||(s.cleanups.push(Cs(n,T.shell)),s.cleanups.push(ks(n,s.transport)));const kt=Ms();kt&&T.shell.attachHistory(kt);const lr=$==="inspector-preview",Ie=J.current,Zr=_e.current,Qr=nt.current,L=new mn,Mt=M.root.parent;L.add(M.root),M.animations&&(M.root.animations=[...M.animations]);const ur={root:M.root,animations:M.root.animations};let Ne=null,$e=null,Ge=null,Me=null,he=null,Et=null,Ot=null,Rt=null,jt=null,Tt=null,hr=null,Jr=null,es=null,ts=!1,At=!1,Vt=null;const dr={scene:L,settle:()=>he?.settle()??Promise.resolve(),dispose:()=>{if(Vt)return Vt;At=!0;const ee=Zt.current;return Zt.current=!1,Et&&U.removeEventListener("pointerdown",Et,!0),Ot&&U.removeEventListener("pointermove",Ot,!0),Rt&&U.removeEventListener("pointerup",Rt,!0),jt&&U.removeEventListener("pointercancel",jt,!0),Tt&&window.removeEventListener("keydown",Tt),hr?.(),hr=null,Vt=(async()=>{await he?.settle();const ht=[];for(const Lt of[()=>Me?.dispose(),()=>$e?.dispose?.(),()=>Ne?.dispose(),()=>L.removeFromParent(),()=>{ee?Je.retain(G,M,ut):M.dispose()},ae])try{Lt()}catch(ge){ht.push(ge)}ht.length&&console.error("Object3D source cleanup failed.",...ht)})(),Vt}};try{const ee=async u=>{try{const g=ur;if(o&&!c){if(!g)throw new Error("Project history is unavailable; the edit was not saved.");const h=Ms();if(!h)throw new Error("Project history is unavailable; the edit was not saved.");const v=o.serialize(g);if(v===null)return oe(null),!1;const f=await en().replaceSource(h,{file:o.path,source:v,label:u??o.label??`Edit ${r}`});return oe(null),f}if(!c)throw new Error("This Asset Lab document has no persistence binding.");if(!Ge||!g)throw new Error("Project history is unavailable; the edit was not saved.");const{persisted:b}=await(await Ge).commit(g,u);return oe(null),b}catch(g){throw oe(g instanceof Error?g.message:JSON.stringify(g)),g}};Ne=new Vo(T,L,{documentId:n,title:r,sourcePath:e,documentKind:Qr?"asset":"source",audit:C,...M.hierarchyRoots?{hierarchyRoots:M.hierarchyRoots}:{},...at==="project-file"&&ir?{modelSource:{kind:at,path:ir}}:at==="entity"&&Pt?{modelSource:{kind:at,entityId:Pt}}:{}});const ht={documentId:n,sourcePath:e,root:M.root,animations:M.root.animations,scene:L,defaultAdapter:Ne,commit:ee};$e=l?.(ht)??null;const Lt=$e?Ne:null;!$e&&E&&($e=E({store:T,scene:L,...M.hierarchyRoots?{hierarchyRoots:M.hierarchyRoots}:{}}),Ne.dispose()),Ge=c&&kt?en().openPersistence({binding:c,document:ur,history:kt}):null,Ge&&Ge.catch(u=>{!At&&X.current?.content===dr&&oe(u instanceof Error?u.message:JSON.stringify(u))});const ge=$e?.adapter??Ne;if(!s.dressing){j.outputColorSpace=pn,j.toneMapping=ar??ao,j.shadowMap.enabled=!0,j.shadowMap.type=co,j.info.autoReset=!1,j.setPixelRatio(Math.min(window.devicePixelRatio,2)),Ie&&j.setClearColor(0,0);const u=qr===!1?null:ke&&"environment"in ke?ke.environment():Ni(j),g=Es(se);s.dressing=_i(s.scene,{environment:u,background:!Ie&&i===void 0&&Xr!==!1,keyLight:!1,grid:or===!0,content:M.root}),!Ie&&i!==void 0?s.scene.background=new be(i):!Ie&&g.background!==null&&(s.scene.background=new be(g.background)),s.defaultEnvironment=s.scene.environment,s.defaultBackground=s.scene.background;{const b=new zi(s.scene,H);s.presentationRig=b,Os(n,de);let h=s.store.shell.showHelpers;const v=()=>{const f=tt(n);if(h=s.store.shell.showHelpers,b.apply(f,j,ar),s.viewport?.setStageFunction(f.world,f.interaction),s.viewport?.setFieldOfView(f.camera.fov),s.viewport?.setSelectionMarks(f.overlays.selection),s.viewport?.setGridMajorEvery(f.overlays.grid.majorEvery),s.viewport?.setAxisLines(f.overlays.axes),s.viewport?.setNavigation(f.overlays.navigation),s.viewport?.setGridVisible(f.overlays.grid.visible&&h),s.session){const O=s.session.presentation().mode==="wireframe"&&f.xray.enabled&&f.xray.alpha<=0;s.session.selectionOutlineEnabled=!lr&&h&&Kt.current&&f.overlays.selection.outline&&!O,s.session.selectionOriginsEnabled=!lr&&h&&f.overlays.selection.origins,s.session.setXray(f.xray)}H()};s.applyPresentation=v,v(),s.cleanups.push(Cr(v)),s.cleanups.push(s.store.shell.subscribe(()=>{s.store.shell.showHelpers!==h&&v()})),s.cleanups.push(yi(()=>{b.forgetFailedImages(),v()})),s.cleanups.push(()=>{b.dispose(),s.presentationRig===b&&(s.presentationRig=null)})}s.cleanups.push(()=>{s.defaultBackground instanceof Hs&&s.defaultBackground!==s.dressing?.backgroundTexture&&s.defaultBackground.dispose()})}const rs=(u,g)=>{const b=s.adapter,h=s.viewport;if(!b||!h)return null;const v=se.getBoundingClientRect(),f=new mt((u-v.left)/Math.max(v.width,1)*2-1,-((g-v.top)/Math.max(v.height,1))*2+1),O=new _s;O.layers.enableAll(),O.params.Line2={threshold:4},O.setFromCamera(f,s.session?.camera()??h.camera);const K=s.presentationAdapter,ce=W=>{for(let I=W;I;I=I.parent){const Oe=K?.hierarchy.idForObject3D?.(I)??b.hierarchy.idForObject3D?.(I);if(Oe)return Oe}return null};let ve=null;for(const W of O.intersectObjects([...T.objectMap.values()],!0)){if(Vs(W.object))continue;const I=ce(W.object);if(I){ve={distance:W.distance,id:I};break}}const Xe=h.visibleHelpers().filter(W=>W.userData.volterPickable===!0);for(const W of O.intersectObjects(Xe,!0)){let I=null,Oe=!0;for(let Re=W.object;Re;Re=Re.parent)Re.visible||(Oe=!1),I??=Re.userData.volterPicksAs??null;if(!Oe)continue;const Fe=I?ce(I):null;if(Fe){(!ve||W.distance<ve.distance)&&(ve={distance:W.distance,id:Fe});break}}return ve?.id??null};if(!s.viewport){s.viewport=new ko(se,s.scene,T,U,{renderer:j,authoring:()=>s.adapter??ge,pick:rs,drawCamera:()=>s.session?.camera()??s.viewport.camera,publishPickContext:!1,onProjectionChange:kn,chromeInsetPx:P||Zr?0:Pr,lightRig:!1}),or===!0&&s.viewport.grid.removeFromParent();const u=g=>{const b=rs(g.clientX,g.clientY),h=b&&s.adapter?He(s.adapter.hierarchy,b):null;h&&Dr.current?.(h)};U.addEventListener("dblclick",u),s.cleanups.push(()=>U.removeEventListener("dblclick",u))}const S=s.viewport;if(ct){const u=S.camera;s.scene.add(u);const g=new Nt;g.name="volter:document-studio",g.add(ct),u.add(g),s.documentStudio=g,s.cleanups.push(()=>{ct.removeFromParent(),g.removeFromParent(),s.documentStudio===g&&(s.documentStudio=null),u.removeFromParent()})}if(d){const u=new Nt;u.name="__object3d_document_overlay",cn(u,"editorHelper",!0),L.add(u),Me=d.setup({root:M.root,scene:L,renderer:j,overlay:u,camera:()=>s.session?.camera()??S.camera,writable:c!==void 0||o!==void 0});const g=h=>{const v=se.getBoundingClientRect(),f=new mt((h.clientX-v.left)/Math.max(v.width,1)*2-1,-((h.clientY-v.top)/Math.max(v.height,1))*2+1),O=new _s;return O.layers.enableAll(),O.setFromCamera(f,s.session?.camera()??S.camera),{pointerId:h.pointerId,button:h.button,buttons:h.buttons,clientX:h.clientX,clientY:h.clientY,altKey:h.altKey,ctrlKey:h.ctrlKey,metaKey:h.metaKey,shiftKey:h.shiftKey,ray:O.ray.clone(),hits:O.intersectObjects([M.root,u],!0)}};he=new ra({begin:h=>{if(!c&&!o)throw new Error("This Asset Lab document has no persistence binding; project gestures are read-only.");return Me.begin(h)},persist:async h=>{await ee(h)},reportError:h=>oe(h instanceof Error?h.message:JSON.stringify(h))});const b=h=>{h.preventDefault(),h.stopPropagation()};Et=h=>{h.target instanceof Element&&h.target.closest('[role="alert"], [role="toolbar"]')!==null||he?.begin(g(h))&&(b(h),h.isTrusted&&se.setPointerCapture?.(h.pointerId))},Ot=h=>{he?.hasActiveGesture()&&(b(h),he.update(g(h)))},Rt=h=>{he?.hasActiveGesture()&&(b(h),se.hasPointerCapture?.(h.pointerId)&&se.releasePointerCapture?.(h.pointerId),he.commit(g(h)))},jt=h=>{he?.hasActiveGesture()&&(b(h),he.cancel(h.pointerId))},Tt=h=>{h.key!=="Escape"||!he?.hasActiveGesture()||(h.preventDefault(),he.cancel())},Jr=()=>{U.addEventListener("pointerdown",Et,!0),U.addEventListener("pointermove",Ot,!0),U.addEventListener("pointerup",Rt,!0),U.addEventListener("pointercancel",jt,!0),window.addEventListener("keydown",Tt)}}const Le=s.content,ss=[...T.shell.selectedEntityIds],dt=s.adapter,jn=s.presentationAdapter,Tn=new Map(T.objectMap),Ue=s.session?.root,An=s.frame,Vn=s.syncHostScene,Ln=yt.current,Fn=St.current,Dn=bt.current,ns=s.session?.neutralBackgroundTexture(),Bn=s.dressing.lights.map(u=>u.visible),Hn=s.cleanups.length,_n=s.initialized;if(es=()=>{L.removeFromParent(),Mt&&Mt.add(M.root),Le&&s.scene.add(Le.scene),s.adapter=dt,s.presentationAdapter=jn,s.content=Le,s.frame=An,s.syncHostScene=Vn,s.initialized=_n;for(const u of s.cleanups.splice(Hn))u();!Ue&&s.session&&(s.session.dispose(),s.session=null),T.objectMap.clear();for(const[u,g]of Tn)T.objectMap.set(u,g);Le&&T.bindScene(Le.scene,j,S.batchedRenderer,S.camera),Ue&&dt&&s.session?.replaceContent(Ue,dt),yt.current=Ln,St.current=Fn,bt.current=Dn,xt.current=dt,Ur(dt),ns!==void 0&&s.session?.setNeutralBackground(ns),s.dressing?.lights.forEach((u,g)=>{u.visible=Bn[g]??!0}),Ue&&(s.dressing?.frameContent(Ue),s.presentationRig?.placeFloor(Ue)),T.shell.selectMultiple(ss),T.notifyIngestObjectMapEdit()},Le?.scene.removeFromParent(),s.scene.add(L),s.adapter=ge,s.presentationAdapter=Lt,s.content=dr,T.bindScene(L,j,S.batchedRenderer,S.camera),T.setOrbitTarget(S.orbitControls.target),T.objectMap.clear(),L.traverse(u=>{const g=Lt?.hierarchy.idForObject3D?.(u)??ge.hierarchy.idForObject3D?.(u);g&&T.objectMap.set(g,u)}),s.session)s.session.replaceContent(M.root,ge);else{const u=tn(Br.current),g=tn(Hr.current)??u,b=tt(n).camera;S.setFieldOfView(b.fov);const h=Qt.current,v=rr!==void 0&&sr!==void 0&&nr!==void 0;if(!h&&!v){const f=S.orbitControls.target,O=S.camera.position.distanceTo(f);S.camera.position.copy(f).addScaledVector(new F(...b.opening).normalize(),O)}if(g||S.focusOn(M.root),h){const f=new F(...h.target),O=new F(...h.direction).normalize();S.camera.position.copy(f).addScaledVector(O,h.distance),S.camera.up.set(0,1,0),h.up&&S.camera.up.set(...h.up),S.orbitControls.target.copy(f)}else if(v){const f=g??Mr(M.root),O=f.getCenter(new F),K=new F(rr,sr,nr).normalize(),ce=It(f,S.camera,K)*Math.min(10,Math.max(.1,z??1));S.camera.position.copy(O).add(K.multiplyScalar(ce)),S.orbitControls.target.copy(O)}if(s.session=new Qo(n,M.root,s.scene,j,S,ge,Ie?null:i===void 0?s.dressing.backgroundTexture:new be(i),u),s.session.selectionOutlineEnabled=!lr&&Kt.current,s.session.setCameraViewSource(zr.current??null),s.applyPresentation?.(),Qt.current?.projection==="orthographic"&&s.session.setProjection("orthographic"),!Ie&&i===void 0&&s.dressing.backgroundTexture){const f=s.session;s.cleanups.push(Wi(()=>{const O=Es(se).background,K=s.defaultBackground;s.defaultBackground=O!==null?new be(O):Ii(),f.neutralBackgroundTexture()===K&&f.setNeutralBackground(s.defaultBackground),K instanceof Hs&&K!==s.dressing?.backgroundTexture&&K.dispose()}))}}const pt=G.camera;pt&&(S.setPose(pt.position,pt.target,pt.fov||void 0,pt.up),S.setProjection(Gr),G.camera=null);const A=s.session;yt.current=ur,St.current=Ge,bt.current=Me,xt.current=ge,Ur(ge);const pr=Si(de)?.all?.lighting!==void 0||xi(de)?null:ct?{all:{lighting:{source:"studio",studioPreset:Rs.id,auto:null}}}:Yr===!1?{all:{lighting:{source:"scene"}}}:null,Ft=_r.current??null;Os(n,de,pr&&Ft?Pi(pr,Ft):Ft??pr);const fr=new Set(ka);let is;const os=()=>{const u=s.session?.presentation().mode;u!==is&&(is=u,s.applyPresentation?.()),!(u===void 0||!fr.has(u))&&tt(n).drawMode!==u&&Ci(n,{drawMode:u})},mr=Ft?.drawMode??ki(n).drawMode;mr!==void 0&&fr.has(mr)&&s.session&&s.session.setMode(mr),os();const zn=s.session?.subscribe(os),Wn=Cr(()=>{const u=s.session,g=tt(n).drawMode;u&&u.presentation().mode!==g&&fr.has(u.presentation().mode)&&u.setMode(g)});s.cleanups.push(()=>{zn?.(),Wn()});const Dt=[];M.root.traverse(u=>{u.isLight&&Dt.push(u)});const In={light:Dt.length>0,"directional-light":Dt.some(u=>u.isDirectionalLight)};s.contentLights=Dt,s.contentHas=In,s.dressing.frameContent(M.root),s.presentationRig?.placeFloor(M.root),s.cleanups.push(T.shell.subscribe(()=>s.presentationRig?.placeFloor(M.root)));const as=new Set;T.shell.selectMultiple(ss.filter(u=>{const g=T.objectMap.get(u)??He(ge.hierarchy,u);if(g===null&&!T.objectMap.has(u))return!1;const b=g??u;return as.has(b)?!1:(as.add(b),!0)})),T.notifyIngestObjectMapEdit(),A.syncSelectionPresentation(),Jr?.(),oe(null),P||js(n);let Bt=L.background;A.setNeutralBackground(Bt??s.defaultBackground);const qe=G.presentation;qe&&(A.setMode(qe.mode),A.setBackground(qe.background),A.setProjection(qe.projection),A.setSkeleton(qe.skeleton),A.setBounds(qe.bounds),G.presentation=null);const Nn=()=>{s.viewport?.alignGridToView(A.camera(),j.domElement.width),s.scene.environment=L.environment??s.defaultEnvironment,s.scene.fog=L.fog,s.scene.environmentIntensity=L.environmentIntensity,s.scene.environmentRotation.copy(L.environmentRotation),s.scene.backgroundIntensity=L.backgroundIntensity,s.scene.backgroundBlurriness=L.backgroundBlurriness,s.scene.backgroundRotation.copy(L.backgroundRotation);const u=s.presentationRig;if(u){const g=u.resolveSource({...s.contentHas,environment:L.environment!==null}),b=u.environment();b&&(s.scene.environment=b.texture??s.defaultEnvironment,s.scene.environmentIntensity=b.intensity,s.scene.environmentRotation.set(0,b.rotation,0));const h=u.backdrop();h!=="keep"?(s.scene.background=h.value,s.scene.backgroundBlurriness=h.blur,s.scene.backgroundIntensity=h.intensity,s.scene.backgroundRotation.set(0,h.rotation,0),s.backdropOverridden=!0):s.backdropOverridden&&(s.scene.background=A.neutralBackgroundTexture(),s.scene.backgroundBlurriness=L.backgroundBlurriness,s.scene.backgroundIntensity=L.backgroundIntensity,s.backdropOverridden=!1);const v=g==="studio"&&u.presetId()===Rs.id;s.documentStudio&&(s.documentStudio.visible=v);const f=g==="studio"&&!v||g==="preview"&&!u.sceneLightsShown()?s.darkenContentLights():0;u.update(A.camera()),Mi(n,{source:g,presetId:u.presetId(),presetLights:u.lightsVisible(),documentStudio:s.documentStudio?s.documentStudio.visible:null,contentLights:s.contentLights.length,contentLightsDarkened:f,environmentIntensity:s.scene.environmentIntensity,environmentImage:u.imageReport().shown,environmentImagePending:u.imageReport().pending,toneMapping:String(j.toneMapping)})}Bt!==L.background&&(Bt=L.background,A.setNeutralBackground(Bt??s.defaultBackground))};s.syncHostScene=Nn,A.setBeforeRender(u=>{s.syncHostScene?.();const g=A.presentation().mode,b=u&&["solid","preview","clay","unlit","matcap"].includes(g);return M.prepareDraw?.(A.camera(),{interactive:b,height:j.domElement.height,multiDraw:j.extensions.has("WEBGL_multi_draw")})}),A.setPresentsFrames(!0);const $n=u=>{At||!(u>0)||!Number.isFinite(u)||(s.contentSeconds+=u,s.transportAdvances++,M.update?.(u))},Gn=Us(M.root,s.transport);s.cleanups.push(()=>Gn.dispose());const Ee=G.transport;Ee&&(Ee.activeSubject&&s.transport.setActiveSubject(Ee.activeSubject),s.transport.setLoop(Ee.range.loop),s.transport.setTimeScale(Ee.timeScale),s.transport.seek(Ee.time),Ee.playbackState==="playing"?s.transport.play():Ee.playbackState==="paused"&&s.transport.pause(),G.transport=null);let gr=performance.now();const cs=typeof M.onChange=="function";let Ht=!0;const _t=()=>{Ht=!0};if(cs){const u=M.onChange(_t),g=T.shell.subscribe(_t),b=["pointerdown","pointermove","pointerup","pointerleave","wheel","keydown","keyup"];for(const h of b)U.addEventListener(h,_t,{capture:!0,passive:!0});hr=()=>{u(),g();for(const h of b)U.removeEventListener(h,_t,{capture:!0})}}let ls=-1;const us=new Er,hs=new Er,ds=new mt,ps=new mt;let fs,ms=null,gs=Number.NaN;const Un=u=>{if(!cs||Ht||u>0||As()!==ls||A.needsFrame()||s.presence?.live()||Me?.prepareFrame||Me?.update||(S.batchedRenderer.batches?.length??0)>0)return!0;const g=A.camera();return g.updateMatrixWorld(),j.getDrawingBufferSize(ps),!g.matrixWorld.equals(us)||!g.projectionMatrix.equals(hs)||!ps.equals(ds)||s.scene.background!==fs||j.toneMapping!==ms||j.toneMappingExposure!==gs},qn=()=>{Ht=!1,ls=As();const u=A.camera();us.copy(u.matrixWorld),hs.copy(u.projectionMatrix),j.getDrawingBufferSize(ds),fs=s.scene.background,ms=j.toneMapping,gs=j.toneMappingExposure};let ft=null;const vs=(u,g)=>{if(At||!j||!S)return;const b=j,h=S,v=A?.profiler;v?.beginFrame(),g&&(gr=u);const f=Math.min((u-gr)/1e3,.1);gr=u,v?.beginPhase();const O=s.transport.tick(f);if(O>0&&$n(O),Me?.prepareFrame?.(f),Me?.update?.(f),v?.endPhase("animation"),v?.beginPhase(),s.presence?.syncMarkers(f),S.update(f),P||$s(n,f),ft){const I=A.camera();I.quaternion.copy(ft),I.updateMatrixWorld(!0)}if(S.batchedRenderer.update(f),v?.endPhase("editor"),!g&&!Un(O)){v?.endFrame();return}v?.beginPhase(),b.info.reset();const K=!ot.current&&Ei()===n;K&&Oi(n);const ce=K?Date.now():0,ve=s.scene.overrideMaterial,Xe=A.presentation().mode;Xe!=="uv"&&Xe!=="vertex-colors"&&(s.scene.overrideMaterial=L.overrideMaterial);try{h.renderWithInfrastructure(()=>{A.renderViewport(f,ft!==null||!g&&!A.needsFrame()),h.renderViewCube(b)})}finally{s.scene.overrideMaterial=ve}A.servePresentedFrame(),qn(),ot.current||(ot.current=!0,K&&Ri("first-render",Date.now()-ce),ji(n),tr("ready")),v?.reportRender({gpuMs:null,drawCalls:b.info.render.calls,triangles:b.info.render.triangles,geometries:b.info.memory.geometries,textures:b.info.memory.textures}),v?.endPhase("render"),v?.endFrame();const W=Gt.current;if(W&&ue&&Ti(ue.shell)===T.shell){const I=A.cameraPose();W.frameTime=f*1e3,W.fps=f>0?1/f:0,W.drawCalls=b.info.render.calls,W.triangles=b.info.render.triangles,W.cameraPosition.x=I.position[0],W.cameraPosition.y=I.position[1],W.cameraPosition.z=I.position[2],W.cameraTarget.x=I.target[0],W.cameraTarget.y=I.target[1],W.cameraTarget.z=I.target[2]}};s.frame=vs;const Xn=(u,g="full")=>{if(!j)throw new Error("This stage has no renderer yet.");const b=j,h=b.getContext(),v=new Uint8Array(4),f=[],O=[],K=[],ce=A.camera(),ve=ce.quaternion.clone(),Xe=new F(0,1,0);try{for(let te=0;te<=u;te++){g==="navigation"&&(ft=ve.clone().multiply(new jr().setFromAxisAngle(Xe,(te+1)*5e-4)));const ne=performance.now();vs(ne,!0);const De=performance.now();h.readPixels(0,0,1,1,h.RGBA,h.UNSIGNED_BYTE,v);const Wt=performance.now();te>0&&(f.push(Wt-ne),O.push(De-ne),K.push(Wt-De))}}finally{ft=null,ce.quaternion.copy(ve),ce.updateMatrixWorld(!0),Ht=!0}const W={calls:b.info.render.calls,triangles:b.info.render.triangles};let I=0,Oe=0;s.scene.traverseVisible(te=>{const ne=te;if(!ne.isMesh||!ne.geometry||Vs(ne))return;I++;const De=ne.geometry.getIndex(),Wt=De?De.count:ne.geometry.getAttribute("position")?.count??0;Oe+=Math.floor(Wt/3)*(ne.count??1)});const Fe=[...f].sort((te,ne)=>te-ne),Re=te=>Fe[Math.min(Fe.length-1,Math.floor(te*Fe.length))]??0,zt=b.getDrawingBufferSize(new mt),vr=b.getPixelRatio(),Ye=te=>Math.round(te*100)/100,ws=te=>Ye(te.sort((ne,De)=>ne-De)[Math.floor(te.length/2)]??0);return{frames:u,quality:g,medianMs:Ye(Re(.5)),p95Ms:Ye(Re(.95)),minMs:Ye(Fe[0]??0),submitMedianMs:ws(O),completionWaitMedianMs:ws(K),width:zt.x,height:zt.y,cssWidth:Ye(zt.x/vr),cssHeight:Ye(zt.y/vr),devicePixelRatio:vr,drawn:W,scene:{meshes:I,triangles:Oe},drawMode:tt(n).drawMode}};if(wt.current=s.rendererSession,!s.initialized){P||(s.cleanups.push(Gs({camera:S.camera,drawCamera:()=>s.session?.camera()??S.camera,orbit:S.orbitControls,scene:s.scene,frameCost:(v,f)=>Xn(v,f)},()=>null,(v,f)=>S.setHelper(v,f),{documentId:n})),st(()=>import("./stage-presence-markers-BD5JPVX6.js"),__vite__mapDeps([69,4,5,7,8,9,10,6,11,12,13,26,27,18,2,70])).then(v=>{if(s.isClosed||X.current!==s||s.presence)return;const f=v.bindStagePresenceMarkers({scene:s.scene,store:T,documentId:n,container:U,canvas:se,viewport:S,readVisibleCameraPose:()=>{const O=s.session?.camera()??S.renderCamera,K=O.getWorldPosition(new F),ce=O.fov;return{position:K,target:S.orbitControls.target,fov:typeof ce=="number"?ce:0}}});s.presence=f,s.cleanups.push(()=>f.dispose())}),s.cleanups.push(Ao(A,Ys(n))),s.cleanups.push(Ai({id:n,label:r,kind:Qr?"asset":"source",profiler:A.profiler}))),!P&&!Zr&&s.cleanups.push(Vi(n,()=>({adapter:s.adapter,nodeId:s.adapter?.selection?.get()[0]??null})));const u=P?`${n}#chromeless-${++Ma}`:n;s.cleanups.push(Li({id:u,label:r,contentClock:()=>s.contentSeconds,transportAdvances:()=>s.transportAdvances})),s.cleanups.push(T.shell.onViewportAction(v=>{switch(v.type){case"focus-selection":case"focus-scene":!s.session?.frame()&&s.session?.root&&S.focusOn(s.session.root);break;case"focus-entity":{const f=s.adapter?He(s.adapter.hierarchy,v.id):null;f&&S.focusOn(f);break}case"snap-selection-to-floor":S.snapSelectionToFloor();break;case"set-view-preset":s.session?s.session.setViewPreset(v.preset==="perspective"?"isometric":v.preset,"view"):S.setViewPreset(v.preset);break;case"toggle-camera-view":s.session?.toggleCameraView();break;case"frame-all":!s.session?.frame(1,"all")&&s.session?.root?S.focusOn(s.session.root):s.session||S.focusOnScene();break;case"zoom-view":s.session?.cameraView()&&!s.session.cameraViewLocked()?s.session.zoomCameraView(v.direction>0?1.2:1/1.2):S.zoomStep(v.direction);break;case"step-view":if(s.session?.cameraView()&&!s.session.cameraViewLocked())break;S.stepView(v.step);break;case"toggle-projection":{const f=s.session;if(f?.cameraView())break;const K=(f?f.projection():S.projection)==="perspective"?"orthographic":"perspective";f?f.setProjection(K):S.setProjection(K);break}case"set-camera-pose":S.setPose(v.position,v.target,v.fov);break}}));let g="";s.cleanups.push(T.shell.subscribe(()=>{S.objectMap=T.objectMap,S.syncFromStore(),s.session?.syncSelectionPresentation();const v=(s.adapter?.selection?.get()??[]).join("\0");v!==g&&(g=v,P||js(n))}));const b=()=>{const v=Math.max(1,U.clientWidth),f=Math.max(1,U.clientHeight),O=j.getPixelRatio();(se.width!==Math.floor(v*O)||se.height!==Math.floor(f*O))&&j.setSize(v,f,!1),S.resize(v,f),s.session?.resize(v,f),s.rendererSession.redraw()},h=new ResizeObserver(b);h.observe(U),s.cleanups.push(()=>h.disconnect()),b(),s.initialized=!0,Ts()}S.objectMap=T.objectMap,S.syncFromStore(),s.rendererSession.setActive(vt.current),s.rendererSession.redraw(),ts=!0,Le?.dispose()}catch(ee){if(!ts)try{es?.()}finally{Mt&&M.root.parent===L&&Mt.add(M.root),dr.dispose()}console.error(`[object3d document] ${r}: source update failed`,ee),oe(ee instanceof Error?ee.message:String(ee))}},Rn=Fr.current.then(On);return Fr.current=Rn.catch(Ce=>{R||oe(Ce instanceof Error?Ce.message:String(Ce))}),()=>{R=!0}},[l,i,t,rr,sr,nr,r,n,pe,Xr,qr,or,Yr,ct,ar,P,Pt,at,ir,d,c,o,$,G,We,E,e,ze]),m.useEffect(()=>{const R=wt.current,me=w&&!Wr.current;Wr.current=w,R&&(me&&(ot.current=!1,gi(n)),R.setActive(w||ze))},[w,n,ze]);const Ct=X.current,cr=er==="ready"&&Ct?.viewport?{store:Ct.store,viewport:Ct.viewport,canvas:Ct.surface.canvas}:null,En=m.useCallback(()=>{const R=xt.current;return R?{adapter:R,nodeId:R.selection?.get()[0]??R.hierarchy.roots()[0]?.id??null}:null},[]),Kr=p.jsx("div",{"data-testid":"tool-object3d-authoring","data-volter-chromeless":P||void 0,className:pe?"volter-object3d-studio-stage":void 0,style:{position:P||fe?"relative":"absolute",...P?{width:"100%",height:"100%"}:fe?{flex:1,minHeight:0}:{inset:-Pr},overflow:"hidden",background:pe?void 0:rt.surface.raised,pointerEvents:"auto"},children:p.jsxs("div",{ref:Ut,style:{position:"absolute",inset:0,minHeight:0,overflow:"hidden"},children:[p.jsx(Ea,{canvasHostRef:qt}),w&&cr&&!P?p.jsx(m.Suspense,{fallback:null,children:p.jsx(Sa,{stage:cr})}):null,ue&&!P?p.jsx(ha,{store:ue,documentId:n,stage:cr,active:w,chrome:"document"}):null,ue&&Nr?p.jsx(Nr.Overlays,{store:ue,documentId:n,cameraPreviewRef:$r,mountStatus:Sn,rootIds:Pn}):null,Jt&&p.jsx("div",{role:"alert",style:{position:"absolute",insetInline:0,top:0,display:"flex",justifyContent:"center",padding:"var(--volter-space-3)",pointerEvents:"none"},children:p.jsxs("div",{className:"volter-chrome-island",style:{display:"flex",alignItems:"center",gap:"var(--volter-space-3)",maxWidth:"80%",padding:"var(--volter-space-2) var(--volter-space-3)",borderRadius:"var(--volter-radius-md)",border:`var(--volter-stroke-resting) solid ${rt.semantic.danger}`,background:rt.surface.raised,color:rt.semantic.danger,pointerEvents:"auto"},children:[p.jsx("span",{children:Jt}),p.jsx(Be,{size:"compact","aria-label":"Dismiss",onClick:()=>oe(null),"data-testid":"object3d-document-error-dismiss",children:p.jsx(Se,{icon:ye.action.close})})]})}),!Jt&&er==="building"&&p.jsx(Do,{testId:"object3d-document-status",children:Bo}),p.jsx("div",{style:{position:"absolute",inset:P||fe?0:Pr,pointerEvents:"none"},children:!P&&er==="ready"&&X.current&&p.jsx(ba,{viewport:X.current.viewport,documentId:n,session:X.current.session,store:X.current.store.shell,projection:Gr,displayName:r,...B?{statistics:B}:{},...xe!==void 0?{subject:xe}:{},...Te?{gridScale:Te}:{},objectName:R=>(me=>me?He(me.hierarchy,R)?.name:void 0)(X.current?.adapter)??X.current?.store.objectMap.get(R)?.name??null})})]})});return fe?p.jsx(vi,{documentId:n,active:w,type:_??(Pt?"entity":"model"),title:r,status:e,selection:En,fill:!0,children:p.jsxs("div",{className:"volter-object3d-asset-workspace",children:[Kr,p.jsx(Fo,{transport:X.current?.transport??null})]})}):Kr}function Ra(n){return p.jsx(bn,{...n})}const ic=Object.freeze(Object.defineProperty({__proto__:null,Object3DDocumentViewport:bn,ToolObject3DAuthoring:Ra},Symbol.toStringTag,{value:"Module"}));export{bn as O,ic as S,pa as V,Ks as s,oa as t};
@@ -1 +1 @@
1
- import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{az as y,aA as f,al as g,aB as x,aC as S}from"./index-ClgrFOcX.js";import{r as j}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";class w extends j.Component{state={error:null};static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,o){console.error(`[stories] ${this.props.modulePath} — story "${this.props.storyName}" crashed while rendering:`,t,o.componentStack)}render(){return this.state.error?e.jsxs("div",{style:{padding:12,fontSize:12,color:g.semantic.danger,maxWidth:640},children:[e.jsxs("div",{style:{fontWeight:600,marginBottom:4},children:["Story crashed: ",e.jsx("code",{children:this.props.modulePath})," — export"," ",e.jsx("code",{children:this.props.storyName})]}),e.jsx("div",{style:{whiteSpace:"pre-wrap"},children:String(this.state.error)})]}):this.props.children}}const a=new WeakMap;async function k(r,t,o,i,s){const n=a.get(r),c=(n?.generation??0)+1;a.set(r,{root:n?.root,generation:c}),y(r);const d=S();d&&await x(d.rootPath),await i.load();const{createRoot:m,flushSync:h}=await f(),p=a.get(r);if(!p||p.generation!==c)return null;const u=n?.root??m(r);return a.set(r,{root:u,generation:c}),h(()=>{u.render(e.jsx(w,{modulePath:t,storyName:o,children:e.jsx(i,{...s??{}})}))}),{root:u,unmount:()=>{queueMicrotask(()=>{const l=a.get(r);!l||l.generation!==c||!l.root||(a.delete(r),l.root.unmount())})}}}async function B(r,t,o,i){if(typeof o.play!="function")return{ran:!1};try{return await o.play({canvasElement:i}),{ran:!0}}catch(s){const n=String(s instanceof Error?s.message:s);return console.error(`[stories] ${r} — story "${t}"'s play() threw:`,s),{ran:!0,error:`[stories] ${r} — story "${t}"'s play() failed: ${n}`}}}export{k as m,B as r};
1
+ import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{az as y,aA as f,al as g,aB as x,aC as S}from"./index-D9shXtZ9.js";import{r as j}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";class w extends j.Component{state={error:null};static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,o){console.error(`[stories] ${this.props.modulePath} — story "${this.props.storyName}" crashed while rendering:`,t,o.componentStack)}render(){return this.state.error?e.jsxs("div",{style:{padding:12,fontSize:12,color:g.semantic.danger,maxWidth:640},children:[e.jsxs("div",{style:{fontWeight:600,marginBottom:4},children:["Story crashed: ",e.jsx("code",{children:this.props.modulePath})," — export"," ",e.jsx("code",{children:this.props.storyName})]}),e.jsx("div",{style:{whiteSpace:"pre-wrap"},children:String(this.state.error)})]}):this.props.children}}const a=new WeakMap;async function k(r,t,o,i,s){const n=a.get(r),c=(n?.generation??0)+1;a.set(r,{root:n?.root,generation:c}),y(r);const d=S();d&&await x(d.rootPath),await i.load();const{createRoot:m,flushSync:h}=await f(),p=a.get(r);if(!p||p.generation!==c)return null;const u=n?.root??m(r);return a.set(r,{root:u,generation:c}),h(()=>{u.render(e.jsx(w,{modulePath:t,storyName:o,children:e.jsx(i,{...s??{}})}))}),{root:u,unmount:()=>{queueMicrotask(()=>{const l=a.get(r);!l||l.generation!==c||!l.root||(a.delete(r),l.root.unmount())})}}}async function B(r,t,o,i){if(typeof o.play!="function")return{ran:!1};try{return await o.play({canvasElement:i}),{ran:!0}}catch(s){const n=String(s instanceof Error?s.message:s);return console.error(`[stories] ${r} — story "${t}"'s play() threw:`,s),{ran:!0,error:`[stories] ${r} — story "${t}"'s play() failed: ${n}`}}}export{k as m,B as r};