@volter/game-editor 0.5.65 → 0.5.66

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 (544) hide show
  1. package/BUNDLED_NOTICES +1962 -363
  2. package/catalog/entries/bake.json +0 -1
  3. package/catalog/entries/blender.json +2 -2
  4. package/catalog/entries/reflections.json +2 -4
  5. package/catalog/project-source/src/lib/bake/asset-seed.ts +1 -2
  6. package/catalog/project-source/src/lib/bake/clip-layering.ts +3 -4
  7. package/catalog/project-source/src/lib/bake/gltf-bake.ts +1 -1
  8. package/catalog/project-source/src/lib/bake/params.ts +3 -5
  9. package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +2 -3
  10. package/dist/.vite/manifest.json +2406 -2182
  11. package/dist/assets/{AssetBudgetPanel-J9--TZPU.js → AssetBudgetPanel-csYWK2H4.js} +8 -8
  12. package/dist/assets/{AudioViewer-CR7333fe.js → AudioViewer-BH_LUYs5.js} +1 -1
  13. package/dist/assets/{BVHLoader-6bQIXhMX.js → BVHLoader-Jkzh8hMf.js} +1 -1
  14. package/dist/assets/BufferGeometryUtils-CAbuTPOA.js +1 -0
  15. package/dist/assets/{CCDIKSolver-CD7vLpsK.js → CCDIKSolver-D4NvkJ8d.js} +1 -1
  16. package/dist/assets/{CSS3DRenderer-CL7ABLVK.js → CSS3DRenderer-CAS2WZZy.js} +1 -1
  17. package/dist/assets/CanvasSceneViewport-BlsRTk-X.js +1 -0
  18. package/dist/assets/ColladaLoader-DxYB89DA.js +3 -0
  19. package/dist/assets/{ColorInput-DQBNrW-K.js → ColorInput-CPQNsDf1.js} +1 -1
  20. package/dist/assets/{ConvexGeometry-CAzXlPVG.js → ConvexGeometry-Dinf-sev.js} +1 -1
  21. package/dist/assets/{ConvexHull-BINCESFp.js → ConvexHull-CrJ8FY-w.js} +1 -1
  22. package/dist/assets/{DecalGeometry-160KRdfg.js → DecalGeometry-owkbefLa.js} +1 -1
  23. package/dist/assets/EffectComposer-BHDH-NLz.js +1 -0
  24. package/dist/assets/EntityModelDocument-DuQivdvc.js +1 -0
  25. package/dist/assets/EnvironmentAssetDocument-CnTEMn3A.js +1 -0
  26. package/dist/assets/FBXLoader-BMUbIhtE.js +1 -0
  27. package/dist/assets/Fbo-DrK7CWlB.js +1 -0
  28. package/dist/assets/{FontLoader-CvGoVI5a.js → FontLoader-BR_K6Baw.js} +2 -2
  29. package/dist/assets/GLTFExporter-BZqAQJbw.js +1 -0
  30. package/dist/assets/{GameplaySessionTimeline-B52W3FVZ.js → GameplaySessionTimeline-Crqwv2fP.js} +1 -1
  31. package/dist/assets/Gltf-7cVbZUzT.js +2 -0
  32. package/dist/assets/ImageViewer-BkFie7Hm.js +1 -0
  33. package/dist/assets/InspectorObjectPreview-Dl3tyJBn.js +1 -0
  34. package/dist/assets/JsonAssetDocument-BUFzubHM.js +2 -0
  35. package/dist/assets/{LineSegments2-CsOpKSiM.js → LineSegments2-Cicm_Hu1.js} +2 -2
  36. package/dist/assets/LiveModuleDocument-C3OQxiba.js +1 -0
  37. package/dist/assets/LutAssetDocument-DVzd1RZ9.js +1 -0
  38. package/dist/assets/{MTLLoader-_Xzd4_0p.js → MTLLoader-Bg_grNiT.js} +2 -2
  39. package/dist/assets/{MarchingCubes-Bsp4wrzd.js → MarchingCubes-a78AL3HB.js} +1 -1
  40. package/dist/assets/MeshBVH-BCSLNEeP.js +1 -0
  41. package/dist/assets/ModelAssetDocument-pN84goRT.js +1 -0
  42. package/dist/assets/{NonThreeAuthoringBootstrap-C3woOMxX.js → NonThreeAuthoringBootstrap-BKNejRiW.js} +1 -1
  43. package/dist/assets/{OBJLoader-BhIC6Hwo.js → OBJLoader-BiwzVj5b.js} +2 -2
  44. package/dist/assets/Object3DDocumentToolbar-D5Bg5FEf.js +1 -0
  45. package/dist/assets/Object3DDocumentViewport-DFHqru3a.js +2 -0
  46. package/dist/assets/Object3DPreview-BTtZ-41z.js +2 -0
  47. package/dist/assets/OnlineAssetDetail-BAqozdAp.js +1 -0
  48. package/dist/assets/{OrbitControls-DLpayAaK.js → OrbitControls-CzKVCORl.js} +1 -1
  49. package/dist/assets/{OrbitControls-CM3bPray.js → OrbitControls-CzTRRI7x.js} +1 -1
  50. package/dist/assets/{OrthographicCamera-bQozawrh.js → OrthographicCamera-CSDDsvu7.js} +1 -1
  51. package/dist/assets/{PLYLoader-DYQqs5Ik.js → PLYLoader-QxrxxMpE.js} +2 -2
  52. package/dist/assets/{PerspectiveCamera-CQ2lh01o.js → PerspectiveCamera-DzD_NfVh.js} +1 -1
  53. package/dist/assets/PlayBar-qVJpgwJt.js +2 -0
  54. package/dist/assets/QuarksAssetDocument-B4vBlUsS.js +2 -0
  55. package/dist/assets/RGBELoader-WQ7xZofE.js +1 -0
  56. package/dist/assets/RectAreaLightUniformsLib-CwcuoVqt.js +1 -0
  57. package/dist/assets/{RenderPass-DPrn-Uky.js → RenderPass-C_CeQNdh.js} +1 -1
  58. package/dist/assets/{ResolutionPicker-C67vs1F3.js → ResolutionPicker-DpHVJxn5.js} +1 -1
  59. package/dist/assets/RootSelectionOverlay-BxvsunO4.js +1 -0
  60. package/dist/assets/{RoundedBox-BDGBg6QZ.js → RoundedBox-B_cZ0NFy.js} +1 -1
  61. package/dist/assets/{RoundedBoxGeometry-CyUuYPfW.js → RoundedBoxGeometry-Y4rcSIvX.js} +1 -1
  62. package/dist/assets/STLLoader-Bej_Nkpr.js +1 -0
  63. package/dist/assets/{SelectionBox-D_75KrNW.js → SelectionBox-Cn9vm7f9.js} +1 -1
  64. package/dist/assets/ShaderAssetDocument-Dx2x8CLr.js +12 -0
  65. package/dist/assets/{ShaderPass-QYRpPuFJ.js → ShaderPass-qtkA7CQ8.js} +1 -1
  66. package/dist/assets/{ShadowEditor-DkImwu1Y.js → ShadowEditor-BEIUkrHL.js} +1 -1
  67. package/dist/assets/SimplifyModifier-D2EesGr2.js +1 -0
  68. package/dist/assets/{SkeletonUtils-Cps8GOC6.js → SkeletonUtils-C8ayciDc.js} +1 -1
  69. package/dist/assets/{Sky-CQKCgYDs.js → Sky-BBpnAJZV.js} +1 -1
  70. package/dist/assets/SourceAssetViewer-BpMbbuy6.js +1 -0
  71. package/dist/assets/StageHost-lB8f---y.js +2 -0
  72. package/dist/assets/{StoryPreviewMount-DjyxRCXu.js → StoryPreviewMount-BIfxmkYh.js} +1 -1
  73. package/dist/assets/{TDSLoader-D_T8XJ81.js → TDSLoader-rHl5Uwc0.js} +1 -1
  74. package/dist/assets/{TextGeometry-DOWAEUV0.js → TextGeometry-BRHSufuM.js} +1 -1
  75. package/dist/assets/ThreeBoardDocument-BHV92Ia3.js +2 -0
  76. package/dist/assets/{ThreeIsolationSceneContent-C8C8whSF.js → ThreeIsolationSceneContent-BqtgDHBK.js} +1 -1
  77. package/dist/assets/{ToolObject3DPreview-BRoDWe4Q.js → ToolObject3DPreview-CcaPJTyH.js} +1 -1
  78. package/dist/assets/Toolbar-keHcSvDD.js +1 -0
  79. package/dist/assets/{TrackballControls-DfznuQTh.js → TrackballControls-Cce-6Ff5.js} +1 -1
  80. package/dist/assets/{TransientHint-BB1fwrvK.js → TransientHint-Dlslh3oX.js} +1 -1
  81. package/dist/assets/{UnrealBloomPass-CR-cS_K5.js → UnrealBloomPass-DiseEiFK.js} +2 -2
  82. package/dist/assets/{VideoViewer-C6kocgIU.js → VideoViewer-naGSXHd6.js} +1 -1
  83. package/dist/assets/ViewportShadingMenu-C7Hdhtca.js +1 -0
  84. package/dist/assets/{active-ingest-CT6jSGhr.js → active-ingest-DEgq9JiA.js} +3 -3
  85. package/dist/assets/{animation-clock-CnjZqfJp.js → animation-clock-lTIb6nk3.js} +1 -1
  86. package/dist/assets/animation-mixers.service-2O2rVwQf.js +1 -0
  87. package/dist/assets/asset-budget-asset.menu-9NhdHAC9.js +1 -0
  88. package/dist/assets/asset-budget.action-yg6-luUJ.js +1 -0
  89. package/dist/assets/asset-budget.document-B46_VFqa.js +1 -0
  90. package/dist/assets/asset-budget.menu-DuH07N-e.js +1 -0
  91. package/dist/assets/{asset-editor-persistence-BBaONOJt.js → asset-editor-persistence-BVtzjadu.js} +1 -1
  92. package/dist/assets/{asset-loaders-BOy5Ss8k.js → asset-loaders-BxG1LykH.js} +2 -2
  93. package/dist/assets/{assets-BuSoGjBX.js → assets-Do88ZdV_.js} +1 -1
  94. package/dist/assets/{audio-unlock.service-CfUgUQVy.js → audio-unlock.service-BJH0mWvX.js} +1 -1
  95. package/dist/assets/{audio.utility-C6K6jem8.js → audio.utility-Cp4aVYFU.js} +1 -1
  96. package/dist/assets/autoplay.service-FxpRy7Ev.js +1 -0
  97. package/dist/assets/{babylon-authoring-adapter-CL02gWDn.js → babylon-authoring-adapter-B_8iE8fK.js} +1 -1
  98. package/dist/assets/{binding-resolver-Dsh-6Vor.js → binding-resolver-BWwG10zJ.js} +2 -2
  99. package/dist/assets/blender-emscripten-engine-CEsWgnR7.js +2 -0
  100. package/dist/assets/{blender-node-editor.document-iIDkB9sI.js → blender-node-editor.document-DTgwy8KC.js} +1 -1
  101. package/dist/assets/blender-properties-tab-DWSJpkxq.js +3 -0
  102. package/dist/assets/blender-runtime-host-OGjPjTrG.js +4 -0
  103. package/dist/assets/{blender-runtime-skin-DyQ9B6CR.js → blender-runtime-skin-DymtXlpt.js} +37 -39
  104. package/dist/assets/blender-runtime.document-CzH2ohHR.js +8 -0
  105. package/dist/assets/{blender-timeline.document-77fx96N7.js → blender-timeline.document-BRy_QPHt.js} +1 -1
  106. package/dist/assets/{blender-uv-editor.document-fsT7B4gV.js → blender-uv-editor.document-D-AbUCqz.js} +1 -1
  107. package/dist/assets/{blender-version.status-o6dBm3n6.js → blender-version.status-B7flzX_7.js} +1 -1
  108. package/dist/assets/{blender-wali-engine-wTOcrOMC.js → blender-wali-engine-D3iKpzn9.js} +1 -1
  109. package/dist/assets/blender.command-BVHtgTQy.js +1 -0
  110. package/dist/assets/blender.environment-CG-pC7sk.js +1 -0
  111. package/dist/assets/{blender.style-Dcem5f_T.js → blender.style-CxfbTFcE.js} +1 -1
  112. package/dist/assets/{board-guides-DziKSTss.js → board-guides-C3usUZZk.js} +1 -1
  113. package/dist/assets/body-marks-D8iaje6y.js +1 -0
  114. package/dist/assets/bridge.command-BF9u6r0A.js +3 -0
  115. package/dist/assets/browserAll-38aBu-cf.js +1 -0
  116. package/dist/assets/{build-profiles.document-kW8iw8Xj.js → build-profiles.document-DO7oNRuo.js} +2 -2
  117. package/dist/assets/{build-progress.status-BNRLytg2.js → build-progress.status-COeNVhYd.js} +1 -1
  118. package/dist/assets/{build-session-C_sg3CEn.js → build-session-IWIriS5P.js} +1 -1
  119. package/dist/assets/{build.action-lYjTLb7K.js → build.action-DlkFvZf6.js} +1 -1
  120. package/dist/assets/{build.command-DIGgUPU_.js → build.command-DPqQIYj_.js} +1 -1
  121. package/dist/assets/{build.header-CKajx5U3.js → build.header-CNLG-pV8.js} +1 -1
  122. package/dist/assets/{build.menu-BdU0QXny.js → build.menu-hUlH6loi.js} +1 -1
  123. package/dist/assets/{build.service-CbBAyeu3.js → build.service-C86Td3_9.js} +1 -1
  124. package/dist/assets/{camera-KEsKvOL7.js → camera-CKbyBXMe.js} +1 -1
  125. package/dist/assets/camera-authoring-Ci3KnE-W.js +1 -0
  126. package/dist/assets/{camera-runtime.inspector-B7unX4g1.js → camera-runtime.inspector-DdR3P2BF.js} +1 -1
  127. package/dist/assets/canvas-entry-runtime-E5YjSgre.js +2 -0
  128. package/dist/assets/canvas-preview-frames-CiAx7dpV.js +1 -0
  129. package/dist/assets/{capability-coverage-Czas4C18.js → capability-coverage-CfUeULDN.js} +5 -5
  130. package/dist/assets/city-EkhAOo5s.exr +0 -0
  131. package/dist/assets/{collaboration-presence-DLoZ7EA3.js → collaboration-presence-CSLFNT7m.js} +1 -1
  132. package/dist/assets/{collider-Bw0mXlsW.js → collider-DRSaLRM9.js} +1 -1
  133. package/dist/assets/{component-board.service-DCwcUssB.js → component-board.service-B7Sv8b7m.js} +2 -2
  134. package/dist/assets/component-board.service-B8UHw8dn.js +2 -0
  135. package/dist/assets/component-contracts.service-LFGekycZ.js +1 -0
  136. package/dist/assets/{component-verbs.command-7xzfjGMZ.js → component-verbs.command-D4SvFjfG.js} +1 -1
  137. package/dist/assets/component-verbs.service-TGvWxf2b.js +1 -0
  138. package/dist/assets/{config-CEZk921y.js → config-DB_RH-hO.js} +3 -3
  139. package/dist/assets/{configurations-DTBMdaTL.js → configurations-C2qgJNnW.js} +1 -1
  140. package/dist/assets/{connection.status-BifnQdOs.js → connection.status-CG7X2brL.js} +1 -1
  141. package/dist/assets/{console-bridge-CHcb-xk5.js → console-bridge-B5Ltae37.js} +1 -1
  142. package/dist/assets/{constraint-De8f1Uiq.js → constraint-C_Jj7dXy.js} +1 -1
  143. package/dist/assets/constraints.inspector-D6QZJS4b.js +1 -0
  144. package/dist/assets/courtyard-DqlebbpC.exr +0 -0
  145. package/dist/assets/coverage.service-Clo86874.js +3 -0
  146. package/dist/assets/{create-runtime-CVCc1BDx.js → create-runtime-lmA910XT.js} +1 -1
  147. package/dist/assets/{curve-7Q79VgU4.js → curve-6-TR6dNb.js} +1 -1
  148. package/dist/assets/{data-asset-4hjS642k.js → data-asset-BNbd309U.js} +1 -1
  149. package/dist/assets/{data-ref-CQI28C0D.js → data-ref-Dvmd7eb1.js} +1 -1
  150. package/dist/assets/{debug-bridge-CCohG-d-.js → debug-bridge-BUNhgyY6.js} +1 -1
  151. package/dist/assets/{debug-registry-Dgvitx8M.js → debug-registry-B3Cnne3x.js} +1 -1
  152. package/dist/assets/deferred-ingest-play-7V8OrW3e.js +2 -0
  153. package/dist/assets/design-time-layers-g9VS6amb.js +1 -0
  154. package/dist/assets/design-time-mount.service-HtMr_vBd.js +2 -0
  155. package/dist/assets/design-time-react-mount-Dx6fJ-Hg.js +1 -0
  156. package/dist/assets/{directional-shadow-fit-BVkOKAv2.js → directional-shadow-fit-Cjz_Eg2b.js} +1 -1
  157. package/dist/assets/{document-preview-three-Kbg2GCLm.js → document-preview-three-C3y0syYQ.js} +1 -1
  158. package/dist/assets/{dom-authoring-adapter-CY8C7f4T.js → dom-authoring-adapter-CEeFyatF.js} +1 -1
  159. package/dist/assets/{draco3d-BBUTcNkz.js → draco3d-FKy0apkb.js} +1 -1
  160. package/dist/assets/drei-asset-caches-jJoHXbTj.js +2 -0
  161. package/dist/assets/{edit-mode-audio.service-Bzetwd5B.js → edit-mode-audio.service-DZTnrW6t.js} +1 -1
  162. package/dist/assets/edit-mode-authoring-D_BiHCQj.js +1 -0
  163. package/dist/assets/{edit-mode-networking.service-YCX6RRb_.js → edit-mode-networking.service-BzMI2VxO.js} +1 -1
  164. package/dist/assets/editor-api-Bzmo0o8_.js +1 -0
  165. package/dist/assets/{entry-adjudication-Cq8Yeb74.js → entry-adjudication-BYy7TXOB.js} +1 -1
  166. package/dist/assets/{events-156d8d12.esm-ErOhDXXB.js → events-156d8d12.esm-C734MYnx.js} +7 -7
  167. package/dist/assets/{extend-B-eOccUm.js → extend-CLG0ymiX.js} +1 -1
  168. package/dist/assets/forest-P_CQY3b_.exr +0 -0
  169. package/dist/assets/fork-menu-De7HU6_H.js +1 -0
  170. package/dist/assets/{frame-debugger-store-D1Mf_5up.js → frame-debugger-store-BZgIOlU6.js} +1 -1
  171. package/dist/assets/{game-DHOZVb-7.js → game-D5EJoILQ.js} +1 -1
  172. package/dist/assets/{game-contract-seams-a5YXejOu.js → game-contract-seams-TCpIMmHP.js} +1 -1
  173. package/dist/assets/{game-css-scope-transform-Eng4wS8E.js → game-css-scope-transform-NbpajQr-.js} +1 -1
  174. package/dist/assets/game-document.service-6eRlrI-d.js +1 -0
  175. package/dist/assets/game-eval.command-hKnSMlX0.js +2 -0
  176. package/dist/assets/{game-input-seams-CIQdetRw.js → game-input-seams-BC6xhZy3.js} +1 -1
  177. package/dist/assets/{game-module-access-B2mFxv-i.js → game-module-access-ry3xb1Ix.js} +1 -1
  178. package/dist/assets/{gameplay-export-BoKXm51x.js → gameplay-export-DiLQuPpn.js} +1 -1
  179. package/dist/assets/gameplay-replay-Bsre-1K8.js +1 -0
  180. package/dist/assets/{gameplay-rng-trap-CTNhm-UW.js → gameplay-rng-trap-BhRx_CtU.js} +1 -1
  181. package/dist/assets/gameplay.command-BqiyGn-I.js +1 -0
  182. package/dist/assets/{generation-jobs-BQrXbGp_.js → generation-jobs-BYcpgeGk.js} +1 -1
  183. package/dist/assets/generation.service-O81IqA-6.js +1 -0
  184. package/dist/assets/{generations-DzUogZsM.js → generations-CsGQ3twi.js} +1 -1
  185. package/dist/assets/{generations.status-CgOUBCum.js → generations.status-C3YU0_ml.js} +1 -1
  186. package/dist/assets/godot.style-DxJaFWOP.js +1 -0
  187. package/dist/assets/godot.view-BFsHk8b2.js +1 -0
  188. package/dist/assets/{hosted-asset-materialization-CiIvWkGU.js → hosted-asset-materialization-Bk-plQF6.js} +2 -2
  189. package/dist/assets/{ibl-override-material-BlmCxFKq.js → ibl-override-material-BhbGwgS1.js} +1 -1
  190. package/dist/assets/{index-mjWQmGhM.js → index-0n9eSzwT.js} +1 -1
  191. package/dist/assets/index-B4bmKkgY.css +1 -0
  192. package/dist/assets/index-BLo2LE8C.js +3404 -0
  193. package/dist/assets/index-BWW4-DBH.js +1 -0
  194. package/dist/assets/index-CLcsjKUs.js +1 -0
  195. package/dist/assets/index-CU5YUq-x.js +134 -0
  196. package/dist/assets/{index-DUpHH6JR.js → index-Cb6o_Td_.js} +1 -1
  197. package/dist/assets/index-Ckxb31Yz.js +1500 -0
  198. package/dist/assets/index-CnpsJMao.js +1 -0
  199. package/dist/assets/index-Cr23XhNm.js +1 -0
  200. package/dist/assets/index-DO1rWQ_r.js +487 -0
  201. package/dist/assets/{index-BcCBqgM_.js → index-DUh02lTr.js} +1 -1
  202. package/dist/assets/index-DXEHfb0b.js +1 -0
  203. package/dist/assets/{index-V1R-e5Bd.js → index-wRCvCebM.js} +1 -1
  204. package/dist/assets/{inference-diagnostics-Dhmtfbq_.js → inference-diagnostics-YW0yJkKx.js} +1 -1
  205. package/dist/assets/{ingest-BbYMC2vQ.js → ingest-BlQnR7s3.js} +1 -1
  206. package/dist/assets/ingest-boot-viewport-uG9jQ1zm.js +1 -0
  207. package/dist/assets/ingest-siblings-DRQXSWax.js +1 -0
  208. package/dist/assets/{ingest-source-persistence-C_6Hiyra.js → ingest-source-persistence-DH6ioCOu.js} +1 -1
  209. package/dist/assets/{ingest.service-BTDnQfM1.js → ingest.service-GeaWMaZX.js} +1 -1
  210. package/dist/assets/{input-manager-DH_hGW6d.js → input-manager-Cxx3RJgG.js} +1 -1
  211. package/dist/assets/{input-router-BNQvtIqw.js → input-router-FzxO5ld6.js} +1 -1
  212. package/dist/assets/{inspect-BZfi3mmo.js → inspect-BRgDdtVk.js} +1 -1
  213. package/dist/assets/instances.command-CFOMPSj3.js +1 -0
  214. package/dist/assets/{instruments-CKR02Y8I.js → instruments-IKn-vvNb.js} +1 -1
  215. package/dist/assets/interior-Bo_lba15.exr +0 -0
  216. package/dist/assets/{json-history-resource-BbxllWfV.js → json-history-resource-r-9q_hxP.js} +1 -1
  217. package/dist/assets/{light-D-_wsKTq.js → light-CFAor97k.js} +1 -1
  218. package/dist/assets/light-camera-factory-D1sgz3YB.js +1 -0
  219. package/dist/assets/live-mixers-BRkRHd6g.js +1 -0
  220. package/dist/assets/{loader-CaF_I7Yt.js → loader-BbMsvIxP.js} +1 -1
  221. package/dist/assets/machine.document-CgmsOh-s.js +24 -0
  222. package/dist/assets/machines.finder-nxiCgQc2.js +1 -0
  223. package/dist/assets/matcap-texture-Dh65bX5V.js +1 -0
  224. package/dist/assets/{material-CpAdjDxn.js → material-D5kXEZWQ.js} +1 -1
  225. package/dist/assets/{material-factory-Bz6h__6g.js → material-factory-0Qb0VuZ5.js} +1 -1
  226. package/dist/assets/material-preview.view-DqNcpd_b.js +1 -0
  227. package/dist/assets/{mesh-B3WPtNKO.js → mesh-BKPgNTwh.js} +1 -1
  228. package/dist/assets/{mesh-shadow-CZnXrw_l.js → mesh-shadow-BDQP4mHs.js} +1 -1
  229. package/dist/assets/model-asset-sections.service-DWPLmkqa.js +1 -0
  230. package/dist/assets/model-inspection-Cxfg_Fei.js +1 -0
  231. package/dist/assets/model.layout-BpZE1W9V.js +1 -0
  232. package/dist/assets/{models.finder-G2jQgIRu.js → models.finder-DHW17ZEa.js} +1 -1
  233. package/dist/assets/module-mode-CRfHyIMS.js +2 -0
  234. package/dist/assets/mount-canvas-ingest-root-BZZ8M3Lu.js +2 -0
  235. package/dist/assets/mount-dom-ingest-root-D1GV6Jjt.js +2 -0
  236. package/dist/assets/{mount-game-6t9cKNo4.js → mount-game-F9e76auh.js} +1 -1
  237. package/dist/assets/mount-ingest-root-B5D-Lmmk.js +2 -0
  238. package/dist/assets/{mount-manifest-CGVxhmAw.js → mount-manifest-cYRhgHfo.js} +1 -1
  239. package/dist/assets/mount-three-ingest-root-BNnouaBn.js +1 -0
  240. package/dist/assets/{mounted-authoring-Dmg5xmhP.js → mounted-authoring-TIN5EnCb.js} +1 -1
  241. package/dist/assets/{mounted-story-viewport-source-DjP6RA9U.js → mounted-story-viewport-source-CAlEmE0_.js} +1 -1
  242. package/dist/assets/{native-debug-module-CWicoSGD.js → native-debug-module-j-MekcLS.js} +1 -1
  243. package/dist/assets/{navigation-CIiCx-SM.js → navigation-DmR1BDVo.js} +1 -1
  244. package/dist/assets/{navmesh.menu-CAKiH8PW.js → navmesh.menu-FhL1pGx1.js} +1 -1
  245. package/dist/assets/{navmesh.service-jgDWlgj1.js → navmesh.service-usyDeJlm.js} +1 -1
  246. package/dist/assets/{network.utility-CEu5nHf7.js → network.utility-BPh4hTmh.js} +1 -1
  247. package/dist/assets/night-CvV4Gybt.exr +0 -0
  248. package/dist/assets/{object3d-authoring-subject-CH5sI2oP.js → object3d-authoring-subject-CyE4rQ2A.js} +1 -1
  249. package/dist/assets/oid-transform-BOqL6YH6.js +2 -0
  250. package/dist/assets/{particles-Y626p22p.js → particles-C47L-dda.js} +1 -1
  251. package/dist/assets/particles-factory-CRqPLdS7.js +1 -0
  252. package/dist/assets/pixi-authoring-adapter-C5Ikqj5-.js +1 -0
  253. package/dist/assets/{pixi-live-write-target-DuWydlWb.js → pixi-live-write-target-OWBk79dp.js} +1 -1
  254. package/dist/assets/pixi-primitive-D5igywJ_.js +1 -0
  255. package/dist/assets/pixi-react-root-factory-9lZ0Yz-n.js +1 -0
  256. package/dist/assets/play-mode-DomOvQie.js +22 -0
  257. package/dist/assets/play.command-DoqjH-Pp.js +2 -0
  258. package/dist/assets/{playtest-BXIL1JEF.js → playtest-BnFenMBW.js} +1 -1
  259. package/dist/assets/{pose-guard-6Osb2cFu.js → pose-guard-Bb3gZOzk.js} +1 -1
  260. package/dist/assets/{product-DFhyARJj.js → product-CTDJoVo5.js} +1 -1
  261. package/dist/assets/{profiler.action-CaXJDp3t.js → profiler.action-C_OFGkDw.js} +1 -1
  262. package/dist/assets/{profiler.menu-BIMF6Bi4.js → profiler.menu-BJbnVoo4.js} +1 -1
  263. package/dist/assets/{profiler.utility-BExw9wBO.js → profiler.utility-qpfhuwRw.js} +1 -1
  264. package/dist/assets/project-authoring-session-BV-MM8Fl.js +2 -0
  265. package/dist/assets/{project-provenance-BoP3nrle.js → project-provenance-4ldz-EOG.js} +1 -1
  266. package/dist/assets/{properties-bone-constraints.inspector-ByT6p7S-.js → properties-bone-constraints.inspector-C-ByIdg1.js} +1 -1
  267. package/dist/assets/{properties-bone.inspector-z4qJwKO5.js → properties-bone.inspector-CXY0xCQB.js} +1 -1
  268. package/dist/assets/{properties-collection.inspector-D0_3ijWU.js → properties-collection.inspector-DIfkZAel.js} +1 -1
  269. package/dist/assets/{properties-constraints.inspector-CESzjuls.js → properties-constraints.inspector-BaunL5nT.js} +1 -1
  270. package/dist/assets/{properties-data.inspector-hG8Wgyzb.js → properties-data.inspector-DQD-jfO2.js} +1 -1
  271. package/dist/assets/{properties-material.inspector-CzY0JCQ6.js → properties-material.inspector-A0HZ4SX6.js} +1 -1
  272. package/dist/assets/{properties-modifiers.inspector-3dDhwf7g.js → properties-modifiers.inspector-GUnVhVwZ.js} +1 -1
  273. package/dist/assets/{properties-object.inspector-CiarfxkT.js → properties-object.inspector-Chsfa4Xa.js} +1 -1
  274. package/dist/assets/{properties-output.inspector-DKJxmKSD.js → properties-output.inspector-U7ZmD0Me.js} +1 -1
  275. package/dist/assets/{properties-particles.inspector-CCEdYWGm.js → properties-particles.inspector-umkW-OlI.js} +1 -1
  276. package/dist/assets/{properties-physics.inspector-B2c0KUyA.js → properties-physics.inspector-CLVBlWwL.js} +1 -1
  277. package/dist/assets/{properties-render.inspector-Bcm0HLRW.js → properties-render.inspector-D0u9taKy.js} +1 -1
  278. package/dist/assets/{properties-scene.inspector-PIM_eTb_.js → properties-scene.inspector-JwGCZQAx.js} +1 -1
  279. package/dist/assets/{properties-texture.inspector-CgFlnyr8.js → properties-texture.inspector-B1vC28pw.js} +1 -1
  280. package/dist/assets/{properties-view-layer.inspector-DGjF_Aqo.js → properties-view-layer.inspector-BuUKyBFp.js} +1 -1
  281. package/dist/assets/{properties-world.inspector-CrMvaRvB.js → properties-world.inspector-VXUj4dT4.js} +1 -1
  282. package/dist/assets/r3f-design-session-qJ2v5SrB.js +2 -0
  283. package/dist/assets/r3f-physics-binding-C8OqNRG2.js +1 -0
  284. package/dist/assets/{r3f-root-factory-z9llD1OU.js → r3f-root-factory-DjGnbU4n.js} +1 -1
  285. package/dist/assets/r3f-source-authoring-adapter-CG9heazM.js +12 -0
  286. package/dist/assets/{rapier-physics-bridge-CMoeVo3Y.js → rapier-physics-bridge-B-EK7KYV.js} +1 -1
  287. package/dist/assets/react-inspector.service-DWeXDHJq.js +1 -0
  288. package/dist/assets/{react-root-CEz5NTck.js → react-root-DGLRLr-F.js} +1 -1
  289. package/dist/assets/react-story-board-CSqHY0Cg.js +1 -0
  290. package/dist/assets/{react-three-fiber.esm-CycrbDlA.js → react-three-fiber.esm-BxIoqVh1.js} +1 -1
  291. package/dist/assets/{react-three-rapier.esm-CEfKpvxT.js → react-three-rapier.esm-BYzLhdSV.js} +1 -1
  292. package/dist/assets/react-world-authoring-adapter-BMT9kLWU.js +1 -0
  293. package/dist/assets/{realm-services-CobQsq_X.js → realm-services-D25JHoqD.js} +1 -1
  294. package/dist/assets/{reflection-probe-Don-M3Fj.js → reflection-probe-CqXWlicu.js} +1 -1
  295. package/dist/assets/{reflection-probe-capture.inspector-CmFUoJCx.js → reflection-probe-capture.inspector-B7Qa30vB.js} +1 -1
  296. package/dist/assets/regions-DWeEBnE2.js +1 -0
  297. package/dist/assets/{register-render-vitals-BiZk29b2.js → register-render-vitals-BO7x64kR.js} +1 -1
  298. package/dist/assets/{registry-02YZjMNp.js → registry-DlTluc4x.js} +1 -1
  299. package/dist/assets/{render-audio-control-vMRlePWb.js → render-audio-control-DCa_bOBI.js} +1 -1
  300. package/dist/assets/{render-batch-system-0vq7p0VC.js → render-batch-system-CzCp9YKM.js} +1 -1
  301. package/dist/assets/{render-control-Df3yTiyr.js → render-control-BNQr1eNO.js} +1 -1
  302. package/dist/assets/{render-env-D2IV2x5k.js → render-env-emvlfeTG.js} +1 -1
  303. package/dist/assets/{render-features-CPQ_e568.js → render-features-COF7MSQ9.js} +1 -1
  304. package/dist/assets/{render-settings-Bw4W9SYF.js → render-settings-C_kIMq8Y.js} +1 -1
  305. package/dist/assets/{resolve-three-SZE_WWUM.js → resolve-three-C-nx-QdA.js} +13 -13
  306. package/dist/assets/{root-seam-contract-Z0VWX3Bk.js → root-seam-contract-C7GOxf5x.js} +1 -1
  307. package/dist/assets/{run-ticks-settled-C4ksViyA.js → run-ticks-settled-B0cTtmhQ.js} +1 -1
  308. package/dist/assets/{scene-capture-CGYF-Viw.js → scene-capture-CLOc7GXc.js} +1 -1
  309. package/dist/assets/{scene-capture-BQKzU0NT.js → scene-capture-D10Nxkvp.js} +1 -1
  310. package/dist/assets/scene-document.service-B7kAVTko.js +2 -0
  311. package/dist/assets/{scene-framing-Cat0GtyJ.js → scene-framing-50N7SKuX.js} +1 -1
  312. package/dist/assets/{scene-index-B6BZOHMk.js → scene-index-Bce459yu.js} +1 -1
  313. package/dist/assets/{scene-query-C7_N-TpI.js → scene-query-IUZhw6pA.js} +1 -1
  314. package/dist/assets/{schema-kl9-2B_J.js → schema-Iy-mbzll.js} +1 -1
  315. package/dist/assets/sculpt.layout-D-K5cLw6.js +1 -0
  316. package/dist/assets/{seeded-random-i3mtgBKZ.js → seeded-random-CN0scLZj.js} +1 -1
  317. package/dist/assets/{session-CZ5JPg-z.js → session-CsR0lApe.js} +24 -15
  318. package/dist/assets/{setup-audio-S8GQF91f.js → setup-audio-BJ18gvXZ.js} +1 -1
  319. package/dist/assets/setup-particles-B6H-GbAA.js +1 -0
  320. package/dist/assets/{setup-physics-BeZ7-LKD.js → setup-physics-GugbTT0J.js} +1 -1
  321. package/dist/assets/{setup-renderer-DVXaSGin.js → setup-renderer-wt_a-p8r.js} +20 -20
  322. package/dist/assets/shading.layout-CZZHKBer.js +1 -0
  323. package/dist/assets/{sim-clock-CLflx7kg.js → sim-clock-DEfbb_-P.js} +1 -1
  324. package/dist/assets/{soft-particle-depth-DGvfQDi1.js → soft-particle-depth-CKUS1j0Y.js} +1 -1
  325. package/dist/assets/source-object3d-authoring-adapter-CfHQLFAL.js +1 -0
  326. package/dist/assets/{source-persistence-backend-C-aR-B_Y.js → source-persistence-backend-_-JMEXxE.js} +1 -1
  327. package/dist/assets/{spark-renderer-lifecycle-ynWESJcv.js → spark-renderer-lifecycle-9mnMW3Z4.js} +1 -1
  328. package/dist/assets/{spark.module-4pXQoz5d.js → spark.module-CXth-y_a.js} +1 -1
  329. package/dist/assets/stage-keyboard-C0FdDLOQ.js +1 -0
  330. package/dist/assets/stage-overlay-set-CwhCzbOy.js +1 -0
  331. package/dist/assets/stage-presence-markers-DVMDKiB-.js +1 -0
  332. package/dist/assets/stage-transform-tools-B09Z7v0o.js +1 -0
  333. package/dist/assets/standard-viewport-dressing-GUUr6GuK.js +20 -0
  334. package/dist/assets/{state-watch.action-BOvQR2qt.js → state-watch.action-CgF8qoFC.js} +1 -1
  335. package/dist/assets/{state-watch.menu-CNLvDeeY.js → state-watch.menu-CIMncESW.js} +1 -1
  336. package/dist/assets/{state-watch.utility-Bg1tTTQU.js → state-watch.utility-zTHkUALC.js} +1 -1
  337. package/dist/assets/static-batch-advisor-DqfXWRUq.js +1 -0
  338. package/dist/assets/story-capture-COQgezzl.js +1 -0
  339. package/dist/assets/story-documents-DQ0KORmd.js +3 -0
  340. package/dist/assets/story-documents.service-DOSaqPqv.js +1 -0
  341. package/dist/assets/story-documents.service-Gb7oUkbg.js +1 -0
  342. package/dist/assets/{story-media-presence-BHzk2IV5.js → story-media-presence-nW3zJqKv.js} +1 -1
  343. package/dist/assets/story-pixi-preview-COPTEsHo.js +1 -0
  344. package/dist/assets/story-presentation-CxADj5oz.js +1 -0
  345. package/dist/assets/{story-three-preview-BHEDZzcl.js → story-three-preview-C9W__8Or.js} +2 -2
  346. package/dist/assets/{structural-ids-Dc-7rEwi.js → structural-ids-CblajJQK.js} +1 -1
  347. package/dist/assets/studio-CysTBGIb.exr +0 -0
  348. package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
  349. package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
  350. package/dist/assets/{surface-state-DaxyruCj.js → surface-state-BAUJu6GY.js} +1 -1
  351. package/dist/assets/{system-runner-DkOjxEBt.js → system-runner-D_DtVrer.js} +1 -1
  352. package/dist/assets/team-playtest.service--79O6xkx.js +1 -0
  353. package/dist/assets/{three-CDSueJyJ.js → three-DSsr_Lvp.js} +1 -1
  354. package/dist/assets/{three-authoring-adapter-CmSQ3Vui.js → three-authoring-adapter-Yqsank46.js} +1 -1
  355. package/dist/assets/three-authoring.service-BDos-bRt.js +2 -0
  356. package/dist/assets/{three-ingest-runtime-QzDYk6tU.js → three-ingest-runtime-DWijtqQ8.js} +1 -1
  357. package/dist/assets/{three-projection-core-BmKMZ-nf.js → three-projection-core-kubBTx0s.js} +1 -1
  358. package/dist/assets/three-story-model-BraQFA9h.js +1 -0
  359. package/dist/assets/three-viewport-presentation-BL7Uc2i6.js +1 -0
  360. package/dist/assets/{three.module-D396a9Mn.js → three.module-IFn-4i31.js} +1 -1
  361. package/dist/assets/three.quarks.esm-CRKGjKAH.js +1039 -0
  362. package/dist/assets/transform-mode-request-Cu7ewbtr.js +1 -0
  363. package/dist/assets/{transform-writer-BhBBTx33.js → transform-writer-DXxrI4t7.js} +1 -1
  364. package/dist/assets/transport.header-CeND8Vzh.js +1 -0
  365. package/dist/assets/{trigger-volume-BNK2XzPL.js → trigger-volume-BCVRS3NM.js} +1 -1
  366. package/dist/assets/{tuples-CIQ4Bn1U.js → tuples-DKDGrN1t.js} +1 -1
  367. package/dist/assets/ui-board-document-DD2CAEAo.js +2 -0
  368. package/dist/assets/unity.style-vCmLw4gI.js +1 -0
  369. package/dist/assets/unity.view-DIn2S6Do.js +1 -0
  370. package/dist/assets/unreal.style-BQn-HhOX.js +1 -0
  371. package/dist/assets/unreal.view-adNBETZK.js +1 -0
  372. package/dist/assets/user-data-CZqsJDk-.js +1 -0
  373. package/dist/assets/{utility-view-state-BHypxA33.js → utility-view-state-DYJY8V8O.js} +1 -1
  374. package/dist/assets/uv-editing.layout-A8RA-cbM.js +1 -0
  375. package/dist/assets/{vgai-shared-three-Bc5PvpLM.js → vgai-shared-three-D_RAEumG.js} +1 -1
  376. package/dist/assets/{viewport-root-presentation-CWsE56K6.js → viewport-root-presentation-C9M98VNM.js} +1 -1
  377. package/dist/assets/{viewport-shading-BuA88e_A.js → viewport-shading-BzcvgJhK.js} +1 -1
  378. package/dist/assets/viewport-shading-boundary-CBvvzS-p.js +84 -0
  379. package/dist/assets/{viewport-surface-status-B3om4Kcf.js → viewport-surface-status-BFmnWp7z.js} +1 -1
  380. package/dist/assets/voxel-surface-ROWYug7H.js +1 -0
  381. package/dist/assets/webgl-frame-capture-CRKX73E9.js +1 -0
  382. package/dist/assets/webworkerAll-CehoCtFb.js +1 -0
  383. package/dist/assets/{worker-UrMcrc5_.js → worker-B7zhIsFh.js} +2 -2
  384. package/dist/assets/world-documents-DErHq15h.js +1 -0
  385. package/dist/assets/world-root-stage-binding-BIymcQ4K.js +1 -0
  386. package/dist/assets/{world-state-BWG-IcOd.js → world-state-ZGDGY_Xl.js} +1 -1
  387. package/dist/assets/{writer-B-KovzkA.js → writer-BPbm4_my.js} +5 -5
  388. package/dist/assets/xstate-animation-binding-Cvd4JbEY.js +1 -0
  389. package/dist/assets/{xstate-animation-meta-Q3u9zh_m.js → xstate-animation-meta-B3OZR8Q2.js} +1 -1
  390. package/dist/vgai-shared-three.json +1 -1
  391. package/dist-node/cli.js +317 -73
  392. package/dist-node/create.js +59 -19
  393. package/package.json +16 -13
  394. package/src/index.ts +6 -0
  395. package/template/.agents/skills/vgai-3d-models/SKILL.md +3 -3
  396. package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +4 -9
  397. package/template/.claude/skills/vgai-3d-models/SKILL.md +3 -3
  398. package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +4 -9
  399. package/template/.github/skills/vgai-3d-models/SKILL.md +3 -3
  400. package/template/.github/skills/vgai-threejs-authoring/SKILL.md +4 -9
  401. package/template/AGENTS.md +1 -1
  402. package/template/check-idioms.ts +4 -5
  403. package/template/package.json +9 -9
  404. package/template/tsconfig.json +1 -0
  405. package/template/vgai.adapter.ts +1 -0
  406. package/template-dotfiles/gitignore +2 -0
  407. package/workbench/src/media/game-cover.css +1 -1
  408. package/catalog/project-source/src/lib/bake/mesh-slice.ts +0 -157
  409. package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +0 -1
  410. package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +0 -1
  411. package/dist/assets/ColladaLoader-aVOPIsCh.js +0 -3
  412. package/dist/assets/EXRLoader-Cdans_oJ.js +0 -1
  413. package/dist/assets/EffectComposer-DQxfsXBZ.js +0 -1
  414. package/dist/assets/EntityModelDocument-Ccvw66N9.js +0 -1
  415. package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +0 -1
  416. package/dist/assets/FBXLoader-B4MoUtAn.js +0 -1
  417. package/dist/assets/Fbo-Dz-Soul3.js +0 -1
  418. package/dist/assets/GLTFExporter-HgrCle4L.js +0 -1
  419. package/dist/assets/Gltf-UHVWKz65.js +0 -2
  420. package/dist/assets/HDRLoader-THU88oVD.js +0 -5
  421. package/dist/assets/ImageViewer-Tn7s_MnW.js +0 -1
  422. package/dist/assets/InspectorObjectPreview-CVejvLRg.js +0 -1
  423. package/dist/assets/JsonAssetDocument-C7VGcLhu.js +0 -3
  424. package/dist/assets/MeshBVH-BiDHDcu-.js +0 -1
  425. package/dist/assets/ModelAssetDocument-F5GACirk.js +0 -1
  426. package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +0 -2
  427. package/dist/assets/Object3DPreview-DL8oi7Xs.js +0 -2
  428. package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +0 -2
  429. package/dist/assets/PlayBar-BR-Vg3Jb.js +0 -2
  430. package/dist/assets/RGBELoader-BgBcQv8j.js +0 -1
  431. package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +0 -1
  432. package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +0 -1
  433. package/dist/assets/STLLoader-Dyv3lsxY.js +0 -1
  434. package/dist/assets/SimplifyModifier-C8ayvRzd.js +0 -1
  435. package/dist/assets/SourceAssetViewer-2SWQoUut.js +0 -12
  436. package/dist/assets/StageHost-BN-IoTef.js +0 -2
  437. package/dist/assets/ThreeBoardDocument-CVncZyIq.js +0 -2
  438. package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +0 -1
  439. package/dist/assets/asset-budget.action-DCzzcuTh.js +0 -1
  440. package/dist/assets/asset-budget.document-BWU8wnVW.js +0 -1
  441. package/dist/assets/asset-budget.menu-BGZpT_31.js +0 -1
  442. package/dist/assets/autoplay.service-BZBGNSvt.js +0 -1
  443. package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +0 -2
  444. package/dist/assets/blender-properties-tab-C5CyPydi.js +0 -3
  445. package/dist/assets/blender-runtime-host-BpBwGv7r.js +0 -4
  446. package/dist/assets/blender-runtime.document-lIYhhPtv.js +0 -8
  447. package/dist/assets/blender.command-BtJeWk-A.js +0 -1
  448. package/dist/assets/body-marks-h_xDxiDE.js +0 -1
  449. package/dist/assets/bridge.command-o5gDNEwa.js +0 -3
  450. package/dist/assets/browserAll-DeWblVez.js +0 -1
  451. package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +0 -2
  452. package/dist/assets/component-board.service-DidCyM4O.js +0 -2
  453. package/dist/assets/component-verbs.service-Bv9jId3q.js +0 -1
  454. package/dist/assets/constraints.inspector-B9U9Yj-u.js +0 -1
  455. package/dist/assets/coverage.service-VTX5Mcsx.js +0 -3
  456. package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +0 -2
  457. package/dist/assets/design-time-layers-wYgOTgni.js +0 -1
  458. package/dist/assets/design-time-mount.service-BzY21e1F.js +0 -2
  459. package/dist/assets/design-time-react-mount-DM9WLrF2.js +0 -1
  460. package/dist/assets/edit-mode-authoring-B47TfLqu.js +0 -1
  461. package/dist/assets/editor-api-BoJIcyZG.js +0 -1
  462. package/dist/assets/fflate.module-DPuTF8aG.js +0 -6
  463. package/dist/assets/fork-menu-BoVyw2Wu.js +0 -1
  464. package/dist/assets/game-document.service-DbRfx2V0.js +0 -1
  465. package/dist/assets/game-eval.command-D-7Dxbj_.js +0 -2
  466. package/dist/assets/gameplay-replay-e5umMlXv.js +0 -1
  467. package/dist/assets/gameplay.command-DxcVYX6F.js +0 -1
  468. package/dist/assets/generation.service-CDIgObuw.js +0 -1
  469. package/dist/assets/index-96FBF1Oj.js +0 -1
  470. package/dist/assets/index-BAWkB0dv.js +0 -1
  471. package/dist/assets/index-BDnS2b6S.js +0 -1
  472. package/dist/assets/index-BjTCPEQ7.js +0 -134
  473. package/dist/assets/index-CVCb_ImQ.js +0 -1
  474. package/dist/assets/index-CZd9o7Lu.js +0 -1
  475. package/dist/assets/index-D2fNXpHa.css +0 -1
  476. package/dist/assets/index-GIL7oGEO.js +0 -4894
  477. package/dist/assets/index-OrYXPk3Z.js +0 -487
  478. package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +0 -1
  479. package/dist/assets/ingest-siblings-Bop2kqVl.js +0 -1
  480. package/dist/assets/instances.command-D6UkZNO8.js +0 -1
  481. package/dist/assets/light-camera-factory-CWbbe9gI.js +0 -1
  482. package/dist/assets/live-behaviors-Bxq49Maz.js +0 -1
  483. package/dist/assets/matcap-texture-CVfalpWT.js +0 -1
  484. package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +0 -1
  485. package/dist/assets/model.layout-BJUEQYUI.js +0 -1
  486. package/dist/assets/module-mode-DVBLT9d-.js +0 -2
  487. package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +0 -2
  488. package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +0 -2
  489. package/dist/assets/mount-ingest-root-glv2SSWf.js +0 -2
  490. package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +0 -1
  491. package/dist/assets/particles-factory-DnLOHXT8.js +0 -1
  492. package/dist/assets/pasteboard-materialize-BqSS4QzV.js +0 -20
  493. package/dist/assets/pasteboard.action-DU3UHtJG.js +0 -2
  494. package/dist/assets/pixi-authoring-adapter-CjibysC3.js +0 -1
  495. package/dist/assets/pixi-primitive-DlWbUPN9.js +0 -1
  496. package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +0 -1
  497. package/dist/assets/play-mode-BFU2PCkG.js +0 -22
  498. package/dist/assets/play.command-BpqqLqkq.js +0 -2
  499. package/dist/assets/project-authoring-session-Bnt6icLr.js +0 -2
  500. package/dist/assets/r3f-design-session-D-4yyDO9.js +0 -2
  501. package/dist/assets/r3f-physics-binding-BBo8oma9.js +0 -1
  502. package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +0 -13
  503. package/dist/assets/react-inspector.service-B_neRnSK.js +0 -1
  504. package/dist/assets/react-story-board-BDDwiE2H.js +0 -1
  505. package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +0 -1
  506. package/dist/assets/runtime-inspection-l2iFQSsg.js +0 -1
  507. package/dist/assets/scene-document.service-qkDjUrlP.js +0 -2
  508. package/dist/assets/sculpt.layout-zJF55yCR.js +0 -1
  509. package/dist/assets/setup-particles-GCXlnkj_.js +0 -1
  510. package/dist/assets/shading.layout-DULYZV6M.js +0 -1
  511. package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +0 -1
  512. package/dist/assets/stage-invalidation-DBg3C3Ta.js +0 -1
  513. package/dist/assets/stage-keyboard-n-5kKH-m.js +0 -1
  514. package/dist/assets/stage-overlay-set-B9zp2sLB.js +0 -1
  515. package/dist/assets/stage-presence-markers-DiGI6A45.js +0 -1
  516. package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +0 -7
  517. package/dist/assets/static-batch-advisor-B13QEH7d.js +0 -1
  518. package/dist/assets/story-capture-_gC8dXV-.js +0 -1
  519. package/dist/assets/story-documents--TDLaPeL.js +0 -3
  520. package/dist/assets/story-documents.service-BiS_YbNQ.js +0 -1
  521. package/dist/assets/story-documents.service-CxOPYJ2j.js +0 -1
  522. package/dist/assets/story-pixi-preview-BUrOJZXS.js +0 -1
  523. package/dist/assets/story-presentation-j2AVN-mK.js +0 -1
  524. package/dist/assets/team-playtest.service-DqOinFVA.js +0 -1
  525. package/dist/assets/three-authoring.service-iuHLwtf1.js +0 -2
  526. package/dist/assets/three-viewport-presentation-QBQpSdMh.js +0 -1
  527. package/dist/assets/three.quarks.esm-B1C61jGo.js +0 -1039
  528. package/dist/assets/transport.header-B-6HQlU2.js +0 -1
  529. package/dist/assets/ui-board-document-Bwtt--xp.js +0 -2
  530. package/dist/assets/use-live-actor-state-DErbWQWF.js +0 -1
  531. package/dist/assets/user-data-BB2Of6Ht.js +0 -1
  532. package/dist/assets/uv-editing.layout-BEKHxmHw.js +0 -1
  533. package/dist/assets/viewport-shading-boundary-B_-_gABg.js +0 -82
  534. package/dist/assets/voxel-surface-DtcsSWRL.js +0 -1
  535. package/dist/assets/webgl-frame-capture-FlF9zQmW.js +0 -1
  536. package/dist/assets/webworkerAll-CM2o_dnz.js +0 -1
  537. package/dist/assets/world-documents-147tiFZe.js +0 -1
  538. package/dist/assets/world-root-stage-binding-vwTrtBz6.js +0 -1
  539. package/dist/assets/xstate-animation-binding-Brd0NST6.js +0 -1
  540. package/dist/assets/xstate-behavior.action-B8UluFBK.js +0 -1
  541. package/dist/assets/xstate-behavior.document-CKAsE45I.js +0 -1
  542. package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +0 -1
  543. package/dist/assets/xstate-behavior.menu-BXbPICIh.js +0 -1
  544. package/dist/assets/xstate-inspection-BsZv8LS9.js +0 -1
@@ -0,0 +1 @@
1
+ import{j as J,a as rt,ay as se,V as C,bf as tt,n as ie,g as Y,bg as Q,ak as he,al as xe,_ as re,R as we,am as Vn}from"./three.module-IFn-4i31.js";const oe=0,Ae=1,ge=2,Bs=0,Ps=1,Rn=2,en=1.25,Dn=1,$=32,N=$/4,_n=65535,Ts=_n<<16,Yt=Math.pow(2,-24),Mn=Symbol("SKIP_GENERATION"),ce={strategy:oe,maxDepth:40,targetLeafSize:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null,[Mn]:!1};function V(s,t,n){return n.min.x=t[s],n.min.y=t[s+1],n.min.z=t[s+2],n.max.x=t[s+3],n.max.y=t[s+4],n.max.z=t[s+5],n}function dn(s){let t=-1,n=-1/0;for(let e=0;e<3;e++){const i=s[e+3]-s[e];i>n&&(n=i,t=e)}return t}function Nn(s,t){t.set(s)}function Fn(s,t,n){let e,i;for(let o=0;o<3;o++){const r=o+3;e=s[o],i=t[o],n[o]=e<i?e:i,e=s[r],i=t[r],n[r]=e>i?e:i}}function Ut(s,t,n){for(let e=0;e<3;e++){const i=t[s+2*e],o=t[s+2*e+1],r=i-o,l=i+o;r<n[e]&&(n[e]=r),l>n[e+3]&&(n[e+3]=l)}}function gt(s){const t=s[3]-s[0],n=s[4]-s[1],e=s[5]-s[2];return 2*(t*n+n*e+e*t)}function R(s,t){return t[s+15]===_n}function q(s,t){return t[s+6]}function k(s,t){return t[s+14]}function F(s){return s+N}function H(s,t){const n=t[s+6];return s+n*N}function vn(s,t){return t[s+7]}function bs(s){return s}function sn(s,t,n,e,i){let o=1/0,r=1/0,l=1/0,c=-1/0,p=-1/0,u=-1/0,f=1/0,a=1/0,y=1/0,w=-1/0,A=-1/0,g=-1/0;const B=s.offset||0;for(let d=(t-B)*6,h=(t+n-B)*6;d<h;d+=6){const m=s[d+0],x=s[d+1],S=m-x,P=m+x;S<o&&(o=S),P>c&&(c=P),m<f&&(f=m),m>w&&(w=m);const _=s[d+2],M=s[d+3],T=_-M,v=_+M;T<r&&(r=T),v>p&&(p=v),_<a&&(a=_),_>A&&(A=_);const b=s[d+4],I=s[d+5],z=b-I,U=b+I;z<l&&(l=z),U>u&&(u=U),b<y&&(y=b),b>g&&(g=b)}e[0]=o,e[1]=r,e[2]=l,e[3]=c,e[4]=p,e[5]=u,i[0]=f,i[1]=a,i[2]=y,i[3]=w,i[4]=A,i[5]=g}const j=32,Be=(s,t)=>s.candidate-t.candidate,et=new Array(j).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Et=new Float32Array(6);function Pe(s,t,n,e,i,o){let r=-1,l=0;if(o===oe)r=dn(t),r!==-1&&(l=(t[r]+t[r+3])/2);else if(o===Ae)r=dn(s),r!==-1&&(l=Te(n,e,i,r));else if(o===ge){const c=gt(s);let p=en*i;const u=n.offset||0,f=(e-u)*6,a=(e+i-u)*6;for(let y=0;y<3;y++){const w=t[y],B=(t[y+3]-w)/j;if(i<j/4){const d=[...et];d.length=i;let h=0;for(let x=f;x<a;x+=6,h++){const S=d[h];S.candidate=n[x+2*y],S.count=0;const{bounds:P,leftCacheBounds:_,rightCacheBounds:M}=S;for(let T=0;T<3;T++)M[T]=1/0,M[T+3]=-1/0,_[T]=1/0,_[T+3]=-1/0,P[T]=1/0,P[T+3]=-1/0;Ut(x,n,P)}d.sort(Be);let m=i;for(let x=0;x<m;x++){const S=d[x];for(;x+1<m&&d[x+1].candidate===S.candidate;)d.splice(x+1,1),m--}for(let x=f;x<a;x+=6){const S=n[x+2*y];for(let P=0;P<m;P++){const _=d[P];S>=_.candidate?Ut(x,n,_.rightCacheBounds):(Ut(x,n,_.leftCacheBounds),_.count++)}}for(let x=0;x<m;x++){const S=d[x],P=S.count,_=i-S.count,M=S.leftCacheBounds,T=S.rightCacheBounds;let v=0;P!==0&&(v=gt(M)/c);let b=0;_!==0&&(b=gt(T)/c);const I=Dn+en*(v*P+b*_);I<p&&(r=y,p=I,l=S.candidate)}}else{for(let m=0;m<j;m++){const x=et[m];x.count=0,x.candidate=w+B+m*B;const S=x.bounds;for(let P=0;P<3;P++)S[P]=1/0,S[P+3]=-1/0}for(let m=f;m<a;m+=6){let P=~~((n[m+2*y]-w)/B);P>=j&&(P=j-1);const _=et[P];_.count++,Ut(m,n,_.bounds)}const d=et[j-1];Nn(d.bounds,d.rightCacheBounds);for(let m=j-2;m>=0;m--){const x=et[m],S=et[m+1];Fn(x.bounds,S.rightCacheBounds,x.rightCacheBounds)}let h=0;for(let m=0;m<j-1;m++){const x=et[m],S=x.count,P=x.bounds,M=et[m+1].rightCacheBounds;S!==0&&(h===0?Nn(P,Et):Fn(P,Et,Et)),h+=S;let T=0,v=0;h!==0&&(T=gt(Et)/c);const b=i-h;b!==0&&(v=gt(M)/c);const I=Dn+en*(T*h+v*b);I<p&&(r=y,p=I,l=x.candidate)}}}}else console.warn(`BVH: Invalid build strategy value ${o} used.`);return{axis:r,pos:l}}function Te(s,t,n,e){let i=0;const o=s.offset;for(let r=t,l=t+n;r<l;r++)i+=s[(r-o)*6+e*2];return i/n}class rn{constructor(){this.boundingData=new Float32Array(6)}}function be(s,t,n,e,i,o){let r=e,l=e+i-1;const c=o.pos,p=o.axis*2,u=n.offset||0;for(;;){for(;r<=l&&n[(r-u)*6+p]<c;)r++;for(;r<=l&&n[(l-u)*6+p]>=c;)l--;if(r<l){for(let f=0;f<t;f++){let a=s[r*t+f];s[r*t+f]=s[l*t+f],s[l*t+f]=a}for(let f=0;f<6;f++){const a=r-u,y=l-u,w=n[a*6+f];n[a*6+f]=n[y*6+f],n[y*6+f]=w}r++,l--}else return r}}let le,Kt,mn,ae;const Se=Math.pow(2,32);function hn(s){return"count"in s?1:1+hn(s.left)+hn(s.right)}function _e(s,t,n){return le=new Float32Array(n),Kt=new Uint32Array(n),mn=new Uint16Array(n),ae=new Uint8Array(n),xn(s,t)}function xn(s,t){const n=s/4,e=s/2,i="count"in t,o=t.boundingData;for(let r=0;r<6;r++)le[n+r]=o[r];if(i)return t.buffer?(ae.set(new Uint8Array(t.buffer),s),s+t.buffer.byteLength):(Kt[n+6]=t.offset,mn[e+14]=t.count,mn[e+15]=_n,s+$);{const{left:r,right:l,splitAxis:c}=t,p=s+$;let u=xn(p,r);const f=s/$,y=u/$-f;if(y>Se)throw new Error("MeshBVH: Cannot store relative child node offset greater than 32 bits.");return Kt[n+6]=y,Kt[n+7]=c,xn(u,l)}}function Me(s,t,n,e,i,o){const{maxDepth:r,verbose:l,targetLeafSize:c,_strictLeafSize:p=1/0,strategy:u,onProgress:f}=i,a=s.primitiveBuffer,y=s.primitiveBufferStride,w=new Float32Array(6);let A=!1;const g=new rn;return sn(t,n,e,g.boundingData,w),d(g,n,e,w),g;function B(h){f&&f((h-o.offset)/o.count)}function d(h,m,x,S=null,P=0){!A&&P>=r&&(A=!0,l&&console.warn(`BVH: Max depth of ${r} reached when generating BVH. Consider increasing maxDepth.`));const _=x>p;if(x<=c&&!_||P>=r)return B(m+x),h.offset=m,h.count=x,h;const M=Pe(h.boundingData,S,t,m,x,u);let T=M.axis===-1?-1:be(a,y,t,m,x,M);if(M.axis===-1||T===m||T===m+x){if(!_)return B(m+x),h.offset=m,h.count=x,h;M.axis=Math.max(0,dn(h.boundingData)),T=m+Math.max(1,Math.floor(x/2))}h.splitAxis=M.axis;const v=new rn,b=m,I=T-m;h.left=v,sn(t,b,I,v.boundingData,w),d(v,b,I,w,P+1);const z=new rn,U=T,L=x-I;return h.right=z,sn(t,U,L,z.boundingData,w),d(z,U,L,w,P+1),h}}function ve(s,t){const n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,e=s.getRootRanges(t.range),i=e[0],o=e[e.length-1],r={offset:i.offset,count:o.offset+o.count-i.offset},l=new Float32Array(6*r.count);l.offset=r.offset,s.computePrimitiveBounds(r.offset,r.count,l),s._roots=e.map(c=>{const p=Me(s,l,c.offset,c.count,t,r),u=hn(p),f=new n($*u);return _e(0,p,f),f})}class In{constructor(t){this._getNewPrimitive=t,this._primitives=[]}getPrimitive(){const t=this._primitives;return t.length===0?this._getNewPrimitive():t.pop()}releasePrimitive(t){this._primitives.push(t)}}class Ie{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const t=[];let n=null;this.setBuffer=e=>{n&&t.push(n),n=e,this.float32Array=new Float32Array(e),this.uint16Array=new Uint16Array(e),this.uint32Array=new Uint32Array(e)},this.clearBuffer=()=>{n=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,t.length!==0&&this.setBuffer(t.pop())}}}const E=new Ie;let it,At;const ut=[],Lt=new In(()=>new J);function ze(s,t,n,e,i,o){it=Lt.getPrimitive(),At=Lt.getPrimitive(),ut.push(it,At),E.setBuffer(s._roots[t]);const r=wn(0,s.geometry,n,e,i,o);E.clearBuffer(),Lt.releasePrimitive(it),Lt.releasePrimitive(At),ut.pop(),ut.pop();const l=ut.length;return l>0&&(At=ut[l-1],it=ut[l-2]),r}function wn(s,t,n,e,i=null,o=0,r=0){const{float32Array:l,uint16Array:c,uint32Array:p}=E;let u=s*2;if(R(u,c)){const a=q(s,p),y=k(u,c);return V(s,l,it),e(a,y,!1,r,o+s/N,it)}else{let T=function(b){const{uint16Array:I,uint32Array:z}=E;let U=b*2;for(;!R(U,I);)b=F(b),U=b*2;return q(b,z)},v=function(b){const{uint16Array:I,uint32Array:z}=E;let U=b*2;for(;!R(U,I);)b=H(b,z),U=b*2;return q(b,z)+k(U,I)};const a=F(s),y=H(s,p);let w=a,A=y,g,B,d,h;if(i&&(d=it,h=At,V(w,l,d),V(A,l,h),g=i(d),B=i(h),B<g)){w=y,A=a;const b=g;g=B,B=b,d=h}d||(d=it,V(w,l,d));const m=R(w*2,c),x=n(d,m,g,r+1,o+w/N);let S;if(x===Rn){const b=T(w),z=v(w)-b;S=e(b,z,!0,r+1,o+w/N,d)}else S=x&&wn(w,t,n,e,i,o,r+1);if(S)return!0;h=At,V(A,l,h);const P=R(A*2,c),_=n(h,P,B,r+1,o+A/N);let M;if(_===Rn){const b=T(A),z=v(A)-b;M=e(b,z,!0,r+1,o+A/N,h)}else M=_&&wn(A,t,n,e,i,o,r+1);return!!M}}const zt=new E.constructor,Wt=new E.constructor,st=new In(()=>new J),pt=new J,yt=new J,on=new J,cn=new J;let ln=!1;function Ce(s,t,n,e){if(ln)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");ln=!0;const i=s._roots,o=t._roots;let r,l=0,c=0;const p=new rt().copy(n).invert();for(let u=0,f=i.length;u<f;u++){zt.setBuffer(i[u]),c=0;const a=st.getPrimitive();V(0,zt.float32Array,a),a.applyMatrix4(p);for(let y=0,w=o.length;y<w&&(Wt.setBuffer(o[y]),r=K(0,0,n,p,e,l,c,0,0,a),Wt.clearBuffer(),c+=o[y].byteLength/$,!r);y++);if(st.releasePrimitive(a),zt.clearBuffer(),l+=i[u].byteLength/$,r)break}return ln=!1,r}function K(s,t,n,e,i,o=0,r=0,l=0,c=0,p=null,u=!1){let f,a;u?(f=Wt,a=zt):(f=zt,a=Wt);const y=f.float32Array,w=f.uint32Array,A=f.uint16Array,g=a.float32Array,B=a.uint32Array,d=a.uint16Array,h=s*2,m=t*2,x=R(h,A),S=R(m,d);let P=!1;if(S&&x)u?P=i(q(t,B),k(t*2,d),q(s,w),k(s*2,A),c,r+t/N,l,o+s/N):P=i(q(s,w),k(s*2,A),q(t,B),k(t*2,d),l,o+s/N,c,r+t/N);else if(S){const _=st.getPrimitive();V(t,g,_),_.applyMatrix4(n);const M=F(s),T=H(s,w);V(M,y,pt),V(T,y,yt);const v=_.intersectsBox(pt),b=_.intersectsBox(yt);P=v&&K(t,M,e,n,i,r,o,c,l+1,_,!u)||b&&K(t,T,e,n,i,r,o,c,l+1,_,!u),st.releasePrimitive(_)}else{const _=F(t),M=H(t,B);V(_,g,on),V(M,g,cn);const T=p.intersectsBox(on),v=p.intersectsBox(cn);if(T&&v)P=K(s,_,n,e,i,o,r,l,c+1,p,u)||K(s,M,n,e,i,o,r,l,c+1,p,u);else if(T)if(x)P=K(s,_,n,e,i,o,r,l,c+1,p,u);else{const b=st.getPrimitive();b.copy(on).applyMatrix4(n);const I=F(s),z=H(s,w);V(I,y,pt),V(z,y,yt);const U=b.intersectsBox(pt),L=b.intersectsBox(yt);P=U&&K(_,I,e,n,i,r,o,c,l+1,b,!u)||L&&K(_,z,e,n,i,r,o,c,l+1,b,!u),st.releasePrimitive(b)}else if(v)if(x)P=K(s,M,n,e,i,o,r,l,c+1,p,u);else{const b=st.getPrimitive();b.copy(cn).applyMatrix4(n);const I=F(s),z=H(s,w);V(I,y,pt),V(z,y,yt);const U=b.intersectsBox(pt),L=b.intersectsBox(yt);P=U&&K(M,I,e,n,i,r,o,c,l+1,b,!u)||L&&K(M,z,e,n,i,r,o,c,l+1,b,!u),st.releasePrimitive(b)}}return P}const an=new class{constructor(){let s=null,t=null,n=null,e=!1;this.root=null,this.buffer=null,this.uint32Array=null,this.uint16Array=null,this.setBVH=(o,r)=>{if(e)throw new Error("BVHTraversalHelper: cannot call setBVH during an active traversal.");this.root=r,this.buffer=s=o._roots[r],this.uint16Array=n=new Uint16Array(s),this.uint32Array=t=new Uint32Array(s)},this.reset=()=>{this.root=null,this.buffer=s=null,this.uint16Array=n=null,this.uint32Array=t=null},this.getRangeStart=o=>{let r=o*2;for(;!R(r,n);)o=F(o),r=o*2;return q(o,t)},this.getRangeEnd=o=>{let r=o*2;for(;!R(r,n);)o=H(o,t),r=o*2;return q(o,t)+k(r,n)};const i=(o,r,l)=>{const c=r*2,p=R(c,n);if(!o(l,p,r)&&!p){const f=F(r),a=H(r,t);i(o,f,l+1),i(o,a,l+1)}};this.traverseBuffer=o=>{if(e)throw new Error("BVHTraversalHelper: cannot start a traversal during an active traversal.");e=!0;try{i(o,0,0)}finally{e=!1}},this.traverse=o=>{this.traverseBuffer((r,l,c)=>{if(l){const p=c*2,u=t[c+6],f=n[p+14];return o(r,l,new Float32Array(s,c*4,6),u,f)}else{const p=vn(c,t);return o(r,l,new Float32Array(s,c*4,6),p)}})}}},Hn=new J,dt=new Float32Array(6);class Ue{constructor(){this._roots=null,this.primitiveBuffer=null,this.primitiveBufferStride=null}init(t){t={...ce,...t},"maxLeafSize"in t&&(console.warn('BVH: "maxLeafSize" option has been deprecated. Use "targetLeafSize", instead.'),t={...t,targetLeafSize:t.maxLeafSize}),ve(this,t)}getRootRanges(){throw new Error("BVH: getRootRanges() not implemented")}writePrimitiveBounds(){throw new Error("BVH: writePrimitiveBounds() not implemented")}writePrimitiveRangeBounds(t,n,e,i){let o=1/0,r=1/0,l=1/0,c=-1/0,p=-1/0,u=-1/0;for(let f=t,a=t+n;f<a;f++){this.writePrimitiveBounds(f,dt,0);const[y,w,A,g,B,d]=dt;y<o&&(o=y),g>c&&(c=g),w<r&&(r=w),B>p&&(p=B),A<l&&(l=A),d>u&&(u=d)}return e[i+0]=o,e[i+1]=r,e[i+2]=l,e[i+3]=c,e[i+4]=p,e[i+5]=u,e}computePrimitiveBounds(t,n,e){const i=e.offset||0;for(let o=t,r=t+n;o<r;o++){this.writePrimitiveBounds(o,dt,0);const[l,c,p,u,f,a]=dt,y=(l+u)/2,w=(c+f)/2,A=(p+a)/2,g=(u-l)/2,B=(f-c)/2,d=(a-p)/2,h=(o-i)*6;e[h+0]=y,e[h+1]=g+(Math.abs(y)+g)*Yt,e[h+2]=w,e[h+3]=B+(Math.abs(w)+B)*Yt,e[h+4]=A,e[h+5]=d+(Math.abs(A)+d)*Yt}return e}shiftPrimitiveOffsets(t){const n=this._indirectBuffer;if(n)for(let e=0,i=n.length;e<i;e++)n[e]+=t;else{const e=this._roots;for(let i=0;i<e.length;i++){const o=e[i],r=new Uint32Array(o),l=new Uint16Array(o),c=o.byteLength/$;for(let p=0;p<c;p++){const u=N*p,f=2*u;R(f,l)&&(r[u+6]+=t)}}}}traverse(t,n=0){an.setBVH(this,n),an.traverse(t),an.reset()}refit(){const t=this._roots;for(let n=0,e=t.length;n<e;n++){const i=t[n],o=new Uint32Array(i),r=new Uint16Array(i),l=new Float32Array(i),c=i.byteLength/$;for(let p=c-1;p>=0;p--){const u=p*N,f=u*2;if(R(f,r)){const y=q(u,o),w=k(f,r);this.writePrimitiveRangeBounds(y,w,dt,0),l.set(dt,u)}else{const y=F(u),w=H(u,o);for(let A=0;A<3;A++){const g=l[y+A],B=l[y+A+3],d=l[w+A],h=l[w+A+3];l[u+A]=g<d?g:d,l[u+A+3]=B>h?B:h}}}}}getBoundingBox(t){return t.makeEmpty(),this._roots.forEach(e=>{V(0,new Float32Array(e),Hn),t.union(Hn)}),t}shapecast(t){let{boundsTraverseOrder:n,intersectsBounds:e,intersectsRange:i,intersectsPrimitive:o,scratchPrimitive:r,iterate:l}=t;if(i&&o){const f=i;i=(a,y,w,A,g)=>f(a,y,w,A,g)?!0:l(a,y,this,o,w,A,r)}else i||(o?i=(f,a,y,w)=>l(f,a,this,o,y,w,r):i=(f,a,y)=>y);let c=!1,p=0;const u=this._roots;for(let f=0,a=u.length;f<a;f++){const y=u[f];if(c=ze(this,f,e,i,n,p),c)break;p+=y.byteLength/$}return c}bvhcast(t,n,e){let{intersectsRanges:i}=e;return Ce(this,t,n,i)}}function Ee(){return typeof SharedArrayBuffer<"u"}function zn(s){return s.index?s.index.count:s.attributes.position.count}function Qt(s){return zn(s)/3}function Le(s,t=ArrayBuffer){return s>65535?new Uint32Array(new t(4*s)):new Uint16Array(new t(2*s))}function Ve(s,t){if(!s.index){const n=s.attributes.position.count,e=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Le(n,e);s.setIndex(new se(i,1));for(let o=0;o<n;o++)i[o]=o}}function Re(s,t,n){const e=zn(s)/n,i=t||s.drawRange,o=i.start/n,r=(i.start+i.count)/n,l=Math.max(0,o),c=Math.min(e,r)-l;return{offset:Math.floor(l),count:Math.floor(c)}}function De(s,t){return s.groups.map(n=>({offset:n.start/t,count:n.count/t}))}function qn(s,t,n){const e=Re(s,t,n),i=De(s,n);if(!i.length)return[e];const o=[],r=e.offset,l=e.offset+e.count,c=zn(s)/n,p=[];for(const a of i){const{offset:y,count:w}=a,A=y,g=isFinite(w)?w:c-y,B=y+g;A<l&&B>r&&(p.push({pos:Math.max(r,A),isStart:!0}),p.push({pos:Math.min(l,B),isStart:!1}))}p.sort((a,y)=>a.pos!==y.pos?a.pos-y.pos:a.type==="end"?-1:1);let u=0,f=null;for(const a of p){const y=a.pos;u!==0&&y!==f&&o.push({offset:f,count:y-f}),u+=a.isStart?1:-1,f=y}return o}function Ne(s,t){const n=s[s.length-1],e=n.offset+n.count>2**16,i=s.reduce((p,u)=>p+u.count,0),o=e?4:2,r=t?new SharedArrayBuffer(i*o):new ArrayBuffer(i*o),l=e?new Uint32Array(r):new Uint16Array(r);let c=0;for(let p=0;p<s.length;p++){const{offset:u,count:f}=s[p];for(let a=0;a<f;a++)l[c+a]=u+a;c+=f}return l}class Fe extends Ue{get indirect(){return!!this._indirectBuffer}get primitiveStride(){return null}get primitiveBufferStride(){return this.indirect?1:this.primitiveStride}set primitiveBufferStride(t){}get primitiveBuffer(){return this.indirect?this._indirectBuffer:this.geometry.index.array}set primitiveBuffer(t){}constructor(t,n={}){if(t.isBufferGeometry){if(t.index&&t.index.isInterleavedBufferAttribute)throw new Error("BVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("BVH: Only BufferGeometries are supported.");if(n.useSharedArrayBuffer&&!Ee())throw new Error("BVH: SharedArrayBuffer is not available.");super(),this.geometry=t,this.resolvePrimitiveIndex=n.indirect?e=>this._indirectBuffer[e]:e=>e,this.primitiveBuffer=null,this.primitiveBufferStride=null,this._indirectBuffer=null,n={...ce,...n},n[Mn]||this.init(n)}init(t){const{geometry:n,primitiveStride:e}=this;if(t.indirect){const i=qn(n,t.range,e),o=Ne(i,t.useSharedArrayBuffer);this._indirectBuffer=o}else Ve(n,t);super.init(t),!n.boundingBox&&t.setBoundingBox&&(n.boundingBox=this.getBoundingBox(new J))}getRootRanges(t){return this.indirect?[{offset:0,count:this._indirectBuffer.length}]:qn(this.geometry,t,this.primitiveStride)}raycastObject3D(){throw new Error("BVH: raycastObject3D() not implemented")}}class nt{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(t,n){let e=1/0,i=-1/0;for(let o=0,r=t.length;o<r;o++){const c=t[o][n];e=c<e?c:e,i=c>i?c:i}this.min=e,this.max=i}setFromPoints(t,n){let e=1/0,i=-1/0;for(let o=0,r=n.length;o<r;o++){const l=n[o],c=t.dot(l);e=c<e?c:e,i=c>i?c:i}this.min=e,this.max=i}isSeparated(t){return this.min>t.max||t.min>this.max}}nt.prototype.setFromBox=(function(){const s=new C;return function(n,e){const i=e.min,o=e.max;let r=1/0,l=-1/0;for(let c=0;c<=1;c++)for(let p=0;p<=1;p++)for(let u=0;u<=1;u++){s.x=i.x*c+o.x*(1-c),s.y=i.y*p+o.y*(1-p),s.z=i.z*u+o.z*(1-u);const f=n.dot(s);r=Math.min(f,r),l=Math.max(f,l)}this.min=r,this.max=l}})();const He=(function(){const s=new C,t=new C,n=new C;return function(i,o,r){const l=i.start,c=s,p=o.start,u=t;n.subVectors(l,p),s.subVectors(i.end,i.start),t.subVectors(o.end,o.start);const f=n.dot(u),a=u.dot(c),y=u.dot(u),w=n.dot(c),g=c.dot(c)*y-a*a;let B,d;g!==0?B=(f*a-w*y)/g:B=0,d=(f+B*a)/y,r.x=B,r.y=d}})(),Cn=(function(){const s=new Y,t=new C,n=new C;return function(i,o,r,l){He(i,o,s);let c=s.x,p=s.y;if(c>=0&&c<=1&&p>=0&&p<=1){i.at(c,r),o.at(p,l);return}else if(c>=0&&c<=1){p<0?o.at(0,l):o.at(1,l),i.closestPointToPoint(l,!0,r);return}else if(p>=0&&p<=1){c<0?i.at(0,r):i.at(1,r),o.closestPointToPoint(r,!0,l);return}else{let u;c<0?u=i.start:u=i.end;let f;p<0?f=o.start:f=o.end;const a=t,y=n;if(i.closestPointToPoint(f,!0,t),o.closestPointToPoint(u,!0,n),a.distanceToSquared(f)<=y.distanceToSquared(u)){r.copy(a),l.copy(f);return}else{r.copy(u),l.copy(y);return}}}})(),qe=(function(){const s=new C,t=new C,n=new ie,e=new tt;return function(o,r){const{radius:l,center:c}=o,{a:p,b:u,c:f}=r;if(e.start=p,e.end=u,e.closestPointToPoint(c,!0,s).distanceTo(c)<=l||(e.start=p,e.end=f,e.closestPointToPoint(c,!0,s).distanceTo(c)<=l)||(e.start=u,e.end=f,e.closestPointToPoint(c,!0,s).distanceTo(c)<=l))return!0;const A=r.getPlane(n);if(Math.abs(A.distanceToPoint(c))<=l){const B=A.projectPoint(c,t);if(r.containsPoint(B))return!0}return!1}})(),$e=["x","y","z"],G=1e-15,$n=G*G;function Z(s){return Math.abs(s)<G}class W extends Q{constructor(...t){super(...t),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new C),this.satBounds=new Array(4).fill().map(()=>new nt),this.points=[this.a,this.b,this.c],this.plane=new ie,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new tt,this.needsUpdate=!0}intersectsSphere(t){return qe(t,this)}update(){const t=this.a,n=this.b,e=this.c,i=this.points,o=this.satAxes,r=this.satBounds,l=o[0],c=r[0];this.getNormal(l),c.setFromPoints(l,i);const p=o[1],u=r[1];p.subVectors(t,n),u.setFromPoints(p,i);const f=o[2],a=r[2];f.subVectors(n,e),a.setFromPoints(f,i);const y=o[3],w=r[3];y.subVectors(e,t),w.setFromPoints(y,i);const A=p.length(),g=f.length(),B=y.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,A<G?g<G||B<G?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(t),this.degenerateSegment.end.copy(e)):g<G?B<G?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(n),this.degenerateSegment.end.copy(t)):B<G&&(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(e),this.degenerateSegment.end.copy(n)),this.plane.setFromNormalAndCoplanarPoint(l,t),this.needsUpdate=!1}}W.prototype.closestPointToSegment=(function(){const s=new C,t=new C,n=new tt;return function(i,o=null,r=null){const{start:l,end:c}=i,p=this.points;let u,f=1/0;for(let a=0;a<3;a++){const y=(a+1)%3;n.start.copy(p[a]),n.end.copy(p[y]),Cn(n,i,s,t),u=s.distanceToSquared(t),u<f&&(f=u,o&&o.copy(s),r&&r.copy(t))}return this.closestPointToPoint(l,s),u=l.distanceToSquared(s),u<f&&(f=u,o&&o.copy(s),r&&r.copy(l)),this.closestPointToPoint(c,s),u=c.distanceToSquared(s),u<f&&(f=u,o&&o.copy(s),r&&r.copy(c)),Math.sqrt(f)}})();W.prototype.intersectsTriangle=(function(){const s=new W,t=new nt,n=new nt,e=new C,i=new C,o=new C,r=new C,l=new tt,c=new tt,p=new C,u=new Y,f=new Y;function a(h,m,x,S){const P=e;!h.isDegenerateIntoPoint&&!h.isDegenerateIntoSegment?P.copy(h.plane.normal):P.copy(m.plane.normal);const _=h.satBounds,M=h.satAxes;for(let b=1;b<4;b++){const I=_[b],z=M[b];if(t.setFromPoints(z,m.points),I.isSeparated(t)||(r.copy(P).cross(z),t.setFromPoints(r,h.points),n.setFromPoints(r,m.points),t.isSeparated(n)))return!1}const T=m.satBounds,v=m.satAxes;for(let b=1;b<4;b++){const I=T[b],z=v[b];if(t.setFromPoints(z,h.points),I.isSeparated(t)||(r.crossVectors(P,z),t.setFromPoints(r,h.points),n.setFromPoints(r,m.points),t.isSeparated(n)))return!1}return x&&(S||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),x.start.set(0,0,0),x.end.set(0,0,0)),!0}function y(h,m,x,S,P,_,M,T,v,b,I){let z=M/(M-T);b.x=S+(P-S)*z,I.start.subVectors(m,h).multiplyScalar(z).add(h),z=M/(M-v),b.y=S+(_-S)*z,I.end.subVectors(x,h).multiplyScalar(z).add(h)}function w(h,m,x,S,P,_,M,T,v,b,I){if(P>0)y(h.c,h.a,h.b,S,m,x,v,M,T,b,I);else if(_>0)y(h.b,h.a,h.c,x,m,S,T,M,v,b,I);else if(T*v>0||M!=0)y(h.a,h.b,h.c,m,x,S,M,T,v,b,I);else if(T!=0)y(h.b,h.a,h.c,x,m,S,T,M,v,b,I);else if(v!=0)y(h.c,h.a,h.b,S,m,x,v,M,T,b,I);else return!0;return!1}function A(h,m,x,S){const P=m.degenerateSegment,_=h.plane.distanceToPoint(P.start),M=h.plane.distanceToPoint(P.end);return Z(_)?Z(M)?a(h,m,x,S):(x&&(x.start.copy(P.start),x.end.copy(P.start)),h.containsPoint(P.start)):Z(M)?(x&&(x.start.copy(P.end),x.end.copy(P.end)),h.containsPoint(P.end)):h.plane.intersectLine(P,e)!=null?(x&&(x.start.copy(e),x.end.copy(e)),h.containsPoint(e)):!1}function g(h,m,x){const S=m.a;return Z(h.plane.distanceToPoint(S))&&h.containsPoint(S)?(x&&(x.start.copy(S),x.end.copy(S)),!0):!1}function B(h,m,x){const S=h.degenerateSegment,P=m.a;return S.closestPointToPoint(P,!0,e),P.distanceToSquared(e)<$n?(x&&(x.start.copy(P),x.end.copy(P)),!0):!1}function d(h,m,x,S){if(h.isDegenerateIntoSegment)if(m.isDegenerateIntoSegment){const P=h.degenerateSegment,_=m.degenerateSegment,M=i,T=o;P.delta(M),_.delta(T);const v=e.subVectors(_.start,P.start),b=M.x*T.y-M.y*T.x;if(Z(b))return!1;const I=(v.x*T.y-v.y*T.x)/b,z=-(M.x*v.y-M.y*v.x)/b;if(I<0||I>1||z<0||z>1)return!1;const U=P.start.z+M.z*I,L=_.start.z+T.z*z;return Z(U-L)?(x&&(x.start.copy(P.start).addScaledVector(M,I),x.end.copy(P.start).addScaledVector(M,I)),!0):!1}else return m.isDegenerateIntoPoint?B(h,m,x):A(m,h,x,S);else{if(h.isDegenerateIntoPoint)return m.isDegenerateIntoPoint?m.a.distanceToSquared(h.a)<$n?(x&&(x.start.copy(h.a),x.end.copy(h.a)),!0):!1:m.isDegenerateIntoSegment?B(m,h,x):g(m,h,x);if(m.isDegenerateIntoPoint)return g(h,m,x);if(m.isDegenerateIntoSegment)return A(h,m,x,S)}}return function(m,x=null,S=!1){this.needsUpdate&&this.update(),m.isExtendedTriangle?m.needsUpdate&&m.update():(s.copy(m),s.update(),m=s);const P=d(this,m,x,S);if(P!==void 0)return P;const _=this.plane,M=m.plane;let T=M.distanceToPoint(this.a),v=M.distanceToPoint(this.b),b=M.distanceToPoint(this.c);Z(T)&&(T=0),Z(v)&&(v=0),Z(b)&&(b=0);const I=T*v,z=T*b;if(I>0&&z>0)return!1;let U=_.distanceToPoint(m.a),L=_.distanceToPoint(m.b),Ct=_.distanceToPoint(m.c);Z(U)&&(U=0),Z(L)&&(L=0),Z(Ct)&&(Ct=0);const Un=U*L,En=U*Ct;if(Un>0&&En>0)return!1;i.copy(_.normal),o.copy(M.normal);const jt=i.cross(o);let Gt=0,tn=Math.abs(jt.x);const Ln=Math.abs(jt.y);Ln>tn&&(tn=Ln,Gt=1),Math.abs(jt.z)>tn&&(Gt=2);const ft=$e[Gt],fe=this.a[ft],ue=this.b[ft],pe=this.c[ft],ye=m.a[ft],de=m.b[ft],me=m.c[ft];if(w(this,fe,ue,pe,I,z,T,v,b,u,l))return a(this,m,x,S);if(w(m,ye,de,me,Un,En,U,L,Ct,f,c))return a(this,m,x,S);if(u.y<u.x){const nn=u.y;u.y=u.x,u.x=nn,p.copy(l.start),l.start.copy(l.end),l.end.copy(p)}if(f.y<f.x){const nn=f.y;f.y=f.x,f.x=nn,p.copy(c.start),c.start.copy(c.end),c.end.copy(p)}return u.y<f.x||f.y<u.x?!1:(x&&(f.x>u.x?x.start.copy(c.start):x.start.copy(l.start),f.y<u.y?x.end.copy(c.end):x.end.copy(l.end)),!0)}})();W.prototype.distanceToPoint=(function(){const s=new C;return function(n){return this.closestPointToPoint(n,s),n.distanceTo(s)}})();W.prototype.distanceToTriangle=(function(){const s=new C,t=new C,n=["a","b","c"],e=new tt,i=new tt;return function(r,l=null,c=null){const p=l||c?e:null;if(this.intersectsTriangle(r,p,!0))return(l||c)&&(l&&p.getCenter(l),c&&p.getCenter(c)),0;let u=1/0;for(let f=0;f<3;f++){let a;const y=n[f],w=r[y];this.closestPointToPoint(w,s),a=w.distanceToSquared(s),a<u&&(u=a,l&&l.copy(s),c&&c.copy(w));const A=this[y];r.closestPointToPoint(A,s),a=A.distanceToSquared(s),a<u&&(u=a,l&&l.copy(A),c&&c.copy(s))}for(let f=0;f<3;f++){const a=n[f],y=n[(f+1)%3];e.set(this[a],this[y]);for(let w=0;w<3;w++){const A=n[w],g=n[(w+1)%3];i.set(r[A],r[g]),Cn(e,i,s,t);const B=s.distanceToSquared(t);B<u&&(u=B,l&&l.copy(s),c&&c.copy(t))}}return Math.sqrt(u)}})();class X{constructor(t,n,e){this.isOrientedBox=!0,this.min=new C,this.max=new C,this.matrix=new rt,this.invMatrix=new rt,this.points=new Array(8).fill().map(()=>new C),this.satAxes=new Array(3).fill().map(()=>new C),this.satBounds=new Array(3).fill().map(()=>new nt),this.alignedSatBounds=new Array(3).fill().map(()=>new nt),this.needsUpdate=!1,t&&this.min.copy(t),n&&this.max.copy(n),e&&this.matrix.copy(e)}set(t,n,e){this.min.copy(t),this.max.copy(n),this.matrix.copy(e),this.needsUpdate=!0}copy(t){this.min.copy(t.min),this.max.copy(t.max),this.matrix.copy(t.matrix),this.needsUpdate=!0}}X.prototype.update=(function(){return function(){const t=this.matrix,n=this.min,e=this.max,i=this.points;for(let p=0;p<=1;p++)for(let u=0;u<=1;u++)for(let f=0;f<=1;f++){const a=1*p|2*u|4*f,y=i[a];y.x=p?e.x:n.x,y.y=u?e.y:n.y,y.z=f?e.z:n.z,y.applyMatrix4(t)}const o=this.satBounds,r=this.satAxes,l=i[0];for(let p=0;p<3;p++){const u=r[p],f=o[p],a=1<<p,y=i[a];u.subVectors(l,y),f.setFromPoints(u,i)}const c=this.alignedSatBounds;c[0].setFromPointsField(i,"x"),c[1].setFromPointsField(i,"y"),c[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}})();X.prototype.intersectsBox=(function(){const s=new nt;return function(n){this.needsUpdate&&this.update();const e=n.min,i=n.max,o=this.satBounds,r=this.satAxes,l=this.alignedSatBounds;if(s.min=e.x,s.max=i.x,l[0].isSeparated(s)||(s.min=e.y,s.max=i.y,l[1].isSeparated(s))||(s.min=e.z,s.max=i.z,l[2].isSeparated(s)))return!1;for(let c=0;c<3;c++){const p=r[c],u=o[c];if(s.setFromBox(p,n),u.isSeparated(s))return!1}return!0}})();X.prototype.intersectsTriangle=(function(){const s=new W,t=new Array(3),n=new nt,e=new nt,i=new C;return function(r){this.needsUpdate&&this.update(),r.isExtendedTriangle?r.needsUpdate&&r.update():(s.copy(r),s.update(),r=s);const l=this.satBounds,c=this.satAxes;t[0]=r.a,t[1]=r.b,t[2]=r.c;for(let a=0;a<3;a++){const y=l[a],w=c[a];if(n.setFromPoints(w,t),y.isSeparated(n))return!1}const p=r.satBounds,u=r.satAxes,f=this.points;for(let a=0;a<3;a++){const y=p[a],w=u[a];if(n.setFromPoints(w,f),y.isSeparated(n))return!1}for(let a=0;a<3;a++){const y=c[a];for(let w=0;w<4;w++){const A=u[w];if(i.crossVectors(y,A),n.setFromPoints(i,t),e.setFromPoints(i,f),n.isSeparated(e))return!1}}return!0}})();X.prototype.closestPointToPoint=(function(){return function(t,n){return this.needsUpdate&&this.update(),n.copy(t).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),n}})();X.prototype.distanceToPoint=(function(){const s=new C;return function(n){return this.closestPointToPoint(n,s),n.distanceTo(s)}})();X.prototype.distanceToBox=(function(){const s=["x","y","z"],t=new Array(12).fill().map(()=>new tt),n=new Array(12).fill().map(()=>new tt),e=new C,i=new C;return function(r,l=0,c=null,p=null){if(this.needsUpdate&&this.update(),this.intersectsBox(r))return(c||p)&&(r.getCenter(i),this.closestPointToPoint(i,e),r.closestPointToPoint(e,i),c&&c.copy(e),p&&p.copy(i)),0;const u=l*l,f=r.min,a=r.max,y=this.points;let w=1/0;for(let g=0;g<8;g++){const B=y[g];i.copy(B).clamp(f,a);const d=B.distanceToSquared(i);if(d<w&&(w=d,c&&c.copy(B),p&&p.copy(i),d<u))return Math.sqrt(d)}let A=0;for(let g=0;g<3;g++)for(let B=0;B<=1;B++)for(let d=0;d<=1;d++){const h=(g+1)%3,m=(g+2)%3,x=B<<h|d<<m,S=1<<g|B<<h|d<<m,P=y[x],_=y[S];t[A].set(P,_);const T=s[g],v=s[h],b=s[m],I=n[A],z=I.start,U=I.end;z[T]=f[T],z[v]=B?f[v]:a[v],z[b]=d?f[b]:a[v],U[T]=a[T],U[v]=B?f[v]:a[v],U[b]=d?f[b]:a[v],A++}for(let g=0;g<=1;g++)for(let B=0;B<=1;B++)for(let d=0;d<=1;d++){i.x=g?a.x:f.x,i.y=B?a.y:f.y,i.z=d?a.z:f.z,this.closestPointToPoint(i,e);const h=i.distanceToSquared(e);if(h<w&&(w=h,c&&c.copy(e),p&&p.copy(i),h<u))return Math.sqrt(h)}for(let g=0;g<12;g++){const B=t[g];for(let d=0;d<12;d++){const h=n[d];Cn(B,h,e,i);const m=e.distanceToSquared(i);if(m<w&&(w=m,c&&c.copy(e),p&&p.copy(i),m<u))return Math.sqrt(m)}}return Math.sqrt(w)}})();class ke extends In{constructor(){super(()=>new W)}}const O=new ke,Bt=new C,fn=new C;function Xe(s,t,n={},e=0,i=1/0){const o=e*e,r=i*i;let l=1/0,c=null;if(s.shapecast({boundsTraverseOrder:u=>(Bt.copy(t).clamp(u.min,u.max),Bt.distanceToSquared(t)),intersectsBounds:(u,f,a)=>a<l&&a<r,intersectsTriangle:(u,f)=>{u.closestPointToPoint(t,Bt);const a=t.distanceToSquared(Bt);return a<l&&(fn.copy(Bt),l=a,c=f),a<o}}),l===1/0)return null;const p=Math.sqrt(l);return n.point?n.point.copy(fn):n.point=fn.clone(),n.distance=p,n.faceIndex=c,n}const Vt=parseInt(re)>=169,Ze=parseInt(re)<=161,ct=new C,lt=new C,at=new C,Rt=new Y,Dt=new Y,Nt=new Y,kn=new C,Xn=new C,Zn=new C,Pt=new C;function Oe(s,t,n,e,i,o,r,l){let c;if(o===he?c=s.intersectTriangle(e,n,t,!0,i):c=s.intersectTriangle(t,n,e,o!==xe,i),c===null)return null;const p=s.origin.distanceTo(i);return p<r||p>l?null:{distance:p,point:i.clone()}}function On(s,t,n,e,i,o,r,l,c,p,u){ct.fromBufferAttribute(t,o),lt.fromBufferAttribute(t,r),at.fromBufferAttribute(t,l);const f=Oe(s,ct,lt,at,Pt,c,p,u);if(f){if(e){Rt.fromBufferAttribute(e,o),Dt.fromBufferAttribute(e,r),Nt.fromBufferAttribute(e,l),f.uv=new Y;const y=Q.getInterpolation(Pt,ct,lt,at,Rt,Dt,Nt,f.uv);Vt||(f.uv=y)}if(i){Rt.fromBufferAttribute(i,o),Dt.fromBufferAttribute(i,r),Nt.fromBufferAttribute(i,l),f.uv1=new Y;const y=Q.getInterpolation(Pt,ct,lt,at,Rt,Dt,Nt,f.uv1);Vt||(f.uv1=y),Ze&&(f.uv2=f.uv1)}if(n){kn.fromBufferAttribute(n,o),Xn.fromBufferAttribute(n,r),Zn.fromBufferAttribute(n,l),f.normal=new C;const y=Q.getInterpolation(Pt,ct,lt,at,kn,Xn,Zn,f.normal);f.normal.dot(s.direction)>0&&f.normal.multiplyScalar(-1),Vt||(f.normal=y)}const a={a:o,b:r,c:l,normal:new C,materialIndex:0};if(Q.getNormal(ct,lt,at,a.normal),f.face=a,f.faceIndex=o,Vt){const y=new C;Q.getBarycoord(Pt,ct,lt,at,y),f.barycoord=y}}return f}function Yn(s){return s&&s.isMaterial?s.side:s}function Jt(s,t,n,e,i,o,r){const l=e*3;let c=l+0,p=l+1,u=l+2;const{index:f,groups:a}=s;s.index&&(c=f.getX(c),p=f.getX(p),u=f.getX(u));const{position:y,normal:w,uv:A,uv1:g}=s.attributes;if(Array.isArray(t)){const B=e*3;for(let d=0,h=a.length;d<h;d++){const{start:m,count:x,materialIndex:S}=a[d];if(B>=m&&B<m+x){const P=Yn(t[S]),_=On(n,y,w,A,g,c,p,u,P,o,r);if(_)if(_.faceIndex=e,_.face.materialIndex=S,i)i.push(_);else return _}}}else{const B=Yn(t),d=On(n,y,w,A,g,c,p,u,B,o,r);if(d)if(d.faceIndex=e,d.face.materialIndex=0,i)i.push(d);else return d}return null}function D(s,t,n,e){const i=s.a,o=s.b,r=s.c;let l=t,c=t+1,p=t+2;n&&(l=n.getX(l),c=n.getX(c),p=n.getX(p)),i.x=e.getX(l),i.y=e.getY(l),i.z=e.getZ(l),o.x=e.getX(c),o.y=e.getY(c),o.z=e.getZ(c),r.x=e.getX(p),r.y=e.getY(p),r.z=e.getZ(p)}const Tt=new C,bt=new C,St=new C,Kn=new Y,Wn=new Y,Qn=new Y;function Ss(s,t,n,e){const i=t.getIndex().array,o=t.getAttribute("position"),r=t.getAttribute("uv"),l=i[n*3],c=i[n*3+1],p=i[n*3+2];Tt.fromBufferAttribute(o,l),bt.fromBufferAttribute(o,c),St.fromBufferAttribute(o,p);let u=0;const f=t.groups,a=n*3;for(let A=0,g=f.length;A<g;A++){const B=f[A],{start:d,count:h}=B;if(a>=d&&a<d+h){u=B.materialIndex;break}}const y=e&&e.barycoord?e.barycoord:new C;Q.getBarycoord(s,Tt,bt,St,y);let w=null;return r&&(Kn.fromBufferAttribute(r,l),Wn.fromBufferAttribute(r,c),Qn.fromBufferAttribute(r,p),e&&e.uv?w=e.uv:w=new Y,Q.getInterpolation(s,Tt,bt,St,Kn,Wn,Qn,w)),e?(e.face||(e.face={}),e.face.a=l,e.face.b=c,e.face.c=p,e.face.materialIndex=u,e.face.normal||(e.face.normal=new C),Q.getNormal(Tt,bt,St,e.face.normal),w&&(e.uv=w),e.barycoord=y,e):{face:{a:l,b:c,c:p,materialIndex:u,normal:Q.getNormal(Tt,bt,St,new C)},uv:w,barycoord:y}}function Ye(s,t,n,e,i,o,r,l){const{geometry:c,_indirectBuffer:p}=s;for(let u=e,f=e+i;u<f;u++)Jt(c,t,n,u,o,r,l)}function Ke(s,t,n,e,i,o,r){const{geometry:l,_indirectBuffer:c}=s;let p=1/0,u=null;for(let f=e,a=e+i;f<a;f++){let y;y=Jt(l,t,n,f,null,o,r),y&&y.distance<p&&(u=y,p=y.distance)}return u}function We(s,t,n,e,i,o,r){const{geometry:l}=n,{index:c}=l,p=l.attributes.position;for(let u=s,f=t+s;u<f;u++){let a;if(a=u,D(r,a*3,c,p),r.needsUpdate=!0,e(r,a,i,o))return!0}return!1}function Qe(s,t=null){t&&Array.isArray(t)&&(t=new Set(t));const n=s.geometry,e=n.index?n.index.array:null,i=n.attributes.position;let o,r,l,c,p=0;const u=s._roots;for(let a=0,y=u.length;a<y;a++)o=u[a],r=new Uint32Array(o),l=new Uint16Array(o),c=new Float32Array(o),f(0,p),p+=o.byteLength;function f(a,y,w=!1){const A=a*2;if(R(A,l)){const g=q(a,r),B=k(A,l);let d=1/0,h=1/0,m=1/0,x=-1/0,S=-1/0,P=-1/0;for(let _=3*g,M=3*(g+B);_<M;_++){let T=e[_];const v=i.getX(T),b=i.getY(T),I=i.getZ(T);v<d&&(d=v),v>x&&(x=v),b<h&&(h=b),b>S&&(S=b),I<m&&(m=I),I>P&&(P=I)}return c[a+0]!==d||c[a+1]!==h||c[a+2]!==m||c[a+3]!==x||c[a+4]!==S||c[a+5]!==P?(c[a+0]=d,c[a+1]=h,c[a+2]=m,c[a+3]=x,c[a+4]=S,c[a+5]=P,!0):!1}else{const g=F(a),B=H(a,r);let d=w,h=!1,m=!1;if(t){if(!d){const T=g/N+y/$,v=B/N+y/$;h=t.has(T),m=t.has(v),d=!h&&!m}}else h=!0,m=!0;const x=d||h,S=d||m;let P=!1;x&&(P=f(g,y,d));let _=!1;S&&(_=f(B,y,d));const M=P||_;if(M)for(let T=0;T<3;T++){const v=g+T,b=B+T,I=c[v],z=c[v+3],U=c[b],L=c[b+3];c[a+T]=I<U?I:U,c[a+T+3]=z>L?z:L}return M}}}function ot(s,t,n,e,i){let o,r,l,c,p,u;const f=1/n.direction.x,a=1/n.direction.y,y=1/n.direction.z,w=n.origin.x,A=n.origin.y,g=n.origin.z;let B=t[s],d=t[s+3],h=t[s+1],m=t[s+3+1],x=t[s+2],S=t[s+3+2];return f>=0?(o=(B-w)*f,r=(d-w)*f):(o=(d-w)*f,r=(B-w)*f),a>=0?(l=(h-A)*a,c=(m-A)*a):(l=(m-A)*a,c=(h-A)*a),o>c||l>r||((l>o||isNaN(o))&&(o=l),(c<r||isNaN(r))&&(r=c),y>=0?(p=(x-g)*y,u=(S-g)*y):(p=(S-g)*y,u=(x-g)*y),o>u||p>r)?!1:((p>o||o!==o)&&(o=p),(u<r||r!==r)&&(r=u),o<=i&&r>=e)}function Je(s,t,n,e,i,o,r,l){const{geometry:c,_indirectBuffer:p}=s;for(let u=e,f=e+i;u<f;u++){let a=p?p[u]:u;Jt(c,t,n,a,o,r,l)}}function je(s,t,n,e,i,o,r){const{geometry:l,_indirectBuffer:c}=s;let p=1/0,u=null;for(let f=e,a=e+i;f<a;f++){let y;y=Jt(l,t,n,c?c[f]:f,null,o,r),y&&y.distance<p&&(u=y,p=y.distance)}return u}function Ge(s,t,n,e,i,o,r){const{geometry:l}=n,{index:c}=l,p=l.attributes.position;for(let u=s,f=t+s;u<f;u++){let a;if(a=n.resolveTriangleIndex(u),D(r,a*3,c,p),r.needsUpdate=!0,e(r,a,i,o))return!0}return!1}function ts(s,t,n,e,i,o,r){E.setBuffer(s._roots[t]),An(0,s,n,e,i,o,r),E.clearBuffer()}function An(s,t,n,e,i,o,r){const{float32Array:l,uint16Array:c,uint32Array:p}=E,u=s*2;if(R(u,c)){const a=q(s,p),y=k(u,c);Ye(t,n,e,a,y,i,o,r)}else{const a=F(s);ot(a,l,e,o,r)&&An(a,t,n,e,i,o,r);const y=H(s,p);ot(y,l,e,o,r)&&An(y,t,n,e,i,o,r)}}const ns=["x","y","z"];function es(s,t,n,e,i,o){E.setBuffer(s._roots[t]);const r=gn(0,s,n,e,i,o);return E.clearBuffer(),r}function gn(s,t,n,e,i,o){const{float32Array:r,uint16Array:l,uint32Array:c}=E;let p=s*2;if(R(p,l)){const f=q(s,c),a=k(p,l);return Ke(t,n,e,f,a,i,o)}else{const f=vn(s,c),a=ns[f],w=e.direction[a]>=0;let A,g;w?(A=F(s),g=H(s,c)):(A=H(s,c),g=F(s));const d=ot(A,r,e,i,o)?gn(A,t,n,e,i,o):null;if(d){const x=d.point[a];if(w?x<=r[g+f]:x>=r[g+f+3])return d}const m=ot(g,r,e,i,o)?gn(g,t,n,e,i,o):null;return d&&m?d.distance<=m.distance?d:m:d||m||null}}const Ft=new J,mt=new W,ht=new W,_t=new rt,Jn=new X,Ht=new X;function ss(s,t,n,e){E.setBuffer(s._roots[t]);const i=Bn(0,s,n,e);return E.clearBuffer(),i}function Bn(s,t,n,e,i=null){const{float32Array:o,uint16Array:r,uint32Array:l}=E;let c=s*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),Jn.set(n.boundingBox.min,n.boundingBox.max,e),i=Jn),R(c,r)){const u=t.geometry,f=u.index,a=u.attributes.position,y=n.index,w=n.attributes.position,A=q(s,l),g=k(c,r);if(_t.copy(e).invert(),n.boundsTree)return V(s,o,Ht),Ht.matrix.copy(_t),Ht.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:d=>Ht.intersectsBox(d),intersectsTriangle:d=>{d.a.applyMatrix4(e),d.b.applyMatrix4(e),d.c.applyMatrix4(e),d.needsUpdate=!0;for(let h=A*3,m=(g+A)*3;h<m;h+=3)if(D(ht,h,f,a),ht.needsUpdate=!0,d.intersectsTriangle(ht))return!0;return!1}});{const B=Qt(n);for(let d=A*3,h=(g+A)*3;d<h;d+=3){D(mt,d,f,a),mt.a.applyMatrix4(_t),mt.b.applyMatrix4(_t),mt.c.applyMatrix4(_t),mt.needsUpdate=!0;for(let m=0,x=B*3;m<x;m+=3)if(D(ht,m,y,w),ht.needsUpdate=!0,mt.intersectsTriangle(ht))return!0}}}else{const u=F(s),f=H(s,l);return V(u,o,Ft),!!(i.intersectsBox(Ft)&&Bn(u,t,n,e,i)||(V(f,o,Ft),i.intersectsBox(Ft)&&Bn(f,t,n,e,i)))}}const qt=new rt,un=new X,Mt=new X,is=new C,rs=new C,os=new C,cs=new C;function ls(s,t,n,e={},i={},o=0,r=1/0){t.boundingBox||t.computeBoundingBox(),un.set(t.boundingBox.min,t.boundingBox.max,n),un.needsUpdate=!0;const l=s.geometry,c=l.attributes.position,p=l.index,u=t.attributes.position,f=t.index,a=O.getPrimitive(),y=O.getPrimitive();let w=is,A=rs,g=null,B=null;i&&(g=os,B=cs);let d=1/0,h=null,m=null;return qt.copy(n).invert(),Mt.matrix.copy(qt),s.shapecast({boundsTraverseOrder:x=>un.distanceToBox(x),intersectsBounds:(x,S,P)=>P<d&&P<r?(S&&(Mt.min.copy(x.min),Mt.max.copy(x.max),Mt.needsUpdate=!0),!0):!1,intersectsRange:(x,S)=>{if(t.boundsTree)return t.boundsTree.shapecast({boundsTraverseOrder:_=>Mt.distanceToBox(_),intersectsBounds:(_,M,T)=>T<d&&T<r,intersectsRange:(_,M)=>{for(let T=_,v=_+M;T<v;T++){D(y,3*T,f,u),y.a.applyMatrix4(n),y.b.applyMatrix4(n),y.c.applyMatrix4(n),y.needsUpdate=!0;for(let b=x,I=x+S;b<I;b++){D(a,3*b,p,c),a.needsUpdate=!0;const z=a.distanceToTriangle(y,w,g);if(z<d&&(A.copy(w),B&&B.copy(g),d=z,h=b,m=T),z<o)return!0}}}});{const P=Qt(t);for(let _=0,M=P;_<M;_++){D(y,3*_,f,u),y.a.applyMatrix4(n),y.b.applyMatrix4(n),y.c.applyMatrix4(n),y.needsUpdate=!0;for(let T=x,v=x+S;T<v;T++){D(a,3*T,p,c),a.needsUpdate=!0;const b=a.distanceToTriangle(y,w,g);if(b<d&&(A.copy(w),B&&B.copy(g),d=b,h=T,m=_),b<o)return!0}}}}}),O.releasePrimitive(a),O.releasePrimitive(y),d===1/0?null:(e.point?e.point.copy(A):e.point=A.clone(),e.distance=d,e.faceIndex=h,i&&(i.point?i.point.copy(B):i.point=B.clone(),i.point.applyMatrix4(qt),A.applyMatrix4(qt),i.distance=A.sub(i.point).length(),i.faceIndex=m),e)}function as(s,t=null){t&&Array.isArray(t)&&(t=new Set(t));const n=s.geometry,e=n.index?n.index.array:null,i=n.attributes.position;let o,r,l,c,p=0;const u=s._roots;for(let a=0,y=u.length;a<y;a++)o=u[a],r=new Uint32Array(o),l=new Uint16Array(o),c=new Float32Array(o),f(0,p),p+=o.byteLength;function f(a,y,w=!1){const A=a*2;if(R(A,l)){const g=q(a,r),B=k(A,l);let d=1/0,h=1/0,m=1/0,x=-1/0,S=-1/0,P=-1/0;for(let _=g,M=g+B;_<M;_++){const T=3*s.resolveTriangleIndex(_);for(let v=0;v<3;v++){let b=T+v;b=e?e[b]:b;const I=i.getX(b),z=i.getY(b),U=i.getZ(b);I<d&&(d=I),I>x&&(x=I),z<h&&(h=z),z>S&&(S=z),U<m&&(m=U),U>P&&(P=U)}}return c[a+0]!==d||c[a+1]!==h||c[a+2]!==m||c[a+3]!==x||c[a+4]!==S||c[a+5]!==P?(c[a+0]=d,c[a+1]=h,c[a+2]=m,c[a+3]=x,c[a+4]=S,c[a+5]=P,!0):!1}else{const g=F(a),B=H(a,r);let d=w,h=!1,m=!1;if(t){if(!d){const T=g/N+y/$,v=B/N+y/$;h=t.has(T),m=t.has(v),d=!h&&!m}}else h=!0,m=!0;const x=d||h,S=d||m;let P=!1;x&&(P=f(g,y,d));let _=!1;S&&(_=f(B,y,d));const M=P||_;if(M)for(let T=0;T<3;T++){const v=g+T,b=B+T,I=c[v],z=c[v+3],U=c[b],L=c[b+3];c[a+T]=I<U?I:U,c[a+T+3]=z>L?z:L}return M}}}function fs(s,t,n,e,i,o,r){E.setBuffer(s._roots[t]),Pn(0,s,n,e,i,o,r),E.clearBuffer()}function Pn(s,t,n,e,i,o,r){const{float32Array:l,uint16Array:c,uint32Array:p}=E,u=s*2;if(R(u,c)){const a=q(s,p),y=k(u,c);Je(t,n,e,a,y,i,o,r)}else{const a=F(s);ot(a,l,e,o,r)&&Pn(a,t,n,e,i,o,r);const y=H(s,p);ot(y,l,e,o,r)&&Pn(y,t,n,e,i,o,r)}}const us=["x","y","z"];function ps(s,t,n,e,i,o){E.setBuffer(s._roots[t]);const r=Tn(0,s,n,e,i,o);return E.clearBuffer(),r}function Tn(s,t,n,e,i,o){const{float32Array:r,uint16Array:l,uint32Array:c}=E;let p=s*2;if(R(p,l)){const f=q(s,c),a=k(p,l);return je(t,n,e,f,a,i,o)}else{const f=vn(s,c),a=us[f],w=e.direction[a]>=0;let A,g;w?(A=F(s),g=H(s,c)):(A=H(s,c),g=F(s));const d=ot(A,r,e,i,o)?Tn(A,t,n,e,i,o):null;if(d){const x=d.point[a];if(w?x<=r[g+f]:x>=r[g+f+3])return d}const m=ot(g,r,e,i,o)?Tn(g,t,n,e,i,o):null;return d&&m?d.distance<=m.distance?d:m:d||m||null}}const $t=new J,xt=new W,wt=new W,vt=new rt,jn=new X,kt=new X;function ys(s,t,n,e){E.setBuffer(s._roots[t]);const i=bn(0,s,n,e);return E.clearBuffer(),i}function bn(s,t,n,e,i=null){const{float32Array:o,uint16Array:r,uint32Array:l}=E;let c=s*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),jn.set(n.boundingBox.min,n.boundingBox.max,e),i=jn),R(c,r)){const u=t.geometry,f=u.index,a=u.attributes.position,y=n.index,w=n.attributes.position,A=q(s,l),g=k(c,r);if(vt.copy(e).invert(),n.boundsTree)return V(s,o,kt),kt.matrix.copy(vt),kt.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:d=>kt.intersectsBox(d),intersectsTriangle:d=>{d.a.applyMatrix4(e),d.b.applyMatrix4(e),d.c.applyMatrix4(e),d.needsUpdate=!0;for(let h=A,m=g+A;h<m;h++)if(D(wt,3*t.resolveTriangleIndex(h),f,a),wt.needsUpdate=!0,d.intersectsTriangle(wt))return!0;return!1}});{const B=Qt(n);for(let d=A,h=g+A;d<h;d++){const m=t.resolveTriangleIndex(d);D(xt,3*m,f,a),xt.a.applyMatrix4(vt),xt.b.applyMatrix4(vt),xt.c.applyMatrix4(vt),xt.needsUpdate=!0;for(let x=0,S=B*3;x<S;x+=3)if(D(wt,x,y,w),wt.needsUpdate=!0,xt.intersectsTriangle(wt))return!0}}}else{const u=F(s),f=H(s,l);return V(u,o,$t),!!(i.intersectsBox($t)&&bn(u,t,n,e,i)||(V(f,o,$t),i.intersectsBox($t)&&bn(f,t,n,e,i)))}}const Xt=new rt,pn=new X,It=new X,ds=new C,ms=new C,hs=new C,xs=new C;function ws(s,t,n,e={},i={},o=0,r=1/0){t.boundingBox||t.computeBoundingBox(),pn.set(t.boundingBox.min,t.boundingBox.max,n),pn.needsUpdate=!0;const l=s.geometry,c=l.attributes.position,p=l.index,u=t.attributes.position,f=t.index,a=O.getPrimitive(),y=O.getPrimitive();let w=ds,A=ms,g=null,B=null;i&&(g=hs,B=xs);let d=1/0,h=null,m=null;return Xt.copy(n).invert(),It.matrix.copy(Xt),s.shapecast({boundsTraverseOrder:x=>pn.distanceToBox(x),intersectsBounds:(x,S,P)=>P<d&&P<r?(S&&(It.min.copy(x.min),It.max.copy(x.max),It.needsUpdate=!0),!0):!1,intersectsRange:(x,S)=>{if(t.boundsTree){const P=t.boundsTree;return P.shapecast({boundsTraverseOrder:_=>It.distanceToBox(_),intersectsBounds:(_,M,T)=>T<d&&T<r,intersectsRange:(_,M)=>{for(let T=_,v=_+M;T<v;T++){const b=P.resolveTriangleIndex(T);D(y,3*b,f,u),y.a.applyMatrix4(n),y.b.applyMatrix4(n),y.c.applyMatrix4(n),y.needsUpdate=!0;for(let I=x,z=x+S;I<z;I++){const U=s.resolveTriangleIndex(I);D(a,3*U,p,c),a.needsUpdate=!0;const L=a.distanceToTriangle(y,w,g);if(L<d&&(A.copy(w),B&&B.copy(g),d=L,h=I,m=T),L<o)return!0}}}})}else{const P=Qt(t);for(let _=0,M=P;_<M;_++){D(y,3*_,f,u),y.a.applyMatrix4(n),y.b.applyMatrix4(n),y.c.applyMatrix4(n),y.needsUpdate=!0;for(let T=x,v=x+S;T<v;T++){const b=s.resolveTriangleIndex(T);D(a,3*b,p,c),a.needsUpdate=!0;const I=a.distanceToTriangle(y,w,g);if(I<d&&(A.copy(w),B&&B.copy(g),d=I,h=T,m=_),I<o)return!0}}}}}),O.releasePrimitive(a),O.releasePrimitive(y),d===1/0?null:(e.point?e.point.copy(A):e.point=A.clone(),e.distance=d,e.faceIndex=h,i&&(i.point?i.point.copy(B):i.point=B.clone(),i.point.applyMatrix4(Xt),A.applyMatrix4(Xt),i.distance=A.sub(i.point).length(),i.faceIndex=m),e)}function Gn(s,t,n){return s===null?null:(s.point.applyMatrix4(t.matrixWorld),s.distance=s.point.distanceTo(n.ray.origin),s.object=t,s)}const Zt=new X,Ot=new we,te=new C,ne=new rt,ee=new C,yn=["getX","getY","getZ"];class Sn extends Fe{static serialize(t,n={}){n={cloneBuffers:!0,...n};const e=t.geometry,i=t._roots,o=t._indirectBuffer,r=e.getIndex(),l={version:1,roots:null,index:null,indirectBuffer:null};return n.cloneBuffers?(l.roots=i.map(c=>c.slice()),l.index=r?r.array.slice():null,l.indirectBuffer=o?o.slice():null):(l.roots=i,l.index=r?r.array:null,l.indirectBuffer=o),l}static deserialize(t,n,e={}){e={setIndex:!0,indirect:!!t.indirectBuffer,...e};const{index:i,roots:o,indirectBuffer:r}=t;t.version||(console.warn("MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data."),c(o));const l=new Sn(n,{...e,[Mn]:!0});if(l._roots=o,l._indirectBuffer=r||null,e.setIndex){const p=n.getIndex();if(p===null){const u=new se(t.index,1,!1);n.setIndex(u)}else p.array!==i&&(p.array.set(i),p.needsUpdate=!0)}return l;function c(p){for(let u=0;u<p.length;u++){const f=p[u],a=new Uint32Array(f),y=new Uint16Array(f);for(let w=0,A=f.byteLength/$;w<A;w++){const g=N*w,B=2*g;R(B,y)||(a[g+6]=a[g+6]/N-w)}}}}get primitiveStride(){return 3}get resolveTriangleIndex(){return this.resolvePrimitiveIndex}constructor(t,n={}){n.maxLeafTris&&(console.warn('MeshBVH: "maxLeafTris" option has been deprecated. Use "targetLeafSize", instead.'),n={...n,targetLeafSize:n.maxLeafTris}),super(t,n)}shiftTriangleOffsets(t){return super.shiftPrimitiveOffsets(t)}writePrimitiveBounds(t,n,e){const i=this.geometry,o=this._indirectBuffer,r=i.attributes.position,l=i.index?i.index.array:null,p=(o?o[t]:t)*3;let u=p+0,f=p+1,a=p+2;l&&(u=l[u],f=l[f],a=l[a]);for(let y=0;y<3;y++){const w=r[yn[y]](u),A=r[yn[y]](f),g=r[yn[y]](a);let B=w;A<B&&(B=A),g<B&&(B=g);let d=w;A>d&&(d=A),g>d&&(d=g),n[e+y]=B,n[e+y+3]=d}return n}computePrimitiveBounds(t,n,e){const i=this.geometry,o=this._indirectBuffer,r=i.attributes.position,l=i.index?i.index.array:null,c=r.normalized;if(t<0||n+t-e.offset>e.length/6)throw new Error("MeshBVH: compute triangle bounds range is invalid.");const p=r.array,u=r.offset||0;let f=3;r.isInterleavedBufferAttribute&&(f=r.data.stride);const a=["getX","getY","getZ"],y=e.offset;for(let w=t,A=t+n;w<A;w++){const B=(o?o[w]:w)*3,d=(w-y)*6;let h=B+0,m=B+1,x=B+2;l&&(h=l[h],m=l[m],x=l[x]),c||(h=h*f+u,m=m*f+u,x=x*f+u);for(let S=0;S<3;S++){let P,_,M;c?(P=r[a[S]](h),_=r[a[S]](m),M=r[a[S]](x)):(P=p[h+S],_=p[m+S],M=p[x+S]);let T=P;_<T&&(T=_),M<T&&(T=M);let v=P;_>v&&(v=_),M>v&&(v=M);const b=(v-T)/2,I=S*2;e[d+I+0]=T+b,e[d+I+1]=b+(Math.abs(T)+b)*Yt}}return e}raycastObject3D(t,n,e=[]){const{material:i}=t;if(i===void 0)return;ne.copy(t.matrixWorld).invert(),Ot.copy(n.ray).applyMatrix4(ne),ee.setFromMatrixScale(t.matrixWorld),te.copy(Ot.direction).multiply(ee);const o=te.length(),r=n.near/o,l=n.far/o;if(n.firstHitOnly===!0){let c=this.raycastFirst(Ot,i,r,l);c=Gn(c,t,n),c&&e.push(c)}else{const c=this.raycast(Ot,i,r,l);for(let p=0,u=c.length;p<u;p++){const f=Gn(c[p],t,n);f&&e.push(f)}}return e}refit(t=null){return(this.indirect?as:Qe)(this,t)}raycast(t,n=Vn,e=0,i=1/0){const o=this._roots,r=[],l=this.indirect?fs:ts;for(let c=0,p=o.length;c<p;c++)l(this,c,n,t,r,e,i);return r}raycastFirst(t,n=Vn,e=0,i=1/0){const o=this._roots;let r=null;const l=this.indirect?ps:es;for(let c=0,p=o.length;c<p;c++){const u=l(this,c,n,t,e,i);u!=null&&(r==null||u.distance<r.distance)&&(r=u)}return r}intersectsGeometry(t,n){let e=!1;const i=this._roots,o=this.indirect?ys:ss;for(let r=0,l=i.length;r<l&&(e=o(this,r,t,n),!e);r++);return e}shapecast(t){const n=O.getPrimitive(),e=super.shapecast({...t,intersectsPrimitive:t.intersectsTriangle,scratchPrimitive:n,iterate:this.indirect?Ge:We});return O.releasePrimitive(n),e}bvhcast(t,n,e){let{intersectsRanges:i,intersectsTriangles:o}=e;const r=O.getPrimitive(),l=this.geometry.index,c=this.geometry.attributes.position,p=this.indirect?w=>{const A=this.resolveTriangleIndex(w);D(r,A*3,l,c)}:w=>{D(r,w*3,l,c)},u=O.getPrimitive(),f=t.geometry.index,a=t.geometry.attributes.position,y=t.indirect?w=>{const A=t.resolveTriangleIndex(w);D(u,A*3,f,a)}:w=>{D(u,w*3,f,a)};if(o){if(!(t instanceof Sn))throw new Error('MeshBVH: "intersectsTriangles" callback can only be used with another MeshBVH.');const w=(A,g,B,d,h,m,x,S)=>{for(let P=B,_=B+d;P<_;P++){y(P),u.a.applyMatrix4(n),u.b.applyMatrix4(n),u.c.applyMatrix4(n),u.needsUpdate=!0;for(let M=A,T=A+g;M<T;M++)if(p(M),r.needsUpdate=!0,o(r,u,M,P,h,m,x,S))return!0}return!1};if(i){const A=i;i=function(g,B,d,h,m,x,S,P){return A(g,B,d,h,m,x,S,P)?!0:w(g,B,d,h,m,x,S,P)}}else i=w}return super.bvhcast(t,n,{intersectsRanges:i})}intersectsBox(t,n){return Zt.set(t.min,t.max,n),Zt.needsUpdate=!0,this.shapecast({intersectsBounds:e=>Zt.intersectsBox(e),intersectsTriangle:e=>Zt.intersectsTriangle(e)})}intersectsSphere(t){return this.shapecast({intersectsBounds:n=>t.intersectsBox(n),intersectsTriangle:n=>n.intersectsSphere(t)})}closestPointToGeometry(t,n,e={},i={},o=0,r=1/0){return(this.indirect?ws:ls)(this,t,n,e,i,o,r)}closestPointToPoint(t,n={},e=0,i=1/0){return Xe(this,t,n,e,i)}}export{Ae as A,Ue as B,k as C,W as E,Fe as G,Ps as I,Ts as L,Sn as M,Bs as N,q as O,In as P,Mn as S,Dn as T,V as a,en as b,zn as c,$ as d,R as e,vn as f,Le as g,bs as h,Ee as i,oe as j,Rn as k,X as l,ge as m,Ne as n,Ss as o};
@@ -0,0 +1 @@
1
+ import{a as p}from"./jsx-runtime-DPjLkJKQ.js";import{r as n}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{bl as w,bm as x,bn as E,bo as S,bp as a,ap as f}from"./index-Ckxb31Yz.js";import{O as M}from"./StageHost-lB8f---y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./standard-viewport-dressing-GUUr6GuK.js";import"./live-mixers-BRkRHd6g.js";import"./live-gesture-lock-DJbrjOqf.js";import"./model-inspection-Cxfg_Fei.js";import"./viewport-shading-boundary-CBvvzS-p.js";import"./clip-planes-CnAI6DZn.js";import"./three-DSsr_Lvp.js";import"./viewport-pick-context-DkawXbEi.js";import"./OrbitControls-CzTRRI7x.js";import"./LineSegments2-Cicm_Hu1.js";import"./three.quarks.esm-CRKGjKAH.js";import"./scene-framing-50N7SKuX.js";import"./source-object3d-authoring-adapter-CfHQLFAL.js";import"./three-projection-core-kubBTx0s.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./viewport-surface-status-BFmnWp7z.js";function Z({documentId:b,assetPath:o,displayName:u,active:l}){const[g,m]=n.useState(null),[d,c]=n.useState(null);n.useEffect(()=>{if(!l){m(null);return}const i=new AbortController;let s=null;m(null),c(null);const e=w(o);return(e==="glb"||e==="gltf"||e==="spz"?x(o,i.signal):e?E({url:o,format:e}).then(S).then(r=>({root:r,sourceBytes:null})):Promise.reject(new Error(`No native Three.js model loader supports ${o}.`))).then(r=>{if(i.signal.aborted){a(r.root);return}s=r.root,m(r)},r=>{i.signal.aborted||c(r instanceof Error?r.message:String(r))}),()=>{i.abort(),s&&a(s)}},[l,o]);const t=g?.root??null,j=n.useCallback(()=>{if(!t)throw new Error(`Model asset ${o} is not loaded.`);return{root:t,animations:t.animations,dispose(){}}},[o,t]);return d?p.jsx("div",{role:"alert",style:{padding:20,color:f.semantic.danger},children:d}):t?p.jsx(M,{documentId:b,sourcePath:o,displayName:u,build:j,active:l,assetType:"model",modelSource:{kind:"project-file",path:o}}):p.jsxs("div",{style:{padding:20,color:f.content.muted},children:["Loading ",u,"…"]})}export{Z as ModelAssetDocument};
@@ -1 +1 @@
1
- import{r as i}from"./index-nmcBqr7Y.js";import{r as s}from"./project-authoring-session-Bnt6icLr.js";import{V as e}from"./index-GIL7oGEO.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./edit-mode-authoring-B47TfLqu.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";function E({store:r}){return i.useEffect(()=>{const t=s(r);return t.ready.catch(o=>{e.error(`Authoring session failed: ${o instanceof Error?o.message:String(o)}`,"authoring")}),t.dispose},[r]),null}export{E as ProjectAuthoringBootstrap};
1
+ import{r as i}from"./index-nmcBqr7Y.js";import{r as s}from"./project-authoring-session-BV-MM8Fl.js";import{X as e}from"./index-Ckxb31Yz.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./edit-mode-authoring-D_BiHCQj.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";function E({store:r}){return i.useEffect(()=>{const t=s(r);return t.ready.catch(o=>{e.error(`Authoring session failed: ${o instanceof Error?o.message:String(o)}`,"authoring")}),t.dispose},[r]),null}export{E as ProjectAuthoringBootstrap};
@@ -1,5 +1,5 @@
1
- import{ak as N,al as R,C as H,j as k,aX as T,aB as P,aY as w,aZ as C,aA as U,a_ as L,a$ as J,b0 as B,b1 as z,M as D,V}from"./three.module-D396a9Mn.js";const q=/^[og]\s*(.+)?/,W=/^mtllib /,X=/^usemtl /,Y=/^usemap /,S=/\s+/,E=new V,A=new V,G=new V,O=new V,j=new V,_=new H;function Z(){const M={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(s,e){if(this.object&&this.object.fromDeclaration===!1){this.object.name=s,this.object.fromDeclaration=e!==!1;return}const n=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:s||"",fromDeclaration:e!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(t,i){const a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);const d={index:this.materials.length,name:t||"",mtllib:Array.isArray(i)&&i.length>0?i[i.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(g){const r={index:typeof g=="number"?g:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return r.clone=this.clone.bind(r),r}};return this.materials.push(d),d},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(t){const i=this.currentMaterial();if(i&&i.groupEnd===-1&&(i.groupEnd=this.geometry.vertices.length/3,i.groupCount=i.groupEnd-i.groupStart,i.inherited=!1),t&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return t&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),i}},n&&n.name&&typeof n.clone=="function"){const t=n.clone(0);t.inherited=!0,this.object.materials.push(t)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/3)*3},parseNormalIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/3)*3},parseUVIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/2)*2},addVertex:function(s,e,n){const t=this.vertices,i=this.object.geometry.vertices;i.push(t[s+0],t[s+1],t[s+2]),i.push(t[e+0],t[e+1],t[e+2]),i.push(t[n+0],t[n+1],t[n+2])},addVertexPoint:function(s){const e=this.vertices;this.object.geometry.vertices.push(e[s+0],e[s+1],e[s+2])},addVertexLine:function(s){const e=this.vertices;this.object.geometry.vertices.push(e[s+0],e[s+1],e[s+2])},addNormal:function(s,e,n){const t=this.normals,i=this.object.geometry.normals;i.push(t[s+0],t[s+1],t[s+2]),i.push(t[e+0],t[e+1],t[e+2]),i.push(t[n+0],t[n+1],t[n+2])},addFaceNormal:function(s,e,n){const t=this.vertices,i=this.object.geometry.normals;E.fromArray(t,s),A.fromArray(t,e),G.fromArray(t,n),j.subVectors(G,A),O.subVectors(E,A),j.cross(O),j.normalize(),i.push(j.x,j.y,j.z),i.push(j.x,j.y,j.z),i.push(j.x,j.y,j.z)},addColor:function(s,e,n){const t=this.colors,i=this.object.geometry.colors;t[s]!==void 0&&i.push(t[s+0],t[s+1],t[s+2]),t[e]!==void 0&&i.push(t[e+0],t[e+1],t[e+2]),t[n]!==void 0&&i.push(t[n+0],t[n+1],t[n+2])},addUV:function(s,e,n){const t=this.uvs,i=this.object.geometry.uvs;i.push(t[s+0],t[s+1]),i.push(t[e+0],t[e+1]),i.push(t[n+0],t[n+1])},addDefaultUV:function(){const s=this.object.geometry.uvs;s.push(0,0),s.push(0,0),s.push(0,0)},addUVLine:function(s){const e=this.uvs;this.object.geometry.uvs.push(e[s+0],e[s+1])},addFace:function(s,e,n,t,i,a,d,g,r){const h=this.vertices.length;let o=this.parseVertexIndex(s,h),l=this.parseVertexIndex(e,h),u=this.parseVertexIndex(n,h);if(this.addVertex(o,l,u),this.addColor(o,l,u),d!==void 0&&d!==""){const m=this.normals.length;o=this.parseNormalIndex(d,m),l=this.parseNormalIndex(g,m),u=this.parseNormalIndex(r,m),this.addNormal(o,l,u)}else this.addFaceNormal(o,l,u);if(t!==void 0&&t!==""){const m=this.uvs.length;o=this.parseUVIndex(t,m),l=this.parseUVIndex(i,m),u=this.parseUVIndex(a,m),this.addUV(o,l,u),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(s){this.object.geometry.type="Points";const e=this.vertices.length;for(let n=0,t=s.length;n<t;n++){const i=this.parseVertexIndex(s[n],e);this.addVertexPoint(i),this.addColor(i)}},addLineGeometry:function(s,e){this.object.geometry.type="Line";const n=this.vertices.length,t=this.uvs.length;for(let i=0,a=s.length;i<a;i++)this.addVertexLine(this.parseVertexIndex(s[i],n));for(let i=0,a=e.length;i<a;i++)this.addUVLine(this.parseUVIndex(e[i],t))}};return M.startObject("",!1),M}class K extends N{constructor(s){super(s),this.materials=null}load(s,e,n,t){const i=this,a=new R(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(s,function(d){try{e(i.parse(d))}catch(g){t?t(g):console.error(g),i.manager.itemError(s)}},n,t)}setMaterials(s){return this.materials=s,this}parse(s){const e=new Z;s.indexOf(`\r
1
+ import{ae as N,af as R,v as H,r as T,aU as k,ax as P,aV as w,aW as C,aw as U,aX as L,aY as J,aZ as D,a_ as z,M as S,V}from"./three.module-IFn-4i31.js";const q=/^[og]\s*(.+)?/,W=/^mtllib /,X=/^usemtl /,Y=/^usemap /,B=/\s+/,E=new V,F=new V,G=new V,O=new V,j=new V,_=new H;function Z(){const M={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(s,e){if(this.object&&this.object.fromDeclaration===!1){this.object.name=s,this.object.fromDeclaration=e!==!1;return}const n=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:s||"",fromDeclaration:e!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(t,i){const a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);const d={index:this.materials.length,name:t||"",mtllib:Array.isArray(i)&&i.length>0?i[i.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(g){const r={index:typeof g=="number"?g:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return r.clone=this.clone.bind(r),r}};return this.materials.push(d),d},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(t){const i=this.currentMaterial();if(i&&i.groupEnd===-1&&(i.groupEnd=this.geometry.vertices.length/3,i.groupCount=i.groupEnd-i.groupStart,i.inherited=!1),t&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return t&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),i}},n&&n.name&&typeof n.clone=="function"){const t=n.clone(0);t.inherited=!0,this.object.materials.push(t)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/3)*3},parseNormalIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/3)*3},parseUVIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/2)*2},addVertex:function(s,e,n){const t=this.vertices,i=this.object.geometry.vertices;i.push(t[s+0],t[s+1],t[s+2]),i.push(t[e+0],t[e+1],t[e+2]),i.push(t[n+0],t[n+1],t[n+2])},addVertexPoint:function(s){const e=this.vertices;this.object.geometry.vertices.push(e[s+0],e[s+1],e[s+2])},addVertexLine:function(s){const e=this.vertices;this.object.geometry.vertices.push(e[s+0],e[s+1],e[s+2])},addNormal:function(s,e,n){const t=this.normals,i=this.object.geometry.normals;i.push(t[s+0],t[s+1],t[s+2]),i.push(t[e+0],t[e+1],t[e+2]),i.push(t[n+0],t[n+1],t[n+2])},addFaceNormal:function(s,e,n){const t=this.vertices,i=this.object.geometry.normals;E.fromArray(t,s),F.fromArray(t,e),G.fromArray(t,n),j.subVectors(G,F),O.subVectors(E,F),j.cross(O),j.normalize(),i.push(j.x,j.y,j.z),i.push(j.x,j.y,j.z),i.push(j.x,j.y,j.z)},addColor:function(s,e,n){const t=this.colors,i=this.object.geometry.colors;t[s]!==void 0&&i.push(t[s+0],t[s+1],t[s+2]),t[e]!==void 0&&i.push(t[e+0],t[e+1],t[e+2]),t[n]!==void 0&&i.push(t[n+0],t[n+1],t[n+2])},addUV:function(s,e,n){const t=this.uvs,i=this.object.geometry.uvs;i.push(t[s+0],t[s+1]),i.push(t[e+0],t[e+1]),i.push(t[n+0],t[n+1])},addDefaultUV:function(){const s=this.object.geometry.uvs;s.push(0,0),s.push(0,0),s.push(0,0)},addUVLine:function(s){const e=this.uvs;this.object.geometry.uvs.push(e[s+0],e[s+1])},addFace:function(s,e,n,t,i,a,d,g,r){const h=this.vertices.length;let o=this.parseVertexIndex(s,h),l=this.parseVertexIndex(e,h),u=this.parseVertexIndex(n,h);if(this.addVertex(o,l,u),this.addColor(o,l,u),d!==void 0&&d!==""){const m=this.normals.length;o=this.parseNormalIndex(d,m),l=this.parseNormalIndex(g,m),u=this.parseNormalIndex(r,m),this.addNormal(o,l,u)}else this.addFaceNormal(o,l,u);if(t!==void 0&&t!==""){const m=this.uvs.length;o=this.parseUVIndex(t,m),l=this.parseUVIndex(i,m),u=this.parseUVIndex(a,m),this.addUV(o,l,u),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(s){this.object.geometry.type="Points";const e=this.vertices.length;for(let n=0,t=s.length;n<t;n++){const i=this.parseVertexIndex(s[n],e);this.addVertexPoint(i),this.addColor(i)}},addLineGeometry:function(s,e){this.object.geometry.type="Line";const n=this.vertices.length,t=this.uvs.length;for(let i=0,a=s.length;i<a;i++)this.addVertexLine(this.parseVertexIndex(s[i],n));for(let i=0,a=e.length;i<a;i++)this.addUVLine(this.parseUVIndex(e[i],t))}};return M.startObject("",!1),M}class Q extends N{constructor(s){super(s),this.materials=null}load(s,e,n,t){const i=this,a=new R(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(s,function(d){try{e(i.parse(d))}catch(g){t?t(g):console.error(g),i.manager.itemError(s)}},n,t)}setMaterials(s){return this.materials=s,this}parse(s){const e=new Z;s.indexOf(`\r
2
2
  `)!==-1&&(s=s.replace(/\r\n/g,`
3
3
  `)),s.indexOf(`\\
4
4
  `)!==-1&&(s=s.replace(/\\\n/g,""));const n=s.split(`
5
- `);let t=[];for(let d=0,g=n.length;d<g;d++){const r=n[d].trimStart();if(r.length===0)continue;const h=r.charAt(0);if(h!=="#")if(h==="v"){const o=r.split(S);switch(o[0]){case"v":e.vertices.push(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3])),o.length>=7?(_.setRGB(parseFloat(o[4]),parseFloat(o[5]),parseFloat(o[6]),k),e.colors.push(_.r,_.g,_.b)):e.colors.push(void 0,void 0,void 0);break;case"vn":e.normals.push(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3]));break;case"vt":e.uvs.push(parseFloat(o[1]),parseFloat(o[2]));break}}else if(h==="f"){const l=r.slice(1).trim().split(S),u=[];for(let c=0,p=l.length;c<p;c++){const b=l[c];if(b.length>0){const v=b.split("/");u.push(v)}}const m=u[0];for(let c=1,p=u.length-1;c<p;c++){const b=u[c],v=u[c+1];e.addFace(m[0],b[0],v[0],m[1],b[1],v[1],m[2],b[2],v[2])}}else if(h==="l"){const o=r.substring(1).trim().split(" ");let l=[];const u=[];if(r.indexOf("/")===-1)l=o;else for(let m=0,c=o.length;m<c;m++){const p=o[m].split("/");p[0]!==""&&l.push(p[0]),p[1]!==""&&u.push(p[1])}e.addLineGeometry(l,u)}else if(h==="p"){const l=r.slice(1).trim().split(" ");e.addPointGeometry(l)}else if((t=q.exec(r))!==null){const o=(" "+t[0].slice(1).trim()).slice(1);e.startObject(o)}else if(X.test(r))e.object.startMaterial(r.substring(7).trim(),e.materialLibraries);else if(W.test(r))e.materialLibraries.push(r.substring(7).trim());else if(Y.test(r))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(h==="s"){if(t=r.split(" "),t.length>1){const l=t[1].trim().toLowerCase();e.object.smooth=l!=="0"&&l!=="off"}else e.object.smooth=!0;const o=e.object.currentMaterial();o&&(o.smooth=e.object.smooth)}else{if(r==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+r+'"')}}e.finalize();const i=new T;if(i.materialLibraries=[].concat(e.materialLibraries),!(e.objects.length===1&&e.objects[0].geometry.vertices.length===0)===!0)for(let d=0,g=e.objects.length;d<g;d++){const r=e.objects[d],h=r.geometry,o=r.materials,l=h.type==="Line",u=h.type==="Points";let m=!1;if(h.vertices.length===0)continue;const c=new P;c.setAttribute("position",new w(h.vertices,3)),h.normals.length>0&&c.setAttribute("normal",new w(h.normals,3)),h.colors.length>0&&(m=!0,c.setAttribute("color",new w(h.colors,3))),h.hasUVIndices===!0&&c.setAttribute("uv",new w(h.uvs,2));const p=[];for(let v=0,I=o.length;v<I;v++){const y=o[v],F=y.name+"_"+y.smooth+"_"+m;let f=e.materials[F];if(this.materials!==null){if(f=this.materials.create(y.name),l&&f&&!(f instanceof C)){const x=new C;U.prototype.copy.call(x,f),x.color.copy(f.color),f=x}else if(u&&f&&!(f instanceof L)){const x=new L({size:10,sizeAttenuation:!1});U.prototype.copy.call(x,f),x.color.copy(f.color),x.map=f.map,f=x}}f===void 0&&(l?f=new C:u?f=new L({size:1,sizeAttenuation:!1}):f=new J,f.name=y.name,f.flatShading=!y.smooth,f.vertexColors=m,e.materials[F]=f),p.push(f)}let b;if(p.length>1){for(let v=0,I=o.length;v<I;v++){const y=o[v];c.addGroup(y.groupStart,y.groupCount,v)}l?b=new B(c,p):u?b=new z(c,p):b=new D(c,p)}else l?b=new B(c,p[0]):u?b=new z(c,p[0]):b=new D(c,p[0]);b.name=r.name,i.add(b)}else if(e.vertices.length>0){const d=new L({size:1,sizeAttenuation:!1}),g=new P;g.setAttribute("position",new w(e.vertices,3)),e.colors.length>0&&e.colors[0]!==void 0&&(g.setAttribute("color",new w(e.colors,3)),d.vertexColors=!0);const r=new z(g,d);i.add(r)}return i}}export{K as OBJLoader};
5
+ `);let t=[];for(let d=0,g=n.length;d<g;d++){const r=n[d].trimStart();if(r.length===0)continue;const h=r.charAt(0);if(h!=="#")if(h==="v"){const o=r.split(B);switch(o[0]){case"v":e.vertices.push(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3])),o.length>=7?(_.setRGB(parseFloat(o[4]),parseFloat(o[5]),parseFloat(o[6]),T),e.colors.push(_.r,_.g,_.b)):e.colors.push(void 0,void 0,void 0);break;case"vn":e.normals.push(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3]));break;case"vt":e.uvs.push(parseFloat(o[1]),parseFloat(o[2]));break}}else if(h==="f"){const l=r.slice(1).trim().split(B),u=[];for(let c=0,p=l.length;c<p;c++){const b=l[c];if(b.length>0){const v=b.split("/");u.push(v)}}const m=u[0];for(let c=1,p=u.length-1;c<p;c++){const b=u[c],v=u[c+1];e.addFace(m[0],b[0],v[0],m[1],b[1],v[1],m[2],b[2],v[2])}}else if(h==="l"){const o=r.substring(1).trim().split(" ");let l=[];const u=[];if(r.indexOf("/")===-1)l=o;else for(let m=0,c=o.length;m<c;m++){const p=o[m].split("/");p[0]!==""&&l.push(p[0]),p[1]!==""&&u.push(p[1])}e.addLineGeometry(l,u)}else if(h==="p"){const l=r.slice(1).trim().split(" ");e.addPointGeometry(l)}else if((t=q.exec(r))!==null){const o=(" "+t[0].slice(1).trim()).slice(1);e.startObject(o)}else if(X.test(r))e.object.startMaterial(r.substring(7).trim(),e.materialLibraries);else if(W.test(r))e.materialLibraries.push(r.substring(7).trim());else if(Y.test(r))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(h==="s"){if(t=r.split(" "),t.length>1){const l=t[1].trim().toLowerCase();e.object.smooth=l!=="0"&&l!=="off"}else e.object.smooth=!0;const o=e.object.currentMaterial();o&&(o.smooth=e.object.smooth)}else{if(r==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+r+'"')}}e.finalize();const i=new k;if(i.materialLibraries=[].concat(e.materialLibraries),!(e.objects.length===1&&e.objects[0].geometry.vertices.length===0)===!0)for(let d=0,g=e.objects.length;d<g;d++){const r=e.objects[d],h=r.geometry,o=r.materials,l=h.type==="Line",u=h.type==="Points";let m=!1;if(h.vertices.length===0)continue;const c=new P;c.setAttribute("position",new w(h.vertices,3)),h.normals.length>0&&c.setAttribute("normal",new w(h.normals,3)),h.colors.length>0&&(m=!0,c.setAttribute("color",new w(h.colors,3))),h.hasUVIndices===!0&&c.setAttribute("uv",new w(h.uvs,2));const p=[];for(let v=0,I=o.length;v<I;v++){const y=o[v],A=y.name+"_"+y.smooth+"_"+m;let f=e.materials[A];if(this.materials!==null){if(f=this.materials.create(y.name),l&&f&&!(f instanceof C)){const x=new C;U.prototype.copy.call(x,f),x.color.copy(f.color),f=x}else if(u&&f&&!(f instanceof L)){const x=new L({size:10,sizeAttenuation:!1});U.prototype.copy.call(x,f),x.color.copy(f.color),x.map=f.map,f=x}}f===void 0&&(l?f=new C:u?f=new L({size:1,sizeAttenuation:!1}):f=new J,f.name=y.name,f.flatShading=!y.smooth,f.vertexColors=m,e.materials[A]=f),p.push(f)}let b;if(p.length>1){for(let v=0,I=o.length;v<I;v++){const y=o[v];c.addGroup(y.groupStart,y.groupCount,v)}l?b=new D(c,p):u?b=new z(c,p):b=new S(c,p)}else l?b=new D(c,p[0]):u?b=new z(c,p[0]):b=new S(c,p[0]);b.name=r.name,i.add(b)}else if(e.vertices.length>0){const d=new L({size:1,sizeAttenuation:!1}),g=new P;g.setAttribute("position",new w(e.vertices,3)),e.colors.length>0&&e.colors[0]!==void 0&&(g.setAttribute("color",new w(e.colors,3)),d.vertexColors=!0);const r=new z(g,d);i.add(r)}return i}}export{Q as OBJLoader};
@@ -0,0 +1 @@
1
+ import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{bF as q,bG as k,bH as J,bI as Q,bJ as D,bK as X,bL as T,bM as Y,bN as Z,bO as I,bP as O,bQ as ee,bR as se,bS as M,bT as R,bU as m,bV as x,a6 as n,bW as ae,a5 as N,bX as ie,bY as te,ab as z,ac as d,bZ as B,b_ as oe,b$ as re,c0 as ne,c1 as F,c2 as L,c3 as le,c4 as ce,c5 as W,bD as de,aa as $,c6 as pe,c7 as A,c8 as ue,c9 as be,ca as he,cb as me,cc as ge,cd as ve,ce as xe,cf as je}from"./index-Ckxb31Yz.js";import{r as t}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{s as we}from"./model-inspection-Cxfg_Fei.js";import{v as Se,V as fe,a as ye,b as Ce,c as Ve}from"./ViewportShadingMenu-C7Hdhtca.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./three.module-IFn-4i31.js";const U=()=>()=>{},g=()=>0,Ee=[{key:"skeletons",label:"Bones"},{key:"weights",label:"Weights"}];function We({documentId:i,assetPath:p}){t.useSyncExternalStore(q,k,k);const a=J(i);t.useSyncExternalStore(Q,D,D),t.useSyncExternalStore(a?.subscribe??U,a?.getSnapshot??g,a?.getSnapshot??g),t.useSyncExternalStore(X,T,T);const l=Y(i);t.useSyncExternalStore(l?.subscribe??U,l?.getSnapshot??g,l?.getSnapshot??g);const H=Z(i),[j,w]=t.useState(null),[S,b]=t.useState(null),[f,h]=t.useState(!1),[y,c]=t.useState(!1),C=t.useRef(null),V=t.useRef(null);if(t.useSyncExternalStore(I,O,O),!a)return null;const o=a.presentation(),{lighting:u}=ee(i),G=se(i)?.documentLayer?.all?.lighting?.studioPreset===M.id,v=new Set(we(a.root).filter(s=>s.available).map(s=>s.mode)),_=[...Se,...v.has("uv")?[{mode:"uv",label:"UV",description:"UV coordinates as surface color"}]:[],...v.has("vertex-colors")?[{mode:"vertex-colors",label:"Vertex colors",description:"Authored color attributes without textures"}]:[]],E=async s=>{if(p){b(null);try{await je().saveThumbnailFraming(p,s?void 0:a.cameraPose())}catch(r){b(r instanceof Error?r.message:String(r))}}},K=async()=>{b(null);try{const s={background:o.background},r=p?.toLowerCase().endsWith(".spz")?await ve(p,s):xe(a.root,s);w(`data:image/png;base64,${r.contactSheet.base64}`)}catch(s){b(s instanceof Error?s.message:String(s))}},P=a.selection().length>0?"Frame selection":"Frame all";return e.jsxs("div",{className:"vgai-model-document-header",children:[e.jsxs(R,{compact:!0,label:"Viewport view controls",className:"vgai-model-viewport-toolbar vgai-model-viewport-toolbar--view",children:[e.jsx(m,{text:P,children:e.jsx(x,{"aria-label":P,onClick:()=>a.frame(),children:e.jsx(n,{icon:ae,size:"md"})})}),e.jsxs("div",{className:"vgai-viewport-popover-anchor",children:[e.jsx(m,{text:"Camera orientation and projection",children:e.jsxs(N,{ref:C,type:"button",size:"compact",variant:"secondary","aria-label":`Camera view: ${o.projection}`,"aria-haspopup":"menu","aria-expanded":f,onClick:()=>h(s=>!s),className:"vgai-model-toolbar-labelled-control",children:[e.jsx(n,{icon:ie,size:"sm"}),e.jsx("span",{children:o.projection==="perspective"?"Perspective":"Orthographic"}),e.jsx(n,{icon:te,size:"xs"})]})}),f&&e.jsxs(z,{anchorRef:C,align:"start",clamp:!0,"aria-label":"Camera view",onDismiss:()=>h(!1),style:{minWidth:210},children:[["front","right","top","isometric"].map(s=>e.jsx(d,{onSelect:()=>{a.setViewPreset(s),h(!1)},children:s==="isometric"?"Perspective 3/4":`${s[0]?.toUpperCase()}${s.slice(1)} view`},s)),e.jsx(B,{}),["perspective","orthographic"].map(s=>e.jsxs(d,{role:"menuitemradio","aria-checked":o.projection===s,onSelect:()=>{a.setProjection(s),h(!1)},children:[e.jsx("span",{className:"vgai-menu-check",children:o.projection===s&&e.jsx(n,{icon:oe,size:"xs"})}),s==="perspective"?"Perspective":"Orthographic"]},s))]})]}),v.has("skeleton")?e.jsx(m,{text:`Rig: ${o.skeleton?"Visible":"Hidden"}`,children:e.jsx(x,{"aria-label":"Toggle rig overlay","aria-pressed":o.skeleton,onClick:()=>a.setSkeleton(!o.skeleton),children:e.jsx(n,{icon:re,size:"md"})})}):null,ne("object3d-document").map(({id:s,Component:r})=>e.jsx(r,{documentId:i},s))]}),e.jsxs(R,{compact:!0,label:"Viewport preview controls",className:"vgai-model-viewport-toolbar vgai-model-viewport-toolbar--preview",children:[e.jsxs(fe,{mode:o.mode,onChange:s=>a.setMode(s),choices:_,segments:ye,children:[F().length>0?e.jsxs("label",{children:[e.jsx("span",{children:"View"}),e.jsxs(L,{"aria-label":"View preset",value:"",onChange:s=>{s.target.value&&le(i,s.target.value)},children:[e.jsx("option",{value:"",children:"Choose…"}),F().map(s=>e.jsx("option",{value:s.id,children:s.title},s.id))]})]}):null,e.jsxs("label",{children:[e.jsx("span",{children:"Lighting"}),e.jsxs(L,{"aria-label":"Lighting",value:u.source==="studio"?`studio:${u.studioPreset}`:u.source,onChange:s=>{const r=s.target.value;W(i,r.startsWith("studio:")?{all:{lighting:{source:"studio",studioPreset:r.slice(7)}}}:{all:{lighting:{source:r}}})},children:[ce().filter(s=>s.id!==M.id||G).map(s=>e.jsx("option",{value:`studio:${s.id}`,children:s.title},s.id)),e.jsx("option",{value:"scene",children:"Scene lights"})]})]}),e.jsxs("label",{children:[e.jsx("span",{children:"Exposure"}),e.jsx(de,{"aria-label":"Preview exposure",type:"range",min:"0.2",max:"2",step:"0.1",value:u.tone.exposure,onChange:s=>W(i,{all:{lighting:{tone:{exposure:Number(s.target.value)}}}})}),e.jsx($,{as:"span",variant:"caption",children:u.tone.exposure.toFixed(1)})]})]}),e.jsx(Ce,{glyph:e.jsx(Ve,{}),choices:[{id:"grid",label:"Grid",enabled:A(i),onToggle:()=>pe(i,!A(i))},{id:"bounds",label:"Bounds",enabled:o.bounds,onToggle:()=>a.setBounds(!o.bounds)},...l===null?[]:Ee.filter(s=>H.includes(s.key)).map(s=>({id:s.key,label:s.label,enabled:l.helperVisibility[s.key],onToggle:()=>l.toggleHelperType(s.key)}))]}),e.jsxs("div",{className:"vgai-viewport-popover-anchor",children:[e.jsx(m,{text:"Asset preview actions",children:e.jsx(x,{ref:V,"aria-label":"Asset preview actions","aria-haspopup":"menu","aria-expanded":y,onClick:()=>c(s=>!s),children:e.jsx(n,{icon:ue,size:"md"})})}),y&&e.jsxs(z,{anchorRef:V,clamp:!0,"aria-label":"Asset preview actions",onDismiss:()=>c(!1),style:{minWidth:210},children:[e.jsxs(d,{onSelect:()=>{c(!1),K()},children:[e.jsx(n,{icon:be,size:"sm"}),"Capture preview"]}),p?e.jsxs(e.Fragment,{children:[e.jsx(d,{onSelect:()=>{c(!1),E(!1)},children:"Save thumbnail framing"}),e.jsx(d,{onSelect:()=>{c(!1),E(!0)},children:"Reset thumbnail framing"})]}):null,e.jsx(B,{}),e.jsxs(d,{onSelect:()=>{a.resetPresentation(),c(!1)},children:[e.jsx(n,{icon:he,size:"sm"}),"Reset viewport settings"]})]})]})]}),j?e.jsxs(me,{className:"vgai-model-capture-preview",children:[e.jsxs("div",{children:[e.jsx($,{as:"strong",variant:"label",children:"Deterministic views"}),e.jsx(N,{type:"button",variant:"ghost",onClick:()=>w(null),children:"Close"})]}),e.jsx("img",{src:j,alt:"Front, right, top, and three-quarter model preview"})]}):null,S?e.jsx(ge,{className:"vgai-model-toolbar-error",tone:"error",children:S}):null]})}export{We as Object3DDocumentToolbar};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/StageHost-lB8f---y.js","assets/index-Ckxb31Yz.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/three.module-IFn-4i31.js","assets/index-B4bmKkgY.css","assets/standard-viewport-dressing-GUUr6GuK.js","assets/live-mixers-BRkRHd6g.js","assets/live-gesture-lock-DJbrjOqf.js","assets/model-inspection-Cxfg_Fei.js","assets/viewport-shading-boundary-CBvvzS-p.js","assets/clip-planes-CnAI6DZn.js","assets/three-DSsr_Lvp.js","assets/viewport-pick-context-DkawXbEi.js","assets/OrbitControls-CzTRRI7x.js","assets/LineSegments2-Cicm_Hu1.js","assets/three.quarks.esm-CRKGjKAH.js","assets/scene-framing-50N7SKuX.js","assets/source-object3d-authoring-adapter-CfHQLFAL.js","assets/three-projection-core-kubBTx0s.js","assets/editor-presentation-activity-C7SNSmTd.js","assets/viewport-surface-status-BFmnWp7z.js"])))=>i.map(i=>d[i]);
2
+ import{ao as r,_ as a}from"./index-Ckxb31Yz.js";import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as n}from"./index-nmcBqr7Y.js";import{V as c,O as u}from"./viewport-surface-status-BFmnWp7z.js";const s=n.lazy(async()=>({default:(await a(()=>import("./StageHost-lB8f---y.js").then(e=>e.S),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]))).Object3DDocumentViewport}));function l(t){return i(t.documentId,t.chromeless),o.jsx(n.Suspense,{fallback:o.jsx(c,{testId:"object3d-document-loading",children:u}),children:o.jsx(s,{...t})})}function i(t,e=!1){n.useEffect(()=>{if(!e)return r(t)},[t,e])}export{l as O};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/spark.module-CXth-y_a.js","assets/three.module-IFn-4i31.js","assets/index-Ckxb31Yz.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-B4bmKkgY.css"])))=>i.map(i=>d[i]);
2
+ import{fN as te,ap as y,fO as re,bl as ne,fP as ie,bn as oe,bo as se,bp as Q,fQ as ae,_ as le,fR as ce,fS as de,fT as pe}from"./index-Ckxb31Yz.js";import{a as C}from"./jsx-runtime-DPjLkJKQ.js";import{r as E}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{W as me,t as ue,u as fe,r as we,s as be,bC as he,bA as ge,bO as ve,aB as xe,S as Ae,V as ye,A as Ce}from"./three.module-IFn-4i31.js";import{OrbitControls as Ee}from"./OrbitControls-CzTRRI7x.js";import{s as Me,i as F}from"./editor-presentation-activity-C7SNSmTd.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";const v={webglContext:0,animationFrame:0,resizeObserver:0,objectUrl:0},J={...v};function _(r){v[r]++,J[r]=Math.max(J[r],v[r]);let s=!1;return()=>{s||(s=!0,v[r]=Math.max(0,v[r]-1))}}function Se(r){const s=r.animations[0];if(!s)return null;const m=new Ce(r),b=m.clipAction(s).play();return b.paused=!0,m.update(0),m}let Re=0;function Ve({assetPath:r,materialPath:s,displayName:m="Object3D preview",active:b=!0,sourceFactory:M,showSkeleton:D=!1,background:z,cameraDirection:S,showGrid:H=!0,useDefaultLighting:T=!0,exposure:L=1,setupPreview:k}){const W=E.useRef(null),[R,q]=E.useState(null),[V,j]=E.useState(!0);return E.useEffect(()=>{if(!b)return;const o=W.current;if(!o)return;const x=new AbortController,K=te({id:`preview-card:${++Re}`,label:`${m} (preview card)`,contentClock:()=>0}),t=new me({antialias:!0,alpha:!0}),X=_("webglContext"),Y=_("animationFrame"),Z=_("resizeObserver"),a=new ue,u=new fe(35,1,.01,1e3),f=new Ee(u,t.domElement),$=new xe;let I=null,w=null,A=null,c,l=null,h=null;const O=[];let d=0,p=!1;if(q(null),j(!0),t.outputColorSpace=we,t.toneMapping=be,t.toneMappingExposure=L,t.shadowMap.enabled=!0,t.setClearColor(z??2106410,1),t.setPixelRatio(Math.min(window.devicePixelRatio,2)),t.domElement.style.width="100%",t.domElement.style.height="100%",t.domElement.style.display="block",o.appendChild(t.domElement),f.enableDamping=!0,f.dampingFactor=.1,T){a.add(new he(16777215,3489874,1.8));const e=new ge(16777215,2.2);e.position.set(3,5,4),a.add(e)}if(H){const e=new ve(10,20,5333103,3423044);a.add(e),O.push(e)}const U=(e,n)=>{if(!h)return;const i=S?new ye(...S):void 0,g=de(h,Math.max(e,1)/Math.max(n,1),i);u.copy(g,!1),f.target.copy(h.center),f.update()},B=async e=>{if(p)return;a.add(e);let n=!1;if(e.traverse(i=>{ae(i,"gaussianSplat")&&(n=!0)}),n){const{SparkRenderer:i}=await le(async()=>{const{SparkRenderer:g}=await import("./spark.module-CXth-y_a.js");return{SparkRenderer:g}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]));if(p)return;l=new i({renderer:t,enableLod:!1})}if(h=ce(e,"perspective"),U(o.clientWidth,o.clientHeight),I=Se(e),D){const i=new Ae(e);i.name="__compact_preview_skeleton",a.add(i),O.push(i)}c=k?.({scene:a,camera:u,renderer:t,model:e}),c?.resize?.(Math.max(o.clientWidth,1),Math.max(o.clientHeight,1),t.getPixelRatio()),j(!1)};(async()=>{try{if(M){A=re(M),await B(A.root);return}if(!r)throw new Error("Compact Object3D preview has no source.");const e=ne(r);if(!e)throw new Error(`No native Three.js loader supports ${r}.`);const n=e==="glb"||e==="gltf"||e==="spz"?await ie(r,x.signal):await oe({url:r,format:e,...s?{materialUrl:s}:{}});if(w=se(n),x.signal.aborted||p){Q(w),w=null;return}await B(w)}catch(e){!x.signal.aborted&&!p&&(q(e instanceof Error?e.message:String(e)),j(!1))}})();const G=()=>{const e=Math.max(o.clientWidth,1),n=Math.max(o.clientHeight,1);t.setSize(e,n,!1),h&&!c?U(e,n):(u.aspect=e/n,u.updateProjectionMatrix()),c?.resize?.(e,n,t.getPixelRatio())},N=new ResizeObserver(G);N.observe(o),G();const P=()=>{if(d=0,p||!F())return;const e=Math.min($.getDelta(),.1);f.update(),l&&a.add(l);try{c?.render?c.render(e):t.render(a,u)}finally{l?.removeFromParent()}d=requestAnimationFrame(P)},ee=Me(()=>{F()?!p&&d===0&&($.getDelta(),P()):(cancelAnimationFrame(d),d=0)});return F()&&(d=requestAnimationFrame(P)),()=>{p=!0,ee(),K(),x.abort(new Error("Compact Object3D preview closed.")),cancelAnimationFrame(d),N.disconnect(),I?.stopAllAction(),c?.dispose(),f.dispose(),l&&(l.removeFromParent(),pe(l),l=null),t.dispose(),t.forceContextLoss();for(const e of O){const n=e;n.geometry?.dispose();const i=n.material;if(Array.isArray(i))for(const g of i)g.dispose();else i?.dispose()}A&&A.dispose(),w&&Q(w),o.contains(t.domElement)&&o.removeChild(t.domElement),Z(),Y(),X()}},[b,r,z,S,L,s,k,H,D,M,T]),C.jsxs("div",{ref:W,"data-testid":"object3d-compact-preview",role:"region","aria-label":`Interactive 3D preview: ${m}`,"aria-busy":V,style:{width:"100%",height:"100%",minHeight:220,overflow:"hidden",position:"relative",background:y.surface.inset},children:[V&&!R?C.jsx("span",{style:{position:"absolute",padding:10,color:y.content.muted},children:"Loading…"}):null,b?null:C.jsx("span",{style:{position:"absolute",padding:10,color:y.content.muted},children:"Preview suspended while inactive."}),R?C.jsx("div",{role:"alert",style:{position:"absolute",padding:10,color:y.semantic.danger},children:R}):null]})}export{Ve as Object3DPreview};
@@ -0,0 +1 @@
1
+ import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{c_ as U,cG as H,cL as R,c$ as W,dW as _,ap as i,a6 as b,fU as w,b5 as M,aT as C,c2 as N,a5 as V,b_ as G,fV as J}from"./index-Ckxb31Yz.js";import{r}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{d as K}from"./asset-editor-persistence-BVtzjadu.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./three.module-IFn-4i31.js";const S=new Map,q=new Set;function I(){for(const e of q)e()}function Q(e,o){const n=S.get(e);if(n?.status==="running")return n;const f={id:e,label:o,stage:"fetch",loaded:0,total:0,status:"running",controller:new AbortController};return S.set(e,f),I(),f}function y(e,o){const n=S.get(e);n&&(Object.assign(n,o),I())}const X={width:"100%"};function Y(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function de({online:e,mode:o="full",showPreview:n=!1,onResolved:f}){const[m,z]=r.useState([]),[l,A]=r.useState(null),[$,v]=r.useState(!0),[B,D]=r.useState(null),[h,F]=r.useState(null),[O,p]=r.useState(!1),[T,x]=r.useState(!1),[j,E]=r.useState(!1),[c,g]=r.useState("idle");r.useEffect(()=>{if(o==="preview"){v(!1);return}let s=!1;return v(!0),D(null),U(e.source,e.id).then(a=>{s||(z(a),a.length>0&&A(a[0]))}).catch(a=>{s||(z([]),D(a instanceof H?R(a.code):a instanceof Error?a.message:"Asset delivery metadata is unavailable while offline."))}).finally(()=>{s||v(!1)}),()=>{s=!0}},[o,e.source,e.id]);const P=e.source==="local"&&(e.type==="model"||e.type==="animation"||e.type==="source");r.useEffect(()=>{if(o==="inspector"&&!n){p(!1);return}let s=!1;if(F(null),x(!1),E(!1),!P){p(!1);return}return p(!0),W(e.source,e.id).then(a=>{s||(F(a),x(!a))}).catch(()=>{s||x(!0)}).finally(()=>{s||p(!1)}),()=>{s=!0}},[o,e.id,e.source,n,P]);const L=r.useCallback(async()=>{if(!l)return;const s=`single:${e.source}:${e.id}`,a=Q(s,e.name);y(s,{stage:"fetch",loaded:0,total:l.sizeBytes??0,status:"running"}),g("downloading");try{const d={source:e.source,id:e.id,name:e.name,url:l.url,format:l.format,jobId:s,signal:a.controller.signal};l.includes&&(d.includes=l.includes);const u=await K(d);u.ok&&u.path?(y(s,{stage:"commit",loaded:l.sizeBytes??1,total:l.sizeBytes??1,status:u.alreadyExists?"skipped":"imported",message:u.path}),g("done"),_(`${e.name} added to Content — drag it from there into the viewport to place it.`),f?.(`/${u.path}`)):(y(s,{status:"failed",message:u.error??"The import was rejected."}),g("error"))}catch(d){y(s,{status:a.controller.signal.aborted?"cancelled":"failed",message:d instanceof Error?d.message:String(d)}),g("error")}},[e,l,f]),k=t.jsx("img",{src:j?"/__editor/asset-library/local-placeholder.svg":e.thumbnailUrl,alt:j?`${e.name} preview unavailable`:e.name,onError:()=>E(!0),style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain"}});return t.jsxs("div",{style:{padding:8,display:"flex",flexDirection:"column",gap:8},children:[o!=="preview"&&t.jsx("div",{style:{fontWeight:600,fontSize:12,color:i.content.primary,wordBreak:"break-all"},children:e.name}),(o!=="inspector"||n)&&t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{width:"100%",height:"100%",minHeight:o==="inspector"?160:240,background:i.surface.shell,borderRadius:i.shape.small,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center"},children:O?t.jsxs("div",{style:{color:i.content.muted,fontSize:11},children:[t.jsx(b,{icon:w,spin:!0,style:{marginRight:5}}),"Loading Asset Editor preview…"]}):h?t.jsx(r.Suspense,{fallback:t.jsx("span",{style:{color:i.content.muted},children:"Loading preview…"}),children:t.jsx(M,{route:"model-preview",documentId:"",assetPath:h.path,...h.materialPath?{materialPath:h.materialPath}:{},displayName:e.name,active:!0,whenUnregistered:k})}):k}),j&&t.jsx("div",{role:"status",style:{color:i.content.dim,fontSize:10},children:"The catalog preview could not be loaded; showing the typed fallback."}),T&&t.jsx("div",{style:{color:i.content.dim,fontSize:10},children:"Interactive preview is unavailable for this variant; showing its catalog thumbnail."})]}),o!=="preview"&&t.jsxs(t.Fragment,{children:[t.jsx(C,{label:"Info",children:t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:11,color:i.content.dim,marginBottom:2},children:"Source"}),t.jsx("div",{style:{fontSize:11,color:i.content.primary},children:e.source==="polyhaven"?"Poly Haven":e.source==="ambientcg"?"ambientCG":"Full Catalog"})]}),t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:11,color:i.content.dim,marginBottom:2},children:"Type"}),t.jsx("div",{style:{fontSize:11,color:i.content.primary},children:e.type})]}),e.tags.length>0&&t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:11,color:i.content.dim,marginBottom:2},children:"Tags"}),t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:3},children:e.tags.slice(0,12).map(s=>t.jsx("span",{style:{fontSize:10,padding:"1px 5px",background:i.surface.raised,borderRadius:i.shape.small,color:i.content.muted},children:s},s))})]}),e.author&&t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:11,color:i.content.dim,marginBottom:2},children:"Author"}),t.jsx("div",{style:{fontSize:11,color:i.content.primary},children:e.author})]})]})}),t.jsx(C,{label:"Add to Project",children:t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:$?t.jsxs("div",{style:{fontSize:11,color:i.content.dim},children:[t.jsx(b,{icon:w,spin:!0,style:{marginRight:4}}),"Loading options..."]}):B?t.jsxs("div",{role:"alert",style:{fontSize:11,color:i.content.muted},children:["Delivery unavailable: ",B]}):m.length>0?t.jsxs(t.Fragment,{children:[t.jsx(N,{"aria-label":"Asset delivery",value:l?m.indexOf(l):0,onChange:s=>A(m[Number(s.target.value)]??null),style:X,children:m.map((s,a)=>t.jsxs("option",{value:a,children:[s.label,s.sizeBytes?` (${Y(s.sizeBytes)})`:""]},a))}),t.jsxs(V,{type:"button",variant:c==="done"?"success":"primary",size:"comfortable",onClick:L,disabled:c==="downloading",style:{width:"100%"},children:[t.jsx(b,{icon:c==="done"?G:c==="downloading"?w:J,spin:c==="downloading",style:{fontSize:10}}),c==="done"?"Downloaded":c==="downloading"?"Downloading...":c==="error"?"Retry":"Add to Project"]})]}):t.jsx("div",{role:"status",style:{fontSize:11,color:i.content.dim},children:e.source==="local"?"No healthy SSD or cloud delivery is available for this asset.":"This provider has no compatible remote delivery for the selected asset."})})}),t.jsxs("div",{style:{fontSize:10,color:i.content.dim,padding:"4px 0"},children:["License: ",e.license??"CC0 (Public Domain)"]})]})]})}export{de as OnlineAssetDetail};
@@ -1 +1 @@
1
- import{_ as We}from"./extends-CF3RwP-h.js";import{r as U}from"./index-nmcBqr7Y.js";import{V as O,m as z,n as k,o as ve,Q as we,ar as se,g as T,x as re,p as Be,q as qe}from"./three.module-D396a9Mn.js";import{u as Y,d as Ge}from"./events-156d8d12.esm-ErOhDXXB.js";var Qe=Object.defineProperty,$e=(m,i,c)=>i in m?Qe(m,i,{enumerable:!0,configurable:!0,writable:!0,value:c}):m[i]=c,Je=(m,i,c)=>($e(m,i+"",c),c);class et{constructor(){Je(this,"_listeners")}addEventListener(i,c){this._listeners===void 0&&(this._listeners={});const e=this._listeners;e[i]===void 0&&(e[i]=[]),e[i].indexOf(c)===-1&&e[i].push(c)}hasEventListener(i,c){if(this._listeners===void 0)return!1;const e=this._listeners;return e[i]!==void 0&&e[i].indexOf(c)!==-1}removeEventListener(i,c){if(this._listeners===void 0)return;const y=this._listeners[i];if(y!==void 0){const g=y.indexOf(c);g!==-1&&y.splice(g,1)}}dispatchEvent(i){if(this._listeners===void 0)return;const e=this._listeners[i.type];if(e!==void 0){i.target=this;const y=e.slice(0);for(let g=0,N=y.length;g<N;g++)y[g].call(this,i);i.target=null}}}var tt=Object.defineProperty,ot=(m,i,c)=>i in m?tt(m,i,{enumerable:!0,configurable:!0,writable:!0,value:c}):m[i]=c,n=(m,i,c)=>(ot(m,typeof i!="symbol"?i+"":i,c),c);const $=new Be,je=new qe,nt=Math.cos(70*(Math.PI/180)),Le=(m,i)=>(m%i+i)%i;let _e=class extends et{constructor(i,c){super(),n(this,"object"),n(this,"domElement"),n(this,"enabled",!0),n(this,"target",new O),n(this,"minDistance",0),n(this,"maxDistance",1/0),n(this,"minZoom",0),n(this,"maxZoom",1/0),n(this,"minPolarAngle",0),n(this,"maxPolarAngle",Math.PI),n(this,"minAzimuthAngle",-1/0),n(this,"maxAzimuthAngle",1/0),n(this,"enableDamping",!1),n(this,"dampingFactor",.05),n(this,"enableZoom",!0),n(this,"zoomSpeed",1),n(this,"enableRotate",!0),n(this,"rotateSpeed",1),n(this,"enablePan",!0),n(this,"panSpeed",1),n(this,"screenSpacePanning",!0),n(this,"keyPanSpeed",7),n(this,"zoomToCursor",!1),n(this,"autoRotate",!1),n(this,"autoRotateSpeed",2),n(this,"reverseOrbit",!1),n(this,"reverseHorizontalOrbit",!1),n(this,"reverseVerticalOrbit",!1),n(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),n(this,"mouseButtons",{LEFT:z.ROTATE,MIDDLE:z.DOLLY,RIGHT:z.PAN}),n(this,"touches",{ONE:k.ROTATE,TWO:k.DOLLY_PAN}),n(this,"target0"),n(this,"position0"),n(this,"zoom0"),n(this,"_domElementKeyEvents",null),n(this,"getPolarAngle"),n(this,"getAzimuthalAngle"),n(this,"setPolarAngle"),n(this,"setAzimuthalAngle"),n(this,"getDistance"),n(this,"getZoomScale"),n(this,"listenToKeyEvents"),n(this,"stopListenToKeyEvents"),n(this,"saveState"),n(this,"reset"),n(this,"update"),n(this,"connect"),n(this,"dispose"),n(this,"dollyIn"),n(this,"dollyOut"),n(this,"getScale"),n(this,"setScale"),this.object=i,this.domElement=c,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>d.phi,this.getAzimuthalAngle=()=>d.theta,this.setPolarAngle=t=>{let o=Le(t,2*Math.PI),a=d.phi;a<0&&(a+=2*Math.PI),o<0&&(o+=2*Math.PI);let r=Math.abs(o-a);2*Math.PI-r<r&&(o<a?o+=2*Math.PI:a+=2*Math.PI),b.phi=o-a,e.update()},this.setAzimuthalAngle=t=>{let o=Le(t,2*Math.PI),a=d.theta;a<0&&(a+=2*Math.PI),o<0&&(o+=2*Math.PI);let r=Math.abs(o-a);2*Math.PI-r<r&&(o<a?o+=2*Math.PI:a+=2*Math.PI),b.theta=o-a,e.update()},this.getDistance=()=>e.object.position.distanceTo(e.target),this.listenToKeyEvents=t=>{t.addEventListener("keydown",ae),this._domElementKeyEvents=t},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",ae),this._domElementKeyEvents=null},this.saveState=()=>{e.target0.copy(e.target),e.position0.copy(e.object.position),e.zoom0=e.object.zoom},this.reset=()=>{e.target.copy(e.target0),e.object.position.copy(e.position0),e.object.zoom=e.zoom0,e.object.updateProjectionMatrix(),e.dispatchEvent(y),e.update(),u=s.NONE},this.update=(()=>{const t=new O,o=new O(0,1,0),a=new we().setFromUnitVectors(i.up,o),r=a.clone().invert(),f=new O,x=new we,C=2*Math.PI;return function(){const Ae=e.object.position;a.setFromUnitVectors(i.up,o),r.copy(a).invert(),t.copy(Ae).sub(e.target),t.applyQuaternion(a),d.setFromVector3(t),e.autoRotate&&u===s.NONE&&J(De()),e.enableDamping?(d.theta+=b.theta*e.dampingFactor,d.phi+=b.phi*e.dampingFactor):(d.theta+=b.theta,d.phi+=b.phi);let S=e.minAzimuthAngle,I=e.maxAzimuthAngle;isFinite(S)&&isFinite(I)&&(S<-Math.PI?S+=C:S>Math.PI&&(S-=C),I<-Math.PI?I+=C:I>Math.PI&&(I-=C),S<=I?d.theta=Math.max(S,Math.min(I,d.theta)):d.theta=d.theta>(S+I)/2?Math.max(S,d.theta):Math.min(I,d.theta)),d.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,d.phi)),d.makeSafe(),e.enableDamping===!0?e.target.addScaledVector(R,e.dampingFactor):e.target.add(R),e.zoomToCursor&&A||e.object.isOrthographicCamera?d.radius=oe(d.radius):d.radius=oe(d.radius*E),t.setFromSpherical(d),t.applyQuaternion(r),Ae.copy(e.target).add(t),e.object.matrixAutoUpdate||e.object.updateMatrix(),e.object.lookAt(e.target),e.enableDamping===!0?(b.theta*=1-e.dampingFactor,b.phi*=1-e.dampingFactor,R.multiplyScalar(1-e.dampingFactor)):(b.set(0,0,0),R.set(0,0,0));let K=!1;if(e.zoomToCursor&&A){let V=null;if(e.object instanceof re&&e.object.isPerspectiveCamera){const W=t.length();V=oe(W*E);const Q=W-V;e.object.position.addScaledVector(Z,Q),e.object.updateMatrixWorld()}else if(e.object.isOrthographicCamera){const W=new O(P.x,P.y,0);W.unproject(e.object),e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/E)),e.object.updateProjectionMatrix(),K=!0;const Q=new O(P.x,P.y,0);Q.unproject(e.object),e.object.position.sub(Q).add(W),e.object.updateMatrixWorld(),V=t.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),e.zoomToCursor=!1;V!==null&&(e.screenSpacePanning?e.target.set(0,0,-1).transformDirection(e.object.matrix).multiplyScalar(V).add(e.object.position):($.origin.copy(e.object.position),$.direction.set(0,0,-1).transformDirection(e.object.matrix),Math.abs(e.object.up.dot($.direction))<nt?i.lookAt(e.target):(je.setFromNormalAndCoplanarPoint(e.object.up,e.target),$.intersectPlane(je,e.target))))}else e.object instanceof se&&e.object.isOrthographicCamera&&(K=E!==1,K&&(e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/E)),e.object.updateProjectionMatrix()));return E=1,A=!1,K||f.distanceToSquared(e.object.position)>B||8*(1-x.dot(e.object.quaternion))>B?(e.dispatchEvent(y),f.copy(e.object.position),x.copy(e.object.quaternion),K=!1,!0):!1}})(),this.connect=t=>{e.domElement=t,e.domElement.style.touchAction="none",e.domElement.addEventListener("contextmenu",Te),e.domElement.addEventListener("pointerdown",Pe),e.domElement.addEventListener("pointercancel",X),e.domElement.addEventListener("wheel",Oe)},this.dispose=()=>{var t,o,a,r,f,x;e.domElement&&(e.domElement.style.touchAction="auto"),(t=e.domElement)==null||t.removeEventListener("contextmenu",Te),(o=e.domElement)==null||o.removeEventListener("pointerdown",Pe),(a=e.domElement)==null||a.removeEventListener("pointercancel",X),(r=e.domElement)==null||r.removeEventListener("wheel",Oe),(f=e.domElement)==null||f.ownerDocument.removeEventListener("pointermove",ne),(x=e.domElement)==null||x.ownerDocument.removeEventListener("pointerup",X),e._domElementKeyEvents!==null&&e._domElementKeyEvents.removeEventListener("keydown",ae)};const e=this,y={type:"change"},g={type:"start"},N={type:"end"},s={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let u=s.NONE;const B=1e-6,d=new ve,b=new ve;let E=1;const R=new O,v=new T,w=new T,j=new T,L=new T,_=new T,D=new T,M=new T,p=new T,h=new T,Z=new O,P=new T;let A=!1;const l=[],q={};function De(){return 2*Math.PI/60/60*e.autoRotateSpeed}function H(){return Math.pow(.95,e.zoomSpeed)}function J(t){e.reverseOrbit||e.reverseHorizontalOrbit?b.theta+=t:b.theta-=t}function le(t){e.reverseOrbit||e.reverseVerticalOrbit?b.phi+=t:b.phi-=t}const ce=(()=>{const t=new O;return function(a,r){t.setFromMatrixColumn(r,0),t.multiplyScalar(-a),R.add(t)}})(),ue=(()=>{const t=new O;return function(a,r){e.screenSpacePanning===!0?t.setFromMatrixColumn(r,1):(t.setFromMatrixColumn(r,0),t.crossVectors(e.object.up,t)),t.multiplyScalar(a),R.add(t)}})(),F=(()=>{const t=new O;return function(a,r){const f=e.domElement;if(f&&e.object instanceof re&&e.object.isPerspectiveCamera){const x=e.object.position;t.copy(x).sub(e.target);let C=t.length();C*=Math.tan(e.object.fov/2*Math.PI/180),ce(2*a*C/f.clientHeight,e.object.matrix),ue(2*r*C/f.clientHeight,e.object.matrix)}else f&&e.object instanceof se&&e.object.isOrthographicCamera?(ce(a*(e.object.right-e.object.left)/e.object.zoom/f.clientWidth,e.object.matrix),ue(r*(e.object.top-e.object.bottom)/e.object.zoom/f.clientHeight,e.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1)}})();function ee(t){e.object instanceof re&&e.object.isPerspectiveCamera||e.object instanceof se&&e.object.isOrthographicCamera?E=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function G(t){ee(E/t)}function te(t){ee(E*t)}function he(t){if(!e.zoomToCursor||!e.domElement)return;A=!0;const o=e.domElement.getBoundingClientRect(),a=t.clientX-o.left,r=t.clientY-o.top,f=o.width,x=o.height;P.x=a/f*2-1,P.y=-(r/x)*2+1,Z.set(P.x,P.y,1).unproject(e.object).sub(e.object.position).normalize()}function oe(t){return Math.max(e.minDistance,Math.min(e.maxDistance,t))}function de(t){v.set(t.clientX,t.clientY)}function xe(t){he(t),M.set(t.clientX,t.clientY)}function pe(t){L.set(t.clientX,t.clientY)}function Se(t){w.set(t.clientX,t.clientY),j.subVectors(w,v).multiplyScalar(e.rotateSpeed);const o=e.domElement;o&&(J(2*Math.PI*j.x/o.clientHeight),le(2*Math.PI*j.y/o.clientHeight)),v.copy(w),e.update()}function Ie(t){p.set(t.clientX,t.clientY),h.subVectors(p,M),h.y>0?G(H()):h.y<0&&te(H()),M.copy(p),e.update()}function Ne(t){_.set(t.clientX,t.clientY),D.subVectors(_,L).multiplyScalar(e.panSpeed),F(D.x,D.y),L.copy(_),e.update()}function Re(t){he(t),t.deltaY<0?te(H()):t.deltaY>0&&G(H()),e.update()}function Ce(t){let o=!1;switch(t.code){case e.keys.UP:F(0,e.keyPanSpeed),o=!0;break;case e.keys.BOTTOM:F(0,-e.keyPanSpeed),o=!0;break;case e.keys.LEFT:F(e.keyPanSpeed,0),o=!0;break;case e.keys.RIGHT:F(-e.keyPanSpeed,0),o=!0;break}o&&(t.preventDefault(),e.update())}function me(){if(l.length==1)v.set(l[0].pageX,l[0].pageY);else{const t=.5*(l[0].pageX+l[1].pageX),o=.5*(l[0].pageY+l[1].pageY);v.set(t,o)}}function fe(){if(l.length==1)L.set(l[0].pageX,l[0].pageY);else{const t=.5*(l[0].pageX+l[1].pageX),o=.5*(l[0].pageY+l[1].pageY);L.set(t,o)}}function be(){const t=l[0].pageX-l[1].pageX,o=l[0].pageY-l[1].pageY,a=Math.sqrt(t*t+o*o);M.set(0,a)}function Ye(){e.enableZoom&&be(),e.enablePan&&fe()}function ze(){e.enableZoom&&be(),e.enableRotate&&me()}function ge(t){if(l.length==1)w.set(t.pageX,t.pageY);else{const a=ie(t),r=.5*(t.pageX+a.x),f=.5*(t.pageY+a.y);w.set(r,f)}j.subVectors(w,v).multiplyScalar(e.rotateSpeed);const o=e.domElement;o&&(J(2*Math.PI*j.x/o.clientHeight),le(2*Math.PI*j.y/o.clientHeight)),v.copy(w)}function Ee(t){if(l.length==1)_.set(t.pageX,t.pageY);else{const o=ie(t),a=.5*(t.pageX+o.x),r=.5*(t.pageY+o.y);_.set(a,r)}D.subVectors(_,L).multiplyScalar(e.panSpeed),F(D.x,D.y),L.copy(_)}function ye(t){const o=ie(t),a=t.pageX-o.x,r=t.pageY-o.y,f=Math.sqrt(a*a+r*r);p.set(0,f),h.set(0,Math.pow(p.y/M.y,e.zoomSpeed)),G(h.y),M.copy(p)}function ke(t){e.enableZoom&&ye(t),e.enablePan&&Ee(t)}function He(t){e.enableZoom&&ye(t),e.enableRotate&&ge(t)}function Pe(t){var o,a;e.enabled!==!1&&(l.length===0&&((o=e.domElement)==null||o.ownerDocument.addEventListener("pointermove",ne),(a=e.domElement)==null||a.ownerDocument.addEventListener("pointerup",X)),Ke(t),t.pointerType==="touch"?Ze(t):Fe(t))}function ne(t){e.enabled!==!1&&(t.pointerType==="touch"?Xe(t):Ue(t))}function X(t){var o,a,r;Ve(t),l.length===0&&((o=e.domElement)==null||o.releasePointerCapture(t.pointerId),(a=e.domElement)==null||a.ownerDocument.removeEventListener("pointermove",ne),(r=e.domElement)==null||r.ownerDocument.removeEventListener("pointerup",X)),e.dispatchEvent(N),u=s.NONE}function Fe(t){let o;switch(t.button){case 0:o=e.mouseButtons.LEFT;break;case 1:o=e.mouseButtons.MIDDLE;break;case 2:o=e.mouseButtons.RIGHT;break;default:o=-1}switch(o){case z.DOLLY:if(e.enableZoom===!1)return;xe(t),u=s.DOLLY;break;case z.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(e.enablePan===!1)return;pe(t),u=s.PAN}else{if(e.enableRotate===!1)return;de(t),u=s.ROTATE}break;case z.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(e.enableRotate===!1)return;de(t),u=s.ROTATE}else{if(e.enablePan===!1)return;pe(t),u=s.PAN}break;default:u=s.NONE}u!==s.NONE&&e.dispatchEvent(g)}function Ue(t){if(e.enabled!==!1)switch(u){case s.ROTATE:if(e.enableRotate===!1)return;Se(t);break;case s.DOLLY:if(e.enableZoom===!1)return;Ie(t);break;case s.PAN:if(e.enablePan===!1)return;Ne(t);break}}function Oe(t){e.enabled===!1||e.enableZoom===!1||u!==s.NONE&&u!==s.ROTATE||(t.preventDefault(),e.dispatchEvent(g),Re(t),e.dispatchEvent(N))}function ae(t){e.enabled===!1||e.enablePan===!1||Ce(t)}function Ze(t){switch(Me(t),l.length){case 1:switch(e.touches.ONE){case k.ROTATE:if(e.enableRotate===!1)return;me(),u=s.TOUCH_ROTATE;break;case k.PAN:if(e.enablePan===!1)return;fe(),u=s.TOUCH_PAN;break;default:u=s.NONE}break;case 2:switch(e.touches.TWO){case k.DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;Ye(),u=s.TOUCH_DOLLY_PAN;break;case k.DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;ze(),u=s.TOUCH_DOLLY_ROTATE;break;default:u=s.NONE}break;default:u=s.NONE}u!==s.NONE&&e.dispatchEvent(g)}function Xe(t){switch(Me(t),u){case s.TOUCH_ROTATE:if(e.enableRotate===!1)return;ge(t),e.update();break;case s.TOUCH_PAN:if(e.enablePan===!1)return;Ee(t),e.update();break;case s.TOUCH_DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;ke(t),e.update();break;case s.TOUCH_DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;He(t),e.update();break;default:u=s.NONE}}function Te(t){e.enabled!==!1&&t.preventDefault()}function Ke(t){l.push(t)}function Ve(t){delete q[t.pointerId];for(let o=0;o<l.length;o++)if(l[o].pointerId==t.pointerId){l.splice(o,1);return}}function Me(t){let o=q[t.pointerId];o===void 0&&(o=new T,q[t.pointerId]=o),o.set(t.pageX,t.pageY)}function ie(t){const o=t.pointerId===l[0].pointerId?l[1]:l[0];return q[o.pointerId]}this.dollyIn=(t=H())=>{te(t),e.update()},this.dollyOut=(t=H())=>{G(t),e.update()},this.getScale=()=>E,this.setScale=t=>{ee(t),e.update()},this.getZoomScale=()=>H(),c!==void 0&&this.connect(c),this.update()}};class ht extends _e{constructor(i,c){super(i,c),this.screenSpacePanning=!1,this.mouseButtons.LEFT=z.PAN,this.mouseButtons.RIGHT=z.ROTATE,this.touches.ONE=k.PAN,this.touches.TWO=k.DOLLY_ROTATE}}const at=U.forwardRef(({makeDefault:m,camera:i,regress:c,domElement:e,enableDamping:y=!0,keyEvents:g=!1,onChange:N,onStart:s,onEnd:u,...B},d)=>{const b=Y(h=>h.invalidate),E=Y(h=>h.camera),R=Y(h=>h.gl),v=Y(h=>h.events),w=Y(h=>h.setEvents),j=Y(h=>h.set),L=Y(h=>h.get),_=Y(h=>h.performance),D=i||E,M=e||v.connected||R.domElement,p=U.useMemo(()=>new _e(D),[D]);return Ge(()=>{p.enabled&&p.update()},-1),U.useEffect(()=>(g&&p.connect(g===!0?M:g),p.connect(M),()=>void p.dispose()),[g,M,c,p,b]),U.useEffect(()=>{const h=A=>{b(),c&&_.regress(),N&&N(A)},Z=A=>{s&&s(A)},P=A=>{u&&u(A)};return p.addEventListener("change",h),p.addEventListener("start",Z),p.addEventListener("end",P),()=>{p.removeEventListener("start",Z),p.removeEventListener("end",P),p.removeEventListener("change",h)}},[N,s,u,p,b,w]),U.useEffect(()=>{if(m){const h=L().controls;return j({controls:p}),()=>j({controls:h})}},[m,p]),U.createElement("primitive",We({ref:d,object:p,enableDamping:y},B))}),dt=Object.freeze(Object.defineProperty({__proto__:null,OrbitControls:at},Symbol.toStringTag,{value:"Module"}));export{et as E,ht as M,at as O,dt as a};
1
+ import{_ as We}from"./extends-CF3RwP-h.js";import{r as U}from"./index-nmcBqr7Y.js";import{V as O,k as z,l as k,m as ve,Q as we,an as se,g as T,u as re,R as Be,n as Ge}from"./three.module-IFn-4i31.js";import{u as Y,d as qe}from"./events-156d8d12.esm-C734MYnx.js";var Qe=Object.defineProperty,$e=(m,i,c)=>i in m?Qe(m,i,{enumerable:!0,configurable:!0,writable:!0,value:c}):m[i]=c,Je=(m,i,c)=>($e(m,i+"",c),c);class et{constructor(){Je(this,"_listeners")}addEventListener(i,c){this._listeners===void 0&&(this._listeners={});const e=this._listeners;e[i]===void 0&&(e[i]=[]),e[i].indexOf(c)===-1&&e[i].push(c)}hasEventListener(i,c){if(this._listeners===void 0)return!1;const e=this._listeners;return e[i]!==void 0&&e[i].indexOf(c)!==-1}removeEventListener(i,c){if(this._listeners===void 0)return;const y=this._listeners[i];if(y!==void 0){const g=y.indexOf(c);g!==-1&&y.splice(g,1)}}dispatchEvent(i){if(this._listeners===void 0)return;const e=this._listeners[i.type];if(e!==void 0){i.target=this;const y=e.slice(0);for(let g=0,N=y.length;g<N;g++)y[g].call(this,i);i.target=null}}}var tt=Object.defineProperty,ot=(m,i,c)=>i in m?tt(m,i,{enumerable:!0,configurable:!0,writable:!0,value:c}):m[i]=c,n=(m,i,c)=>(ot(m,typeof i!="symbol"?i+"":i,c),c);const $=new Be,je=new Ge,nt=Math.cos(70*(Math.PI/180)),Le=(m,i)=>(m%i+i)%i;let _e=class extends et{constructor(i,c){super(),n(this,"object"),n(this,"domElement"),n(this,"enabled",!0),n(this,"target",new O),n(this,"minDistance",0),n(this,"maxDistance",1/0),n(this,"minZoom",0),n(this,"maxZoom",1/0),n(this,"minPolarAngle",0),n(this,"maxPolarAngle",Math.PI),n(this,"minAzimuthAngle",-1/0),n(this,"maxAzimuthAngle",1/0),n(this,"enableDamping",!1),n(this,"dampingFactor",.05),n(this,"enableZoom",!0),n(this,"zoomSpeed",1),n(this,"enableRotate",!0),n(this,"rotateSpeed",1),n(this,"enablePan",!0),n(this,"panSpeed",1),n(this,"screenSpacePanning",!0),n(this,"keyPanSpeed",7),n(this,"zoomToCursor",!1),n(this,"autoRotate",!1),n(this,"autoRotateSpeed",2),n(this,"reverseOrbit",!1),n(this,"reverseHorizontalOrbit",!1),n(this,"reverseVerticalOrbit",!1),n(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),n(this,"mouseButtons",{LEFT:z.ROTATE,MIDDLE:z.DOLLY,RIGHT:z.PAN}),n(this,"touches",{ONE:k.ROTATE,TWO:k.DOLLY_PAN}),n(this,"target0"),n(this,"position0"),n(this,"zoom0"),n(this,"_domElementKeyEvents",null),n(this,"getPolarAngle"),n(this,"getAzimuthalAngle"),n(this,"setPolarAngle"),n(this,"setAzimuthalAngle"),n(this,"getDistance"),n(this,"getZoomScale"),n(this,"listenToKeyEvents"),n(this,"stopListenToKeyEvents"),n(this,"saveState"),n(this,"reset"),n(this,"update"),n(this,"connect"),n(this,"dispose"),n(this,"dollyIn"),n(this,"dollyOut"),n(this,"getScale"),n(this,"setScale"),this.object=i,this.domElement=c,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>d.phi,this.getAzimuthalAngle=()=>d.theta,this.setPolarAngle=t=>{let o=Le(t,2*Math.PI),a=d.phi;a<0&&(a+=2*Math.PI),o<0&&(o+=2*Math.PI);let r=Math.abs(o-a);2*Math.PI-r<r&&(o<a?o+=2*Math.PI:a+=2*Math.PI),b.phi=o-a,e.update()},this.setAzimuthalAngle=t=>{let o=Le(t,2*Math.PI),a=d.theta;a<0&&(a+=2*Math.PI),o<0&&(o+=2*Math.PI);let r=Math.abs(o-a);2*Math.PI-r<r&&(o<a?o+=2*Math.PI:a+=2*Math.PI),b.theta=o-a,e.update()},this.getDistance=()=>e.object.position.distanceTo(e.target),this.listenToKeyEvents=t=>{t.addEventListener("keydown",ae),this._domElementKeyEvents=t},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",ae),this._domElementKeyEvents=null},this.saveState=()=>{e.target0.copy(e.target),e.position0.copy(e.object.position),e.zoom0=e.object.zoom},this.reset=()=>{e.target.copy(e.target0),e.object.position.copy(e.position0),e.object.zoom=e.zoom0,e.object.updateProjectionMatrix(),e.dispatchEvent(y),e.update(),u=s.NONE},this.update=(()=>{const t=new O,o=new O(0,1,0),a=new we().setFromUnitVectors(i.up,o),r=a.clone().invert(),f=new O,x=new we,C=2*Math.PI;return function(){const Ae=e.object.position;a.setFromUnitVectors(i.up,o),r.copy(a).invert(),t.copy(Ae).sub(e.target),t.applyQuaternion(a),d.setFromVector3(t),e.autoRotate&&u===s.NONE&&J(De()),e.enableDamping?(d.theta+=b.theta*e.dampingFactor,d.phi+=b.phi*e.dampingFactor):(d.theta+=b.theta,d.phi+=b.phi);let S=e.minAzimuthAngle,I=e.maxAzimuthAngle;isFinite(S)&&isFinite(I)&&(S<-Math.PI?S+=C:S>Math.PI&&(S-=C),I<-Math.PI?I+=C:I>Math.PI&&(I-=C),S<=I?d.theta=Math.max(S,Math.min(I,d.theta)):d.theta=d.theta>(S+I)/2?Math.max(S,d.theta):Math.min(I,d.theta)),d.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,d.phi)),d.makeSafe(),e.enableDamping===!0?e.target.addScaledVector(R,e.dampingFactor):e.target.add(R),e.zoomToCursor&&A||e.object.isOrthographicCamera?d.radius=oe(d.radius):d.radius=oe(d.radius*E),t.setFromSpherical(d),t.applyQuaternion(r),Ae.copy(e.target).add(t),e.object.matrixAutoUpdate||e.object.updateMatrix(),e.object.lookAt(e.target),e.enableDamping===!0?(b.theta*=1-e.dampingFactor,b.phi*=1-e.dampingFactor,R.multiplyScalar(1-e.dampingFactor)):(b.set(0,0,0),R.set(0,0,0));let K=!1;if(e.zoomToCursor&&A){let V=null;if(e.object instanceof re&&e.object.isPerspectiveCamera){const W=t.length();V=oe(W*E);const Q=W-V;e.object.position.addScaledVector(Z,Q),e.object.updateMatrixWorld()}else if(e.object.isOrthographicCamera){const W=new O(P.x,P.y,0);W.unproject(e.object),e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/E)),e.object.updateProjectionMatrix(),K=!0;const Q=new O(P.x,P.y,0);Q.unproject(e.object),e.object.position.sub(Q).add(W),e.object.updateMatrixWorld(),V=t.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),e.zoomToCursor=!1;V!==null&&(e.screenSpacePanning?e.target.set(0,0,-1).transformDirection(e.object.matrix).multiplyScalar(V).add(e.object.position):($.origin.copy(e.object.position),$.direction.set(0,0,-1).transformDirection(e.object.matrix),Math.abs(e.object.up.dot($.direction))<nt?i.lookAt(e.target):(je.setFromNormalAndCoplanarPoint(e.object.up,e.target),$.intersectPlane(je,e.target))))}else e.object instanceof se&&e.object.isOrthographicCamera&&(K=E!==1,K&&(e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/E)),e.object.updateProjectionMatrix()));return E=1,A=!1,K||f.distanceToSquared(e.object.position)>B||8*(1-x.dot(e.object.quaternion))>B?(e.dispatchEvent(y),f.copy(e.object.position),x.copy(e.object.quaternion),K=!1,!0):!1}})(),this.connect=t=>{e.domElement=t,e.domElement.style.touchAction="none",e.domElement.addEventListener("contextmenu",Te),e.domElement.addEventListener("pointerdown",Pe),e.domElement.addEventListener("pointercancel",X),e.domElement.addEventListener("wheel",Oe)},this.dispose=()=>{var t,o,a,r,f,x;e.domElement&&(e.domElement.style.touchAction="auto"),(t=e.domElement)==null||t.removeEventListener("contextmenu",Te),(o=e.domElement)==null||o.removeEventListener("pointerdown",Pe),(a=e.domElement)==null||a.removeEventListener("pointercancel",X),(r=e.domElement)==null||r.removeEventListener("wheel",Oe),(f=e.domElement)==null||f.ownerDocument.removeEventListener("pointermove",ne),(x=e.domElement)==null||x.ownerDocument.removeEventListener("pointerup",X),e._domElementKeyEvents!==null&&e._domElementKeyEvents.removeEventListener("keydown",ae)};const e=this,y={type:"change"},g={type:"start"},N={type:"end"},s={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let u=s.NONE;const B=1e-6,d=new ve,b=new ve;let E=1;const R=new O,v=new T,w=new T,j=new T,L=new T,_=new T,D=new T,M=new T,p=new T,h=new T,Z=new O,P=new T;let A=!1;const l=[],G={};function De(){return 2*Math.PI/60/60*e.autoRotateSpeed}function H(){return Math.pow(.95,e.zoomSpeed)}function J(t){e.reverseOrbit||e.reverseHorizontalOrbit?b.theta+=t:b.theta-=t}function le(t){e.reverseOrbit||e.reverseVerticalOrbit?b.phi+=t:b.phi-=t}const ce=(()=>{const t=new O;return function(a,r){t.setFromMatrixColumn(r,0),t.multiplyScalar(-a),R.add(t)}})(),ue=(()=>{const t=new O;return function(a,r){e.screenSpacePanning===!0?t.setFromMatrixColumn(r,1):(t.setFromMatrixColumn(r,0),t.crossVectors(e.object.up,t)),t.multiplyScalar(a),R.add(t)}})(),F=(()=>{const t=new O;return function(a,r){const f=e.domElement;if(f&&e.object instanceof re&&e.object.isPerspectiveCamera){const x=e.object.position;t.copy(x).sub(e.target);let C=t.length();C*=Math.tan(e.object.fov/2*Math.PI/180),ce(2*a*C/f.clientHeight,e.object.matrix),ue(2*r*C/f.clientHeight,e.object.matrix)}else f&&e.object instanceof se&&e.object.isOrthographicCamera?(ce(a*(e.object.right-e.object.left)/e.object.zoom/f.clientWidth,e.object.matrix),ue(r*(e.object.top-e.object.bottom)/e.object.zoom/f.clientHeight,e.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1)}})();function ee(t){e.object instanceof re&&e.object.isPerspectiveCamera||e.object instanceof se&&e.object.isOrthographicCamera?E=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function q(t){ee(E/t)}function te(t){ee(E*t)}function he(t){if(!e.zoomToCursor||!e.domElement)return;A=!0;const o=e.domElement.getBoundingClientRect(),a=t.clientX-o.left,r=t.clientY-o.top,f=o.width,x=o.height;P.x=a/f*2-1,P.y=-(r/x)*2+1,Z.set(P.x,P.y,1).unproject(e.object).sub(e.object.position).normalize()}function oe(t){return Math.max(e.minDistance,Math.min(e.maxDistance,t))}function de(t){v.set(t.clientX,t.clientY)}function xe(t){he(t),M.set(t.clientX,t.clientY)}function pe(t){L.set(t.clientX,t.clientY)}function Se(t){w.set(t.clientX,t.clientY),j.subVectors(w,v).multiplyScalar(e.rotateSpeed);const o=e.domElement;o&&(J(2*Math.PI*j.x/o.clientHeight),le(2*Math.PI*j.y/o.clientHeight)),v.copy(w),e.update()}function Ie(t){p.set(t.clientX,t.clientY),h.subVectors(p,M),h.y>0?q(H()):h.y<0&&te(H()),M.copy(p),e.update()}function Ne(t){_.set(t.clientX,t.clientY),D.subVectors(_,L).multiplyScalar(e.panSpeed),F(D.x,D.y),L.copy(_),e.update()}function Re(t){he(t),t.deltaY<0?te(H()):t.deltaY>0&&q(H()),e.update()}function Ce(t){let o=!1;switch(t.code){case e.keys.UP:F(0,e.keyPanSpeed),o=!0;break;case e.keys.BOTTOM:F(0,-e.keyPanSpeed),o=!0;break;case e.keys.LEFT:F(e.keyPanSpeed,0),o=!0;break;case e.keys.RIGHT:F(-e.keyPanSpeed,0),o=!0;break}o&&(t.preventDefault(),e.update())}function me(){if(l.length==1)v.set(l[0].pageX,l[0].pageY);else{const t=.5*(l[0].pageX+l[1].pageX),o=.5*(l[0].pageY+l[1].pageY);v.set(t,o)}}function fe(){if(l.length==1)L.set(l[0].pageX,l[0].pageY);else{const t=.5*(l[0].pageX+l[1].pageX),o=.5*(l[0].pageY+l[1].pageY);L.set(t,o)}}function be(){const t=l[0].pageX-l[1].pageX,o=l[0].pageY-l[1].pageY,a=Math.sqrt(t*t+o*o);M.set(0,a)}function Ye(){e.enableZoom&&be(),e.enablePan&&fe()}function ze(){e.enableZoom&&be(),e.enableRotate&&me()}function ge(t){if(l.length==1)w.set(t.pageX,t.pageY);else{const a=ie(t),r=.5*(t.pageX+a.x),f=.5*(t.pageY+a.y);w.set(r,f)}j.subVectors(w,v).multiplyScalar(e.rotateSpeed);const o=e.domElement;o&&(J(2*Math.PI*j.x/o.clientHeight),le(2*Math.PI*j.y/o.clientHeight)),v.copy(w)}function Ee(t){if(l.length==1)_.set(t.pageX,t.pageY);else{const o=ie(t),a=.5*(t.pageX+o.x),r=.5*(t.pageY+o.y);_.set(a,r)}D.subVectors(_,L).multiplyScalar(e.panSpeed),F(D.x,D.y),L.copy(_)}function ye(t){const o=ie(t),a=t.pageX-o.x,r=t.pageY-o.y,f=Math.sqrt(a*a+r*r);p.set(0,f),h.set(0,Math.pow(p.y/M.y,e.zoomSpeed)),q(h.y),M.copy(p)}function ke(t){e.enableZoom&&ye(t),e.enablePan&&Ee(t)}function He(t){e.enableZoom&&ye(t),e.enableRotate&&ge(t)}function Pe(t){var o,a;e.enabled!==!1&&(l.length===0&&((o=e.domElement)==null||o.ownerDocument.addEventListener("pointermove",ne),(a=e.domElement)==null||a.ownerDocument.addEventListener("pointerup",X)),Ke(t),t.pointerType==="touch"?Ze(t):Fe(t))}function ne(t){e.enabled!==!1&&(t.pointerType==="touch"?Xe(t):Ue(t))}function X(t){var o,a,r;Ve(t),l.length===0&&((o=e.domElement)==null||o.releasePointerCapture(t.pointerId),(a=e.domElement)==null||a.ownerDocument.removeEventListener("pointermove",ne),(r=e.domElement)==null||r.ownerDocument.removeEventListener("pointerup",X)),e.dispatchEvent(N),u=s.NONE}function Fe(t){let o;switch(t.button){case 0:o=e.mouseButtons.LEFT;break;case 1:o=e.mouseButtons.MIDDLE;break;case 2:o=e.mouseButtons.RIGHT;break;default:o=-1}switch(o){case z.DOLLY:if(e.enableZoom===!1)return;xe(t),u=s.DOLLY;break;case z.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(e.enablePan===!1)return;pe(t),u=s.PAN}else{if(e.enableRotate===!1)return;de(t),u=s.ROTATE}break;case z.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(e.enableRotate===!1)return;de(t),u=s.ROTATE}else{if(e.enablePan===!1)return;pe(t),u=s.PAN}break;default:u=s.NONE}u!==s.NONE&&e.dispatchEvent(g)}function Ue(t){if(e.enabled!==!1)switch(u){case s.ROTATE:if(e.enableRotate===!1)return;Se(t);break;case s.DOLLY:if(e.enableZoom===!1)return;Ie(t);break;case s.PAN:if(e.enablePan===!1)return;Ne(t);break}}function Oe(t){e.enabled===!1||e.enableZoom===!1||u!==s.NONE&&u!==s.ROTATE||(t.preventDefault(),e.dispatchEvent(g),Re(t),e.dispatchEvent(N))}function ae(t){e.enabled===!1||e.enablePan===!1||Ce(t)}function Ze(t){switch(Me(t),l.length){case 1:switch(e.touches.ONE){case k.ROTATE:if(e.enableRotate===!1)return;me(),u=s.TOUCH_ROTATE;break;case k.PAN:if(e.enablePan===!1)return;fe(),u=s.TOUCH_PAN;break;default:u=s.NONE}break;case 2:switch(e.touches.TWO){case k.DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;Ye(),u=s.TOUCH_DOLLY_PAN;break;case k.DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;ze(),u=s.TOUCH_DOLLY_ROTATE;break;default:u=s.NONE}break;default:u=s.NONE}u!==s.NONE&&e.dispatchEvent(g)}function Xe(t){switch(Me(t),u){case s.TOUCH_ROTATE:if(e.enableRotate===!1)return;ge(t),e.update();break;case s.TOUCH_PAN:if(e.enablePan===!1)return;Ee(t),e.update();break;case s.TOUCH_DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;ke(t),e.update();break;case s.TOUCH_DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;He(t),e.update();break;default:u=s.NONE}}function Te(t){e.enabled!==!1&&t.preventDefault()}function Ke(t){l.push(t)}function Ve(t){delete G[t.pointerId];for(let o=0;o<l.length;o++)if(l[o].pointerId==t.pointerId){l.splice(o,1);return}}function Me(t){let o=G[t.pointerId];o===void 0&&(o=new T,G[t.pointerId]=o),o.set(t.pageX,t.pageY)}function ie(t){const o=t.pointerId===l[0].pointerId?l[1]:l[0];return G[o.pointerId]}this.dollyIn=(t=H())=>{te(t),e.update()},this.dollyOut=(t=H())=>{q(t),e.update()},this.getScale=()=>E,this.setScale=t=>{ee(t),e.update()},this.getZoomScale=()=>H(),c!==void 0&&this.connect(c),this.update()}};class ht extends _e{constructor(i,c){super(i,c),this.screenSpacePanning=!1,this.mouseButtons.LEFT=z.PAN,this.mouseButtons.RIGHT=z.ROTATE,this.touches.ONE=k.PAN,this.touches.TWO=k.DOLLY_ROTATE}}const at=U.forwardRef(({makeDefault:m,camera:i,regress:c,domElement:e,enableDamping:y=!0,keyEvents:g=!1,onChange:N,onStart:s,onEnd:u,...B},d)=>{const b=Y(h=>h.invalidate),E=Y(h=>h.camera),R=Y(h=>h.gl),v=Y(h=>h.events),w=Y(h=>h.setEvents),j=Y(h=>h.set),L=Y(h=>h.get),_=Y(h=>h.performance),D=i||E,M=e||v.connected||R.domElement,p=U.useMemo(()=>new _e(D),[D]);return qe(()=>{p.enabled&&p.update()},-1),U.useEffect(()=>(g&&p.connect(g===!0?M:g),p.connect(M),()=>void p.dispose()),[g,M,c,p,b]),U.useEffect(()=>{const h=A=>{b(),c&&_.regress(),N&&N(A)},Z=A=>{s&&s(A)},P=A=>{u&&u(A)};return p.addEventListener("change",h),p.addEventListener("start",Z),p.addEventListener("end",P),()=>{p.removeEventListener("start",Z),p.removeEventListener("end",P),p.removeEventListener("change",h)}},[N,s,u,p,b,w]),U.useEffect(()=>{if(m){const h=L().controls;return j({controls:p}),()=>j({controls:h})}},[m,p]),U.createElement("primitive",We({ref:d,object:p,enableDamping:y},B))}),dt=Object.freeze(Object.defineProperty({__proto__:null,OrbitControls:at},Symbol.toStringTag,{value:"Module"}));export{et as E,ht as M,at as O,dt as a};
@@ -1 +1 @@
1
- import{l as S,V as p,m as u,n as _,Q as E,o as P,g as c,p as w,q as O,r as R}from"./three.module-D396a9Mn.js";const D={type:"change"},b={type:"start"},M={type:"end"},f=new w,T=new O,j=Math.cos(70*R.DEG2RAD),n=new p,r=2*Math.PI,o={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},y=1e-6;class X extends S{constructor(t,e=null){super(t,e),this.state=o.NONE,this.target=new p,this.cursor=new p,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:u.ROTATE,MIDDLE:u.DOLLY,RIGHT:u.PAN},this.touches={ONE:_.ROTATE,TWO:_.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new p,this._lastQuaternion=new E,this._lastTargetPosition=new p,this._quat=new E().setFromUnitVectors(t.up,new p(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new P,this._sphericalDelta=new P,this._scale=1,this._panOffset=new p,this._rotateStart=new c,this._rotateEnd=new c,this._rotateDelta=new c,this._panStart=new c,this._panEnd=new c,this._panDelta=new c,this._dollyStart=new c,this._dollyEnd=new c,this._dollyDelta=new c,this._dollyDirection=new p,this._mouse=new c,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=L.bind(this),this._onPointerDown=A.bind(this),this._onPointerUp=k.bind(this),this._onContextMenu=Z.bind(this),this._onMouseWheel=N.bind(this),this._onKeyDown=Y.bind(this),this._onTouchStart=I.bind(this),this._onTouchMove=U.bind(this),this._onMouseDown=x.bind(this),this._onMouseMove=C.bind(this),this._interceptControlDown=z.bind(this),this._interceptControlUp=K.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(D),this.update(),this.state=o.NONE}update(t=null){const e=this.object.position;n.copy(e).sub(this.target),n.applyQuaternion(this._quat),this._spherical.setFromVector3(n),this.autoRotate&&this.state===o.NONE&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let s=this.minAzimuthAngle,a=this.maxAzimuthAngle;isFinite(s)&&isFinite(a)&&(s<-Math.PI?s+=r:s>Math.PI&&(s-=r),a<-Math.PI?a+=r:a>Math.PI&&(a-=r),s<=a?this._spherical.theta=Math.max(s,Math.min(a,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(s+a)/2?Math.max(s,this._spherical.theta):Math.min(a,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let h=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const l=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),h=l!=this._spherical.radius}if(n.setFromSpherical(this._spherical),n.applyQuaternion(this._quatInverse),e.copy(this.target).add(n),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let l=null;if(this.object.isPerspectiveCamera){const d=n.length();l=this._clampDistance(d*this._scale);const m=d-l;this.object.position.addScaledVector(this._dollyDirection,m),this.object.updateMatrixWorld(),h=!!m}else if(this.object.isOrthographicCamera){const d=new p(this._mouse.x,this._mouse.y,0);d.unproject(this.object);const m=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),h=m!==this.object.zoom;const g=new p(this._mouse.x,this._mouse.y,0);g.unproject(this.object),this.object.position.sub(g).add(d),this.object.updateMatrixWorld(),l=n.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;l!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(l).add(this.object.position):(f.origin.copy(this.object.position),f.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(f.direction))<j?this.object.lookAt(this.target):(T.setFromNormalAndCoplanarPoint(this.object.up,this.target),f.intersectPlane(T,this.target))))}else if(this.object.isOrthographicCamera){const l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),l!==this.object.zoom&&(this.object.updateProjectionMatrix(),h=!0)}return this._scale=1,this._performCursorZoom=!1,h||this._lastPosition.distanceToSquared(this.object.position)>y||8*(1-this._lastQuaternion.dot(this.object.quaternion))>y||this._lastTargetPosition.distanceToSquared(this.target)>y?(this.dispatchEvent(D),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(t){return t!==null?r/60*this.autoRotateSpeed*t:r/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(t*.01);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){n.setFromMatrixColumn(e,0),n.multiplyScalar(-t),this._panOffset.add(n)}_panUp(t,e){this.screenSpacePanning===!0?n.setFromMatrixColumn(e,1):(n.setFromMatrixColumn(e,0),n.crossVectors(this.object.up,n)),n.multiplyScalar(t),this._panOffset.add(n)}_pan(t,e){const s=this.domElement;if(this.object.isPerspectiveCamera){const a=this.object.position;n.copy(a).sub(this.target);let h=n.length();h*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*h/s.clientHeight,this.object.matrix),this._panUp(2*e*h/s.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/s.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/s.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const s=this.domElement.getBoundingClientRect(),a=t-s.left,h=e-s.top,l=s.width,d=s.height;this._mouse.x=a/l*2-1,this._mouse.y=-(h/d)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(r*this._rotateDelta.x/e.clientHeight),this._rotateUp(r*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0;break}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(this._pointers.length===1)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),s=.5*(t.pageX+e.x),a=.5*(t.pageY+e.y);this._rotateStart.set(s,a)}}_handleTouchStartPan(t){if(this._pointers.length===1)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),s=.5*(t.pageX+e.x),a=.5*(t.pageY+e.y);this._panStart.set(s,a)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),s=t.pageX-e.x,a=t.pageY-e.y,h=Math.sqrt(s*s+a*a);this._dollyStart.set(0,h)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(this._pointers.length==1)this._rotateEnd.set(t.pageX,t.pageY);else{const s=this._getSecondPointerPosition(t),a=.5*(t.pageX+s.x),h=.5*(t.pageY+s.y);this._rotateEnd.set(a,h)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(r*this._rotateDelta.x/e.clientHeight),this._rotateUp(r*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(this._pointers.length===1)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),s=.5*(t.pageX+e.x),a=.5*(t.pageY+e.y);this._panEnd.set(s,a)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),s=t.pageX-e.x,a=t.pageY-e.y,h=Math.sqrt(s*s+a*a);this._dollyEnd.set(0,h),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const l=(t.pageX+e.x)*.5,d=(t.pageY+e.y)*.5;this._updateZoomParameters(l,d)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId){this._pointers.splice(e,1);return}}_isTrackingPointer(t){for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return!0;return!1}_trackPointer(t){let e=this._pointerPositions[t.pointerId];e===void 0&&(e=new c,this._pointerPositions[t.pointerId]=e),e.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[e]}_customWheelEvent(t){const e=t.deltaMode,s={clientX:t.clientX,clientY:t.clientY,deltaY:t.deltaY};switch(e){case 1:s.deltaY*=16;break;case 2:s.deltaY*=100;break}return t.ctrlKey&&!this._controlActive&&(s.deltaY*=10),s}}function A(i){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(i.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(i)&&(this._addPointer(i),i.pointerType==="touch"?this._onTouchStart(i):this._onMouseDown(i)))}function L(i){this.enabled!==!1&&(i.pointerType==="touch"?this._onTouchMove(i):this._onMouseMove(i))}function k(i){switch(this._removePointer(i),this._pointers.length){case 0:this.domElement.releasePointerCapture(i.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(M),this.state=o.NONE;break;case 1:const t=this._pointers[0],e=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:e.x,pageY:e.y});break}}function x(i){let t;switch(i.button){case 0:t=this.mouseButtons.LEFT;break;case 1:t=this.mouseButtons.MIDDLE;break;case 2:t=this.mouseButtons.RIGHT;break;default:t=-1}switch(t){case u.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(i),this.state=o.DOLLY;break;case u.ROTATE:if(i.ctrlKey||i.metaKey||i.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(i),this.state=o.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(i),this.state=o.ROTATE}break;case u.PAN:if(i.ctrlKey||i.metaKey||i.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(i),this.state=o.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(i),this.state=o.PAN}break;default:this.state=o.NONE}this.state!==o.NONE&&this.dispatchEvent(b)}function C(i){switch(this.state){case o.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(i);break;case o.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(i);break;case o.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(i);break}}function N(i){this.enabled===!1||this.enableZoom===!1||this.state!==o.NONE||(i.preventDefault(),this.dispatchEvent(b),this._handleMouseWheel(this._customWheelEvent(i)),this.dispatchEvent(M))}function Y(i){this.enabled!==!1&&this._handleKeyDown(i)}function I(i){switch(this._trackPointer(i),this._pointers.length){case 1:switch(this.touches.ONE){case _.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(i),this.state=o.TOUCH_ROTATE;break;case _.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(i),this.state=o.TOUCH_PAN;break;default:this.state=o.NONE}break;case 2:switch(this.touches.TWO){case _.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(i),this.state=o.TOUCH_DOLLY_PAN;break;case _.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(i),this.state=o.TOUCH_DOLLY_ROTATE;break;default:this.state=o.NONE}break;default:this.state=o.NONE}this.state!==o.NONE&&this.dispatchEvent(b)}function U(i){switch(this._trackPointer(i),this.state){case o.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(i),this.update();break;case o.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(i),this.update();break;case o.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(i),this.update();break;case o.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(i),this.update();break;default:this.state=o.NONE}}function Z(i){this.enabled!==!1&&i.preventDefault()}function z(i){i.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function K(i){i.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}export{X as OrbitControls};
1
+ import{C as S,V as p,k as u,l as _,Q as E,m as P,g as c,R as w,n as O,o as R}from"./three.module-IFn-4i31.js";const D={type:"change"},b={type:"start"},M={type:"end"},f=new w,T=new O,j=Math.cos(70*R.DEG2RAD),n=new p,r=2*Math.PI,o={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},y=1e-6;class X extends S{constructor(t,e=null){super(t,e),this.state=o.NONE,this.target=new p,this.cursor=new p,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:u.ROTATE,MIDDLE:u.DOLLY,RIGHT:u.PAN},this.touches={ONE:_.ROTATE,TWO:_.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new p,this._lastQuaternion=new E,this._lastTargetPosition=new p,this._quat=new E().setFromUnitVectors(t.up,new p(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new P,this._sphericalDelta=new P,this._scale=1,this._panOffset=new p,this._rotateStart=new c,this._rotateEnd=new c,this._rotateDelta=new c,this._panStart=new c,this._panEnd=new c,this._panDelta=new c,this._dollyStart=new c,this._dollyEnd=new c,this._dollyDelta=new c,this._dollyDirection=new p,this._mouse=new c,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=L.bind(this),this._onPointerDown=A.bind(this),this._onPointerUp=k.bind(this),this._onContextMenu=Z.bind(this),this._onMouseWheel=N.bind(this),this._onKeyDown=Y.bind(this),this._onTouchStart=I.bind(this),this._onTouchMove=U.bind(this),this._onMouseDown=x.bind(this),this._onMouseMove=C.bind(this),this._interceptControlDown=z.bind(this),this._interceptControlUp=K.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(D),this.update(),this.state=o.NONE}update(t=null){const e=this.object.position;n.copy(e).sub(this.target),n.applyQuaternion(this._quat),this._spherical.setFromVector3(n),this.autoRotate&&this.state===o.NONE&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let s=this.minAzimuthAngle,a=this.maxAzimuthAngle;isFinite(s)&&isFinite(a)&&(s<-Math.PI?s+=r:s>Math.PI&&(s-=r),a<-Math.PI?a+=r:a>Math.PI&&(a-=r),s<=a?this._spherical.theta=Math.max(s,Math.min(a,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(s+a)/2?Math.max(s,this._spherical.theta):Math.min(a,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let h=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const l=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),h=l!=this._spherical.radius}if(n.setFromSpherical(this._spherical),n.applyQuaternion(this._quatInverse),e.copy(this.target).add(n),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let l=null;if(this.object.isPerspectiveCamera){const d=n.length();l=this._clampDistance(d*this._scale);const m=d-l;this.object.position.addScaledVector(this._dollyDirection,m),this.object.updateMatrixWorld(),h=!!m}else if(this.object.isOrthographicCamera){const d=new p(this._mouse.x,this._mouse.y,0);d.unproject(this.object);const m=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),h=m!==this.object.zoom;const g=new p(this._mouse.x,this._mouse.y,0);g.unproject(this.object),this.object.position.sub(g).add(d),this.object.updateMatrixWorld(),l=n.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;l!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(l).add(this.object.position):(f.origin.copy(this.object.position),f.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(f.direction))<j?this.object.lookAt(this.target):(T.setFromNormalAndCoplanarPoint(this.object.up,this.target),f.intersectPlane(T,this.target))))}else if(this.object.isOrthographicCamera){const l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),l!==this.object.zoom&&(this.object.updateProjectionMatrix(),h=!0)}return this._scale=1,this._performCursorZoom=!1,h||this._lastPosition.distanceToSquared(this.object.position)>y||8*(1-this._lastQuaternion.dot(this.object.quaternion))>y||this._lastTargetPosition.distanceToSquared(this.target)>y?(this.dispatchEvent(D),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(t){return t!==null?r/60*this.autoRotateSpeed*t:r/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(t*.01);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){n.setFromMatrixColumn(e,0),n.multiplyScalar(-t),this._panOffset.add(n)}_panUp(t,e){this.screenSpacePanning===!0?n.setFromMatrixColumn(e,1):(n.setFromMatrixColumn(e,0),n.crossVectors(this.object.up,n)),n.multiplyScalar(t),this._panOffset.add(n)}_pan(t,e){const s=this.domElement;if(this.object.isPerspectiveCamera){const a=this.object.position;n.copy(a).sub(this.target);let h=n.length();h*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*h/s.clientHeight,this.object.matrix),this._panUp(2*e*h/s.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/s.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/s.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const s=this.domElement.getBoundingClientRect(),a=t-s.left,h=e-s.top,l=s.width,d=s.height;this._mouse.x=a/l*2-1,this._mouse.y=-(h/d)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(r*this._rotateDelta.x/e.clientHeight),this._rotateUp(r*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0;break}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(this._pointers.length===1)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),s=.5*(t.pageX+e.x),a=.5*(t.pageY+e.y);this._rotateStart.set(s,a)}}_handleTouchStartPan(t){if(this._pointers.length===1)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),s=.5*(t.pageX+e.x),a=.5*(t.pageY+e.y);this._panStart.set(s,a)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),s=t.pageX-e.x,a=t.pageY-e.y,h=Math.sqrt(s*s+a*a);this._dollyStart.set(0,h)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(this._pointers.length==1)this._rotateEnd.set(t.pageX,t.pageY);else{const s=this._getSecondPointerPosition(t),a=.5*(t.pageX+s.x),h=.5*(t.pageY+s.y);this._rotateEnd.set(a,h)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(r*this._rotateDelta.x/e.clientHeight),this._rotateUp(r*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(this._pointers.length===1)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),s=.5*(t.pageX+e.x),a=.5*(t.pageY+e.y);this._panEnd.set(s,a)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),s=t.pageX-e.x,a=t.pageY-e.y,h=Math.sqrt(s*s+a*a);this._dollyEnd.set(0,h),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const l=(t.pageX+e.x)*.5,d=(t.pageY+e.y)*.5;this._updateZoomParameters(l,d)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId){this._pointers.splice(e,1);return}}_isTrackingPointer(t){for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return!0;return!1}_trackPointer(t){let e=this._pointerPositions[t.pointerId];e===void 0&&(e=new c,this._pointerPositions[t.pointerId]=e),e.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[e]}_customWheelEvent(t){const e=t.deltaMode,s={clientX:t.clientX,clientY:t.clientY,deltaY:t.deltaY};switch(e){case 1:s.deltaY*=16;break;case 2:s.deltaY*=100;break}return t.ctrlKey&&!this._controlActive&&(s.deltaY*=10),s}}function A(i){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(i.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(i)&&(this._addPointer(i),i.pointerType==="touch"?this._onTouchStart(i):this._onMouseDown(i)))}function L(i){this.enabled!==!1&&(i.pointerType==="touch"?this._onTouchMove(i):this._onMouseMove(i))}function k(i){switch(this._removePointer(i),this._pointers.length){case 0:this.domElement.releasePointerCapture(i.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(M),this.state=o.NONE;break;case 1:const t=this._pointers[0],e=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:e.x,pageY:e.y});break}}function x(i){let t;switch(i.button){case 0:t=this.mouseButtons.LEFT;break;case 1:t=this.mouseButtons.MIDDLE;break;case 2:t=this.mouseButtons.RIGHT;break;default:t=-1}switch(t){case u.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(i),this.state=o.DOLLY;break;case u.ROTATE:if(i.ctrlKey||i.metaKey||i.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(i),this.state=o.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(i),this.state=o.ROTATE}break;case u.PAN:if(i.ctrlKey||i.metaKey||i.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(i),this.state=o.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(i),this.state=o.PAN}break;default:this.state=o.NONE}this.state!==o.NONE&&this.dispatchEvent(b)}function C(i){switch(this.state){case o.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(i);break;case o.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(i);break;case o.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(i);break}}function N(i){this.enabled===!1||this.enableZoom===!1||this.state!==o.NONE||(i.preventDefault(),this.dispatchEvent(b),this._handleMouseWheel(this._customWheelEvent(i)),this.dispatchEvent(M))}function Y(i){this.enabled!==!1&&this._handleKeyDown(i)}function I(i){switch(this._trackPointer(i),this._pointers.length){case 1:switch(this.touches.ONE){case _.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(i),this.state=o.TOUCH_ROTATE;break;case _.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(i),this.state=o.TOUCH_PAN;break;default:this.state=o.NONE}break;case 2:switch(this.touches.TWO){case _.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(i),this.state=o.TOUCH_DOLLY_PAN;break;case _.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(i),this.state=o.TOUCH_DOLLY_ROTATE;break;default:this.state=o.NONE}break;default:this.state=o.NONE}this.state!==o.NONE&&this.dispatchEvent(b)}function U(i){switch(this._trackPointer(i),this.state){case o.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(i),this.update();break;case o.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(i),this.update();break;case o.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(i),this.update();break;case o.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(i),this.update();break;default:this.state=o.NONE}}function Z(i){this.enabled!==!1&&i.preventDefault()}function z(i){i.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function K(i){i.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}export{X as OrbitControls};
@@ -1 +1 @@
1
- import{_ as R}from"./extends-CF3RwP-h.js";import{r}from"./index-nmcBqr7Y.js";import{u as x}from"./Fbo-Dz-Soul3.js";import{u as f,d as y}from"./events-156d8d12.esm-ErOhDXXB.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./three.module-D396a9Mn.js";import"./client-DNXj_opT.js";import"./index-CinJrH5C.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-bQE2NA0D.js";const F=o=>typeof o=="function",_=r.forwardRef(({envMap:o,resolution:h=256,frames:m=1/0,children:c,makeDefault:l,...u},E)=>{const i=f(({set:e})=>e),b=f(({camera:e})=>e),n=f(({size:e})=>e),t=r.useRef(null);r.useImperativeHandle(E,()=>t.current,[]);const a=r.useRef(null),p=x(h);r.useLayoutEffect(()=>{u.manual||t.current.updateProjectionMatrix()},[n,u]),r.useLayoutEffect(()=>{t.current.updateProjectionMatrix()}),r.useLayoutEffect(()=>{if(l){const e=b;return i(()=>({camera:t.current})),()=>i(()=>({camera:e}))}},[t,l,i]);let g=0,d=null;const s=F(c);return y(e=>{s&&(m===1/0||g<m)&&(a.current.visible=!1,e.gl.setRenderTarget(p),d=e.scene.background,o&&(e.scene.background=o),e.gl.render(e.scene,t.current),e.scene.background=d,e.gl.setRenderTarget(null),a.current.visible=!0,g++)}),r.createElement(r.Fragment,null,r.createElement("orthographicCamera",R({left:n.width/-2,right:n.width/2,top:n.height/2,bottom:n.height/-2,ref:t},u),!s&&c),r.createElement("group",{ref:a},s&&c(p.texture)))});export{_ as OrthographicCamera};
1
+ import{_ as R}from"./extends-CF3RwP-h.js";import{r}from"./index-nmcBqr7Y.js";import{u as x}from"./Fbo-DrK7CWlB.js";import{u as f,d as y}from"./events-156d8d12.esm-C734MYnx.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./three.module-IFn-4i31.js";import"./client-DNXj_opT.js";import"./index-CinJrH5C.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-bQE2NA0D.js";const F=o=>typeof o=="function",_=r.forwardRef(({envMap:o,resolution:h=256,frames:m=1/0,children:c,makeDefault:l,...u},E)=>{const i=f(({set:e})=>e),b=f(({camera:e})=>e),n=f(({size:e})=>e),t=r.useRef(null);r.useImperativeHandle(E,()=>t.current,[]);const a=r.useRef(null),p=x(h);r.useLayoutEffect(()=>{u.manual||t.current.updateProjectionMatrix()},[n,u]),r.useLayoutEffect(()=>{t.current.updateProjectionMatrix()}),r.useLayoutEffect(()=>{if(l){const e=b;return i(()=>({camera:t.current})),()=>i(()=>({camera:e}))}},[t,l,i]);let g=0,d=null;const s=F(c);return y(e=>{s&&(m===1/0||g<m)&&(a.current.visible=!1,e.gl.setRenderTarget(p),d=e.scene.background,o&&(e.scene.background=o),e.gl.render(e.scene,t.current),e.scene.background=d,e.gl.setRenderTarget(null),a.current.visible=!0,g++)}),r.createElement(r.Fragment,null,r.createElement("orthographicCamera",R({left:n.width/-2,right:n.width/2,top:n.height/2,bottom:n.height/-2,ref:t},u),!s&&c),r.createElement("group",{ref:a},s&&c(p.texture)))});export{_ as OrthographicCamera};
@@ -1,2 +1,2 @@
1
- import{ak as M,al as j,aB as V,aY as h,C as b,j as T}from"./three.module-D396a9Mn.js";const f=new b;class G extends M{constructor(u){super(u),this.propertyNameMapping={},this.customPropertyMapping={}}load(u,C,x,y){const R=this,d=new j(this.manager);d.setPath(this.path),d.setResponseType("arraybuffer"),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(u,function(B){try{C(R.parse(B))}catch(v){y?y(v):console.error(v),R.manager.itemError(u)}},x,y)}setPropertyNameMapping(u){this.propertyNameMapping=u}setCustomPropertyNameMapping(u){this.customPropertyMapping=u}parse(u){function C(e,n=0){const r=/^ply([\s\S]*)end_header(\r\n|\r|\n)/;let t="";const s=r.exec(e);s!==null&&(t=s[1]);const o={comments:[],elements:[],headerLength:n,objInfo:""},i=t.split(/\r\n|\r|\n/);let a;function m(c,p){const l={type:c[0]};return l.type==="list"?(l.name=c[3],l.countType=c[1],l.itemType=c[2]):l.name=c[1],l.name in p&&(l.name=p[l.name]),l}for(let c=0;c<i.length;c++){let p=i[c];if(p=p.trim(),p==="")continue;const l=p.split(/\s+/),N=l.shift();switch(p=l.join(" "),N){case"format":o.format=l[0],o.version=l[1];break;case"comment":o.comments.push(p);break;case"element":a!==void 0&&o.elements.push(a),a={},a.name=l[0],a.count=parseInt(l[1]),a.properties=[];break;case"property":a.properties.push(m(l,g.propertyNameMapping));break;case"obj_info":o.objInfo=p;break;default:console.log("unhandled",N,l)}}return a!==void 0&&o.elements.push(a),o}function x(e,n){switch(n){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(e);case"float":case"double":case"float32":case"float64":return parseFloat(e)}}function y(e,n){const r={};for(let t=0;t<e.length;t++){if(n.empty())return null;if(e[t].type==="list"){const s=[],o=x(n.next(),e[t].countType);for(let i=0;i<o;i++){if(n.empty())return null;s.push(x(n.next(),e[t].itemType))}r[e[t].name]=s}else r[e[t].name]=x(n.next(),e[t].type)}return r}function R(){const e={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[],faceVertexColors:[]};for(const n of Object.keys(g.customPropertyMapping))e[n]=[];return e}function d(e){const n=e.map(t=>t.name);function r(t){for(let s=0,o=t.length;s<o;s++){const i=t[s];if(n.includes(i))return i}return null}return{attrX:r(["x","px","posx"])||"x",attrY:r(["y","py","posy"])||"y",attrZ:r(["z","pz","posz"])||"z",attrNX:r(["nx","normalx"]),attrNY:r(["ny","normaly"]),attrNZ:r(["nz","normalz"]),attrS:r(["s","u","texture_u","tx"]),attrT:r(["t","v","texture_v","ty"]),attrR:r(["red","diffuse_red","r","diffuse_r"]),attrG:r(["green","diffuse_green","g","diffuse_g"]),attrB:r(["blue","diffuse_blue","b","diffuse_b"])}}function B(e,n){const r=R(),t=/end_header\s+(\S[\s\S]*\S|\S)\s*$/;let s,o;(o=t.exec(e))!==null?s=o[1].split(/\s+/):s=[];const i=new U(s);e:for(let a=0;a<n.elements.length;a++){const m=n.elements[a],c=d(m.properties);for(let p=0;p<m.count;p++){const l=y(m.properties,i);if(!l)break e;P(r,m.name,l,c)}}return v(r)}function v(e){let n=new V;e.indices.length>0&&n.setIndex(e.indices),n.setAttribute("position",new h(e.vertices,3)),e.normals.length>0&&n.setAttribute("normal",new h(e.normals,3)),e.uvs.length>0&&n.setAttribute("uv",new h(e.uvs,2)),e.colors.length>0&&n.setAttribute("color",new h(e.colors,3)),(e.faceVertexUvs.length>0||e.faceVertexColors.length>0)&&(n=n.toNonIndexed(),e.faceVertexUvs.length>0&&n.setAttribute("uv",new h(e.faceVertexUvs,2)),e.faceVertexColors.length>0&&n.setAttribute("color",new h(e.faceVertexColors,3)));for(const r of Object.keys(g.customPropertyMapping))e[r].length>0&&n.setAttribute(r,new h(e[r],g.customPropertyMapping[r].length));return n.computeBoundingSphere(),n}function P(e,n,r,t){if(n==="vertex"){e.vertices.push(r[t.attrX],r[t.attrY],r[t.attrZ]),t.attrNX!==null&&t.attrNY!==null&&t.attrNZ!==null&&e.normals.push(r[t.attrNX],r[t.attrNY],r[t.attrNZ]),t.attrS!==null&&t.attrT!==null&&e.uvs.push(r[t.attrS],r[t.attrT]),t.attrR!==null&&t.attrG!==null&&t.attrB!==null&&(f.setRGB(r[t.attrR]/255,r[t.attrG]/255,r[t.attrB]/255,T),e.colors.push(f.r,f.g,f.b));for(const s of Object.keys(g.customPropertyMapping))for(const o of g.customPropertyMapping[s])e[s].push(r[o])}else if(n==="face"){const s=r.vertex_indices||r.vertex_index,o=r.texcoord;s.length===3?(e.indices.push(s[0],s[1],s[2]),o&&o.length===6&&(e.faceVertexUvs.push(o[0],o[1]),e.faceVertexUvs.push(o[2],o[3]),e.faceVertexUvs.push(o[4],o[5]))):s.length===4&&(e.indices.push(s[0],s[1],s[3]),e.indices.push(s[1],s[2],s[3])),t.attrR!==null&&t.attrG!==null&&t.attrB!==null&&(f.setRGB(r[t.attrR]/255,r[t.attrG]/255,r[t.attrB]/255,T),e.faceVertexColors.push(f.r,f.g,f.b),e.faceVertexColors.push(f.r,f.g,f.b),e.faceVertexColors.push(f.r,f.g,f.b))}}function S(e,n){const r={};let t=0;for(let s=0;s<n.length;s++){const o=n[s],i=o.valueReader;if(o.type==="list"){const a=[],m=o.countReader.read(e+t);t+=o.countReader.size;for(let c=0;c<m;c++)a.push(i.read(e+t)),t+=i.size;r[o.name]=a}else r[o.name]=i.read(e+t),t+=i.size}return[r,t]}function I(e,n,r){function t(s,o,i){switch(o){case"int8":case"char":return{read:a=>s.getInt8(a),size:1};case"uint8":case"uchar":return{read:a=>s.getUint8(a),size:1};case"int16":case"short":return{read:a=>s.getInt16(a,i),size:2};case"uint16":case"ushort":return{read:a=>s.getUint16(a,i),size:2};case"int32":case"int":return{read:a=>s.getInt32(a,i),size:4};case"uint32":case"uint":return{read:a=>s.getUint32(a,i),size:4};case"float32":case"float":return{read:a=>s.getFloat32(a,i),size:4};case"float64":case"double":return{read:a=>s.getFloat64(a,i),size:8}}}for(let s=0,o=e.length;s<o;s++){const i=e[s];i.type==="list"?(i.countReader=t(n,i.countType,r),i.valueReader=t(n,i.itemType,r)):i.valueReader=t(n,i.type,r)}}function _(e,n){const r=R(),t=n.format==="binary_little_endian",s=new DataView(e,n.headerLength);let o,i=0;for(let a=0;a<n.elements.length;a++){const m=n.elements[a],c=m.properties,p=d(c);I(c,s,t);for(let l=0;l<m.count;l++){o=S(i,c),i+=o[1];const N=o[0];P(r,m.name,N,p)}}return v(r)}function w(e){let n=0,r=!0,t="";const s=[],o=new TextDecoder().decode(e.subarray(0,5)),i=/^ply\r\n/.test(o);do{const a=String.fromCharCode(e[n++]);a!==`
2
- `&&a!=="\r"?t+=a:(t==="end_header"&&(r=!1),t!==""&&(s.push(t),t=""))}while(r&&n<e.length);return i===!0&&n++,{headerText:s.join("\r")+"\r",headerLength:n}}let z;const g=this;if(u instanceof ArrayBuffer){const e=new Uint8Array(u),{headerText:n,headerLength:r}=w(e),t=C(n,r);if(t.format==="ascii"){const s=new TextDecoder().decode(e);z=B(s,t)}else z=_(u,t)}else z=B(u,C(u));return z}}class U{constructor(u){this.arr=u,this.i=0}empty(){return this.i>=this.arr.length}next(){return this.arr[this.i++]}}export{G as PLYLoader};
1
+ import{ae as M,af as V,ax as b,aV as h,v as j,r as T}from"./three.module-IFn-4i31.js";const f=new j;class G extends M{constructor(u){super(u),this.propertyNameMapping={},this.customPropertyMapping={}}load(u,C,x,y){const v=this,d=new V(this.manager);d.setPath(this.path),d.setResponseType("arraybuffer"),d.setRequestHeader(this.requestHeader),d.setWithCredentials(this.withCredentials),d.load(u,function(z){try{C(v.parse(z))}catch(R){y?y(R):console.error(R),v.manager.itemError(u)}},x,y)}setPropertyNameMapping(u){this.propertyNameMapping=u}setCustomPropertyNameMapping(u){this.customPropertyMapping=u}parse(u){function C(e,n=0){const r=/^ply([\s\S]*)end_header(\r\n|\r|\n)/;let t="";const s=r.exec(e);s!==null&&(t=s[1]);const o={comments:[],elements:[],headerLength:n,objInfo:""},i=t.split(/\r\n|\r|\n/);let a;function m(c,p){const l={type:c[0]};return l.type==="list"?(l.name=c[3],l.countType=c[1],l.itemType=c[2]):l.name=c[1],l.name in p&&(l.name=p[l.name]),l}for(let c=0;c<i.length;c++){let p=i[c];if(p=p.trim(),p==="")continue;const l=p.split(/\s+/),N=l.shift();switch(p=l.join(" "),N){case"format":o.format=l[0],o.version=l[1];break;case"comment":o.comments.push(p);break;case"element":a!==void 0&&o.elements.push(a),a={},a.name=l[0],a.count=parseInt(l[1]),a.properties=[];break;case"property":a.properties.push(m(l,g.propertyNameMapping));break;case"obj_info":o.objInfo=p;break;default:console.log("unhandled",N,l)}}return a!==void 0&&o.elements.push(a),o}function x(e,n){switch(n){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(e);case"float":case"double":case"float32":case"float64":return parseFloat(e)}}function y(e,n){const r={};for(let t=0;t<e.length;t++){if(n.empty())return null;if(e[t].type==="list"){const s=[],o=x(n.next(),e[t].countType);for(let i=0;i<o;i++){if(n.empty())return null;s.push(x(n.next(),e[t].itemType))}r[e[t].name]=s}else r[e[t].name]=x(n.next(),e[t].type)}return r}function v(){const e={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[],faceVertexColors:[]};for(const n of Object.keys(g.customPropertyMapping))e[n]=[];return e}function d(e){const n=e.map(t=>t.name);function r(t){for(let s=0,o=t.length;s<o;s++){const i=t[s];if(n.includes(i))return i}return null}return{attrX:r(["x","px","posx"])||"x",attrY:r(["y","py","posy"])||"y",attrZ:r(["z","pz","posz"])||"z",attrNX:r(["nx","normalx"]),attrNY:r(["ny","normaly"]),attrNZ:r(["nz","normalz"]),attrS:r(["s","u","texture_u","tx"]),attrT:r(["t","v","texture_v","ty"]),attrR:r(["red","diffuse_red","r","diffuse_r"]),attrG:r(["green","diffuse_green","g","diffuse_g"]),attrB:r(["blue","diffuse_blue","b","diffuse_b"])}}function z(e,n){const r=v(),t=/end_header\s+(\S[\s\S]*\S|\S)\s*$/;let s,o;(o=t.exec(e))!==null?s=o[1].split(/\s+/):s=[];const i=new U(s);e:for(let a=0;a<n.elements.length;a++){const m=n.elements[a],c=d(m.properties);for(let p=0;p<m.count;p++){const l=y(m.properties,i);if(!l)break e;P(r,m.name,l,c)}}return R(r)}function R(e){let n=new b;e.indices.length>0&&n.setIndex(e.indices),n.setAttribute("position",new h(e.vertices,3)),e.normals.length>0&&n.setAttribute("normal",new h(e.normals,3)),e.uvs.length>0&&n.setAttribute("uv",new h(e.uvs,2)),e.colors.length>0&&n.setAttribute("color",new h(e.colors,3)),(e.faceVertexUvs.length>0||e.faceVertexColors.length>0)&&(n=n.toNonIndexed(),e.faceVertexUvs.length>0&&n.setAttribute("uv",new h(e.faceVertexUvs,2)),e.faceVertexColors.length>0&&n.setAttribute("color",new h(e.faceVertexColors,3)));for(const r of Object.keys(g.customPropertyMapping))e[r].length>0&&n.setAttribute(r,new h(e[r],g.customPropertyMapping[r].length));return n.computeBoundingSphere(),n}function P(e,n,r,t){if(n==="vertex"){e.vertices.push(r[t.attrX],r[t.attrY],r[t.attrZ]),t.attrNX!==null&&t.attrNY!==null&&t.attrNZ!==null&&e.normals.push(r[t.attrNX],r[t.attrNY],r[t.attrNZ]),t.attrS!==null&&t.attrT!==null&&e.uvs.push(r[t.attrS],r[t.attrT]),t.attrR!==null&&t.attrG!==null&&t.attrB!==null&&(f.setRGB(r[t.attrR]/255,r[t.attrG]/255,r[t.attrB]/255,T),e.colors.push(f.r,f.g,f.b));for(const s of Object.keys(g.customPropertyMapping))for(const o of g.customPropertyMapping[s])e[s].push(r[o])}else if(n==="face"){const s=r.vertex_indices||r.vertex_index,o=r.texcoord;s.length===3?(e.indices.push(s[0],s[1],s[2]),o&&o.length===6&&(e.faceVertexUvs.push(o[0],o[1]),e.faceVertexUvs.push(o[2],o[3]),e.faceVertexUvs.push(o[4],o[5]))):s.length===4&&(e.indices.push(s[0],s[1],s[3]),e.indices.push(s[1],s[2],s[3])),t.attrR!==null&&t.attrG!==null&&t.attrB!==null&&(f.setRGB(r[t.attrR]/255,r[t.attrG]/255,r[t.attrB]/255,T),e.faceVertexColors.push(f.r,f.g,f.b),e.faceVertexColors.push(f.r,f.g,f.b),e.faceVertexColors.push(f.r,f.g,f.b))}}function S(e,n){const r={};let t=0;for(let s=0;s<n.length;s++){const o=n[s],i=o.valueReader;if(o.type==="list"){const a=[],m=o.countReader.read(e+t);t+=o.countReader.size;for(let c=0;c<m;c++)a.push(i.read(e+t)),t+=i.size;r[o.name]=a}else r[o.name]=i.read(e+t),t+=i.size}return[r,t]}function I(e,n,r){function t(s,o,i){switch(o){case"int8":case"char":return{read:a=>s.getInt8(a),size:1};case"uint8":case"uchar":return{read:a=>s.getUint8(a),size:1};case"int16":case"short":return{read:a=>s.getInt16(a,i),size:2};case"uint16":case"ushort":return{read:a=>s.getUint16(a,i),size:2};case"int32":case"int":return{read:a=>s.getInt32(a,i),size:4};case"uint32":case"uint":return{read:a=>s.getUint32(a,i),size:4};case"float32":case"float":return{read:a=>s.getFloat32(a,i),size:4};case"float64":case"double":return{read:a=>s.getFloat64(a,i),size:8}}}for(let s=0,o=e.length;s<o;s++){const i=e[s];i.type==="list"?(i.countReader=t(n,i.countType,r),i.valueReader=t(n,i.itemType,r)):i.valueReader=t(n,i.type,r)}}function _(e,n){const r=v(),t=n.format==="binary_little_endian",s=new DataView(e,n.headerLength);let o,i=0;for(let a=0;a<n.elements.length;a++){const m=n.elements[a],c=m.properties,p=d(c);I(c,s,t);for(let l=0;l<m.count;l++){o=S(i,c),i+=o[1];const N=o[0];P(r,m.name,N,p)}}return R(r)}function w(e){let n=0,r=!0,t="";const s=[],o=new TextDecoder().decode(e.subarray(0,5)),i=/^ply\r\n/.test(o);do{const a=String.fromCharCode(e[n++]);a!==`
2
+ `&&a!=="\r"?t+=a:(t==="end_header"&&(r=!1),t!==""&&(s.push(t),t=""))}while(r&&n<e.length);return i===!0&&n++,{headerText:s.join("\r")+"\r",headerLength:n}}let B;const g=this;if(u instanceof ArrayBuffer){const e=new Uint8Array(u),{headerText:n,headerLength:r}=w(e),t=C(n,r);if(t.format==="ascii"){const s=new TextDecoder().decode(e);B=z(s,t)}else B=_(u,t)}else B=z(u,C(u));return B}}class U{constructor(u){this.arr=u,this.i=0}empty(){return this.i>=this.arr.length}next(){return this.arr[this.i++]}}export{G as PLYLoader};
@@ -1 +1 @@
1
- import{_ as y}from"./extends-CF3RwP-h.js";import{r}from"./index-nmcBqr7Y.js";import{u as v}from"./Fbo-Dz-Soul3.js";import{u as f,d as x}from"./events-156d8d12.esm-ErOhDXXB.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./three.module-D396a9Mn.js";import"./client-DNXj_opT.js";import"./index-CinJrH5C.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-bQE2NA0D.js";const F=n=>typeof n=="function",B=r.forwardRef(({envMap:n,resolution:E=256,frames:m=1/0,makeDefault:l,children:o,...c},R)=>{const u=f(({set:e})=>e),b=f(({camera:e})=>e),a=f(({size:e})=>e),t=r.useRef(null);r.useImperativeHandle(R,()=>t.current,[]);const i=r.useRef(null),p=v(E);r.useLayoutEffect(()=>{c.manual||(t.current.aspect=a.width/a.height)},[a,c]),r.useLayoutEffect(()=>{t.current.updateProjectionMatrix()});let d=0,g=null;const s=F(o);return x(e=>{s&&(m===1/0||d<m)&&(i.current.visible=!1,e.gl.setRenderTarget(p),g=e.scene.background,n&&(e.scene.background=n),e.gl.render(e.scene,t.current),e.scene.background=g,e.gl.setRenderTarget(null),i.current.visible=!0,d++)}),r.useLayoutEffect(()=>{if(l){const e=b;return u(()=>({camera:t.current})),()=>u(()=>({camera:e}))}},[t,l,u]),r.createElement(r.Fragment,null,r.createElement("perspectiveCamera",y({ref:t},c),!s&&o),r.createElement("group",{ref:i},s&&o(p.texture)))});export{B as PerspectiveCamera};
1
+ import{_ as y}from"./extends-CF3RwP-h.js";import{r}from"./index-nmcBqr7Y.js";import{u as v}from"./Fbo-DrK7CWlB.js";import{u as f,d as x}from"./events-156d8d12.esm-C734MYnx.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./three.module-IFn-4i31.js";import"./client-DNXj_opT.js";import"./index-CinJrH5C.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-bQE2NA0D.js";const F=n=>typeof n=="function",B=r.forwardRef(({envMap:n,resolution:E=256,frames:m=1/0,makeDefault:l,children:o,...c},R)=>{const u=f(({set:e})=>e),b=f(({camera:e})=>e),a=f(({size:e})=>e),t=r.useRef(null);r.useImperativeHandle(R,()=>t.current,[]);const i=r.useRef(null),p=v(E);r.useLayoutEffect(()=>{c.manual||(t.current.aspect=a.width/a.height)},[a,c]),r.useLayoutEffect(()=>{t.current.updateProjectionMatrix()});let d=0,g=null;const s=F(o);return x(e=>{s&&(m===1/0||d<m)&&(i.current.visible=!1,e.gl.setRenderTarget(p),g=e.scene.background,n&&(e.scene.background=n),e.gl.render(e.scene,t.current),e.scene.background=g,e.gl.setRenderTarget(null),i.current.visible=!0,d++)}),r.useLayoutEffect(()=>{if(l){const e=b;return u(()=>({camera:t.current})),()=>u(()=>({camera:e}))}},[t,l,u]),r.createElement(r.Fragment,null,r.createElement("perspectiveCamera",y({ref:t},c),!s&&o),r.createElement("group",{ref:i},s&&o(p.texture)))});export{B as PerspectiveCamera};
@@ -0,0 +1,2 @@
1
+ import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{l as z,a as F,b as L}from"./configurations-C2qgJNnW.js";import{a5 as D,a6 as b,gD as G,aa as S,eX as B,ab as P,ac as k,gE as V,gF as q,q as x,dO as N,a7 as m,gG as I,gH as A,bV as O}from"./index-Ckxb31Yz.js";import{r as l}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{i as H,g as U,d as X}from"./active-ingest-DEgq9JiA.js";import"./client-DNXj_opT.js";import"./ingest-source-persistence-DH6ioCOu.js";import"./capability-coverage-CfUeULDN.js";import{u as Y,v as R,b as T,w as K,x as C,d as W,h as E,e as J,r as Q,p as Z}from"./play-mode-DomOvQie.js";const $="play-control",_=4;function ee(t){return Math.min(_,Math.max(1,Math.floor(t)))-1}function te(t){return t+1}function M(t){return t===1?"1 instance":`${t} instances`}function se(){const t=l.useSyncExternalStore(Y,R,R),[n,a]=l.useState(!1),i=l.useRef(null),r=te(t);return e.jsxs("div",{className:"vgai-playbar-popover-anchor",children:[e.jsxs(D,{ref:i,variant:"ghost",size:"comfortable","aria-haspopup":"menu","aria-expanded":n,"aria-controls":n?"vgai-player-count-menu":void 0,onClick:()=>a(o=>!o),title:`${M(r)} — choose how many runtimes Play mounts side by side`,children:[e.jsx(b,{icon:G,size:"md"}),e.jsx(S,{children:"Instances"}),e.jsx(S,{variant:"code",children:r}),e.jsx(B,{direction:"down"})]}),n&&e.jsx(P,{id:"vgai-player-count-menu",anchorRef:i,gap:4,onDismiss:()=>a(!1),children:Array.from({length:_},(o,c)=>c+1).map(o=>e.jsx(k,{role:"menuitemradio","aria-checked":o===r,onSelect:()=>{T(ee(o)),a(!1)},children:M(o)},o))})]})}function ae({regime:t}){if(!t)return null;const n="Play edits are temporary unless explicitly committed to source.";return e.jsx("span",{role:"img","aria-label":n,className:"vgai-play-edit-regime","data-testid":"play-edit-regime","data-regime":t,title:n,children:e.jsx(b,{icon:m.status.warning,size:"sm"})})}function g({label:t,icon:n,onClick:a,title:i=t,disabled:r=!1,pressed:o,variant:c="ghost",testId:s}){return e.jsx(O,{"aria-label":t,"aria-pressed":o,"data-testid":s,disabled:r,size:"comfortable",variant:c,onClick:d=>{d.currentTarget.blur(),a()},title:i,children:e.jsx(b,{icon:n,size:"md"})})}function ne({state:t,exporting:n=!1,restartReason:a=null,playEditRegime:i=null,onPlay:r,onPause:o,onStep:c,onRestart:s,onStop:d,instances:y=null,picker:j=null,options:v=null,placement:u="launcher"}){const p=t!=="stopped",h=t==="paused";return u==="runtime"&&!p?null:e.jsxs(N,{role:"toolbar","aria-label":"Game transport",className:"vgai-playbar",gap:2,align:"center",children:[u==="launcher"&&e.jsxs(e.Fragment,{children:[j,v,y!==null&&e.jsx(se,{}),e.jsx(g,{label:"Play",title:p?"Exit Play mode":"Play (run game)",icon:m.transport.play,pressed:p,testId:$,onClick:r})]}),u==="runtime"&&e.jsxs(e.Fragment,{children:[e.jsx(g,{label:"Pause",title:h?"Resume":"Pause",icon:m.transport.pause,disabled:!p||n,pressed:h,onClick:o}),e.jsx(g,{label:"Step one frame",icon:m.transport.step,disabled:!h||n,onClick:c}),e.jsx(I,{}),e.jsx(g,{label:"Restart Game",icon:m.transport.restart,disabled:!p||n,variant:a?"primary":"ghost",testId:"restart-game",onClick:s,title:a??"Restart game (dispose and remount every root without reloading the editor)"}),e.jsx(g,{label:"Stop",icon:m.transport.stop,disabled:!p,onClick:d}),p&&e.jsxs(e.Fragment,{children:[e.jsx(I,{}),e.jsx(ae,{regime:i})]})]})]})}function he({placement:t="launcher"}){const n=l.useSyncExternalStore(V,q),{session:a}=x();l.useSyncExternalStore(a.subscribe,a.version,a.version);const i=a.playState(),r=l.useSyncExternalStore(K,C,C),[,o]=l.useState(0),c=re(),s=H()?U():null;if(s)return e.jsxs(N,{role:"toolbar","aria-label":"Game transport",className:"vgai-playbar",gap:2,align:"center",children:[e.jsx(g,{label:t==="runtime"?s.playing?"Pause ingested game":"Resume ingested game":"Run ingested game",title:s.playing?"Pause ingested game":"Run ingested game",icon:s.playing?m.transport.pause:m.transport.play,pressed:s.playing,testId:$,onClick:()=>{s.playing?s.pause():s.play(),o(u=>u+1)}}),t==="runtime"&&X()&&e.jsx(g,{label:"Stop",title:"Stop the game and return to the scene",icon:m.transport.stop,onClick:()=>E()}),t==="runtime"&&s.canStep&&e.jsx(g,{label:"Step ingested game",title:"Advance the ingested game one frame",icon:m.transport.step,onClick:()=>{s.step(),o(u=>u+1)}})]});const d=c.configurations.find(u=>u.id===c.selectedId)??null,y=d?.kind==="compound"?d.instances??null:null,j=async()=>{if(d&&d.kind!==f){const u=await L(d.id).catch(p=>(x().notify({tone:"error",title:`Run "${d.id}"`,detail:p instanceof Error?p.message:String(p)}),null));if(!u)return;if(!u.ready){x().notify({tone:"error",title:`Run "${d.id}" is not ready`,detail:Object.entries(u.logs).map(([p,h])=>`${p}: ${h.slice(-3).join(" | ")||"no output"}`).join(`
2
+ `)});return}y!==null&&T(Math.max(0,y-1)),c.refresh()}await J()},v=()=>{E(),d&&d.kind!==f&&F(d.id).then(()=>c.refresh())};return e.jsx(ne,{placement:t,exporting:n,state:i,restartReason:r,playEditRegime:a.playEditRegime(),instances:y,options:e.jsx(ie,{}),picker:c.configurations.length>1?e.jsx(oe,{run:c,disabled:i!=="stopped"}):null,onPlay:()=>{i!=="stopped"?v():j()},onPause:()=>{i==="paused"?Q():Z()},onStep:()=>W(),onRestart:()=>void j(),onStop:()=>v()})}function ie(){const{settings:t}=x(),n=l.useSyncExternalStore(t.subscribe,()=>t.get("vgai.play.keepPanelsVisible")===!0),[a,i]=l.useState(!1),r=l.useRef(null);return e.jsxs(e.Fragment,{children:[e.jsx(O,{ref:r,"aria-label":"Play options",title:"Play options","aria-expanded":a,"aria-haspopup":"menu",onClick:()=>i(!a),children:e.jsx(b,{icon:A})}),a&&e.jsx(P,{anchorRef:r,onDismiss:()=>i(!1),children:e.jsx(k,{role:"menuitemcheckbox","aria-checked":n,onSelect:()=>{t.set("vgai.play.keepPanelsVisible",!n),i(!1)},children:"Keep panels visible during Play"})})]})}const f="play",w="runSelection";function re(){const[t,n]=l.useState([]),[a,i]=l.useState(()=>x().projectLocalState.read(w)??f),r=l.useCallback(async()=>{const s=await z().catch(()=>[]);n(s)},[]);l.useEffect(()=>{r()},[r]);const o=l.useMemo(()=>[{id:f,kind:f,role:"run",describe:"Mount every root in the host",status:"stopped"},...t.filter(s=>s.role==="run")],[t]),c=l.useCallback(s=>{i(s),x().projectLocalState.write(w,s)},[]);return{configurations:o,selectedId:a,select:c,refresh:r}}function oe({run:t,disabled:n}){const a=l.useRef(null),[i,r]=l.useState(!1),o=t.configurations.find(s=>s.id===t.selectedId),c=o?.id===f?"Play":o?.id??"Play";return e.jsxs("div",{className:"vgai-playbar-popover-anchor",children:[e.jsxs(D,{ref:a,variant:"ghost",size:"compact","aria-haspopup":"menu","aria-expanded":i,"aria-controls":i?"vgai-run-configuration-menu":void 0,"data-testid":"run-configuration-picker",disabled:n,onClick:()=>r(s=>!s),title:"Which configuration Play starts (the manifest's run-role configurations)",children:[e.jsx(S,{variant:"code",children:c}),e.jsx(b,{icon:A,size:"sm"})]}),i&&e.jsx(P,{id:"vgai-run-configuration-menu",anchorRef:a,align:"start",gap:4,onDismiss:()=>r(!1),children:t.configurations.map(s=>e.jsxs(k,{role:"menuitemradio","aria-checked":s.id===t.selectedId,"data-testid":`run-configuration-${s.id}`,title:s.describe??void 0,onSelect:()=>{t.select(s.id),r(!1)},children:[s.id===f?"Play":`${s.id} · ${s.kind}`,s.status==="running"?" ●":""]},s.id))})]})}export{he as P};
@@ -0,0 +1,2 @@
1
+ import{a as h}from"./jsx-runtime-DPjLkJKQ.js";import{r as d}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{ap as O,g2 as L}from"./index-Ckxb31Yz.js";import{Q as x,V as y,d as C,m as j}from"./three.quarks.esm-CRKGjKAH.js";import{p as z}from"./project-provenance-4ldz-EOG.js";import{O as Q}from"./StageHost-lB8f---y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./standard-viewport-dressing-GUUr6GuK.js";import"./live-mixers-BRkRHd6g.js";import"./live-gesture-lock-DJbrjOqf.js";import"./model-inspection-Cxfg_Fei.js";import"./viewport-shading-boundary-CBvvzS-p.js";import"./clip-planes-CnAI6DZn.js";import"./three-DSsr_Lvp.js";import"./viewport-pick-context-DkawXbEi.js";import"./OrbitControls-CzTRRI7x.js";import"./LineSegments2-Cicm_Hu1.js";import"./scene-framing-50N7SKuX.js";import"./source-object3d-authoring-adapter-CfHQLFAL.js";import"./three-projection-core-kubBTx0s.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./viewport-surface-status-BFmnWp7z.js";function M(e){const t=[],r=new Set;return e.traverse(s=>{if(s.type!=="ParticleEmitter")return;const o=s.system;!o||typeof o.getRendererSettings!="function"||r.has(o)||(r.add(o),t.push(o))}),t}const S=new WeakMap;function b(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function E(e){return b(e)?e:null}function g(e,t){t(e);for(const r of e.children??[])g(r,t)}function $(e){if(!b(e))return!1;const t=E(e.object);if(!t)return!1;let r=!1;return g(t,s=>{s.type==="ParticleEmitter"&&b(s.ps)&&s.ps.version!==void 0&&(r=!0)}),r}function V(e){const t=new Map,r=E(e.object);return r&&g(r,s=>{typeof s.uuid=="string"&&t.set(s.uuid,s)}),t}function B(e){const t=new x().parse(e.json),r=V(e.json),s=M(t),o=new Map(s.map(a=>[a.emitter,a])),p=new Map;if(t.traverse(a=>{const f=o.get(a);if(!f)return;const i=r.get(a.uuid);if(!i?.ps)throw new Error(`Native Quarks emitter ${a.name||a.uuid} has no matching JSON node.`);p.set(a,{system:f,json:i})}),p.size===0)throw new Error("The Quarks document contains no loadable emitter.");const u={root:t,originalText:e.text,json:e.json,emitters:p,dirty:!1};return S.set(t,u),u}function J(e){const t=S.get(e);if(!t)throw new Error("Object3D is not a native three.quarks JSON document.");return t}function F(e){for(const t of e.emitters.values())t.system.dispose();S.delete(e.root)}function q(e){const t=J(e);return t.dirty?`${JSON.stringify(t.json,null,2)}
2
+ `:t.originalText}const G=new Set(["particles.duration","particles.looping","particles.prewarm","particles.worldSpace","particles.startLife","particles.startSpeed","particles.startRotation","particles.startSize","particles.startColor","particles.emissionOverTime","particles.emissionOverDistance"]);function U(){return[{path:"particles.duration",label:"Duration",type:"number",group:"Emission"},{path:"particles.looping",label:"Looping",type:"boolean",group:"Emission"},{path:"particles.prewarm",label:"Prewarm",type:"boolean",group:"Emission"},{path:"particles.emissionOverTime",label:"Rate over time",type:"json",group:"Emission"},{path:"particles.emissionOverDistance",label:"Rate over distance",type:"json",group:"Emission"},{path:"particles.startLife",label:"Lifetime",type:"json",group:"Start"},{path:"particles.startSpeed",label:"Speed",type:"json",group:"Start"},{path:"particles.startRotation",label:"Rotation",type:"json",group:"Start"},{path:"particles.startSize",label:"Size",type:"json",group:"Start"},{path:"particles.startColor",label:"Color",type:"json",group:"Start"},{path:"particles.worldSpace",label:"World space",type:"boolean",group:"Simulation"},{path:"particles.shape",label:"Shape",type:"string",readonly:!0,group:"Shape"},{path:"particles.behaviors",label:"Modules",type:"json",readonly:!0,group:"Behavior"},{path:"particles.renderMode",label:"Native render mode",type:"number",readonly:!0,group:"Renderer"}]}function m(e,t){if(!b(e)||typeof e.type!="string")throw new Error(`${t} must be a native quarks function JSON object with a type.`);return e}function k(e,t){const{system:r}=e;switch(t){case"particles.duration":return r.duration;case"particles.looping":return r.looping;case"particles.prewarm":return r.prewarm;case"particles.worldSpace":return r.worldSpace;case"particles.startLife":return r.startLife.toJSON();case"particles.startSpeed":return r.startSpeed.toJSON();case"particles.startRotation":return r.startRotation.toJSON();case"particles.startSize":return r.startSize.toJSON();case"particles.startColor":return r.startColor.toJSON();case"particles.emissionOverTime":return r.emissionOverTime.toJSON();case"particles.emissionOverDistance":return r.emissionOverDistance.toJSON();case"particles.shape":return r.emitterShape.type;case"particles.behaviors":return r.behaviors.map(s=>s.type);case"particles.renderMode":return r.renderMode;default:return}}function w(e){return e.slice(10)}function N(e,t,r){const{system:s}=e;switch(t){case"particles.duration":{const o=Number(r);if(!Number.isFinite(o)||o<=0)throw new Error("Particle duration must be a positive finite number.");s.duration=o;break}case"particles.looping":s.looping=!!r;break;case"particles.prewarm":s.prewarm=!!r;break;case"particles.worldSpace":s.worldSpace=!!r;break;case"particles.startLife":s.startLife=y(m(r,"Lifetime"));break;case"particles.startSpeed":s.startSpeed=y(m(r,"Speed"));break;case"particles.startRotation":s.startRotation=j(m(r,"Rotation"));break;case"particles.startSize":s.startSize=j(m(r,"Size"));break;case"particles.startColor":s.startColor=C(m(r,"Color"));break;case"particles.emissionOverTime":s.emissionOverTime=y(m(r,"Rate over time"));break;case"particles.emissionOverDistance":s.emissionOverDistance=y(m(r,"Rate over distance"));break;default:throw new Error(`Particle field ${t} is read-only.`)}e.json.ps[w(t)]=r,s.restart()}function W(e,t,r,s){N(e,t,r),e.json.ps[w(t)]=s}function H(e){return e===void 0?void 0:JSON.parse(JSON.stringify(e))}const I=({root:e,defaultAdapter:t,commit:r})=>{const s=J(e),o=new Set,p=()=>{for(const i of o)i()},u=i=>{const n=t.hierarchy.object3D?.(i);return n?s.emitters.get(n)??null:null},a={properties:i=>[...t.inspector?.properties(i)??[],...u(i)?U():[]],get:(i,n)=>{const c=u(i);return c&&n.startsWith("particles.")?k(c,n):t.inspector?.get(i,n)},set:async(i,n,c)=>{const l=u(i);if(!l||!G.has(n)){await t.inspector?.set(i,n,c);return}const v=k(l,n),T=w(n),R=H(l.json.ps?.[T]),D=s.dirty;try{N(l,n,c),s.dirty=!0,p(),await r(`Edit ${l.system.emitter.name||"Particle Emitter"}`)}catch(P){throw W(l,n,v,R),s.dirty=D,p(),P}}};return{adapter:{capabilities:{...t.capabilities,inspectorFields:!0,persist:!0},provenance:{source:"document",label:"three.quarks JSON",detail:"The hierarchy and emitter fields are the native three.quarks Object3D JSON document."},hierarchy:t.hierarchy,...t.selection?{selection:t.selection}:{},...t.transforms?{transforms:t.transforms}:{},inspector:a,subscribe:i=>{o.add(i);const n=t.subscribe?.(i)??(()=>{});return()=>{o.delete(i),n()}}},dispose:()=>o.clear()}};async function jt(e,t){const r=await fetch(L(e),{cache:"no-store",...t?{signal:t}:{}});if(!r.ok)throw new Error(`Could not load ${e}: HTTP ${r.status}.`);const s=await r.text();let o;try{o=JSON.parse(s)}catch{return null}return $(o)?{text:s,json:o,projectPath:z(e)}:null}function kt({documentId:e,assetPath:t,displayName:r,active:s,source:o}){const[p,u]=d.useState(null),[a,f]=d.useState(null);d.useEffect(()=>{if(!s){u(null);return}let c=null;try{c=B(o),u(c),f(null)}catch(l){f(l instanceof Error?l.message:String(l))}return()=>{c&&F(c)}},[s,o]);const i=d.useCallback(()=>{if(!p)throw new Error(`Particle asset ${t} is not loaded.`);return{root:p.root,dispose(){}}},[p,t]),n=d.useMemo(()=>({label:`Edit ${r}`,resources:[{path:o.projectPath,contentType:"application/json",serialize:({root:c})=>q(c)}]}),[r,o.projectPath]);return a?h.jsx("div",{role:"alert",style:{padding:20,color:O.semantic.danger},children:a}):p?h.jsx(Q,{documentId:e,sourcePath:t,displayName:r,build:i,active:s,assetType:"particles",persistence:n,authoring:I,dressing:{grid:!0}}):h.jsxs("div",{style:{padding:20,color:O.content.muted},children:["Loading ",r,"…"]})}export{kt as QuarksAssetDocument,$ as isNativeQuarksJson,jt as loadNativeQuarksJsonSource};
@@ -0,0 +1 @@
1
+ import{bA as o}from"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";class R extends o{constructor(r){console.warn("RGBELoader has been deprecated. Please use HDRLoader instead."),super(r)}}export{R as RGBELoader};