@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as d}from"./jsx-runtime-DPjLkJKQ.js";import{r as c}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{gE as $e,f6 as Fe,bD as yt,gF as _t,gG as Nt,gH as Kt,f8 as Vt,a5 as Wt,gI as Ye,fQ as Ae,gJ as He,gK as _e,gL as Ne,gM as D,ep as Ke,aY as Ve,aG as We,gN as Ue,gO as Ze,f3 as Qe,gP as Pt,gQ as qe,gR as E,gS as Lt,gT as nt,gU as Je,gV as tn,gW as en,gX as nn,gY as on,gZ as Ut,g_ as rn,g$ as sn,h0 as an,h1 as ln,h2 as cn,h3 as dn,h4 as un,ek as le,h5 as pn,h6 as fn,ao as ot,h7 as xn,h8 as gn,bz as hn,h9 as bn,ha as yn,eh as ce,hb as vn,hc as mn,hd as wn,he as En,hf as Sn,hg as Rn,hh as Cn,ab as kn,bx as Pn,f4 as zn}from"./index-GIL7oGEO.js";import{s as Ln,i as Dn,r as Zt}from"./eyedropper-session-bjPXnfeX.js";import{z as In,k as jn}from"./react-story-board-BDDwiE2H.js";import{g as Dt}from"./viewport-pick-context-DkawXbEi.js";import{m as Tn}from"./inspect-BZfi3mmo.js";const Qt=new WeakMap;let qt=0;function Q(e){let o=Qt.get(e);return o||(o={guides:[],listeners:new Set,revision:0},Qt.set(e,o)),o}function It(e){e.revision+=1;for(const o of e.listeners)o()}function On(e){return Q(e).guides}function Bn(e){return Q(e).revision}function Gn(e,o){const i=Q(e);return i.listeners.add(o),()=>i.listeners.delete(o)}function Ao(e,o,i){qt+=1;const r=Q(e),u=`canvas-guide-${qt}`;return r.guides=[...r.guides,{id:u,axis:o,value:i}],It(r),u}function Ho(e,o,i){const r=Q(e),u=r.guides.map(s=>s.id===o?{...s,value:i}:s);u.every((s,p)=>s===r.guides[p])||(r.guides=u,It(r))}function _o(e,o){const i=Q(e),r=i.guides.filter(u=>u.id!==o);r.length!==i.guides.length&&(i.guides=r,It(i))}function Jt(e,o){for(const i of o){const r=D(e,i.id);if(!r)continue;const u={};i.x!==void 0&&(u.x=i.x),i.y!==void 0&&(u.y=i.y),Object.keys(u).length!==0&&(r.begin(i.id),r.apply(i.id,u),r.end(i.id))}}const Mn=[{op:"left",testId:"align-left",label:"Align left",icon:_t},{op:"hcenter",testId:"align-hcenter",label:"Align horizontal center",icon:Nt},{op:"right",testId:"align-right",label:"Align right",icon:Kt},{op:"top",testId:"align-top",label:"Align top",icon:_t,rotate:!0},{op:"vcenter",testId:"align-vcenter",label:"Align vertical center",icon:Nt,rotate:!0},{op:"bottom",testId:"align-bottom",label:"Align bottom",icon:Kt,rotate:!0}],Xn=[{axis:"horizontal",testId:"distribute-horizontal",label:"Distribute horizontally",icon:He},{axis:"vertical",testId:"distribute-vertical",label:"Distribute vertically",icon:_e}];function $n(e){const r=e.y-30-8;return{left:e.x,top:r<0?e.y+e.height+8:r}}function Fn({adapter:e,entries:o}){if(o.length<2)return null;const i=$e(o.map(p=>p.rect));if(!i)return null;const{left:r,top:u}=$n(i),s=o.length>=3;return d.jsxs(Fe,{label:"Align and distribute","data-testid":"align-toolbar",style:{position:"absolute",left:r,top:u,zIndex:yt.overlayLow,gap:2,padding:3},children:[Mn.map(({op:p,testId:b,label:y,icon:g,rotate:v})=>d.jsx(Vt,{"data-testid":b,title:y,"aria-label":y,variant:"ghost",size:"compact",onClick:()=>Jt(e,Ye(o,p)),children:d.jsx(Wt,{icon:g,"aria-hidden":"true",style:v?{transform:"rotate(90deg)"}:void 0})},p)),s&&d.jsxs(d.Fragment,{children:[d.jsx(Ae,{}),Xn.map(({axis:p,testId:b,label:y,icon:g})=>d.jsx(Vt,{"data-testid":b,title:y,"aria-label":y,variant:"ghost",size:"compact",onClick:()=>Jt(e,Ne(o,p)),children:d.jsx(Wt,{icon:g,"aria-hidden":"true"})},p))]})]})}function Yn({rect:e,initialText:o,onCommit:i,onCancel:r}){const[u,s]=c.useState(o),p=c.useRef(null),b=c.useRef(!1);c.useEffect(()=>{const v=p.current;v&&(v.focus(),v.select())},[]);const y=()=>{b.current||(b.current=!0,i(u))},g=()=>{b.current||(b.current=!0,r())};return d.jsx(Ke,{ref:p,"data-testid":"world-text-editor",value:u,onChange:v=>s(v.target.value),onBlur:y,onKeyDown:v=>{v.key==="Escape"?(v.stopPropagation(),g()):v.key==="Enter"&&!v.shiftKey&&(v.preventDefault(),y())},"data-variant":"inline-editor",style:{position:"absolute",left:e.x,top:e.y,width:Math.max(e.width,40),height:Math.max(e.height,20),boxSizing:"border-box",zIndex:yt.overlayLow,pointerEvents:"auto",resize:"none"}})}const C=ot.accent.default,An=yt.overlayLow,bt=5;function Hn(e,o,i){return e?!1:Dt()?.editorControls?.activate(o,i)??!1}function _n(e,o,i,r,u,s){const p=e?null:Dt()?.editorControls?.hover(o,i)??null;u(p),s(p?null:r(o,i))}function Nn(e,o){const i=e.hierarchy.node(o);return i?`${i.label}·${i.kind}`:o}function Kn(e){return e instanceof ce?e.childAdapters().some(o=>!!o.adapter.rects):!!e.rects}function Vn(e){const o=e instanceof ce?e.childAdapters():[{worldId:"",adapter:e}],i=[];for(const{worldId:r,adapter:u}of o)if(u.rects&&!(r&&Pn(r)))for(const s of zn(u)){if(u.inspector?.get(s,"locked")===!0)continue;const p=u.rects.rect(s);p&&i.push({id:s,rect:p})}return i}function Wn(e,o){return e.x<o.x+o.width&&e.x+e.width>o.x&&e.y<o.y+o.height&&e.y+e.height>o.y}function Un(e,o,i){if(!i)return[o];const r=new Set(e);return r.has(o)?r.delete(o):r.add(o),[...r]}function Zn(e,o,i,r){return o&&!!i&&(i.width>bt||i.height>bt)&&i?Vn(e).filter(p=>Wn(i,p.rect)).map(p=>p.id):r?null:[]}function Qn(e,o,i,r){return e?"grabbing":o?"grab":i||r?"crosshair":"default"}function F(e){try{e.currentTarget.setPointerCapture?.(e.pointerId)}catch{}}function zt(e){e.currentTarget.hasPointerCapture?.(e.pointerId)&&e.currentTarget.releasePointerCapture?.(e.pointerId)}function qn(e,o){if(o!==null)return!1;const i=e.currentTarget.parentElement?.parentElement??null;return jn(i,e.clientX,e.clientY)}function te(e,o){return{position:"absolute",left:e.x,top:e.y,width:e.width,height:e.height,border:`${o?2:1}px solid ${C}`,background:o?`color-mix(in srgb, ${C} 6%, transparent)`:"transparent",boxSizing:"border-box",pointerEvents:"none"}}function Jn(e){return{position:"absolute",left:e.x,top:Math.max(0,e.y-18),padding:"2px 6px",fontSize:11,fontFamily:"'SF Mono', 'Fira Code', Menlo, Consolas, monospace",fontWeight:600,color:"#fff",background:C,borderRadius:3,pointerEvents:"none",whiteSpace:"nowrap"}}const gt=10,ee=48;function ne(e,o){return{position:"absolute",left:e.x-gt/2,top:e.y-gt/2,width:gt,height:gt,background:"#fff",border:`1px solid ${C}`,boxSizing:"border-box",cursor:o,pointerEvents:"auto"}}const Z=12,to=24;function eo(e){return{position:"absolute",left:e.x+e.width/2-Z/2,top:e.y-to-Z/2,width:Z,height:Z,borderRadius:"50%",background:"#fff",border:`1px solid ${C}`,boxSizing:"border-box",cursor:"grab",padding:0,pointerEvents:"auto"}}const oe=12;function no(e){return{position:"absolute",left:e.position[0],top:e.position[1],width:oe,height:oe,borderRadius:"50%",background:e.writable?e.color:"transparent",border:`2px solid ${e.color}`,boxSizing:"border-box",cursor:e.writable?"grab":"not-allowed",padding:0,pointerEvents:e.writable?"auto":"none",touchAction:"none"}}function oo(e){return{position:"absolute",left:e.x-8,top:e.y-8,width:16,height:16,display:"grid",placeItems:"center",borderRadius:e.kind==="anchor"?"50%":2,background:"#fff",border:`1px solid ${C}`,boxSizing:"border-box",color:C,cursor:"crosshair",fontSize:9,fontFamily:"'SF Mono', 'Fira Code', Menlo, Consolas, monospace",fontWeight:700,lineHeight:1,padding:0,pointerEvents:"auto",touchAction:"none"}}function io(e){return{position:"absolute",left:e.x,top:e.y+e.height+4,padding:"2px 6px",fontSize:11,fontFamily:"'SF Mono', 'Fira Code', Menlo, Consolas, monospace",fontWeight:600,color:"#fff",background:C,borderRadius:3,pointerEvents:"none",whiteSpace:"nowrap"}}const ro="rgba(46, 204, 113, 0.25)",so="rgba(230, 126, 34, 0.25)";function ao(e){return{position:"absolute",left:e.x,top:e.y,width:e.width,height:e.height,background:e.kind==="padding"?ro:so,boxSizing:"border-box",cursor:e.cursor,pointerEvents:"auto"}}function lo(e){return{position:"absolute",left:e.labelX,top:e.labelY,transform:"translate(-50%, -50%)",fontSize:10,fontFamily:"monospace",color:e.kind==="padding"?"#1b7a3d":"#a35a12",background:"rgba(255,255,255,0.85)",padding:"0 2px",borderRadius:2,pointerEvents:"none",whiteSpace:"nowrap"}}function co(e){return{position:"absolute",left:e.x,top:e.y,width:e.width,height:e.height,border:`2px dashed ${C}`,background:`color-mix(in srgb, ${C} 15%, transparent)`,boxSizing:"border-box",pointerEvents:"none",opacity:.7}}function uo(e){return{position:"absolute",left:e.x,top:e.y,width:e.width,height:e.height,background:"#ff5fa2",borderRadius:2,pointerEvents:"none"}}const jt="#ff2d92",ht=6;function po(e){const o=e.orientation==="horizontal";return{position:"absolute",left:Math.min(e.x1,e.x2),top:Math.min(e.y1,e.y2),width:o?Math.abs(e.x2-e.x1):1,height:o?1:Math.abs(e.y2-e.y1),background:jt,pointerEvents:"none"}}function ie(e,o,i){return{position:"absolute",left:i?e:e-ht/2,top:i?o-ht/2:o,width:i?1:ht,height:i?ht:1,background:jt,pointerEvents:"none"}}function fo(e){return{position:"absolute",left:e.labelX,top:e.labelY,transform:"translate(-50%, -50%)",padding:"1px 4px",fontSize:10,fontFamily:"monospace",fontWeight:600,color:"#fff",background:jt,borderRadius:2,pointerEvents:"none",whiteSpace:"nowrap"}}const re="#f24822";function xo(e){const o=e.orientation==="vertical";return{position:"absolute",left:o?e.at:e.start,top:o?e.start:e.at,width:o?1:e.end-e.start,height:o?e.end-e.start:1,borderLeft:o?`1px dashed ${re}`:void 0,borderTop:o?void 0:`1px dashed ${re}`,pointerEvents:"none"}}function go(e){return{position:"absolute",left:e.x,top:Math.max(0,e.y-36),display:"flex",gap:4,pointerEvents:"none"}}const se={padding:"2px 6px",fontSize:10,fontFamily:"'SF Mono', 'Fira Code', Menlo, Consolas, monospace",fontWeight:600,color:ot.content.onAccent,background:`color-mix(in srgb, ${C} 85%, transparent)`,borderRadius:3,whiteSpace:"nowrap"};function ho(e){return{position:"absolute",left:e.x,top:e.y,width:e.width,height:e.height,border:`1px dashed color-mix(in srgb, ${C} 45%, transparent)`,boxSizing:"border-box",pointerEvents:"none"}}function ae(e,o,i){return o&&i>0?Math.round(e/i)*i:e}function bo(e,o,i,r,u,s){const p=e.nativeHandleSpan??1,b=e.nativeScaleAxis??"both";let y,g;if(b==="x")y=1+o/p,g=1;else if(b==="y")y=1,g=1+i/p;else{const v=1+(o+i)/(Math.SQRT2*p);y=v,g=v}return{...b!=="y"?{scaleXFactor:y}:{},...b!=="x"?{scaleYFactor:g}:{},...r&&!u?{scaleStep:s}:{}}}function yo(e,o,i,r,u,s){const p=e.nativeOrigin;if(!p)return{};const b=r&&!u;return{...e.moveAxis!=="y"?{originX:ae(p.x+o,b,s)}:{},...e.moveAxis!=="x"?{originY:ae(p.y+i,b,s)}:{}}}function vo(e,o,i){return e==="x"?{x:o.x+i,y:o.y}:e==="y"?{x:o.x,y:o.y+i}:{x:o.x+i/Math.SQRT2,y:o.y+i/Math.SQRT2}}function mo(e,o,i){return e==="x"?{dx:o,dy:0}:e==="y"?{dx:0,dy:i}:{dx:o,dy:i}}function wo(e,o){e.ownerBoxEdit.begin(e.id);for(const i of e.peers)i.ownerBoxEdit.begin(i.id);return{kind:"move",id:e.id,ownerBoxEdit:e.ownerBoxEdit,startLocal:o,origRect:e.origRect,context:e.context,...e.nativeOrigin?{nativeOrigin:e.nativeOrigin}:{},movePeers:e.peers}}function Eo(e,o,i){let r=o;for(let u=0;r!==null&&u<256;u++){if(i.has(r))return r;r=e.hierarchy.node(r)?.parentId??null}return null}function So(e,o,i){const r=D(e,o);if(!r)return null;const u=e.inspector?.get(o,"style.position"),s=Lt(e,o)==="2d";if(u!=="absolute"&&u!=="fixed"&&!s)return null;const p=E(e,o);if(!p)return null;const b=s?r.gizmoOrigin?.(o)??void 0:void 0,y=[];for(const g of i){if(g===o)continue;const v=D(e,g),it=E(e,g);if(!v||!it)continue;const _=e.inspector?.get(g,"style.position"),B=Lt(e,g)==="2d";if(_!=="absolute"&&_!=="fixed"&&!B)continue;const rt=B?v.gizmoOrigin?.(g)??void 0:void 0;y.push({id:g,ownerBoxEdit:v,origRect:it,...rt?{nativeOrigin:rt}:{}})}return{id:o,ownerBoxEdit:r,origRect:p,context:nt(e,o),...b?{nativeOrigin:b}:{},peers:y}}function Ro(e,o){if(!bn(e,o)?.reorder)return null;const r=yn(e,o);if(!r||r.length<3)return null;const u=E(e,o);if(!u)return null;const s=[];for(const p of r){if(p===o)continue;const b=E(e,p);b&&s.push({id:p,rect:b})}return s.length===0?null:{id:o,adapter:e,origRect:u,siblingRects:s}}function Co(){return vn()}function ko(e,o){if(o.size!==1)return null;const i=[...o][0],r=D(e,i);if(!r)return null;const u=E(e,i);if(!u)return null;const s=mn(u,wn(e,i));return{id:i,rect:u,ownerBoxEdit:r,spacingBands:s}}function Po(e,o){if(o.size<2)return null;const i=[];for(const r of o){const u=E(e,r);if(!u||!D(e,r))return null;i.push({id:r,rect:u})}return i}function zo(e,o,i){const r=o.size===1?[...o][0]:null,u=r?E(e,r):null,s=u&&i?En(u,i):[],p=r?Sn(e,r):null,b=!!(p&&(p.position||p.parentLayout)),y=r?nt(e,r)?.parent??null:null;return{selectedSingleRect:u,measureLines:s,positionBadge:p,showPositionBadge:b,parentRect:y}}function Lo({state:e,adapter:o,onClose:i}){const r=c.useRef(null);return c.useEffect(()=>{const u=p=>{r.current?.contains(p.target)||i()},s=p=>{p.key==="Escape"&&i()};return document.addEventListener("pointerdown",u),document.addEventListener("keydown",s),()=>{document.removeEventListener("pointerdown",u),document.removeEventListener("keydown",s)}},[i]),d.jsx(Rn,{children:d.jsx(Cn,{ref:r,"aria-label":"Pick object under pointer","data-testid":"viewport-pick-menu",style:{position:"fixed",left:e.x,top:e.y,minWidth:190,maxWidth:320,zIndex:yt.dropdown},children:e.ids.map(u=>{const s=o.hierarchy.node(u);return d.jsxs(kn,{"data-testid":"viewport-pick-menu-item",onSelect:()=>{le(o,[u]),i()},style:{justifyContent:"space-between",gap:20},children:[d.jsx("span",{children:s?.label??u}),d.jsx("span",{style:{color:ot.content.muted,fontSize:11},children:s?.kind??""})]},u)})})})}function No({adapter:e,view:o,transformModeAware:i=!1}={}){const r=Ve(),u=c.useSyncExternalStore(r.subscribe,r.getSnapshot),s=e??We(r),p=c.useCallback((t,n)=>e?e.pickable?.pick(t,n)??null:Ue(r,t,n),[e,r]),b=c.useRef(null),y=c.useRef(null),g=c.useRef(null),[v,it]=c.useState(null),[_,B]=c.useState(null),[rt,Tt]=c.useState(null),[Ot,vt]=c.useState(null),st=c.useRef(null),Bt=c.useCallback((t,n)=>{const l=Ze(r,t,n,{...e?{adapter:e}:{}});if(l.length===0){vt(null);return}vt({x:t,y:n,ids:l})},[e,r]);c.useEffect(()=>{const t=l=>{const a=st.current;!a||a.pointerId!==l.pointerId||a.moved||Math.hypot(l.clientX-a.startClientX,l.clientY-a.startClientY)>bt&&(a.moved=!0)},n=l=>{const a=st.current;!a||a.pointerId!==l.pointerId||(st.current=null,l.type==="pointerup"&&!a.moved&&Bt(l.clientX,l.clientY))};return window.addEventListener("pointermove",t),window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n),()=>{window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n)}},[Bt]);const de=c.useCallback(t=>{t.preventDefault(),t.stopPropagation()},[]),P=o??Qe,h=c.useSyncExternalStore(P.subscribe,P.get,P.get);c.useSyncExternalStore(c.useCallback(t=>Gn(P,t),[P]),c.useCallback(()=>Bn(P),[P]));const mt=i?On(P):[],N=i?1/h.zoom:1,wt=c.useRef(!1),[ue,Gt]=c.useState(!1),G=c.useRef(null),[pe,at]=c.useState(!1),R=c.useRef(null);c.useEffect(()=>()=>{const t=R.current;if(R.current=null,!!t){t.ownerBoxEdit.end(t.id);for(const n of t.movePeers??[])n.ownerBoxEdit.end(n.id)}},[]);const[,fe]=c.useState(0),[xe,q]=c.useState(null),[ge,K]=c.useState([]),Et=c.useRef(null),[he,be]=c.useState(null),V=c.useCallback(t=>{Et.current=t,be(t)},[]),Mt=c.useRef(null),[ye,ve]=c.useState(null),[lt,J]=c.useState(null),Y=c.useCallback(t=>{Mt.current=t,ve(t)},[]),St=c.useRef(null),Xt=c.useRef(null);c.useEffect(()=>{const t=St.current;if(!t)return;St.current=null;const n=Pt(s,t.id);n&&n.get(t.id)===null&&J({id:t.id,rect:t.rect})},[u]);const $t=c.useRef("");c.useEffect(()=>{const t=[...r.selectedEntityIds].sort().join(",");t!==$t.current&&($t.current=t,lt&&J(null))}),c.useEffect(()=>{if(!lt)return;const t=window.setTimeout(()=>J(null),4e3);return()=>window.clearTimeout(t)},[lt]);const M=c.useSyncExternalStore(Ln,Dn),[me,Ft]=c.useState(null),I=c.useCallback(t=>{g.current=t,it(t)},[]),m=c.useCallback((t,n)=>{const l=b.current?.getBoundingClientRect();return{x:(t-(l?.left??0)-h.x)/h.zoom,y:(n-(l?.top??0)-h.y)/h.zoom}},[h.x,h.y,h.zoom]),we=c.useCallback(t=>{!o||!i||!s.assetDrop||!t.dataTransfer.types.includes("application/x-editor-asset")||(t.preventDefault(),t.dataTransfer.dropEffect="copy")},[s.assetDrop,o,i]),Ee=c.useCallback(t=>{if(!o||!i||!s.assetDrop)return;const n=t.dataTransfer.getData("application/x-editor-asset");if(!n)return;let l;try{l=JSON.parse(n)}catch{return}const a=m(t.clientX,t.clientY),f={position:[a.x,a.y,0],item:l.component??{kind:"file",name:l.name??l.path.split("/").pop()??l.path}};s.assetDrop.accepts("",l.path,f)&&(t.preventDefault(),t.stopPropagation(),qe(s,"",l.path,f))},[s.assetDrop,o,m,i]),X=c.useCallback(()=>fe(t=>t+1),[]),ct=c.useCallback(()=>{const t=R.current;if(!t)return!1;R.current=null,t.ownerBoxEdit.end(t.id);for(const n of t.movePeers??[])n.ownerBoxEdit.end(n.id);return q(null),K([]),X(),!0},[X]),Se=c.useCallback((t,n)=>{if(n.stopPropagation(),n.button!==0)return;const l=r.selectedEntityIds;if(l.size!==1)return;const a=[...l][0],f=D(s,a),x=E(s,a);if(!f||!x)return;const w=s.inspector?.get(a,"style.position"),O=Lt(s,a)==="2d";F(n),f.begin(a),R.current={kind:"resize",id:a,ownerBoxEdit:f,startLocal:m(n.clientX,n.clientY),origRect:x,pos:t,isPositioned:w==="absolute"||w==="fixed"||O,context:nt(s,a)}},[s,r,m]),Re=c.useCallback(t=>{if(t.stopPropagation(),t.button!==0)return;const n=r.selectedEntityIds;if(n.size!==1)return;const l=[...n][0],a=D(s,l),f=E(s,l);if(!a||!f)return;const x=i?a.gizmoOrigin?.(l):null;F(t),a.begin(l),R.current={kind:"rotate",id:l,ownerBoxEdit:a,startLocal:m(t.clientX,t.clientY),origRect:f,center:x??{x:f.x+f.width/2,y:f.y+f.height/2},...x?{nativeOrigin:x}:{}}},[s,r,m,i]),Rt=c.useCallback((t,n)=>{if(n.stopPropagation(),n.button!==0)return;const l=r.selectedEntityIds;if(l.size!==1)return;const a=[...l][0],f=D(s,a),x=E(s,a);if(!f||!x)return;const w=f.gizmoOrigin?.(a)??{x:x.x+x.width/2,y:x.y+x.height/2};F(n),f.begin(a),R.current={kind:"move",id:a,ownerBoxEdit:f,startLocal:m(n.clientX,n.clientY),origRect:x,context:nt(s,a),moveAxis:t,nativeOrigin:w}},[s,r,m]),Ce=c.useCallback((t,n)=>{if(n.stopPropagation(),n.button!==0)return;const l=r.selectedEntityIds;if(l.size!==1)return;const a=[...l][0],f=D(s,a),x=E(s,a);if(!f||!x)return;const w=f.gizmoOrigin?.(a)??{x:x.x+x.width/2,y:x.y+x.height/2};F(n),f.begin(a),R.current={kind:"native-scale",id:a,ownerBoxEdit:f,startLocal:m(n.clientX,n.clientY),origRect:x,nativeOrigin:w,nativeScaleAxis:t,nativeHandleSpan:ee/h.zoom}},[s,h.zoom,r,m]),ke=c.useCallback((t,n)=>{if(n.stopPropagation(),n.button!==0)return;const l=r.selectedEntityIds;if(l.size!==1)return;const a=[...l][0],f=D(s,a),x=E(s,a);!f||!x||f.referencePoint?.(a)?.id!==t.id||(F(n),f.begin(a),R.current={kind:"reference",id:a,ownerBoxEdit:f,startLocal:m(n.clientX,n.clientY),origRect:x,context:nt(s,a),pointerId:n.pointerId,referencePoint:t})},[s,r,m]),dt=c.useRef(null),Pe=c.useCallback((t,n,l,a)=>{a.stopPropagation(),!(a.button!==0||!l.writable)&&(F(a),dt.current={id:t,handleId:l.id,provider:n})},[]),ze=c.useCallback(t=>{const n=dt.current;if(!n)return;const l=m(t.clientX,t.clientY);n.provider.preview(n.id,n.handleId,[l.x,l.y,0]),X()},[X,m]),Ct=c.useCallback(t=>{const n=dt.current;if(dt.current=null,!n)return;zt(t);const l=m(t.clientX,t.clientY);n.provider.commit(n.id,n.handleId,[l.x,l.y,0]),X()},[X,m]),Le=c.useCallback((t,n)=>{if(n.stopPropagation(),n.button!==0)return;const l=r.selectedEntityIds;if(l.size!==1)return;const a=[...l][0],f=D(s,a),x=E(s,a);!f||!x||(F(n),f.begin(a),R.current={kind:"spacing",id:a,ownerBoxEdit:f,startLocal:m(n.clientX,n.clientY),origRect:x,side:t.side,origValue:t.value})},[s,r,m]),ut=c.useCallback((t,n)=>{if(t.pointerId!==void 0&&n.pointerId!==t.pointerId)return;const l=m(n.clientX,n.clientY),a=l.x-t.startLocal.x,f=l.y-t.startLocal.y;let x;if(t.kind==="resize")x=Je(t.pos,a,f,t.origRect,!!t.isPositioned,n.altKey,t.context),K(tn(t.pos,a,f,t.origRect,n.altKey,t.context));else if(t.kind==="native-scale")x=bo(t,a,f,r.snapEnabled,n.altKey,r.snapValues.scale),K([]);else if(t.kind==="move"){const{dx:w,dy:O}=mo(t.moveAxis,a,f);if(t.nativeOrigin){x=yo(t,w,O,r.snapEnabled,n.altKey,r.snapValues.translate);const L=en({x:x.originX??t.nativeOrigin.x,y:x.originY??t.nativeOrigin.y},t.nativeOrigin,t.origRect,t.context,t.moveAxis,!r.snapEnabled||n.altKey,nn/Math.max(h.zoom,.01),{x:mt.filter(H=>H.axis==="x").map(H=>H.value),y:mt.filter(H=>H.axis==="y").map(H=>H.value)});x.originX!==void 0&&(x.originX=L.position.x),x.originY!==void 0&&(x.originY=L.position.y),K(L.guides)}else x=on(w,O,t.origRect,n.altKey,t.context);q(Ut(t.origRect,w,O)),t.nativeOrigin||K(rn(w,O,t.origRect,n.altKey,t.context))}else if(t.kind==="reference"){const w=sn(l,t.origRect,n.altKey,t.context,{bounded:t.referencePoint?.bounded,snapPoints:t.referencePoint?.snapPoints});x={referenceX:w.position.x,referenceY:w.position.y},K(w.guides)}else t.kind==="rotate"?x=an(t.center,t.startLocal,l,t.nativeOrigin&&!r.snapEnabled||n.altKey,t.nativeOrigin?r.snapValues.rotate:15):x=ln(t.side,a,f,t.origValue??0);if(t.ownerBoxEdit.apply(t.id,x),t.kind==="move"&&t.movePeers){const w=t.nativeOrigin?(x.originX??t.nativeOrigin.x)-t.nativeOrigin.x:(x.x??t.origRect.x)-t.origRect.x,O=t.nativeOrigin?(x.originY??t.nativeOrigin.y)-t.nativeOrigin.y:(x.y??t.origRect.y)-t.origRect.y;for(const L of t.movePeers)L.ownerBoxEdit.apply(L.id,L.nativeOrigin?{originX:L.nativeOrigin.x+w,originY:L.nativeOrigin.y+O}:{x:L.origRect.x+w,y:L.origRect.y+O})}X()},[m,X,r,mt,h.zoom]),pt=c.useCallback((t,n)=>{const l=p(t,n);if(!l)return null;const a=cn(s,l)?.backgroundChainAt(t,n)??null;return a?Tn(a):null},[s,p]);c.useEffect(()=>{if(!M)return;const t=n=>{n.key==="Escape"&&Zt(null)};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[M]),c.useEffect(()=>{const t=a=>a instanceof HTMLInputElement||a instanceof HTMLTextAreaElement||a instanceof HTMLSelectElement||a instanceof HTMLElement&&a.isContentEditable,n=a=>{a.code!=="Space"||a.repeat||t(a.target)||a.target instanceof HTMLButtonElement||(a.preventDefault(),wt.current=!0,Gt(!0))},l=a=>{a.code==="Space"&&(wt.current=!1,Gt(!1),G.current&&(G.current=null,at(!1)))};return window.addEventListener("keydown",n),window.addEventListener("keyup",l),()=>{window.removeEventListener("keydown",n),window.removeEventListener("keyup",l)}},[]);const Yt=c.useCallback(t=>{if(t.stopPropagation(),F(t),wt.current){G.current={startClientX:t.clientX,startClientY:t.clientY,startPan:P.get()},at(!0);return}if(M){Zt(pt(t.clientX,t.clientY)),Ft(null);return}if(Hn(e,t.clientX,t.clientY)){y.current=null,B(null),I(null);return}const n=p(t.clientX,t.clientY);if(qn(t,n)){y.current=null,B(null),I(null);return}const l=n!==null?Eo(s,n,r.selectedEntityIds):null,a=(!i||r.transformMode==="translate")&&l!==null?So(s,l,r.selectedEntityIds):null,f=!a&&l!==null?Ro(s,l):null;y.current={downClientX:t.clientX,downClientY:t.clientY,downLocal:m(t.clientX,t.clientY),hitAtDown:n,moved:!1,moveCandidate:a,reorderCandidate:f},B(null),I(null)},[s,r,P,i,m,I,M,pt,p,e]),De=c.useCallback(t=>{if(t.button===2){st.current={pointerId:t.pointerId,startClientX:t.clientX,startClientY:t.clientY,moved:!1};return}t.button===0&&Yt(t)},[Yt]),At=c.useCallback((t,n)=>{const l=n.clientX-t.downClientX,a=n.clientY-t.downClientY;if(!t.moved&&Math.hypot(l,a)>bt&&(t.moved=!0),!!t.moved){if(t.moveCandidate){const f=wo(t.moveCandidate,t.downLocal);R.current=f,ut(f,n);return}if(t.reorderCandidate){const f=m(n.clientX,n.clientY),x=dn(t.reorderCandidate.siblingRects,f);x&&(V({id:t.reorderCandidate.id,adapter:t.reorderCandidate.adapter,gap:x}),q(Ut(t.reorderCandidate.origRect,f.x-t.downLocal.x,f.y-t.downLocal.y)));return}if(t.hitAtDown===null){const f=m(n.clientX,n.clientY);I({x:Math.min(t.downLocal.x,f.x),y:Math.min(t.downLocal.y,f.y),width:Math.abs(f.x-t.downLocal.x),height:Math.abs(f.y-t.downLocal.y)})}}},[m,I,ut,V]),j=c.useCallback(t=>{const n=G.current;if(n){P.setPan(n.startPan.x+(t.clientX-n.startClientX),n.startPan.y+(t.clientY-n.startClientY));return}if(M){const f=m(t.clientX,t.clientY);Ft({...f,color:pt(t.clientX,t.clientY)});return}const l=R.current;if(l){ut(l,t);return}if((t.buttons&1)===0){_n(e,t.clientX,t.clientY,p,Tt,B);return}const a=y.current;a&&At(a,t)},[r,P,m,ut,M,pt,At,p,e]),T=c.useCallback(t=>{if(zt(t),G.current){G.current=null,at(!1);return}const n=R.current;if(n?.pointerId!==void 0&&t.pointerId!==n.pointerId||ct())return;const l=Et.current;if(l){V(null),q(null),y.current=null,un(l.adapter,l.id,l.gap.beforeSiblingId);return}const a=y.current;if(y.current=null,!a)return;const f=a.hitAtDown!==null?Un(r.selectedEntityIds,a.hitAtDown,t.shiftKey):Zn(s,a.moved,g.current,t.shiftKey);f!==null&&le(s,f),I(null)},[s,r,I,ct,V]),z=c.useCallback(t=>{if(zt(t),G.current){G.current=null,at(!1);return}const n=R.current;n?.pointerId!==void 0&&t.pointerId!==n.pointerId||ct()||(Et.current&&(V(null),q(null)),y.current=null,I(null))},[ct,I,V]),Ie=c.useCallback(()=>{e||Dt()?.editorControls?.clearHover(),Tt(null),B(null)},[e]),je=c.useCallback(t=>{const n=b.current?.parentElement??null;if(In(n,t.clientX,t.clientY))return;const l=p(t.clientX,t.clientY);if(!l)return;const a=Pt(s,l);if(!a)return;const f=E(s,l);if(!f)return;const x=a.get(l);if(x===null){console.warn(`[RootSelectionOverlay] text edit refused for "${l}": dynamic body or has child elements — not inline-editable.`),Y(null),J({id:l,rect:f});return}J(null),Y({id:l,rect:f,initialText:x})},[s,p,Y]),Te=c.useCallback(t=>{const n=Mt.current;if(!n)return;const l=Pt(s,n.id);l&&(St.current={id:n.id,rect:n.rect},l.set(n.id,t)),Y(null)},[s,Y]),Oe=c.useCallback(()=>Y(null),[Y]);if(!Kn(s)||Co())return null;const A=new Set([...r.selectedEntityIds].filter(t=>s.hierarchy.node(t)!==void 0)),kt=_!==null&&!A.has(_)?E(s,_):null,k=ko(s,A),W=k?.rect??null,Be=k?.ownerBoxEdit??null,S=i&&k?k.ownerBoxEdit.gizmoOrigin?.(k.id)??{x:k.rect.x+k.rect.width/2,y:k.rect.y+k.rect.height/2}:null,tt=ee/h.zoom,$=k?k.ownerBoxEdit.referencePoint?.(k.id):null,Ge=k?.spacingBands??[],U=A.size===1?[...A][0]:null,ft=U?pn(s,U):null,Me=U&&ft&&r.showHelpers?ft.layers(U).filter(t=>r.helperVisibility[t.category]??!0):[],et=i?{selectedSingleRect:null,measureLines:[],positionBadge:null,showPositionBadge:!1,parentRect:null}:zo(s,A,kt),Ht=i?null:Po(s,A),xt=Xt.current,Xe=i?[]:xt&&xt.adapter===s&&xt.version===u?xt.hints:(()=>{const t=fn(s);return Xt.current={adapter:s,version:u,hints:t},t})();return d.jsxs("div",{style:{position:"absolute",inset:0,zIndex:An,pointerEvents:"none"},children:[d.jsx("div",{ref:b,"data-testid":"world-selection-overlay-interaction",style:{position:"absolute",inset:0,pointerEvents:"auto",touchAction:"none",userSelect:"none",cursor:rt??Qn(pe,ue,M,!!v)},onPointerDownCapture:De,onPointerMove:j,onPointerUp:T,onPointerCancel:z,onLostPointerCapture:z,onPointerLeave:Ie,onDoubleClick:je,onContextMenu:de,onDragOver:we,onDrop:Ee}),Ot?d.jsx(Lo,{state:Ot,adapter:s,onClose:()=>vt(null)}):null,d.jsxs("div",{"data-testid":"world-selection-overlay-chrome",style:{position:"absolute",inset:0,pointerEvents:"none",transform:hn(h),transformOrigin:"0 0"},children:[!i&&Xe.map(t=>d.jsx("div",{"data-testid":"world-empty-container-hint","data-entity-id":t.id,title:t.displayName,style:{position:"absolute",left:t.rect.x,top:t.rect.y,width:t.rect.width,height:t.rect.height,border:"1px dashed rgba(154, 160, 166, 0.7)",borderWidth:i?1/h.zoom:1,boxSizing:"border-box",pointerEvents:"none"}},t.id)),kt&&d.jsx("div",{"data-testid":"world-selection-hover",style:{...te(kt,!1),...i?{borderWidth:1/h.zoom}:{}}}),[...A].map(t=>{const n=E(s,t);return n?d.jsxs("div",{children:[d.jsx("div",{"data-testid":"world-selection-box","data-entity-id":t,style:{...te(n,!0),...i?{borderWidth:1/h.zoom,background:"transparent"}:{}}}),!i&&d.jsx("div",{"data-testid":"world-selection-label",style:Jn(n),children:Nn(s,t)})]},t):null}),v&&d.jsx("div",{"data-testid":"world-selection-marquee",style:{position:"absolute",left:v.x,top:v.y,width:v.width,height:v.height,border:`1px solid ${C}`,background:`color-mix(in srgb, ${C} 10%, transparent)`,pointerEvents:"none"}}),!i&&d.jsx(Do,{measureLines:et.measureLines,snapGuides:ge,positionBadge:et.positionBadge,showPositionBadge:et.showPositionBadge,badgeAnchorRect:et.selectedSingleRect,parentRect:et.parentRect,screenScale:N,screenZoom:1}),!i&&d.jsx(Io,{dragGhost:xe,reorderPreview:he}),!i&&Ht&&d.jsx(Fn,{adapter:s,entries:Ht}),W&&Be&&d.jsxs(d.Fragment,{children:[!i&&Ge.map(t=>d.jsxs("div",{children:[d.jsx("div",{"data-testid":`world-spacing-${t.kind}-${To(t.side)}`,style:ao(t),onPointerDown:n=>Le(t,n),onPointerMove:j,onPointerUp:T,onPointerCancel:z}),!t.isZero&&d.jsx("div",{style:{...lo(t),...i?{transform:`translate(-50%, -50%) scale(${N})`,transformOrigin:"center"}:{}},children:Math.round(t.value)})]},t.side)),$&&d.jsx("div",{"aria-label":`Edit ${$.label}`,"data-reference-kind":$.kind,"data-testid":"world-reference-point-handle",title:`${$.label} (${$.bounded?"native corner/edge/center snap":"8px/alignment snap"}, Alt for free movement)`,style:{...oo($),...i?{transform:`scale(${N})`,transformOrigin:"center"}:{}},onPointerDown:t=>ke($,t),onPointerMove:j,onPointerUp:T,onPointerCancel:z,onLostPointerCapture:z,role:"button",tabIndex:0,children:$.kind==="anchor"?"A":"P"}),U&&ft&&Me.flatMap(t=>t.handles.map(n=>d.jsx("div",{"aria-label":n.label,"data-testid":"world-spatial-handle","data-handle-id":n.id,"data-writable":n.writable,role:"button",tabIndex:0,title:n.writable?n.label:`${n.label} — ${n.reason}`,style:{...no(n),transform:`translate(-50%, -50%) scale(${N})`},onPointerDown:l=>Pe(U,ft,n,l),onPointerMove:ze,onPointerUp:Ct,onPointerCancel:Ct,onLostPointerCapture:Ct},`${t.id}:${n.id}`))),i&&r.transformMode==="translate"&&d.jsxs(d.Fragment,{children:[d.jsx("div",{"data-testid":"world-2d-move-axis-x",title:"Move on X axis",style:{position:"absolute",left:S.x,top:S.y-5/h.zoom,width:tt,height:10/h.zoom,borderTop:`${2/h.zoom}px solid #ef5350`,boxSizing:"border-box",cursor:"ew-resize",pointerEvents:"auto"},onPointerDown:t=>Rt("x",t),onPointerMove:j,onPointerUp:T,onPointerCancel:z}),d.jsx("div",{"data-testid":"world-2d-move-axis-y",title:"Move on Y axis",style:{position:"absolute",left:S.x-5/h.zoom,top:S.y,width:10/h.zoom,height:tt,borderLeft:`${2/h.zoom}px solid #66bb6a`,boxSizing:"border-box",cursor:"ns-resize",pointerEvents:"auto"},onPointerDown:t=>Rt("y",t),onPointerMove:j,onPointerUp:T,onPointerCancel:z}),d.jsx("div",{"data-testid":"world-2d-move-center",title:"Move freely",style:{position:"absolute",left:S.x-5/h.zoom,top:S.y-5/h.zoom,width:10/h.zoom,height:10/h.zoom,border:"1px solid rgba(255,255,255,.9)",background:"#4aa3ff",boxSizing:"border-box",cursor:"move",pointerEvents:"auto"},onPointerDown:t=>Rt("both",t),onPointerMove:j,onPointerUp:T,onPointerCancel:z})]}),(!i||r.transformMode==="scale")&&(i?d.jsxs(d.Fragment,{children:[d.jsx("div",{"data-testid":"world-2d-scale-axis-x",style:{position:"absolute",left:S.x,top:S.y,width:tt,borderTop:`${2/h.zoom}px solid #ef5350`,pointerEvents:"none"}}),d.jsx("div",{"data-testid":"world-2d-scale-axis-y",style:{position:"absolute",left:S.x,top:S.y,height:tt,borderLeft:`${2/h.zoom}px solid #66bb6a`,pointerEvents:"none"}}),[["x","ew-resize"],["y","ns-resize"],["both","nwse-resize"]].map(([t,n])=>{const l=vo(t,S,tt),a=t==="x"?"e":t==="y"?"s":"se";return d.jsx("div",{"data-testid":`world-resize-handle-${a}`,style:{...ne(l,n),transform:`scale(${N})`,transformOrigin:"center",background:t==="x"?"#ef5350":t==="y"?"#66bb6a":"#fff"},onPointerDown:f=>Ce(t,f),onPointerMove:j,onPointerUp:T,onPointerCancel:z},t)})]}):d.jsxs(d.Fragment,{children:[xn.map(({pos:t,cursor:n})=>d.jsx("div",{"data-testid":`world-resize-handle-${t}`,style:ne(gn(W,t),n),onPointerDown:l=>Se(t,l),onPointerMove:j,onPointerUp:T,onPointerCancel:z},t)),d.jsx("div",{"data-testid":"world-resize-dimension-label",style:io(W),children:`${Math.round(W.width)}×${Math.round(W.height)}`})]})),(!i||r.transformMode==="rotate")&&d.jsxs(d.Fragment,{children:[i&&d.jsx("div",{"data-testid":"world-2d-rotate-ring",style:{position:"absolute",left:S.x-40/h.zoom,top:S.y-40/h.zoom,width:80/h.zoom,height:80/h.zoom,border:`${1/h.zoom}px solid #4aa3ff`,borderRadius:"50%",boxSizing:"border-box",pointerEvents:"none"}}),d.jsx("div",{"data-testid":"world-rotate-handle","aria-label":"Rotate selection",title:"Rotate selection (15° snap, Alt for free rotation)",style:{...eo(W),...i?{left:S.x-Z/2,top:S.y-40/h.zoom-Z/2,transform:`scale(${N})`,transformOrigin:"center",background:"#4aa3ff"}:{}},onPointerDown:Re,onPointerMove:j,onPointerUp:T,onPointerCancel:z,role:"button",tabIndex:0})]})]}),!i&&d.jsx(jo,{textEdit:ye,onCommitTextEdit:Te,onCancelTextEdit:Oe,textEditRefused:lt,eyedropperActive:M,eyedropperPreview:me})]})]})}function Do(e){const{measureLines:o,snapGuides:i,positionBadge:r,showPositionBadge:u,badgeAnchorRect:s,parentRect:p,screenScale:b,screenZoom:y}=e;return d.jsxs(d.Fragment,{children:[p&&d.jsx("div",{"data-testid":"world-parent-outline",style:ho(p)}),o.map(g=>d.jsxs("div",{"data-testid":"world-measure-line",children:[d.jsx("div",{style:po(g)}),d.jsx("div",{style:ie(g.x1,g.y1,g.orientation==="horizontal")}),d.jsx("div",{style:ie(g.x2,g.y2,g.orientation==="horizontal")}),d.jsx("div",{"data-testid":"world-measure-line-label",style:{...fo(g),...b!==1?{transform:`translate(-50%, -50%) scale(${b})`,transformOrigin:"center"}:{}},children:g.distance})]},g.orientation)),i.map(g=>d.jsx("div",{"data-testid":"world-snap-guide",style:xo(g)},g.orientation)),u&&s&&r&&d.jsxs("div",{"data-testid":"world-position-badge",style:{...go(s),...b!==1?{top:s.y-36/y,transform:`scale(${b})`,transformOrigin:"top left"}:{}},children:[r.position&&d.jsx("span",{"data-testid":"world-position-badge-mode",style:se,children:r.position}),r.parentLayout&&d.jsx("span",{"data-testid":"world-position-badge-layout",style:se,children:r.parentLayout})]})]})}function Io(e){const{dragGhost:o,reorderPreview:i}=e;return d.jsxs(d.Fragment,{children:[o&&d.jsx("div",{"data-testid":"world-drag-ghost",style:co(o)}),i&&d.jsx("div",{"data-testid":"world-reorder-preview",style:uo(i.gap.marker)})]})}function jo(e){const{textEdit:o,onCommitTextEdit:i,onCancelTextEdit:r,textEditRefused:u,eyedropperActive:s,eyedropperPreview:p}=e;return d.jsxs(d.Fragment,{children:[o&&d.jsx("div",{style:{pointerEvents:"auto"},children:d.jsx(Yn,{rect:o.rect,initialText:o.initialText,onCommit:i,onCancel:r})}),u&&d.jsx("div",{"data-testid":"world-text-edit-refused",title:"dynamic body — not inline-editable",style:{position:"absolute",left:u.rect.x,top:u.rect.y,width:Math.max(u.rect.width,40),height:Math.max(u.rect.height,20),border:`2px dashed ${ot.semantic.danger}`,boxSizing:"border-box",background:ot.semantic.dangerMuted,pointerEvents:"none"}}),s&&p&&d.jsx("div",{"data-testid":"world-eyedropper-swatch","data-color-state":p.color?"resolved":"unknown",style:{position:"absolute",left:p.x+12,top:p.y+12,width:24,height:24,borderRadius:4,border:"2px solid #fff",boxShadow:"0 1px 4px rgba(0,0,0,0.5)",background:p.color??"repeating-linear-gradient(45deg, #999, #999 4px, #ccc 4px, #ccc 8px)",pointerEvents:"none"}})]})}function To(e){return e.endsWith("Top")?"top":e.endsWith("Right")?"right":e.endsWith("Bottom")?"bottom":"left"}export{No as R,On as a,Ao as b,Bn as c,Ho as m,_o as r,Gn as s};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ak as z,al as I,aB as H,C as P,j as _,aC as G,V as k,aY as N}from"./three.module-D396a9Mn.js";class q extends z{constructor(h){super(h)}load(h,V,D,y){const b=this,x=new I(this.manager);x.setPath(this.path),x.setResponseType("arraybuffer"),x.setRequestHeader(this.requestHeader),x.setWithCredentials(this.withCredentials),x.load(h,function(T){try{V(b.parse(T))}catch(C){y?y(C):console.error(C),b.manager.itemError(h)}},D,y)}parse(h){function V(t){const e=new DataView(t),o=32/8*3+32/8*3*3+16/8,s=e.getUint32(80,!0);if(80+32/8+s*o===e.byteLength)return!0;const i=[115,111,108,105,100];for(let a=0;a<5;a++)if(D(i,e,a))return!1;return!0}function D(t,e,o){for(let s=0,f=t.length;s<f;s++)if(t[s]!==e.getUint8(o+s))return!1;return!0}function y(t){const e=new DataView(t),o=e.getUint32(80,!0);let s,f,i,a=!1,m,B,A,S,U;for(let n=0;n<70;n++)e.getUint32(n,!1)==1129270351&&e.getUint8(n+4)==82&&e.getUint8(n+5)==61&&(a=!0,m=new Float32Array(o*3*3),B=e.getUint8(n+6)/255,A=e.getUint8(n+7)/255,S=e.getUint8(n+8)/255,U=e.getUint8(n+9)/255);const g=84,r=50,c=new H,p=new Float32Array(o*3*3),d=new Float32Array(o*3*3),w=new P;for(let n=0;n<o;n++){const F=g+n*r,v=e.getFloat32(F,!0),L=e.getFloat32(F+4,!0),R=e.getFloat32(F+8,!0);if(a){const l=e.getUint16(F+48,!0);(l&32768)===0?(s=(l&31)/31,f=(l>>5&31)/31,i=(l>>10&31)/31):(s=B,f=A,i=S)}for(let l=1;l<=3;l++){const E=F+l*12,u=n*3*3+(l-1)*3;p[u]=e.getFloat32(E,!0),p[u+1]=e.getFloat32(E+4,!0),p[u+2]=e.getFloat32(E+8,!0),d[u]=v,d[u+1]=L,d[u+2]=R,a&&(w.setRGB(s,f,i,_),m[u]=w.r,m[u+1]=w.g,m[u+2]=w.b)}}return c.setAttribute("position",new G(p,3)),c.setAttribute("normal",new G(d,3)),a&&(c.setAttribute("color",new G(m,3)),c.hasColors=!0,c.alpha=U),c}function b(t){const e=new H,o=/solid([\s\S]*?)endsolid/g,s=/facet([\s\S]*?)endfacet/g,f=/solid\s(.+)/;let i=0;const a=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,m=new RegExp("vertex"+a+a+a,"g"),B=new RegExp("normal"+a+a+a,"g"),A=[],S=[],U=[],g=new k;let r,c=0,p=0,d=0;for(;(r=o.exec(t))!==null;){p=d;const w=r[0],n=(r=f.exec(w))!==null?r[1]:"";for(U.push(n);(r=s.exec(w))!==null;){let L=0,R=0;const l=r[0];for(;(r=B.exec(l))!==null;)g.x=parseFloat(r[1]),g.y=parseFloat(r[2]),g.z=parseFloat(r[3]),R++;for(;(r=m.exec(l))!==null;)A.push(parseFloat(r[1]),parseFloat(r[2]),parseFloat(r[3])),S.push(g.x,g.y,g.z),L++,d++;R!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+i),L!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+i),i++}const F=p,v=d-p;e.userData.groupNames=U,e.addGroup(F,v,c),c++}return e.setAttribute("position",new N(A,3)),e.setAttribute("normal",new N(S,3)),e}function x(t){return typeof t!="string"?new TextDecoder().decode(t):t}function T(t){if(typeof t=="string"){const e=new Uint8Array(t.length);for(let o=0;o<t.length;o++)e[o]=t.charCodeAt(o)&255;return e.buffer||e}else return t}const C=T(h);return V(C)?y(C):b(x(h))}}export{q as STLLoader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{V as x,g as G,a0 as S,C as _,aB as H,aY as N}from"./three.module-D396a9Mn.js";import{dn as P}from"./index-GIL7oGEO.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 z=new x,M=new x;class st{modify(t,o){t=t.clone(),delete t.morphAttributes.position,delete t.morphAttributes.normal;const n=t.attributes;for(const i in n)i!=="position"&&i!=="uv"&&i!=="normal"&&i!=="tangent"&&i!=="color"&&t.deleteAttribute(i);t=P(t);const l=[],s=[],p=t.getAttribute("position"),c=t.getAttribute("uv"),b=t.getAttribute("normal"),h=t.getAttribute("tangent"),A=t.getAttribute("color");let m=null,C=null,V=null,E=null;for(let i=0;i<p.count;i++){const r=new x().fromBufferAttribute(p,i);c&&(C=new G().fromBufferAttribute(c,i)),b&&(V=new x().fromBufferAttribute(b,i)),h&&(m=new S().fromBufferAttribute(h,i)),A&&(E=new _().fromBufferAttribute(A,i));const u=new K(r,C,V,m,E);l.push(u)}let a=t.getIndex();if(a!==null)for(let i=0;i<a.count;i+=3){const r=a.getX(i),u=a.getX(i+1),d=a.getX(i+2),B=new T(l[r],l[u],l[d],r,u,d);s.push(B)}else for(let i=0;i<p.count;i+=3){const r=i,u=i+1,d=i+2,B=new T(l[r],l[u],l[d],r,u,d);s.push(B)}for(let i=0,r=l.length;i<r;i++)X(l[i]);let w,k=o;for(;k--;){if(w=J(l),!w){console.log("THREE.SimplifyModifier: No next vertex");break}D(l,s,w,w.collapseNeighbor)}const f=new H,F=[],q=[],v=[],U=[],I=[];a=[];for(let i=0;i<l.length;i++){const r=l[i];F.push(r.position.x,r.position.y,r.position.z),r.uv&&q.push(r.uv.x,r.uv.y),r.normal&&v.push(r.normal.x,r.normal.y,r.normal.z),r.tangent&&U.push(r.tangent.x,r.tangent.y,r.tangent.z,r.tangent.w),r.color&&I.push(r.color.r,r.color.g,r.color.b),r.id=i}for(let i=0;i<s.length;i++){const r=s[i];a.push(r.v1.id,r.v2.id,r.v3.id)}return f.setAttribute("position",new N(F,3)),q.length>0&&f.setAttribute("uv",new N(q,2)),v.length>0&&f.setAttribute("normal",new N(v,3)),U.length>0&&f.setAttribute("tangent",new N(U,4)),I.length>0&&f.setAttribute("color",new N(I,3)),f.setIndex(a),f}}function R(e,t){e.indexOf(t)===-1&&e.push(t)}function g(e,t){const o=e.indexOf(t);o>-1&&e.splice(o,1)}function Y(e,t){const o=t.position.distanceTo(e.position);let n=0;const l=[];for(let c=0,b=e.faces.length;c<b;c++){const h=e.faces[c];h.hasVertex(t)&&l.push(h)}for(let c=0,b=e.faces.length;c<b;c++){let h=1;const A=e.faces[c];for(let m=0;m<l.length;m++){const C=l[m],V=A.normal.dot(C.normal);h=Math.min(h,(1.001-V)/2)}n=Math.max(n,h)}const s=0;return l.length<2&&(n=1),o*n+s}function X(e){if(e.neighbors.length===0){e.collapseNeighbor=null,e.collapseCost=-.01;return}e.collapseCost=1e5,e.collapseNeighbor=null;for(let t=0;t<e.neighbors.length;t++){const o=Y(e,e.neighbors[t]);e.collapseNeighbor||(e.collapseNeighbor=e.neighbors[t],e.collapseCost=o,e.minCost=o,e.totalCost=0,e.costCount=0),e.costCount++,e.totalCost+=o,o<e.minCost&&(e.collapseNeighbor=e.neighbors[t],e.minCost=o)}e.collapseCost=e.totalCost/e.costCount}function O(e,t){for(console.assert(e.faces.length===0);e.neighbors.length;){const o=e.neighbors.pop();g(o.neighbors,e)}g(t,e)}function j(e,t){g(t,e),e.v1&&g(e.v1.faces,e),e.v2&&g(e.v2.faces,e),e.v3&&g(e.v3.faces,e);const o=[e.v1,e.v2,e.v3];for(let n=0;n<3;n++){const l=o[n],s=o[(n+1)%3];!l||!s||(l.removeIfNonNeighbor(s),s.removeIfNonNeighbor(l))}}function D(e,t,o,n){if(!n){O(o,e);return}n.uv&&o.uv.copy(n.uv),n.normal&&n.normal.add(o.normal).normalize(),n.tangent&&n.tangent.add(o.tangent).normalize();const l=[];for(let s=0;s<o.neighbors.length;s++)l.push(o.neighbors[s]);for(let s=o.faces.length-1;s>=0;s--)o.faces[s]&&o.faces[s].hasVertex(n)&&j(o.faces[s],t);for(let s=o.faces.length-1;s>=0;s--)o.faces[s].replaceVertex(o,n);O(o,e);for(let s=0;s<l.length;s++)X(l[s])}function J(e){let t=e[0];for(let o=0;o<e.length;o++)e[o].collapseCost<t.collapseCost&&(t=e[o]);return t}class T{constructor(t,o,n,l,s,p){this.a=l,this.b=s,this.c=p,this.v1=t,this.v2=o,this.v3=n,this.normal=new x,this.computeNormal(),t.faces.push(this),t.addUniqueNeighbor(o),t.addUniqueNeighbor(n),o.faces.push(this),o.addUniqueNeighbor(t),o.addUniqueNeighbor(n),n.faces.push(this),n.addUniqueNeighbor(t),n.addUniqueNeighbor(o)}computeNormal(){const t=this.v1.position,o=this.v2.position,n=this.v3.position;z.subVectors(n,o),M.subVectors(t,o),z.cross(M).normalize(),this.normal.copy(z)}hasVertex(t){return t===this.v1||t===this.v2||t===this.v3}replaceVertex(t,o){t===this.v1?this.v1=o:t===this.v2?this.v2=o:t===this.v3&&(this.v3=o),g(t.faces,this),o.faces.push(this),t.removeIfNonNeighbor(this.v1),this.v1.removeIfNonNeighbor(t),t.removeIfNonNeighbor(this.v2),this.v2.removeIfNonNeighbor(t),t.removeIfNonNeighbor(this.v3),this.v3.removeIfNonNeighbor(t),this.v1.addUniqueNeighbor(this.v2),this.v1.addUniqueNeighbor(this.v3),this.v2.addUniqueNeighbor(this.v1),this.v2.addUniqueNeighbor(this.v3),this.v3.addUniqueNeighbor(this.v1),this.v3.addUniqueNeighbor(this.v2),this.computeNormal()}}class K{constructor(t,o,n,l,s){this.position=t,this.uv=o,this.normal=n,this.tangent=l,this.color=s,this.id=-1,this.faces=[],this.neighbors=[],this.collapseCost=0,this.collapseNeighbor=null}addUniqueNeighbor(t){R(this.neighbors,t)}removeIfNonNeighbor(t){const o=this.neighbors,n=this.faces,l=o.indexOf(t);if(l!==-1){for(let s=0;s<n.length;s++)if(n[s].hasVertex(t))return;o.splice(l,1)}}}export{st as SimplifyModifier};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as g}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{kB as he,ao as h,kC as Re,kD as ge,hs as Fe,bm as ee,kE as ze,kF as Ne,V as Ue,kG as Oe,kH as _e,b0 as ye,kI as Ie,b2 as K,b3 as xe,b4 as L,cS as J,b5 as U,aV as be,eb as te,jk as He,em as Be,jp as Ve,aF as Ge}from"./index-GIL7oGEO.js";import{J as We,C as Xe,c as qe}from"./JsonAssetDocument-C7VGcLhu.js";import{AudioViewer as Ze}from"./AudioViewer-CR7333fe.js";import{EnvironmentAssetDocument as Ke}from"./EnvironmentAssetDocument-Dg-Qq6O6.js";import{ImageViewer as Je}from"./ImageViewer-Tn7s_MnW.js";import{O as Qe}from"./Object3DDocumentViewport-DB7T0NTl.js";import{STANDARD_COMPONENT_CAMERA_DIRECTION as Ye}from"./standard-viewport-dressing-CzjAe_0A.js";import{RootDocumentContent as Pe,activeRootDocumentHost as et}from"./world-documents-147tiFZe.js";import{aX as tt,u as rt,ak as nt,a7 as G,al as ot,V as O,aj as it,k as re,am as W,W as ve,j as Y,v as st,w as we,C as _,x as je,bF as at,D as lt,F as X,H as Se,B as Ee,y as ke,M as Me,h as ct,ap as ut,aF as dt,a as pt,g as Ce,a0 as Te,aE as ft,i as mt,R as ht,a5 as gt}from"./three.module-D396a9Mn.js";import{EffectComposer as yt,LUT3DEffect as xt,RenderPass as bt,EffectPass as vt}from"./index-BcCBqgM_.js";import{s as Q}from"./asset-editor-persistence-BBaONOJt.js";import{ModelAssetDocument as wt}from"./ModelAssetDocument-F5GACirk.js";import{C as jt}from"./ColorInput-DQBNrW-K.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.quarks.esm-B1C61jGo.js";import"./project-provenance-BoP3nrle.js";import"./StageHost-BN-IoTef.js";import"./stage-invalidation-DBg3C3Ta.js";import"./live-gesture-lock-DJbrjOqf.js";import"./viewport-shading-boundary-B_-_gABg.js";import"./clip-planes-CnAI6DZn.js";import"./three-CDSueJyJ.js";import"./viewport-pick-context-DkawXbEi.js";import"./OrbitControls-CM3bPray.js";import"./LineSegments2-CsOpKSiM.js";import"./scene-framing-Cat0GtyJ.js";import"./source-object3d-authoring-adapter-B-L6Ha6f.js";import"./three-projection-core-BmKMZ-nf.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./viewport-surface-status-B3om4Kcf.js";import"./EXRLoader-Cdans_oJ.js";import"./fflate.module-DPuTF8aG.js";import"./HDRLoader-THU88oVD.js";import"./design-time-layers-wYgOTgni.js";import"./edit-mode-authoring-B47TfLqu.js";import"./design-time-mount-registry-DUpXCg1U.js";import"./react-story-board-BDDwiE2H.js";import"./CanvasSceneViewport-Bpi6gVTC.js";import"./RootSelectionOverlay-BZPlxmXU.js";import"./eyedropper-session-bjPXnfeX.js";import"./inspect-BZfi3mmo.js";import"./inference-diagnostics-Dhmtfbq_.js";import"./TransientHint-BB1fwrvK.js";import"./component-board-registry-DrIa2csL.js";import"./surface-state-DaxyruCj.js";import"./board-guides-DziKSTss.js";class N extends Error{constructor(t){super(t.message),this.refusal=t,this.name="LiveModuleError"}}function St(e){return Object.keys(e).filter(t=>t!=="__esModule"&&t!=="Symbol.toStringTag")}function ne(e){return typeof e=="object"&&e!==null&&e.isObject3D===!0}function Et(e){if("default"in e)return{name:"default",value:e.default};const t=St(e);return t.length===0?{kind:"not-a-model",message:"This module exports nothing."}:t.length>1?{kind:"not-a-model",message:`This module has no default export and ${t.length} named exports (${t.join(", ")}), so there is no single subject to build. A model module default-exports its builder.`}:{name:t[0],value:e[t[0]]}}function oe(e){if(ne(e))return{root:e};if(!e||typeof e!="object")return;const t=e;if(!ne(t.root))return;const r=t.root;return Array.isArray(t.animations)&&r.animations.length===0&&(r.animations=t.animations),{root:r,...typeof t.dispose=="function"?{dispose:()=>t.dispose.call(e)}:{}}}function ie(e){if(e===void 0)return"undefined";if(e===null)return"null";if(typeof e!="object")return typeof e;if(Array.isArray(e))return"an array";const t=Object.keys(e);return t.length>0?`an object with keys ${t.slice(0,8).join(", ")}`:"an object with no own keys"}const se="a model module returns a THREE.Object3D, or a build result `{ root, animations?, dispose? }` whose `root` is one.";async function kt(e,t){const r=oe(t);if(r)return{...r,exportName:e};if(typeof t!="function")return{kind:"not-a-model",message:`Export '${e}' is ${ie(t)}, not a function and not a model — `+se};let n;try{n=await t()}catch(i){return{kind:"import-failed",message:`Export '${e}' threw while building: ${$e(i)}`,...i instanceof Error&&i.stack?{stack:i.stack}:{}}}const s=oe(n);return s?{...s,exportName:e}:{kind:"not-a-model",message:`Export '${e}' ran but returned ${ie(n)} — ${se}`}}function $e(e){return e instanceof Error?e.message:String(e)}async function Mt(e,t,r){let n;try{n=await import(he(e,t,r))}catch(l){throw new N({kind:"import-failed",message:$e(l),...l instanceof Error&&l.stack?{stack:l.stack}:{}})}const s=Et(n);if("kind"in s)throw new N(s);const i=await kt(s.name,s.value);if("kind"in i)throw new N(i);return i}const Ct="data-vgai-pasteboard";function Tt(e){let t=e;for(let r=0;r<12;r++){if(!t||typeof t!="object")return!1;const n=t;if(typeof n.type=="string")return n.props?.[Ct]==="true";if(typeof n.type=="function"){try{t=n.type(n.props??{})}catch{return!1}continue}return!1}return!1}async function $t(e,t,r){let n;try{n=await import(he(e,t,r))}catch{return!1}const s=n.default;if(typeof s!="function")return!1;let i;try{i=s({})}catch{return!1}return Tt(i)}function Lt({documentId:e,active:t,modulePath:r}){const n=et(),s=g.useMemo(()=>({worldId:`pasteboard:${r}`,kind:"dom",path:r,zOrder:0,pausable:!1,entryOnly:!0}),[r]);return n?o.jsx("div",{style:{position:"relative",height:"100%",width:"100%"},children:o.jsx(Pe,{documentId:e,active:t,composite:n.composite,descriptor:s,store:n.store})}):o.jsx("div",{style:{padding:20,color:h.content.muted},children:"This pasteboard needs the project session's root-document host, which is not installed yet. Reopen the file once the project finishes loading."})}const ae={height:"100%",width:"100%",minHeight:0,display:"flex",position:"relative"},le={flex:1,minWidth:0,minHeight:0,display:"flex"};function At(e,t){if(e.kind!=="import-failed")return{message:e.message};const r=_e(t);return r?{message:r,stack:e.message}:{message:e.message,stack:e.stack}}function Dt({documentId:e,projectRoot:t,modulePath:r,displayName:n,active:s,fallback:i}){const[l,a]=g.useState({status:"probing"}),[y,c]=g.useState(null),p=g.useMemo(()=>{const f=new tt;return f.name=r.split("/").pop()??r,f},[r]),u=g.useRef(!1);g.useEffect(()=>{let f=!1,v=0,d=null,m=Promise.resolve(),E=null,j=null;const S=()=>{d&&(p.remove(d),p.animations=[],j?j():ee(d),d=null,j=null)},k=(w,M)=>{S(),d=w,j=M,p.add(w),p.animations=w.animations,Oe(e)},$=(w,M)=>{if(w.kind==="not-a-model"&&!M){a({status:"fallback",reason:w.message});return}const C=At(w,r);c(C),Ue.error(`${r}: ${C.message}`,"live-module"),M||a({status:"fallback",reason:w.message})},D=w=>f||w!==v,B=async()=>{v+=1;const w=v,M=Ne();let C;try{C=await Mt(t,r,M)}catch(A){if(D(w))return;if(!(A instanceof N))throw A;if(A.refusal.kind==="not-a-model"&&d===null){const V=await $t(t,r,M);if(D(w))return;if(V){c(null),a({status:"pasteboard"});return}}E=A,$(A.refusal,d!==null);return}if(D(w)){C.dispose?C.dispose():ee(C.root);return}k(C.root,C.dispose??null),E=null,ze(r),c(null),a({status:"live",exportName:C.exportName})},F=()=>(m=B(),m),x=Re(e,async()=>{let w=F();for(;;){if(await w,f)throw new Error(`Document closed while rebuilding: ${r}`);if(w===m)break;w=m}if(E)throw E});F();const T=ge();return()=>{f=!0,x(),T(),S()}},[p,e,r,t]),g.useEffect(()=>{if(l.status!=="live"||u.current)return;let f=0,v=0;const d=()=>{const m=Fe(e);if(m){u.current=!0,new rt().setFromObject(p).isEmpty()||m.frame();return}++v>60||(f=requestAnimationFrame(d))};return f=requestAnimationFrame(d),()=>cancelAnimationFrame(f)},[p,e,l.status]);const b=g.useCallback(()=>({root:p,dispose(){}}),[p]);return l.status==="probing"?o.jsxs("div",{style:{padding:20,color:h.content.muted},children:["Inspecting ",n,"…"]}):l.status==="pasteboard"?o.jsx(Lt,{documentId:e,active:s,modulePath:r}):l.status==="fallback"?o.jsxs("div",{style:ae,children:[y?o.jsx(ce,{failure:y}):null,o.jsx("div",{style:{...le,overflow:"auto"},children:i})]}):o.jsxs("div",{style:ae,children:[o.jsx("div",{style:{...le,opacity:y?.35:1},children:o.jsx(Qe,{documentId:e,sourcePath:r,displayName:n,build:b,active:s,assetType:"model module",cameraDirection:Ye,modelSource:{kind:"project-file",path:r}})}),y?o.jsx(ce,{failure:y}):null]})}function ce({failure:e}){return o.jsxs("div",{role:"alert","data-testid":"live-module-error",style:{position:"absolute",top:8,left:8,right:8,zIndex:2,maxHeight:"60%",overflow:"auto",padding:"8px 10px",borderRadius:h.shape.small,background:h.surface.raised,border:`1px solid ${h.semantic.danger}`,color:h.semantic.danger,fontFamily:h.typography.mono,fontSize:11,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word",pointerEvents:"auto"},children:[o.jsx("div",{style:{fontWeight:600},children:"This module did not build — showing the last good model."}),o.jsx("div",{style:{marginTop:4},children:e.message}),e.stack?o.jsx("div",{style:{marginTop:6,color:h.content.muted},children:e.stack}):null]})}class Rt extends nt{constructor(t){super(t),this.type=G}setType(t){return this.type=t,this}load(t,r,n,s){const i=new ot(this.manager);i.setPath(this.path),i.setResponseType("text"),i.load(t,l=>{try{r(this.parse(l))}catch(a){s?s(a):console.error(a),this.manager.itemError(t)}},n,s)}parse(t){const r=/TITLE +"([^"]*)"/,n=/LUT_3D_SIZE +(\d+)/,s=/DOMAIN_MIN +([\d.]+) +([\d.]+) +([\d.]+)/,i=/DOMAIN_MAX +([\d.]+) +([\d.]+) +([\d.]+)/,l=/^([\d.e+-]+) +([\d.e+-]+) +([\d.e+-]+) *$/gm;let a=r.exec(t);const y=a!==null?a[1]:null;if(a=n.exec(t),a===null)throw new Error("LUTCubeLoader: Missing LUT_3D_SIZE information");const c=Number(a[1]),p=c**3*4,u=this.type===G?new Uint8Array(p):new Float32Array(p),b=new O(0,0,0),f=new O(1,1,1);if(a=s.exec(t),a!==null&&b.set(Number(a[1]),Number(a[2]),Number(a[3])),a=i.exec(t),a!==null&&f.set(Number(a[1]),Number(a[2]),Number(a[3])),b.x>f.x||b.y>f.y||b.z>f.z)throw new Error("LUTCubeLoader: Invalid input domain");const v=this.type===G?255:1;let d=0;for(;(a=l.exec(t))!==null;)u[d++]=Number(a[1])*v,u[d++]=Number(a[2])*v,u[d++]=Number(a[3])*v,u[d++]=v;const m=new it;return m.image.data=u,m.image.width=c,m.image.height=c,m.image.depth=c,m.type=this.type,m.magFilter=re,m.minFilter=re,m.wrapS=W,m.wrapT=W,m.wrapR=W,m.generateMipmaps=!1,m.needsUpdate=!0,{title:y,size:c,domainMin:b,domainMax:f,texture3D:m}}}function z(e){return e.split("/").pop()??e}function I(e,t,r){return Math.min(r,Math.max(t,e))}function ue(e){return[e.x,e.y,e.z].map(t=>t.toFixed(2)).join(", ")}function Ft(){const e=new we;e.background=new _("#171a22");const t=new je(34,1,.1,100);t.position.set(6.6,4.6,8.8),t.lookAt(0,.7,0),e.add(new at("#dce8ff","#322a27",2.1));const r=new lt("#fff3db",3.8);r.position.set(4,7,5),e.add(r);const n=[],s=[],i=(c,p,u)=>{n.push(c),s.push(p);const b=new Me(c,p);return b.position.set(...u),b.castShadow=!0,b.receiveShadow=!0,e.add(b),b},l=[["#e64d45",-2.4],["#e5ad42",-1.2],["#55b86a",0],["#47a9d8",1.2],["#8a68d7",2.4]];for(const[c,p]of l)i(new Se(.48,48,32),new X({color:c,roughness:.3,metalness:.08}),[p,.65,0]);[.06,.18,.5,.82,1].forEach((c,p)=>{const u=Math.round(c*255);i(new Ee(.78,.78,.78),new X({color:new _(`rgb(${u}, ${u}, ${u})`),roughness:.72}),[-2.4+p*1.2,1.85,-.1])});const y=i(new ke(9,6),new X({color:"#777b86",roughness:.92}),[0,.08,-1.8]);return y.rotation.x=-Math.PI/2,{scene:e,camera:t,dispose:()=>{for(const c of n)c.dispose();for(const c of s)c.dispose()}}}function zt({lut:e,settingsRef:t}){const r=g.useRef(null);return g.useEffect(()=>{const n=r.current;if(!n)return;let s=!1,i=0;const l=document.createElement("canvas");l.setAttribute("aria-label","LUT before and after preview"),l.style.width="100%",l.style.height="100%",l.style.display="block",n.replaceChildren(l);const a=new ve({canvas:l,antialias:!0});a.outputColorSpace=Y,a.toneMapping=st,a.toneMappingExposure=1,a.shadowMap.enabled=!0;const y=Ft(),c=new yt(a),p=new xt(e.texture3D,{tetrahedralInterpolation:!0});c.addPass(new bt(y.scene,y.camera)),c.addPass(new vt(y.camera,p));const u={width:1,height:1},b=()=>{const m=t.current,E=Math.round(u.width*I(m.split,.05,.95));p.blendMode.opacity.value=I(m.intensity,0,1),p.tetrahedralInterpolation=m.tetrahedral,a.setScissorTest(!1),a.setRenderTarget(null),a.clear(),a.setScissorTest(!0),a.setScissor(0,0,E,u.height),a.render(y.scene,y.camera),a.setScissor(E,0,u.width-E,u.height),c.render(),a.setScissorTest(!1)},f=()=>{const m=n.getBoundingClientRect();u.width=Math.max(1,Math.floor(m.width)),u.height=Math.max(1,Math.floor(m.height)),a.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),a.setSize(u.width,u.height,!1),c.setSize(u.width,u.height),y.camera.aspect=u.width/u.height,y.camera.updateProjectionMatrix()};f(),b();const v=new ResizeObserver(()=>{f(),b()});v.observe(n);const d=()=>{s||(b(),i=requestAnimationFrame(d))};return i=requestAnimationFrame(d),()=>{s=!0,cancelAnimationFrame(i),v.disconnect(),c.dispose(),p.dispose(),y.dispose(),a.dispose(),l.remove()}},[e,t]),o.jsx("div",{ref:r,"data-testid":"lut-preview",style:{width:"100%",height:"100%",minHeight:260,background:"#171a22"}})}function Nt({settings:e,onChange:t}){return o.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Intensity",o.jsx(U,{value:e.intensity,onChange:r=>t({...e,intensity:I(r,0,1)}),step:.01,precision:2})]}),o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Comparison split",o.jsx(U,{value:e.split,onChange:r=>t({...e,split:I(r,.05,.95)}),step:.01,precision:2})]}),o.jsxs("label",{style:{display:"flex",alignItems:"center",gap:7,fontSize:11},children:[o.jsx(be,{checked:e.tetrahedral,onChange:r=>t({...e,tetrahedral:r.target.checked})}),"Tetrahedral interpolation"]}),o.jsx("div",{style:{color:h.content.muted,fontSize:10,lineHeight:1.45},children:"Preview controls are session-only. Bind the LUT and accepted intensity in the owning TSX post-processing composition."})]})}async function Ut(e){const t=await J(e);if(t===null)throw new Error(`CUBE LUT not found: ${e}`);return new Rt().parse(t)}function Ot({documentId:e,assetPath:t,active:r=!0}){const[n,s]=g.useState(0),[i,l]=g.useState(null),[a,y]=g.useState(null),[c,p]=g.useState({intensity:1,split:.5,tetrahedral:!0}),u=g.useRef(c);u.current=c,g.useEffect(()=>{if(r)return Q(t,()=>s(f=>f+1))},[r,t]),g.useEffect(()=>{if(!r)return;let f=!1,v=null;return l(null),y(null),Ut(t).then(d=>{if(v=d,f){d.texture3D.dispose();return}l(d)},d=>{f||y(d instanceof Error?d.message:String(d))}),()=>{f=!0,v?.texture3D.dispose()}},[r,t,n]);const b=g.useMemo(()=>[{id:"lut-profile",title:"Color Grade",icon:Ie,order:ye,body:{kind:"custom",...i?{data:{title:i.title,size:i.size,domainMin:i.domainMin.toArray(),domainMax:i.domainMax.toArray()}}:{},render:()=>o.jsxs("div",{style:{display:"grid",gridTemplateColumns:"auto 1fr",gap:"6px 10px"},children:[o.jsx("span",{style:{color:h.content.muted},children:"Title"}),o.jsx("span",{children:i?.title||z(t)}),o.jsx("span",{style:{color:h.content.muted},children:"Cube"}),o.jsx("span",{children:i?`${i.size}³`:"—"}),o.jsx("span",{style:{color:h.content.muted},children:"Domain"}),o.jsx("span",{children:i?`${ue(i.domainMin)} → ${ue(i.domainMax)}`:"—"})]})}},{id:"lut-preview-settings",title:"Preview",icon:xe,order:K,body:{kind:"custom",data:{...c},render:()=>o.jsx(Nt,{settings:c,onChange:p})}}],[t,i,c]);return a?o.jsx(L,{documentId:e,active:r,type:"color grade",title:z(t),status:"CUBE LUT unavailable",children:o.jsx("div",{role:"alert",style:{padding:20,color:h.semantic.danger},children:a})}):i?o.jsx(L,{documentId:e,active:r,type:"color grade",title:z(t),sections:b,status:`CUBE LUT · ${i.size}³`,fill:!0,children:o.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",minHeight:0,background:"#171a22"},children:[o.jsx(zt,{lut:i,settingsRef:u}),o.jsx("div",{style:{position:"absolute",left:12,top:12,padding:"4px 7px",borderRadius:4,background:"rgba(12,14,20,0.72)",color:"#f2f4f8",fontSize:10,pointerEvents:"none"},children:"Original"}),o.jsx("div",{style:{position:"absolute",right:12,top:12,padding:"4px 7px",borderRadius:4,background:"rgba(12,14,20,0.72)",color:"#f2f4f8",fontSize:10,pointerEvents:"none"},children:i.title||"Graded"})]})}):o.jsx(L,{documentId:e,active:r,type:"color grade",title:z(t),status:"Loading CUBE LUT",children:o.jsx("div",{style:{padding:20,color:h.content.muted},children:"Loading color grade…"})})}const _t=[".vert",".vert.glsl"],It=[".frag",".frag.glsl"];function Ht(e){return e.split(/[?#]/,1)[0].toLowerCase()}function Bt(e,t=""){const r=Ht(e);return _t.some(n=>r.endsWith(n))?"vertex":It.some(n=>r.endsWith(n))?"fragment":/\bgl_Position\b/.test(t)?"vertex":"fragment"}function Le(e){const t=e.split(/[?#]/,1)[0];return/\.vert\.glsl$/i.test(t)?t.replace(/\.vert\.glsl$/i,".frag.glsl"):/\.frag\.glsl$/i.test(t)?t.replace(/\.frag\.glsl$/i,".vert.glsl"):/\.vert$/i.test(t)?t.replace(/\.vert$/i,".frag"):/\.frag$/i.test(t)?t.replace(/\.frag$/i,".vert"):null}function Vt(e){return e.replace(/\/\*[\s\S]*?\*\//g,t=>t.replace(/[^\n]/g," ")).replace(/\/\/[^\n]*/g,"")}function de(e,t){const r=[],n=/\buniform\s+(?:(?:lowp|mediump|highp)\s+)?([A-Za-z_]\w*)\s+([A-Za-z_]\w*)\s*(?:\[\s*(\d+)\s*\])?\s*;/g;for(const s of Vt(e).matchAll(n)){const i=s[1],l=s[2];if(!i||!l)continue;const a=s[3]?Number.parseInt(s[3],10):void 0;r.push({name:l,type:i,...a?{arraySize:a}:{},stages:[t]})}return r}function Gt(e,t){const r=new Map;for(const n of[...de(e,"vertex"),...de(t,"fragment")]){const s=r.get(n.name);if(!s){r.set(n.name,n);continue}r.set(n.name,{...s,stages:[...new Set([...s.stages,...n.stages])]})}return[...r.values()]}function q(e,t){const r=e.split(`
|
|
2
|
-
`).map(n=>Wt(n.trim(),t)).filter(n=>n!==null);return r.length===0&&e.trim()&&r.push({stage:t,severity:"error",message:e.trim()}),r}function Wt(e,t){if(!e)return null;const r=e.match(/^(ERROR|WARNING):\s*\d+:(\d+)(?::|\((\d+)\):)\s*(.*)$/i);if(r)return{stage:t,severity:r[1].toLowerCase()==="warning"?"warning":"error",line:Number.parseInt(r[2],10),...r[3]?{column:Number.parseInt(r[3],10)}:{},message:r[4]||e};const n=e.match(/^\d+:(\d+)\((\d+)\):\s*(?:(error|warning)\s*:?)?\s*(.*)$/i);return n?{stage:t,severity:n[3]?.toLowerCase()==="warning"?"warning":"error",line:Number.parseInt(n[1],10),column:Number.parseInt(n[2],10),message:n[4]||e}:null}function pe(e){return`#line 1
|
|
3
|
-
${e}`}const Xt=`varying vec2 vUv;
|
|
4
|
-
|
|
5
|
-
void main() {
|
|
6
|
-
vUv = uv;
|
|
7
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
8
|
-
}`,qt=`varying vec2 vUv;
|
|
9
|
-
|
|
10
|
-
void main() {
|
|
11
|
-
gl_FragColor = vec4(vUv, 0.55, 1.0);
|
|
12
|
-
}`;function Z(e,t=null){return{path:t,source:e==="vertex"?Xt:qt,available:!1}}function R(e){return e?.split("/").pop()??"Preview fallback"}function P(e){return e.type==="vec3"&&/(colou?r|tint|albedo|emissive)/i.test(e.name)}function Ae(e){return/^(u|i)?time$/i.test(e.name)&&/^(float|double)$/.test(e.type)?"time":/^(u|i)?resolution$/i.test(e.name)&&/^([diu]?vec)[234]$/.test(e.type)?"resolution":/^(u|i)?mouse$/i.test(e.name)&&/^([diu]?vec)[234]$/.test(e.type)?"mouse":null}function H(e){if(P(e))return/horizon/i.test(e.name)?"#badbe9":/zenith/i.test(e.name)?"#297aba":/sun/i.test(e.name)?"#fff0c2":"#6f8cff";if(e.type==="bool")return!1;if(/^(float|double|int|uint)$/.test(e.type))return 0;const t=e.type.match(/^(?:[biu]?vec)([234])$/);return t?Array.from({length:Number.parseInt(t[1],10)},()=>0):0}function Zt(){const e=new Uint8Array([38,43,58,255,176,190,255,255,176,190,255,255,38,43,58,255]),t=new mt(e,2,2,ht);return t.colorSpace=Y,t.magFilter=gt,t.needsUpdate=!0,t}function De(e,t,r){if(e.arraySize){const{arraySize:s,...i}=e;return Array.from({length:s},()=>De(i,t,r))}if(/^sampler2D/.test(e.type)){const s=Zt();return r.push(s),s}if(/^sampler/.test(e.type))return null;if(e.type==="mat3")return new dt;if(e.type==="mat4")return new pt;if(P(e))return new _(typeof t=="string"?t:"#6f8cff");const n=e.type.match(/^(?:[biu]?vec)([234])$/);if(n){const s=Array.isArray(t)?t:[],i=Number.parseInt(n[1],10);return i===2?new Ce(s[0]??0,s[1]??0):i===3?new O(s[0]??0,s[1]??0,s[2]??0):new Te(s[0]??0,s[1]??0,s[2]??0,s[3]??0)}return t}function Kt(e,t,r,n,s){const i=Ae(t);if(i==="time"){e.value=n;return}if(e.value instanceof _&&typeof r=="string"){e.value.set(r);return}const l=Array.isArray(r)?r:[];if(e.value instanceof Ce){e.value.set(i==="resolution"?s.width:l[0]??0,i==="resolution"?s.height:l[1]??0);return}if(e.value instanceof O){e.value.set(i==="resolution"?s.width:l[0]??0,i==="resolution"?s.height:l[1]??0,i==="resolution"?1:l[2]??0);return}if(e.value instanceof Te){e.value.set(i==="resolution"?s.width:l[0]??0,i==="resolution"?s.height:l[1]??0,i==="resolution"?1:l[2]??0,l[3]??0);return}i!=="mouse"&&!t.arraySize&&!/^sampler|^mat/.test(t.type)&&(e.value=r)}function Jt(e){return e==="box"?new Ee(1.35,1.35,1.35,48,48,48):e==="plane"?new ke(2.2,2.2,96,96):new Se(.95,96,64)}function Qt({vertexSource:e,fragmentSource:t,descriptors:r,valuesRef:n,geometry:s,onDiagnostics:i}){const l=g.useRef(null);return g.useEffect(()=>{const a=l.current;if(!a)return;let y=!1,c=0;const p=document.createElement("canvas");p.setAttribute("aria-label","Live shader preview"),p.style.width="100%",p.style.height="100%",p.style.display="block",a.replaceChildren(p);let u;try{u=new ve({canvas:p,antialias:!0,alpha:!1})}catch(x){i([{stage:"program",severity:"error",message:x instanceof Error?x.message:String(x)}]);return}u.outputColorSpace=Y,u.setClearColor(1119261,1),u.debug.checkShaderErrors=!0;const b=new we,f=new je(38,1,.01,100);f.position.set(0,0,3.4);const v=[],d={};for(const x of r)d[x.name]={value:De(x,n.current[x.name]??H(x),v)};const m=new ct({vertexShader:pe(e),fragmentShader:pe(t),uniforms:d,side:ut,toneMapped:!1}),E=Jt(s),j=new Me(E,m);b.add(j);const S=[];u.debug.onShaderError=(x,T,w,M)=>{const C=T,A=w,V=M;S.push(...q(x.getProgramInfoLog(C)??"","program"),...q(x.getShaderInfoLog(A)??"","vertex"),...q(x.getShaderInfoLog(V)??"","fragment"))};const k={width:1,height:1},$=()=>{const x=a.getBoundingClientRect();k.width=Math.max(1,Math.floor(x.width)),k.height=Math.max(1,Math.floor(x.height)),u.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),u.setSize(k.width,k.height,!1),f.aspect=k.width/k.height,f.position.z=3.4/Math.min(1,f.aspect),f.updateProjectionMatrix()};$();const D=new ResizeObserver($);D.observe(a);const B=new ft;try{u.compile(b,f),u.render(b,f),i(S.filter((x,T,w)=>w.findIndex(M=>M.stage===x.stage&&M.line===x.line&&M.message===x.message)===T))}catch(x){i([{stage:"program",severity:"error",message:x instanceof Error?x.message:String(x)}])}const F=()=>{if(y)return;const x=B.getElapsedTime();for(const T of r){const w=d[T.name];w&&Kt(w,T,n.current[T.name]??H(T),x,k)}s!=="plane"&&(j.rotation.y=x*.18,j.rotation.x=Math.sin(x*.22)*.08),u.render(b,f),c=requestAnimationFrame(F)};return c=requestAnimationFrame(F),()=>{y=!0,cancelAnimationFrame(c),D.disconnect(),u.debug.onShaderError=null,E.dispose(),m.dispose();for(const x of v)x.dispose();u.dispose(),p.remove()}},[r,t,s,i,n,e]),o.jsx("div",{ref:l,"data-testid":"shader-preview",style:{width:"100%",height:"100%",minHeight:240,background:"#11141d"}})}function Yt({descriptors:e,values:t,onChange:r}){return e.length===0?o.jsx("div",{style:{color:h.content.muted},children:"No uniform declarations found."}):o.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[e.map(n=>o.jsx(Pt,{uniform:n,value:t[n.name]??H(n),onChange:s=>r(n.name,s)},n.name)),o.jsx("div",{style:{color:h.content.muted,fontSize:10,lineHeight:1.4},children:"Preview values are session-only. Author runtime defaults beside the ShaderMaterial in TS/TSX."})]})}function Pt({uniform:e,value:t,onChange:r}){const n=Ae(e),s=e.type.match(/^(?:[biu]?vec)([234])$/);let i;return n?i=o.jsxs("div",{style:{color:h.content.muted,fontSize:10},children:["Driven by preview ",n]}):P(e)?i=o.jsx(jt,{value:typeof t=="string"?t:"#6f8cff",onChange:r}):e.type==="bool"?i=o.jsxs("label",{style:{display:"flex",alignItems:"center",gap:7,fontSize:11},children:[o.jsx(be,{checked:!!t,onChange:l=>r(l.target.checked)}),t?"True":"False"]}):/^(float|double|int|uint)$/.test(e.type)?i=o.jsx(U,{value:typeof t=="number"?t:0,onChange:r,step:e.type==="int"||e.type==="uint"?1:.01,precision:e.type==="int"||e.type==="uint"?0:3}):s&&Array.isArray(t)?i=o.jsx("div",{style:{display:"grid",gridTemplateColumns:`repeat(${s[1]}, minmax(0, 1fr))`,gap:4},children:t.map((l,a)=>o.jsx(U,{value:l,label:"xyzw"[a],onChange:y=>{const c=[...t];c[a]=y,r(c)},step:.01},`${e.name}:${a}`))}):i=o.jsx("div",{style:{color:h.content.muted,fontSize:10},children:"Reflected for runtime binding; no scalar preview control."}),o.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5},children:[o.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:8},children:[o.jsx("span",{style:{color:h.content.primary,fontSize:11},children:e.name}),o.jsx("span",{style:{color:h.content.muted,fontSize:10},children:e.type})]}),i]})}function fe({diagnostics:e,files:t}){return e.length===0?o.jsx("div",{style:{color:h.semantic.success,fontSize:11,padding:4},children:"Shader program compiled successfully."}):o.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6,padding:4},children:e.map((r,n)=>{const s=r.stage==="program"?null:t[r.stage];return o.jsxs("div",{style:{color:r.severity==="warning"?h.semantic.warning:h.semantic.danger,fontSize:10,lineHeight:1.45},children:[s?.available?R(s.path):r.stage,r.line?`:${r.line}${r.column?`:${r.column}`:""}`:""," · ",r.message]},`${r.stage}:${r.line??0}:${r.message}:${n}`)})})}async function er(e){const t=await J(e);if(t===null)throw new Error(`Could not read ${e}.`);const r=Bt(e,t),n=Le(e),s=n?await J(n):null,i={vertex:Z("vertex"),fragment:Z("fragment")};i[r]={path:e,source:t,available:!0};const l=r==="vertex"?"fragment":"vertex";return i[l]=s===null?Z(l,n):{path:n,source:s,available:!0},i}function tr({documentId:e,assetPath:t,active:r=!0}){const[n,s]=g.useState(null),[i,l]=g.useState(0),[a,y]=g.useState("sphere"),[c,p]=g.useState([]),[u,b]=g.useState({}),[f,v]=g.useState(null);g.useEffect(()=>{if(!r)return;const j=()=>l($=>$+1),S=Le(t),k=[Q(t,j),...S?[Q(S,j)]:[]];return()=>{for(const $ of k)$()}},[r,t]),g.useEffect(()=>{if(!r)return;let j=!1;return s(null),v(null),er(t).then(S=>{j||s(S)},S=>{j||v(S instanceof Error?S.message:String(S))}),()=>{j=!0}},[r,t,i]);const d=g.useMemo(()=>n?Gt(n.vertex.source,n.fragment.source):[],[n]);g.useEffect(()=>{b(j=>Object.fromEntries(d.map(S=>[S.name,j[S.name]??H(S)])))},[d]);const m=g.useRef(u);m.current=u;const E=g.useMemo(()=>[{id:"shader-pair",title:"Shader Pair",icon:te,order:ye,body:{kind:"custom",render:()=>o.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5,padding:4,fontSize:10},children:[o.jsxs("span",{children:["Vertex · ",n?R(n.vertex.path):"Loading…",n&&!n.vertex.available?" (preview fallback)":""]}),o.jsxs("span",{children:["Fragment · ",n?R(n.fragment.path):"Loading…",n&&!n.fragment.available?" (preview fallback)":""]}),o.jsx("span",{style:{color:h.content.muted},children:"Ordinary sibling GLSL files; runtime composition stays in TS/TSX."})]})}},{id:"shader-uniforms",title:"Uniforms",icon:xe,order:K,description:`${d.length} reflected`,body:{kind:"custom",data:Object.fromEntries(d.map(j=>[j.name,u[j.name]])),render:()=>o.jsx(Yt,{descriptors:d,values:u,onChange:(j,S)=>b(k=>({...k,[j]:S}))})}},{id:"shader-diagnostics",title:"Diagnostics",icon:c.length>0?He:te,order:K+100,description:c.length===0?"Compiled":`${c.length} issue${c.length===1?"":"s"}`,body:{kind:"custom",data:{diagnostics:c},render:()=>n&&o.jsx(fe,{diagnostics:c,files:n})}}],[d,c,n,u]);return f?o.jsx(L,{documentId:e,active:r,type:"shader",title:R(t),status:"Shader unavailable",children:o.jsx("div",{role:"alert",style:{padding:20,color:h.semantic.danger},children:f})}):n?o.jsx(L,{documentId:e,active:r,type:"shader",title:R(t),sections:E,status:c.length===0?`GLSL · compiles · ${d.length} uniforms`:`GLSL · ${c.length} compile issues`,fill:!0,children:o.jsxs("div",{style:{width:"100%",height:"100%",minHeight:0,position:"relative",background:h.surface.panel},children:[o.jsx(Qt,{vertexSource:n.vertex.source,fragmentSource:n.fragment.source,descriptors:d,valuesRef:m,geometry:a,onDiagnostics:p}),o.jsx("div",{style:{position:"absolute",left:10,top:10},children:o.jsxs(Be,{"aria-label":"Preview geometry",value:a,onChange:j=>y(j.target.value),children:[o.jsx("option",{value:"sphere",children:"Sphere"}),o.jsx("option",{value:"box",children:"Box"}),o.jsx("option",{value:"plane",children:"Plane"})]})}),c.length>0&&o.jsx("div",{style:{position:"absolute",left:12,right:12,bottom:12,maxHeight:120,overflow:"auto",padding:8,border:`1px solid ${h.semantic.danger}`,borderRadius:6,background:h.surface.overlay},children:o.jsx(fe,{diagnostics:c,files:n})})]})}):o.jsx(L,{documentId:e,active:r,type:"shader",title:R(t),status:"Loading GLSL",children:o.jsx("div",{style:{padding:20,color:h.content.muted},children:"Loading shader files…"})})}function rr(e){const t=(e.split(/[?#]/,1)[0]??"").replace(/^\//,"");return t.startsWith("src/")&&/\.(?:[cm]?[jt]sx?)$/.test(t)}function nr(e){const t=Ve(e);return t.editor==="model"?"model":t.editor==="image"?"image":t.editor==="audio"?"audio":t.editor==="data"?"json":t.editor==="environment"?"environment":t.format==="cube"?"lut":t.format==="glsl"||t.format==="vert"||t.format==="frag"?"shader":rr(e)?"module":t.editor==="source"&&t.previewable?"text":"binary"}function me({documentId:e,assetPath:t,active:r=!0}){const[n,s]=g.useState(null),[i,l]=g.useState(null),a=t.split("/").pop()??t;return g.useEffect(()=>{let y=!1;s(null),l(null);const c=t.replace(/^\//,"");let p=0;async function u(){const f=++p;try{const v=`/__editor/source-file?path=${encodeURIComponent(c)}`,d=await fetch(v,{cache:"no-store"}).then(m=>{if(!m.ok)throw new Error(`HTTP ${m.status}`);return m.text()});!y&&f===p&&(s(d),l(null))}catch(v){!y&&f===p&&l(v instanceof Error?v.message:String(v))}}const b=ge();return u(),()=>{y=!0,b()}},[t]),o.jsx(L,{documentId:e,active:r,type:"source",title:a,sections:[],status:`source · ${t}`,fill:!0,children:o.jsx("div",{style:{padding:12,height:"100%",minHeight:0,display:"flex",flexDirection:"column",gap:8},children:o.jsx("div",{style:{padding:8,flex:1,minHeight:0,display:"flex",overflow:"hidden",background:h.surface.inset,border:`1px solid ${h.boundary.default}`,borderRadius:h.shape.small},children:i!==null||n===null?o.jsx("div",{style:{fontFamily:h.typography.mono,fontSize:11,lineHeight:1.5,color:i?h.semantic.danger:h.content.muted,padding:4},children:i??"Loading…"}):o.jsx(Xe,{value:n,followChanges:!0,language:qe(t),fontSize:11,maxHeight:"100%",ariaLabel:`Source of ${t}`})})})})}function nn({documentId:e,assetPath:t,active:r=!0}){switch(nr(t)){case"model":return o.jsx(wt,{documentId:e,assetPath:t,displayName:t.split("/").pop()??t,active:r});case"image":return o.jsx(Je,{assetPath:t});case"audio":return o.jsx(Ze,{assetPath:t});case"json":return o.jsx(We,{documentId:e,assetPath:t,displayName:t.split("/").pop()??t,active:r,sections:[],status:`json · ${t}`});case"environment":return o.jsx(Ke,{documentId:e,assetPath:t,active:r});case"lut":return o.jsx(Ot,{documentId:e,assetPath:t,active:r});case"shader":return o.jsx(tr,{documentId:e,assetPath:t,active:r});case"module":{const n=Ge()?.rootPath,s=o.jsx(me,{documentId:e,assetPath:t,active:r});return n?o.jsx(Dt,{documentId:e,projectRoot:n,modulePath:(t.split(/[?#]/,1)[0]??t).replace(/^\//,""),displayName:t.split("/").pop()??t,active:r,fallback:s}):s}case"text":return o.jsx(me,{documentId:e,assetPath:t,active:r});case"binary":return o.jsx(L,{documentId:e,active:r,type:"binary source",title:t.split("/").pop()??t,sections:[],status:`binary · ${t}`,children:o.jsxs("div",{style:{padding:16,color:h.content.muted,fontSize:12},children:[o.jsx("div",{style:{color:h.content.primary,fontWeight:600,marginBottom:6},children:t.split("/").pop()}),"This binary source is available in the project, but it has no safe in-editor renderer. Its file remains selectable and referenceable without being misidentified as another format."]})})}}export{nn as SourceAssetViewer,nr as sourceAssetRoute};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BcCBqgM_.js","assets/three.module-D396a9Mn.js","assets/stage-overlay-set-B9zp2sLB.js","assets/jsx-runtime-DPjLkJKQ.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/index-GIL7oGEO.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-D2fNXpHa.css","assets/viewport-shading-boundary-B_-_gABg.js","assets/stage-invalidation-DBg3C3Ta.js","assets/clip-planes-CnAI6DZn.js","assets/three-CDSueJyJ.js","assets/viewport-pick-context-DkawXbEi.js","assets/OrbitControls-CM3bPray.js","assets/LineSegments2-CsOpKSiM.js","assets/three.quarks.esm-B1C61jGo.js","assets/live-gesture-lock-DJbrjOqf.js","assets/scene-framing-Cat0GtyJ.js","assets/three-viewport-presentation-QBQpSdMh.js","assets/TransientHint-BB1fwrvK.js","assets/stage-keyboard-n-5kKH-m.js","assets/stage-presence-markers-DiGI6A45.js","assets/collaboration-presence-DLoZ7EA3.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{aI as Wr,lP as Gt,aN as sr,ki as qt,ks as ut,aO as Ut,V as Ir,ek as Vr,lQ as Nr,lw as zr,aM as rr,_ as mt,ao as be,f8 as ge,a5 as ve,a6 as re,bo as Gr,a9 as dt,lR as nr,lS as Ur,dP as $r,f7 as Ie,an as qr,lT as Kr,jM as Xr,lU as Yr,lV as Zr,lW as Jr,lX as Qr,b4 as en,ah as Ts,lY as ir,aS as tn,fS as sn,lZ as Fs,l_ as As,l$ as Hs,b9 as _s,m0 as rn,kh as Bs,jO as nn,kG as Ls,m1 as Ds,m2 as on,m3 as an,hi as cn,fm as ln,kt as un,m4 as Ws,m5 as dn,kg as hn,gu as pn,eV as fn,m6 as Is,m7 as mn,lv as gn,m8 as vn,m9 as bn,ho as wn,ma as yn}from"./index-GIL7oGEO.js";import{a as d}from"./jsx-runtime-DPjLkJKQ.js";import{i as G,s as Vs}from"./stage-invalidation-DBg3C3Ta.js";import{r as p}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{A as Sn,a1 as xn,j as or,k as Ns,an as Pn,z as pt,ap as Mn,b7 as Cn,bc as kn,F as En,C as ne,aX as Kt,aB as Rn,aC as jn,a_ as On,b1 as Tn,V as K,ar,cE as zs,u as $t,o as Fn,h as An,b0 as Hn,cv as _n,aZ as Bn,a4 as Gs,K as Ln,S as Dn,r as cr,bF as Wn,D as In,w as lr,v as Vn,cb as Nn,as as Us,g as ht,t as $s,a as qs}from"./three.module-D396a9Mn.js";import{l as zn,w as Gn}from"./live-gesture-lock-DJbrjOqf.js";import{b as Un,p as ft,a as Ks,i as Xs,c as $n,C as qn,E as Kn}from"./viewport-shading-boundary-B_-_gABg.js";import{a as Xn,b as Yn,L as Zn}from"./LineSegments2-CsOpKSiM.js";import{S as Jn}from"./source-object3d-authoring-adapter-B-L6Ha6f.js";import{s as Qn,i as Dt}from"./editor-presentation-activity-C7SNSmTd.js";import{STANDARD_ENVIRONMENT_INTENSITY as ei,applyStandardViewportDressing as ti,watchPaletteBackdrop as si,createGradientBackgroundTexture as ri}from"./standard-viewport-dressing-CzjAe_0A.js";import{V as ni,O as ii}from"./viewport-surface-status-B3om4Kcf.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"./clip-planes-CnAI6DZn.js";import"./three-CDSueJyJ.js";import"./viewport-pick-context-DkawXbEi.js";import"./OrbitControls-CM3bPray.js";import"./three.quarks.esm-B1C61jGo.js";import"./scene-framing-Cat0GtyJ.js";import"./three-projection-core-BmKMZ-nf.js";const ur=30;function dr(r,e,t){return r<e?e:r>t?t:r}function oi(r,e){const t=r.animations;if(t.length===0)return null;const s=new Sn(r);let i=t[0];if(!i)return null;const o=a=>{s.stopAllAction();const l=s.clipAction(a);l.paused=!0,l.play(),i=a};o(i);const c=e.attach({id:r.uuid,label:r.name||i.name||"Clip",range:()=>({start:0,end:i?.duration??0,fps:ur}),seek:a=>{s.setTime(dr(a,0,i?.duration??0))},clips:()=>t.map(a=>({id:a.name,label:a.name})),setClip:a=>{const l=t.find(w=>w.name===a);l&&o(l)}});return()=>{c(),s.stopAllAction(),s.uncacheRoot(r)}}function ai(r,e){const t=Wr(r,"_animationRuntime");if(!t)return null;const s=[...t.clips.entries()];let i=s[0]?.[1];if(!i)return null;const o=a=>{t.mixer.stopAllAction();const l=t.mixer.clipAction(a);l.paused=!0,l.play(),i=a};return e.attach({id:r.uuid,label:r.name||i.name||"Animation",range:()=>({start:0,end:i?.duration??0,fps:ur}),seek:a=>{t.mixer.setTime(dr(a,0,i?.duration??0))},clips:()=>s.map(([a,l])=>({id:a,label:l.name||a})),setClip:a=>{const l=t.clips.get(a);l&&o(l)}})}function Ys(r,e){const t=new Map,s=()=>{const i=new Set;r.traverse(o=>{if(t.has(o.uuid)){i.add(o.uuid);return}const c=ai(o,e)??oi(o,e);c&&(t.set(o.uuid,c),i.add(o.uuid))});for(const[o,c]of[...t])i.has(o)||(c(),t.delete(o))};return s(),{refresh:s,dispose:()=>{for(const i of t.values())i();t.clear()}}}const me=()=>globalThis.performance?.now()??Date.now();function ci(r,e){return r.length===0?0:r[Math.min(r.length-1,Math.floor((r.length-1)*e))]??0}function li(r=!1){const e=new Set,t=[],s=new Map,i=new Map,o=new Map;let c=[],a=[],l=r,w=!1,C=!1,f=0,_=0,S=0;const N=[];let U=0,$=0,v={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},R={enabled:l,recording:C,fps:0,cpuMs:0,p95Ms:0,p99Ms:0,frames:[],phases:[],systems:[],components:[],render:v};function D(){const m=t.at(-1),T=t.slice();let O;const W=P=>(O??=T.map(M=>M.intervalMs).filter(M=>M>0).sort((M,ie)=>M-ie),ci(O,P));R={enabled:l,recording:C,fps:m?.intervalMs?1e3/m.intervalMs:0,cpuMs:m?.cpuMs??0,get p95Ms(){return W(.95)},get p99Ms(){return W(.99)},frames:T,phases:m?.phases??[],systems:[...i].map(([P,M])=>({name:P,ms:M})).sort((P,M)=>M.ms-P.ms),components:[...o].map(([P,M])=>({name:P,ms:M})).sort((P,M)=>M.ms-P.ms),render:v};for(const P of e)P()}return{get enabled(){return l},set enabled(m){l!==m&&(l=m,m&&!w&&(S=0),D())},get telemetryEnabled(){return w},set telemetryEnabled(m){if(w===m)return;const T=!l&&!w;w=m,m&&T&&(S=0),D()},get recording(){return C},startRecording(){const m=!l&&!w;l=!0,m&&(S=0),C=!0,t.length=0,D()},stopRecording(){C=!1,D()},clear(){t.length=0,D()},beginFrame(){!l&&!w||(s.clear(),i.clear(),o.clear(),c=[],a=[],N.length=0,v={gpuMs:null,drawCalls:0,triangles:0,geometries:0,textures:0,renderPasses:null},_=me())},beginPhase(){l&&N.push(me())},endPhase(m){if(!l)return;const T=N.pop()??_,O=me()-T,W=s.get(m);s.set(m,{ms:(W?.ms??0)+O,startMs:W?.startMs??T-_}),C&&performance.measure(`vgai.phase.${m}`,{start:T,duration:O})},systemObserver:{beginSystem(){l&&(U=me())},endSystem(m,T,O){if(!l)return;const W=me(),P=`${m} / ${T} / ${O}`;i.set(P,(i.get(P)??0)+W-U),c.push({name:P,phase:T,startMs:U-_,ms:W-U})}},beginComponent(){C&&($=me())},endComponent(m,T=""){if(!C)return;const O=me();o.set(m,(o.get(m)??0)+O-$),a.push({name:m,phase:T,startMs:$-_,ms:O-$})},reportRender(m){l&&(v={gpuMs:m.gpuMs??v.gpuMs,drawCalls:v.drawCalls+m.drawCalls,triangles:v.triangles+m.triangles,geometries:v.geometries+m.geometries,textures:v.textures+m.textures,renderPasses:m.renderPasses===void 0?v.renderPasses:(v.renderPasses??0)+m.renderPasses})},endFrame(){if(!l&&!w)return;const m=me(),T=S===0?0:_-S;S=_;const O={id:++f,timestamp:m,intervalMs:T,cpuMs:m-_,phases:[...s].map(([W,{ms:P,startMs:M}])=>({name:W,ms:P,startMs:M})).sort((W,P)=>P.ms-W.ms),systems:c.slice(),components:a.slice(),render:{...v}};t.push(O),t.length>600&&t.splice(0,t.length-600),C&&performance.measure("vgai.frame",{start:_,duration:O.cpuMs}),D()},subscribe(m){return e.add(m),()=>{e.delete(m)}},getSnapshot(){return R},exportJSON(){return JSON.stringify({version:2,capturedAt:new Date().toISOString(),frames:t},null,2)}}}const hr=256;function ui(r){const e=Math.min(1,Math.max(0,r));return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}function Wt(r,e,t){const s=Math.hypot(r,e,t)||1;return[r/s,e/s,t/s]}function di(r=hr){const e=document.createElement("canvas");e.width=r,e.height=r;const t=e.getContext("2d");if(!t)return e;const s=t.createImageData(r,r),i=Wt(-.45,.62,.64),o=Wt(.65,-.35,.5),c=Wt(i[0],i[1],i[2]+1),a=[.7,.69,.68],l=[.34,.4,.52],w=[.85,.88,1];for(let C=0;C<r;C++)for(let f=0;f<r;f++){const _=(f+.5)/r/.5-1,S=1-(C+.5)/r/.5,N=_*_+S*S,U=N>1,$=U?1/Math.sqrt(N):1,v=_*$,R=S*$,D=U?0:Math.sqrt(Math.max(0,1-N)),m=Math.max(0,v*i[0]+R*i[1]+D*i[2]),T=Math.max(0,v*o[0]+R*o[1]+D*o[2]),O=Math.max(0,v*c[0]+R*c[1]+D*c[2])**42*.5,W=(1-D)**3.2*.4,P=(C*r+f)*4;for(let M=0;M<3;M++){const ie=a[M]*(.16+.8*m)+l[M]*.3*T+w[M]*W+O;s.data[P+M]=Math.round(ui(ie)*255)}s.data[P+3]=255}return t.putImageData(s,0,0),e}function hi(r=hr){const e=new xn(di(r));return e.colorSpace=or,e.minFilter=Ns,e.magFilter=Ns,e.generateMipmaps=!1,e.needsUpdate=!0,e}function pi(r){return r.color?.clone()??new ne(12502993)}function It(r,e){return r[e]??null}class fi{_derived=new Map;_normals=new Pn;_matcap=null;_matcapTexture=null;_overdraw=new pt({color:16777215,transparent:!0,opacity:.08,depthTest:!1,depthWrite:!1,blending:Cn,side:Mn,toneMapped:!1});render(e,t,s,i=()=>!0){if(t==="solid"){s();return}const o=[];e.traverse(c=>{const a=c;!a.isMesh||!a.material||!i(a)||(o.push({mesh:a,material:a.material}),a.material=Array.isArray(a.material)?a.material.map(l=>this._materialFor(l,t)):this._materialFor(a.material,t))});try{s()}finally{for(const{mesh:c,material:a}of o)c.material=a}}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=hi(),this._matcap=new kn({matcap:this._matcapTexture,toneMapped:!1})),this._matcap;let s=this._derived.get(e);if(!s){const i={color:pi(e),map:It(e,"map"),alphaMap:It(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};s={clay:new En({color:11450048,roughness:.82,metalness:0,flatShading:!0,alphaMap:It(e,"alphaMap"),alphaTest:e.alphaTest,opacity:e.opacity,transparent:e.transparent,side:e.side,depthTest:e.depthTest,depthWrite:e.depthWrite}),unlit:new pt(i),wireframe:new pt({...i,wireframe:!0})},this._derived.set(e,s)}return s[t]}}class mi extends Kt{constructor(e,t){super(),this.bones=e;const s=new Set;for(const a of e){const l=a.parent;l?.isBone&&this.addSegment(l,a,s);for(const w of a.children)w.isBone&&this.addSegment(a,w,s)}this.linePositions=new Float32Array(Math.max(this.segments.length*6,6));const i=new Xn;i.setPositions(this.linePositions),this.lineMaterial=new Yn({color:t,linewidth:5,worldUnits:!1,depthTest:!1,depthWrite:!1,toneMapped:!1,alphaToCoverage:!0}),this.lines=new Zn(i,this.lineMaterial),this.lines.onBeforeRender=a=>{a.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 o=new Rn;o.setAttribute("position",new jn(this.pointPositions,3));const c=new On({color:t,size:11,sizeAttenuation:!1,depthTest:!1,depthWrite:!1,toneMapped:!1});this.points=new Tn(o,c),this.points.frustumCulled=!1,this.points.renderOrder=1002,this.add(this.points),this.name="__object3d_document_bone_selection",Gt(this,"editorHelper",!0),this.traverse(a=>a.layers.set(sr)),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,o]of this.segments)i.getWorldPosition(this.worldPosition),this.linePositions.set(this.worldPosition.toArray(),e),o.getWorldPosition(this.worldPosition),this.linePositions.set(this.worldPosition.toArray(),e+3),e+=6;const t=this.lines.geometry.getAttribute("instanceStart");t&&(t.data.needsUpdate=!0),e=0;for(const i of this.bones)i.getWorldPosition(this.worldPosition),this.pointPositions.set(this.worldPosition.toArray(),e),e+=3;const s=this.points.geometry.getAttribute("position");s&&(s.needsUpdate=!0)}dispose(){this.lines.geometry.dispose(),this.lineMaterial.dispose(),this.points.geometry.dispose(),this.points.material.dispose()}addSegment(e,t,s){const i=`${e.uuid}:${t.uuid}`;s.has(i)||(s.add(i),this.segments.push([e,t]))}}const gi="skeletons",Vt=new ne(58879),Nt=new ne(16756736);function vi(r){const e=r.geometry.getAttribute("color");for(let s=0;s<e.count;s+=2)e.setXYZ(s,Vt.r,Vt.g,Vt.b),s+1<e.count&&e.setXYZ(s+1,Nt.r,Nt.g,Nt.b);e.needsUpdate=!0,r.renderOrder=999;const t=r.material;t.depthTest=!1,t.depthWrite=!1,t.toneMapped=!1,Gt(r,"editorHelper",!0),Gt(r,"editorHelperType",gi),r.traverse(s=>s.layers.set(sr))}const bi=1,wi=700,yi=.001,Si=Math.PI-.001,xi=r=>r<.5?4*r*r*r:1-(-2*r+2)**3/2,Pi=r=>r;function Ee(r,e){return typeof r=="number"&&Number.isFinite(r)?r:e}const Zs={mode:"solid",grid:!0,background:"neutral",exposure:1,projection:"perspective",lighting:"studio",skeleton:!1,bounds:!1};class Mi{constructor(e,t,s,i,o,c=[],a,l=new ne(2106410),w=null){this.documentId=e,this.root=t,this.scene=s,this.renderer=i,this.viewport=o,this.editorLights=c,this.authoring=a,this.neutralBackground=l,this.frameBox=w,this.unsubscribeSelectionTheme=qt(i.domElement,this.syncSelectionTheme),o.orbitControls.addEventListener("start",this.cancelLookForHuman)}profiler=li();shading=new fi;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 ar;captureAspect=null;cameraOverride=null;beforeRender=null;state=Zs;version=0;listeners=new Set;unsubscribeSelectionTheme=()=>{};flight=null;flightPose=new K;topologyOverlay=null;topologyFollowers=[];replaceContent(e,t){G(),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 zs(e,16757844),this.addHelper(this.boundsHelper,"bounds")),this.syncSelectionPresentation(),this.refreshSkeletonHelper(),this.notify()}cancelLookForHuman=()=>{this.settleFlight("human")};syncSelectionTheme=()=>{const e=ut(this.renderer.domElement).visible;this.selectionOutline&&Un(this.selectionOutline,ut(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 $t;let s=!1;for(const i of e){const o=this.authoring?.hierarchy.object3D?.(i);if(!o)continue;const c=Ut(o);c.isEmpty()||(t.union(c),s=!0)}if(s)return t}return this.frameBox&&!this.frameBox.isEmpty()?this.frameBox:Ut(this.root)}frame(e=1){const t=this.resolveFrameBounds();if(t.isEmpty()){let a=0,l=0;return this.root.traverse(w=>{const C=w.geometry;C&&(a+=1,l+=C.getAttribute("position")?.count??0)}),Ir.warn(`frame: nothing to frame — root "${this.root.name}" (${this.root.children.length} children, ${a} meshes, ${l} positions), selection ${JSON.stringify(this.authoring?.selection?.get()??[])}, frameBox ${this.frameBox?this.frameBox.isEmpty()?"empty":"set":"none"}`,"document"),!1}this.settleFlight("superseded");const s=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 o=Math.min(10,Math.max(.1,Ee(e,1))),c=ft(t,this.viewport.camera,i)*o;return this.viewport.setPose(s.clone().addScaledVector(i,c),s),!0}orbit(e){return this.launchFlight(Ee(e.azimuth,0),Ee(e.elevation,0),Math.min(60,Math.max(0,Ee(e.duration,.6))),xi)}turntable(e){const t=Ee(e.revolutions,1);return this.launchFlight(t*Math.PI*2,0,Math.min(60,Math.max(0,Ee(e.seconds,6))),Pi)}looking(){return this.flight!==null}launchFlight(e,t,s,i){this.settleFlight("superseded");const o=this.viewport.camera,c=this.viewport.orbitControls.target.clone(),a=new Fn().setFromVector3(o.position.clone().sub(c)),l=a.radius>1e-4?a.radius:Math.max(this.resolveFrameBounds().getSize(new K).length(),1),w={pivot:c,radius:l,startTheta:a.theta,startPhi:a.phi,deltaTheta:e,deltaPhi:-t,duration:s,ease:i,elapsed:0,theta:a.theta,phi:a.phi,settle:null};this.flight=w;const C=new Promise(f=>{w.settle=f});return this.applyFlightPose(w,0),s<=0&&this.settleFlight(null),C}applyFlightPose(e,t){const s=e.ease(t);e.theta=e.startTheta+e.deltaTheta*s,e.phi=Math.min(Si,Math.max(yi,e.startPhi+e.deltaPhi*s));const i=this.viewport.camera;i.position.setFromSphericalCoords(e.radius,e.phi,e.theta).add(e.pivot),this.viewport.orbitControls.target.copy(e.pivot),i.lookAt(e.pivot),i.updateMatrixWorld(),this.flightPose.copy(i.position)}advanceLook(e){const t=this.flight;if(!t)return;const s=Math.max(1e-4,t.radius*.001);if(this.viewport.camera.position.distanceToSquared(this.flightPose)>s*s){this.settleFlight("human");return}e>0&&Number.isFinite(e)&&(t.elapsed+=e);const i=t.duration<=0?1:Math.min(1,t.elapsed/t.duration);this.applyFlightPose(t,i),i>=1&&this.settleFlight(null)}settleFlight(e){const t=this.flight;if(!t)return;this.flight=null;const s={completed:e===null,azimuth:t.theta,elevation:Math.PI/2-t.phi,seconds:Math.min(t.elapsed,t.duration)};t.settle?.(e===null?s:{...s,cancelledBy:e})}select(e){G(),this.authoring&&Vr(this.authoring,[...e])}selection(){return[...this.authoring?.selection?.get()??[]]}idForObject(e){return this.authoring?.hierarchy.idForObject3D?.(e)??null}syncSelectionPresentation(){G();const e=(this.authoring?.selection?.get()??[]).map(i=>this.authoring?.hierarchy.object3D?.(i)??null).filter(i=>i!==null);this.selectedObjects=e,this.selectionOutline&&(Ks(this.selectionOutline,this.selectionOutlineWanted?e:[]),this.syncComposerOutput());const t=e.filter(i=>!!i.isBone),s=t.map(i=>i.uuid).join("\0");s!==this.boneSelectionSignature&&(this.boneSelectionSignature=s,this.clearBoneSelectionHighlight(),t.length>0&&(this.boneSelectionHighlight=new mi(t,ut(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(s=>this.authoring?.hierarchy.object3D?.(s)??null).filter(s=>s!==null);return t.length===0?!1:t.every(s=>s.isBone)?(this.frameBones(t),!0):(this.viewport.focusOnMultiple(t),!0)}setViewPreset(e){G(),this.settleFlight("superseded");const t=this.resolveFrameBounds();if(t.isEmpty())return;const s=t.getCenter(new K),i=Nr(e),o=ft(t,this.viewport.camera,i),c=s.clone().addScaledVector(i,o);this.viewport.camera.up.set(0,e==="top"?0:1,e==="top"?-1:0),this.viewport.setPose(c,s),this.setProjection(e==="isometric"?"perspective":"orthographic")}setCameraPose(e,t,s){G(),this.settleFlight("superseded"),this.viewport.setPose(e,t,s)}cameraPose(){return{position:this.viewport.camera.position.toArray(),target:this.viewport.orbitControls.target.toArray(),fov:this.viewport.camera.fov}}camera(){return this.cameraOverride?this.cameraOverride:this.state.projection==="perspective"?this.viewport.camera:(this.syncOrthographicCamera(),this.orthographicCamera)}projection(){return this.state.projection}setProjection(e){G(),this.state.projection!==e&&(this.state={...this.state,projection:e},this.notify())}lightingAvailable(){return this.editorLights.length>0}setLighting(e){G(),this.state.lighting!==e&&(this.setLightingValues(e),this.state={...this.state,lighting:e},this.notify())}setMode(e){G(),this.state.mode!==e&&(this.clearDiagnosticPresentation(),this.state={...this.state,mode:e},e==="uv"?this.scene.overrideMaterial=new An({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 pt({vertexColors:!0}):e==="wireframe"&&this.buildTopologyOverlay(),this.notify())}buildTopologyOverlay(){const e=new Kt,t=[];this.root.updateMatrixWorld(!0),this.root.traverse(s=>{const i=s;if(!i.isMesh||!i.geometry)return;const o=new Hn(new _n(i.geometry,bi),new Bn({color:1119773,toneMapped:!1,transparent:!0,opacity:.85,depthTest:!1,depthWrite:!1}));o.matrixAutoUpdate=!1,o.matrixWorldAutoUpdate=!1,o.matrixWorld.copy(i.matrixWorld),o.frustumCulled=!1,o.renderOrder=2,e.add(o),t.push({line:o,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:s}of this.topologyFollowers.splice(0))s.geometry.dispose(),s.material.dispose();const e=this.topologyOverlay;if(this.topologyOverlay=null,!e)return;e.removeFromParent();const t=this.helpers.indexOf(e);t>=0&&this.helpers.splice(t,1)}setBounds(e){G(),this.state.bounds!==e&&(this.state={...this.state,bounds:e},e?(this.boundsHelper=new zs(this.root,16757844),this.addHelper(this.boundsHelper,"bounds")):this.clearBoundsHelper(),this.notify())}setSkeleton(e){G(),this.state.skeleton!==e&&(this.state={...this.state,skeleton:e},this.refreshSkeletonHelper(),this.notify())}setGrid(e){G(),this.state.grid!==e&&(this.viewport.grid.visible=e,this.state={...this.state,grid:e},this.notify())}neutralBackgroundTexture(){return this.neutralBackground}setNeutralBackground(e){G();const t=this.scene.background===this.neutralBackground;this.neutralBackground=e,t&&(this.scene.background=e)}setBackground(e){G(),this.state.background!==e&&(this.scene.background=e==="transparent"?null:this.neutralBackground,this.state={...this.state,background:e},this.notify())}setExposure(e){G(),!(!Number.isFinite(e)||e<.2||e>2)&&this.state.exposure!==e&&(this.renderer.toneMappingExposure=e,this.state={...this.state,exposure:e},this.notify())}resetPresentation(){G(),this.clearDiagnosticPresentation(),this.state=Zs,this.refreshSkeletonHelper(),this.clearBoundsHelper(),this.viewport.grid.visible=!0,this.scene.background=this.neutralBackground,this.renderer.toneMappingExposure=1,this.setLightingValues("studio"),this.viewport.camera.up.set(0,1,0),this.frame(),this.notify()}setBeforeRender(e){this.beforeRender=e}presentedFrameWaiters=[];presentsFrames=!1;setPresentsFrames(e){this.presentsFrames=e,e||this.resolvePresentedFrame(null)}requestPresentedFrame(){return this.presentsFrames?new Promise(e=>{let t=!1;const s=i=>{t||(t=!0,e(i))};this.presentedFrameWaiters.push(s),G(),setTimeout(()=>s(null),wi)}):Promise.resolve(null)}needsFrame(){return this.flight!==null||this.presentedFrameWaiters.length>0}servePresentedFrame(){if(this.presentedFrameWaiters.length===0)return;const e=this.renderer.domElement,t=document.createElement("canvas");t.width=Math.max(1,e.width),t.height=Math.max(1,e.height);const s=t.getContext("2d");if(!s){this.resolvePresentedFrame(null);return}s.drawImage(e,0,0),this.resolvePresentedFrame(t)}resolvePresentedFrame(e){const t=this.presentedFrameWaiters;this.presentedFrameWaiters=[];for(const s of t)s(e)}render(e){this.beforeRender?.(),this.boneSelectionHighlight?.update();const t=this.camera(),s=this.state.mode;if(this.boundsHelper?.update(),s==="uv"||s==="vertex-colors"){e(t);return}if(s==="wireframe"&&this.topologyOverlay){this.syncTopologyOverlay(),this.shading.render(this.scene,"clay",()=>e(t),Xs);return}this.shading.render(this.scene,s,()=>e(t),Xs)}renderViewport(e=0){this.advanceLook(e),this.ensureComposer(),this.render(t=>{const s=this.composer;if(!s){this.renderer.render(this.scene,t);return}s.setMainScene(this.scene),s.setMainCamera(t),s.render(e)})}resize(e,t){G(),this.renderWidth=Math.max(1,e),this.renderHeight=Math.max(1,t),this.composer?.setSize(this.renderWidth,this.renderHeight)}renderCapture(e,t){this.render(s=>{if(!t){e(s);return}const i=this.scene.background,o=this.renderer.getClearColor(new ne),c=this.renderer.getClearAlpha();try{this.scene.background=null,this.renderer.setClearColor(0,0),e(s)}finally{this.scene.background=i,this.renderer.setClearColor(o,c)}})}captureImage(e=512){const t=typeof e=="number"?e:e.width,s=typeof e=="number"?e:e.height;if(!Number.isFinite(t)||t<1||!Number.isFinite(s)||s<1)return null;const i=Math.min(2048,Math.round(t)),o=Math.min(2048,Math.round(s)),c=i*2,a=o*2,l=new Gs(c,a,{type:Ln}),w=new Gs(c,a),C=this.renderer.getRenderTarget(),f=this.renderer.getPixelRatio(),_=this.viewport.camera,S=_.aspect;try{this.captureAspect=i/o;const N=typeof e=="number"?void 0:e.camera;N?this.cameraOverride=N:(_.aspect=i/o,_.updateProjectionMatrix()),this.renderer.setPixelRatio(1),this.renderer.setRenderTarget(l),this.renderCapture(O=>this.renderSolidForCapture(O,l,c,a),typeof e!="number"&&e.transparent===!0),zr(typeof e!="number"&&e.transparent===!0).render(this.renderer,w,l,0,!1);const U=c*4,$=new Uint8Array(U*a);this.renderer.readRenderTargetPixels(w,0,0,c,a,$);const v=document.createElement("canvas");v.width=c,v.height=a;const R=v.getContext("2d");if(!R)return null;const D=R.createImageData(c,a);for(let O=0;O<a;O++){const W=(a-1-O)*U,P=O*U;D.data.set($.subarray(W,W+U),P)}R.putImageData(D,0,0);const m=document.createElement("canvas");m.width=i,m.height=o;const T=m.getContext("2d");return T?(T.drawImage(v,0,0,i,o),m.toDataURL("image/png")):null}finally{this.captureAspect=null,this.cameraOverride=null,_.aspect=S,_.updateProjectionMatrix(),this.renderer.setRenderTarget(C),this.renderer.setPixelRatio(f),w.dispose(),l.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?.selection.clear(),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}`,rr(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,mt(()=>import("./index-BcCBqgM_.js"),__vite__mapDeps([0,1])).then(e=>{if(this.composerLoading=!1,this.disposed||this.composer)return;const t=this.camera(),s=new e.EffectComposer(this.renderer);this.sceneRenderPass=new e.RenderPass(this.scene,t),s.addPass(this.sceneRenderPass),this.selectionOutline=$n(e,this.scene,t,ut(this.renderer.domElement)),this.syncSelectionTheme(),Ks(this.selectionOutline,this.selectedObjects),this.selectionOutlinePass=new e.EffectPass(t,this.selectionOutline),s.addPass(this.selectionOutlinePass),this.composer=s,this.syncComposerOutput(),s.setSize(this.renderWidth,this.renderHeight),G()}).catch(()=>{this.composerLoading=!1})))}renderSolidForCapture(e,t,s,i){const o=this.composer,c=(this.selectionOutline?.selection.size??0)>0;if(!o||!c||!this.sceneRenderPass||!this.selectionOutlinePass){this.renderer.render(this.scene,e);return}const a=this.renderWidth,l=this.renderHeight;try{this.sceneRenderPass.renderToScreen=!1,this.selectionOutlinePass.renderToScreen=!1,o.setSize(s,i,!1),this.sceneRenderPass.render(this.renderer,o.inputBuffer,o.outputBuffer,0),this.selectionOutlinePass.render(this.renderer,o.inputBuffer,t,0)}finally{o.setSize(a,l,!1),this.syncComposerOutput(),this.renderer.setRenderTarget(t)}}syncComposerOutput(){const e=(this.selectionOutline?.selection.size??0)>0;this.sceneRenderPass&&(this.sceneRenderPass.renderToScreen=!e),this.selectionOutlinePass&&(this.selectionOutlinePass.enabled=e,this.selectionOutlinePass.renderToScreen=e)}refreshSkeletonHelper(){const e=this.state.skeleton||this.boneSelectionHighlight!==null;e&&!this.skeletonHelper?(this.skeletonHelper=new Dn(this.root),vi(this.skeletonHelper),this.scene.add(this.skeletonHelper)):e||this.clearSkeletonHelper()}clearSkeletonHelper(){this.skeletonHelper&&(this.skeletonHelper.removeFromParent(),this.skeletonHelper.dispose(),this.skeletonHelper=null)}clearBoneSelectionHighlight(){this.boneSelectionHighlight&&(this.boneSelectionHighlight.removeFromParent(),this.boneSelectionHighlight.dispose(),this.boneSelectionHighlight=null)}clearBoundsHelper(){if(!this.boundsHelper)return;const e=this.boundsHelper;this.boundsHelper=null;const t=this.helpers.indexOf(e);t>=0&&this.helpers.splice(t,1),e.removeFromParent(),e.geometry.dispose(),Array.isArray(e.material)?e.material.forEach(s=>{s.dispose()}):e.material.dispose()}frameBones(e){const t=new $t,s=new K;for(const l of e){t.expandByPoint(l.getWorldPosition(s)),l.parent?.isBone&&t.expandByPoint(l.parent.getWorldPosition(s));for(const w of l.children)w.isBone&&t.expandByPoint(w.getWorldPosition(s))}const i=t.getCenter(new K),o=Math.max(t.getSize(new K).length(),.2);t.expandByScalar(o*.35);const c=this.viewport.camera.position.clone().sub(this.viewport.orbitControls.target).normalize(),a=ft(t,this.viewport.camera,c);this.viewport.setPose(i.clone().addScaledVector(c,a),i)}syncOrthographicCamera(){const e=this.viewport.camera,t=this.viewport.orbitControls.target,s=Math.max(e.position.distanceTo(t),.001),i=Math.max(s*Math.tan(cr.degToRad(e.fov)/2),.001),o=Math.max(this.renderer.domElement.clientWidth,1),c=Math.max(this.renderer.domElement.clientHeight,1),a=this.captureAspect??o/c;this.orthographicCamera.left=-i*a,this.orthographicCamera.right=i*a,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)}setLightingValues(e){for(const t of this.editorLights)t instanceof Wn?t.intensity=e==="flat"?2:e==="outdoor"?1.15:1.7:t instanceof In&&(t.intensity=e==="flat"?0:e==="outdoor"?2.2:2.4,t.color.set(16777215))}clearDiagnosticPresentation(){this.clearTopologyOverlay(),this.scene.overrideMaterial?.dispose(),this.scene.overrideMaterial=null;for(const e of this.helpers.splice(0)){e.removeFromParent();const t=e;t.geometry?.dispose();const s=t.material;Array.isArray(s)?s.forEach(i=>{i.dispose()}):s?.dispose()}}notify(){this.version++;for(const e of this.listeners)e()}}class Ci{constructor(e){this.options=e}active=null;settling=!1;idleWaiters=new Set;begin(e){if(this.active||this.settling)return!1;try{const t=this.options.begin(e);return t?(this.active={pointerId:e.pointerId,gesture:t},!0):!1}catch(t){return this.options.reportError(t),!1}}update(e){if(!(!this.active||this.active.pointerId!==e.pointerId))try{this.active.gesture.update(e)}catch(t){this.cancelWithError(t)}}async commit(e){const t=this.take(e.pointerId);if(!t)return!1;this.settling=!0;try{return await t.commit(e),await this.options.persist(t.label),!0}catch(s){try{await t.cancel()}catch(i){return this.options.reportError({operationError:s,rollbackError:i}),!1}return this.options.reportError(s),!1}finally{this.settling=!1;for(const s of this.idleWaiters)s();this.idleWaiters.clear()}}async cancel(e){const t=this.take(e);if(!t)return!1;this.settling=!0;try{return await t.cancel(),!0}catch(s){return this.options.reportError(s),!1}finally{this.settling=!1;for(const s of this.idleWaiters)s();this.idleWaiters.clear()}}async settle(){this.active&&await this.cancel(),this.settling&&await new Promise(e=>this.idleWaiters.add(e))}hasActiveGesture(){return this.active!==null}take(e){if(!this.active||e!==void 0&&this.active.pointerId!==e)return null;const t=this.active.gesture;return this.active=null,t}async cancelWithError(e){const t=this.take();if(t){this.settling=!0;try{await t.cancel(),this.options.reportError(e)}catch(s){this.options.reportError({operationError:e,rollbackError:s})}finally{this.settling=!1;for(const s of this.idleWaiters)s();this.idleWaiters.clear()}}}}class ki{constructor(e,t){this.frame=e,this.releaseRenderer=t,this.unsubscribeActivity=Qn(()=>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&&Dt()?this.start():this.stop()}redraw(){this.running&&!this.disposed&&Dt()&&this.guardedFrame(performance.now())}dispose(){this.stop(),!this.disposed&&(this.disposed=!0,this.unsubscribeActivity(),this.releaseRenderer())}start(){this.disposed||this.running||(this.running=!0,this.guardedFrame(performance.now(),!0),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick)))}lastFrameFailure=null;guardedFrame(e,t=!1){try{this.frame(e,t),this.lastFrameFailure=null}catch(s){const i=s instanceof Error?s.message:String(s);i!==this.lastFrameFailure&&(this.lastFrameFailure=i,console.error("[document renderer] a frame threw; the loop continues:",s))}}stop(){this.running=!1,this.rafId!==0&&(cancelAnimationFrame(this.rafId),this.rafId=0)}tick=e=>{if(!(!this.running||this.disposed)){if(!Dt()){this.stop();return}this.guardedFrame(e),!(!this.running||this.disposed)&&(this.rafId=requestAnimationFrame(this.tick))}}}class Ei{constructor(e,t,s){this.create=e,this.isOpen=t,this.subscribe=s}states=new Map;generations=new WeakMap;unsubscribe=null;claim(e){const t=this.states.get(e)??[];let s=t.find(i=>!i.inUse);return s||(s=this.create(e),t.push(s),this.states.set(e,t)),s.inUse=!0,this.generations.set(s,this.generation(s)+1),this.unsubscribe??=this.subscribe(()=>this.discardClosed()),s}generation(e){return this.generations.get(e)??0}release(e,t=this.generation(e)){this.generation(e)===t&&(e.inUse=!1,queueMicrotask(()=>this.discardClosed()))}retain(e,t,s){if(!this.isOpen(e.documentId)||!this.states.get(e.documentId)?.includes(e)||this.generation(e)!==s){t.dispose();return}const i=e.source;e.source=t,i!==t&&i?.dispose()}discardClosed(){const e=[];for(const[s,i]of this.states){if(this.isOpen(s))continue;const o=i.filter(c=>c.inUse);e.push(...i.filter(c=>!c.inUse)),o.length?this.states.set(s,o):this.states.delete(s)}this.states.size===0&&(this.unsubscribe?.(),this.unsubscribe=null);const t=[];for(const s of e){const i=s.source;s.source=null;try{i?.dispose()}catch(o){t.push(o)}}if(t.length)throw new AggregateError(t,"Retained document cleanup failed")}}const Ri=p.lazy(async()=>({default:(await mt(()=>import("./stage-overlay-set-B9zp2sLB.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]))).StageOverlaySet}));function ji(r){return d.jsx(p.Suspense,{fallback:null,children:d.jsx(Ri,{...r})})}const Oi=[.25,.5,1,2];function Ti(r,e){const t=Math.round(r*e);return`${r.toFixed(2)}s · f${t}`}function Fi({transport:r}){const e=p.useSyncExternalStore(p.useCallback(f=>r?r.subscribe(f):()=>{},[r]),p.useCallback(()=>r?.snapshot()??null,[r]));if(!r||!e||e.activeSubject===null)return null;const t=e.driver==="world",s=e.playbackState==="playing",{start:i,end:o,fps:c,loop:a}=e.range,l=e.subjects.find(f=>f.id===e.activeSubject),w=e.subjects.length>1?e.subjects:null,C=r.activeClips();return d.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 ${be.boundary.default}`,background:be.surface.raised},children:[d.jsx(ge,{size:"compact","aria-label":s?"Pause":"Play",disabled:t,onClick:()=>s?r.pause():r.play(),children:d.jsx(ve,{icon:s?re.transport.pause:re.transport.play})}),d.jsx(ge,{size:"compact","aria-label":"Stop",disabled:t,onClick:()=>r.stop(),children:d.jsx(ve,{icon:re.transport.stop})}),d.jsx(Gr,{"aria-label":"Playhead",type:"range",min:i,max:o,step:1/c,value:e.time,disabled:t,onChange:f=>r.seek(Number(f.target.value)),style:{flex:1}}),d.jsx(dt,{as:"span",variant:"caption",children:Ti(e.time,c)}),w?d.jsx("select",{"aria-label":"Subject",value:e.activeSubject,disabled:t,onChange:f=>r.setActiveSubject(f.target.value),children:w.map(f=>d.jsx("option",{value:f.id,children:f.label},f.id))}):null,C?d.jsx("select",{"aria-label":"Clip",disabled:t,onChange:f=>r.setActiveClip(f.target.value),children:C.map(f=>d.jsx("option",{value:f.id,children:f.label},f.id))}):null,d.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"var(--vgai-space-1)"},children:[d.jsx("input",{type:"checkbox",checked:a,disabled:t,onChange:f=>r.setLoop(f.target.checked)}),d.jsx(dt,{as:"span",variant:"caption",children:"Loop"})]}),d.jsx("select",{"aria-label":"Speed",value:String(e.timeScale),disabled:t,onChange:f=>r.setTimeScale(Number(f.target.value)),children:Oi.map(f=>d.jsxs("option",{value:String(f),children:[f,"×"]},f))}),t?d.jsx(dt,{as:"span",variant:"caption",children:"The world is driving time (Play); pause the game to scrub"}):l?d.jsx(dt,{as:"span",variant:"caption",children:l.label}):null]})}const Ai=qn;function Hi(r){return qt(null,r)}const _i=()=>()=>{},Js=()=>0,Bi=5,Li=58;function Di({viewport:r,session:e,store:t,projection:s,displayName:i,objectName:o,statistics:c}){p.useSyncExternalStore(t.subscribe,t.getShellSnapshot??t.getSnapshot),p.useSyncExternalStore(e?.subscribe??_i,e?.getSnapshot??Js,e?.getSnapshot??Js);const l=p.useSyncExternalStore(Hi,nr)?be.content.onAccent:be.content.primary;if(!r)return null;const w=Ur(r.camera.position.clone().sub(r.orbitControls.target))??"User",C=e?.projection()??s,f=`${w} ${C==="perspective"?"Perspective":"Orthographic"}`,_=t.selectedEntityId,S=(_===null?null:o(_))||null,N=S===null||S===i?i:`${i} | ${S}`,U=v=>{const R=r.renderCamera;if(R instanceof ar){R.zoom=Math.max(.01,R.zoom/v),R.updateProjectionMatrix();return}const D=r.orbitControls.target;r.camera.position.sub(D).multiplyScalar(v).add(D),r.orbitControls.update()},$=v=>{v.preventDefault();const R=v.currentTarget;R.setPointerCapture(v.pointerId);let D=v.clientX,m=v.clientY;const T=new K,O=new K,W=M=>{const ie=M.clientX-D,oe=M.clientY-m;D=M.clientX,m=M.clientY;const we=r.camera,ae=r.orbitControls.target,Ve=we.position.distanceTo(ae),ce=Math.max(1,R.ownerDocument.defaultView?.innerHeight??1),je=2*Ve*Math.tan(cr.degToRad(we.fov/2))/ce;T.setFromMatrixColumn(we.matrixWorld,0).multiplyScalar(-ie*je),O.setFromMatrixColumn(we.matrixWorld,1).multiplyScalar(oe*je),we.position.add(T).add(O),ae.add(T).add(O),r.orbitControls.update()},P=()=>{R.removeEventListener("pointermove",W),R.removeEventListener("pointerup",P),R.removeEventListener("pointercancel",P)};R.addEventListener("pointermove",W),R.addEventListener("pointerup",P),R.addEventListener("pointercancel",P)};return d.jsxs(d.Fragment,{children:[d.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:l,textShadow:"var(--vgai-content-text-shadow, none)",pointerEvents:"none",userSelect:"none"},children:[d.jsx("span",{children:f}),d.jsx("span",{children:N}),c&&c.length>0?d.jsx("div",{"data-testid":"viewport-statistics",style:{display:"grid",gridTemplateColumns:`${Li}px auto`,rowGap:"var(--vgai-space-1)",marginTop:$r[Bi]},children:c.map(v=>d.jsxs(p.Fragment,{children:[d.jsx("span",{children:v.label}),d.jsx("span",{children:v.value})]},v.id))}):null]}),d.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:Ai,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:[d.jsx(Ie,{text:"Zoom in",children:d.jsx(ge,{size:"comfortable","aria-label":"Zoom in",onClick:()=>U(.8),children:d.jsx(ve,{size:"2xl",icon:re.viewport.zoomIn})})}),d.jsx(Ie,{text:"Zoom out",children:d.jsx(ge,{size:"comfortable","aria-label":"Zoom out",onClick:()=>U(1.25),children:d.jsx(ve,{size:"2xl",icon:re.viewport.zoomOut})})}),d.jsx(Ie,{text:"Pan (drag)",children:d.jsx(ge,{size:"comfortable","aria-label":"Pan the view",onPointerDown:$,children:d.jsx(ve,{size:"2xl",icon:re.viewport.pan})})}),d.jsx(Ie,{text:"Frame all",children:d.jsx(ge,{size:"comfortable","aria-label":"Frame all",onClick:()=>{e?.frame()||r.focusOn(r.orbitControls.object)},children:d.jsx(ve,{size:"2xl",icon:re.viewport.frame})})}),d.jsx(Ie,{text:C==="perspective"?"Orthographic":"Perspective",children:d.jsx(ge,{size:"comfortable","aria-label":"Toggle perspective and orthographic","aria-pressed":C==="orthographic",onClick:()=>{const v=C==="perspective"?"orthographic":"perspective";e?e.setProjection(v):r.setProjection(v)},children:d.jsx(ve,{size:"2xl",icon:re.viewport.projection})})})]})]})}const Wi=p.lazy(async()=>({default:(await mt(()=>import("./stage-keyboard-n-5kKH-m.js"),__vite__mapDeps([25,5,4,6,7,3,8,9,10,11,1,12]))).StageKeyboardBinding})),Qs=()=>bn(),zt=12;function er(r){if(!r)return null;const e=new $t(new K(r.min[0],r.min[1],r.min[2]),new K(r.max[0],r.max[1],r.max[2]));return e.isEmpty()?null:e}const Ii=500;function Vi(r){return qt(null,r)}let Ni=0;const Re=new Ei(r=>({documentId:r,store:new ir,inUse:!1,source:null,camera:null,presentation:null,transport:null,contentSeconds:0,transportAdvances:0}),r=>tn().some(e=>e.descriptor.id===r),sn);function zi({canvasHostRef:r}){return d.jsx("div",{ref:r,style:{position:"absolute",inset:0}})}function Gi(r,e,t,s,i){if(e==="inspector-preview"){const l=gn();return l.canvas.setAttribute("aria-label",`${t} authoring viewport`),r.appendChild(l.canvas),{canvas:l.canvas,renderer:l.renderer,lease:l}}const o=vn(s.width,s.height,i),{canvas:c,renderer:a}=o;return c.setAttribute("aria-label",`${t} authoring viewport`),r.appendChild(c),{canvas:c,renderer:a,lease:o}}class tr{constructor(e,t,s){this.lane=e,this.surface=t,this.store=s??new ir,this.transport=new mn(this.store)}scene=new lr;store;cleanups=[];rendererSession=new ki((e,t)=>this.frame?.(e,t),()=>{});viewport=null;session=null;dressing=null;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:s}=this.surface;for(const i of[...this.cleanups.splice(0),()=>this.session?.dispose(),()=>this.viewport?.dispose(),()=>this.rendererSession.dispose(),()=>this.dressing?.dispose(),...e?[()=>e.release()]:[()=>t.dispose(),()=>t.forceContextLoss(),()=>s.remove()]])try{i()}catch(o){console.error("Object3D document cleanup failed.",o)}}}function Ui({documentId:r,sourcePath:e,build:t,displayName:s="Source Object3D",background:i,cameraDirection:o,persistence:c,documentSource:a,authoring:l,interaction:w,selectionOutline:C=!0,active:f=!0,audit:_=!0,chromeless:S=!1,modelSource:N,assetType:U,sourceAuthoring:$,dressing:v,rendererLane:R="own",onOpenNode:D,frameBounds:m,openingFrameBounds:T,openingFit:O,statistics:W,content:P}){p.useEffect(()=>{if(!S)return qr(r)},[r,S]);const M=Kr(),ie=M??Ts(),oe=ie?Xr(ie,r,S?"embedded":"document"):null,we=p.useSyncExternalStore(Vi,nr),ae=oe!==null&&Yr(oe,we),Ve=p.useRef(ae);Ve.current=ae;const ce=oe!==null&&Zr(oe),je=p.useRef(ce);je.current=ce;const Xt=oe!==null&&Jr(oe),Yt=p.useRef(Xt);Yt.current=Xt;const Zt=Qr(),gt=p.useRef(Zt);gt.current=Zt;const vt=p.useRef(null),bt=p.useRef(null),V=p.useRef(null),ye=p.useRef(null);(!ye.current||ye.current.documentId!==r)&&(ye.current&&Re.release(ye.current),ye.current=Re.claim(r)),p.useEffect(()=>{const k=ye.current,le=Re.generation(k);return()=>Re.release(k,le)},[r]);const B=ye.current,xe=P?.kind==="world-root",wt=f||xe,Jt=p.useRef(P?.kind==="world-root"?P.load:null);Jt.current=P?.kind==="world-root"?P.load:null;const[Pe,yt]=p.useState(wt);p.useEffect(()=>yt(wt),[wt]);const Qt=p.useRef(C);p.useEffect(()=>{Qt.current=C;const k=V.current?.session;k&&(k.selectionOutlineEnabled=R!=="inspector-preview"&&C)},[C,R]);const es=p.useRef(Promise.resolve()),St=p.useRef(!1);p.useEffect(()=>{if(Pe)return Oe.current=!1,Mt("building"),()=>{const k=V.current;if(k&&!xe){St.current=!Ne.current;const le=k.store.cameraPose;B.camera=le&&k.viewport?{...le,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}Ue.current=null,$e.current=null,Ge.current=null,ze.current=null,k?.close(),V.current=null}},[r,R,B,Pe,xe]);const ts=p.useRef(D);ts.current=D;const ss=p.useRef(m);ss.current=m;const rs=p.useRef(T);rs.current=T;const Ne=p.useRef(f);Ne.current=f;const ns=p.useRef(f),is=p.useRef({build:t,sourcePath:e});p.useEffect(()=>{const k=is.current;is.current={build:t,sourcePath:e},!(k.build===t&&k.sourcePath===e)&&!Pe&&B.source&&(B.source.dispose(),B.source=null)},[t,B,e,Pe]);const ze=p.useRef(null),Oe=p.useRef(!1),Ge=p.useRef(null),Ue=p.useRef(null),$e=p.useRef(null),[xt,Y]=p.useState(null),[Pt,Mt]=p.useState("building"),[os,pr]=p.useState(null),[fr,mr]=p.useState("mounting"),[gr,vr]=p.useState([]),as=p.useRef(null),[cs,br]=p.useState("perspective"),[wr,ls]=p.useState(null),qe=p.useRef(null);qe.current=wr;const Ct=o?.[0],kt=o?.[1],Et=o?.[2],Te=N?.kind,Rt=N?.kind==="project-file"?N.path:void 0,Ke=N?.kind==="entity"?N.entityId:void 0,jt=v?.environment,us=v?.background,Ot=v?.keyLight,Tt=v?.grid,Xe=v?.viewLocked,ds=v?.toneMapping;f&&wn(r),p.useEffect(()=>{let k=!1;if(!Pe)return;const le=async ue=>{const L=vt.current,Fe=bt.current;if(!L||!Fe||V.current)return;const x=gt.current;if(!x){Y("The world root needs the editor shell above it; this host has none.");return}const Ae=await ue();if(k||V.current)return;pr(()=>Ae),Fs();const n=new tr("own",Ae.mountWorldRootSurface(Fe,L,s),Ts()??void 0);V.current=n,n.cleanups.push(As(r,n.store)),n.cleanups.push(Hs(r,n.transport));const Z=Ae.installWorldRootStage({store:n.store,documentId:r,container:L,canvas:n.surface.canvas,renderer:n.surface.renderer,stats:x,cameraPreview:()=>as.current,onMountStatus:mr,onRootIds:vr,runFrame:de=>Ds(r,de)});n.viewport=Z.viewport,n.frame=Z.frame,n.content={scene:Z.scene,settle:()=>Promise.resolve(),dispose:async()=>Z.dispose()};const A=Ys(Z.scene,n.transport);let X=0;n.cleanups.push(()=>A.dispose()),n.cleanups.push(n.store.subscribe(()=>{if(n.store.playState!=="stopped")return;const de=performance.now();de-X<Ii||(X=de,A.refresh())})),n.cleanups.push(Ws({camera:Z.viewport.camera,orbit:Z.viewport.orbitControls,scene:Z.scene},Z.present,Z.setHelper,{documentId:r})),ze.current=n.rendererSession,n.initialized=!0,Is(),Mt("ready"),n.rendererSession.setActive(!0)},Sr=async()=>{for(await V.current?.content?.settle();zn();)await Gn();if(k)return;const ue=Jt.current;if(ue)return le(ue);const L=vt.current,Fe=bt.current;if(!L||!Fe)return;if(!t||e===void 0){Y("This stage shows `build` content and was given no `build()`/`sourcePath`.");return}let x;const Ae=Re.generation(B);try{x=B.source??t(),B.source=null}catch(q){Y(q instanceof Error?q.message:String(q));return}try{V.current||(Fs(),V.current=new tr(R,Gi(Fe,R,s,{width:Math.max(1,L.clientWidth),height:Math.max(1,L.clientHeight)},()=>{yt(!1),window.setTimeout(()=>{Ne.current&&yt(!0)},0)}),B.store),V.current.contentSeconds=B.contentSeconds,V.current.transportAdvances=B.transportAdvances)}catch(q){throw x.dispose(),q}const n=V.current,Z=n.borrow(),{renderer:A,canvas:X,lease:de}=n.surface,F=n.store;S||(n.cleanups.push(As(r,F)),n.cleanups.push(Hs(r,n.transport)));const Ze=_s();Ze&&F.attachHistory(Ze);const Pr=R==="inspector-preview",Me=Ve.current,ps=je.current,fs=Yt.current,H=new lr;jt!==!1&&(H.environmentIntensity=ei);const Je=x.root.parent;H.add(x.root),x.animations&&(x.root.animations=[...x.animations]);const At={root:x.root,animations:x.root.animations};let He=null,_e=null,Ce=null,he=null,J=null,Qe=null,et=null,tt=null,st=null,rt=null,Ht=null,ms=null,gs=null,vs=!1,nt=!1,it=null;const _t={scene:H,settle:()=>J?.settle()??Promise.resolve(),dispose:()=>{if(it)return it;nt=!0;const q=St.current;return St.current=!1,Qe&&L.removeEventListener("pointerdown",Qe,!0),et&&L.removeEventListener("pointermove",et,!0),tt&&L.removeEventListener("pointerup",tt,!0),st&&L.removeEventListener("pointercancel",st,!0),rt&&window.removeEventListener("keydown",rt),Ht?.(),Ht=null,it=(async()=>{await J?.settle();const Be=[];for(const ee of[()=>he?.dispose(),()=>_e?.dispose?.(),()=>He?.dispose(),()=>H.removeFromParent(),()=>{q?Re.retain(B,x,Ae):x.dispose()},Z])try{ee()}catch(ot){Be.push(ot)}Be.length&&console.error("Object3D source cleanup failed.",...Be)})(),it}};try{const q=async h=>{try{const b=At;if(a&&!c){if(!b)throw new Error("Project history is unavailable; the edit was not saved.");const u=_s();if(!u)throw new Error("Project history is unavailable; the edit was not saved.");const g=a.serialize(b);if(g===null)return Y(null),!1;const j=await Qs().replaceSource(u,{file:a.path,source:g,label:h??a.label??`Edit ${s}`});return Y(null),j}if(!c)throw new Error("This Asset Lab document has no persistence binding.");if(!Ce||!b)throw new Error("Project history is unavailable; the edit was not saved.");const{persisted:E}=await(await Ce).commit(b,h);return Y(null),E}catch(b){throw Y(b instanceof Error?b.message:JSON.stringify(b)),b}};He=new Jn(F,H,{documentId:r,title:s,sourcePath:e,documentKind:fs?"asset":"source",audit:_,...x.hierarchyRoots?{hierarchyRoots:x.hierarchyRoots}:{},...Te==="project-file"&&Rt?{modelSource:{kind:Te,path:Rt}}:Te==="entity"&&Ke?{modelSource:{kind:Te,entityId:Ke}}:{}});const Be={documentId:r,sourcePath:e,root:x.root,animations:x.root.animations,scene:H,defaultAdapter:He,commit:q};_e=l?.(Be)??null,!_e&&$&&(_e=$({store:F,scene:H,...x.hierarchyRoots?{hierarchyRoots:x.hierarchyRoots}:{}}),He.dispose()),Ce=c&&Ze?Qs().openPersistence({binding:c,document:At,history:Ze}):null,Ce&&Ce.catch(h=>{!nt&&V.current?.content===_t&&Y(h instanceof Error?h.message:JSON.stringify(h))});const ee=_e?.adapter??He;if(!n.dressing){A.outputColorSpace=or,A.toneMapping=ds??Vn,A.shadowMap.enabled=!0,A.shadowMap.type=Nn,A.info.autoReset=!1,A.setPixelRatio(Math.min(window.devicePixelRatio,2)),Me&&A.setClearColor(0,0);const h=jt===!1?null:de&&"environment"in de?de.environment():rn(A),b=Bs(X);n.dressing=ti(n.scene,{environment:h,background:!Me&&i===void 0&&us!==!1&&b.background===null,keyLight:Ot!==!1,grid:Tt===!0,content:x.root}),!Me&&i!==void 0?n.scene.background=new ne(i):!Me&&b.background!==null&&(n.scene.background=new ne(b.background)),n.defaultEnvironment=n.scene.environment,n.defaultBackground=n.scene.background,n.cleanups.push(()=>{n.defaultBackground instanceof Us&&n.defaultBackground!==n.dressing?.backgroundTexture&&n.defaultBackground.dispose()})}const ot=(h,b)=>{const E=n.adapter,u=n.viewport;if(!E||!u)return null;const g=X.getBoundingClientRect(),j=new ht((h-g.left)/Math.max(g.width,1)*2-1,-((b-g.top)/Math.max(g.height,1))*2+1),z=new $s;z.layers.enableAll(),z.setFromCamera(j,n.session?.camera()??u.camera);for(const fe of z.intersectObjects([...F.objectMap.values()],!0)){if(nn(fe.object))continue;let se=fe.object;for(;se;){const lt=E.hierarchy.idForObject3D?.(se);if(lt)return lt;se=se.parent}}return null};if(!n.viewport){n.viewport=new Kn(X,n.scene,F,L,{renderer:A,authoring:()=>n.adapter??ee,pick:ot,publishPickContext:!1,onProjectionChange:br,chromeInsetPx:S||ps?0:zt,lightRig:Ot!==!1}),Tt===!0&&n.viewport.grid.removeFromParent();const h=b=>{const E=ot(b.clientX,b.clientY),u=E?n.adapter?.hierarchy.object3D?.(E):null;u&&ts.current?.(u)};L.addEventListener("dblclick",h),n.cleanups.push(()=>L.removeEventListener("dblclick",h))}const y=n.viewport;if(Xe){const h=y.camera;n.scene.add(h),h.add(Xe),n.cleanups.push(()=>{Xe.removeFromParent(),h.removeFromParent()})}if(w){const h=new Kt;h.name="__object3d_document_overlay",rr(h,"editorHelper",!0),H.add(h),he=w.setup({root:x.root,scene:H,renderer:A,overlay:h,camera:()=>n.session?.camera()??y.camera,writable:c!==void 0||a!==void 0});const b=u=>{const g=X.getBoundingClientRect(),j=new ht((u.clientX-g.left)/Math.max(g.width,1)*2-1,-((u.clientY-g.top)/Math.max(g.height,1))*2+1),z=new $s;return z.layers.enableAll(),z.setFromCamera(j,n.session?.camera()??y.camera),{pointerId:u.pointerId,button:u.button,buttons:u.buttons,clientX:u.clientX,clientY:u.clientY,altKey:u.altKey,ctrlKey:u.ctrlKey,metaKey:u.metaKey,shiftKey:u.shiftKey,ray:z.ray.clone(),hits:z.intersectObjects([x.root,h],!0)}};J=new Ci({begin:u=>{if(!c&&!a)throw new Error("This Asset Lab document has no persistence binding; project gestures are read-only.");return he.begin(u)},persist:async u=>{await q(u)},reportError:u=>Y(u instanceof Error?u.message:JSON.stringify(u))});const E=u=>{u.preventDefault(),u.stopPropagation()};Qe=u=>{u.target instanceof Element&&u.target.closest('[role="alert"], [role="toolbar"]')!==null||J?.begin(b(u))&&(E(u),u.isTrusted&&X.setPointerCapture?.(u.pointerId))},et=u=>{J?.hasActiveGesture()&&(E(u),J.update(b(u)))},tt=u=>{J?.hasActiveGesture()&&(E(u),X.hasPointerCapture?.(u.pointerId)&&X.releasePointerCapture?.(u.pointerId),J.commit(b(u)))},st=u=>{J?.hasActiveGesture()&&(E(u),J.cancel(u.pointerId))},rt=u=>{u.key!=="Escape"||!J?.hasActiveGesture()||(u.preventDefault(),J.cancel())},ms=()=>{L.addEventListener("pointerdown",Qe,!0),L.addEventListener("pointermove",et,!0),L.addEventListener("pointerup",tt,!0),L.addEventListener("pointercancel",st,!0),window.addEventListener("keydown",rt)}}const Se=n.content,bs=[...F.selectedEntityIds],Le=n.adapter,Mr=new Map(F.objectMap),De=n.session?.root,Cr=n.frame,kr=n.syncHostScene,Er=Ue.current,Rr=$e.current,jr=Ge.current,ws=n.session?.neutralBackgroundTexture(),Or=n.dressing.lights.map(h=>h.visible),Tr=n.cleanups.length,Fr=n.initialized;if(gs=()=>{H.removeFromParent(),Je&&Je.add(x.root),Se&&n.scene.add(Se.scene),n.adapter=Le,n.content=Se,n.frame=Cr,n.syncHostScene=kr,n.initialized=Fr;for(const h of n.cleanups.splice(Tr))h();!De&&n.session&&(n.session.dispose(),n.session=null),F.objectMap.clear();for(const[h,b]of Mr)F.objectMap.set(h,b);Se&&F.bindScene(Se.scene,A,y.batchedRenderer,y.camera),De&&Le&&n.session?.replaceContent(De,Le),Ue.current=Er,$e.current=Rr,Ge.current=jr,qe.current=Le,ls(Le),ws!==void 0&&n.session?.setNeutralBackground(ws),n.dressing?.lights.forEach((h,b)=>{h.visible=Or[b]??!0}),De&&n.dressing?.frameContent(De),F.selectMultiple(bs),F.notifyIngestObjectMapEdit()},Se?.scene.removeFromParent(),n.scene.add(H),n.adapter=ee,n.content=_t,F.bindScene(H,A,y.batchedRenderer,y.camera),F.setOrbitTarget(y.orbitControls.target),F.objectMap.clear(),H.traverse(h=>{const b=ee.hierarchy.idForObject3D?.(h);b&&F.objectMap.set(b,h)}),n.session)n.session.replaceContent(x.root,ee);else{const h=er(ss.current),b=er(rs.current)??h;if(b||y.focusOn(x.root),Ct!==void 0&&kt!==void 0&&Et!==void 0){const E=b??Ut(x.root),u=E.getCenter(new K),g=new K(Ct,kt,Et).normalize(),j=ft(E,y.camera,g)*Math.min(10,Math.max(.1,O??1));y.camera.position.copy(u).add(g.multiplyScalar(j)),y.orbitControls.target.copy(u)}if(n.session=new Mi(r,x.root,n.scene,A,y,n.dressing.lights,ee,Me?null:i===void 0?n.dressing.backgroundTexture:new ne(i),h),n.session.selectionOutlineEnabled=!Pr&&Qt.current,!Me&&i===void 0&&n.dressing.backgroundTexture){const E=n.session;n.cleanups.push(si(()=>{const u=Bs(X).background;if(u!==null){n.scene.background=new ne(u);return}const g=n.defaultBackground;n.defaultBackground=ri(),E.neutralBackgroundTexture()===g&&E.setNeutralBackground(n.defaultBackground),g instanceof Us&&g!==n.dressing?.backgroundTexture&&g.dispose()}))}}const We=B.camera;We&&(y.camera.up.copy(We.up),y.setProjection(cs),y.setPose(We.position,We.target,We.fov||void 0),B.camera=null);const I=n.session;Ue.current=At,$e.current=Ce,Ge.current=he,qe.current=ee,ls(ee);let ys=!1;x.root.traverse(h=>{h.isLight&&(ys=!0)});for(const h of n.dressing.lights)h.visible=!ys;n.dressing.frameContent(x.root),F.selectMultiple(bs.filter(h=>F.objectMap.has(h))),F.notifyIngestObjectMapEdit(),I.syncSelectionPresentation(),ms?.(),Y(null),S||Ls(r);let at=H.background;I.setNeutralBackground(at??n.defaultBackground);const te=B.presentation;te&&(I.setMode(te.mode),I.setGrid(te.grid),I.setBackground(te.background),I.setExposure(te.exposure),I.setProjection(te.projection),I.setLighting(te.lighting),I.setSkeleton(te.skeleton),I.setBounds(te.bounds),B.presentation=null);const Ar=()=>{n.scene.environment=H.environment??n.defaultEnvironment,n.scene.fog=H.fog,n.scene.environmentIntensity=H.environmentIntensity,n.scene.environmentRotation.copy(H.environmentRotation),n.scene.backgroundIntensity=H.backgroundIntensity,n.scene.backgroundBlurriness=H.backgroundBlurriness,n.scene.backgroundRotation.copy(H.backgroundRotation),at!==H.background&&(at=H.background,I.setNeutralBackground(at??n.defaultBackground))};n.syncHostScene=Ar,I.setBeforeRender(()=>n.syncHostScene?.()),I.setPresentsFrames(!0);const Hr=h=>{nt||!(h>0)||!Number.isFinite(h)||(n.contentSeconds+=h,n.transportAdvances++,x.update?.(h))},_r=Ys(x.root,n.transport);n.cleanups.push(()=>_r.dispose());const pe=B.transport;pe&&(pe.activeSubject&&n.transport.setActiveSubject(pe.activeSubject),n.transport.setLoop(pe.range.loop),n.transport.setTimeScale(pe.timeScale),n.transport.seek(pe.time),pe.playbackState==="playing"?n.transport.play():pe.playbackState==="paused"&&n.transport.pause(),B.transport=null);let Bt=performance.now();const Ss=typeof x.onChange=="function";let Lt=!0;const ct=()=>{Lt=!0};if(Ss){const h=x.onChange(ct),b=F.subscribe(ct),E=["pointerdown","pointermove","pointerup","pointerleave","wheel","keydown","keyup"];for(const u of E)L.addEventListener(u,ct,{capture:!0,passive:!0});Ht=()=>{h(),b();for(const u of E)L.removeEventListener(u,ct,{capture:!0})}}let xs=-1;const Ps=new qs,Ms=new qs,Cs=new ht,ks=new ht;let Es,Rs=null,js=Number.NaN;const Br=h=>{if(!Ss||Lt||h>0||Vs()!==xs||I.needsFrame()||n.presence?.live()||he?.prepareFrame||he?.update||(y.batchedRenderer.batches?.length??0)>0)return!0;const b=I.camera();return b.updateMatrixWorld(),A.getDrawingBufferSize(ks),!b.matrixWorld.equals(Ps)||!b.projectionMatrix.equals(Ms)||!ks.equals(Cs)||n.scene.background!==Es||A.toneMapping!==Rs||A.toneMappingExposure!==js},Lr=()=>{Lt=!1,xs=Vs();const h=I.camera();Ps.copy(h.matrixWorld),Ms.copy(h.projectionMatrix),A.getDrawingBufferSize(Cs),Es=n.scene.background,Rs=A.toneMapping,js=A.toneMappingExposure},Dr=(h,b)=>{if(nt||!A||!y)return;const E=A,u=y,g=I?.profiler;g?.beginFrame(),b&&(Bt=h);const j=Math.min((h-Bt)/1e3,.1);Bt=h,g?.beginPhase();const z=n.transport.tick(j);if(z>0&&Hr(z),he?.prepareFrame?.(j),he?.update?.(j),g?.endPhase("animation"),g?.beginPhase(),n.presence?.syncMarkers(j),y.update(j),S||Ds(r,j),y.batchedRenderer.update(j),g?.endPhase("editor"),!b&&!Br(z)){g?.endFrame();return}g?.beginPhase(),E.info.reset();const fe=!Oe.current&&on()===r;fe&&an(r);const se=fe?Date.now():0,lt=n.scene.overrideMaterial,Os=I.presentation().mode;Os!=="uv"&&Os!=="vertex-colors"&&(n.scene.overrideMaterial=H.overrideMaterial);try{u.renderWithInfrastructure(()=>{I.renderViewport(j),u.renderViewCube(E)})}finally{n.scene.overrideMaterial=lt}I.servePresentedFrame(),Lr(),Oe.current||(Oe.current=!0,fe&&cn("first-render",Date.now()-se),ln(r),Mt("ready")),g?.reportRender({gpuMs:null,drawCalls:E.info.render.calls,triangles:E.info.render.triangles,geometries:E.info.memory.geometries,textures:E.info.memory.textures}),g?.endPhase("render"),g?.endFrame();const Q=gt.current;if(Q&&M&&un(M)===F){const ke=I.cameraPose();Q.frameTime=j*1e3,Q.fps=j>0?1/j:0,Q.drawCalls=E.info.render.calls,Q.triangles=E.info.render.triangles,Q.cameraPosition.x=ke.position[0],Q.cameraPosition.y=ke.position[1],Q.cameraPosition.z=ke.position[2],Q.cameraTarget.x=ke.target[0],Q.cameraTarget.y=ke.target[1],Q.cameraTarget.z=ke.target[2]}};if(n.frame=Dr,ze.current=n.rendererSession,!n.initialized){S||(n.cleanups.push(Ws({camera:y.camera,orbit:y.orbitControls,scene:n.scene},()=>null,(g,j)=>y.setHelper(g,j),{documentId:r})),mt(()=>import("./stage-presence-markers-DiGI6A45.js"),__vite__mapDeps([26,3,4,5,6,8,9,7,10,11,1,12,27])).then(g=>{if(n.isClosed||V.current!==n||n.presence)return;const j=g.bindStagePresenceMarkers({scene:n.scene,store:F,documentId:r,container:L,canvas:X,viewport:y,readVisibleCameraPose:()=>{const z=n.session?.camera()??y.renderCamera,fe=z.getWorldPosition(new K),se=z.fov;return{position:fe,target:y.orbitControls.target,fov:typeof se=="number"?se:0}}});n.presence=j,n.cleanups.push(()=>j.dispose())}),n.cleanups.push(dn(I)),n.cleanups.push(hn({id:r,label:s,kind:fs?"asset":"source",profiler:I.profiler}))),!S&&!ps&&n.cleanups.push(pn(r,()=>({adapter:n.adapter,nodeId:n.adapter?.selection?.get()[0]??null})));const h=S?`${r}#chromeless-${++Ni}`:r;n.cleanups.push(fn({id:h,label:s,contentClock:()=>n.contentSeconds,transportAdvances:()=>n.transportAdvances})),n.cleanups.push(F.onViewportAction(g=>{switch(g.type){case"focus-selection":case"focus-scene":!n.session?.frame()&&n.session?.root&&y.focusOn(n.session.root);break;case"focus-entity":{const j=n.adapter?.hierarchy.object3D?.(g.id)??null;j&&y.focusOn(j);break}case"snap-selection-to-floor":y.snapSelectionToFloor();break;case"set-view-preset":y.setViewPreset(g.preset);break;case"set-camera-pose":y.setPose(g.position,g.target,g.fov);break}}));let b="";n.cleanups.push(F.subscribe(()=>{y.objectMap=F.objectMap,y.syncFromStore(),n.session?.syncSelectionPresentation();const g=(n.adapter?.selection?.get()??[]).join("\0");g!==b&&(b=g,S||Ls(r))}));const E=()=>{const g=Math.max(1,L.clientWidth),j=Math.max(1,L.clientHeight),z=A.getPixelRatio();(X.width!==Math.floor(g*z)||X.height!==Math.floor(j*z))&&A.setSize(g,j,!1),y.resize(g,j),n.session?.resize(g,j),n.rendererSession.redraw()},u=new ResizeObserver(E);u.observe(L),n.cleanups.push(()=>u.disconnect()),E(),n.initialized=!0,Is()}y.objectMap=F.objectMap,y.syncFromStore(),n.rendererSession.setActive(Ne.current),n.rendererSession.redraw(),vs=!0,Se?.dispose()}catch(q){if(!vs)try{gs?.()}finally{Je&&x.root.parent===H&&Je.add(x.root),_t.dispose()}console.error(`[object3d document] ${s}: source update failed`,q),Y(q instanceof Error?q.message:String(q))}},xr=es.current.then(Sr);return es.current=xr.catch(ue=>{k||Y(ue instanceof Error?ue.message:String(ue))}),()=>{k=!0}},[l,i,t,Ct,kt,Et,s,r,ae,us,jt,Tt,Ot,Xe,ds,S,Ke,Te,Rt,w,c,a,R,B,Pe,$,e,xe]),p.useEffect(()=>{const k=ze.current,le=f&&!ns.current;ns.current=f,k&&(le&&(Oe.current=!1,yn(r)),k.setActive(f||xe))},[f,r,xe]);const Ye=V.current,Ft=Pt==="ready"&&Ye?.viewport?{store:Ye.store,viewport:Ye.viewport,canvas:Ye.surface.canvas}:null,yr=p.useCallback(()=>{const k=qe.current;return k?{adapter:k,nodeId:k.selection?.get()[0]??k.hierarchy.roots()[0]?.id??null}:null},[]),hs=d.jsx("div",{"data-testid":"tool-object3d-authoring","data-vgai-chromeless":S||void 0,className:ae?"vgai-object3d-studio-stage":void 0,style:{position:S||ce?"relative":"absolute",...S?{width:"100%",height:"100%"}:ce?{flex:1,minHeight:0}:{inset:-zt},overflow:"hidden",background:ae?void 0:be.surface.raised,pointerEvents:"auto"},children:d.jsxs("div",{ref:vt,style:{position:"absolute",inset:0,minHeight:0,overflow:"hidden"},children:[d.jsx(zi,{canvasHostRef:bt}),f&&Ft&&!S?d.jsx(p.Suspense,{fallback:null,children:d.jsx(Wi,{stage:Ft})}):null,M&&!S?d.jsx(ji,{store:M,documentId:r,stage:Ft,active:f,chrome:"document"}):null,M&&os?d.jsx(os.Overlays,{store:M,documentId:r,cameraPreviewRef:as,mountStatus:fr,rootIds:gr}):null,xt&&d.jsx("div",{role:"alert",style:{position:"absolute",insetInline:0,top:0,display:"flex",justifyContent:"center",padding:"var(--vgai-space-3)",pointerEvents:"none"},children:d.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 ${be.semantic.danger}`,background:be.surface.raised,color:be.semantic.danger,pointerEvents:"auto"},children:[d.jsx("span",{children:xt}),d.jsx(ge,{size:"compact","aria-label":"Dismiss",onClick:()=>Y(null),"data-testid":"object3d-document-error-dismiss",children:d.jsx(ve,{icon:re.action.close})})]})}),!xt&&Pt==="building"&&d.jsx(ni,{testId:"object3d-document-status",children:ii}),d.jsx("div",{style:{position:"absolute",inset:S||ce?0:zt,pointerEvents:"none"},children:!S&&Pt==="ready"&&V.current&&d.jsx(Di,{viewport:V.current.viewport,session:V.current.session,store:V.current.store,projection:cs,displayName:s,...W?{statistics:W}:{},objectName:k=>V.current?.adapter?.hierarchy.object3D?.(k)?.name??V.current?.store.objectMap.get(k)?.name??null})})]})});return ce?d.jsx(en,{documentId:r,active:f,type:U??(Ke?"entity":"model"),title:s,status:e,selection:yr,fill:!0,children:d.jsxs("div",{className:"vgai-object3d-asset-workspace",children:[hs,d.jsx(Fi,{transport:V.current?.transport??null})]})}):hs}function bo(r){return d.jsx(Ui,{...r})}export{Ui as Object3DDocumentViewport,bo as ToolObject3DAuthoring};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/document-preview-three-Kbg2GCLm.js","assets/index-GIL7oGEO.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-D396a9Mn.js","assets/index-D2fNXpHa.css","assets/scene-framing-Cat0GtyJ.js","assets/standard-viewport-dressing-CzjAe_0A.js","assets/stage-invalidation-DBg3C3Ta.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{hi as P,hj as lt,ax as Q,az as $t,bO as zt,hk as It,bP as Vt,de as Ht,hl as St,aN as Xt,ay as tt,eS as Zt,hm as Ut,ao as g,e7 as Wt,b2 as Yt,g6 as qt,ev as Jt,eH as Z,di as Qt,av as Mt,hn as te,eQ as ee,fK as mt,e9 as ne,bF as oe,aw as U,cG as Et,_ as N,ho as re,hp as se,V as ie,hq as X,hr as ae,dG as ce,hs as ue}from"./index-GIL7oGEO.js";import{a as m}from"./jsx-runtime-DPjLkJKQ.js";import{O as de}from"./Object3DDocumentViewport-DB7T0NTl.js";import{STANDARD_COMPONENT_CAMERA_DIRECTION as le}from"./standard-viewport-dressing-CzjAe_0A.js";import{t as me}from"./viewport-surface-status-B3om4Kcf.js";import{r as w}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{withStoryMountTurn as vt,lastStoryMountPhaseTiming as pe}from"./story-three-preview-BHEDZzcl.js";import{setUserData as he}from"./user-data-BB2Of6Ht.js";import{aX as R,M as Dt,B as fe,F as xe,y as ge,z as ye,ap as be,aB as we,aY as Se,b0 as Me,cm as Ee,w as ve,u as De,V as O,s as _e,r as Pe}from"./three.module-D396a9Mn.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"./stage-invalidation-DBg3C3Ta.js";import"./crash-null-boundary-v3a0uEgw.js";import"./events-156d8d12.esm-ErOhDXXB.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},K=.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,K),Math.max(t[2]+2*r,K)]}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(K,...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 Ce(t){return Math.min(3,Math.max(.6,.08*t))}function je(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=Ce(Math.max(y.depth,K)),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:E,xEdge:V}=ht(l,p,h+b,r,n),_={minX:-b,maxX:V+b,minZ:h,maxZ:h+x};a.push({groupKey:l,items:E,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 $(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=$(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:$(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=je(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:$(i),fullFrame:$(a)}}const kt="vgaiBoardStoryId",Bt="vgaiBoardComponentKey",I="vgai:board:no-story";function Ke(t){return{stories:t.length,modules:new Set(t.map(e=>e.modulePath)).size}}const Y="Ungrouped",xt="No story yet",$e=.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),Zt(s.root)||(s.dispose(),s=null,o="The story mounted no three content.")}catch(a){o=ze(a)}const i=pe();return Ut({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(Xt),he(e,"editorHelper",!0)})}const Ve={color:3291977,roughness:.92,metalness:.04,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:2},gt=.06,He=0,yt=0,Xe=11124182,Ze=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:Xe,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:Ze,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 Ct(t).length}function Ct(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"&&$t(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 jt(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=$e/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=Ct(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)]),E=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 C=[],rt=[],st=[],it=[k];for(const f of E.districts){const M=f.groupKey===I,D=new R;D.name=`vgai:board-district:${M?xt:f.groupKey||Y}`,T.add(D),k.add(Ue(f));for(const S of f.items){if(M){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 j=c.get(S.id),H=d.get(S.id),v=V.get(S.id);!j||!H||!v||(D.add(tn(H,S,j)),C.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:M?xt:f.groupKey||Y,placement:f})}const Kt=C.flatMap(f=>f.helpers.map(M=>({exhibitId:f.id,exhibitLabel:f.label,kind:M.kind,size:M.size})));let at=!1;const ct={root:T,exhibits:C,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:Kt,dispose(){if(!at){at=!0;for(const f of it)f.traverse(M=>{const D=M;D.geometry?.dispose();const S=D.material;if(Array.isArray(S))for(const j of S)j.dispose();else S?.dispose()}),f.removeFromParent();for(const f of c.values())try{f.dispose()}catch(M){console.error("[three-board] a story mount failed to dispose.",M)}c.clear(),T.clear()}}};if(P("assemble",Date.now()-_),lt({exhibitCount:C.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?te(ee,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&&re(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"}),se(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||ie.warn(`Component index unavailable, so this board shows no ghost slots: ${x.reason}`,"three-board"),jt(s,x.ok?x.entries:[],p.signal)}).then(x=>{if(p.signal.aborted){X(t),q(x);return}y=x,F=x,bt(),ae(),i({status:"ready",scene:x})},x=>{if(p.signal.aborted){X(t);return}i({status:"error",message:x instanceof Error?x.message:String(x)})}),()=>{p.abort(),y?(F===y&&(F=null),q(y),bt()):X(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(ce)},[c,r]);return m.jsx("div",{style:{position:"relative",flex:1,minHeight:0,pointerEvents:"auto"},children:c?m.jsxs(m.Fragment,{children:[m.jsx(de,{documentId:t,sourcePath:"Generated from this project’s stories",displayName:Nt,build:d,active:e,onOpenNode:l,cameraDirection:le,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"&&me(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=Ke(t.skipped),s=t.districts.filter(o=>o.groupKey!==I).length;return m.jsxs("div",{"data-testid":"three-board-status",style:{position:"absolute",left:8,bottom:8,maxWidth:420,padding:"4px 8px",borderRadius:g.shape.small,background:g.surface.raised,border:`1px solid ${g.boundary.default}`,fontSize:10,color:g.content.muted,pointerEvents:"auto"},children:[t.exhibits.length," exhibit",t.exhibits.length===1?"":"s"," · ",s," ","district",s===1?"":"s",t.helperVolumes.length>0&&m.jsxs(m.Fragment,{children:[" · ",t.helperVolumes.length," helper volume",t.helperVolumes.length===1?"":"s"," at true scale, outside the default frame"]}),t.ghostSlots.length>0&&m.jsxs(m.Fragment,{children:[" · ",t.ghostSlots.length," component",t.ghostSlots.length===1?"":"s"," without stories"]}),t.skipped.length>0&&m.jsxs(m.Fragment,{children:[" · ",m.jsxs("span",{role:"button",tabIndex:0,"aria-expanded":e,onClick:()=>r(o=>!o),onKeyDown:o=>{(o.key===" "||o.key==="Enter")&&(o.preventDefault(),r(i=>!i))},style:{cursor:"pointer",color:g.accent.default},children:[n.stories," ",n.stories===1?"story":"stories"," in ",n.modules," ",n.modules===1?"module":"modules"," not on this board"]})]}),e&&m.jsx("div",{style:{marginTop:4,maxHeight:160,overflow:"auto"},children:t.skipped.map(o=>m.jsxs("div",{style:{padding:"1px 0"},children:[m.jsxs("code",{style:{color:g.content.dim},children:[o.modulePath,"#",o.storyName]})," ","— ",o.reason]},o.id))})]})}function 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=ue(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=ne();function vn(){En.ensure(t=>{t(Wt({match:()=>Jt()?.descriptor.id===Z,id:"exhibit",title:"Exhibit",icon:qt,order:Yt,Section:Mn}))})}const Dn={revision:()=>JSON.stringify(U().map(t=>t.modulePath)),subscribe:Mt,capture:async t=>{await oe();const e=tt(),r=U().filter(o=>o.ok&&Q({modulePath:o.modulePath,regions:e}).medium==="three"),n=await Et(),s=await jt(r,n.ok?n.entries:[]);try{const{captureAuthoredThreeScenePreview:o}=await N(async()=>{const{captureAuthoredThreeScenePreview:h}=await import("./document-preview-three-Kbg2GCLm.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-GIL7oGEO.js").then(E=>E.tK);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-CzjAe_0A.js");return{applyStandardViewportDressing:h}},__vite__mapDeps([13,14,1,2,3,4,5,6,7,8,9,10,11])),{isEditorOwnedObject:u}=await N(async()=>{const{isEditorOwnedObject:h}=await import("./index-GIL7oGEO.js").then(E=>E.tL);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 E=a(c,{environment:i(h),background:!1});return()=>E.dispose()})}finally{await q(s)}}};function Zn(t){return vn(),Qt({id:Z,title:Nt,kind:"content-browser",workspaceRole:"workspace-reference",Content:e=>m.jsx(hn,{...e,store:t}),readOnly:!0,preview:Dn,presentation:()=>({kind:"workspace",id:Z}),onActivate:()=>t.setActiveViewportTab("edit")},{category:"canvas"})}export{Mn as BoardExhibitSection,Z as THREE_COMPONENTS_DOCUMENT_ID,vn as ensureThreeBoardContributionsRegistered,Zn as installThreeBoardDocument,ln as openExhibitStoryDocument,mn as openGhostComponentSource};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o}from"./AssetBudgetPanel-J9--TZPU.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.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-D396a9Mn.js";import"./asset-loaders-BOy5Ss8k.js";import"./SkeletonUtils-Cps8GOC6.js";import"./asset-parse-error-BHMwBRU3.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./loader-CaF_I7Yt.js";const B="workspace.menu",k={menu:"asset",items:[{id:"open-budget",label:"Open in Asset Budget",testId:"asset-context-open-budget",execute:({assetPath:t})=>{t!==void 0&&o(t)}}]};export{k as menu,B as point};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as t}from"./AssetBudgetPanel-J9--TZPU.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.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-D396a9Mn.js";import"./asset-loaders-BOy5Ss8k.js";import"./SkeletonUtils-Cps8GOC6.js";import"./asset-parse-error-BHMwBRU3.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./loader-CaF_I7Yt.js";const B="workspace.action",f=[{id:"asset-budget",label:"Open Asset Budget",execute:()=>{t()}}];export{f as actions,B as point};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{A as o}from"./AssetBudgetPanel-J9--TZPU.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.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-D396a9Mn.js";import"./asset-loaders-BOy5Ss8k.js";import"./SkeletonUtils-Cps8GOC6.js";import"./asset-parse-error-BHMwBRU3.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./loader-CaF_I7Yt.js";const k="workspace.document",w="Asset Budget";function D(r){return t.jsx(o,{})}export{D as default,k as point,w as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as t}from"./AssetBudgetPanel-J9--TZPU.js";import"./jsx-runtime-DPjLkJKQ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GIL7oGEO.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-D396a9Mn.js";import"./asset-loaders-BOy5Ss8k.js";import"./SkeletonUtils-Cps8GOC6.js";import"./asset-parse-error-BHMwBRU3.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./loader-CaF_I7Yt.js";const A="workspace.menu",B={menu:"window",items:[{id:"asset-budget",label:"Asset Budget",testId:"menu-asset-budget",execute:()=>{t()}}]};export{B as menu,A as point};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{x as i,q as m}from"./index-GIL7oGEO.js";import{e as p}from"./play-mode-BFU2PCkG.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./native-debug-module-CWicoSGD.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-Dgvitx8M.js";import"./playtest-BXIL1JEF.js";import"./game-contract-seams-a5YXejOu.js";import"./instruments-CKR02Y8I.js";import"./frame-pacing-D5acoOzO.js";import"./edit-mode-authoring-B47TfLqu.js";import"./json-history-resource-BbxllWfV.js";import"./binding-resolver-Dsh-6Vor.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-Cq8Yeb74.js";import"./r3f-root-factory-z9llD1OU.js";import"./register-render-vitals-BiZk29b2.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-B13QEH7d.js";import"./webgl-frame-capture-FlF9zQmW.js";import"./world-state-BWG-IcOd.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-CIQdetRw.js";import"./seeded-random-i3mtgBKZ.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-ErOhDXXB.js";import"./index-bQE2NA0D.js";import"./realm-services-CobQsq_X.js";import"./canvas-entry-runtime-SfBxaR9M.js";import"./three-ingest-runtime-QzDYk6tU.js";import"./EffectComposer-DQxfsXBZ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-QYRpPuFJ.js";import"./CSS3DRenderer-CL7ABLVK.js";import"./relative-path-guard-GiM7Lsz8.js";import"./capability-coverage-Czas4C18.js";import"./react-root-CEz5NTck.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./active-ingest-CT6jSGhr.js";import"./ingest-source-persistence-C_6Hiyra.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-CWsE56K6.js";import"./mounted-authoring-Dmg5xmhP.js";import"./three-CDSueJyJ.js";import"./viewport-pick-context-DkawXbEi.js";import"./logger-Dqis-7W1.js";import"./run-ticks-settled-C4ksViyA.js";import"./three-authoring-adapter-CmSQ3Vui.js";import"./source-persistence-backend-C-aR-B_Y.js";import"./three-projection-core-BmKMZ-nf.js";import"./body-marks-h_xDxiDE.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./structural-ids-Dc-7rEwi.js";import"./object3d-authoring-subject-CH5sI2oP.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-BBo8oma9.js";import"./deferred-ingest-play-DCJi_Pgu.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DmrwM3py.js";import"./board-guides-DziKSTss.js";import"./writer-B-KovzkA.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BZfi3mmo.js";import"./inference-diagnostics-Dhmtfbq_.js";const Mt="workspace.service";function e(o){p().catch(t=>{m().console.error(`${o}: ${t instanceof Error?t.message:String(t)}`,"play")})}function Rt(){let o,t=!1;const r=i(()=>{t||new URLSearchParams(window.location.search).get("play")==="1"&&(t=!0,o=window.setTimeout(()=>e("Could not enter requested Play mode"),0))});return()=>{o!==void 0&&window.clearTimeout(o),r()}}export{Mt as point,Rt as start};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{b as u,a as S,S as f,P as m,s as _,o as g}from"./worker-UrMcrc5_.js";import{s as F}from"./session-CZ5JPg-z.js";async function O(a){const o=await fetch(a);if(!o.ok)throw new Error(`${a}: HTTP ${o.status}`);const e=await o.text(),r={exports:{}},l=new Function("module","exports","define",`${e}
|
|
2
|
-
return typeof createBlenderModule === 'function' ? createBlenderModule : module.exports;`)(r,r.exports,void 0);if(typeof l!="function")throw new Error("blender_browser.js did not produce a module factory");return l}const R=new TextEncoder;function B(a,o){let e="";for(const r of o.split("/").filter(Boolean))a.FS_createPath(e||"/",r,!0,!0),e+=`/${r}`}function I(a){const o=a.FS;return{readFile:async e=>o.readFile(e),writeFile:async(e,r)=>o.writeFile(e,r),mkdirTree:async e=>o.mkdirTree(e),readdir:async e=>o.readdir(e),stat:async e=>{let r;try{r=o.stat(e)}catch{return null}const i=r.mtime;return{size:r.size,mode:r.mode??0,mtimeMs:typeof i=="number"?i:i?.getTime()??0}},unlink:async e=>o.unlink(e)}}async function k(a,o){if(!self.crossOriginIsolated)throw new Error("Headless Blender needs SharedArrayBuffer, so the editor page has to be cross-origin isolated (Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy on every response). This worker reports crossOriginIsolated=false.");const e=u("blender_browser.js"),r=await O(e),i=performance.now();let l=null;const s=(t,c)=>{c.startsWith("@@VGAI-READY ")&&(l=c.slice(13)),a.log(c.startsWith("@@VGAI-WARN")||c.startsWith("@@VGAI-ERROR")?"error":"log",c)},n=await r({arguments:["--background","--factory-startup","--python",S],locateFile:t=>u(t),mainScriptUrlOrBlob:e,print:t=>s("log",t),printErr:t=>s("error",t),preRun:[t=>{t.ENV??={},Object.assign(t.ENV,{BLENDER_SYSTEM_RESOURCES:"/bw",BLENDER_SYSTEM_PYTHON:"/bw/python",BLENDER_SYSTEM_SCRIPTS:"/bw/scripts",BLENDER_SYSTEM_DATAFILES:"/bw/datafiles",VGAI_SESSION_ROOT:f,HOME:"/root",TMPDIR:"/tmp"});for(const c of["/tmp","/root","/work",f,...m,a.project])B(t,c);t.FS_createDataFile(f,"session.py",R.encode(F),!0,!0,!0)}]});for(;l===null;)await _(5);const d=performance.now()-i,b=JSON.parse(l);let h=null;if(typeof n.releasePreloadedFileData=="function"){const t=n.releasePreloadedFileData();h=t.bytes,a.log("log",`blender: released the preloaded ${(t.bytes/1048576).toFixed(0)} MB payload (${t.files} files); WasmFS already holds it`)}else a.log("error","blender: this bundle has no releasePreloadedFileData, so the ~55 MB packed .data payload stays resident beside the copy WasmFS made of it — relink with the recipe's --post-js (recipe/release-preloaded-file-data.js).");const p=n.FS;let w="";for(const t of`${a.project}`.split("/").filter(Boolean)){w+=`/${t}`;try{p.chmod(w,511)}catch{}}for(const t of["/work","/tmp","/root",f,...m])try{p.chmod(t,511)}catch{}const y=I(n);p.chmod("/bw/datafiles",493),await T(y);const{request:E}=g(y,a);return{skew:"emscripten",banner:b,files:y,request:E,readArena:async()=>n.HEAPU8.subarray(n._blender_web_export_buffer(),n._blender_web_export_buffer()+n._blender_web_export_buffer_size()),bootMs:d,memoryBytes:()=>n.HEAPU8.length,releasedPayloadBytes:h}}async function T(a){const[o,e]=await Promise.all([fetch(u("essentials.json")),fetch(u("essentials.bin"))]);if(!o.ok||!e.ok)throw new Error(`Blender Essentials assets are missing (${o.status}/${e.status})`);const r=await o.json(),i=await e.arrayBuffer(),l=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",i)),s=>s.toString(16).padStart(2,"0")).join("");if(i.byteLength!==r.bytes||l!==r.sha256)throw new Error("Blender Essentials payload does not match its source manifest");for(const s of r.files){if(!s.path||s.path.includes("\\")||s.path.split("/").some(d=>!d||d==="."||d==="..")||!Number.isInteger(s.offset)||!Number.isInteger(s.bytes)||s.offset<0||s.bytes<0||s.offset+s.bytes>i.byteLength)throw new Error(`Invalid Blender Essentials file: ${s.path}`);const n=`/bw/datafiles/assets/${s.path}`;await a.mkdirTree(n.slice(0,n.lastIndexOf("/"))),await a.writeFile(n,new Uint8Array(i,s.offset,s.bytes))}}export{k as startEmscriptenBlenderEngine};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{q as Y}from"./index-GIL7oGEO.js";import{y as ce,C as q,D as J,E as ue,F as ae,s as de,G as fe,t as pe}from"./blender-runtime-host-BpBwGv7r.js";import{r as j}from"./index-nmcBqr7Y.js";const he=e=>typeof e=="object"&&e!==null&&typeof e.subscribeFrames=="function"&&typeof e.blenderObjectName=="function",xe=e=>typeof e=="object"&&e!==null&&typeof e.documentId=="string"&&typeof e.hierarchy?.object3D=="function";function Z(){const e=Y().documents.context(q());return he(e)?e:null}function Q(e,t){if(e===null||!xe(t))return null;const n=Z();if(n===null)return null;if(e.id===t.documentId)return t.documentRootObject===n.root?{kind:"scene"}:null;const r=ce().byId.get(e.id);if(r?.type==="TSE_LAYER_COLLECTION")return{kind:"collection",path:r.path};const l=t.hierarchy.object3D(e.id);if(l===null)return null;if(l===n.root)return{kind:"scene"};const o=n.blenderObjectName(l);return o===null?null:{kind:"object",name:o}}let O={object:null,collection:null,context:null,views:new Map,error:null,loading:!1},ee=0;const W=new Set;let U=null;const N=new Set;let I=null,b=0,_=0;const T=new Set;function y(e,t=!1){O={...O,...e},ee+=1;for(const n of[...W])n();t&&Y().documents.contextChanged(q())}function ge(e){return W.add(e),()=>{W.delete(e)}}function V(){return ee}function F(){return O}function ye(){const e=I;b+=1,N.clear(),T.clear(),e!==null?te(e,!0):y({})}de(()=>{ye()});let k=null;function te(e,t=!1){k!==e&&(k=e,setTimeout(()=>{k===e&&(k=null,me(e,t))},0))}function be(e){return e.kind==="scene"?"":e.kind==="collection"?`collection:${e.path}`:e.name}function je(){if(U!==null)return;const e=Z();e!==null&&(U=e.subscribeFrames(ue))}async function me(e,t=!1){const n=e.startsWith("collection:")?e.slice(11):null,r=n===null&&e!==""?e:null,l=t&&I===e;I!==e&&(b+=1,N.clear(),T.clear());const o=b,c=++_;I=e;const u=l?O.context:null;l||y({loading:!0,object:r,collection:n,context:null,error:null,views:new Map});try{const s=await ae(r??void 0,n??void 0);if(o!==b||c!==_)return;if(l&&JSON.stringify(s)===JSON.stringify(u)){y({loading:!1,error:null});return}y({context:s,loading:!1,error:null},!0)}catch(s){if(o!==b||c!==_)return;y({context:null,loading:!1,error:w(s)},!0)}}function ne(e){if(!J())return;je();const t=be(e);I!==t&&te(t)}function R(e){const t=O.views.get(e);if(t!==void 0&&T.has(e)||N.has(e)||!J())return t;N.add(e);const n=b;return fe(e).then(r=>{if(n!==b||(N.delete(e),T.add(e),r===null))return;const l=new Map(O.views);l.set(e,r),y({views:l,error:null})}).catch(r=>{n===b&&(N.delete(e),y({error:w(r)}))}),t}async function ve(e,t,n,r){try{return await pe(e,t,n,r),T.delete(e),y({error:null}),!0}catch(l){return y({error:w(l)}),!1}}function w(e){return e instanceof Error?e.message:String(e)}const $=20,H=2,Se="40%",Ee=25,X=20,v=8,Ne=4,G=8,p=11,g=.5,x="#e6e6e6",Ae="#3d3d3d",Oe="#ffffff11",Re="rgba(0,0,0,0.12)",$e="#545454",Le="#3d3d3d",Ce="#4772b3",ie="#991616",Ie=8,Te=6,Pe=e=>Math.round(e*.2),re=e=>e.filter(t=>t.hidden!==!0&&t.undrawn!==!0);function P(){return j.useSyncExternalStore(ge,V,V)}function h({title:e,sub:t=!1,closed:n=!1,note:r,count:l,children:o}){const[c,u]=j.useState(!n);return i.jsxs("div",{style:{marginBottom:v,borderRadius:Ne,boxShadow:t?"none":`inset 0 0 0 1px ${Oe}`,background:t?Re:"transparent",overflow:"hidden"},children:[i.jsxs("button",{type:"button",onClick:()=>u(!c),style:{display:"flex",alignItems:"center",width:"100%",height:Ee,background:t?"transparent":Ae,border:"none",padding:`0 ${G}px 0 ${t?X+14-20:0}px`,color:x,font:`${p}px inherit`,textAlign:"left",cursor:"pointer",gap:Te},children:[i.jsx("span",{"aria-hidden":"true",style:{width:X-8,textAlign:"center",fontSize:Ie,opacity:.85},children:c?"▼":"▶"}),i.jsx("span",{style:{fontWeight:400},title:r,children:e}),l===void 0?null:i.jsx("span",{style:{opacity:g,marginLeft:"auto"},children:l})]}),c?i.jsx("div",{style:{padding:v},children:o}):null]})}function A({label:e,title:t,readonly:n,identifier:r,children:l}){return i.jsxs("div",{"data-rna-field":r??"","data-field-label":e,"data-field-readonly":n?"true":void 0,style:{display:"flex",alignItems:"center",minHeight:$,marginBottom:H,gap:G,opacity:n?g:1},title:t,children:[i.jsx("span",{style:{flex:`0 0 ${Se}`,textAlign:"right",color:x,fontSize:p,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),i.jsx("span",{style:{flex:"1 1 0",minWidth:0,display:"flex",gap:H},children:l})]})}const m={height:$,width:"100%",minWidth:0,boxSizing:"border-box",background:$e,border:`1px solid ${Le}`,borderRadius:Pe($),color:x,fontSize:p,padding:`0 ${G}px`,textAlign:"center"};function S({children:e}){return i.jsx("span",{style:{...m,display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})}const D=$-2*Math.floor(($-2)/6);function le({value:e,readonly:t,label:n,onChange:r}){return i.jsx("input",{type:"checkbox",checked:e,readOnly:t,...n===void 0?{}:{"aria-label":n},onChange:l=>!t&&r(l.target.checked),style:{width:D,height:D,margin:`${($-D)/2}px 0`,accentColor:Ce,cursor:t?"default":"pointer"}})}function oe({row:e,value:t,index:n,onWrite:r}){const[l,o]=j.useState(null),c=e.type==="FLOAT"?e.precision??3:0,u=l??(e.type==="FLOAT"?t.toFixed(c):String(t));return e.readonly?i.jsx(S,{children:u}):i.jsx("input",{type:"number","aria-label":L(e,n),value:u,...e.softMin===void 0?{}:{min:e.softMin},...e.softMax===void 0?{}:{max:e.softMax},...e.step===void 0?{}:{step:e.type==="FLOAT"?e.step/100:1},onChange:s=>o(s.target.value),onBlur:()=>{const s=Number(l);o(null),l!==null&&Number.isFinite(s)&&s!==t&&r(s,n)},onKeyDown:s=>{s.key==="Enter"&&s.target.blur(),s.key==="Escape"&&o(null)},style:m})}const B=["X","Y","Z","W"];function L(e,t){const n=e.name||e.identifier;return t===void 0?n:`${n} ${B[t]??t}`}function ke(e){const t=n=>Math.max(0,Math.min(255,Math.round((e[n]??0)**.45454545454545453*255)));return`rgb(${t(0)}, ${t(1)}, ${t(2)})`}function Me({row:e,onOpen:t}){const n=e.value;if(n===null||n.path===null)return i.jsx(S,{children:n===null?"None":n.name??n.type});const r=n.path;return i.jsx("button",{type:"button","aria-label":L(e),onClick:()=>t(r),style:{...m,cursor:"pointer",textAlign:"left"},title:r,children:n.name??n.type})}function Be({row:e,write:t}){const n=e.items??[];if(e.isFlag){const l=e.value??[];return i.jsx(S,{children:l.length===0?"None":l.join(", ")})}const r=String(e.value??"");return e.readonly?i.jsx(S,{children:n.find(l=>l.identifier===r)?.name??r}):i.jsx("select",{"aria-label":L(e),value:r,onChange:l=>t(l.target.value),style:{...m,textAlign:"left"},children:n.map(l=>i.jsx("option",{value:l.identifier,children:l.name},l.identifier))})}function Fe({row:e,write:t}){const n=String(e.value??"");return e.readonly?i.jsx(S,{children:n}):i.jsx(we,{value:n,label:L(e),onWrite:r=>t(r)})}function _e({row:e}){const t=e.value??[];return i.jsx("span",{style:{...m,background:ke(t),display:"block"},title:t.map(n=>n.toFixed(3)).join(", ")})}function De({row:e,label:t,title:n,write:r}){const l=e.value??[];return i.jsx(i.Fragment,{children:l.map((o,c)=>i.jsx(A,{label:We(t,c,l.length),title:n,readonly:e.readonly,identifier:`${e.identifier}[${c}]`,children:e.type==="BOOLEAN"?i.jsx(le,{value:o===!0,readonly:e.readonly,label:L(e,c),onChange:u=>r(u,c)}):i.jsx(oe,{row:e,value:Number(o),index:c,onWrite:(u,s)=>r(u,s)})},`${e.identifier}-${B[c]??c}`))})}function We(e,t,n){return n>B.length?t===0?e:`${e} ${t}`:`${t===0?`${e} `:""}${B[t]}`}function ze(e){const{row:t,write:n}=e;switch(t.type){case"POINTER":return i.jsx(Me,{...e});case"ENUM":return i.jsx(Be,{...e});case"STRING":return i.jsx(Fe,{...e});case"BOOLEAN":return i.jsx(le,{value:t.value===!0,readonly:t.readonly,label:L(t),onChange:n});default:return i.jsx(oe,{row:t,value:Number(t.value??0),onWrite:r=>n(r)})}}function K({row:e,path:t,onOpen:n}){const r=(a,f)=>void ve(t,e.identifier,a,f),l=e.name||e.identifier,o=`${e.identifier} — ${e.type}${e.subtype==="NONE"?"":`/${e.subtype}`}${e.readonly?" (read-only)":""}${e.description?`
|
|
2
|
-
${e.description}`:""}`,c={row:e,path:t,write:r,onOpen:n},u=e.valueOmitted??e.valueError;if(u!==void 0)return i.jsx(A,{label:l,title:o,readonly:!0,identifier:e.identifier,children:i.jsx(S,{children:u})});if(e.type==="COLLECTION")return i.jsx(Ge,{label:l,title:o,value:e.value??{count:0},identifier:e.identifier,onOpen:()=>n(`${t}.${e.identifier}`)});const s=e.type==="INT"||e.type==="FLOAT";return e.arrayLength>0&&(s||e.type==="BOOLEAN")?s&&(e.subtype==="COLOR"||e.subtype==="COLOR_GAMMA")?i.jsx(A,{label:l,title:o,readonly:e.readonly,identifier:e.identifier,children:i.jsx(_e,{...c})}):i.jsx(De,{...c,label:l,title:o}):i.jsx(A,{label:l,title:o,readonly:e.readonly,identifier:e.identifier,children:ze(c)})}function we({value:e,label:t,onWrite:n}){const[r,l]=j.useState(null);return i.jsx("input",{type:"text",...t===void 0?{}:{"aria-label":t},value:r??e,onChange:o=>l(o.target.value),onBlur:()=>{r!==null&&r!==e&&n(r),l(null)},onKeyDown:o=>{o.key==="Enter"&&o.target.blur(),o.key==="Escape"&&l(null)},style:{...m,textAlign:"left"}})}function Ge({label:e,title:t,value:n,identifier:r,onOpen:l}){const[o,c]=j.useState(!1),u=n.names??[];return i.jsxs(i.Fragment,{children:[i.jsx(A,{label:e,title:t,readonly:!1,identifier:r,children:i.jsxs("button",{type:"button","aria-label":e,onClick:()=>u.length?c(!o):l(),style:{...m,cursor:"pointer",textAlign:"left"},children:[u.length?`${o?"▼":"▶"} `:"",n.count," ",n.count===1?"item":"items"]})}),o?u.map(s=>i.jsx(A,{label:"",readonly:!0,children:i.jsx(S,{children:s})},s)):null]})}const z=e=>typeof e=="string"?e:e.property;function Ke(e){if(e.active===void 0)return{path:null,index:null};const t=F().context?.[e.active];if(typeof t!="object"||t===null)return{path:null,index:null};const n=t;return{path:n.path??null,index:typeof n.index=="number"?n.index:null}}function Ue({panel:e,path:t,onOpen:n}){P();const r=R(t),l=Ke(e);return r===void 0?i.jsx(h,{title:e.title,closed:e.closed===!0,children:i.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:["Reading ",t,"…"]})}):r.kind!=="collection"?i.jsx(h,{title:e.title,closed:e.closed===!0,note:t,children:i.jsxs("div",{style:{color:ie,fontSize:p},children:[t," is not a collection — this panel is declared `collection: true`."]})}):i.jsxs(h,{title:e.title,closed:e.closed===!0,note:t,count:r.count,children:[r.items.length===0?i.jsx("div",{style:{color:x,opacity:g,fontSize:p},children:"None"}):null,r.items.map((o,c)=>i.jsx(h,{title:`${o.path!==null&&o.path===l.path||c===l.index?"● ":""}${o.name??o.type}`,sub:!0,children:o.path===null?i.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:[o.type," — RNA gives this member no address."]}):i.jsx(Ve,{path:o.path,properties:e.properties,andDeclared:e.andDeclared===!0,onOpen:n})},o.path??o.name??o.type))]})}function Ve({path:e,properties:t,andDeclared:n=!1,onOpen:r}){P();const l=R(e);if(l===void 0)return i.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:["Reading ",e,"…"]});const o=l.kind==="struct"?l.groups.flatMap(a=>a.rows):[],c=new Map(o.map(a=>[a.identifier,a])),u=t.map(a=>c.get(z(a))).filter(a=>a!==void 0),s=n&&l.kind==="struct"?re(o).filter(a=>a.group===l.type&&!t.some(f=>z(f)===a.identifier)):[];return i.jsx(i.Fragment,{children:[...u,...s].map(a=>i.jsx(K,{row:a,path:e,onOpen:r},a.identifier))})}function He(e,t){if(e.engine!==void 0){const n=F().context?.engine;if(n===void 0)return null;if(!e.engine.includes(n))return!1}for(const n of e.when??[]){const r=n.from??e.from,l=r?t.find(s=>s.label===r):t[0];if(l===void 0)return!1;const o=R(l.path);if(o===void 0)return null;if(o.kind!=="struct")return!1;const c=o.groups.flatMap(s=>s.rows).find(s=>s.identifier===n.property);if(c===void 0)return!1;const u=c.value;if(typeof u!="string"&&typeof u!="number"&&typeof u!="boolean"||n.is!==void 0&&!n.is.includes(u)||n.isNot!==void 0&&n.isNot.includes(u))return!1}return!0}function se({panel:e,paths:t,onOpen:n}){if(P(),He(e,t)!==!0)return null;const r=e.from?t.find(s=>s.label===e.from):t[0];if(r!==void 0&&e.collection===!0)return i.jsx(Ue,{panel:e,path:r.path,onOpen:n});if(r===void 0)return null;const l=R(r.path),o=e.sub??[],c=[],u=[];for(const s of e.properties){const a=z(s),f=typeof s=="string"?r:t.find(C=>C.label===s.from),d=f===void 0?void 0:R(f.path),E=d?.kind==="struct"?d.groups.flatMap(C=>C.rows).find(C=>C.identifier===a):void 0;E===void 0||f===void 0?u.push(a):c.push({identifier:a,row:E,path:f.path})}return l===void 0?i.jsx(h,{title:e.title,closed:e.closed===!0,children:i.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:["Reading ",r.path,"…"]})}):c.length===0&&o.length===0?null:i.jsxs(h,{title:e.title,closed:e.closed===!0,note:u.length===0?`${r.path}`:`${r.path}
|
|
3
|
-
Not on this datablock: ${u.join(", ")}`,children:[c.map(s=>i.jsx(K,{row:s.row,path:s.path,onOpen:n},s.identifier)),o.map((s,a)=>i.jsx(se,{panel:s,paths:t,onOpen:n},`${a}:${s.title}`))]})}function M({path:e,onOpen:t}){P();const n=R(e);return n===void 0?i.jsxs("div",{style:{color:x,opacity:g,fontSize:p,padding:v},children:["Reading ",e,"…"]}):n.kind==="collection"?i.jsxs(i.Fragment,{children:[n.items.length===0?i.jsx("div",{style:{color:x,opacity:g,fontSize:p},children:n.count===0?"None":`${n.count} items`}):null,n.items.map(r=>i.jsx(h,{title:r.name??r.type,sub:!0,children:r.path===null?i.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:[r.type," — RNA gives this member no address."]}):i.jsx(M,{path:r.path,onOpen:t})},r.path??r.name??r.type))]}):i.jsx(i.Fragment,{children:n.groups.map(r=>{const l=re(r.rows);return l.length===0?null:i.jsx(h,{title:r.label,sub:!0,children:l.map(o=>i.jsx(K,{row:o,path:n.path,onOpen:t},o.identifier))},r.id)})})}function Xe({tabId:e,subject:t,curated:n=[]}){P(),j.useEffect(()=>ne(t),[t]);const[r,l]=j.useState([]),o=F(),c=o.context?.tabs.find(d=>d.id===e)??null,u=c?.paths??[],s=u.map(d=>d.path).join("|");if(j.useEffect(()=>l([]),[s]),o.error!==null)return i.jsx("div",{style:{color:ie,fontSize:p,padding:v},children:o.error});if(c===null)return i.jsx("div",{style:{color:x,opacity:g,fontSize:p,padding:v},children:o.loading?"Reading the engine…":"Blender shows no properties here."});const a=d=>l(E=>[...E,d]),f=r[r.length-1];return i.jsxs("div",{style:{padding:`${v}px 0`},children:[r.length>0?i.jsxs("button",{type:"button",onClick:()=>l(d=>d.slice(0,-1)),style:{...m,width:"auto",marginBottom:v,cursor:"pointer",textAlign:"left"},title:f,children:["← ",c.label]}):null,f!==void 0?i.jsx(h,{title:f.slice(f.lastIndexOf(".")+1),children:i.jsx(M,{path:f,onOpen:a})}):i.jsxs(i.Fragment,{children:[n.map((d,E)=>i.jsx(se,{panel:d,paths:u,onOpen:a},`${E}:${d.title}`)),n.length>0?i.jsx(h,{title:"All properties",closed:!0,children:u.map(d=>i.jsx(h,{title:d.label,sub:!0,children:i.jsx(M,{path:d.path,onOpen:a})},d.path))}):u.map(d=>i.jsx(h,{title:d.label,children:i.jsx(M,{path:d.path,onOpen:a})},d.path))]})]})}function Qe(e){return(t,n)=>{const r=Q(t,n);if(r===null)return!1;if(ne(r),e.standing==="any")return!0;if(e.standing==="object")return r.kind==="object";const l=F(),o=r.kind==="object"?r.name:null,c=r.kind==="collection"?r.path:null;return l.object!==o||l.collection!==c?!1:l.context?.tabs.some(u=>u.id===e.id)??!1}}function et(e){return function({node:n,adapter:r}){const l=Q(n,r);return l===null?null:i.jsx(Xe,{tabId:e.id,subject:l,curated:e.curated??[]})}}export{Qe as a,et as b,F as c,Q as r};
|