@volter/game-editor 0.5.79 → 0.5.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/BUNDLED_NOTICES +22 -22
  2. package/catalog/entries/blender.json +2 -2
  3. package/catalog/entries/music.json +2 -2
  4. package/dist/.vite/manifest.json +2123 -2123
  5. package/dist/assets/{AssetBudgetPanel-oKdjrwih.js → AssetBudgetPanel-C-RNso12.js} +3 -3
  6. package/dist/assets/{AudioViewer-B1k9_wIO.js → AudioViewer-BQ4yQJmw.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument-CidIZfJc.js → CanvasBoardDocument-D1_2Ahx7.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-D-a2OjoE.js → CanvasSceneViewport-BdHcsAyR.js} +1 -1
  9. package/dist/assets/{ColorInput-CsU6nBCb.js → ColorInput-B-GRGKwB.js} +1 -1
  10. package/dist/assets/{EntityModelDocument-BGtt8kn8.js → EntityModelDocument-BkRbfE7C.js} +1 -1
  11. package/dist/assets/{EnvironmentAssetDocument-Cv_9BvF0.js → EnvironmentAssetDocument-BbWPrmTc.js} +1 -1
  12. package/dist/assets/{GameplaySessionTimeline-c77A4RAA.js → GameplaySessionTimeline-Bi_Z_lDm.js} +1 -1
  13. package/dist/assets/{ImageViewer-BpjPWpIS.js → ImageViewer-CVYDgTSj.js} +1 -1
  14. package/dist/assets/InspectorObjectPreview-BooanIbq.js +1 -0
  15. package/dist/assets/{JsonAssetDocument-BPN3E7Ai.js → JsonAssetDocument-O-o1eVJB.js} +1 -1
  16. package/dist/assets/{LiveModuleDocument-CqN29siR.js → LiveModuleDocument-CCpe63vw.js} +1 -1
  17. package/dist/assets/{LutAssetDocument-BV6N2-qQ.js → LutAssetDocument-C_QGvjj7.js} +1 -1
  18. package/dist/assets/{ModelAssetDocument-Bf5JZ8TF.js → ModelAssetDocument-DKyxph4r.js} +1 -1
  19. package/dist/assets/{NonThreeAuthoringBootstrap-CZvbouNB.js → NonThreeAuthoringBootstrap-DkfIBzMs.js} +1 -1
  20. package/dist/assets/{Object3DDocumentToolbar-Cm4ma8tv.js → Object3DDocumentToolbar-BGkgzg_Y.js} +1 -1
  21. package/dist/assets/Object3DDocumentViewport-C81c8PFJ.js +2 -0
  22. package/dist/assets/{Object3DPreview-BlzCte35.js → Object3DPreview-DI7aoPKe.js} +1 -1
  23. package/dist/assets/{OnlineAssetDetail-DaIvao3s.js → OnlineAssetDetail-BIRXvQsJ.js} +1 -1
  24. package/dist/assets/{PlayBar-DJ1LfrgS.js → PlayBar-BYVJHvd5.js} +1 -1
  25. package/dist/assets/{QuarksAssetDocument-DcjHKYru.js → QuarksAssetDocument-DEcSmewA.js} +1 -1
  26. package/dist/assets/{ReactCanvasControls-DSwW_3qn.js → ReactCanvasControls-DplBODky.js} +1 -1
  27. package/dist/assets/{RootSelectionOverlay-QJRz70Z_.js → RootSelectionOverlay-BzEZwAaO.js} +1 -1
  28. package/dist/assets/{ShaderAssetDocument-BCAyVHUs.js → ShaderAssetDocument-ysUJR4Np.js} +1 -1
  29. package/dist/assets/{ShadowEditor-ChBlM7up.js → ShadowEditor-BKz_sq1R.js} +1 -1
  30. package/dist/assets/{SourceAssetViewer-t8M_wt4P.js → SourceAssetViewer-DhoQonvP.js} +1 -1
  31. package/dist/assets/{StageHost-BToQY05P.js → StageHost-CSw286Im.js} +2 -2
  32. package/dist/assets/{StoryPreviewMount-DQQUiOyt.js → StoryPreviewMount-BF6vqmhx.js} +1 -1
  33. package/dist/assets/{ThreeBoardDocument-B0E8STg7.js → ThreeBoardDocument-vedTeiN9.js} +2 -2
  34. package/dist/assets/{ThreeIsolationSceneContent-C5fELwmY.js → ThreeIsolationSceneContent-TT4T-ehp.js} +1 -1
  35. package/dist/assets/{ToolObject3DPreview-COEdg5Yk.js → ToolObject3DPreview-C52QCJAO.js} +1 -1
  36. package/dist/assets/{Toolbar-Dc2590c_.js → Toolbar-Bo-l61Lo.js} +1 -1
  37. package/dist/assets/{TransientHint-Ck6-tCTl.js → TransientHint-DFAcEEFI.js} +1 -1
  38. package/dist/assets/{VideoViewer-Ceo0o85u.js → VideoViewer-BM_9gSgl.js} +1 -1
  39. package/dist/assets/{ViewportShadingMenu-pE6Hv73N.js → ViewportShadingMenu-CWutLX1G.js} +1 -1
  40. package/dist/assets/{active-ingest-DIgBJBWV.js → active-ingest-BuNeO4Mb.js} +2 -2
  41. package/dist/assets/{animation-clock-BsTiJqzv.js → animation-clock-B-fl-HTL.js} +1 -1
  42. package/dist/assets/{animation-mixers.service-DZMXEUKZ.js → animation-mixers.service-DgxB7R_k.js} +1 -1
  43. package/dist/assets/{animation-timeline.utility-C1kYhS_b.js → animation-timeline.utility-RWwRwQvM.js} +1 -1
  44. package/dist/assets/{asset-budget-asset.menu-CgLl0jxU.js → asset-budget-asset.menu-D2Tdwqxf.js} +1 -1
  45. package/dist/assets/{asset-budget.action-BM9nPYFm.js → asset-budget.action-WMiFAlTi.js} +1 -1
  46. package/dist/assets/{asset-budget.document-CIBwqW8O.js → asset-budget.document-CckPEzno.js} +1 -1
  47. package/dist/assets/{asset-budget.menu-CIYQlzVL.js → asset-budget.menu-DPMPOTSo.js} +1 -1
  48. package/dist/assets/{asset-editor-persistence-FoI6VqbB.js → asset-editor-persistence-DttxUta0.js} +1 -1
  49. package/dist/assets/{asset-loaders-DIhOedSj.js → asset-loaders-9M6lxMew.js} +1 -1
  50. package/dist/assets/{asset-preview-J56EM7ai.js → asset-preview-C36PaXvM.js} +1 -1
  51. package/dist/assets/{audio-unlock.service-CQhkc6fU.js → audio-unlock.service-BeHFOKOB.js} +1 -1
  52. package/dist/assets/{audio.utility-ZTVc6wlz.js → audio.utility-HRjVG-Co.js} +1 -1
  53. package/dist/assets/autoplay.service-EjNkSGFD.js +1 -0
  54. package/dist/assets/{babylon-authoring-adapter-qU-GP8QL.js → babylon-authoring-adapter-BHQY7yIy.js} +1 -1
  55. package/dist/assets/{binding-resolver-iMKdp_Dm.js → binding-resolver-TD7-fKuX.js} +2 -2
  56. package/dist/assets/{blender-node-editor.document-BktVlaBT.js → blender-node-editor.document-Bw2QbNTV.js} +1 -1
  57. package/dist/assets/{blender-properties-tab-Bi7EkqZ4.js → blender-properties-tab-BnIbJN4f.js} +1 -1
  58. package/dist/assets/blender-runtime-host-W_QVh8pY.js +4 -0
  59. package/dist/assets/{blender-runtime-skin-DGPSGVTB.js → blender-runtime-skin-CwXXiusi.js} +1 -1
  60. package/dist/assets/blender-runtime.document-CxTCG8RI.js +12 -0
  61. package/dist/assets/{blender-timeline.document-BdKv86rL.js → blender-timeline.document-CESN0FrA.js} +1 -1
  62. package/dist/assets/{blender-uv-editor.document-B8KDPYF0.js → blender-uv-editor.document-BdIUMC5X.js} +1 -1
  63. package/dist/assets/{blender-version.status-Tujyesw9.js → blender-version.status-CBKgGtQ0.js} +1 -1
  64. package/dist/assets/{blender.command-0Er75bJF.js → blender.command-ChUV_DJE.js} +1 -1
  65. package/dist/assets/{board-guides-BvzDdD2y.js → board-guides-ClHJXXuu.js} +1 -1
  66. package/dist/assets/{bridge.command-CRyms6ax.js → bridge.command-DK8zE8yt.js} +3 -3
  67. package/dist/assets/{browserAll-DUlxC8yY.js → browserAll-Be-P25YM.js} +1 -1
  68. package/dist/assets/{build-player.document-BuFNx_-Q.js → build-player.document-Clkf52m6.js} +1 -1
  69. package/dist/assets/{build-profiles.document-xu8oCc9h.js → build-profiles.document-CNZvcPor.js} +1 -1
  70. package/dist/assets/{build-progress.status-BPDoYt8o.js → build-progress.status-BMfffkUW.js} +1 -1
  71. package/dist/assets/{build-session-BrAG7tBV.js → build-session-BHUOWzok.js} +1 -1
  72. package/dist/assets/{build.action-CCppyLBx.js → build.action-BGriOSGD.js} +1 -1
  73. package/dist/assets/{build.command-Inptj7R-.js → build.command-BU7Wcsn5.js} +1 -1
  74. package/dist/assets/{build.header-DXGyFt56.js → build.header-B6KRt0O_.js} +1 -1
  75. package/dist/assets/{build.menu-8VNdh6Kh.js → build.menu-CpxN2aww.js} +1 -1
  76. package/dist/assets/{build.service-B98j6yu1.js → build.service-LRCZ0vL7.js} +1 -1
  77. package/dist/assets/{camera-PuR5cfKw.js → camera-D8fxcMUB.js} +1 -1
  78. package/dist/assets/{camera-runtime.inspector-DuLoTNGH.js → camera-runtime.inspector-5RS6wvw2.js} +1 -1
  79. package/dist/assets/{canvas-design-mount-DFvmQJTh.js → canvas-design-mount-CoKGVZii.js} +3 -3
  80. package/dist/assets/{canvas-entry-runtime-BVnhMBaW.js → canvas-entry-runtime-Do5zL9dN.js} +2 -2
  81. package/dist/assets/{canvas-preview-frames-C-dFTVWu.js → canvas-preview-frames-Jsd4Gi5S.js} +1 -1
  82. package/dist/assets/{canvas-story-capture.service-Bg4fphDj.js → canvas-story-capture.service-0SYz8LrL.js} +2 -2
  83. package/dist/assets/{capability-coverage-B0oT2N3Z.js → capability-coverage-BqCZSu0R.js} +1 -1
  84. package/dist/assets/{collaboration-presence-CP5gEnxY.js → collaboration-presence-WWC9ZQsq.js} +1 -1
  85. package/dist/assets/{collider-DrfGXvUO.js → collider-DsdfCyWG.js} +1 -1
  86. package/dist/assets/{component-board.service-mzEFwa--.js → component-board.service-6JDsY08Z.js} +2 -2
  87. package/dist/assets/{component-board.service-MhNc_Ru3.js → component-board.service-DZWOfhbB.js} +2 -2
  88. package/dist/assets/{component-board.service-CvEW_Te9.js → component-board.service-Dj_INzxs.js} +2 -2
  89. package/dist/assets/{component-contracts.service-zrpqDXgQ.js → component-contracts.service-DXfwve-4.js} +1 -1
  90. package/dist/assets/{component-instance-root-BpMFxtbQ.js → component-instance-root-pq7uyyej.js} +1 -1
  91. package/dist/assets/{component-verbs.command-8Kl0HNWX.js → component-verbs.command-Cd_-gQ-Z.js} +1 -1
  92. package/dist/assets/{component-verbs.service-CxZFYomt.js → component-verbs.service-Do8eBA--.js} +1 -1
  93. package/dist/assets/{config-BKyBW2FV.js → config-CnqnR-iz.js} +2 -2
  94. package/dist/assets/{configurations-B391DE84.js → configurations-DFYaoXBK.js} +1 -1
  95. package/dist/assets/{connection.status-CDK2Dxmh.js → connection.status-BkhMFG12.js} +1 -1
  96. package/dist/assets/{constraints.inspector-BvDktIDy.js → constraints.inspector-CPWFDlY8.js} +1 -1
  97. package/dist/assets/{content-bounds-BM2BJV41.js → content-bounds-Ax7CFkXJ.js} +1 -1
  98. package/dist/assets/{contract-system-adapters-Dv5mUMr_.js → contract-system-adapters-0Odxcy6d.js} +1 -1
  99. package/dist/assets/{coverage.service-BLbBH9i2.js → coverage.service-CcKdk7iJ.js} +1 -1
  100. package/dist/assets/{create-runtime-BvzMRqkg.js → create-runtime-BhdSylT1.js} +1 -1
  101. package/dist/assets/{curve-BbX4M8ka.js → curve-DiuqWf0-.js} +1 -1
  102. package/dist/assets/{data-asset-DEfrCU5L.js → data-asset-BiqUYQnI.js} +1 -1
  103. package/dist/assets/{data-ref-CwypqVYb.js → data-ref-mo1ecq_T.js} +1 -1
  104. package/dist/assets/{debug-bridge-B3ag_ARb.js → debug-bridge-BN4INYe7.js} +1 -1
  105. package/dist/assets/{debug-registry-DlrL6r1z.js → debug-registry-BW5cue8V.js} +1 -1
  106. package/dist/assets/{deferred-ingest-play-tx7qVcg3.js → deferred-ingest-play-C6qytzjB.js} +2 -2
  107. package/dist/assets/{design-time-canvas-mount-L1S8lY0u.js → design-time-canvas-mount-mhxQlHHP.js} +2 -2
  108. package/dist/assets/{design-time-layers-DxZgHWM2.js → design-time-layers-CCEX-9ul.js} +1 -1
  109. package/dist/assets/{design-time-mount.service-Bo9K8hZb.js → design-time-mount.service-Cs_mT_-d.js} +2 -2
  110. package/dist/assets/{design-time-mount.service-DVYJJr4l.js → design-time-mount.service-DPEpO4ny.js} +2 -2
  111. package/dist/assets/{design-time-react-mount-Cw_YU4iA.js → design-time-react-mount-RdZmD9Dp.js} +1 -1
  112. package/dist/assets/{document-preview-three-BS7op9Kh.js → document-preview-three-D4M5qFH3.js} +1 -1
  113. package/dist/assets/{dom-authoring-adapter-DeVD6HLk.js → dom-authoring-adapter-B97hwEwz.js} +1 -1
  114. package/dist/assets/{draco3d-_8eRv2Qk.js → draco3d-B_PtVdzj.js} +1 -1
  115. package/dist/assets/{edit-mode-audio.service-BO6CbCXN.js → edit-mode-audio.service-BZxbnyf-.js} +1 -1
  116. package/dist/assets/{edit-mode-authoring-RAf4S6PI.js → edit-mode-authoring-CVKwIPOy.js} +1 -1
  117. package/dist/assets/{edit-mode-networking.service-QiUNWbxh.js → edit-mode-networking.service-2aXyBwkO.js} +1 -1
  118. package/dist/assets/{editor-api-B_UrHHhL.js → editor-api-B0aNu3G5.js} +1 -1
  119. package/dist/assets/{editor-layers-C47WUNtv.js → editor-layers-DI1Wkr8F.js} +1 -1
  120. package/dist/assets/{editor-shell-store-B-64vpgA.js → editor-shell-store-DlGykD-E.js} +1 -1
  121. package/dist/assets/{entity-object-DBXB7ABG.js → entity-object-C374JqRs.js} +1 -1
  122. package/dist/assets/{extend-hLINO4Zy.js → extend-BOaYynPp.js} +1 -1
  123. package/dist/assets/{fork-menu-BWis777M.js → fork-menu-DGjsgL8L.js} +1 -1
  124. package/dist/assets/{frame-debugger-store-CiuSELDU.js → frame-debugger-store-Czy2FTqO.js} +1 -1
  125. package/dist/assets/{game-contract-seams-D4x_QFfy.js → game-contract-seams-GoIZaA0s.js} +1 -1
  126. package/dist/assets/{game-css-scope-transform-BFCy45PO.js → game-css-scope-transform-9t97Smqk.js} +1 -1
  127. package/dist/assets/{game-document.service-LgRTA5er.js → game-document.service-DBSsz8Ne.js} +1 -1
  128. package/dist/assets/{game-eval.command-i4tbTEzA.js → game-eval.command-BYEEWjUv.js} +1 -1
  129. package/dist/assets/{game-module-access-CmfN4vfG.js → game-module-access-BqevF7uR.js} +1 -1
  130. package/dist/assets/{game-network-Bs_aLrfo.js → game-network-DtzKFtge.js} +3 -3
  131. package/dist/assets/{gameplay-export-DMycxmRI.js → gameplay-export-BNVUERuW.js} +1 -1
  132. package/dist/assets/{gameplay-replay-CQwJHBcQ.js → gameplay-replay-DEKg9ROx.js} +1 -1
  133. package/dist/assets/{gameplay.command-DwbIk4qS.js → gameplay.command-BrleMyQK.js} +1 -1
  134. package/dist/assets/{generation-jobs-DHR06-Ow.js → generation-jobs-Bmm6k_GH.js} +1 -1
  135. package/dist/assets/{generation.service-C3sjmS56.js → generation.service-nVpgwKEB.js} +1 -1
  136. package/dist/assets/{generations-QDWWr3sT.js → generations-AU4LkWAl.js} +1 -1
  137. package/dist/assets/{generations.status-8UpzzSN6.js → generations.status-CSeb5inI.js} +1 -1
  138. package/dist/assets/{hierarchy-marks-DDRF3quV.js → hierarchy-marks-EEQa08In.js} +1 -1
  139. package/dist/assets/{hosted-asset-materialization-DFetjs7r.js → hosted-asset-materialization-DZlaRGkJ.js} +1 -1
  140. package/dist/assets/{index-DL3yQMTk.js → index-BHccVo52.js} +2 -2
  141. package/dist/assets/{index-CUyoEnie.js → index-BpXj_ZfC.js} +1 -1
  142. package/dist/assets/{index-DZg4GXi0.js → index-CUBra63E.js} +1 -1
  143. package/dist/assets/{index-DxV6Akny.js → index-DlFjiZgV.js} +1 -1
  144. package/dist/assets/{index-DGgVCKlK.js → index-N4BP9b5x.js} +1 -1
  145. package/dist/assets/{index-CkpBXMDJ.js → index-OlF4eBxk.js} +1 -1
  146. package/dist/assets/{index-BlOoiZ_I.js → index-PKSmixoy.js} +1 -1
  147. package/dist/assets/{index-JjEYIC4G.js → index-flxMlfV4.js} +7 -7
  148. package/dist/assets/{index-Cdjg29qG.js → index-ynpEqujB.js} +1 -1
  149. package/dist/assets/{inference-diagnostics-kHRsQw1P.js → inference-diagnostics-MWqnRUsN.js} +1 -1
  150. package/dist/assets/{ingest-boot-viewport-BO7yl504.js → ingest-boot-viewport-CT1eaWqO.js} +1 -1
  151. package/dist/assets/{ingest-siblings-C-RhYsUb.js → ingest-siblings-BJ66Uen_.js} +1 -1
  152. package/dist/assets/{ingest-source-persistence-B52PvpPx.js → ingest-source-persistence-CJGE5-AU.js} +1 -1
  153. package/dist/assets/{ingest.service-CXx-aW-5.js → ingest.service-2TRoiqQ8.js} +1 -1
  154. package/dist/assets/{inspect-KwcXV5-u.js → inspect-Dl5bH02T.js} +1 -1
  155. package/dist/assets/instances.command-2QbcHvH-.js +1 -0
  156. package/dist/assets/{json-history-resource-B0kkSep8.js → json-history-resource-DTUpacfx.js} +1 -1
  157. package/dist/assets/{layered-pick-ClYksj6v.js → layered-pick-DKNj5L29.js} +1 -1
  158. package/dist/assets/{light-C33qOzVd.js → light-CX-83nBK.js} +1 -1
  159. package/dist/assets/{live-project-verbs-CIlCfET4.js → live-project-verbs-nmQ1saHI.js} +1 -1
  160. package/dist/assets/{machine.document-KKGimt_o.js → machine.document-DE8aRbOi.js} +1 -1
  161. package/dist/assets/{machines.finder-DA-qVsE-.js → machines.finder-CZ3P0odZ.js} +1 -1
  162. package/dist/assets/{material-BPlHfj-y.js → material-f1KOKE_r.js} +1 -1
  163. package/dist/assets/{material-factory-DIU9do_v.js → material-factory-DkCPSCLt.js} +1 -1
  164. package/dist/assets/{mesh-D3gE3KD_.js → mesh-DM3TH9xS.js} +1 -1
  165. package/dist/assets/{model-asset-sections.service-HoRKwaP6.js → model-asset-sections.service-CL4Rlwvc.js} +1 -1
  166. package/dist/assets/{model-inspection-BMy0MuzJ.js → model-inspection-BS3uYvYU.js} +1 -1
  167. package/dist/assets/{model-thumbnail-ICdHSiW1.js → model-thumbnail-WJb6B3qQ.js} +1 -1
  168. package/dist/assets/{models.finder-DvULfruZ.js → models.finder-BXJhCiw9.js} +1 -1
  169. package/dist/assets/{module-mode-BTXto0oj.js → module-mode-CtoVZDhp.js} +2 -2
  170. package/dist/assets/{mount-canvas-ingest-root-BFQfgTuE.js → mount-canvas-ingest-root-DI8iSEV4.js} +2 -2
  171. package/dist/assets/{mount-dom-ingest-root-C4Deoodh.js → mount-dom-ingest-root-n4tbYw-j.js} +2 -2
  172. package/dist/assets/{mount-ingest-root-BnX5FYpQ.js → mount-ingest-root-pyV6jEkB.js} +2 -2
  173. package/dist/assets/{mount-manifest-CK1RiS8E.js → mount-manifest-DsGMOkm4.js} +1 -1
  174. package/dist/assets/{mount-three-ingest-root-C6pYTH-h.js → mount-three-ingest-root-CeH_uOP0.js} +1 -1
  175. package/dist/assets/{mounted-authoring-BRmJcses.js → mounted-authoring-BHpx-z2Y.js} +1 -1
  176. package/dist/assets/{mounted-story-viewport-source-DghPnLY9.js → mounted-story-viewport-source-D8kOfa96.js} +1 -1
  177. package/dist/assets/{native-debug-module-ojTkP52T.js → native-debug-module-lR1oG4Vd.js} +1 -1
  178. package/dist/assets/{navigation-CTZYysxE.js → navigation-DvTw5hJ4.js} +1 -1
  179. package/dist/assets/{navmesh.menu-COJ77FTK.js → navmesh.menu-BaBNScgJ.js} +1 -1
  180. package/dist/assets/{navmesh.service-tVf8xf8f.js → navmesh.service-BK6BlOz3.js} +1 -1
  181. package/dist/assets/network-observer.service-CskzAy97.js +1 -0
  182. package/dist/assets/{network.utility-DNmrBkHK.js → network.utility-BJ3bZOCQ.js} +1 -1
  183. package/dist/assets/{object3d-document-session-registry-CIdYrDwO.js → object3d-document-session-registry-DI9WfJDy.js} +2 -2
  184. package/dist/assets/{oid-transform-BMGB2u8Z.js → oid-transform-RlofQ4tU.js} +1 -1
  185. package/dist/assets/{particles-CmcHZZqz.js → particles-CjR9Po6N.js} +1 -1
  186. package/dist/assets/{pixi-authoring-adapter-BLptyAwL.js → pixi-authoring-adapter-B_mXxWkJ.js} +1 -1
  187. package/dist/assets/{pixi-live-write-target-DMGlsQdL.js → pixi-live-write-target-tm5yHKss.js} +1 -1
  188. package/dist/assets/{play.command-D0aUzhnI.js → play.command-BmsyGtu0.js} +2 -2
  189. package/dist/assets/{presentation-BOKcaCle.js → presentation-gTgwItzD.js} +1 -1
  190. package/dist/assets/{product-DBhE7XzM.js → product-Cmel9X9k.js} +1 -1
  191. package/dist/assets/{profiler.action-DFPR0GaW.js → profiler.action-DSM2uSYR.js} +1 -1
  192. package/dist/assets/{profiler.menu-Cjq4IMjK.js → profiler.menu-CcYyqUfU.js} +1 -1
  193. package/dist/assets/{profiler.utility-O_BbyzQ6.js → profiler.utility-CQtqdQgC.js} +1 -1
  194. package/dist/assets/{project-authoring-session-Fg6BVKiU.js → project-authoring-session-BqZuntp2.js} +2 -2
  195. package/dist/assets/{properties-bone-constraints.inspector-Df8r9rGo.js → properties-bone-constraints.inspector-D3XrqptB.js} +1 -1
  196. package/dist/assets/{properties-bone.inspector-BHOmG-w_.js → properties-bone.inspector-CmVamAC6.js} +1 -1
  197. package/dist/assets/{properties-collection.inspector-COUpmMSs.js → properties-collection.inspector-BGi5eXmI.js} +1 -1
  198. package/dist/assets/{properties-constraints.inspector-DSDh4Uba.js → properties-constraints.inspector-C62EOuWg.js} +1 -1
  199. package/dist/assets/{properties-data.inspector-DjjFOVxW.js → properties-data.inspector-qDFtLdw8.js} +1 -1
  200. package/dist/assets/{properties-material.inspector-DPKY8b2v.js → properties-material.inspector-B--PD0se.js} +1 -1
  201. package/dist/assets/{properties-modifiers.inspector-BtNVTrKN.js → properties-modifiers.inspector-1tdk1EKp.js} +1 -1
  202. package/dist/assets/{properties-object.inspector-DYNpha7x.js → properties-object.inspector-CYH5w2un.js} +1 -1
  203. package/dist/assets/{properties-output.inspector-CBzwfSQQ.js → properties-output.inspector-C78QuVlY.js} +1 -1
  204. package/dist/assets/{properties-particles.inspector-5DlYLg0u.js → properties-particles.inspector-DyDiMjmC.js} +1 -1
  205. package/dist/assets/{properties-physics.inspector-D__Z169g.js → properties-physics.inspector-DG5GOyLE.js} +1 -1
  206. package/dist/assets/{properties-render.inspector-Dvnehd8j.js → properties-render.inspector-D8ldGTdq.js} +1 -1
  207. package/dist/assets/{properties-scene.inspector-DxGBiL_G.js → properties-scene.inspector-Cf_KBWbv.js} +1 -1
  208. package/dist/assets/{properties-texture.inspector-5qsUhAvc.js → properties-texture.inspector-BznU5kNc.js} +1 -1
  209. package/dist/assets/{properties-view-layer.inspector-BHv0B73V.js → properties-view-layer.inspector-pnRv91FS.js} +1 -1
  210. package/dist/assets/{properties-world.inspector-D53Cc2Fs.js → properties-world.inspector-CzUtvYuC.js} +1 -1
  211. package/dist/assets/{r3f-design-session-BhddL1e6.js → r3f-design-session-Dwqxg13i.js} +2 -2
  212. package/dist/assets/{r3f-physics-binding-D41qQnHD.js → r3f-physics-binding-D6DKTgwF.js} +1 -1
  213. package/dist/assets/{r3f-source-authoring-adapter-ZnrWHj5Z.js → r3f-source-authoring-adapter-nqn_PR3m.js} +1 -1
  214. package/dist/assets/{react-canvas-navigation-DFspvY8K.js → react-canvas-navigation-WxI8Mxyc.js} +1 -1
  215. package/dist/assets/{react-inspector.service-Co5AHjHR.js → react-inspector.service-C1Prvq6u.js} +1 -1
  216. package/dist/assets/{react-story-board--jvx8x-C.js → react-story-board-BRUE9hN1.js} +1 -1
  217. package/dist/assets/{react-three-rapier.esm-BS-6eWKp.js → react-three-rapier.esm-CA7vFsM3.js} +1 -1
  218. package/dist/assets/{react-world-authoring-adapter-CKQ-MAMv.js → react-world-authoring-adapter-DVNps-az.js} +1 -1
  219. package/dist/assets/{realm-services-DUEIrJNn.js → realm-services-CL4ih5gp.js} +1 -1
  220. package/dist/assets/{reflection-probe-capture.inspector-gO0DwTZj.js → reflection-probe-capture.inspector-C9mzBLI7.js} +1 -1
  221. package/dist/assets/{registry-ofLrf5fa.js → registry-N8Uqh2X-.js} +1 -1
  222. package/dist/assets/{relative-import-specifier-B_Awfdrr.js → relative-import-specifier-cRtWQWmH.js} +1 -1
  223. package/dist/assets/{render-env-a1pPDP-U.js → render-env-xu-q_sLG.js} +1 -1
  224. package/dist/assets/{render-features-CY3KFNVc.js → render-features-BMOBYkLQ.js} +1 -1
  225. package/dist/assets/{render-settings-DgCYPHgH.js → render-settings-Cnd69vhe.js} +1 -1
  226. package/dist/assets/{resolve-three-fhgJb0Jd.js → resolve-three-C9OlnFHx.js} +3 -3
  227. package/dist/assets/{root-seam-contract-D3r4vEIL.js → root-seam-contract-BoD0NaOZ.js} +1 -1
  228. package/dist/assets/{run-selection-DVvs9B9T.js → run-selection-DL0vJV6z.js} +1 -1
  229. package/dist/assets/{scene-capture-CCy--ncb.js → scene-capture-CoTN4qOO.js} +1 -1
  230. package/dist/assets/{scene-document.service-BCliVABQ.js → scene-document.service-kgtsh1r2.js} +2 -2
  231. package/dist/assets/{scene-framing-B1butaCp.js → scene-framing-CljHc6tN.js} +1 -1
  232. package/dist/assets/{seeded-random-J_tZuhc3.js → seeded-random-BlGWBUER.js} +1 -1
  233. package/dist/assets/{setup-renderer-DroW21zu.js → setup-renderer-jOQdnmo7.js} +1 -1
  234. package/dist/assets/{source-object3d-authoring-adapter-Bansi23s.js → source-object3d-authoring-adapter-qg_NN2PX.js} +1 -1
  235. package/dist/assets/{source-persistence-backend-B7_XGPrd.js → source-persistence-backend-DoNJeJa8.js} +1 -1
  236. package/dist/assets/{stage-keyboard-Cj5wm_J_.js → stage-keyboard-jfRYkBwZ.js} +1 -1
  237. package/dist/assets/{stage-overlay-set-CddoR5WV.js → stage-overlay-set-Bo-JC6N0.js} +1 -1
  238. package/dist/assets/{stage-presence-markers-B7ikfK7I.js → stage-presence-markers-Bu9mH0m_.js} +1 -1
  239. package/dist/assets/{stage-transform-tools-C9-7W51Q.js → stage-transform-tools-CSnDpsY3.js} +1 -1
  240. package/dist/assets/{standard-viewport-dressing-BYqJ1RDj.js → standard-viewport-dressing-B8VpmbHt.js} +1 -1
  241. package/dist/assets/{state-watch.action-Ckl-KiOu.js → state-watch.action-Dhb9xQb9.js} +1 -1
  242. package/dist/assets/{state-watch.menu-Bua5sNDD.js → state-watch.menu-xf7oO-4l.js} +1 -1
  243. package/dist/assets/{state-watch.utility-LIkpnIYo.js → state-watch.utility-DnGO08TW.js} +1 -1
  244. package/dist/assets/{story-capture-DRezN8hO.js → story-capture-CyeAHem-.js} +1 -1
  245. package/dist/assets/{story-documents-QsOjjFN1.js → story-documents-DUm0LUTp.js} +1 -1
  246. package/dist/assets/{story-documents.service-BBcpnJqG.js → story-documents.service-BWBSUjBO.js} +1 -1
  247. package/dist/assets/{story-documents.service-s45WvtSH.js → story-documents.service-DOvAnwES.js} +1 -1
  248. package/dist/assets/{story-media-presence-D3jBkjoV.js → story-media-presence-7Tbl7-hO.js} +1 -1
  249. package/dist/assets/{story-pixi-preview-DR9Z3mjx.js → story-pixi-preview-DHtzdru2.js} +1 -1
  250. package/dist/assets/{story-presentation-BanrEcxs.js → story-presentation-BpfNrI6t.js} +1 -1
  251. package/dist/assets/{story-three-preview-Cc12jMw-.js → story-three-preview-pzhR44fH.js} +2 -2
  252. package/dist/assets/{studio-environment-D3HaysRE.js → studio-environment-Dw2FBct5.js} +1 -1
  253. package/dist/assets/{surface-state-DgY1sYF4.js → surface-state-NwiDDkWI.js} +1 -1
  254. package/dist/assets/{syntactic-prop-specs-CBGAFjrQ.js → syntactic-prop-specs-_Yk2QtpW.js} +1 -1
  255. package/dist/assets/{team-playtest.service-z2r_7CUE.js → team-playtest.service-DdUlOcrk.js} +1 -1
  256. package/dist/assets/{three-CqcAlmZt.js → three-2yjp9YMj.js} +1 -1
  257. package/dist/assets/{three-authoring-adapter-D-dP-DRa.js → three-authoring-adapter-B5h6dxvp.js} +1 -1
  258. package/dist/assets/three-authoring.service-CIVEDuMV.js +2 -0
  259. package/dist/assets/{three-ingest-runtime-BOYUnvJa.js → three-ingest-runtime-B9surImB.js} +1 -1
  260. package/dist/assets/{three-integration-BKGFte0g.js → three-integration-K2zwKa-Z.js} +2 -2
  261. package/dist/assets/three-integration.service-kjZ0g0er.js +1 -0
  262. package/dist/assets/{three-projection-core-CMYaSPZP.js → three-projection-core-xgnaC08N.js} +1 -1
  263. package/dist/assets/{three-state-Bs6NttX2.js → three-state-DVnNjIbQ.js} +1 -1
  264. package/dist/assets/{three-story-capture.service-CV7CaGFK.js → three-story-capture.service-DgVUrOW6.js} +2 -2
  265. package/dist/assets/{three-story-model-DMsHWVLi.js → three-story-model-B0qnMa7M.js} +1 -1
  266. package/dist/assets/{three-viewport-presentation-D8F-c141.js → three-viewport-presentation-C5wGhMgD.js} +1 -1
  267. package/dist/assets/{transform-mode-request-nAOkjL7J.js → transform-mode-request-COfeHSRX.js} +1 -1
  268. package/dist/assets/{transport-strip-Do5Y5zz_.js → transport-strip-Dvkyjqwq.js} +1 -1
  269. package/dist/assets/transport.header-CFTM9Q_n.js +1 -0
  270. package/dist/assets/{tuples-T3njUS_v.js → tuples-tlEYpiUU.js} +1 -1
  271. package/dist/assets/{ui-board-document-Dix9rYE-.js → ui-board-document-BlKR5Cyh.js} +2 -2
  272. package/dist/assets/{user-data-DcUoY-0j.js → user-data-C8dmlLGA.js} +1 -1
  273. package/dist/assets/{utility-view-state-BUR2tvAo.js → utility-view-state-8ikycS0_.js} +1 -1
  274. package/dist/assets/{viewport-door-Ct3Jwvkd.js → viewport-door-Brt6-rPp.js} +1 -1
  275. package/dist/assets/{viewport-root-presentation-CM-p4xLg.js → viewport-root-presentation-DEm3C1-i.js} +1 -1
  276. package/dist/assets/{viewport-surface-status-BlPwrnIq.js → viewport-surface-status-Dbc5Yxun.js} +1 -1
  277. package/dist/assets/{webworkerAll-BbcMGhdJ.js → webworkerAll-qWuefF-u.js} +1 -1
  278. package/dist/assets/{workspace-arrangement-D7VBwv9F.js → workspace-arrangement-BnGzBm57.js} +1 -1
  279. package/dist/assets/{world-documents-g6lvzHMh.js → world-documents-DH7drgx-.js} +1 -1
  280. package/dist/assets/{world-root-stage-binding-DugyiNfT.js → world-root-stage-binding-DIigD-mK.js} +1 -1
  281. package/dist/assets/{xstate-animation-binding-Qdxeavj_.js → xstate-animation-binding-BpYb4mXT.js} +1 -1
  282. package/dist/assets/{xstate-animation-meta-CtUROKFq.js → xstate-animation-meta-0RXvMgDk.js} +1 -1
  283. package/dist-node/cli.js +16 -16
  284. package/package.json +16 -16
  285. package/dist/assets/InspectorObjectPreview-DA4bXZQD.js +0 -1
  286. package/dist/assets/Object3DDocumentViewport-BydKspxr.js +0 -2
  287. package/dist/assets/autoplay.service-CFbSU6Np.js +0 -1
  288. package/dist/assets/blender-runtime-host-Bw37aE1K.js +0 -4
  289. package/dist/assets/blender-runtime.document-DwlgMMor.js +0 -12
  290. package/dist/assets/instances.command--PqjYvLl.js +0 -1
  291. package/dist/assets/network-observer.service-DZtz0Y5F.js +0 -1
  292. package/dist/assets/three-authoring.service-BPzGC8dd.js +0 -2
  293. package/dist/assets/three-integration.service-InYYMues.js +0 -1
  294. package/dist/assets/transport.header-BhBKpJ9P.js +0 -1
@@ -1 +1 @@
1
- import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{gl as Ce}from"./index-JjEYIC4G.js";import{r as T}from"./index-nmcBqr7Y.js";import{s as Te,b as Q,a as Ee,n as ee,c as B,d as U,r as we,e as Oe,f as Ie,N as Ne}from"./blender-runtime-host-Bw37aE1K.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-BM2BJV41.js";import"./hierarchy-marks-DDRF3quV.js";import"./workspace-arrangement-D7VBwv9F.js";const Re={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Factor",identifier:"Fac"},{kind:"input",name:"Type"},{kind:"input",name:"Lift",identifier:"Base Lift"},{kind:"input",name:"Lift",identifier:"Color Lift"},{kind:"input",name:"Gamma",identifier:"Base Gamma"},{kind:"input",name:"Gamma",identifier:"Color Gamma"},{kind:"input",name:"Gain",identifier:"Base Gain"},{kind:"input",name:"Gain",identifier:"Color Gain"},{kind:"input",name:"Offset",identifier:"Base Offset"},{kind:"input",name:"Offset",identifier:"Color Offset"},{kind:"input",name:"Power",identifier:"Base Power"},{kind:"input",name:"Power",identifier:"Color Power"},{kind:"input",name:"Slope",identifier:"Base Slope"},{kind:"input",name:"Slope",identifier:"Color Slope"},{kind:"panel",name:"Input",items:[{kind:"input",name:"Temperature",identifier:"Input Temperature"},{kind:"input",name:"Tint",identifier:"Input Tint"},{kind:"layout"}]},{kind:"panel",name:"Output",items:[{kind:"input",name:"Temperature",identifier:"Output Temperature"},{kind:"input",name:"Tint",identifier:"Output Tint"},{kind:"layout"}]}]},Pe={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Mask"},{kind:"panel",name:"Master",items:[{kind:"input",name:"Saturation",identifier:"Master Saturation"},{kind:"input",name:"Contrast",identifier:"Master Contrast"},{kind:"input",name:"Gamma",identifier:"Master Gamma"},{kind:"input",name:"Gain",identifier:"Master Gain"},{kind:"input",name:"Offset",identifier:"Master Offset"}],defaultClosed:!0},{kind:"panel",name:"Highlights",items:[{kind:"input",name:"Saturation",identifier:"Highlights Saturation"},{kind:"input",name:"Contrast",identifier:"Highlights Contrast"},{kind:"input",name:"Gamma",identifier:"Highlights Gamma"},{kind:"input",name:"Gain",identifier:"Highlights Gain"},{kind:"input",name:"Offset",identifier:"Highlights Offset"}],defaultClosed:!0},{kind:"panel",name:"Midtones",items:[{kind:"input",name:"Saturation",identifier:"Midtones Saturation"},{kind:"input",name:"Contrast",identifier:"Midtones Contrast"},{kind:"input",name:"Gamma",identifier:"Midtones Gamma"},{kind:"input",name:"Gain",identifier:"Midtones Gain"},{kind:"input",name:"Offset",identifier:"Midtones Offset"}],defaultClosed:!0},{kind:"panel",name:"Shadows",items:[{kind:"input",name:"Saturation",identifier:"Shadows Saturation"},{kind:"input",name:"Contrast",identifier:"Shadows Contrast"},{kind:"input",name:"Gamma",identifier:"Shadows Gamma"},{kind:"input",name:"Gain",identifier:"Shadows Gain"},{kind:"input",name:"Offset",identifier:"Shadows Offset"}],defaultClosed:!0},{kind:"panel",name:"Tonal Range",items:[{kind:"input",name:"Midtones Start"},{kind:"input",name:"Midtones End"}],defaultClosed:!0},{kind:"panel",name:"Channels",items:[{kind:"input",name:"Red",identifier:"Apply On Red"},{kind:"input",name:"Green",identifier:"Apply On Green"},{kind:"input",name:"Blue",identifier:"Apply On Blue"}],defaultClosed:!0}]},_e={customSocketOrder:!0,items:[{kind:"output",name:"Image"},{kind:"input",name:"Image"},{kind:"input",name:"Factor",identifier:"Fac"},{kind:"input",name:"Spill Channel"},{kind:"input",name:"Limit Method"},{kind:"input",name:"Limit Channel"},{kind:"input",name:"Limit Strength"},{kind:"panel",name:"Spill Strength",items:[{kind:"input",name:"Use Spill Strength",panelToggle:!0},{kind:"input",name:"Strength",identifier:"Spill Strength"}],defaultClosed:!0}]},Me={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Plane"},{kind:"input",name:"Upper Left"},{kind:"input",name:"Upper Right"},{kind:"input",name:"Lower Left"},{kind:"input",name:"Lower Right"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},ve={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Samples"},{kind:"input",name:"Center"},{kind:"input",name:"Rotation"},{kind:"input",name:"Scale"},{kind:"panel",name:"Translation",items:[{kind:"input",name:"Amount",identifier:"Translation Amount"},{kind:"input",name:"Direction",identifier:"Translation Direction"}]}]},Ae={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Displacement"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},be={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Glare"},{kind:"output",name:"Highlights"},{kind:"input",name:"Type"},{kind:"input",name:"Quality"},{kind:"panel",name:"Highlights",items:[{kind:"input",name:"Threshold",identifier:"Highlights Threshold"},{kind:"input",name:"Smoothness",identifier:"Highlights Smoothness"},{kind:"panel",name:"Clamp",items:[{kind:"input",name:"Clamp",identifier:"Clamp Highlights",panelToggle:!0},{kind:"input",name:"Maximum",identifier:"Maximum Highlights"}],defaultClosed:!0}],defaultClosed:!0},{kind:"panel",name:"Adjust",items:[{kind:"input",name:"Strength"},{kind:"input",name:"Saturation"},{kind:"input",name:"Tint"}]},{kind:"panel",name:"Glare",items:[{kind:"input",name:"Size"},{kind:"input",name:"Streaks"},{kind:"input",name:"Streaks Angle"},{kind:"input",name:"Iterations"},{kind:"input",name:"Fade"},{kind:"input",name:"Color Modulation"},{kind:"input",name:"Diagonal",identifier:"Diagonal Star"},{kind:"input",name:"Sun Position"},{kind:"input",name:"Jitter"},{kind:"input",name:"Kernel Data Type"},{kind:"input",name:"Kernel",identifier:"Float Kernel"},{kind:"input",name:"Kernel",identifier:"Color Kernel"}]}]},De={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Matte"},{kind:"output",name:"Edges"},{kind:"input",name:"Key Color"},{kind:"panel",name:"Preprocess",items:[{kind:"input",name:"Blur Size",identifier:"Preprocess Blur Size"}],defaultClosed:!0},{kind:"panel",name:"Key",items:[{kind:"input",name:"Balance",identifier:"Key Balance"}],defaultClosed:!0},{kind:"panel",name:"Tweak",items:[{kind:"input",name:"Black Level"},{kind:"input",name:"White Level"},{kind:"panel",name:"Edges",items:[{kind:"input",name:"Size",identifier:"Edge Search Size"},{kind:"input",name:"Tolerance",identifier:"Edge Tolerance"}],defaultClosed:!0}],defaultClosed:!0},{kind:"panel",name:"Mask",items:[{kind:"input",name:"Garbage Matte"},{kind:"input",name:"Core Matte"}],defaultClosed:!0},{kind:"panel",name:"Postprocess",items:[{kind:"input",name:"Blur Size",identifier:"Postprocess Blur Size"},{kind:"input",name:"Dilate Size",identifier:"Postprocess Dilate Size"},{kind:"input",name:"Feather Size",identifier:"Postprocess Feather Size"},{kind:"input",name:"Feather Falloff"}],defaultClosed:!0},{kind:"panel",name:"Despill",items:[{kind:"input",name:"Strength",identifier:"Despill Strength"},{kind:"input",name:"Balance",identifier:"Despill Balance"}],defaultClosed:!0}]},Be={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"UV"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Le={customSocketOrder:!0,items:[{kind:"output",name:"Mask"},{kind:"layout"},{kind:"input",name:"Size Source"},{kind:"input",name:"Size X"},{kind:"input",name:"Size Y"},{kind:"input",name:"Feather"},{kind:"panel",name:"Motion Blur",items:[{kind:"input",name:"Motion Blur",panelToggle:!0},{kind:"input",name:"Samples",identifier:"Motion Blur Samples"},{kind:"input",name:"Shutter",identifier:"Motion Blur Shutter"}],defaultClosed:!0}]},$e={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Plane"},{kind:"layout"},{kind:"panel",name:"Motion Blur",items:[{kind:"input",name:"Motion Blur",panelToggle:!0},{kind:"input",name:"Samples",identifier:"Motion Blur Samples"},{kind:"input",name:"Shutter",identifier:"Motion Blur Shutter"}],defaultClosed:!0}]},je={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Angle"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Fe={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Type"},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"input",name:"Frame Type"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ge={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"layout"},{kind:"input",name:"Frame"},{kind:"input",name:"Invert"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},We={customSocketOrder:!0,items:[{kind:"output",name:"Image"},{kind:"input",name:"String"},{kind:"input",name:"Font"},{kind:"input",name:"Size"},{kind:"panel",name:"Alignment",items:[{kind:"input",name:"Horizontal Alignment"},{kind:"input",name:"Vertical Alignment"}],defaultClosed:!0},{kind:"panel",name:"Wrap",items:[{kind:"input",name:"Wrap",panelToggle:!0},{kind:"input",name:"Width",identifier:"Wrap Width"}],defaultClosed:!0}]},He={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"input",name:"Angle"},{kind:"input",name:"Scale"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ue={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ye={customSocketOrder:!0,items:[{kind:"output",name:"Matrix"},{kind:"panel",name:"Column 1",items:[{kind:"input",name:"Column 1 Row 1"},{kind:"input",name:"Column 1 Row 2"},{kind:"input",name:"Column 1 Row 3"},{kind:"input",name:"Column 1 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 2",items:[{kind:"input",name:"Column 2 Row 1"},{kind:"input",name:"Column 2 Row 2"},{kind:"input",name:"Column 2 Row 3"},{kind:"input",name:"Column 2 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 3",items:[{kind:"input",name:"Column 3 Row 1"},{kind:"input",name:"Column 3 Row 2"},{kind:"input",name:"Column 3 Row 3"},{kind:"input",name:"Column 3 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 4",items:[{kind:"input",name:"Column 4 Row 1"},{kind:"input",name:"Column 4 Row 2"},{kind:"input",name:"Column 4 Row 3"},{kind:"input",name:"Column 4 Row 4"}],defaultClosed:!0}]},ze={customSocketOrder:!0,items:[{kind:"panel",name:"Column 1",items:[{kind:"output",name:"Column 1 Row 1"},{kind:"output",name:"Column 1 Row 2"},{kind:"output",name:"Column 1 Row 3"},{kind:"output",name:"Column 1 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 2",items:[{kind:"output",name:"Column 2 Row 1"},{kind:"output",name:"Column 2 Row 2"},{kind:"output",name:"Column 2 Row 3"},{kind:"output",name:"Column 2 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 3",items:[{kind:"output",name:"Column 3 Row 1"},{kind:"output",name:"Column 3 Row 2"},{kind:"output",name:"Column 3 Row 3"},{kind:"output",name:"Column 3 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 4",items:[{kind:"output",name:"Column 4 Row 1"},{kind:"output",name:"Column 4 Row 2"},{kind:"output",name:"Column 4 Row 3"},{kind:"output",name:"Column 4 Row 4"}],defaultClosed:!0},{kind:"input",name:"Matrix"}]},Ve={customSocketOrder:!0,items:[{kind:"input",name:"String"},{kind:"output",name:"String",alignWithPrevious:!0},{kind:"input",name:"Characters"},{kind:"input",name:"Whitespace"},{kind:"panel",name:"Limit",items:[{kind:"input",name:"Start"},{kind:"input",name:"End"}],defaultClosed:!0}]},Xe={customSocketOrder:!0,items:[{kind:"output",name:"Topology"},{kind:"input",name:"Bounds Min"},{kind:"input",name:"Bounds Max"},{kind:"input",name:"Resolution X"},{kind:"input",name:"Resolution Y"},{kind:"input",name:"Resolution Z"},{kind:"panel",name:"Min",items:[{kind:"input",name:"Min X"},{kind:"input",name:"Min Y"},{kind:"input",name:"Min Z"}],defaultClosed:!0}]},Ke={customSocketOrder:!0,conditional:!0,items:[{kind:"output",name:"Geometry"},{kind:"input",name:"",identifier:"__extend__main"},{kind:"output",name:"",identifier:"__extend__main",alignWithPrevious:!0},{kind:"panel",name:"Generated",items:[{kind:"separator"},{kind:"input",name:"",identifier:"__extend__generation"},{kind:"output",name:"",identifier:"__extend__generation",alignWithPrevious:!0}]}]},Ze={customSocketOrder:!0,items:[{kind:"output",name:"Names"},{kind:"input",name:"Geometry"},{kind:"panel",name:"Filter Data Type",items:[{kind:"input",name:"Filter Data Type",panelToggle:!0},{kind:"input",name:"Data Type"}]},{kind:"panel",name:"Filter Domain",items:[{kind:"input",name:"Filter Domain",panelToggle:!0},{kind:"input",name:"Domain"}]}]},qe={customSocketOrder:!0,conditional:!0,items:[{kind:"layout"},{kind:"output",name:"Points"},{kind:"output",name:"Value"},{kind:"panel",name:"Voxel Index",items:[{kind:"output",name:"X"},{kind:"output",name:"Y"},{kind:"output",name:"Z"},{kind:"output",name:"Is Tile"},{kind:"output",name:"Extent"}],defaultClosed:!0},{kind:"input",name:"Grid"}]},Je={customSocketOrder:!0,items:[{kind:"output",name:"X"},{kind:"output",name:"Y"},{kind:"output",name:"Z"},{kind:"panel",name:"Tile",items:[{kind:"output",name:"Is Tile"},{kind:"output",name:"Extent X"},{kind:"output",name:"Extent Y"},{kind:"output",name:"Extent Z"}],defaultClosed:!0}]},Qe={customSocketOrder:!0,items:[{kind:"input",name:"Mesh"},{kind:"output",name:"Mesh",alignWithPrevious:!0},{kind:"input",name:"Selection"},{kind:"input",name:"Affect Kind"},{kind:"input",name:"Start Left Offset"},{kind:"input",name:"Start Right Offset"},{kind:"input",name:"End Left Offset"},{kind:"input",name:"End Right Offset"},{kind:"input",name:"Offset"},{kind:"input",name:"Miter"},{kind:"input",name:"Spread"},{kind:"input",name:"Segments"},{kind:"input",name:"Shape"},{kind:"input",name:"Profile"},{kind:"panel",name:"Selections",items:[{kind:"output",name:"Vertex Face"},{kind:"output",name:"Edge Face"},{kind:"output",name:"Outer Edge"},{kind:"output",name:"Mid Edge"}]}]},en={customSocketOrder:!0,items:[{kind:"output",name:"Amplitude"},{kind:"input",name:"Sound"},{kind:"input",name:"Time"},{kind:"input",name:"All Channels"},{kind:"input",name:"Channel"},{kind:"input",name:"Low"},{kind:"input",name:"High"},{kind:"panel",name:"FFT",items:[{kind:"input",name:"FFT Size"},{kind:"input",name:"Window Function"}],defaultClosed:!0}]},nn={customSocketOrder:!0,items:[{kind:"output",name:"Curve Instances"},{kind:"output",name:"Remainder"},{kind:"output",name:"Line"},{kind:"output",name:"Word"},{kind:"output",name:"Pivot Point"},{kind:"input",name:"String"},{kind:"input",name:"Size"},{kind:"input",name:"Font"},{kind:"panel",name:"Alignment",items:[{kind:"input",name:"Align X"},{kind:"input",name:"Align Y"},{kind:"input",name:"Pivot Point"}],defaultClosed:!0},{kind:"panel",name:"Spacing",items:[{kind:"input",name:"Character Spacing"},{kind:"input",name:"Word Spacing"},{kind:"input",name:"Line Spacing"}],defaultClosed:!0},{kind:"panel",name:"Text Box",items:[{kind:"input",name:"Overflow"},{kind:"input",name:"Text Box Width"},{kind:"input",name:"Text Box Height"}],defaultClosed:!0}]},tn={customSocketOrder:!0,conditional:!0,items:[{kind:"input",name:"Target"},{kind:"output",name:"Target",alignWithPrevious:!0},{kind:"output",name:"Transferred Names"},{kind:"panel",name:"Target IDs",items:[],defaultClosed:!0},{kind:"input",name:"Source"},{kind:"panel",name:"Source IDs",items:[],defaultClosed:!0},{kind:"input",name:"Pattern Mode"},{kind:"input",name:"Attribute Names"},{kind:"input",name:"Exclude Names"}]},an={customSocketOrder:!0,items:[{kind:"input",name:"World"},{kind:"output",name:"World",alignWithPrevious:!0},{kind:"input",name:"Delta Time"},{kind:"input",name:"Filter"},{kind:"input",name:"Simulation to World"},{kind:"panel",name:"Solver",items:[{kind:"input",name:"Substeps"},{kind:"input",name:"Constraint Iterations"},{kind:"input",name:"Solver Path"}],defaultClosed:!0},{kind:"panel",name:"Interpolation Range",items:[{kind:"input",name:"Begin"},{kind:"input",name:"End"}],defaultClosed:!0}]},on={customSocketOrder:!0,conditional:!0,items:[{kind:"input",name:"Closure"},{kind:"panel",name:"Interface",items:[{kind:"output",name:"",identifier:"__extend__"},{kind:"input",name:"",identifier:"__extend__"}]}]},rn={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"layout"},{kind:"input",name:"Color"},{kind:"input",name:"Roughness"},{kind:"input",name:"IOR"},{kind:"input",name:"Normal"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},un={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"layout"},{kind:"input",name:"Base Color"},{kind:"input",name:"Edge Tint"},{kind:"input",name:"IOR"},{kind:"input",name:"Extinction"},{kind:"input",name:"Roughness"},{kind:"input",name:"Anisotropy"},{kind:"input",name:"Rotation"},{kind:"input",name:"Normal"},{kind:"input",name:"Tangent"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},sn={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"input",name:"Base Color"},{kind:"input",name:"Metallic"},{kind:"input",name:"Roughness"},{kind:"input",name:"IOR"},{kind:"input",name:"Alpha"},{kind:"input",name:"Thin Wall"},{kind:"input",name:"Normal"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Diffuse",items:[{kind:"input",name:"Diffuse Roughness"}],defaultClosed:!0},{kind:"panel",name:"Subsurface",items:[{kind:"layout"},{kind:"input",name:"Subsurface Weight"},{kind:"input",name:"Subsurface Radius"},{kind:"input",name:"Subsurface Scale"},{kind:"input",name:"Subsurface IOR"},{kind:"input",name:"Subsurface Anisotropy"}],defaultClosed:!0},{kind:"panel",name:"Specular",items:[{kind:"layout"},{kind:"input",name:"Specular IOR Level"},{kind:"input",name:"Specular Tint"},{kind:"input",name:"Anisotropic"},{kind:"input",name:"Anisotropic Rotation"},{kind:"input",name:"Tangent"}],defaultClosed:!0},{kind:"panel",name:"Transmission",items:[{kind:"input",name:"Transmission Weight"}],defaultClosed:!0},{kind:"panel",name:"Coat",items:[{kind:"input",name:"Coat Weight"},{kind:"input",name:"Coat Roughness"},{kind:"input",name:"Coat IOR"},{kind:"input",name:"Coat Tint"},{kind:"input",name:"Coat Normal"}],defaultClosed:!0},{kind:"panel",name:"Sheen",items:[{kind:"input",name:"Sheen Weight"},{kind:"input",name:"Sheen Roughness"},{kind:"input",name:"Sheen Tint"}],defaultClosed:!0},{kind:"panel",name:"Emission",items:[{kind:"input",name:"Emission Color"},{kind:"input",name:"Emission Strength"}],defaultClosed:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},dn={customSocketOrder:!0,conditional:!0,items:[{kind:"layout"},{kind:"output",name:"Is Hit"},{kind:"output",name:"Self Hit"},{kind:"output",name:"Hit Distance"},{kind:"output",name:"Hit Position"},{kind:"output",name:"Hit Normal"},{kind:"input",name:"Position"},{kind:"input",name:"Direction"},{kind:"input",name:"Length"},{kind:"panel",name:"Attributes",items:[{kind:"input",name:"",identifier:"__extend__"},{kind:"output",name:"",identifier:"__extend__",alignWithPrevious:!0}],defaultClosed:!0}]},ln={customSocketOrder:!0,items:[{kind:"output",name:"Volume"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Absorption",items:[{kind:"input",name:"Absorption Coefficients"}]},{kind:"panel",name:"Scatter",items:[{kind:"layout"},{kind:"input",name:"Scatter Coefficients"},{kind:"input",name:"Anisotropy"},{kind:"input",name:"IOR"},{kind:"input",name:"Backscatter"},{kind:"input",name:"Alpha"},{kind:"input",name:"Diameter"}]},{kind:"panel",name:"Emission",items:[{kind:"input",name:"Emission Coefficients"}]}]},mn={CompositorNodeColorBalance:Re,CompositorNodeColorCorrection:Pe,CompositorNodeColorSpill:_e,CompositorNodeCornerPin:Me,CompositorNodeDBlur:ve,CompositorNodeDisplace:Ae,CompositorNodeGlare:be,CompositorNodeKeying:De,CompositorNodeMapUV:Be,CompositorNodeMask:Le,CompositorNodePlaneTrackDeform:$e,CompositorNodeRotate:je,CompositorNodeScale:Fe,CompositorNodeStabilize:Ge,CompositorNodeStringToImage:We,CompositorNodeTransform:He,CompositorNodeTranslate:Ue,FunctionNodeCombineMatrix:Ye,FunctionNodeSeparateMatrix:ze,FunctionNodeTrimString:Ve,GeometryNodeCubeGridTopology:Xe,GeometryNodeForeachGeometryElementOutput:Ke,GeometryNodeGetAttributeNames:Ze,GeometryNodeGridToPoints:qe,GeometryNodeInputVoxelIndex:Je,GeometryNodeMeshBevel:Qe,GeometryNodeSampleSoundFrequencies:en,GeometryNodeStringToCurves:nn,GeometryNodeTransferAttributes:tn,GeometryNodeXPBDSolver:an,NodeEvaluateClosure:on,ShaderNodeBsdfGlass:rn,ShaderNodeBsdfMetallic:un,ShaderNodeBsdfPrincipled:sn,ShaderNodeRaycast:dn,ShaderNodeVolumeCoefficients:ln},I=20,N=1,S=I,O=I/2,D=.2*I,me=.25*I,Z=1.2*I,_=.1*I,pn=.8*I,w=.5,Y=D+w,cn=D+N,ne=2.5,kn=.2,fn=S*.5,z=S*-.5,hn=me,gn=1.5*I,R=11,h={sliderFill:"#4671b2",background:"#1a1a1a",body:"#303030",outline:"#ffffff",outlineAlpha:38/255,select:"#ed5700",active:"#ffffff",wireInner:"#8d8d8d",wire:"#1a1a1a",noodleCurving:4,dashAlpha:.5,text:"#e6e6e6",frame:"#0f0f0f",frameAlpha:204/255},Sn={INPUT:"#82354c",OUTPUT:"#3e232a",CONVERTER:"#246283",COLOR:"#6e6e23",VECTOR:"#3c3c83",FILTER:"#412b51",GROUP:"#374725",INTERFACE:"#1d1d1d",MATTE:"#5a3838",DISTORT:"#3e5a5b",TEXTURE:"#79461d",SHADER:"#2b652b",SCRIPT:"#203c3c",GEOMETRY:"#1d725e",ATTRIBUTE:"#1d2546",NONE:h.body,PATTERN:h.body},xn={VALUE:"#a1a1a1",VECTOR:"#6363c7",RGBA:"#c7c729",SHADER:"#63c763",BOOLEAN:"#cca6d6",INT:"#598c5c",STRING:"#70b3ff",OBJECT:"#ed9e5c",IMAGE:"#633863",GEOMETRY:"#00d6a3",COLLECTION:"#f5f5f5",TEXTURE:"#9e4fa3",MATERIAL:"#eb7582",ROTATION:"#a663c7",MENU:"#666666",MATRIX:"#b83385",BUNDLE:"#4d8080",CLOSURE:"#7d7d3b",FONT:"#635742",SOUND:"#635742",INT_VECTOR:"#5c789c",CUSTOM:"#333333"},yn="#ff00ff",pe=h.wire,Cn="#808080",F=N;function A(e){return e.enabled&&!e.hide}function V(e){const n=e.location[0]??0,a=e.location[1]??0,r=e.width,t=e.outputs.filter(A),o=e.inputs.filter(A);if(e.collapsed){const p=fn,m=p*Math.max(o.length,t.length,2)+D*2,x=a+m/2+z,c=a-m/2+z,k=(g,C)=>{let y=a+p*(g.length-1)*.5+z;return g.map(E=>{const P=M(E,C,C?n+r:n,y,y);return y-=p,P})};return{name:e.name,x:n,yTop:x,yBottom:c,width:r,collapsed:!0,sockets:[...k(t,!0),...k(o,!1)]}}let d=a-S;const u=[],l=(p,m)=>{const x=d;u.push(M(p,m,m?n+r:n,x-O,x)),d=x-S};return(t.length>0||o.length>0)&&(d-=2*_),t.forEach((p,m)=>{m>0&&(d-=_),l(p,!0)}),t.length>0&&o.length>0&&(d-=_),o.forEach((p,m)=>{(m>0||t.length>0)&&m>0&&(d-=_),l(p,!1)}),t.length>0||o.length>0?d-=2*_:d-=O,{name:e.name,x:n,yTop:a,yBottom:Math.min(d,a-2*S),width:r,collapsed:!1,sockets:u}}function M(e,n,a,r,t,o=!1){return{identifier:e.identifier,name:e.label??e.name,type:e.type,shape:e.shape,output:n,linked:e.linked,multiInput:e.multiInput,hideValue:e.hideValue,value:e.value,...e.softMin===void 0?{}:{softMin:e.softMin},...e.softMax===void 0?{}:{softMax:e.softMax},x:a,y:r,rowTop:t,panelCollapsed:o}}function Tn(e,n,a=h.noodleCurving){if(a===0)return[[e[0]+(n[0]-e[0])/3,e[1]+(n[1]-e[1])/3],[e[0]+(n[0]-e[0])*2/3,e[1]+(n[1]-e[1])*2/3]];const r=Math.abs(n[0]-e[0]),t=Math.abs(n[1]-e[1]),o=r===0?Number.POSITIVE_INFINITY:t/r,d=Math.min(1,o*(4.5-.25*a)),u=a*.1*r*d;return[[e[0]+u,e[1]],[n[0]-u,n[1]]]}function K(e){return e.idname==="NodeFrame"?h.frame:e.colorTag==="OUTPUT"&&!e.activeOutput?h.body:Sn[e.colorTag]??h.body}function te(e){return e.useCustomColor?b(e.color):h.body}function b(e){const n=a=>Math.round(Math.min(1,Math.max(0,a))*255).toString(16).padStart(2,"0");return`#${n(e[0]??0)}${n(e[1]??0)}${n(e[2]??0)}`}function ie(e,n){const a=ae(h.background),r=ae(e);return b([r[0]*(1-n)+a[0]*n,r[1]*(1-n)+a[1]*n,r[2]*(1-n)+a[2]*n])}const En=.6,wn=.8,On=.2;function ae(e){const n=Number.parseInt(e.slice(1),16);return[(n>>16&255)/255,(n>>8&255)/255,(n&255)/255]}function G(e){return xn[e]??yn}const oe=O,X=Z/3,re=Z/4,In=I,j={cell:8,reach:4,spread:3.64648,stroke:1},Nn="#000000",Rn=31/255*1.5,$=e=>e.identifier??e.name;function Pn(e,n,a){if(!e.customSocketOrder)return{ok:!1,why:"its declaration does not set use_custom_socket_order, so Blender lays it out the legacy way"};const r=[],t=[],o=l=>{for(const p of l)p.kind==="input"?r.push($(p)):p.kind==="output"?t.push($(p)):p.kind==="panel"&&o(p.items)};o(e.items);const d=(l,p,m)=>{if(l.length!==p.length)return`the declaration names ${l.length} ${m}${l.length===1?"":"s"} and the engine reports ${p.length}`;for(let x=0;x<l.length;x++)if(l[x]!==p[x]?.identifier)return`${m} ${x} is "${p[x]?.identifier}" in the engine and "${l[x]}" in the declaration`;return null},u=d(t,a,"output")??d(r,n,"input");return u===null?{ok:!0}:{ok:!1,why:u}}const _n={Socket:2,Separator:.5,Layout:3,PanelHeader:4},Mn={Socket:2,Separator:1,Layout:5,PanelHeader:4,PanelContentEnd:1},vn={Socket:{Socket:1,Separator:0,Layout:2,PanelHeader:3,PanelContentEnd:2},Layout:{Socket:2,Separator:0,Layout:1,PanelHeader:3,PanelContentEnd:2},Separator:{Socket:2,Separator:1,Layout:1,PanelHeader:1,PanelContentEnd:1},PanelHeader:{Socket:4,Separator:3,Layout:3,PanelHeader:5,PanelContentBegin:3,PanelContentEnd:3},PanelContentBegin:{Socket:2,Separator:1,Layout:2,PanelHeader:3,PanelContentEnd:1},PanelContentEnd:{Socket:1,Separator:1,Layout:1,PanelHeader:3,PanelContentEnd:0}};function ce(e,n,a,r,t,o,d){let u=!1;for(const l of e){if(l.kind==="input"||l.kind==="output"){const y=n.get(`${l.kind}:${$(l)}`);if(!y||!A(y)){u=!1;continue}const E=o[o.length-1];if(l.alignWithPrevious===!0&&u&&E&&E.type==="Socket"){o[o.length-1]={type:"Socket",input:l.kind==="input"?y:E.input,output:l.kind==="output"?y:E.output},u=!0;continue}o.push({type:"Socket",input:l.kind==="input"?y:void 0,output:l.kind==="output"?y:void 0}),u=!0;continue}if(u=!1,l.kind==="separator"){o.push({type:"Separator"});continue}if(l.kind==="layout"){r&&o.push({type:"Layout"});continue}if(l.kind!=="panel")continue;const p=l.items[0],m=p&&p.kind==="input"&&p.panelToggle===!0?p:null,x=m?n.get(`input:${$(m)}`)??null:null,c=[],k=y=>{for(const E of y)if(E.kind==="input"||E.kind==="output"){const P=n.get(`${E.kind}:${$(E)}`);P&&c.push(P)}else E.kind==="panel"&&k(E.items)};if(k(l.items),!c.some(A))continue;const g=a(l.defaultClosed===!0),C={name:l.name,depth:t,collapsed:g,toggle:x,owned:c,centerY:0,contentTop:null,contentBottom:null,fillsNodeEnd:!1};d.push(C),o.push({type:"PanelHeader",panel:C}),!g&&(o.push({type:"PanelContentBegin",panel:C}),ce(l.items.filter(y=>y!==m),n,a,r,t+1,o,d),o.push({type:"PanelContentEnd",panel:C}))}}function An(e){const n=e.location[0]??0,a=e.location[1]??0,r=e.width,t=new Map;for(const c of e.inputs)t.set(`input:${c.identifier}`,c);for(const c of e.outputs)t.set(`output:${c.identifier}`,c);let o=0;const d=e.panelStates,u=[],l=[];ce(e.declaration.items,t,c=>d[o++]?.collapsed??c,e.showOptions,0,u,l);const p=[];let m=a-S;u.length===0&&(m-=O);for(let c=0;c<u.length;c++){const k=u[c];if(!k)continue;const g=u[c-1],C=c===0?_n[k.type]??0:vn[g?.type??"Socket"]?.[k.type]??0;if(m-=C*_,k.type==="Socket"){const y=m;k.output&&p.push(M(k.output,!0,n+r,y-O,y)),k.input&&p.push(M(k.input,!1,n,y-O,y)),m=y-S;continue}if(k.type==="Layout"||k.type==="Separator"){m-=S;continue}if(k.type==="PanelHeader"&&k.panel){m-=oe/2,k.panel.centerY=m,m-=oe/2,k.panel.toggle&&p.push(M(k.panel.toggle,!1,n,k.panel.centerY,k.panel.centerY));continue}k.type==="PanelContentBegin"&&k.panel&&(k.panel.contentTop=m),k.type==="PanelContentEnd"&&k.panel&&(k.panel.contentBottom=m)}const x=u[u.length-1];x&&(m-=(Mn[x.type]??0)*_);for(const c of l)if(c.collapsed)for(const k of c.owned){if(!A(k))continue;const g=e.outputs.includes(k);p.push(M(k,g,g?n+r:n,c.centerY,c.centerY,!0))}for(let c=u.length-1;c>=0;c--){const k=u[c];if(!k||k.type!=="PanelContentEnd")break;k.panel&&(k.panel.fillsNodeEnd=!0)}return{name:e.name,x:n,yTop:a,yBottom:Math.min(m,a-2*S),width:r,collapsed:!1,sockets:p,panels:l.map(c=>({name:c.name,depth:c.depth,collapsed:c.collapsed,centerY:c.centerY,contentTop:c.contentTop,contentBottom:c.contentBottom,fillsNodeEnd:c.fillsNodeEnd,toggle:c.toggle?M(c.toggle,!1,n,c.centerY,c.centerY):null}))}}function bn(e){const n=a=>a.some(r=>r.kind==="layout"?!0:r.kind==="panel"?n(r.items):!1);return n(e.items)}const Ct="workspace.document",Tt="Shader Editor";Ce(Ne);const Dn=320,ue=.1,se=4;function Et(){const e=T.useSyncExternalStore(Te,Q,Q),[n,a]=T.useState(null),[r,t]=T.useState(null),o=T.useRef(null),d=T.useRef(!1);T.useSyncExternalStore(Ee,ee,ee);const{transform:u,looked:l,refusal:p,size:m}=U(),x=T.useCallback(s=>{const f=U().transform;B({transform:typeof s=="function"?s(f):s})},[]),c=T.useCallback(s=>{B({looked:s,refusal:null})},[]),k=T.useCallback(s=>{const f=U().size;f.w===s.w&&f.h===s.h||B({size:s})},[]),g=T.useCallback(s=>{we(s)},[]);T.useEffect(()=>{let s=!0;return(async()=>{try{const f=await Oe();if(!s)return;a(f),t(null)}catch(f){if(!s)return;t(f instanceof Error?f.message:String(f))}})(),()=>{s=!1}},[e]),T.useEffect(()=>{const s=o.current;if(!s)return;const f=new ResizeObserver(()=>{k({w:s.clientWidth,h:s.clientHeight})});return f.observe(s),k({w:s.clientWidth,h:s.clientHeight}),()=>f.disconnect()},[]);const C=T.useMemo(()=>jn(n),[n]);T.useEffect(()=>{B({drawn:[...C.frames,...C.nodes].map(({node:s,laid:f,panels:v,fallback:ye})=>{const J=f.sockets.find(H=>!H.panelCollapsed)??f.sockets[0];return{panels:v.length,collapsedPanels:v.filter(H=>H.collapsed).length,panelFallback:ye,name:s.name,x:f.x,yTop:f.yTop,yBottom:f.yBottom,width:f.width,height:f.yTop-f.yBottom,sockets:f.sockets.length,firstSocketBelowTop:J?f.yTop-J.y:null,header:K(s)}})})},[C]);const y=T.useCallback(()=>{const s=Fn(C.nodes);if(!s)return;const f=de(Math.min(m.w/(s.w+2*S),m.h/(s.h+2*S)),ue,se);B({transform:{cx:s.x+s.w/2,cy:s.y-s.h/2,zoom:f},framedAt:Date.now()})},[C.nodes,m.h,m.w]),E=Ie(),P=T.useRef(0);T.useEffect(()=>{E!==P.current&&(P.current=E,y())},[E,y]),T.useEffect(()=>{d.current||C.nodes.length===0||m.w<=1||(d.current=!0,y())},[C.nodes.length,m.w,y]);const W=T.useRef(null),fe=s=>{s.button===1&&(s.preventDefault(),s.target.setPointerCapture?.(s.pointerId),W.current={x:s.clientX,y:s.clientY,cx:u.cx,cy:u.cy})},he=s=>{const f=W.current;f&&x(v=>({...v,cx:f.cx-(s.clientX-f.x)/v.zoom,cy:f.cy+(s.clientY-f.y)/v.zoom}))},q=()=>{W.current=null},ge=s=>{s.preventDefault(),x(f=>({...f,zoom:de(f.zoom*(s.deltaY<0?1.1:1/1.1),ue,se)}))},Se=n?.nodes.find(s=>s.name===l)??null,xe=u.zoom>kn;return i.jsxs("div",{"data-testid":"blender-node-editor",style:{display:"flex",position:"absolute",inset:0,overflow:"hidden"},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",flex:1,minWidth:0,minHeight:0},children:[i.jsx(Xn,{tree:n,zoom:u.zoom,onViewAll:y,onRefuse:g}),i.jsx("div",{ref:o,style:{position:"relative",flex:1,minHeight:0},children:i.jsx("svg",{role:"presentation",width:"100%",height:"100%",onPointerDown:fe,onPointerMove:he,onPointerUp:q,onPointerCancel:q,onWheel:ge,onContextMenu:s=>{s.preventDefault(),g("The node context menu adds, deletes and reconnects nodes — editing.")},style:{display:"block",background:h.background,cursor:"default"},children:i.jsxs("g",{transform:`translate(${m.w/2} ${m.h/2}) scale(${u.zoom} ${-u.zoom}) translate(${-u.cx} ${-u.cy})`,children:[C.frames.map(s=>i.jsx(Vn,{node:s.node,laid:s.laid},s.node.name)),C.links.map(s=>i.jsx(zn,{link:s},s.key)),C.nodes.map(s=>i.jsx(Gn,{node:s.node,laid:s.laid,panels:s.panels,looked:s.node.name===l,details:xe,onLook:()=>c(s.node.name),onRefuse:g},s.node.name))]})})}),i.jsx(Kn,{entries:C.nodes,error:r,refusal:p})]}),i.jsx(Zn,{node:Se,onRefuse:g})]})}const Bn=26,Ln=22,$n=mn;function jn(e){if(!e)return{nodes:[],frames:[],links:[]};const n=new Map,a=e.nodes.map(t=>{const o={name:t.name,location:t.location,width:t.width,collapsed:t.collapsed,inputs:t.inputs,outputs:t.outputs},d=t.collapsed?void 0:$n[t.idname];if(t.panelCount>0&&!d){const l=V(o);return n.set(t.name,l),{node:t,laid:l,panels:[],fallback:t.collapsed?null:"no traced declaration — the trace covers the 36 node types that declare a panel in Blender 5.2.0, and a node group’s panels are runtime data",approximate:!1}}if(d){const l=Pn(d,t.inputs,t.outputs);if(l.ok){const m=An({...o,declaration:d,panelStates:t.panels,showOptions:t.showOptions});return n.set(t.name,m),{node:t,laid:m,panels:m.panels,fallback:null,approximate:bn(d)}}const p=V(o);return n.set(t.name,p),{node:t,laid:p,panels:[],fallback:l.why,approximate:!1}}const u=V(o);return n.set(t.name,u),{node:t,laid:u,panels:[],fallback:null,approximate:!1}}),r=e.links.flatMap((t,o)=>{const d=n.get(t.fromNode),u=n.get(t.toNode);if(!d||!u)return[];const l=d.sockets.find(m=>m.output&&m.identifier===t.fromSocket),p=u.sockets.find(m=>!m.output&&m.identifier===t.toSocket);return!l||!p?[]:[{key:`${t.fromNode}.${t.fromSocket}→${t.toNode}.${t.toSocket}#${o}`,from:[l.x,l.y],to:[p.x,p.y],fromColor:G(l.type),toColor:G(p.type),muted:t.muted,valid:t.valid}]});return{nodes:a.filter(t=>t.node.idname!=="NodeFrame"),frames:a.filter(t=>t.node.idname==="NodeFrame"),links:r}}function Fn(e){if(e.length===0)return null;let n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const{laid:o}of e)n=Math.min(n,o.x),a=Math.max(a,o.x+o.width),r=Math.min(r,o.yBottom),t=Math.max(t,o.yTop);return{x:n,y:t,w:a-n,h:t-r}}const de=(e,n,a)=>Math.min(a,Math.max(n,e));function Gn({node:e,laid:n,panels:a,looked:r,details:t,onLook:o,onRefuse:d}){if(e.type==="REROUTE"){const g=n.sockets[0];return i.jsx("circle",{cx:n.x,cy:n.yTop,r:hn,fill:g?G(g.type):h.wireInner,stroke:pe,strokeWidth:F,onPointerDown:C=>{C.button===0&&o()}})}const u=e.muted?ie(K(e),En):K(e),l=e.muted?ie(te(e),wn):te(e),p=e.muted?1-On:1,m=e.selected?e.activeOutput||r?h.active:h.select:h.outline,x=e.selected?1:h.outlineAlpha,c=n.yTop-n.yBottom,k=e.label??e.typeLabel;return i.jsxs("g",{opacity:p,onPointerDown:g=>{g.button===0&&o()},onDoubleClick:()=>d(`Renaming "${e.name}" writes Node.name — editing parity is not the program.`),style:{cursor:"default"},children:[n.collapsed?i.jsx("rect",{x:n.x-w,y:-n.yTop-w,width:n.width+2*w,height:c+2*w,rx:Y,fill:u,transform:"scale(1 -1)"}):i.jsxs(i.Fragment,{children:[i.jsx("rect",{x:n.x-w,y:-(n.yTop-S)-w,width:n.width+2*w,height:c-S+2*w,rx:Y,fill:l,transform:"scale(1 -1)"}),i.jsx("rect",{x:n.x-w,y:-n.yTop-w,width:n.width+2*w,height:S+2*w,rx:Y,fill:u,transform:"scale(1 -1)"}),i.jsx("rect",{x:n.x-w,y:-(n.yTop-S)-w,width:n.width+2*w,height:D,fill:u,transform:"scale(1 -1)"}),a.map(g=>i.jsx(Wn,{panel:g,laid:n},`bg:${g.name}`))]}),i.jsx("rect",{x:n.x-N,y:-n.yTop-N,width:n.width+2*N,height:c+2*N,rx:cn,fill:"none",stroke:m,strokeOpacity:x,strokeWidth:N,transform:"scale(1 -1)"}),i.jsx("text",{x:n.x+Z,y:-(n.yTop-S/2),transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:k}),t&&n.sockets.map(g=>i.jsx(Un,{socket:g,node:n,onRefuse:d},`${g.output?"o":"i"}:${g.identifier}`)),t&&a.map(g=>i.jsx(Hn,{panel:g,laid:n,onRefuse:d},`hd:${g.name}`))]})}function Wn({panel:e,laid:n}){if(e.contentTop===null||e.contentBottom===null)return null;const a=[{y:e.contentTop,height:e.contentTop-e.contentBottom,radius:0,times:1}];return e.fillsNodeEnd&&a.push({y:e.contentBottom,height:e.contentBottom-n.yBottom,radius:D,times:e.depth+1}),i.jsx("g",{style:{pointerEvents:"none"},children:a.flatMap((r,t)=>Array.from({length:r.times},(o,d)=>i.jsx("rect",{x:n.x,y:-r.y,width:n.width,height:Math.max(r.height,0),rx:r.radius,fill:Nn,fillOpacity:Rn,transform:"scale(1 -1)"},`${t}:${d}`)))})}function Hn({panel:e,laid:n,onRefuse:a}){const r=pn,t=r/j.cell,o=n.x+X+r/2,d=e.centerY,u=j.reach*t,l=j.spread*t,p=e.collapsed?`M ${o-u/2} ${-(d+l)} L ${o+u/2} ${-d} L ${o-u/2} ${-(d-l)}`:`M ${o-l} ${-(d+u/2)} L ${o} ${-(d-u/2)} L ${o+l} ${-(d+u/2)}`,m=n.x+X+r+re+(e.toggle&&!e.toggle.linked?In:0);return i.jsxs("g",{onPointerDown:x=>{x.button===0&&(x.stopPropagation(),a(`${e.collapsed?"Opening":"Collapsing"} "${e.name}" writes the panel's is_collapsed — editing parity is not the program.`))},style:{cursor:"default"},children:[i.jsx("rect",{x:n.x,y:-(d+O),width:n.width,height:2*O,fill:"transparent",transform:"scale(1 -1)"}),i.jsx("path",{d:p,fill:"none",stroke:h.text,strokeWidth:j.stroke*t,strokeLinecap:"round",strokeLinejoin:"round",transform:"scale(1 -1)",style:{pointerEvents:"none"}}),e.toggle&&!e.toggle.linked&&i.jsx("rect",{x:n.x+X+r+re,y:-(d+O/2),width:O,height:O,rx:.2*O,fill:e.toggle.value===!0?"#4772b3":"#545454",transform:"scale(1 -1)",style:{pointerEvents:"none"}}),i.jsx("text",{x:m,y:-d,transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name})]})}function Un({socket:e,node:n,onRefuse:a}){const r=G(e.type),t=e.type==="CUSTOM"?Cn:pe,o=me,d=e.shape.replace("_DOT",""),u=e.shape.endsWith("_DOT"),l=d==="SQUARE"?i.jsx("rect",{x:e.x-o,y:-e.y-o,width:2*o,height:2*o,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"}):d==="DIAMOND"?i.jsx("polygon",{points:`${e.x},${-e.y-o} ${e.x+o},${-e.y} ${e.x},${-e.y+o} ${e.x-o},${-e.y}`,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"}):i.jsx("circle",{cx:e.x,cy:-e.y,r:o,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"});return i.jsxs("g",{onPointerDown:p=>{p.button===0&&(p.stopPropagation(),a(`Dragging from "${e.name}" would make a link — editing parity is not the program.`))},children:[l,u&&i.jsx("circle",{cx:e.x,cy:-e.y,r:o*.35,fill:t,transform:"scale(1 -1)"}),!n.collapsed&&!e.panelCollapsed&&i.jsx(Yn,{socket:e,node:n,onRefuse:a})]})}function Yn({socket:e,node:n,onRefuse:a}){const r=O,t=n.x+r,o=n.x+n.width-r,d=-(e.rowTop-S/2);if(!(!e.output&&!e.linked&&!e.hideValue&&e.value!==null))return i.jsx("text",{x:e.output?o:t,y:d,transform:"scale(1 -1)",textAnchor:e.output?"end":"start",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name});const l=Array.isArray(e.value)&&e.value.length>=3;return i.jsxs("g",{onPointerDown:p=>{p.button===0&&(p.stopPropagation(),a(`Changing "${e.name}" writes the socket's default_value — editing parity is not the program.`))},style:{cursor:"default"},children:[i.jsx("rect",{x:t,y:d-S/2+1,width:o-t,height:S-2,rx:.2*S,fill:"#545454",transform:"scale(1 -1)"}),le(e)!==null&&i.jsxs(i.Fragment,{children:[i.jsx("clipPath",{id:`sl-${e.identifier}`,children:i.jsx("rect",{x:t,y:d-S/2+1,width:o-t,height:S-2,rx:.2*S})}),i.jsx("rect",{x:t,y:d-S/2+1,width:(o-t)*(le(e)??0),height:S-2,fill:h.sliderFill,clipPath:`url(#sl-${e.identifier})`,transform:"scale(1 -1)"})]}),i.jsx("text",{x:t+6,y:d,transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name}),l?i.jsx("rect",{x:o-34,y:d-S/2+3,width:30,height:S-6,rx:2,fill:b(e.value),transform:"scale(1 -1)"}):i.jsx("text",{x:o-6,y:d,transform:"scale(1 -1)",textAnchor:"end",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:ke(e.value)})]})}function le(e){const{softMin:n,softMax:a,value:r}=e;return n===void 0||a===void 0||typeof r!="number"||a<=n?null:Math.min(1,Math.max(0,(r-n)/(a-n)))}function ke(e){return e===null?"":typeof e=="boolean"?e?"On":"Off":typeof e=="number"?e.toFixed(3):typeof e=="string"?e:e.map(n=>n.toFixed(2)).join(", ")}function zn({link:e}){const[n,a]=Tn(e.from,e.to),r=`M ${e.from[0]} ${e.from[1]} C ${n[0]} ${n[1]}, ${a[0]} ${a[1]}, ${e.to[0]} ${e.to[1]}`,t=e.valid?h.wireInner:"#ff2020";return i.jsxs("g",{style:{pointerEvents:"none"},children:[i.jsx("path",{d:r,fill:"none",stroke:h.wire,strokeWidth:ne+2*N}),i.jsx("path",{d:r,fill:"none",stroke:t,strokeWidth:ne,strokeDasharray:e.muted?"10 10":void 0,strokeOpacity:e.muted?h.dashAlpha:1})]})}function Vn({node:e,laid:n}){const a=Math.max(n.yTop-n.yBottom,gn*2);return i.jsxs("g",{style:{pointerEvents:"none"},children:[i.jsx("rect",{x:n.x,y:-n.yTop,width:n.width,height:a,rx:D,fill:e.useCustomColor?b(e.color):h.frame,fillOpacity:h.frameAlpha,transform:"scale(1 -1)"}),e.label&&i.jsx("text",{x:n.x+n.width/2,y:-(n.yTop-25),transform:"scale(1 -1)",textAnchor:"middle",fill:h.text,fontSize:20,children:e.label})]})}function Xn({tree:e,zoom:n,onViewAll:a,onRefuse:r}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",height:Bn,padding:"0 var(--volter-space-2)",background:h.background,color:h.text,font:`${R}px inherit`,borderBottom:"1px solid #161616"},children:[i.jsx("span",{"data-testid":"node-editor-tree-type",style:{opacity:.85},children:e?.typeLabel??"Shader Editor"}),i.jsx("span",{style:{opacity:.4},children:"·"}),i.jsx("span",{"data-testid":"node-editor-material",children:e?.material??"No material"}),i.jsx("span",{style:{flex:1}}),i.jsxs("span",{style:{opacity:.6},children:[Math.round(n*100),"%"]}),i.jsx("button",{type:"button",className:"volter-btn","data-variant":"ghost","data-size":"sm",onClick:a,"data-testid":"node-editor-view-all",children:"View All"}),i.jsx("button",{type:"button",className:"volter-btn","data-variant":"ghost","data-size":"sm","data-testid":"node-editor-use-nodes",onClick:()=>r("Use Nodes writes Material.use_nodes — editing parity is not the program."),children:"Use Nodes"})]})}function Kn({entries:e,error:n,refusal:a}){const r=e.filter(u=>u.fallback!==null),t=e.filter(u=>u.approximate),o=e.reduce((u,l)=>u+l.panels.length,0),d=n||a||(r.length>0?`${r.map(u=>`"${u.node.name}" draws its sockets flat: ${u.fallback}`).join("; ")}.`:t.length>0?`${t.map(u=>`"${u.node.name}"`).join(", ")} ${t.length===1?"carries a":"carry"} declaration LAYOUT row, whose drawn height RNA cannot answer; one UI unit is reserved for it.`:o>0?`${o} socket panel${o===1?"":"s"} drawn from Blender's own declarations. Read-only: this view inspects the node tree and never writes it.`:"Read-only: this view inspects the node tree and never writes it.");return i.jsx("div",{"data-testid":"node-editor-status",style:{flex:"0 0 auto",height:Ln,display:"flex",alignItems:"center",padding:"0 var(--volter-space-2)",background:h.background,color:n||a?"#ffa028":"#888888",font:`${R}px inherit`,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:d})}function Zn({node:e,onRefuse:n}){return i.jsxs("aside",{"data-testid":"node-editor-sidebar",style:{width:Dn,flex:"0 0 auto",overflow:"auto",background:h.background,color:h.text,font:`${R}px inherit`,borderLeft:"1px solid #161616",padding:"var(--volter-space-2)"},children:[i.jsx("div",{style:{opacity:.6,marginBottom:"var(--volter-space-2)"},children:"Node"}),e?i.jsxs(i.Fragment,{children:[i.jsx(L,{label:"Name",value:e.name,onRefuse:n}),i.jsx(L,{label:"Label",value:e.label??"",onRefuse:n}),i.jsx(L,{label:"Color",value:e.useCustomColor?b(e.color):"Off",onRefuse:n,swatch:e.useCustomColor?b(e.color):void 0}),i.jsx(L,{label:"Mute",value:e.muted?"On":"Off",onRefuse:n}),i.jsx("div",{style:{opacity:.6,margin:"var(--volter-space-3) 0 var(--volter-space-1)"},children:"Properties"}),e.inputs.filter(A).map(a=>i.jsx(L,{label:a.label??a.name,value:a.linked?"Linked":ke(a.value),onRefuse:n},a.identifier))]}):i.jsx("div",{style:{opacity:.5},children:"No node looked at."})]})}function L({label:e,value:n,swatch:a,onRefuse:r}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",height:20},onPointerDown:()=>r(`"${e}" is read here and written nowhere — inspection parity.`),children:[i.jsx("span",{style:{flex:"0 0 45%",opacity:.75,textAlign:"right"},children:e}),a&&i.jsx("span",{style:{width:14,height:14,borderRadius:2,background:a,flex:"0 0 auto"}}),i.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},title:n,children:n})]})}export{Et as default,Ct as point,Tt as title};
1
+ import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{gl as Ce}from"./index-flxMlfV4.js";import{r as T}from"./index-nmcBqr7Y.js";import{s as Te,b as Q,a as Ee,n as ee,c as B,d as U,r as we,e as Oe,f as Ie,N as Ne}from"./blender-runtime-host-W_QVh8pY.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./preview-renderer-BrYNFV1p.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-Ax7CFkXJ.js";import"./hierarchy-marks-EEQa08In.js";import"./workspace-arrangement-BnGzBm57.js";const Re={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Factor",identifier:"Fac"},{kind:"input",name:"Type"},{kind:"input",name:"Lift",identifier:"Base Lift"},{kind:"input",name:"Lift",identifier:"Color Lift"},{kind:"input",name:"Gamma",identifier:"Base Gamma"},{kind:"input",name:"Gamma",identifier:"Color Gamma"},{kind:"input",name:"Gain",identifier:"Base Gain"},{kind:"input",name:"Gain",identifier:"Color Gain"},{kind:"input",name:"Offset",identifier:"Base Offset"},{kind:"input",name:"Offset",identifier:"Color Offset"},{kind:"input",name:"Power",identifier:"Base Power"},{kind:"input",name:"Power",identifier:"Color Power"},{kind:"input",name:"Slope",identifier:"Base Slope"},{kind:"input",name:"Slope",identifier:"Color Slope"},{kind:"panel",name:"Input",items:[{kind:"input",name:"Temperature",identifier:"Input Temperature"},{kind:"input",name:"Tint",identifier:"Input Tint"},{kind:"layout"}]},{kind:"panel",name:"Output",items:[{kind:"input",name:"Temperature",identifier:"Output Temperature"},{kind:"input",name:"Tint",identifier:"Output Tint"},{kind:"layout"}]}]},Pe={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Mask"},{kind:"panel",name:"Master",items:[{kind:"input",name:"Saturation",identifier:"Master Saturation"},{kind:"input",name:"Contrast",identifier:"Master Contrast"},{kind:"input",name:"Gamma",identifier:"Master Gamma"},{kind:"input",name:"Gain",identifier:"Master Gain"},{kind:"input",name:"Offset",identifier:"Master Offset"}],defaultClosed:!0},{kind:"panel",name:"Highlights",items:[{kind:"input",name:"Saturation",identifier:"Highlights Saturation"},{kind:"input",name:"Contrast",identifier:"Highlights Contrast"},{kind:"input",name:"Gamma",identifier:"Highlights Gamma"},{kind:"input",name:"Gain",identifier:"Highlights Gain"},{kind:"input",name:"Offset",identifier:"Highlights Offset"}],defaultClosed:!0},{kind:"panel",name:"Midtones",items:[{kind:"input",name:"Saturation",identifier:"Midtones Saturation"},{kind:"input",name:"Contrast",identifier:"Midtones Contrast"},{kind:"input",name:"Gamma",identifier:"Midtones Gamma"},{kind:"input",name:"Gain",identifier:"Midtones Gain"},{kind:"input",name:"Offset",identifier:"Midtones Offset"}],defaultClosed:!0},{kind:"panel",name:"Shadows",items:[{kind:"input",name:"Saturation",identifier:"Shadows Saturation"},{kind:"input",name:"Contrast",identifier:"Shadows Contrast"},{kind:"input",name:"Gamma",identifier:"Shadows Gamma"},{kind:"input",name:"Gain",identifier:"Shadows Gain"},{kind:"input",name:"Offset",identifier:"Shadows Offset"}],defaultClosed:!0},{kind:"panel",name:"Tonal Range",items:[{kind:"input",name:"Midtones Start"},{kind:"input",name:"Midtones End"}],defaultClosed:!0},{kind:"panel",name:"Channels",items:[{kind:"input",name:"Red",identifier:"Apply On Red"},{kind:"input",name:"Green",identifier:"Apply On Green"},{kind:"input",name:"Blue",identifier:"Apply On Blue"}],defaultClosed:!0}]},_e={customSocketOrder:!0,items:[{kind:"output",name:"Image"},{kind:"input",name:"Image"},{kind:"input",name:"Factor",identifier:"Fac"},{kind:"input",name:"Spill Channel"},{kind:"input",name:"Limit Method"},{kind:"input",name:"Limit Channel"},{kind:"input",name:"Limit Strength"},{kind:"panel",name:"Spill Strength",items:[{kind:"input",name:"Use Spill Strength",panelToggle:!0},{kind:"input",name:"Strength",identifier:"Spill Strength"}],defaultClosed:!0}]},Me={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Plane"},{kind:"input",name:"Upper Left"},{kind:"input",name:"Upper Right"},{kind:"input",name:"Lower Left"},{kind:"input",name:"Lower Right"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},ve={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Samples"},{kind:"input",name:"Center"},{kind:"input",name:"Rotation"},{kind:"input",name:"Scale"},{kind:"panel",name:"Translation",items:[{kind:"input",name:"Amount",identifier:"Translation Amount"},{kind:"input",name:"Direction",identifier:"Translation Direction"}]}]},Ae={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Displacement"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},be={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Glare"},{kind:"output",name:"Highlights"},{kind:"input",name:"Type"},{kind:"input",name:"Quality"},{kind:"panel",name:"Highlights",items:[{kind:"input",name:"Threshold",identifier:"Highlights Threshold"},{kind:"input",name:"Smoothness",identifier:"Highlights Smoothness"},{kind:"panel",name:"Clamp",items:[{kind:"input",name:"Clamp",identifier:"Clamp Highlights",panelToggle:!0},{kind:"input",name:"Maximum",identifier:"Maximum Highlights"}],defaultClosed:!0}],defaultClosed:!0},{kind:"panel",name:"Adjust",items:[{kind:"input",name:"Strength"},{kind:"input",name:"Saturation"},{kind:"input",name:"Tint"}]},{kind:"panel",name:"Glare",items:[{kind:"input",name:"Size"},{kind:"input",name:"Streaks"},{kind:"input",name:"Streaks Angle"},{kind:"input",name:"Iterations"},{kind:"input",name:"Fade"},{kind:"input",name:"Color Modulation"},{kind:"input",name:"Diagonal",identifier:"Diagonal Star"},{kind:"input",name:"Sun Position"},{kind:"input",name:"Jitter"},{kind:"input",name:"Kernel Data Type"},{kind:"input",name:"Kernel",identifier:"Float Kernel"},{kind:"input",name:"Kernel",identifier:"Color Kernel"}]}]},De={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Matte"},{kind:"output",name:"Edges"},{kind:"input",name:"Key Color"},{kind:"panel",name:"Preprocess",items:[{kind:"input",name:"Blur Size",identifier:"Preprocess Blur Size"}],defaultClosed:!0},{kind:"panel",name:"Key",items:[{kind:"input",name:"Balance",identifier:"Key Balance"}],defaultClosed:!0},{kind:"panel",name:"Tweak",items:[{kind:"input",name:"Black Level"},{kind:"input",name:"White Level"},{kind:"panel",name:"Edges",items:[{kind:"input",name:"Size",identifier:"Edge Search Size"},{kind:"input",name:"Tolerance",identifier:"Edge Tolerance"}],defaultClosed:!0}],defaultClosed:!0},{kind:"panel",name:"Mask",items:[{kind:"input",name:"Garbage Matte"},{kind:"input",name:"Core Matte"}],defaultClosed:!0},{kind:"panel",name:"Postprocess",items:[{kind:"input",name:"Blur Size",identifier:"Postprocess Blur Size"},{kind:"input",name:"Dilate Size",identifier:"Postprocess Dilate Size"},{kind:"input",name:"Feather Size",identifier:"Postprocess Feather Size"},{kind:"input",name:"Feather Falloff"}],defaultClosed:!0},{kind:"panel",name:"Despill",items:[{kind:"input",name:"Strength",identifier:"Despill Strength"},{kind:"input",name:"Balance",identifier:"Despill Balance"}],defaultClosed:!0}]},Be={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"UV"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Le={customSocketOrder:!0,items:[{kind:"output",name:"Mask"},{kind:"layout"},{kind:"input",name:"Size Source"},{kind:"input",name:"Size X"},{kind:"input",name:"Size Y"},{kind:"input",name:"Feather"},{kind:"panel",name:"Motion Blur",items:[{kind:"input",name:"Motion Blur",panelToggle:!0},{kind:"input",name:"Samples",identifier:"Motion Blur Samples"},{kind:"input",name:"Shutter",identifier:"Motion Blur Shutter"}],defaultClosed:!0}]},$e={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"output",name:"Plane"},{kind:"layout"},{kind:"panel",name:"Motion Blur",items:[{kind:"input",name:"Motion Blur",panelToggle:!0},{kind:"input",name:"Samples",identifier:"Motion Blur Samples"},{kind:"input",name:"Shutter",identifier:"Motion Blur Shutter"}],defaultClosed:!0}]},je={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Angle"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Fe={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"Type"},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"input",name:"Frame Type"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ge={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"layout"},{kind:"input",name:"Frame"},{kind:"input",name:"Invert"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},We={customSocketOrder:!0,items:[{kind:"output",name:"Image"},{kind:"input",name:"String"},{kind:"input",name:"Font"},{kind:"input",name:"Size"},{kind:"panel",name:"Alignment",items:[{kind:"input",name:"Horizontal Alignment"},{kind:"input",name:"Vertical Alignment"}],defaultClosed:!0},{kind:"panel",name:"Wrap",items:[{kind:"input",name:"Wrap",panelToggle:!0},{kind:"input",name:"Width",identifier:"Wrap Width"}],defaultClosed:!0}]},He={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"input",name:"Angle"},{kind:"input",name:"Scale"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ue={customSocketOrder:!0,items:[{kind:"input",name:"Image"},{kind:"output",name:"Image",alignWithPrevious:!0},{kind:"input",name:"X"},{kind:"input",name:"Y"},{kind:"panel",name:"Sampling",items:[{kind:"input",name:"Interpolation"},{kind:"input",name:"Extension X"},{kind:"input",name:"Extension Y"}],defaultClosed:!0}]},Ye={customSocketOrder:!0,items:[{kind:"output",name:"Matrix"},{kind:"panel",name:"Column 1",items:[{kind:"input",name:"Column 1 Row 1"},{kind:"input",name:"Column 1 Row 2"},{kind:"input",name:"Column 1 Row 3"},{kind:"input",name:"Column 1 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 2",items:[{kind:"input",name:"Column 2 Row 1"},{kind:"input",name:"Column 2 Row 2"},{kind:"input",name:"Column 2 Row 3"},{kind:"input",name:"Column 2 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 3",items:[{kind:"input",name:"Column 3 Row 1"},{kind:"input",name:"Column 3 Row 2"},{kind:"input",name:"Column 3 Row 3"},{kind:"input",name:"Column 3 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 4",items:[{kind:"input",name:"Column 4 Row 1"},{kind:"input",name:"Column 4 Row 2"},{kind:"input",name:"Column 4 Row 3"},{kind:"input",name:"Column 4 Row 4"}],defaultClosed:!0}]},ze={customSocketOrder:!0,items:[{kind:"panel",name:"Column 1",items:[{kind:"output",name:"Column 1 Row 1"},{kind:"output",name:"Column 1 Row 2"},{kind:"output",name:"Column 1 Row 3"},{kind:"output",name:"Column 1 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 2",items:[{kind:"output",name:"Column 2 Row 1"},{kind:"output",name:"Column 2 Row 2"},{kind:"output",name:"Column 2 Row 3"},{kind:"output",name:"Column 2 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 3",items:[{kind:"output",name:"Column 3 Row 1"},{kind:"output",name:"Column 3 Row 2"},{kind:"output",name:"Column 3 Row 3"},{kind:"output",name:"Column 3 Row 4"}],defaultClosed:!0},{kind:"panel",name:"Column 4",items:[{kind:"output",name:"Column 4 Row 1"},{kind:"output",name:"Column 4 Row 2"},{kind:"output",name:"Column 4 Row 3"},{kind:"output",name:"Column 4 Row 4"}],defaultClosed:!0},{kind:"input",name:"Matrix"}]},Ve={customSocketOrder:!0,items:[{kind:"input",name:"String"},{kind:"output",name:"String",alignWithPrevious:!0},{kind:"input",name:"Characters"},{kind:"input",name:"Whitespace"},{kind:"panel",name:"Limit",items:[{kind:"input",name:"Start"},{kind:"input",name:"End"}],defaultClosed:!0}]},Xe={customSocketOrder:!0,items:[{kind:"output",name:"Topology"},{kind:"input",name:"Bounds Min"},{kind:"input",name:"Bounds Max"},{kind:"input",name:"Resolution X"},{kind:"input",name:"Resolution Y"},{kind:"input",name:"Resolution Z"},{kind:"panel",name:"Min",items:[{kind:"input",name:"Min X"},{kind:"input",name:"Min Y"},{kind:"input",name:"Min Z"}],defaultClosed:!0}]},Ke={customSocketOrder:!0,conditional:!0,items:[{kind:"output",name:"Geometry"},{kind:"input",name:"",identifier:"__extend__main"},{kind:"output",name:"",identifier:"__extend__main",alignWithPrevious:!0},{kind:"panel",name:"Generated",items:[{kind:"separator"},{kind:"input",name:"",identifier:"__extend__generation"},{kind:"output",name:"",identifier:"__extend__generation",alignWithPrevious:!0}]}]},Ze={customSocketOrder:!0,items:[{kind:"output",name:"Names"},{kind:"input",name:"Geometry"},{kind:"panel",name:"Filter Data Type",items:[{kind:"input",name:"Filter Data Type",panelToggle:!0},{kind:"input",name:"Data Type"}]},{kind:"panel",name:"Filter Domain",items:[{kind:"input",name:"Filter Domain",panelToggle:!0},{kind:"input",name:"Domain"}]}]},qe={customSocketOrder:!0,conditional:!0,items:[{kind:"layout"},{kind:"output",name:"Points"},{kind:"output",name:"Value"},{kind:"panel",name:"Voxel Index",items:[{kind:"output",name:"X"},{kind:"output",name:"Y"},{kind:"output",name:"Z"},{kind:"output",name:"Is Tile"},{kind:"output",name:"Extent"}],defaultClosed:!0},{kind:"input",name:"Grid"}]},Je={customSocketOrder:!0,items:[{kind:"output",name:"X"},{kind:"output",name:"Y"},{kind:"output",name:"Z"},{kind:"panel",name:"Tile",items:[{kind:"output",name:"Is Tile"},{kind:"output",name:"Extent X"},{kind:"output",name:"Extent Y"},{kind:"output",name:"Extent Z"}],defaultClosed:!0}]},Qe={customSocketOrder:!0,items:[{kind:"input",name:"Mesh"},{kind:"output",name:"Mesh",alignWithPrevious:!0},{kind:"input",name:"Selection"},{kind:"input",name:"Affect Kind"},{kind:"input",name:"Start Left Offset"},{kind:"input",name:"Start Right Offset"},{kind:"input",name:"End Left Offset"},{kind:"input",name:"End Right Offset"},{kind:"input",name:"Offset"},{kind:"input",name:"Miter"},{kind:"input",name:"Spread"},{kind:"input",name:"Segments"},{kind:"input",name:"Shape"},{kind:"input",name:"Profile"},{kind:"panel",name:"Selections",items:[{kind:"output",name:"Vertex Face"},{kind:"output",name:"Edge Face"},{kind:"output",name:"Outer Edge"},{kind:"output",name:"Mid Edge"}]}]},en={customSocketOrder:!0,items:[{kind:"output",name:"Amplitude"},{kind:"input",name:"Sound"},{kind:"input",name:"Time"},{kind:"input",name:"All Channels"},{kind:"input",name:"Channel"},{kind:"input",name:"Low"},{kind:"input",name:"High"},{kind:"panel",name:"FFT",items:[{kind:"input",name:"FFT Size"},{kind:"input",name:"Window Function"}],defaultClosed:!0}]},nn={customSocketOrder:!0,items:[{kind:"output",name:"Curve Instances"},{kind:"output",name:"Remainder"},{kind:"output",name:"Line"},{kind:"output",name:"Word"},{kind:"output",name:"Pivot Point"},{kind:"input",name:"String"},{kind:"input",name:"Size"},{kind:"input",name:"Font"},{kind:"panel",name:"Alignment",items:[{kind:"input",name:"Align X"},{kind:"input",name:"Align Y"},{kind:"input",name:"Pivot Point"}],defaultClosed:!0},{kind:"panel",name:"Spacing",items:[{kind:"input",name:"Character Spacing"},{kind:"input",name:"Word Spacing"},{kind:"input",name:"Line Spacing"}],defaultClosed:!0},{kind:"panel",name:"Text Box",items:[{kind:"input",name:"Overflow"},{kind:"input",name:"Text Box Width"},{kind:"input",name:"Text Box Height"}],defaultClosed:!0}]},tn={customSocketOrder:!0,conditional:!0,items:[{kind:"input",name:"Target"},{kind:"output",name:"Target",alignWithPrevious:!0},{kind:"output",name:"Transferred Names"},{kind:"panel",name:"Target IDs",items:[],defaultClosed:!0},{kind:"input",name:"Source"},{kind:"panel",name:"Source IDs",items:[],defaultClosed:!0},{kind:"input",name:"Pattern Mode"},{kind:"input",name:"Attribute Names"},{kind:"input",name:"Exclude Names"}]},an={customSocketOrder:!0,items:[{kind:"input",name:"World"},{kind:"output",name:"World",alignWithPrevious:!0},{kind:"input",name:"Delta Time"},{kind:"input",name:"Filter"},{kind:"input",name:"Simulation to World"},{kind:"panel",name:"Solver",items:[{kind:"input",name:"Substeps"},{kind:"input",name:"Constraint Iterations"},{kind:"input",name:"Solver Path"}],defaultClosed:!0},{kind:"panel",name:"Interpolation Range",items:[{kind:"input",name:"Begin"},{kind:"input",name:"End"}],defaultClosed:!0}]},on={customSocketOrder:!0,conditional:!0,items:[{kind:"input",name:"Closure"},{kind:"panel",name:"Interface",items:[{kind:"output",name:"",identifier:"__extend__"},{kind:"input",name:"",identifier:"__extend__"}]}]},rn={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"layout"},{kind:"input",name:"Color"},{kind:"input",name:"Roughness"},{kind:"input",name:"IOR"},{kind:"input",name:"Normal"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},un={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"layout"},{kind:"input",name:"Base Color"},{kind:"input",name:"Edge Tint"},{kind:"input",name:"IOR"},{kind:"input",name:"Extinction"},{kind:"input",name:"Roughness"},{kind:"input",name:"Anisotropy"},{kind:"input",name:"Rotation"},{kind:"input",name:"Normal"},{kind:"input",name:"Tangent"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},sn={customSocketOrder:!0,items:[{kind:"output",name:"BSDF"},{kind:"input",name:"Base Color"},{kind:"input",name:"Metallic"},{kind:"input",name:"Roughness"},{kind:"input",name:"IOR"},{kind:"input",name:"Alpha"},{kind:"input",name:"Thin Wall"},{kind:"input",name:"Normal"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Diffuse",items:[{kind:"input",name:"Diffuse Roughness"}],defaultClosed:!0},{kind:"panel",name:"Subsurface",items:[{kind:"layout"},{kind:"input",name:"Subsurface Weight"},{kind:"input",name:"Subsurface Radius"},{kind:"input",name:"Subsurface Scale"},{kind:"input",name:"Subsurface IOR"},{kind:"input",name:"Subsurface Anisotropy"}],defaultClosed:!0},{kind:"panel",name:"Specular",items:[{kind:"layout"},{kind:"input",name:"Specular IOR Level"},{kind:"input",name:"Specular Tint"},{kind:"input",name:"Anisotropic"},{kind:"input",name:"Anisotropic Rotation"},{kind:"input",name:"Tangent"}],defaultClosed:!0},{kind:"panel",name:"Transmission",items:[{kind:"input",name:"Transmission Weight"}],defaultClosed:!0},{kind:"panel",name:"Coat",items:[{kind:"input",name:"Coat Weight"},{kind:"input",name:"Coat Roughness"},{kind:"input",name:"Coat IOR"},{kind:"input",name:"Coat Tint"},{kind:"input",name:"Coat Normal"}],defaultClosed:!0},{kind:"panel",name:"Sheen",items:[{kind:"input",name:"Sheen Weight"},{kind:"input",name:"Sheen Roughness"},{kind:"input",name:"Sheen Tint"}],defaultClosed:!0},{kind:"panel",name:"Emission",items:[{kind:"input",name:"Emission Color"},{kind:"input",name:"Emission Strength"}],defaultClosed:!0},{kind:"panel",name:"Thin Film",items:[{kind:"input",name:"Thin Film Thickness"},{kind:"input",name:"Thin Film IOR"}],defaultClosed:!0}]},dn={customSocketOrder:!0,conditional:!0,items:[{kind:"layout"},{kind:"output",name:"Is Hit"},{kind:"output",name:"Self Hit"},{kind:"output",name:"Hit Distance"},{kind:"output",name:"Hit Position"},{kind:"output",name:"Hit Normal"},{kind:"input",name:"Position"},{kind:"input",name:"Direction"},{kind:"input",name:"Length"},{kind:"panel",name:"Attributes",items:[{kind:"input",name:"",identifier:"__extend__"},{kind:"output",name:"",identifier:"__extend__",alignWithPrevious:!0}],defaultClosed:!0}]},ln={customSocketOrder:!0,items:[{kind:"output",name:"Volume"},{kind:"input",name:"Weight",conditional:!0},{kind:"panel",name:"Absorption",items:[{kind:"input",name:"Absorption Coefficients"}]},{kind:"panel",name:"Scatter",items:[{kind:"layout"},{kind:"input",name:"Scatter Coefficients"},{kind:"input",name:"Anisotropy"},{kind:"input",name:"IOR"},{kind:"input",name:"Backscatter"},{kind:"input",name:"Alpha"},{kind:"input",name:"Diameter"}]},{kind:"panel",name:"Emission",items:[{kind:"input",name:"Emission Coefficients"}]}]},mn={CompositorNodeColorBalance:Re,CompositorNodeColorCorrection:Pe,CompositorNodeColorSpill:_e,CompositorNodeCornerPin:Me,CompositorNodeDBlur:ve,CompositorNodeDisplace:Ae,CompositorNodeGlare:be,CompositorNodeKeying:De,CompositorNodeMapUV:Be,CompositorNodeMask:Le,CompositorNodePlaneTrackDeform:$e,CompositorNodeRotate:je,CompositorNodeScale:Fe,CompositorNodeStabilize:Ge,CompositorNodeStringToImage:We,CompositorNodeTransform:He,CompositorNodeTranslate:Ue,FunctionNodeCombineMatrix:Ye,FunctionNodeSeparateMatrix:ze,FunctionNodeTrimString:Ve,GeometryNodeCubeGridTopology:Xe,GeometryNodeForeachGeometryElementOutput:Ke,GeometryNodeGetAttributeNames:Ze,GeometryNodeGridToPoints:qe,GeometryNodeInputVoxelIndex:Je,GeometryNodeMeshBevel:Qe,GeometryNodeSampleSoundFrequencies:en,GeometryNodeStringToCurves:nn,GeometryNodeTransferAttributes:tn,GeometryNodeXPBDSolver:an,NodeEvaluateClosure:on,ShaderNodeBsdfGlass:rn,ShaderNodeBsdfMetallic:un,ShaderNodeBsdfPrincipled:sn,ShaderNodeRaycast:dn,ShaderNodeVolumeCoefficients:ln},I=20,N=1,S=I,O=I/2,D=.2*I,me=.25*I,Z=1.2*I,_=.1*I,pn=.8*I,w=.5,Y=D+w,cn=D+N,ne=2.5,kn=.2,fn=S*.5,z=S*-.5,hn=me,gn=1.5*I,R=11,h={sliderFill:"#4671b2",background:"#1a1a1a",body:"#303030",outline:"#ffffff",outlineAlpha:38/255,select:"#ed5700",active:"#ffffff",wireInner:"#8d8d8d",wire:"#1a1a1a",noodleCurving:4,dashAlpha:.5,text:"#e6e6e6",frame:"#0f0f0f",frameAlpha:204/255},Sn={INPUT:"#82354c",OUTPUT:"#3e232a",CONVERTER:"#246283",COLOR:"#6e6e23",VECTOR:"#3c3c83",FILTER:"#412b51",GROUP:"#374725",INTERFACE:"#1d1d1d",MATTE:"#5a3838",DISTORT:"#3e5a5b",TEXTURE:"#79461d",SHADER:"#2b652b",SCRIPT:"#203c3c",GEOMETRY:"#1d725e",ATTRIBUTE:"#1d2546",NONE:h.body,PATTERN:h.body},xn={VALUE:"#a1a1a1",VECTOR:"#6363c7",RGBA:"#c7c729",SHADER:"#63c763",BOOLEAN:"#cca6d6",INT:"#598c5c",STRING:"#70b3ff",OBJECT:"#ed9e5c",IMAGE:"#633863",GEOMETRY:"#00d6a3",COLLECTION:"#f5f5f5",TEXTURE:"#9e4fa3",MATERIAL:"#eb7582",ROTATION:"#a663c7",MENU:"#666666",MATRIX:"#b83385",BUNDLE:"#4d8080",CLOSURE:"#7d7d3b",FONT:"#635742",SOUND:"#635742",INT_VECTOR:"#5c789c",CUSTOM:"#333333"},yn="#ff00ff",pe=h.wire,Cn="#808080",F=N;function A(e){return e.enabled&&!e.hide}function V(e){const n=e.location[0]??0,a=e.location[1]??0,r=e.width,t=e.outputs.filter(A),o=e.inputs.filter(A);if(e.collapsed){const p=fn,m=p*Math.max(o.length,t.length,2)+D*2,x=a+m/2+z,c=a-m/2+z,k=(g,C)=>{let y=a+p*(g.length-1)*.5+z;return g.map(E=>{const P=M(E,C,C?n+r:n,y,y);return y-=p,P})};return{name:e.name,x:n,yTop:x,yBottom:c,width:r,collapsed:!0,sockets:[...k(t,!0),...k(o,!1)]}}let d=a-S;const u=[],l=(p,m)=>{const x=d;u.push(M(p,m,m?n+r:n,x-O,x)),d=x-S};return(t.length>0||o.length>0)&&(d-=2*_),t.forEach((p,m)=>{m>0&&(d-=_),l(p,!0)}),t.length>0&&o.length>0&&(d-=_),o.forEach((p,m)=>{(m>0||t.length>0)&&m>0&&(d-=_),l(p,!1)}),t.length>0||o.length>0?d-=2*_:d-=O,{name:e.name,x:n,yTop:a,yBottom:Math.min(d,a-2*S),width:r,collapsed:!1,sockets:u}}function M(e,n,a,r,t,o=!1){return{identifier:e.identifier,name:e.label??e.name,type:e.type,shape:e.shape,output:n,linked:e.linked,multiInput:e.multiInput,hideValue:e.hideValue,value:e.value,...e.softMin===void 0?{}:{softMin:e.softMin},...e.softMax===void 0?{}:{softMax:e.softMax},x:a,y:r,rowTop:t,panelCollapsed:o}}function Tn(e,n,a=h.noodleCurving){if(a===0)return[[e[0]+(n[0]-e[0])/3,e[1]+(n[1]-e[1])/3],[e[0]+(n[0]-e[0])*2/3,e[1]+(n[1]-e[1])*2/3]];const r=Math.abs(n[0]-e[0]),t=Math.abs(n[1]-e[1]),o=r===0?Number.POSITIVE_INFINITY:t/r,d=Math.min(1,o*(4.5-.25*a)),u=a*.1*r*d;return[[e[0]+u,e[1]],[n[0]-u,n[1]]]}function K(e){return e.idname==="NodeFrame"?h.frame:e.colorTag==="OUTPUT"&&!e.activeOutput?h.body:Sn[e.colorTag]??h.body}function te(e){return e.useCustomColor?b(e.color):h.body}function b(e){const n=a=>Math.round(Math.min(1,Math.max(0,a))*255).toString(16).padStart(2,"0");return`#${n(e[0]??0)}${n(e[1]??0)}${n(e[2]??0)}`}function ie(e,n){const a=ae(h.background),r=ae(e);return b([r[0]*(1-n)+a[0]*n,r[1]*(1-n)+a[1]*n,r[2]*(1-n)+a[2]*n])}const En=.6,wn=.8,On=.2;function ae(e){const n=Number.parseInt(e.slice(1),16);return[(n>>16&255)/255,(n>>8&255)/255,(n&255)/255]}function G(e){return xn[e]??yn}const oe=O,X=Z/3,re=Z/4,In=I,j={cell:8,reach:4,spread:3.64648,stroke:1},Nn="#000000",Rn=31/255*1.5,$=e=>e.identifier??e.name;function Pn(e,n,a){if(!e.customSocketOrder)return{ok:!1,why:"its declaration does not set use_custom_socket_order, so Blender lays it out the legacy way"};const r=[],t=[],o=l=>{for(const p of l)p.kind==="input"?r.push($(p)):p.kind==="output"?t.push($(p)):p.kind==="panel"&&o(p.items)};o(e.items);const d=(l,p,m)=>{if(l.length!==p.length)return`the declaration names ${l.length} ${m}${l.length===1?"":"s"} and the engine reports ${p.length}`;for(let x=0;x<l.length;x++)if(l[x]!==p[x]?.identifier)return`${m} ${x} is "${p[x]?.identifier}" in the engine and "${l[x]}" in the declaration`;return null},u=d(t,a,"output")??d(r,n,"input");return u===null?{ok:!0}:{ok:!1,why:u}}const _n={Socket:2,Separator:.5,Layout:3,PanelHeader:4},Mn={Socket:2,Separator:1,Layout:5,PanelHeader:4,PanelContentEnd:1},vn={Socket:{Socket:1,Separator:0,Layout:2,PanelHeader:3,PanelContentEnd:2},Layout:{Socket:2,Separator:0,Layout:1,PanelHeader:3,PanelContentEnd:2},Separator:{Socket:2,Separator:1,Layout:1,PanelHeader:1,PanelContentEnd:1},PanelHeader:{Socket:4,Separator:3,Layout:3,PanelHeader:5,PanelContentBegin:3,PanelContentEnd:3},PanelContentBegin:{Socket:2,Separator:1,Layout:2,PanelHeader:3,PanelContentEnd:1},PanelContentEnd:{Socket:1,Separator:1,Layout:1,PanelHeader:3,PanelContentEnd:0}};function ce(e,n,a,r,t,o,d){let u=!1;for(const l of e){if(l.kind==="input"||l.kind==="output"){const y=n.get(`${l.kind}:${$(l)}`);if(!y||!A(y)){u=!1;continue}const E=o[o.length-1];if(l.alignWithPrevious===!0&&u&&E&&E.type==="Socket"){o[o.length-1]={type:"Socket",input:l.kind==="input"?y:E.input,output:l.kind==="output"?y:E.output},u=!0;continue}o.push({type:"Socket",input:l.kind==="input"?y:void 0,output:l.kind==="output"?y:void 0}),u=!0;continue}if(u=!1,l.kind==="separator"){o.push({type:"Separator"});continue}if(l.kind==="layout"){r&&o.push({type:"Layout"});continue}if(l.kind!=="panel")continue;const p=l.items[0],m=p&&p.kind==="input"&&p.panelToggle===!0?p:null,x=m?n.get(`input:${$(m)}`)??null:null,c=[],k=y=>{for(const E of y)if(E.kind==="input"||E.kind==="output"){const P=n.get(`${E.kind}:${$(E)}`);P&&c.push(P)}else E.kind==="panel"&&k(E.items)};if(k(l.items),!c.some(A))continue;const g=a(l.defaultClosed===!0),C={name:l.name,depth:t,collapsed:g,toggle:x,owned:c,centerY:0,contentTop:null,contentBottom:null,fillsNodeEnd:!1};d.push(C),o.push({type:"PanelHeader",panel:C}),!g&&(o.push({type:"PanelContentBegin",panel:C}),ce(l.items.filter(y=>y!==m),n,a,r,t+1,o,d),o.push({type:"PanelContentEnd",panel:C}))}}function An(e){const n=e.location[0]??0,a=e.location[1]??0,r=e.width,t=new Map;for(const c of e.inputs)t.set(`input:${c.identifier}`,c);for(const c of e.outputs)t.set(`output:${c.identifier}`,c);let o=0;const d=e.panelStates,u=[],l=[];ce(e.declaration.items,t,c=>d[o++]?.collapsed??c,e.showOptions,0,u,l);const p=[];let m=a-S;u.length===0&&(m-=O);for(let c=0;c<u.length;c++){const k=u[c];if(!k)continue;const g=u[c-1],C=c===0?_n[k.type]??0:vn[g?.type??"Socket"]?.[k.type]??0;if(m-=C*_,k.type==="Socket"){const y=m;k.output&&p.push(M(k.output,!0,n+r,y-O,y)),k.input&&p.push(M(k.input,!1,n,y-O,y)),m=y-S;continue}if(k.type==="Layout"||k.type==="Separator"){m-=S;continue}if(k.type==="PanelHeader"&&k.panel){m-=oe/2,k.panel.centerY=m,m-=oe/2,k.panel.toggle&&p.push(M(k.panel.toggle,!1,n,k.panel.centerY,k.panel.centerY));continue}k.type==="PanelContentBegin"&&k.panel&&(k.panel.contentTop=m),k.type==="PanelContentEnd"&&k.panel&&(k.panel.contentBottom=m)}const x=u[u.length-1];x&&(m-=(Mn[x.type]??0)*_);for(const c of l)if(c.collapsed)for(const k of c.owned){if(!A(k))continue;const g=e.outputs.includes(k);p.push(M(k,g,g?n+r:n,c.centerY,c.centerY,!0))}for(let c=u.length-1;c>=0;c--){const k=u[c];if(!k||k.type!=="PanelContentEnd")break;k.panel&&(k.panel.fillsNodeEnd=!0)}return{name:e.name,x:n,yTop:a,yBottom:Math.min(m,a-2*S),width:r,collapsed:!1,sockets:p,panels:l.map(c=>({name:c.name,depth:c.depth,collapsed:c.collapsed,centerY:c.centerY,contentTop:c.contentTop,contentBottom:c.contentBottom,fillsNodeEnd:c.fillsNodeEnd,toggle:c.toggle?M(c.toggle,!1,n,c.centerY,c.centerY):null}))}}function bn(e){const n=a=>a.some(r=>r.kind==="layout"?!0:r.kind==="panel"?n(r.items):!1);return n(e.items)}const Ct="workspace.document",Tt="Shader Editor";Ce(Ne);const Dn=320,ue=.1,se=4;function Et(){const e=T.useSyncExternalStore(Te,Q,Q),[n,a]=T.useState(null),[r,t]=T.useState(null),o=T.useRef(null),d=T.useRef(!1);T.useSyncExternalStore(Ee,ee,ee);const{transform:u,looked:l,refusal:p,size:m}=U(),x=T.useCallback(s=>{const f=U().transform;B({transform:typeof s=="function"?s(f):s})},[]),c=T.useCallback(s=>{B({looked:s,refusal:null})},[]),k=T.useCallback(s=>{const f=U().size;f.w===s.w&&f.h===s.h||B({size:s})},[]),g=T.useCallback(s=>{we(s)},[]);T.useEffect(()=>{let s=!0;return(async()=>{try{const f=await Oe();if(!s)return;a(f),t(null)}catch(f){if(!s)return;t(f instanceof Error?f.message:String(f))}})(),()=>{s=!1}},[e]),T.useEffect(()=>{const s=o.current;if(!s)return;const f=new ResizeObserver(()=>{k({w:s.clientWidth,h:s.clientHeight})});return f.observe(s),k({w:s.clientWidth,h:s.clientHeight}),()=>f.disconnect()},[]);const C=T.useMemo(()=>jn(n),[n]);T.useEffect(()=>{B({drawn:[...C.frames,...C.nodes].map(({node:s,laid:f,panels:v,fallback:ye})=>{const J=f.sockets.find(H=>!H.panelCollapsed)??f.sockets[0];return{panels:v.length,collapsedPanels:v.filter(H=>H.collapsed).length,panelFallback:ye,name:s.name,x:f.x,yTop:f.yTop,yBottom:f.yBottom,width:f.width,height:f.yTop-f.yBottom,sockets:f.sockets.length,firstSocketBelowTop:J?f.yTop-J.y:null,header:K(s)}})})},[C]);const y=T.useCallback(()=>{const s=Fn(C.nodes);if(!s)return;const f=de(Math.min(m.w/(s.w+2*S),m.h/(s.h+2*S)),ue,se);B({transform:{cx:s.x+s.w/2,cy:s.y-s.h/2,zoom:f},framedAt:Date.now()})},[C.nodes,m.h,m.w]),E=Ie(),P=T.useRef(0);T.useEffect(()=>{E!==P.current&&(P.current=E,y())},[E,y]),T.useEffect(()=>{d.current||C.nodes.length===0||m.w<=1||(d.current=!0,y())},[C.nodes.length,m.w,y]);const W=T.useRef(null),fe=s=>{s.button===1&&(s.preventDefault(),s.target.setPointerCapture?.(s.pointerId),W.current={x:s.clientX,y:s.clientY,cx:u.cx,cy:u.cy})},he=s=>{const f=W.current;f&&x(v=>({...v,cx:f.cx-(s.clientX-f.x)/v.zoom,cy:f.cy+(s.clientY-f.y)/v.zoom}))},q=()=>{W.current=null},ge=s=>{s.preventDefault(),x(f=>({...f,zoom:de(f.zoom*(s.deltaY<0?1.1:1/1.1),ue,se)}))},Se=n?.nodes.find(s=>s.name===l)??null,xe=u.zoom>kn;return i.jsxs("div",{"data-testid":"blender-node-editor",style:{display:"flex",position:"absolute",inset:0,overflow:"hidden"},children:[i.jsxs("div",{style:{display:"flex",flexDirection:"column",flex:1,minWidth:0,minHeight:0},children:[i.jsx(Xn,{tree:n,zoom:u.zoom,onViewAll:y,onRefuse:g}),i.jsx("div",{ref:o,style:{position:"relative",flex:1,minHeight:0},children:i.jsx("svg",{role:"presentation",width:"100%",height:"100%",onPointerDown:fe,onPointerMove:he,onPointerUp:q,onPointerCancel:q,onWheel:ge,onContextMenu:s=>{s.preventDefault(),g("The node context menu adds, deletes and reconnects nodes — editing.")},style:{display:"block",background:h.background,cursor:"default"},children:i.jsxs("g",{transform:`translate(${m.w/2} ${m.h/2}) scale(${u.zoom} ${-u.zoom}) translate(${-u.cx} ${-u.cy})`,children:[C.frames.map(s=>i.jsx(Vn,{node:s.node,laid:s.laid},s.node.name)),C.links.map(s=>i.jsx(zn,{link:s},s.key)),C.nodes.map(s=>i.jsx(Gn,{node:s.node,laid:s.laid,panels:s.panels,looked:s.node.name===l,details:xe,onLook:()=>c(s.node.name),onRefuse:g},s.node.name))]})})}),i.jsx(Kn,{entries:C.nodes,error:r,refusal:p})]}),i.jsx(Zn,{node:Se,onRefuse:g})]})}const Bn=26,Ln=22,$n=mn;function jn(e){if(!e)return{nodes:[],frames:[],links:[]};const n=new Map,a=e.nodes.map(t=>{const o={name:t.name,location:t.location,width:t.width,collapsed:t.collapsed,inputs:t.inputs,outputs:t.outputs},d=t.collapsed?void 0:$n[t.idname];if(t.panelCount>0&&!d){const l=V(o);return n.set(t.name,l),{node:t,laid:l,panels:[],fallback:t.collapsed?null:"no traced declaration — the trace covers the 36 node types that declare a panel in Blender 5.2.0, and a node group’s panels are runtime data",approximate:!1}}if(d){const l=Pn(d,t.inputs,t.outputs);if(l.ok){const m=An({...o,declaration:d,panelStates:t.panels,showOptions:t.showOptions});return n.set(t.name,m),{node:t,laid:m,panels:m.panels,fallback:null,approximate:bn(d)}}const p=V(o);return n.set(t.name,p),{node:t,laid:p,panels:[],fallback:l.why,approximate:!1}}const u=V(o);return n.set(t.name,u),{node:t,laid:u,panels:[],fallback:null,approximate:!1}}),r=e.links.flatMap((t,o)=>{const d=n.get(t.fromNode),u=n.get(t.toNode);if(!d||!u)return[];const l=d.sockets.find(m=>m.output&&m.identifier===t.fromSocket),p=u.sockets.find(m=>!m.output&&m.identifier===t.toSocket);return!l||!p?[]:[{key:`${t.fromNode}.${t.fromSocket}→${t.toNode}.${t.toSocket}#${o}`,from:[l.x,l.y],to:[p.x,p.y],fromColor:G(l.type),toColor:G(p.type),muted:t.muted,valid:t.valid}]});return{nodes:a.filter(t=>t.node.idname!=="NodeFrame"),frames:a.filter(t=>t.node.idname==="NodeFrame"),links:r}}function Fn(e){if(e.length===0)return null;let n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const{laid:o}of e)n=Math.min(n,o.x),a=Math.max(a,o.x+o.width),r=Math.min(r,o.yBottom),t=Math.max(t,o.yTop);return{x:n,y:t,w:a-n,h:t-r}}const de=(e,n,a)=>Math.min(a,Math.max(n,e));function Gn({node:e,laid:n,panels:a,looked:r,details:t,onLook:o,onRefuse:d}){if(e.type==="REROUTE"){const g=n.sockets[0];return i.jsx("circle",{cx:n.x,cy:n.yTop,r:hn,fill:g?G(g.type):h.wireInner,stroke:pe,strokeWidth:F,onPointerDown:C=>{C.button===0&&o()}})}const u=e.muted?ie(K(e),En):K(e),l=e.muted?ie(te(e),wn):te(e),p=e.muted?1-On:1,m=e.selected?e.activeOutput||r?h.active:h.select:h.outline,x=e.selected?1:h.outlineAlpha,c=n.yTop-n.yBottom,k=e.label??e.typeLabel;return i.jsxs("g",{opacity:p,onPointerDown:g=>{g.button===0&&o()},onDoubleClick:()=>d(`Renaming "${e.name}" writes Node.name — editing parity is not the program.`),style:{cursor:"default"},children:[n.collapsed?i.jsx("rect",{x:n.x-w,y:-n.yTop-w,width:n.width+2*w,height:c+2*w,rx:Y,fill:u,transform:"scale(1 -1)"}):i.jsxs(i.Fragment,{children:[i.jsx("rect",{x:n.x-w,y:-(n.yTop-S)-w,width:n.width+2*w,height:c-S+2*w,rx:Y,fill:l,transform:"scale(1 -1)"}),i.jsx("rect",{x:n.x-w,y:-n.yTop-w,width:n.width+2*w,height:S+2*w,rx:Y,fill:u,transform:"scale(1 -1)"}),i.jsx("rect",{x:n.x-w,y:-(n.yTop-S)-w,width:n.width+2*w,height:D,fill:u,transform:"scale(1 -1)"}),a.map(g=>i.jsx(Wn,{panel:g,laid:n},`bg:${g.name}`))]}),i.jsx("rect",{x:n.x-N,y:-n.yTop-N,width:n.width+2*N,height:c+2*N,rx:cn,fill:"none",stroke:m,strokeOpacity:x,strokeWidth:N,transform:"scale(1 -1)"}),i.jsx("text",{x:n.x+Z,y:-(n.yTop-S/2),transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:k}),t&&n.sockets.map(g=>i.jsx(Un,{socket:g,node:n,onRefuse:d},`${g.output?"o":"i"}:${g.identifier}`)),t&&a.map(g=>i.jsx(Hn,{panel:g,laid:n,onRefuse:d},`hd:${g.name}`))]})}function Wn({panel:e,laid:n}){if(e.contentTop===null||e.contentBottom===null)return null;const a=[{y:e.contentTop,height:e.contentTop-e.contentBottom,radius:0,times:1}];return e.fillsNodeEnd&&a.push({y:e.contentBottom,height:e.contentBottom-n.yBottom,radius:D,times:e.depth+1}),i.jsx("g",{style:{pointerEvents:"none"},children:a.flatMap((r,t)=>Array.from({length:r.times},(o,d)=>i.jsx("rect",{x:n.x,y:-r.y,width:n.width,height:Math.max(r.height,0),rx:r.radius,fill:Nn,fillOpacity:Rn,transform:"scale(1 -1)"},`${t}:${d}`)))})}function Hn({panel:e,laid:n,onRefuse:a}){const r=pn,t=r/j.cell,o=n.x+X+r/2,d=e.centerY,u=j.reach*t,l=j.spread*t,p=e.collapsed?`M ${o-u/2} ${-(d+l)} L ${o+u/2} ${-d} L ${o-u/2} ${-(d-l)}`:`M ${o-l} ${-(d+u/2)} L ${o} ${-(d-u/2)} L ${o+l} ${-(d+u/2)}`,m=n.x+X+r+re+(e.toggle&&!e.toggle.linked?In:0);return i.jsxs("g",{onPointerDown:x=>{x.button===0&&(x.stopPropagation(),a(`${e.collapsed?"Opening":"Collapsing"} "${e.name}" writes the panel's is_collapsed — editing parity is not the program.`))},style:{cursor:"default"},children:[i.jsx("rect",{x:n.x,y:-(d+O),width:n.width,height:2*O,fill:"transparent",transform:"scale(1 -1)"}),i.jsx("path",{d:p,fill:"none",stroke:h.text,strokeWidth:j.stroke*t,strokeLinecap:"round",strokeLinejoin:"round",transform:"scale(1 -1)",style:{pointerEvents:"none"}}),e.toggle&&!e.toggle.linked&&i.jsx("rect",{x:n.x+X+r+re,y:-(d+O/2),width:O,height:O,rx:.2*O,fill:e.toggle.value===!0?"#4772b3":"#545454",transform:"scale(1 -1)",style:{pointerEvents:"none"}}),i.jsx("text",{x:m,y:-d,transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name})]})}function Un({socket:e,node:n,onRefuse:a}){const r=G(e.type),t=e.type==="CUSTOM"?Cn:pe,o=me,d=e.shape.replace("_DOT",""),u=e.shape.endsWith("_DOT"),l=d==="SQUARE"?i.jsx("rect",{x:e.x-o,y:-e.y-o,width:2*o,height:2*o,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"}):d==="DIAMOND"?i.jsx("polygon",{points:`${e.x},${-e.y-o} ${e.x+o},${-e.y} ${e.x},${-e.y+o} ${e.x-o},${-e.y}`,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"}):i.jsx("circle",{cx:e.x,cy:-e.y,r:o,fill:r,stroke:t,strokeWidth:F,transform:"scale(1 -1)"});return i.jsxs("g",{onPointerDown:p=>{p.button===0&&(p.stopPropagation(),a(`Dragging from "${e.name}" would make a link — editing parity is not the program.`))},children:[l,u&&i.jsx("circle",{cx:e.x,cy:-e.y,r:o*.35,fill:t,transform:"scale(1 -1)"}),!n.collapsed&&!e.panelCollapsed&&i.jsx(Yn,{socket:e,node:n,onRefuse:a})]})}function Yn({socket:e,node:n,onRefuse:a}){const r=O,t=n.x+r,o=n.x+n.width-r,d=-(e.rowTop-S/2);if(!(!e.output&&!e.linked&&!e.hideValue&&e.value!==null))return i.jsx("text",{x:e.output?o:t,y:d,transform:"scale(1 -1)",textAnchor:e.output?"end":"start",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name});const l=Array.isArray(e.value)&&e.value.length>=3;return i.jsxs("g",{onPointerDown:p=>{p.button===0&&(p.stopPropagation(),a(`Changing "${e.name}" writes the socket's default_value — editing parity is not the program.`))},style:{cursor:"default"},children:[i.jsx("rect",{x:t,y:d-S/2+1,width:o-t,height:S-2,rx:.2*S,fill:"#545454",transform:"scale(1 -1)"}),le(e)!==null&&i.jsxs(i.Fragment,{children:[i.jsx("clipPath",{id:`sl-${e.identifier}`,children:i.jsx("rect",{x:t,y:d-S/2+1,width:o-t,height:S-2,rx:.2*S})}),i.jsx("rect",{x:t,y:d-S/2+1,width:(o-t)*(le(e)??0),height:S-2,fill:h.sliderFill,clipPath:`url(#sl-${e.identifier})`,transform:"scale(1 -1)"})]}),i.jsx("text",{x:t+6,y:d,transform:"scale(1 -1)",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:e.name}),l?i.jsx("rect",{x:o-34,y:d-S/2+3,width:30,height:S-6,rx:2,fill:b(e.value),transform:"scale(1 -1)"}):i.jsx("text",{x:o-6,y:d,transform:"scale(1 -1)",textAnchor:"end",fill:h.text,fontSize:R,dominantBaseline:"central",style:{pointerEvents:"none",userSelect:"none"},children:ke(e.value)})]})}function le(e){const{softMin:n,softMax:a,value:r}=e;return n===void 0||a===void 0||typeof r!="number"||a<=n?null:Math.min(1,Math.max(0,(r-n)/(a-n)))}function ke(e){return e===null?"":typeof e=="boolean"?e?"On":"Off":typeof e=="number"?e.toFixed(3):typeof e=="string"?e:e.map(n=>n.toFixed(2)).join(", ")}function zn({link:e}){const[n,a]=Tn(e.from,e.to),r=`M ${e.from[0]} ${e.from[1]} C ${n[0]} ${n[1]}, ${a[0]} ${a[1]}, ${e.to[0]} ${e.to[1]}`,t=e.valid?h.wireInner:"#ff2020";return i.jsxs("g",{style:{pointerEvents:"none"},children:[i.jsx("path",{d:r,fill:"none",stroke:h.wire,strokeWidth:ne+2*N}),i.jsx("path",{d:r,fill:"none",stroke:t,strokeWidth:ne,strokeDasharray:e.muted?"10 10":void 0,strokeOpacity:e.muted?h.dashAlpha:1})]})}function Vn({node:e,laid:n}){const a=Math.max(n.yTop-n.yBottom,gn*2);return i.jsxs("g",{style:{pointerEvents:"none"},children:[i.jsx("rect",{x:n.x,y:-n.yTop,width:n.width,height:a,rx:D,fill:e.useCustomColor?b(e.color):h.frame,fillOpacity:h.frameAlpha,transform:"scale(1 -1)"}),e.label&&i.jsx("text",{x:n.x+n.width/2,y:-(n.yTop-25),transform:"scale(1 -1)",textAnchor:"middle",fill:h.text,fontSize:20,children:e.label})]})}function Xn({tree:e,zoom:n,onViewAll:a,onRefuse:r}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",height:Bn,padding:"0 var(--volter-space-2)",background:h.background,color:h.text,font:`${R}px inherit`,borderBottom:"1px solid #161616"},children:[i.jsx("span",{"data-testid":"node-editor-tree-type",style:{opacity:.85},children:e?.typeLabel??"Shader Editor"}),i.jsx("span",{style:{opacity:.4},children:"·"}),i.jsx("span",{"data-testid":"node-editor-material",children:e?.material??"No material"}),i.jsx("span",{style:{flex:1}}),i.jsxs("span",{style:{opacity:.6},children:[Math.round(n*100),"%"]}),i.jsx("button",{type:"button",className:"volter-btn","data-variant":"ghost","data-size":"sm",onClick:a,"data-testid":"node-editor-view-all",children:"View All"}),i.jsx("button",{type:"button",className:"volter-btn","data-variant":"ghost","data-size":"sm","data-testid":"node-editor-use-nodes",onClick:()=>r("Use Nodes writes Material.use_nodes — editing parity is not the program."),children:"Use Nodes"})]})}function Kn({entries:e,error:n,refusal:a}){const r=e.filter(u=>u.fallback!==null),t=e.filter(u=>u.approximate),o=e.reduce((u,l)=>u+l.panels.length,0),d=n||a||(r.length>0?`${r.map(u=>`"${u.node.name}" draws its sockets flat: ${u.fallback}`).join("; ")}.`:t.length>0?`${t.map(u=>`"${u.node.name}"`).join(", ")} ${t.length===1?"carries a":"carry"} declaration LAYOUT row, whose drawn height RNA cannot answer; one UI unit is reserved for it.`:o>0?`${o} socket panel${o===1?"":"s"} drawn from Blender's own declarations. Read-only: this view inspects the node tree and never writes it.`:"Read-only: this view inspects the node tree and never writes it.");return i.jsx("div",{"data-testid":"node-editor-status",style:{flex:"0 0 auto",height:Ln,display:"flex",alignItems:"center",padding:"0 var(--volter-space-2)",background:h.background,color:n||a?"#ffa028":"#888888",font:`${R}px inherit`,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:d})}function Zn({node:e,onRefuse:n}){return i.jsxs("aside",{"data-testid":"node-editor-sidebar",style:{width:Dn,flex:"0 0 auto",overflow:"auto",background:h.background,color:h.text,font:`${R}px inherit`,borderLeft:"1px solid #161616",padding:"var(--volter-space-2)"},children:[i.jsx("div",{style:{opacity:.6,marginBottom:"var(--volter-space-2)"},children:"Node"}),e?i.jsxs(i.Fragment,{children:[i.jsx(L,{label:"Name",value:e.name,onRefuse:n}),i.jsx(L,{label:"Label",value:e.label??"",onRefuse:n}),i.jsx(L,{label:"Color",value:e.useCustomColor?b(e.color):"Off",onRefuse:n,swatch:e.useCustomColor?b(e.color):void 0}),i.jsx(L,{label:"Mute",value:e.muted?"On":"Off",onRefuse:n}),i.jsx("div",{style:{opacity:.6,margin:"var(--volter-space-3) 0 var(--volter-space-1)"},children:"Properties"}),e.inputs.filter(A).map(a=>i.jsx(L,{label:a.label??a.name,value:a.linked?"Linked":ke(a.value),onRefuse:n},a.identifier))]}):i.jsx("div",{style:{opacity:.5},children:"No node looked at."})]})}function L({label:e,value:n,swatch:a,onRefuse:r}){return i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--volter-space-2)",height:20},onPointerDown:()=>r(`"${e}" is read here and written nowhere — inspection parity.`),children:[i.jsx("span",{style:{flex:"0 0 45%",opacity:.75,textAlign:"right"},children:e}),a&&i.jsx("span",{style:{width:14,height:14,borderRadius:2,background:a,flex:"0 0 auto"}}),i.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},title:n,children:n})]})}export{Et as default,Ct as point,Tt as title};
@@ -1,3 +1,3 @@
1
- import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{r as Y}from"./index-JjEYIC4G.js";import{k as ce,l as H,m as Z,o as ue,p as ae,s as de,q as fe,t as pe}from"./blender-runtime-host-Bw37aE1K.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 q(){const e=Y().documents.context(H());return he(e)?e:null}function J(e,t){if(e===null||!xe(t))return null;const n=q();if(n===null)return null;if(e.id===t.documentId)return t.documentRootObject===n.root?{kind:"scene"}:null;const i=ce().byId.get(e.id);if(i?.type==="TSE_LAYER_COLLECTION")return{kind:"collection",path:i.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},Q=0;const D=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},Q+=1;for(const n of[...D])n();t&&Y().documents.contextChanged(H())}function ge(e){return D.add(e),()=>{D.delete(e)}}function K(){return Q}function B(){return O}function ye(){const e=I;b+=1,N.clear(),T.clear(),e!==null?ee(e,!0):y({})}de(()=>{ye()});let k=null;function ee(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=q();e!==null&&(U=e.subscribeFrames(ue))}async function me(e,t=!1){const n=e.startsWith("collection:")?e.slice(11):null,i=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:i,collection:n,context:null,error:null,views:new Map});try{const s=await ae(i??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:z(s)},!0)}}function te(e){if(!Z())return;je();const t=be(e);I!==t&&ee(t)}function R(e){const t=O.views.get(e);if(t!==void 0&&T.has(e)||N.has(e)||!Z())return t;N.add(e);const n=b;return fe(e).then(i=>{if(n!==b||(N.delete(e),T.add(e),i===null))return;const l=new Map(O.views);l.set(e,i),y({views:l,error:null})}).catch(i=>{n===b&&(N.delete(e),y({error:z(i)}))}),t}async function ve(e,t,n,i){try{return await pe(e,t,n,i),T.delete(e),y({error:null}),!0}catch(l){return y({error:z(l)}),!1}}function z(e){return e instanceof Error?e.message:String(e)}const $=20,V=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",Ce="#3d3d3d",Le="#4772b3",ne="#991616",Ie=8,Te=6,Pe=e=>Math.round(e*.2),ie=e=>e.filter(t=>t.hidden!==!0&&t.undrawn!==!0);function P(){return j.useSyncExternalStore(ge,K,K)}function h({title:e,sub:t=!1,closed:n=!1,note:i,count:l,children:o}){const[c,u]=j.useState(!n);return r.jsxs("div",{style:{marginBottom:v,borderRadius:Ne,boxShadow:t?"none":`inset 0 0 0 1px ${Oe}`,background:t?Re:"transparent",overflow:"hidden"},children:[r.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:[r.jsx("span",{"aria-hidden":"true",style:{width:X-8,textAlign:"center",fontSize:Ie,opacity:.85},children:c?"▼":"▶"}),r.jsx("span",{style:{fontWeight:400},title:i,children:e}),l===void 0?null:r.jsx("span",{style:{opacity:g,marginLeft:"auto"},children:l})]}),c?r.jsx("div",{style:{padding:v},children:o}):null]})}function A({label:e,title:t,readonly:n,identifier:i,children:l}){return r.jsxs("div",{"data-rna-field":i??"","data-field-label":e,"data-field-readonly":n?"true":void 0,style:{display:"flex",alignItems:"center",minHeight:$,marginBottom:V,gap:G,opacity:n?g:1},title:t,children:[r.jsx("span",{style:{flex:`0 0 ${Se}`,textAlign:"right",color:x,fontSize:p,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),r.jsx("span",{style:{flex:"1 1 0",minWidth:0,display:"flex",gap:V},children:l})]})}const m={height:$,width:"100%",minWidth:0,boxSizing:"border-box",background:$e,border:`1px solid ${Ce}`,borderRadius:Pe($),color:x,fontSize:p,padding:`0 ${G}px`,textAlign:"center"};function S({children:e}){return r.jsx("span",{style:{...m,display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})}const F=$-2*Math.floor(($-2)/6);function re({value:e,readonly:t,label:n,onChange:i}){return r.jsx("input",{type:"checkbox",checked:e,readOnly:t,...n===void 0?{}:{"aria-label":n},onChange:l=>!t&&i(l.target.checked),style:{width:F,height:F,margin:`${($-F)/2}px 0`,accentColor:Le,cursor:t?"default":"pointer"}})}function le({row:e,value:t,index:n,onWrite:i}){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?r.jsx(S,{children:u}):r.jsx("input",{type:"number","aria-label":C(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&&i(s,n)},onKeyDown:s=>{s.key==="Enter"&&s.target.blur(),s.key==="Escape"&&o(null)},style:m})}const ke=new Set(["TRANSLATION","DIRECTION","XYZ","XYZ_LENGTH","EULER","VELOCITY","ACCELERATION","COORDS"]);function oe(e,t){if(e==="QUATERNION"||e==="AXISANGLE")return"WXYZ"[t];if(!(t>=4)){if(ke.has(e))return"XYZW"[t];if(e==="COLOR"||e==="COLOR_GAMMA")return"RGBA"[t]}}function C(e,t){const n=e.name||e.identifier;return t===void 0?n:`${n} ${oe(e.subtype,t)??t}`}function Me(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 Be({row:e,onOpen:t}){const n=e.value;if(n===null||n.path===null)return r.jsx(S,{children:n===null?"None":n.name??n.type});const i=n.path;return r.jsx("button",{type:"button","aria-label":C(e),onClick:()=>t(i),style:{...m,cursor:"pointer",textAlign:"left"},title:i,children:n.name??n.type})}function _e({row:e,write:t}){const n=e.items??[];if(e.isFlag){const l=e.value??[];return r.jsx(S,{children:l.length===0?"None":l.join(", ")})}const i=String(e.value??"");return e.readonly?r.jsx(S,{children:n.find(l=>l.identifier===i)?.name??i}):r.jsx("select",{"aria-label":C(e),value:i,onChange:l=>t(l.target.value),style:{...m,textAlign:"left"},children:n.map(l=>r.jsx("option",{value:l.identifier,children:l.name},l.identifier))})}function Fe({row:e,write:t}){const n=String(e.value??"");return e.readonly?r.jsx(S,{children:n}):r.jsx(we,{value:n,label:C(e),onWrite:i=>t(i)})}function De({row:e}){const t=e.value??[];return r.jsx("span",{style:{...m,background:Me(t),display:"block"},title:t.map(n=>n.toFixed(3)).join(", ")})}function We({row:e,label:t,title:n,write:i}){const l=e.value??[];return r.jsx(r.Fragment,{children:l.map((o,c)=>r.jsx(A,{label:ze(t,c,e.subtype),title:n,readonly:e.readonly,identifier:`${e.identifier}[${c}]`,children:e.type==="BOOLEAN"?r.jsx(re,{value:o===!0,readonly:e.readonly,label:C(e,c),onChange:u=>i(u,c)}):r.jsx(le,{row:e,value:Number(o),index:c,onWrite:(u,s)=>i(u,s)})},`${e.identifier}-${c}`))})}function ze(e,t,n){const i=oe(n,t);return i===void 0?t===0?e:`${e} ${t}`:`${t===0?`${e} `:""}${i}`}function Ge(e){const{row:t,write:n}=e;switch(t.type){case"POINTER":return r.jsx(Be,{...e});case"ENUM":return r.jsx(_e,{...e});case"STRING":return r.jsx(Fe,{...e});case"BOOLEAN":return r.jsx(re,{value:t.value===!0,readonly:t.readonly,label:C(t),onChange:n});default:return r.jsx(le,{row:t,value:Number(t.value??0),onWrite:i=>n(i)})}}function w({row:e,path:t,onOpen:n}){const i=(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?`
1
+ import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{r as Y}from"./index-flxMlfV4.js";import{k as ce,l as H,m as Z,o as ue,p as ae,s as de,q as fe,t as pe}from"./blender-runtime-host-W_QVh8pY.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 q(){const e=Y().documents.context(H());return he(e)?e:null}function J(e,t){if(e===null||!xe(t))return null;const n=q();if(n===null)return null;if(e.id===t.documentId)return t.documentRootObject===n.root?{kind:"scene"}:null;const i=ce().byId.get(e.id);if(i?.type==="TSE_LAYER_COLLECTION")return{kind:"collection",path:i.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},Q=0;const D=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},Q+=1;for(const n of[...D])n();t&&Y().documents.contextChanged(H())}function ge(e){return D.add(e),()=>{D.delete(e)}}function K(){return Q}function B(){return O}function ye(){const e=I;b+=1,N.clear(),T.clear(),e!==null?ee(e,!0):y({})}de(()=>{ye()});let k=null;function ee(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=q();e!==null&&(U=e.subscribeFrames(ue))}async function me(e,t=!1){const n=e.startsWith("collection:")?e.slice(11):null,i=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:i,collection:n,context:null,error:null,views:new Map});try{const s=await ae(i??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:z(s)},!0)}}function te(e){if(!Z())return;je();const t=be(e);I!==t&&ee(t)}function R(e){const t=O.views.get(e);if(t!==void 0&&T.has(e)||N.has(e)||!Z())return t;N.add(e);const n=b;return fe(e).then(i=>{if(n!==b||(N.delete(e),T.add(e),i===null))return;const l=new Map(O.views);l.set(e,i),y({views:l,error:null})}).catch(i=>{n===b&&(N.delete(e),y({error:z(i)}))}),t}async function ve(e,t,n,i){try{return await pe(e,t,n,i),T.delete(e),y({error:null}),!0}catch(l){return y({error:z(l)}),!1}}function z(e){return e instanceof Error?e.message:String(e)}const $=20,V=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",Ce="#3d3d3d",Le="#4772b3",ne="#991616",Ie=8,Te=6,Pe=e=>Math.round(e*.2),ie=e=>e.filter(t=>t.hidden!==!0&&t.undrawn!==!0);function P(){return j.useSyncExternalStore(ge,K,K)}function h({title:e,sub:t=!1,closed:n=!1,note:i,count:l,children:o}){const[c,u]=j.useState(!n);return r.jsxs("div",{style:{marginBottom:v,borderRadius:Ne,boxShadow:t?"none":`inset 0 0 0 1px ${Oe}`,background:t?Re:"transparent",overflow:"hidden"},children:[r.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:[r.jsx("span",{"aria-hidden":"true",style:{width:X-8,textAlign:"center",fontSize:Ie,opacity:.85},children:c?"▼":"▶"}),r.jsx("span",{style:{fontWeight:400},title:i,children:e}),l===void 0?null:r.jsx("span",{style:{opacity:g,marginLeft:"auto"},children:l})]}),c?r.jsx("div",{style:{padding:v},children:o}):null]})}function A({label:e,title:t,readonly:n,identifier:i,children:l}){return r.jsxs("div",{"data-rna-field":i??"","data-field-label":e,"data-field-readonly":n?"true":void 0,style:{display:"flex",alignItems:"center",minHeight:$,marginBottom:V,gap:G,opacity:n?g:1},title:t,children:[r.jsx("span",{style:{flex:`0 0 ${Se}`,textAlign:"right",color:x,fontSize:p,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),r.jsx("span",{style:{flex:"1 1 0",minWidth:0,display:"flex",gap:V},children:l})]})}const m={height:$,width:"100%",minWidth:0,boxSizing:"border-box",background:$e,border:`1px solid ${Ce}`,borderRadius:Pe($),color:x,fontSize:p,padding:`0 ${G}px`,textAlign:"center"};function S({children:e}){return r.jsx("span",{style:{...m,display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})}const F=$-2*Math.floor(($-2)/6);function re({value:e,readonly:t,label:n,onChange:i}){return r.jsx("input",{type:"checkbox",checked:e,readOnly:t,...n===void 0?{}:{"aria-label":n},onChange:l=>!t&&i(l.target.checked),style:{width:F,height:F,margin:`${($-F)/2}px 0`,accentColor:Le,cursor:t?"default":"pointer"}})}function le({row:e,value:t,index:n,onWrite:i}){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?r.jsx(S,{children:u}):r.jsx("input",{type:"number","aria-label":C(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&&i(s,n)},onKeyDown:s=>{s.key==="Enter"&&s.target.blur(),s.key==="Escape"&&o(null)},style:m})}const ke=new Set(["TRANSLATION","DIRECTION","XYZ","XYZ_LENGTH","EULER","VELOCITY","ACCELERATION","COORDS"]);function oe(e,t){if(e==="QUATERNION"||e==="AXISANGLE")return"WXYZ"[t];if(!(t>=4)){if(ke.has(e))return"XYZW"[t];if(e==="COLOR"||e==="COLOR_GAMMA")return"RGBA"[t]}}function C(e,t){const n=e.name||e.identifier;return t===void 0?n:`${n} ${oe(e.subtype,t)??t}`}function Me(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 Be({row:e,onOpen:t}){const n=e.value;if(n===null||n.path===null)return r.jsx(S,{children:n===null?"None":n.name??n.type});const i=n.path;return r.jsx("button",{type:"button","aria-label":C(e),onClick:()=>t(i),style:{...m,cursor:"pointer",textAlign:"left"},title:i,children:n.name??n.type})}function _e({row:e,write:t}){const n=e.items??[];if(e.isFlag){const l=e.value??[];return r.jsx(S,{children:l.length===0?"None":l.join(", ")})}const i=String(e.value??"");return e.readonly?r.jsx(S,{children:n.find(l=>l.identifier===i)?.name??i}):r.jsx("select",{"aria-label":C(e),value:i,onChange:l=>t(l.target.value),style:{...m,textAlign:"left"},children:n.map(l=>r.jsx("option",{value:l.identifier,children:l.name},l.identifier))})}function Fe({row:e,write:t}){const n=String(e.value??"");return e.readonly?r.jsx(S,{children:n}):r.jsx(we,{value:n,label:C(e),onWrite:i=>t(i)})}function De({row:e}){const t=e.value??[];return r.jsx("span",{style:{...m,background:Me(t),display:"block"},title:t.map(n=>n.toFixed(3)).join(", ")})}function We({row:e,label:t,title:n,write:i}){const l=e.value??[];return r.jsx(r.Fragment,{children:l.map((o,c)=>r.jsx(A,{label:ze(t,c,e.subtype),title:n,readonly:e.readonly,identifier:`${e.identifier}[${c}]`,children:e.type==="BOOLEAN"?r.jsx(re,{value:o===!0,readonly:e.readonly,label:C(e,c),onChange:u=>i(u,c)}):r.jsx(le,{row:e,value:Number(o),index:c,onWrite:(u,s)=>i(u,s)})},`${e.identifier}-${c}`))})}function ze(e,t,n){const i=oe(n,t);return i===void 0?t===0?e:`${e} ${t}`:`${t===0?`${e} `:""}${i}`}function Ge(e){const{row:t,write:n}=e;switch(t.type){case"POINTER":return r.jsx(Be,{...e});case"ENUM":return r.jsx(_e,{...e});case"STRING":return r.jsx(Fe,{...e});case"BOOLEAN":return r.jsx(re,{value:t.value===!0,readonly:t.readonly,label:C(t),onChange:n});default:return r.jsx(le,{row:t,value:Number(t.value??0),onWrite:i=>n(i)})}}function w({row:e,path:t,onOpen:n}){const i=(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
2
  ${e.description}`:""}`,c={row:e,path:t,write:i,onOpen:n},u=e.valueOmitted??e.valueError;if(u!==void 0)return r.jsx(A,{label:l,title:o,readonly:!0,identifier:e.identifier,children:r.jsx(S,{children:u})});if(e.type==="COLLECTION")return r.jsx(Ue,{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")?r.jsx(A,{label:l,title:o,readonly:e.readonly,identifier:e.identifier,children:r.jsx(De,{...c})}):r.jsx(We,{...c,label:l,title:o}):r.jsx(A,{label:l,title:o,readonly:e.readonly,identifier:e.identifier,children:Ge(c)})}function we({value:e,label:t,onWrite:n}){const[i,l]=j.useState(null);return r.jsx("input",{type:"text",...t===void 0?{}:{"aria-label":t},value:i??e,onChange:o=>l(o.target.value),onBlur:()=>{i!==null&&i!==e&&n(i),l(null)},onKeyDown:o=>{o.key==="Enter"&&o.target.blur(),o.key==="Escape"&&l(null)},style:{...m,textAlign:"left"}})}function Ue({label:e,title:t,value:n,identifier:i,onOpen:l}){const[o,c]=j.useState(!1),u=n.names??[];return r.jsxs(r.Fragment,{children:[r.jsx(A,{label:e,title:t,readonly:!1,identifier:i,children:r.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=>r.jsx(A,{label:"",readonly:!0,children:r.jsx(S,{children:s})},s)):null]})}const W=e=>typeof e=="string"?e:e.property;function Ke(e){if(e.active===void 0)return{path:null,index:null};const t=B().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 Ve({panel:e,path:t,onOpen:n}){P();const i=R(t),l=Ke(e);return i===void 0?r.jsx(h,{title:e.title,closed:e.closed===!0,children:r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:["Reading ",t,"…"]})}):i.kind!=="collection"?r.jsx(h,{title:e.title,closed:e.closed===!0,note:t,children:r.jsxs("div",{style:{color:ne,fontSize:p},children:[t," is not a collection — this panel is declared `collection: true`."]})}):r.jsxs(h,{title:e.title,closed:e.closed===!0,note:t,count:i.count,children:[i.items.length===0?r.jsx("div",{style:{color:x,opacity:g,fontSize:p},children:"None"}):null,i.items.map((o,c)=>r.jsx(h,{title:`${o.path!==null&&o.path===l.path||c===l.index?"● ":""}${o.name??o.type}`,sub:!0,children:o.path===null?r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:[o.type," — RNA gives this member no address."]}):r.jsx(Xe,{path:o.path,properties:e.properties,andDeclared:e.andDeclared===!0,onOpen:n})},o.path??o.name??o.type))]})}function Xe({path:e,properties:t,andDeclared:n=!1,onOpen:i}){P();const l=R(e);if(l===void 0)return r.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(W(a))).filter(a=>a!==void 0),s=n&&l.kind==="struct"?ie(o).filter(a=>a.group===l.type&&!t.some(f=>W(f)===a.identifier)):[];return r.jsx(r.Fragment,{children:[...u,...s].map(a=>r.jsx(w,{row:a,path:e,onOpen:i},a.identifier))})}function Ye(e,t){if(e.engine!==void 0){const n=B().context?.engine;if(n===void 0)return null;if(!e.engine.includes(n))return!1}for(const n of e.when??[]){const i=n.from??e.from,l=i?t.find(s=>s.label===i):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(),Ye(e,t)!==!0)return null;const i=e.from?t.find(s=>s.label===e.from):t[0];if(i!==void 0&&e.collection===!0)return r.jsx(Ve,{panel:e,path:i.path,onOpen:n});if(i===void 0)return null;const l=R(i.path),o=e.sub??[],c=[],u=[];for(const s of e.properties){const a=W(s),f=typeof s=="string"?i:t.find(L=>L.label===s.from),d=f===void 0?void 0:R(f.path),E=d?.kind==="struct"?d.groups.flatMap(L=>L.rows).find(L=>L.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?r.jsx(h,{title:e.title,closed:e.closed===!0,children:r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:["Reading ",i.path,"…"]})}):c.length===0&&o.length===0?null:r.jsxs(h,{title:e.title,closed:e.closed===!0,note:u.length===0?`${i.path}`:`${i.path}
3
3
  Not on this datablock: ${u.join(", ")}`,children:[c.map(s=>r.jsx(w,{row:s.row,path:s.path,onOpen:n},s.identifier)),o.map((s,a)=>r.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?r.jsxs("div",{style:{color:x,opacity:g,fontSize:p,padding:v},children:["Reading ",e,"…"]}):n.kind==="collection"?r.jsxs(r.Fragment,{children:[n.items.length===0?r.jsx("div",{style:{color:x,opacity:g,fontSize:p},children:n.count===0?"None":`${n.count} items`}):null,n.items.map(i=>r.jsx(h,{title:i.name??i.type,sub:!0,children:i.path===null?r.jsxs("div",{style:{color:x,opacity:g,fontSize:p},children:[i.type," — RNA gives this member no address."]}):r.jsx(M,{path:i.path,onOpen:t})},i.path??i.name??i.type))]}):r.jsx(r.Fragment,{children:n.groups.map(i=>{const l=ie(i.rows);return l.length===0?null:r.jsx(h,{title:i.label,sub:!0,children:l.map(o=>r.jsx(w,{row:o,path:n.path,onOpen:t},o.identifier))},i.id)})})}function He({tabId:e,subject:t,curated:n=[]}){P(),j.useEffect(()=>te(t),[t]);const[i,l]=j.useState([]),o=B(),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 r.jsx("div",{style:{color:ne,fontSize:p,padding:v},children:o.error});if(c===null)return r.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=i[i.length-1];return r.jsxs("div",{style:{padding:`${v}px 0`},children:[i.length>0?r.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?r.jsx(h,{title:f.slice(f.lastIndexOf(".")+1),children:r.jsx(M,{path:f,onOpen:a})}):r.jsxs(r.Fragment,{children:[n.map((d,E)=>r.jsx(se,{panel:d,paths:u,onOpen:a},`${E}:${d.title}`)),n.length>0?r.jsx(h,{title:"All properties",closed:!0,children:u.map(d=>r.jsx(h,{title:d.label,sub:!0,children:r.jsx(M,{path:d.path,onOpen:a})},d.path))}):u.map(d=>r.jsx(h,{title:d.label,children:r.jsx(M,{path:d.path,onOpen:a})},d.path))]})]})}function et(e){return(t,n)=>{const i=J(t,n);if(i===null)return!1;if(te(i),e.standing==="any")return!0;if(e.standing==="object")return i.kind==="object";const l=B(),o=i.kind==="object"?i.name:null,c=i.kind==="collection"?i.path:null;return l.object!==o||l.collection!==c?!1:l.context?.tabs.some(u=>u.id===e.id)??!1}}function tt(e){return function({node:n,adapter:i}){const l=J(n,i);return l===null?null:r.jsx(He,{tabId:e.id,subject:l,curated:e.curated??[]})}}export{et as a,tt as b,B as c,J as r};
@@ -0,0 +1,4 @@
1
+ import{r as B,la as xt}from"./index-flxMlfV4.js";import{a as kt}from"./preview-renderer-BrYNFV1p.js";import{v as Et}from"./output-pass-HurwNl0G.js";import{_ as St,fx as Pe,bi as Ve,aC as Bt,d7 as Ct,ej as At,cP as ve,el as Ye,cm as jt,cl as Ue,fo as ie,ex as Je,d5 as Qe,d9 as et,cJ as Tt,e as We,cj as It}from"./three.core-3arARmh6.js";import{f as tt}from"./clip-planes-CnAI6DZn.js";import{a as nt}from"./content-bounds-Ax7CFkXJ.js";class _t{#r;#s;#n=new Map;#k=0;#c=null;#a=null;#u=!1;#y=!1;#b=t=>{!this.#y&&this.#n.size===0||(t.preventDefault(),t.returnValue="")};#d=new Map;#f=new Map;#h=null;#w=0;#M=0;#v=0;#i=null;#x=null;#g=null;constructor(t){this.#s=t,this.#r=new Worker(new URL("/assets/worker-Gtu-EAm9.js",import.meta.url),{type:"module",name:"blender"}),globalThis.addEventListener?.("beforeunload",this.#b),this.#r.onmessage=n=>void this.#E(n.data),this.#r.onerror=n=>{const r=n.error,a=n.filename?` at ${n.filename}:${n.lineno}:${n.colno}`:"",o=r?.stack??r?.message??n.message,s=new Error(`Blender worker failed: ${o||"the worker script did not load"}${a}`);console.error(s.message);for(const i of[...this.#n.keys()])this.#p(i);for(const i of this.#n.values())i.reject(s);this.#n.clear()}}#o=null;#l=null;get project(){return this.#o}get document(){return this.#l}start(t,n){return this.#o!==null&&this.#o!==t?Promise.reject(new Error(`The Blender session is bound to ${this.#o}, not ${t}`)):n!==void 0&&this.#l!==null&&this.#l!==n?Promise.reject(new Error(`Blender resource conflict: the session holds ${this.#l}; cannot open ${n}`)):(this.#o=t,this.#l??=n??"models/model.blend",this.#c??=this.#e({op:"start",project:t,...n===void 0?{}:{document:n}}),this.#c)}#t(){return this.#o===null?Promise.reject(new Error("The Blender session has not been started with a project (blender-start)")):this.start(this.#o)}async execute(t,n=!0,r="Blender Python"){return await this.#t(),await this.#e({op:"execute",code:t,history:n,label:r})}async historyGesture(t){await this.#t(),await this.#e({op:t})}async historyStep(t,n){return await this.#t(),(await this.#e({op:"history-step",token:t,direction:n})).moved}async sceneInfo(){return await this.#t(),await this.#e({op:"scene-info"})}async objectInfo(t){return await this.#t(),await this.#e({op:"object-info",name:t})}async rna(t,n){return await this.#t(),await this.#e({op:"rna",path:t,...n===void 0?{}:{names:n}})}async rnaContext(t,n){return await this.#t(),await this.#e({op:"rna-context",...t===void 0?{}:{object:t},...n===void 0?{}:{collection:n}})}async rnaSet(t,n,r,a,o=!0){return await this.#t(),await this.#e({op:"rna-set",history:o,path:t,property:n,value:r,...a===void 0?{}:{index:a}})}async outliner(t){return await this.#t(),await this.#e({op:"outliner",...t===void 0?{}:{selected:t}})}async nodeTree(t){return await this.#t(),await this.#e({op:"node-tree",...t?.path===void 0?{}:{path:t.path},...t?.material===void 0?{}:{material:t.material}})}async uvLayout(t){return await this.#t(),await this.#e({op:"uv-layout",...t?.object===void 0?{}:{object:t.object},...t?.uvLayer===void 0?{}:{uvLayer:t.uvLayer}})}async rig(t){return await this.#t(),await this.#e({op:"rig",...t?.object===void 0?{}:{object:t.object}})}async actionClip(t){return await this.#t(),await this.#e({op:"action-clip",...t?.object===void 0?{}:{object:t.object},...t?.bake===void 0?{}:{bake:t.bake}})}async outlinerSet(t,n,r){return await this.#t(),await this.#e({op:"outliner-set",path:t,column:n,value:r})}async present(){await this.#t(),await this.#e({op:"present"})}async screenshotView(t){return await this.#t(),await this.#e({op:"screenshot-view",maxSize:t})}async readFile(t){return await this.#t(),await this.#e({op:"read-file",path:t})}async writeFile(t,n){await this.#t(),await this.#e({op:"write-file",path:t,bytes:n})}async listFiles(t){return await this.#t(),await this.#e({op:"list-files",path:t})}get presented(){return this.#x}stop(){return this.#u?Promise.resolve():this.#a?this.#a:(this.#a=(async()=>{(this.#c?await this.#c.then(()=>!0,()=>!1):!1)&&await this.#e({op:"flush-document"},!0),this.terminate()})().catch(t=>{throw this.#a=null,t}),this.#a)}terminate(){if(this.#u)return;this.#u=!0,globalThis.removeEventListener?.("beforeunload",this.#b);const t=this.#m("terminating worker");try{this.#r.terminate()}finally{t()}const n=new Error("The Blender session was terminated");for(const r of[...this.#n.keys()])this.#p(r);for(const r of this.#n.values())r.reject(n);this.#n.clear()}metrics(t=performance.now()){let n=null,r=this.#w,a=this.#M,o=this.#v;for(const s of this.#d.values()){const i=t-s;(n===null||i>n)&&(n=i),i>r&&(r=i),i>=5e3&&(a+=1),i>=3e4&&(o+=1)}return{inFlightMs:n===null?null:Math.round(n),lastCallMs:this.#h===null?null:Math.round(this.#h),maxCallMs:this.#h===null&&n===null?null:Math.round(r),callsOver5s:a,callsOver30s:o,lastCallWindow:this.#i,wasmMemoryMB:this.#g===null?null:Math.round(this.#g/1048576)}}#p(t){this.#f.get(t)?.(),this.#f.delete(t);const n=this.#d.get(t);if(n===void 0)return;this.#d.delete(t);const r=performance.now()-n;this.#h=r,r>this.#w&&(this.#w=r),r>=5e3&&(this.#M+=1),r>=3e4&&(this.#v+=1),this.#i!==null&&this.#i.start===n&&(this.#i={start:n,end:n+r})}#e(t,n=!1){if(this.#u||this.#a&&!n)return Promise.reject(new Error("The Blender session is stopping or terminated"));const r=++this.#k;return new Promise((a,o)=>{this.#n.set(r,{resolve:a,reject:o});const s=performance.now();this.#d.set(r,s),this.#i={start:s,end:null},this.#f.set(r,this.#m(`waiting for worker ${t.op}`));try{this.#r.postMessage({...t,id:r})}catch(i){this.#n.delete(r),this.#p(r),o(i instanceof Error?i:new Error(String(i)))}})}#m(t){try{const n=this.#s.work?.(t);return()=>{try{n?.()}catch{}}}catch{return()=>{}}}async#E(t){if("op"in t){if(t.op==="document-dirty"){this.#y=t.dirty;return}if(t.op==="history"){this.#s.history?.(t.entries);return}if(t.op==="log"){this.#s.log?.(t.level,t.text);return}if(t.op==="memory"){this.#g=t.bytes;return}const r=t.frame;typeof r?.session=="string"&&typeof r.revision=="number"&&(this.#x={session:r.session,revision:r.revision});const a=this.#m("presenting worker frame");try{const o=await this.#s.present(t.frame,t.description,t.capture);this.#r.postMessage({op:"present-result",id:t.id,...o?.capture===void 0?{}:{capture:o.capture},...o!=null&&"held"in o?{held:o.held}:{}})}catch(o){this.#r.postMessage({op:"present-result",id:t.id,error:o instanceof Error?o.message:String(o)})}finally{a()}return}const n=this.#n.get(t.id);n&&(this.#n.delete(t.id),this.#p(t.id),"error"in t?n.reject(new Error(t.error)):n.resolve(t.result))}}const Ft="/assets/agx-base-srgb-BjWZJgrZ.lut",Rt="/assets/agx-look-medium-high-contrast-D5F_ob1L.lut",$t="/assets/agx-look-punchy-dxsnycNs.lut",Lt="/assets/filmic-srgb-Ct35FIH6.lut",R=new Float64Array(12),Ge=[0,0,0],W=new Float64Array(3),ee=new Float64Array(3),$=new Int8Array([1,0,0,1,1,0,0,1,2,1,0,0,1,0,1,0,2,1,0,0,1,1,0,1,2,0,1,0,0,1,0,1,1,2,1,0,0,1,0,0,1,1,1,2,0,0,1,0,1,1,0,1,0,2]);function Nt(e,t,n){return e>t?t>n?0:e>n?1:2:n>t?3:n>e?4:5}function rt(e,t,n,r,a){const o=t*t,s=Math.min(1,Math.max(0,n))*(t-1),i=Math.min(1,Math.max(0,r))*(t-1),c=Math.min(1,Math.max(0,a))*(t-1),h=Math.min(Math.floor(s),t-2),l=Math.min(Math.floor(i),t-2),u=Math.min(Math.floor(c),t-2),M=s-h,v=i-l,E=c-u,g=(d,f,b,x)=>{const w=(h+f+(l+b)*t+(u+x)*o)*3;R[d]=e[w]/65535,R[d+1]=e[w+1]/65535,R[d+2]=e[w+2]/65535};g(0,0,0,0),g(9,1,1,1),W[0]=M,W[1]=v,W[2]=E;const m=Nt(M,v,E)*9;g(3,$[m],$[m+1],$[m+2]),g(6,$[m+3],$[m+4],$[m+5]);const k=W[$[m+6]],p=W[$[m+7]],y=W[$[m+8]];for(let d=0;d<3;d++){const f=R[d];Ge[d]=f+k*(R[3+d]-f)+p*(R[6+d]-R[3+d])+y*(R[9+d]-R[6+d])}return Ge}function te(e){const t=e&32768?-1:1,n=e>>10&31,r=e&1023;return n===0?t*2**-24*r:n===31?r?Number.NaN:t*Number.POSITIVE_INFINITY:t*2**(n-15)*(1+r/1024)}function Fe(e,t,n,r){const a=new Uint8ClampedArray(t*4);for(let o=0;o<t;o++){const s=o*4,i=te(e[s+3]),c=i===0?n:n/i;ee[0]=te(e[s])*c,ee[1]=te(e[s+1])*c,ee[2]=te(e[s+2])*c;const h=r(ee);a[s]=Math.round(h[0]*255),a[s+1]=Math.round(h[1]*255),a[s+2]=Math.round(h[2]*255),a[s+3]=Math.round(Math.min(1,Math.max(0,i))*255)}return a}function Ot(e){return new URL(Object.assign({"./agx-base-srgb.lut":Ft,"./agx-look-medium-high-contrast.lut":Rt,"./agx-look-punchy.lut":$t,"./filmic-srgb.lut":Lt})[`./${e.replace(/\.lut$/,"")}.lut`],import.meta.url)}const Dt=57,N=-12.47393,ot=12.5260688117,Pt=[[.4123908,.3575843,.1804808],[.212639,.7151687,.0721923],[.0193308,.1191948,.9505322]],Vt=[[1.5250528,-.3159135,-.1226583],[-.5091526,1.3333274,.1382844],[.0957153,.0508974,.7879558]];function qe(e,t,n){const r=t[0],a=t[1],o=t[2];n[0]=e[0][0]*r+e[0][1]*a+e[0][2]*o,n[1]=e[1][0]*r+e[1][1]*a+e[1][2]*o,n[2]=e[2][0]*r+e[2][1]*a+e[2][2]*o}const ne=new Float64Array(3),ze=new Float64Array(3),re=[0,0,0];function pe(e){const t=Math.min(1,Math.max(0,e));return t<=.0031308?12.92*t:1.055*t**(1/2.4)-.055}function at(e,t,n,r){return rt(e,Dt,t,n,r)}function Ut(e,t){qe(Pt,t,ze),qe(Vt,ze,ne);const n=ot-N,r=at(e,(Math.log2(Math.max(ne[0],1e-10))-N)/n,(Math.log2(Math.max(ne[1],1e-10))-N)/n,(Math.log2(Math.max(ne[2],1e-10))-N)/n);return re[0]=pe(Math.max(0,r[0])**2.4),re[1]=pe(Math.max(0,r[1])**2.4),re[2]=pe(Math.max(0,r[2])**2.4),re}const Wt={"AgX - Medium High Contrast":"agx-look-medium-high-contrast.lut","AgX - Punchy":"agx-look-punchy.lut"};function Gt(e,t){const n=ot-N;return at(e,(Math.log2(Math.max(t[0],1e-10))-N)/n,(Math.log2(Math.max(t[1],1e-10))-N)/n,(Math.log2(Math.max(t[2],1e-10))-N)/n)}function qt(e,t,n,r={}){const a=r.exposure??1,o=r.composedLook===!0?Gt:Ut;return Fe(t,n,a,s=>o(e,s))}const st=33,xe=st**3*3,ke=4096,fe=-12.473931188,we=25;function ge(e,t){const n=Math.min(1,Math.max(0,t))*(ke-1),r=Math.min(Math.floor(n),ke-2),a=n-r;return((1-a)*e[xe+r]+a*e[xe+r+1])/65535}const oe=[0,0,0];function zt(e,t){const n=rt(e,st,(Math.log2(Math.max(t[0],1e-10))-fe)/we,(Math.log2(Math.max(t[1],1e-10))-fe)/we,(Math.log2(Math.max(t[2],1e-10))-fe)/we);return oe[0]=ge(e,n[0]/.66),oe[1]=ge(e,n[1]/.66),oe[2]=ge(e,n[2]/.66),oe}function Xt(e,t,n,r){if(e.length!==xe+ke)throw new Error("Invalid Blender Filmic display table");return Fe(t,n,r,a=>zt(e,a))}const J=2.4,O=.055,it=O/(J-1),Ht=1/(J/(1+O)*((it+O)/(1+O))**(J-1)),Zt=((it+O)/(1+O))**J;function me(e){return e>0?e<Zt?e*Ht:(1+O)*e**(1/J)-O:0}const ae=[0,0,0];function Kt(e){return ae[0]=me(e[0]),ae[1]=me(e[1]),ae[2]=me(e[2]),ae}function Yt(e,t,n){return Fe(e,t,n,Kt)}function lt(e,t,n,r){if(!Number.isFinite(n.width)||!Number.isFinite(n.height)||n.width<1||n.height<1)throw new Error("Scene capture requires finite positive dimensions");const a=Math.min(2048,Math.round(n.width)),o=Math.min(2048,Math.round(n.height)),s=r?1:2,i=a*s,c=o*s,h=kt(),l=h.renderer,u={target:l.getRenderTarget(),toneMapping:l.toneMapping,exposure:l.toneMappingExposure,colorSpace:l.outputColorSpace,shadows:l.shadowMap.enabled,shadowType:l.shadowMap.type,clearColor:l.getClearColor(new St),clearAlpha:l.getClearAlpha(),background:e.background};let M,v,E=!1;try{M=new Pe(i,c,{type:Ve}),n.effect&&(M.depthTexture=new Bt(i,c)),l.shadowMap.enabled=!0,l.shadowMap.type=Ct,l.outputColorSpace=At,l.toneMapping=n.toneMapping??ve,l.toneMappingExposure=n.exposure??1,l.setClearColor(0,n.transparent?0:1),n.transparent&&(e.background=null),l.setRenderTarget(M),l.clear(),l.render(e,t);const g=n.effect?.render(l,M,e,t)??M;if(g.texture.type!==Ve||g.width!==i||g.height!==c)throw new Error("Scene capture effect must return a same-size half-float target");if(r){const w=new Uint16Array(i*c*4);return l.readRenderTargetPixels(g,0,0,i,c,w),E=!0,{pixels:w,width:a,height:o}}v=new Pe(i,c),Et(n.transparent===!0).render(l,v,g,0,!1);const m=new Uint8Array(i*c*4);l.readRenderTargetPixels(v,0,0,i,c,m);const k=document.createElement("canvas");k.width=i,k.height=c;const p=k.getContext("2d");if(!p)throw new Error("Scene capture could not create an image canvas");const y=p.createImageData(i,c),d=i*4;for(let w=0;w<c;w++)y.data.set(m.subarray((c-1-w)*d,(c-w)*d),w*d);p.putImageData(y,0,0);const f=document.createElement("canvas");f.width=a,f.height=o;const b=f.getContext("2d");if(!b)throw new Error("Scene capture could not create an output canvas");b.drawImage(k,0,0,a,o);const x=f.toDataURL("image/png");return E=!0,x}finally{e.background=u.background,l.setRenderTarget(u.target),l.toneMapping=u.toneMapping,l.toneMappingExposure=u.exposure,l.outputColorSpace=u.colorSpace,l.shadowMap.enabled=u.shadows,l.shadowMap.type=u.shadowType,l.setClearColor(u.clearColor,u.clearAlpha),v?.dispose(),M?.dispose(),h.release({discard:!E})}}function Jt(e,t,n){return lt(e,t,n,!0)}function Qt(e,t,n){return lt(e,t,n,!1)}const en=e=>typeof e=="object"&&e!==null&&typeof e.subscribeFrames=="function"&&typeof e.objectForBlenderName=="function"&&typeof e.blenderObjectName=="function"&&typeof e.blenderSelection=="function"&&typeof e.setStageMode=="function";function Re(){const e=B().documents.context(wt());return en(e)?e:null}function tn(){return Re()?.blenderSelection()??{selected:[],active:null}}const nn={tree:null,byId:new Map,parentOf:new Map,error:null,loading:!1};let Ee=nn,ct=0;const Se=new Set;let Z=null,he=null,$e="",K=null;function rn(e){const t=new Map,n=new Map,r=(a,o)=>{t.set(a.id,a),n.set(a.id,o);for(const s of a.children)r(s,a.id)};for(const a of e?.rows??[])r(a,null);return{byId:t,parentOf:n}}function le(e){Ee={...Ee,...e},ct+=1;for(const t of[...Se])t()}function In(e){return Se.add(e),()=>{Se.delete(e)}}function _n(){return ct}function Fn(){return Ee}function Le(e){K!==e&&(K=e,setTimeout(()=>{K===e&&(K=null,ut(e===""?[]:e.split("\0")))},0))}let ye=0,Be=Promise.resolve();function ut(e){const t=on(e);return Be=t,t}async function on(e){const t=e.join("\0"),n=++ye;he=t,$e=t,le({loading:!0});try{const r=await yn(e);if(n!==ye)return;Re()?.setStageMode(r?.mode??null),le({tree:r,...rn(r),loading:!1,error:null})}catch(r){if(n!==ye)return;le({loading:!1,error:dt(r)})}}function an(){he=null,Le($e);for(const e of[...Ce])e()}const Ce=new Set;function Rn(e){return Ne(),Ce.add(e),()=>{Ce.delete(e)}}let se=!1,be=null;function Ne(){const e=Re();if(Z!==null&&be===e)return;Z!==null&&(Z(),Z=null,be=null);const t=e;if(t!==null){Z=t.subscribeFrames(an),be=t;return}se||(se=!0,B().documents.waitForContext(wt()).then(()=>{se=!1,Ne()}).catch(()=>{se=!1}))}function $n(e){if(!I())return;Ne();const t=[...e].sort().join("\0");he!==t&&Le(t)}async function sn(e){if(!I())return;K=null;let t=ut([...e].sort());for(;;){if(await t,Be===t)return;t=Be}}async function Ln(e,t,n){try{return await mt(e,t,n),he=null,Le($e),!0}catch(r){return le({error:dt(r)}),!1}}function dt(e){return e instanceof Error?e.message:String(e)}const ln={transform:{cx:0,cy:0,zoom:1},looked:null,refusal:null,size:{w:0,h:0},framedAt:0,drawn:[]};let Ae=ln,Oe=0;const de=new Set;let ht=0;function Me(){return Ae}function Nn(){return Oe}function On(e){return de.add(e),()=>{de.delete(e)}}function Y(e){Ae={...Ae,...e},Oe+=1;for(const t of[...de])t()}function cn(){ht+=1,Oe+=1;for(const e of[...de])e()}function Dn(){return ht}function G(e){Y({refusal:e})}const Xe=new Map;function un(e){let t=Xe.get(e);return t||(t=fetch(Ot(e)).then(async n=>{if(!n.ok)throw new Error(`Blender display table ${e}: ${n.status} ${n.statusText}`);return new Uint16Array(await n.arrayBuffer())}),Xe.set(e,t)),t}function dn(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return new Uint16Array(n.buffer,n.byteOffset,n.byteLength>>1)}async function pt(e,t){const n=t.look??"None",r=t.toneMapping==="filmic",a=t.toneMapping==="none";if(!a&&t.toneMapping!=="agx"&&!r)throw new Error("Blender's Khronos PBR Neutral view transform has no scene-linear implementation in the browser, so it cannot resolve a composited or scene-referred frame (implemented: Standard, AgX, Filmic)");const o=a?null:r?"filmic-srgb.lut":n==="None"?"agx-base-srgb.lut":Wt[n];if(o===void 0)throw new Error(`Blender display transform has no table for look ${n}`);const s=o?await un(o):null,i=t.linearInput,c=i?{pixels:dn(i.base64),width:i.width,height:i.height}:e;if(!c)throw new Error("Blender display transform requires a linear capture");const{pixels:h,width:l,height:u}=c,M=a?Yt(h,l*u,t.exposure):r?Xt(s,h,l*u,t.exposure):qt(s,h,l*u,{exposure:t.exposure,composedLook:n!=="None"}),v=document.createElement("canvas");v.width=l,v.height=u;const E=v.getContext("2d");if(!E)throw new Error("Blender display transform could not create its image canvas");const g=E.createImageData(l,u),m=l*4;for(let y=0;y<u;y++){const d=(u-1-y)*m;g.data.set(M.subarray(d,d+m),y*m)}E.putImageData(g,0,0);const k=v.toDataURL("image/png"),p={base64:k.slice(k.indexOf(",")+1),mimeType:"image/png"};if(t.linear===!0){const y=new Uint8Array(h.buffer,h.byteOffset,h.byteLength);let d="";for(let f=0;f<y.length;f+=32768)d+=String.fromCharCode(...y.subarray(f,f+32768));p.linearBase64=btoa(d),p.linearWidth=l,p.linearHeight=u}return p}async function ft(e,t,n,r,a=()=>{}){const o={none:ve,agx:We,neutral:Tt,filmic:ve};await n.prepare(t),a();const s={effect:n.effect,width:r.width,height:r.height,transparent:r.transparent===!0,toneMapping:o[r.toneMapping]??We,exposure:r.exposure},i=r.toneMapping==="agx"||r.toneMapping==="filmic"||r.linear===!0?await pt(Jt(e,t,s),r):null;if(a(),i)return i;const c=Qt(e,t,s);if(!c)throw new Error("Blender render could not capture its image");return{base64:c.slice(c.indexOf(",")+1),mimeType:"image/png"}}const hn={Standard:"none",AgX:"agx",Filmic:"filmic","Khronos PBR Neutral":"neutral"},pn=1600;async function Pn(e,t){const n=b=>({kind:"refused",reason:b}),r=e.cameraViewCamera(),a="The scene has no camera, so there is nothing to render";if(r===null)return n(a);const o=e.cameraView(r,{width:1e3,height:1e3},1,[0,0]);if(o===null)return n(a);const s=o.frame.width/o.frame.height,i=Math.min(1,pn/Math.max(t.width,t.height)),c=Math.min(t.width,t.height*s)*i,h=Math.max(1,Math.round(c)),l=Math.max(1,Math.round(c/s)),u=e.cameraView(r,{width:h,height:l},1,[0,0]);if(u===null)return n(a);const M=await wn();if(M===null)return n("Blender is starting");const[v,E]=await Promise.all([Ze(`${M.scene}.view_settings`),Ze(`${M.scene}.render`)]),g=(b,x)=>b?.kind==="struct"?b.groups.flatMap(w=>w.rows).find(w=>w.identifier===x)?.value:void 0,m=String(g(v,"view_transform")),k=hn[m];if(k===void 0)return n(`Blender view transform ${m} has no curve in the renderer`);const p=String(g(v,"look")??"None"),y=Number(g(v,"exposure")??0),d={width:h,height:l,fov:0,toneMapping:k,exposure:2**(Number.isFinite(y)?y:0),orthographic:u.projection==="orthographic",transparent:g(E,"film_transparent")===!0,...p==="None"||p==="AgX - Base Contrast"?{}:{look:p}},f=e.captureSnapshot();try{const b=new Ye;b.add(f.root),b.updateMatrixWorld(!0);const x=new ie(...u.position),w=nt(f.root).getBoundingSphere(new Je),{near:T,far:z}=tt(x.distanceTo(w.center),w.radius),{left:X,right:D,top:P,bottom:V}=u.window;let _;if(u.projection==="orthographic")_=new Qe(X,D,P,V,T,z);else{const F=new et(It.radToDeg(2*Math.atan((P-V)/2)),(D-X)/(P-V),T,z);F.projectionMatrix.makePerspective(X*T,D*T,P*T,V*T,T,z),F.projectionMatrixInverse.copy(F.projectionMatrix).invert(),_=F}_.position.copy(x),_.quaternion.set(...u.quaternion),_.updateMatrixWorld(!0);const H=await ft(b,_,f,d);return{kind:"image",url:`data:${H.mimeType};base64,${H.base64}`,width:h,height:l,projection:u.projection}}finally{f.dispose()}}const fn="document:blender:runtime";let j=null,He=0;function Vn(e){const t=++He;return j=e,q(),()=>{He===t&&(j=null,q())}}function je(){const e=S?.document,t=B().documents.activeId(),n=t?.startsWith("document:model:")?t.slice(15):j?.blend;return!n||!e||n===e?null:`Blender is editing ${e}; ${n} is not open. Return to ${e} before editing.`}function L(){return j?.documentId??fn}function wt(){return L()}async function Un(e,t){const n=B();if(!n.session.open())throw new Error("Opening a model requires an open project session.");const r=n.projectLocalState.projectRootPath();if(r===null)throw new Error("Opening a model requires a project path.");if(j!==e||n.documents.activeId()!==e.documentId)return!1;const a=C(),o=a.start(r,e.blend);return t(),await o,j!==e?!1:(await a.present(),j===e)}function I(){return S?.project!=null&&je()===null}let gt=0;const Te=new Set;function Wn(){return gt}function Gn(e){return Te.add(e),()=>{Te.delete(e)}}function q(){gt+=1;for(const e of[...Te])e()}async function Ze(e,t){return I()?C().rna(e,t):null}async function wn(e,t){return I()?C().rnaContext(e,t):null}async function gn(e,t,n,r,a=!0){if(!I())return null;const o=await C().rnaSet(e,t,n,r,a);return q(),o}async function mn(e,t=!0,n="Blender Python"){const r=await C().execute(e,t,n);q();const a=/^Error executing code:/.exec(r);return{text:r,executed:a===null,result:a===null?r.replace(/^Code executed successfully: ?/,""):"",error:a===null?null:r.replace(/^Error executing code: ?/,"")}}function qn(){C().historyGesture("history-begin").catch(e=>B().console.error(`Could not begin Blender undo gesture: ${String(e)}`,"blender-history"))}async function zn(){await C().historyGesture("history-end")}async function yn(e){return I()?C().outliner(e):null}async function Xn(e){return I()?C().nodeTree(e):null}async function Hn(e){return I()?C().uvLayout(e):null}async function Zn(e){return I()?C().rig(e):null}async function Kn(e){return I()?C().actionClip(e):null}async function mt(e,t,n){if(!I())return null;const r=await C().outlinerSet(e,t,n);return q(),r}const bn={view:"blender-node-view",title:"Node Editor",verbs:[["state",void 0],["look",void 0],["view-all","Node Editor: Frame All"],["zoom",void 0],["pan",void 0],["move",void 0],["link",void 0],["set-value",void 0],["use-nodes",void 0],["collapse-panel",void 0]].map(([e,t])=>({id:e,...t?{title:t}:{},run:n=>yt({...n,action:e})}))};function yt(e){const t=typeof e.action=="string"?e.action:"state";switch(t){case"state":break;case"look":Y({looked:typeof e.node=="string"?e.node:null,refusal:null});break;case"view-all":cn(),Y({refusal:null});break;case"zoom":{const n=typeof e.zoom=="number"?e.zoom:1;Y({transform:{...Me().transform,zoom:n},refusal:null});break}case"pan":{const n=Me().transform;Y({transform:{...n,cx:typeof e.cx=="number"?e.cx:n.cx,cy:typeof e.cy=="number"?e.cy:n.cy},refusal:null});break}case"move":G(`Moving "${String(e.node??"a node")}" writes Node.location — editing parity is not the program.`);break;case"link":G("Dragging between sockets would make a link — editing parity is not the program.");break;case"set-value":G(`Changing "${String(e.socket??"a socket")}" writes the socket's default_value — editing parity is not the program.`);break;case"use-nodes":G("Use Nodes writes Material.use_nodes — editing parity is not the program.");break;case"collapse-panel":G(`Collapsing "${String(e.panel??"a panel")}" writes the panel's is_collapsed — editing parity is not the program.`);break;default:G(`blender-node-view: no action "${t}" — state, look, view-all, zoom, pan, and the refusals move, link, set-value, use-nodes, collapse-panel.`)}return Me()}let S=null;const ce=new Set;function bt(){ce.size&&B().history.invalidate([...ce]),ce.clear()}let Ie=null,Ke=!1;function ue(e){try{const t=B().session.beginWork(`Blender: ${e}`);return()=>{try{t()}catch{}}}catch{return()=>{}}}function _e(){const e=ue("invalidating history and releasing runtime");try{bt(),Ie?.abort(),Ie=null,S?.terminate(),S=null,Mt=null}finally{e()}}function Mn(){Ke||(Ke=!0,B().session.onBeforeClose(async()=>{await S?.stop(),_e()}),B().session.onEnded(_e))}let Mt=null;const vn=e=>typeof e=="object"&&e!==null&&typeof e.applyFrame=="function"&&typeof e.snapshot=="function"&&typeof e.captureSnapshot=="function"&&typeof e.recordPresentation=="function"&&typeof e.recordPhotograph=="function";async function xn(){const{documents:e}=B(),t=Date.now()+15e3;let n=L();for(;;){n=L();const r=await e.waitForContext(n,Math.max(0,Math.min(250,t-Date.now())));if(vn(r))return r;if(Date.now()>=t)break}throw new Error(`The Blender Model document is not open, or the open one is not a Model this engine can present to (it must answer applyFrame, captureSnapshot, recordPresentation and recordPhotograph): nothing published a presentable view as ${n} within 15 s (bound model: ${j?.documentId??"none"}). Open the Model document first (\`volter blender-mcp\` opens it before its first call).`)}function C(){const e=je();if(e)throw new Error(e);if(S!==null)return S;Mn();const t=new AbortController;Ie=t;let n=!1;S=new _t({work:ue,history:a=>{const o=S;if(!o)throw new Error("Blender history arrived before its runtime");for(const s of a){if("reset"in s){bt();continue}if(!s.resource)throw new Error("A Blender edit has no document resource");ce.add(s.resource);const i=async c=>{if(S!==o)throw new Error("This Blender history belongs to a closed worker");const h=await o.historyStep(s.id,c);return q(),await sn(tn().selected),h};B().history.record({id:s.id,label:s.label,resources:[s.resource],document:L(),undo:()=>i("undo"),redo:()=>i("redo")})}},present:async(a,o,s)=>{const i=je();if(i)throw new Error(i);if(j===null){if(s?.render)throw new Error("Rendering a Blender frame needs the Model document open; nothing is presenting.");return{}}const c=L(),h=ue("waiting for Model presenter");let l;try{l=await xn()}finally{h()}if(t.signal.throwIfAborted(),L()!==c)throw new Error("Blender document changed before its frame could be presented");const u=ue("applying frame to Model"),M=(()=>{try{return l.applyFrame(a)}finally{u()}})(),v=typeof M=="object"&&M!==null&&"held"in M,E=v?M.held:null,g=x=>({...x===void 0?{}:{capture:x},...v?{held:E}:{}});if(l.recordPresentation(o),!s||(Mt=s,!s.render))return g(void 0);const m=l.snapshot(),k=()=>{if(t.signal.throwIfAborted(),L()!==c||l.snapshot()!==m)throw new Error("Blender capture document or source revision changed before completion")};if(s.render.linearInput){const x=await pt(null,s.render);return k(),g(x)}const{render:p,position:y,target:d,up:f}=s;if(!y||!d||!f)throw new Error("A Blender render capture must carry the scene camera position, target and up");if(n)throw new Error("A Blender render capture is already in progress");const b=l.captureSnapshot();n=!0,t.signal.addEventListener("abort",b.dispose,{once:!0});try{k();const x=new Ye;x.add(b.root),x.updateMatrixWorld(!0);const w=b.root.matrixWorld,T=new jt().copy(w).invert(),z=new Ue().setFromMatrix4(w),X=new Ue().setFromMatrix4(T),D=new ie(y[0],y[1],y[2]).applyMatrix4(w),P=new ie(d[0],d[1],d[2]).applyMatrix4(w),V=new ie(f[0],f[1],f[2]).applyMatrix3(z),_=Math.min(2048,Math.round(p.width))/Math.min(2048,Math.round(p.height)),H=nt(b.root).getBoundingSphere(new Je),F=tt(D.distanceTo(H.center),H.radius);let U;if(p.orthographic){const Q=p.fov/2;U=new Qe(-Q*_,Q*_,Q,-Q,F.near,F.far)}else U=new et(p.fov,_,F.near,F.far);U.up.copy(V),U.position.copy(D),U.lookAt(P),U.updateMatrixWorld(!0);const De={position:D.clone().applyMatrix4(T).toArray(),target:P.clone().applyMatrix4(T).toArray(),up:V.clone().applyMatrix3(X).toArray()};l.recordPhotograph({sent:{position:y,target:d,up:f},photographed:De,render:{width:p.width,height:p.height,fov:p.fov,orthographic:p.orthographic}});const vt=await ft(x,U,b,p,k);return g({...vt,camera:De})}finally{n=!1,t.signal.removeEventListener("abort",b.dispose),b.dispose()}},log:(a,o)=>(a==="error"?console.error:console.log)(`[blender] ${o}`)});const r=S;return B().session.reportWorkerCallMeter("Blender",()=>r.metrics()),S}const kn="models/model.blend",A=(e,t)=>{const n=e[t];if(typeof n!="string")throw new Error(`${String(e.type)} requires a string "${t}"`);return n};async function En(e){const t=B().projectLocalState.projectRootPath();if(t===null)return{};let n;try{n=await e.execute(`import bpy
2
+ print(bpy.data.filepath)
3
+ `,!1)}catch{return{}}if(/^Error executing code:/m.test(n))return{};const r=n.replace(/^Code executed successfully:/,"").split(`
4
+ `).map(o=>o.trim()).filter(o=>o.startsWith("/")).pop()??"";if(r==="")return{};const a=t.endsWith("/")?t:`${t}/`;return r.startsWith(a)?{document:r.slice(a.length)}:{}}async function Yn(e){const t=B();if(e.type==="blender-status")return{ok:!0,data:{started:S?.project!=null,document:t.documents.context(L())!==void 0}};if(!t.session.open())return{ok:!1,error:`${e.type} needs an open project session; this editor page has none.`};try{const n=e.type==="blender-start"?A(e,"project"):null;let r=typeof e.document=="string"?e.document:void 0;if((e.type==="blender-stop"||e.type==="blender-start"&&e.fresh===!0)&&(await S?.stop(),_e(),e.type==="blender-stop"))return{ok:!0,data:{stopped:!0}};if(e.type==="blender-start"&&!t.documents.context(L())){const o=await t.project.documentTable(),s=o.entries.filter(l=>l.kind==="model"),i=r!==void 0?s.find(l=>l.source?.path===r):s.find(l=>l.id===(j?.entryId??o.default))??(s.length===1?s[0]:void 0);if(!i)return{ok:!1,error:r!==void 0?`No declared Model document names ${r}.`:`Choose a Model document before starting Blender. Available: ${s.map(l=>l.id).join(", ")||"(none)"}.`};const c=i.id;if(r=i.source?.path,!await t.workspace.open({kind:"document",id:c}))return{ok:!1,error:`blender-start could not open the Blender Model document ${c}: nothing in this editor opens that document (the Model document ships with @volter/editor-blender).`}}const a=C();switch(e.type){case"blender-start":{const o=r!==void 0?r:j?.blend??kn;return{ok:!0,data:{...await a.start(n,o)}}}case"blender-execute":return{ok:!0,data:{result:(await mn(A(e,"code"))).text}};case"blender-scene-info":return{ok:!0,data:{result:await a.sceneInfo()}};case"blender-object-info":return{ok:!0,data:{result:await a.objectInfo(A(e,"name"))}};case"blender-rna":{const o=typeof e.names=="number"?e.names:void 0;return{ok:!0,data:{result:await a.rna(A(e,"path"),o)}}}case"blender-rna-context":{const o=typeof e.object=="string"?e.object:void 0,s=typeof e.collection=="string"?e.collection:void 0;return{ok:!0,data:{result:await a.rnaContext(o,s)}}}case"blender-rna-set":{const o=typeof e.index=="number"?e.index:void 0;return{ok:!0,data:{result:await gn(A(e,"path"),A(e,"property"),e.value,o)}}}case"blender-outliner":{const o=Array.isArray(e.selected)?e.selected.filter(s=>typeof s=="string"):void 0;return{ok:!0,data:{result:await a.outliner(o)}}}case"blender-node-tree":return{ok:!0,data:{result:await a.nodeTree({...typeof e.path=="string"?{path:e.path}:{},...typeof e.material=="string"?{material:e.material}:{}})}};case"blender-uv-layout":return{ok:!0,data:{result:await a.uvLayout({...typeof e.object=="string"?{object:e.object}:{},...typeof e.uvLayer=="string"?{uvLayer:e.uvLayer}:{}})}};case"blender-rig":return{ok:!0,data:{result:await a.rig({...typeof e.object=="string"?{object:e.object}:{}})}};case"blender-action-clip":return{ok:!0,data:{result:await a.actionClip({...typeof e.object=="string"?{object:e.object}:{},...typeof e.bake=="boolean"?{bake:e.bake}:{}})}};case"blender-node-view":{const o=typeof e.action=="string"?e.action:"state";return{ok:!0,data:{result:bn.verbs.some(i=>i.id===o)?xt("blender-node-view",o,e):yt(e)}}}case"blender-outliner-set":return{ok:!0,data:{result:await mt(A(e,"path"),A(e,"column"),e.value!==!1)}};case"blender-screenshot-view":{const o=typeof e.maxSize=="number"?e.maxSize:1e3,s={kind:"document",id:j?.entryId??"blender:runtime"};return{ok:!0,data:{...await a.screenshotView(o),document:s}}}case"blender-read-file":{const o=await a.readFile(A(e,"path")),s=A(e,"transferId"),i=await fetch(`/__editor/blender-file?id=${encodeURIComponent(s)}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([o])});return i.ok?{ok:!0,data:{bytes:o.length}}:{ok:!1,error:`Transfer ${s} was refused: ${i.status}`}}case"blender-write-file":{const o=atob(A(e,"base64")),s=Uint8Array.from(o,i=>i.charCodeAt(0));return await a.writeFile(A(e,"path"),s),{ok:!0,data:{written:s.length}}}case"blender-list-files":{const o=await a.listFiles(A(e,"path")),s=a.presented;return{ok:!0,data:{entries:o,...s?{session:s.session,revision:s.revision}:{},...await En(a)}}}}return{ok:!1,error:`Unknown Blender command ${e.type}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}export{zn as A,qn as B,Ln as C,$n as D,mn as E,Pn as F,Vn as G,Un as H,bn as N,On as a,Wn as b,Y as c,Me as d,Xn as e,Dn as f,Kn as g,Yn as h,Zn as i,Hn as j,Fn as k,wt as l,I as m,Nn as n,q as o,wn as p,Ze as q,G as r,Gn as s,gn as t,Rn as u,In as v,sn as w,tn as x,_n as y,Re as z};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RectAreaLightUniformsLib-DpPyArRG.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js"])))=>i.map(i=>d[i]);
2
- import{a as Uo,b as Wo,L as Ho}from"./LineSegments2-DN9pUfWA.js";import{bh as ot,cl as qo,fo as x,cm as X,N as fn,a$ as bt,em as Kn,b4 as Te,co as Tt,ey as Pe,cp as bn,_ as ht,ej as Mt,fd as $t,er as Ae,M as it,cj as ut,dp as gt,aV as Se,cW as Go,aE as Xo,c7 as ft,j as Ee,f6 as Me,fp as Jn,au as Tn,dw as Pn,bi as to,aT as Ne,c1 as Lt,dd as Ln,eC as Vn,e7 as gn,aw as nn,da as It,I as yn,as as Re,e8 as Ie,b0 as Yo,K as ze,B as Fe,b9 as De,Y as Zo,cw as ln,ed as Ce,cA as ke,fx as $e,db as Qo,el as Le,R as Ve,e6 as je,c0 as Ko,bX as Be,aI as uo,ao as Ue,eG as We,d3 as He,cs as qe,ex as Ge,b5 as Xe,cY as Ye,eU as Ze,cE as jn,c5 as Jo,cO as no,at as Qe,ff as Ke,eW as Je,f7 as ta,F as na,ev as oa,et as ea,dq as aa,fq as ra,n as la,l as ia,cf as sa}from"./three.core-3arARmh6.js";import{t as P,u as z,v as E,bz as q,by as W,bA as S,e1 as $,_ as fa,mu as te,dZ as jt,w as j,kv as _t,e0 as ne,mv as B,dY as ca,mw as ua}from"./index-JjEYIC4G.js";import{S as zt}from"./three.module-BLhyNg0e.js";import{t as _a}from"./blender-runtime-host-Bw37aE1K.js";const Bn=new Set;function vt(){for(const o of[...Bn])o()}function ma(o){return Bn.add(o),()=>{Bn.delete(o)}}function Un(o){const t=atob(o),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}const Zt=S().finite(),da=P({name:E(),parent:E().nullable(),connected:q(),hide:q(),length:Zt,matrix:z($([Zt,Zt,Zt,Zt])).length(4),select:q(),active:q(),lockedWeight:q()}).strict(),ha=P({object:E(),displayType:W(["OCTAHEDRAL","STICK","BBONE","ENVELOPE","WIRE"]),showInFront:q(),mode:E(),bones:z(da)}).strict(),xt={solid:11711154,pose:5294335,poseActive:9240575,poseActiveUnsel:794150,wire:0,vertex:0,lockedWeight:16711680,lockedWeightFactor:128/255};function pa(o){return new ht(o.r*o.r*.1,o.g*o.g*.1,o.b*o.b*.1)}const An=[[0,0,0],[.1,.1,.1],[.1,.1,-.1],[-.1,.1,-.1],[-.1,.1,.1],[0,1,0]],_o=[[2,1,0],[3,2,0],[4,3,0],[1,4,0],[5,1,2],[5,2,3],[5,3,4],[5,4,1]],Pt=Math.SQRT1_2,va=[[Pt,-Pt,0],[0,-Pt,-Pt],[-Pt,-Pt,0],[0,-Pt,Pt],[.99388373,.11043154,0],[0,.11043154,-.99388373],[-.99388373,.11043154,0],[0,.11043154,.99388373]],ga=[[0,1],[1,5],[5,3],[3,0],[0,4],[4,5],[5,2],[2,0],[1,2],[2,3],[3,4],[4,1]],xa=.05;function mo(o){return o.select||o.active?2:1}const ba=10,ya=4,wa=`
2
+ import{a as Uo,b as Wo,L as Ho}from"./LineSegments2-DN9pUfWA.js";import{bh as ot,cl as qo,fo as x,cm as X,N as fn,a$ as bt,em as Kn,b4 as Te,co as Tt,ey as Pe,cp as bn,_ as ht,ej as Mt,fd as $t,er as Ae,M as it,cj as ut,dp as gt,aV as Se,cW as Go,aE as Xo,c7 as ft,j as Ee,f6 as Me,fp as Jn,au as Tn,dw as Pn,bi as to,aT as Ne,c1 as Lt,dd as Ln,eC as Vn,e7 as gn,aw as nn,da as It,I as yn,as as Re,e8 as Ie,b0 as Yo,K as ze,B as Fe,b9 as De,Y as Zo,cw as ln,ed as Ce,cA as ke,fx as $e,db as Qo,el as Le,R as Ve,e6 as je,c0 as Ko,bX as Be,aI as uo,ao as Ue,eG as We,d3 as He,cs as qe,ex as Ge,b5 as Xe,cY as Ye,eU as Ze,cE as jn,c5 as Jo,cO as no,at as Qe,ff as Ke,eW as Je,f7 as ta,F as na,ev as oa,et as ea,dq as aa,fq as ra,n as la,l as ia,cf as sa}from"./three.core-3arARmh6.js";import{t as P,u as z,v as E,bz as q,by as W,bA as S,e1 as $,_ as fa,mu as te,dZ as jt,w as j,kv as _t,e0 as ne,mv as B,dY as ca,mw as ua}from"./index-flxMlfV4.js";import{S as zt}from"./three.module-BLhyNg0e.js";import{t as _a}from"./blender-runtime-host-W_QVh8pY.js";const Bn=new Set;function vt(){for(const o of[...Bn])o()}function ma(o){return Bn.add(o),()=>{Bn.delete(o)}}function Un(o){const t=atob(o),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}const Zt=S().finite(),da=P({name:E(),parent:E().nullable(),connected:q(),hide:q(),length:Zt,matrix:z($([Zt,Zt,Zt,Zt])).length(4),select:q(),active:q(),lockedWeight:q()}).strict(),ha=P({object:E(),displayType:W(["OCTAHEDRAL","STICK","BBONE","ENVELOPE","WIRE"]),showInFront:q(),mode:E(),bones:z(da)}).strict(),xt={solid:11711154,pose:5294335,poseActive:9240575,poseActiveUnsel:794150,wire:0,vertex:0,lockedWeight:16711680,lockedWeightFactor:128/255};function pa(o){return new ht(o.r*o.r*.1,o.g*o.g*.1,o.b*o.b*.1)}const An=[[0,0,0],[.1,.1,.1],[.1,.1,-.1],[-.1,.1,-.1],[-.1,.1,.1],[0,1,0]],_o=[[2,1,0],[3,2,0],[4,3,0],[1,4,0],[5,1,2],[5,2,3],[5,3,4],[5,4,1]],Pt=Math.SQRT1_2,va=[[Pt,-Pt,0],[0,-Pt,-Pt],[-Pt,-Pt,0],[0,-Pt,Pt],[.99388373,.11043154,0],[0,.11043154,-.99388373],[-.99388373,.11043154,0],[0,.11043154,.99388373]],ga=[[0,1],[1,5],[5,3],[3,0],[0,4],[4,5],[5,2],[2,0],[1,2],[2,3],[3,4],[4,1]],xa=.05;function mo(o){return o.select||o.active?2:1}const ba=10,ya=4,wa=`
3
3
  attribute vec3 aSolid;
4
4
  attribute vec3 aHint;
5
5
  varying vec3 vColor;
@@ -0,0 +1,12 @@
1
+ import{a as u}from"./jsx-runtime-DPjLkJKQ.js";import{jC as ke,dJ as he,r as $,cO as Se,fH as V,cS as M,dj as H,hQ as xe,cR as Ee,dG as Oe,dI as Ce}from"./index-flxMlfV4.js";import{c as ye,a as X}from"./blender-runtime-skin-CwXXiusi.js";import{r as y}from"./index-nmcBqr7Y.js";import{u as Re,v as Y,w as J,x as Fe,y as ne,z as ee,t as de,A as Ne,B as Le,C as ue,D as Te,k as q,E as Z,F as Me,G as Ae,H as Ie}from"./blender-runtime-host-W_QVh8pY.js";import"./index-CtzuWnCS.js";import{a as Be}from"./three-contract-Dkt6PmWY.js";import{o as te,b as U}from"./viewport-door-Brt6-rPp.js";import{d9 as Pe}from"./three.core-3arARmh6.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./LineSegments2-DN9pUfWA.js";import"./three.module-BLhyNg0e.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./renderer-ownership-BovSEcLv.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./clip-planes-CnAI6DZn.js";import"./content-bounds-Ax7CFkXJ.js";import"./hierarchy-marks-EEQa08In.js";import"./workspace-arrangement-BnGzBm57.js";function je(t){const a=Number.isFinite(t)&&t>0?t:50;return{degrees:2*Math.atan(72/(2*a))*180/Math.PI,axis:"larger"}}ke("model",{camera:{fov:je(50),opening:[.8187,.4458,.3617]},interaction:{bootTool:"select",boxSelect:"touch"},all:{lighting:{source:"studio",studioPreset:he.id,auto:null,tone:{mapper:"none",exposure:1}},xray:{enabled:!1,alpha:.5}},modes:{wireframe:{xray:{enabled:!0,alpha:0}},preview:{lighting:{source:"preview",auto:null,preview:{sceneLights:!1,sun:{enabled:!1},environment:{enabled:!0,image:"blender:forest",energy:1,rotation:0}},tone:{mapper:"agx",exposure:1}},backdrop:{source:"fill"}},rendered:{lighting:{source:"scene",auto:null,tone:{mapper:"agx",exposure:1}},backdrop:{source:"scene"}}},overlays:{selection:{origins:!0}},world:{upAxis:"z"}});function $e(t){return`blender-${t.toLowerCase().replace(/_/g,"-")}`}function B(t){return t?.type==="TSE_SOME_ID"&&t.struct==="Object"&&t.object!==void 0}function pe(t){if(t.struct)return t.struct}function be(t,a){return{id:t.id,label:t.name,role:"entity",kind:$e(t.icon),...pe(t)?{typeLabel:pe(t)}:{},parentId:a,childIds:t.children.map(l=>l.id),defaultExpanded:t.expanded}}const De={transform:!0,inspectorFields:!1,persist:!0},W=new Set;function Ve(t){for(const a of W)if(a.documentId===t)return a;return W.size===1?[...W][0]:null}const Ge=()=>({position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]});function We(t,a){t.updateWorldMatrix(!0,!1);const l=a.matrixWorld.clone().invert().multiply(t.matrixWorld).elements;return[[l[0],l[1],l[2],l[3]],[l[4],l[5],l[6],l[7]],[l[8],l[9],l[10],l[11]],[l[12],l[13],l[14],l[15]]]}function z(t,a){return`${t} needs a file, and this editor has no door to ask for one: the host's file door (\`EditorHost.files\`, \`@volter/editor-sdk/host\`) reads and writes project-relative paths and has no file-picker member, so there is nothing to open the workbench's own dialog through. Blender's row opens a file browser; run without one, the engine answers "${a}".`}const He=[{kind:"mesh.plane",label:"Plane",group:"Mesh",call:"mesh.primitive_plane_add"},{kind:"mesh.cube",label:"Cube",group:"Mesh",call:"mesh.primitive_cube_add"},{kind:"mesh.circle",label:"Circle",group:"Mesh",call:"mesh.primitive_circle_add"},{kind:"mesh.uv-sphere",label:"UV Sphere",group:"Mesh",call:"mesh.primitive_uv_sphere_add"},{kind:"mesh.ico-sphere",label:"Ico Sphere",group:"Mesh",call:"mesh.primitive_ico_sphere_add"},{kind:"mesh.cylinder",label:"Cylinder",group:"Mesh",call:"mesh.primitive_cylinder_add"},{kind:"mesh.cone",label:"Cone",group:"Mesh",call:"mesh.primitive_cone_add"},{kind:"mesh.torus",label:"Torus",group:"Mesh",call:"mesh.primitive_torus_add"},{kind:"mesh.grid",label:"Grid",group:"Mesh",call:"mesh.primitive_grid_add",separatorBefore:!0},{kind:"mesh.monkey",label:"Monkey",group:"Mesh",call:"mesh.primitive_monkey_add"},{kind:"curve.bezier",label:"Bézier",group:"Curve",call:"curve.primitive_bezier_curve_add"},{kind:"curve.bezier-circle",label:"Circle",group:"Curve",call:"curve.primitive_bezier_circle_add"},{kind:"curve.nurbs-curve",label:"Nurbs Curve",group:"Curve",call:"curve.primitive_nurbs_curve_add",separatorBefore:!0},{kind:"curve.nurbs-circle",label:"Nurbs Circle",group:"Curve",call:"curve.primitive_nurbs_circle_add"},{kind:"curve.path",label:"Path",group:"Curve",call:"curve.primitive_nurbs_path_add"},{kind:"curve.empty-hair",label:"Empty Hair",group:"Curve",call:"object.curves_empty_hair_add",separatorBefore:!0},{kind:"curve.fur",label:"Fur",group:"Curve",call:"object.quick_fur"},{kind:"surface.nurbs-curve",label:"Nurbs Curve",group:"Surface",call:"surface.primitive_nurbs_surface_curve_add"},{kind:"surface.nurbs-circle",label:"Nurbs Circle",group:"Surface",call:"surface.primitive_nurbs_surface_circle_add"},{kind:"surface.nurbs-surface",label:"Nurbs Surface",group:"Surface",call:"surface.primitive_nurbs_surface_surface_add"},{kind:"surface.nurbs-cylinder",label:"Nurbs Cylinder",group:"Surface",call:"surface.primitive_nurbs_surface_cylinder_add"},{kind:"surface.nurbs-sphere",label:"Nurbs Sphere",group:"Surface",call:"surface.primitive_nurbs_surface_sphere_add"},{kind:"surface.nurbs-torus",label:"Nurbs Torus",group:"Surface",call:"surface.primitive_nurbs_surface_torus_add"},{kind:"metaball.ball",label:"Ball",group:"Metaball",call:"object.metaball_add, type='BALL'"},{kind:"metaball.capsule",label:"Capsule",group:"Metaball",call:"object.metaball_add, type='CAPSULE'"},{kind:"metaball.plane",label:"Plane",group:"Metaball",call:"object.metaball_add, type='PLANE'"},{kind:"metaball.ellipsoid",label:"Ellipsoid",group:"Metaball",call:"object.metaball_add, type='ELLIPSOID'"},{kind:"metaball.cube",label:"Cube",group:"Metaball",call:"object.metaball_add, type='CUBE'"},{kind:"text",label:"Text",group:null,call:"object.text_add"},{kind:"point-cloud",label:"Point Cloud",group:null,call:"object.pointcloud_random_add"},{kind:"volume.import",label:"Import OpenVDB...",group:"Volume",call:"object.volume_import",refusal:`${z("Importing an OpenVDB volume","CANCELLED, with nothing created")} This build also has no OpenVDB at all (\`bpy.app.build_options.openvdb\` is False), so a file would not be read even with a picker.`},{kind:"volume.empty",label:"Empty",group:"Volume",call:"object.volume_add"},{kind:"grease-pencil.blank",label:"Blank",group:"Grease Pencil",call:"object.grease_pencil_add, type='EMPTY'"},{kind:"grease-pencil.stroke",label:"Stroke",group:"Grease Pencil",call:"object.grease_pencil_add, type='STROKE'"},{kind:"grease-pencil.monkey",label:"Monkey",group:"Grease Pencil",call:"object.grease_pencil_add, type='MONKEY'"},{kind:"grease-pencil.lineart-scene",label:"Scene Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_SCENE'",separatorBefore:!0},{kind:"grease-pencil.lineart-collection",label:"Collection Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_COLLECTION'"},{kind:"grease-pencil.lineart-object",label:"Object Line Art",group:"Grease Pencil",call:"object.grease_pencil_add, type='LINEART_OBJECT'"},{kind:"armature",label:"Armature",group:null,call:"object.armature_add"},{kind:"lattice.lattice",label:"Lattice",group:"Lattice",call:"object.add, type='LATTICE'"},{kind:"lattice.deform-selected",label:"Lattice Deform Selected",group:"Lattice",call:"object.lattice_add_to_selected"},{kind:"empty.plain-axes",label:"Plain Axes",group:"Empty",call:"object.empty_add, type='PLAIN_AXES'"},{kind:"empty.arrows",label:"Arrows",group:"Empty",call:"object.empty_add, type='ARROWS'"},{kind:"empty.single-arrow",label:"Single Arrow",group:"Empty",call:"object.empty_add, type='SINGLE_ARROW'"},{kind:"empty.circle",label:"Circle",group:"Empty",call:"object.empty_add, type='CIRCLE'"},{kind:"empty.cube",label:"Cube",group:"Empty",call:"object.empty_add, type='CUBE'"},{kind:"empty.sphere",label:"Sphere",group:"Empty",call:"object.empty_add, type='SPHERE'"},{kind:"empty.cone",label:"Cone",group:"Empty",call:"object.empty_add, type='CONE'"},{kind:"image.reference",label:"Reference...",group:"Image",call:"object.empty_image_add, background=False",refusal:z("A reference image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.background",label:"Background...",group:"Image",call:"object.empty_image_add, background=True",refusal:z("A background image","poll() failed, context is incorrect / Please select at least one image")},{kind:"image.mesh-plane",label:"Mesh Plane...",group:"Image",call:"image.import_as_mesh_planes",refusal:z("An image as a mesh plane","CANCELLED, with nothing created")},{kind:"image.empty-image",label:"Empty Image",group:"Image",call:"object.empty_add, type='IMAGE'"},{kind:"light.point",label:"Point",group:"Light",call:"object.light_add, type='POINT'"},{kind:"light.sun",label:"Sun",group:"Light",call:"object.light_add, type='SUN'"},{kind:"light.spot",label:"Spot",group:"Light",call:"object.light_add, type='SPOT'"},{kind:"light.area",label:"Area",group:"Light",call:"object.light_add, type='AREA'"},{kind:"light-probe.sphere",label:"Sphere",group:"Light Probe",call:"object.lightprobe_add, type='SPHERE'"},{kind:"light-probe.plane",label:"Plane",group:"Light Probe",call:"object.lightprobe_add, type='PLANE'"},{kind:"light-probe.volume",label:"Volume",group:"Light Probe",call:"object.lightprobe_add, type='VOLUME'"},{kind:"camera",label:"Camera",group:null,call:"object.camera_add"},{kind:"speaker",label:"Speaker",group:null,call:"object.speaker_add"},{kind:"force-field.force",label:"Force",group:"Force Field",call:"object.effector_add, type='FORCE'"},{kind:"force-field.wind",label:"Wind",group:"Force Field",call:"object.effector_add, type='WIND'"},{kind:"force-field.vortex",label:"Vortex",group:"Force Field",call:"object.effector_add, type='VORTEX'"},{kind:"force-field.magnetic",label:"Magnetic",group:"Force Field",call:"object.effector_add, type='MAGNET'"},{kind:"force-field.harmonic",label:"Harmonic",group:"Force Field",call:"object.effector_add, type='HARMONIC'"},{kind:"force-field.charge",label:"Charge",group:"Force Field",call:"object.effector_add, type='CHARGE'"},{kind:"force-field.lennard-jones",label:"Lennard-Jones",group:"Force Field",call:"object.effector_add, type='LENNARDJ'"},{kind:"force-field.texture",label:"Texture",group:"Force Field",call:"object.effector_add, type='TEXTURE'"},{kind:"force-field.curve-guide",label:"Curve Guide",group:"Force Field",call:"object.effector_add, type='GUIDE'"},{kind:"force-field.boid",label:"Boid",group:"Force Field",call:"object.effector_add, type='BOID'"},{kind:"force-field.turbulence",label:"Turbulence",group:"Force Field",call:"object.effector_add, type='TURBULENCE'"},{kind:"force-field.drag",label:"Drag",group:"Force Field",call:"object.effector_add, type='DRAG'"},{kind:"force-field.fluid-flow",label:"Fluid Flow",group:"Force Field",call:"object.effector_add, type='FLUID'"}],Ue="collection-instance:";function ze(){const t=new Map;for(const a of q().byId.values()){if(a.type!=="TSE_LAYER_COLLECTION")continue;const l=a.data;l===void 0||!l.startsWith("bpy.data.collections[")||t.has(a.name)||t.set(a.name,{kind:`${Ue}${a.name}`,label:a.name,group:"Collection Instance",call:`object.collection_instance_add, collection=${D(a.name)}`})}return[...t.values()]}function Q(){return[...He,...ze()]}function Ke(t){const[a,...l]=t.call.split(", ");return`bpy.ops.${a}(${l.join(", ")})`}function D(t){return JSON.stringify(t)}async function G(t,a="Blender Python"){const l=["before = {o.name for o in bpy.data.objects}",t,"made = [o.name for o in bpy.data.objects if o.name not in before]",'print("\\n".join(made))'].join(`
2
+ `),d=await Z(l,!0,a);return d.error!==null?{made:[],error:d.error}:{made:d.result.split(`
3
+ `).map(_=>_.trim()).filter(_=>_.length>0),error:null}}async function Xe(t,a){const l=[`_sel = {${t.map(D).join(", ")}}`,"_vl = bpy.context.view_layer","for _o in _vl.objects:"," _o.select_set(_o.name in _sel)",a===null?"_vl.objects.active = None":`_vl.objects.active = bpy.data.objects.get(${D(a)})`].join(`
4
+ `),d=await Z(l,!1);d.error!==null&&$().console.error(`Blender refused the selection write: ${d.error}`,"blender-outliner")}async function re(t,a){if(t.length===0)return{destination:"Nothing is selected, so there was nothing to run it on.",persisted:!1};const l=[`targets = [bpy.data.objects[n] for n in [${t.map(D).join(", ")}]]`,"with bpy.context.temp_override(selected_objects=targets, selected_editable_objects=targets, active_object=targets[0], object=targets[0]):",` ${a}`].join(`
5
+ `),{error:d}=await G(l);return d!==null?{destination:d,persisted:!1}:(await J(t),{destination:`Blender — ${a}; the session saves the .blend`,persisted:!0})}const Ye={source:"document",label:"blender",detail:"These rows are Blender's own View Layer tree, read from the engine through RNA. Editing the model is a bpy call; the eye and render columns write the engine directly."},Je="This collection is excluded from the view layer (LayerCollection.exclude), so its viewport visibility is not what is hiding it. Clear the Exclude checkbox on this row first.",qe=({defaultAdapter:t})=>{const a=new Set;let l=[],d=null;const S=new Map,_=new Map,w=()=>{for(const r of[...a])r()},p=()=>q().byId,O=r=>{const e=p().get(r),n=ee();return e===void 0||n===null?null:e.type==="TSE_VIEW_COLLECTION_BASE"?n.root:e.object===void 0?null:n.objectForBlenderName(e.object)},x=r=>{const e=ee();if(e===null)return null;for(const n of p().values())if(B(n)&&e.objectForBlenderName(n.object)===r)return n.id;return null},k=r=>{for(const e of p().values())if(B(e)&&e.object===r)return e.id;return null},g=r=>{if(p().has(r))return r;const e=Be(t.hierarchy,r);return e===null?null:x(e)},h=r=>{const e=g(r);return e===null?null:O(e)},F=r=>{const e=h(r);return e===null?null:t.hierarchy.idForObject3D?.(e)??null},R={roots:()=>(Te(N()),(q().tree?.rows??[]).map(e=>be(e,null))),node:r=>{const e=q(),n=e.byId.has(r)?r:g(r),s=n===null?void 0:e.byId.get(n);return s===void 0?null:be(s,e.parentOf.get(s.id)??null)},object3D:r=>h(r),idForObject3D:r=>x(r)};function N(){const r=p(),e=new Set;for(const n of l){const s=r.get(n)?.object;s!==void 0&&e.add(s)}return[...e]}const i=()=>{const r=[];for(const e of l){const n=h(e),s=n===null?null:t.hierarchy.idForObject3D?.(n);s&&r.push(s)}t.selection?.set(r,{intent:"exact"}),w()},b=()=>{const r=Fe(),e=`${ne()}\0${r.active??""}\0${[...r.selected].sort().join("")}`;if(e===d)return;d=e;const n=r.selected.filter(f=>f!==r.active);r.active!==null&&n.push(r.active);const s=n.map(k).filter(f=>f!==null);s.length===l.length&&s.every((f,E)=>f===l[E])||(l=s,i())},m={get:()=>[...l],set:r=>{l=r.map(g).filter(f=>f!==null),i();const e=p(),n=[],s=[];for(const f of l){const E=e.get(f),T=E?.object;T===void 0?s.push(E?.name??f):n.includes(T)||n.push(T)}s.length>0&&$().console.warn(`${s.join(", ")} ${s.length===1?"is":"are"} not an object, so Blender's object selection does not carry ${s.length===1?"it":"them"}. Selecting a collection sets the ACTIVE COLLECTION in Blender, which is its own gesture and not in this editor yet.`,"blender-outliner"),Xe(n,n.length===0?null:n[n.length-1])}},o=r=>p().get(r)?.restrict,c={properties:r=>{const e=o(r);if(e===void 0)return[];const n=p().get(r),s=[{path:"name",label:"Name",type:"string",readonly:!B(n)}];return e.hide!==void 0&&s.push({path:"visible",label:"Show in Viewport",type:"boolean"}),e.render!==void 0&&s.push({path:"renderVisible",label:"Show in Renders",type:"boolean"}),e.exclude!==void 0&&s.push({path:"exclude",label:"Exclude from View Layer",type:"boolean"}),s},get:(r,e)=>{const n=p().get(r);if(n!==void 0){if(e==="name")return n.name;if(e==="visible")return n.restrict?.hide===void 0?void 0:!n.restrict.hide;if(e==="renderVisible")return n.restrict?.render===void 0?void 0:!n.restrict.render;if(e==="exclude")return n.restrict?.exclude}},editability:(r,e)=>{const n=p().get(r);return n===void 0?{writable:!1}:e==="name"?B(n)?{writable:!0}:{writable:!1,reason:`Renaming a ${n.struct??n.type} is not in this Outliner yet — only an object row renames here. Rename it with bpy.`}:n.notInCollection?{writable:!1,reason:"This row is a child drawn under its parent although it is not in that collection, and Blender's Outliner draws it no restriction columns."}:e==="visible"&&n.restrict?.exclude===!0?{writable:!1,reason:Je}:{writable:!0}},set:async(r,e,n)=>{const s=p().get(r);if(s===void 0)return;if(e==="name"){if(!B(s))return;const E=String(n);if(E===s.name||E.length===0)return;await de(`bpy.data.objects[${D(s.object)}]`,"name",E),await J([E]);const T=k(E);T!==null&&m.set([T]);return}if(e==="exclude"){await ue(s.path,"exclude",n===!0);return}const f=e==="visible"?"hide":e==="renderVisible"?"render":null;f!==null&&await ue(s.path,f,n===!1)}},j={get:r=>{const e=F(r);return(e===null?void 0:t.transforms?.get(e))??Ge()},editability:r=>{const e=g(r),n=e===null?void 0:p().get(e);return B(n)&&O(n.id)!==null?{writable:!0}:{writable:!1,reason:`Only an object has a transform; this row is a ${n?.struct??n?.type??"row"}.`}},beginEdit:r=>{const e=h(r);e!==null&&!S.has(e)&&(S.set(e,e.matrixWorld.clone()),_.set(r,e),Le())},apply:(r,e)=>{const n=h(r);n!==null&&(n.position.fromArray(e.position),n.quaternion.fromArray(e.rotation),n.scale.fromArray(e.scale),n.updateMatrix(),n.updateMatrixWorld(!0))},endEdit:async r=>{const e=_.get(r)??h(r);_.delete(r);const n=ee();if(e===null)return;const s=S.get(e);S.delete(e);try{if(n===null||(e.updateWorldMatrix(!0,!1),s?.equals(e.matrixWorld)===!0))return;const f=n.blenderObjectName(e);if(f===null)return;const E=`bpy.data.objects[${JSON.stringify(f)}]`;try{return await de(E,"matrix_world",We(e,n.root)),{destination:`Blender — ${E}.matrix_world; the session saves the .blend`,persisted:!0}}catch(T){return{destination:T instanceof Error?T.message:String(T),persisted:!1}}}finally{s&&await Ne()}}},A=r=>{const e=g(r),n=e===null?void 0:p().get(e);return B(n)?n.object:null},C=r=>({destination:r,persisted:!1}),L=async r=>{await J(r);const e=r.map(k).filter(n=>n!==null);return e.length>0&&m.set(e),e[0]??""},I={creatableKinds:()=>Q().map(({kind:r,label:e})=>({kind:r,label:e})),create:r=>{const e=Q().find(s=>s.kind===r);if(e===void 0)return{id:"",ack:C(`${r} is not a row of Blender's Add menu that this editor adds. Its rows are: ${Q().map(s=>s.label).join(", ")}.`)};if(e.refusal!==void 0)return{id:"",ack:C(e.refusal)};const n=Ke(e);return{id:"",ack:(async()=>{const{made:s,error:f}=await G(n);return f!==null?C(f):s.length===0?C(`Blender ran ${n} and created nothing. The operator reported no error, so it cancelled — most often because it wanted a file browser or a context this headless engine has no window for.`):(await L(s),{destination:`Blender — ${n}; the session saves the .blend`,persisted:!0})})()}},remove:r=>I.removeMany?.([r])??void 0,removeMany:async r=>{const e=[];for(const E of r){const T=A(E);if(T===null){const ce=g(E)===null?void 0:p().get(g(E));return C(`Only an object can be deleted here; this row is a ${ce?.struct??ce?.type??"row"}. Deleting a collection, a modifier or a vertex group is that datablock’s own bpy call.`)}e.push(T)}if(e.length===0)return C("Nothing selected to delete.");const s=[`targets = ${`[bpy.data.objects[n] for n in [${e.map(D).join(", ")}]]`}`,"with bpy.context.temp_override(selected_objects=targets, active_object=targets[0]):"," result = bpy.ops.object.delete(use_global=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled deleting the selected objects")'].join(`
6
+ `),{error:f}=await G(s,"Delete Objects");return f!==null?C(f):(m.set([]),await J([]),{destination:"Blender — bpy.ops.object.delete(use_global=False); the session saves the .blend",persisted:!0})},duplicate:r=>{const e=A(r);if(e===null)return{id:r,ack:C("Only an object can be duplicated here. Duplicating a collection is `bpy.ops.object.collection_instance_add`, its own gesture.")};const n=[`source = bpy.data.objects[${D(e)}]`,"with bpy.context.temp_override(selected_objects=[source], active_object=source):"," result = bpy.ops.object.duplicate(linked=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled duplicating the selected object")'].join(`
7
+ `);return{id:r,ack:(async()=>{const{made:s,error:f}=await G(n,"Duplicate Object");return f!==null?C(f):(await L(s),{destination:`Blender — bpy.ops.object.duplicate(linked=False) on ${e}; the session saves the .blend`,persisted:!0})})()}},duplicateMany:async r=>{const e=[...new Set(r.map(A))];if(e.length===0||e.some(E=>E===null))return C("Select objects to duplicate; collections and data rows cannot be duplicated here.");const n=[`sources = [bpy.data.objects[name] for name in ${JSON.stringify(e)}]`,"with bpy.context.temp_override(selected_objects=sources, active_object=sources[0]):"," result = bpy.ops.object.duplicate(linked=False)",'if "FINISHED" not in result: raise RuntimeError("Blender cancelled duplicating the selected objects")'].join(`
8
+ `),{made:s,error:f}=await G(n,"Duplicate Objects");return f!==null?C(f):(await L(s),{destination:"Blender — duplicate selected objects as one native operation; the session saves the .blend",persisted:!0})},reparent:()=>C("Reparenting is Blender's `bpy.ops.object.parent_set`, which needs a parent TYPE (Object, Object Keep Transform, Armature Deform, …) that a drag does not say. Set the parent on the object’s Relations panel, or with bpy.")},P={get documentId(){return t.documentId},get documentRootObject(){return t.documentRootObject},capabilities:De,provenance:Ye,hierarchy:R,selection:m,inspector:c,transforms:j,structure:I,subscribe:r=>{a.add(r);const e=Y(r),n=t.subscribe?.(r)??(()=>{});return()=>{a.delete(r),e(),n()}}},se={get documentId(){return P.documentId},selectedObjectNames:()=>N(),allObjectNames:()=>{const r=[];for(const e of p().values())B(e)&&r.push(e.object);return r},selectObjects:r=>{const e=r.map(k).filter(n=>n!==null);m.set(e)},rowIdForObject:r=>k(r),structure:I,subscribe:r=>{a.add(r);const e=Y(r);return()=>{a.delete(r),e()}}};W.add(se);const _e=Re(b),we=Y(b);return b(),{adapter:P,dispose:()=>{_e(),we(),W.delete(se),a.clear()}}},le="volter.blender.render-view-split:",oe=new Set,ae=new Map;function Qe(t){try{return globalThis.localStorage?.getItem(le+t)==="1"}catch{return!1}}function ie(t){let a=ae.get(t);return a===void 0&&(a=Qe(t),ae.set(t,a)),a}function fe(t,a){if(ie(t)!==a){ae.set(t,a);try{a?globalThis.localStorage?.setItem(le+t,"1"):globalThis.localStorage?.removeItem(le+t)}catch{}for(const l of[...oe])l()}}function ve(t){return oe.add(t),()=>{oe.delete(t)}}const Ze=[{label:"Location",call:"location=True, rotation=False, scale=False"},{label:"Rotation",call:"location=False, rotation=True, scale=False"},{label:"Scale",call:"location=False, rotation=False, scale=True"},{label:"All Transforms",call:"location=True, rotation=True, scale=True"}],et=[{label:"Location",call:"bpy.ops.object.location_clear(clear_delta=False)"},{label:"Rotation",call:"bpy.ops.object.rotation_clear(clear_delta=False)"},{label:"Scale",call:"bpy.ops.object.scale_clear(clear_delta=False)"}],tt=[{label:"Geometry to Origin",type:"GEOMETRY_ORIGIN"},{label:"Origin to Geometry",type:"ORIGIN_GEOMETRY"},{label:"Origin to 3D Cursor",type:"ORIGIN_CURSOR"}],rt=[{submenu:"Mesh",at:"2699"},{submenu:"Curve",at:"2702"},{submenu:"Surface",at:"2704"},{submenu:"Metaball",at:"2705"},{kind:"text",at:"2706"},{kind:"point-cloud",at:"2707"},{submenu:"Volume",at:"2708"},{submenu:"Grease Pencil",at:"2709"},{separatorAt:"2711"},{kind:"armature",at:"2716"},{submenu:"Lattice",at:"2718"},{separatorAt:"2720"},{submenu:"Empty",at:"2722"},{submenu:"Image",at:"2723"},{separatorAt:"2725"},{submenu:"Light",at:"2727"},{submenu:"Light Probe",at:"2728"},{separatorAt:"2730"},{kind:"camera",at:"2735"},{separatorAt:"2737"},{kind:"speaker",at:"2739"},{separatorAt:"2741"},{submenu:"Force Field",at:"2743"},{separatorAt:"2745"},{submenu:"Collection Instance",at:"2759"}],nt="No Collections to Instance";function K({id:t,open:a,setOpen:l,anchorRef:d,children:S}){return u.jsxs("div",{ref:d,style:{position:"relative"},children:[u.jsx(xe,{"data-testid":`blender-menu-${t}`,"aria-expanded":a===t,onClick:()=>l(a===t?null:t),onPointerEnter:()=>{a&&l(t)},style:{textTransform:"capitalize"},children:t}),a===t&&u.jsx(Ee,{anchorRef:d,dismissBoundaryRef:d,align:"start",gap:0,clamp:!0,"aria-label":t,onDismiss:()=>l(null),children:S})]})}function lt(t,a,l){(async()=>{const d=await l;d===void 0||typeof d.destination!="string"||d.persisted!==!0&&t?.({tone:"error",title:`${a} was refused`,detail:d.destination})})()}function ot({documentId:t,notify:a}){y.useSyncExternalStore(Y,ne,ne);const[l,d]=y.useState(null),S=y.useRef(null),_=y.useRef(null),w=y.useRef(null),p=y.useRef(null),O=y.useRef(null),x=y.useSyncExternalStore(ve,()=>t===void 0?!1:ie(t),()=>!1),k=Ve(t);if(k===null)return null;const g=(o,c)=>()=>{d(null),lt(a,o,c(k))},h=k.selectedObjectNames(),F=k.allObjectNames(),R=h.length===0?"Nothing is selected.":void 0,N=Q(),i=o=>u.jsx(M,{"data-testid":`blender-add-${o.kind}`,disabled:o.refusal!==void 0,title:o.refusal,onSelect:g(`Add ${o.label}`,c=>c.structure.create(o.kind).ack),children:o.label},o.kind),b=o=>N.filter(c=>c.group===o).flatMap(c=>c.separatorBefore===!0?[u.jsx(H,{},`${c.kind}-separator`),i(c)]:[i(c)]),m=o=>{if("separatorAt"in o)return u.jsx(H,{},`separator-${o.separatorAt}`);if("kind"in o){const j=N.find(A=>A.kind===o.kind);return j===void 0?null:i(j)}const c=b(o.submenu);return c.length===0?u.jsx(M,{"data-testid":"blender-add-collection-instance",disabled:!0,children:nt},o.submenu):u.jsx(V,{label:o.submenu,"data-testid":`blender-add-${o.submenu.toLowerCase().replaceAll(" ","-")}`,children:c},o.submenu)};return u.jsxs(Se,{compact:!0,label:"Blender Object Mode menus","data-testid":"blender-object-mode-menus",ref:S,children:[u.jsx(K,{id:"view",open:l,setOpen:d,anchorRef:_,children:u.jsxs(V,{label:"Area","data-testid":"blender-view-area",children:[u.jsx(M,{"data-testid":"blender-area-vertical-split",disabled:x||t===void 0,title:x?"The Render view is already beside this area.":void 0,onSelect:()=>{d(null),t!==void 0&&fe(t,!0)},children:"Vertical Split"}),u.jsx(H,{}),u.jsx(M,{"data-testid":"blender-area-close",disabled:!x,title:x?void 0:"There is no second area to close.",onSelect:()=>{d(null),t!==void 0&&fe(t,!1)},children:"Close Area"})]})}),u.jsxs(K,{id:"select",open:l,setOpen:d,anchorRef:w,children:[u.jsx(M,{"data-testid":"blender-select-all",onSelect:g("Select All",o=>o.selectObjects(F)),children:"All"}),u.jsx(M,{"data-testid":"blender-select-none",onSelect:g("Select None",o=>o.selectObjects([])),children:"None"}),u.jsx(M,{"data-testid":"blender-select-invert",onSelect:g("Select Invert",o=>o.selectObjects(F.filter(c=>!h.includes(c)))),children:"Invert"})]}),u.jsx(K,{id:"add",open:l,setOpen:d,anchorRef:p,children:rt.map(o=>m(o))}),u.jsxs(K,{id:"object",open:l,setOpen:d,anchorRef:O,children:[u.jsx(V,{label:"Set Origin","data-testid":"blender-object-origin",children:tt.map(o=>u.jsx(M,{"data-testid":`blender-origin-${o.type}`,disabled:o.refusal!==void 0||h.length===0,title:o.refusal??R,onSelect:g(`Set Origin ▸ ${o.label}`,c=>re(c.selectedObjectNames(),`bpy.ops.object.origin_set(type='${o.type}')`)),children:o.label},o.type))}),u.jsx(V,{label:"Clear","data-testid":"blender-object-clear",children:et.map(o=>u.jsx(M,{"data-testid":`blender-clear-${o.label.toLowerCase()}`,disabled:h.length===0,title:R,onSelect:g(`Clear ▸ ${o.label}`,c=>re(c.selectedObjectNames(),o.call)),children:o.label},o.label))}),u.jsx(V,{label:"Apply","data-testid":"blender-object-apply",children:Ze.map(o=>u.jsx(M,{"data-testid":`blender-apply-${o.label.toLowerCase().replace(/ /g,"-")}`,disabled:h.length===0,title:R,onSelect:g(`Apply ▸ ${o.label}`,c=>re(c.selectedObjectNames(),`bpy.ops.object.transform_apply(${o.call})`)),children:o.label},o.label))}),u.jsx(H,{}),u.jsx(M,{"data-testid":"blender-object-duplicate",disabled:h.length===0,title:R,onSelect:g("Duplicate Objects",async o=>{const c=o.selectedObjectNames().map(j=>o.rowIdForObject(j)).filter(j=>j!==null);return o.structure.duplicateMany?.(c)}),children:"Duplicate Objects"}),u.jsx(M,{"data-testid":"blender-object-delete",disabled:h.length===0,title:R,onSelect:g("Delete",o=>{const c=o.selectedObjectNames().map(j=>o.rowIdForObject(j)).filter(j=>j!==null);return o.structure.removeMany?.(c)}),children:"Delete"})]})]})}const me=ye,at="#3d3d3d",ge="#ffffff";function it(){const t=y.useRef(null),[a,l]=y.useState(null),[d,S]=y.useState(!1);return y.useEffect(()=>{const _=t.current;if(!_)return;let w=!1,p=!1,O=!1;const x=async()=>{if(!O){O=!0,S(!0);try{for(;p&&!w;){p=!1;const F=globalThis.devicePixelRatio||1,R={width:Math.max(1,Math.round(_.clientWidth*F)),height:Math.max(1,Math.round(_.clientHeight*F))};let N;try{N=await Me(me,R)}catch(i){N={kind:"refused",reason:i instanceof Error?i.message:String(i)}}w||l(N)}}finally{O=!1,w||S(!1)}}},k=()=>{p=!0,x()},g=me.subscribeFrames(k),h=new ResizeObserver(k);return h.observe(_),k(),()=>{w=!0,g(),h.disconnect()}},[]),u.jsxs("div",{ref:t,"data-testid":"blender-render-view","aria-label":"Render view",style:{position:"relative",flex:"1 1 0",minWidth:0,marginTop:12,background:at,overflow:"hidden"},children:[a?.kind==="image"&&u.jsx("img",{src:a.url,alt:"The scene camera's render","data-testid":"blender-render-view-image",style:{position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"contain"}}),a?.kind==="refused"&&u.jsx("div",{role:"status","data-testid":"blender-render-view-refusal",style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",padding:16,textAlign:"center",color:ge,opacity:.8,fontSize:12},children:a.reason}),u.jsxs("div",{style:{position:"absolute",top:6,left:8,color:ge,fontSize:11,lineHeight:"14px",textShadow:"0 0 2px #000, 0 0 2px #000",pointerEvents:"none"},children:[a?.kind==="image"&&u.jsx("div",{children:a.projection==="orthographic"?"Camera Orthographic":"Camera Perspective"}),d&&u.jsx("div",{"data-testid":"blender-render-view-rendering",children:"Rendering…"})]})]})}const Vt="workspace.document",Gt="Blender Model",Wt=({documentId:t,notify:a})=>u.jsx(ot,{documentId:t,notify:a}),st="model",Ht="owned",Ut=[],v=ye,ct=()=>{const t=X.playhead();return v.subjectLine(t===null?null:Math.floor(t))},dt=t=>v.gridUnitName(t),ut={camera:()=>v.cameraViewCamera(),zoom:v.cameraViewZoom,pan:v.cameraViewPan,showing:t=>v.setCameraViewShowing(t),setPose:(t,a,l,d)=>{const{location:S,rotation:_}=v.blenderPose(a,l);return Z(`from mathutils import Matrix, Quaternion, Vector
9
+ import bpy
10
+ object = bpy.data.objects[${JSON.stringify(t)}]
11
+ object.matrix_world = Matrix.LocRotScale(Vector((${S.join(", ")})), Quaternion((${_.join(", ")})), object.matrix_world.to_scale())`,d,"Lock Camera to View").then(w=>{w.error!==null&&$().console.error(`Blender refused the camera's pose: ${w.error}`,"blender-camera")},w=>$().console.error(`The camera's pose was not written to Blender: ${String(w)}`,"blender-camera"))},view:(t,a,l,d)=>v.cameraView(t,a,l,d)};function zt(t){const{active:a,document:l,documentId:d,notify:S,publishContext:_}=t,w=l?.source?.path,p=l?.id,O=JSON.stringify([d,p,w]),[x,k]=y.useState(null),g=y.useRef({notify:S,publishContext:_});return g.current={notify:S,publishContext:_},y.useEffect(()=>{if(a===!1||!d)return;let h=!1,F;const R=w===void 0?null:{documentId:d,entryId:p,blend:w},N=Ae(R),i=()=>{F=g.current.publishContext?.(v)};return k(null),(async()=>{try{if(R){if(!await Ie(R,i))return}else i();h||k({key:O,error:null})}catch(b){if(h)return;F?.(),F=void 0;const m=b instanceof Error?b.message:String(b);k({key:O,error:m}),g.current.notify?.({tone:"error",title:`Blender could not open ${w??"the model"}`,detail:m})}})(),()=>{h=!0,F?.(),N()}},[a,w,d,p,O]),a===!1||!d?null:x?.key!==O?u.jsx("div",{role:"status",children:"Opening model…"}):x.error?u.jsx("div",{role:"alert",children:x.error}):u.jsx(pt,{...t})}function pt({active:t,document:a,documentId:l,surfaces:d}){const S=y.useCallback(()=>({root:v.root,onChange(i){const b=v.onChange(i),m=X.subscribe(i);return()=>{b(),m()}},dispose(){}}),[]),_=a?.source?.path,w=y.useCallback(i=>{const b=v.onChange(i),m=X.subscribe(i);let o=null;const c=()=>{o?.(),o=U().find(A=>A.documentId===l)?.onFrame(i)??null};c();const j=te(c);return()=>{b(),m(),j(),o?.()}},[l]),p=y.useSyncExternalStore(w,ct),O=y.useSyncExternalStore(ve,()=>l?ie(l):!1,()=>!1);y.useEffect(()=>{if(!l)return;const i=v.overlayGroups(),b=()=>{const o=U().find(c=>c.documentId===l);if(o)for(const{kind:c,object:j}of i)o.setHelper(c,j)};b();const m=te(b);return()=>{m();const o=U().find(c=>c.documentId===l);for(const{kind:c}of i)o?.setHelper(c,null)}},[l]),y.useEffect(()=>{if(!l)return;const{transport:i}=$();let b=null;const m=()=>{if(b)return;const c=i.for(l);c&&(b=X.attachTo(c))};m();const o=i.subscribe(m);return()=>{o(),b?.()}},[l]),y.useEffect(()=>{if(!l)return;const i=()=>U().find(L=>L.documentId===l);let b,m=null;const o=new Pe,c=()=>i()?.rig().drawCamera()??o,j=()=>{const L=i();L!==b&&(m?.(),m=L?L.onFrame(()=>v.refreshRendered()):null,b=L);const{lighting:I}=Ce(l);v.holdRendered(I.source==="scene"&&L?c:null),v.setWorkbench(I.source==="studio"&&I.studioPreset===he.id)};j();const A=Oe(j),C=te(j);return()=>{A(),C(),m?.(),v.holdRendered(null),v.setWorkbench(!1)}},[l]);const x=y.useRef(null),k=i=>i.button===2&&i.shiftKey&&i.target instanceof HTMLCanvasElement,g=i=>{if(!k(i)){x.current=null;return}i.preventDefault(),i.stopPropagation(),x.current={id:i.pointerId,x:i.clientX,y:i.clientY},i.isTrusted&&i.target.setPointerCapture(i.pointerId)},h=()=>{x.current=null},F=i=>{const b=x.current;if(b===null||i.pointerId!==b.id||i.button!==2||(x.current=null,i.preventDefault(),i.stopPropagation(),Math.hypot(i.clientX-b.x,i.clientY-b.y)>3))return;const m=v.placeCursor(i.clientX,i.clientY,i.target);if(m===null)return;const[o,c,j]=m.location,[A,C,L,I]=m.rotation;Z(`from mathutils import Matrix, Quaternion, Vector
12
+ bpy.context.scene.cursor.matrix = Matrix.LocRotScale(Vector((${o}, ${c}, ${j})), Quaternion((${A}, ${C}, ${L}, ${I})), None)`,!1,"Set 3D Cursor").then(P=>{P.error!==null&&$().console.error(`Blender refused the 3D cursor: ${P.error}`,"blender-cursor")},P=>$().console.error(`The 3D cursor was not written to Blender: ${String(P)}`,"blender-cursor"))},R=i=>{k(i)&&i.preventDefault()};if(!l)return null;const N=d.Object3DAuthoring;return u.jsxs("div",{style:O?{position:"absolute",inset:-12,display:"flex",gap:2}:{display:"contents"},children:[u.jsx("div",{style:O?{position:"relative",flex:"1 1 0",minWidth:0,margin:12}:{display:"contents"},onPointerDownCapture:g,onPointerUpCapture:F,onPointerCancelCapture:h,onLostPointerCaptureCapture:h,onContextMenuCapture:R,children:u.jsx(N,{active:t??!0,documentId:l,sourcePath:_??"blender:runtime",displayName:a?.label??"Model",...p===null?{}:{subject:p},gridScale:dt,cameraView:ut,build:S,audit:!1,authoring:qe,cameraDirection:[.8187,.4458,.3617],openingFit:3,openingView:v.savedView(),presentation:(()=>{const i=v.savedView();return i?{camera:{fov:je(i.lens)}}:null})(),stageKind:st,dressing:{environment:!1,keyLight:!1,viewLocked:v.studioLights()}})}),O&&u.jsx(it,{})]})}export{Wt as Toolbar,zt as default,st as documentKind,Ut as inspectorBuiltins,Ht as inspectorRail,Vt as point,Gt as title};