@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.
- package/BUNDLED_NOTICES +1962 -363
- package/catalog/entries/bake.json +0 -1
- package/catalog/entries/blender.json +2 -2
- package/catalog/entries/reflections.json +2 -4
- package/catalog/project-source/src/lib/bake/asset-seed.ts +1 -2
- package/catalog/project-source/src/lib/bake/clip-layering.ts +3 -4
- package/catalog/project-source/src/lib/bake/gltf-bake.ts +1 -1
- package/catalog/project-source/src/lib/bake/params.ts +3 -5
- package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +2 -3
- package/dist/.vite/manifest.json +2406 -2182
- package/dist/assets/{AssetBudgetPanel-J9--TZPU.js → AssetBudgetPanel-csYWK2H4.js} +8 -8
- package/dist/assets/{AudioViewer-CR7333fe.js → AudioViewer-BH_LUYs5.js} +1 -1
- package/dist/assets/{BVHLoader-6bQIXhMX.js → BVHLoader-Jkzh8hMf.js} +1 -1
- package/dist/assets/BufferGeometryUtils-CAbuTPOA.js +1 -0
- package/dist/assets/{CCDIKSolver-CD7vLpsK.js → CCDIKSolver-D4NvkJ8d.js} +1 -1
- package/dist/assets/{CSS3DRenderer-CL7ABLVK.js → CSS3DRenderer-CAS2WZZy.js} +1 -1
- package/dist/assets/CanvasSceneViewport-BlsRTk-X.js +1 -0
- package/dist/assets/ColladaLoader-DxYB89DA.js +3 -0
- package/dist/assets/{ColorInput-DQBNrW-K.js → ColorInput-CPQNsDf1.js} +1 -1
- package/dist/assets/{ConvexGeometry-CAzXlPVG.js → ConvexGeometry-Dinf-sev.js} +1 -1
- package/dist/assets/{ConvexHull-BINCESFp.js → ConvexHull-CrJ8FY-w.js} +1 -1
- package/dist/assets/{DecalGeometry-160KRdfg.js → DecalGeometry-owkbefLa.js} +1 -1
- package/dist/assets/EffectComposer-BHDH-NLz.js +1 -0
- package/dist/assets/EntityModelDocument-DuQivdvc.js +1 -0
- package/dist/assets/EnvironmentAssetDocument-CnTEMn3A.js +1 -0
- package/dist/assets/FBXLoader-BMUbIhtE.js +1 -0
- package/dist/assets/Fbo-DrK7CWlB.js +1 -0
- package/dist/assets/{FontLoader-CvGoVI5a.js → FontLoader-BR_K6Baw.js} +2 -2
- package/dist/assets/GLTFExporter-BZqAQJbw.js +1 -0
- package/dist/assets/{GameplaySessionTimeline-B52W3FVZ.js → GameplaySessionTimeline-Crqwv2fP.js} +1 -1
- package/dist/assets/Gltf-7cVbZUzT.js +2 -0
- package/dist/assets/ImageViewer-BkFie7Hm.js +1 -0
- package/dist/assets/InspectorObjectPreview-Dl3tyJBn.js +1 -0
- package/dist/assets/JsonAssetDocument-BUFzubHM.js +2 -0
- package/dist/assets/{LineSegments2-CsOpKSiM.js → LineSegments2-Cicm_Hu1.js} +2 -2
- package/dist/assets/LiveModuleDocument-C3OQxiba.js +1 -0
- package/dist/assets/LutAssetDocument-DVzd1RZ9.js +1 -0
- package/dist/assets/{MTLLoader-_Xzd4_0p.js → MTLLoader-Bg_grNiT.js} +2 -2
- package/dist/assets/{MarchingCubes-Bsp4wrzd.js → MarchingCubes-a78AL3HB.js} +1 -1
- package/dist/assets/MeshBVH-BCSLNEeP.js +1 -0
- package/dist/assets/ModelAssetDocument-pN84goRT.js +1 -0
- package/dist/assets/{NonThreeAuthoringBootstrap-C3woOMxX.js → NonThreeAuthoringBootstrap-BKNejRiW.js} +1 -1
- package/dist/assets/{OBJLoader-BhIC6Hwo.js → OBJLoader-BiwzVj5b.js} +2 -2
- package/dist/assets/Object3DDocumentToolbar-D5Bg5FEf.js +1 -0
- package/dist/assets/Object3DDocumentViewport-DFHqru3a.js +2 -0
- package/dist/assets/Object3DPreview-BTtZ-41z.js +2 -0
- package/dist/assets/OnlineAssetDetail-BAqozdAp.js +1 -0
- package/dist/assets/{OrbitControls-DLpayAaK.js → OrbitControls-CzKVCORl.js} +1 -1
- package/dist/assets/{OrbitControls-CM3bPray.js → OrbitControls-CzTRRI7x.js} +1 -1
- package/dist/assets/{OrthographicCamera-bQozawrh.js → OrthographicCamera-CSDDsvu7.js} +1 -1
- package/dist/assets/{PLYLoader-DYQqs5Ik.js → PLYLoader-QxrxxMpE.js} +2 -2
- package/dist/assets/{PerspectiveCamera-CQ2lh01o.js → PerspectiveCamera-DzD_NfVh.js} +1 -1
- package/dist/assets/PlayBar-qVJpgwJt.js +2 -0
- package/dist/assets/QuarksAssetDocument-B4vBlUsS.js +2 -0
- package/dist/assets/RGBELoader-WQ7xZofE.js +1 -0
- package/dist/assets/RectAreaLightUniformsLib-CwcuoVqt.js +1 -0
- package/dist/assets/{RenderPass-DPrn-Uky.js → RenderPass-C_CeQNdh.js} +1 -1
- package/dist/assets/{ResolutionPicker-C67vs1F3.js → ResolutionPicker-DpHVJxn5.js} +1 -1
- package/dist/assets/RootSelectionOverlay-BxvsunO4.js +1 -0
- package/dist/assets/{RoundedBox-BDGBg6QZ.js → RoundedBox-B_cZ0NFy.js} +1 -1
- package/dist/assets/{RoundedBoxGeometry-CyUuYPfW.js → RoundedBoxGeometry-Y4rcSIvX.js} +1 -1
- package/dist/assets/STLLoader-Bej_Nkpr.js +1 -0
- package/dist/assets/{SelectionBox-D_75KrNW.js → SelectionBox-Cn9vm7f9.js} +1 -1
- package/dist/assets/ShaderAssetDocument-Dx2x8CLr.js +12 -0
- package/dist/assets/{ShaderPass-QYRpPuFJ.js → ShaderPass-qtkA7CQ8.js} +1 -1
- package/dist/assets/{ShadowEditor-DkImwu1Y.js → ShadowEditor-BEIUkrHL.js} +1 -1
- package/dist/assets/SimplifyModifier-D2EesGr2.js +1 -0
- package/dist/assets/{SkeletonUtils-Cps8GOC6.js → SkeletonUtils-C8ayciDc.js} +1 -1
- package/dist/assets/{Sky-CQKCgYDs.js → Sky-BBpnAJZV.js} +1 -1
- package/dist/assets/SourceAssetViewer-BpMbbuy6.js +1 -0
- package/dist/assets/StageHost-lB8f---y.js +2 -0
- package/dist/assets/{StoryPreviewMount-DjyxRCXu.js → StoryPreviewMount-BIfxmkYh.js} +1 -1
- package/dist/assets/{TDSLoader-D_T8XJ81.js → TDSLoader-rHl5Uwc0.js} +1 -1
- package/dist/assets/{TextGeometry-DOWAEUV0.js → TextGeometry-BRHSufuM.js} +1 -1
- package/dist/assets/ThreeBoardDocument-BHV92Ia3.js +2 -0
- package/dist/assets/{ThreeIsolationSceneContent-C8C8whSF.js → ThreeIsolationSceneContent-BqtgDHBK.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-BRoDWe4Q.js → ToolObject3DPreview-CcaPJTyH.js} +1 -1
- package/dist/assets/Toolbar-keHcSvDD.js +1 -0
- package/dist/assets/{TrackballControls-DfznuQTh.js → TrackballControls-Cce-6Ff5.js} +1 -1
- package/dist/assets/{TransientHint-BB1fwrvK.js → TransientHint-Dlslh3oX.js} +1 -1
- package/dist/assets/{UnrealBloomPass-CR-cS_K5.js → UnrealBloomPass-DiseEiFK.js} +2 -2
- package/dist/assets/{VideoViewer-C6kocgIU.js → VideoViewer-naGSXHd6.js} +1 -1
- package/dist/assets/ViewportShadingMenu-C7Hdhtca.js +1 -0
- package/dist/assets/{active-ingest-CT6jSGhr.js → active-ingest-DEgq9JiA.js} +3 -3
- package/dist/assets/{animation-clock-CnjZqfJp.js → animation-clock-lTIb6nk3.js} +1 -1
- package/dist/assets/animation-mixers.service-2O2rVwQf.js +1 -0
- package/dist/assets/asset-budget-asset.menu-9NhdHAC9.js +1 -0
- package/dist/assets/asset-budget.action-yg6-luUJ.js +1 -0
- package/dist/assets/asset-budget.document-B46_VFqa.js +1 -0
- package/dist/assets/asset-budget.menu-DuH07N-e.js +1 -0
- package/dist/assets/{asset-editor-persistence-BBaONOJt.js → asset-editor-persistence-BVtzjadu.js} +1 -1
- package/dist/assets/{asset-loaders-BOy5Ss8k.js → asset-loaders-BxG1LykH.js} +2 -2
- package/dist/assets/{assets-BuSoGjBX.js → assets-Do88ZdV_.js} +1 -1
- package/dist/assets/{audio-unlock.service-CfUgUQVy.js → audio-unlock.service-BJH0mWvX.js} +1 -1
- package/dist/assets/{audio.utility-C6K6jem8.js → audio.utility-Cp4aVYFU.js} +1 -1
- package/dist/assets/autoplay.service-FxpRy7Ev.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-CL02gWDn.js → babylon-authoring-adapter-B_8iE8fK.js} +1 -1
- package/dist/assets/{binding-resolver-Dsh-6Vor.js → binding-resolver-BWwG10zJ.js} +2 -2
- package/dist/assets/blender-emscripten-engine-CEsWgnR7.js +2 -0
- package/dist/assets/{blender-node-editor.document-iIDkB9sI.js → blender-node-editor.document-DTgwy8KC.js} +1 -1
- package/dist/assets/blender-properties-tab-DWSJpkxq.js +3 -0
- package/dist/assets/blender-runtime-host-OGjPjTrG.js +4 -0
- package/dist/assets/{blender-runtime-skin-DyQ9B6CR.js → blender-runtime-skin-DymtXlpt.js} +37 -39
- package/dist/assets/blender-runtime.document-CzH2ohHR.js +8 -0
- package/dist/assets/{blender-timeline.document-77fx96N7.js → blender-timeline.document-BRy_QPHt.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-fsT7B4gV.js → blender-uv-editor.document-D-AbUCqz.js} +1 -1
- package/dist/assets/{blender-version.status-o6dBm3n6.js → blender-version.status-B7flzX_7.js} +1 -1
- package/dist/assets/{blender-wali-engine-wTOcrOMC.js → blender-wali-engine-D3iKpzn9.js} +1 -1
- package/dist/assets/blender.command-BVHtgTQy.js +1 -0
- package/dist/assets/blender.environment-CG-pC7sk.js +1 -0
- package/dist/assets/{blender.style-Dcem5f_T.js → blender.style-CxfbTFcE.js} +1 -1
- package/dist/assets/{board-guides-DziKSTss.js → board-guides-C3usUZZk.js} +1 -1
- package/dist/assets/body-marks-D8iaje6y.js +1 -0
- package/dist/assets/bridge.command-BF9u6r0A.js +3 -0
- package/dist/assets/browserAll-38aBu-cf.js +1 -0
- package/dist/assets/{build-profiles.document-kW8iw8Xj.js → build-profiles.document-DO7oNRuo.js} +2 -2
- package/dist/assets/{build-progress.status-BNRLytg2.js → build-progress.status-COeNVhYd.js} +1 -1
- package/dist/assets/{build-session-C_sg3CEn.js → build-session-IWIriS5P.js} +1 -1
- package/dist/assets/{build.action-lYjTLb7K.js → build.action-DlkFvZf6.js} +1 -1
- package/dist/assets/{build.command-DIGgUPU_.js → build.command-DPqQIYj_.js} +1 -1
- package/dist/assets/{build.header-CKajx5U3.js → build.header-CNLG-pV8.js} +1 -1
- package/dist/assets/{build.menu-BdU0QXny.js → build.menu-hUlH6loi.js} +1 -1
- package/dist/assets/{build.service-CbBAyeu3.js → build.service-C86Td3_9.js} +1 -1
- package/dist/assets/{camera-KEsKvOL7.js → camera-CKbyBXMe.js} +1 -1
- package/dist/assets/camera-authoring-Ci3KnE-W.js +1 -0
- package/dist/assets/{camera-runtime.inspector-B7unX4g1.js → camera-runtime.inspector-DdR3P2BF.js} +1 -1
- package/dist/assets/canvas-entry-runtime-E5YjSgre.js +2 -0
- package/dist/assets/canvas-preview-frames-CiAx7dpV.js +1 -0
- package/dist/assets/{capability-coverage-Czas4C18.js → capability-coverage-CfUeULDN.js} +5 -5
- package/dist/assets/city-EkhAOo5s.exr +0 -0
- package/dist/assets/{collaboration-presence-DLoZ7EA3.js → collaboration-presence-CSLFNT7m.js} +1 -1
- package/dist/assets/{collider-Bw0mXlsW.js → collider-DRSaLRM9.js} +1 -1
- package/dist/assets/{component-board.service-DCwcUssB.js → component-board.service-B7Sv8b7m.js} +2 -2
- package/dist/assets/component-board.service-B8UHw8dn.js +2 -0
- package/dist/assets/component-contracts.service-LFGekycZ.js +1 -0
- package/dist/assets/{component-verbs.command-7xzfjGMZ.js → component-verbs.command-D4SvFjfG.js} +1 -1
- package/dist/assets/component-verbs.service-TGvWxf2b.js +1 -0
- package/dist/assets/{config-CEZk921y.js → config-DB_RH-hO.js} +3 -3
- package/dist/assets/{configurations-DTBMdaTL.js → configurations-C2qgJNnW.js} +1 -1
- package/dist/assets/{connection.status-BifnQdOs.js → connection.status-CG7X2brL.js} +1 -1
- package/dist/assets/{console-bridge-CHcb-xk5.js → console-bridge-B5Ltae37.js} +1 -1
- package/dist/assets/{constraint-De8f1Uiq.js → constraint-C_Jj7dXy.js} +1 -1
- package/dist/assets/constraints.inspector-D6QZJS4b.js +1 -0
- package/dist/assets/courtyard-DqlebbpC.exr +0 -0
- package/dist/assets/coverage.service-Clo86874.js +3 -0
- package/dist/assets/{create-runtime-CVCc1BDx.js → create-runtime-lmA910XT.js} +1 -1
- package/dist/assets/{curve-7Q79VgU4.js → curve-6-TR6dNb.js} +1 -1
- package/dist/assets/{data-asset-4hjS642k.js → data-asset-BNbd309U.js} +1 -1
- package/dist/assets/{data-ref-CQI28C0D.js → data-ref-Dvmd7eb1.js} +1 -1
- package/dist/assets/{debug-bridge-CCohG-d-.js → debug-bridge-BUNhgyY6.js} +1 -1
- package/dist/assets/{debug-registry-Dgvitx8M.js → debug-registry-B3Cnne3x.js} +1 -1
- package/dist/assets/deferred-ingest-play-7V8OrW3e.js +2 -0
- package/dist/assets/design-time-layers-g9VS6amb.js +1 -0
- package/dist/assets/design-time-mount.service-HtMr_vBd.js +2 -0
- package/dist/assets/design-time-react-mount-Dx6fJ-Hg.js +1 -0
- package/dist/assets/{directional-shadow-fit-BVkOKAv2.js → directional-shadow-fit-Cjz_Eg2b.js} +1 -1
- package/dist/assets/{document-preview-three-Kbg2GCLm.js → document-preview-three-C3y0syYQ.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-CY8C7f4T.js → dom-authoring-adapter-CEeFyatF.js} +1 -1
- package/dist/assets/{draco3d-BBUTcNkz.js → draco3d-FKy0apkb.js} +1 -1
- package/dist/assets/drei-asset-caches-jJoHXbTj.js +2 -0
- package/dist/assets/{edit-mode-audio.service-Bzetwd5B.js → edit-mode-audio.service-DZTnrW6t.js} +1 -1
- package/dist/assets/edit-mode-authoring-D_BiHCQj.js +1 -0
- package/dist/assets/{edit-mode-networking.service-YCX6RRb_.js → edit-mode-networking.service-BzMI2VxO.js} +1 -1
- package/dist/assets/editor-api-Bzmo0o8_.js +1 -0
- package/dist/assets/{entry-adjudication-Cq8Yeb74.js → entry-adjudication-BYy7TXOB.js} +1 -1
- package/dist/assets/{events-156d8d12.esm-ErOhDXXB.js → events-156d8d12.esm-C734MYnx.js} +7 -7
- package/dist/assets/{extend-B-eOccUm.js → extend-CLG0ymiX.js} +1 -1
- package/dist/assets/forest-P_CQY3b_.exr +0 -0
- package/dist/assets/fork-menu-De7HU6_H.js +1 -0
- package/dist/assets/{frame-debugger-store-D1Mf_5up.js → frame-debugger-store-BZgIOlU6.js} +1 -1
- package/dist/assets/{game-DHOZVb-7.js → game-D5EJoILQ.js} +1 -1
- package/dist/assets/{game-contract-seams-a5YXejOu.js → game-contract-seams-TCpIMmHP.js} +1 -1
- package/dist/assets/{game-css-scope-transform-Eng4wS8E.js → game-css-scope-transform-NbpajQr-.js} +1 -1
- package/dist/assets/game-document.service-6eRlrI-d.js +1 -0
- package/dist/assets/game-eval.command-hKnSMlX0.js +2 -0
- package/dist/assets/{game-input-seams-CIQdetRw.js → game-input-seams-BC6xhZy3.js} +1 -1
- package/dist/assets/{game-module-access-B2mFxv-i.js → game-module-access-ry3xb1Ix.js} +1 -1
- package/dist/assets/{gameplay-export-BoKXm51x.js → gameplay-export-DiLQuPpn.js} +1 -1
- package/dist/assets/gameplay-replay-Bsre-1K8.js +1 -0
- package/dist/assets/{gameplay-rng-trap-CTNhm-UW.js → gameplay-rng-trap-BhRx_CtU.js} +1 -1
- package/dist/assets/gameplay.command-BqiyGn-I.js +1 -0
- package/dist/assets/{generation-jobs-BQrXbGp_.js → generation-jobs-BYcpgeGk.js} +1 -1
- package/dist/assets/generation.service-O81IqA-6.js +1 -0
- package/dist/assets/{generations-DzUogZsM.js → generations-CsGQ3twi.js} +1 -1
- package/dist/assets/{generations.status-CgOUBCum.js → generations.status-C3YU0_ml.js} +1 -1
- package/dist/assets/godot.style-DxJaFWOP.js +1 -0
- package/dist/assets/godot.view-BFsHk8b2.js +1 -0
- package/dist/assets/{hosted-asset-materialization-CiIvWkGU.js → hosted-asset-materialization-Bk-plQF6.js} +2 -2
- package/dist/assets/{ibl-override-material-BlmCxFKq.js → ibl-override-material-BhbGwgS1.js} +1 -1
- package/dist/assets/{index-mjWQmGhM.js → index-0n9eSzwT.js} +1 -1
- package/dist/assets/index-B4bmKkgY.css +1 -0
- package/dist/assets/index-BLo2LE8C.js +3404 -0
- package/dist/assets/index-BWW4-DBH.js +1 -0
- package/dist/assets/index-CLcsjKUs.js +1 -0
- package/dist/assets/index-CU5YUq-x.js +134 -0
- package/dist/assets/{index-DUpHH6JR.js → index-Cb6o_Td_.js} +1 -1
- package/dist/assets/index-Ckxb31Yz.js +1500 -0
- package/dist/assets/index-CnpsJMao.js +1 -0
- package/dist/assets/index-Cr23XhNm.js +1 -0
- package/dist/assets/index-DO1rWQ_r.js +487 -0
- package/dist/assets/{index-BcCBqgM_.js → index-DUh02lTr.js} +1 -1
- package/dist/assets/index-DXEHfb0b.js +1 -0
- package/dist/assets/{index-V1R-e5Bd.js → index-wRCvCebM.js} +1 -1
- package/dist/assets/{inference-diagnostics-Dhmtfbq_.js → inference-diagnostics-YW0yJkKx.js} +1 -1
- package/dist/assets/{ingest-BbYMC2vQ.js → ingest-BlQnR7s3.js} +1 -1
- package/dist/assets/ingest-boot-viewport-uG9jQ1zm.js +1 -0
- package/dist/assets/ingest-siblings-DRQXSWax.js +1 -0
- package/dist/assets/{ingest-source-persistence-C_6Hiyra.js → ingest-source-persistence-DH6ioCOu.js} +1 -1
- package/dist/assets/{ingest.service-BTDnQfM1.js → ingest.service-GeaWMaZX.js} +1 -1
- package/dist/assets/{input-manager-DH_hGW6d.js → input-manager-Cxx3RJgG.js} +1 -1
- package/dist/assets/{input-router-BNQvtIqw.js → input-router-FzxO5ld6.js} +1 -1
- package/dist/assets/{inspect-BZfi3mmo.js → inspect-BRgDdtVk.js} +1 -1
- package/dist/assets/instances.command-CFOMPSj3.js +1 -0
- package/dist/assets/{instruments-CKR02Y8I.js → instruments-IKn-vvNb.js} +1 -1
- package/dist/assets/interior-Bo_lba15.exr +0 -0
- package/dist/assets/{json-history-resource-BbxllWfV.js → json-history-resource-r-9q_hxP.js} +1 -1
- package/dist/assets/{light-D-_wsKTq.js → light-CFAor97k.js} +1 -1
- package/dist/assets/light-camera-factory-D1sgz3YB.js +1 -0
- package/dist/assets/live-mixers-BRkRHd6g.js +1 -0
- package/dist/assets/{loader-CaF_I7Yt.js → loader-BbMsvIxP.js} +1 -1
- package/dist/assets/machine.document-CgmsOh-s.js +24 -0
- package/dist/assets/machines.finder-nxiCgQc2.js +1 -0
- package/dist/assets/matcap-texture-Dh65bX5V.js +1 -0
- package/dist/assets/{material-CpAdjDxn.js → material-D5kXEZWQ.js} +1 -1
- package/dist/assets/{material-factory-Bz6h__6g.js → material-factory-0Qb0VuZ5.js} +1 -1
- package/dist/assets/material-preview.view-DqNcpd_b.js +1 -0
- package/dist/assets/{mesh-B3WPtNKO.js → mesh-BKPgNTwh.js} +1 -1
- package/dist/assets/{mesh-shadow-CZnXrw_l.js → mesh-shadow-BDQP4mHs.js} +1 -1
- package/dist/assets/model-asset-sections.service-DWPLmkqa.js +1 -0
- package/dist/assets/model-inspection-Cxfg_Fei.js +1 -0
- package/dist/assets/model.layout-BpZE1W9V.js +1 -0
- package/dist/assets/{models.finder-G2jQgIRu.js → models.finder-DHW17ZEa.js} +1 -1
- package/dist/assets/module-mode-CRfHyIMS.js +2 -0
- package/dist/assets/mount-canvas-ingest-root-BZZ8M3Lu.js +2 -0
- package/dist/assets/mount-dom-ingest-root-D1GV6Jjt.js +2 -0
- package/dist/assets/{mount-game-6t9cKNo4.js → mount-game-F9e76auh.js} +1 -1
- package/dist/assets/mount-ingest-root-B5D-Lmmk.js +2 -0
- package/dist/assets/{mount-manifest-CGVxhmAw.js → mount-manifest-cYRhgHfo.js} +1 -1
- package/dist/assets/mount-three-ingest-root-BNnouaBn.js +1 -0
- package/dist/assets/{mounted-authoring-Dmg5xmhP.js → mounted-authoring-TIN5EnCb.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-DjP6RA9U.js → mounted-story-viewport-source-CAlEmE0_.js} +1 -1
- package/dist/assets/{native-debug-module-CWicoSGD.js → native-debug-module-j-MekcLS.js} +1 -1
- package/dist/assets/{navigation-CIiCx-SM.js → navigation-DmR1BDVo.js} +1 -1
- package/dist/assets/{navmesh.menu-CAKiH8PW.js → navmesh.menu-FhL1pGx1.js} +1 -1
- package/dist/assets/{navmesh.service-jgDWlgj1.js → navmesh.service-usyDeJlm.js} +1 -1
- package/dist/assets/{network.utility-CEu5nHf7.js → network.utility-BPh4hTmh.js} +1 -1
- package/dist/assets/night-CvV4Gybt.exr +0 -0
- package/dist/assets/{object3d-authoring-subject-CH5sI2oP.js → object3d-authoring-subject-CyE4rQ2A.js} +1 -1
- package/dist/assets/oid-transform-BOqL6YH6.js +2 -0
- package/dist/assets/{particles-Y626p22p.js → particles-C47L-dda.js} +1 -1
- package/dist/assets/particles-factory-CRqPLdS7.js +1 -0
- package/dist/assets/pixi-authoring-adapter-C5Ikqj5-.js +1 -0
- package/dist/assets/{pixi-live-write-target-DuWydlWb.js → pixi-live-write-target-OWBk79dp.js} +1 -1
- package/dist/assets/pixi-primitive-D5igywJ_.js +1 -0
- package/dist/assets/pixi-react-root-factory-9lZ0Yz-n.js +1 -0
- package/dist/assets/play-mode-DomOvQie.js +22 -0
- package/dist/assets/play.command-DoqjH-Pp.js +2 -0
- package/dist/assets/{playtest-BXIL1JEF.js → playtest-BnFenMBW.js} +1 -1
- package/dist/assets/{pose-guard-6Osb2cFu.js → pose-guard-Bb3gZOzk.js} +1 -1
- package/dist/assets/{product-DFhyARJj.js → product-CTDJoVo5.js} +1 -1
- package/dist/assets/{profiler.action-CaXJDp3t.js → profiler.action-C_OFGkDw.js} +1 -1
- package/dist/assets/{profiler.menu-BIMF6Bi4.js → profiler.menu-BJbnVoo4.js} +1 -1
- package/dist/assets/{profiler.utility-BExw9wBO.js → profiler.utility-qpfhuwRw.js} +1 -1
- package/dist/assets/project-authoring-session-BV-MM8Fl.js +2 -0
- package/dist/assets/{project-provenance-BoP3nrle.js → project-provenance-4ldz-EOG.js} +1 -1
- package/dist/assets/{properties-bone-constraints.inspector-ByT6p7S-.js → properties-bone-constraints.inspector-C-ByIdg1.js} +1 -1
- package/dist/assets/{properties-bone.inspector-z4qJwKO5.js → properties-bone.inspector-CXY0xCQB.js} +1 -1
- package/dist/assets/{properties-collection.inspector-D0_3ijWU.js → properties-collection.inspector-DIfkZAel.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-CESzjuls.js → properties-constraints.inspector-BaunL5nT.js} +1 -1
- package/dist/assets/{properties-data.inspector-hG8Wgyzb.js → properties-data.inspector-DQD-jfO2.js} +1 -1
- package/dist/assets/{properties-material.inspector-CzY0JCQ6.js → properties-material.inspector-A0HZ4SX6.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-3dDhwf7g.js → properties-modifiers.inspector-GUnVhVwZ.js} +1 -1
- package/dist/assets/{properties-object.inspector-CiarfxkT.js → properties-object.inspector-Chsfa4Xa.js} +1 -1
- package/dist/assets/{properties-output.inspector-DKJxmKSD.js → properties-output.inspector-U7ZmD0Me.js} +1 -1
- package/dist/assets/{properties-particles.inspector-CCEdYWGm.js → properties-particles.inspector-umkW-OlI.js} +1 -1
- package/dist/assets/{properties-physics.inspector-B2c0KUyA.js → properties-physics.inspector-CLVBlWwL.js} +1 -1
- package/dist/assets/{properties-render.inspector-Bcm0HLRW.js → properties-render.inspector-D0u9taKy.js} +1 -1
- package/dist/assets/{properties-scene.inspector-PIM_eTb_.js → properties-scene.inspector-JwGCZQAx.js} +1 -1
- package/dist/assets/{properties-texture.inspector-CgFlnyr8.js → properties-texture.inspector-B1vC28pw.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-DGjF_Aqo.js → properties-view-layer.inspector-BuUKyBFp.js} +1 -1
- package/dist/assets/{properties-world.inspector-CrMvaRvB.js → properties-world.inspector-VXUj4dT4.js} +1 -1
- package/dist/assets/r3f-design-session-qJ2v5SrB.js +2 -0
- package/dist/assets/r3f-physics-binding-C8OqNRG2.js +1 -0
- package/dist/assets/{r3f-root-factory-z9llD1OU.js → r3f-root-factory-DjGnbU4n.js} +1 -1
- package/dist/assets/r3f-source-authoring-adapter-CG9heazM.js +12 -0
- package/dist/assets/{rapier-physics-bridge-CMoeVo3Y.js → rapier-physics-bridge-B-EK7KYV.js} +1 -1
- package/dist/assets/react-inspector.service-DWeXDHJq.js +1 -0
- package/dist/assets/{react-root-CEz5NTck.js → react-root-DGLRLr-F.js} +1 -1
- package/dist/assets/react-story-board-CSqHY0Cg.js +1 -0
- package/dist/assets/{react-three-fiber.esm-CycrbDlA.js → react-three-fiber.esm-BxIoqVh1.js} +1 -1
- package/dist/assets/{react-three-rapier.esm-CEfKpvxT.js → react-three-rapier.esm-BYzLhdSV.js} +1 -1
- package/dist/assets/react-world-authoring-adapter-BMT9kLWU.js +1 -0
- package/dist/assets/{realm-services-CobQsq_X.js → realm-services-D25JHoqD.js} +1 -1
- package/dist/assets/{reflection-probe-Don-M3Fj.js → reflection-probe-CqXWlicu.js} +1 -1
- package/dist/assets/{reflection-probe-capture.inspector-CmFUoJCx.js → reflection-probe-capture.inspector-B7Qa30vB.js} +1 -1
- package/dist/assets/regions-DWeEBnE2.js +1 -0
- package/dist/assets/{register-render-vitals-BiZk29b2.js → register-render-vitals-BO7x64kR.js} +1 -1
- package/dist/assets/{registry-02YZjMNp.js → registry-DlTluc4x.js} +1 -1
- package/dist/assets/{render-audio-control-vMRlePWb.js → render-audio-control-DCa_bOBI.js} +1 -1
- package/dist/assets/{render-batch-system-0vq7p0VC.js → render-batch-system-CzCp9YKM.js} +1 -1
- package/dist/assets/{render-control-Df3yTiyr.js → render-control-BNQr1eNO.js} +1 -1
- package/dist/assets/{render-env-D2IV2x5k.js → render-env-emvlfeTG.js} +1 -1
- package/dist/assets/{render-features-CPQ_e568.js → render-features-COF7MSQ9.js} +1 -1
- package/dist/assets/{render-settings-Bw4W9SYF.js → render-settings-C_kIMq8Y.js} +1 -1
- package/dist/assets/{resolve-three-SZE_WWUM.js → resolve-three-C-nx-QdA.js} +13 -13
- package/dist/assets/{root-seam-contract-Z0VWX3Bk.js → root-seam-contract-C7GOxf5x.js} +1 -1
- package/dist/assets/{run-ticks-settled-C4ksViyA.js → run-ticks-settled-B0cTtmhQ.js} +1 -1
- package/dist/assets/{scene-capture-CGYF-Viw.js → scene-capture-CLOc7GXc.js} +1 -1
- package/dist/assets/{scene-capture-BQKzU0NT.js → scene-capture-D10Nxkvp.js} +1 -1
- package/dist/assets/scene-document.service-B7kAVTko.js +2 -0
- package/dist/assets/{scene-framing-Cat0GtyJ.js → scene-framing-50N7SKuX.js} +1 -1
- package/dist/assets/{scene-index-B6BZOHMk.js → scene-index-Bce459yu.js} +1 -1
- package/dist/assets/{scene-query-C7_N-TpI.js → scene-query-IUZhw6pA.js} +1 -1
- package/dist/assets/{schema-kl9-2B_J.js → schema-Iy-mbzll.js} +1 -1
- package/dist/assets/sculpt.layout-D-K5cLw6.js +1 -0
- package/dist/assets/{seeded-random-i3mtgBKZ.js → seeded-random-CN0scLZj.js} +1 -1
- package/dist/assets/{session-CZ5JPg-z.js → session-CsR0lApe.js} +24 -15
- package/dist/assets/{setup-audio-S8GQF91f.js → setup-audio-BJ18gvXZ.js} +1 -1
- package/dist/assets/setup-particles-B6H-GbAA.js +1 -0
- package/dist/assets/{setup-physics-BeZ7-LKD.js → setup-physics-GugbTT0J.js} +1 -1
- package/dist/assets/{setup-renderer-DVXaSGin.js → setup-renderer-wt_a-p8r.js} +20 -20
- package/dist/assets/shading.layout-CZZHKBer.js +1 -0
- package/dist/assets/{sim-clock-CLflx7kg.js → sim-clock-DEfbb_-P.js} +1 -1
- package/dist/assets/{soft-particle-depth-DGvfQDi1.js → soft-particle-depth-CKUS1j0Y.js} +1 -1
- package/dist/assets/source-object3d-authoring-adapter-CfHQLFAL.js +1 -0
- package/dist/assets/{source-persistence-backend-C-aR-B_Y.js → source-persistence-backend-_-JMEXxE.js} +1 -1
- package/dist/assets/{spark-renderer-lifecycle-ynWESJcv.js → spark-renderer-lifecycle-9mnMW3Z4.js} +1 -1
- package/dist/assets/{spark.module-4pXQoz5d.js → spark.module-CXth-y_a.js} +1 -1
- package/dist/assets/stage-keyboard-C0FdDLOQ.js +1 -0
- package/dist/assets/stage-overlay-set-CwhCzbOy.js +1 -0
- package/dist/assets/stage-presence-markers-DVMDKiB-.js +1 -0
- package/dist/assets/stage-transform-tools-B09Z7v0o.js +1 -0
- package/dist/assets/standard-viewport-dressing-GUUr6GuK.js +20 -0
- package/dist/assets/{state-watch.action-BOvQR2qt.js → state-watch.action-CgF8qoFC.js} +1 -1
- package/dist/assets/{state-watch.menu-CNLvDeeY.js → state-watch.menu-CIMncESW.js} +1 -1
- package/dist/assets/{state-watch.utility-Bg1tTTQU.js → state-watch.utility-zTHkUALC.js} +1 -1
- package/dist/assets/static-batch-advisor-DqfXWRUq.js +1 -0
- package/dist/assets/story-capture-COQgezzl.js +1 -0
- package/dist/assets/story-documents-DQ0KORmd.js +3 -0
- package/dist/assets/story-documents.service-DOSaqPqv.js +1 -0
- package/dist/assets/story-documents.service-Gb7oUkbg.js +1 -0
- package/dist/assets/{story-media-presence-BHzk2IV5.js → story-media-presence-nW3zJqKv.js} +1 -1
- package/dist/assets/story-pixi-preview-COPTEsHo.js +1 -0
- package/dist/assets/story-presentation-CxADj5oz.js +1 -0
- package/dist/assets/{story-three-preview-BHEDZzcl.js → story-three-preview-C9W__8Or.js} +2 -2
- package/dist/assets/{structural-ids-Dc-7rEwi.js → structural-ids-CblajJQK.js} +1 -1
- package/dist/assets/studio-CysTBGIb.exr +0 -0
- package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
- package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
- package/dist/assets/{surface-state-DaxyruCj.js → surface-state-BAUJu6GY.js} +1 -1
- package/dist/assets/{system-runner-DkOjxEBt.js → system-runner-D_DtVrer.js} +1 -1
- package/dist/assets/team-playtest.service--79O6xkx.js +1 -0
- package/dist/assets/{three-CDSueJyJ.js → three-DSsr_Lvp.js} +1 -1
- package/dist/assets/{three-authoring-adapter-CmSQ3Vui.js → three-authoring-adapter-Yqsank46.js} +1 -1
- package/dist/assets/three-authoring.service-BDos-bRt.js +2 -0
- package/dist/assets/{three-ingest-runtime-QzDYk6tU.js → three-ingest-runtime-DWijtqQ8.js} +1 -1
- package/dist/assets/{three-projection-core-BmKMZ-nf.js → three-projection-core-kubBTx0s.js} +1 -1
- package/dist/assets/three-story-model-BraQFA9h.js +1 -0
- package/dist/assets/three-viewport-presentation-BL7Uc2i6.js +1 -0
- package/dist/assets/{three.module-D396a9Mn.js → three.module-IFn-4i31.js} +1 -1
- package/dist/assets/three.quarks.esm-CRKGjKAH.js +1039 -0
- package/dist/assets/transform-mode-request-Cu7ewbtr.js +1 -0
- package/dist/assets/{transform-writer-BhBBTx33.js → transform-writer-DXxrI4t7.js} +1 -1
- package/dist/assets/transport.header-CeND8Vzh.js +1 -0
- package/dist/assets/{trigger-volume-BNK2XzPL.js → trigger-volume-BCVRS3NM.js} +1 -1
- package/dist/assets/{tuples-CIQ4Bn1U.js → tuples-DKDGrN1t.js} +1 -1
- package/dist/assets/ui-board-document-DD2CAEAo.js +2 -0
- package/dist/assets/unity.style-vCmLw4gI.js +1 -0
- package/dist/assets/unity.view-DIn2S6Do.js +1 -0
- package/dist/assets/unreal.style-BQn-HhOX.js +1 -0
- package/dist/assets/unreal.view-adNBETZK.js +1 -0
- package/dist/assets/user-data-CZqsJDk-.js +1 -0
- package/dist/assets/{utility-view-state-BHypxA33.js → utility-view-state-DYJY8V8O.js} +1 -1
- package/dist/assets/uv-editing.layout-A8RA-cbM.js +1 -0
- package/dist/assets/{vgai-shared-three-Bc5PvpLM.js → vgai-shared-three-D_RAEumG.js} +1 -1
- package/dist/assets/{viewport-root-presentation-CWsE56K6.js → viewport-root-presentation-C9M98VNM.js} +1 -1
- package/dist/assets/{viewport-shading-BuA88e_A.js → viewport-shading-BzcvgJhK.js} +1 -1
- package/dist/assets/viewport-shading-boundary-CBvvzS-p.js +84 -0
- package/dist/assets/{viewport-surface-status-B3om4Kcf.js → viewport-surface-status-BFmnWp7z.js} +1 -1
- package/dist/assets/voxel-surface-ROWYug7H.js +1 -0
- package/dist/assets/webgl-frame-capture-CRKX73E9.js +1 -0
- package/dist/assets/webworkerAll-CehoCtFb.js +1 -0
- package/dist/assets/{worker-UrMcrc5_.js → worker-B7zhIsFh.js} +2 -2
- package/dist/assets/world-documents-DErHq15h.js +1 -0
- package/dist/assets/world-root-stage-binding-BIymcQ4K.js +1 -0
- package/dist/assets/{world-state-BWG-IcOd.js → world-state-ZGDGY_Xl.js} +1 -1
- package/dist/assets/{writer-B-KovzkA.js → writer-BPbm4_my.js} +5 -5
- package/dist/assets/xstate-animation-binding-Cvd4JbEY.js +1 -0
- package/dist/assets/{xstate-animation-meta-Q3u9zh_m.js → xstate-animation-meta-B3OZR8Q2.js} +1 -1
- package/dist/vgai-shared-three.json +1 -1
- package/dist-node/cli.js +317 -73
- package/dist-node/create.js +59 -19
- package/package.json +16 -13
- package/src/index.ts +6 -0
- package/template/.agents/skills/vgai-3d-models/SKILL.md +3 -3
- package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +4 -9
- package/template/.claude/skills/vgai-3d-models/SKILL.md +3 -3
- package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +4 -9
- package/template/.github/skills/vgai-3d-models/SKILL.md +3 -3
- package/template/.github/skills/vgai-threejs-authoring/SKILL.md +4 -9
- package/template/AGENTS.md +1 -1
- package/template/check-idioms.ts +4 -5
- package/template/package.json +9 -9
- package/template/tsconfig.json +1 -0
- package/template/vgai.adapter.ts +1 -0
- package/template-dotfiles/gitignore +2 -0
- package/workbench/src/media/game-cover.css +1 -1
- package/catalog/project-source/src/lib/bake/mesh-slice.ts +0 -157
- package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +0 -1
- package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +0 -1
- package/dist/assets/ColladaLoader-aVOPIsCh.js +0 -3
- package/dist/assets/EXRLoader-Cdans_oJ.js +0 -1
- package/dist/assets/EffectComposer-DQxfsXBZ.js +0 -1
- package/dist/assets/EntityModelDocument-Ccvw66N9.js +0 -1
- package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +0 -1
- package/dist/assets/FBXLoader-B4MoUtAn.js +0 -1
- package/dist/assets/Fbo-Dz-Soul3.js +0 -1
- package/dist/assets/GLTFExporter-HgrCle4L.js +0 -1
- package/dist/assets/Gltf-UHVWKz65.js +0 -2
- package/dist/assets/HDRLoader-THU88oVD.js +0 -5
- package/dist/assets/ImageViewer-Tn7s_MnW.js +0 -1
- package/dist/assets/InspectorObjectPreview-CVejvLRg.js +0 -1
- package/dist/assets/JsonAssetDocument-C7VGcLhu.js +0 -3
- package/dist/assets/MeshBVH-BiDHDcu-.js +0 -1
- package/dist/assets/ModelAssetDocument-F5GACirk.js +0 -1
- package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +0 -2
- package/dist/assets/Object3DPreview-DL8oi7Xs.js +0 -2
- package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +0 -2
- package/dist/assets/PlayBar-BR-Vg3Jb.js +0 -2
- package/dist/assets/RGBELoader-BgBcQv8j.js +0 -1
- package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +0 -1
- package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +0 -1
- package/dist/assets/STLLoader-Dyv3lsxY.js +0 -1
- package/dist/assets/SimplifyModifier-C8ayvRzd.js +0 -1
- package/dist/assets/SourceAssetViewer-2SWQoUut.js +0 -12
- package/dist/assets/StageHost-BN-IoTef.js +0 -2
- package/dist/assets/ThreeBoardDocument-CVncZyIq.js +0 -2
- package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +0 -1
- package/dist/assets/asset-budget.action-DCzzcuTh.js +0 -1
- package/dist/assets/asset-budget.document-BWU8wnVW.js +0 -1
- package/dist/assets/asset-budget.menu-BGZpT_31.js +0 -1
- package/dist/assets/autoplay.service-BZBGNSvt.js +0 -1
- package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +0 -2
- package/dist/assets/blender-properties-tab-C5CyPydi.js +0 -3
- package/dist/assets/blender-runtime-host-BpBwGv7r.js +0 -4
- package/dist/assets/blender-runtime.document-lIYhhPtv.js +0 -8
- package/dist/assets/blender.command-BtJeWk-A.js +0 -1
- package/dist/assets/body-marks-h_xDxiDE.js +0 -1
- package/dist/assets/bridge.command-o5gDNEwa.js +0 -3
- package/dist/assets/browserAll-DeWblVez.js +0 -1
- package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +0 -2
- package/dist/assets/component-board.service-DidCyM4O.js +0 -2
- package/dist/assets/component-verbs.service-Bv9jId3q.js +0 -1
- package/dist/assets/constraints.inspector-B9U9Yj-u.js +0 -1
- package/dist/assets/coverage.service-VTX5Mcsx.js +0 -3
- package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +0 -2
- package/dist/assets/design-time-layers-wYgOTgni.js +0 -1
- package/dist/assets/design-time-mount.service-BzY21e1F.js +0 -2
- package/dist/assets/design-time-react-mount-DM9WLrF2.js +0 -1
- package/dist/assets/edit-mode-authoring-B47TfLqu.js +0 -1
- package/dist/assets/editor-api-BoJIcyZG.js +0 -1
- package/dist/assets/fflate.module-DPuTF8aG.js +0 -6
- package/dist/assets/fork-menu-BoVyw2Wu.js +0 -1
- package/dist/assets/game-document.service-DbRfx2V0.js +0 -1
- package/dist/assets/game-eval.command-D-7Dxbj_.js +0 -2
- package/dist/assets/gameplay-replay-e5umMlXv.js +0 -1
- package/dist/assets/gameplay.command-DxcVYX6F.js +0 -1
- package/dist/assets/generation.service-CDIgObuw.js +0 -1
- package/dist/assets/index-96FBF1Oj.js +0 -1
- package/dist/assets/index-BAWkB0dv.js +0 -1
- package/dist/assets/index-BDnS2b6S.js +0 -1
- package/dist/assets/index-BjTCPEQ7.js +0 -134
- package/dist/assets/index-CVCb_ImQ.js +0 -1
- package/dist/assets/index-CZd9o7Lu.js +0 -1
- package/dist/assets/index-D2fNXpHa.css +0 -1
- package/dist/assets/index-GIL7oGEO.js +0 -4894
- package/dist/assets/index-OrYXPk3Z.js +0 -487
- package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +0 -1
- package/dist/assets/ingest-siblings-Bop2kqVl.js +0 -1
- package/dist/assets/instances.command-D6UkZNO8.js +0 -1
- package/dist/assets/light-camera-factory-CWbbe9gI.js +0 -1
- package/dist/assets/live-behaviors-Bxq49Maz.js +0 -1
- package/dist/assets/matcap-texture-CVfalpWT.js +0 -1
- package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +0 -1
- package/dist/assets/model.layout-BJUEQYUI.js +0 -1
- package/dist/assets/module-mode-DVBLT9d-.js +0 -2
- package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +0 -2
- package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +0 -2
- package/dist/assets/mount-ingest-root-glv2SSWf.js +0 -2
- package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +0 -1
- package/dist/assets/particles-factory-DnLOHXT8.js +0 -1
- package/dist/assets/pasteboard-materialize-BqSS4QzV.js +0 -20
- package/dist/assets/pasteboard.action-DU3UHtJG.js +0 -2
- package/dist/assets/pixi-authoring-adapter-CjibysC3.js +0 -1
- package/dist/assets/pixi-primitive-DlWbUPN9.js +0 -1
- package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +0 -1
- package/dist/assets/play-mode-BFU2PCkG.js +0 -22
- package/dist/assets/play.command-BpqqLqkq.js +0 -2
- package/dist/assets/project-authoring-session-Bnt6icLr.js +0 -2
- package/dist/assets/r3f-design-session-D-4yyDO9.js +0 -2
- package/dist/assets/r3f-physics-binding-BBo8oma9.js +0 -1
- package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +0 -13
- package/dist/assets/react-inspector.service-B_neRnSK.js +0 -1
- package/dist/assets/react-story-board-BDDwiE2H.js +0 -1
- package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +0 -1
- package/dist/assets/runtime-inspection-l2iFQSsg.js +0 -1
- package/dist/assets/scene-document.service-qkDjUrlP.js +0 -2
- package/dist/assets/sculpt.layout-zJF55yCR.js +0 -1
- package/dist/assets/setup-particles-GCXlnkj_.js +0 -1
- package/dist/assets/shading.layout-DULYZV6M.js +0 -1
- package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +0 -1
- package/dist/assets/stage-invalidation-DBg3C3Ta.js +0 -1
- package/dist/assets/stage-keyboard-n-5kKH-m.js +0 -1
- package/dist/assets/stage-overlay-set-B9zp2sLB.js +0 -1
- package/dist/assets/stage-presence-markers-DiGI6A45.js +0 -1
- package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +0 -7
- package/dist/assets/static-batch-advisor-B13QEH7d.js +0 -1
- package/dist/assets/story-capture-_gC8dXV-.js +0 -1
- package/dist/assets/story-documents--TDLaPeL.js +0 -3
- package/dist/assets/story-documents.service-BiS_YbNQ.js +0 -1
- package/dist/assets/story-documents.service-CxOPYJ2j.js +0 -1
- package/dist/assets/story-pixi-preview-BUrOJZXS.js +0 -1
- package/dist/assets/story-presentation-j2AVN-mK.js +0 -1
- package/dist/assets/team-playtest.service-DqOinFVA.js +0 -1
- package/dist/assets/three-authoring.service-iuHLwtf1.js +0 -2
- package/dist/assets/three-viewport-presentation-QBQpSdMh.js +0 -1
- package/dist/assets/three.quarks.esm-B1C61jGo.js +0 -1039
- package/dist/assets/transport.header-B-6HQlU2.js +0 -1
- package/dist/assets/ui-board-document-Bwtt--xp.js +0 -2
- package/dist/assets/use-live-actor-state-DErbWQWF.js +0 -1
- package/dist/assets/user-data-BB2Of6Ht.js +0 -1
- package/dist/assets/uv-editing.layout-BEKHxmHw.js +0 -1
- package/dist/assets/viewport-shading-boundary-B_-_gABg.js +0 -82
- package/dist/assets/voxel-surface-DtcsSWRL.js +0 -1
- package/dist/assets/webgl-frame-capture-FlF9zQmW.js +0 -1
- package/dist/assets/webworkerAll-CM2o_dnz.js +0 -1
- package/dist/assets/world-documents-147tiFZe.js +0 -1
- package/dist/assets/world-root-stage-binding-vwTrtBz6.js +0 -1
- package/dist/assets/xstate-animation-binding-Brd0NST6.js +0 -1
- package/dist/assets/xstate-behavior.action-B8UluFBK.js +0 -1
- package/dist/assets/xstate-behavior.document-CKAsE45I.js +0 -1
- package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +0 -1
- package/dist/assets/xstate-behavior.menu-BXbPICIh.js +0 -1
- package/dist/assets/xstate-inspection-BsZv8LS9.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DUh02lTr.js","assets/three.module-IFn-4i31.js","assets/stage-transform-tools-B09Z7v0o.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-Ckxb31Yz.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-B4bmKkgY.css","assets/Toolbar-keHcSvDD.js","assets/transform-mode-request-Cu7ewbtr.js","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","assets/stage-overlay-set-CwhCzbOy.js","assets/TransientHint-Dlslh3oX.js","assets/ViewportShadingMenu-C7Hdhtca.js","assets/three-viewport-presentation-BL7Uc2i6.js","assets/stage-keyboard-C0FdDLOQ.js","assets/camera-authoring-Ci3KnE-W.js","assets/stage-presence-markers-DVMDKiB-.js","assets/collaboration-presence-CSLFNT7m.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{m5 as qt,fK as lr,d$ as Kt,X as Kr,f9 as Xr,m6 as Yr,lQ as Zr,fG as ur,_ as je,c7 as Jr,ai as Xt,m7 as Qr,kp as dr,ap as ve,bV as me,a6 as ge,a7 as ae,bD as en,aa as pt,eF as tn,bU as Ve,ao as sn,m8 as rn,m9 as nn,ma as on,mb as an,mc as cn,md as ln,b4 as un,me as hr,aO as dn,gI as hn,mf as Hs,mg as Bs,mh as Ls,b1 as Ds,mi as pn,g7 as Is,bQ as fn,bO as mn,mj as gn,kr as vn,bS as Ws,g0 as Vs,mk as bn,ml as zs,mm as wn,mn as yn,i4 as Sn,gh as xn,kT as Pn,mo as Ns,mp as kn,kL as Mn,hh as Cn,fN as En,mq as Gs,mr as Rn,ms as On,lP as jn,mt as Tn,cf as Fn,ib as An,mu as _n}from"./index-Ckxb31Yz.js";import{a as h}from"./jsx-runtime-DPjLkJKQ.js";import{i as U,b as Hn,a as Bn,w as Ln,c as Dn,s as Us}from"./standard-viewport-dressing-GUUr6GuK.js";import{r as f}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{a as In}from"./live-mixers-BRkRHd6g.js";import{A as Wn,H as Vn,r as pr,a0 as $s,aj as zn,x as gt,al as Nn,b4 as Gn,b9 as Un,y as $n,v as se,aU as bt,ax as qn,ay as Kn,aX as Xn,a_ as Yn,V as K,an as fr,cG as qs,j as Yt,m as Zn,h as Jn,aZ as Qn,cw as ei,aW as ti,J as Ks,ac as si,S as ri,o as mr,t as gr,s as ni,cd as ii,ao as Xs,g as ft,q as Ys,a as Zs}from"./three.module-IFn-4i31.js";import{l as oi,w as ai}from"./live-gesture-lock-DJbrjOqf.js";import{d as ci,e as li}from"./model-inspection-Cxfg_Fei.js";import{s as Zt,b as mt,d as ui,p as vt,c as Js,i as Qs,r as di,a as hi,l as vr,e as pi,C as fi,n as er,E as mi}from"./viewport-shading-boundary-CBvvzS-p.js";import{a as gi,b as vi,L as bi}from"./LineSegments2-Cicm_Hu1.js";import{S as wi}from"./source-object3d-authoring-adapter-CfHQLFAL.js";import{s as yi,i as Vt}from"./editor-presentation-activity-C7SNSmTd.js";import{V as Si,O as xi}from"./viewport-surface-status-BFmnWp7z.js";const br=30;function wr(n,e,t){return n<e?e:n>t?t:n}function Pi(n,e){const t=n.animations;if(t.length===0)return null;const r=new Wn(n);let i=t[0];if(!i)return null;const a=o=>{r.stopAllAction();const d=r.clipAction(o);d.paused=!0,d.play(),i=o};a(i);const u=e.attach({id:n.uuid,label:n.name||i.name||"Clip",range:()=>({start:0,end:i?.duration??0,fps:br}),seek:o=>{r.setTime(wr(o,0,i?.duration??0))},clips:()=>t.map(o=>({id:o.name,label:o.name})),setClip:o=>{const d=t.find(y=>y.name===o);d&&a(d)}});return()=>{u(),r.stopAllAction(),r.uncacheRoot(n)}}function ki(n,e){const t=In(n);if(!t)return null;const r=[...t.clips.entries()];let i=r[0]?.[1];if(!i)return null;const a=o=>{t.mixer.stopAllAction();const d=t.mixer.clipAction(o);d.paused=!0,d.play(),i=o};return e.attach({id:n.uuid,label:n.name||i.name||"Animation",range:()=>({start:0,end:i?.duration??0,fps:br}),seek:o=>{t.mixer.setTime(wr(o,0,i?.duration??0))},clips:()=>r.map(([o,d])=>({id:o,label:d.name||o})),setClip:o=>{const d=t.clips.get(o);d&&a(d)}})}function tr(n,e){const t=new Map,r=()=>{const i=new Set;n.traverse(a=>{if(t.has(a.uuid)){i.add(a.uuid);return}const u=ki(a,e)??Pi(a,e);u&&(t.set(a.uuid,u),i.add(a.uuid))});for(const[a,u]of[...t])i.has(a)||(u(),t.delete(a))};return r(),{refresh:r,dispose:()=>{for(const i of t.values())i();t.clear()}}}const fe=()=>globalThis.performance?.now()??Date.now();function Mi(n,e){return n.length===0?0:n[Math.min(n.length-1,Math.floor((n.length-1)*e))]??0}function Ci(n=!1){const e=new Set,t=[],r=new Map,i=new Map,a=new Map;let u=[],o=[],d=n,y=!1,E=!1,g=0,D=0,x=0;const z=[];let $=0,G=0,O={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},P={enabled:d,recording:E,fps:0,cpuMs:0,p95Ms:0,p99Ms:0,frames:[],phases:[],systems:[],components:[],render:O};function R(){const v=t.at(-1),H=t.slice();let T;const I=j=>(T??=H.map(C=>C.intervalMs).filter(C=>C>0).sort((C,ee)=>C-ee),Mi(T,j));P={enabled:d,recording:E,fps:v?.intervalMs?1e3/v.intervalMs:0,cpuMs:v?.cpuMs??0,get p95Ms(){return I(.95)},get p99Ms(){return I(.99)},frames:H,phases:v?.phases??[],systems:[...i].map(([j,C])=>({name:j,ms:C})).sort((j,C)=>C.ms-j.ms),components:[...a].map(([j,C])=>({name:j,ms:C})).sort((j,C)=>C.ms-j.ms),render:O};for(const j of e)j()}return{get enabled(){return d},set enabled(v){d!==v&&(d=v,v&&!y&&(x=0),R())},get telemetryEnabled(){return y},set telemetryEnabled(v){if(y===v)return;const H=!d&&!y;y=v,v&&H&&(x=0),R()},get recording(){return E},startRecording(){const v=!d&&!y;d=!0,v&&(x=0),E=!0,t.length=0,R()},stopRecording(){E=!1,R()},clear(){t.length=0,R()},beginFrame(){!d&&!y||(r.clear(),i.clear(),a.clear(),u=[],o=[],z.length=0,O={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},D=fe())},beginPhase(){d&&z.push(fe())},endPhase(v){if(!d)return;const H=z.pop()??D,T=fe()-H,I=r.get(v);r.set(v,{ms:(I?.ms??0)+T,startMs:I?.startMs??H-D}),E&&performance.measure(`vgai.phase.${v}`,{start:H,duration:T})},systemObserver:{beginSystem(){d&&($=fe())},endSystem(v,H,T){if(!d)return;const I=fe(),j=`${v} / ${H} / ${T}`;i.set(j,(i.get(j)??0)+I-$),u.push({name:j,phase:H,startMs:$-D,ms:I-$})}},beginComponent(){E&&(G=fe())},endComponent(v,H=""){if(!E)return;const T=fe();a.set(v,(a.get(v)??0)+T-G),o.push({name:v,phase:H,startMs:G-D,ms:T-G})},reportRender(v){d&&(O={gpuMs:v.gpuMs??O.gpuMs,drawCalls:O.drawCalls+v.drawCalls,triangles:O.triangles+v.triangles,geometries:O.geometries+v.geometries,textures:O.textures+v.textures,renderPasses:v.renderPasses===void 0?O.renderPasses:(O.renderPasses??0)+v.renderPasses})},endFrame(){if(!d&&!y)return;const v=fe(),H=x===0?0:D-x;x=D;const T={id:++g,timestamp:v,intervalMs:H,cpuMs:v-D,phases:[...r].map(([I,{ms:j,startMs:C}])=>({name:I,ms:j,startMs:C})).sort((I,j)=>j.ms-I.ms),systems:u.slice(),components:o.slice(),render:{...O}};t.push(T),t.length>600&&t.splice(0,t.length-600),E&&performance.measure("vgai.frame",{start:D,duration:T.cpuMs}),R()},subscribe(v){return e.add(v),()=>{e.delete(v)}},getSnapshot(){return P},exportJSON(){return JSON.stringify({version:2,capturedAt:new Date().toISOString(),frames:t},null,2)}}}const yr=256;function Ei(n){const e=Math.min(1,Math.max(0,n));return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}function zt(n,e,t){const r=Math.hypot(n,e,t)||1;return[n/r,e/r,t/r]}function Ri(n=yr){const e=document.createElement("canvas");e.width=n,e.height=n;const t=e.getContext("2d");if(!t)return e;const r=t.createImageData(n,n),i=zt(-.45,.62,.64),a=zt(.65,-.35,.5),u=zt(i[0],i[1],i[2]+1),o=[.7,.69,.68],d=[.34,.4,.52],y=[.85,.88,1];for(let E=0;E<n;E++)for(let g=0;g<n;g++){const D=(g+.5)/n/.5-1,x=1-(E+.5)/n/.5,z=D*D+x*x,$=z>1,G=$?1/Math.sqrt(z):1,O=D*G,P=x*G,R=$?0:Math.sqrt(Math.max(0,1-z)),v=Math.max(0,O*i[0]+P*i[1]+R*i[2]),H=Math.max(0,O*a[0]+P*a[1]+R*a[2]),T=Math.max(0,O*u[0]+P*u[1]+R*u[2])**42*.5,I=(1-R)**3.2*.4,j=(E*n+g)*4;for(let C=0;C<3;C++){const ee=o[C]*(.16+.8*v)+d[C]*.3*H+y[C]*I+T;r.data[j+C]=Math.round(Ei(ee)*255)}r.data[j+3]=255}return t.putImageData(r,0,0),e}function Oi(n=yr){const e=new Vn(Ri(n));return e.colorSpace=pr,e.minFilter=$s,e.magFilter=$s,e.generateMipmaps=!1,e.needsUpdate=!0,e}function ji(n){return n.color?.clone()??new se(12502993)}function Nt(n,e){return n[e]??null}class Ti{_derived=new Map;_normals=new zn;_matcap=null;_matcapTexture=null;_overdraw=new gt({color:16777215,transparent:!0,opacity:.08,depthTest:!1,depthWrite:!1,blending:Gn,side:Nn,toneMapped:!1});render(e,t,r,i=()=>!0){if(t==="solid"){r();return}const a=[];e.traverse(u=>{const o=u;!o.isMesh||!o.material||!i(o)||(a.push({mesh:o,material:o.material}),o.material=Array.isArray(o.material)?o.material.map(d=>this._materialFor(d,t)):this._materialFor(o.material,t))});try{r()}finally{for(const{mesh:u,material:o}of a)u.material=o}}dispose(){for(const e of this._derived.values())e.clay.dispose(),e.unlit.dispose(),e.wireframe.dispose();this._derived.clear(),this._normals.dispose(),this._overdraw.dispose(),this._matcap?.dispose(),this._matcapTexture?.dispose(),this._matcap=null,this._matcapTexture=null}_materialFor(e,t){if(t==="normals")return this._normals;if(t==="overdraw")return this._overdraw;if(t==="matcap")return this._matcap||(this._matcapTexture=Oi(),this._matcap=new Un({matcap:this._matcapTexture,toneMapped:!1})),this._matcap;let r=this._derived.get(e);if(!r){const i={color:ji(e),map:Nt(e,"map"),alphaMap:Nt(e,"alphaMap"),alphaTest:e.alphaTest,opacity:e.opacity,transparent:e.transparent,side:e.side,depthTest:e.depthTest,depthWrite:e.depthWrite,vertexColors:!!e.vertexColors,fog:e.fog??!0};r={clay:new $n({color:11450048,roughness:.82,metalness:0,flatShading:!0,alphaMap:Nt(e,"alphaMap"),alphaTest:e.alphaTest,opacity:e.opacity,transparent:e.transparent,side:e.side,depthTest:e.depthTest,depthWrite:e.depthWrite}),unlit:new gt(i),wireframe:new gt({...i,wireframe:!0})},this._derived.set(e,r)}return r[t]}}class Fi extends bt{constructor(e,t){super(),this.bones=e;const r=new Set;for(const o of e){const d=o.parent;d?.isBone&&this.addSegment(d,o,r);for(const y of o.children)y.isBone&&this.addSegment(o,y,r)}this.linePositions=new Float32Array(Math.max(this.segments.length*6,6));const i=new gi;i.setPositions(this.linePositions),this.lineMaterial=new vi({color:t,linewidth:5,worldUnits:!1,depthTest:!1,depthWrite:!1,toneMapped:!1,alphaToCoverage:!0}),this.lines=new bi(i,this.lineMaterial),this.lines.onBeforeRender=o=>{o.getSize(this.lineMaterial.resolution)},this.lines.frustumCulled=!1,this.lines.renderOrder=1001,this.add(this.lines),this.pointPositions=new Float32Array(Math.max(e.length*3,3));const a=new qn;a.setAttribute("position",new Kn(this.pointPositions,3));const u=new Xn({color:t,size:11,sizeAttenuation:!1,depthTest:!1,depthWrite:!1,toneMapped:!1});this.points=new Yn(a,u),this.points.frustumCulled=!1,this.points.renderOrder=1002,this.add(this.points),this.name="__object3d_document_bone_selection",qt(this,"editorHelper",!0),this.traverse(o=>o.layers.set(lr)),this.update()}segments=[];linePositions;pointPositions;lines;lineMaterial;points;worldPosition=new K;setColor(e){this.lineMaterial.color.setHex(e),this.points.material.color.setHex(e)}update(){let e=0;for(const[i,a]of this.segments)i.getWorldPosition(this.worldPosition),this.linePositions.set(this.worldPosition.toArray(),e),a.getWorldPosition(this.worldPosition),this.linePositions.set(this.worldPosition.toArray(),e+3),e+=6;const t=this.lines.geometry.getAttribute("instanceStart");t&&(t.data.needsUpdate=!0),e=0;for(const i of this.bones)i.getWorldPosition(this.worldPosition),this.pointPositions.set(this.worldPosition.toArray(),e),e+=3;const r=this.points.geometry.getAttribute("position");r&&(r.needsUpdate=!0)}dispose(){this.lines.geometry.dispose(),this.lineMaterial.dispose(),this.points.geometry.dispose(),this.points.material.dispose()}addSegment(e,t,r){const i=`${e.uuid}:${t.uuid}`;r.has(i)||(r.add(i),this.segments.push([e,t]))}}const Ai="skeletons",Gt=new se(58879),Ut=new se(16756736);function _i(n){const e=n.geometry.getAttribute("color");for(let r=0;r<e.count;r+=2)e.setXYZ(r,Gt.r,Gt.g,Gt.b),r+1<e.count&&e.setXYZ(r+1,Ut.r,Ut.g,Ut.b);e.needsUpdate=!0,n.renderOrder=999;const t=n.material;t.depthTest=!1,t.depthWrite=!1,t.toneMapped=!1,qt(n,"editorHelper",!0),qt(n,"editorHelperType",Ai),n.traverse(r=>r.layers.set(lr))}const Hi=1,Bi=700,Li=.001,Di=Math.PI-.001,Ii=n=>n<.5?4*n*n*n:1-(-2*n+2)**3/2,Wi=n=>n;function Re(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}const sr={mode:"solid",background:"neutral",projection:"perspective",skeleton:!1,bounds:!1};class Vi{constructor(e,t,r,i,a,u,o=new se(2106410),d=null){this.documentId=e,this.root=t,this.scene=r,this.renderer=i,this.viewport=a,this.authoring=u,this.neutralBackground=o,this.frameBox=d,this.unsubscribeSelectionTheme=Zt(i.domElement,this.syncSelectionTheme),a.orbitControls.addEventListener("start",this.cancelLookForHuman)}profiler=Ci();shading=new Ti;helpers=[];skeletonHelper=null;boundsHelper=null;boneSelectionHighlight=null;boneSelectionSignature="";composer=null;composerLoading=!1;disposed=!1;sceneRenderPass=null;selectionOutline=null;selectionOutlinePass=null;selectedObjects=[];renderWidth=1;renderHeight=1;orthographicCamera=new fr;captureAspect=null;cameraOverride=null;beforeRender=null;state=sr;version=0;listeners=new Set;unsubscribeSelectionTheme=()=>{};flight=null;flightPose=new K;topologyOverlay=null;topologyFollowers=[];replaceContent(e,t){U(),this.selectionOutline?.selection.clear(),this.selectedObjects=[],this.boneSelectionSignature="",this.clearBoneSelectionHighlight(),this.clearSkeletonHelper(),this.clearBoundsHelper(),this.clearTopologyOverlay(),this.root=e,this.authoring=t,this.state.mode==="wireframe"&&this.buildTopologyOverlay(),this.state.bounds&&(this.boundsHelper=new qs(e,16757844),this.addHelper(this.boundsHelper,"bounds")),this.syncSelectionPresentation(),this.refreshSkeletonHelper(),this.notify()}cancelLookForHuman=()=>{this.settleFlight("human")};syncSelectionTheme=()=>{const e=mt(this.renderer.domElement).visible;this.selectionOutline&&ui(this.selectionOutline,mt(this.renderer.domElement)),this.boneSelectionHighlight?.setColor(e)};subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));getSnapshot=()=>this.version;presentation(){return this.state}resolveFrameBounds(){const e=this.authoring?.selection?.get()??[];if(e.length>0){const t=new Yt;let r=!1;for(const i of e){const a=this.authoring?.hierarchy.object3D?.(i);if(!a)continue;const u=Kt(a);u.isEmpty()||(t.union(u),r=!0)}if(r)return t}return this.frameBox&&!this.frameBox.isEmpty()?this.frameBox:Kt(this.root)}frame(e=1){const t=this.resolveFrameBounds();if(t.isEmpty()){let o=0,d=0;return this.root.traverse(y=>{const E=y.geometry;E&&(o+=1,d+=E.getAttribute("position")?.count??0)}),Kr.warn(`frame: nothing to frame — root "${this.root.name}" (${this.root.children.length} children, ${o} meshes, ${d} positions), selection ${JSON.stringify(this.authoring?.selection?.get()??[])}, frameBox ${this.frameBox?this.frameBox.isEmpty()?"empty":"set":"none"}`,"document"),!1}this.settleFlight("superseded");const r=t.getCenter(new K),i=this.viewport.camera.position.clone().sub(this.viewport.orbitControls.target).normalize();i.lengthSq()===0&&i.set(.8,.5,-1).normalize();const a=Math.min(10,Math.max(.1,Re(e,1))),u=vt(t,this.viewport.camera,i)*a;return this.viewport.setPose(r.clone().addScaledVector(i,u),r),!0}orbit(e){return this.launchFlight(Re(e.azimuth,0),Re(e.elevation,0),Math.min(60,Math.max(0,Re(e.duration,.6))),Ii)}turntable(e){const t=Re(e.revolutions,1);return this.launchFlight(t*Math.PI*2,0,Math.min(60,Math.max(0,Re(e.seconds,6))),Wi)}looking(){return this.flight!==null}launchFlight(e,t,r,i){this.settleFlight("superseded");const a=this.viewport.camera,u=this.viewport.orbitControls.target.clone(),o=new Zn().setFromVector3(a.position.clone().sub(u)),d=o.radius>1e-4?o.radius:Math.max(this.resolveFrameBounds().getSize(new K).length(),1),y={pivot:u,radius:d,startTheta:o.theta,startPhi:o.phi,deltaTheta:e,deltaPhi:-t,duration:r,ease:i,elapsed:0,theta:o.theta,phi:o.phi,settle:null};this.flight=y;const E=new Promise(g=>{y.settle=g});return this.applyFlightPose(y,0),r<=0&&this.settleFlight(null),E}applyFlightPose(e,t){const r=e.ease(t);e.theta=e.startTheta+e.deltaTheta*r,e.phi=Math.min(Di,Math.max(Li,e.startPhi+e.deltaPhi*r));const i=this.viewport.camera;i.position.setFromSphericalCoords(e.radius,e.phi,e.theta).add(e.pivot),this.viewport.orbitControls.target.copy(e.pivot),i.lookAt(e.pivot),i.updateMatrixWorld(),this.flightPose.copy(i.position)}advanceLook(e){const t=this.flight;if(!t)return;const r=Math.max(1e-4,t.radius*.001);if(this.viewport.camera.position.distanceToSquared(this.flightPose)>r*r){this.settleFlight("human");return}e>0&&Number.isFinite(e)&&(t.elapsed+=e);const i=t.duration<=0?1:Math.min(1,t.elapsed/t.duration);this.applyFlightPose(t,i),i>=1&&this.settleFlight(null)}settleFlight(e){const t=this.flight;if(!t)return;this.flight=null;const r={completed:e===null,azimuth:t.theta,elevation:Math.PI/2-t.phi,seconds:Math.min(t.elapsed,t.duration)};t.settle?.(e===null?r:{...r,cancelledBy:e})}select(e){U(),this.authoring&&Xr(this.authoring,[...e])}selection(){return[...this.authoring?.selection?.get()??[]]}idForObject(e){return this.authoring?.hierarchy.idForObject3D?.(e)??null}syncSelectionPresentation(){U();const e=(this.authoring?.selection?.get()??[]).map(i=>this.authoring?.hierarchy.object3D?.(i)??null).filter(i=>i!==null);this.selectedObjects=e,this.selectionOutline&&(Js(this.selectionOutline,this.selectionOutlineWanted?e:[]),this.syncComposerOutput());const t=e.filter(i=>!!i.isBone),r=t.map(i=>i.uuid).join("\0");r!==this.boneSelectionSignature&&(this.boneSelectionSignature=r,this.clearBoneSelectionHighlight(),t.length>0&&(this.boneSelectionHighlight=new Fi(t,mt(this.renderer.domElement).visible),this.scene.add(this.boneSelectionHighlight)),this.refreshSkeletonHelper())}frameSelection(){return this.frameIds(this.authoring?.selection?.get()??[])}frameIds(e){this.settleFlight("superseded");const t=e.map(r=>this.authoring?.hierarchy.object3D?.(r)??null).filter(r=>r!==null);return t.length===0?!1:t.every(r=>r.isBone)?(this.frameBones(t),!0):(this.viewport.focusOnMultiple(t),!0)}setViewPreset(e){U(),this.settleFlight("superseded");const t=this.resolveFrameBounds();if(t.isEmpty())return;const r=t.getCenter(new K),i=ci(e),a=vt(t,this.viewport.camera,i),u=r.clone().addScaledVector(i,a);this.viewport.camera.up.set(0,e==="top"?0:1,e==="top"?-1:0),this.viewport.setPose(u,r),this.setProjection(e==="isometric"?"perspective":"orthographic")}setCameraPose(e,t,r){U(),this.settleFlight("superseded"),this.viewport.setPose(e,t,r)}cameraPose(){return{position:this.viewport.camera.position.toArray(),target:this.viewport.orbitControls.target.toArray(),fov:this.viewport.camera.fov}}camera(){return this.cameraOverride?this.cameraOverride:this.state.projection==="perspective"?this.viewport.camera:(this.syncOrthographicCamera(),this.orthographicCamera)}projection(){return this.state.projection}setProjection(e){U(),this.state.projection!==e&&(this.state={...this.state,projection:e},this.notify())}setMode(e){U(),this.state.mode!==e&&(this.clearDiagnosticPresentation(),this.state={...this.state,mode:e},e==="uv"?this.scene.overrideMaterial=new Jn({vertexShader:"varying vec2 vUv; void main(){ vUv=uv; gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0); }",fragmentShader:"varying vec2 vUv; void main(){ gl_FragColor=vec4(vUv,0.0,1.0); }"}):e==="vertex-colors"?this.scene.overrideMaterial=new gt({vertexColors:!0}):e==="wireframe"&&this.buildTopologyOverlay(),this.notify())}buildTopologyOverlay(){const e=new bt,t=[];this.root.updateMatrixWorld(!0),this.root.traverse(r=>{const i=r;if(!i.isMesh||!i.geometry)return;const a=new Qn(new ei(i.geometry,Hi),new ti({color:1119773,toneMapped:!1,transparent:!0,opacity:.85,depthTest:!1,depthWrite:!1}));a.matrixAutoUpdate=!1,a.matrixWorldAutoUpdate=!1,a.matrixWorld.copy(i.matrixWorld),a.frustumCulled=!1,a.renderOrder=2,e.add(a),t.push({line:a,source:i})}),t.length!==0&&(this.topologyOverlay=e,this.topologyFollowers=t,this.addHelper(e,"topology"))}syncTopologyOverlay(){this.topologyFollowers.some(({source:e})=>e.parent===null)&&(this.clearTopologyOverlay(),this.buildTopologyOverlay());for(const{line:e,source:t}of this.topologyFollowers)e.matrixWorld.copy(t.matrixWorld),e.visible=t.visible}clearTopologyOverlay(){for(const{line:r}of this.topologyFollowers.splice(0))r.geometry.dispose(),r.material.dispose();const e=this.topologyOverlay;if(this.topologyOverlay=null,!e)return;e.removeFromParent();const t=this.helpers.indexOf(e);t>=0&&this.helpers.splice(t,1)}setBounds(e){U(),this.state.bounds!==e&&(this.state={...this.state,bounds:e},e?(this.boundsHelper=new qs(this.root,16757844),this.addHelper(this.boundsHelper,"bounds")):this.clearBoundsHelper(),this.notify())}setSkeleton(e){U(),this.state.skeleton!==e&&(this.state={...this.state,skeleton:e},this.refreshSkeletonHelper(),this.notify())}neutralBackgroundTexture(){return this.neutralBackground}setNeutralBackground(e){U();const t=this.scene.background,r=this.neutralBackground,i=t===r||t instanceof se&&r instanceof se&&t.equals(r);this.neutralBackground=e,i&&(this.scene.background=e)}setBackground(e){U(),this.state.background!==e&&(this.scene.background=e==="transparent"?null:this.neutralBackground,this.state={...this.state,background:e},this.notify())}resetPresentation(){U(),Yr(this.documentId),this.clearDiagnosticPresentation(),this.state=sr,this.refreshSkeletonHelper(),this.clearBoundsHelper(),this.scene.background=this.neutralBackground,this.viewport.camera.up.set(0,1,0),this.frame(),this.notify()}setBeforeRender(e){this.beforeRender=e}presentedFrameWaiters=[];presentsFrames=!1;setPresentsFrames(e){this.presentsFrames=e,e||this.resolvePresentedFrame(null)}requestPresentedFrame(){return this.presentsFrames?new Promise(e=>{let t=!1;const r=i=>{t||(t=!0,e(i))};this.presentedFrameWaiters.push(r),U(),setTimeout(()=>r(null),Bi)}):Promise.resolve(null)}needsFrame(){return this.flight!==null||this.presentedFrameWaiters.length>0}servePresentedFrame(){if(this.presentedFrameWaiters.length===0)return;const e=this.renderer.domElement,t=document.createElement("canvas");t.width=Math.max(1,e.width),t.height=Math.max(1,e.height);const r=t.getContext("2d");if(!r){this.resolvePresentedFrame(null);return}r.drawImage(e,0,0),this.resolvePresentedFrame(t)}resolvePresentedFrame(e){const t=this.presentedFrameWaiters;this.presentedFrameWaiters=[];for(const r of t)r(e)}render(e){this.beforeRender?.(),this.boneSelectionHighlight?.update();const t=this.camera(),r=this.state.mode;if(this.boundsHelper?.update(),r==="uv"||r==="vertex-colors"){e(t);return}if(r==="wireframe"&&this.topologyOverlay){this.syncTopologyOverlay(),this.shading.render(this.scene,"clay",()=>e(t),Qs);return}this.shading.render(this.scene,r,()=>e(t),Qs)}renderViewport(e=0){this.advanceLook(e),this.ensureComposer(),this.render(t=>{const r=this.composer;if(!r){this.renderer.render(this.scene,t);return}r.setMainScene(this.scene),r.setMainCamera(t),r.render(e)})}resize(e,t){U(),this.renderWidth=Math.max(1,e),this.renderHeight=Math.max(1,t),this.composer?.setSize(this.renderWidth,this.renderHeight)}renderCapture(e,t){this.render(r=>{if(!t){e(r);return}const i=this.scene.background,a=this.renderer.getClearColor(new se),u=this.renderer.getClearAlpha();try{this.scene.background=null,this.renderer.setClearColor(0,0),e(r)}finally{this.scene.background=i,this.renderer.setClearColor(a,u)}})}captureImage(e=512){const t=typeof e=="number"?e:e.width,r=typeof e=="number"?e:e.height;if(!Number.isFinite(t)||t<1||!Number.isFinite(r)||r<1)return null;const i=Math.min(2048,Math.round(t)),a=Math.min(2048,Math.round(r)),u=i*2,o=a*2,d=new Ks(u,o,{type:si}),y=new Ks(u,o),E=this.renderer.getRenderTarget(),g=this.renderer.getPixelRatio(),D=this.viewport.camera,x=D.aspect;try{this.captureAspect=i/a;const z=typeof e=="number"?void 0:e.camera;z?this.cameraOverride=z:(D.aspect=i/a,D.updateProjectionMatrix()),this.renderer.setPixelRatio(1),this.renderer.setRenderTarget(d),this.renderCapture(T=>this.renderSolidForCapture(T,d,u,o),typeof e!="number"&&e.transparent===!0),Zr(typeof e!="number"&&e.transparent===!0).render(this.renderer,y,d,0,!1);const $=u*4,G=new Uint8Array($*o);this.renderer.readRenderTargetPixels(y,0,0,u,o,G);const O=document.createElement("canvas");O.width=u,O.height=o;const P=O.getContext("2d");if(!P)return null;const R=P.createImageData(u,o);for(let T=0;T<o;T++){const I=(o-1-T)*$,j=T*$;R.data.set(G.subarray(I,I+$),j)}P.putImageData(R,0,0);const v=document.createElement("canvas");v.width=i,v.height=a;const H=v.getContext("2d");return H?(H.drawImage(O,0,0,i,a),v.toDataURL("image/png")):null}finally{this.captureAspect=null,this.cameraOverride=null,D.aspect=x,D.updateProjectionMatrix(),this.renderer.setRenderTarget(E),this.renderer.setPixelRatio(g),y.dispose(),d.dispose()}}dispose(){this.disposed=!0,this.settleFlight("closed"),this.viewport.orbitControls.removeEventListener("start",this.cancelLookForHuman),this.unsubscribeSelectionTheme(),this.clearDiagnosticPresentation(),this.clearBoneSelectionHighlight(),this.clearBoundsHelper(),this.clearSkeletonHelper(),this.selectionOutline&&di(this.renderer,this.selectionOutline,this.selectionOutlinePass),this.composer?.dispose(),this.sceneRenderPass=null,this.selectionOutline=null,this.selectionOutlinePass=null,this.composer=null,this.shading.dispose(),this.listeners.clear()}addHelper(e,t){e.name=`__object3d_document_${t}`,ur(e,"editorHelper",!0),this.scene.add(e),this.helpers.push(e)}get selectionOutlineEnabled(){return this.selectionOutlineWanted}set selectionOutlineEnabled(e){e!==this.selectionOutlineWanted&&(this.selectionOutlineWanted=e,e?this.syncSelectionPresentation():(this.selectionOutline?.selection.clear(),this.syncComposerOutput()))}selectionOutlineWanted=!0;ensureComposer(){this.selectionOutlineWanted&&(this.composer||this.composerLoading||this.disposed||(this.composerLoading=!0,je(()=>import("./index-DUh02lTr.js"),__vite__mapDeps([0,1])).then(e=>{if(this.composerLoading=!1,this.disposed||this.composer)return;const t=this.camera(),r=new e.EffectComposer(this.renderer);this.sceneRenderPass=new e.RenderPass(this.scene,t),r.addPass(this.sceneRenderPass),this.selectionOutline=hi(e,this.renderer,this.scene,t,mt(this.renderer.domElement)),this.syncSelectionTheme(),Js(this.selectionOutline,this.selectedObjects),this.selectionOutlinePass=new e.EffectPass(t,this.selectionOutline),r.addPass(this.selectionOutlinePass),this.composer=r,this.syncComposerOutput(),r.setSize(this.renderWidth,this.renderHeight),U()}).catch(()=>{this.composerLoading=!1})))}renderSolidForCapture(e,t,r,i){const a=this.composer,u=(this.selectionOutline?.selection.size??0)>0;if(!a||!u||!this.sceneRenderPass||!this.selectionOutlinePass){this.renderer.render(this.scene,e);return}const o=this.renderWidth,d=this.renderHeight;try{this.sceneRenderPass.renderToScreen=!1,this.selectionOutlinePass.renderToScreen=!1,a.setSize(r,i,!1),this.sceneRenderPass.render(this.renderer,a.inputBuffer,a.outputBuffer,0),this.selectionOutlinePass.render(this.renderer,a.inputBuffer,t,0)}finally{a.setSize(o,d,!1),this.syncComposerOutput(),this.renderer.setRenderTarget(t)}}syncComposerOutput(){const e=(this.selectionOutline?.selection.size??0)>0;this.sceneRenderPass&&(this.sceneRenderPass.renderToScreen=!e),this.selectionOutlinePass&&(this.selectionOutlinePass.enabled=e,this.selectionOutlinePass.renderToScreen=e)}refreshSkeletonHelper(){const e=this.state.skeleton||this.boneSelectionHighlight!==null;e&&!this.skeletonHelper?(this.skeletonHelper=new ri(this.root),_i(this.skeletonHelper),this.scene.add(this.skeletonHelper)):e||this.clearSkeletonHelper()}clearSkeletonHelper(){this.skeletonHelper&&(this.skeletonHelper.removeFromParent(),this.skeletonHelper.dispose(),this.skeletonHelper=null)}clearBoneSelectionHighlight(){this.boneSelectionHighlight&&(this.boneSelectionHighlight.removeFromParent(),this.boneSelectionHighlight.dispose(),this.boneSelectionHighlight=null)}clearBoundsHelper(){if(!this.boundsHelper)return;const e=this.boundsHelper;this.boundsHelper=null;const t=this.helpers.indexOf(e);t>=0&&this.helpers.splice(t,1),e.removeFromParent(),e.geometry.dispose(),Array.isArray(e.material)?e.material.forEach(r=>{r.dispose()}):e.material.dispose()}frameBones(e){const t=new Yt,r=new K;for(const d of e){t.expandByPoint(d.getWorldPosition(r)),d.parent?.isBone&&t.expandByPoint(d.parent.getWorldPosition(r));for(const y of d.children)y.isBone&&t.expandByPoint(y.getWorldPosition(r))}const i=t.getCenter(new K),a=Math.max(t.getSize(new K).length(),.2);t.expandByScalar(a*.35);const u=this.viewport.camera.position.clone().sub(this.viewport.orbitControls.target).normalize(),o=vt(t,this.viewport.camera,u);this.viewport.setPose(i.clone().addScaledVector(u,o),i)}syncOrthographicCamera(){const e=this.viewport.camera,t=this.viewport.orbitControls.target,r=Math.max(e.position.distanceTo(t),.001),i=Math.max(r*Math.tan(mr.degToRad(e.fov)/2),.001),a=Math.max(this.renderer.domElement.clientWidth,1),u=Math.max(this.renderer.domElement.clientHeight,1),o=this.captureAspect??a/u;this.orthographicCamera.left=-i*o,this.orthographicCamera.right=i*o,this.orthographicCamera.top=i,this.orthographicCamera.bottom=-i,this.orthographicCamera.near=e.near,this.orthographicCamera.far=e.far,this.orthographicCamera.position.copy(e.position),this.orthographicCamera.quaternion.copy(e.quaternion),this.orthographicCamera.up.copy(e.up),this.orthographicCamera.layers.mask=e.layers.mask,this.orthographicCamera.updateProjectionMatrix(),this.orthographicCamera.updateMatrixWorld(!0)}clearDiagnosticPresentation(){this.clearTopologyOverlay(),this.scene.overrideMaterial?.dispose(),this.scene.overrideMaterial=null;for(const e of this.helpers.splice(0)){e.removeFromParent();const t=e;t.geometry?.dispose();const r=t.material;Array.isArray(r)?r.forEach(i=>{i.dispose()}):r?.dispose()}}notify(){this.version++;for(const e of this.listeners)e()}}class zi{constructor(e){this.options=e}active=null;settling=!1;idleWaiters=new Set;begin(e){if(this.active||this.settling)return!1;try{const t=this.options.begin(e);return t?(this.active={pointerId:e.pointerId,gesture:t},!0):!1}catch(t){return this.options.reportError(t),!1}}update(e){if(!(!this.active||this.active.pointerId!==e.pointerId))try{this.active.gesture.update(e)}catch(t){this.cancelWithError(t)}}async commit(e){const t=this.take(e.pointerId);if(!t)return!1;this.settling=!0;try{return await t.commit(e),await this.options.persist(t.label),!0}catch(r){try{await t.cancel()}catch(i){return this.options.reportError({operationError:r,rollbackError:i}),!1}return this.options.reportError(r),!1}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}async cancel(e){const t=this.take(e);if(!t)return!1;this.settling=!0;try{return await t.cancel(),!0}catch(r){return this.options.reportError(r),!1}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}async settle(){this.active&&await this.cancel(),this.settling&&await new Promise(e=>this.idleWaiters.add(e))}hasActiveGesture(){return this.active!==null}take(e){if(!this.active||e!==void 0&&this.active.pointerId!==e)return null;const t=this.active.gesture;return this.active=null,t}async cancelWithError(e){const t=this.take();if(t){this.settling=!0;try{await t.cancel(),this.options.reportError(e)}catch(r){this.options.reportError({operationError:e,rollbackError:r})}finally{this.settling=!1;for(const r of this.idleWaiters)r();this.idleWaiters.clear()}}}}class Ni{constructor(e,t){this.frame=e,this.releaseRenderer=t,this.unsubscribeActivity=yi(()=>this.syncActivity())}rafId=0;running=!1;disposed=!1;active=!1;unsubscribeActivity;get isDisposed(){return this.disposed}get isRunning(){return this.running}setActive(e){this.disposed||(this.active=e,this.syncActivity())}syncActivity(){this.active&&Vt()?this.start():this.stop()}redraw(){this.running&&!this.disposed&&Vt()&&this.guardedFrame(performance.now())}dispose(){this.stop(),!this.disposed&&(this.disposed=!0,this.unsubscribeActivity(),this.releaseRenderer())}start(){this.disposed||this.running||(this.running=!0,this.guardedFrame(performance.now(),!0),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick)))}lastFrameFailure=null;guardedFrame(e,t=!1){try{this.frame(e,t),this.lastFrameFailure=null}catch(r){const i=r instanceof Error?r.message:String(r);i!==this.lastFrameFailure&&(this.lastFrameFailure=i,console.error("[document renderer] a frame threw; the loop continues:",r))}}stop(){this.running=!1,this.rafId!==0&&(cancelAnimationFrame(this.rafId),this.rafId=0)}tick=e=>{if(!(!this.running||this.disposed)){if(!Vt()){this.stop();return}this.guardedFrame(e),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick))}}}const Gi=new Set(["solid","clay","unlit","wireframe","normals","overdraw"]);function Ui(n,e){return{read:()=>{const t=n.cameraPose;if(!t)return null;const{position:r,target:i}=t;return{camera:{position:{x:r.x,y:r.y,z:r.z},target:{x:i.x,y:i.y,z:i.z},...t.fov?{fov:t.fov}:{}},diagnostic:n.shadingMode,grid:Jr(e)}},setDiagnostic:t=>Gi.has(t)?(n.setShadingMode(t),!0):!1,setCamera:t=>typeof t!="string"?(n.setCameraPose(t.position,t.target,t.fov),!0):t==="isometric"?!1:(n.setViewPreset(t),!0),frame:t=>t==="document"?!1:(n.focusOnSelection(),!0)}}function $i(n){const e=Xt();return e?Qr(dr(e,n)):"none"}const qi=f.lazy(()=>je(()=>import("./stage-transform-tools-B09Z7v0o.js"),__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,1,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30])).then(n=>({default:n.ThreeStageTransformTools}))),Ki=f.lazy(()=>je(()=>import("./stage-transform-tools-B09Z7v0o.js"),__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,1,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30])).then(n=>({default:n.ThreeStageTransformControls})));function rr(n){return{transformTools:()=>$i(n),TransformTools:qi,TransformControls:Ki}}class Xi{constructor(e,t,r){this.create=e,this.isOpen=t,this.subscribe=r}states=new Map;generations=new WeakMap;unsubscribe=null;claim(e){const t=this.states.get(e)??[];let r=t.find(i=>!i.inUse);return r||(r=this.create(e),t.push(r),this.states.set(e,t)),r.inUse=!0,this.generations.set(r,this.generation(r)+1),this.unsubscribe??=this.subscribe(()=>this.discardClosed()),r}generation(e){return this.generations.get(e)??0}release(e,t=this.generation(e)){this.generation(e)===t&&(e.inUse=!1,queueMicrotask(()=>this.discardClosed()))}retain(e,t,r){if(!this.isOpen(e.documentId)||!this.states.get(e.documentId)?.includes(e)||this.generation(e)!==r){t.dispose();return}const i=e.source;e.source=t,i!==t&&i?.dispose()}discardClosed(){const e=[];for(const[r,i]of this.states){if(this.isOpen(r))continue;const a=i.filter(u=>u.inUse);e.push(...i.filter(u=>!u.inUse)),a.length?this.states.set(r,a):this.states.delete(r)}this.states.size===0&&(this.unsubscribe?.(),this.unsubscribe=null);const t=[];for(const r of e){const i=r.source;r.source=null;try{i?.dispose()}catch(a){t.push(a)}}if(t.length)throw new AggregateError(t,"Retained document cleanup failed")}}const Yi=f.lazy(async()=>({default:(await je(()=>import("./stage-overlay-set-CwhCzbOy.js"),__vite__mapDeps([31,3,4,6,7,5,8,9,10,11,1,12,32,33,34]))).StageOverlaySet}));function Zi(n){return h.jsx(f.Suspense,{fallback:null,children:h.jsx(Yi,{...n})})}const Ji=[.25,.5,1,2];function Qi(n,e){const t=Math.round(n*e);return`${n.toFixed(2)}s · f${t}`}function eo({transport:n}){const e=f.useSyncExternalStore(f.useCallback(g=>n?n.subscribe(g):()=>{},[n]),f.useCallback(()=>n?.snapshot()??null,[n]));if(!n||!e||e.activeSubject===null)return null;const t=e.driver==="world",r=e.playbackState==="playing",{start:i,end:a,fps:u,loop:o}=e.range,d=e.subjects.find(g=>g.id===e.activeSubject),y=e.subjects.length>1?e.subjects:null,E=n.activeClips();return h.jsxs("section",{"aria-label":"Transport","data-testid":"stage-transport-strip",style:{display:"flex",alignItems:"center",gap:"var(--vgai-space-2)",padding:"var(--vgai-space-1) var(--vgai-space-3)",borderTop:`var(--vgai-stroke-resting) solid ${ve.boundary.default}`,background:ve.surface.raised},children:[h.jsx(me,{size:"compact","aria-label":r?"Pause":"Play",disabled:t,onClick:()=>r?n.pause():n.play(),children:h.jsx(ge,{icon:r?ae.transport.pause:ae.transport.play})}),h.jsx(me,{size:"compact","aria-label":"Stop",disabled:t,onClick:()=>n.stop(),children:h.jsx(ge,{icon:ae.transport.stop})}),h.jsx(en,{"aria-label":"Playhead",type:"range",min:i,max:a,step:1/u,value:e.time,disabled:t,onChange:g=>n.seek(Number(g.target.value)),style:{flex:1}}),h.jsx(pt,{as:"span",variant:"caption",children:Qi(e.time,u)}),y?h.jsx("select",{"aria-label":"Subject",value:e.activeSubject,disabled:t,onChange:g=>n.setActiveSubject(g.target.value),children:y.map(g=>h.jsx("option",{value:g.id,children:g.label},g.id))}):null,E?h.jsx("select",{"aria-label":"Clip",disabled:t,onChange:g=>n.setActiveClip(g.target.value),children:E.map(g=>h.jsx("option",{value:g.id,children:g.label},g.id))}):null,h.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"var(--vgai-space-1)"},children:[h.jsx("input",{type:"checkbox",checked:o,disabled:t,onChange:g=>n.setLoop(g.target.checked)}),h.jsx(pt,{as:"span",variant:"caption",children:"Loop"})]}),h.jsx("select",{"aria-label":"Speed",value:String(e.timeScale),disabled:t,onChange:g=>n.setTimeScale(Number(g.target.value)),children:Ji.map(g=>h.jsxs("option",{value:String(g),children:[g,"×"]},g))}),t?h.jsx(pt,{as:"span",variant:"caption",children:"The world is driving time (Play); pause the game to scrub"}):d?h.jsx(pt,{as:"span",variant:"caption",children:d.label}):null]})}const to=fi;function nr(n){return Zt(null,n)}const so=()=>()=>{},ir=()=>0,ro=5,no=58;function io({viewport:n,session:e,store:t,projection:r,displayName:i,objectName:a,statistics:u}){f.useSyncExternalStore(t.subscribe,t.getShellSnapshot??t.getSnapshot),f.useSyncExternalStore(e?.subscribe??so,e?.getSnapshot??ir,e?.getSnapshot??ir);const o=f.useSyncExternalStore(nr,vr),d=f.useSyncExternalStore(nr,pi),y=o&&!d?ve.content.onAccent:ve.content.primary;if(!n)return null;const E=li(n.camera.position.clone().sub(n.orbitControls.target))??"User",g=e?.projection()??r,D=`${E} ${g==="perspective"?"Perspective":"Orthographic"}`,x=t.selectedEntityId,z=(x===null?null:a(x))||null,$=z===null||z===i?i:`${i} | ${z}`,G=P=>{const R=n.renderCamera;if(R instanceof fr){R.zoom=Math.max(.01,R.zoom/P),R.updateProjectionMatrix();return}const v=n.orbitControls.target;n.camera.position.sub(v).multiplyScalar(P).add(v),n.orbitControls.update()},O=P=>{P.preventDefault();const R=P.currentTarget;R.setPointerCapture(P.pointerId);let v=P.clientX,H=P.clientY;const T=new K,I=new K,j=ee=>{const re=ee.clientX-v,ze=ee.clientY-H;v=ee.clientX,H=ee.clientY;const Z=n.camera,Ne=n.orbitControls.target,be=Z.position.distanceTo(Ne),Ge=Math.max(1,R.ownerDocument.defaultView?.innerHeight??1),ne=2*be*Math.tan(mr.degToRad(Z.fov/2))/Ge;T.setFromMatrixColumn(Z.matrixWorld,0).multiplyScalar(-re*ne),I.setFromMatrixColumn(Z.matrixWorld,1).multiplyScalar(ze*ne),Z.position.add(T).add(I),Ne.add(T).add(I),n.orbitControls.update()},C=()=>{R.removeEventListener("pointermove",j),R.removeEventListener("pointerup",C),R.removeEventListener("pointercancel",C)};R.addEventListener("pointermove",j),R.addEventListener("pointerup",C),R.addEventListener("pointercancel",C)};return h.jsxs(h.Fragment,{children:[h.jsxs("div",{"data-testid":"viewport-view-text","aria-hidden":"true",style:{position:"absolute",top:"var(--vgai-space-3)",left:"calc(var(--vgai-space-4) + var(--vgai-control-comfortable-height) * 2 + var(--vgai-space-4))",display:"flex",flexDirection:"column",gap:"var(--vgai-space-1)",fontSize:"var(--vgai-font-sm)",color:y,textShadow:"var(--vgai-content-text-shadow, none)",pointerEvents:"none",userSelect:"none"},children:[h.jsx("span",{children:D}),h.jsx("span",{children:$}),u&&u.length>0?h.jsx("div",{"data-testid":"viewport-statistics",style:{display:"grid",gridTemplateColumns:`${no}px auto`,rowGap:"var(--vgai-space-1)",marginTop:tn[ro]},children:u.map(P=>h.jsxs(f.Fragment,{children:[h.jsx("span",{children:P.label}),h.jsx("span",{children:P.value})]},P.id))}):null]}),h.jsxs("div",{"data-testid":"viewport-navigation",role:"toolbar","aria-label":"Navigation","aria-orientation":"vertical",className:"vgai-chrome-island vgai-viewport-navigation",style:{position:"absolute",top:to,right:"var(--vgai-space-6)",display:"flex",flexDirection:"column",gap:"var(--vgai-space-1)",padding:"var(--vgai-space-1) 0",borderRadius:"var(--vgai-radius-full)",background:"var(--vgai-island-surface, var(--vgai-surface-overlay))",pointerEvents:"auto"},children:[h.jsx(Ve,{text:"Zoom in",children:h.jsx(me,{size:"comfortable","aria-label":"Zoom in",onClick:()=>G(.8),children:h.jsx(ge,{size:"2xl",icon:ae.viewport.zoomIn})})}),h.jsx(Ve,{text:"Zoom out",children:h.jsx(me,{size:"comfortable","aria-label":"Zoom out",onClick:()=>G(1.25),children:h.jsx(ge,{size:"2xl",icon:ae.viewport.zoomOut})})}),h.jsx(Ve,{text:"Pan (drag)",children:h.jsx(me,{size:"comfortable","aria-label":"Pan the view",onPointerDown:O,children:h.jsx(ge,{size:"2xl",icon:ae.viewport.pan})})}),h.jsx(Ve,{text:"Frame all",children:h.jsx(me,{size:"comfortable","aria-label":"Frame all",onClick:()=>{e?.frame()||n.focusOn(n.orbitControls.object)},children:h.jsx(ge,{size:"2xl",icon:ae.viewport.frame})})}),h.jsx(Ve,{text:g==="perspective"?"Orthographic":"Perspective",children:h.jsx(me,{size:"comfortable","aria-label":"Toggle perspective and orthographic","aria-pressed":g==="orthographic",onClick:()=>{const P=g==="perspective"?"orthographic":"perspective";e?e.setProjection(P):n.setProjection(P)},children:h.jsx(ge,{size:"2xl",icon:ae.viewport.projection})})})]})]})}const oo=f.lazy(async()=>({default:(await je(()=>import("./stage-keyboard-C0FdDLOQ.js"),__vite__mapDeps([35,6,4,7,36,5,3,8,9,10,11,1,12,14]))).StageKeyboardBinding})),ao=n=>{const e=n.split(":");return(e[0]==="document"?e[1]:e[0])??n},or=()=>Fn(),$t=12;function ar(n){if(!n)return null;const e=new Yt(new K(n.min[0],n.min[1],n.min[2]),new K(n.max[0],n.max[1],n.max[2]));return e.isEmpty()?null:e}const co=500;function lo(n){return Zt(null,n)}let uo=0;const Oe=new Xi(n=>({documentId:n,store:new hr,inUse:!1,source:null,camera:null,presentation:null,transport:null,contentSeconds:0,transportAdvances:0}),n=>dn().some(e=>e.descriptor.id===n),hn);function ho({canvasHostRef:n}){return h.jsx("div",{ref:n,style:{position:"absolute",inset:0}})}function po(n,e,t,r,i){if(e==="inspector-preview"){const d=jn();return d.canvas.setAttribute("aria-label",`${t} authoring viewport`),n.appendChild(d.canvas),{canvas:d.canvas,renderer:d.renderer,lease:d}}const a=Tn(r.width,r.height,i),{canvas:u,renderer:o}=a;return u.setAttribute("aria-label",`${t} authoring viewport`),n.appendChild(u),{canvas:u,renderer:o,lease:a}}class cr{constructor(e,t,r){this.lane=e,this.surface=t,this.store=r??new hr,this.transport=new On(this.store)}scene=new gr;store;cleanups=[];rendererSession=new Ni((e,t)=>this.frame?.(e,t),()=>{});viewport=null;session=null;dressing=null;presentationRig=null;applyPresentation=null;backdropOverridden=!1;documentStudio=null;contentLights=[];contentHas={light:!1,"directional-light":!1};darkened=[];darkenContentLights(){for(const t of this.contentLights)t.visible&&(t.visible=!1,this.darkened.push(t));if(this.darkened.length===0)return 0;const e=this.darkened.length;return this.scene.onAfterRender=()=>{for(const t of this.darkened)t.visible=!0;this.darkened=[],this.scene.onAfterRender=()=>{}},e}defaultEnvironment=null;defaultBackground=null;adapter=null;content=null;frame=null;syncHostScene=null;presence=null;initialized=!1;contentSeconds=0;transportAdvances=0;users=0;closed=!1;released=!1;get isClosed(){return this.closed}transport;borrow(){this.users++;let e=!1;return()=>{e||(e=!0,this.users--,this.releaseIfClosed())}}close(){this.closed=!0,this.frame=null,this.syncHostScene=null,this.session?.setBeforeRender(null),this.session?.setPresentsFrames(!1),this.rendererSession.setActive(!1),this.content?.dispose(),this.transport.dispose(),this.releaseIfClosed()}releaseIfClosed(){if(!this.closed||this.users!==0||this.released)return;this.released=!0;const{lease:e,renderer:t,canvas:r}=this.surface;for(const i of[...this.cleanups.splice(0),()=>this.session?.dispose(),()=>this.viewport?.dispose(),()=>this.rendererSession.dispose(),()=>this.dressing?.dispose(),...e?[()=>e.release()]:[()=>t.dispose(),()=>t.forceContextLoss(),()=>r.remove()]])try{i()}catch(a){console.error("Object3D document cleanup failed.",a)}}}function Sr({documentId:n,sourcePath:e,build:t,displayName:r="Source Object3D",background:i,cameraDirection:a,persistence:u,documentSource:o,authoring:d,interaction:y,selectionOutline:E=!0,active:g=!0,audit:D=!0,chromeless:x=!1,modelSource:z,assetType:$,sourceAuthoring:G,dressing:O,rendererLane:P="own",onOpenNode:R,frameBounds:v,openingFrameBounds:H,openingFit:T,stageKind:I,statistics:j,content:C}){const ee=I??ao(n);f.useEffect(()=>{if(!x)return sn(n)},[n,x]);const re=rn(nn()),ze=re??Xt(),Z=ze?dr(ze,n,x?"embedded":"document"):null,Ne=f.useSyncExternalStore(lo,vr),be=Z!==null&&on(Z,Ne),Ge=f.useRef(be);Ge.current=be;const ne=Z!==null&&an(Z),Jt=f.useRef(ne);Jt.current=ne;const Qt=Z!==null&&cn(Z),es=f.useRef(Qt);es.current=Qt;const ts=ln(),wt=f.useRef(ts);wt.current=ts;const yt=f.useRef(null),St=f.useRef(null),W=f.useRef(null),we=f.useRef(null);(!we.current||we.current.documentId!==n)&&(we.current&&Oe.release(we.current),we.current=Oe.claim(n)),f.useEffect(()=>{const k=we.current,ce=Oe.generation(k);return()=>Oe.release(k,ce)},[n]);const B=we.current,Se=C?.kind==="world-root",xt=g||Se,ss=f.useRef(C?.kind==="world-root"?C.load:null);ss.current=C?.kind==="world-root"?C.load:null;const[xe,Pt]=f.useState(xt);f.useEffect(()=>Pt(xt),[xt]);const kt=f.useRef(E);f.useEffect(()=>{kt.current=E;const k=W.current?.session;k&&(k.selectionOutlineEnabled=P!=="inspector-preview"&&E),W.current?.applyPresentation?.()},[E,P]);const rs=f.useRef(Promise.resolve()),Mt=f.useRef(!1);f.useEffect(()=>{if(xe)return Te.current=!1,Rt("building"),()=>{const k=W.current;if(k&&!Se){Mt.current=!Ue.current;const ce=k.store.cameraPose;B.camera=ce&&k.viewport?{...ce,up:k.viewport.camera.up.clone()}:null,B.presentation=k.session?.presentation()??null,B.transport=k.transport.snapshot(),B.contentSeconds=k.contentSeconds,B.transportAdvances=k.transportAdvances}Ke.current=null,Xe.current=null,qe.current=null,$e.current=null,k?.close(),W.current=null}},[n,P,B,xe,Se]);const ns=f.useRef(R);ns.current=R;const is=f.useRef(v);is.current=v;const os=f.useRef(H);os.current=H;const Ue=f.useRef(g);Ue.current=g;const as=f.useRef(g),cs=f.useRef({build:t,sourcePath:e});f.useEffect(()=>{const k=cs.current;cs.current={build:t,sourcePath:e},!(k.build===t&&k.sourcePath===e)&&!xe&&B.source&&(B.source.dispose(),B.source=null)},[t,B,e,xe]);const $e=f.useRef(null),Te=f.useRef(!1),qe=f.useRef(null),Ke=f.useRef(null),Xe=f.useRef(null),[Ct,Y]=f.useState(null),[Et,Rt]=f.useState("building"),[ls,xr]=f.useState(null),[Pr,kr]=f.useState("mounting"),[Mr,Cr]=f.useState([]),us=f.useRef(null),[ds,Er]=f.useState("perspective"),[Rr,hs]=f.useState(null),Ye=f.useRef(null);Ye.current=Rr;const Ot=a?.[0],jt=a?.[1],Tt=a?.[2],Fe=z?.kind,Ft=z?.kind==="project-file"?z.path:void 0,Ze=z?.kind==="entity"?z.entityId:void 0,ps=O?.environment,fs=O?.background,ms=O?.keyLight,At=O?.grid,Ae=O?.viewLocked,_t=O?.toneMapping;g&&An(n),f.useEffect(()=>{let k=!1;if(!xe)return;const ce=async le=>{const L=yt.current,_e=St.current;if(!L||!_e||W.current)return;const w=wt.current;if(!w){Y("The world root needs the editor shell above it; this host has none.");return}const He=await le();if(k||W.current)return;xr(()=>He),Hs();const s=new cr("own",He.mountWorldRootSurface(_e,L,r),Xt()??void 0);W.current=s,s.cleanups.push(Bs(n,s.store)),s.cleanups.push(Ls(n,s.transport)),s.cleanups.push(Rn(n,{...Ui(s.store,n),...rr(n)}));const J=He.installWorldRootStage({store:s.store,documentId:n,container:L,canvas:s.surface.canvas,renderer:s.surface.renderer,stats:w,cameraPreview:()=>us.current,onMountStatus:kr,onRootIds:Cr,runFrame:ue=>zs(n,ue)});s.viewport=J.viewport,s.frame=J.frame,s.content={scene:J.scene,settle:()=>Promise.resolve(),dispose:async()=>J.dispose()};const F=tr(J.scene,s.transport);let X=0;s.cleanups.push(()=>F.dispose()),s.cleanups.push(s.store.subscribe(()=>{if(s.store.playState!=="stopped")return;const ue=performance.now();ue-X<co||(X=ue,F.refresh())})),s.cleanups.push(Ns({camera:J.viewport.camera,orbit:J.viewport.orbitControls,scene:J.scene},J.present,J.setHelper,{documentId:n})),$e.current=s.rendererSession,s.initialized=!0,Gs(),Rt("ready"),s.rendererSession.setActive(!0)},jr=async()=>{for(await W.current?.content?.settle();oi();)await ai();if(k)return;const le=ss.current;if(le)return ce(le);const L=yt.current,_e=St.current;if(!L||!_e)return;if(!t||e===void 0){Y("This stage shows `build` content and was given no `build()`/`sourcePath`.");return}let w;const He=Oe.generation(B);try{w=B.source??t(),B.source=null}catch(q){Y(q instanceof Error?q.message:String(q));return}try{W.current||(Hs(),W.current=new cr(P,po(_e,P,r,{width:Math.max(1,L.clientWidth),height:Math.max(1,L.clientHeight)},()=>{Pt(!1),window.setTimeout(()=>{Ue.current&&Pt(!0)},0)}),B.store),W.current.contentSeconds=B.contentSeconds,W.current.transportAdvances=B.transportAdvances)}catch(q){throw w.dispose(),q}const s=W.current,J=s.borrow(),{renderer:F,canvas:X,lease:ue}=s.surface,A=s.store;x||(s.cleanups.push(Bs(n,A)),s.cleanups.push(Ls(n,s.transport)));const Qe=Ds();Qe&&A.attachHistory(Qe);const vs=P==="inspector-preview",Pe=Ge.current,bs=Jt.current,ws=es.current,_=new gr,et=w.root.parent;_.add(w.root),w.animations&&(w.root.animations=[...w.animations]);const Bt={root:w.root,animations:w.root.animations};let Be=null,Le=null,ke=null,de=null,Q=null,tt=null,st=null,rt=null,nt=null,it=null,Lt=null,ys=null,Ss=null,xs=!1,ot=!1,at=null;const Dt={scene:_,settle:()=>Q?.settle()??Promise.resolve(),dispose:()=>{if(at)return at;ot=!0;const q=Mt.current;return Mt.current=!1,tt&&L.removeEventListener("pointerdown",tt,!0),st&&L.removeEventListener("pointermove",st,!0),rt&&L.removeEventListener("pointerup",rt,!0),nt&&L.removeEventListener("pointercancel",nt,!0),it&&window.removeEventListener("keydown",it),Lt?.(),Lt=null,at=(async()=>{await Q?.settle();const De=[];for(const ie of[()=>de?.dispose(),()=>Le?.dispose?.(),()=>Be?.dispose(),()=>_.removeFromParent(),()=>{q?Oe.retain(B,w,He):w.dispose()},J])try{ie()}catch(ct){De.push(ct)}De.length&&console.error("Object3D source cleanup failed.",...De)})(),at}};try{const q=async l=>{try{const m=Bt;if(o&&!u){if(!m)throw new Error("Project history is unavailable; the edit was not saved.");const c=Ds();if(!c)throw new Error("Project history is unavailable; the edit was not saved.");const p=o.serialize(m);if(p===null)return Y(null),!1;const M=await or().replaceSource(c,{file:o.path,source:p,label:l??o.label??`Edit ${r}`});return Y(null),M}if(!u)throw new Error("This Asset Lab document has no persistence binding.");if(!ke||!m)throw new Error("Project history is unavailable; the edit was not saved.");const{persisted:b}=await(await ke).commit(m,l);return Y(null),b}catch(m){throw Y(m instanceof Error?m.message:JSON.stringify(m)),m}};Be=new wi(A,_,{documentId:n,title:r,sourcePath:e,documentKind:ws?"asset":"source",audit:D,...w.hierarchyRoots?{hierarchyRoots:w.hierarchyRoots}:{},...Fe==="project-file"&&Ft?{modelSource:{kind:Fe,path:Ft}}:Fe==="entity"&&Ze?{modelSource:{kind:Fe,entityId:Ze}}:{}});const De={documentId:n,sourcePath:e,root:w.root,animations:w.root.animations,scene:_,defaultAdapter:Be,commit:q};Le=d?.(De)??null,!Le&&G&&(Le=G({store:A,scene:_,...w.hierarchyRoots?{hierarchyRoots:w.hierarchyRoots}:{}}),Be.dispose()),ke=u&&Qe?or().openPersistence({binding:u,document:Bt,history:Qe}):null,ke&&ke.catch(l=>{!ot&&W.current?.content===Dt&&Y(l instanceof Error?l.message:JSON.stringify(l))});const ie=Le?.adapter??Be;if(!s.dressing){F.outputColorSpace=pr,F.toneMapping=_t??ni,F.shadowMap.enabled=!0,F.shadowMap.type=ii,F.info.autoReset=!1,F.setPixelRatio(Math.min(window.devicePixelRatio,2)),Pe&&F.setClearColor(0,0);const l=ps===!1?null:ue&&"environment"in ue?ue.environment():pn(F),m=er(X);s.dressing=Hn(s.scene,{environment:l,background:!Pe&&i===void 0&&fs!==!1,keyLight:!1,grid:At===!0,content:w.root}),!Pe&&i!==void 0?s.scene.background=new se(i):!Pe&&m.background!==null&&(s.scene.background=new se(m.background)),s.defaultEnvironment=s.scene.environment,s.defaultBackground=s.scene.background;{const b=new Bn(s.scene,U);s.presentationRig=b,Is(n,ee);const c=()=>{const p=fn(n);b.apply(p,F,_t),s.viewport?.setStageFunction(p.world,p.interaction),s.viewport?.setSelectionMarks(p.overlays.selection),s.viewport?.setGridMajorEvery(p.overlays.grid.majorEvery),s.viewport?.setAxisLines(p.overlays.axes),s.viewport?.setNavigation(p.overlays.navigation),s.viewport?.setGridVisible(p.overlays.grid.visible),s.session&&(s.session.selectionOutlineEnabled=!vs&&kt.current&&p.overlays.selection.outline),U()};s.applyPresentation=c,c(),s.cleanups.push(mn(c)),s.cleanups.push(gn(()=>{b.forgetFailedImages(),c()})),s.cleanups.push(()=>{b.dispose(),s.presentationRig===b&&(s.presentationRig=null)})}s.cleanups.push(()=>{s.defaultBackground instanceof Xs&&s.defaultBackground!==s.dressing?.backgroundTexture&&s.defaultBackground.dispose()})}const ct=(l,m)=>{const b=s.adapter,c=s.viewport;if(!b||!c)return null;const p=X.getBoundingClientRect(),M=new ft((l-p.left)/Math.max(p.width,1)*2-1,-((m-p.top)/Math.max(p.height,1))*2+1),N=new Ys;N.layers.enableAll(),N.setFromCamera(M,s.session?.camera()??c.camera);for(const pe of N.intersectObjects([...A.objectMap.values()],!0)){if(vn(pe.object))continue;let oe=pe.object;for(;oe;){const ht=b.hierarchy.idForObject3D?.(oe);if(ht)return ht;oe=oe.parent}}return null};if(!s.viewport){s.viewport=new mi(X,s.scene,A,L,{renderer:F,authoring:()=>s.adapter??ie,pick:ct,publishPickContext:!1,onProjectionChange:Er,chromeInsetPx:x||bs?0:$t,lightRig:!1}),At===!0&&s.viewport.grid.removeFromParent();const l=m=>{const b=ct(m.clientX,m.clientY),c=b?s.adapter?.hierarchy.object3D?.(b):null;c&&ns.current?.(c)};L.addEventListener("dblclick",l),s.cleanups.push(()=>L.removeEventListener("dblclick",l))}const S=s.viewport;if(Ae){const l=S.camera;s.scene.add(l);const m=new bt;m.name="vgai:document-studio",m.add(Ae),l.add(m),s.documentStudio=m,s.cleanups.push(()=>{Ae.removeFromParent(),m.removeFromParent(),s.documentStudio===m&&(s.documentStudio=null),l.removeFromParent()})}if(y){const l=new bt;l.name="__object3d_document_overlay",ur(l,"editorHelper",!0),_.add(l),de=y.setup({root:w.root,scene:_,renderer:F,overlay:l,camera:()=>s.session?.camera()??S.camera,writable:u!==void 0||o!==void 0});const m=c=>{const p=X.getBoundingClientRect(),M=new ft((c.clientX-p.left)/Math.max(p.width,1)*2-1,-((c.clientY-p.top)/Math.max(p.height,1))*2+1),N=new Ys;return N.layers.enableAll(),N.setFromCamera(M,s.session?.camera()??S.camera),{pointerId:c.pointerId,button:c.button,buttons:c.buttons,clientX:c.clientX,clientY:c.clientY,altKey:c.altKey,ctrlKey:c.ctrlKey,metaKey:c.metaKey,shiftKey:c.shiftKey,ray:N.ray.clone(),hits:N.intersectObjects([w.root,l],!0)}};Q=new zi({begin:c=>{if(!u&&!o)throw new Error("This Asset Lab document has no persistence binding; project gestures are read-only.");return de.begin(c)},persist:async c=>{await q(c)},reportError:c=>Y(c instanceof Error?c.message:JSON.stringify(c))});const b=c=>{c.preventDefault(),c.stopPropagation()};tt=c=>{c.target instanceof Element&&c.target.closest('[role="alert"], [role="toolbar"]')!==null||Q?.begin(m(c))&&(b(c),c.isTrusted&&X.setPointerCapture?.(c.pointerId))},st=c=>{Q?.hasActiveGesture()&&(b(c),Q.update(m(c)))},rt=c=>{Q?.hasActiveGesture()&&(b(c),X.hasPointerCapture?.(c.pointerId)&&X.releasePointerCapture?.(c.pointerId),Q.commit(m(c)))},nt=c=>{Q?.hasActiveGesture()&&(b(c),Q.cancel(c.pointerId))},it=c=>{c.key!=="Escape"||!Q?.hasActiveGesture()||(c.preventDefault(),Q.cancel())},ys=()=>{L.addEventListener("pointerdown",tt,!0),L.addEventListener("pointermove",st,!0),L.addEventListener("pointerup",rt,!0),L.addEventListener("pointercancel",nt,!0),window.addEventListener("keydown",it)}}const ye=s.content,Ps=[...A.selectedEntityIds],Ie=s.adapter,Fr=new Map(A.objectMap),Me=s.session?.root,Ar=s.frame,_r=s.syncHostScene,Hr=Ke.current,Br=Xe.current,Lr=qe.current,ks=s.session?.neutralBackgroundTexture(),Dr=s.dressing.lights.map(l=>l.visible),Ir=s.cleanups.length,Wr=s.initialized;if(Ss=()=>{_.removeFromParent(),et&&et.add(w.root),ye&&s.scene.add(ye.scene),s.adapter=Ie,s.content=ye,s.frame=Ar,s.syncHostScene=_r,s.initialized=Wr;for(const l of s.cleanups.splice(Ir))l();!Me&&s.session&&(s.session.dispose(),s.session=null),A.objectMap.clear();for(const[l,m]of Fr)A.objectMap.set(l,m);ye&&A.bindScene(ye.scene,F,S.batchedRenderer,S.camera),Me&&Ie&&s.session?.replaceContent(Me,Ie),Ke.current=Hr,Xe.current=Br,qe.current=Lr,Ye.current=Ie,hs(Ie),ks!==void 0&&s.session?.setNeutralBackground(ks),s.dressing?.lights.forEach((l,m)=>{l.visible=Dr[m]??!0}),Me&&(s.dressing?.frameContent(Me),s.presentationRig?.placeFloor(Me)),A.selectMultiple(Ps),A.notifyIngestObjectMapEdit()},ye?.scene.removeFromParent(),s.scene.add(_),s.adapter=ie,s.content=Dt,A.bindScene(_,F,S.batchedRenderer,S.camera),A.setOrbitTarget(S.orbitControls.target),A.objectMap.clear(),_.traverse(l=>{const m=ie.hierarchy.idForObject3D?.(l);m&&A.objectMap.set(m,l)}),s.session)s.session.replaceContent(w.root,ie);else{const l=ar(is.current),m=ar(os.current)??l;if(m||S.focusOn(w.root),Ot!==void 0&&jt!==void 0&&Tt!==void 0){const b=m??Kt(w.root),c=b.getCenter(new K),p=new K(Ot,jt,Tt).normalize(),M=vt(b,S.camera,p)*Math.min(10,Math.max(.1,T??1));S.camera.position.copy(c).add(p.multiplyScalar(M)),S.orbitControls.target.copy(c)}if(s.session=new Vi(n,w.root,s.scene,F,S,ie,Pe?null:i===void 0?s.dressing.backgroundTexture:new se(i),l),s.session.selectionOutlineEnabled=!vs&&kt.current,s.applyPresentation?.(),!Pe&&i===void 0&&s.dressing.backgroundTexture){const b=s.session;s.cleanups.push(Ln(()=>{const c=er(X).background,p=s.defaultBackground;s.defaultBackground=c!==null?new se(c):Dn(),b.neutralBackgroundTexture()===p&&b.setNeutralBackground(s.defaultBackground),p instanceof Xs&&p!==s.dressing?.backgroundTexture&&p.dispose()}))}}const We=B.camera;We&&(S.camera.up.copy(We.up),S.setProjection(ds),S.setPose(We.position,We.target,We.fov||void 0),B.camera=null);const V=s.session;Ke.current=Bt,Xe.current=ke,qe.current=de,Ye.current=ie,hs(ie),Is(n,ee,Ae?{all:{lighting:{source:"studio",studioPreset:Ws.id,auto:null}}}:ms===!1?{all:{lighting:{source:"scene"}}}:null);const lt=[];w.root.traverse(l=>{l.isLight&<.push(l)});const Vr={light:lt.length>0,"directional-light":lt.some(l=>l.isDirectionalLight)};s.contentLights=lt,s.contentHas=Vr,s.dressing.frameContent(w.root),s.presentationRig?.placeFloor(w.root),s.cleanups.push(A.subscribe(()=>s.presentationRig?.placeFloor(w.root))),A.selectMultiple(Ps.filter(l=>A.objectMap.has(l))),A.notifyIngestObjectMapEdit(),V.syncSelectionPresentation(),ys?.(),Y(null),x||Vs(n);let ut=_.background;V.setNeutralBackground(ut??s.defaultBackground);const Ce=B.presentation;Ce&&(V.setMode(Ce.mode),V.setBackground(Ce.background),V.setProjection(Ce.projection),V.setSkeleton(Ce.skeleton),V.setBounds(Ce.bounds),B.presentation=null);const zr=()=>{s.scene.environment=_.environment??s.defaultEnvironment,s.scene.fog=_.fog,s.scene.environmentIntensity=_.environmentIntensity,s.scene.environmentRotation.copy(_.environmentRotation),s.scene.backgroundIntensity=_.backgroundIntensity,s.scene.backgroundBlurriness=_.backgroundBlurriness,s.scene.backgroundRotation.copy(_.backgroundRotation);const l=s.presentationRig;if(l){const m=l.resolveSource({...s.contentHas,environment:_.environment!==null}),b=l.environment();b&&(s.scene.environment=b.texture??s.defaultEnvironment,s.scene.environmentIntensity=b.intensity,s.scene.environmentRotation.set(0,b.rotation,0));const c=l.backdrop();c!=="keep"?(s.scene.background=c.value,s.scene.backgroundBlurriness=c.blur,s.scene.backgroundIntensity=c.intensity,s.scene.backgroundRotation.set(0,c.rotation,0),s.backdropOverridden=!0):s.backdropOverridden&&(s.scene.background=V.neutralBackgroundTexture(),s.scene.backgroundBlurriness=_.backgroundBlurriness,s.scene.backgroundIntensity=_.backgroundIntensity,s.backdropOverridden=!1);const p=m==="studio"&&l.presetId()===Ws.id;s.documentStudio&&(s.documentStudio.visible=p);const M=m==="studio"&&!p||m==="preview"&&!l.sceneLightsShown()?s.darkenContentLights():0;l.update(V.camera()),bn(n,{source:m,presetId:l.presetId(),presetLights:l.lightsVisible(),documentStudio:s.documentStudio?s.documentStudio.visible:null,contentLights:s.contentLights.length,contentLightsDarkened:M,environmentIntensity:s.scene.environmentIntensity,environmentImage:l.imageReport().shown,environmentImagePending:l.imageReport().pending,toneMapping:String(F.toneMapping)})}ut!==_.background&&(ut=_.background,V.setNeutralBackground(ut??s.defaultBackground))};s.syncHostScene=zr,V.setBeforeRender(()=>s.syncHostScene?.()),V.setPresentsFrames(!0);const Nr=l=>{ot||!(l>0)||!Number.isFinite(l)||(s.contentSeconds+=l,s.transportAdvances++,w.update?.(l))},Gr=tr(w.root,s.transport);s.cleanups.push(()=>Gr.dispose());const he=B.transport;he&&(he.activeSubject&&s.transport.setActiveSubject(he.activeSubject),s.transport.setLoop(he.range.loop),s.transport.setTimeScale(he.timeScale),s.transport.seek(he.time),he.playbackState==="playing"?s.transport.play():he.playbackState==="paused"&&s.transport.pause(),B.transport=null);let It=performance.now();const Ms=typeof w.onChange=="function";let Wt=!0;const dt=()=>{Wt=!0};if(Ms){const l=w.onChange(dt),m=A.subscribe(dt),b=["pointerdown","pointermove","pointerup","pointerleave","wheel","keydown","keyup"];for(const c of b)L.addEventListener(c,dt,{capture:!0,passive:!0});Lt=()=>{l(),m();for(const c of b)L.removeEventListener(c,dt,{capture:!0})}}let Cs=-1;const Es=new Zs,Rs=new Zs,Os=new ft,js=new ft;let Ts,Fs=null,As=Number.NaN;const Ur=l=>{if(!Ms||Wt||l>0||Us()!==Cs||V.needsFrame()||s.presence?.live()||de?.prepareFrame||de?.update||(S.batchedRenderer.batches?.length??0)>0)return!0;const m=V.camera();return m.updateMatrixWorld(),F.getDrawingBufferSize(js),!m.matrixWorld.equals(Es)||!m.projectionMatrix.equals(Rs)||!js.equals(Os)||s.scene.background!==Ts||F.toneMapping!==Fs||F.toneMappingExposure!==As},$r=()=>{Wt=!1,Cs=Us();const l=V.camera();Es.copy(l.matrixWorld),Rs.copy(l.projectionMatrix),F.getDrawingBufferSize(Os),Ts=s.scene.background,Fs=F.toneMapping,As=F.toneMappingExposure},qr=(l,m)=>{if(ot||!F||!S)return;const b=F,c=S,p=V?.profiler;p?.beginFrame(),m&&(It=l);const M=Math.min((l-It)/1e3,.1);It=l,p?.beginPhase();const N=s.transport.tick(M);if(N>0&&Nr(N),de?.prepareFrame?.(M),de?.update?.(M),p?.endPhase("animation"),p?.beginPhase(),s.presence?.syncMarkers(M),S.update(M),x||zs(n,M),S.batchedRenderer.update(M),p?.endPhase("editor"),!m&&!Ur(N)){p?.endFrame();return}p?.beginPhase(),b.info.reset();const pe=!Te.current&&wn()===n;pe&&yn(n);const oe=pe?Date.now():0,ht=s.scene.overrideMaterial,_s=V.presentation().mode;_s!=="uv"&&_s!=="vertex-colors"&&(s.scene.overrideMaterial=_.overrideMaterial);try{c.renderWithInfrastructure(()=>{V.renderViewport(M),c.renderViewCube(b)})}finally{s.scene.overrideMaterial=ht}V.servePresentedFrame(),$r(),Te.current||(Te.current=!0,pe&&Sn("first-render",Date.now()-oe),xn(n),Rt("ready")),p?.reportRender({gpuMs:null,drawCalls:b.info.render.calls,triangles:b.info.render.triangles,geometries:b.info.memory.geometries,textures:b.info.memory.textures}),p?.endPhase("render"),p?.endFrame();const te=wt.current;if(te&&re&&Pn(re)===A){const Ee=V.cameraPose();te.frameTime=M*1e3,te.fps=M>0?1/M:0,te.drawCalls=b.info.render.calls,te.triangles=b.info.render.triangles,te.cameraPosition.x=Ee.position[0],te.cameraPosition.y=Ee.position[1],te.cameraPosition.z=Ee.position[2],te.cameraTarget.x=Ee.target[0],te.cameraTarget.y=Ee.target[1],te.cameraTarget.z=Ee.target[2]}};if(s.frame=qr,$e.current=s.rendererSession,!s.initialized){x||(s.cleanups.push(Ns({camera:S.camera,orbit:S.orbitControls,scene:s.scene},()=>null,(p,M)=>S.setHelper(p,M),{documentId:n})),je(()=>import("./stage-presence-markers-DVMDKiB-.js"),__vite__mapDeps([37,3,4,6,7,8,9,5,10,11,1,12,38])).then(p=>{if(s.isClosed||W.current!==s||s.presence)return;const M=p.bindStagePresenceMarkers({scene:s.scene,store:A,documentId:n,container:L,canvas:X,viewport:S,readVisibleCameraPose:()=>{const N=s.session?.camera()??S.renderCamera,pe=N.getWorldPosition(new K),oe=N.fov;return{position:pe,target:S.orbitControls.target,fov:typeof oe=="number"?oe:0}}});s.presence=M,s.cleanups.push(()=>M.dispose())}),s.cleanups.push(kn(V,rr(n))),s.cleanups.push(Mn({id:n,label:r,kind:ws?"asset":"source",profiler:V.profiler}))),!x&&!bs&&s.cleanups.push(Cn(n,()=>({adapter:s.adapter,nodeId:s.adapter?.selection?.get()[0]??null})));const l=x?`${n}#chromeless-${++uo}`:n;s.cleanups.push(En({id:l,label:r,contentClock:()=>s.contentSeconds,transportAdvances:()=>s.transportAdvances})),s.cleanups.push(A.onViewportAction(p=>{switch(p.type){case"focus-selection":case"focus-scene":!s.session?.frame()&&s.session?.root&&S.focusOn(s.session.root);break;case"focus-entity":{const M=s.adapter?.hierarchy.object3D?.(p.id)??null;M&&S.focusOn(M);break}case"snap-selection-to-floor":S.snapSelectionToFloor();break;case"set-view-preset":S.setViewPreset(p.preset);break;case"set-camera-pose":S.setPose(p.position,p.target,p.fov);break}}));let m="";s.cleanups.push(A.subscribe(()=>{S.objectMap=A.objectMap,S.syncFromStore(),s.session?.syncSelectionPresentation();const p=(s.adapter?.selection?.get()??[]).join("\0");p!==m&&(m=p,x||Vs(n))}));const b=()=>{const p=Math.max(1,L.clientWidth),M=Math.max(1,L.clientHeight),N=F.getPixelRatio();(X.width!==Math.floor(p*N)||X.height!==Math.floor(M*N))&&F.setSize(p,M,!1),S.resize(p,M),s.session?.resize(p,M),s.rendererSession.redraw()},c=new ResizeObserver(b);c.observe(L),s.cleanups.push(()=>c.disconnect()),b(),s.initialized=!0,Gs()}S.objectMap=A.objectMap,S.syncFromStore(),s.rendererSession.setActive(Ue.current),s.rendererSession.redraw(),xs=!0,ye?.dispose()}catch(q){if(!xs)try{Ss?.()}finally{et&&w.root.parent===_&&et.add(w.root),Dt.dispose()}console.error(`[object3d document] ${r}: source update failed`,q),Y(q instanceof Error?q.message:String(q))}},Tr=rs.current.then(jr);return rs.current=Tr.catch(le=>{k||Y(le instanceof Error?le.message:String(le))}),()=>{k=!0}},[d,i,t,Ot,jt,Tt,r,n,be,fs,ps,At,ms,Ae,_t,x,Ze,Fe,Ft,y,u,o,P,B,xe,G,e,Se]),f.useEffect(()=>{const k=$e.current,ce=g&&!as.current;as.current=g,k&&(ce&&(Te.current=!1,_n(n)),k.setActive(g||Se))},[g,n,Se]);const Je=W.current,Ht=Et==="ready"&&Je?.viewport?{store:Je.store,viewport:Je.viewport,canvas:Je.surface.canvas}:null,Or=f.useCallback(()=>{const k=Ye.current;return k?{adapter:k,nodeId:k.selection?.get()[0]??k.hierarchy.roots()[0]?.id??null}:null},[]),gs=h.jsx("div",{"data-testid":"tool-object3d-authoring","data-vgai-chromeless":x||void 0,className:be?"vgai-object3d-studio-stage":void 0,style:{position:x||ne?"relative":"absolute",...x?{width:"100%",height:"100%"}:ne?{flex:1,minHeight:0}:{inset:-$t},overflow:"hidden",background:be?void 0:ve.surface.raised,pointerEvents:"auto"},children:h.jsxs("div",{ref:yt,style:{position:"absolute",inset:0,minHeight:0,overflow:"hidden"},children:[h.jsx(ho,{canvasHostRef:St}),g&&Ht&&!x?h.jsx(f.Suspense,{fallback:null,children:h.jsx(oo,{stage:Ht})}):null,re&&!x?h.jsx(Zi,{store:re,documentId:n,stage:Ht,active:g,chrome:"document"}):null,re&&ls?h.jsx(ls.Overlays,{store:re,documentId:n,cameraPreviewRef:us,mountStatus:Pr,rootIds:Mr}):null,Ct&&h.jsx("div",{role:"alert",style:{position:"absolute",insetInline:0,top:0,display:"flex",justifyContent:"center",padding:"var(--vgai-space-3)",pointerEvents:"none"},children:h.jsxs("div",{className:"vgai-chrome-island",style:{display:"flex",alignItems:"center",gap:"var(--vgai-space-3)",maxWidth:"80%",padding:"var(--vgai-space-2) var(--vgai-space-3)",borderRadius:"var(--vgai-radius-md)",border:`var(--vgai-stroke-resting) solid ${ve.semantic.danger}`,background:ve.surface.raised,color:ve.semantic.danger,pointerEvents:"auto"},children:[h.jsx("span",{children:Ct}),h.jsx(me,{size:"compact","aria-label":"Dismiss",onClick:()=>Y(null),"data-testid":"object3d-document-error-dismiss",children:h.jsx(ge,{icon:ae.action.close})})]})}),!Ct&&Et==="building"&&h.jsx(Si,{testId:"object3d-document-status",children:xi}),h.jsx("div",{style:{position:"absolute",inset:x||ne?0:$t,pointerEvents:"none"},children:!x&&Et==="ready"&&W.current&&h.jsx(io,{viewport:W.current.viewport,session:W.current.session,store:W.current.store,projection:ds,displayName:r,...j?{statistics:j}:{},objectName:k=>W.current?.adapter?.hierarchy.object3D?.(k)?.name??W.current?.store.objectMap.get(k)?.name??null})})]})});return ne?h.jsx(un,{documentId:n,active:g,type:$??(Ze?"entity":"model"),title:r,status:e,selection:Or,fill:!0,children:h.jsxs("div",{className:"vgai-object3d-asset-workspace",children:[gs,h.jsx(eo,{transport:W.current?.transport??null})]})}):gs}function fo(n){return h.jsx(Sr,{...n})}const Oo=Object.freeze(Object.defineProperty({__proto__:null,Object3DDocumentViewport:Sr,ToolObject3DAuthoring:fo},Symbol.toStringTag,{value:"Module"}));export{Sr as O,Oo as S,$i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{
|
|
1
|
+
import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{aD as y,aE as f,ap as g,aF as x,aG as S}from"./index-Ckxb31Yz.js";import{r as j}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";class w extends j.Component{state={error:null};static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,o){console.error(`[stories] ${this.props.modulePath} — story "${this.props.storyName}" crashed while rendering:`,t,o.componentStack)}render(){return this.state.error?e.jsxs("div",{style:{padding:12,fontSize:12,color:g.semantic.danger,maxWidth:640},children:[e.jsxs("div",{style:{fontWeight:600,marginBottom:4},children:["Story crashed: ",e.jsx("code",{children:this.props.modulePath})," — export"," ",e.jsx("code",{children:this.props.storyName})]}),e.jsx("div",{style:{whiteSpace:"pre-wrap"},children:String(this.state.error)})]}):this.props.children}}const a=new WeakMap;async function k(r,t,o,i,s){const n=a.get(r),c=(n?.generation??0)+1;a.set(r,{root:n?.root,generation:c}),y(r);const d=S();d&&await x(d.rootPath),await i.load();const{createRoot:m,flushSync:h}=await f(),p=a.get(r);if(!p||p.generation!==c)return null;const l=n?.root??m(r);return a.set(r,{root:l,generation:c}),h(()=>{l.render(e.jsx(w,{modulePath:t,storyName:o,children:e.jsx(i,{...s??{}})}))}),{root:l,unmount:()=>{queueMicrotask(()=>{const u=a.get(r);!u||u.generation!==c||!u.root||(a.delete(r),u.root.unmount())})}}}async function D(r,t,o,i){if(typeof o.play!="function")return{ran:!1};try{return await o.play({canvasElement:i}),{ran:!0}}catch(s){const n=String(s instanceof Error?s.message:s);return console.error(`[stories] ${r} — story "${t}"'s play() threw:`,s),{ran:!0,error:`[stories] ${r} — story "${t}"'s play() failed: ${n}`}}}export{k as m,D as r};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ae as M,a$ as f,af as A,aU as p,aY as u,al as x,b4 as b,ax as m,M as C,aV as c,a as g,e as T,v as _}from"./three.module-IFn-4i31.js";class ce extends M{constructor(t){super(t),this.debug=!1,this.group=null,this.materials=[],this.meshes=[]}load(t,s,e,a){const r=this,n=this.path===""?f.extractUrlBase(t):this.path,i=new A(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(t,function(o){try{s(r.parse(o,n))}catch(d){a?a(d):console.error(d),r.manager.itemError(t)}},e,a)}parse(t,s){this.group=new p,this.materials=[],this.meshes=[],this.readFile(t,s);for(let e=0;e<this.meshes.length;e++)this.group.add(this.meshes[e]);return this.group}readFile(t,s){const e=new DataView(t),a=new h(e,0,this.debugMessage);if(a.id===E||a.id===w||a.id===F){let r=a.readChunk();for(;r;){if(r.id===I){const n=r.readDWord();this.debugMessage("3DS file version: "+n)}else r.id===P?this.readMeshData(r,s):this.debugMessage("Unknown main chunk: "+r.hexId);r=a.readChunk()}}this.debugMessage("Parsed "+this.meshes.length+" meshes")}readMeshData(t,s){let e=t.readChunk();for(;e;){if(e.id===N){const a=+e.readDWord();this.debugMessage("Mesh Version: "+a)}else if(e.id===U){const a=e.readFloat();this.debugMessage("Master scale: "+a),this.group.scale.set(a,a,a)}else e.id===ae?(this.debugMessage("Named Object"),this.readNamedObject(e)):e.id===B?(this.debugMessage("Material"),this.readMaterialEntry(e,s)):this.debugMessage("Unknown MDATA chunk: "+e.hexId);e=t.readChunk()}}readNamedObject(t){const s=t.readString();let e=t.readChunk();for(;e;){if(e.id===ie){const a=this.readMesh(e);a.name=s,this.meshes.push(a)}else this.debugMessage("Unknown named object chunk: "+e.hexId);e=t.readChunk()}}readMaterialEntry(t,s){let e=t.readChunk();const a=new u;for(;e;){if(e.id===W)a.name=e.readString(),this.debugMessage(" Name: "+a.name);else if(e.id===j)this.debugMessage(" Wireframe"),a.wireframe=!0;else if(e.id===z){const r=e.readByte();a.wireframeLinewidth=r,this.debugMessage(" Wireframe Thickness: "+r)}else if(e.id===H)a.side=x,this.debugMessage(" DoubleSided");else if(e.id===X)this.debugMessage(" Additive Blending"),a.blending=b;else if(e.id===v)this.debugMessage(" Diffuse Color"),a.color=this.readColor(e);else if(e.id===G)this.debugMessage(" Specular Color"),a.specular=this.readColor(e);else if(e.id===L)this.debugMessage(" Ambient color"),a.color=this.readColor(e);else if(e.id===V){const r=this.readPercentage(e);a.shininess=r*100,this.debugMessage(" Shininess : "+r)}else if(e.id===Y){const r=this.readPercentage(e);a.opacity=1-r,this.debugMessage(" Transparency : "+r),a.transparent=a.opacity<1}else e.id===q?(this.debugMessage(" ColorMap"),a.map=this.readMap(e,s)):e.id===Z?(this.debugMessage(" BumpMap"),a.bumpMap=this.readMap(e,s)):e.id===J?(this.debugMessage(" OpacityMap"),a.alphaMap=this.readMap(e,s)):e.id===$?(this.debugMessage(" SpecularMap"),a.specularMap=this.readMap(e,s)):this.debugMessage(" Unknown material chunk: "+e.hexId);e=t.readChunk()}this.materials[a.name]=a}readMesh(t){let s=t.readChunk();const e=new m,a=new u,r=new C(e,a);for(r.name="mesh";s;){if(s.id===re){const n=s.readWord();this.debugMessage(" Vertex: "+n);const i=[];for(let o=0;o<n;o++)i.push(s.readFloat()),i.push(s.readFloat()),i.push(s.readFloat());e.setAttribute("position",new c(i,3))}else if(s.id===ne)this.readFaceArray(s,r);else if(s.id===de){const n=s.readWord();this.debugMessage(" UV: "+n);const i=[];for(let o=0;o<n;o++)i.push(s.readFloat()),i.push(s.readFloat());e.setAttribute("uv",new c(i,2))}else if(s.id===he){this.debugMessage(" Transformation Matrix (TODO)");const n=[];for(let d=0;d<12;d++)n[d]=s.readFloat();const i=new g;i.elements[0]=n[0],i.elements[1]=n[6],i.elements[2]=n[3],i.elements[3]=n[9],i.elements[4]=n[2],i.elements[5]=n[8],i.elements[6]=n[5],i.elements[7]=n[11],i.elements[8]=n[1],i.elements[9]=n[7],i.elements[10]=n[4],i.elements[11]=n[10],i.elements[12]=0,i.elements[13]=0,i.elements[14]=0,i.elements[15]=1,i.transpose();const o=new g;o.copy(i).invert(),e.applyMatrix4(o),i.decompose(r.position,r.quaternion,r.scale)}else this.debugMessage(" Unknown mesh chunk: "+s.hexId);s=t.readChunk()}return e.computeVertexNormals(),r}readFaceArray(t,s){const e=t.readWord();this.debugMessage(" Faces: "+e);const a=[];for(let i=0;i<e;++i)a.push(t.readWord(),t.readWord(),t.readWord()),t.readWord();s.geometry.setIndex(a);let r=0,n=0;for(;!t.endOfChunk;){const i=t.readChunk();if(i.id===oe){this.debugMessage(" Material Group");const o=this.readMaterialGroup(i),d=o.index.length*3;s.geometry.addGroup(n,d,r),n+=d,r++;const l=this.materials[o.name];Array.isArray(s.material)===!1&&(s.material=[]),l!==void 0&&s.material.push(l)}else this.debugMessage(" Unknown face array chunk: "+i.hexId)}s.material.length===1&&(s.material=s.material[0])}readMap(t,s){let e=t.readChunk(),a={};const r=new T(this.manager);for(r.setPath(this.resourcePath||s).setCrossOrigin(this.crossOrigin);e;){if(e.id===K){const n=e.readString();a=r.load(n),this.debugMessage(" File: "+s+n)}else e.id===se?(a.offset.x=e.readFloat(),this.debugMessage(" OffsetX: "+a.offset.x)):e.id===te?(a.offset.y=e.readFloat(),this.debugMessage(" OffsetY: "+a.offset.y)):e.id===Q?(a.repeat.x=e.readFloat(),this.debugMessage(" RepeatX: "+a.repeat.x)):e.id===ee?(a.repeat.y=e.readFloat(),this.debugMessage(" RepeatY: "+a.repeat.y)):this.debugMessage(" Unknown map chunk: "+e.hexId);e=t.readChunk()}return a}readMaterialGroup(t){const s=t.readString(),e=t.readWord();this.debugMessage(" Name: "+s),this.debugMessage(" Faces: "+e);const a=[];for(let r=0;r<e;++r)a.push(t.readWord());return{name:s,index:a}}readColor(t){const s=t.readChunk(),e=new _;if(s.id===y||s.id===O){const a=s.readByte(),r=s.readByte(),n=s.readByte();e.setRGB(a/255,r/255,n/255),this.debugMessage(" Color: "+e.r+", "+e.g+", "+e.b)}else if(s.id===S||s.id===k){const a=s.readFloat(),r=s.readFloat(),n=s.readFloat();e.setRGB(a,r,n),this.debugMessage(" Color: "+e.r+", "+e.g+", "+e.b)}else this.debugMessage(" Unknown color chunk: "+s.hexId);return e}readPercentage(t){const s=t.readChunk();switch(s.id){case D:return s.readShort()/100;case R:return s.readFloat();default:return this.debugMessage(" Unknown percentage chunk: "+s.hexId),0}}debugMessage(t){this.debug&&console.log(t)}}class h{constructor(t,s,e){this.data=t,this.offset=s,this.position=s,this.debugMessage=e,this.debugMessage instanceof Function&&(this.debugMessage=function(){}),this.id=this.readWord(),this.size=this.readDWord(),this.end=this.offset+this.size,this.end>t.byteLength&&this.debugMessage("Bad chunk size for chunk at "+s)}readChunk(){if(this.endOfChunk)return null;try{const t=new h(this.data,this.position,this.debugMessage);return this.position+=t.size,t}catch{return this.debugMessage("Unable to read chunk at "+this.position),null}}get hexId(){return this.id.toString(16)}get endOfChunk(){return this.position>=this.end}readByte(){const t=this.data.getUint8(this.position,!0);return this.position+=1,t}readFloat(){try{const t=this.data.getFloat32(this.position,!0);return this.position+=4,t}catch(t){return this.debugMessage(t+" "+this.position+" "+this.data.byteLength),0}}readInt(){const t=this.data.getInt32(this.position,!0);return this.position+=4,t}readShort(){const t=this.data.getInt16(this.position,!0);return this.position+=2,t}readDWord(){const t=this.data.getUint32(this.position,!0);return this.position+=4,t}readWord(){const t=this.data.getUint16(this.position,!0);return this.position+=2,t}readString(){let t="",s=this.readByte();for(;s;)t+=String.fromCharCode(s),s=this.readByte();return t}}const F=19789,E=15786,w=49725,I=2,S=16,y=17,O=18,k=19,D=48,R=49,P=15677,N=15678,U=256,B=45055,W=40960,L=40976,v=40992,G=41008,V=41024,Y=41040,H=41089,X=41091,j=41093,z=41095,q=41472,J=41488,Z=41520,$=41476,K=41728,Q=41812,ee=41814,se=41816,te=41818,ae=16384,ie=16640,re=16656,ne=16672,oe=16688,de=16704,he=16736;export{ce as TDSLoader};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{bi as f}from"./three.module-IFn-4i31.js";class s extends f{constructor(i,e={}){const n=e.font;if(n===void 0)super();else{const d=n.generateShapes(i,e.size);e.depth===void 0&&(e.depth=50),e.bevelThickness===void 0&&(e.bevelThickness=10),e.bevelSize===void 0&&(e.bevelSize=8),e.bevelEnabled===void 0&&(e.bevelEnabled=!1),super(d,e)}this.type="TextGeometry"}}export{s as TextGeometry};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/document-preview-three-C3y0syYQ.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/scene-framing-50N7SKuX.js","assets/standard-viewport-dressing-GUUr6GuK.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i4 as P,i5 as lt,ay as Q,aA as Kt,bi as zt,i6 as It,bj as Vt,d_ as Ht,i7 as St,fK as Zt,az as tt,i8 as Xt,ap as g,eY as Ut,bx as Wt,i9 as Yt,fj as qt,fu as X,e3 as Jt,aw as Mt,ia as Qt,fE as te,gB as mt,e_ as ee,b8 as ne,ax as U,d5 as Et,_ as N,ib as oe,ic as re,X as se,id as Z,ie,dW as ae,bH as ce}from"./index-Ckxb31Yz.js";import{a as m}from"./jsx-runtime-DPjLkJKQ.js";import{O as ue}from"./Object3DDocumentViewport-DFHqru3a.js";import{S as de}from"./standard-viewport-dressing-GUUr6GuK.js";import{t as le}from"./viewport-surface-status-BFmnWp7z.js";import{r as w}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{withStoryMountTurn as vt,lastStoryMountPhaseTiming as me}from"./story-three-preview-C9W__8Or.js";import{m as pe}from"./three-story-model-BraQFA9h.js";import{setUserData as he}from"./user-data-CZqsJDk-.js";import{aU as R,M as Dt,B as fe,y as xe,w as ge,x as ye,al as be,ax as we,aV as Se,aZ as Me,cn as Ee,t as ve,j as De,V as O,p as _e,o as Pe}from"./three.module-IFn-4i31.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./crash-null-boundary-v3a0uEgw.js";import"./events-156d8d12.esm-C734MYnx.js";import"./index-bQE2NA0D.js";import"./story-mount-turn-DFRTj5hi.js";import"./object-marks-DwvIEBOK.js";const L={neighbourGapFactor:.45,minGap:.5,districtGapFactor:.6,minDistrictGap:3},$=.7,Oe={min:[0,0,0],max:[0,0,0]};function et(t){return[...t.min,...t.max].some(r=>!Number.isFinite(r))?Oe:{min:[Math.min(t.min[0],t.max[0]),Math.min(t.min[1],t.max[1]),Math.min(t.min[2],t.max[2])],max:[Math.max(t.min[0],t.max[0]),Math.max(t.min[1],t.max[1]),Math.max(t.min[2],t.max[2])]}}function nt(t){return[t.max[0]-t.min[0],t.max[1]-t.min[1],t.max[2]-t.min[2]]}function pt(t){const e=nt(et(t));return e[0]*e[2]}function Te(t){return-et(t).min[1]}function _t(t){const e=Math.max(t[0],t[2]),r=Math.max(.15,.1*e);return[Math.max(t[0]+2*r,$),Math.max(t[2]+2*r,$)]}function Pt(t){return Math.max(t[0],t[1])}function ke(t){return t.map(e=>({item:e,bounds:et(e.bounds)})).sort((e,r)=>{const n=pt(e.bounds)-pt(r.bounds);return n!==0?n:e.item.id<r.item.id?-1:1})}function Be(t){const e=Math.max($,...t.map(({bounds:r})=>Pt(_t(nt(r)))));return Math.max(10,2.2*e)}function Re(t,e,r){const n=Be(t),s=[];let o={slots:[],xEdge:0,depth:0,previousSpan:null};const i=()=>{o.slots.length>0&&s.push({slots:o.slots,xEdge:o.xEdge,depth:o.depth}),o={slots:[],xEdge:0,depth:0,previousSpan:null}};for(const{item:a,bounds:u}of t){const c=nt(u),d=_t(c),l=Pt(d),p=o.previousSpan===null?0:Math.max(r,e*Math.max(o.previousSpan,l));o.slots.length>0&&o.xEdge+p+d[0]>n&&i();const y=o.previousSpan===null?0:p,b=o.xEdge+y+d[0]/2;o.xEdge=b+d[0]/2,o.depth=Math.max(o.depth,d[1]),o.previousSpan=l,o.slots.push({item:a,bounds:u,size:c,footprint:d,centreX:b})}return i(),s}function ht(t,e,r,n,s){const o=Re(e,n,s),i=[];let a=r,u=null,c=0;for(const d of o){u!==null&&(a+=Math.max(s,n*Math.max(u,d.depth)));const l=a+d.depth/2;a=l+d.depth/2,u=d.depth,c=Math.max(c,d.xEdge);for(const p of d.slots)i.push({id:p.item.id,groupKey:t,translation:[p.centreX-(p.bounds.min[0]+p.bounds.max[0])/2,Te(p.bounds),l-(p.bounds.min[2]+p.bounds.max[2])/2],anchor:[p.centreX,0,l],size:p.size,footprint:p.footprint})}return{placements:i,xEdge:c,depth:a-r}}function je(t){return Math.min(3,Math.max(.6,.08*t))}function Ce(t,e={}){const r=e.neighbourGapFactor??L.neighbourGapFactor,n=e.minGap??L.minGap,s=e.districtGapFactor??L.districtGapFactor,o=e.minDistrictGap??L.minDistrictGap,i=new Map;for(const l of t){const p=i.get(l.groupKey);p?p.push(l):i.set(l.groupKey,[l])}const a=[];let u=0,c=null;for(const l of i.keys()){const p=ke(i.get(l)??[]),y=ht(l,p,0,r,n),b=je(Math.max(y.depth,$)),x=y.depth+2*b;c!==null&&(u+=Math.max(o,s*Math.max(c,x)));const h=u;u=h+x,c=x;const{placements:M,xEdge:V}=ht(l,p,h+b,r,n),_={minX:-b,maxX:V+b,minZ:h,maxZ:h+x};a.push({groupKey:l,items:M,extent:_,anchor:[(_.minX+_.maxX)/2,0,_.minZ]})}const d=a.length===0?{minX:0,maxX:0,minZ:0,maxZ:0}:{minX:Math.min(...a.map(l=>l.extent.minX)),maxX:Math.max(...a.map(l=>l.extent.maxX)),minZ:Math.min(...a.map(l=>l.extent.minZ)),maxZ:Math.max(...a.map(l=>l.extent.maxZ))};return{districts:a,extent:d}}const Ot={min:[0,0,0],max:[0,0,0]},Ae=.35,ft=20;function ot(t){return[...t.min,...t.max].every(e=>Number.isFinite(e))}function z(t){return ot(t)?{min:[Math.min(t.min[0],t.max[0]),Math.min(t.min[1],t.max[1]),Math.min(t.min[2],t.max[2])],max:[Math.max(t.min[0],t.max[0]),Math.max(t.min[1],t.max[1]),Math.max(t.min[2],t.max[2])]}:Ot}function Tt(t){const e=z(t);return[e.max[0]-e.min[0],e.max[1]-e.min[1],e.max[2]-e.min[2]]}function K(t){const e=t.map(z).filter(o=>ot(o));if(e.length===0)return Ot;const r=e[0],n=[r.min[0],r.min[1],r.min[2]],s=[r.max[0],r.max[1],r.max[2]];for(let o=1;o<e.length;o++){const i=e[o];n[0]=Math.min(n[0],i.min[0]),n[1]=Math.min(n[1],i.min[1]),n[2]=Math.min(n[2],i.min[2]),s[0]=Math.max(s[0],i.max[0]),s[1]=Math.max(s[1],i.max[1]),s[2]=Math.max(s[2],i.max[2])}return{min:n,max:s}}function W(t,e){const r=z(t);return{min:[r.min[0]+e[0],r.min[1]+e[1],r.min[2]+e[2]],max:[r.max[0]+e[0],r.max[1]+e[1],r.max[2]+e[2]]}}function Ne(t){return"min"in t?{bounds:t}:{bounds:t.bounds,...t.overlay===!0?{overlay:!0}:{},...t.enclosure===!0?{enclosure:!0}:{}}}function Le(t,e={}){if(e.overlay)return"volume";if(e.enclosure)return"environment-scale";const n=[...Tt(t)].sort((a,u)=>u-a),s=n[0]??0,o=n[1]??0;return(n[2]??0)<Ae&&o>=ft&&s>=ft?"unbounded-plane":null}function Ge(t){const e=t.map(Ne).map(a=>({bounds:z(a.bounds),overlay:a.overlay===!0,enclosure:a.enclosure===!0})).filter(a=>ot(a.bounds)),r=e.map(a=>a.bounds),n=K(r);if(e.length<2)return{full:n,presence:n,helpers:[]};const s=e.map(a=>Le(a.bounds,{overlay:a.overlay,enclosure:a.enclosure})),o=e.filter((a,u)=>s[u]===null).map(a=>a.bounds);if(o.length===0)return{full:n,presence:n,helpers:[]};const i=[];for(let a=0;a<e.length;a++){const u=s[a]??null;u!==null&&i.push({kind:u,bounds:e[a].bounds,size:Tt(e[a].bounds)})}return{full:n,presence:K(o),helpers:i}}function Fe(t){const e=t.map(u=>({exhibit:u,presence:Ge(u.nodes)})),r=e.map(({exhibit:u,presence:c})=>({id:u.id,groupKey:u.groupKey,bounds:c.presence})),n=Ce(r),s=new Map;for(const u of n.districts)for(const c of u.items)s.set(c.id,c);const o=[],i=[],a=[];for(const{exhibit:u,presence:c}of e){const d=s.get(u.id);d&&(o.push({id:u.id,groupKey:u.groupKey,full:c.full,presence:c.presence,helpers:c.helpers,placement:d}),i.push(W(c.presence,d.translation)),a.push(W(c.full,d.translation)))}return{layout:n,exhibits:o,frame:K(i),fullFrame:K(a)}}const kt="vgaiBoardStoryId",Bt="vgaiBoardComponentKey",I="vgai:board:no-story";function $e(t){return{stories:t.length,modules:new Set(t.map(e=>e.modulePath)).size}}const Y="Ungrouped",xt="No story yet",Ke=.9;function ze(t){return t instanceof Error?t.message:String(t)}async function Ie(t,e,r){const n=Date.now();let s=null,o=null;try{s=await r(e),pe(s.root)||(s.dispose(),s=null,o="The story mounted no three content.")}catch(a){o=ze(a)}const i=me();return Xt({id:t.id,ms:Date.now()-n,runtimeMs:i?.runtimeMs??0,loadMs:i?.loadMs??0,fiberMs:i?.fiberMs??0,settleMs:i?.settleMs??0,ok:s!==null}),{identity:t,mounted:s,reason:o}}function Rt(t){t.traverse(e=>{e.layers.enable(Zt),he(e,"editorHelper",!0)})}const Ve={color:3291977,roughness:.92,metalness:.04,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:2},gt=.06,He=0,yt=0,Ze=11124182,Xe=9413565;function Ue(t){const e=t.extent.maxX-t.extent.minX,r=t.extent.maxZ-t.extent.minZ,n=new Dt(new fe(e,gt,r),new xe(Ve));return n.name=`vgai:board-pad:${t.groupKey||Y}`,n.position.set((t.extent.minX+t.extent.maxX)/2,He-gt/2,(t.extent.minZ+t.extent.maxZ)/2),n.receiveShadow=!0,Rt(n),n}function We(t,e){const r=t/2,n=e/2,s=[[-r,-n],[r,-n],[r,n],[-r,n]],o=[];for(let u=0;u<s.length;u++){const c=s[u],d=s[(u+1)%s.length];o.push(c[0],0,c[1],d[0],0,d[1])}const i=new we;i.setAttribute("position",new Se(o,3));const a=new Me(i,new Ee({color:Ze,dashSize:.09,gapSize:.06}));return a.computeLineDistances(),a}function Ye(t){const e=new R;e.name=`vgai:board-ghost:${t.name}`,e.userData[Bt]=t.key;const[r,n]=t.placement.footprint,s=new Dt(new ge(r,n),new ye({color:Xe,transparent:!0,opacity:.1,depthWrite:!1,side:be}));s.rotation.x=-Math.PI/2,s.position.y=yt;const o=We(r,n);return o.position.y=yt,e.add(s,o),e.position.set(t.placement.anchor[0],0,t.placement.anchor[2]),e}function qe(t,e,r){if(!r.componentName)return!0;const n=St(t,r.componentName,e);return!n||n.modulePath===e&&n.name===r.name}function Je(t){return jt(t).length}function jt(t){const e=[],r=new Map,n=tt();for(const s of t)if(s.ok)for(const o of s.stories){const i=Q({modulePath:s.modulePath,regions:n});if(i.medium!=="three"){i.via==="undeclared"&&Kt(s.modulePath,i.reason);continue}if(!qe(t,s.modulePath,o))continue;const a=zt({modulePath:s.modulePath,...o.title===void 0?{}:{title:o.title}}),u=It(a),c=`${u}/${a.leaf}`;r.set(c,(r.get(c)??0)+1),e.push({identity:{id:`${s.modulePath}#${o.name}`,storyName:o.name,modulePath:s.modulePath,groupKey:u,groupLeaf:a.leaf,groupPath:Vt(a)},storyLabel:o.label,Component:o.Component})}return e.map(({identity:s,storyLabel:o,Component:i})=>({identity:{...s,label:(r.get(`${s.groupKey}/${s.groupLeaf}`)??0)>1?`${s.groupLeaf} · ${o}`:s.groupLeaf},Component:i}))}function Qe(t,e){const r=new Set,n=[];for(const s of e){if(s.surface!=="three"||s.contentKind==="image")continue;const o=`${s.path}#${s.name}`;r.has(o)||(r.add(o),!St(t,s.name,s.path)&&n.push(s))}return n}function tn(t,e,r){const n=new R;return n.name=`vgai:board-exhibit:${t.label}`,n.position.set(...e.translation),n.add(r.root),n.userData[kt]=t.id,n}function q(t){return vt(async()=>{t.dispose()})}async function Ct(t,e=[],r){return vt(n=>sn(t,e,r,n))}async function en(t,e,r){const n=[];for(const{identity:s,Component:o}of t){if(e?.aborted)break;n.push(await Ie(s,o,r))}return n}function nn(t){return{min:t.min.toArray(),max:t.max.toArray()}}function on(t){const e=new Map,r=new Map,n=[],s=[];for(const o of t){if(!o.mounted){s.push({id:o.identity.id,modulePath:o.identity.modulePath,storyName:o.identity.storyName,reason:o.reason??"The story produced no Object3D."});continue}const i=Ht(o.mounted.root).map(a=>({bounds:nn(a.box),overlay:a.overlay,enclosure:a.enclosure}));e.set(o.identity.id,o.mounted),r.set(o.identity.id,o.identity),n.push({id:o.identity.id,groupKey:o.identity.groupKey,nodes:i})}return{mounts:e,identities:r,measures:n,skipped:s}}function rn(t){const e=Ke/2;return{id:`${t.path}#${t.name}`,groupKey:I,nodes:[{min:[-e,0,-e],max:[e,0,e]}]}}async function sn(t,e,r,n){const s=Date.now(),o=jt(t);P("candidate-collect",Date.now()-s),lt({candidateCount:o.length});const i=Date.now(),a=await en(o,r,n);P("story-mounts",Date.now()-i);const u=Date.now(),{mounts:c,identities:d,measures:l,skipped:p}=on(a);P("bounds",Date.now()-u);const y=Date.now(),b=Qe(t,e),x=new Map(b.map(f=>[`${f.path}#${f.name}`,f])),h=Fe([...l,...b.map(rn)]),M=h.layout,V=new Map(h.exhibits.map(f=>[f.id,f]));P("layout",Date.now()-y);const _=Date.now(),T=new R;T.name="vgai:three-board";const k=new R;k.name="vgai:board-chrome",Rt(k),T.add(k);const j=[],rt=[],st=[],it=[k];for(const f of M.districts){const E=f.groupKey===I,D=new R;D.name=`vgai:board-district:${E?xt:f.groupKey||Y}`,T.add(D),k.add(Ue(f));for(const S of f.items){if(E){const A=x.get(S.id);if(!A)continue;const ut={key:S.id,name:A.name,path:A.path,line:A.line,placement:S},dt=Ye(ut);D.add(dt),it.push(dt),st.push(ut);continue}const C=c.get(S.id),H=d.get(S.id),v=V.get(S.id);!C||!H||!v||(D.add(tn(H,S,C)),j.push({...H,placement:S,fullSize:[v.full.max[0]-v.full.min[0],v.full.max[1]-v.full.min[1],v.full.max[2]-v.full.min[2]],helpers:v.helpers}))}rt.push({groupKey:f.groupKey,label:E?xt:f.groupKey||Y,placement:f})}const $t=j.flatMap(f=>f.helpers.map(E=>({exhibitId:f.id,exhibitLabel:f.label,kind:E.kind,size:E.size})));let at=!1;const ct={root:T,exhibits:j,districts:rt,ghostSlots:st,skipped:p,frameBounds:h.frame,openingFrameBounds:h.exhibits[0]?W(h.exhibits[0].presence,h.exhibits[0].placement.translation):h.frame,helperVolumes:$t,dispose(){if(!at){at=!0;for(const f of it)f.traverse(E=>{const D=E;D.geometry?.dispose();const S=D.material;if(Array.isArray(S))for(const C of S)C.dispose();else S?.dispose()}),f.removeFromParent();for(const f of c.values())try{f.dispose()}catch(E){console.error("[three-board] a story mount failed to dispose.",E)}c.clear(),T.clear()}}};if(P("assemble",Date.now()-_),lt({exhibitCount:j.length,skippedCount:p.length}),r?.aborted)throw ct.dispose(),new Error("The 3D board build was superseded by a newer one.");return ct}function an(t){return At(t,kt)}function cn(t){return At(t,Bt)}function At(t,e){let r=t;for(;r;){const n=r.userData[e];if(typeof n=="string")return n;r=r.parent}return null}const Nt="3D";let F=null,Lt=0;const J=new Set;function bt(){Lt++;for(const t of J)t()}function un(t){return J.add(t),()=>{J.delete(t)}}function dn(){return Lt}function Gt(t){return Number.isFinite(t)?t>=10?`${Math.round(t)} m`:t>=1?`${t.toFixed(1)} m`:`${t.toFixed(2)} m`:"—"}function ln(t,e,r){const n=Ft(e,r);return n?Qt(te,t,{modulePath:n.modulePath,storyName:n.storyName,title:n.label}):null}function mn(t,e,r){const n=Sn(t,e);if(!n)return null;const s={definitionLocation:()=>({file:n.path,line:n.line})};return r?mt(s,n.key,"definition",r):mt(s,n.key,"definition")}function pn(t){const e=tt(),r=t.filter(o=>o.ok&&Q({modulePath:o.modulePath,regions:e}).medium==="three"),n=w.useRef([]),s=n.current;return(s.length!==r.length||s.some((o,i)=>o!==r[i]))&&(n.current=r),n.current}function hn({documentId:t,active:e,store:r}){const n=w.useSyncExternalStore(Mt,U),s=pn(n),[o,i]=w.useState({status:"idle"});e&&oe(t);const[a,u]=w.useState(e);w.useEffect(()=>{e&&u(!0)},[e]),w.useEffect(()=>{if(!a)return;const p=new AbortController;let y=null;i({status:"building"}),re(t,{modulesAlreadyLoaded:s.length>0});const b=Date.now();return Et().then(x=>{const h=Date.now()-b;return P("component-index",h,{busyMs:0,waitMs:h}),x.ok||se.warn(`Component index unavailable, so this board shows no ghost slots: ${x.reason}`,"three-board"),Ct(s,x.ok?x.entries:[],p.signal)}).then(x=>{if(p.signal.aborted){Z(t),q(x);return}y=x,F=x,bt(),ie(),i({status:"ready",scene:x})},x=>{if(p.signal.aborted){Z(t);return}i({status:"error",message:x instanceof Error?x.message:String(x)})}),()=>{p.abort(),y?(F===y&&(F=null),q(y),bt()):Z(t)}},[s,a,t]);const c=o.status==="ready"?o.scene:null,d=w.useCallback(()=>{if(!c)throw new Error("The 3D board is still building.");return{root:c.root,dispose(){}}},[c]),l=w.useCallback(p=>{if(ln(r,c,p)!==null)return;const y=mn(c,p);y&&y.then(ae)},[c,r]);return m.jsx("div",{style:{position:"relative",flex:1,minHeight:0,pointerEvents:"auto"},children:c?m.jsxs(m.Fragment,{children:[m.jsx(ue,{documentId:t,sourcePath:"Generated from this project’s stories",displayName:Nt,build:d,active:e,onOpenNode:l,cameraDirection:de,frameBounds:c.frameBounds,openingFrameBounds:c.openingFrameBounds,dressing:{grid:!0}}),m.jsx(xn,{documentId:t,scene:c,active:e}),m.jsx(fn,{scene:c})]}):m.jsxs("div",{"data-testid":"three-board-status",style:{padding:16,fontSize:12,color:g.content.muted},children:[o.status==="error"&&o.message,o.status==="building"&&le(Je(s)),o.status==="idle"&&"Open this tab to lay out every story at true scale."]})})}function fn({scene:t}){const[e,r]=w.useState(!1),n=$e(t.skipped),s=t.districts.filter(o=>o.groupKey!==I).length;return m.jsxs("div",{"data-testid":"three-board-status",style:{position:"absolute",left:8,bottom:8,maxWidth:420,padding:"4px 8px",borderRadius:g.shape.small,background:g.surface.raised,border:`1px solid ${g.boundary.default}`,fontSize:10,color:g.content.muted,pointerEvents:"auto"},children:[t.exhibits.length," exhibit",t.exhibits.length===1?"":"s"," · ",s," ","district",s===1?"":"s",t.helperVolumes.length>0&&m.jsxs(m.Fragment,{children:[" · ",t.helperVolumes.length," helper volume",t.helperVolumes.length===1?"":"s"," at true scale, outside the default frame"]}),t.ghostSlots.length>0&&m.jsxs(m.Fragment,{children:[" · ",t.ghostSlots.length," component",t.ghostSlots.length===1?"":"s"," without stories"]}),t.skipped.length>0&&m.jsxs(m.Fragment,{children:[" · ",m.jsxs("span",{role:"button",tabIndex:0,"aria-expanded":e,onClick:()=>r(o=>!o),onKeyDown:o=>{(o.key===" "||o.key==="Enter")&&(o.preventDefault(),r(i=>!i))},style:{cursor:"pointer",color:g.accent.default},children:[n.stories," ",n.stories===1?"story":"stories"," in ",n.modules," ",n.modules===1?"module":"modules"," not on this board"]})]}),e&&m.jsx("div",{style:{marginTop:4,maxHeight:160,overflow:"auto"},children:t.skipped.map(o=>m.jsxs("div",{style:{padding:"1px 0"},children:[m.jsxs("code",{style:{color:g.content.dim},children:[o.modulePath,"#",o.storyName]})," ","— ",o.reason]},o.id))})]})}function xn({documentId:t,scene:e,active:r}){const n=w.useRef(null),[s,o]=w.useState([]);return w.useEffect(()=>{if(!r)return;let i=0,a=!1;const u=gn(e),c=()=>{if(a)return;i=requestAnimationFrame(c);const d=n.current,l=ce(t);!d||!l||d.clientWidth===0||d.clientHeight===0||o(yn(u,l.camera(),d.clientWidth,d.clientHeight))};return i=requestAnimationFrame(c),()=>{a=!0,cancelAnimationFrame(i)}},[r,t,e]),m.jsx("div",{ref:n,"data-testid":"three-board-labels",style:{position:"absolute",inset:-12,pointerEvents:"none",overflow:"hidden"},children:s.map(i=>m.jsxs("div",{style:{position:"absolute",left:i.x,top:i.y,transform:"translate(-50%, -100%)",whiteSpace:"nowrap",padding:i.district?"2px 7px":"1px 5px",borderRadius:g.shape.small,background:g.surface.raised,border:`1px ${i.ghost?"dashed":"solid"} ${i.district&&!i.ghost?g.accent.default:g.boundary.default}`,color:i.district&&!i.ghost?g.content.primary:g.content.muted,fontSize:i.district?12:10,fontWeight:i.district?600:400,opacity:i.ghost?.9:1},children:[i.text,m.jsx("span",{style:{marginLeft:6,color:g.content.dim,fontWeight:400},children:i.detail})]},i.key))})}const B=new O;function wt(t){return[t.anchor[0],0,t.anchor[2]-t.footprint[1]/2]}function gn(t){return[...t.districts.map(e=>{const r=e.groupKey===I,n=e.placement.items.length;return{key:`district:${e.groupKey}`,text:e.label,detail:r?`${n} component${n===1?"":"s"}`:`${n} exhibit${n===1?"":"s"}`,district:!0,ghost:r,point:e.placement.anchor}}),...t.exhibits.map(e=>({key:`exhibit:${e.id}`,text:e.label,detail:Gt(e.placement.size[1]),district:!1,ghost:!1,point:wt(e.placement)})),...t.ghostSlots.map(e=>({key:`ghost:${e.key}`,text:e.name,detail:"No story yet",district:!1,ghost:!0,point:wt(e.placement)}))]}function yn(t,e,r,n){e.updateMatrixWorld();const s=[];for(const o of t)B.set(o.point[0],o.point[1],o.point[2]).project(e),!(B.z>1)&&s.push({key:o.key,text:o.text,detail:o.detail,district:o.district,ghost:o.ghost,x:(B.x*.5+.5)*r,y:(-B.y*.5+.5)*n,depth:B.z});return wn(s).sort((o,i)=>i.depth-o.depth)}function bn(t){const e=t.district?12:10,r=(t.text.length+t.detail.length)*e*.62+24,n=e+8;return[t.x-r/2,t.y-n,t.x+r/2,t.y]}function wn(t){const e=[...t].sort((n,s)=>(s.district?1:0)-(n.district?1:0)||n.depth-s.depth),r=[];for(const n of e){const s=bn(n);r.some(i=>s[0]<i.rect[2]&&s[2]>i.rect[0]&&s[1]<i.rect[3]&&s[3]>i.rect[1])||r.push({label:n,rect:s})}return r.map(n=>n.label)}function Ft(t,e){if(!t)return null;const r=an(e);return r?t.exhibits.find(n=>n.id===r)??null:null}function Sn(t,e){if(!t)return null;const r=cn(e);return r?t.ghostSlots.find(n=>n.key===r)??null:null}function Mn({adapter:t,nodeId:e}){w.useSyncExternalStore(un,dn);const n=[...e?[e]:[],...t.selection?.get()??[]].reduce((s,o)=>s??Ft(F,t.hierarchy.object3D?.(o)??null),null);return m.jsx("div",{"data-testid":"inspector-exhibit",style:{pointerEvents:"auto",padding:8,borderBottom:`1px solid ${g.boundary.default}`},children:n?m.jsxs("div",{style:{display:"grid",gap:3,fontSize:11},children:[m.jsx("div",{style:{color:g.content.primary,fontWeight:600},children:n.label}),m.jsx(G,{label:"Story",value:n.storyName}),m.jsx(G,{label:"Group",value:n.groupPath}),m.jsx(G,{label:"Module",value:n.modulePath}),m.jsx(G,{label:"Size",value:n.placement.size.map(s=>Gt(s)).join(" × ")})]}):m.jsx("div",{style:{fontSize:11,color:g.content.dim},children:"Pick an exhibit to read its story."})})}function G({label:t,value:e}){return m.jsxs("div",{style:{display:"flex",gap:6},children:[m.jsx("span",{style:{width:52,flexShrink:0,color:g.content.muted},children:t}),m.jsx("code",{style:{color:g.content.primary,overflow:"hidden",textOverflow:"ellipsis"},title:e,children:e})]})}const En=ee();function vn(){En.ensure(t=>{t(Ut({match:()=>qt()?.descriptor.id===X,id:"exhibit",title:"Exhibit",icon:Yt,order:Wt,Section:Mn}))})}const Dn={revision:()=>JSON.stringify(U().map(t=>t.modulePath)),subscribe:Mt,capture:async t=>{await ne();const e=tt(),r=U().filter(o=>o.ok&&Q({modulePath:o.modulePath,regions:e}).medium==="three"),n=await Et(),s=await Ct(r,n.ok?n.entries:[]);try{const{captureAuthoredThreeScenePreview:o}=await N(async()=>{const{captureAuthoredThreeScenePreview:h}=await import("./document-preview-three-C3y0syYQ.js");return{captureAuthoredThreeScenePreview:h}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])),{createStandardEnvironment:i}=await N(async()=>{const{createStandardEnvironment:h}=await import("./index-Ckxb31Yz.js").then(M=>M.tZ);return{createStandardEnvironment:h}},__vite__mapDeps([1,2,3,4,5,6,7,8,9,10,11])),{applyStandardViewportDressing:a}=await N(async()=>{const{applyStandardViewportDressing:h}=await import("./standard-viewport-dressing-GUUr6GuK.js").then(M=>M.d);return{applyStandardViewportDressing:h}},__vite__mapDeps([13,1,2,3,4,5,6,7,8,9,10,11])),{isEditorOwnedObject:u}=await N(async()=>{const{isEditorOwnedObject:h}=await import("./index-Ckxb31Yz.js").then(M=>M.u8);return{isEditorOwnedObject:h}},__vite__mapDeps([1,2,3,4,5,6,7,8,9,10,11]));s.root.traverse(h=>{u(h)&&(h.visible=!1)});const c=new ve;c.add(s.root);const d=new De(new O(...s.frameBounds.min),new O(...s.frameBounds.max)),l=d.isEmpty()?new O:d.getCenter(new O),y=(d.isEmpty()?1:Math.max(.01,d.getBoundingSphere(new _e).radius))/Math.sin(Pe.degToRad(42/2))*1.15,b=l.clone().addScaledVector(new O(1,.75,1).normalize(),y),x={...t,camera:{position:b,target:l,fov:42}};return o(s.root,c,x,h=>{const M=a(c,{environment:i(h),background:!1});return()=>M.dispose()})}finally{await q(s)}}};function Xn(t){return vn(),Jt({id:X,title:Nt,kind:"content-browser",workspaceRole:"workspace-reference",Content:e=>m.jsx(hn,{...e,store:t}),readOnly:!0,preview:Dn,presentation:()=>({kind:"workspace",id:X})},{category:"canvas"})}export{Mn as BoardExhibitSection,X as THREE_COMPONENTS_DOCUMENT_ID,vn as ensureThreeBoardContributionsRegistered,Xn as installThreeBoardDocument,ln as openExhibitStoryDocument,mn as openGhostComponentSource};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{
|
|
1
|
+
import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{ap as m,gc as j,aG as b}from"./index-Ckxb31Yz.js";import{r as c}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{captureAuthoredThreeScenePreview as E}from"./document-preview-three-C3y0syYQ.js";import{m as v}from"./mounted-story-viewport-source-CAlEmE0_.js";import{mountStoryObject3D as w,disposeStoryObject3D as x}from"./story-three-preview-C9W__8Or.js";import{O as N}from"./Object3DDocumentViewport-DFHqru3a.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";import"./scene-framing-50N7SKuX.js";import"./crash-null-boundary-v3a0uEgw.js";import"./events-156d8d12.esm-C734MYnx.js";import"./index-bQE2NA0D.js";import"./story-mount-turn-DFRTj5hi.js";import"./viewport-surface-status-BFmnWp7z.js";async function P(t,n,e){const s=(await import(t))[e??"default"];if(typeof s!="function")throw new Error(`${n} does not export ${e===void 0?"a default component":`\`${e}\``}, which is what the adapter's scene table names. The table and the module disagree.`);return s}function L({active:t,documentId:n,state:e}){const[o,a]=c.useState(null),[s,p]=c.useState(null),u=c.useRef(null),[f,g]=c.useState(t);c.useEffect(()=>{t&&g(!0)},[t]);const d=e?.path,h=e?.exportName;return c.useEffect(()=>{if(!f||!d)return;let l=!1;return p(null),a(null),y(d,h).then(r=>w(r,{})).then(r=>{if(l){x(r);return}const S=v(r);u.current=S,a(S)}).catch(r=>{l||p(r instanceof Error?r.message:String(r))}),()=>{l=!0,u.current?.dispose(),u.current=null,a(null)}},[f,d,h]),e?s?i.jsxs("div",{role:"alert","data-testid":"scene-document-error",style:{padding:12,fontSize:12,color:m.semantic.danger,maxWidth:640},children:[i.jsxs("div",{style:{fontWeight:600,marginBottom:4},children:[e.path,e.exportName?` — ${e.exportName}`:""]}),i.jsx("div",{style:{color:m.content.muted,whiteSpace:"pre-wrap"},children:s})]}):o?i.jsx(N,{documentId:n,sourcePath:e.path,build:o.build,displayName:e.label,active:t}):i.jsx("div",{"data-testid":"scene-document-loading",style:{padding:12,fontSize:12,color:m.content.muted,fontStyle:"italic"},children:"mounting…"}):i.jsx("div",{style:{padding:12,fontSize:12,color:m.content.muted},children:"This scene document is no longer declared by the project's adapter."})}async function y(t,n){const e=b();if(!e)throw new Error("No project is open, so its scene modules cannot be loaded.");const o=`${j(e.rootPath,t)}?t=${Date.now()}`;return P(o,t,n)}async function M(t,n){const e=await y(t.path,t.exportName),o=await w(e,{});try{return E(o.root,o.scene,n)}finally{await x(o)}}export{L as ThreeIsolationSceneContent,M as captureThreeIsolationScenePreview};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{Object3DPreview as d}from"./Object3DPreview-
|
|
1
|
+
import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{Object3DPreview as d}from"./Object3DPreview-BTtZ-41z.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-Ckxb31Yz.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./OrbitControls-CzTRRI7x.js";import"./editor-presentation-activity-C7SNSmTd.js";function F({build:r,displayName:e="Object3D preview",height:m=360,background:p,showSkeleton:s=!1,cameraDirection:n,showGrid:c,useDefaultLighting:u,exposure:a,setupPreview:t,active:j=!0}){const i=t!==void 0;return o.jsx("div",{style:{width:"100%",height:m,minHeight:240},children:o.jsx(d,{sourceFactory:r,displayName:e,active:j,showSkeleton:s,background:p,cameraDirection:n,showGrid:c??!i,useDefaultLighting:u??!i,exposure:a,setupPreview:t})})}export{F as ToolObject3DPreview};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{bq as T,br as y,dD as C,dE as v,bT as R,dF as w,dG as B,a7 as x,bU as p,a5 as E,a6 as c,dH as P,bX as D,bY as k,ab as L,ac as F,b_ as V,bV as u,dI as G,dJ as m,dK as H,dL as K,dM as _,cb as O,dN as z,aa as d,bD as g,dO as I,aR as M,dP as f,dQ as $}from"./index-Ckxb31Yz.js";import{r as l}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{r as j}from"./transform-mode-request-Cu7ewbtr.js";function b({active:a,onArm:n,faIcon:t,action:r,label:o}){return e.jsx(p,{text:o,hotkey:m(r),children:e.jsx(u,{"aria-label":o,"aria-pressed":a,shape:"segment",size:"comfortable",onClick:n,children:e.jsx(c,{icon:t,size:"md"})})})}function A({store:a,dimensions:n="3d",size:t="comfortable",variant:r="ghost"}){const[o,i]=l.useState(!1),h=l.useRef(null);return l.useEffect(()=>{if(!o)return;const s=N=>{h.current&&!h.current.contains(N.target)&&i(!1)};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[o]),e.jsxs("div",{ref:h,className:"vgai-viewport-popover-anchor",children:[e.jsxs(w,{children:[e.jsx(p,{text:"Toggle Snap",hotkey:m("viewport.toggleSnap"),children:e.jsx(u,{"aria-label":"Toggle snap","aria-pressed":a.snapEnabled,variant:r,size:t,onClick:()=>a.toggleSnap(),children:e.jsx(c,{icon:_,size:"md"})})}),e.jsx(p,{text:"Snap Settings",children:e.jsx(u,{"aria-label":"Snap settings","aria-haspopup":"dialog","aria-expanded":o,variant:r,size:t,onClick:()=>i(!o),children:e.jsx(c,{icon:k,size:"xs"})})})]}),o&&e.jsx(O,{className:"vgai-snap-popover",children:e.jsxs(z,{gap:2,children:[e.jsx(d,{variant:"caption",tone:"muted",children:"Translate"}),e.jsx(g,{type:"number",value:a.snapValues.translate,step:.25,min:.01,onChange:s=>a.setSnapValues({translate:Number(s.target.value)||1})}),e.jsx(d,{variant:"caption",tone:"muted",children:"Rotate (deg)"}),e.jsx(g,{type:"number",value:a.snapValues.rotate,step:5,min:1,onChange:s=>a.setSnapValues({rotate:Number(s.target.value)||15})}),e.jsx(d,{variant:"caption",tone:"muted",children:"Scale"}),e.jsx(g,{type:"number",value:a.snapValues.scale,step:.05,min:.01,onChange:s=>a.setSnapValues({scale:Number(s.target.value)||.25})}),n==="3d"&&e.jsxs(e.Fragment,{children:[e.jsxs(I,{gap:2,align:"center",onClick:()=>a.toggleSnapToSurface(),children:[e.jsx(M,{checked:a.snapToSurface,readOnly:!0}),e.jsx(d,{children:"Snap to Surface"})]}),e.jsxs(d,{variant:"caption",tone:"dim",children:["Hold ",e.jsx(f,{children:"Ctrl"})," while dragging to snap once ·"," ",e.jsx(f,{children:m("viewport.toggleSnap")})," toggles"]}),e.jsxs(d,{variant:"caption",tone:"dim",children:["Hold ",e.jsx(f,{children:m("viewport.vertexSnapHold")})," during translate for vertex snap"]})]})]})})]})}const q={"active-element":"Active Element","median-point":"Median Point","individual-origins":"Individual Origins"};function U({store:a}){const n=["active-element","median-point","individual-origins"],t=`Pivot: ${q[a.pivotMode]}`;return e.jsx(p,{text:t,hotkey:m("viewport.cyclePivot"),children:e.jsx(u,{"aria-label":t,"aria-pressed":a.pivotMode!=="active-element",variant:"secondary",onClick:()=>{const r=n.indexOf(a.pivotMode);a.setPivotMode(n[(r+1)%n.length])},children:e.jsx(c,{icon:G,size:"md"})})})}const J={auto:"Auto",pivot:"Pivot",center:"Center"};function Q({store:a}){const n=["auto","pivot","center"],t=`Anchor: ${J[a.gizmoAnchor]}`;return e.jsx(p,{text:t,children:e.jsx(u,{"aria-label":t,"aria-pressed":a.gizmoAnchor!=="auto",variant:"secondary",onClick:()=>{const r=n.indexOf(a.gizmoAnchor);a.setGizmoAnchor(n[(r+1)%n.length])},children:e.jsx(c,{icon:a.gizmoAnchor==="center"?H:K,size:"md"})})})}function W({store:a}){const[n,t]=l.useState(!1),r=l.useRef(null);return l.useEffect(()=>{if(!n)return;const o=i=>{r.current?.contains(i.target)||t(!1)};return document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[n]),e.jsxs("div",{ref:r,className:"vgai-viewport-popover-anchor",children:[e.jsx(p,{text:"Transform options",children:e.jsx(u,{"aria-label":"Transform options","aria-haspopup":"dialog","aria-expanded":n,variant:"secondary",onClick:()=>t(o=>!o),children:e.jsx(c,{icon:$,size:"md"})})}),n?e.jsx(O,{style:{minWidth:240},children:e.jsxs(z,{gap:3,children:[e.jsxs(E,{size:"compact",variant:"ghost",onClick:()=>{a.snapSelectionToFloor(),t(!1)},children:["Snap Selection to Floor ",e.jsx(f,{children:m("viewport.snapToFloor")})]}),e.jsxs(I,{gap:2,align:"center",onClick:()=>a.togglePreserveChildrenTransform(),style:{cursor:"pointer"},children:[e.jsx(M,{checked:a.preserveChildrenTransform,readOnly:!0}),e.jsx(d,{children:"Preserve Children Transform"})]}),e.jsx(d,{variant:"caption",tone:"dim",children:"Keep source-writable children fixed in world space while their parent moves."})]})}):null]})}function X({store:a}){const[n,t]=l.useState(!1),r=l.useRef(null),o=a.transformSpace==="world"?"Global":"Local";return e.jsxs("div",{className:"vgai-viewport-popover-anchor",children:[e.jsx(p,{text:`Transform orientation: ${o}`,children:e.jsxs(E,{ref:r,type:"button",size:"compact",variant:"secondary","aria-label":`Transform orientation: ${o}`,"aria-haspopup":"menu","aria-expanded":n,onClick:()=>t(i=>!i),className:"vgai-transform-orientation-trigger",children:[e.jsx(c,{icon:a.transformSpace==="world"?P:D,size:"sm"}),e.jsx("span",{children:o}),e.jsx(c,{icon:k,size:"xs"})]})}),n&&e.jsx(L,{anchorRef:r,align:"start",clamp:!0,"aria-label":"Transform orientation",onDismiss:()=>t(!1),children:["world","local"].map(i=>e.jsxs(F,{role:"menuitemradio","aria-checked":a.transformSpace===i,onSelect:()=>{a.setTransformSpace(i),t(!1)},children:[e.jsx("span",{className:"vgai-menu-check",children:a.transformSpace===i&&e.jsx(c,{icon:V,size:"xs"})}),i==="world"?"Global":"Local"]},i))})]})}function oe({store:a}={}){const n=T(y()),t=a??n;return l.useSyncExternalStore(t.subscribe,t.getShellSnapshot??t.getSnapshot),l.useSyncExternalStore(C,v,v),e.jsxs(R,{compact:!0,label:"Transform controls","data-testid":"transform-header-controls",className:"vgai-transform-header-controls",children:[e.jsx(X,{store:t}),e.jsxs(w,{children:[e.jsx(U,{store:t}),e.jsx(Q,{store:t})]}),e.jsx(A,{store:t,size:"default",variant:"secondary"}),e.jsx(W,{store:t})]})}const Y=()=>()=>{},S=()=>null;function se({dimensions:a="3d",door:n,store:t}={}){const r=T(y()),o=t??r;l.useSyncExternalStore(o.subscribe,o.getShellSnapshot??o.getSnapshot),l.useSyncExternalStore(C,v,v);const i=l.useSyncExternalStore(n?.subscribe??Y,n?.armed??S,n?.armed??S),h=[{mode:"translate",faIcon:x.tool.move,action:"transform.translate",label:"Move"},{mode:"rotate",faIcon:x.tool.rotate,action:"transform.rotate",label:"Rotate"},{mode:"scale",faIcon:x.tool.scale,action:"transform.scale",label:"Scale"}];return e.jsxs(B,{label:"Transform tools","data-testid":a==="2d"?"canvas-2d-toolstrip":"threejs-toolstrip",className:"vgai-viewport-toolbar vgai-viewport-toolbar-left",children:[n?null:e.jsx(b,{faIcon:x.tool.select,action:"transform.select",label:"Select",active:o.transformMode==="select",onArm:()=>j(o,"select")}),h.map(s=>e.jsx(b,{faIcon:s.faIcon,action:s.action,label:s.label,active:n?i===s.mode:o.transformMode===s.mode,onArm:()=>n?n.begin(s.mode):j(o,s.mode)},s.mode)),n?null:e.jsx(b,{faIcon:x.tool.transform,action:"transform.combined",label:"Transform (all handles)",active:o.transformMode==="combined",onArm:()=>j(o,"combined")}),a==="2d"?e.jsx(A,{store:o,dimensions:"2d"}):null]})}export{oe as T,se as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as O,m as r,V as o,g as n,Q as S,r as f}from"./three.module-D396a9Mn.js";const u={type:"change"},E={type:"start"},b={type:"end"},P=1e-6,s={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM_PAN:4},p=new n,h=new n,M=new o,_=new o,y=new o,a=new S,w=new o,m=new o,g=new o,l=new o;class X extends O{constructor(t,i=null){super(t,i),this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.keys=["KeyA","KeyS","KeyD"],this.mouseButtons={LEFT:r.ROTATE,MIDDLE:r.DOLLY,RIGHT:r.PAN},this.target=new o,this.state=s.NONE,this.keyState=s.NONE,this._lastPosition=new o,this._lastZoom=1,this._touchZoomDistanceStart=0,this._touchZoomDistanceEnd=0,this._lastAngle=0,this._eye=new o,this._movePrev=new n,this._moveCurr=new n,this._lastAxis=new o,this._zoomStart=new n,this._zoomEnd=new n,this._panStart=new n,this._panEnd=new n,this._pointers=[],this._pointerPositions={},this._onPointerMove=j.bind(this),this._onPointerDown=C.bind(this),this._onPointerUp=T.bind(this),this._onPointerCancel=k.bind(this),this._onContextMenu=L.bind(this),this._onMouseWheel=N.bind(this),this._onKeyDown=z.bind(this),this._onKeyUp=D.bind(this),this._onTouchStart=U.bind(this),this._onTouchMove=R.bind(this),this._onTouchEnd=Y.bind(this),this._onMouseDown=A.bind(this),this._onMouseMove=x.bind(this),this._onMouseUp=Z.bind(this),this._target0=this.target.clone(),this._position0=this.object.position.clone(),this._up0=this.object.up.clone(),this._zoom0=this.object.zoom,i!==null&&(this.connect(i),this.handleResize()),this.update()}connect(t){super.connect(t),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerCancel),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="none"}disconnect(){window.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("keyup",this._onKeyUp),this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerCancel),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}handleResize(){const t=this.domElement.getBoundingClientRect(),i=this.domElement.ownerDocument.documentElement;this.screen.left=t.left+window.pageXOffset-i.clientLeft,this.screen.top=t.top+window.pageYOffset-i.clientTop,this.screen.width=t.width,this.screen.height=t.height}update(){this._eye.subVectors(this.object.position,this.target),this.noRotate||this._rotateCamera(),this.noZoom||this._zoomCamera(),this.noPan||this._panCamera(),this.object.position.addVectors(this.target,this._eye),this.object.isPerspectiveCamera?(this._checkDistances(),this.object.lookAt(this.target),this._lastPosition.distanceToSquared(this.object.position)>P&&(this.dispatchEvent(u),this._lastPosition.copy(this.object.position))):this.object.isOrthographicCamera?(this.object.lookAt(this.target),(this._lastPosition.distanceToSquared(this.object.position)>P||this._lastZoom!==this.object.zoom)&&(this.dispatchEvent(u),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type.")}reset(){this.state=s.NONE,this.keyState=s.NONE,this.target.copy(this._target0),this.object.position.copy(this._position0),this.object.up.copy(this._up0),this.object.zoom=this._zoom0,this.object.updateProjectionMatrix(),this._eye.subVectors(this.object.position,this.target),this.object.lookAt(this.target),this.dispatchEvent(u),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom}_panCamera(){if(h.copy(this._panEnd).sub(this._panStart),h.lengthSq()){if(this.object.isOrthographicCamera){const t=(this.object.right-this.object.left)/this.object.zoom/this.domElement.clientWidth,i=(this.object.top-this.object.bottom)/this.object.zoom/this.domElement.clientWidth;h.x*=t,h.y*=i}h.multiplyScalar(this._eye.length()*this.panSpeed),_.copy(this._eye).cross(this.object.up).setLength(h.x),_.add(M.copy(this.object.up).setLength(h.y)),this.object.position.add(_),this.target.add(_),this.staticMoving?this._panStart.copy(this._panEnd):this._panStart.add(h.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor))}}_rotateCamera(){l.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0);let t=l.length();t?(this._eye.copy(this.object.position).sub(this.target),w.copy(this._eye).normalize(),m.copy(this.object.up).normalize(),g.crossVectors(m,w).normalize(),m.setLength(this._moveCurr.y-this._movePrev.y),g.setLength(this._moveCurr.x-this._movePrev.x),l.copy(m.add(g)),y.crossVectors(l,this._eye).normalize(),t*=this.rotateSpeed,a.setFromAxisAngle(y,t),this._eye.applyQuaternion(a),this.object.up.applyQuaternion(a),this._lastAxis.copy(y),this._lastAngle=t):!this.staticMoving&&this._lastAngle&&(this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor),this._eye.copy(this.object.position).sub(this.target),a.setFromAxisAngle(this._lastAxis,this._lastAngle),this._eye.applyQuaternion(a),this.object.up.applyQuaternion(a)),this._movePrev.copy(this._moveCurr)}_zoomCamera(){let t;this.state===s.TOUCH_ZOOM_PAN?(t=this._touchZoomDistanceStart/this._touchZoomDistanceEnd,this._touchZoomDistanceStart=this._touchZoomDistanceEnd,this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera?(this.object.zoom=f.clamp(this.object.zoom/t,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")):(t=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed,t!==1&&t>0&&(this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera?(this.object.zoom=f.clamp(this.object.zoom/t,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),this.staticMoving?this._zoomStart.copy(this._zoomEnd):this._zoomStart.y+=(this._zoomEnd.y-this._zoomStart.y)*this.dynamicDampingFactor)}_getMouseOnScreen(t,i){return p.set((t-this.screen.left)/this.screen.width,(i-this.screen.top)/this.screen.height),p}_getMouseOnCircle(t,i){return p.set((t-this.screen.width*.5-this.screen.left)/(this.screen.width*.5),(this.screen.height+2*(this.screen.top-i))/this.screen.width),p}_addPointer(t){this._pointers.push(t)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let i=0;i<this._pointers.length;i++)if(this._pointers[i].pointerId==t.pointerId){this._pointers.splice(i,1);return}}_trackPointer(t){let i=this._pointerPositions[t.pointerId];i===void 0&&(i=new n,this._pointerPositions[t.pointerId]=i),i.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const i=t.pointerId===this._pointers[0].pointerId?this._pointers[1]:this._pointers[0];return this._pointerPositions[i.pointerId]}_checkDistances(){(!this.noZoom||!this.noPan)&&(this._eye.lengthSq()>this.maxDistance*this.maxDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance)),this._zoomStart.copy(this._zoomEnd)),this._eye.lengthSq()<this.minDistance*this.minDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.minDistance)),this._zoomStart.copy(this._zoomEnd)))}}function C(e){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),this._addPointer(e),e.pointerType==="touch"?this._onTouchStart(e):this._onMouseDown(e))}function j(e){this.enabled!==!1&&(e.pointerType==="touch"?this._onTouchMove(e):this._onMouseMove(e))}function T(e){this.enabled!==!1&&(e.pointerType==="touch"?this._onTouchEnd(e):this._onMouseUp(),this._removePointer(e),this._pointers.length===0&&(this.domElement.releasePointerCapture(e.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp)))}function k(e){this._removePointer(e)}function D(){this.enabled!==!1&&(this.keyState=s.NONE,window.addEventListener("keydown",this._onKeyDown))}function z(e){this.enabled!==!1&&(window.removeEventListener("keydown",this._onKeyDown),this.keyState===s.NONE&&(e.code===this.keys[s.ROTATE]&&!this.noRotate?this.keyState=s.ROTATE:e.code===this.keys[s.ZOOM]&&!this.noZoom?this.keyState=s.ZOOM:e.code===this.keys[s.PAN]&&!this.noPan&&(this.keyState=s.PAN)))}function A(e){let t;switch(e.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 r.DOLLY:this.state=s.ZOOM;break;case r.ROTATE:this.state=s.ROTATE;break;case r.PAN:this.state=s.PAN;break;default:this.state=s.NONE}const i=this.keyState!==s.NONE?this.keyState:this.state;i===s.ROTATE&&!this.noRotate?(this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY)),this._movePrev.copy(this._moveCurr)):i===s.ZOOM&&!this.noZoom?(this._zoomStart.copy(this._getMouseOnScreen(e.pageX,e.pageY)),this._zoomEnd.copy(this._zoomStart)):i===s.PAN&&!this.noPan&&(this._panStart.copy(this._getMouseOnScreen(e.pageX,e.pageY)),this._panEnd.copy(this._panStart)),this.dispatchEvent(E)}function x(e){const t=this.keyState!==s.NONE?this.keyState:this.state;t===s.ROTATE&&!this.noRotate?(this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY))):t===s.ZOOM&&!this.noZoom?this._zoomEnd.copy(this._getMouseOnScreen(e.pageX,e.pageY)):t===s.PAN&&!this.noPan&&this._panEnd.copy(this._getMouseOnScreen(e.pageX,e.pageY))}function Z(){this.state=s.NONE,this.dispatchEvent(b)}function N(e){if(this.enabled!==!1&&this.noZoom!==!0){switch(e.preventDefault(),e.deltaMode){case 2:this._zoomStart.y-=e.deltaY*.025;break;case 1:this._zoomStart.y-=e.deltaY*.01;break;default:this._zoomStart.y-=e.deltaY*25e-5;break}this.dispatchEvent(E),this.dispatchEvent(b)}}function L(e){this.enabled!==!1&&e.preventDefault()}function U(e){switch(this._trackPointer(e),this._pointers.length){case 1:this.state=s.TOUCH_ROTATE,this._moveCurr.copy(this._getMouseOnCircle(this._pointers[0].pageX,this._pointers[0].pageY)),this._movePrev.copy(this._moveCurr);break;default:this.state=s.TOUCH_ZOOM_PAN;const t=this._pointers[0].pageX-this._pointers[1].pageX,i=this._pointers[0].pageY-this._pointers[1].pageY;this._touchZoomDistanceEnd=this._touchZoomDistanceStart=Math.sqrt(t*t+i*i);const c=(this._pointers[0].pageX+this._pointers[1].pageX)/2,d=(this._pointers[0].pageY+this._pointers[1].pageY)/2;this._panStart.copy(this._getMouseOnScreen(c,d)),this._panEnd.copy(this._panStart);break}this.dispatchEvent(E)}function R(e){switch(this._trackPointer(e),this._pointers.length){case 1:this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY));break;default:const t=this._getSecondPointerPosition(e),i=e.pageX-t.x,c=e.pageY-t.y;this._touchZoomDistanceEnd=Math.sqrt(i*i+c*c);const d=(e.pageX+t.x)/2,v=(e.pageY+t.y)/2;this._panEnd.copy(this._getMouseOnScreen(d,v));break}}function Y(e){switch(this._pointers.length){case 0:this.state=s.NONE;break;case 1:this.state=s.TOUCH_ROTATE,this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY)),this._movePrev.copy(this._moveCurr);break;case 2:this.state=s.TOUCH_ZOOM_PAN;for(let t=0;t<this._pointers.length;t++)if(this._pointers[t].pointerId!==e.pointerId){const i=this._pointerPositions[this._pointers[t].pointerId];this._moveCurr.copy(this._getMouseOnCircle(i.x,i.y)),this._movePrev.copy(this._moveCurr);break}break}this.dispatchEvent(b)}export{X as TrackballControls};
|
|
1
|
+
import{C as O,k as r,V as o,g as n,Q as S,o as f}from"./three.module-IFn-4i31.js";const u={type:"change"},E={type:"start"},b={type:"end"},P=1e-6,s={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM_PAN:4},p=new n,h=new n,M=new o,_=new o,y=new o,a=new S,w=new o,m=new o,g=new o,l=new o;class X extends O{constructor(t,i=null){super(t,i),this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.keys=["KeyA","KeyS","KeyD"],this.mouseButtons={LEFT:r.ROTATE,MIDDLE:r.DOLLY,RIGHT:r.PAN},this.target=new o,this.state=s.NONE,this.keyState=s.NONE,this._lastPosition=new o,this._lastZoom=1,this._touchZoomDistanceStart=0,this._touchZoomDistanceEnd=0,this._lastAngle=0,this._eye=new o,this._movePrev=new n,this._moveCurr=new n,this._lastAxis=new o,this._zoomStart=new n,this._zoomEnd=new n,this._panStart=new n,this._panEnd=new n,this._pointers=[],this._pointerPositions={},this._onPointerMove=j.bind(this),this._onPointerDown=C.bind(this),this._onPointerUp=T.bind(this),this._onPointerCancel=k.bind(this),this._onContextMenu=L.bind(this),this._onMouseWheel=N.bind(this),this._onKeyDown=z.bind(this),this._onKeyUp=D.bind(this),this._onTouchStart=U.bind(this),this._onTouchMove=R.bind(this),this._onTouchEnd=Y.bind(this),this._onMouseDown=A.bind(this),this._onMouseMove=x.bind(this),this._onMouseUp=Z.bind(this),this._target0=this.target.clone(),this._position0=this.object.position.clone(),this._up0=this.object.up.clone(),this._zoom0=this.object.zoom,i!==null&&(this.connect(i),this.handleResize()),this.update()}connect(t){super.connect(t),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerCancel),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="none"}disconnect(){window.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("keyup",this._onKeyUp),this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerCancel),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}handleResize(){const t=this.domElement.getBoundingClientRect(),i=this.domElement.ownerDocument.documentElement;this.screen.left=t.left+window.pageXOffset-i.clientLeft,this.screen.top=t.top+window.pageYOffset-i.clientTop,this.screen.width=t.width,this.screen.height=t.height}update(){this._eye.subVectors(this.object.position,this.target),this.noRotate||this._rotateCamera(),this.noZoom||this._zoomCamera(),this.noPan||this._panCamera(),this.object.position.addVectors(this.target,this._eye),this.object.isPerspectiveCamera?(this._checkDistances(),this.object.lookAt(this.target),this._lastPosition.distanceToSquared(this.object.position)>P&&(this.dispatchEvent(u),this._lastPosition.copy(this.object.position))):this.object.isOrthographicCamera?(this.object.lookAt(this.target),(this._lastPosition.distanceToSquared(this.object.position)>P||this._lastZoom!==this.object.zoom)&&(this.dispatchEvent(u),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type.")}reset(){this.state=s.NONE,this.keyState=s.NONE,this.target.copy(this._target0),this.object.position.copy(this._position0),this.object.up.copy(this._up0),this.object.zoom=this._zoom0,this.object.updateProjectionMatrix(),this._eye.subVectors(this.object.position,this.target),this.object.lookAt(this.target),this.dispatchEvent(u),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom}_panCamera(){if(h.copy(this._panEnd).sub(this._panStart),h.lengthSq()){if(this.object.isOrthographicCamera){const t=(this.object.right-this.object.left)/this.object.zoom/this.domElement.clientWidth,i=(this.object.top-this.object.bottom)/this.object.zoom/this.domElement.clientWidth;h.x*=t,h.y*=i}h.multiplyScalar(this._eye.length()*this.panSpeed),_.copy(this._eye).cross(this.object.up).setLength(h.x),_.add(M.copy(this.object.up).setLength(h.y)),this.object.position.add(_),this.target.add(_),this.staticMoving?this._panStart.copy(this._panEnd):this._panStart.add(h.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor))}}_rotateCamera(){l.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0);let t=l.length();t?(this._eye.copy(this.object.position).sub(this.target),w.copy(this._eye).normalize(),m.copy(this.object.up).normalize(),g.crossVectors(m,w).normalize(),m.setLength(this._moveCurr.y-this._movePrev.y),g.setLength(this._moveCurr.x-this._movePrev.x),l.copy(m.add(g)),y.crossVectors(l,this._eye).normalize(),t*=this.rotateSpeed,a.setFromAxisAngle(y,t),this._eye.applyQuaternion(a),this.object.up.applyQuaternion(a),this._lastAxis.copy(y),this._lastAngle=t):!this.staticMoving&&this._lastAngle&&(this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor),this._eye.copy(this.object.position).sub(this.target),a.setFromAxisAngle(this._lastAxis,this._lastAngle),this._eye.applyQuaternion(a),this.object.up.applyQuaternion(a)),this._movePrev.copy(this._moveCurr)}_zoomCamera(){let t;this.state===s.TOUCH_ZOOM_PAN?(t=this._touchZoomDistanceStart/this._touchZoomDistanceEnd,this._touchZoomDistanceStart=this._touchZoomDistanceEnd,this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera?(this.object.zoom=f.clamp(this.object.zoom/t,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")):(t=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed,t!==1&&t>0&&(this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera?(this.object.zoom=f.clamp(this.object.zoom/t,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),this.staticMoving?this._zoomStart.copy(this._zoomEnd):this._zoomStart.y+=(this._zoomEnd.y-this._zoomStart.y)*this.dynamicDampingFactor)}_getMouseOnScreen(t,i){return p.set((t-this.screen.left)/this.screen.width,(i-this.screen.top)/this.screen.height),p}_getMouseOnCircle(t,i){return p.set((t-this.screen.width*.5-this.screen.left)/(this.screen.width*.5),(this.screen.height+2*(this.screen.top-i))/this.screen.width),p}_addPointer(t){this._pointers.push(t)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let i=0;i<this._pointers.length;i++)if(this._pointers[i].pointerId==t.pointerId){this._pointers.splice(i,1);return}}_trackPointer(t){let i=this._pointerPositions[t.pointerId];i===void 0&&(i=new n,this._pointerPositions[t.pointerId]=i),i.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const i=t.pointerId===this._pointers[0].pointerId?this._pointers[1]:this._pointers[0];return this._pointerPositions[i.pointerId]}_checkDistances(){(!this.noZoom||!this.noPan)&&(this._eye.lengthSq()>this.maxDistance*this.maxDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance)),this._zoomStart.copy(this._zoomEnd)),this._eye.lengthSq()<this.minDistance*this.minDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.minDistance)),this._zoomStart.copy(this._zoomEnd)))}}function C(e){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),this._addPointer(e),e.pointerType==="touch"?this._onTouchStart(e):this._onMouseDown(e))}function j(e){this.enabled!==!1&&(e.pointerType==="touch"?this._onTouchMove(e):this._onMouseMove(e))}function T(e){this.enabled!==!1&&(e.pointerType==="touch"?this._onTouchEnd(e):this._onMouseUp(),this._removePointer(e),this._pointers.length===0&&(this.domElement.releasePointerCapture(e.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp)))}function k(e){this._removePointer(e)}function D(){this.enabled!==!1&&(this.keyState=s.NONE,window.addEventListener("keydown",this._onKeyDown))}function z(e){this.enabled!==!1&&(window.removeEventListener("keydown",this._onKeyDown),this.keyState===s.NONE&&(e.code===this.keys[s.ROTATE]&&!this.noRotate?this.keyState=s.ROTATE:e.code===this.keys[s.ZOOM]&&!this.noZoom?this.keyState=s.ZOOM:e.code===this.keys[s.PAN]&&!this.noPan&&(this.keyState=s.PAN)))}function A(e){let t;switch(e.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 r.DOLLY:this.state=s.ZOOM;break;case r.ROTATE:this.state=s.ROTATE;break;case r.PAN:this.state=s.PAN;break;default:this.state=s.NONE}const i=this.keyState!==s.NONE?this.keyState:this.state;i===s.ROTATE&&!this.noRotate?(this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY)),this._movePrev.copy(this._moveCurr)):i===s.ZOOM&&!this.noZoom?(this._zoomStart.copy(this._getMouseOnScreen(e.pageX,e.pageY)),this._zoomEnd.copy(this._zoomStart)):i===s.PAN&&!this.noPan&&(this._panStart.copy(this._getMouseOnScreen(e.pageX,e.pageY)),this._panEnd.copy(this._panStart)),this.dispatchEvent(E)}function x(e){const t=this.keyState!==s.NONE?this.keyState:this.state;t===s.ROTATE&&!this.noRotate?(this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY))):t===s.ZOOM&&!this.noZoom?this._zoomEnd.copy(this._getMouseOnScreen(e.pageX,e.pageY)):t===s.PAN&&!this.noPan&&this._panEnd.copy(this._getMouseOnScreen(e.pageX,e.pageY))}function Z(){this.state=s.NONE,this.dispatchEvent(b)}function N(e){if(this.enabled!==!1&&this.noZoom!==!0){switch(e.preventDefault(),e.deltaMode){case 2:this._zoomStart.y-=e.deltaY*.025;break;case 1:this._zoomStart.y-=e.deltaY*.01;break;default:this._zoomStart.y-=e.deltaY*25e-5;break}this.dispatchEvent(E),this.dispatchEvent(b)}}function L(e){this.enabled!==!1&&e.preventDefault()}function U(e){switch(this._trackPointer(e),this._pointers.length){case 1:this.state=s.TOUCH_ROTATE,this._moveCurr.copy(this._getMouseOnCircle(this._pointers[0].pageX,this._pointers[0].pageY)),this._movePrev.copy(this._moveCurr);break;default:this.state=s.TOUCH_ZOOM_PAN;const t=this._pointers[0].pageX-this._pointers[1].pageX,i=this._pointers[0].pageY-this._pointers[1].pageY;this._touchZoomDistanceEnd=this._touchZoomDistanceStart=Math.sqrt(t*t+i*i);const c=(this._pointers[0].pageX+this._pointers[1].pageX)/2,d=(this._pointers[0].pageY+this._pointers[1].pageY)/2;this._panStart.copy(this._getMouseOnScreen(c,d)),this._panEnd.copy(this._panStart);break}this.dispatchEvent(E)}function R(e){switch(this._trackPointer(e),this._pointers.length){case 1:this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY));break;default:const t=this._getSecondPointerPosition(e),i=e.pageX-t.x,c=e.pageY-t.y;this._touchZoomDistanceEnd=Math.sqrt(i*i+c*c);const d=(e.pageX+t.x)/2,v=(e.pageY+t.y)/2;this._panEnd.copy(this._getMouseOnScreen(d,v));break}}function Y(e){switch(this._pointers.length){case 0:this.state=s.NONE;break;case 1:this.state=s.TOUCH_ROTATE,this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY)),this._movePrev.copy(this._moveCurr);break;case 2:this.state=s.TOUCH_ZOOM_PAN;for(let t=0;t<this._pointers.length;t++)if(this._pointers[t].pointerId!==e.pointerId){const i=this._pointerPositions[this._pointers[t].pointerId];this._moveCurr.copy(this._getMouseOnCircle(i.x,i.y)),this._movePrev.copy(this._moveCurr);break}break}this.dispatchEvent(b)}export{X as TrackballControls};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./jsx-runtime-DPjLkJKQ.js";import{r as s}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{
|
|
1
|
+
import{a}from"./jsx-runtime-DPjLkJKQ.js";import{r as s}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{dR as i,dS as n,dT as o,ap as t,dU as r}from"./index-Ckxb31Yz.js";function u(){const e=s.useSyncExternalStore(i,n,n);return e?a.jsx("div",{role:"status","aria-live":"polite","data-testid":"transient-hint",style:{position:"absolute",left:"50%",bottom:r[6],transform:"translateX(-50%)",maxWidth:"min(440px, 80%)",padding:`${r[3]}px ${r[5]}px`,borderRadius:t.shape.medium,border:`1px solid ${t.boundary.strong}`,background:t.surface.overlay,color:t.content.primary,fontSize:"var(--vgai-font-base)",lineHeight:1.4,textAlign:"center",pointerEvents:"none",zIndex:o.toast},children:e.message},e.id):null}export{u as T};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{v as T,g as u,J as d,ac as p,U as x,h as f,V as h,b4 as M,x as S}from"./three.module-IFn-4i31.js";import{Y as C,Z as U}from"./index-Ckxb31Yz.js";import{C as g}from"./CopyShader-BzTUYzf6.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";const _={uniforms:{tDiffuse:{value:null},luminosityThreshold:{value:1},smoothWidth:{value:1},defaultColor:{value:new T(0)},defaultOpacity:{value:0}},vertexShader:`
|
|
2
2
|
|
|
3
3
|
varying vec2 vUv;
|
|
4
4
|
|
|
@@ -30,7 +30,7 @@ import{C as T,g as u,a4 as d,K as p,U as x,h as f,V as h,b7 as M,z as C}from"./t
|
|
|
30
30
|
|
|
31
31
|
gl_FragColor = mix( outputColor, texel, alpha );
|
|
32
32
|
|
|
33
|
-
}`};class m extends
|
|
33
|
+
}`};class m extends C{constructor(e,l=1,r,s){super(),this.strength=l,this.radius=r,this.threshold=s,this.resolution=e!==void 0?new u(e.x,e.y):new u(256,256),this.clearColor=new T(0,0,0),this.needsSwap=!1,this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let t=Math.round(this.resolution.x/2),o=Math.round(this.resolution.y/2);this.renderTargetBright=new d(t,o,{type:p}),this.renderTargetBright.texture.name="UnrealBloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let a=0;a<this.nMips;a++){const c=new d(t,o,{type:p});c.texture.name="UnrealBloomPass.h"+a,c.texture.generateMipmaps=!1,this.renderTargetsHorizontal.push(c);const v=new d(t,o,{type:p});v.texture.name="UnrealBloomPass.v"+a,v.texture.generateMipmaps=!1,this.renderTargetsVertical.push(v),t=Math.round(t/2),o=Math.round(o/2)}const n=_;this.highPassUniforms=x.clone(n.uniforms),this.highPassUniforms.luminosityThreshold.value=s,this.highPassUniforms.smoothWidth.value=.01,this.materialHighPassFilter=new f({uniforms:this.highPassUniforms,vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}),this.separableBlurMaterials=[];const i=[3,5,7,9,11];t=Math.round(this.resolution.x/2),o=Math.round(this.resolution.y/2);for(let a=0;a<this.nMips;a++)this.separableBlurMaterials.push(this._getSeparableBlurMaterial(i[a])),this.separableBlurMaterials[a].uniforms.invSize.value=new u(1/t,1/o),t=Math.round(t/2),o=Math.round(o/2);this.compositeMaterial=this._getCompositeMaterial(this.nMips),this.compositeMaterial.uniforms.blurTexture1.value=this.renderTargetsVertical[0].texture,this.compositeMaterial.uniforms.blurTexture2.value=this.renderTargetsVertical[1].texture,this.compositeMaterial.uniforms.blurTexture3.value=this.renderTargetsVertical[2].texture,this.compositeMaterial.uniforms.blurTexture4.value=this.renderTargetsVertical[3].texture,this.compositeMaterial.uniforms.blurTexture5.value=this.renderTargetsVertical[4].texture,this.compositeMaterial.uniforms.bloomStrength.value=l,this.compositeMaterial.uniforms.bloomRadius.value=.1;const b=[1,.8,.6,.4,.2];this.compositeMaterial.uniforms.bloomFactors.value=b,this.bloomTintColors=[new h(1,1,1),new h(1,1,1),new h(1,1,1),new h(1,1,1),new h(1,1,1)],this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,this.copyUniforms=x.clone(g.uniforms),this.blendMaterial=new f({uniforms:this.copyUniforms,vertexShader:g.vertexShader,fragmentShader:g.fragmentShader,blending:M,depthTest:!1,depthWrite:!1,transparent:!0}),this._oldClearColor=new T,this._oldClearAlpha=1,this._basic=new S,this._fsQuad=new U(null)}dispose(){for(let e=0;e<this.renderTargetsHorizontal.length;e++)this.renderTargetsHorizontal[e].dispose();for(let e=0;e<this.renderTargetsVertical.length;e++)this.renderTargetsVertical[e].dispose();this.renderTargetBright.dispose();for(let e=0;e<this.separableBlurMaterials.length;e++)this.separableBlurMaterials[e].dispose();this.compositeMaterial.dispose(),this.blendMaterial.dispose(),this._basic.dispose(),this._fsQuad.dispose()}setSize(e,l){let r=Math.round(e/2),s=Math.round(l/2);this.renderTargetBright.setSize(r,s);for(let t=0;t<this.nMips;t++)this.renderTargetsHorizontal[t].setSize(r,s),this.renderTargetsVertical[t].setSize(r,s),this.separableBlurMaterials[t].uniforms.invSize.value=new u(1/r,1/s),r=Math.round(r/2),s=Math.round(s/2)}render(e,l,r,s,t){e.getClearColor(this._oldClearColor),this._oldClearAlpha=e.getClearAlpha();const o=e.autoClear;e.autoClear=!1,e.setClearColor(this.clearColor,0),t&&e.state.buffers.stencil.setTest(!1),this.renderToScreen&&(this._fsQuad.material=this._basic,this._basic.map=r.texture,e.setRenderTarget(null),e.clear(),this._fsQuad.render(e)),this.highPassUniforms.tDiffuse.value=r.texture,this.highPassUniforms.luminosityThreshold.value=this.threshold,this._fsQuad.material=this.materialHighPassFilter,e.setRenderTarget(this.renderTargetBright),e.clear(),this._fsQuad.render(e);let n=this.renderTargetBright;for(let i=0;i<this.nMips;i++)this._fsQuad.material=this.separableBlurMaterials[i],this.separableBlurMaterials[i].uniforms.colorTexture.value=n.texture,this.separableBlurMaterials[i].uniforms.direction.value=m.BlurDirectionX,e.setRenderTarget(this.renderTargetsHorizontal[i]),e.clear(),this._fsQuad.render(e),this.separableBlurMaterials[i].uniforms.colorTexture.value=this.renderTargetsHorizontal[i].texture,this.separableBlurMaterials[i].uniforms.direction.value=m.BlurDirectionY,e.setRenderTarget(this.renderTargetsVertical[i]),e.clear(),this._fsQuad.render(e),n=this.renderTargetsVertical[i];this._fsQuad.material=this.compositeMaterial,this.compositeMaterial.uniforms.bloomStrength.value=this.strength,this.compositeMaterial.uniforms.bloomRadius.value=this.radius,this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,e.setRenderTarget(this.renderTargetsHorizontal[0]),e.clear(),this._fsQuad.render(e),this._fsQuad.material=this.blendMaterial,this.copyUniforms.tDiffuse.value=this.renderTargetsHorizontal[0].texture,t&&e.state.buffers.stencil.setTest(!0),this.renderToScreen?(e.setRenderTarget(null),this._fsQuad.render(e)):(e.setRenderTarget(r),this._fsQuad.render(e)),e.setClearColor(this._oldClearColor,this._oldClearAlpha),e.autoClear=o}_getSeparableBlurMaterial(e){const l=[];for(let r=0;r<e;r++)l.push(.39894*Math.exp(-.5*r*r/(e*e))/e);return new f({defines:{KERNEL_RADIUS:e},uniforms:{colorTexture:{value:null},invSize:{value:new u(.5,.5)},direction:{value:new u(.5,.5)},gaussianCoefficients:{value:l}},vertexShader:`varying vec2 vUv;
|
|
34
34
|
void main() {
|
|
35
35
|
vUv = uv;
|
|
36
36
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{
|
|
1
|
+
import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{aa as c,aY as x}from"./index-Ckxb31Yz.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";function W({assetPath:s}){const[p,a]=r.useState(!1),[d,m]=r.useState(null),i=s;r.useEffect(()=>{a(!1)},[i]);const n=s.split("/").pop()??s,l=r.useCallback(e=>{if(e){if(e.error){a(!0);return}e.videoWidth<=0||m(o=>o&&o.w===e.videoWidth&&o.h===e.videoHeight?o:{w:e.videoWidth,h:e.videoHeight})}},[]);return t.jsxs("div",{"data-testid":"video-asset-document",style:{height:"100%",minHeight:240,display:"flex",flexDirection:"column",minWidth:0},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"6px 8px"},children:[t.jsx(c,{tone:"dim",variant:"label",children:n}),d&&t.jsxs(c,{tone:"muted",variant:"code",children:[d.w," × ",d.h]})]}),t.jsx("div",{className:"vgai-asset-transparency-well",style:{flex:1,minHeight:0,display:"flex",alignItems:"center",justifyContent:"center",padding:12},children:p?t.jsxs("div",{style:{color:x[2],fontSize:12,textAlign:"center"},children:[n," could not be played from ",i,". The file may be missing, or its codec may not be one this browser decodes."]}):t.jsx("video",{src:i,controls:!0,playsInline:!0,preload:"metadata",ref:l,onError:()=>a(!0),onLoadedMetadata:e=>l(e.currentTarget),style:{maxWidth:"100%",maxHeight:"100%",display:"block"}},i)})]})}export{W as VideoViewer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{g3 as y,ac as f,a6 as c,b_ as v,bZ as b,dF as k,bU as x,bV as m,bY as j,g4 as S,g5 as C,ab as z,ap as M,a5 as V}from"./index-Ckxb31Yz.js";import{r as u}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";function B(){return e.jsxs("svg",{viewBox:"0 0 16 16",className:"vgai-viewport-overlays-glyph","aria-hidden":"true",focusable:"false",children:[e.jsx("path",{d:"M5.24 4.51 A5.3 5.3 0 1 1 11.89 11.16 A5.85 5.85 0 0 0 5.24 4.51 Z",fill:"currentColor"}),e.jsx("circle",{cx:"6.1",cy:"10.3",r:"4.4",fill:"none",stroke:"currentColor",strokeWidth:"1.1"})]})}function T({label:s="Overlays",choices:l,master:i,glyph:p}){const[r,t]=u.useState(!1),n=u.useRef(null),h=l.some(a=>a.enabled),o=i?.enabled??h,d=p??e.jsx(c,{icon:o?S:C,size:"md"});u.useEffect(()=>{if(!r)return;const a=w=>{n.current&&!n.current.contains(w.target)&&t(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[r]);const g=r?e.jsxs(y,{className:"vgai-helpers-menu",onDismiss:()=>t(!1),children:[i?e.jsxs(e.Fragment,{children:[e.jsxs(f,{role:"menuitemcheckbox","aria-checked":i.enabled,onSelect:i.onToggle,children:[e.jsx("span",{className:"vgai-menu-check",children:i.enabled&&e.jsx(c,{icon:v,size:"xs"})}),"Show ",s]}),e.jsx(b,{})]}):null,l.map(a=>e.jsxs(f,{role:"menuitemcheckbox","aria-checked":a.enabled,disabled:a.disabled,onSelect:a.onToggle,children:[e.jsx("span",{className:"vgai-menu-check",children:a.enabled&&e.jsx(c,{icon:v,size:"xs"})}),a.label]},a.id))]}):null;return e.jsxs("div",{ref:n,className:"vgai-viewport-popover-anchor",children:[i?e.jsxs(k,{children:[e.jsx(x,{text:`${s}: ${o?"On":"Off"}`,children:e.jsx(m,{"aria-label":`Toggle ${s.toLowerCase()}`,"aria-pressed":o,size:"comfortable",onClick:i.onToggle,children:d})}),e.jsx(m,{"aria-label":`Choose ${s.toLowerCase()}`,"aria-expanded":r,size:"comfortable",onClick:()=>t(!r),children:e.jsx(c,{icon:j,size:"xs"})})]}):e.jsx(x,{text:`${s}: ${o?"On":"Off"}`,children:e.jsx(m,{"aria-label":`Choose ${s.toLowerCase()}`,"aria-expanded":r,"aria-pressed":o,size:"comfortable",onClick:()=>t(!r),children:d})}),g]})}const N=[{mode:"solid",label:"Material",description:"Authored materials and lighting"},{mode:"clay",label:"Solid",description:"Neutral flat-shaded geometry"},{mode:"unlit",label:"Unlit",description:"Base color without scene lighting"},{mode:"wireframe",label:"Wireframe",description:"Renderable triangle edges"},{mode:"matcap",label:"Matcap",description:"Neutral clay sphere — form without color"},{mode:"normals",label:"Normals",description:"Surface-normal direction colors"},{mode:"overdraw",label:"Overdraw",description:"Additive overlap visualization"}],R=[{mode:"wireframe",glyph:"wireframe",label:"Wireframe"},{mode:"clay",glyph:"sphere",label:"Solid"},{mode:"solid",glyph:"preview",label:"Material"}];function $({glyph:s}){return e.jsxs("svg",{viewBox:"0 0 16 16",className:"vgai-viewport-shading-glyph","aria-hidden":"true",focusable:"false",children:[s==="sphere"?e.jsx("circle",{cx:"8",cy:"8",r:"7.3",fill:"currentColor"}):e.jsx("circle",{cx:"8",cy:"8",r:"7.3",fill:"none",stroke:"currentColor",strokeWidth:"1.05"}),s==="wireframe"?e.jsxs("g",{stroke:"currentColor",strokeWidth:"1.05",children:[e.jsx("line",{x1:"1.7",y1:"5.4",x2:"14.3",y2:"5.4"}),e.jsx("line",{x1:"1.7",y1:"10.6",x2:"14.3",y2:"10.6"}),e.jsx("line",{x1:"5.4",y1:"1.7",x2:"5.4",y2:"14.3"})]}):null,s==="preview"?e.jsx("path",{d:"M7.73 1.23 L7.73 10.43 L1.22 8.04 A6.78 6.78 0 0 1 7.73 1.23 Z",fill:"currentColor"}):null]})}function O({mode:s,onChange:l,choices:i,disabled:p=!1,segments:r,children:t}){const[n,h]=u.useState(!1),o=u.useRef(null),d=i.find(a=>a.mode===s)??i[0];if(!d)return null;const g=n&&!p?e.jsxs(z,{id:"vgai-viewport-shading-menu",anchorRef:o,"aria-label":"Viewport shading modes",onDismiss:()=>h(!1),style:{minWidth:230},children:[i.map(a=>e.jsxs(f,{role:"menuitemradio","aria-checked":a.mode===s,onSelect:()=>{l(a.mode),h(!1)},style:{display:"grid",gridTemplateColumns:"14px 1fr",gap:7},children:[e.jsx("span",{style:{opacity:a.mode===s?1:0},children:e.jsx(c,{icon:v,size:"xs"})}),e.jsxs("span",{children:[e.jsx("span",{style:{display:"block"},children:a.label}),e.jsx("span",{style:{display:"block",color:M.content.dim,fontSize:10},children:a.description})]})]},a.mode)),t?e.jsxs(e.Fragment,{children:[e.jsx(b,{}),e.jsx("div",{className:"vgai-viewport-shading-options",children:t})]}):null]}):null;return r?e.jsxs("div",{className:"vgai-viewport-popover-anchor",children:[e.jsxs("span",{className:"vgai-viewport-shading-segments",role:"group","aria-label":"Viewport shading",children:[r.map(a=>e.jsx(x,{text:`Viewport shading: ${a.label}`,children:e.jsx(m,{size:"compact",shape:"segment",variant:"secondary","aria-pressed":a.mode===s,"aria-label":`Viewport shading: ${a.label}`,disabled:p,onClick:()=>l(a.mode),children:e.jsx($,{glyph:a.glyph})})},a.mode)),e.jsx(x,{text:"Shading options",children:e.jsx(m,{ref:o,size:"compact",shape:"segment",variant:"secondary","aria-label":"Shading options","aria-haspopup":"menu","aria-expanded":n,"aria-controls":n?"vgai-viewport-shading-menu":void 0,disabled:p,onClick:()=>h(a=>!a),children:e.jsx(c,{icon:j,size:"xs"})})})]}),g]}):e.jsxs("div",{style:{position:"relative"},children:[e.jsx(x,{text:`Viewport shading: ${d.label}`,children:e.jsxs(V,{ref:o,type:"button",size:"compact",variant:"secondary","aria-label":`Viewport shading: ${d.label}`,"aria-haspopup":"menu","aria-expanded":n,"aria-controls":n?"vgai-viewport-shading-menu":void 0,disabled:p,onClick:()=>h(a=>!a),style:{display:"inline-flex",alignItems:"center",gap:5,minWidth:66},children:[e.jsx("span",{children:d.label}),e.jsx(c,{icon:j,size:"xs"})]})}),g]})}function D({mode:s,onChange:l,disabled:i=!1}){return e.jsx(O,{mode:s,onChange:l,choices:N,disabled:i})}export{O as V,R as a,T as b,B as c,D as d,N as v};
|