@volter/game-editor 0.5.133 → 0.5.135

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 (296) 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 +2204 -2204
  5. package/dist/assets/{AssetBudgetPanel-BnRU2kQB.js → AssetBudgetPanel-DHDxdcjI.js} +3 -3
  6. package/dist/assets/{AudioViewer-APY_kwxf.js → AudioViewer-BNZQHDg4.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-C_UNDzXm.js → CanvasBoardDocument-hKTAuRey.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-n-h94wHo.js → CanvasSceneViewport-C2K4aFsE.js} +1 -1
  9. package/dist/assets/{ColorInput-wbKatDDA.js → ColorInput-BiEIV7ay.js} +1 -1
  10. package/dist/assets/{ColorPicker-CJ09zfEX.js → ColorPicker-tL7QuZuq.js} +1 -1
  11. package/dist/assets/{EntityModelDocument-1iHP5Yws.js → EntityModelDocument-5D4_EJ1V.js} +1 -1
  12. package/dist/assets/{EnvironmentAssetDocument-Cqj5d6_6.js → EnvironmentAssetDocument-DGwonjpr.js} +1 -1
  13. package/dist/assets/{GameplaySessionTimeline-DykRF4LC.js → GameplaySessionTimeline-aU04h32D.js} +1 -1
  14. package/dist/assets/{ImageViewer-DwbhIBCP.js → ImageViewer-B_EV4B-Y.js} +1 -1
  15. package/dist/assets/InspectorObjectPreview-BWtsOURe.js +1 -0
  16. package/dist/assets/{JsonAssetDocument-B6gQHP_k.js → JsonAssetDocument-CI-VEvHK.js} +1 -1
  17. package/dist/assets/{LiveModuleDocument-SBoCwIoE.js → LiveModuleDocument-A55_Ap0w.js} +1 -1
  18. package/dist/assets/{LutAssetDocument-BuWiW1Aw.js → LutAssetDocument-C0D23zLT.js} +1 -1
  19. package/dist/assets/{ModelAssetDocument-BXkgYOqI.js → ModelAssetDocument-C2Iwdl51.js} +1 -1
  20. package/dist/assets/{NonThreeAuthoringBootstrap-6pJucZf5.js → NonThreeAuthoringBootstrap-CcN-v_vU.js} +1 -1
  21. package/dist/assets/{Object3DDocumentToolbar-ALMB9mRe.js → Object3DDocumentToolbar-CmQ2FwOD.js} +1 -1
  22. package/dist/assets/Object3DDocumentViewport-nrhxhWxf.js +2 -0
  23. package/dist/assets/{Object3DPreview-CJApeNHw.js → Object3DPreview-BdNrtrgI.js} +1 -1
  24. package/dist/assets/{OnlineAssetDetail-Cd8JLsmA.js → OnlineAssetDetail-Bt3SSxk5.js} +1 -1
  25. package/dist/assets/{PlayBar-DGrUfgBZ.js → PlayBar-IaADBOOU.js} +1 -1
  26. package/dist/assets/{QuarksAssetDocument-C5v0bZtn.js → QuarksAssetDocument-DIruslou.js} +1 -1
  27. package/dist/assets/{ReactCanvasControls-M_9_8r5E.js → ReactCanvasControls-BpPOAB1i.js} +1 -1
  28. package/dist/assets/{RootSelectionOverlay-D2hkUn8m.js → RootSelectionOverlay-Bha7b7g8.js} +1 -1
  29. package/dist/assets/{ShaderAssetDocument-BmUKEHj6.js → ShaderAssetDocument-DvHNu5O2.js} +1 -1
  30. package/dist/assets/{ShadowEditor-DS5CSZPa.js → ShadowEditor-LF5W34RB.js} +1 -1
  31. package/dist/assets/{SourceAssetViewer-B2ZVLQeS.js → SourceAssetViewer-CuinHm6v.js} +1 -1
  32. package/dist/assets/StageHost-C8sptoIR.js +2 -0
  33. package/dist/assets/{StoryPreviewMount-BKzvcFEZ.js → StoryPreviewMount-BMTtfMsu.js} +1 -1
  34. package/dist/assets/{ThreeBoardDocument-Cmnf4bFN.js → ThreeBoardDocument-1LIOqdcA.js} +2 -2
  35. package/dist/assets/{ThreeIsolationSceneContent-Bvf6_SKQ.js → ThreeIsolationSceneContent-D-viEHX8.js} +1 -1
  36. package/dist/assets/{ToolObject3DPreview-ODzhSGUY.js → ToolObject3DPreview-CoSjBUeM.js} +1 -1
  37. package/dist/assets/{Toolbar-Q6UFDDfz.js → Toolbar-BCviZ4hw.js} +1 -1
  38. package/dist/assets/{TransientHint-nzWtXMB3.js → TransientHint-xKLY44J3.js} +1 -1
  39. package/dist/assets/{VideoViewer-Yew5uBNv.js → VideoViewer-Ccuo8SbQ.js} +1 -1
  40. package/dist/assets/{ViewportShadingMenu-DzKK2NTI.js → ViewportShadingMenu-2cP_H7Ma.js} +1 -1
  41. package/dist/assets/{active-ingest-B7Bx6Kjy.js → active-ingest-5EEDH3if.js} +2 -2
  42. package/dist/assets/{animation-clock-ua6aqPSU.js → animation-clock-D9LB5smr.js} +1 -1
  43. package/dist/assets/{animation-mixers.service-CzIth3sy.js → animation-mixers.service-CpAQO3GY.js} +1 -1
  44. package/dist/assets/{animation-timeline.utility-DX06Ydcc.js → animation-timeline.utility-BI25zuOA.js} +1 -1
  45. package/dist/assets/{asset-budget-asset.menu-Dz9btntn.js → asset-budget-asset.menu-cpAHllXs.js} +1 -1
  46. package/dist/assets/{asset-budget.action-BaYK7AMY.js → asset-budget.action-D91HsFo6.js} +1 -1
  47. package/dist/assets/{asset-budget.document-nfLfGypF.js → asset-budget.document-DKhAbxa-.js} +1 -1
  48. package/dist/assets/{asset-budget.menu-ButY7KmH.js → asset-budget.menu-Dv_hRhqg.js} +1 -1
  49. package/dist/assets/{asset-editor-persistence-C02issMD.js → asset-editor-persistence-DvrmJ4jX.js} +1 -1
  50. package/dist/assets/{asset-loaders-DH3zQQyY.js → asset-loaders-DmsTVRFA.js} +1 -1
  51. package/dist/assets/{asset-preview-CUSDAKVD.js → asset-preview-DVSFT7SS.js} +1 -1
  52. package/dist/assets/{audio-unlock.service-BfHkRn4Q.js → audio-unlock.service-D_hgqktK.js} +1 -1
  53. package/dist/assets/{audio.utility-DnYmvJaJ.js → audio.utility-BZi7S3On.js} +1 -1
  54. package/dist/assets/autoplay.service-t1c91HxR.js +1 -0
  55. package/dist/assets/{babylon-authoring-adapter-CMds1oHl.js → babylon-authoring-adapter-BJIGsMEZ.js} +1 -1
  56. package/dist/assets/{binding-resolver-DAZbNLvl.js → binding-resolver-yBwth89-.js} +2 -2
  57. package/dist/assets/blender-motion-worker-ECrqnoHW.js +1 -0
  58. package/dist/assets/{blender-node-editor.document-Cn_RaJd_.js → blender-node-editor.document-DolFex2j.js} +1 -1
  59. package/dist/assets/{blender-properties-tab-DRdodc8X.js → blender-properties-tab-Be5MXZig.js} +1 -1
  60. package/dist/assets/{blender-runtime-host-BLx1pw_g.js → blender-runtime-host-BQ22-Fpm.js} +1 -1
  61. package/dist/assets/{blender-runtime-skin-cc-flxJ4.js → blender-runtime-skin-DKHV6b2q.js} +43 -43
  62. package/dist/assets/{blender-runtime.document-D4Ay0UIU.js → blender-runtime.document-L66K1h2q.js} +2 -2
  63. package/dist/assets/{blender-screenshot.menu-BKeeQIpY.js → blender-screenshot.menu-B_olV65B.js} +1 -1
  64. package/dist/assets/{blender-timeline.document-VBQuZfml.js → blender-timeline.document-OeW12fJm.js} +1 -1
  65. package/dist/assets/{blender-uv-editor.document-3P89aBqA.js → blender-uv-editor.document-CCE1_Fjr.js} +1 -1
  66. package/dist/assets/{blender-version.status-DhwfFeCK.js → blender-version.status-CcNWuPxA.js} +1 -1
  67. package/dist/assets/{blender.command-wYCfmF07.js → blender.command-gGyT3A0Q.js} +1 -1
  68. package/dist/assets/{board-guides-DhqfTj5n.js → board-guides-CIhq0Sbd.js} +1 -1
  69. package/dist/assets/{bridge.command-DsDiqGCg.js → bridge.command-Du9l4KRx.js} +3 -3
  70. package/dist/assets/{browserAll-DOR1aAYd.js → browserAll-DEgvPd5A.js} +1 -1
  71. package/dist/assets/{build-player.document-CjucTAel.js → build-player.document-yRmbh7W2.js} +1 -1
  72. package/dist/assets/{build-profiles.document-OSj4WtI6.js → build-profiles.document-D2MP3imJ.js} +1 -1
  73. package/dist/assets/{build-progress.status-DpFB4xx7.js → build-progress.status-QY6WMyc4.js} +1 -1
  74. package/dist/assets/{build-session-5PJwpLFV.js → build-session-DC5GZ3DQ.js} +1 -1
  75. package/dist/assets/{build.action-KWfvGCPe.js → build.action-B7wUwNnJ.js} +1 -1
  76. package/dist/assets/{build.command-BDvxmPia.js → build.command-BWsI5Ueg.js} +1 -1
  77. package/dist/assets/{build.header-DZdsvA42.js → build.header-tZ0wvQLR.js} +1 -1
  78. package/dist/assets/{build.menu-DnRnkEAP.js → build.menu-B5JhkoT1.js} +1 -1
  79. package/dist/assets/{build.service-D4LFhhty.js → build.service-DU0G9SvZ.js} +1 -1
  80. package/dist/assets/{camera-C6YJy8Z5.js → camera-B16bx30W.js} +1 -1
  81. package/dist/assets/{camera-runtime.inspector-CzHA8sdx.js → camera-runtime.inspector--8LumKgx.js} +1 -1
  82. package/dist/assets/{canvas-design-mount-Csy3XYVZ.js → canvas-design-mount-DLpUud4y.js} +3 -3
  83. package/dist/assets/{canvas-entry-runtime-BO4oWzG7.js → canvas-entry-runtime-Btln7THA.js} +2 -2
  84. package/dist/assets/{canvas-preview-frames-D4WhZx86.js → canvas-preview-frames-hUiRfTNo.js} +1 -1
  85. package/dist/assets/{canvas-story-capture.service-VWrbKO8n.js → canvas-story-capture.service-D4Uk1AxK.js} +2 -2
  86. package/dist/assets/{capability-coverage-BVGLH6f3.js → capability-coverage-3wZkRo7W.js} +1 -1
  87. package/dist/assets/{collaboration-presence-BxAjjabG.js → collaboration-presence-CCL71T0o.js} +1 -1
  88. package/dist/assets/{collider-D6Z5sU1J.js → collider-CbxsgmWL.js} +1 -1
  89. package/dist/assets/{component-board.service-FV3r_rY1.js → component-board.service-CXwworM0.js} +2 -2
  90. package/dist/assets/{component-board.service-BPJ1jCbB.js → component-board.service-ChMB-pU1.js} +2 -2
  91. package/dist/assets/{component-board.service-BN9KXIEI.js → component-board.service-CwevhTxY.js} +2 -2
  92. package/dist/assets/{component-contracts.service-6QSOPpXN.js → component-contracts.service-B3Yrn-qm.js} +1 -1
  93. package/dist/assets/{component-instance-root-BoFJeP3p.js → component-instance-root-DsmCGX40.js} +1 -1
  94. package/dist/assets/{component-verbs.command-2-turNau.js → component-verbs.command-BXQ96Jx4.js} +1 -1
  95. package/dist/assets/{component-verbs.service-DfUDkdGk.js → component-verbs.service-ByTx_24k.js} +1 -1
  96. package/dist/assets/{config-Bztkil1G.js → config-CmlogGx1.js} +2 -2
  97. package/dist/assets/{configurations-DuojTa-o.js → configurations-Dm-0m9Xo.js} +1 -1
  98. package/dist/assets/{connection.status-CGSGpay5.js → connection.status-BXgUyNWa.js} +1 -1
  99. package/dist/assets/{constraints.inspector-CCdKAdlH.js → constraints.inspector-29yLh17h.js} +1 -1
  100. package/dist/assets/{content-bounds-Co-PYlfQ.js → content-bounds-CKyqwWXn.js} +1 -1
  101. package/dist/assets/{contract-system-adapters-Dyt4JsZ2.js → contract-system-adapters-kobU6S3P.js} +1 -1
  102. package/dist/assets/{coverage.service-DkqUci3V.js → coverage.service-BxQTn5sd.js} +1 -1
  103. package/dist/assets/{create-runtime-DNZHaW7E.js → create-runtime-BGWCDacY.js} +1 -1
  104. package/dist/assets/{curve-Q4ixuhFA.js → curve-BiV0q4A3.js} +1 -1
  105. package/dist/assets/{data-asset-PPdHjKmp.js → data-asset-DdXXV51u.js} +1 -1
  106. package/dist/assets/{data-ref-C6iWA_I5.js → data-ref-DtKM0ekt.js} +1 -1
  107. package/dist/assets/{debug-bridge-pOOsQYPl.js → debug-bridge-jmCDlPiX.js} +1 -1
  108. package/dist/assets/{debug-registry-BMJTM1HD.js → debug-registry-Be63j2Mr.js} +1 -1
  109. package/dist/assets/{deferred-ingest-play-nOdDr56P.js → deferred-ingest-play-D1FWeSDi.js} +2 -2
  110. package/dist/assets/{design-time-canvas-mount-69gW0Lse.js → design-time-canvas-mount-C2ZWDlkZ.js} +2 -2
  111. package/dist/assets/{design-time-layers-e7s2mfFg.js → design-time-layers-BQa8hlgL.js} +1 -1
  112. package/dist/assets/{design-time-mount.service-XiqsUVLQ.js → design-time-mount.service-CVJWtupB.js} +2 -2
  113. package/dist/assets/{design-time-mount.service-BlVPZvQM.js → design-time-mount.service-CvGlSAKG.js} +2 -2
  114. package/dist/assets/{design-time-react-mount-DEUIOsob.js → design-time-react-mount-COx2oYkW.js} +1 -1
  115. package/dist/assets/{document-preview-three-CJkokdk6.js → document-preview-three-CbIS_Aca.js} +1 -1
  116. package/dist/assets/{dom-authoring-adapter-DcCpYSGq.js → dom-authoring-adapter-tQBQ_1xs.js} +1 -1
  117. package/dist/assets/{draco3d-DZIK4PnL.js → draco3d-C_nv0vSu.js} +1 -1
  118. package/dist/assets/{edit-mode-audio.service-D--lxJv-.js → edit-mode-audio.service-NlZIq_ZD.js} +1 -1
  119. package/dist/assets/{edit-mode-authoring-DvttMmGa.js → edit-mode-authoring-DbcZXYOM.js} +1 -1
  120. package/dist/assets/{edit-mode-networking.service-C2I6_G9e.js → edit-mode-networking.service-BYO3SvM8.js} +1 -1
  121. package/dist/assets/{editor-api-C8B9DKXH.js → editor-api-DU9Nbpm5.js} +1 -1
  122. package/dist/assets/{editor-layers-QQ71XEXw.js → editor-layers-_Gcy52mS.js} +1 -1
  123. package/dist/assets/{editor-shell-store-CaTC9o0j.js → editor-shell-store-DcbczB-I.js} +1 -1
  124. package/dist/assets/{entity-object-gLXLhu07.js → entity-object-hOX0jkMo.js} +1 -1
  125. package/dist/assets/{extend-BAs8mBac.js → extend-BFa8yX2b.js} +1 -1
  126. package/dist/assets/{fork-menu-YtIgQlm6.js → fork-menu-DnlFd3lk.js} +1 -1
  127. package/dist/assets/{frame-debugger-store-BCva72ZS.js → frame-debugger-store-DvIUfGjd.js} +1 -1
  128. package/dist/assets/{game-contract-seams-BpZs1yjv.js → game-contract-seams-CB0AOLdl.js} +1 -1
  129. package/dist/assets/{game-css-scope-transform-rixXd3RE.js → game-css-scope-transform-BePfCj3N.js} +1 -1
  130. package/dist/assets/{game-document.service-BI067uXs.js → game-document.service-Y4MCpEG2.js} +1 -1
  131. package/dist/assets/{game-eval.command-BWsYFDdH.js → game-eval.command-DLlHsT-7.js} +1 -1
  132. package/dist/assets/{game-module-access-BVnu_YF6.js → game-module-access-nUAwk1dj.js} +1 -1
  133. package/dist/assets/{game-network-YNnA__rm.js → game-network-BNeDxziF.js} +3 -3
  134. package/dist/assets/{gameplay-export-CYs9Zf28.js → gameplay-export-Bo-oK6Gq.js} +1 -1
  135. package/dist/assets/{gameplay-replay-onLTM9_v.js → gameplay-replay-0cZ9wkDO.js} +1 -1
  136. package/dist/assets/{gameplay.command-BL9yIUkk.js → gameplay.command-rqy8cEAf.js} +1 -1
  137. package/dist/assets/{generation-jobs-IpL1oPd3.js → generation-jobs-DNAW8eNU.js} +1 -1
  138. package/dist/assets/{generation.service-B8Nhb_tQ.js → generation.service-CR9vGnlh.js} +1 -1
  139. package/dist/assets/{generations-IQHXLtg8.js → generations-gowHWx4e.js} +1 -1
  140. package/dist/assets/{generations.status-BkLggMhB.js → generations.status-Dhp03MBg.js} +1 -1
  141. package/dist/assets/{hierarchy-marks-C9FKSQHH.js → hierarchy-marks-DYUvG4lt.js} +1 -1
  142. package/dist/assets/{hosted-asset-materialization-sdG-aTgR.js → hosted-asset-materialization-ick1zhVG.js} +1 -1
  143. package/dist/assets/{index-BGKXoVeu.js → index-B0UXNGe3.js} +1 -1
  144. package/dist/assets/{index-Dw9Rpena.js → index-BJd--nme.js} +1 -1
  145. package/dist/assets/{index-B-vtuqkx.js → index-BSF96KzC.js} +1 -1
  146. package/dist/assets/{index-CcrH9u0V.js → index-By7rtNst.js} +1 -1
  147. package/dist/assets/{index-nySnA9Ug.js → index-C6b9kkV0.js} +7 -7
  148. package/dist/assets/{index-CkjrzX4P.js → index-CIJAwE7l.js} +2 -2
  149. package/dist/assets/{index-6X2RM7YY.js → index-Cq-3G_01.js} +1 -1
  150. package/dist/assets/{index-DoSChd6Z.js → index-Cvqad4qf.js} +1 -1
  151. package/dist/assets/{index-Bug1xbYx.js → index-DN_ydMe4.js} +1 -1
  152. package/dist/assets/{inference-diagnostics-DuPm6O0g.js → inference-diagnostics-DNhFOXFZ.js} +1 -1
  153. package/dist/assets/{ingest-boot-viewport-BlkNjuqD.js → ingest-boot-viewport-Di4Sb09a.js} +1 -1
  154. package/dist/assets/{ingest-siblings-B8-3Jax7.js → ingest-siblings-BmG05Dep.js} +1 -1
  155. package/dist/assets/{ingest-source-persistence-Bgpi9aX2.js → ingest-source-persistence-Dz_7hVqh.js} +1 -1
  156. package/dist/assets/{ingest.service-CiB-mBHW.js → ingest.service-BGGBXhbP.js} +1 -1
  157. package/dist/assets/{inspect-ecnGo6h9.js → inspect-BRJFBB2z.js} +1 -1
  158. package/dist/assets/instances.command-q-B_dgED.js +1 -0
  159. package/dist/assets/{json-history-resource-Dp7Ra99p.js → json-history-resource-D4GYZYcB.js} +1 -1
  160. package/dist/assets/{layered-pick-B0x-Imc-.js → layered-pick-D1CaaJD4.js} +1 -1
  161. package/dist/assets/{light-CqVkPR2u.js → light-DY_lN4WQ.js} +1 -1
  162. package/dist/assets/{live-project-verbs-BPKYAVhO.js → live-project-verbs-BVyxYNhA.js} +1 -1
  163. package/dist/assets/{machine.document-vhHf8j8j.js → machine.document-ChSDKagD.js} +1 -1
  164. package/dist/assets/{machines.finder-CYGcoUpx.js → machines.finder-zJZEKJbn.js} +1 -1
  165. package/dist/assets/{material-C0kJ03PJ.js → material-DOuhah-I.js} +1 -1
  166. package/dist/assets/{material-factory-BYajdLke.js → material-factory-DCAwUIMb.js} +1 -1
  167. package/dist/assets/{mesh-CQC683US.js → mesh-BBgqQ4tw.js} +1 -1
  168. package/dist/assets/{model-asset-sections.service-Dh79mFYs.js → model-asset-sections.service-D5_Qnu8F.js} +1 -1
  169. package/dist/assets/{model-inspection-KJJ116pG.js → model-inspection-Ce70HeHy.js} +1 -1
  170. package/dist/assets/{model-thumbnail-Cx5Eb_fd.js → model-thumbnail-oBpbFAcj.js} +1 -1
  171. package/dist/assets/{models.finder-DIkds1Nj.js → models.finder-DnEKW1nB.js} +1 -1
  172. package/dist/assets/{module-mode-CPoFoRzV.js → module-mode-Z2Pw8_cG.js} +2 -2
  173. package/dist/assets/{mount-canvas-ingest-root-BrZ0PEjk.js → mount-canvas-ingest-root-q8qGzO0M.js} +2 -2
  174. package/dist/assets/{mount-dom-ingest-root-BcP-acNo.js → mount-dom-ingest-root-mqtEmyUH.js} +2 -2
  175. package/dist/assets/{mount-ingest-root-Wf5fhTMH.js → mount-ingest-root-CnknLsAH.js} +2 -2
  176. package/dist/assets/{mount-manifest-CXdSgRBq.js → mount-manifest-RVw-dK1A.js} +1 -1
  177. package/dist/assets/{mount-three-ingest-root-VINQZrMq.js → mount-three-ingest-root-B4T-Y3Qv.js} +1 -1
  178. package/dist/assets/{mounted-authoring-D7_0P8Yg.js → mounted-authoring-BW8axnm4.js} +1 -1
  179. package/dist/assets/{mounted-story-viewport-source-esB5WiW7.js → mounted-story-viewport-source-bf12XIaz.js} +1 -1
  180. package/dist/assets/{native-debug-module-DiyEiCfH.js → native-debug-module-Be_Zu0XE.js} +1 -1
  181. package/dist/assets/{navigation-CCfxrKnm.js → navigation-U-2TvMMp.js} +1 -1
  182. package/dist/assets/{navmesh.menu-3oJTvzhD.js → navmesh.menu-Dwv0BlFc.js} +1 -1
  183. package/dist/assets/{navmesh.service-CIqD64Ey.js → navmesh.service-D0WfDvfc.js} +1 -1
  184. package/dist/assets/network-observer.service-Bp4Pp-ZK.js +1 -0
  185. package/dist/assets/{network.utility-CEASCNxw.js → network.utility-DqtzEO6P.js} +1 -1
  186. package/dist/assets/{object3d-document-session-registry-B46cPnBb.js → object3d-document-session-registry--r1BseN3.js} +2 -2
  187. package/dist/assets/{oid-transform-BzFi809X.js → oid-transform-i2EGkRgu.js} +1 -1
  188. package/dist/assets/{particles-er7NMOfH.js → particles-B-kl7baZ.js} +1 -1
  189. package/dist/assets/{pixi-authoring-adapter-DJcOr94r.js → pixi-authoring-adapter-B0XPfm9f.js} +1 -1
  190. package/dist/assets/{pixi-live-write-target-DhHlW0I4.js → pixi-live-write-target-DKSUcwat.js} +1 -1
  191. package/dist/assets/{play.command-CMH6uH3C.js → play.command-ov-jkz3c.js} +2 -2
  192. package/dist/assets/{presentation-DfHrJ94Q.js → presentation-DHSxfQfh.js} +1 -1
  193. package/dist/assets/{product-KBRPPO6a.js → product-CCDSVopY.js} +1 -1
  194. package/dist/assets/{profiler.action-Bc7TMkqb.js → profiler.action-CoEPogPx.js} +1 -1
  195. package/dist/assets/{profiler.menu-BcZq6Rmy.js → profiler.menu-HOvnHzpD.js} +1 -1
  196. package/dist/assets/{profiler.utility-CksJa-lj.js → profiler.utility-DArumoBa.js} +1 -1
  197. package/dist/assets/{project-authoring-session-C9_9Hb8-.js → project-authoring-session-OdoqMUaI.js} +2 -2
  198. package/dist/assets/{properties-bone-constraints.inspector-31lt8g6y.js → properties-bone-constraints.inspector-B6sFLmg_.js} +1 -1
  199. package/dist/assets/{properties-bone.inspector-FxL_XMOQ.js → properties-bone.inspector-Cq0j1Tg_.js} +1 -1
  200. package/dist/assets/{properties-collection.inspector-DhcrjTYn.js → properties-collection.inspector-DYMwSmQY.js} +1 -1
  201. package/dist/assets/{properties-constraints.inspector-Coe1A1Dd.js → properties-constraints.inspector-CX5gxqju.js} +1 -1
  202. package/dist/assets/{properties-data.inspector-YKEhk2KI.js → properties-data.inspector-cL1TZwxI.js} +1 -1
  203. package/dist/assets/{properties-material.inspector-B2UhDK1n.js → properties-material.inspector-DU1wOJce.js} +1 -1
  204. package/dist/assets/{properties-modifiers.inspector-uOwwcmRf.js → properties-modifiers.inspector-CmO1PZIA.js} +1 -1
  205. package/dist/assets/{properties-object.inspector-D8kiIU1x.js → properties-object.inspector-CFvqMWdn.js} +1 -1
  206. package/dist/assets/{properties-output.inspector-RaoeccQZ.js → properties-output.inspector-DC-O8hue.js} +1 -1
  207. package/dist/assets/{properties-particles.inspector-D0Jb5Ts7.js → properties-particles.inspector-DfWIbmzQ.js} +1 -1
  208. package/dist/assets/{properties-physics.inspector-BIubmBiu.js → properties-physics.inspector-xx8ml3qs.js} +1 -1
  209. package/dist/assets/{properties-render.inspector-BPamVV35.js → properties-render.inspector-C8Hq7knh.js} +1 -1
  210. package/dist/assets/{properties-scene.inspector-B2mjYWyc.js → properties-scene.inspector-CCGXsMCm.js} +1 -1
  211. package/dist/assets/{properties-texture.inspector-iH7Hdsai.js → properties-texture.inspector-CLWq44Va.js} +1 -1
  212. package/dist/assets/{properties-view-layer.inspector-BXjmwWhZ.js → properties-view-layer.inspector-Bpry4Iqh.js} +1 -1
  213. package/dist/assets/{properties-world.inspector-CUhszQm_.js → properties-world.inspector-nHZ1JkkY.js} +1 -1
  214. package/dist/assets/{r3f-design-session-BT_FNbxu.js → r3f-design-session-Cirrj19r.js} +2 -2
  215. package/dist/assets/{r3f-physics-binding-BWdDgRxd.js → r3f-physics-binding-DsYLHa6f.js} +1 -1
  216. package/dist/assets/{r3f-source-authoring-adapter-B0E5IqBw.js → r3f-source-authoring-adapter-C0STpGb7.js} +1 -1
  217. package/dist/assets/{react-canvas-navigation-Dr5dRfTS.js → react-canvas-navigation-DijWKFG_.js} +1 -1
  218. package/dist/assets/{react-inspector.service-BiPd_duU.js → react-inspector.service-CS-ZEU5N.js} +1 -1
  219. package/dist/assets/{react-story-board-CdtjLDYv.js → react-story-board-BMNsbya2.js} +1 -1
  220. package/dist/assets/{react-three-rapier.esm-BRNjkQwe.js → react-three-rapier.esm-CN0eNYep.js} +1 -1
  221. package/dist/assets/{react-world-authoring-adapter-BydYut9T.js → react-world-authoring-adapter-4FofK2_S.js} +1 -1
  222. package/dist/assets/{realm-services-BsB1S4Eh.js → realm-services-CnW99EpW.js} +1 -1
  223. package/dist/assets/{reflection-probe-capture.inspector-Ci5hFo5Q.js → reflection-probe-capture.inspector-Dgy-8-1h.js} +1 -1
  224. package/dist/assets/{registry-BiYDDckl.js → registry-CmQvHjp6.js} +1 -1
  225. package/dist/assets/{relative-import-specifier-CwidALJP.js → relative-import-specifier-Dk9yRpxL.js} +1 -1
  226. package/dist/assets/{render-env-BchkLjDP.js → render-env-O4VU4xhx.js} +1 -1
  227. package/dist/assets/{render-features-BYXvPGUA.js → render-features-ChdWrVy0.js} +1 -1
  228. package/dist/assets/{render-settings-DGLz2Ame.js → render-settings-BCZAvPJi.js} +1 -1
  229. package/dist/assets/{resolve-three-DetBiJb1.js → resolve-three-Dck88bio.js} +3 -3
  230. package/dist/assets/{root-seam-contract-bbvHIRf5.js → root-seam-contract-ChFKhMGt.js} +1 -1
  231. package/dist/assets/{run-selection-BBeVaGgf.js → run-selection-C6EqhdoA.js} +1 -1
  232. package/dist/assets/{scene-capture-B1qVmZZy.js → scene-capture-Bui4ruWh.js} +1 -1
  233. package/dist/assets/{scene-document.service-CkqKSFhN.js → scene-document.service-DSdvp7Ce.js} +2 -2
  234. package/dist/assets/{scene-framing-DmGFFnxb.js → scene-framing-DPK5z1LB.js} +1 -1
  235. package/dist/assets/{seeded-random-DY3-ydOg.js → seeded-random-BJvC1dTR.js} +1 -1
  236. package/dist/assets/{setup-renderer-C1HERM3i.js → setup-renderer-CwpGLiQN.js} +1 -1
  237. package/dist/assets/{source-object3d-authoring-adapter-Deft82fS.js → source-object3d-authoring-adapter-Bdq-N_ih.js} +1 -1
  238. package/dist/assets/{source-persistence-backend-DxRc3Vmw.js → source-persistence-backend-wZj2Qj3g.js} +1 -1
  239. package/dist/assets/{stage-keyboard-CtFcg-KZ.js → stage-keyboard-CNNJiLBS.js} +1 -1
  240. package/dist/assets/{stage-overlay-set-DSS29nHE.js → stage-overlay-set-BKAbHMto.js} +1 -1
  241. package/dist/assets/{stage-presence-markers-CCO8UamH.js → stage-presence-markers-J7TV-MHA.js} +1 -1
  242. package/dist/assets/{stage-transform-tools-Kdg5eF5v.js → stage-transform-tools-B5kYo-6B.js} +1 -1
  243. package/dist/assets/{standard-viewport-dressing-DXhgWBOp.js → standard-viewport-dressing-DSi6qJFC.js} +1 -1
  244. package/dist/assets/{state-watch.action-fSIdJUGZ.js → state-watch.action-DTwXKaRA.js} +1 -1
  245. package/dist/assets/{state-watch.menu-Bfww1_mP.js → state-watch.menu-BcV_iOZY.js} +1 -1
  246. package/dist/assets/{state-watch.utility-DUSmbc6X.js → state-watch.utility-LiVERTu5.js} +1 -1
  247. package/dist/assets/{story-capture-BxgNeexV.js → story-capture-Bp8iYZLe.js} +1 -1
  248. package/dist/assets/{story-documents-C1oR_8cj.js → story-documents-f3Ug4YBp.js} +1 -1
  249. package/dist/assets/{story-documents.service-BS2hN2Ce.js → story-documents.service-CO7oQCl7.js} +1 -1
  250. package/dist/assets/{story-documents.service-uV8KFn9S.js → story-documents.service-XIecBTKZ.js} +1 -1
  251. package/dist/assets/{story-media-presence-COUd6cak.js → story-media-presence-CZDChC1Q.js} +1 -1
  252. package/dist/assets/{story-pixi-preview-C5xQCGuv.js → story-pixi-preview-DVY_KTxj.js} +1 -1
  253. package/dist/assets/{story-presentation-CMvpmKUb.js → story-presentation-CNwvXmP8.js} +1 -1
  254. package/dist/assets/{story-three-preview-e0faozfl.js → story-three-preview-EAGsWdvg.js} +2 -2
  255. package/dist/assets/{studio-environment-B2vsjqle.js → studio-environment-DPyvNCMf.js} +1 -1
  256. package/dist/assets/{surface-state-tKDJ4ZAb.js → surface-state-DDvqISvA.js} +1 -1
  257. package/dist/assets/{syntactic-prop-specs-jY7NkRtv.js → syntactic-prop-specs-Xrvbz2vw.js} +1 -1
  258. package/dist/assets/{team-playtest.service-BptLup8r.js → team-playtest.service-ak53AQFu.js} +1 -1
  259. package/dist/assets/{three-DNjStL2y.js → three-CJgQeY1W.js} +1 -1
  260. package/dist/assets/{three-authoring-adapter-DFD9SKE4.js → three-authoring-adapter-D-iyhWwy.js} +1 -1
  261. package/dist/assets/three-authoring.service-BphzI5K_.js +2 -0
  262. package/dist/assets/{three-ingest-runtime-elb0lM0i.js → three-ingest-runtime-BjO_n3E-.js} +1 -1
  263. package/dist/assets/{three-integration-D-x0z186.js → three-integration-YGBUQAWW.js} +2 -2
  264. package/dist/assets/three-integration.service-CC5Hzqn_.js +1 -0
  265. package/dist/assets/{three-projection-core-C_GCcPfW.js → three-projection-core-BjkdjllS.js} +1 -1
  266. package/dist/assets/{three-state-BU_Et2fb.js → three-state-CvU5OXTi.js} +1 -1
  267. package/dist/assets/{three-story-capture.service-BcBLj5Ns.js → three-story-capture.service-DikE7JrC.js} +2 -2
  268. package/dist/assets/{three-story-model-DvgpSf5W.js → three-story-model-aKieakmn.js} +1 -1
  269. package/dist/assets/{three-viewport-presentation-DU4LbXCX.js → three-viewport-presentation-5zDCaTKw.js} +1 -1
  270. package/dist/assets/{transform-mode-request-C9geEmE8.js → transform-mode-request-05CQoTKg.js} +1 -1
  271. package/dist/assets/{transport-strip-C8yTDVnw.js → transport-strip-B0VIsVkq.js} +1 -1
  272. package/dist/assets/transport.header-CAvPxCpi.js +1 -0
  273. package/dist/assets/{tuples-CHM9-MeZ.js → tuples-BteMo3KQ.js} +1 -1
  274. package/dist/assets/{ui-board-document-B2BrHCE_.js → ui-board-document-CB4DQEPW.js} +2 -2
  275. package/dist/assets/{user-data-BiloulL-.js → user-data-DKfhN35w.js} +1 -1
  276. package/dist/assets/{utility-view-state-BHfsAN18.js → utility-view-state-DZ2ujJyw.js} +1 -1
  277. package/dist/assets/{viewport-door-CJXG2Jxo.js → viewport-door-BrYqbiwp.js} +1 -1
  278. package/dist/assets/{viewport-root-presentation-B13UVzkf.js → viewport-root-presentation-DqFPo19p.js} +1 -1
  279. package/dist/assets/{viewport-surface-status-BfoaH0c4.js → viewport-surface-status-BCnAK4lN.js} +1 -1
  280. package/dist/assets/{webworkerAll-D0rFmNNP.js → webworkerAll-Zn2-KQph.js} +1 -1
  281. package/dist/assets/{workspace-arrangement-BzOJBZHz.js → workspace-arrangement-BoYqL0C2.js} +1 -1
  282. package/dist/assets/{world-documents-SfK4cE7-.js → world-documents-CzkDHYwW.js} +1 -1
  283. package/dist/assets/{world-root-stage-binding-B_eeaou9.js → world-root-stage-binding-vmgZxCgc.js} +1 -1
  284. package/dist/assets/{xstate-animation-binding-CJyISi6P.js → xstate-animation-binding-C3RIk_KM.js} +1 -1
  285. package/dist/assets/{xstate-animation-meta-CphrXz7c.js → xstate-animation-meta-CWXGLmNW.js} +1 -1
  286. package/dist-node/cli.js +18 -18
  287. package/package.json +16 -16
  288. package/dist/assets/InspectorObjectPreview-mo9bGLDT.js +0 -1
  289. package/dist/assets/Object3DDocumentViewport-eDH3ZPyb.js +0 -2
  290. package/dist/assets/StageHost-DnZzSENp.js +0 -2
  291. package/dist/assets/autoplay.service-dVunBDzc.js +0 -1
  292. package/dist/assets/instances.command-BUjh8RK6.js +0 -1
  293. package/dist/assets/network-observer.service-fJ2m395K.js +0 -1
  294. package/dist/assets/three-authoring.service-CssoVcQx.js +0 -2
  295. package/dist/assets/three-integration.service-CVpXIvOr.js +0 -1
  296. package/dist/assets/transport.header-CMkmHYNe.js +0 -1
@@ -1 +1 @@
1
- import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as w}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{e4 as j,a6 as S,f0 as st,aN as et,e6 as M,e5 as L,bH as K,a7 as z,iZ as X,kD as O,eJ as at,bP as it,hZ as W,dV as lt,aS as ct}from"./index-nySnA9Ug.js";import{C as N,r as ot}from"./ColorPicker-CJ09zfEX.js";const dt={full:{anchor:{left:0,top:0,right:1,bottom:1},offset:{left:0,top:0,right:0,bottom:0}},top:{anchor:{left:0,top:0,right:1,bottom:0},offset:{left:0,top:0,right:0,bottom:0}},bottom:{anchor:{left:0,top:1,right:1,bottom:1},offset:{left:0,top:0,right:0,bottom:0}},left:{anchor:{left:0,top:0,right:0,bottom:1},offset:{left:0,top:0,right:0,bottom:0}},right:{anchor:{left:1,top:0,right:1,bottom:1},offset:{left:0,top:0,right:0,bottom:0}},center:{anchor:{left:.5,top:.5,right:.5,bottom:.5},offset:{left:-60,top:-20,right:60,bottom:20}},"top-left":{anchor:{left:0,top:0,right:0,bottom:0},offset:{left:0,top:0,right:120,bottom:40}},"top-right":{anchor:{left:1,top:0,right:1,bottom:0},offset:{left:-120,top:0,right:0,bottom:40}}},V=["flex-start","center","flex-end"],Y=["flex-start","center","flex-end"];function pt({row:t,col:e,justify:s,align:r,isActive:c,disabled:a,onSelect:h}){return o.jsx("div",{"data-testid":`alignment-grid-${t}-${e}`,onClick:()=>{a||h(s,r)},style:{width:16,height:16,display:"flex",alignItems:"center",justifyContent:"center",cursor:a?"not-allowed":"pointer",borderRadius:j.radiusSmall,background:c?j.accent:"transparent"},children:o.jsx("div",{style:{width:c?6:4,height:c?6:4,borderRadius:"50%",background:c?j.onAccent:j.textMuted}})})}function Lt({value:t,onChange:e,disabled:s}){const r=V.indexOf(t.justify),c=Y.indexOf(t.align);return o.jsx("div",{"data-testid":"alignment-grid",style:{display:"inline-grid",gridTemplateColumns:"repeat(3, 16px)",gridTemplateRows:"repeat(3, 16px)",gap:1,background:j.inputBg,borderRadius:j.radiusMedium,padding:4,opacity:s?.35:1},children:Y.map((a,h)=>V.map((l,m)=>o.jsx(pt,{row:h,col:m,justify:l,align:a,isActive:h===c&&m===r,disabled:s,onSelect:(f,g)=>e({justify:f,align:g})},`${h}-${m}`)))})}function It({onSelect:t,disabled:e}){return o.jsx("div",{"data-testid":"anchor-presets",style:{display:"flex",flexWrap:"wrap",gap:4},children:Object.entries(dt).map(([s,r])=>o.jsx(S,{type:"button",variant:"secondary",size:"compact","data-testid":`anchor-preset-${s}`,disabled:e,onClick:()=>t(s,r),children:s},s))})}function R({label:t,value:e,unit:s="",step:r=1,min:c,max:a,precision:h,disabled:l,onChange:m,onChangeEnd:f,testId:g,style:p}){const x=w.useRef(null),u=h??(r<1?2:r>=100?-2:0),n=w.useMemo(()=>y=>{if(u<0){const C=10**-u;return Math.round(y/C)*C}const k=10**u;return Math.round(y*k)/k},[u]),i=y=>{let k=y;return c!==void 0&&(k=Math.max(c,k)),a!==void 0&&(k=Math.min(a,k)),n(k)},d=y=>{if(l)return;y.preventDefault(),x.current={startX:y.clientX,startValue:e,last:e},document.body.style.cursor="ew-resize";const k=I=>{if(!x.current)return;I.preventDefault();const A=I.clientX-x.current.startX,rt=I.shiftKey?10:I.altKey?.1:1,U=i(x.current.startValue+A*r*rt);x.current.last=U,L({onChange:m},U)},C=()=>{document.body.style.cursor="",window.removeEventListener("mousemove",k),window.removeEventListener("mouseup",H),window.removeEventListener("keydown",G)},H=()=>{if(x.current){const I=x.current.last;x.current=null,M({onChange:m,onChangeEnd:f},I)}C()},G=I=>{if(I.key==="Escape"&&x.current){const A=i(x.current.startValue);x.current=null,L({onChange:m},A),M({onChange:m,onChangeEnd:f},A),C()}};window.addEventListener("mousemove",k),window.addEventListener("mouseup",H),window.addEventListener("keydown",G)},[v,$]=w.useState(null),E=w.useRef(!1),b=y=>{const k=Number.parseFloat(y);if(Number.isNaN(k))return;const C=i(k);C!==e&&M({onChange:m,onChangeEnd:f},C)};return o.jsxs("div",{style:{...st,...p},children:[o.jsx("span",{className:"volter-scrub-label","data-testid":g?`${g}-label`:void 0,onMouseDown:d,"data-disabled":l||void 0,style:{fontSize:11,...l?{color:j.dynamic}:{},flexShrink:0,cursor:l?"not-allowed":"ew-resize",userSelect:"none",fontWeight:500},children:t}),o.jsx(et,{"data-testid":g,type:"text",value:v??`${e}${s}`,readOnly:l,"data-dynamic":l||void 0,onFocus:y=>{$(`${e}${s}`),y.target.select()},onChange:y=>$(y.target.value),onBlur:y=>{E.current||b(y.target.value),E.current=!1,$(null)},onKeyDown:y=>{y.key==="Enter"&&y.target.blur(),y.key==="Escape"&&(E.current=!0,y.target.blur())},style:{flex:1,width:0}})]})}const q=["none","solid","dashed","dotted","double"];function ut(t){return{top:t,right:t,bottom:t,left:t}}function ht(t){const e=r=>`${r.width}|${r.style}|${r.color}`,s=e(t.top);return e(t.right)===s&&e(t.bottom)===s&&e(t.left)===s}function Tt({value:t,onChange:e,onChangeEnd:s,disabled:r,recentColors:c,onAddRecentColor:a}){const[h,l]=w.useState(!ht(t)),m=(p,x)=>{const u={...t.top,...p},n=ut(u);x?M({onChange:e,onChangeEnd:s},n):L({onChange:e},n)},f=(p,x,u)=>{const n={...t,[p]:{...t[p],...x}};u?M({onChange:e,onChangeEnd:s},n):L({onChange:e},n)};if(!h)return o.jsxs("div",{"data-testid":"border-editor-uniform",style:{display:"flex",gap:6,alignItems:"center"},children:[o.jsx(N,{testId:"border-color",value:t.top.color,disabled:r,onChange:p=>m({color:p},!1),onChangeEnd:p=>m({color:p},!0),recentColors:c,onAddRecentColor:a}),o.jsx(R,{testId:"border-width",label:"W",value:t.top.width,min:0,disabled:r,onChange:p=>m({width:p},!1),onChangeEnd:p=>m({width:p},!0),style:{width:64}}),o.jsx(K,{className:"volter-select","data-testid":"border-style",value:t.top.style,disabled:r,"data-dynamic":r||void 0,onChange:p=>m({style:p.target.value},!0),style:{flex:1},children:q.map(p=>o.jsx("option",{value:p,children:p},p))}),o.jsx(S,{type:"button","data-testid":"border-expand",title:"Per-side borders","aria-label":"Edit borders per side",onClick:()=>l(!0),variant:"ghost",size:"compact",children:o.jsx(z,{icon:X})})]});const g=[{key:"top",label:"T"},{key:"right",label:"R"},{key:"bottom",label:"B"},{key:"left",label:"L"}];return o.jsxs("div",{"data-testid":"border-editor-expanded",style:{display:"flex",flexDirection:"column",gap:4},children:[o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4},children:[o.jsx("span",{style:{fontSize:10,color:j.textMuted},children:"Per-side"}),o.jsx("div",{style:{flex:1}}),o.jsx(S,{type:"button",variant:"primary",size:"compact","data-testid":"border-collapse",title:"Uniform border","aria-label":"Use one border for all sides",onClick:()=>l(!1),children:o.jsx(z,{icon:X})})]}),g.map(({key:p,label:x})=>o.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center"},children:[o.jsx("span",{style:{fontSize:10,color:j.textMuted,width:10,textAlign:"center"},children:x}),o.jsx(N,{testId:`border-${p}-color`,value:t[p].color,disabled:r,onChange:u=>f(p,{color:u},!1),onChangeEnd:u=>f(p,{color:u},!0),recentColors:c,onAddRecentColor:a}),o.jsx(R,{testId:`border-${p}-width`,label:"",value:t[p].width,min:0,disabled:r,onChange:u=>f(p,{width:u},!1),onChangeEnd:u=>f(p,{width:u},!0),style:{width:48}}),o.jsx(K,{className:"volter-select","data-testid":`border-${p}-style`,value:t[p].style,disabled:r,"data-density":"compact","data-dynamic":r||void 0,onChange:u=>f(p,{style:u.target.value},!0),style:{flex:1},children:q.map(u=>o.jsx("option",{value:u,children:u},u))})]},p))]})}function ft(t){return{topLeft:t,topRight:t,bottomLeft:t,bottomRight:t}}function mt(t){return t.topLeft===t.topRight&&t.topRight===t.bottomLeft&&t.bottomLeft===t.bottomRight}function zt({value:t,onChange:e,onChangeEnd:s,disabled:r}){const[c,a]=w.useState(!mt(t)),h=(f,g)=>{const p=ft(f);g?M({onChange:e,onChangeEnd:s},p):L({onChange:e},p)},l=(f,g,p)=>{const x={...t,[f]:g};p?M({onChange:e,onChangeEnd:s},x):L({onChange:e},x)};if(!c)return o.jsxs("div",{"data-testid":"border-radius-editor-uniform",style:{display:"flex",gap:4,alignItems:"center"},children:[o.jsx(R,{testId:"border-radius",label:o.jsx(z,{icon:O,label:"Radius"}),value:t.topLeft,min:0,disabled:r,onChange:f=>h(f,!1),onChangeEnd:f=>h(f,!0),style:{flex:1}}),o.jsx(S,{type:"button","data-testid":"border-radius-expand",title:"Independent corners","aria-label":"Edit radius per corner",onClick:()=>a(!0),variant:"ghost",size:"compact",children:o.jsx(z,{icon:O})})]});const m=[{key:"topLeft",label:"TL"},{key:"topRight",label:"TR"},{key:"bottomLeft",label:"BL"},{key:"bottomRight",label:"BR"}];return o.jsxs("div",{"data-testid":"border-radius-editor-expanded",children:[o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:4},children:[o.jsx("span",{style:{fontSize:10,color:j.textMuted},children:"Corners"}),o.jsx("div",{style:{flex:1}}),o.jsx(S,{type:"button",variant:"primary",size:"compact","data-testid":"border-radius-collapse",title:"Uniform radius","aria-label":"Use one radius for all corners",onClick:()=>a(!1),children:o.jsx(z,{icon:O})})]}),o.jsx("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:3},children:m.map(({key:f,label:g})=>o.jsx(R,{testId:`border-radius-${f}`,label:g,value:t[f],min:0,disabled:r,onChange:p=>l(f,p,!1),onChangeEnd:p=>l(f,p,!0)},f))})]})}const P=[{name:"blur",unit:"px",min:0,max:50,step:.5,default:0},{name:"brightness",unit:"%",min:0,max:300,step:1,default:100},{name:"contrast",unit:"%",min:0,max:300,step:1,default:100},{name:"saturate",unit:"%",min:0,max:300,step:1,default:100},{name:"grayscale",unit:"%",min:0,max:100,step:1,default:0},{name:"hue-rotate",unit:"deg",min:0,max:360,step:1,default:0}];function Bt(t){return!t||t==="none"?P.map(e=>({name:e.name,value:e.default})):P.map(e=>{const s=new RegExp(`${e.name}\\(([\\d.]+)${e.unit}?\\)`),r=t.match(s);return{name:e.name,value:r?.[1]?Number.parseFloat(r[1]):e.default}})}function Nt(t){const e=[];for(let s=0;s<t.length;s++){const r=t[s],c=P[s];r&&c&&r.value!==c.default&&e.push(`${r.name}(${r.value}${c.unit})`)}return e.length?e.join(" "):"none"}function At({value:t,onChange:e,onChangeEnd:s,disabled:r,label:c="Filter",testId:a="filter-editor"}){const h=(l,m,f)=>{const g=t.map((p,x)=>x===l?{...p,value:m}:p);f?M({onChange:e,onChangeEnd:s},g):L({onChange:e},g)};return o.jsxs("div",{"data-testid":a,children:[o.jsx("div",{style:{fontSize:9,color:j.textMuted,marginBottom:4},children:c}),t.map((l,m)=>{const f=P[m];return f?o.jsx("div",{"data-testid":`filter-row-${l.name}`,style:{marginBottom:3},children:o.jsx(R,{testId:`filter-${l.name}`,label:l.name.replace("hue-rotate","hue"),value:l.value,unit:f.unit,min:f.min,max:f.max,step:f.step,disabled:r,onChange:g=>h(m,g,!1),onChangeEnd:g=>h(m,g,!0)})},l.name):null})]})}const T=28,J=10;function Dt({value:t,onChange:e,disabled:s,fonts:r,testId:c="font-picker"}){const[a,h]=w.useState(!1),[l,m]=w.useState(""),[f,g]=w.useState(0),p=w.useRef(null),x=w.useRef(null);w.useEffect(()=>{a&&x.current?.focus()},[a]),w.useEffect(()=>{if(!a)return;const b=y=>{p.current&&!p.current.contains(y.target)&&h(!1)};return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[a]),w.useEffect(()=>{if(!a)return;const b=y=>{y.key==="Escape"&&h(!1)};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[a]);const u=w.useMemo(()=>{if(!l)return r;const b=l.toLowerCase();return r.filter(y=>y.toLowerCase().includes(b))},[r,l]),n=u.length*T,i=Math.floor(f/T),d=Math.min(u.length,i+J+2),v=u.slice(i,d),$=b=>{e(b),h(!1),m("")},E=t.replace(/^["']|["']$/g,"");return o.jsxs("div",{ref:p,"data-testid":c,style:{position:"relative",flex:1},children:[o.jsxs(S,{type:"button",variant:"secondary",className:"volter-field-trigger","aria-haspopup":"listbox","aria-expanded":a,disabled:s,"data-testid":"font-picker-input",onClick:()=>{s||h(b=>!b)},children:[o.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E||"—"}),o.jsx(at,{direction:"down",tone:"muted",style:{marginLeft:4}})]}),a&&o.jsxs(it,{"data-testid":"font-picker-dropdown",style:{position:"absolute",top:"100%",left:0,right:0,zIndex:"var(--volter-z-dropdown)",marginTop:2},children:[o.jsx("div",{style:{padding:4},children:o.jsx(et,{ref:x,type:"text","data-testid":"font-picker-search",value:l,onChange:b=>{m(b.target.value),g(0)},placeholder:"Search fonts…","data-density":"compact",style:{width:"100%",boxSizing:"border-box"}})}),o.jsx("div",{"data-testid":"font-picker-list",onScroll:b=>g(b.target.scrollTop),style:{maxHeight:J*T,overflowY:"auto"},children:o.jsx("div",{style:{height:n,position:"relative"},children:v.map((b,y)=>{const k=i+y,C=b.toLowerCase()===E.toLowerCase();return o.jsx("div",{"data-testid":`font-picker-option-${b}`,onClick:()=>$(b),style:{position:"absolute",top:k*T,left:0,right:0,height:T,display:"flex",alignItems:"center",padding:"0 8px",cursor:"pointer",fontSize:12,background:C?j.accent:"transparent",color:C?j.onAccent:j.text},children:o.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:b})},b)})})}),u.length===0&&o.jsx("div",{style:{padding:"8px 12px",color:j.textMuted,fontSize:10,textAlign:"center"},children:"No matching fonts"})]})]})}function gt(t){const e=t.stops.map(s=>`${s.color} ${Math.round(s.position*100)}%`).join(", ");return t.type==="radial"?`radial-gradient(circle, ${e})`:`linear-gradient(${t.angle}deg, ${e})`}function xt(t){const e=t.match(/^linear-gradient\((.+)\)$/);if(e?.[1]!==void 0)return{type:"linear",inner:e[1]};const s=t.match(/^radial-gradient\((.+)\)$/);return s?.[1]!==void 0?{type:"radial",inner:s[1]}:null}function yt(t){const e=t.match(/^(\d+)deg\s*,\s*/);if(e)return{angle:Number.parseInt(e[1]??"180",10),colorPart:t.slice(e[0].length)};if(t.startsWith("to ")){const s=t.match(/^to\s+\w+\s*,\s*/);if(s)return{angle:180,colorPart:t.slice(s[0].length)}}return{angle:180,colorPart:t}}function bt(t){const e=t.split(/,\s*(?![^(]*\))/).map(s=>{const r=s.trim(),c=r.match(/\s+(\d+)%$/),a=c?Number.parseInt(c[1]??"0",10)/100:-1;return{color:c?r.slice(0,-c[0].length).trim():r,position:a}});for(let s=0;s<e.length;s++){const r=e[s];r&&r.position<0&&(r.position=e.length>1?s/(e.length-1):0)}return e}function Ft(t){if(!t||t==="none")return null;const e=xt(t);if(!e)return null;const{angle:s,colorPart:r}=e.type==="linear"?yt(e.inner):{angle:180,colorPart:e.inner},c=bt(r);return c.length<2?null:{type:e.type,angle:s,stops:c}}function _({stops:t,selected:e,onSelect:s,onMove:r,disabled:c,testIdPrefix:a}){return o.jsx("div",{style:{position:"relative",height:12,marginTop:2},children:t.map((h,l)=>o.jsx("div",{"data-testid":`${a}-${l}`,onClick:()=>s(l),onMouseDown:m=>{if(c)return;m.preventDefault(),s(l);const g=m.target.parentElement?.getBoundingClientRect(),p=n=>g?.width?Math.max(0,Math.min(1,(n-g.left)/g.width)):h.position,x=n=>r(l,p(n.clientX),!1),u=n=>{r(l,p(n.clientX),!0),window.removeEventListener("mousemove",x),window.removeEventListener("mouseup",u)};window.addEventListener("mousemove",x),window.addEventListener("mouseup",u)},style:{position:"absolute",left:`${h.position*100}%`,top:0,width:10,height:10,borderRadius:"50%",background:h.css,border:`2px solid ${l===e?j.accent:"#fff"}`,transform:"translateX(-50%)",cursor:c?"not-allowed":"pointer"}},l))})}function Pt({value:t,onChange:e,onChangeEnd:s,disabled:r,recentColors:c,onAddRecentColor:a,testId:h="gradient-editor"}){const[l,m]=w.useState(0),f=(i,d)=>{d?M({onChange:e,onChangeEnd:s},i):L({onChange:e},i)},g=(i,d,v)=>{const $=t.stops.map((E,b)=>b===i?{...E,...d}:E);f({...t,stops:$},v)},p=()=>{const i=t.stops[t.stops.length-1]?.position??1,d=t.stops[0]?.position??0,v=(i+d)/2,$=[...t.stops,{color:"#888888",position:v}].sort((E,b)=>E.position-b.position);m($.length-1),f({...t,stops:$},!0)},x=i=>{if(t.stops.length<=2)return;const d=t.stops.filter((v,$)=>$!==i);m(Math.min(l,d.length-1)),f({...t,stops:d},!0)},u=t.stops[l]?.color??"#000000",n=u.startsWith("#")?u:ot(u);return o.jsxs("div",{"data-testid":h,children:[o.jsxs("div",{style:{position:"relative",marginBottom:8},children:[o.jsx("div",{"data-testid":"gradient-preview",style:{height:20,borderRadius:j.radiusSmall,border:`1px solid ${j.border}`,background:gt(t)}}),o.jsx(_,{stops:t.stops.map(i=>({position:i.position,css:i.color})),selected:l,onSelect:m,onMove:(i,d,v)=>g(i,{position:d},v),disabled:r,testIdPrefix:"gradient-stop"})]}),o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[o.jsx(N,{testId:"gradient-selected-color",value:n,disabled:r,onChange:i=>g(l,{color:i},!1),onChangeEnd:i=>g(l,{color:i},!0),recentColors:c,onAddRecentColor:a}),o.jsxs("span",{style:{fontSize:9,color:j.textMuted},children:["Stop ",l+1]}),t.stops.length>2&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-label":"Remove gradient stop","data-testid":"gradient-remove-stop",onClick:()=>x(l),children:"×"}),o.jsx(S,{type:"button",variant:"ghost",size:"compact","data-testid":"gradient-add-stop",onClick:p,children:"+ stop"})]}),o.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[o.jsxs("div",{style:{display:"flex",gap:1,flex:1},children:[o.jsx(W,{testId:"gradient-type-linear",label:"Linear",active:t.type==="linear",disabled:r,onClick:()=>f({...t,type:"linear"},!0)}),o.jsx(W,{testId:"gradient-type-radial",label:"Radial",active:t.type==="radial",disabled:r,onClick:()=>f({...t,type:"radial"},!0)})]}),t.type==="linear"&&o.jsx(R,{testId:"gradient-angle",label:"°",value:t.angle,unit:"deg",disabled:r,onChange:i=>f({...t,angle:i},!1),onChangeEnd:i=>f({...t,angle:i},!0),style:{width:70}})]})]})}function Q(t){const e=s=>Math.round(Math.max(0,Math.min(1,s))*255).toString(16).padStart(2,"0");return`#${e(t.r)}${e(t.g)}${e(t.b)}`}function Z(t){return{r:Number.parseInt(t.slice(1,3),16)/255,g:Number.parseInt(t.slice(3,5),16)/255,b:Number.parseInt(t.slice(5,7),16)/255}}function D(t,e,s){if(t.length===0)return;if(e<=t[0].pos)return t[0].value;const r=t[t.length-1];if(e>=r.pos)return r.value;for(let c=0;c+1<t.length;c++){const a=t[c],h=t[c+1];if(e>=a.pos&&e<=h.pos){const l=h.pos>a.pos?(e-a.pos)/(h.pos-a.pos):0;return s(a.value,h.value,l)}}return r.value}const B=(t,e,s)=>t+(e-t)*s,tt=(t,e,s)=>({r:B(t.r,e.r,s),g:B(t.g,e.g,s),b:B(t.b,e.b,s)});function F(t,e,s){const r={...t[e],pos:s},c=[...t.filter((a,h)=>h!==e),r].sort((a,h)=>a.pos-h.pos);return{keys:c,index:c.indexOf(r)}}function Ot({value:t,onChange:e,onChangeEnd:s,disabled:r,testId:c="quarks-gradient"}){const[a,h]=w.useState({track:"color",i:0}),l=(n,i)=>{i?M({onChange:e,onChangeEnd:s},n):L({onChange:e},n)},m=n=>({...t,color:{...t.color,keys:n}}),f=n=>({...t,alpha:{...t.alpha,keys:n}}),p=[...new Set([...t.color.keys.map(n=>n.pos),...t.alpha.keys.map(n=>n.pos)])].sort((n,i)=>n-i).map(n=>{const i=D(t.color.keys,n,tt)??{r:1,g:1,b:1},d=D(t.alpha.keys,n,B)??1;return`rgba(${Math.round(i.r*255)},${Math.round(i.g*255)},${Math.round(i.b*255)},${Math.round(d*1e3)/1e3}) ${Math.round(n*100)}%`}).join(", "),x=t.color.keys[a.track==="color"?a.i:0],u=t.alpha.keys[a.track==="alpha"?a.i:0];return o.jsxs("div",{"data-testid":c,children:[o.jsx(_,{stops:t.alpha.keys.map(n=>{const i=Math.round(Math.max(0,Math.min(1,n.value))*255);return{position:n.pos,css:`rgb(${i},${i},${i})`}}),selected:a.track==="alpha"?a.i:-1,onSelect:n=>h({track:"alpha",i:n}),onMove:(n,i,d)=>{const{keys:v,index:$}=F(t.alpha.keys,n,i);h({track:"alpha",i:$}),l(f(v),d)},disabled:r,testIdPrefix:`${c}-alpha-stop`}),o.jsx("div",{"data-testid":`${c}-preview`,style:{height:20,borderRadius:j.radiusSmall,border:`1px solid ${j.border}`,backgroundImage:`linear-gradient(90deg, ${p}), repeating-linear-gradient(45deg, #777 0 5px, #aaa 5px 10px)`}}),o.jsx(_,{stops:t.color.keys.map(n=>({position:n.pos,css:Q(n.value)})),selected:a.track==="color"?a.i:-1,onSelect:n=>h({track:"color",i:n}),onMove:(n,i,d)=>{const{keys:v,index:$}=F(t.color.keys,n,i);h({track:"color",i:$}),l(m(v),d)},disabled:r,testIdPrefix:`${c}-color-stop`}),a.track==="color"&&x&&o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:4},children:[o.jsx(N,{testId:`${c}-color-swatch`,value:Q(x.value),disabled:r,onChange:n=>l(m(t.color.keys.map((i,d)=>d===a.i?{...i,value:Z(n)}:i)),!1),onChangeEnd:n=>l(m(t.color.keys.map((i,d)=>d===a.i?{...i,value:Z(n)}:i)),!0)}),o.jsxs("span",{style:{fontSize:9,color:j.textMuted},children:["Color ",a.i+1,"/",t.color.keys.length]}),t.color.keys.length>2&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-label":"Remove color stop","data-testid":`${c}-remove-color-stop`,onClick:()=>{const n=t.color.keys.filter((i,d)=>d!==a.i);h({track:"color",i:Math.min(a.i,n.length-1)}),l(m(n),!0)},children:"×"}),o.jsx(S,{type:"button",variant:"ghost",size:"compact","data-testid":`${c}-add-color-stop`,onClick:()=>{const i=D(t.color.keys,.5,tt)??{r:1,g:1,b:1},{keys:d,index:v}=F([...t.color.keys,{value:i,pos:.5}],t.color.keys.length,.5);h({track:"color",i:v}),l(m(d),!0)},children:"+ stop"})]}),a.track==="alpha"&&u&&o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:4},children:[o.jsx(lt,{label:"a",step:.05,testId:`${c}-alpha-value`,value:Math.round(u.value*1e3)/1e3,onChange:n=>l(f(t.alpha.keys.map((i,d)=>d===a.i?{...i,value:Math.max(0,Math.min(1,n))}:i)),!1),onChangeEnd:n=>l(f(t.alpha.keys.map((i,d)=>d===a.i?{...i,value:Math.max(0,Math.min(1,n))}:i)),!0)}),o.jsxs("span",{style:{fontSize:9,color:j.textMuted},children:["Alpha ",a.i+1,"/",t.alpha.keys.length]}),t.alpha.keys.length>2&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-label":"Remove alpha stop","data-testid":`${c}-remove-alpha-stop`,onClick:()=>{const n=t.alpha.keys.filter((i,d)=>d!==a.i);h({track:"alpha",i:Math.min(a.i,n.length-1)}),l(f(n),!0)},children:"×"}),o.jsx(S,{type:"button",variant:"ghost",size:"compact","data-testid":`${c}-add-alpha-stop`,onClick:()=>{const i=D(t.alpha.keys,.5,B)??1,{keys:d,index:v}=F([...t.alpha.keys,{value:i,pos:.5}],t.alpha.keys.length,.5);h({track:"alpha",i:v}),l(f(d),!0)},children:"+ stop"})]})]})}const jt={x:0,y:4,blur:8,spread:0,color:"rgba(0,0,0,0.25)",inset:!1,enabled:!0},vt={x:0,y:2,blur:4,spread:0,color:"rgba(0,0,0,0.3)",inset:!1,enabled:!0};function wt(t,e){return(e?[t.inset?"inset":"",`${t.x}px`,`${t.y}px`,`${t.blur}px`,`${t.spread}px`,t.color]:[`${t.x}px`,`${t.y}px`,`${t.blur}px`,t.color]).filter(Boolean).join(" ")}function _t(t,e=!0){const s=t.filter(r=>r.enabled);return s.length===0?"none":s.map(r=>wt(r,e)).join(", ")}function $t(t){const e=t.match(/(rgba?\([^)]+\))/);if(e?.[1])return{color:e[1],nums:t.replace(e[1],"").trim()};const s=t.match(/(#[0-9a-fA-F]{3,8})/);return s?.[1]?{color:s[1],nums:t.replace(s[1],"").trim()}:{color:"#000000",nums:t}}function kt(t,e){if(!t||t==="none")return null;const s=t.trim(),r=e&&s.startsWith("inset"),c=r?s.slice(5).trim():s,{color:a,nums:h}=$t(c),l=h.split(/\s+/).map(m=>Number.parseFloat(m)).filter(m=>!Number.isNaN(m));return e?{inset:r,x:l[0]??0,y:l[1]??0,blur:l[2]??0,spread:l[3]??0,color:a}:l.length<2?null:{inset:!1,x:l[0]??0,y:l[1]??0,blur:l[2]??0,spread:0,color:a}}function Ht(t,e=!0){if(!t||t==="none")return[];const s=t.split(/,\s*(?![^(]*\))/),r=[];for(const c of s){const a=kt(c.trim(),e);a&&r.push({...a,enabled:!0})}return r}function nt({value:t,onChange:e,onChangeEnd:s,disabled:r,withSpreadInset:c=!0,label:a="Shadow",testId:h="shadow-editor",recentColors:l,onAddRecentColor:m}){const f=(u,n)=>{n?M({onChange:e,onChangeEnd:s},u):L({onChange:e},u)},g=(u,n,i=!1)=>{f(t.map((d,v)=>v===u?{...d,...n}:d),i)},p=u=>{f(t.filter((n,i)=>i!==u),!0)},x=()=>{f([...t,{...c?jt:vt}],!0)};return o.jsxs("div",{"data-testid":h,children:[o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:t.length>0?4:0},children:[o.jsx("span",{style:{fontSize:9,color:j.textMuted},children:a}),o.jsx("div",{style:{flex:1}}),!r&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","data-testid":`${h}-add`,onClick:x,children:"+"})]}),t.map((u,n)=>{const i=u.color.startsWith("#")?u.color:ot(u.color);return o.jsxs("div",{"data-testid":`${h}-row-${n}`,style:{marginBottom:6,padding:"4px 0",borderBottom:`1px solid ${j.border}`},children:[o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:4},children:[o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-pressed":u.enabled,"data-testid":`${h}-toggle-${n}`,onClick:()=>{r||g(n,{enabled:!u.enabled},!0)},children:u.enabled?"●":"○"}),o.jsx(N,{testId:`${h}-color-${n}`,value:i,disabled:r,onChange:d=>g(n,{color:d}),onChangeEnd:d=>g(n,{color:d},!0),recentColors:l,onAddRecentColor:m}),c&&o.jsxs("label",{style:{display:"flex",alignItems:"center",gap:2,fontSize:8,color:j.textMuted,cursor:"pointer"},children:[o.jsx(ct,{className:"volter-checkbox","data-testid":`${h}-inset-${n}`,checked:u.inset,disabled:r,onChange:d=>g(n,{inset:d.target.checked},!0)}),"in"]}),o.jsx("div",{style:{flex:1}}),!r&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-label":`Remove ${a.toLowerCase()} ${n+1}`,"data-testid":`${h}-remove-${n}`,onClick:()=>p(n),children:"×"})]}),u.enabled&&o.jsxs("div",{style:{display:"flex",gap:4},children:[o.jsx(R,{label:"X",value:u.x,disabled:r,onChange:d=>g(n,{x:d}),onChangeEnd:d=>g(n,{x:d},!0),style:{flex:1}}),o.jsx(R,{label:"Y",value:u.y,disabled:r,onChange:d=>g(n,{y:d}),onChangeEnd:d=>g(n,{y:d},!0),style:{flex:1}}),o.jsx(R,{label:"B",value:u.blur,min:0,disabled:r,onChange:d=>g(n,{blur:Math.max(0,d)}),onChangeEnd:d=>g(n,{blur:Math.max(0,d)},!0),style:{flex:1}}),c&&o.jsx(R,{label:"S",value:u.spread,disabled:r,onChange:d=>g(n,{spread:d}),onChangeEnd:d=>g(n,{spread:d},!0),style:{flex:1}})]})]},n)})]})}function Gt(t){return o.jsx(nt,{...t,withSpreadInset:!0,testId:"box-shadow-editor",label:t.label??"Shadow"})}function Ut(t){return o.jsx(nt,{...t,withSpreadInset:!1,testId:"text-shadow-editor",label:t.label??"Text Shadow"})}export{Lt as A,Tt as B,jt as D,At as F,Pt as G,Ot as Q,R as S,Ut as T,zt as a,Bt as b,gt as c,Nt as d,Ht as e,Gt as f,_t as g,Dt as h,ht as i,mt as j,It as k,vt as l,_ as m,nt as n,ft as o,Ft as p,ut as u};
1
+ import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as w}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{e4 as j,a6 as S,f0 as st,aN as et,e6 as M,e5 as L,bH as K,a7 as z,iZ as X,kD as O,eJ as at,bP as it,hZ as W,dV as lt,aS as ct}from"./index-C6b9kkV0.js";import{C as N,r as ot}from"./ColorPicker-tL7QuZuq.js";const dt={full:{anchor:{left:0,top:0,right:1,bottom:1},offset:{left:0,top:0,right:0,bottom:0}},top:{anchor:{left:0,top:0,right:1,bottom:0},offset:{left:0,top:0,right:0,bottom:0}},bottom:{anchor:{left:0,top:1,right:1,bottom:1},offset:{left:0,top:0,right:0,bottom:0}},left:{anchor:{left:0,top:0,right:0,bottom:1},offset:{left:0,top:0,right:0,bottom:0}},right:{anchor:{left:1,top:0,right:1,bottom:1},offset:{left:0,top:0,right:0,bottom:0}},center:{anchor:{left:.5,top:.5,right:.5,bottom:.5},offset:{left:-60,top:-20,right:60,bottom:20}},"top-left":{anchor:{left:0,top:0,right:0,bottom:0},offset:{left:0,top:0,right:120,bottom:40}},"top-right":{anchor:{left:1,top:0,right:1,bottom:0},offset:{left:-120,top:0,right:0,bottom:40}}},V=["flex-start","center","flex-end"],Y=["flex-start","center","flex-end"];function pt({row:t,col:e,justify:s,align:r,isActive:c,disabled:a,onSelect:h}){return o.jsx("div",{"data-testid":`alignment-grid-${t}-${e}`,onClick:()=>{a||h(s,r)},style:{width:16,height:16,display:"flex",alignItems:"center",justifyContent:"center",cursor:a?"not-allowed":"pointer",borderRadius:j.radiusSmall,background:c?j.accent:"transparent"},children:o.jsx("div",{style:{width:c?6:4,height:c?6:4,borderRadius:"50%",background:c?j.onAccent:j.textMuted}})})}function Lt({value:t,onChange:e,disabled:s}){const r=V.indexOf(t.justify),c=Y.indexOf(t.align);return o.jsx("div",{"data-testid":"alignment-grid",style:{display:"inline-grid",gridTemplateColumns:"repeat(3, 16px)",gridTemplateRows:"repeat(3, 16px)",gap:1,background:j.inputBg,borderRadius:j.radiusMedium,padding:4,opacity:s?.35:1},children:Y.map((a,h)=>V.map((l,m)=>o.jsx(pt,{row:h,col:m,justify:l,align:a,isActive:h===c&&m===r,disabled:s,onSelect:(f,g)=>e({justify:f,align:g})},`${h}-${m}`)))})}function It({onSelect:t,disabled:e}){return o.jsx("div",{"data-testid":"anchor-presets",style:{display:"flex",flexWrap:"wrap",gap:4},children:Object.entries(dt).map(([s,r])=>o.jsx(S,{type:"button",variant:"secondary",size:"compact","data-testid":`anchor-preset-${s}`,disabled:e,onClick:()=>t(s,r),children:s},s))})}function R({label:t,value:e,unit:s="",step:r=1,min:c,max:a,precision:h,disabled:l,onChange:m,onChangeEnd:f,testId:g,style:p}){const x=w.useRef(null),u=h??(r<1?2:r>=100?-2:0),n=w.useMemo(()=>y=>{if(u<0){const C=10**-u;return Math.round(y/C)*C}const k=10**u;return Math.round(y*k)/k},[u]),i=y=>{let k=y;return c!==void 0&&(k=Math.max(c,k)),a!==void 0&&(k=Math.min(a,k)),n(k)},d=y=>{if(l)return;y.preventDefault(),x.current={startX:y.clientX,startValue:e,last:e},document.body.style.cursor="ew-resize";const k=I=>{if(!x.current)return;I.preventDefault();const A=I.clientX-x.current.startX,rt=I.shiftKey?10:I.altKey?.1:1,U=i(x.current.startValue+A*r*rt);x.current.last=U,L({onChange:m},U)},C=()=>{document.body.style.cursor="",window.removeEventListener("mousemove",k),window.removeEventListener("mouseup",H),window.removeEventListener("keydown",G)},H=()=>{if(x.current){const I=x.current.last;x.current=null,M({onChange:m,onChangeEnd:f},I)}C()},G=I=>{if(I.key==="Escape"&&x.current){const A=i(x.current.startValue);x.current=null,L({onChange:m},A),M({onChange:m,onChangeEnd:f},A),C()}};window.addEventListener("mousemove",k),window.addEventListener("mouseup",H),window.addEventListener("keydown",G)},[v,$]=w.useState(null),E=w.useRef(!1),b=y=>{const k=Number.parseFloat(y);if(Number.isNaN(k))return;const C=i(k);C!==e&&M({onChange:m,onChangeEnd:f},C)};return o.jsxs("div",{style:{...st,...p},children:[o.jsx("span",{className:"volter-scrub-label","data-testid":g?`${g}-label`:void 0,onMouseDown:d,"data-disabled":l||void 0,style:{fontSize:11,...l?{color:j.dynamic}:{},flexShrink:0,cursor:l?"not-allowed":"ew-resize",userSelect:"none",fontWeight:500},children:t}),o.jsx(et,{"data-testid":g,type:"text",value:v??`${e}${s}`,readOnly:l,"data-dynamic":l||void 0,onFocus:y=>{$(`${e}${s}`),y.target.select()},onChange:y=>$(y.target.value),onBlur:y=>{E.current||b(y.target.value),E.current=!1,$(null)},onKeyDown:y=>{y.key==="Enter"&&y.target.blur(),y.key==="Escape"&&(E.current=!0,y.target.blur())},style:{flex:1,width:0}})]})}const q=["none","solid","dashed","dotted","double"];function ut(t){return{top:t,right:t,bottom:t,left:t}}function ht(t){const e=r=>`${r.width}|${r.style}|${r.color}`,s=e(t.top);return e(t.right)===s&&e(t.bottom)===s&&e(t.left)===s}function Tt({value:t,onChange:e,onChangeEnd:s,disabled:r,recentColors:c,onAddRecentColor:a}){const[h,l]=w.useState(!ht(t)),m=(p,x)=>{const u={...t.top,...p},n=ut(u);x?M({onChange:e,onChangeEnd:s},n):L({onChange:e},n)},f=(p,x,u)=>{const n={...t,[p]:{...t[p],...x}};u?M({onChange:e,onChangeEnd:s},n):L({onChange:e},n)};if(!h)return o.jsxs("div",{"data-testid":"border-editor-uniform",style:{display:"flex",gap:6,alignItems:"center"},children:[o.jsx(N,{testId:"border-color",value:t.top.color,disabled:r,onChange:p=>m({color:p},!1),onChangeEnd:p=>m({color:p},!0),recentColors:c,onAddRecentColor:a}),o.jsx(R,{testId:"border-width",label:"W",value:t.top.width,min:0,disabled:r,onChange:p=>m({width:p},!1),onChangeEnd:p=>m({width:p},!0),style:{width:64}}),o.jsx(K,{className:"volter-select","data-testid":"border-style",value:t.top.style,disabled:r,"data-dynamic":r||void 0,onChange:p=>m({style:p.target.value},!0),style:{flex:1},children:q.map(p=>o.jsx("option",{value:p,children:p},p))}),o.jsx(S,{type:"button","data-testid":"border-expand",title:"Per-side borders","aria-label":"Edit borders per side",onClick:()=>l(!0),variant:"ghost",size:"compact",children:o.jsx(z,{icon:X})})]});const g=[{key:"top",label:"T"},{key:"right",label:"R"},{key:"bottom",label:"B"},{key:"left",label:"L"}];return o.jsxs("div",{"data-testid":"border-editor-expanded",style:{display:"flex",flexDirection:"column",gap:4},children:[o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4},children:[o.jsx("span",{style:{fontSize:10,color:j.textMuted},children:"Per-side"}),o.jsx("div",{style:{flex:1}}),o.jsx(S,{type:"button",variant:"primary",size:"compact","data-testid":"border-collapse",title:"Uniform border","aria-label":"Use one border for all sides",onClick:()=>l(!1),children:o.jsx(z,{icon:X})})]}),g.map(({key:p,label:x})=>o.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center"},children:[o.jsx("span",{style:{fontSize:10,color:j.textMuted,width:10,textAlign:"center"},children:x}),o.jsx(N,{testId:`border-${p}-color`,value:t[p].color,disabled:r,onChange:u=>f(p,{color:u},!1),onChangeEnd:u=>f(p,{color:u},!0),recentColors:c,onAddRecentColor:a}),o.jsx(R,{testId:`border-${p}-width`,label:"",value:t[p].width,min:0,disabled:r,onChange:u=>f(p,{width:u},!1),onChangeEnd:u=>f(p,{width:u},!0),style:{width:48}}),o.jsx(K,{className:"volter-select","data-testid":`border-${p}-style`,value:t[p].style,disabled:r,"data-density":"compact","data-dynamic":r||void 0,onChange:u=>f(p,{style:u.target.value},!0),style:{flex:1},children:q.map(u=>o.jsx("option",{value:u,children:u},u))})]},p))]})}function ft(t){return{topLeft:t,topRight:t,bottomLeft:t,bottomRight:t}}function mt(t){return t.topLeft===t.topRight&&t.topRight===t.bottomLeft&&t.bottomLeft===t.bottomRight}function zt({value:t,onChange:e,onChangeEnd:s,disabled:r}){const[c,a]=w.useState(!mt(t)),h=(f,g)=>{const p=ft(f);g?M({onChange:e,onChangeEnd:s},p):L({onChange:e},p)},l=(f,g,p)=>{const x={...t,[f]:g};p?M({onChange:e,onChangeEnd:s},x):L({onChange:e},x)};if(!c)return o.jsxs("div",{"data-testid":"border-radius-editor-uniform",style:{display:"flex",gap:4,alignItems:"center"},children:[o.jsx(R,{testId:"border-radius",label:o.jsx(z,{icon:O,label:"Radius"}),value:t.topLeft,min:0,disabled:r,onChange:f=>h(f,!1),onChangeEnd:f=>h(f,!0),style:{flex:1}}),o.jsx(S,{type:"button","data-testid":"border-radius-expand",title:"Independent corners","aria-label":"Edit radius per corner",onClick:()=>a(!0),variant:"ghost",size:"compact",children:o.jsx(z,{icon:O})})]});const m=[{key:"topLeft",label:"TL"},{key:"topRight",label:"TR"},{key:"bottomLeft",label:"BL"},{key:"bottomRight",label:"BR"}];return o.jsxs("div",{"data-testid":"border-radius-editor-expanded",children:[o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:4},children:[o.jsx("span",{style:{fontSize:10,color:j.textMuted},children:"Corners"}),o.jsx("div",{style:{flex:1}}),o.jsx(S,{type:"button",variant:"primary",size:"compact","data-testid":"border-radius-collapse",title:"Uniform radius","aria-label":"Use one radius for all corners",onClick:()=>a(!1),children:o.jsx(z,{icon:O})})]}),o.jsx("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:3},children:m.map(({key:f,label:g})=>o.jsx(R,{testId:`border-radius-${f}`,label:g,value:t[f],min:0,disabled:r,onChange:p=>l(f,p,!1),onChangeEnd:p=>l(f,p,!0)},f))})]})}const P=[{name:"blur",unit:"px",min:0,max:50,step:.5,default:0},{name:"brightness",unit:"%",min:0,max:300,step:1,default:100},{name:"contrast",unit:"%",min:0,max:300,step:1,default:100},{name:"saturate",unit:"%",min:0,max:300,step:1,default:100},{name:"grayscale",unit:"%",min:0,max:100,step:1,default:0},{name:"hue-rotate",unit:"deg",min:0,max:360,step:1,default:0}];function Bt(t){return!t||t==="none"?P.map(e=>({name:e.name,value:e.default})):P.map(e=>{const s=new RegExp(`${e.name}\\(([\\d.]+)${e.unit}?\\)`),r=t.match(s);return{name:e.name,value:r?.[1]?Number.parseFloat(r[1]):e.default}})}function Nt(t){const e=[];for(let s=0;s<t.length;s++){const r=t[s],c=P[s];r&&c&&r.value!==c.default&&e.push(`${r.name}(${r.value}${c.unit})`)}return e.length?e.join(" "):"none"}function At({value:t,onChange:e,onChangeEnd:s,disabled:r,label:c="Filter",testId:a="filter-editor"}){const h=(l,m,f)=>{const g=t.map((p,x)=>x===l?{...p,value:m}:p);f?M({onChange:e,onChangeEnd:s},g):L({onChange:e},g)};return o.jsxs("div",{"data-testid":a,children:[o.jsx("div",{style:{fontSize:9,color:j.textMuted,marginBottom:4},children:c}),t.map((l,m)=>{const f=P[m];return f?o.jsx("div",{"data-testid":`filter-row-${l.name}`,style:{marginBottom:3},children:o.jsx(R,{testId:`filter-${l.name}`,label:l.name.replace("hue-rotate","hue"),value:l.value,unit:f.unit,min:f.min,max:f.max,step:f.step,disabled:r,onChange:g=>h(m,g,!1),onChangeEnd:g=>h(m,g,!0)})},l.name):null})]})}const T=28,J=10;function Dt({value:t,onChange:e,disabled:s,fonts:r,testId:c="font-picker"}){const[a,h]=w.useState(!1),[l,m]=w.useState(""),[f,g]=w.useState(0),p=w.useRef(null),x=w.useRef(null);w.useEffect(()=>{a&&x.current?.focus()},[a]),w.useEffect(()=>{if(!a)return;const b=y=>{p.current&&!p.current.contains(y.target)&&h(!1)};return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[a]),w.useEffect(()=>{if(!a)return;const b=y=>{y.key==="Escape"&&h(!1)};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[a]);const u=w.useMemo(()=>{if(!l)return r;const b=l.toLowerCase();return r.filter(y=>y.toLowerCase().includes(b))},[r,l]),n=u.length*T,i=Math.floor(f/T),d=Math.min(u.length,i+J+2),v=u.slice(i,d),$=b=>{e(b),h(!1),m("")},E=t.replace(/^["']|["']$/g,"");return o.jsxs("div",{ref:p,"data-testid":c,style:{position:"relative",flex:1},children:[o.jsxs(S,{type:"button",variant:"secondary",className:"volter-field-trigger","aria-haspopup":"listbox","aria-expanded":a,disabled:s,"data-testid":"font-picker-input",onClick:()=>{s||h(b=>!b)},children:[o.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E||"—"}),o.jsx(at,{direction:"down",tone:"muted",style:{marginLeft:4}})]}),a&&o.jsxs(it,{"data-testid":"font-picker-dropdown",style:{position:"absolute",top:"100%",left:0,right:0,zIndex:"var(--volter-z-dropdown)",marginTop:2},children:[o.jsx("div",{style:{padding:4},children:o.jsx(et,{ref:x,type:"text","data-testid":"font-picker-search",value:l,onChange:b=>{m(b.target.value),g(0)},placeholder:"Search fonts…","data-density":"compact",style:{width:"100%",boxSizing:"border-box"}})}),o.jsx("div",{"data-testid":"font-picker-list",onScroll:b=>g(b.target.scrollTop),style:{maxHeight:J*T,overflowY:"auto"},children:o.jsx("div",{style:{height:n,position:"relative"},children:v.map((b,y)=>{const k=i+y,C=b.toLowerCase()===E.toLowerCase();return o.jsx("div",{"data-testid":`font-picker-option-${b}`,onClick:()=>$(b),style:{position:"absolute",top:k*T,left:0,right:0,height:T,display:"flex",alignItems:"center",padding:"0 8px",cursor:"pointer",fontSize:12,background:C?j.accent:"transparent",color:C?j.onAccent:j.text},children:o.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:b})},b)})})}),u.length===0&&o.jsx("div",{style:{padding:"8px 12px",color:j.textMuted,fontSize:10,textAlign:"center"},children:"No matching fonts"})]})]})}function gt(t){const e=t.stops.map(s=>`${s.color} ${Math.round(s.position*100)}%`).join(", ");return t.type==="radial"?`radial-gradient(circle, ${e})`:`linear-gradient(${t.angle}deg, ${e})`}function xt(t){const e=t.match(/^linear-gradient\((.+)\)$/);if(e?.[1]!==void 0)return{type:"linear",inner:e[1]};const s=t.match(/^radial-gradient\((.+)\)$/);return s?.[1]!==void 0?{type:"radial",inner:s[1]}:null}function yt(t){const e=t.match(/^(\d+)deg\s*,\s*/);if(e)return{angle:Number.parseInt(e[1]??"180",10),colorPart:t.slice(e[0].length)};if(t.startsWith("to ")){const s=t.match(/^to\s+\w+\s*,\s*/);if(s)return{angle:180,colorPart:t.slice(s[0].length)}}return{angle:180,colorPart:t}}function bt(t){const e=t.split(/,\s*(?![^(]*\))/).map(s=>{const r=s.trim(),c=r.match(/\s+(\d+)%$/),a=c?Number.parseInt(c[1]??"0",10)/100:-1;return{color:c?r.slice(0,-c[0].length).trim():r,position:a}});for(let s=0;s<e.length;s++){const r=e[s];r&&r.position<0&&(r.position=e.length>1?s/(e.length-1):0)}return e}function Ft(t){if(!t||t==="none")return null;const e=xt(t);if(!e)return null;const{angle:s,colorPart:r}=e.type==="linear"?yt(e.inner):{angle:180,colorPart:e.inner},c=bt(r);return c.length<2?null:{type:e.type,angle:s,stops:c}}function _({stops:t,selected:e,onSelect:s,onMove:r,disabled:c,testIdPrefix:a}){return o.jsx("div",{style:{position:"relative",height:12,marginTop:2},children:t.map((h,l)=>o.jsx("div",{"data-testid":`${a}-${l}`,onClick:()=>s(l),onMouseDown:m=>{if(c)return;m.preventDefault(),s(l);const g=m.target.parentElement?.getBoundingClientRect(),p=n=>g?.width?Math.max(0,Math.min(1,(n-g.left)/g.width)):h.position,x=n=>r(l,p(n.clientX),!1),u=n=>{r(l,p(n.clientX),!0),window.removeEventListener("mousemove",x),window.removeEventListener("mouseup",u)};window.addEventListener("mousemove",x),window.addEventListener("mouseup",u)},style:{position:"absolute",left:`${h.position*100}%`,top:0,width:10,height:10,borderRadius:"50%",background:h.css,border:`2px solid ${l===e?j.accent:"#fff"}`,transform:"translateX(-50%)",cursor:c?"not-allowed":"pointer"}},l))})}function Pt({value:t,onChange:e,onChangeEnd:s,disabled:r,recentColors:c,onAddRecentColor:a,testId:h="gradient-editor"}){const[l,m]=w.useState(0),f=(i,d)=>{d?M({onChange:e,onChangeEnd:s},i):L({onChange:e},i)},g=(i,d,v)=>{const $=t.stops.map((E,b)=>b===i?{...E,...d}:E);f({...t,stops:$},v)},p=()=>{const i=t.stops[t.stops.length-1]?.position??1,d=t.stops[0]?.position??0,v=(i+d)/2,$=[...t.stops,{color:"#888888",position:v}].sort((E,b)=>E.position-b.position);m($.length-1),f({...t,stops:$},!0)},x=i=>{if(t.stops.length<=2)return;const d=t.stops.filter((v,$)=>$!==i);m(Math.min(l,d.length-1)),f({...t,stops:d},!0)},u=t.stops[l]?.color??"#000000",n=u.startsWith("#")?u:ot(u);return o.jsxs("div",{"data-testid":h,children:[o.jsxs("div",{style:{position:"relative",marginBottom:8},children:[o.jsx("div",{"data-testid":"gradient-preview",style:{height:20,borderRadius:j.radiusSmall,border:`1px solid ${j.border}`,background:gt(t)}}),o.jsx(_,{stops:t.stops.map(i=>({position:i.position,css:i.color})),selected:l,onSelect:m,onMove:(i,d,v)=>g(i,{position:d},v),disabled:r,testIdPrefix:"gradient-stop"})]}),o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[o.jsx(N,{testId:"gradient-selected-color",value:n,disabled:r,onChange:i=>g(l,{color:i},!1),onChangeEnd:i=>g(l,{color:i},!0),recentColors:c,onAddRecentColor:a}),o.jsxs("span",{style:{fontSize:9,color:j.textMuted},children:["Stop ",l+1]}),t.stops.length>2&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-label":"Remove gradient stop","data-testid":"gradient-remove-stop",onClick:()=>x(l),children:"×"}),o.jsx(S,{type:"button",variant:"ghost",size:"compact","data-testid":"gradient-add-stop",onClick:p,children:"+ stop"})]}),o.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[o.jsxs("div",{style:{display:"flex",gap:1,flex:1},children:[o.jsx(W,{testId:"gradient-type-linear",label:"Linear",active:t.type==="linear",disabled:r,onClick:()=>f({...t,type:"linear"},!0)}),o.jsx(W,{testId:"gradient-type-radial",label:"Radial",active:t.type==="radial",disabled:r,onClick:()=>f({...t,type:"radial"},!0)})]}),t.type==="linear"&&o.jsx(R,{testId:"gradient-angle",label:"°",value:t.angle,unit:"deg",disabled:r,onChange:i=>f({...t,angle:i},!1),onChangeEnd:i=>f({...t,angle:i},!0),style:{width:70}})]})]})}function Q(t){const e=s=>Math.round(Math.max(0,Math.min(1,s))*255).toString(16).padStart(2,"0");return`#${e(t.r)}${e(t.g)}${e(t.b)}`}function Z(t){return{r:Number.parseInt(t.slice(1,3),16)/255,g:Number.parseInt(t.slice(3,5),16)/255,b:Number.parseInt(t.slice(5,7),16)/255}}function D(t,e,s){if(t.length===0)return;if(e<=t[0].pos)return t[0].value;const r=t[t.length-1];if(e>=r.pos)return r.value;for(let c=0;c+1<t.length;c++){const a=t[c],h=t[c+1];if(e>=a.pos&&e<=h.pos){const l=h.pos>a.pos?(e-a.pos)/(h.pos-a.pos):0;return s(a.value,h.value,l)}}return r.value}const B=(t,e,s)=>t+(e-t)*s,tt=(t,e,s)=>({r:B(t.r,e.r,s),g:B(t.g,e.g,s),b:B(t.b,e.b,s)});function F(t,e,s){const r={...t[e],pos:s},c=[...t.filter((a,h)=>h!==e),r].sort((a,h)=>a.pos-h.pos);return{keys:c,index:c.indexOf(r)}}function Ot({value:t,onChange:e,onChangeEnd:s,disabled:r,testId:c="quarks-gradient"}){const[a,h]=w.useState({track:"color",i:0}),l=(n,i)=>{i?M({onChange:e,onChangeEnd:s},n):L({onChange:e},n)},m=n=>({...t,color:{...t.color,keys:n}}),f=n=>({...t,alpha:{...t.alpha,keys:n}}),p=[...new Set([...t.color.keys.map(n=>n.pos),...t.alpha.keys.map(n=>n.pos)])].sort((n,i)=>n-i).map(n=>{const i=D(t.color.keys,n,tt)??{r:1,g:1,b:1},d=D(t.alpha.keys,n,B)??1;return`rgba(${Math.round(i.r*255)},${Math.round(i.g*255)},${Math.round(i.b*255)},${Math.round(d*1e3)/1e3}) ${Math.round(n*100)}%`}).join(", "),x=t.color.keys[a.track==="color"?a.i:0],u=t.alpha.keys[a.track==="alpha"?a.i:0];return o.jsxs("div",{"data-testid":c,children:[o.jsx(_,{stops:t.alpha.keys.map(n=>{const i=Math.round(Math.max(0,Math.min(1,n.value))*255);return{position:n.pos,css:`rgb(${i},${i},${i})`}}),selected:a.track==="alpha"?a.i:-1,onSelect:n=>h({track:"alpha",i:n}),onMove:(n,i,d)=>{const{keys:v,index:$}=F(t.alpha.keys,n,i);h({track:"alpha",i:$}),l(f(v),d)},disabled:r,testIdPrefix:`${c}-alpha-stop`}),o.jsx("div",{"data-testid":`${c}-preview`,style:{height:20,borderRadius:j.radiusSmall,border:`1px solid ${j.border}`,backgroundImage:`linear-gradient(90deg, ${p}), repeating-linear-gradient(45deg, #777 0 5px, #aaa 5px 10px)`}}),o.jsx(_,{stops:t.color.keys.map(n=>({position:n.pos,css:Q(n.value)})),selected:a.track==="color"?a.i:-1,onSelect:n=>h({track:"color",i:n}),onMove:(n,i,d)=>{const{keys:v,index:$}=F(t.color.keys,n,i);h({track:"color",i:$}),l(m(v),d)},disabled:r,testIdPrefix:`${c}-color-stop`}),a.track==="color"&&x&&o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:4},children:[o.jsx(N,{testId:`${c}-color-swatch`,value:Q(x.value),disabled:r,onChange:n=>l(m(t.color.keys.map((i,d)=>d===a.i?{...i,value:Z(n)}:i)),!1),onChangeEnd:n=>l(m(t.color.keys.map((i,d)=>d===a.i?{...i,value:Z(n)}:i)),!0)}),o.jsxs("span",{style:{fontSize:9,color:j.textMuted},children:["Color ",a.i+1,"/",t.color.keys.length]}),t.color.keys.length>2&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-label":"Remove color stop","data-testid":`${c}-remove-color-stop`,onClick:()=>{const n=t.color.keys.filter((i,d)=>d!==a.i);h({track:"color",i:Math.min(a.i,n.length-1)}),l(m(n),!0)},children:"×"}),o.jsx(S,{type:"button",variant:"ghost",size:"compact","data-testid":`${c}-add-color-stop`,onClick:()=>{const i=D(t.color.keys,.5,tt)??{r:1,g:1,b:1},{keys:d,index:v}=F([...t.color.keys,{value:i,pos:.5}],t.color.keys.length,.5);h({track:"color",i:v}),l(m(d),!0)},children:"+ stop"})]}),a.track==="alpha"&&u&&o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:4},children:[o.jsx(lt,{label:"a",step:.05,testId:`${c}-alpha-value`,value:Math.round(u.value*1e3)/1e3,onChange:n=>l(f(t.alpha.keys.map((i,d)=>d===a.i?{...i,value:Math.max(0,Math.min(1,n))}:i)),!1),onChangeEnd:n=>l(f(t.alpha.keys.map((i,d)=>d===a.i?{...i,value:Math.max(0,Math.min(1,n))}:i)),!0)}),o.jsxs("span",{style:{fontSize:9,color:j.textMuted},children:["Alpha ",a.i+1,"/",t.alpha.keys.length]}),t.alpha.keys.length>2&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-label":"Remove alpha stop","data-testid":`${c}-remove-alpha-stop`,onClick:()=>{const n=t.alpha.keys.filter((i,d)=>d!==a.i);h({track:"alpha",i:Math.min(a.i,n.length-1)}),l(f(n),!0)},children:"×"}),o.jsx(S,{type:"button",variant:"ghost",size:"compact","data-testid":`${c}-add-alpha-stop`,onClick:()=>{const i=D(t.alpha.keys,.5,B)??1,{keys:d,index:v}=F([...t.alpha.keys,{value:i,pos:.5}],t.alpha.keys.length,.5);h({track:"alpha",i:v}),l(f(d),!0)},children:"+ stop"})]})]})}const jt={x:0,y:4,blur:8,spread:0,color:"rgba(0,0,0,0.25)",inset:!1,enabled:!0},vt={x:0,y:2,blur:4,spread:0,color:"rgba(0,0,0,0.3)",inset:!1,enabled:!0};function wt(t,e){return(e?[t.inset?"inset":"",`${t.x}px`,`${t.y}px`,`${t.blur}px`,`${t.spread}px`,t.color]:[`${t.x}px`,`${t.y}px`,`${t.blur}px`,t.color]).filter(Boolean).join(" ")}function _t(t,e=!0){const s=t.filter(r=>r.enabled);return s.length===0?"none":s.map(r=>wt(r,e)).join(", ")}function $t(t){const e=t.match(/(rgba?\([^)]+\))/);if(e?.[1])return{color:e[1],nums:t.replace(e[1],"").trim()};const s=t.match(/(#[0-9a-fA-F]{3,8})/);return s?.[1]?{color:s[1],nums:t.replace(s[1],"").trim()}:{color:"#000000",nums:t}}function kt(t,e){if(!t||t==="none")return null;const s=t.trim(),r=e&&s.startsWith("inset"),c=r?s.slice(5).trim():s,{color:a,nums:h}=$t(c),l=h.split(/\s+/).map(m=>Number.parseFloat(m)).filter(m=>!Number.isNaN(m));return e?{inset:r,x:l[0]??0,y:l[1]??0,blur:l[2]??0,spread:l[3]??0,color:a}:l.length<2?null:{inset:!1,x:l[0]??0,y:l[1]??0,blur:l[2]??0,spread:0,color:a}}function Ht(t,e=!0){if(!t||t==="none")return[];const s=t.split(/,\s*(?![^(]*\))/),r=[];for(const c of s){const a=kt(c.trim(),e);a&&r.push({...a,enabled:!0})}return r}function nt({value:t,onChange:e,onChangeEnd:s,disabled:r,withSpreadInset:c=!0,label:a="Shadow",testId:h="shadow-editor",recentColors:l,onAddRecentColor:m}){const f=(u,n)=>{n?M({onChange:e,onChangeEnd:s},u):L({onChange:e},u)},g=(u,n,i=!1)=>{f(t.map((d,v)=>v===u?{...d,...n}:d),i)},p=u=>{f(t.filter((n,i)=>i!==u),!0)},x=()=>{f([...t,{...c?jt:vt}],!0)};return o.jsxs("div",{"data-testid":h,children:[o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:t.length>0?4:0},children:[o.jsx("span",{style:{fontSize:9,color:j.textMuted},children:a}),o.jsx("div",{style:{flex:1}}),!r&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","data-testid":`${h}-add`,onClick:x,children:"+"})]}),t.map((u,n)=>{const i=u.color.startsWith("#")?u.color:ot(u.color);return o.jsxs("div",{"data-testid":`${h}-row-${n}`,style:{marginBottom:6,padding:"4px 0",borderBottom:`1px solid ${j.border}`},children:[o.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:4},children:[o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-pressed":u.enabled,"data-testid":`${h}-toggle-${n}`,onClick:()=>{r||g(n,{enabled:!u.enabled},!0)},children:u.enabled?"●":"○"}),o.jsx(N,{testId:`${h}-color-${n}`,value:i,disabled:r,onChange:d=>g(n,{color:d}),onChangeEnd:d=>g(n,{color:d},!0),recentColors:l,onAddRecentColor:m}),c&&o.jsxs("label",{style:{display:"flex",alignItems:"center",gap:2,fontSize:8,color:j.textMuted,cursor:"pointer"},children:[o.jsx(ct,{className:"volter-checkbox","data-testid":`${h}-inset-${n}`,checked:u.inset,disabled:r,onChange:d=>g(n,{inset:d.target.checked},!0)}),"in"]}),o.jsx("div",{style:{flex:1}}),!r&&o.jsx(S,{type:"button",variant:"ghost",size:"compact","aria-label":`Remove ${a.toLowerCase()} ${n+1}`,"data-testid":`${h}-remove-${n}`,onClick:()=>p(n),children:"×"})]}),u.enabled&&o.jsxs("div",{style:{display:"flex",gap:4},children:[o.jsx(R,{label:"X",value:u.x,disabled:r,onChange:d=>g(n,{x:d}),onChangeEnd:d=>g(n,{x:d},!0),style:{flex:1}}),o.jsx(R,{label:"Y",value:u.y,disabled:r,onChange:d=>g(n,{y:d}),onChangeEnd:d=>g(n,{y:d},!0),style:{flex:1}}),o.jsx(R,{label:"B",value:u.blur,min:0,disabled:r,onChange:d=>g(n,{blur:Math.max(0,d)}),onChangeEnd:d=>g(n,{blur:Math.max(0,d)},!0),style:{flex:1}}),c&&o.jsx(R,{label:"S",value:u.spread,disabled:r,onChange:d=>g(n,{spread:d}),onChangeEnd:d=>g(n,{spread:d},!0),style:{flex:1}})]})]},n)})]})}function Gt(t){return o.jsx(nt,{...t,withSpreadInset:!0,testId:"box-shadow-editor",label:t.label??"Shadow"})}function Ut(t){return o.jsx(nt,{...t,withSpreadInset:!1,testId:"text-shadow-editor",label:t.label??"Text Shadow"})}export{Lt as A,Tt as B,jt as D,At as F,Pt as G,Ot as Q,R as S,Ut as T,zt as a,Bt as b,gt as c,Nt as d,Ht as e,Gt as f,_t as g,Dt as h,ht as i,mt as j,It as k,vt as l,_ as m,nt as n,ft as o,Ft as p,ut as u};
@@ -1 +1 @@
1
- import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{b5 as m,al as n,b6 as x,b7 as C,b8 as $,aC as V}from"./index-nySnA9Ug.js";import{r as f}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{J as E,C as N,c as A}from"./JsonAssetDocument-B6gQHP_k.js";import{AudioViewer as H}from"./AudioViewer-APY_kwxf.js";import{ImageViewer as R}from"./ImageViewer-DwbhIBCP.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function k(t){const e=(t.split(/[?#]/,1)[0]??"").replace(/^\//,"");return e.startsWith("src/")&&/\.(?:[cm]?[jt]sx?)$/.test(e)}function j(t){const e=C(t);return e.editor==="model"?"model":e.editor==="image"?"image":e.editor==="audio"?"audio":e.editor==="data"?"json":e.editor==="environment"?"environment":e.format==="cube"?"lut":e.format==="glsl"||e.format==="vert"||e.format==="frag"?"shader":k(t)?"module":e.editor==="source"&&e.previewable?"text":"binary"}function b({documentId:t,assetPath:e,active:i=!0}){const[o,l]=f.useState(null),[c,u]=f.useState(null),y=e.split("/").pop()??e;return f.useEffect(()=>{let a=!1;l(null),u(null);const w=e.replace(/^\//,"");let d=0;async function h(){const g=++d;try{const s=`/__editor/source-file?path=${encodeURIComponent(w)}`,S=await fetch(s,{cache:"no-store"}).then(p=>{if(!p.ok)throw new Error(`HTTP ${p.status}`);return p.text()});!a&&g===d&&(l(S),u(null))}catch(s){!a&&g===d&&u(s instanceof Error?s.message:String(s))}}const v=$();return h(),()=>{a=!0,v()}},[e]),r.jsx(m,{documentId:t,active:i,type:"source",title:y,sections:[],status:`source · ${e}`,fill:!0,children:r.jsx("div",{style:{padding:12,height:"100%",minHeight:0,display:"flex",flexDirection:"column",gap:8},children:r.jsx("div",{style:{padding:8,flex:1,minHeight:0,display:"flex",overflow:"hidden",background:n.surface.inset,border:`1px solid ${n.boundary.default}`,borderRadius:n.shape.small},children:c!==null||o===null?r.jsx("div",{style:{fontFamily:n.typography.mono,fontSize:11,lineHeight:1.5,color:c?n.semantic.danger:n.content.muted,padding:4},children:c??"Loading…"}):r.jsx(N,{value:o,followChanges:!0,language:A(e),fontSize:11,maxHeight:"100%",ariaLabel:`Source of ${e}`})})})})}function z({documentId:t,assetPath:e,active:i}){const o=e.split("/").pop()??e;return r.jsx(m,{documentId:t,active:i,type:"source",title:o,sections:[],status:`no viewer · ${e}`,children:r.jsxs("div",{style:{padding:16,color:n.content.muted,fontSize:12},children:["No editor package in this project renders ",o,"; the file is available in the project and stays selectable and referenceable."]})})}function K({documentId:t,assetPath:e,active:i=!0}){switch(j(e)){case"model":case"environment":case"lut":case"shader":{const o=j(e);return r.jsx(x,{route:o,documentId:t,assetPath:e,displayName:e.split("/").pop()??e,active:i,whenUnregistered:r.jsx(z,{documentId:t,assetPath:e,active:i})})}case"image":return r.jsx(R,{assetPath:e});case"audio":return r.jsx(H,{assetPath:e});case"json":return r.jsx(E,{documentId:t,assetPath:e,displayName:e.split("/").pop()??e,active:i,sections:[],status:`json · ${e}`});case"module":{const o=V()?.rootPath,l=r.jsx(b,{documentId:t,assetPath:e,active:i});return o?r.jsx(x,{route:"module",documentId:t,assetPath:e,projectRoot:o,displayName:e.split("/").pop()??e,active:i,fallback:l,whenUnregistered:l}):l}case"text":return r.jsx(b,{documentId:t,assetPath:e,active:i});case"binary":return r.jsx(m,{documentId:t,active:i,type:"binary source",title:e.split("/").pop()??e,sections:[],status:`binary · ${e}`,children:r.jsxs("div",{style:{padding:16,color:n.content.muted,fontSize:12},children:[r.jsx("div",{style:{color:n.content.primary,fontWeight:600,marginBottom:6},children:e.split("/").pop()}),"This binary source is available in the project, but it has no safe in-editor renderer. Its file remains selectable and referenceable without being misidentified as another format."]})})}}export{K as SourceAssetViewer,j as sourceAssetRoute};
1
+ import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{b5 as m,al as n,b6 as x,b7 as C,b8 as $,aC as V}from"./index-C6b9kkV0.js";import{r as f}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{J as E,C as N,c as A}from"./JsonAssetDocument-CI-VEvHK.js";import{AudioViewer as H}from"./AudioViewer-BNZQHDg4.js";import{ImageViewer as R}from"./ImageViewer-B_EV4B-Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function k(t){const e=(t.split(/[?#]/,1)[0]??"").replace(/^\//,"");return e.startsWith("src/")&&/\.(?:[cm]?[jt]sx?)$/.test(e)}function j(t){const e=C(t);return e.editor==="model"?"model":e.editor==="image"?"image":e.editor==="audio"?"audio":e.editor==="data"?"json":e.editor==="environment"?"environment":e.format==="cube"?"lut":e.format==="glsl"||e.format==="vert"||e.format==="frag"?"shader":k(t)?"module":e.editor==="source"&&e.previewable?"text":"binary"}function b({documentId:t,assetPath:e,active:i=!0}){const[o,l]=f.useState(null),[c,u]=f.useState(null),y=e.split("/").pop()??e;return f.useEffect(()=>{let a=!1;l(null),u(null);const w=e.replace(/^\//,"");let d=0;async function h(){const g=++d;try{const s=`/__editor/source-file?path=${encodeURIComponent(w)}`,S=await fetch(s,{cache:"no-store"}).then(p=>{if(!p.ok)throw new Error(`HTTP ${p.status}`);return p.text()});!a&&g===d&&(l(S),u(null))}catch(s){!a&&g===d&&u(s instanceof Error?s.message:String(s))}}const v=$();return h(),()=>{a=!0,v()}},[e]),r.jsx(m,{documentId:t,active:i,type:"source",title:y,sections:[],status:`source · ${e}`,fill:!0,children:r.jsx("div",{style:{padding:12,height:"100%",minHeight:0,display:"flex",flexDirection:"column",gap:8},children:r.jsx("div",{style:{padding:8,flex:1,minHeight:0,display:"flex",overflow:"hidden",background:n.surface.inset,border:`1px solid ${n.boundary.default}`,borderRadius:n.shape.small},children:c!==null||o===null?r.jsx("div",{style:{fontFamily:n.typography.mono,fontSize:11,lineHeight:1.5,color:c?n.semantic.danger:n.content.muted,padding:4},children:c??"Loading…"}):r.jsx(N,{value:o,followChanges:!0,language:A(e),fontSize:11,maxHeight:"100%",ariaLabel:`Source of ${e}`})})})})}function z({documentId:t,assetPath:e,active:i}){const o=e.split("/").pop()??e;return r.jsx(m,{documentId:t,active:i,type:"source",title:o,sections:[],status:`no viewer · ${e}`,children:r.jsxs("div",{style:{padding:16,color:n.content.muted,fontSize:12},children:["No editor package in this project renders ",o,"; the file is available in the project and stays selectable and referenceable."]})})}function K({documentId:t,assetPath:e,active:i=!0}){switch(j(e)){case"model":case"environment":case"lut":case"shader":{const o=j(e);return r.jsx(x,{route:o,documentId:t,assetPath:e,displayName:e.split("/").pop()??e,active:i,whenUnregistered:r.jsx(z,{documentId:t,assetPath:e,active:i})})}case"image":return r.jsx(R,{assetPath:e});case"audio":return r.jsx(H,{assetPath:e});case"json":return r.jsx(E,{documentId:t,assetPath:e,displayName:e.split("/").pop()??e,active:i,sections:[],status:`json · ${e}`});case"module":{const o=V()?.rootPath,l=r.jsx(b,{documentId:t,assetPath:e,active:i});return o?r.jsx(x,{route:"module",documentId:t,assetPath:e,projectRoot:o,displayName:e.split("/").pop()??e,active:i,fallback:l,whenUnregistered:l}):l}case"text":return r.jsx(b,{documentId:t,assetPath:e,active:i});case"binary":return r.jsx(m,{documentId:t,active:i,type:"binary source",title:e.split("/").pop()??e,sections:[],status:`binary · ${e}`,children:r.jsxs("div",{style:{padding:16,color:n.content.muted,fontSize:12},children:[r.jsx("div",{style:{color:n.content.primary,fontWeight:600,marginBottom:6},children:e.split("/").pop()}),"This binary source is available in the project, but it has no safe in-editor renderer. Its file remains selectable and referenceable without being misidentified as another format."]})})}}export{K as SourceAssetViewer,j as sourceAssetRoute};
@@ -0,0 +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-B5kYo-6B.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-C6b9kkV0.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-DcbczB-I.js","assets/output-pass-HurwNl0G.js","assets/Pass-D1MRT672.js","assets/editor-layers-_Gcy52mS.js","assets/workspace-arrangement-BoYqL0C2.js","assets/user-data-DKfhN35w.js","assets/entity-object-hOX0jkMo.js","assets/three-contract-Dkt6PmWY.js","assets/Toolbar-BCviZ4hw.js","assets/transform-mode-request-05CQoTKg.js","assets/three-state-CvU5OXTi.js","assets/standard-viewport-dressing-DSi6qJFC.js","assets/content-bounds-CKyqwWXn.js","assets/hierarchy-marks-DYUvG4lt.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-YGBUQAWW.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-D1CaaJD4.js","assets/root-stacking-BEd9ZvxC.js","assets/model-thumbnail-oBpbFAcj.js","assets/studio-environment-DPyvNCMf.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/object3d-document-session-registry--r1BseN3.js","assets/component-instance-root-DsmCGX40.js","assets/viewport-door-BrYqbiwp.js","assets/asset-preview-DVSFT7SS.js","assets/bitmap-label-Ct4k6ehY.js","assets/model-inspection-Ce70HeHy.js","assets/three-viewport-presentation-5zDCaTKw.js","assets/clip-planes-CnAI6DZn.js","assets/three-CJgQeY1W.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-DPK5z1LB.js","assets/source-object3d-authoring-adapter-Bdq-N_ih.js","assets/three-projection-core-BjkdjllS.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/transport-strip-B0VIsVkq.js","assets/viewport-surface-status-BCnAK4lN.js","assets/stage-overlay-set-BKAbHMto.js","assets/TransientHint-xKLY44J3.js","assets/ViewportShadingMenu-2cP_H7Ma.js","assets/stage-keyboard-CNNJiLBS.js","assets/camera-authoring-DYjhU5Zp.js","assets/stage-presence-markers-J7TV-MHA.js","assets/collaboration-presence-CCL71T0o.js"])))=>i.map(i=>d[i]);
2
+ import{kQ as Tr,ln as wr,kX as Ke,Z as vs,eX as qn,lt as Un,_ as st,G as Xn,lu as Yn,j1 as en,bw as et,aM as He,a7 as Se,bz as Kn,bN as Zn,a6 as Ze,lv as Qn,bP as Jn,de as ei,aL as ws,df as bs,lw as tn,lx as ti,iX as ri,bq as Pr,br as ys,bs as tt,al as rt,er as si,ly as ni,lz as ii,a8 as ye,ak as oi,lA as ai,lB as ci,lC as li,lD as ui,lE as hi,hl as di,lF as pi,b5 as fi,lG as rn,aQ as mi,gM as gi,lH as Ss,lI as xs,lJ as Ps,b1 as Cs,kP as ks,fC as Es,lK as vi,F as wi,bu as bi,bt as Ms,lL as yi,bK as Si,j4 as xi,gm as Os,lM as Pi,lN as Ci,lO as ki,hg as Ei,dI as Mi,kY as Oi,kO as Ri,fX as ji,gg as Ti,lP as Rs,B as Ai,lQ as Vi,bR as Li}from"./index-C6b9kkV0.js";import{a as p}from"./jsx-runtime-DPjLkJKQ.js";import{t as Cr,a as Fi}from"./three-state-CvU5OXTi.js";import{i as B,b as Di,a as Hi,w as Bi,c as zi,s as js}from"./standard-viewport-dressing-DSi6qJFC.js";import{r as m}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a as kr}from"./content-bounds-CKyqwWXn.js";import{EDITOR_LAYER as sn,isInEditorOwnedSubtree as Ts}from"./editor-layers-_Gcy52mS.js";import{createStandardEnvironment as _i}from"./environment-Dg-YaLsA.js";import{a as Wi}from"./preview-renderer-BrYNFV1p.js";import{s as nn}from"./user-data-DKfhN35w.js";import{s as Ii,a as Ni}from"./live-mixers-B-bwLZ7c.js";import{n as $i,bh as Nt,N as on,M as an,dg as cn,df as ln,fo as F,_ as be,d5 as Er,d9 as Gi,L as As,I as Mr,ez as qi,dp as Or,cj as Rr,em as Ui,cp as Xi,c0 as Yi,aO as Ki,bX as Zi,fx as Vs,bi as Qi,eu as Ji,cg as we,T as eo,ej as un,el as hn,A as to,d7 as ro,eW as Ls,fd as mt,e6 as Fs,cm as Ds}from"./three.core-3arARmh6.js";import{l as so,w as no}from"./live-gesture-lock-DJbrjOqf.js";import{v as io}from"./output-pass-HurwNl0G.js";import{V as oo,a as ao}from"./three-integration-YGBUQAWW.js";import{a as Be}from"./three-contract-Dkt6PmWY.js";import{d as $t,f as co}from"./model-inspection-Ce70HeHy.js";import{c as lo,p as It,d as Hs,i as Bs,r as uo,b as ho,a as po,t as zs,s as _s,C as fo,e as mo,f as go,E as vo}from"./three-viewport-presentation-5zDCaTKw.js";import{s as jr}from"./workspace-arrangement-BoYqL0C2.js";import{a as wo,b as bo,L as yo}from"./LineSegments2-DN9pUfWA.js";import{s as So,o as xo,a as Po,b as Co}from"./object3d-document-session-registry--r1BseN3.js";import{S as ko}from"./source-object3d-authoring-adapter-Bdq-N_ih.js";import{s as Eo,i as br}from"./editor-presentation-activity-CqJH4G9t.js";import{r as Ws,c as Is}from"./viewport-door-BrYqbiwp.js";import{T as Mo}from"./transport-strip-B0VIsVkq.js";import{V as Oo,O as Ro}from"./viewport-surface-status-BCnAK4lN.js";import{t as dn}from"./editor-shell-store-DcbczB-I.js";const pn=30;function fn(n,e,t){return n<e?e:n>t?t:n}function jo(n,e){const t=n.animations;if(t.length===0)return null;const s=new $i(n);let i=t[0];if(!i)return null;const a=o=>{s.stopAllAction();const l=s.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:pn}),seek:o=>{s.setTime(fn(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(),s.stopAllAction(),s.uncacheRoot(n)}}function To(n,e){const t=Ni(n);if(!t)return null;let s=t.clips.values().next().value;if(!s)return null;const i=c=>{t.mixer.stopAllAction();const o=t.mixer.clipAction(c);o.paused=!1,o.play(),s=c};return e.attach({id:n.uuid,label:n.name||s.name||"Animation",range:()=>({start:0,end:s?.duration??0,fps:pn}),seek:c=>{t.mixer.setTime(fn(c,0,s?.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 Ns(n,e,t={}){const s=new Map,i=()=>{const o=new Set;(typeof n=="function"?n():n)?.traverse(d=>{if(s.has(d.uuid)){o.add(d.uuid);return}const C=To(d,e)??jo(d,e);C&&(s.set(d.uuid,C),o.add(d.uuid))});for(const[d,C]of[...s])o.has(d)||(C(),s.delete(d))};i();const a=t.rescanOnLiveMixers,c=a?Ii(()=>{a()&&i()}):()=>{};return{refresh:i,dispose:()=>{c();for(const o of s.values())o();s.clear()}}}const je=()=>globalThis.performance?.now()??Date.now();function Ao(n,e){return n.length===0?0:n[Math.min(n.length-1,Math.floor((n.length-1)*e))]??0}function Vo(n=!1){const e=new Set,t=[],s=new Map,i=new Map,a=new Map;let c=[],o=[],l=n,d=!1,C=!1,w=0,P=0,x=0;const N=[];let z=0,M=0,k={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},$={enabled:l,recording:C,fps:0,cpuMs:0,p95Ms:0,p99Ms:0,frames:[],phases:[],systems:[],components:[],render:k};function Q(){const y=t.at(-1),U=t.slice();let _;const Y=D=>(_??=U.map(Z=>Z.intervalMs).filter(Z=>Z>0).sort((Z,A)=>Z-A),Ao(_,D));$={enabled:l,recording:C,fps:y?.intervalMs?1e3/y.intervalMs:0,cpuMs:y?.cpuMs??0,get p95Ms(){return Y(.95)},get p99Ms(){return Y(.99)},frames:U,phases:y?.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(y){l!==y&&(l=y,y&&!d&&(x=0),Q())},get telemetryEnabled(){return d},set telemetryEnabled(y){if(d===y)return;const U=!l&&!d;d=y,y&&U&&(x=0),Q()},get recording(){return C},startRecording(){const y=!l&&!d;l=!0,y&&(x=0),C=!0,t.length=0,Q()},stopRecording(){C=!1,Q()},clear(){t.length=0,Q()},beginFrame(){!l&&!d||(s.clear(),i.clear(),a.clear(),c=[],o=[],N.length=0,k={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},P=je())},beginPhase(){l&&N.push(je())},endPhase(y){if(!l)return;const U=N.pop()??P,_=je()-U,Y=s.get(y);s.set(y,{ms:(Y?.ms??0)+_,startMs:Y?.startMs??U-P}),C&&performance.measure(`volter.phase.${y}`,{start:U,duration:_})},systemObserver:{beginSystem(){l&&(z=je())},endSystem(y,U,_){if(!l)return;const Y=je(),D=`${y} / ${U} / ${_}`;i.set(D,(i.get(D)??0)+Y-z),c.push({name:D,phase:U,startMs:z-P,ms:Y-z})}},beginComponent(){C&&(M=je())},endComponent(y,U=""){if(!C)return;const _=je();a.set(y,(a.get(y)??0)+_-M),o.push({name:y,phase:U,startMs:M-P,ms:_-M})},reportRender(y){l&&(k={gpuMs:y.gpuMs??k.gpuMs,drawCalls:k.drawCalls+y.drawCalls,triangles:k.triangles+y.triangles,geometries:k.geometries+y.geometries,textures:k.textures+y.textures,renderPasses:y.renderPasses===void 0?k.renderPasses:(k.renderPasses??0)+y.renderPasses})},endFrame(){if(!l&&!d)return;const y=je(),U=x===0?0:P-x;x=P;const _={id:++w,timestamp:y,intervalMs:U,cpuMs:y-P,phases:[...s].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(_),t.length>600&&t.splice(0,t.length-600),C&&performance.measure("volter.frame",{start:P,duration:_.cpuMs}),Q()},subscribe(y){return e.add(y),()=>{e.delete(y)}},getSnapshot(){return $},exportJSON(){return JSON.stringify({version:2,capturedAt:new Date().toISOString(),frames:t},null,2)}}}class Lo extends Nt{constructor(e,t){super(),this.bones=e;const s=new Set;for(const o of e){const l=o.parent;l?.isBone&&this.addSegment(l,o,s);for(const d of o.children)d.isBone&&this.addSegment(o,d,s)}this.linePositions=new Float32Array(Math.max(this.segments.length*6,6));const i=new wo;i.setPositions(this.linePositions),this.lineMaterial=new bo({color:t,linewidth:5,worldUnits:!1,depthTest:!1,depthWrite:!1,toneMapped:!1,alphaToCoverage:!0}),this.lines=new yo(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 on;a.setAttribute("position",new an(this.pointPositions,3));const c=new cn({color:t,size:11,sizeAttenuation:!1,depthTest:!1,depthWrite:!1,toneMapped:!1});this.points=new ln(a,c),this.points.frustumCulled=!1,this.points.renderOrder=1002,this.add(this.points),this.name="__object3d_document_bone_selection",jr(this,"editorHelper",!0),this.traverse(o=>o.layers.set(sn)),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 s=this.points.geometry.getAttribute("position");s&&(s.needsUpdate=!0)}dispose(){this.lines.geometry.dispose(),this.lineMaterial.dispose(),this.points.geometry.dispose(),this.points.material.dispose()}addSegment(e,t,s){const i=`${e.uuid}:${t.uuid}`;s.has(i)||(s.add(i),this.segments.push([e,t]))}}const Fo="skeletons",yr=new be(58879),Sr=new be(16756736);function Do(n){const e=n.geometry.getAttribute("color");for(let s=0;s<e.count;s+=2)e.setXYZ(s,yr.r,yr.g,yr.b),s+1<e.count&&e.setXYZ(s+1,Sr.r,Sr.g,Sr.b);e.needsUpdate=!0,n.renderOrder=999;const t=n.material;t.depthTest=!1,t.depthWrite=!1,t.toneMapped=!1,jr(n,"editorHelper",!0),jr(n,"editorHelperType",Fo),n.traverse(s=>s.layers.set(sn))}const Ho=1,Bo=700,zo=.001,_o=Math.PI-.001,Wo=n=>n<.5?4*n*n*n:1-(-2*n+2)**3/2,Io=n=>n;function Qe(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}const $s={mode:"solid",background:"neutral",projection:"perspective",skeleton:!1,bounds:!1},Gs=1119773;class No{constructor(e,t,s,i,a,c,o=new be(2106410),l=null){this.documentId=e,this.root=t,this.scene=s,this.renderer=i,this.viewport=a,this.authoring=c,this.neutralBackground=o,this.frameBox=l,this.unsubscribeSelectionTheme=Tr(i.domElement,this.syncSelectionTheme),a.orbitControls.addEventListener("start",this.cancelLookForHuman),this.unsubscribeRotateStart=a.onRotateStart(this.autoPerspective),this.unsubscribeAxisView=a.onAxisView(this.axisView)}profiler=Vo();shading=new oo;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 Er;captureAspect=null;cameraOverride=null;cameraViewSource=null;through=null;leaving=!1;viewMemo=null;throughPerspective=new Gi;throughOrthographic=new Er;beforeRender=null;state=$s;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),s=new F(0,1,0).applyQuaternion(e.quaternion);$t(t,s)!==null&&this.setProjection("perspective")};replaceContent(e,t){B(),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 As(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&&lo(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 s=new Mr;let i=!1;for(const a of t){const c=this.authoring?Be(this.authoring.hierarchy,a):null;if(!c)continue;const o=kr(c);o.isEmpty()||(s.union(o),i=!0)}if(i)return s}return this.frameBox&&!this.frameBox.isEmpty()?this.frameBox:kr(this.root)}frame(e=1,t="selection"){this.leaveCameraView(!1);const s=this.resolveFrameBounds(t);if(s.isEmpty()){let l=0,d=0;return this.root.traverse(C=>{const w=C.geometry;w&&(l+=1,d+=w.getAttribute("position")?.count??0)}),vs.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=s.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(s,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))),Wo)}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))),Io)}looking(){return this.flight!==null}launchFlight(e,t,s,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:s,ease:i,elapsed:0,theta:o.theta,phi:o.phi,settle:null};this.flight=d;const C=new Promise(w=>{d.settle=w});return this.applyFlightPose(d,0),s<=0&&this.settleFlight(null),C}applyFlightPose(e,t){const s=e.ease(t);e.theta=e.startTheta+e.deltaTheta*s,e.phi=Math.min(_o,Math.max(zo,e.startPhi+e.deltaPhi*s));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 s=Math.max(1e-4,t.radius*.001);if(this.viewport.camera.position.distanceToSquared(this.flightPose)>s*s){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 s={completed:e===null,azimuth:t.theta,elevation:Math.PI/2-t.phi,seconds:Math.min(t.elapsed,t.duration)};t.settle?.(e===null?s:{...s,cancelledBy:e})}select(e){B(),this.authoring&&qn(this.authoring,[...e])}selection(){return[...this.authoring?.selection?.get()??[]]}idForObject(e){return this.authoring?.hierarchy.idForObject3D?.(e)??null}syncSelectionPresentation(){B();const e=(this.authoring?.selection?.get()??[]).map(i=>this.authoring?Be(this.authoring.hierarchy,i):null).filter(i=>i!==null);if(this.selectedObjects=e,this.selectionOutline&&(Hs(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),s=t.map(i=>i.uuid).join("\0");s!==this.boneSelectionSignature&&(this.boneSelectionSignature=s,this.clearBoneSelectionHighlight(),t.length>0&&(this.boneSelectionHighlight=new Lo(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(s=>this.authoring?Be(this.authoring.hierarchy,s):null).filter(s=>s!==null);return t.length===0?!1:t.every(s=>s.isBone)?(this.frameBones(t),!0):(this.viewport.focusOnMultiple(t),!0)}setViewPreset(e,t="bounds"){B(),this.leaveCameraView(!1),this.settleFlight("superseded");const s=co(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,s)}const c=i.clone().addScaledVector(s,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,s){B(),this.leaveCameraView(!1),this.settleFlight("superseded"),this.viewport.setPose(e,t,s)}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 s=this.renderer.domElement,i=this.captureAspect?{width:this.captureAspect,height:1}:{width:s.clientWidth,height:s.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 vs.warn("camera view: No active camera — the scene has no camera to look through","document"),!1;B(),this.settleFlight("superseded");const s=this.viewport,i=s.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:s.camera.position.clone(),target:s.orbitControls.target.clone(),up:s.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 s=this.cameraView(),i=this.viewport.orbitControls,a=this.viewport.camera;if(s){const M=new F(...s.position),k=new Or(...s.quaternion),$=e.left.position.distanceTo(e.left.target);a.up.set(0,1,0).applyQuaternion(k),a.position.copy(M),a.quaternion.copy(k),i.target.copy(M).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=M=>({position:a.position.toArray(),quaternion:a.quaternion.toArray(),final:M});let C=!1,w=null,P=!1;const x=M=>{if(C){w={...M,final:M.final||(w?.final??!1)};return}C=!0,w=null,Promise.resolve(t.setPose(l,M.position,M.quaternion,M.final)).catch(()=>{}).finally(()=>{C=!1,w&&x(w)})},N=()=>{P=!0,B(),this.notify(),x(d(!1))},z=()=>{P&&(P=!1,x(d(!0)))};i.addEventListener("change",N),i.addEventListener("end",z),e.release=()=>{z(),i.removeEventListener("change",N),i.removeEventListener("end",z),i.enabled=c,i.enableDamping=o}}this.viewMemo=null,B(),this.notify()}}cameraViewZoom(){return this.through?.zoom??null}setCameraViewZoom(e){const t=this.through,s=this.cameraViewSource;!t||!s||!Number.isFinite(e)||e<=0||(t.zoom=Math.min(s.zoom.max,Math.max(s.zoom.min,e)),B(),this.notify())}zoomCameraView(e){this.through&&this.setCameraViewZoom(this.through.zoom*e)}panCameraView(e,t){const s=this.through,i=this.cameraViewSource;if(!s||!i)return;const[a,c]=i.pan(s.offset,s.zoom,e,t);s.offset=[a,c],B(),this.notify()}leaveCameraView(e){const t=this.through;if(!t)return;const s=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(s){const a=t.left.position.distanceTo(t.left.target),c=new F(...s.position),o=new Or(...s.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,C=wr().autoPerspective&&d?"perspective":t.left.projection;this.state={...this.state,projection:C}}i.camera.lookAt(i.orbitControls.target),i.orbitControls.update(),B(),this.notify()}throughCamera(e){const{left:t,right:s,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:s,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=Rr.radToDeg(2*Math.atan((i-a)/2)),o.aspect=(s-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,s*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,s=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 C=o.ctrlKey||o.metaKey||o.shiftKey;if(o.button===1&&(o.ctrlKey||o.metaKey)&&d===we.ROTATE?d=we.DOLLY:C&&d===we.ROTATE?d=we.PAN:C&&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 P=o.clientX,x=o.clientY;const N=this.through?.zoom??1,z=Math.max(5+o.clientY-w.top,1),M=$=>{if(d===we.PAN){this.panCameraView(($.clientX-P)/Math.max(w.width,1),($.clientY-x)/Math.max(w.height,1)),P=$.clientX,x=$.clientY;return}const Q=Math.max(.01,2*((5+$.clientY-w.top)/z-1)+1);this.setCameraViewZoom(N/Q)},k=()=>{window.removeEventListener("pointermove",M),window.removeEventListener("pointerup",k),window.removeEventListener("pointercancel",k)};window.addEventListener("pointermove",M),window.addEventListener("pointerup",k),window.addEventListener("pointercancel",k)};return s.addEventListener("wheel",a,{capture:!0,passive:!1}),s.addEventListener("pointerdown",c,{capture:!0}),()=>{s.removeEventListener("wheel",a,{capture:!0}),s.removeEventListener("pointerdown",c,{capture:!0}),e.enabled=i}}projection(){return this.state.projection}setProjection(e){B(),this.state.projection!==e&&(this.state={...this.state,projection:e},this.notify())}setMode(e){B(),this.state.mode!==e&&(this.clearDiagnosticPresentation(),this.state={...this.state,mode:e},e==="uv"?this.scene.overrideMaterial=new Ui({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 Xi({vertexColors:!0}):e==="wireframe"&&this.buildTopologyOverlay(),this.notify())}buildTopologyOverlay(){const e=new Nt,t=[];this.root.updateMatrixWorld(!0),this.root.traverse(s=>{const i=s;if(!i.isMesh||!i.geometry)return;const a=new Yi(new Ki(i.geometry,Ho),new Zi({color:Gs,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,s=(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&&s(a,t),l=o||this.selectedObjects.some(C=>s(a,C)),d=o?e.active?.visible??e.visible:l?e.visible:null;c.color.setHex(d??Gs)}}clearTopologyOverlay(){for(const{line:s}of this.topologyFollowers.splice(0))s.geometry.dispose(),s.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){B(),this.state.bounds!==e&&(this.state={...this.state,bounds:e},e?(this.boundsHelper=new As(this.root,16757844),this.addHelper(this.boundsHelper,"bounds")):this.clearBoundsHelper(),this.notify())}setSkeleton(e){B(),this.state.skeleton!==e&&(this.state={...this.state,skeleton:e},this.refreshSkeletonHelper(),this.notify())}neutralBackgroundTexture(){return this.neutralBackground}setNeutralBackground(e){B();const t=this.scene.background,s=this.neutralBackground,i=t===s||t instanceof be&&s instanceof be&&t.equals(s);this.neutralBackground=e,i&&(this.scene.background=e)}setBackground(e){B(),this.state.background!==e&&(this.scene.background=e==="transparent"?null:this.neutralBackground,this.state={...this.state,background:e},this.notify())}resetPresentation(){B(),Un(this.documentId),this.clearDiagnosticPresentation(),this.state=$s,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 s=i=>{t||(t=!0,e(i))};this.presentedFrameWaiters.push(s),B(),setTimeout(()=>s(null),Bo)}):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 s=t.getContext("2d");if(!s){this.resolvePresentedFrame(null);return}s.drawImage(e,0,0),this.resolvePresentedFrame(t)}resolvePresentedFrame(e){const t=this.presentedFrameWaiters;this.presentedFrameWaiters=[];for(const s of t)s(e)}render(e,t=!1){const s=this.beforeRender?.(t);try{this.boneSelectionHighlight?.update();const i=this.camera(),a=this.state.mode;if(this.boundsHelper?.update(),this.selectionOrigins?.place(),a==="uv"||a==="vertex-colors"){e(i);return}if(a==="wireframe"&&this.topologyOverlay){if(this.syncTopologyOverlay(),this.xray.enabled&&this.xray.alpha<=0){const c=new Set;this.root.traverse(o=>{const l=o;if(l.isMesh)for(const d of Array.isArray(l.material)?l.material:[l.material])d?.visible&&(d.visible=!1,c.add(d))});try{e(i)}finally{for(const o of c)o.visible=!0}return}this.shading.render(this.scene,"clay",()=>e(i),Bs);return}this.shading.render(this.scene,a,()=>e(i),Bs)}finally{s?.()}}renderViewport(e=0,t=!1){this.advanceLook(e),this.ensureComposer(),this.render(s=>{const i=this.composer;if(!i){this.renderer.render(this.scene,s);return}i.setMainScene(this.scene),i.setMainCamera(s),i.render(e)},t)}resize(e,t){B(),this.renderWidth=Math.max(1,e),this.renderHeight=Math.max(1,t),this.composer?.setSize(this.renderWidth,this.renderHeight)}renderCapture(e,t){this.render(s=>{if(!t){e(s);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(s)}finally{this.scene.background=i,this.renderer.setClearColor(a,c)}})}captureImage(e=512){const t=typeof e=="number"?e:e.width,s=typeof e=="number"?e:e.height;if(!Number.isFinite(t)||t<1||!Number.isFinite(s)||s<1)return null;const i=Math.min(2048,Math.round(t)),a=Math.min(2048,Math.round(s)),c=i*2,o=a*2,l=new Vs(c,o,{type:Qi}),d=new Vs(c,o),C=this.renderer.getRenderTarget(),w=this.renderer.getPixelRatio(),P=this.viewport.camera,x=P.aspect;try{this.captureAspect=i/a;const N=typeof e=="number"?void 0:e.camera;N?this.cameraOverride=N:(P.aspect=i/a,P.updateProjectionMatrix()),this.renderer.setPixelRatio(1),this.renderer.setRenderTarget(l),this.renderCapture(_=>this.renderSolidForCapture(_,l,c,o),typeof e!="number"&&e.transparent===!0),io(typeof e!="number"&&e.transparent===!0).render(this.renderer,d,l,0,!1);const z=c*4,M=new Uint8Array(z*o);this.renderer.readRenderTargetPixels(d,0,0,c,o,M);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 _=0;_<o;_++){const Y=(o-1-_)*z,D=_*z;Q.data.set(M.subarray(Y,Y+z),D)}$.putImageData(Q,0,0);const y=document.createElement("canvas");y.width=i,y.height=a;const U=y.getContext("2d");return U?(U.drawImage(k,0,0,i,a),y.toDataURL("image/png")):null}finally{this.captureAspect=null,this.cameraOverride=null,P.aspect=x,P.updateProjectionMatrix(),this.renderer.setRenderTarget(C),this.renderer.setPixelRatio(w),this.composer?.setSize(this.renderWidth,this.renderHeight,!1),d.dispose(),l.dispose(),B()}}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&&uo(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.listeners.clear()}addHelper(e,t){e.name=`__object3d_document_${t}`,nn(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,B())}set selectionOriginsEnabled(e){e!==(this.selectionOrigins!==null)&&(e?(this.selectionOrigins=new qo,this.scene.add(this.selectionOrigins),this.syncSelectionPresentation()):(this.selectionOrigins?.dispose(),this.selectionOrigins=null,B()))}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(),s=new e.EffectComposer(this.renderer);this.sceneRenderPass=new e.RenderPass(this.scene,t),s.addPass(this.sceneRenderPass),this.selectionOutline=ho(e,this.renderer,this.scene,t,Ke(this.renderer.domElement)),this.syncSelectionTheme(),Hs(this.selectionOutline,this.selectedObjects),this.selectionOutlinePass=new e.EffectPass(t,this.selectionOutline),s.addPass(this.selectionOutlinePass),this.composer=s,this.syncComposerOutput(),s.setSize(this.renderWidth,this.renderHeight),B()}).catch(()=>{this.composerLoading=!1})))}renderSolidForCapture(e,t,s,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(s,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 Ji(this.root),Do(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(s=>{s.dispose()}):e.material.dispose()}frameBones(e){const t=new Mr,s=new F;for(const l of e){t.expandByPoint(l.getWorldPosition(s)),l.parent?.isBone&&t.expandByPoint(l.parent.getWorldPosition(s));for(const d of l.children)d.isBone&&t.expandByPoint(d.getWorldPosition(s))}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,s=Math.max(e.position.distanceTo(t),.001),i=Math.max(s*Math.tan(Rr.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 s=t.material;Array.isArray(s)?s.forEach(i=>{i.dispose()}):s?.dispose()}}notify(){this.version++;for(const e of this.listeners)e()}}const $o=7;let gt=null;function Go(){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 eo(e),gt.colorSpace=un,gt}class qo extends ln{objects=[];origin=new F;constructor(){super(new on,new cn({map:Go(),size:$o,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 an(new Float32Array(Math.max(e,8)*3),3),this.geometry.setAttribute("position",t)),this.geometry.setDrawRange(0,e),this.objects.forEach((s,i)=>{s.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 Uo{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(s){try{await t.cancel()}catch(i){return this.options.reportError({operationError:s,rollbackError:i}),!1}return this.options.reportError(s),!1}finally{this.settling=!1;for(const s of this.idleWaiters)s();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(s){return this.options.reportError(s),!1}finally{this.settling=!1;for(const s of this.idleWaiters)s();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(s){this.options.reportError({operationError:e,rollbackError:s})}finally{this.settling=!1;for(const s of this.idleWaiters)s();this.idleWaiters.clear()}}}}class Xo{constructor(e,t){this.frame=e,this.releaseRenderer=t,this.unsubscribeActivity=Eo(()=>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&&br()?this.start():this.stop()}redraw(){this.running&&!this.disposed&&br()&&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(s){const i=s instanceof Error?s.message:String(s);i!==this.lastFrameFailure&&(this.lastFrameFailure=i,console.error("[document renderer] a frame threw; the loop continues:",s))}}stop(){this.running=!1,this.rafId!==0&&(cancelAnimationFrame(this.rafId),this.rafId=0)}tick=e=>{if(!(!this.running||this.disposed)){if(!br()){this.stop();return}this.guardedFrame(e),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick))}}}const Yo=new Set(["solid","clay","unlit","wireframe","normals","overdraw"]);function Ko(n,e){return{read:()=>{const t=n.cameraPose;if(!t)return null;const{position:s,target:i}=t;return{camera:{position:{x:s.x,y:s.y,z:s.z},target:{x:i.x,y:i.y,z:i.z},...t.fov?{fov:t.fov}:{}},diagnostic:n.shadingMode,grid:Xn(e)}},setDiagnostic:t=>Yo.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 Zo(n){const e=Cr();return e?Yn(en(e.shell,n)):"none"}const Qo=m.lazy(()=>st(()=>import("./stage-transform-tools-B5kYo-6B.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}))),Jo=m.lazy(()=>st(()=>import("./stage-transform-tools-B5kYo-6B.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 qs(n){return{transformTools:()=>Zo(n),TransformTools:Qo,TransformControls:Jo}}class ea{constructor(e,t,s){this.create=e,this.isOpen=t,this.subscribe=s}states=new Map;generations=new WeakMap;unsubscribe=null;claim(e){const t=this.states.get(e)??[];let s=t.find(i=>!i.inUse);return s||(s=this.create(e),t.push(s),this.states.set(e,t)),s.inUse=!0,this.generations.set(s,this.generation(s)+1),this.unsubscribe??=this.subscribe(()=>this.discardClosed()),s}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,s){if(!this.isOpen(e.documentId)||!this.states.get(e.documentId)?.includes(e)||this.generation(e)!==s){t.dispose();return}const i=e.source;e.source=t,i!==t&&i?.dispose()}discardClosed(){const e=[];for(const[s,i]of this.states){if(this.isOpen(s))continue;const a=i.filter(c=>c.inUse);e.push(...i.filter(c=>!c.inUse)),a.length?this.states.set(s,a):this.states.delete(s)}this.states.size===0&&(this.unsubscribe?.(),this.unsubscribe=null);const t=[];for(const s of e){const i=s.source;s.source=null;try{i?.dispose()}catch(a){t.push(a)}}if(t.length)throw new AggregateError(t,"Retained document cleanup failed")}}const ta=m.lazy(async()=>({default:(await st(()=>import("./stage-overlay-set-BKAbHMto.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 ra(n){return p.jsx(m.Suspense,{fallback:null,children:p.jsx(ta,{...n})})}function Us(n,e,t){if(e==="orthographic"){const s=$t(n.camera.position.clone().sub(n.orbitControls.target),new F(0,1,0).applyQuaternion(n.camera.quaternion));return s!==null?s:t==="short"?"Iso":"Orthographic"}return t==="short"?"Persp":"Perspective"}const sa=()=>()=>{},Xs=()=>0;function na({shell:n,documentId:e,label:t,kebab:s=!1}){const i=m.useSyncExternalStore(po,zs,zs);m.useSyncExternalStore(So,xo);const a=e?Po(e):null;m.useSyncExternalStore(a?.subscribe??sa,a?.getSnapshot??Xs,a?.getSnapshot??Xs);const c=a?a.projection():i.projection,o=P=>{a?a.setProjection(P):_s(P)},[l,d]=m.useState(!1),C=m.useRef(null);m.useEffect(()=>{if(!l)return;const P=x=>{C.current?.contains(x.target)||d(!1)};return document.addEventListener("mousedown",P),()=>document.removeEventListener("mousedown",P)},[l]);const w=P=>{if(a){a.setViewPreset(P,"view");return}_s("orthographic"),n.setViewPreset(P)};return p.jsxs("div",{ref:C,className:"volter-viewport-popover-anchor",children:[t===void 0?p.jsx(et,{text:c==="perspective"?"Perspective":"Orthographic",children:p.jsx(He,{"aria-label":"Viewport views","aria-expanded":l,size:"comfortable",onClick:()=>d(P=>!P),children:p.jsx(Se,{icon:l?Kn:Zn,size:"md"})})}):p.jsxs(Ze,{size:"comfortable",variant:"ghost","aria-label":"Viewport views","aria-expanded":l,"data-testid":"viewport-view-name",onClick:()=>d(P=>!P),children:[s?p.jsx(Se,{icon:Qn,size:"sm"}):null,t]}),l?p.jsx(Jn,{style:{minWidth:230},children:p.jsxs(ei,{gap:3,children:[p.jsx(ws,{variant:"caption",tone:"muted",children:"Projection"}),p.jsxs(bs,{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(ws,{variant:"caption",tone:"muted",children:"Axis View"}),p.jsxs(bs,{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 ia=go;function Ys(n){return Tr(null,n)}const oa=()=>()=>{},Ks=()=>0,aa=5,ca=58;function la(n,e){const t=e?.camera()??n.renderCamera,s=n.camera.position,i=n.orbitControls.target,a=t.isOrthographicCamera?mn(t,n,e):0;return[s.x,s.y,s.z,i.x,i.y,i.z,a].map(c=>c.toPrecision(6)).join(",")}function mn(n,e,t){const s=e.orbitControls.domElement,i=Math.max(1,t?.renderer.domElement.height??(s?.clientHeight??1)*(s?.ownerDocument.defaultView?.devicePixelRatio??1));return(n.top-n.bottom)/n.zoom/i}function ua({viewport:n,documentId:e,session:t,store:s,projection:i,displayName:a,objectName:c,statistics:o,subject:l,gridScale:d}){m.useSyncExternalStore(s.subscribe,s.getShellSnapshot??s.getSnapshot),m.useSyncExternalStore(m.useCallback(A=>{const H=n?.orbitControls;return H?.addEventListener("change",A),()=>H?.removeEventListener("change",A)},[n]),()=>n?la(n,t):""),m.useSyncExternalStore(t?.subscribe??oa,t?.getSnapshot??Ks,t?.getSnapshot??Ks);const C=m.useSyncExternalStore(Ys,tn),w=m.useSyncExternalStore(Ys,ti),P=C&&!w?rt.content.onAccent:rt.content.primary,x=ri();m.useSyncExternalStore(Pr,ys,ys);const N=tt(e).overlays.navigationControls;if(!n)return null;const z=$t(n.camera.position.clone().sub(n.orbitControls.target),new F(0,1,0).applyQuaternion(n.camera.quaternion))??"User",M=t?.projection()??i,k=t?.cameraView()??null,$=k?`Camera ${k.projection==="perspective"?"Perspective":"Orthographic"}`:`${z} ${M==="perspective"?"Perspective":"Orthographic"}`,Q=s.selectedEntityId,y=(Q===null?null:c(Q))||null,U=l??(y===null||y===a?a:`${a} | ${y}`),_=t?.camera()??n.renderCamera,Y=d&&!k&&z!=="User"&&_.isOrthographicCamera?d(mn(_,n,t)):null,D=A=>{A.preventDefault();const H=A.currentTarget;H.setPointerCapture(A.pointerId);const xe=n.orbitControls.domElement?.getBoundingClientRect().top??0,Te=Math.max(5+A.clientY-xe,1),le=n.camera,de=n.orbitControls.target,ue=le.position.clone().sub(de),re=!t&&n.renderCamera instanceof Er?n.renderCamera:null,ie=re?.zoom??1,Ae=t?.cameraViewZoom()??null,pe=fe=>{const ze=5+fe.clientY-xe,Pe=Math.max(.01,2*(ze/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=()=>{H.removeEventListener("pointermove",pe),H.removeEventListener("pointerup",J),H.removeEventListener("pointercancel",J),H.removeEventListener("lostpointercapture",J)};H.addEventListener("pointermove",pe),H.addEventListener("pointerup",J),H.addEventListener("pointercancel",J),H.addEventListener("lostpointercapture",J)},Z=A=>{A.preventDefault();const H=A.currentTarget;H.setPointerCapture(A.pointerId);let xe=A.clientX,Te=A.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,ze=J.position.distanceTo(fe),Pe=Math.max(1,H.ownerDocument.defaultView?.innerHeight??1),nt=2*ze*Math.tan(Rr.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=()=>{H.removeEventListener("pointermove",ue),H.removeEventListener("pointerup",re),H.removeEventListener("pointercancel",re),H.removeEventListener("lostpointercapture",re)};H.addEventListener("pointermove",ue),H.addEventListener("pointerup",re),H.addEventListener("pointercancel",re),H.addEventListener("lostpointercapture",re)};return p.jsxs(p.Fragment,{children:[x.viewName==="text"&&s.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:P,textShadow:"var(--volter-content-text-shadow, none)",pointerEvents:"none",userSelect:"none"},children:[p.jsx("span",{children:$}),p.jsx("span",{children:U}),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:`${ca}px auto`,rowGap:"var(--volter-space-1)",marginTop:si[aa]},children:o.map(A=>p.jsxs(m.Fragment,{children:[p.jsx("span",{children:A.label}),p.jsx("span",{children:A.value})]},A.id))}):null]}):null,x.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(na,{shell:s,documentId:e,label:Us(n,M,"long"),kebab:!0})}):null,x.viewName==="gizmo"?p.jsxs("button",{type:"button","data-testid":"viewport-view-name",className:"volter-viewport-gizmo-label","aria-label":M==="perspective"?"Switch to orthographic":"Switch to perspective",onClick:()=>{const A=M==="perspective"?"orthographic":"perspective";t?t.setProjection(A):n.setProjection(A)},style:{position:"absolute",top:mo+4,right:fo,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:P,textShadow:"var(--volter-content-text-shadow, none)",cursor:"pointer",pointerEvents:"auto"},children:[p.jsx(Se,{size:"xs",icon:M==="perspective"?ni:ii}),Us(n,M,"short")]}):null,N&&s.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:ia,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(He,{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(He,{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(He,{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(He,{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||x.viewName==="gizmo"?null:p.jsx(et,{text:M==="perspective"?"Orthographic":"Perspective",children:p.jsx(He,{size:"comfortable","aria-label":"Toggle perspective and orthographic",onClick:()=>{const A=M==="perspective"?"orthographic":"perspective";t?t.setProjection(A):n.setProjection(A)},children:p.jsx(Se,{size:"2xl",icon:M==="orthographic"?ye.viewport.projectionOrthographic:ye.viewport.projection})})})]}):null,k&&t?p.jsx(ha,{view:k,canvas:t.renderer.domElement,locked:t.cameraViewLocked()===!0}):null]})}function ha({view:n,canvas:e,locked:t}){const[s,i]=m.useState(null),[,a]=m.useState(0);m.useEffect(()=>{const M=new ResizeObserver(()=>a(k=>k+1));return M.observe(e),()=>M.disconnect()},[e]);const c=e.clientWidth,o=e.clientHeight,l=e.ownerDocument.defaultView?.devicePixelRatio??1,d=e.getBoundingClientRect(),C=s?.getBoundingClientRect(),w=1/l,P=n.frame.left*c-w,x=n.frame.top*o-w,N=n.frame.width*c+2*w,z=n.frame.height*o+2*w;return p.jsx("div",{ref:i,"aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none"},children:C?p.jsxs("svg",{"data-testid":"viewport-camera-frame",width:c,height:o,style:{position:"absolute",left:d.left-C.left,top:d.top-C.top},children:[n.passepartout.opacity>0?p.jsx("path",{d:`M0 0H${c}V${o}H0Z M${P} ${x}V${x+z}H${P+N}V${x}Z`,fill:n.passepartout.color,fillOpacity:n.passepartout.opacity,fillRule:"evenodd"}):null,n.passepartout.opacity>0?p.jsx("rect",{x:P,y:x,width:N,height:z,fill:"none",stroke:n.border.solid,strokeWidth:w,shapeRendering:"crispEdges"}):null,p.jsx("rect",{x:P,y:x,width:N,height:z,fill:"none",stroke:n.border.dashed,strokeWidth:w,strokeDasharray:`${3*w} ${3*w}`,shapeRendering:"crispEdges"}),t?p.jsx("rect",{x:P-w,y:x-w,width:N+2*w,height:z+2*w,fill:"none",stroke:n.border.locked,strokeWidth:w,strokeDasharray:`${3*w} ${3*w}`,shapeRendering:"crispEdges"}):null]}):null})}const da=m.lazy(async()=>({default:(await st(()=>import("./stage-keyboard-CNNJiLBS.js"),__vite__mapDeps([67,7,5,8,68,6,4,9,10,11,12,13,45,23]))).StageKeyboardBinding})),pa=n=>{const e=n.split(":");return(e[0]==="document"?e[1]:e[0])??n},Zs=()=>Li(),xr=12;function Qs(n){if(!n)return null;const e=new Mr(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 fa=500;function ma(n){return Tr(null,n)}const ga=["solid","preview","rendered","clay","unlit","wireframe","matcap","normals","overdraw"];let va=0;const Je=new ea(n=>({documentId:n,store:dn(new rn),inUse:!1,source:null,camera:null,presentation:null,transport:null,contentSeconds:0,transportAdvances:0}),n=>mi().some(e=>e.descriptor.id===n),gi);function wa({canvasHostRef:n}){return p.jsx("div",{ref:n,style:{position:"absolute",inset:0}})}function ba(n,e,t,s,i){if(e==="inspector-preview"){const l=Wi();return l.canvas.setAttribute("aria-label",`${t} authoring viewport`),n.appendChild(l.canvas),{canvas:l.canvas,renderer:l.renderer,lease:l}}const a=ao(s.width,s.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 Js{constructor(e,t,s){this.lane=e,this.surface=t,this.store=s??dn(new rn),this.transport=new Vi(this.store.shell)}scene=new hn;store;cleanups=[];rendererSession=new Xo((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:s}=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(),()=>s.remove()]])try{i()}catch(a){console.error("Object3D document cleanup failed.",a)}}}function gn({documentId:n,sourcePath:e,build:t,displayName:s="Source Object3D",background:i,cameraDirection:a,persistence:c,documentSource:o,authoring:l,interaction:d,selectionOutline:C=!0,active:w=!0,audit:P=!0,chromeless:x=!1,modelSource:N,assetType:z,sourceAuthoring:M,dressing:k,rendererLane:$="own",onOpenNode:Q,frameBounds:y,openingFrameBounds:U,openingFit:_,openingView:Y,presentation:D,cameraView:Z,stageKind:A,statistics:H,subject:xe,gridScale:Te,content:le}){const de=A??pa(n);m.useEffect(()=>{if(!x)return oi(n)},[n,x]);const ue=Fi(ai()),re=ue??Cr(),ie=re?en(re.shell,n,x?"embedded":"document"):null,Ae=m.useSyncExternalStore(ma,tn),pe=ie!==null&&ci(ie,Ae),J=m.useRef(pe);J.current=pe;const fe=ie!==null&&li(ie),ze=m.useRef(fe);ze.current=fe;const Pe=ie!==null&&ui(ie),nt=m.useRef(Pe);nt.current=Pe;const it=hi(),Gt=m.useRef(it);Gt.current=it;const qt=m.useRef(null),Ut=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,_e=le?.kind==="world-root",Xt=w||_e,Ar=m.useRef(le?.kind==="world-root"?le.load:null);Ar.current=le?.kind==="world-root"?le.load:null;const[We,Yt]=m.useState(Xt);m.useEffect(()=>Yt(Xt),[Xt]);const Kt=m.useRef(C);m.useEffect(()=>{Kt.current=C;const R=X.current?.session;R&&(R.selectionOutlineEnabled=$!=="inspector-preview"&&C),X.current?.applyPresentation?.()},[C,$]);const Vr=m.useRef(Promise.resolve()),Zt=m.useRef(!1);m.useEffect(()=>{if(We)return ot.current=!1,tr("building"),()=>{const R=X.current;if(R&&!_e){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,_e]);const Lr=m.useRef(Q);Lr.current=Q;const Fr=m.useRef(y);Fr.current=y;const Dr=m.useRef(U);Dr.current=U;const Qt=m.useRef(Y);Qt.current=Y;const Hr=m.useRef(D);Hr.current=D;const Br=m.useRef(Z);Br.current=Z;const vt=m.useRef(w);vt.current=w;const zr=m.useRef(w),_r=m.useRef({build:t,sourcePath:e});m.useEffect(()=>{const R=_r.current;_r.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"),[Wr,vn]=m.useState(null),[wn,bn]=m.useState("mounting"),[yn,Sn]=m.useState([]),Ir=m.useRef(null),[Nr,xn]=m.useState("perspective"),[Pn,$r]=m.useState(null),xt=m.useRef(null);xt.current=Pn;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,Gr=k?.environment,qr=k?.background,Ur=k?.keyLight,or=k?.grid,ct=k?.viewLocked,ar=k?.toneMapping;w&&di(n),m.useEffect(()=>{let R=!1;if(!We)return;const me=async Ce=>{const q=qt.current,lt=Ut.current;if(!q||!lt||X.current)return;const E=Gt.current;if(!E){oe("The world root needs the editor shell above it; this host has none.");return}const ut=await Ce();if(R||X.current)return;vn(()=>ut),Ss();const r=new Js("own",ut.mountWorldRootSurface(lt,q,s),Cr()??void 0);X.current=r,r.cleanups.push(xs(n,r.store.shell)),r.cleanups.push(Ps(n,r.transport)),r.cleanups.push(Ai(n,{...Ko(r.store,n),...qs(n)}));const ae=ut.installWorldRootStage({store:r.store,documentId:n,container:q,canvas:r.surface.canvas,renderer:r.surface.renderer,stats:E,cameraPreview:()=>Ir.current,onMountStatus:bn,onRootIds:Sn,runFrame:ke=>Ws(n,ke)});r.viewport=ae.viewport,r.frame=ae.frame,r.content={scene:ae.scene,settle:()=>Promise.resolve(),dispose:async()=>ae.dispose()};const j=Ns(()=>r.store.scene??ae.scene,r.transport,{rescanOnLiveMixers:()=>r.store.shell.playState==="stopped"});let se=0;r.cleanups.push(()=>j.dispose()),r.cleanups.push(r.store.shell.subscribe(()=>{if(r.store.shell.playState!=="stopped")return;const ke=performance.now();ke-se<fa||(se=ke,j.refresh())})),r.cleanups.push(Is({camera:ae.viewport.camera,drawCamera:()=>ae.viewport.renderCamera,orbit:ae.viewport.orbitControls,scene:ae.scene},ae.present,ae.setHelper,{documentId:n})),wt.current=r.rendererSession,r.initialized=!0,Rs(),tr("ready"),r.rendererSession.setActive(!0)},kn=async()=>{for(await X.current?.content?.settle();so();)await no();if(R)return;const Ce=Ar.current;if(Ce)return me(Ce);const q=qt.current,lt=Ut.current;if(!q||!lt)return;if(!t||e===void 0){oe("This stage shows `build` content and was given no `build()`/`sourcePath`.");return}let E;const ut=Je.generation(G);try{E=G.source??t(),G.source=null}catch(ee){oe(ee instanceof Error?ee.message:String(ee));return}try{X.current||(Ss(),X.current=new Js($,ba(lt,$,s,{width:Math.max(1,q.clientWidth),height:Math.max(1,q.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 E.dispose(),ee}const r=X.current,ae=r.borrow(),{renderer:j,canvas:se,lease:ke}=r.surface,T=r.store;x||(r.cleanups.push(xs(n,T.shell)),r.cleanups.push(Ps(n,r.transport)));const kt=Cs();kt&&T.shell.attachHistory(kt);const lr=$==="inspector-preview",Ie=J.current,Yr=ze.current,Kr=nt.current,V=new hn,Et=E.root.parent;V.add(E.root),E.animations&&(E.root.animations=[...E.animations]);const ur={root:E.root,animations:E.root.animations};let Ne=null,$e=null,Ge=null,Ee=null,he=null,Mt=null,Ot=null,Rt=null,jt=null,Tt=null,hr=null,Zr=null,Qr=null,Jr=!1,At=!1,Vt=null;const dr={scene:V,settle:()=>he?.settle()??Promise.resolve(),dispose:()=>{if(Vt)return Vt;At=!0;const ee=Zt.current;return Zt.current=!1,Mt&&q.removeEventListener("pointerdown",Mt,!0),Ot&&q.removeEventListener("pointermove",Ot,!0),Rt&&q.removeEventListener("pointerup",Rt,!0),jt&&q.removeEventListener("pointercancel",jt,!0),Tt&&window.removeEventListener("keydown",Tt),hr?.(),hr=null,Vt=(async()=>{await he?.settle();const ht=[];for(const Lt of[()=>Ee?.dispose(),()=>$e?.dispose?.(),()=>Ne?.dispose(),()=>V.removeFromParent(),()=>{ee?Je.retain(G,E,ut):E.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=Cs();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 Zs().replaceSource(h,{file:o.path,source:v,label:u??o.label??`Edit ${s}`});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:S}=await(await Ge).commit(g,u);return oe(null),S}catch(g){throw oe(g instanceof Error?g.message:JSON.stringify(g)),g}};Ne=new ko(T,V,{documentId:n,title:s,sourcePath:e,documentKind:Kr?"asset":"source",audit:P,...E.hierarchyRoots?{hierarchyRoots:E.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:E.root,animations:E.root.animations,scene:V,defaultAdapter:Ne,commit:ee};$e=l?.(ht)??null;const Lt=$e?Ne:null;!$e&&M&&($e=M({store:T,scene:V,...E.hierarchyRoots?{hierarchyRoots:E.hierarchyRoots}:{}}),Ne.dispose()),Ge=c&&kt?Zs().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(!r.dressing){j.outputColorSpace=un,j.toneMapping=ar??to,j.shadowMap.enabled=!0,j.shadowMap.type=ro,j.info.autoReset=!1,j.setPixelRatio(Math.min(window.devicePixelRatio,2)),Ie&&j.setClearColor(0,0);const u=Gr===!1?null:ke&&"environment"in ke?ke.environment():_i(j),g=ks(se);r.dressing=Di(r.scene,{environment:u,background:!Ie&&i===void 0&&qr!==!1,keyLight:!1,grid:or===!0,content:E.root}),!Ie&&i!==void 0?r.scene.background=new be(i):!Ie&&g.background!==null&&(r.scene.background=new be(g.background)),r.defaultEnvironment=r.scene.environment,r.defaultBackground=r.scene.background;{const S=new Hi(r.scene,B);r.presentationRig=S,Es(n,de);let h=r.store.shell.showHelpers;const v=()=>{const f=tt(n);if(h=r.store.shell.showHelpers,S.apply(f,j,ar),r.viewport?.setStageFunction(f.world,f.interaction),r.viewport?.setFieldOfView(f.camera.fov),r.viewport?.setSelectionMarks(f.overlays.selection),r.viewport?.setGridMajorEvery(f.overlays.grid.majorEvery),r.viewport?.setAxisLines(f.overlays.axes),r.viewport?.setNavigation(f.overlays.navigation),r.viewport?.setGridVisible(f.overlays.grid.visible&&h),r.session){const O=r.session.presentation().mode==="wireframe"&&f.xray.enabled&&f.xray.alpha<=0;r.session.selectionOutlineEnabled=!lr&&h&&Kt.current&&f.overlays.selection.outline&&!O,r.session.selectionOriginsEnabled=!lr&&h&&f.overlays.selection.origins,r.session.setXray(f.xray)}B()};r.applyPresentation=v,v(),r.cleanups.push(Pr(v)),r.cleanups.push(r.store.shell.subscribe(()=>{r.store.shell.showHelpers!==h&&v()})),r.cleanups.push(vi(()=>{S.forgetFailedImages(),v()})),r.cleanups.push(()=>{S.dispose(),r.presentationRig===S&&(r.presentationRig=null)})}r.cleanups.push(()=>{r.defaultBackground instanceof Ls&&r.defaultBackground!==r.dressing?.backgroundTexture&&r.defaultBackground.dispose()})}const es=(u,g)=>{const S=r.adapter,h=r.viewport;if(!S||!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 Fs;O.layers.enableAll(),O.params.Line2={threshold:4},O.setFromCamera(f,r.session?.camera()??h.camera);const K=r.presentationAdapter,ce=W=>{for(let I=W;I;I=I.parent){const Oe=K?.hierarchy.idForObject3D?.(I)??S.hierarchy.idForObject3D?.(I);if(Oe)return Oe}return null};let ve=null;for(const W of O.intersectObjects([...T.objectMap.values()],!0)){if(Ts(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(!r.viewport){r.viewport=new vo(se,r.scene,T,q,{renderer:j,authoring:()=>r.adapter??ge,pick:es,drawCamera:()=>r.session?.camera()??r.viewport.camera,publishPickContext:!1,onProjectionChange:xn,chromeInsetPx:x||Yr?0:xr,lightRig:!1}),or===!0&&r.viewport.grid.removeFromParent();const u=g=>{const S=es(g.clientX,g.clientY),h=S&&r.adapter?Be(r.adapter.hierarchy,S):null;h&&Lr.current?.(h)};q.addEventListener("dblclick",u),r.cleanups.push(()=>q.removeEventListener("dblclick",u))}const b=r.viewport;if(ct){const u=b.camera;r.scene.add(u);const g=new Nt;g.name="volter:document-studio",g.add(ct),u.add(g),r.documentStudio=g,r.cleanups.push(()=>{ct.removeFromParent(),g.removeFromParent(),r.documentStudio===g&&(r.documentStudio=null),u.removeFromParent()})}if(d){const u=new Nt;u.name="__object3d_document_overlay",nn(u,"editorHelper",!0),V.add(u),Ee=d.setup({root:E.root,scene:V,renderer:j,overlay:u,camera:()=>r.session?.camera()??b.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 Fs;return O.layers.enableAll(),O.setFromCamera(f,r.session?.camera()??b.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([E.root,u],!0)}};he=new Uo({begin:h=>{if(!c&&!o)throw new Error("This Asset Lab document has no persistence binding; project gestures are read-only.");return Ee.begin(h)},persist:async h=>{await ee(h)},reportError:h=>oe(h instanceof Error?h.message:JSON.stringify(h))});const S=h=>{h.preventDefault(),h.stopPropagation()};Mt=h=>{h.target instanceof Element&&h.target.closest('[role="alert"], [role="toolbar"]')!==null||he?.begin(g(h))&&(S(h),h.isTrusted&&se.setPointerCapture?.(h.pointerId))},Ot=h=>{he?.hasActiveGesture()&&(S(h),he.update(g(h)))},Rt=h=>{he?.hasActiveGesture()&&(S(h),se.hasPointerCapture?.(h.pointerId)&&se.releasePointerCapture?.(h.pointerId),he.commit(g(h)))},jt=h=>{he?.hasActiveGesture()&&(S(h),he.cancel(h.pointerId))},Tt=h=>{h.key!=="Escape"||!he?.hasActiveGesture()||(h.preventDefault(),he.cancel())},Zr=()=>{q.addEventListener("pointerdown",Mt,!0),q.addEventListener("pointermove",Ot,!0),q.addEventListener("pointerup",Rt,!0),q.addEventListener("pointercancel",jt,!0),window.addEventListener("keydown",Tt)}}const Le=r.content,ts=[...T.shell.selectedEntityIds],dt=r.adapter,Mn=r.presentationAdapter,On=new Map(T.objectMap),qe=r.session?.root,Rn=r.frame,jn=r.syncHostScene,Tn=yt.current,An=St.current,Vn=bt.current,rs=r.session?.neutralBackgroundTexture(),Ln=r.dressing.lights.map(u=>u.visible),Fn=r.cleanups.length,Dn=r.initialized;if(Qr=()=>{V.removeFromParent(),Et&&Et.add(E.root),Le&&r.scene.add(Le.scene),r.adapter=dt,r.presentationAdapter=Mn,r.content=Le,r.frame=Rn,r.syncHostScene=jn,r.initialized=Dn;for(const u of r.cleanups.splice(Fn))u();!qe&&r.session&&(r.session.dispose(),r.session=null),T.objectMap.clear();for(const[u,g]of On)T.objectMap.set(u,g);Le&&T.bindScene(Le.scene,j,b.batchedRenderer,b.camera),qe&&dt&&r.session?.replaceContent(qe,dt),yt.current=Tn,St.current=An,bt.current=Vn,xt.current=dt,$r(dt),rs!==void 0&&r.session?.setNeutralBackground(rs),r.dressing?.lights.forEach((u,g)=>{u.visible=Ln[g]??!0}),qe&&(r.dressing?.frameContent(qe),r.presentationRig?.placeFloor(qe)),T.shell.selectMultiple(ts),T.notifyIngestObjectMapEdit()},Le?.scene.removeFromParent(),r.scene.add(V),r.adapter=ge,r.presentationAdapter=Lt,r.content=dr,T.bindScene(V,j,b.batchedRenderer,b.camera),T.setOrbitTarget(b.orbitControls.target),T.objectMap.clear(),V.traverse(u=>{const g=Lt?.hierarchy.idForObject3D?.(u)??ge.hierarchy.idForObject3D?.(u);g&&T.objectMap.set(g,u)}),r.session)r.session.replaceContent(E.root,ge);else{const u=Qs(Fr.current),g=Qs(Dr.current)??u,S=tt(n).camera;b.setFieldOfView(S.fov);const h=Qt.current,v=rr!==void 0&&sr!==void 0&&nr!==void 0;if(!h&&!v){const f=b.orbitControls.target,O=b.camera.position.distanceTo(f);b.camera.position.copy(f).addScaledVector(new F(...S.opening).normalize(),O)}if(g||b.focusOn(E.root),h){const f=new F(...h.target),O=new F(...h.direction).normalize();b.camera.position.copy(f).addScaledVector(O,h.distance),b.camera.up.set(0,1,0),h.up&&b.camera.up.set(...h.up),b.orbitControls.target.copy(f)}else if(v){const f=g??kr(E.root),O=f.getCenter(new F),K=new F(rr,sr,nr).normalize(),ce=It(f,b.camera,K)*Math.min(10,Math.max(.1,_??1));b.camera.position.copy(O).add(K.multiplyScalar(ce)),b.orbitControls.target.copy(O)}if(r.session=new No(n,E.root,r.scene,j,b,ge,Ie?null:i===void 0?r.dressing.backgroundTexture:new be(i),u),r.session.selectionOutlineEnabled=!lr&&Kt.current,r.session.setCameraViewSource(Br.current??null),r.applyPresentation?.(),Qt.current?.projection==="orthographic"&&r.session.setProjection("orthographic"),!Ie&&i===void 0&&r.dressing.backgroundTexture){const f=r.session;r.cleanups.push(Bi(()=>{const O=ks(se).background,K=r.defaultBackground;r.defaultBackground=O!==null?new be(O):zi(),f.neutralBackgroundTexture()===K&&f.setNeutralBackground(r.defaultBackground),K instanceof Ls&&K!==r.dressing?.backgroundTexture&&K.dispose()}))}}const pt=G.camera;pt&&(b.setPose(pt.position,pt.target,pt.fov||void 0,pt.up),b.setProjection(Nr),G.camera=null);const L=r.session;yt.current=ur,St.current=Ge,bt.current=Ee,xt.current=ge,$r(ge);const pr=wi(de)?.all?.lighting!==void 0||bi(de)?null:ct?{all:{lighting:{source:"studio",studioPreset:Ms.id,auto:null}}}:Ur===!1?{all:{lighting:{source:"scene"}}}:null,Ft=Hr.current??null;Es(n,de,pr&&Ft?yi(pr,Ft):Ft??pr);const fr=new Set(ga);let ss;const ns=()=>{const u=r.session?.presentation().mode;u!==ss&&(ss=u,r.applyPresentation?.()),!(u===void 0||!fr.has(u))&&tt(n).drawMode!==u&&Si(n,{drawMode:u})},mr=Ft?.drawMode??xi(n).drawMode;mr!==void 0&&fr.has(mr)&&r.session&&r.session.setMode(mr),ns();const Hn=r.session?.subscribe(ns),Bn=Pr(()=>{const u=r.session,g=tt(n).drawMode;u&&u.presentation().mode!==g&&fr.has(u.presentation().mode)&&u.setMode(g)});r.cleanups.push(()=>{Hn?.(),Bn()});const Dt=[];E.root.traverse(u=>{u.isLight&&Dt.push(u)});const zn={light:Dt.length>0,"directional-light":Dt.some(u=>u.isDirectionalLight)};r.contentLights=Dt,r.contentHas=zn,r.dressing.frameContent(E.root),r.presentationRig?.placeFloor(E.root),r.cleanups.push(T.shell.subscribe(()=>r.presentationRig?.placeFloor(E.root)));const is=new Set;T.shell.selectMultiple(ts.filter(u=>{const g=T.objectMap.get(u)??Be(ge.hierarchy,u);if(g===null&&!T.objectMap.has(u))return!1;const S=g??u;return is.has(S)?!1:(is.add(S),!0)})),T.notifyIngestObjectMapEdit(),L.syncSelectionPresentation(),Zr?.(),oe(null),x||Os(n);let Ht=V.background;L.setNeutralBackground(Ht??r.defaultBackground);const Ue=G.presentation;Ue&&(L.setMode(Ue.mode),L.setBackground(Ue.background),L.setProjection(Ue.projection),L.setSkeleton(Ue.skeleton),L.setBounds(Ue.bounds),G.presentation=null);const _n=()=>{r.viewport?.alignGridToView(L.camera(),j.domElement.width),r.scene.environment=V.environment??r.defaultEnvironment,r.scene.fog=V.fog,r.scene.environmentIntensity=V.environmentIntensity,r.scene.environmentRotation.copy(V.environmentRotation),r.scene.backgroundIntensity=V.backgroundIntensity,r.scene.backgroundBlurriness=V.backgroundBlurriness,r.scene.backgroundRotation.copy(V.backgroundRotation);const u=r.presentationRig;if(u){const g=u.resolveSource({...r.contentHas,environment:V.environment!==null}),S=u.environment();S&&(r.scene.environment=S.texture??r.defaultEnvironment,r.scene.environmentIntensity=S.intensity,r.scene.environmentRotation.set(0,S.rotation,0));const h=u.backdrop();h!=="keep"?(r.scene.background=h.value,r.scene.backgroundBlurriness=h.blur,r.scene.backgroundIntensity=h.intensity,r.scene.backgroundRotation.set(0,h.rotation,0),r.backdropOverridden=!0):r.backdropOverridden&&(r.scene.background=L.neutralBackgroundTexture(),r.scene.backgroundBlurriness=V.backgroundBlurriness,r.scene.backgroundIntensity=V.backgroundIntensity,r.backdropOverridden=!1);const v=g==="studio"&&u.presetId()===Ms.id;r.documentStudio&&(r.documentStudio.visible=v);const f=g==="studio"&&!v||g==="preview"&&!u.sceneLightsShown()?r.darkenContentLights():0;u.update(L.camera()),Pi(n,{source:g,presetId:u.presetId(),presetLights:u.lightsVisible(),documentStudio:r.documentStudio?r.documentStudio.visible:null,contentLights:r.contentLights.length,contentLightsDarkened:f,environmentIntensity:r.scene.environmentIntensity,environmentImage:u.imageReport().shown,environmentImagePending:u.imageReport().pending,toneMapping:String(j.toneMapping)})}Ht!==V.background&&(Ht=V.background,L.setNeutralBackground(Ht??r.defaultBackground))};r.syncHostScene=_n,L.setBeforeRender(u=>(r.syncHostScene?.(),E.prepareDraw?.(L.camera(),{interactive:u,height:j.domElement.height}))),L.setPresentsFrames(!0);const Wn=u=>{At||!(u>0)||!Number.isFinite(u)||(r.contentSeconds+=u,r.transportAdvances++,E.update?.(u))},In=Ns(E.root,r.transport);r.cleanups.push(()=>In.dispose());const Me=G.transport;Me&&(Me.activeSubject&&r.transport.setActiveSubject(Me.activeSubject),r.transport.setLoop(Me.range.loop),r.transport.setTimeScale(Me.timeScale),r.transport.seek(Me.time),Me.playbackState==="playing"?r.transport.play():Me.playbackState==="paused"&&r.transport.pause(),G.transport=null);let gr=performance.now();const os=typeof E.onChange=="function";let Bt=!0;const zt=()=>{Bt=!0};if(os){const u=E.onChange(zt),g=T.shell.subscribe(zt),S=["pointerdown","pointermove","pointerup","pointerleave","wheel","keydown","keyup"];for(const h of S)q.addEventListener(h,zt,{capture:!0,passive:!0});hr=()=>{u(),g();for(const h of S)q.removeEventListener(h,zt,{capture:!0})}}let as=-1;const cs=new Ds,ls=new Ds,us=new mt,hs=new mt;let ds,ps=null,fs=Number.NaN;const Nn=u=>{if(!os||Bt||u>0||js()!==as||L.needsFrame()||r.presence?.live()||Ee?.prepareFrame||Ee?.update||(b.batchedRenderer.batches?.length??0)>0)return!0;const g=L.camera();return g.updateMatrixWorld(),j.getDrawingBufferSize(hs),!g.matrixWorld.equals(cs)||!g.projectionMatrix.equals(ls)||!hs.equals(us)||r.scene.background!==ds||j.toneMapping!==ps||j.toneMappingExposure!==fs},$n=()=>{Bt=!1,as=js();const u=L.camera();cs.copy(u.matrixWorld),ls.copy(u.projectionMatrix),j.getDrawingBufferSize(us),ds=r.scene.background,ps=j.toneMapping,fs=j.toneMappingExposure};let ft=null;const ms=(u,g)=>{if(At||!j||!b)return;const S=j,h=b,v=L?.profiler;v?.beginFrame(),g&&(gr=u);const f=Math.min((u-gr)/1e3,.1);gr=u,v?.beginPhase();const O=r.transport.tick(f);if(O>0&&Wn(O),Ee?.prepareFrame?.(f),Ee?.update?.(f),v?.endPhase("animation"),v?.beginPhase(),r.presence?.syncMarkers(f),b.update(f),x||Ws(n,f),ft){const I=L.camera();I.quaternion.copy(ft),I.updateMatrixWorld(!0)}if(b.batchedRenderer.update(f),v?.endPhase("editor"),!g&&!Nn(O)){v?.endFrame();return}v?.beginPhase(),S.info.reset();const K=!ot.current&&Ci()===n;K&&ki(n);const ce=K?Date.now():0,ve=r.scene.overrideMaterial,Xe=L.presentation().mode;Xe!=="uv"&&Xe!=="vertex-colors"&&(r.scene.overrideMaterial=V.overrideMaterial);try{h.renderWithInfrastructure(()=>{L.renderViewport(f,ft!==null||!g&&!L.needsFrame()),h.renderViewCube(S)})}finally{r.scene.overrideMaterial=ve}L.servePresentedFrame(),$n(),ot.current||(ot.current=!0,K&&Ei("first-render",Date.now()-ce),Mi(n),tr("ready")),v?.reportRender({gpuMs:null,drawCalls:S.info.render.calls,triangles:S.info.render.triangles,geometries:S.info.memory.geometries,textures:S.info.memory.textures}),v?.endPhase("render"),v?.endFrame();const W=Gt.current;if(W&&ue&&Oi(ue.shell)===T.shell){const I=L.cameraPose();W.frameTime=f*1e3,W.fps=f>0?1/f:0,W.drawCalls=S.info.render.calls,W.triangles=S.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]}};r.frame=ms;const Gn=(u,g="full")=>{if(!j)throw new Error("This stage has no renderer yet.");const S=j,h=S.getContext(),v=new Uint8Array(4),f=[],O=[],K=[],ce=L.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 Or().setFromAxisAngle(Xe,(te+1)*5e-4)));const ne=performance.now();ms(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),Bt=!0}const W={calls:S.info.render.calls,triangles:S.info.render.triangles};let I=0,Oe=0;r.scene.traverseVisible(te=>{const ne=te;if(!ne.isMesh||!ne.geometry||Ts(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,_t=S.getDrawingBufferSize(new mt),vr=S.getPixelRatio(),Ye=te=>Math.round(te*100)/100,gs=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:gs(O),completionWaitMedianMs:gs(K),width:_t.x,height:_t.y,cssWidth:Ye(_t.x/vr),cssHeight:Ye(_t.y/vr),devicePixelRatio:vr,drawn:W,scene:{meshes:I,triangles:Oe},drawMode:tt(n).drawMode}};if(wt.current=r.rendererSession,!r.initialized){x||(r.cleanups.push(Is({camera:b.camera,drawCamera:()=>r.session?.camera()??b.camera,orbit:b.orbitControls,scene:r.scene,frameCost:(v,f)=>Gn(v,f)},()=>null,(v,f)=>b.setHelper(v,f),{documentId:n})),st(()=>import("./stage-presence-markers-J7TV-MHA.js"),__vite__mapDeps([69,4,5,7,8,9,10,6,11,12,13,26,27,18,2,70])).then(v=>{if(r.isClosed||X.current!==r||r.presence)return;const f=v.bindStagePresenceMarkers({scene:r.scene,store:T,documentId:n,container:q,canvas:se,viewport:b,readVisibleCameraPose:()=>{const O=r.session?.camera()??b.renderCamera,K=O.getWorldPosition(new F),ce=O.fov;return{position:K,target:b.orbitControls.target,fov:typeof ce=="number"?ce:0}}});r.presence=f,r.cleanups.push(()=>f.dispose())}),r.cleanups.push(Co(L,qs(n))),r.cleanups.push(Ri({id:n,label:s,kind:Kr?"asset":"source",profiler:L.profiler}))),!x&&!Yr&&r.cleanups.push(ji(n,()=>({adapter:r.adapter,nodeId:r.adapter?.selection?.get()[0]??null})));const u=x?`${n}#chromeless-${++va}`:n;r.cleanups.push(Ti({id:u,label:s,contentClock:()=>r.contentSeconds,transportAdvances:()=>r.transportAdvances})),r.cleanups.push(T.shell.onViewportAction(v=>{switch(v.type){case"focus-selection":case"focus-scene":!r.session?.frame()&&r.session?.root&&b.focusOn(r.session.root);break;case"focus-entity":{const f=r.adapter?Be(r.adapter.hierarchy,v.id):null;f&&b.focusOn(f);break}case"snap-selection-to-floor":b.snapSelectionToFloor();break;case"set-view-preset":r.session?r.session.setViewPreset(v.preset==="perspective"?"isometric":v.preset,"view"):b.setViewPreset(v.preset);break;case"toggle-camera-view":r.session?.toggleCameraView();break;case"frame-all":!r.session?.frame(1,"all")&&r.session?.root?b.focusOn(r.session.root):r.session||b.focusOnScene();break;case"zoom-view":r.session?.cameraView()&&!r.session.cameraViewLocked()?r.session.zoomCameraView(v.direction>0?1.2:1/1.2):b.zoomStep(v.direction);break;case"step-view":if(r.session?.cameraView()&&!r.session.cameraViewLocked())break;b.stepView(v.step);break;case"toggle-projection":{const f=r.session;if(f?.cameraView())break;const K=(f?f.projection():b.projection)==="perspective"?"orthographic":"perspective";f?f.setProjection(K):b.setProjection(K);break}case"set-camera-pose":b.setPose(v.position,v.target,v.fov);break}}));let g="";r.cleanups.push(T.shell.subscribe(()=>{b.objectMap=T.objectMap,b.syncFromStore(),r.session?.syncSelectionPresentation();const v=(r.adapter?.selection?.get()??[]).join("\0");v!==g&&(g=v,x||Os(n))}));const S=()=>{const v=Math.max(1,q.clientWidth),f=Math.max(1,q.clientHeight),O=j.getPixelRatio();(se.width!==Math.floor(v*O)||se.height!==Math.floor(f*O))&&j.setSize(v,f,!1),b.resize(v,f),r.session?.resize(v,f),r.rendererSession.redraw()},h=new ResizeObserver(S);h.observe(q),r.cleanups.push(()=>h.disconnect()),S(),r.initialized=!0,Rs()}b.objectMap=T.objectMap,b.syncFromStore(),r.rendererSession.setActive(vt.current),r.rendererSession.redraw(),Jr=!0,Le?.dispose()}catch(ee){if(!Jr)try{Qr?.()}finally{Et&&E.root.parent===V&&Et.add(E.root),dr.dispose()}console.error(`[object3d document] ${s}: source update failed`,ee),oe(ee instanceof Error?ee.message:String(ee))}},En=Vr.current.then(kn);return Vr.current=En.catch(Ce=>{R||oe(Ce instanceof Error?Ce.message:String(Ce))}),()=>{R=!0}},[l,i,t,rr,sr,nr,s,n,pe,qr,Gr,or,Ur,ct,ar,x,Pt,at,ir,d,c,o,$,G,We,M,e,_e]),m.useEffect(()=>{const R=wt.current,me=w&&!zr.current;zr.current=w,R&&(me&&(ot.current=!1,pi(n)),R.setActive(w||_e))},[w,n,_e]);const Ct=X.current,cr=er==="ready"&&Ct?.viewport?{store:Ct.store,viewport:Ct.viewport,canvas:Ct.surface.canvas}:null,Cn=m.useCallback(()=>{const R=xt.current;return R?{adapter:R,nodeId:R.selection?.get()[0]??R.hierarchy.roots()[0]?.id??null}:null},[]),Xr=p.jsx("div",{"data-testid":"tool-object3d-authoring","data-volter-chromeless":x||void 0,className:pe?"volter-object3d-studio-stage":void 0,style:{position:x||fe?"relative":"absolute",...x?{width:"100%",height:"100%"}:fe?{flex:1,minHeight:0}:{inset:-xr},overflow:"hidden",background:pe?void 0:rt.surface.raised,pointerEvents:"auto"},children:p.jsxs("div",{ref:qt,style:{position:"absolute",inset:0,minHeight:0,overflow:"hidden"},children:[p.jsx(wa,{canvasHostRef:Ut}),w&&cr&&!x?p.jsx(m.Suspense,{fallback:null,children:p.jsx(da,{stage:cr})}):null,ue&&!x?p.jsx(ra,{store:ue,documentId:n,stage:cr,active:w,chrome:"document"}):null,ue&&Wr?p.jsx(Wr.Overlays,{store:ue,documentId:n,cameraPreviewRef:Ir,mountStatus:wn,rootIds:yn}):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(He,{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(Oo,{testId:"object3d-document-status",children:Ro}),p.jsx("div",{style:{position:"absolute",inset:x||fe?0:xr,pointerEvents:"none"},children:!x&&er==="ready"&&X.current&&p.jsx(ua,{viewport:X.current.viewport,documentId:n,session:X.current.session,store:X.current.store.shell,projection:Nr,displayName:s,...H?{statistics:H}:{},...xe!==void 0?{subject:xe}:{},...Te?{gridScale:Te}:{},objectName:R=>(me=>me?Be(me.hierarchy,R)?.name:void 0)(X.current?.adapter)??X.current?.store.objectMap.get(R)?.name??null})})]})});return fe?p.jsx(fi,{documentId:n,active:w,type:z??(Pt?"entity":"model"),title:s,status:e,selection:Cn,fill:!0,children:p.jsxs("div",{className:"volter-object3d-asset-workspace",children:[Xr,p.jsx(Mo,{transport:X.current?.transport??null})]})}):Xr}function ya(n){return p.jsx(gn,{...n})}const Ka=Object.freeze(Object.defineProperty({__proto__:null,Object3DDocumentViewport:gn,ToolObject3DAuthoring:ya},Symbol.toStringTag,{value:"Module"}));export{gn as O,Ka as S,na as V,Us as s,Zo 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-nySnA9Ug.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-C6b9kkV0.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,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/document-preview-three-CJkokdk6.js","assets/content-bounds-Co-PYlfQ.js","assets/hierarchy-marks-C9FKSQHH.js","assets/workspace-arrangement-BzOJBZHz.js","assets/index-nySnA9Ug.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/three.core-3arARmh6.js","assets/editor-layers-QQ71XEXw.js","assets/renderer-ownership-BovSEcLv.js","assets/three.module-BLhyNg0e.js","assets/scene-framing-DmGFFnxb.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/standard-viewport-dressing-DXhgWBOp.js","assets/user-data-BiloulL-.js"])))=>i.map(i=>d[i]);
2
- import{hg as O,hh as dt,au as Q,aw as Kt,bi as zt,fV as It,bj as Vt,fW as St,av as tt,hi as Ht,al as g,eM as Zt,dT as Xt,hj as Wt,f5 as Ut,fg as X,dK as Yt,as as Mt,hk as qt,fn as Jt,gF as mt,eO as Qt,b9 as te,at as W,cC as Et,_ as A,hl as ee,hm as ne,Z as oe,hn as Z,ho as re,dv as se}from"./index-nySnA9Ug.js";import{a as m}from"./jsx-runtime-DPjLkJKQ.js";import{a as ie}from"./three-contract-Dkt6PmWY.js";import{a as ae}from"./object3d-document-session-registry-B46cPnBb.js";import{O as ce}from"./Object3DDocumentViewport-eDH3ZPyb.js";import{S as ue}from"./standard-viewport-dressing-DXhgWBOp.js";import{t as le}from"./viewport-surface-status-BfoaH0c4.js";import{r as w}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{withStoryMountTurn as vt,lastStoryMountPhaseTiming as de}from"./story-three-preview-e0faozfl.js";import{m as me}from"./three-story-model-DvgpSf5W.js";import{c as pe}from"./content-bounds-Co-PYlfQ.js";import{EDITOR_LAYER as he}from"./editor-layers-QQ71XEXw.js";import{setUserData as fe}from"./user-data-CODoGZqA.js";import{bh as R,co as Dt,K as xe,cx as ge,db as ye,cp as be,aI as we,N as Se,a$ as Me,c0 as Ee,b_ as ve,el as De,I as _e,fo as P,ex as Oe,cj as Pe}from"./three.core-3arARmh6.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./environment-Dg-YaLsA.js";import"./three.module-BLhyNg0e.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./user-data-BiloulL-.js";import"./workspace-arrangement-BzOJBZHz.js";import"./asset-preview-CUSDAKVD.js";import"./renderer-ownership-BovSEcLv.js";import"./hierarchy-marks-C9FKSQHH.js";import"./studio-environment-B2vsjqle.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./bitmap-label-Ct4k6ehY.js";import"./crash-null-boundary-v3a0uEgw.js";import"./events-156d8d12.esm-DmeaOP4r.js";import"./index-DzuOGwVB.js";import"./story-mount-turn-DFRTj5hi.js";import"./object-marks-BnvSuCTt.js";const L={neighbourGapFactor:.45,minGap:.5,districtGapFactor:.6,minDistrictGap:3},$=.7,Te={min:[0,0,0],max:[0,0,0]};function et(t){return[...t.min,...t.max].some(r=>!Number.isFinite(r))?Te:{min:[Math.min(t.min[0],t.max[0]),Math.min(t.min[1],t.max[1]),Math.min(t.min[2],t.max[2])],max:[Math.max(t.min[0],t.max[0]),Math.max(t.min[1],t.max[1]),Math.max(t.min[2],t.max[2])]}}function nt(t){return[t.max[0]-t.min[0],t.max[1]-t.min[1],t.max[2]-t.min[2]]}function pt(t){const e=nt(et(t));return e[0]*e[2]}function ke(t){return-et(t).min[1]}function _t(t){const e=Math.max(t[0],t[2]),r=Math.max(.15,.1*e);return[Math.max(t[0]+2*r,$),Math.max(t[2]+2*r,$)]}function Ot(t){return Math.max(t[0],t[1])}function Be(t){return t.map(e=>({item:e,bounds:et(e.bounds)})).sort((e,r)=>{const n=pt(e.bounds)-pt(r.bounds);return n!==0?n:e.item.id<r.item.id?-1:1})}function Re(t){const e=Math.max($,...t.map(({bounds:r})=>Ot(_t(nt(r)))));return Math.max(10,2.2*e)}function je(t,e,r){const n=Re(t),s=[];let o={slots:[],xEdge:0,depth:0,previousSpan:null};const i=()=>{o.slots.length>0&&s.push({slots:o.slots,xEdge:o.xEdge,depth:o.depth}),o={slots:[],xEdge:0,depth:0,previousSpan:null}};for(const{item:a,bounds:u}of t){const c=nt(u),l=_t(c),d=Ot(l),p=o.previousSpan===null?0:Math.max(r,e*Math.max(o.previousSpan,d));o.slots.length>0&&o.xEdge+p+l[0]>n&&i();const y=o.previousSpan===null?0:p,b=o.xEdge+y+l[0]/2;o.xEdge=b+l[0]/2,o.depth=Math.max(o.depth,l[1]),o.previousSpan=d,o.slots.push({item:a,bounds:u,size:c,footprint:l,centreX:b})}return i(),s}function ht(t,e,r,n,s){const o=je(e,n,s),i=[];let a=r,u=null,c=0;for(const l of o){u!==null&&(a+=Math.max(s,n*Math.max(u,l.depth)));const d=a+l.depth/2;a=d+l.depth/2,u=l.depth,c=Math.max(c,l.xEdge);for(const p of l.slots)i.push({id:p.item.id,groupKey:t,translation:[p.centreX-(p.bounds.min[0]+p.bounds.max[0])/2,ke(p.bounds),d-(p.bounds.min[2]+p.bounds.max[2])/2],anchor:[p.centreX,0,d],size:p.size,footprint:p.footprint})}return{placements:i,xEdge:c,depth:a-r}}function Ce(t){return Math.min(3,Math.max(.6,.08*t))}function Ne(t,e={}){const r=e.neighbourGapFactor??L.neighbourGapFactor,n=e.minGap??L.minGap,s=e.districtGapFactor??L.districtGapFactor,o=e.minDistrictGap??L.minDistrictGap,i=new Map;for(const d of t){const p=i.get(d.groupKey);p?p.push(d):i.set(d.groupKey,[d])}const a=[];let u=0,c=null;for(const d of i.keys()){const p=Be(i.get(d)??[]),y=ht(d,p,0,r,n),b=Ce(Math.max(y.depth,$)),x=y.depth+2*b;c!==null&&(u+=Math.max(o,s*Math.max(c,x)));const h=u;u=h+x,c=x;const{placements:v,xEdge:V}=ht(d,p,h+b,r,n),_={minX:-b,maxX:V+b,minZ:h,maxZ:h+x};a.push({groupKey:d,items:v,extent:_,anchor:[(_.minX+_.maxX)/2,0,_.minZ]})}const l=a.length===0?{minX:0,maxX:0,minZ:0,maxZ:0}:{minX:Math.min(...a.map(d=>d.extent.minX)),maxX:Math.max(...a.map(d=>d.extent.maxX)),minZ:Math.min(...a.map(d=>d.extent.minZ)),maxZ:Math.max(...a.map(d=>d.extent.maxZ))};return{districts:a,extent:l}}const Pt={min:[0,0,0],max:[0,0,0]},Ae=.35,ft=20;function ot(t){return[...t.min,...t.max].every(e=>Number.isFinite(e))}function z(t){return ot(t)?{min:[Math.min(t.min[0],t.max[0]),Math.min(t.min[1],t.max[1]),Math.min(t.min[2],t.max[2])],max:[Math.max(t.min[0],t.max[0]),Math.max(t.min[1],t.max[1]),Math.max(t.min[2],t.max[2])]}:Pt}function Tt(t){const e=z(t);return[e.max[0]-e.min[0],e.max[1]-e.min[1],e.max[2]-e.min[2]]}function K(t){const e=t.map(z).filter(o=>ot(o));if(e.length===0)return Pt;const r=e[0],n=[r.min[0],r.min[1],r.min[2]],s=[r.max[0],r.max[1],r.max[2]];for(let o=1;o<e.length;o++){const i=e[o];n[0]=Math.min(n[0],i.min[0]),n[1]=Math.min(n[1],i.min[1]),n[2]=Math.min(n[2],i.min[2]),s[0]=Math.max(s[0],i.max[0]),s[1]=Math.max(s[1],i.max[1]),s[2]=Math.max(s[2],i.max[2])}return{min:n,max:s}}function U(t,e){const r=z(t);return{min:[r.min[0]+e[0],r.min[1]+e[1],r.min[2]+e[2]],max:[r.max[0]+e[0],r.max[1]+e[1],r.max[2]+e[2]]}}function Le(t){return"min"in t?{bounds:t}:{bounds:t.bounds,...t.overlay===!0?{overlay:!0}:{},...t.enclosure===!0?{enclosure:!0}:{}}}function Ge(t,e={}){if(e.overlay)return"volume";if(e.enclosure)return"environment-scale";const n=[...Tt(t)].sort((a,u)=>u-a),s=n[0]??0,o=n[1]??0;return(n[2]??0)<Ae&&o>=ft&&s>=ft?"unbounded-plane":null}function Fe(t){const e=t.map(Le).map(a=>({bounds:z(a.bounds),overlay:a.overlay===!0,enclosure:a.enclosure===!0})).filter(a=>ot(a.bounds)),r=e.map(a=>a.bounds),n=K(r);if(e.length<2)return{full:n,presence:n,helpers:[]};const s=e.map(a=>Ge(a.bounds,{overlay:a.overlay,enclosure:a.enclosure})),o=e.filter((a,u)=>s[u]===null).map(a=>a.bounds);if(o.length===0)return{full:n,presence:n,helpers:[]};const i=[];for(let a=0;a<e.length;a++){const u=s[a]??null;u!==null&&i.push({kind:u,bounds:e[a].bounds,size:Tt(e[a].bounds)})}return{full:n,presence:K(o),helpers:i}}function $e(t){const e=t.map(u=>({exhibit:u,presence:Fe(u.nodes)})),r=e.map(({exhibit:u,presence:c})=>({id:u.id,groupKey:u.groupKey,bounds:c.presence})),n=Ne(r),s=new Map;for(const u of n.districts)for(const c of u.items)s.set(c.id,c);const o=[],i=[],a=[];for(const{exhibit:u,presence:c}of e){const l=s.get(u.id);l&&(o.push({id:u.id,groupKey:u.groupKey,full:c.full,presence:c.presence,helpers:c.helpers,placement:l}),i.push(U(c.presence,l.translation)),a.push(U(c.full,l.translation)))}return{layout:n,exhibits:o,frame:K(i),fullFrame:K(a)}}const kt="volterBoardStoryId",Bt="volterBoardComponentKey",I="volter:board:no-story";function Ke(t){return{stories:t.length,modules:new Set(t.map(e=>e.modulePath)).size}}const Y="Ungrouped",xt="No story yet",ze=.9;function Ie(t){return t instanceof Error?t.message:String(t)}async function Ve(t,e,r){const n=Date.now();let s=null,o=null;try{s=await r(e),me(s.root)||(s.dispose(),s=null,o="The story mounted no three content.")}catch(a){o=Ie(a)}const i=de();return Ht({id:t.id,ms:Date.now()-n,runtimeMs:i?.runtimeMs??0,loadMs:i?.loadMs??0,fiberMs:i?.fiberMs??0,settleMs:i?.settleMs??0,ok:s!==null}),{identity:t,mounted:s,reason:o}}function Rt(t){t.traverse(e=>{e.layers.enable(he),fe(e,"editorHelper",!0)})}const He={color:3291977,roughness:.92,metalness:.04,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:2},gt=.06,Ze=0,yt=0,Xe=11124182,We=9413565;function Ue(t){const e=t.extent.maxX-t.extent.minX,r=t.extent.maxZ-t.extent.minZ,n=new Dt(new xe(e,gt,r),new ge(He));return n.name=`volter:board-pad:${t.groupKey||Y}`,n.position.set((t.extent.minX+t.extent.maxX)/2,Ze-gt/2,(t.extent.minZ+t.extent.maxZ)/2),n.receiveShadow=!0,Rt(n),n}function Ye(t,e){const r=t/2,n=e/2,s=[[-r,-n],[r,-n],[r,n],[-r,n]],o=[];for(let u=0;u<s.length;u++){const c=s[u],l=s[(u+1)%s.length];o.push(c[0],0,c[1],l[0],0,l[1])}const i=new Se;i.setAttribute("position",new Me(o,3));const a=new Ee(i,new ve({color:Xe,dashSize:.09,gapSize:.06}));return a.computeLineDistances(),a}function qe(t){const e=new R;e.name=`volter:board-ghost:${t.name}`,e.userData[Bt]=t.key;const[r,n]=t.placement.footprint,s=new Dt(new ye(r,n),new be({color:We,transparent:!0,opacity:.1,depthWrite:!1,side:we}));s.rotation.x=-Math.PI/2,s.position.y=yt;const o=Ye(r,n);return o.position.y=yt,e.add(s,o),e.position.set(t.placement.anchor[0],0,t.placement.anchor[2]),e}function Je(t,e,r){if(!r.componentName)return!0;const n=St(t,r.componentName,e);return!n||n.modulePath===e&&n.name===r.name}function Qe(t){return jt(t).length}function jt(t){const e=[],r=new Map,n=tt();for(const s of t)if(s.ok)for(const o of s.stories){const i=Q({modulePath:s.modulePath,regions:n});if(i.medium!=="three"){i.via==="undeclared"&&Kt(s.modulePath,i.reason);continue}if(!Je(t,s.modulePath,o))continue;const a=zt({modulePath:s.modulePath,...o.title===void 0?{}:{title:o.title}}),u=It(a),c=`${u}/${a.leaf}`;r.set(c,(r.get(c)??0)+1),e.push({identity:{id:`${s.modulePath}#${o.name}`,storyName:o.name,modulePath:s.modulePath,groupKey:u,groupLeaf:a.leaf,groupPath:Vt(a)},storyLabel:o.label,Component:o.Component})}return e.map(({identity:s,storyLabel:o,Component:i})=>({identity:{...s,label:(r.get(`${s.groupKey}/${s.groupLeaf}`)??0)>1?`${s.groupLeaf} · ${o}`:s.groupLeaf},Component:i}))}function tn(t,e){const r=new Set,n=[];for(const s of e){if(s.surface!=="three"||s.contentKind==="image")continue;const o=`${s.path}#${s.name}`;r.has(o)||(r.add(o),!St(t,s.name,s.path)&&n.push(s))}return n}function en(t,e,r){const n=new R;return n.name=`volter:board-exhibit:${t.label}`,n.position.set(...e.translation),n.add(r.root),n.userData[kt]=t.id,n}function q(t){return vt(async()=>{t.dispose()})}async function Ct(t,e=[],r){return vt(n=>an(t,e,r,n))}async function nn(t,e,r){const n=[];for(const{identity:s,Component:o}of t){if(e?.aborted)break;n.push(await Ve(s,o,r))}return n}function on(t){return{min:t.min.toArray(),max:t.max.toArray()}}function rn(t){const e=new Map,r=new Map,n=[],s=[];for(const o of t){if(!o.mounted){s.push({id:o.identity.id,modulePath:o.identity.modulePath,storyName:o.identity.storyName,reason:o.reason??"The story produced no Object3D."});continue}const i=pe(o.mounted.root).map(a=>({bounds:on(a.box),overlay:a.overlay,enclosure:a.enclosure}));e.set(o.identity.id,o.mounted),r.set(o.identity.id,o.identity),n.push({id:o.identity.id,groupKey:o.identity.groupKey,nodes:i})}return{mounts:e,identities:r,measures:n,skipped:s}}function sn(t){const e=ze/2;return{id:`${t.path}#${t.name}`,groupKey:I,nodes:[{min:[-e,0,-e],max:[e,0,e]}]}}async function an(t,e,r,n){const s=Date.now(),o=jt(t);O("candidate-collect",Date.now()-s),dt({candidateCount:o.length});const i=Date.now(),a=await nn(o,r,n);O("story-mounts",Date.now()-i);const u=Date.now(),{mounts:c,identities:l,measures:d,skipped:p}=rn(a);O("bounds",Date.now()-u);const y=Date.now(),b=tn(t,e),x=new Map(b.map(f=>[`${f.path}#${f.name}`,f])),h=$e([...d,...b.map(sn)]),v=h.layout,V=new Map(h.exhibits.map(f=>[f.id,f]));O("layout",Date.now()-y);const _=Date.now(),T=new R;T.name="volter:three-board";const k=new R;k.name="volter:board-chrome",Rt(k),T.add(k);const j=[],rt=[],st=[],it=[k];for(const f of v.districts){const M=f.groupKey===I,D=new R;D.name=`volter:board-district:${M?xt:f.groupKey||Y}`,T.add(D),k.add(Ue(f));for(const S of f.items){if(M){const N=x.get(S.id);if(!N)continue;const ut={key:S.id,name:N.name,path:N.path,line:N.line,placement:S},lt=qe(ut);D.add(lt),it.push(lt),st.push(ut);continue}const C=c.get(S.id),H=l.get(S.id),E=V.get(S.id);!C||!H||!E||(D.add(en(H,S,C)),j.push({...H,placement:S,fullSize:[E.full.max[0]-E.full.min[0],E.full.max[1]-E.full.min[1],E.full.max[2]-E.full.min[2]],helpers:E.helpers}))}rt.push({groupKey:f.groupKey,label:M?xt:f.groupKey||Y,placement:f})}const $t=j.flatMap(f=>f.helpers.map(M=>({exhibitId:f.id,exhibitLabel:f.label,kind:M.kind,size:M.size})));let at=!1;const ct={root:T,exhibits:j,districts:rt,ghostSlots:st,skipped:p,frameBounds:h.frame,openingFrameBounds:h.exhibits[0]?U(h.exhibits[0].presence,h.exhibits[0].placement.translation):h.frame,helperVolumes:$t,dispose(){if(!at){at=!0;for(const f of it)f.traverse(M=>{const D=M;D.geometry?.dispose();const S=D.material;if(Array.isArray(S))for(const C of S)C.dispose();else S?.dispose()}),f.removeFromParent();for(const f of c.values())try{f.dispose()}catch(M){console.error("[three-board] a story mount failed to dispose.",M)}c.clear(),T.clear()}}};if(O("assemble",Date.now()-_),dt({exhibitCount:j.length,skippedCount:p.length}),r?.aborted)throw ct.dispose(),new Error("The 3D board build was superseded by a newer one.");return ct}function cn(t){return Nt(t,kt)}function un(t){return Nt(t,Bt)}function Nt(t,e){let r=t;for(;r;){const n=r.userData[e];if(typeof n=="string")return n;r=r.parent}return null}const At="3D";let F=null,Lt=0;const J=new Set;function bt(){Lt++;for(const t of J)t()}function ln(t){return J.add(t),()=>{J.delete(t)}}function dn(){return Lt}function Gt(t){return Number.isFinite(t)?t>=10?`${Math.round(t)} m`:t>=1?`${t.toFixed(1)} m`:`${t.toFixed(2)} m`:"—"}function mn(t,e,r){const n=Ft(e,r);return n?qt(Jt,t,{modulePath:n.modulePath,storyName:n.storyName,title:n.label}):null}function pn(t,e,r){const n=Mn(t,e);if(!n)return null;const s={definitionLocation:()=>({file:n.path,line:n.line})};return r?mt(s,n.key,"definition",r):mt(s,n.key,"definition")}function hn(t){const e=tt(),r=t.filter(o=>o.ok&&Q({modulePath:o.modulePath,regions:e}).medium==="three"),n=w.useRef([]),s=n.current;return(s.length!==r.length||s.some((o,i)=>o!==r[i]))&&(n.current=r),n.current}function fn({documentId:t,active:e,store:r}){const n=w.useSyncExternalStore(Mt,W),s=hn(n),[o,i]=w.useState({status:"idle"});e&&ee(t);const[a,u]=w.useState(e);w.useEffect(()=>{e&&u(!0)},[e]),w.useEffect(()=>{if(!a)return;const p=new AbortController;let y=null;i({status:"building"}),ne(t,{modulesAlreadyLoaded:s.length>0});const b=Date.now();return Et().then(x=>{const h=Date.now()-b;return O("component-index",h,{busyMs:0,waitMs:h}),x.ok||oe.warn(`Component index unavailable, so this board shows no ghost slots: ${x.reason}`,"three-board"),Ct(s,x.ok?x.entries:[],p.signal)}).then(x=>{if(p.signal.aborted){Z(t),q(x);return}y=x,F=x,bt(),re(),i({status:"ready",scene:x})},x=>{if(p.signal.aborted){Z(t);return}i({status:"error",message:x instanceof Error?x.message:String(x)})}),()=>{p.abort(),y?(F===y&&(F=null),q(y),bt()):Z(t)}},[s,a,t]);const c=o.status==="ready"?o.scene:null,l=w.useCallback(()=>{if(!c)throw new Error("The 3D board is still building.");return{root:c.root,dispose(){}}},[c]),d=w.useCallback(p=>{if(mn(r,c,p)!==null)return;const y=pn(c,p);y&&y.then(se)},[c,r]);return m.jsx("div",{style:{position:"relative",flex:1,minHeight:0,pointerEvents:"auto"},children:c?m.jsxs(m.Fragment,{children:[m.jsx(ce,{documentId:t,sourcePath:"Generated from this project’s stories",displayName:At,build:l,active:e,onOpenNode:d,cameraDirection:ue,frameBounds:c.frameBounds,openingFrameBounds:c.openingFrameBounds,dressing:{grid:!0}}),m.jsx(gn,{documentId:t,scene:c,active:e}),m.jsx(xn,{scene:c})]}):m.jsxs("div",{"data-testid":"three-board-status",style:{padding:16,fontSize:12,color:g.content.muted},children:[o.status==="error"&&o.message,o.status==="building"&&le(Qe(s)),o.status==="idle"&&"Open this tab to lay out every story at true scale."]})})}function xn({scene:t}){const[e,r]=w.useState(!1),n=Ke(t.skipped),s=t.districts.filter(o=>o.groupKey!==I).length;return m.jsxs("div",{"data-testid":"three-board-status",style:{position:"absolute",left:8,bottom:8,maxWidth:420,padding:"4px 8px",borderRadius:g.shape.small,background:g.surface.raised,border:`1px solid ${g.boundary.default}`,fontSize:10,color:g.content.muted,pointerEvents:"auto"},children:[t.exhibits.length," exhibit",t.exhibits.length===1?"":"s"," · ",s," ","district",s===1?"":"s",t.helperVolumes.length>0&&m.jsxs(m.Fragment,{children:[" · ",t.helperVolumes.length," helper volume",t.helperVolumes.length===1?"":"s"," at true scale, outside the default frame"]}),t.ghostSlots.length>0&&m.jsxs(m.Fragment,{children:[" · ",t.ghostSlots.length," component",t.ghostSlots.length===1?"":"s"," without stories"]}),t.skipped.length>0&&m.jsxs(m.Fragment,{children:[" · ",m.jsxs("span",{role:"button",tabIndex:0,"aria-expanded":e,onClick:()=>r(o=>!o),onKeyDown:o=>{(o.key===" "||o.key==="Enter")&&(o.preventDefault(),r(i=>!i))},style:{cursor:"pointer",color:g.accent.default},children:[n.stories," ",n.stories===1?"story":"stories"," in ",n.modules," ",n.modules===1?"module":"modules"," not on this board"]})]}),e&&m.jsx("div",{style:{marginTop:4,maxHeight:160,overflow:"auto"},children:t.skipped.map(o=>m.jsxs("div",{style:{padding:"1px 0"},children:[m.jsxs("code",{style:{color:g.content.dim},children:[o.modulePath,"#",o.storyName]})," ","— ",o.reason]},o.id))})]})}function gn({documentId:t,scene:e,active:r}){const n=w.useRef(null),[s,o]=w.useState([]);return w.useEffect(()=>{if(!r)return;let i=0,a=!1;const u=yn(e),c=()=>{if(a)return;i=requestAnimationFrame(c);const l=n.current,d=ae(t);!l||!d||l.clientWidth===0||l.clientHeight===0||o(bn(u,d.camera(),l.clientWidth,l.clientHeight))};return i=requestAnimationFrame(c),()=>{a=!0,cancelAnimationFrame(i)}},[r,t,e]),m.jsx("div",{ref:n,"data-testid":"three-board-labels",style:{position:"absolute",inset:-12,pointerEvents:"none",overflow:"hidden"},children:s.map(i=>m.jsxs("div",{style:{position:"absolute",left:i.x,top:i.y,transform:"translate(-50%, -100%)",whiteSpace:"nowrap",padding:i.district?"2px 7px":"1px 5px",borderRadius:g.shape.small,background:g.surface.raised,border:`1px ${i.ghost?"dashed":"solid"} ${i.district&&!i.ghost?g.accent.default:g.boundary.default}`,color:i.district&&!i.ghost?g.content.primary:g.content.muted,fontSize:i.district?12:10,fontWeight:i.district?600:400,opacity:i.ghost?.9:1},children:[i.text,m.jsx("span",{style:{marginLeft:6,color:g.content.dim,fontWeight:400},children:i.detail})]},i.key))})}const B=new P;function wt(t){return[t.anchor[0],0,t.anchor[2]-t.footprint[1]/2]}function yn(t){return[...t.districts.map(e=>{const r=e.groupKey===I,n=e.placement.items.length;return{key:`district:${e.groupKey}`,text:e.label,detail:r?`${n} component${n===1?"":"s"}`:`${n} exhibit${n===1?"":"s"}`,district:!0,ghost:r,point:e.placement.anchor}}),...t.exhibits.map(e=>({key:`exhibit:${e.id}`,text:e.label,detail:Gt(e.placement.size[1]),district:!1,ghost:!1,point:wt(e.placement)})),...t.ghostSlots.map(e=>({key:`ghost:${e.key}`,text:e.name,detail:"No story yet",district:!1,ghost:!0,point:wt(e.placement)}))]}function bn(t,e,r,n){e.updateMatrixWorld();const s=[];for(const o of t)B.set(o.point[0],o.point[1],o.point[2]).project(e),!(B.z>1)&&s.push({key:o.key,text:o.text,detail:o.detail,district:o.district,ghost:o.ghost,x:(B.x*.5+.5)*r,y:(-B.y*.5+.5)*n,depth:B.z});return Sn(s).sort((o,i)=>i.depth-o.depth)}function wn(t){const e=t.district?12:10,r=(t.text.length+t.detail.length)*e*.62+24,n=e+8;return[t.x-r/2,t.y-n,t.x+r/2,t.y]}function Sn(t){const e=[...t].sort((n,s)=>(s.district?1:0)-(n.district?1:0)||n.depth-s.depth),r=[];for(const n of e){const s=wn(n);r.some(i=>s[0]<i.rect[2]&&s[2]>i.rect[0]&&s[1]<i.rect[3]&&s[3]>i.rect[1])||r.push({label:n,rect:s})}return r.map(n=>n.label)}function Ft(t,e){if(!t)return null;const r=cn(e);return r?t.exhibits.find(n=>n.id===r)??null:null}function Mn(t,e){if(!t)return null;const r=un(e);return r?t.ghostSlots.find(n=>n.key===r)??null:null}function En({adapter:t,nodeId:e}){w.useSyncExternalStore(ln,dn);const n=[...e?[e]:[],...t.selection?.get()??[]].reduce((s,o)=>s??Ft(F,ie(t.hierarchy,o)),null);return m.jsx("div",{"data-testid":"inspector-exhibit",style:{pointerEvents:"auto",padding:8,borderBottom:`1px solid ${g.boundary.default}`},children:n?m.jsxs("div",{style:{display:"grid",gap:3,fontSize:11},children:[m.jsx("div",{style:{color:g.content.primary,fontWeight:600},children:n.label}),m.jsx(G,{label:"Story",value:n.storyName}),m.jsx(G,{label:"Group",value:n.groupPath}),m.jsx(G,{label:"Module",value:n.modulePath}),m.jsx(G,{label:"Size",value:n.placement.size.map(s=>Gt(s)).join(" × ")})]}):m.jsx("div",{style:{fontSize:11,color:g.content.dim},children:"Pick an exhibit to read its story."})})}function G({label:t,value:e}){return m.jsxs("div",{style:{display:"flex",gap:6},children:[m.jsx("span",{style:{width:52,flexShrink:0,color:g.content.muted},children:t}),m.jsx("code",{style:{color:g.content.primary,overflow:"hidden",textOverflow:"ellipsis"},title:e,children:e})]})}const vn=Qt();function Dn(){vn.ensure(t=>{t(Zt({match:()=>Ut()?.descriptor.id===X,id:"exhibit",title:"Exhibit",icon:Wt,order:Xt,Section:En}))})}const _n={revision:()=>JSON.stringify(W().map(t=>t.modulePath)),subscribe:Mt,capture:async t=>{await te();const e=tt(),r=W().filter(o=>o.ok&&Q({modulePath:o.modulePath,regions:e}).medium==="three"),n=await Et(),s=await Ct(r,n.ok?n.entries:[]);try{const{captureAuthoredThreeScenePreview:o}=await A(async()=>{const{captureAuthoredThreeScenePreview:h}=await import("./document-preview-three-CJkokdk6.js");return{captureAuthoredThreeScenePreview:h}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),{createStandardEnvironment:i}=await A(async()=>{const{createStandardEnvironment:h}=await import("./environment-Dg-YaLsA.js");return{createStandardEnvironment:h}},__vite__mapDeps([19,17,14,20,21,22])),{applyStandardViewportDressing:a}=await A(async()=>{const{applyStandardViewportDressing:h}=await import("./standard-viewport-dressing-DXhgWBOp.js").then(v=>v.d);return{applyStandardViewportDressing:h}},__vite__mapDeps([23,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,17,20,21,22,24])),{isEditorOwnedObject:u}=await A(async()=>{const{isEditorOwnedObject:h}=await import("./editor-layers-QQ71XEXw.js");return{isEditorOwnedObject:h}},__vite__mapDeps([15,3,4,5,6,7,8,9,10,11,12,13]));s.root.traverse(h=>{u(h)&&(h.visible=!1)});const c=new De;c.add(s.root);const l=new _e(new P(...s.frameBounds.min),new P(...s.frameBounds.max)),d=l.isEmpty()?new P:l.getCenter(new P),y=(l.isEmpty()?1:Math.max(.01,l.getBoundingSphere(new Oe).radius))/Math.sin(Pe.degToRad(42/2))*1.15,b=d.clone().addScaledVector(new P(1,.75,1).normalize(),y),x={...t,camera:{position:b,target:d,fov:42}};return o(s.root,c,x,h=>{const v=a(c,{environment:i(h),background:!1});return()=>v.dispose()})}finally{await q(s)}}};function ho(t){return Dn(),Yt({id:X,title:At,kind:"content-browser",workspaceRole:"workspace-reference",Content:e=>m.jsx(fn,{...e,store:t}),readOnly:!0,preview:_n,presentation:()=>({kind:"workspace",id:X})},{category:"canvas"})}export{En as BoardExhibitSection,X as THREE_COMPONENTS_DOCUMENT_ID,Dn as ensureThreeBoardContributionsRegistered,ho as installThreeBoardDocument,mn as openExhibitStoryDocument,pn as openGhostComponentSource};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/document-preview-three-CbIS_Aca.js","assets/content-bounds-CKyqwWXn.js","assets/hierarchy-marks-DYUvG4lt.js","assets/workspace-arrangement-BoYqL0C2.js","assets/index-C6b9kkV0.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/three.core-3arARmh6.js","assets/editor-layers-_Gcy52mS.js","assets/renderer-ownership-BovSEcLv.js","assets/three.module-BLhyNg0e.js","assets/scene-framing-DPK5z1LB.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/standard-viewport-dressing-DSi6qJFC.js","assets/user-data-DKfhN35w.js"])))=>i.map(i=>d[i]);
2
+ import{hg as O,hh as dt,au as Q,aw as Kt,bi as zt,fV as It,bj as Vt,fW as St,av as tt,hi as Ht,al as g,eM as Zt,dT as Xt,hj as Wt,f5 as Ut,fg as X,dK as Yt,as as Mt,hk as qt,fn as Jt,gF as mt,eO as Qt,b9 as te,at as W,cC as Et,_ as A,hl as ee,hm as ne,Z as oe,hn as Z,ho as re,dv as se}from"./index-C6b9kkV0.js";import{a as m}from"./jsx-runtime-DPjLkJKQ.js";import{a as ie}from"./three-contract-Dkt6PmWY.js";import{a as ae}from"./object3d-document-session-registry--r1BseN3.js";import{O as ce}from"./Object3DDocumentViewport-nrhxhWxf.js";import{S as ue}from"./standard-viewport-dressing-DSi6qJFC.js";import{t as le}from"./viewport-surface-status-BCnAK4lN.js";import{r as w}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{withStoryMountTurn as vt,lastStoryMountPhaseTiming as de}from"./story-three-preview-EAGsWdvg.js";import{m as me}from"./three-story-model-aKieakmn.js";import{c as pe}from"./content-bounds-CKyqwWXn.js";import{EDITOR_LAYER as he}from"./editor-layers-_Gcy52mS.js";import{setUserData as fe}from"./user-data-CODoGZqA.js";import{bh as R,co as Dt,K as xe,cx as ge,db as ye,cp as be,aI as we,N as Se,a$ as Me,c0 as Ee,b_ as ve,el as De,I as _e,fo as P,ex as Oe,cj as Pe}from"./three.core-3arARmh6.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./environment-Dg-YaLsA.js";import"./three.module-BLhyNg0e.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./user-data-DKfhN35w.js";import"./workspace-arrangement-BoYqL0C2.js";import"./asset-preview-DVSFT7SS.js";import"./renderer-ownership-BovSEcLv.js";import"./hierarchy-marks-DYUvG4lt.js";import"./studio-environment-DPyvNCMf.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./bitmap-label-Ct4k6ehY.js";import"./crash-null-boundary-v3a0uEgw.js";import"./events-156d8d12.esm-DmeaOP4r.js";import"./index-DzuOGwVB.js";import"./story-mount-turn-DFRTj5hi.js";import"./object-marks-BnvSuCTt.js";const L={neighbourGapFactor:.45,minGap:.5,districtGapFactor:.6,minDistrictGap:3},$=.7,Te={min:[0,0,0],max:[0,0,0]};function et(t){return[...t.min,...t.max].some(r=>!Number.isFinite(r))?Te:{min:[Math.min(t.min[0],t.max[0]),Math.min(t.min[1],t.max[1]),Math.min(t.min[2],t.max[2])],max:[Math.max(t.min[0],t.max[0]),Math.max(t.min[1],t.max[1]),Math.max(t.min[2],t.max[2])]}}function nt(t){return[t.max[0]-t.min[0],t.max[1]-t.min[1],t.max[2]-t.min[2]]}function pt(t){const e=nt(et(t));return e[0]*e[2]}function ke(t){return-et(t).min[1]}function _t(t){const e=Math.max(t[0],t[2]),r=Math.max(.15,.1*e);return[Math.max(t[0]+2*r,$),Math.max(t[2]+2*r,$)]}function Ot(t){return Math.max(t[0],t[1])}function Be(t){return t.map(e=>({item:e,bounds:et(e.bounds)})).sort((e,r)=>{const n=pt(e.bounds)-pt(r.bounds);return n!==0?n:e.item.id<r.item.id?-1:1})}function Re(t){const e=Math.max($,...t.map(({bounds:r})=>Ot(_t(nt(r)))));return Math.max(10,2.2*e)}function je(t,e,r){const n=Re(t),s=[];let o={slots:[],xEdge:0,depth:0,previousSpan:null};const i=()=>{o.slots.length>0&&s.push({slots:o.slots,xEdge:o.xEdge,depth:o.depth}),o={slots:[],xEdge:0,depth:0,previousSpan:null}};for(const{item:a,bounds:u}of t){const c=nt(u),l=_t(c),d=Ot(l),p=o.previousSpan===null?0:Math.max(r,e*Math.max(o.previousSpan,d));o.slots.length>0&&o.xEdge+p+l[0]>n&&i();const y=o.previousSpan===null?0:p,b=o.xEdge+y+l[0]/2;o.xEdge=b+l[0]/2,o.depth=Math.max(o.depth,l[1]),o.previousSpan=d,o.slots.push({item:a,bounds:u,size:c,footprint:l,centreX:b})}return i(),s}function ht(t,e,r,n,s){const o=je(e,n,s),i=[];let a=r,u=null,c=0;for(const l of o){u!==null&&(a+=Math.max(s,n*Math.max(u,l.depth)));const d=a+l.depth/2;a=d+l.depth/2,u=l.depth,c=Math.max(c,l.xEdge);for(const p of l.slots)i.push({id:p.item.id,groupKey:t,translation:[p.centreX-(p.bounds.min[0]+p.bounds.max[0])/2,ke(p.bounds),d-(p.bounds.min[2]+p.bounds.max[2])/2],anchor:[p.centreX,0,d],size:p.size,footprint:p.footprint})}return{placements:i,xEdge:c,depth:a-r}}function Ce(t){return Math.min(3,Math.max(.6,.08*t))}function Ne(t,e={}){const r=e.neighbourGapFactor??L.neighbourGapFactor,n=e.minGap??L.minGap,s=e.districtGapFactor??L.districtGapFactor,o=e.minDistrictGap??L.minDistrictGap,i=new Map;for(const d of t){const p=i.get(d.groupKey);p?p.push(d):i.set(d.groupKey,[d])}const a=[];let u=0,c=null;for(const d of i.keys()){const p=Be(i.get(d)??[]),y=ht(d,p,0,r,n),b=Ce(Math.max(y.depth,$)),x=y.depth+2*b;c!==null&&(u+=Math.max(o,s*Math.max(c,x)));const h=u;u=h+x,c=x;const{placements:v,xEdge:V}=ht(d,p,h+b,r,n),_={minX:-b,maxX:V+b,minZ:h,maxZ:h+x};a.push({groupKey:d,items:v,extent:_,anchor:[(_.minX+_.maxX)/2,0,_.minZ]})}const l=a.length===0?{minX:0,maxX:0,minZ:0,maxZ:0}:{minX:Math.min(...a.map(d=>d.extent.minX)),maxX:Math.max(...a.map(d=>d.extent.maxX)),minZ:Math.min(...a.map(d=>d.extent.minZ)),maxZ:Math.max(...a.map(d=>d.extent.maxZ))};return{districts:a,extent:l}}const Pt={min:[0,0,0],max:[0,0,0]},Ae=.35,ft=20;function ot(t){return[...t.min,...t.max].every(e=>Number.isFinite(e))}function z(t){return ot(t)?{min:[Math.min(t.min[0],t.max[0]),Math.min(t.min[1],t.max[1]),Math.min(t.min[2],t.max[2])],max:[Math.max(t.min[0],t.max[0]),Math.max(t.min[1],t.max[1]),Math.max(t.min[2],t.max[2])]}:Pt}function Tt(t){const e=z(t);return[e.max[0]-e.min[0],e.max[1]-e.min[1],e.max[2]-e.min[2]]}function K(t){const e=t.map(z).filter(o=>ot(o));if(e.length===0)return Pt;const r=e[0],n=[r.min[0],r.min[1],r.min[2]],s=[r.max[0],r.max[1],r.max[2]];for(let o=1;o<e.length;o++){const i=e[o];n[0]=Math.min(n[0],i.min[0]),n[1]=Math.min(n[1],i.min[1]),n[2]=Math.min(n[2],i.min[2]),s[0]=Math.max(s[0],i.max[0]),s[1]=Math.max(s[1],i.max[1]),s[2]=Math.max(s[2],i.max[2])}return{min:n,max:s}}function U(t,e){const r=z(t);return{min:[r.min[0]+e[0],r.min[1]+e[1],r.min[2]+e[2]],max:[r.max[0]+e[0],r.max[1]+e[1],r.max[2]+e[2]]}}function Le(t){return"min"in t?{bounds:t}:{bounds:t.bounds,...t.overlay===!0?{overlay:!0}:{},...t.enclosure===!0?{enclosure:!0}:{}}}function Ge(t,e={}){if(e.overlay)return"volume";if(e.enclosure)return"environment-scale";const n=[...Tt(t)].sort((a,u)=>u-a),s=n[0]??0,o=n[1]??0;return(n[2]??0)<Ae&&o>=ft&&s>=ft?"unbounded-plane":null}function Fe(t){const e=t.map(Le).map(a=>({bounds:z(a.bounds),overlay:a.overlay===!0,enclosure:a.enclosure===!0})).filter(a=>ot(a.bounds)),r=e.map(a=>a.bounds),n=K(r);if(e.length<2)return{full:n,presence:n,helpers:[]};const s=e.map(a=>Ge(a.bounds,{overlay:a.overlay,enclosure:a.enclosure})),o=e.filter((a,u)=>s[u]===null).map(a=>a.bounds);if(o.length===0)return{full:n,presence:n,helpers:[]};const i=[];for(let a=0;a<e.length;a++){const u=s[a]??null;u!==null&&i.push({kind:u,bounds:e[a].bounds,size:Tt(e[a].bounds)})}return{full:n,presence:K(o),helpers:i}}function $e(t){const e=t.map(u=>({exhibit:u,presence:Fe(u.nodes)})),r=e.map(({exhibit:u,presence:c})=>({id:u.id,groupKey:u.groupKey,bounds:c.presence})),n=Ne(r),s=new Map;for(const u of n.districts)for(const c of u.items)s.set(c.id,c);const o=[],i=[],a=[];for(const{exhibit:u,presence:c}of e){const l=s.get(u.id);l&&(o.push({id:u.id,groupKey:u.groupKey,full:c.full,presence:c.presence,helpers:c.helpers,placement:l}),i.push(U(c.presence,l.translation)),a.push(U(c.full,l.translation)))}return{layout:n,exhibits:o,frame:K(i),fullFrame:K(a)}}const kt="volterBoardStoryId",Bt="volterBoardComponentKey",I="volter:board:no-story";function Ke(t){return{stories:t.length,modules:new Set(t.map(e=>e.modulePath)).size}}const Y="Ungrouped",xt="No story yet",ze=.9;function Ie(t){return t instanceof Error?t.message:String(t)}async function Ve(t,e,r){const n=Date.now();let s=null,o=null;try{s=await r(e),me(s.root)||(s.dispose(),s=null,o="The story mounted no three content.")}catch(a){o=Ie(a)}const i=de();return Ht({id:t.id,ms:Date.now()-n,runtimeMs:i?.runtimeMs??0,loadMs:i?.loadMs??0,fiberMs:i?.fiberMs??0,settleMs:i?.settleMs??0,ok:s!==null}),{identity:t,mounted:s,reason:o}}function Rt(t){t.traverse(e=>{e.layers.enable(he),fe(e,"editorHelper",!0)})}const He={color:3291977,roughness:.92,metalness:.04,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:2},gt=.06,Ze=0,yt=0,Xe=11124182,We=9413565;function Ue(t){const e=t.extent.maxX-t.extent.minX,r=t.extent.maxZ-t.extent.minZ,n=new Dt(new xe(e,gt,r),new ge(He));return n.name=`volter:board-pad:${t.groupKey||Y}`,n.position.set((t.extent.minX+t.extent.maxX)/2,Ze-gt/2,(t.extent.minZ+t.extent.maxZ)/2),n.receiveShadow=!0,Rt(n),n}function Ye(t,e){const r=t/2,n=e/2,s=[[-r,-n],[r,-n],[r,n],[-r,n]],o=[];for(let u=0;u<s.length;u++){const c=s[u],l=s[(u+1)%s.length];o.push(c[0],0,c[1],l[0],0,l[1])}const i=new Se;i.setAttribute("position",new Me(o,3));const a=new Ee(i,new ve({color:Xe,dashSize:.09,gapSize:.06}));return a.computeLineDistances(),a}function qe(t){const e=new R;e.name=`volter:board-ghost:${t.name}`,e.userData[Bt]=t.key;const[r,n]=t.placement.footprint,s=new Dt(new ye(r,n),new be({color:We,transparent:!0,opacity:.1,depthWrite:!1,side:we}));s.rotation.x=-Math.PI/2,s.position.y=yt;const o=Ye(r,n);return o.position.y=yt,e.add(s,o),e.position.set(t.placement.anchor[0],0,t.placement.anchor[2]),e}function Je(t,e,r){if(!r.componentName)return!0;const n=St(t,r.componentName,e);return!n||n.modulePath===e&&n.name===r.name}function Qe(t){return jt(t).length}function jt(t){const e=[],r=new Map,n=tt();for(const s of t)if(s.ok)for(const o of s.stories){const i=Q({modulePath:s.modulePath,regions:n});if(i.medium!=="three"){i.via==="undeclared"&&Kt(s.modulePath,i.reason);continue}if(!Je(t,s.modulePath,o))continue;const a=zt({modulePath:s.modulePath,...o.title===void 0?{}:{title:o.title}}),u=It(a),c=`${u}/${a.leaf}`;r.set(c,(r.get(c)??0)+1),e.push({identity:{id:`${s.modulePath}#${o.name}`,storyName:o.name,modulePath:s.modulePath,groupKey:u,groupLeaf:a.leaf,groupPath:Vt(a)},storyLabel:o.label,Component:o.Component})}return e.map(({identity:s,storyLabel:o,Component:i})=>({identity:{...s,label:(r.get(`${s.groupKey}/${s.groupLeaf}`)??0)>1?`${s.groupLeaf} · ${o}`:s.groupLeaf},Component:i}))}function tn(t,e){const r=new Set,n=[];for(const s of e){if(s.surface!=="three"||s.contentKind==="image")continue;const o=`${s.path}#${s.name}`;r.has(o)||(r.add(o),!St(t,s.name,s.path)&&n.push(s))}return n}function en(t,e,r){const n=new R;return n.name=`volter:board-exhibit:${t.label}`,n.position.set(...e.translation),n.add(r.root),n.userData[kt]=t.id,n}function q(t){return vt(async()=>{t.dispose()})}async function Ct(t,e=[],r){return vt(n=>an(t,e,r,n))}async function nn(t,e,r){const n=[];for(const{identity:s,Component:o}of t){if(e?.aborted)break;n.push(await Ve(s,o,r))}return n}function on(t){return{min:t.min.toArray(),max:t.max.toArray()}}function rn(t){const e=new Map,r=new Map,n=[],s=[];for(const o of t){if(!o.mounted){s.push({id:o.identity.id,modulePath:o.identity.modulePath,storyName:o.identity.storyName,reason:o.reason??"The story produced no Object3D."});continue}const i=pe(o.mounted.root).map(a=>({bounds:on(a.box),overlay:a.overlay,enclosure:a.enclosure}));e.set(o.identity.id,o.mounted),r.set(o.identity.id,o.identity),n.push({id:o.identity.id,groupKey:o.identity.groupKey,nodes:i})}return{mounts:e,identities:r,measures:n,skipped:s}}function sn(t){const e=ze/2;return{id:`${t.path}#${t.name}`,groupKey:I,nodes:[{min:[-e,0,-e],max:[e,0,e]}]}}async function an(t,e,r,n){const s=Date.now(),o=jt(t);O("candidate-collect",Date.now()-s),dt({candidateCount:o.length});const i=Date.now(),a=await nn(o,r,n);O("story-mounts",Date.now()-i);const u=Date.now(),{mounts:c,identities:l,measures:d,skipped:p}=rn(a);O("bounds",Date.now()-u);const y=Date.now(),b=tn(t,e),x=new Map(b.map(f=>[`${f.path}#${f.name}`,f])),h=$e([...d,...b.map(sn)]),v=h.layout,V=new Map(h.exhibits.map(f=>[f.id,f]));O("layout",Date.now()-y);const _=Date.now(),T=new R;T.name="volter:three-board";const k=new R;k.name="volter:board-chrome",Rt(k),T.add(k);const j=[],rt=[],st=[],it=[k];for(const f of v.districts){const M=f.groupKey===I,D=new R;D.name=`volter:board-district:${M?xt:f.groupKey||Y}`,T.add(D),k.add(Ue(f));for(const S of f.items){if(M){const N=x.get(S.id);if(!N)continue;const ut={key:S.id,name:N.name,path:N.path,line:N.line,placement:S},lt=qe(ut);D.add(lt),it.push(lt),st.push(ut);continue}const C=c.get(S.id),H=l.get(S.id),E=V.get(S.id);!C||!H||!E||(D.add(en(H,S,C)),j.push({...H,placement:S,fullSize:[E.full.max[0]-E.full.min[0],E.full.max[1]-E.full.min[1],E.full.max[2]-E.full.min[2]],helpers:E.helpers}))}rt.push({groupKey:f.groupKey,label:M?xt:f.groupKey||Y,placement:f})}const $t=j.flatMap(f=>f.helpers.map(M=>({exhibitId:f.id,exhibitLabel:f.label,kind:M.kind,size:M.size})));let at=!1;const ct={root:T,exhibits:j,districts:rt,ghostSlots:st,skipped:p,frameBounds:h.frame,openingFrameBounds:h.exhibits[0]?U(h.exhibits[0].presence,h.exhibits[0].placement.translation):h.frame,helperVolumes:$t,dispose(){if(!at){at=!0;for(const f of it)f.traverse(M=>{const D=M;D.geometry?.dispose();const S=D.material;if(Array.isArray(S))for(const C of S)C.dispose();else S?.dispose()}),f.removeFromParent();for(const f of c.values())try{f.dispose()}catch(M){console.error("[three-board] a story mount failed to dispose.",M)}c.clear(),T.clear()}}};if(O("assemble",Date.now()-_),dt({exhibitCount:j.length,skippedCount:p.length}),r?.aborted)throw ct.dispose(),new Error("The 3D board build was superseded by a newer one.");return ct}function cn(t){return Nt(t,kt)}function un(t){return Nt(t,Bt)}function Nt(t,e){let r=t;for(;r;){const n=r.userData[e];if(typeof n=="string")return n;r=r.parent}return null}const At="3D";let F=null,Lt=0;const J=new Set;function bt(){Lt++;for(const t of J)t()}function ln(t){return J.add(t),()=>{J.delete(t)}}function dn(){return Lt}function Gt(t){return Number.isFinite(t)?t>=10?`${Math.round(t)} m`:t>=1?`${t.toFixed(1)} m`:`${t.toFixed(2)} m`:"—"}function mn(t,e,r){const n=Ft(e,r);return n?qt(Jt,t,{modulePath:n.modulePath,storyName:n.storyName,title:n.label}):null}function pn(t,e,r){const n=Mn(t,e);if(!n)return null;const s={definitionLocation:()=>({file:n.path,line:n.line})};return r?mt(s,n.key,"definition",r):mt(s,n.key,"definition")}function hn(t){const e=tt(),r=t.filter(o=>o.ok&&Q({modulePath:o.modulePath,regions:e}).medium==="three"),n=w.useRef([]),s=n.current;return(s.length!==r.length||s.some((o,i)=>o!==r[i]))&&(n.current=r),n.current}function fn({documentId:t,active:e,store:r}){const n=w.useSyncExternalStore(Mt,W),s=hn(n),[o,i]=w.useState({status:"idle"});e&&ee(t);const[a,u]=w.useState(e);w.useEffect(()=>{e&&u(!0)},[e]),w.useEffect(()=>{if(!a)return;const p=new AbortController;let y=null;i({status:"building"}),ne(t,{modulesAlreadyLoaded:s.length>0});const b=Date.now();return Et().then(x=>{const h=Date.now()-b;return O("component-index",h,{busyMs:0,waitMs:h}),x.ok||oe.warn(`Component index unavailable, so this board shows no ghost slots: ${x.reason}`,"three-board"),Ct(s,x.ok?x.entries:[],p.signal)}).then(x=>{if(p.signal.aborted){Z(t),q(x);return}y=x,F=x,bt(),re(),i({status:"ready",scene:x})},x=>{if(p.signal.aborted){Z(t);return}i({status:"error",message:x instanceof Error?x.message:String(x)})}),()=>{p.abort(),y?(F===y&&(F=null),q(y),bt()):Z(t)}},[s,a,t]);const c=o.status==="ready"?o.scene:null,l=w.useCallback(()=>{if(!c)throw new Error("The 3D board is still building.");return{root:c.root,dispose(){}}},[c]),d=w.useCallback(p=>{if(mn(r,c,p)!==null)return;const y=pn(c,p);y&&y.then(se)},[c,r]);return m.jsx("div",{style:{position:"relative",flex:1,minHeight:0,pointerEvents:"auto"},children:c?m.jsxs(m.Fragment,{children:[m.jsx(ce,{documentId:t,sourcePath:"Generated from this project’s stories",displayName:At,build:l,active:e,onOpenNode:d,cameraDirection:ue,frameBounds:c.frameBounds,openingFrameBounds:c.openingFrameBounds,dressing:{grid:!0}}),m.jsx(gn,{documentId:t,scene:c,active:e}),m.jsx(xn,{scene:c})]}):m.jsxs("div",{"data-testid":"three-board-status",style:{padding:16,fontSize:12,color:g.content.muted},children:[o.status==="error"&&o.message,o.status==="building"&&le(Qe(s)),o.status==="idle"&&"Open this tab to lay out every story at true scale."]})})}function xn({scene:t}){const[e,r]=w.useState(!1),n=Ke(t.skipped),s=t.districts.filter(o=>o.groupKey!==I).length;return m.jsxs("div",{"data-testid":"three-board-status",style:{position:"absolute",left:8,bottom:8,maxWidth:420,padding:"4px 8px",borderRadius:g.shape.small,background:g.surface.raised,border:`1px solid ${g.boundary.default}`,fontSize:10,color:g.content.muted,pointerEvents:"auto"},children:[t.exhibits.length," exhibit",t.exhibits.length===1?"":"s"," · ",s," ","district",s===1?"":"s",t.helperVolumes.length>0&&m.jsxs(m.Fragment,{children:[" · ",t.helperVolumes.length," helper volume",t.helperVolumes.length===1?"":"s"," at true scale, outside the default frame"]}),t.ghostSlots.length>0&&m.jsxs(m.Fragment,{children:[" · ",t.ghostSlots.length," component",t.ghostSlots.length===1?"":"s"," without stories"]}),t.skipped.length>0&&m.jsxs(m.Fragment,{children:[" · ",m.jsxs("span",{role:"button",tabIndex:0,"aria-expanded":e,onClick:()=>r(o=>!o),onKeyDown:o=>{(o.key===" "||o.key==="Enter")&&(o.preventDefault(),r(i=>!i))},style:{cursor:"pointer",color:g.accent.default},children:[n.stories," ",n.stories===1?"story":"stories"," in ",n.modules," ",n.modules===1?"module":"modules"," not on this board"]})]}),e&&m.jsx("div",{style:{marginTop:4,maxHeight:160,overflow:"auto"},children:t.skipped.map(o=>m.jsxs("div",{style:{padding:"1px 0"},children:[m.jsxs("code",{style:{color:g.content.dim},children:[o.modulePath,"#",o.storyName]})," ","— ",o.reason]},o.id))})]})}function gn({documentId:t,scene:e,active:r}){const n=w.useRef(null),[s,o]=w.useState([]);return w.useEffect(()=>{if(!r)return;let i=0,a=!1;const u=yn(e),c=()=>{if(a)return;i=requestAnimationFrame(c);const l=n.current,d=ae(t);!l||!d||l.clientWidth===0||l.clientHeight===0||o(bn(u,d.camera(),l.clientWidth,l.clientHeight))};return i=requestAnimationFrame(c),()=>{a=!0,cancelAnimationFrame(i)}},[r,t,e]),m.jsx("div",{ref:n,"data-testid":"three-board-labels",style:{position:"absolute",inset:-12,pointerEvents:"none",overflow:"hidden"},children:s.map(i=>m.jsxs("div",{style:{position:"absolute",left:i.x,top:i.y,transform:"translate(-50%, -100%)",whiteSpace:"nowrap",padding:i.district?"2px 7px":"1px 5px",borderRadius:g.shape.small,background:g.surface.raised,border:`1px ${i.ghost?"dashed":"solid"} ${i.district&&!i.ghost?g.accent.default:g.boundary.default}`,color:i.district&&!i.ghost?g.content.primary:g.content.muted,fontSize:i.district?12:10,fontWeight:i.district?600:400,opacity:i.ghost?.9:1},children:[i.text,m.jsx("span",{style:{marginLeft:6,color:g.content.dim,fontWeight:400},children:i.detail})]},i.key))})}const B=new P;function wt(t){return[t.anchor[0],0,t.anchor[2]-t.footprint[1]/2]}function yn(t){return[...t.districts.map(e=>{const r=e.groupKey===I,n=e.placement.items.length;return{key:`district:${e.groupKey}`,text:e.label,detail:r?`${n} component${n===1?"":"s"}`:`${n} exhibit${n===1?"":"s"}`,district:!0,ghost:r,point:e.placement.anchor}}),...t.exhibits.map(e=>({key:`exhibit:${e.id}`,text:e.label,detail:Gt(e.placement.size[1]),district:!1,ghost:!1,point:wt(e.placement)})),...t.ghostSlots.map(e=>({key:`ghost:${e.key}`,text:e.name,detail:"No story yet",district:!1,ghost:!0,point:wt(e.placement)}))]}function bn(t,e,r,n){e.updateMatrixWorld();const s=[];for(const o of t)B.set(o.point[0],o.point[1],o.point[2]).project(e),!(B.z>1)&&s.push({key:o.key,text:o.text,detail:o.detail,district:o.district,ghost:o.ghost,x:(B.x*.5+.5)*r,y:(-B.y*.5+.5)*n,depth:B.z});return Sn(s).sort((o,i)=>i.depth-o.depth)}function wn(t){const e=t.district?12:10,r=(t.text.length+t.detail.length)*e*.62+24,n=e+8;return[t.x-r/2,t.y-n,t.x+r/2,t.y]}function Sn(t){const e=[...t].sort((n,s)=>(s.district?1:0)-(n.district?1:0)||n.depth-s.depth),r=[];for(const n of e){const s=wn(n);r.some(i=>s[0]<i.rect[2]&&s[2]>i.rect[0]&&s[1]<i.rect[3]&&s[3]>i.rect[1])||r.push({label:n,rect:s})}return r.map(n=>n.label)}function Ft(t,e){if(!t)return null;const r=cn(e);return r?t.exhibits.find(n=>n.id===r)??null:null}function Mn(t,e){if(!t)return null;const r=un(e);return r?t.ghostSlots.find(n=>n.key===r)??null:null}function En({adapter:t,nodeId:e}){w.useSyncExternalStore(ln,dn);const n=[...e?[e]:[],...t.selection?.get()??[]].reduce((s,o)=>s??Ft(F,ie(t.hierarchy,o)),null);return m.jsx("div",{"data-testid":"inspector-exhibit",style:{pointerEvents:"auto",padding:8,borderBottom:`1px solid ${g.boundary.default}`},children:n?m.jsxs("div",{style:{display:"grid",gap:3,fontSize:11},children:[m.jsx("div",{style:{color:g.content.primary,fontWeight:600},children:n.label}),m.jsx(G,{label:"Story",value:n.storyName}),m.jsx(G,{label:"Group",value:n.groupPath}),m.jsx(G,{label:"Module",value:n.modulePath}),m.jsx(G,{label:"Size",value:n.placement.size.map(s=>Gt(s)).join(" × ")})]}):m.jsx("div",{style:{fontSize:11,color:g.content.dim},children:"Pick an exhibit to read its story."})})}function G({label:t,value:e}){return m.jsxs("div",{style:{display:"flex",gap:6},children:[m.jsx("span",{style:{width:52,flexShrink:0,color:g.content.muted},children:t}),m.jsx("code",{style:{color:g.content.primary,overflow:"hidden",textOverflow:"ellipsis"},title:e,children:e})]})}const vn=Qt();function Dn(){vn.ensure(t=>{t(Zt({match:()=>Ut()?.descriptor.id===X,id:"exhibit",title:"Exhibit",icon:Wt,order:Xt,Section:En}))})}const _n={revision:()=>JSON.stringify(W().map(t=>t.modulePath)),subscribe:Mt,capture:async t=>{await te();const e=tt(),r=W().filter(o=>o.ok&&Q({modulePath:o.modulePath,regions:e}).medium==="three"),n=await Et(),s=await Ct(r,n.ok?n.entries:[]);try{const{captureAuthoredThreeScenePreview:o}=await A(async()=>{const{captureAuthoredThreeScenePreview:h}=await import("./document-preview-three-CbIS_Aca.js");return{captureAuthoredThreeScenePreview:h}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),{createStandardEnvironment:i}=await A(async()=>{const{createStandardEnvironment:h}=await import("./environment-Dg-YaLsA.js");return{createStandardEnvironment:h}},__vite__mapDeps([19,17,14,20,21,22])),{applyStandardViewportDressing:a}=await A(async()=>{const{applyStandardViewportDressing:h}=await import("./standard-viewport-dressing-DSi6qJFC.js").then(v=>v.d);return{applyStandardViewportDressing:h}},__vite__mapDeps([23,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,17,20,21,22,24])),{isEditorOwnedObject:u}=await A(async()=>{const{isEditorOwnedObject:h}=await import("./editor-layers-_Gcy52mS.js");return{isEditorOwnedObject:h}},__vite__mapDeps([15,3,4,5,6,7,8,9,10,11,12,13]));s.root.traverse(h=>{u(h)&&(h.visible=!1)});const c=new De;c.add(s.root);const l=new _e(new P(...s.frameBounds.min),new P(...s.frameBounds.max)),d=l.isEmpty()?new P:l.getCenter(new P),y=(l.isEmpty()?1:Math.max(.01,l.getBoundingSphere(new Oe).radius))/Math.sin(Pe.degToRad(42/2))*1.15,b=d.clone().addScaledVector(new P(1,.75,1).normalize(),y),x={...t,camera:{position:b,target:d,fov:42}};return o(s.root,c,x,h=>{const v=a(c,{environment:i(h),background:!1});return()=>v.dispose()})}finally{await q(s)}}};function ho(t){return Dn(),Yt({id:X,title:At,kind:"content-browser",workspaceRole:"workspace-reference",Content:e=>m.jsx(fn,{...e,store:t}),readOnly:!0,preview:_n,presentation:()=>({kind:"workspace",id:X})},{category:"canvas"})}export{En as BoardExhibitSection,X as THREE_COMPONENTS_DOCUMENT_ID,Dn as ensureThreeBoardContributionsRegistered,ho as installThreeBoardDocument,mn as openExhibitStoryDocument,pn as openGhostComponentSource};
@@ -1 +1 @@
1
- import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{al as p,fU as g,aC as b}from"./index-nySnA9Ug.js";import{r as m}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{captureAuthoredThreeScenePreview as E}from"./document-preview-three-CJkokdk6.js";import{m as v}from"./mounted-story-viewport-source-esB5WiW7.js";import{mountStoryObject3D as w,disposeStoryObject3D as x}from"./story-three-preview-e0faozfl.js";import{O as C}from"./Object3DDocumentViewport-eDH3ZPyb.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./content-bounds-Co-PYlfQ.js";import"./hierarchy-marks-C9FKSQHH.js";import"./workspace-arrangement-BzOJBZHz.js";import"./three.core-3arARmh6.js";import"./editor-layers-QQ71XEXw.js";import"./renderer-ownership-BovSEcLv.js";import"./three.module-BLhyNg0e.js";import"./scene-framing-DmGFFnxb.js";import"./asset-preview-CUSDAKVD.js";import"./studio-environment-B2vsjqle.js";import"./user-data-BiloulL-.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./bitmap-label-Ct4k6ehY.js";import"./crash-null-boundary-v3a0uEgw.js";import"./events-156d8d12.esm-DmeaOP4r.js";import"./index-DzuOGwVB.js";import"./story-mount-turn-DFRTj5hi.js";import"./viewport-surface-status-BfoaH0c4.js";async function N(e,n,t){const s=(await import(e))[t??"default"];if(typeof s!="function")throw new Error(`${n} does not export ${t===void 0?"a default component":`\`${t}\``}, which is what the adapter's scene table names. The table and the module disagree.`);return s}function at({active:e,documentId:n,state:t}){const[o,c]=m.useState(null),[s,d]=m.useState(null),a=m.useRef(null),[f,j]=m.useState(e);m.useEffect(()=>{e&&j(!0)},[e]);const u=t?.path,h=t?.exportName;return m.useEffect(()=>{if(!f||!u)return;let l=!1;return d(null),c(null),y(u,h).then(r=>w(r,{})).then(r=>{if(l){x(r);return}const S=v(r);a.current=S,c(S)}).catch(r=>{l||d(r instanceof Error?r.message:String(r))}),()=>{l=!0,a.current?.dispose(),a.current=null,c(null)}},[f,u,h]),t?s?i.jsxs("div",{role:"alert","data-testid":"scene-document-error",style:{padding:12,fontSize:12,color:p.semantic.danger,maxWidth:640},children:[i.jsxs("div",{style:{fontWeight:600,marginBottom:4},children:[t.path,t.exportName?` — ${t.exportName}`:""]}),i.jsx("div",{style:{color:p.content.muted,whiteSpace:"pre-wrap"},children:s})]}):o?i.jsx(C,{documentId:n,sourcePath:t.path,build:o.build,displayName:t.label,active:e}):i.jsx("div",{"data-testid":"scene-document-loading",style:{padding:12,fontSize:12,color:p.content.muted,fontStyle:"italic"},children:"mounting…"}):i.jsx("div",{style:{padding:12,fontSize:12,color:p.content.muted},children:"This scene document is no longer declared by the project's adapter."})}async function y(e,n){const t=b();if(!t)throw new Error("No project is open, so its scene modules cannot be loaded.");const o=`${g(t.rootPath,e)}?t=${Date.now()}`;return N(o,e,n)}async function ut(e,n){const t=await y(e.path,e.exportName),o=await w(t,{});try{return E(o.root,o.scene,n)}finally{await x(o)}}export{at as ThreeIsolationSceneContent,ut as captureThreeIsolationScenePreview};
1
+ import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{al as p,fU as g,aC as b}from"./index-C6b9kkV0.js";import{r as m}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{captureAuthoredThreeScenePreview as E}from"./document-preview-three-CbIS_Aca.js";import{m as v}from"./mounted-story-viewport-source-bf12XIaz.js";import{mountStoryObject3D as w,disposeStoryObject3D as x}from"./story-three-preview-EAGsWdvg.js";import{O as C}from"./Object3DDocumentViewport-nrhxhWxf.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./content-bounds-CKyqwWXn.js";import"./hierarchy-marks-DYUvG4lt.js";import"./workspace-arrangement-BoYqL0C2.js";import"./three.core-3arARmh6.js";import"./editor-layers-_Gcy52mS.js";import"./renderer-ownership-BovSEcLv.js";import"./three.module-BLhyNg0e.js";import"./scene-framing-DPK5z1LB.js";import"./asset-preview-DVSFT7SS.js";import"./studio-environment-DPyvNCMf.js";import"./user-data-DKfhN35w.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./bitmap-label-Ct4k6ehY.js";import"./crash-null-boundary-v3a0uEgw.js";import"./events-156d8d12.esm-DmeaOP4r.js";import"./index-DzuOGwVB.js";import"./story-mount-turn-DFRTj5hi.js";import"./viewport-surface-status-BCnAK4lN.js";async function N(e,n,t){const s=(await import(e))[t??"default"];if(typeof s!="function")throw new Error(`${n} does not export ${t===void 0?"a default component":`\`${t}\``}, which is what the adapter's scene table names. The table and the module disagree.`);return s}function at({active:e,documentId:n,state:t}){const[o,c]=m.useState(null),[s,d]=m.useState(null),a=m.useRef(null),[f,j]=m.useState(e);m.useEffect(()=>{e&&j(!0)},[e]);const u=t?.path,h=t?.exportName;return m.useEffect(()=>{if(!f||!u)return;let l=!1;return d(null),c(null),y(u,h).then(r=>w(r,{})).then(r=>{if(l){x(r);return}const S=v(r);a.current=S,c(S)}).catch(r=>{l||d(r instanceof Error?r.message:String(r))}),()=>{l=!0,a.current?.dispose(),a.current=null,c(null)}},[f,u,h]),t?s?i.jsxs("div",{role:"alert","data-testid":"scene-document-error",style:{padding:12,fontSize:12,color:p.semantic.danger,maxWidth:640},children:[i.jsxs("div",{style:{fontWeight:600,marginBottom:4},children:[t.path,t.exportName?` — ${t.exportName}`:""]}),i.jsx("div",{style:{color:p.content.muted,whiteSpace:"pre-wrap"},children:s})]}):o?i.jsx(C,{documentId:n,sourcePath:t.path,build:o.build,displayName:t.label,active:e}):i.jsx("div",{"data-testid":"scene-document-loading",style:{padding:12,fontSize:12,color:p.content.muted,fontStyle:"italic"},children:"mounting…"}):i.jsx("div",{style:{padding:12,fontSize:12,color:p.content.muted},children:"This scene document is no longer declared by the project's adapter."})}async function y(e,n){const t=b();if(!t)throw new Error("No project is open, so its scene modules cannot be loaded.");const o=`${g(t.rootPath,e)}?t=${Date.now()}`;return N(o,e,n)}async function ut(e,n){const t=await y(e.path,e.exportName),o=await w(t,{});try{return E(o.root,o.scene,n)}finally{await x(o)}}export{at as ThreeIsolationSceneContent,ut as captureThreeIsolationScenePreview};
@@ -1 +1 @@
1
- import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{Object3DPreview as d}from"./Object3DPreview-CJApeNHw.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-nySnA9Ug.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./OrbitControls-B13MKuwC.js";import"./asset-preview-CUSDAKVD.js";import"./editor-layers-QQ71XEXw.js";import"./workspace-arrangement-BzOJBZHz.js";import"./renderer-ownership-BovSEcLv.js";import"./hierarchy-marks-C9FKSQHH.js";import"./studio-environment-B2vsjqle.js";import"./user-data-BiloulL-.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./bitmap-label-Ct4k6ehY.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./model-thumbnail-Cx5Eb_fd.js";function Q({build:r,displayName:m="Object3D preview",height:p=360,background:e,showSkeleton:s=!1,cameraDirection:n,showGrid:c,useDefaultLighting:u,exposure:a,setupPreview:t,active:j=!0}){const i=t!==void 0;return o.jsx("div",{style:{width:"100%",height:p,minHeight:240},children:o.jsx(d,{sourceFactory:r,displayName:m,active:j,showSkeleton:s,background:e,cameraDirection:n,showGrid:c??!i,useDefaultLighting:u??!i,exposure:a,setupPreview:t})})}export{Q as ToolObject3DPreview};
1
+ import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{Object3DPreview as d}from"./Object3DPreview-BdNrtrgI.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-C6b9kkV0.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./OrbitControls-B13MKuwC.js";import"./asset-preview-DVSFT7SS.js";import"./editor-layers-_Gcy52mS.js";import"./workspace-arrangement-BoYqL0C2.js";import"./renderer-ownership-BovSEcLv.js";import"./hierarchy-marks-DYUvG4lt.js";import"./studio-environment-DPyvNCMf.js";import"./user-data-DKfhN35w.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./bitmap-label-Ct4k6ehY.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./model-thumbnail-oBpbFAcj.js";function Q({build:r,displayName:m="Object3D preview",height:p=360,background:e,showSkeleton:s=!1,cameraDirection:n,showGrid:c,useDefaultLighting:u,exposure:a,setupPreview:t,active:j=!0}){const i=t!==void 0;return o.jsx("div",{style:{width:"100%",height:p,minHeight:240},children:o.jsx(d,{sourceFactory:r,displayName:m,active:j,showSkeleton:s,background:e,cameraDirection:n,showGrid:c??!i,useDefaultLighting:u??!i,exposure:a,setupPreview:t})})}export{Q as ToolObject3DPreview};