@fps-games/editor-deployment 0.2.3-beta.3 → 0.2.3-beta.5

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 (1035) hide show
  1. package/bin/fps-editor-prepare.mjs +3 -4
  2. package/bin/fps-editor-project.mjs +18 -0
  3. package/bin/fps-editor-server.mjs +1 -1
  4. package/licenses/THIRD_PARTY_NOTICES.txt +2 -2
  5. package/manifest.json +1440 -1449
  6. package/npm-shrinkwrap.json +4 -3
  7. package/package.json +8 -4
  8. package/public/assets/abstractAudioBus-zin9aBGb.js +1 -0
  9. package/public/assets/animation-BJ8XM1EP.js +1 -0
  10. package/public/assets/animation-BJ8XM1EP.js.br +0 -0
  11. package/public/assets/animation-BJ8XM1EP.js.gz +0 -0
  12. package/public/assets/animationGroup-nIU37qTl.js +1 -0
  13. package/public/assets/animationGroup-nIU37qTl.js.br +0 -0
  14. package/public/assets/animationGroup-nIU37qTl.js.gz +0 -0
  15. package/public/assets/arcRotateCamera-Bpb6_-jM.js +1 -0
  16. package/public/assets/arcRotateCamera-Bpb6_-jM.js.br +0 -0
  17. package/public/assets/arcRotateCamera-Bpb6_-jM.js.gz +0 -0
  18. package/public/assets/babylon-core-B6Ot-GOK.js +1 -0
  19. package/public/assets/babylon-core-B6Ot-GOK.js.br +0 -0
  20. package/public/assets/babylon-core-B6Ot-GOK.js.gz +0 -0
  21. package/public/assets/babylon-core-DBdQTkWG.js +13882 -0
  22. package/public/assets/babylon-core-DBdQTkWG.js.br +0 -0
  23. package/public/assets/babylon-core-DBdQTkWG.js.gz +0 -0
  24. package/public/assets/basisTextureLoader-xaH1TU2T.js +1 -0
  25. package/public/assets/basisTextureLoader-xaH1TU2T.js.br +0 -0
  26. package/public/assets/basisTextureLoader-xaH1TU2T.js.gz +0 -0
  27. package/public/assets/bumpVertex-CydMViY3.js +173 -0
  28. package/public/assets/bumpVertex-CydMViY3.js.br +0 -0
  29. package/public/assets/bumpVertex-CydMViY3.js.gz +0 -0
  30. package/public/assets/bumpVertex-bM0VcD-v.js +177 -0
  31. package/public/assets/bumpVertex-bM0VcD-v.js.br +0 -0
  32. package/public/assets/bumpVertex-bM0VcD-v.js.gz +0 -0
  33. package/public/assets/chromaticAberration.fragment-2LQpSY6n.js +6 -0
  34. package/public/assets/chromaticAberration.fragment-2LQpSY6n.js.br +0 -0
  35. package/public/assets/chromaticAberration.fragment-2LQpSY6n.js.gz +0 -0
  36. package/public/assets/chromaticAberration.fragment-CPC2jGBk.js +7 -0
  37. package/public/assets/chromaticAberration.fragment-CPC2jGBk.js.br +0 -0
  38. package/public/assets/chromaticAberration.fragment-CPC2jGBk.js.gz +0 -0
  39. package/public/assets/circleOfConfusion.fragment-DWehhKOk.js +17 -0
  40. package/public/assets/circleOfConfusion.fragment-DWehhKOk.js.br +0 -0
  41. package/public/assets/circleOfConfusion.fragment-DWehhKOk.js.gz +0 -0
  42. package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js +17 -0
  43. package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js.br +0 -0
  44. package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js.gz +0 -0
  45. package/public/assets/clipPlaneFragment-BQiHvjzo.js +46 -0
  46. package/public/assets/clipPlaneFragment-BQiHvjzo.js.br +0 -0
  47. package/public/assets/clipPlaneFragment-BQiHvjzo.js.gz +0 -0
  48. package/public/assets/clipPlaneVertex-D5EB-X5S.js +177 -0
  49. package/public/assets/clipPlaneVertex-D5EB-X5S.js.br +0 -0
  50. package/public/assets/clipPlaneVertex-D5EB-X5S.js.gz +0 -0
  51. package/public/assets/color.fragment-0xZe_dSa.js +20 -0
  52. package/public/assets/color.fragment-0xZe_dSa.js.br +0 -0
  53. package/public/assets/color.fragment-0xZe_dSa.js.gz +0 -0
  54. package/public/assets/color.fragment-BQNpLnxa.js +21 -0
  55. package/public/assets/color.fragment-BQNpLnxa.js.br +0 -0
  56. package/public/assets/color.fragment-BQNpLnxa.js.gz +0 -0
  57. package/public/assets/color.vertex-0geH1BI8.js +32 -0
  58. package/public/assets/color.vertex-0geH1BI8.js.br +0 -0
  59. package/public/assets/color.vertex-0geH1BI8.js.gz +0 -0
  60. package/public/assets/color.vertex-qtb2-mc5.js +39 -0
  61. package/public/assets/color.vertex-qtb2-mc5.js.br +0 -0
  62. package/public/assets/color.vertex-qtb2-mc5.js.gz +0 -0
  63. package/public/assets/dds-IzbrFkh8.js +1 -0
  64. package/public/assets/dds-IzbrFkh8.js.br +0 -0
  65. package/public/assets/dds-IzbrFkh8.js.gz +0 -0
  66. package/public/assets/ddsTextureLoader-D3ROWbwv.js +1 -0
  67. package/public/assets/ddsTextureLoader-D3ROWbwv.js.br +5 -0
  68. package/public/assets/ddsTextureLoader-D3ROWbwv.js.gz +0 -0
  69. package/public/assets/default.fragment-BAHNlmD5.js +526 -0
  70. package/public/assets/default.fragment-BAHNlmD5.js.br +0 -0
  71. package/public/assets/default.fragment-BAHNlmD5.js.gz +0 -0
  72. package/public/assets/default.fragment-D3MA9CRV.js +468 -0
  73. package/public/assets/default.fragment-D3MA9CRV.js.br +0 -0
  74. package/public/assets/default.fragment-D3MA9CRV.js.gz +0 -0
  75. package/public/assets/default.vertex-B1KwtIUb.js +181 -0
  76. package/public/assets/default.vertex-B1KwtIUb.js.br +0 -0
  77. package/public/assets/default.vertex-B1KwtIUb.js.gz +0 -0
  78. package/public/assets/default.vertex-Mne8Sq_G.js +193 -0
  79. package/public/assets/default.vertex-Mne8Sq_G.js.br +0 -0
  80. package/public/assets/default.vertex-Mne8Sq_G.js.gz +0 -0
  81. package/public/assets/defaultUboDeclaration-00t3po2f.js +7 -0
  82. package/public/assets/defaultUboDeclaration-00t3po2f.js.br +0 -0
  83. package/public/assets/defaultUboDeclaration-00t3po2f.js.gz +0 -0
  84. package/public/assets/defaultUboDeclaration-DAuovVEA.js +5 -0
  85. package/public/assets/defaultUboDeclaration-DAuovVEA.js.br +0 -0
  86. package/public/assets/defaultUboDeclaration-DAuovVEA.js.gz +0 -0
  87. package/public/assets/depth.fragment-Da86gbwP.js +40 -0
  88. package/public/assets/depth.fragment-Da86gbwP.js.br +0 -0
  89. package/public/assets/depth.fragment-Da86gbwP.js.gz +0 -0
  90. package/public/assets/depth.vertex-DPT_V_9f.js +57 -0
  91. package/public/assets/depth.vertex-DPT_V_9f.js.br +0 -0
  92. package/public/assets/depth.vertex-DPT_V_9f.js.gz +0 -0
  93. package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js +6 -0
  94. package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js.br +0 -0
  95. package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js.gz +0 -0
  96. package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js +5 -0
  97. package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js.br +0 -0
  98. package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js.gz +0 -0
  99. package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js +21 -0
  100. package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js.br +0 -0
  101. package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js.gz +0 -0
  102. package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js +26 -0
  103. package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js.br +0 -0
  104. package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js.gz +0 -0
  105. package/public/assets/easing-BdugUZqW.js +1 -0
  106. package/public/assets/easing-BdugUZqW.js.br +0 -0
  107. package/public/assets/easing-BdugUZqW.js.gz +0 -0
  108. package/public/assets/exrTextureLoader-DYq9r93V.js +1 -0
  109. package/public/assets/exrTextureLoader-DYq9r93V.js.br +0 -0
  110. package/public/assets/exrTextureLoader-DYq9r93V.js.gz +0 -0
  111. package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js +1 -0
  112. package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js.br +0 -0
  113. package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js.gz +0 -0
  114. package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js +1 -0
  115. package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js.br +0 -0
  116. package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js.gz +0 -0
  117. package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js +1 -0
  118. package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js.br +3 -0
  119. package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js.gz +0 -0
  120. package/public/assets/flowGraphBranchBlock-Bup839Qd.js +1 -0
  121. package/public/assets/flowGraphBranchBlock-Bup839Qd.js.br +0 -0
  122. package/public/assets/flowGraphBranchBlock-Bup839Qd.js.gz +0 -0
  123. package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js +1 -0
  124. package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js.br +0 -0
  125. package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js.gz +0 -0
  126. package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js +1 -0
  127. package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js.br +0 -0
  128. package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js.gz +0 -0
  129. package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js +1 -0
  130. package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js.br +0 -0
  131. package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js.gz +0 -0
  132. package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js +1 -0
  133. package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js.br +0 -0
  134. package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js.gz +0 -0
  135. package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js +1 -0
  136. package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js.br +0 -0
  137. package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js.gz +0 -0
  138. package/public/assets/flowGraphConstantBlock-FOfDeLIf.js +1 -0
  139. package/public/assets/flowGraphConstantBlock-FOfDeLIf.js.br +0 -0
  140. package/public/assets/flowGraphConstantBlock-FOfDeLIf.js.gz +0 -0
  141. package/public/assets/flowGraphContextBlock-BP5dmyKZ.js +1 -0
  142. package/public/assets/flowGraphContextBlock-BP5dmyKZ.js.br +0 -0
  143. package/public/assets/flowGraphContextBlock-BP5dmyKZ.js.gz +0 -0
  144. package/public/assets/flowGraphCounterBlock-DjKMvUGB.js +1 -0
  145. package/public/assets/flowGraphCounterBlock-DjKMvUGB.js.br +0 -0
  146. package/public/assets/flowGraphCounterBlock-DjKMvUGB.js.gz +0 -0
  147. package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js +1 -0
  148. package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js.br +0 -0
  149. package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js.gz +0 -0
  150. package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js +1 -0
  151. package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js.br +0 -0
  152. package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js.gz +0 -0
  153. package/public/assets/flowGraphDoNBlock-Bf26kum1.js +1 -0
  154. package/public/assets/flowGraphDoNBlock-Bf26kum1.js.br +0 -0
  155. package/public/assets/flowGraphDoNBlock-Bf26kum1.js.gz +0 -0
  156. package/public/assets/flowGraphEasingBlock-DtnL-aP_.js +1 -0
  157. package/public/assets/flowGraphEasingBlock-DtnL-aP_.js.br +0 -0
  158. package/public/assets/flowGraphEasingBlock-DtnL-aP_.js.gz +0 -0
  159. package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js +1 -0
  160. package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js.br +0 -0
  161. package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js.gz +0 -0
  162. package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js +1 -0
  163. package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js.br +0 -0
  164. package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js.gz +0 -0
  165. package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js +1 -0
  166. package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js.br +0 -0
  167. package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js.gz +0 -0
  168. package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js +1 -0
  169. package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js.br +0 -0
  170. package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js.gz +0 -0
  171. package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js +1 -0
  172. package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js.br +0 -0
  173. package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js.gz +0 -0
  174. package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js +1 -0
  175. package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js.br +0 -0
  176. package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js.gz +0 -0
  177. package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js +1 -0
  178. package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js.br +0 -0
  179. package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js.gz +0 -0
  180. package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js +1 -0
  181. package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js.br +0 -0
  182. package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js.gz +0 -0
  183. package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js +1 -0
  184. package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js.br +0 -0
  185. package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js.gz +0 -0
  186. package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js +1 -0
  187. package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js.br +0 -0
  188. package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js.gz +0 -0
  189. package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js +1 -0
  190. package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js.br +0 -0
  191. package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js.gz +0 -0
  192. package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js +1 -0
  193. package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js.br +0 -0
  194. package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js.gz +0 -0
  195. package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js +1 -0
  196. package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js.br +0 -0
  197. package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js.gz +0 -0
  198. package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js +1 -0
  199. package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js.br +0 -0
  200. package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js.gz +0 -0
  201. package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js +1 -0
  202. package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js.br +0 -0
  203. package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js.gz +0 -0
  204. package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js +1 -0
  205. package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js.br +0 -0
  206. package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js.gz +0 -0
  207. package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js +1 -0
  208. package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js.br +0 -0
  209. package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js.gz +0 -0
  210. package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js +1 -0
  211. package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js.br +0 -0
  212. package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js.gz +0 -0
  213. package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js +1 -0
  214. package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js.br +0 -0
  215. package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js.gz +0 -0
  216. package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js +1 -0
  217. package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js.br +0 -0
  218. package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js.gz +0 -0
  219. package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js +1 -0
  220. package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js.br +0 -0
  221. package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js.gz +0 -0
  222. package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js +1 -0
  223. package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js.br +0 -0
  224. package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js.gz +0 -0
  225. package/public/assets/flowGraphSequenceBlock-DocFLI4M.js +1 -0
  226. package/public/assets/flowGraphSequenceBlock-DocFLI4M.js.br +0 -0
  227. package/public/assets/flowGraphSequenceBlock-DocFLI4M.js.gz +0 -0
  228. package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js +1 -0
  229. package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js.br +0 -0
  230. package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js.gz +0 -0
  231. package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js +1 -0
  232. package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js.br +0 -0
  233. package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js.gz +0 -0
  234. package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js +1 -0
  235. package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js.br +0 -0
  236. package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js.gz +0 -0
  237. package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js +1 -0
  238. package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js.br +0 -0
  239. package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js.gz +0 -0
  240. package/public/assets/flowGraphSwitchBlock-DG5ReWET.js +1 -0
  241. package/public/assets/flowGraphSwitchBlock-DG5ReWET.js.br +0 -0
  242. package/public/assets/flowGraphSwitchBlock-DG5ReWET.js.gz +0 -0
  243. package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js +1 -0
  244. package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js.br +0 -0
  245. package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js.gz +0 -0
  246. package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js +1 -0
  247. package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js.br +0 -0
  248. package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js.gz +0 -0
  249. package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js +1 -0
  250. package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js.br +0 -0
  251. package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js.gz +0 -0
  252. package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js +1 -0
  253. package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js.br +0 -0
  254. package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js.gz +0 -0
  255. package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js +1 -0
  256. package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js.br +0 -0
  257. package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js.gz +0 -0
  258. package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js +1 -0
  259. package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js.br +0 -0
  260. package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js.gz +0 -0
  261. package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js +1 -0
  262. package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js.br +0 -0
  263. package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js.gz +0 -0
  264. package/public/assets/fogFragmentDeclaration-C-9jZMBi.js +22 -0
  265. package/public/assets/fogFragmentDeclaration-C-9jZMBi.js.br +0 -0
  266. package/public/assets/fogFragmentDeclaration-C-9jZMBi.js.gz +0 -0
  267. package/public/assets/fogFragmentDeclaration-CpAbKvc3.js +23 -0
  268. package/public/assets/fogFragmentDeclaration-CpAbKvc3.js.br +0 -0
  269. package/public/assets/fogFragmentDeclaration-CpAbKvc3.js.gz +0 -0
  270. package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js +7 -0
  271. package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js.br +0 -0
  272. package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js.gz +0 -0
  273. package/public/assets/glowBlurPostProcess.fragment-C7miknry.js +7 -0
  274. package/public/assets/glowBlurPostProcess.fragment-C7miknry.js.br +2 -0
  275. package/public/assets/glowBlurPostProcess.fragment-C7miknry.js.gz +0 -0
  276. package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js +63 -0
  277. package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js.br +0 -0
  278. package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js.gz +0 -0
  279. package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js +63 -0
  280. package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js.br +0 -0
  281. package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js.gz +0 -0
  282. package/public/assets/glowMapGeneration.vertex-BThT8Jce.js +75 -0
  283. package/public/assets/glowMapGeneration.vertex-BThT8Jce.js.br +0 -0
  284. package/public/assets/glowMapGeneration.vertex-BThT8Jce.js.gz +0 -0
  285. package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js +75 -0
  286. package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js.br +0 -0
  287. package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js.gz +0 -0
  288. package/public/assets/glowMapMerge.fragment-BtMIQDli.js +25 -0
  289. package/public/assets/glowMapMerge.fragment-BtMIQDli.js.br +0 -0
  290. package/public/assets/glowMapMerge.fragment-BtMIQDli.js.gz +0 -0
  291. package/public/assets/glowMapMerge.fragment-CYj1SIfc.js +23 -0
  292. package/public/assets/glowMapMerge.fragment-CYj1SIfc.js.br +0 -0
  293. package/public/assets/glowMapMerge.fragment-CYj1SIfc.js.gz +0 -0
  294. package/public/assets/glowMapMerge.vertex-BilMgMCX.js +8 -0
  295. package/public/assets/glowMapMerge.vertex-BilMgMCX.js.br +0 -0
  296. package/public/assets/glowMapMerge.vertex-BilMgMCX.js.gz +0 -0
  297. package/public/assets/glowMapMerge.vertex-ChJNqQPz.js +7 -0
  298. package/public/assets/glowMapMerge.vertex-ChJNqQPz.js.br +0 -0
  299. package/public/assets/glowMapMerge.vertex-ChJNqQPz.js.gz +0 -0
  300. package/public/assets/grain.fragment-D6WdAOpZ.js +6 -0
  301. package/public/assets/grain.fragment-D6WdAOpZ.js.br +0 -0
  302. package/public/assets/grain.fragment-D6WdAOpZ.js.gz +0 -0
  303. package/public/assets/grain.fragment-DCpxKIZw.js +5 -0
  304. package/public/assets/grain.fragment-DCpxKIZw.js.br +0 -0
  305. package/public/assets/grain.fragment-DCpxKIZw.js.gz +0 -0
  306. package/public/assets/harmonicsFunctions-B5nauyTb.js +189 -0
  307. package/public/assets/harmonicsFunctions-B5nauyTb.js.br +0 -0
  308. package/public/assets/harmonicsFunctions-B5nauyTb.js.gz +0 -0
  309. package/public/assets/harmonicsFunctions-DVIRrUZs.js +192 -0
  310. package/public/assets/harmonicsFunctions-DVIRrUZs.js.br +0 -0
  311. package/public/assets/harmonicsFunctions-DVIRrUZs.js.gz +0 -0
  312. package/public/assets/hdrTextureLoader-Dfs_Fv5B.js +2 -0
  313. package/public/assets/hdrTextureLoader-Dfs_Fv5B.js.br +0 -0
  314. package/public/assets/hdrTextureLoader-Dfs_Fv5B.js.gz +0 -0
  315. package/public/assets/hemisphericLight-BkYyeXbK.js +1329 -0
  316. package/public/assets/hemisphericLight-BkYyeXbK.js.br +0 -0
  317. package/public/assets/hemisphericLight-BkYyeXbK.js.gz +0 -0
  318. package/public/assets/iesTextureLoader-I2E-BXCc.js +2 -0
  319. package/public/assets/iesTextureLoader-I2E-BXCc.js.br +0 -0
  320. package/public/assets/iesTextureLoader-I2E-BXCc.js.gz +0 -0
  321. package/public/assets/index-CzHwtW4R.js +4 -0
  322. package/public/assets/index-CzHwtW4R.js.br +0 -0
  323. package/public/assets/index-CzHwtW4R.js.gz +0 -0
  324. package/public/assets/index-ZnhNI5EO.js +1 -0
  325. package/public/assets/index-ZnhNI5EO.js.br +0 -0
  326. package/public/assets/index-ZnhNI5EO.js.gz +0 -0
  327. package/public/assets/instancesDeclaration-DcwHJpHY.js +23 -0
  328. package/public/assets/instancesDeclaration-DcwHJpHY.js.br +2 -0
  329. package/public/assets/instancesDeclaration-DcwHJpHY.js.gz +0 -0
  330. package/public/assets/ktxTextureLoader-zpgT--10.js +1 -0
  331. package/public/assets/ktxTextureLoader-zpgT--10.js.br +0 -0
  332. package/public/assets/ktxTextureLoader-zpgT--10.js.gz +0 -0
  333. package/public/assets/lazy-CI-V5lCV.js +2 -0
  334. package/public/assets/lazy-CI-V5lCV.js.br +0 -0
  335. package/public/assets/lazy-CI-V5lCV.js.gz +0 -0
  336. package/public/assets/lod.fragment-B28SQFUx.js +3 -0
  337. package/public/assets/lod.fragment-B28SQFUx.js.br +0 -0
  338. package/public/assets/lod.fragment-B28SQFUx.js.gz +0 -0
  339. package/public/assets/lod.fragment-DOjU_E37.js +3 -0
  340. package/public/assets/lod.fragment-DOjU_E37.js.br +2 -0
  341. package/public/assets/lod.fragment-DOjU_E37.js.gz +0 -0
  342. package/public/assets/lodCube.fragment-B_ALsGmh.js +22 -0
  343. package/public/assets/lodCube.fragment-B_ALsGmh.js.br +0 -0
  344. package/public/assets/lodCube.fragment-B_ALsGmh.js.gz +0 -0
  345. package/public/assets/lodCube.fragment-CzeVIOa3.js +22 -0
  346. package/public/assets/lodCube.fragment-CzeVIOa3.js.br +0 -0
  347. package/public/assets/lodCube.fragment-CzeVIOa3.js.gz +0 -0
  348. package/public/assets/logDepthDeclaration-C8UZWL7A.js +4 -0
  349. package/public/assets/logDepthDeclaration-DSZN0VWa.js +4 -0
  350. package/public/assets/logDepthFragment-BaJ2YjZ0.js +4 -0
  351. package/public/assets/logDepthFragment-BaJ2YjZ0.js.br +0 -0
  352. package/public/assets/logDepthFragment-BaJ2YjZ0.js.gz +0 -0
  353. package/public/assets/logDepthFragment-CpZV3R_E.js +4 -0
  354. package/public/assets/logDepthVertex-B8jNoEwN.js +4 -0
  355. package/public/assets/logDepthVertex-B8jNoEwN.js.br +0 -0
  356. package/public/assets/logDepthVertex-B8jNoEwN.js.gz +0 -0
  357. package/public/assets/logDepthVertex-xgQTn7wg.js +4 -0
  358. package/public/assets/logDepthVertex-xgQTn7wg.js.br +0 -0
  359. package/public/assets/logDepthVertex-xgQTn7wg.js.gz +0 -0
  360. package/public/assets/mainUVVaryingDeclaration-CTzt4kpd.js +4 -0
  361. package/public/assets/mainUVVaryingDeclaration-DPCXXS4Y.js +4 -0
  362. package/public/assets/meshUboDeclaration-C5p-TivH.js +13 -0
  363. package/public/assets/meshUboDeclaration-C5p-TivH.js.br +0 -0
  364. package/public/assets/meshUboDeclaration-C5p-TivH.js.gz +0 -0
  365. package/public/assets/meshUboDeclaration-DKldQKni.js +13 -0
  366. package/public/assets/meshUboDeclaration-DKldQKni.js.br +0 -0
  367. package/public/assets/meshUboDeclaration-DKldQKni.js.gz +0 -0
  368. package/public/assets/morphTargetsVertex-BDbfSote.js +100 -0
  369. package/public/assets/morphTargetsVertex-BDbfSote.js.br +0 -0
  370. package/public/assets/morphTargetsVertex-BDbfSote.js.gz +0 -0
  371. package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js +3 -0
  372. package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js.br +0 -0
  373. package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js.gz +0 -0
  374. package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js +2 -0
  375. package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js.br +0 -0
  376. package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js.gz +0 -0
  377. package/public/assets/oitFragment-B8hFhX-8.js +1077 -0
  378. package/public/assets/oitFragment-B8hFhX-8.js.br +0 -0
  379. package/public/assets/oitFragment-B8hFhX-8.js.gz +0 -0
  380. package/public/assets/oitFragment-B_HlWcYZ.js +1202 -0
  381. package/public/assets/oitFragment-B_HlWcYZ.js.br +0 -0
  382. package/public/assets/oitFragment-B_HlWcYZ.js.gz +0 -0
  383. package/public/assets/openpbrMaterial-t_lYoXh4.js +2 -0
  384. package/public/assets/openpbrMaterial-t_lYoXh4.js.br +0 -0
  385. package/public/assets/openpbrMaterial-t_lYoXh4.js.gz +0 -0
  386. package/public/assets/outline.fragment-DEsg98mo.js +21 -0
  387. package/public/assets/outline.fragment-DEsg98mo.js.br +0 -0
  388. package/public/assets/outline.fragment-DEsg98mo.js.gz +0 -0
  389. package/public/assets/outline.fragment-WqsugjI-.js +18 -0
  390. package/public/assets/outline.fragment-WqsugjI-.js.br +3 -0
  391. package/public/assets/outline.fragment-WqsugjI-.js.gz +0 -0
  392. package/public/assets/outline.vertex-CVL3AfNh.js +47 -0
  393. package/public/assets/outline.vertex-CVL3AfNh.js.br +0 -0
  394. package/public/assets/outline.vertex-CVL3AfNh.js.gz +0 -0
  395. package/public/assets/outline.vertex-CtQ-HC3X.js +47 -0
  396. package/public/assets/outline.vertex-CtQ-HC3X.js.br +0 -0
  397. package/public/assets/outline.vertex-CtQ-HC3X.js.gz +0 -0
  398. package/public/assets/passCube.fragment-CHI4OPgd.js +23 -0
  399. package/public/assets/passCube.fragment-CHI4OPgd.js.br +0 -0
  400. package/public/assets/passCube.fragment-CHI4OPgd.js.gz +0 -0
  401. package/public/assets/passCube.fragment-DLbzh6pI.js +23 -0
  402. package/public/assets/passCube.fragment-DLbzh6pI.js.br +0 -0
  403. package/public/assets/passCube.fragment-DLbzh6pI.js.gz +0 -0
  404. package/public/assets/pbr.fragment-DHPEcGrm.js +3327 -0
  405. package/public/assets/pbr.fragment-DHPEcGrm.js.br +0 -0
  406. package/public/assets/pbr.fragment-DHPEcGrm.js.gz +0 -0
  407. package/public/assets/pbr.fragment-KiX_RvyZ.js +3277 -0
  408. package/public/assets/pbr.fragment-KiX_RvyZ.js.br +0 -0
  409. package/public/assets/pbr.fragment-KiX_RvyZ.js.gz +0 -0
  410. package/public/assets/pbr.vertex-CVSRg4tx.js +357 -0
  411. package/public/assets/pbr.vertex-CVSRg4tx.js.br +0 -0
  412. package/public/assets/pbr.vertex-CVSRg4tx.js.gz +0 -0
  413. package/public/assets/pbr.vertex-Dp30Rtkl.js +227 -0
  414. package/public/assets/pbr.vertex-Dp30Rtkl.js.br +0 -0
  415. package/public/assets/pbr.vertex-Dp30Rtkl.js.gz +0 -0
  416. package/public/assets/playable-sdk-D6RL-8B7.js +135 -0
  417. package/public/assets/playable-sdk-D6RL-8B7.js.br +0 -0
  418. package/public/assets/playable-sdk-D6RL-8B7.js.gz +0 -0
  419. package/public/assets/playable-standard-project-CkKWpnr-.js +4943 -0
  420. package/public/assets/playable-standard-project-CkKWpnr-.js.br +0 -0
  421. package/public/assets/playable-standard-project-CkKWpnr-.js.gz +0 -0
  422. package/public/assets/rgbdDecode.fragment-CU4ChTYE.js +5 -0
  423. package/public/assets/rgbdDecode.fragment-CU4ChTYE.js.br +0 -0
  424. package/public/assets/rgbdDecode.fragment-CU4ChTYE.js.gz +0 -0
  425. package/public/assets/rgbdDecode.fragment-DhrCd3U4.js +5 -0
  426. package/public/assets/rgbdDecode.fragment-DhrCd3U4.js.br +3 -0
  427. package/public/assets/rgbdDecode.fragment-DhrCd3U4.js.gz +0 -0
  428. package/public/assets/rgbdEncode.fragment-Bt1zaovT.js +5 -0
  429. package/public/assets/rgbdEncode.fragment-Bt1zaovT.js.br +0 -0
  430. package/public/assets/rgbdEncode.fragment-Bt1zaovT.js.gz +0 -0
  431. package/public/assets/rgbdEncode.fragment-CfKDkRU3.js +5 -0
  432. package/public/assets/rgbdEncode.fragment-CfKDkRU3.js.br +0 -0
  433. package/public/assets/rgbdEncode.fragment-CfKDkRU3.js.gz +0 -0
  434. package/public/assets/sceneLoader-DS5g2vTC.js +1 -0
  435. package/public/assets/sceneLoader-DS5g2vTC.js.br +0 -0
  436. package/public/assets/sceneLoader-DS5g2vTC.js.gz +0 -0
  437. package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js +15 -0
  438. package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js.br +0 -0
  439. package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js.gz +0 -0
  440. package/public/assets/selection.fragment-CRMhdE35.js +35 -0
  441. package/public/assets/selection.fragment-CRMhdE35.js.br +0 -0
  442. package/public/assets/selection.fragment-CRMhdE35.js.gz +0 -0
  443. package/public/assets/selection.fragment-cSqXB6nx.js +35 -0
  444. package/public/assets/selection.fragment-cSqXB6nx.js.br +0 -0
  445. package/public/assets/selection.fragment-cSqXB6nx.js.gz +0 -0
  446. package/public/assets/selection.vertex-B5sPJWi2.js +74 -0
  447. package/public/assets/selection.vertex-B5sPJWi2.js.br +0 -0
  448. package/public/assets/selection.vertex-B5sPJWi2.js.gz +0 -0
  449. package/public/assets/selection.vertex-Dp4qd1GF.js +73 -0
  450. package/public/assets/selection.vertex-Dp4qd1GF.js.br +0 -0
  451. package/public/assets/selection.vertex-Dp4qd1GF.js.gz +0 -0
  452. package/public/assets/selectionOutline.fragment-CaYdhbIY.js +47 -0
  453. package/public/assets/selectionOutline.fragment-CaYdhbIY.js.br +0 -0
  454. package/public/assets/selectionOutline.fragment-CaYdhbIY.js.gz +0 -0
  455. package/public/assets/selectionOutline.fragment-RBpUe89m.js +48 -0
  456. package/public/assets/selectionOutline.fragment-RBpUe89m.js.br +0 -0
  457. package/public/assets/selectionOutline.fragment-RBpUe89m.js.gz +0 -0
  458. package/public/assets/shadowMap.fragment-BecpzSny.js +78 -0
  459. package/public/assets/shadowMap.fragment-BecpzSny.js.br +0 -0
  460. package/public/assets/shadowMap.fragment-BecpzSny.js.gz +0 -0
  461. package/public/assets/shadowMap.fragment-BhrOFpmK.js +79 -0
  462. package/public/assets/shadowMap.fragment-BhrOFpmK.js.br +0 -0
  463. package/public/assets/shadowMap.fragment-BhrOFpmK.js.gz +0 -0
  464. package/public/assets/shadowMap.vertex-DV4Ec23Y.js +119 -0
  465. package/public/assets/shadowMap.vertex-DV4Ec23Y.js.br +0 -0
  466. package/public/assets/shadowMap.vertex-DV4Ec23Y.js.gz +0 -0
  467. package/public/assets/shadowMap.vertex-Dpx2-6XS.js +109 -0
  468. package/public/assets/shadowMap.vertex-Dpx2-6XS.js.br +0 -0
  469. package/public/assets/shadowMap.vertex-Dpx2-6XS.js.gz +0 -0
  470. package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js +4 -0
  471. package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js.br +2 -0
  472. package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js.gz +0 -0
  473. package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js +4 -0
  474. package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js.br +0 -0
  475. package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js.gz +0 -0
  476. package/public/assets/sharpen.fragment-CPdQPlDe.js +8 -0
  477. package/public/assets/sharpen.fragment-CPdQPlDe.js.br +0 -0
  478. package/public/assets/sharpen.fragment-CPdQPlDe.js.gz +0 -0
  479. package/public/assets/textureMerger.fragment-BNxx2w1v.js +76 -0
  480. package/public/assets/textureMerger.fragment-BNxx2w1v.js.br +0 -0
  481. package/public/assets/textureMerger.fragment-BNxx2w1v.js.gz +0 -0
  482. package/public/assets/textureMerger.fragment-CPq4n9w5.js +84 -0
  483. package/public/assets/textureMerger.fragment-CPq4n9w5.js.br +0 -0
  484. package/public/assets/textureMerger.fragment-CPq4n9w5.js.gz +0 -0
  485. package/public/assets/tgaTextureLoader-B7dlONGx.js +1 -0
  486. package/public/assets/tgaTextureLoader-B7dlONGx.js.br +0 -0
  487. package/public/assets/tgaTextureLoader-B7dlONGx.js.gz +0 -0
  488. package/public/assets/vertexColorMixing-BUQkJeP0.js +24 -0
  489. package/public/assets/vertexColorMixing-BUQkJeP0.js.br +2 -0
  490. package/public/assets/vertexColorMixing-BUQkJeP0.js.gz +0 -0
  491. package/public/assets/vertexColorMixing-Co5x3WYA.js +20 -0
  492. package/public/assets/vertexColorMixing-Co5x3WYA.js.br +0 -0
  493. package/public/assets/vertexColorMixing-Co5x3WYA.js.gz +0 -0
  494. package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js +11 -0
  495. package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js.br +1 -0
  496. package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js.gz +0 -0
  497. package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js +12 -0
  498. package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js.br +0 -0
  499. package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js.gz +0 -0
  500. package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js +13 -0
  501. package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js.br +0 -0
  502. package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js.gz +0 -0
  503. package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js +15 -0
  504. package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js.br +0 -0
  505. package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js.gz +0 -0
  506. package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js +5 -0
  507. package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js.br +2 -0
  508. package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js.gz +0 -0
  509. package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js +4 -0
  510. package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js.br +0 -0
  511. package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js.gz +0 -0
  512. package/public/assets/webAudioBus-DYpSKoOA.js +1 -0
  513. package/public/assets/webAudioBus-DYpSKoOA.js.br +0 -0
  514. package/public/assets/webAudioBus-DYpSKoOA.js.gz +0 -0
  515. package/public/assets/webAudioMainBus-CP3f56US.js +1 -0
  516. package/public/assets/webAudioMainBus-CP3f56US.js.br +0 -0
  517. package/public/assets/webAudioMainBus-CP3f56US.js.gz +0 -0
  518. package/public/index.html +5 -3
  519. package/public/index.html.br +0 -0
  520. package/public/index.html.gz +0 -0
  521. package/runtime/editor-control-plane.mjs +5 -5
  522. package/worker/editor-service-worker.mjs +28 -1
  523. package/public/assets/abstractAudioBus-DKeLA-55.js +0 -1
  524. package/public/assets/animation-DY4Gs-Pw.js +0 -1
  525. package/public/assets/animation-DY4Gs-Pw.js.br +0 -0
  526. package/public/assets/animation-DY4Gs-Pw.js.gz +0 -0
  527. package/public/assets/animationGroup-BN6ExD_I.js +0 -1
  528. package/public/assets/animationGroup-BN6ExD_I.js.br +0 -0
  529. package/public/assets/animationGroup-BN6ExD_I.js.gz +0 -0
  530. package/public/assets/arcRotateCamera-BrOEThh0.js +0 -1
  531. package/public/assets/arcRotateCamera-BrOEThh0.js.br +0 -0
  532. package/public/assets/arcRotateCamera-BrOEThh0.js.gz +0 -0
  533. package/public/assets/babylon-core-BiQ_mrkl.js +0 -1
  534. package/public/assets/babylon-core-BiQ_mrkl.js.br +0 -0
  535. package/public/assets/babylon-core-BiQ_mrkl.js.gz +0 -0
  536. package/public/assets/babylon-core-DygJEuf6.js +0 -13882
  537. package/public/assets/babylon-core-DygJEuf6.js.br +0 -0
  538. package/public/assets/babylon-core-DygJEuf6.js.gz +0 -0
  539. package/public/assets/basisTextureLoader-BWwwG7Gw.js +0 -1
  540. package/public/assets/basisTextureLoader-BWwwG7Gw.js.br +0 -0
  541. package/public/assets/basisTextureLoader-BWwwG7Gw.js.gz +0 -0
  542. package/public/assets/bumpVertex-CzYtMFbI.js +0 -177
  543. package/public/assets/bumpVertex-CzYtMFbI.js.br +0 -0
  544. package/public/assets/bumpVertex-CzYtMFbI.js.gz +0 -0
  545. package/public/assets/bumpVertex-DIMp0NiU.js +0 -173
  546. package/public/assets/bumpVertex-DIMp0NiU.js.br +0 -0
  547. package/public/assets/bumpVertex-DIMp0NiU.js.gz +0 -0
  548. package/public/assets/chromaticAberration.fragment-BJhO9WeA.js +0 -7
  549. package/public/assets/chromaticAberration.fragment-BJhO9WeA.js.br +0 -0
  550. package/public/assets/chromaticAberration.fragment-BJhO9WeA.js.gz +0 -0
  551. package/public/assets/chromaticAberration.fragment-DEAEmyJy.js +0 -6
  552. package/public/assets/chromaticAberration.fragment-DEAEmyJy.js.br +0 -0
  553. package/public/assets/chromaticAberration.fragment-DEAEmyJy.js.gz +0 -0
  554. package/public/assets/circleOfConfusion.fragment-DGnleQIE.js +0 -17
  555. package/public/assets/circleOfConfusion.fragment-DGnleQIE.js.br +0 -0
  556. package/public/assets/circleOfConfusion.fragment-DGnleQIE.js.gz +0 -0
  557. package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js +0 -17
  558. package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js.br +0 -0
  559. package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js.gz +0 -0
  560. package/public/assets/clipPlaneFragment-Da_1RMjt.js +0 -46
  561. package/public/assets/clipPlaneFragment-Da_1RMjt.js.br +0 -0
  562. package/public/assets/clipPlaneFragment-Da_1RMjt.js.gz +0 -0
  563. package/public/assets/clipPlaneVertex-B8PIfZU_.js +0 -177
  564. package/public/assets/clipPlaneVertex-B8PIfZU_.js.br +0 -0
  565. package/public/assets/clipPlaneVertex-B8PIfZU_.js.gz +0 -0
  566. package/public/assets/color.fragment-Bf62ouS6.js +0 -20
  567. package/public/assets/color.fragment-Bf62ouS6.js.br +0 -0
  568. package/public/assets/color.fragment-Bf62ouS6.js.gz +0 -0
  569. package/public/assets/color.fragment-DtJC5xR0.js +0 -21
  570. package/public/assets/color.fragment-DtJC5xR0.js.br +0 -0
  571. package/public/assets/color.fragment-DtJC5xR0.js.gz +0 -0
  572. package/public/assets/color.vertex-DYnzh3f-.js +0 -39
  573. package/public/assets/color.vertex-DYnzh3f-.js.br +0 -0
  574. package/public/assets/color.vertex-DYnzh3f-.js.gz +0 -0
  575. package/public/assets/color.vertex-foaAsgqw.js +0 -32
  576. package/public/assets/color.vertex-foaAsgqw.js.br +0 -0
  577. package/public/assets/color.vertex-foaAsgqw.js.gz +0 -0
  578. package/public/assets/dds-CbA4nCCq.js +0 -1
  579. package/public/assets/dds-CbA4nCCq.js.br +0 -0
  580. package/public/assets/dds-CbA4nCCq.js.gz +0 -0
  581. package/public/assets/ddsTextureLoader-Bwa3u-Gp.js +0 -1
  582. package/public/assets/ddsTextureLoader-Bwa3u-Gp.js.br +0 -0
  583. package/public/assets/ddsTextureLoader-Bwa3u-Gp.js.gz +0 -0
  584. package/public/assets/default.fragment-BKaVVFYF.js +0 -526
  585. package/public/assets/default.fragment-BKaVVFYF.js.br +0 -0
  586. package/public/assets/default.fragment-BKaVVFYF.js.gz +0 -0
  587. package/public/assets/default.fragment-DjNCicws.js +0 -468
  588. package/public/assets/default.fragment-DjNCicws.js.br +0 -0
  589. package/public/assets/default.fragment-DjNCicws.js.gz +0 -0
  590. package/public/assets/default.vertex-CKOvcJ54.js +0 -193
  591. package/public/assets/default.vertex-CKOvcJ54.js.br +0 -0
  592. package/public/assets/default.vertex-CKOvcJ54.js.gz +0 -0
  593. package/public/assets/default.vertex-DyPOsib0.js +0 -181
  594. package/public/assets/default.vertex-DyPOsib0.js.br +0 -0
  595. package/public/assets/default.vertex-DyPOsib0.js.gz +0 -0
  596. package/public/assets/defaultUboDeclaration-ChgZa3Dv.js +0 -5
  597. package/public/assets/defaultUboDeclaration-ChgZa3Dv.js.br +0 -0
  598. package/public/assets/defaultUboDeclaration-ChgZa3Dv.js.gz +0 -0
  599. package/public/assets/defaultUboDeclaration-Dzd2ch6X.js +0 -7
  600. package/public/assets/defaultUboDeclaration-Dzd2ch6X.js.br +0 -0
  601. package/public/assets/defaultUboDeclaration-Dzd2ch6X.js.gz +0 -0
  602. package/public/assets/depth.fragment-B9FDfPgW.js +0 -40
  603. package/public/assets/depth.fragment-B9FDfPgW.js.br +0 -2
  604. package/public/assets/depth.fragment-B9FDfPgW.js.gz +0 -0
  605. package/public/assets/depth.vertex-DXkbiW3p.js +0 -57
  606. package/public/assets/depth.vertex-DXkbiW3p.js.br +0 -0
  607. package/public/assets/depth.vertex-DXkbiW3p.js.gz +0 -0
  608. package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js +0 -6
  609. package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js.br +0 -0
  610. package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js.gz +0 -0
  611. package/public/assets/depthBoxBlur.fragment-DUm61npj.js +0 -5
  612. package/public/assets/depthBoxBlur.fragment-DUm61npj.js.br +0 -0
  613. package/public/assets/depthBoxBlur.fragment-DUm61npj.js.gz +0 -0
  614. package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js +0 -21
  615. package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js.br +0 -0
  616. package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js.gz +0 -0
  617. package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js +0 -26
  618. package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js.br +0 -0
  619. package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js.gz +0 -0
  620. package/public/assets/easing-BkcTAuOI.js +0 -1
  621. package/public/assets/easing-BkcTAuOI.js.br +0 -0
  622. package/public/assets/easing-BkcTAuOI.js.gz +0 -0
  623. package/public/assets/exrTextureLoader-DD6CMgpF.js +0 -1
  624. package/public/assets/exrTextureLoader-DD6CMgpF.js.br +0 -0
  625. package/public/assets/exrTextureLoader-DD6CMgpF.js.gz +0 -0
  626. package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js +0 -1
  627. package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js.br +0 -0
  628. package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js.gz +0 -0
  629. package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js +0 -1
  630. package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js.br +0 -0
  631. package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js.gz +0 -0
  632. package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js +0 -1
  633. package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js.br +0 -0
  634. package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js.gz +0 -0
  635. package/public/assets/flowGraphBranchBlock-BMgiYImb.js +0 -1
  636. package/public/assets/flowGraphBranchBlock-BMgiYImb.js.br +0 -0
  637. package/public/assets/flowGraphBranchBlock-BMgiYImb.js.gz +0 -0
  638. package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js +0 -1
  639. package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js.br +0 -0
  640. package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js.gz +0 -0
  641. package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js +0 -1
  642. package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js.br +0 -0
  643. package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js.gz +0 -0
  644. package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js +0 -1
  645. package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js.br +0 -0
  646. package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js.gz +0 -0
  647. package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js +0 -1
  648. package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js.br +0 -0
  649. package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js.gz +0 -0
  650. package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js +0 -1
  651. package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js.br +0 -0
  652. package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js.gz +0 -0
  653. package/public/assets/flowGraphConstantBlock-CN1Myhpi.js +0 -1
  654. package/public/assets/flowGraphConstantBlock-CN1Myhpi.js.br +0 -0
  655. package/public/assets/flowGraphConstantBlock-CN1Myhpi.js.gz +0 -0
  656. package/public/assets/flowGraphContextBlock-BbRTNgI4.js +0 -1
  657. package/public/assets/flowGraphContextBlock-BbRTNgI4.js.br +0 -0
  658. package/public/assets/flowGraphContextBlock-BbRTNgI4.js.gz +0 -0
  659. package/public/assets/flowGraphCounterBlock-DTqShVsi.js +0 -1
  660. package/public/assets/flowGraphCounterBlock-DTqShVsi.js.br +0 -0
  661. package/public/assets/flowGraphCounterBlock-DTqShVsi.js.gz +0 -0
  662. package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js +0 -1
  663. package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js.br +0 -0
  664. package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js.gz +0 -0
  665. package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js +0 -1
  666. package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js.br +0 -0
  667. package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js.gz +0 -0
  668. package/public/assets/flowGraphDoNBlock-DfiUsh6W.js +0 -1
  669. package/public/assets/flowGraphDoNBlock-DfiUsh6W.js.br +0 -0
  670. package/public/assets/flowGraphDoNBlock-DfiUsh6W.js.gz +0 -0
  671. package/public/assets/flowGraphEasingBlock-BQz5MDh1.js +0 -1
  672. package/public/assets/flowGraphEasingBlock-BQz5MDh1.js.br +0 -0
  673. package/public/assets/flowGraphEasingBlock-BQz5MDh1.js.gz +0 -0
  674. package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js +0 -1
  675. package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js.br +0 -0
  676. package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js.gz +0 -0
  677. package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js +0 -1
  678. package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js.br +0 -0
  679. package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js.gz +0 -0
  680. package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js +0 -1
  681. package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js.br +0 -0
  682. package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js.gz +0 -0
  683. package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js +0 -1
  684. package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js.br +0 -0
  685. package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js.gz +0 -0
  686. package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js +0 -1
  687. package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js.br +0 -0
  688. package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js.gz +0 -0
  689. package/public/assets/flowGraphGetVariableBlock-ByAhPias.js +0 -1
  690. package/public/assets/flowGraphGetVariableBlock-ByAhPias.js.br +0 -0
  691. package/public/assets/flowGraphGetVariableBlock-ByAhPias.js.gz +0 -0
  692. package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js +0 -1
  693. package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js.br +0 -0
  694. package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js.gz +0 -0
  695. package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js +0 -1
  696. package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js.br +0 -0
  697. package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js.gz +0 -0
  698. package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js +0 -1
  699. package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js.br +0 -0
  700. package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js.gz +0 -0
  701. package/public/assets/flowGraphMathBlocks-DyKkUJIM.js +0 -1
  702. package/public/assets/flowGraphMathBlocks-DyKkUJIM.js.br +0 -0
  703. package/public/assets/flowGraphMathBlocks-DyKkUJIM.js.gz +0 -0
  704. package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js +0 -1
  705. package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js.br +0 -0
  706. package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js.gz +0 -0
  707. package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js +0 -1
  708. package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js.br +0 -0
  709. package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js.gz +0 -0
  710. package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js +0 -1
  711. package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js.br +0 -0
  712. package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js.gz +0 -0
  713. package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js +0 -1
  714. package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js.br +0 -0
  715. package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js.gz +0 -0
  716. package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js +0 -1
  717. package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js.br +0 -0
  718. package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js.gz +0 -0
  719. package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js +0 -1
  720. package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js.br +0 -0
  721. package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js.gz +0 -0
  722. package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js +0 -1
  723. package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js.br +0 -4
  724. package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js.gz +0 -0
  725. package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js +0 -1
  726. package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js.br +0 -0
  727. package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js.gz +0 -0
  728. package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js +0 -1
  729. package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js.br +0 -0
  730. package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js.gz +0 -0
  731. package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js +0 -1
  732. package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js.br +0 -0
  733. package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js.gz +0 -0
  734. package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js +0 -1
  735. package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js.br +0 -0
  736. package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js.gz +0 -0
  737. package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js +0 -1
  738. package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js.br +0 -0
  739. package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js.gz +0 -0
  740. package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js +0 -1
  741. package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js.br +0 -0
  742. package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js.gz +0 -0
  743. package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js +0 -1
  744. package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js.br +0 -0
  745. package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js.gz +0 -0
  746. package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js +0 -1
  747. package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js.br +0 -0
  748. package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js.gz +0 -0
  749. package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js +0 -1
  750. package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js.br +0 -0
  751. package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js.gz +0 -0
  752. package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js +0 -1
  753. package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js.br +0 -0
  754. package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js.gz +0 -0
  755. package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js +0 -1
  756. package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js.br +0 -0
  757. package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js.gz +0 -0
  758. package/public/assets/flowGraphThrottleBlock-DouJgya1.js +0 -1
  759. package/public/assets/flowGraphThrottleBlock-DouJgya1.js.br +0 -0
  760. package/public/assets/flowGraphThrottleBlock-DouJgya1.js.gz +0 -0
  761. package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js +0 -1
  762. package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js.br +0 -0
  763. package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js.gz +0 -0
  764. package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js +0 -1
  765. package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js.br +0 -4
  766. package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js.gz +0 -0
  767. package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js +0 -1
  768. package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js.br +0 -0
  769. package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js.gz +0 -0
  770. package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js +0 -1
  771. package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js.br +0 -0
  772. package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js.gz +0 -0
  773. package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js +0 -1
  774. package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js.br +0 -0
  775. package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js.gz +0 -0
  776. package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js +0 -1
  777. package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js.br +0 -0
  778. package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js.gz +0 -0
  779. package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js +0 -22
  780. package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js.br +0 -0
  781. package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js.gz +0 -0
  782. package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js +0 -23
  783. package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js.br +0 -0
  784. package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js.gz +0 -0
  785. package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js +0 -7
  786. package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js.br +0 -0
  787. package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js.gz +0 -0
  788. package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js +0 -7
  789. package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js.br +0 -0
  790. package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js.gz +0 -0
  791. package/public/assets/glowMapGeneration.fragment-BmCna86b.js +0 -63
  792. package/public/assets/glowMapGeneration.fragment-BmCna86b.js.br +0 -0
  793. package/public/assets/glowMapGeneration.fragment-BmCna86b.js.gz +0 -0
  794. package/public/assets/glowMapGeneration.fragment-Bx0somqR.js +0 -63
  795. package/public/assets/glowMapGeneration.fragment-Bx0somqR.js.br +0 -0
  796. package/public/assets/glowMapGeneration.fragment-Bx0somqR.js.gz +0 -0
  797. package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js +0 -75
  798. package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js.br +0 -0
  799. package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js.gz +0 -0
  800. package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js +0 -75
  801. package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js.br +0 -0
  802. package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js.gz +0 -0
  803. package/public/assets/glowMapMerge.fragment-0u_W2SCj.js +0 -25
  804. package/public/assets/glowMapMerge.fragment-0u_W2SCj.js.br +0 -0
  805. package/public/assets/glowMapMerge.fragment-0u_W2SCj.js.gz +0 -0
  806. package/public/assets/glowMapMerge.fragment-DbrUnHjm.js +0 -23
  807. package/public/assets/glowMapMerge.fragment-DbrUnHjm.js.br +0 -0
  808. package/public/assets/glowMapMerge.fragment-DbrUnHjm.js.gz +0 -0
  809. package/public/assets/glowMapMerge.vertex-CuTJKa7K.js +0 -7
  810. package/public/assets/glowMapMerge.vertex-CuTJKa7K.js.br +0 -0
  811. package/public/assets/glowMapMerge.vertex-CuTJKa7K.js.gz +0 -0
  812. package/public/assets/glowMapMerge.vertex-DAvXVsHl.js +0 -8
  813. package/public/assets/glowMapMerge.vertex-DAvXVsHl.js.br +0 -0
  814. package/public/assets/glowMapMerge.vertex-DAvXVsHl.js.gz +0 -0
  815. package/public/assets/grain.fragment-6VtM1VfQ.js +0 -6
  816. package/public/assets/grain.fragment-6VtM1VfQ.js.br +0 -0
  817. package/public/assets/grain.fragment-6VtM1VfQ.js.gz +0 -0
  818. package/public/assets/grain.fragment-DDSnqVVY.js +0 -5
  819. package/public/assets/grain.fragment-DDSnqVVY.js.br +0 -5
  820. package/public/assets/grain.fragment-DDSnqVVY.js.gz +0 -0
  821. package/public/assets/harmonicsFunctions-BKiAKdWL.js +0 -189
  822. package/public/assets/harmonicsFunctions-BKiAKdWL.js.br +0 -0
  823. package/public/assets/harmonicsFunctions-BKiAKdWL.js.gz +0 -0
  824. package/public/assets/harmonicsFunctions-BdFr0SEn.js +0 -192
  825. package/public/assets/harmonicsFunctions-BdFr0SEn.js.br +0 -0
  826. package/public/assets/harmonicsFunctions-BdFr0SEn.js.gz +0 -0
  827. package/public/assets/hdrTextureLoader-BZMtuzrh.js +0 -2
  828. package/public/assets/hdrTextureLoader-BZMtuzrh.js.br +0 -0
  829. package/public/assets/hdrTextureLoader-BZMtuzrh.js.gz +0 -0
  830. package/public/assets/hemisphericLight-BF-Si7a7.js +0 -1
  831. package/public/assets/hemisphericLight-BF-Si7a7.js.br +0 -0
  832. package/public/assets/hemisphericLight-BF-Si7a7.js.gz +0 -0
  833. package/public/assets/iesTextureLoader-CfjtMyLq.js +0 -2
  834. package/public/assets/iesTextureLoader-CfjtMyLq.js.br +0 -0
  835. package/public/assets/iesTextureLoader-CfjtMyLq.js.gz +0 -0
  836. package/public/assets/index-Bc_2vm3Z.js +0 -4
  837. package/public/assets/index-Bc_2vm3Z.js.br +0 -0
  838. package/public/assets/index-Bc_2vm3Z.js.gz +0 -0
  839. package/public/assets/index-DKM_mvsP.js +0 -1
  840. package/public/assets/index-DKM_mvsP.js.br +0 -0
  841. package/public/assets/index-DKM_mvsP.js.gz +0 -0
  842. package/public/assets/instancesDeclaration-DpE3Y0C1.js +0 -23
  843. package/public/assets/instancesDeclaration-DpE3Y0C1.js.br +0 -0
  844. package/public/assets/instancesDeclaration-DpE3Y0C1.js.gz +0 -0
  845. package/public/assets/ktxTextureLoader-7eTZtvh5.js +0 -1
  846. package/public/assets/ktxTextureLoader-7eTZtvh5.js.br +0 -0
  847. package/public/assets/ktxTextureLoader-7eTZtvh5.js.gz +0 -0
  848. package/public/assets/lazy-BcZCe0kL.js +0 -2
  849. package/public/assets/lazy-BcZCe0kL.js.br +0 -0
  850. package/public/assets/lazy-BcZCe0kL.js.gz +0 -0
  851. package/public/assets/lod.fragment-CEfFyCdU.js +0 -3
  852. package/public/assets/lod.fragment-CEfFyCdU.js.br +0 -0
  853. package/public/assets/lod.fragment-CEfFyCdU.js.gz +0 -0
  854. package/public/assets/lod.fragment-DT0r7jVm.js +0 -3
  855. package/public/assets/lod.fragment-DT0r7jVm.js.br +0 -0
  856. package/public/assets/lod.fragment-DT0r7jVm.js.gz +0 -0
  857. package/public/assets/lodCube.fragment-BP5e9OXG.js +0 -22
  858. package/public/assets/lodCube.fragment-BP5e9OXG.js.br +0 -0
  859. package/public/assets/lodCube.fragment-BP5e9OXG.js.gz +0 -0
  860. package/public/assets/lodCube.fragment-mh7W3FpN.js +0 -22
  861. package/public/assets/lodCube.fragment-mh7W3FpN.js.br +0 -0
  862. package/public/assets/lodCube.fragment-mh7W3FpN.js.gz +0 -0
  863. package/public/assets/logDepthDeclaration-DapB3ji1.js +0 -4
  864. package/public/assets/logDepthDeclaration-_-FceU2g.js +0 -4
  865. package/public/assets/logDepthFragment-BowlR5UY.js +0 -4
  866. package/public/assets/logDepthFragment-D1ov0i96.js +0 -4
  867. package/public/assets/logDepthFragment-D1ov0i96.js.br +0 -0
  868. package/public/assets/logDepthFragment-D1ov0i96.js.gz +0 -0
  869. package/public/assets/logDepthVertex-dEn2jB_d.js +0 -4
  870. package/public/assets/logDepthVertex-dEn2jB_d.js.br +0 -2
  871. package/public/assets/logDepthVertex-dEn2jB_d.js.gz +0 -0
  872. package/public/assets/logDepthVertex-jWY57236.js +0 -4
  873. package/public/assets/logDepthVertex-jWY57236.js.br +0 -3
  874. package/public/assets/logDepthVertex-jWY57236.js.gz +0 -0
  875. package/public/assets/mainUVVaryingDeclaration-B-lJcjME.js +0 -4
  876. package/public/assets/mainUVVaryingDeclaration-D1LMmumw.js +0 -4
  877. package/public/assets/meshUboDeclaration-B5FWJmqY.js +0 -13
  878. package/public/assets/meshUboDeclaration-B5FWJmqY.js.br +0 -1
  879. package/public/assets/meshUboDeclaration-B5FWJmqY.js.gz +0 -0
  880. package/public/assets/meshUboDeclaration-DthvNL2q.js +0 -13
  881. package/public/assets/meshUboDeclaration-DthvNL2q.js.br +0 -0
  882. package/public/assets/meshUboDeclaration-DthvNL2q.js.gz +0 -0
  883. package/public/assets/morphTargetsVertex-DHRA_mKb.js +0 -100
  884. package/public/assets/morphTargetsVertex-DHRA_mKb.js.br +0 -0
  885. package/public/assets/morphTargetsVertex-DHRA_mKb.js.gz +0 -0
  886. package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js +0 -2
  887. package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js.br +0 -0
  888. package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js.gz +0 -0
  889. package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js +0 -3
  890. package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js.br +0 -0
  891. package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js.gz +0 -0
  892. package/public/assets/oitFragment-CAXGfgFH.js +0 -1202
  893. package/public/assets/oitFragment-CAXGfgFH.js.br +0 -0
  894. package/public/assets/oitFragment-CAXGfgFH.js.gz +0 -0
  895. package/public/assets/oitFragment-ay081Wsi.js +0 -1077
  896. package/public/assets/oitFragment-ay081Wsi.js.br +0 -0
  897. package/public/assets/oitFragment-ay081Wsi.js.gz +0 -0
  898. package/public/assets/openpbrMaterial-KVtjwf0K.js +0 -2
  899. package/public/assets/openpbrMaterial-KVtjwf0K.js.br +0 -0
  900. package/public/assets/openpbrMaterial-KVtjwf0K.js.gz +0 -0
  901. package/public/assets/outline.fragment-BanVWYIB.js +0 -21
  902. package/public/assets/outline.fragment-BanVWYIB.js.br +0 -0
  903. package/public/assets/outline.fragment-BanVWYIB.js.gz +0 -0
  904. package/public/assets/outline.fragment-CFKJOJ3l.js +0 -18
  905. package/public/assets/outline.fragment-CFKJOJ3l.js.br +0 -0
  906. package/public/assets/outline.fragment-CFKJOJ3l.js.gz +0 -0
  907. package/public/assets/outline.vertex-1q1i1Z0k.js +0 -47
  908. package/public/assets/outline.vertex-1q1i1Z0k.js.br +0 -0
  909. package/public/assets/outline.vertex-1q1i1Z0k.js.gz +0 -0
  910. package/public/assets/outline.vertex-yrM712o1.js +0 -47
  911. package/public/assets/outline.vertex-yrM712o1.js.br +0 -0
  912. package/public/assets/outline.vertex-yrM712o1.js.gz +0 -0
  913. package/public/assets/passCube.fragment-4x9m1yB9.js +0 -23
  914. package/public/assets/passCube.fragment-4x9m1yB9.js.br +0 -0
  915. package/public/assets/passCube.fragment-4x9m1yB9.js.gz +0 -0
  916. package/public/assets/passCube.fragment-j0YEcfrM.js +0 -23
  917. package/public/assets/passCube.fragment-j0YEcfrM.js.br +0 -3
  918. package/public/assets/passCube.fragment-j0YEcfrM.js.gz +0 -0
  919. package/public/assets/pbr.fragment-D4c9Imut.js +0 -3277
  920. package/public/assets/pbr.fragment-D4c9Imut.js.br +0 -0
  921. package/public/assets/pbr.fragment-D4c9Imut.js.gz +0 -0
  922. package/public/assets/pbr.fragment-qKZeRSsL.js +0 -3327
  923. package/public/assets/pbr.fragment-qKZeRSsL.js.br +0 -0
  924. package/public/assets/pbr.fragment-qKZeRSsL.js.gz +0 -0
  925. package/public/assets/pbr.vertex-CNWuYREY.js +0 -227
  926. package/public/assets/pbr.vertex-CNWuYREY.js.br +0 -0
  927. package/public/assets/pbr.vertex-CNWuYREY.js.gz +0 -0
  928. package/public/assets/pbr.vertex-joJmxK7Z.js +0 -357
  929. package/public/assets/pbr.vertex-joJmxK7Z.js.br +0 -0
  930. package/public/assets/pbr.vertex-joJmxK7Z.js.gz +0 -0
  931. package/public/assets/playable-local-editor-entry-BpT9asOr.js +0 -4
  932. package/public/assets/playable-local-editor-entry-BpT9asOr.js.br +0 -0
  933. package/public/assets/playable-local-editor-entry-BpT9asOr.js.gz +0 -0
  934. package/public/assets/playable-sdk-CrJqCMfO.js +0 -5074
  935. package/public/assets/playable-sdk-CrJqCMfO.js.br +0 -0
  936. package/public/assets/playable-sdk-CrJqCMfO.js.gz +0 -0
  937. package/public/assets/rgbdDecode.fragment-DVQvgSkR.js +0 -5
  938. package/public/assets/rgbdDecode.fragment-DVQvgSkR.js.br +0 -0
  939. package/public/assets/rgbdDecode.fragment-DVQvgSkR.js.gz +0 -0
  940. package/public/assets/rgbdDecode.fragment-jfF24wPs.js +0 -5
  941. package/public/assets/rgbdDecode.fragment-jfF24wPs.js.br +0 -0
  942. package/public/assets/rgbdDecode.fragment-jfF24wPs.js.gz +0 -0
  943. package/public/assets/rgbdEncode.fragment-AWVgflWm.js +0 -5
  944. package/public/assets/rgbdEncode.fragment-AWVgflWm.js.br +0 -0
  945. package/public/assets/rgbdEncode.fragment-AWVgflWm.js.gz +0 -0
  946. package/public/assets/rgbdEncode.fragment-DZGlem9k.js +0 -5
  947. package/public/assets/rgbdEncode.fragment-DZGlem9k.js.br +0 -0
  948. package/public/assets/rgbdEncode.fragment-DZGlem9k.js.gz +0 -0
  949. package/public/assets/sceneLoader-BJz_3O1N.js +0 -1
  950. package/public/assets/sceneLoader-BJz_3O1N.js.br +0 -0
  951. package/public/assets/sceneLoader-BJz_3O1N.js.gz +0 -0
  952. package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js +0 -15
  953. package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js.br +0 -0
  954. package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js.gz +0 -0
  955. package/public/assets/selection.fragment-G8Edn4iI.js +0 -35
  956. package/public/assets/selection.fragment-G8Edn4iI.js.br +0 -0
  957. package/public/assets/selection.fragment-G8Edn4iI.js.gz +0 -0
  958. package/public/assets/selection.fragment-lxotM05-.js +0 -35
  959. package/public/assets/selection.fragment-lxotM05-.js.br +0 -0
  960. package/public/assets/selection.fragment-lxotM05-.js.gz +0 -0
  961. package/public/assets/selection.vertex-BXV_f7Y2.js +0 -74
  962. package/public/assets/selection.vertex-BXV_f7Y2.js.br +0 -0
  963. package/public/assets/selection.vertex-BXV_f7Y2.js.gz +0 -0
  964. package/public/assets/selection.vertex-N4uHCMNz.js +0 -73
  965. package/public/assets/selection.vertex-N4uHCMNz.js.br +0 -0
  966. package/public/assets/selection.vertex-N4uHCMNz.js.gz +0 -0
  967. package/public/assets/selectionOutline.fragment-GI37GIN9.js +0 -48
  968. package/public/assets/selectionOutline.fragment-GI37GIN9.js.br +0 -0
  969. package/public/assets/selectionOutline.fragment-GI37GIN9.js.gz +0 -0
  970. package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js +0 -47
  971. package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js.br +0 -0
  972. package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js.gz +0 -0
  973. package/public/assets/shadowMap.fragment-Bc5HgWvg.js +0 -79
  974. package/public/assets/shadowMap.fragment-Bc5HgWvg.js.br +0 -0
  975. package/public/assets/shadowMap.fragment-Bc5HgWvg.js.gz +0 -0
  976. package/public/assets/shadowMap.fragment-C43vlUxN.js +0 -78
  977. package/public/assets/shadowMap.fragment-C43vlUxN.js.br +0 -0
  978. package/public/assets/shadowMap.fragment-C43vlUxN.js.gz +0 -0
  979. package/public/assets/shadowMap.vertex-CneYEevu.js +0 -119
  980. package/public/assets/shadowMap.vertex-CneYEevu.js.br +0 -0
  981. package/public/assets/shadowMap.vertex-CneYEevu.js.gz +0 -0
  982. package/public/assets/shadowMap.vertex-DCmGPxPg.js +0 -109
  983. package/public/assets/shadowMap.vertex-DCmGPxPg.js.br +0 -0
  984. package/public/assets/shadowMap.vertex-DCmGPxPg.js.gz +0 -0
  985. package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js +0 -4
  986. package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js.br +0 -0
  987. package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js.gz +0 -0
  988. package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js +0 -4
  989. package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js.br +0 -0
  990. package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js.gz +0 -0
  991. package/public/assets/sharpen.fragment-u0Zk00IW.js +0 -8
  992. package/public/assets/sharpen.fragment-u0Zk00IW.js.br +0 -0
  993. package/public/assets/sharpen.fragment-u0Zk00IW.js.gz +0 -0
  994. package/public/assets/standardMaterial-CgDYhl-K.js +0 -1329
  995. package/public/assets/standardMaterial-CgDYhl-K.js.br +0 -0
  996. package/public/assets/standardMaterial-CgDYhl-K.js.gz +0 -0
  997. package/public/assets/textureMerger.fragment-Bb06oGwL.js +0 -84
  998. package/public/assets/textureMerger.fragment-Bb06oGwL.js.br +0 -0
  999. package/public/assets/textureMerger.fragment-Bb06oGwL.js.gz +0 -0
  1000. package/public/assets/textureMerger.fragment-yYgn-A7X.js +0 -76
  1001. package/public/assets/textureMerger.fragment-yYgn-A7X.js.br +0 -0
  1002. package/public/assets/textureMerger.fragment-yYgn-A7X.js.gz +0 -0
  1003. package/public/assets/tgaTextureLoader-BD8cHb3T.js +0 -1
  1004. package/public/assets/tgaTextureLoader-BD8cHb3T.js.br +0 -0
  1005. package/public/assets/tgaTextureLoader-BD8cHb3T.js.gz +0 -0
  1006. package/public/assets/vertexColorMixing-31u6kp3A.js +0 -24
  1007. package/public/assets/vertexColorMixing-31u6kp3A.js.br +0 -1
  1008. package/public/assets/vertexColorMixing-31u6kp3A.js.gz +0 -0
  1009. package/public/assets/vertexColorMixing-CWKPQGdm.js +0 -20
  1010. package/public/assets/vertexColorMixing-CWKPQGdm.js.br +0 -0
  1011. package/public/assets/vertexColorMixing-CWKPQGdm.js.gz +0 -0
  1012. package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js +0 -11
  1013. package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js.br +0 -0
  1014. package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js.gz +0 -0
  1015. package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js +0 -12
  1016. package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js.br +0 -0
  1017. package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js.gz +0 -0
  1018. package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js +0 -15
  1019. package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js.br +0 -0
  1020. package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js.gz +0 -0
  1021. package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js +0 -13
  1022. package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js.br +0 -0
  1023. package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js.gz +0 -0
  1024. package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js +0 -4
  1025. package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js.br +0 -0
  1026. package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js.gz +0 -0
  1027. package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js +0 -5
  1028. package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js.br +0 -0
  1029. package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js.gz +0 -0
  1030. package/public/assets/webAudioBus-uR5af0TN.js +0 -1
  1031. package/public/assets/webAudioBus-uR5af0TN.js.br +0 -0
  1032. package/public/assets/webAudioBus-uR5af0TN.js.gz +0 -0
  1033. package/public/assets/webAudioMainBus-B4JHk1VB.js +0 -1
  1034. package/public/assets/webAudioMainBus-B4JHk1VB.js.br +0 -0
  1035. package/public/assets/webAudioMainBus-B4JHk1VB.js.gz +0 -0
@@ -1 +1,28 @@
1
- import{pathToFileURL as i}from"node:url";var c=o("FPS_EDITOR_WORKER_PROJECT_ADAPTER"),s=await import(i(c).href);if(typeof s.startFpsGameEditorProjectWorker!="function")throw new Error("Project worker adapter must export startFpsGameEditorProjectWorker(context).");var r=await s.startFpsGameEditorProjectWorker({projectRoot:process.cwd(),build:E("FPS_EDITOR_WORKER_BUILD"),agentToken:o("FPS_EDITOR_WORKER_AGENT_TOKEN"),browserToken:o("FPS_EDITOR_WORKER_BROWSER_TOKEN"),runtimeDebugToken:o("FPS_EDITOR_WORKER_RUNTIME_DEBUG_TOKEN"),runtimeUrl:o("FPS_EDITOR_WORKER_RUNTIME_URL"),journalPath:process.env.FPS_EDITOR_WORKER_JOURNAL_PATH?.trim()||void 0});if(!r||typeof r.serviceInstanceId!="string"||typeof r.internalUrl!="string"||typeof r.dispose!="function")throw new Error("Project worker adapter returned an invalid worker handle.");process.send?.({type:"ready",serviceInstanceId:r.serviceInstanceId,internalUrl:r.internalUrl});var a=setInterval(()=>{process.send?.({type:"heartbeat",serviceInstanceId:r.serviceInstanceId})},1e3);a.unref?.();var n=!1;for(let e of["SIGINT","SIGTERM"])process.once(e,()=>{n||(n=!0,clearInterval(a),r.dispose().finally(()=>{process.exitCode=e==="SIGINT"?130:143}))});function o(e){let t=process.env[e]?.trim();if(!t)throw new Error(`${e} is required.`);return t}function E(e){let t=JSON.parse(o(e));if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must contain a JSON object.`);return t}
1
+ import{EventEmitter as s_}from"node:events";var yl=class extends Error{path;reason;code="runtime.lighting.invalid";constructor(t,r){super(`Invalid Runtime Lighting data at ${t}: ${r}`),this.path=t,this.reason=r,this.name="FpsRuntimeLightingDataError"}},GE=1e-6,p_=1e-4,f_=new Set(["schemaVersion","type","intensity","direction","diffuseColor"]),g_=new Set(["schemaVersion","type","intensity","diffuseColor","groundColor"]),S_=new Set(["x","y","z"]),h_=new Set(["r","g","b"]);function nc(e,t="$.direction"){let r=LE(e,t),n=Math.hypot(r.x,r.y,r.z);return n<=GE&&Rr(t,"expected a non-zero direction vector"),Object.freeze({x:r.x/n,y:r.y/n,z:r.z/n})}function Aa(e,t="$.light"){let r=Pf(e,t);r.schemaVersion!==1&&Rr(`${t}.schemaVersion`,"expected 1");let n=y_(r.intensity,`${t}.intensity`);if(r.type==="directional"){bl(r,f_,t);let o=LE(r.direction,`${t}.direction`),i=Math.hypot(o.x,o.y,o.z);return i<=GE&&Rr(`${t}.direction`,"expected a non-zero direction vector"),Math.abs(i-1)>p_&&Rr(`${t}.direction`,"expected a normalized direction vector"),Object.freeze({schemaVersion:1,type:"directional",intensity:n,direction:o,diffuseColor:If(r.diffuseColor,`${t}.diffuseColor`)})}if(r.type==="hemispheric")return bl(r,g_,t),Object.freeze({schemaVersion:1,type:"hemispheric",intensity:n,diffuseColor:If(r.diffuseColor,`${t}.diffuseColor`),groundColor:If(r.groundColor,`${t}.groundColor`)});Rr(`${t}.type`,"expected directional or hemispheric")}function LE(e,t){let r=Pf(e,t);return bl(r,S_,t),Object.freeze({x:rc(r.x,`${t}.x`),y:rc(r.y,`${t}.y`),z:rc(r.z,`${t}.z`)})}function If(e,t){let r=Pf(e,t);return bl(r,h_,t),Object.freeze({r:Tf(r.r,`${t}.r`),g:Tf(r.g,`${t}.g`),b:Tf(r.b,`${t}.b`)})}function Pf(e,t){(!e||typeof e!="object"||Array.isArray(e))&&Rr(t,"expected a plain object");let r=Object.getPrototypeOf(e);return r!==Object.prototype&&r!==null&&Rr(t,"expected a plain object"),e}function bl(e,t,r){for(let n of Object.keys(e))t.has(n)||Rr(`${r}.${n}`,"unknown field")}function rc(e,t){return(typeof e!="number"||!Number.isFinite(e))&&Rr(t,"expected a finite number"),e}function y_(e,t){let r=rc(e,t);return r<0&&Rr(t,"expected a non-negative number"),r}function Tf(e,t){let r=rc(e,t);return(r<0||r>1)&&Rr(t,"expected a number between 0 and 1"),r}function Rr(e,t){throw new yl(e,t)}var ic="medium",Af={low:{opacity:.32,softness:.25,bias:.0015,normalBias:.02,maxDistance:24,resolution:512,cascadeCount:1,bakeSamples:8,blurKernel:2},medium:{opacity:.42,softness:.4,bias:.001,normalBias:.01,maxDistance:48,resolution:1024,cascadeCount:2,bakeSamples:24,blurKernel:4},high:{opacity:.5,softness:.58,bias:8e-4,normalBias:.006,maxDistance:80,resolution:2048,cascadeCount:4,bakeSamples:64,blurKernel:8},ultra:{opacity:.56,softness:.72,bias:6e-4,normalBias:.004,maxDistance:120,resolution:4096,cascadeCount:4,bakeSamples:128,blurKernel:12}};function El(e=ic,t={}){let r=Af[e]??Af[ic];return{opacity:oc(t.opacity,r.opacity),softness:oc(t.softness,r.softness),bias:oc(t.bias,r.bias),normalBias:oc(t.normalBias,r.normalBias),maxDistance:oc(t.maxDistance,r.maxDistance),resolution:I_(t.resolution,r.resolution),cascadeCount:T_(t.cascadeCount,r.cascadeCount),bakeSamples:b_(t.bakeSamples,r.bakeSamples),blurKernel:E_(t.blurKernel,r.blurKernel)}}function oc(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function b_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.round(e):t}function E_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.round(e):t}function I_(e,t){return e===512||e===1024||e===2048||e===4096?e:t}function T_(e,t){return e===1||e===2||e===4?e:t}function Il(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function Tl(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function Pl(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function Al(e){return e==="inherit"||e==="none"||e==="dynamic"||e==="static"||e==="blob"||e==="projected"||e==="auto"}function xl(e){return e==="inherit"||e==="low"||e==="medium"||e==="high"||e==="ultra"}function Ml(e){return e==="inherit"||e==="scene-main"||e==="nearest"||e==="explicit"}function FE(e){let t=Il(e);if(!t)return;let r={};Tl(t.cast)&&(r.cast=t.cast),Pl(t.receive)&&(r.receive=t.receive),Al(t.mode)&&(r.mode=t.mode),xl(t.quality)&&(r.quality=t.quality);let n=Il(t.light);if(n){let i={};Ml(n.mode)&&(i.mode=n.mode),typeof n.lightId=="string"&&n.lightId.trim()&&(i.lightId=n.lightId.trim()),Object.keys(i).length>0&&(r.light=i)}let o=P_(t.params);return o&&(r.params=o),Object.keys(r).length>0?r:void 0}function ct(e){let t=FE(e);return t?{shadow:t,diagnostics:[]}:{diagnostics:[]}}function xf(e,t="none"){let r=e?.mode;return!r||r==="inherit"||r==="auto"?t:r}function Mf(e,t=ic){let r=e?.quality;return r&&r!=="inherit"?r:t}function Fn(...e){let t={};for(let r of e)if(r){if((r.cast==="enabled"||r.cast==="none")&&(t.cast=r.cast),(r.receive==="enabled"||r.receive==="none")&&(t.receive=r.receive),r.mode!==void 0&&r.mode!=="inherit"&&(t.mode=r.mode),r.quality!==void 0&&r.quality!=="inherit"&&(t.quality=r.quality),r.light){let n={...t.light??{}};r.light.mode!==void 0&&r.light.mode!=="inherit"&&(n.mode=r.light.mode),r.light.lightId!==void 0&&(n.lightId=r.light.lightId),Object.keys(n).length>0&&(t.light=n)}r.params&&(t.params={...t.params??{},...r.params})}return Object.keys(t).length>0?t:void 0}function P_(e){let t=Il(e);if(!t)return;let r={};return typeof t.opacity=="number"&&Number.isFinite(t.opacity)&&(r.opacity=t.opacity),typeof t.softness=="number"&&Number.isFinite(t.softness)&&(r.softness=t.softness),typeof t.bias=="number"&&Number.isFinite(t.bias)&&(r.bias=t.bias),typeof t.normalBias=="number"&&Number.isFinite(t.normalBias)&&(r.normalBias=t.normalBias),typeof t.maxDistance=="number"&&Number.isFinite(t.maxDistance)&&(r.maxDistance=t.maxDistance),(t.resolution===512||t.resolution===1024||t.resolution===2048||t.resolution===4096)&&(r.resolution=t.resolution),(t.cascadeCount===1||t.cascadeCount===2||t.cascadeCount===4)&&(r.cascadeCount=t.cascadeCount),typeof t.bakeSamples=="number"&&Number.isFinite(t.bakeSamples)&&(r.bakeSamples=t.bakeSamples),typeof t.blurKernel=="number"&&Number.isFinite(t.blurKernel)&&(r.blurKernel=t.blurKernel),Object.keys(r).length>0?r:void 0}var A_=new Set(["cast","receive","mode","quality","light","params"]),x_=new Set(["mode","lightId"]),M_=new Set(["opacity","softness","bias","normalBias","maxDistance","resolution","cascadeCount","bakeSamples","blurKernel"]);function ac(e,t="$.shadow"){let r=Rf(e);if(!r)throw _t("schema.invalidType",t);if(Df(r,A_,t),"cast"in r&&!Tl(r.cast))throw _t("schema.invalidValue",`${t}.cast`);if("receive"in r&&!Pl(r.receive))throw _t("schema.invalidValue",`${t}.receive`);if("mode"in r&&!Al(r.mode))throw _t("schema.invalidValue",`${t}.mode`);if("quality"in r&&!xl(r.quality))throw _t("schema.invalidValue",`${t}.quality`);"light"in r&&D_(r.light,`${t}.light`),"params"in r&&R_(r.params,`${t}.params`)}function D_(e,t){let r=Rf(e);if(!r)throw _t("schema.invalidType",t);if(Df(r,x_,t),"mode"in r&&!Ml(r.mode))throw _t("schema.invalidValue",`${t}.mode`);if("lightId"in r&&(typeof r.lightId!="string"||!r.lightId.trim()))throw _t("schema.invalidValue",`${t}.lightId`);if(r.mode==="explicit"&&(typeof r.lightId!="string"||!r.lightId.trim()))throw _t("schema.invalidValue",`${t}.lightId`)}function R_(e,t){let r=Rf(e);if(!r)throw _t("schema.invalidType",t);if(Df(r,M_,t),Ei(r,"opacity",t,n=>n>=0&&n<=1),Ei(r,"softness",t,n=>n>=0),Ei(r,"bias",t,()=>!0),Ei(r,"normalBias",t,()=>!0),Ei(r,"maxDistance",t,n=>n>0),Ei(r,"bakeSamples",t,n=>n>0),Ei(r,"blurKernel",t,n=>n>=0),"resolution"in r&&![512,1024,2048,4096].includes(r.resolution))throw _t("schema.invalidValue",`${t}.resolution`);if("cascadeCount"in r&&![1,2,4].includes(r.cascadeCount))throw _t("schema.invalidValue",`${t}.cascadeCount`)}function Ei(e,t,r,n){if(!(t in e))return;let o=e[t];if(typeof o!="number"||!Number.isFinite(o)||!n(o))throw _t("schema.invalidValue",`${r}.${t}`)}function Df(e,t,r){for(let n of Object.keys(e))if(!t.has(n))throw _t("schema.deprecatedField",`${r}.${n}`)}function _t(e,t){let r=new Error(`${e}: ${t}`);return Object.assign(r,{code:e,path:t}),r}function Rf(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}var vf="fps.shadow-map-experiment";function dc(e,t="$.scene.shadowMapExperiment"){let r=Or(e,t);cn(r,["qualityProfile","behaviorProfile"],t),r.qualityProfile!==void 0&&sn(r.qualityProfile,`${t}.qualityProfile`),r.behaviorProfile!==void 0&&sn(r.behaviorProfile,`${t}.behaviorProfile`)}function lc(e,t="$.shadowMapExperiment"){let r=Or(e,t);cn(r,["behaviorProfile"],t),sn(r.behaviorProfile,`${t}.behaviorProfile`)}function Ii(e,t="$"){let r=Or(e,t);cn(r,["schemaVersion","enabled","lightRef","defaultQualityProfile","defaultBehaviorProfile","qualityProfiles","behaviorProfiles"],t),r.schemaVersion!==1&&Se(`${t}.schemaVersion`,"expected 1"),typeof r.enabled!="boolean"&&Se(`${t}.enabled`,"expected boolean"),sn(r.lightRef,`${t}.lightRef`);let n=sn(r.defaultQualityProfile,`${t}.defaultQualityProfile`),o=sn(r.defaultBehaviorProfile,`${t}.defaultBehaviorProfile`),i=BE(r.qualityProfiles,`${t}.qualityProfiles`),a=BE(r.behaviorProfiles,`${t}.behaviorProfiles`);for(let[s,c]of Object.entries(i))C_(c,`${t}.qualityProfiles.${s}`);for(let[s,c]of Object.entries(a))w_(c,`${t}.behaviorProfiles.${s}`);Object.prototype.hasOwnProperty.call(i,n)||Se(`${t}.defaultQualityProfile`,`unknown quality profile: ${n}`),Object.prototype.hasOwnProperty.call(a,o)||Se(`${t}.defaultBehaviorProfile`,`unknown behavior profile: ${o}`)}function zE(e){Ii(e.config),e.settings!==void 0&&dc(e.settings),(!Number.isInteger(e.revision)||e.revision<0)&&Se("$.revision","expected a non-negative integer");let t=e.settings?.qualityProfile??e.config.defaultQualityProfile,r=e.settings?.behaviorProfile??e.config.defaultBehaviorProfile,n=Cf(e.config.qualityProfiles,t,"$.settings.qualityProfile","quality");Cf(e.config.behaviorProfiles,r,"$.settings.behaviorProfile","behavior");let o=e.objects.map((s,c)=>{let d=`$.objects[${c}]`;s.override!==void 0&&lc(s.override,`${d}.override`);let u=s.override?.behaviorProfile??r,l=Cf(e.config.behaviorProfiles,u,`${d}.override.behaviorProfile`,"behavior");return Object.freeze({entityId:sn(s.entityId,`${d}.entityId`),renderableIds:Object.freeze(F_(s.renderableIds,`${d}.renderableIds`)),cast:$E(s.cast,`${d}.cast`)??l.cast==="enabled",receive:$E(s.receive,`${d}.receive`)??l.receive==="enabled",updateClass:l.updateClass!=="auto"?l.updateClass:s.inferredUpdateClass??"static",behaviorProfileId:u})}).sort((s,c)=>s.entityId.localeCompare(c.entityId)),i=e.config.enabled?o:[];G_(i);let a=Object.fromEntries(Object.entries(e.config.behaviorProfiles).sort(([s],[c])=>s.localeCompare(c)).map(([s,c])=>[s,Object.freeze({cast:c.cast==="enabled",receive:c.receive==="enabled",updateClass:c.updateClass})]));return UE({schemaVersion:3,revision:e.revision,enabled:e.config.enabled,scopeId:sn(e.scopeId,"$.scopeId"),light:{entityId:e.config.lightRef,direction:cc(e.lightDirection,"$.lightDirection")},qualityProfileId:t,generator:{maps:{...n.maps},...n.cascadeCount===void 0?{}:{cascadeCount:n.cascadeCount},filter:n.receiverFilter,bias:n.bias,normalBias:n.normalBias,darkness:n.darkness,...n.softness===void 0?{}:{softness:n.softness},bounds:L_(n.bounds),backend:{...n.backend}},culling:{...n.culling},diagnosticThresholds:{...n.diagnostics},behaviorProfiles:a,objects:i,diagnostics:[]})}function $E(e,t){if(e!==void 0)return typeof e!="boolean"&&Se(t,"expected a boolean"),e}function O_(e,t){let r=Or(e,t);cn(r,["mode","center","extent","near","far"],t),r.mode!=="fixed"&&Se(`${t}.mode`,"expected fixed"),cc(r.center,`${t}.center`),cc(r.extent,`${t}.extent`).some(a=>a<=0)&&Se(`${t}.extent`,"expected positive values");let o=Dl(r.near,`${t}.near`),i=Dl(r.far,`${t}.far`);(o<0||i<=o)&&Se(t,"expected 0 <= near < far")}function C_(e,t){let r=Or(e,t);cn(r,["maps","cascadeCount","receiverFilter","bias","normalBias","darkness","softness","bounds","backend","culling","diagnostics"],t),v_(r.maps,`${t}.maps`),r.cascadeCount!==void 0&&k_(r.cascadeCount,`${t}.cascadeCount`),r.receiverFilter!=="hard"&&r.receiverFilter!=="low-pcf"&&Se(`${t}.receiverFilter`,"expected hard or low-pcf"),sc(r.bias,`${t}.bias`,0,.1),sc(r.normalBias,`${t}.normalBias`,0,1),sc(r.darkness,`${t}.darkness`,0,1),r.softness!==void 0&&sc(r.softness,`${t}.softness`,0,1),O_(r.bounds,`${t}.bounds`),__(r.backend,`${t}.backend`),N_(r.culling,`${t}.culling`),j_(r.diagnostics,`${t}.diagnostics`)}function w_(e,t){let r=Or(e,t);cn(r,["cast","receive","updateClass"],t),r.cast!=="enabled"&&r.cast!=="disabled"&&Se(`${t}.cast`,"expected enabled or disabled"),r.receive!=="enabled"&&r.receive!=="disabled"&&Se(`${t}.receive`,"expected enabled or disabled"),["auto","static","dynamic","skinned"].includes(String(r.updateClass))||Se(`${t}.updateClass`,"expected auto, static, dynamic, or skinned")}function v_(e,t){let r=Or(e,t);cn(r,["staticResolution","dynamicResolution","compositeResolution"],t),Of(r.staticResolution,`${t}.staticResolution`),Of(r.dynamicResolution,`${t}.dynamicResolution`),Of(r.compositeResolution,`${t}.compositeResolution`)}function Of(e,t){e!==512&&e!==1024&&e!==2048&&e!==4096&&Se(t,"expected 512, 1024, 2048, or 4096")}function k_(e,t){e!==1&&e!==2&&e!==4&&Se(t,"expected 1, 2, or 4")}function __(e,t){let r=Or(e,t);cn(r,["mode","fallback"],t),["auto","split","single"].includes(String(r.mode))||Se(`${t}.mode`,"expected auto, split, or single"),r.fallback!=="single-map"&&r.fallback!=="disable"&&Se(`${t}.fallback`,"expected single-map or disable")}function N_(e,t){let r=Or(e,t);cn(r,["enabled","guardBandRatio"],t),typeof r.enabled!="boolean"&&Se(`${t}.enabled`,"expected boolean"),sc(r.guardBandRatio,`${t}.guardBandRatio`,0,4)}function j_(e,t){let r=Or(e,t);cn(r,["staticCasterCountWarning","dynamicCasterCountWarning","renderableCountWarning"],t),wf(r.staticCasterCountWarning,`${t}.staticCasterCountWarning`),wf(r.dynamicCasterCountWarning,`${t}.dynamicCasterCountWarning`),wf(r.renderableCountWarning,`${t}.renderableCountWarning`)}function G_(e){let t=new Set,r=new Set;for(let n of e){t.has(n.entityId)&&Se("$.objects",`duplicate entity id: ${n.entityId}`),t.add(n.entityId);for(let o of n.renderableIds)r.has(o)&&Se("$.objects",`duplicate renderable id: ${o}`),r.add(o)}}function BE(e,t){let r=Or(e,t);Object.keys(r).length===0&&Se(t,"expected at least one profile");for(let n of Object.keys(r))sn(n,`${t} key`);return r}function Cf(e,t,r,n){return Object.prototype.hasOwnProperty.call(e,t)||Se(r,`unknown ${n} profile: ${t}`),e[t]}function L_(e){return Object.freeze({mode:"fixed",center:cc(e.center,"$.bounds.center"),extent:cc(e.extent,"$.bounds.extent"),near:e.near,far:e.far})}function cc(e,t){let r=$_(e,t);return r.length!==3&&Se(t,"expected exactly three numbers"),Object.freeze(r.map((n,o)=>Dl(n,`${t}[${o}]`)))}function F_(e,t){let r=e.map((n,o)=>sn(n,`${t}[${o}]`));return new Set(r).size!==r.length&&Se(t,"expected unique strings"),r}function Dl(e,t){return(typeof e!="number"||!Number.isFinite(e))&&Se(t,"expected a finite number"),e}function sc(e,t,r,n){let o=Dl(e,t);return(o<r||o>n)&&Se(t,`expected ${r}..${n}`),o}function wf(e,t){return(!Number.isInteger(e)||e<0)&&Se(t,"expected a non-negative integer"),e}function sn(e,t){return(typeof e!="string"||!e.trim()||e!==e.trim())&&Se(t,"expected a trimmed non-empty string"),e}function Or(e,t){(!e||typeof e!="object"||Array.isArray(e))&&Se(t,"expected an object");let r=Object.getPrototypeOf(e);return r!==Object.prototype&&r!==null&&Se(t,"expected a plain object"),e}function $_(e,t){return Array.isArray(e)||Se(t,"expected an array"),e}function cn(e,t,r){let n=new Set(t);for(let o of Object.keys(e))n.has(o)||Se(`${r}.${o}`,"unknown field")}function UE(e){if(!e||typeof e!="object"||Object.isFrozen(e))return e;for(let t of Object.values(e))UE(t);return Object.freeze(e)}function Se(e,t){throw new Error(`shadow_map_experiment_invalid:${e}:${t}`)}var VE=["useBlobShadow","blobSettings"],B_=["resolution","maxSize"],z_=new Set(["none","blob","static","planar","dynamic"]);function Ht(e){let t=Ti(e);if(!t)throw Ce("schema.invalidType","$");for(let o of VE)if(Object.prototype.hasOwnProperty.call(t,o))throw Ce("schema.deprecatedField",`$.${o}`);if(Ee(t,["globalVolume","materials","renderingGroups","shadowMeshes","shadows"],"$"),H_(t.globalVolume,"$.globalVolume"),K_(t.materials,"$.materials"),U_(t.renderingGroups,"$.renderingGroups"),V_(t.globalVolume,"$.globalVolume"),Q_(t.shadowMeshes,"$.shadowMeshes"),!Object.prototype.hasOwnProperty.call(t,"shadows"))return;let r=Ti(t.shadows);if(!r)throw Ce("schema.invalidType","$.shadows");for(let o of VE)if(Object.prototype.hasOwnProperty.call(r,o))throw Ce("schema.deprecatedField",`$.shadows.${o}`);if(Ee(r,["defaultMode","enabled","useCsm","settings","blob","staticProjected","planar","shadowRange","shadowOrtho","csm"],"$.shadows"),"defaultMode"in r&&!z_.has(String(r.defaultMode)))throw Ce("schema.invalidValue","$.shadows.defaultMode");Nt(r,"enabled","$.shadows"),Nt(r,"useCsm","$.shadows");let n=Ti(r.settings);if(Object.prototype.hasOwnProperty.call(r,"settings")&&!n)throw Ce("schema.invalidType","$.shadows.settings");if(n){Ee(n,["mapSize","darkness","blurKernel","bias","normalBias","shadowMinZ","shadowMaxZ","useBlurExponentialShadowMap","shadowColor"],"$.shadows.settings");for(let o of["mapSize","darkness","blurKernel","bias","normalBias","shadowMinZ","shadowMaxZ"])At(n,o,"$.shadows.settings");Nt(n,"useBlurExponentialShadowMap","$.shadows.settings"),Rl(n.shadowColor,"$.shadows.settings.shadowColor",!1)}q_(r.blob,"$.shadows.blob"),Y_(r.staticProjected,"$.shadows.staticProjected"),J_(r.planar,"$.shadows.planar"),Pi(r.shadowRange,"$.shadows.shadowRange",["minZ","maxZ"]),Pi(r.shadowOrtho,"$.shadows.shadowOrtho",["left","right","top","bottom"]),X_(r.csm,"$.shadows.csm")}function U_(e,t){if(e===void 0)return;let r=Ti(e);if(!r||!Array.isArray(r.slots))throw Ce("schema.invalidType",t);Ee(r,["slots"],t),r.slots.forEach((n,o)=>{let i=`${t}.slots[${o}]`,a=Ti(n);if(!a)throw Ce("schema.invalidType",i);if(Ee(a,["renderingGroupId","name","alphaIndexPresets"],i),![0,1,2,3].includes(a.renderingGroupId))throw Ce("schema.invalidValue",`${i}.renderingGroupId`);if(typeof a.name!="string"||!a.name.trim())throw Ce("schema.invalidValue",`${i}.name`);if(!Array.isArray(a.alphaIndexPresets))throw Ce("schema.invalidType",`${i}.alphaIndexPresets`);a.alphaIndexPresets.forEach((s,c)=>{let d=`${i}.alphaIndexPresets[${c}]`,u=Ti(s);if(!u)throw Ce("schema.invalidType",d);if(Ee(u,["name","alphaIndex"],d),typeof u.name!="string"||!u.name.trim())throw Ce("schema.invalidValue",`${d}.name`);_f(u,"alphaIndex",d)})})}function V_(e,t){if(e===void 0)return;let r=mt(e,t);for(let i of["samples","camera","lights"])if(i in r)throw Ce("schema.deprecatedField",`${t}.${i}`);if(Ee(r,["enabled","hdr","environment","imageProcessing","toneMapping","antialiasing","postProcessing","rendering","textures"],t),Nt(r,"enabled",t),Nt(r,"hdr",t),r.environment!==void 0){let i=mt(r.environment,`${t}.environment`);for(let a of["textureAssetId","textureUrl","intensity"])if(a in i)throw Ce("schema.deprecatedField",`${t}.environment.${a}`);if(Ee(i,["texture","iblIntensity","rotationY","useCocosIBL"],`${t}.environment`),i.texture!==void 0&&i.texture!==null){let a=mt(i.texture,`${t}.environment.texture`);for(let s of Object.keys(a))if(s!=="textureAssetId"&&s!=="url")throw Ce("schema.deprecatedField",`${t}.environment.texture.${s}`);for(let s of["textureAssetId","url"])if(s in a&&a[s]!=null&&(typeof a[s]!="string"||!a[s].trim()))throw Ce("schema.invalidValue",`${t}.environment.texture.${s}`)}At(i,"iblIntensity",`${t}.environment`),At(i,"rotationY",`${t}.environment`),Nt(i,"useCocosIBL",`${t}.environment`)}if(Pi(r.imageProcessing,`${t}.imageProcessing`,["exposure","contrast"]),r.toneMapping!==void 0){let i=mt(r.toneMapping,`${t}.toneMapping`);if(Ee(i,["enabled","type"],`${t}.toneMapping`),Nt(i,"enabled",`${t}.toneMapping`),"type"in i&&!["standard","aces","khr-pbr-neutral"].includes(String(i.type)))throw Ce("schema.invalidValue",`${t}.toneMapping.type`)}if(r.antialiasing!==void 0){let i=mt(r.antialiasing,`${t}.antialiasing`);if(Ee(i,["samples"],`${t}.antialiasing`),"samples"in i&&![1,2,4,8].includes(i.samples))throw Ce("schema.invalidValue",`${t}.antialiasing.samples`)}let n=Cr(r.postProcessing,`${t}.postProcessing`);n&&Ee(n,["bloom"],`${t}.postProcessing`);let o=n?Cr(n.bloom,`${t}.postProcessing.bloom`):null;if(o){Ee(o,["enabled","threshold","weight","kernel","scale"],`${t}.postProcessing.bloom`),Nt(o,"enabled",`${t}.postProcessing.bloom`);for(let i of["threshold","weight","kernel","scale"])At(o,i,`${t}.postProcessing.bloom`)}}function H_(e,t){if(e===void 0)return;let r=mt(e,t),n=Cr(r.rendering,`${t}.rendering`);n&&(Ee(n,["maxDpr","hardwareScalingLevel"],`${t}.rendering`),At(n,"maxDpr",`${t}.rendering`),W_(n,"hardwareScalingLevel",`${t}.rendering`));let o=Cr(r.textures,`${t}.textures`);if(o&&(Ee(o,["anisotropicFilteringLevel","samplingMode"],`${t}.textures`),At(o,"anisotropicFilteringLevel",`${t}.textures`),"samplingMode"in o&&(typeof o.samplingMode!="string"||!o.samplingMode.trim())))throw Ce("schema.invalidValue",`${t}.textures.samplingMode`)}function K_(e,t){if(e===void 0)return;let r=mt(e,t);Ee(r,["sceneMaterials","plantMaterials"],t);for(let n of["sceneMaterials","plantMaterials"])n in r&&mt(r[n],`${t}.${n}`)}function W_(e,t,r){!(t in e)||e[t]==null||At(e,t,r)}function q_(e,t){if(e===void 0)return;let r=mt(e,t);Ee(r,["enabled","plane","appearance","size"],t),Nt(r,"enabled",t),Pi(r.plane,`${t}.plane`,["height","yOffset"]);let n=Cr(r.appearance,`${t}.appearance`);n&&(Ee(n,["color","edgeSoftness"],`${t}.appearance`),Rl(n.color,`${t}.appearance.color`,!0),At(n,"edgeSoftness",`${t}.appearance`)),Pi(r.size,`${t}.size`,["sizeMultiplier","minSize","maxSize"])}function Y_(e,t){if(e===void 0)return;let r=mt(e,t);Ee(r,["enabled","plane","appearance","bake"],t),Nt(r,"enabled",t),Pi(r.plane,`${t}.plane`,["height","yOffset"]);let n=Cr(r.appearance,`${t}.appearance`);if(n&&(Ee(n,["color"],`${t}.appearance`),Rl(n.color,`${t}.appearance.color`,!0)),r.bake===void 0)return;let o=mt(r.bake,`${t}.bake`);for(let i of B_)if(i in o)throw Ce("schema.deprecatedField",`${t}.bake.${i}`);Ee(o,["padding","blur","texelsPerMeter","atlasSize","maxAtlasPages","sdfRadiusPx","spatialChunkSize","targetChunkCount"],`${t}.bake`);for(let i of["padding","blur","texelsPerMeter","atlasSize","maxAtlasPages","sdfRadiusPx","spatialChunkSize","targetChunkCount"])At(o,i,`${t}.bake`)}function J_(e,t){if(e===void 0)return;let r=mt(e,t);Ee(r,["enabled","plane","appearance","projection","stencil","casters","receivers"],t),Nt(r,"enabled",t);let n=Cr(r.plane,`${t}.plane`);if(n){Ee(n,["normal","height","bias","heightMode"],`${t}.plane`),Z_(n.normal,`${t}.plane.normal`);for(let c of["height","bias"])At(n,c,`${t}.plane`);if("heightMode"in n&&!["fixed","receiver"].includes(String(n.heightMode)))throw Ce("schema.invalidValue",`${t}.plane.heightMode`)}let o=Cr(r.appearance,`${t}.appearance`);o&&(Ee(o,["color"],`${t}.appearance`),Rl(o.color,`${t}.appearance.color`,!0)),Pi(r.projection,`${t}.projection`,["footprintScale"]);let i=Cr(r.stencil,`${t}.stencil`);if(i){Ee(i,["enabled","receiverRenderingGroup","shadowRenderingGroup"],`${t}.stencil`),Nt(i,"enabled",`${t}.stencil`);for(let c of["receiverRenderingGroup","shadowRenderingGroup"])At(i,c,`${t}.stencil`)}let a=Cr(r.casters,`${t}.casters`);if(a){Ee(a,["autoDetectAll","includePatterns","excludePatterns","rootBoundaryPatterns","minVolume"],`${t}.casters`),Nt(a,"autoDetectAll",`${t}.casters`);for(let c of["includePatterns","excludePatterns","rootBoundaryPatterns"])kf(a[c],`${t}.casters.${c}`);At(a,"minVolume",`${t}.casters`)}let s=Cr(r.receivers,`${t}.receivers`);s&&(Ee(s,["patterns"],`${t}.receivers`),kf(s.patterns,`${t}.receivers.patterns`))}function X_(e,t){if(e===void 0)return;let r=mt(e,t);Ee(r,["numCascades","lambda","cascadeBlendPercentage","stabilizeCascades"],t);for(let n of["numCascades","lambda","cascadeBlendPercentage"])At(r,n,t);Nt(r,"stabilizeCascades",t)}function Q_(e,t){if(e===void 0)return;let r=mt(e,t);Ee(r,["shadowReceivers","shadowCasters","excludeFromShadow"],t);for(let n of["shadowReceivers","shadowCasters","excludeFromShadow"])kf(r[n],`${t}.${n}`)}function Pi(e,t,r){if(e===void 0)return;let n=mt(e,t);Ee(n,r,t);for(let o of r)At(n,o,t)}function Rl(e,t,r){if(e===void 0)return;let n=mt(e,t),o=r?["r","g","b","a"]:["r","g","b"];Ee(n,o,t);for(let i of o)_f(n,i,t)}function Z_(e,t){if(e===void 0)return;let r=mt(e,t);Ee(r,["x","y","z"],t);for(let n of["x","y","z"])_f(r,n,t)}function kf(e,t){if(e!==void 0&&(!Array.isArray(e)||e.some(r=>typeof r!="string")))throw Ce("schema.invalidType",t)}function _f(e,t,r){if(!(t in e))throw Ce("schema.invalidValue",`${r}.${t}`);At(e,t,r)}function Cr(e,t){return e===void 0?null:mt(e,t)}function mt(e,t){let r=Ti(e);if(!r)throw Ce("schema.invalidType",t);return r}function Nt(e,t,r){if(t in e&&typeof e[t]!="boolean")throw Ce("schema.invalidValue",`${r}.${t}`)}function At(e,t,r){if(!(t in e))return;let n=e[t];if(typeof n!="number"||!Number.isFinite(n))throw Ce("schema.invalidValue",`${r}.${t}`)}function Ee(e,t,r){let n=new Set(t);for(let o of Object.keys(e))if(!n.has(o))throw Ce("schema.unknownField",`${r}.${o}`)}function Ce(e,t){let r=new Error(`${e}: ${t}`);return Object.assign(r,{code:e,path:t}),r}function Ti(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function ce(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function HE(e,t){let r=ce(e);return{x:pt(r.x,t.x),y:pt(r.y,t.y),z:pt(r.z,t.z)}}function Nf(e,t){let r=ce(e);return{r:$n(r.r,t.r,0,1),g:$n(r.g,t.g,0,1),b:$n(r.b,t.b,0,1)}}function uc(e,t){let r=ce(e);return{...Nf(r,t),a:$n(r.a,t.a,0,1)}}function xo(e){return Array.isArray(e)?e.map(t=>typeof t=="string"?t.trim():"").filter((t,r,n)=>t.length>0&&n.indexOf(t)===r):[]}function jf(e){return(typeof e=="string"?e.trim():"")||null}function Gf(e,t){return(typeof e=="string"?e.trim():"")||t}function jt(e,t){return typeof e=="boolean"?e:t}function KE(e){return e===0||e===1||e===2||e===3?e:null}function WE(e,t){return e==="standard"||e==="aces"||e==="khr-pbr-neutral"?e:t}function qE(e,t){return e===1||e===2||e===4||e===8?e:t}function YE(e,t){return e==="fixed"||e==="receiver"?e:t}function JE(e,t){return e==="none"||e==="blob"||e==="static"||e==="planar"||e==="dynamic"?e:t}function pt(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function ke(e,t){let r=pt(e,t);return Math.max(0,r)}function Mo(e,t){let r=pt(e,t);return r>0?r:t}function $n(e,t,r,n){let o=pt(e,t);return Math.min(n,Math.max(r,o))}var XE=["editor","grid","gizmo","helper","camera","light","decal","texture","trigger","collision","ui","_shadow","_planarShadow"],QE=[...XE,"_blobShadow"],eN=[...QE,"_staticProjectedShadow"];var ZE=[{renderingGroupId:0,name:"\u666E\u901A\u573A\u666F",alphaIndexPresets:[{name:"\u9ED8\u8BA4\u900F\u660E\u987A\u5E8F",alphaIndex:0},{name:"\u5730\u8868\u8D34\u82B1",alphaIndex:100},{name:"\u8FD1\u666F\u8986\u76D6",alphaIndex:200}]},{renderingGroupId:1,name:"\u6C34\u9762 / \u900F\u660E\u5730\u8868",alphaIndexPresets:[{name:"\u6C34\u9762",alphaIndex:0},{name:"\u900F\u660E\u5730\u8868",alphaIndex:100},{name:"\u6C34\u9762\u9AD8\u5149",alphaIndex:200}]},{renderingGroupId:2,name:"\u7279\u6548",alphaIndexPresets:[{name:"\u666E\u901A\u7279\u6548",alphaIndex:0},{name:"\u524D\u666F\u7279\u6548",alphaIndex:100},{name:"\u6700\u524D\u7279\u6548",alphaIndex:200}]},{renderingGroupId:3,name:"\u4E16\u754C\u7A7A\u95F4 UI / \u5F15\u5BFC\u7BAD\u5934",alphaIndexPresets:[{name:"\u4E16\u754C\u7A7A\u95F4 UI",alphaIndex:0},{name:"\u5F15\u5BFC\u7BAD\u5934",alphaIndex:100},{name:"\u9876\u5C42\u63D0\u793A",alphaIndex:200}]}];function dn(e){e!=null&&Ht(e);let t=ce(e),r=ce(t.shadows),n=ce(r.settings),o=ce(r.blob),i=tN(o),a=nN(r.staticProjected),s=ce(r.shadowRange),c=ce(r.shadowOrtho),d=ce(r.csm),u=ce(t.shadowMeshes);return{renderingGroups:eI(t.renderingGroups),environment:oN(t.globalVolume),postProcess:iN(t.globalVolume),shadows:{defaultMode:JE(r.defaultMode,"none"),enabled:jt(r.enabled,!1),useCsm:jt(r.useCsm,!1),settings:{mapSize:ke(n.mapSize,1024),darkness:ke(n.darkness,.3),blurKernel:ke(n.blurKernel,16),bias:ke(n.bias,5e-5),normalBias:ke(n.normalBias,.02),useBlurExponentialShadowMap:jt(n.useBlurExponentialShadowMap,!0),shadowMinZ:ke(n.shadowMinZ,1),shadowMaxZ:ke(n.shadowMaxZ,60),shadowColor:Nf(n.shadowColor,{r:0,g:0,b:0})},blob:i,staticProjected:a,shadowRange:{minZ:ke(s.minZ,1),maxZ:ke(s.maxZ,60)},shadowOrtho:{left:pt(c.left,-20),right:pt(c.right,20),top:pt(c.top,20),bottom:pt(c.bottom,-20)},csm:{numCascades:ke(d.numCascades,2),lambda:$n(d.lambda,.5,0,1),cascadeBlendPercentage:$n(d.cascadeBlendPercentage,.1,0,1),stabilizeCascades:jt(d.stabilizeCascades,!0)},planar:rN(r.planar)},shadowMeshes:{shadowReceivers:xo(u.shadowReceivers),shadowCasters:xo(u.shadowCasters),excludeFromShadow:xo(u.excludeFromShadow)}}}function xa(e){let t=e?.environment?.texture!=null;return{environmentTextureAssetId:e?.environment?.texture?.textureAssetId??null,environmentTextureUrl:e?.environment?.texture?.url??null,environmentIblIntensity:t?e?.environment?.iblIntensity??null:null,postProcessEnabled:e?.postProcess?.enabled??null,postProcessExposure:e?.postProcess?.imageProcessing?.exposure??null,postProcessBloomEnabled:e?.postProcess?.bloom?.enabled??null,blobEnabled:e?.shadows?.blob?.enabled??null,blobOpacity:e?.shadows?.blob?.appearance?.color?.a??null,staticProjectedEnabled:e?.shadows?.staticProjected?.enabled??null,staticProjectedOpacity:e?.shadows?.staticProjected?.appearance?.color?.a??null,planarEnabled:e?.shadows?.planar?.enabled??null,planarOpacity:e?.shadows?.planar?.appearance?.color?.a??null,planeHeight:e?.shadows?.planar?.plane?.height??null,planeBias:e?.shadows?.planar?.plane?.bias??null,stencilEnabled:e?.shadows?.planar?.stencil?.enabled??null}}function tN(e){let t=ce(e),r=ce(t.plane),n=ce(t.appearance),o=ce(t.size),i=uc(n.color,{r:0,g:0,b:0,a:.35});return{enabled:jt(t.enabled,!0),plane:{height:pt(r.height,0),yOffset:ke(r.yOffset,.08)},appearance:{color:uc(n.color,i),edgeSoftness:$n(n.edgeSoftness,.55,0,.98)},size:{sizeMultiplier:ke(o.sizeMultiplier,1.25),minSize:ke(o.minSize,.25),maxSize:Mo(o.maxSize,20)}}}function eI(e){let t=ce(e),r=Array.isArray(t.slots)?t.slots:[];return{slots:ZE.map(n=>{let o=r.find(a=>KE(ce(a).renderingGroupId)===n.renderingGroupId),i=ce(o);return{renderingGroupId:n.renderingGroupId,name:Gf(i.name,n.name),alphaIndexPresets:tI(i.alphaIndexPresets,n.alphaIndexPresets)}})}}function tI(e,t){let r=Array.isArray(e)?e:t,n=new Set,o=[];return r.forEach((i,a)=>{let s=ce(i),c=pt(s.alphaIndex,Number.NaN);!Number.isFinite(c)||n.has(c)||(n.add(c),o.push({name:Gf(s.name,`Order ${a+1}`),alphaIndex:c}))}),o}function rN(e){let t=ce(e),r=ce(t.plane),n=ce(t.appearance),o=ce(t.projection),i=ce(t.stencil),a=ce(t.casters),s=ce(t.receivers);return{enabled:jt(t.enabled,!0),plane:{normal:HE(r.normal,{x:0,y:1,z:0}),height:pt(r.height,0),heightMode:YE(r.heightMode,"receiver"),bias:ke(r.bias,.4)},appearance:{color:uc(n.color,{r:0,g:0,b:0,a:.35})},projection:{footprintScale:$n(o.footprintScale,1,0,2)},stencil:{enabled:jt(i.enabled,!0),receiverRenderingGroup:ke(i.receiverRenderingGroup,0),shadowRenderingGroup:ke(i.shadowRenderingGroup,1)},casters:{autoDetectAll:jt(a.autoDetectAll,!0),includePatterns:xo(a.includePatterns),excludePatterns:xo(a.excludePatterns),rootBoundaryPatterns:xo(a.rootBoundaryPatterns),minVolume:ke(a.minVolume,.001)},receivers:{patterns:xo(s.patterns)}}}function nN(e){let t=ce(e),r=ce(t.plane),n=ce(t.appearance),o=ce(t.bake),i=Mo(o.spatialChunkSize,16);return{enabled:jt(t.enabled,!1),plane:{height:pt(r.height,0),yOffset:ke(r.yOffset,.08)},appearance:{color:uc(n.color,{r:0,g:0,b:0,a:.35})},bake:{padding:ke(o.padding,.15),blur:ke(o.blur,0),texelsPerMeter:Mo(o.texelsPerMeter,256),atlasSize:Mo(o.atlasSize,4096),maxAtlasPages:Mo(o.maxAtlasPages,8),sdfRadiusPx:ke(o.sdfRadiusPx,8),spatialChunkSize:i,targetChunkCount:Mo(o.targetChunkCount,64)}}}function oN(e){let t=ce(e),r=ce(t.environment),n=ce(r.texture),o=jf(n.textureAssetId),i=jf(n.url);return{texture:o||i?{...o?{textureAssetId:o}:{},...i?{url:i}:{}}:null,iblIntensity:ke(r.iblIntensity,1),rotationY:pt(r.rotationY,0)}}function iN(e){let t=ce(e),r=ce(t.imageProcessing),n=ce(t.toneMapping),o=ce(t.antialiasing),i=ce(t.postProcessing),a=ce(i.bloom);return{enabled:jt(t.enabled,!0),hdr:jt(t.hdr,!0),imageProcessing:{exposure:pt(r.exposure,1),contrast:pt(r.contrast,1)},toneMapping:{enabled:jt(n.enabled,!0),type:WE(n.type,"aces")},antialiasing:{samples:qE(o.samples,4)},bloom:{enabled:jt(a.enabled,!1),threshold:ke(a.threshold,.9),weight:ke(a.weight,.2),kernel:ke(a.kernel,64),scale:Mo(a.scale,.5)}}}var aN=new Set([".glb",".gltf",".png",".jpg",".jpeg",".webp",".env",".hdr",".dds",".ktx",".ktx2",".mp3",".wav",".ogg",".flac",".aac",".m4a"]);function Lf(e){let t=String(e??"").trim().toLowerCase();if(/^\.[a-z0-9]+$/.test(t))return t;let r=t.split(/[?#]/,1)[0]??"",n=r.slice(r.lastIndexOf("/")+1),o=n.lastIndexOf(".");return o<=0||o===n.length-1?null:n.slice(o)}function Ff(e){return aN.has(e)}function Cl(e){return e==="fps.builtin.pbr"||e==="fps.builtin.standard"?e:void 0}function Ol(e){if(!e||typeof e!="object")return;let t={};(e.lightingModel==="lit"||e.lightingModel==="unlit")&&(t.lightingModel=e.lightingModel);let r={},n=rI(e.baseColor?.color);n&&(r.color=n);let o=Ai(e.baseColor?.texture);o!==void 0&&(r.texture=o),Bn(e.baseColor,r,"brightness"),Bn(e.baseColor,r,"saturation"),Bn(e.baseColor,r,"contrast"),Bn(e.baseColor,r,"hue"),Object.keys(r).length>0&&(t.baseColor=r);let i={},a=Ai(e.normal?.texture);a!==void 0&&(i.texture=a),Bn(e.normal,i,"strength"),Object.keys(i).length>0&&(t.normal=i),Da(e.metallic)&&(t.metallic=e.metallic),Da(e.roughness)&&(t.roughness=e.roughness);let s={},c=Ai(e.metallicRoughness?.texture);c!==void 0&&(s.texture=c),Object.keys(s).length>0&&(t.metallicRoughness=s);let d={},u=Ai(e.occlusion?.texture);u!==void 0&&(d.texture=u),Bn(e.occlusion,d,"strength"),Object.keys(d).length>0&&(t.occlusion=d);let l={},m=rI(e.emission?.color);m&&(l.color=m),Bn(e.emission,l,"intensity");let p=Ai(e.emission?.texture);p!==void 0&&(l.texture=p);let f=Ai(e.emission?.maskTexture);f!==void 0&&(l.maskTexture=f),Object.keys(l).length>0&&(t.emission=l);let g={};(e.alpha?.mode==="opaque"||e.alpha?.mode==="mask"||e.alpha?.mode==="blend")&&(g.mode=e.alpha.mode),Bn(e.alpha,g,"opacity"),Bn(e.alpha,g,"cutoff");let S=Ai(e.alpha?.texture);return S!==void 0&&(g.texture=S),Object.keys(g).length>0&&(t.alpha=g),Object.keys(t).length>0?t:void 0}function Do(...e){let t={};for(let r of e){let n=Ol(r);n&&(n.lightingModel&&(t.lightingModel=n.lightingModel),Ma(t,n,"baseColor"),Ma(t,n,"normal"),n.metallic!==void 0&&(t.metallic=n.metallic),n.roughness!==void 0&&(t.roughness=n.roughness),Ma(t,n,"metallicRoughness"),Ma(t,n,"occlusion"),Ma(t,n,"emission"),Ma(t,n,"alpha"))}return Ol(t)??{}}function Ma(e,t,r){let n=t[r];n&&Object.assign(e,{[r]:{...e[r]??{},...n}})}function rI(e){return e&&Da(e.r)&&Da(e.g)&&Da(e.b)?{r:e.r,g:e.g,b:e.b}:void 0}function Ai(e){if(e===null)return null;if(!e||typeof e!="object")return;let t=typeof e.url=="string"?e.url.trim():"",r=typeof e.textureAssetId=="string"?e.textureAssetId.trim():"";if(!(!t&&!r))return{...t?{url:t}:{},...r?{textureAssetId:r}:{}}}function Bn(e,t,r){Da(e?.[r])&&(t[r]=e[r])}function Da(e){return typeof e=="number"&&Number.isFinite(e)}var Ra="staticShadows";function wr(e){let t=Un(e);if(!t)return null;let r=dt(t.sourceHash),n=dt(t.lightHash),o=dt(t.profileHash);if(!r||!n||!o)return null;let i={sourceHash:r,lightHash:n,profileHash:o,...typeof t.generatedAt=="string"&&t.generatedAt.trim()?{generatedAt:t.generatedAt.trim()}:{},...(()=>{let u=fN(t.stats);return u?{stats:u}:{}})()};if(t.version!==2||t.format!=="sdf-atlas"||!Array.isArray(t.pages)||!Array.isArray(t.chunks))return null;let a=[],s=new Map;for(let u of t.pages){let l=sN(u);if(!l||s.has(l.id))return null;a.push(l),s.set(l.id,l)}let c=[],d=new Set;for(let u of t.chunks){let l=cN(u,s);if(!l||d.has(l.id))return null;c.push(l),d.add(l.id)}return{version:2,format:"sdf-atlas",pages:a,chunks:c,...i}}function un(e,t="$.staticShadows"){let r=wr(e);if(r)return r;let n=new Error(`schema.unsupportedVersion: ${t}`);throw Object.assign(n,{code:"schema.unsupportedVersion",path:t}),n}function sN(e){let t=Un(e);if(!t)return null;let r=dt(t.id),n=_l(t.width),o=_l(t.height),i=gN(t.sdfTextureDataUrl);return!r||n==null||o==null||!i?null:{id:r,width:n,height:o,sdfTextureDataUrl:i}}function cN(e,t){let r=Un(e);if(!r)return null;let n=dt(r.id),o=mN(r.bounds),i=pN(r.plane),a=dt(r.pageId),s=lN(r.atlasRect),c=uN(r.atlasUv),d=SN(r.sourceNodeIds),u=dt(r.sourceHash),l=dt(r.lightHash),m=dt(r.profileHash);if(!n||!o||!i||!a||!s||!c||!d||!u||!l||!m)return null;let p=t.get(a);return!p||s.x+s.width>p.width||s.y+s.height>p.height?null:{id:n,bounds:o,plane:i,pageId:a,atlasRect:s,atlasUv:c,sourceNodeIds:d,sourceHash:u,lightHash:l,profileHash:m,...(()=>{let f=dN(r.binding);return f?{binding:f}:{}})()}}function dN(e){let t=Un(e);if(!t)return null;let r=dt(t.id),n=dt(t.ownerCasterId),o=dt(t.receiverId),i=dt(t.generatedAt),a=dt(t.sourceHash);if(!r||!n||!o||!i||!a||t.visibleWhenOwnerVisible!==!0||t.staleWhenOwnerTransformChanges!==!0||t.staleWhenLightChanges!==!0)return null;let s=dt(t.lightId),c=dt(t.textureAssetId),d=dt(t.projectionNodeId);return{id:r,ownerCasterId:n,receiverId:o,...s?{lightId:s}:{},...c?{textureAssetId:c}:{},...d?{projectionNodeId:d}:{},visibleWhenOwnerVisible:!0,staleWhenOwnerTransformChanges:!0,staleWhenLightChanges:!0,generatedAt:i,sourceHash:a}}function lN(e){let t=Un(e);if(!t)return null;let r=Ro(t.x),n=Ro(t.y),o=_l(t.width),i=_l(t.height);return r==null||n==null||o==null||i==null?null:{x:r,y:n,width:o,height:i}}function uN(e){let t=Un(e);if(!t)return null;let r=wl(t.u0),n=wl(t.v0),o=wl(t.u1),i=wl(t.v1);return r==null||n==null||o==null||i==null||o<=r||i<=n?null:{u0:r,v0:n,u1:o,v1:i}}function mN(e){let t=Un(e);if(!t)return null;let r=ln(t.minX),n=ln(t.maxX),o=ln(t.minZ),i=ln(t.maxZ),a=ln(t.y);return r==null||n==null||o==null||i==null||a==null||n<=r||i<=o?null:{minX:r,maxX:n,minZ:o,maxZ:i,y:a}}function pN(e){let t=Un(e);if(!t)return null;let r=ln(t.height),n=ln(t.yOffset);return r==null||n==null||n<0?null:{height:r,yOffset:n}}function fN(e){let t=Un(e);if(!t)return null;let r=Ro(t.sourceRootCount),n=Ro(t.sourceMeshCount),o=Ro(t.attemptedChunkCount),i=Ro(t.chunkCount),a=Ro(t.textureCount);return r==null||n==null||o==null||i==null||a==null?null:{sourceRootCount:r,sourceMeshCount:n,attemptedChunkCount:o,chunkCount:i,textureCount:a,...vl(t.skippedChunkCount,"skippedChunkCount"),...vl(t.pageCount,"pageCount"),...zn(t.resolution,"resolution"),...zn(t.chunkSize,"chunkSize"),...zn(t.atlasSize,"atlasSize"),...kl(t.atlasUsedPixels,"atlasUsedPixels"),...kl(t.atlasAllocatedPixels,"atlasAllocatedPixels"),...hN(t.atlasOccupancy,"atlasOccupancy"),...zn(t.texelsPerMeter,"texelsPerMeter"),...zn(t.effectiveTexelsPerMeter,"effectiveTexelsPerMeter"),...zn(t.maxAtlasPages,"maxAtlasPages"),...kl(t.sdfRadiusPx,"sdfRadiusPx"),...zn(t.spatialChunkSize,"spatialChunkSize"),...zn(t.effectiveSpatialChunkSize,"effectiveSpatialChunkSize"),...zn(t.targetChunkCount,"targetChunkCount"),...vl(t.bakedChunkCount,"bakedChunkCount"),...vl(t.reusedChunkCount,"reusedChunkCount"),...kl(t.durationMs,"durationMs")}}function gN(e){let t=dt(e);return t&&/^data:image\/png[;,]/i.test(t)?t:null}function SN(e){if(!Array.isArray(e)||e.length===0)return null;let t=[],r=new Set;for(let n of e){let o=dt(n);if(!o)return null;r.has(o)||t.push(o),r.add(o)}return t}function dt(e){return typeof e=="string"&&e.trim()?e.trim():null}function ln(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ro(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}function _l(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:null}function wl(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1?e:null}function vl(e,t){let r=Ro(e);return r==null?{}:{[t]:r}}function zn(e,t){let r=ln(e);return r==null||r<=0?{}:{[t]:r}}function kl(e,t){let r=ln(e);return r==null||r<0?{}:{[t]:r}}function hN(e,t){let r=ln(e);return r==null||r<0||r>1?{}:{[t]:r}}function Un(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}var yN="@fps-games/editor.playable-sdk.scene-compiler",bN="2",EN=1e-4,cr={nodeKinds:["group","instance","transform","primitive","image"],primitiveShapes:["cube","sphere","plane","capsule"],transformTypes:["plain","light","camera","groundDecal"],assetTypes:["glb","texture"],materialScopes:["sharedAsset","nodeMaterial"],materialModes:["shared","instance"],materialShaderIds:["fps.builtin.pbr","fps.builtin.standard"],materialAssetSystemPresets:["default-pbr","default-standard"],runtimeV3:{assetFields:["id","guid","type","url","external","warmupCount","singleton","materialMode","defaults","materialSlots"],materialSlotFields:["slotId","label","sourceSurfaces"],materialSlotSourceSurfaceFields:["ownerNodePath","nodeIndex","nodeIndexPath","meshIndex","primitiveIndex","sourceMaterialIndex","sourceMeshName"]},hierarchy:{parentTargets:["root","sceneNode"]},runtimeOnlyTokens:["/@fs","assetUrl","sourceAssetUrl","sourceAssetPath"]},IN=new Set(cr.nodeKinds),TN=new Set(cr.primitiveShapes),PN=new Set(cr.assetTypes),AN=new Set(cr.materialModes),xN=new Set(cr.materialScopes),MN=new Set(cr.materialAssetSystemPresets),DN=new Set(cr.transformTypes),mc=new Set(cr.hierarchy.parentTargets),RN=cr.runtimeOnlyTokens,ON=new Set(cr.runtimeV3.assetFields),CN=new Set(cr.runtimeV3.materialSlotFields),wN=new Set(cr.runtimeV3.materialSlotSourceSurfaceFields);function vN(e,t={}){let{allowOrphanSharedMaterials:r=!0,allowOrphanNodeMaterials:n=!0,strictAssetIds:o=[],strictNodeIds:i=[],maxErrors:a=50}=t,s=Number.isInteger(a)&&a>0?a:50,c=[],d=new Set(o),u=new Set(i),l=(b,k)=>{c.length<s&&c.push({path:b,message:k})};if(!z(e))return l("$","scene json must be an object"),c;let m=e.schemaVersion;m!==2&&m!==3&&l("$.schemaVersion","schemaVersion must be 2 or 3"),zN(e.meta?.generatedFrom,"$.meta.generatedFrom",l);let p=XN(e),f=e.scene;if(!z(f))return l("$.scene","scene must be an object"),c;if(W(f.rootId)||l("$.scene.rootId","rootId must be a non-empty string"),Array.isArray(f.assets)||l("$.scene.assets","assets must be an array"),Array.isArray(f.nodes)||l("$.scene.nodes","nodes must be an array"),Array.isArray(f.materialAssets)||l("$.scene.materialAssets","materialAssets must be an array"),Array.isArray(f.materials)||l("$.scene.materials","materials must be an array"),Array.isArray(f.textures)||l("$.scene.textures","textures must be an array"),c.length>0)return c;e.staticShadows!=null&&nI(()=>un(e.staticShadows,"$.staticShadows"),"$.staticShadows",l);let g=new Set,S=new Map,P=new Map,x=new Set,T=new Set([f.rootId]),R=new Map,A=new Map,E=new Set;return f.assets.forEach((b,k)=>{let O=`$.scene.assets[${k}]`;if(!z(b)){l(O,"asset must be an object");return}if(W(b.id)?g.has(b.id)?l(`${O}.id`,`duplicate asset id: ${b.id}`):(g.add(b.id),S.set(b.id,b.type)):l(`${O}.id`,"asset.id must be a non-empty string"),PN.has(b.type)||l(`${O}.type`,"asset.type must be glb or texture"),b.guid!=null&&!W(b.guid)&&l(`${O}.guid`,"asset.guid must be a non-empty string when present"),b.url!=null&&!W(b.url)&&l(`${O}.url`,"url must be a non-empty string when present"),b.external!=null&&!z(b.external)&&l(`${O}.external`,"external must be an object when present"),b.warmupCount!=null&&(!Number.isInteger(b.warmupCount)||b.warmupCount<0)&&l(`${O}.warmupCount`,"warmupCount must be a non-negative integer when present"),b.singleton!=null&&typeof b.singleton!="boolean"&&l(`${O}.singleton`,"singleton must be a boolean when present"),b.materialMode!=null&&!AN.has(b.materialMode)&&l(`${O}.materialMode`,"materialMode must be shared or instance"),BN(b.defaults,`${O}.defaults`,l),m===3)for(let K of Object.keys(b))ON.has(K)||l(`${O}.${K}`,`runtime schema v3 asset field is not allowed: ${K}`);else b.displayName!=null&&!W(b.displayName)&&l(`${O}.displayName`,"displayName must be a non-empty string when present"),b.category!=null&&!W(b.category)&&l(`${O}.category`,"category must be a non-empty string when present"),b.metadata!=null&&!z(b.metadata)&&l(`${O}.metadata`,"metadata must be an object when present");let $=m===3?b.materialSlots:z(b.metadata)?b.metadata.materialSlots:void 0,te=m===3?`${O}.materialSlots`:`${O}.metadata.materialSlots`,de=new Set;$!=null&&(Array.isArray($)?$.forEach((K,He)=>{let ze=`${te}[${He}]`;if(!z(K)||!W(K.slotId)){l(ze,m===3?"material slot must contain a stable slotId":"material slot must contain stable slotId and ownerNodePath");return}if(m!==3&&!W(K.ownerNodePath)){l(ze,"material slot must contain stable slotId and ownerNodePath");return}de.has(K.slotId)?l(`${ze}.slotId`,`duplicate material slot id: ${K.slotId}`):de.add(K.slotId),m===3&&$N(K,ze,l)}):l(te,"materialSlots must be an array when present")),W(b.id)&&P.set(b.id,de),d.has(b.id)&&aI(b,O,l)}),f.nodes.forEach((b,k)=>{let O=`$.scene.nodes[${k}]`;if(!z(b)){l(O,"node must be an object");return}W(b.id)&&R.set(b.id,b),W(b.id)?T.has(b.id)?l(`${O}.id`,`duplicate node id: ${b.id}`):(T.add(b.id),typeof b.kind=="string"&&A.set(b.id,b.kind),b.kind==="transform"&&Object.prototype.hasOwnProperty.call(b,"marker")&&E.add(b.id)):l(`${O}.id`,"node.id must be a non-empty string"),IN.has(b.kind)||l(`${O}.kind`,"node.kind must be group, instance, transform, primitive, or image")}),f.materialAssets.forEach((b,k)=>{let O=`$.scene.materialAssets[${k}]`;if(!z(b)){l(O,"material asset must be an object");return}W(b.id)?x.has(b.id)?l(`${O}.id`,`duplicate material asset id: ${b.id}`):x.add(b.id):l(`${O}.id`,"material asset id must be a non-empty string"),b.name!=null&&!W(b.name)&&l(`${O}.name`,"material asset name must be a non-empty string when present"),b.guid!=null&&!W(b.guid)&&l(`${O}.guid`,"material asset guid must be a non-empty string when present"),Object.prototype.hasOwnProperty.call(b,"materialKind")&&l(`${O}.materialKind`,"materialKind is not supported; use shaderId"),Object.prototype.hasOwnProperty.call(b,"profile")&&l(`${O}.profile`,"profile is not supported; use properties"),Cl(b.shaderId)||l(`${O}.shaderId`,"shaderId must be fps.builtin.pbr or fps.builtin.standard"),dI(b.properties,`${O}.properties`,l);for(let $ of Object.keys(b))["id","guid","name","shaderId","properties","system","origin"].includes($)||l(`${O}.${$}`,`material asset field is not allowed: ${$}`);NN(b.system,`${O}.system`,l),jN(b.origin,`${O}.origin`,l),GN(b,O,l)}),f.nodes.forEach((b,k)=>{if(!z(b))return;let O=`$.scene.nodes[${k}]`,$=Object.prototype.hasOwnProperty.call(b,"parentId");$&&!W(b.parentId)&&l(`${O}.parentId`,"parentId must be a non-empty string when present");let te=$?b.parentId:f.rootId;W(te)&&LN(te,f.rootId,T,`${O}.parentId`,l),W(b.id)&&FN(b.id,f.rootId,R,`${O}.parentId`,l),UN(b.source,`${O}.source`,l),uI(b.transform,`${O}.transform`,l),cj(b.rendering,`${O}.rendering`,l),b.shadow!=null&&nI(()=>ac(b.shadow,`${O}.shadow`),`${O}.shadow`,l),Object.prototype.hasOwnProperty.call(b,"shadowMode")&&l(`${O}.shadowMode`,"deprecated field; use shadow.mode");let de=null;b.kind==="instance"&&(z(b.instance)?g.has(b.instance.assetId)?S.get(b.instance.assetId)!=="glb"?l(`${O}.instance.assetId`,"instance.assetId must reference a glb asset"):de=W(b.instance.assetId)?b.instance.assetId:null:l(`${O}.instance.assetId`,`assetId must reference scene.assets: ${b.instance.assetId}`):l(`${O}.instance`,"instance node must contain instance object")),b.kind==="primitive"&&(z(b.primitive)?TN.has(b.primitive.shape)||l(`${O}.primitive.shape`,"primitive.shape must be cube, sphere, plane, or capsule"):l(`${O}.primitive`,"primitive node must contain primitive object")),b.kind==="image"&&(z(b.image)?(g.has(b.image.assetId)?S.get(b.image.assetId)!=="texture"&&l(`${O}.image.assetId`,"image.assetId must reference a texture asset"):l(`${O}.image.assetId`,`assetId must reference scene.assets: ${b.image.assetId}`),z(b.image.size)?(iI(b.image.size.width)||l(`${O}.image.size.width`,"image.size.width must be positive"),iI(b.image.size.height)||l(`${O}.image.size.height`,"image.size.height must be positive")):l(`${O}.image.size`,"image.size must be an object")):l(`${O}.image`,"image node must contain image object")),b.kind==="transform"&&b.transformType!=null&&!DN.has(b.transformType)&&l(`${O}.transformType`,"transformType must be plain, light, camera, or groundDecal"),b.kind==="transform"&&b.transformType==="groundDecal"?ej(b.groundDecal,`${O}.groundDecal`,l):Object.prototype.hasOwnProperty.call(b,"groundDecal")&&l(`${O}.groundDecal`,"groundDecal is only allowed on transform nodes with transformType groundDecal"),b.kind==="transform"&&(JN(b.camera,`${O}.camera`,l),QN(b.light,`${O}.light`,l,p)),Object.prototype.hasOwnProperty.call(b,"marker")&&(b.kind!=="transform"?l(`${O}.marker`,"marker is only allowed on transform nodes"):(VN(b.marker,`${O}.marker`,l),HN(b.marker,b.id,T,E,`${O}.marker`,l))),(b.kind==="instance"||b.kind==="transform"||b.kind==="primitive"||b.kind==="image")&&kN(b.overrides,`${O}.overrides`,x,de?P.get(de):void 0,m===3?"materialSlots":"metadata.materialSlots",l),u.has(b.id)&&aI(b,O,l)}),f.materials.forEach((b,k)=>{let O=`$.scene.materials[${k}]`;if(!z(b)){l(O,"material must be an object");return}if(W(b.id)||l(`${O}.id`,"material.id must be a non-empty string"),b.scope!=null&&!xN.has(b.scope)&&l(`${O}.scope`,"material scope must be sharedAsset or nodeMaterial"),b.scope==="sharedAsset"&&(!W(b.assetId)||!g.has(b.assetId))&&!r&&l(`${O}.assetId`,`shared material assetId must reference scene.assets: ${b.assetId}`),b.scope==="nodeMaterial"){if((!W(b.nodeId)||!T.has(b.nodeId))&&!n)l(`${O}.nodeId`,`node material nodeId must reference scene.nodes: ${b.nodeId}`);else if(W(b.nodeId)&&T.has(b.nodeId)){let $=A.get(b.nodeId);$!=="instance"&&$!=="transform"&&$!=="primitive"&&l(`${O}.nodeId`,`node material nodeId must reference an instance, transform, or primitive node: ${b.nodeId}`)}}W(b.materialName)||l(`${O}.materialName`,"materialName must be a non-empty string"),z(b.properties)?pI(b.properties,`${O}.properties`,l):l(`${O}.properties`,"properties must be an object")}),c}function sI(e,t={}){let r=vN(e,t);return{ok:r.length===0,errors:r}}function nI(e,t,r){try{e()}catch(n){let o=typeof n?.path=="string"?n.path:t,i=typeof n?.code=="string"?n.code:"schema.invalidValue";r(o,i)}}function kN(e,t,r,n,o,i){if(e!=null){if(!z(e)){i(t,"overrides must be an object when present");return}cI(e.materialBinding,`${t}.materialBinding`,r,i),_N(e.materialSlotBindings,`${t}.materialSlotBindings`,"slotId",r,n,o,i),Object.prototype.hasOwnProperty.call(e,"childMaterialBindings")&&i(`${t}.childMaterialBindings`,"deprecated field; use materialSlotBindings keyed by slotId"),Object.prototype.hasOwnProperty.call(e,"childMaterials")&&i(`${t}.childMaterials`,"deprecated field; use materialSlotBindings keyed by slotId")}}function _N(e,t,r,n,o,i,a){if(e!=null){if(!z(e)){a(t,"material binding map must be an object when present");return}for(let[s,c]of Object.entries(e)){let d=`${t}.${s}`;W(s)||a(d,`${r} must be a non-empty string`),o?o.has(s)||a(d,`${r} must reference asset ${i}`):a(d,`${r} requires an instance asset with ${i}`),c==null?a(d,"material binding must be an object"):cI(c,d,n,a)}}}function cI(e,t,r,n){if(e!=null){if(!z(e)){n(t,"material binding must be an object when present");return}e.materialAssetId!=null&&(W(e.materialAssetId)?r.has(e.materialAssetId)||n(`${t}.materialAssetId`,`materialAssetId must reference scene.materialAssets: ${e.materialAssetId}`):n(`${t}.materialAssetId`,"materialAssetId must be non-empty when present")),e.override!=null&&dI(e.override,`${t}.override`,n)}}function dI(e,t,r){if(!z(e)){r(t,"material asset profile must be an object");return}if(e.lightingModel!=null&&e.lightingModel!=="lit"&&e.lightingModel!=="unlit"&&r(`${t}.lightingModel`,"lightingModel must be lit or unlit"),e.baseColor!=null)if(!z(e.baseColor))r(`${t}.baseColor`,"baseColor must be an object");else{Nl(e.baseColor.color,`${t}.baseColor.color`,r),xi(e.baseColor.texture,`${t}.baseColor.texture`,r);for(let n of["brightness","saturation","contrast","hue"])e.baseColor[n]!=null&&!Kt(e.baseColor[n])&&r(`${t}.baseColor.${n}`,`${n} must be a finite number`)}for(let n of["metallic","roughness"])e[n]!=null&&!Kt(e[n])&&r(`${t}.${n}`,`${n} must be a finite number`);e.normal!=null&&(z(e.normal)?(xi(e.normal.texture,`${t}.normal.texture`,r),e.normal.strength!=null&&!Kt(e.normal.strength)&&r(`${t}.normal.strength`,"normal strength must be a finite number")):r(`${t}.normal`,"normal must be an object")),e.metallicRoughness!=null&&(z(e.metallicRoughness)?xi(e.metallicRoughness.texture,`${t}.metallicRoughness.texture`,r):r(`${t}.metallicRoughness`,"metallicRoughness must be an object")),e.occlusion!=null&&(z(e.occlusion)?(xi(e.occlusion.texture,`${t}.occlusion.texture`,r),e.occlusion.strength!=null&&!Kt(e.occlusion.strength)&&r(`${t}.occlusion.strength`,"occlusion strength must be a finite number")):r(`${t}.occlusion`,"occlusion must be an object")),e.emission!=null&&(z(e.emission)?(Nl(e.emission.color,`${t}.emission.color`,r),e.emission.intensity!=null&&!Kt(e.emission.intensity)&&r(`${t}.emission.intensity`,"emission intensity must be a finite number"),xi(e.emission.texture,`${t}.emission.texture`,r),xi(e.emission.maskTexture,`${t}.emission.maskTexture`,r)):r(`${t}.emission`,"emission must be an object")),e.alpha!=null&&(z(e.alpha)?(e.alpha.mode!=null&&e.alpha.mode!=="opaque"&&e.alpha.mode!=="mask"&&e.alpha.mode!=="blend"&&r(`${t}.alpha.mode`,"alpha mode must be opaque, mask, or blend"),e.alpha.opacity!=null&&!Kt(e.alpha.opacity)&&r(`${t}.alpha.opacity`,"alpha opacity must be a finite number"),e.alpha.cutoff!=null&&!Kt(e.alpha.cutoff)&&r(`${t}.alpha.cutoff`,"alpha cutoff must be a finite number"),xi(e.alpha.texture,`${t}.alpha.texture`,r)):r(`${t}.alpha`,"alpha must be an object"))}function xi(e,t,r){if(e!=null){if(!z(e)){r(t,"texture ref must be an object");return}e.url!=null&&!W(e.url)&&r(`${t}.url`,"texture url must be non-empty when present"),e.textureAssetId!=null&&!W(e.textureAssetId)&&r(`${t}.textureAssetId`,"textureAssetId must be non-empty when present")}}function NN(e,t,r){if(e!=null){if(!z(e)){r(t,"material asset system must be an object");return}e.readonly!=null&&typeof e.readonly!="boolean"&&r(`${t}.readonly`,"readonly must be boolean"),e.preset!=null&&!MN.has(e.preset)&&r(`${t}.preset`,"preset must be default-pbr or default-standard")}}function jN(e,t,r){if(e!=null){if(!z(e)){r(t,"material asset origin must be an object");return}e.type!=="imported"&&e.type!=="created"&&e.type!=="duplicated"&&e.type!=="preset"&&r(`${t}.type`,"origin type must be imported, created, duplicated, or preset"),e.sourceAssetGuid!=null&&!W(e.sourceAssetGuid)&&r(`${t}.sourceAssetGuid`,"sourceAssetGuid must be non-empty when present"),e.sourceAssetId!=null&&!W(e.sourceAssetId)&&r(`${t}.sourceAssetId`,"sourceAssetId must be non-empty when present"),e.sourceSlotId!=null&&!W(e.sourceSlotId)&&r(`${t}.sourceSlotId`,"sourceSlotId must be non-empty when present"),e.sourceMaterialIndex!=null&&!Number.isInteger(e.sourceMaterialIndex)&&r(`${t}.sourceMaterialIndex`,"sourceMaterialIndex must be an integer when present"),e.sourceMaterialName!=null&&!W(e.sourceMaterialName)&&r(`${t}.sourceMaterialName`,"sourceMaterialName must be non-empty when present"),e.sourceMaterialAssetId!=null&&!W(e.sourceMaterialAssetId)&&r(`${t}.sourceMaterialAssetId`,"sourceMaterialAssetId must be non-empty when present")}}function GN(e,t,r){let n=z(e.system)?e.system.preset:void 0;n==="default-pbr"&&e.shaderId!=="fps.builtin.pbr"&&r(`${t}.shaderId`,"default-pbr material assets must use shaderId fps.builtin.pbr"),n==="default-standard"&&e.shaderId!=="fps.builtin.standard"&&r(`${t}.shaderId`,"default-standard material assets must use shaderId fps.builtin.standard")}function LN(e,t,r,n,o){if(e===t){mc.has("root")||o(n,`parentId must point to scene node: ${e}`);return}if(mc.has("sceneNode")&&r.has(e))return;let i=mc.has("root")&&mc.has("sceneNode")?"root or scene node":mc.has("sceneNode")?"scene node":"root";o(n,`parentId must point to ${i}: ${e}`)}function FN(e,t,r,n,o){if(!W(t))return;let i=new Set([e]),a=W(r.get(e)?.parentId)?r.get(e)?.parentId:t;for(;W(a)&&a!==t;){if(i.has(a)){o(n,`parentId creates a node cycle involving ${e}`);return}i.add(a);let s=r.get(a);if(!s)return;a=W(s.parentId)?s.parentId:t}}function $N(e,t,r){for(let n of Object.keys(e))CN.has(n)||r(`${t}.${n}`,`runtime schema v3 material slot field is not allowed: ${n}`);if(e.label!=null&&!W(e.label)&&r(`${t}.label`,"label must be a non-empty string when present"),!Array.isArray(e.sourceSurfaces)||e.sourceSurfaces.length===0){r(`${t}.sourceSurfaces`,"sourceSurfaces must be a non-empty array");return}for(let n=0;n<e.sourceSurfaces.length;n+=1){let o=`${t}.sourceSurfaces[${n}]`,i=e.sourceSurfaces[n];if(!z(i)){r(o,"source surface must be an object");continue}for(let a of Object.keys(i))wN.has(a)||r(`${o}.${a}`,`runtime schema v3 material slot source surface field is not allowed: ${a}`);W(i.ownerNodePath)||r(`${o}.ownerNodePath`,"ownerNodePath must be a non-empty string");for(let a of["meshIndex","primitiveIndex"])(!Number.isInteger(i[a])||i[a]<0)&&r(`${o}.${a}`,`${a} must be a non-negative integer`);for(let a of["nodeIndex","sourceMaterialIndex"])i[a]!=null&&(!Number.isInteger(i[a])||i[a]<0)&&r(`${o}.${a}`,`${a} must be a non-negative integer when present`);i.nodeIndexPath!=null&&(!Array.isArray(i.nodeIndexPath)||i.nodeIndexPath.some(a=>!Number.isInteger(a)||a<0))&&r(`${o}.nodeIndexPath`,"nodeIndexPath must contain non-negative integers"),W(i.sourceMeshName)||r(`${o}.sourceMeshName`,"sourceMeshName is required")}}function BN(e,t,r){if(e!=null){if(!z(e)){r(t,"defaults must be an object");return}if(uI(e.transform,`${t}.transform`,r),oI(e.outline,`${t}.outline`,r),e.childOutlines!=null)if(!z(e.childOutlines))r(`${t}.childOutlines`,"childOutlines must be an object");else for(let[n,o]of Object.entries(e.childOutlines))oI(o,`${t}.childOutlines.${n}`,r)}}function zN(e,t,r){if(e!=null){if(!z(e)){r(t,"generatedFrom must be an object when present");return}lI(e,t,r),W(e.compilerId)||r(`${t}.compilerId`,"compilerId must be a non-empty string"),W(e.compilerVersion)||r(`${t}.compilerVersion`,"compilerVersion must be a non-empty string"),W(e.compiledAt)||r(`${t}.compiledAt`,"compiledAt must be a non-empty string")}}function UN(e,t,r){if(e!=null){if(!z(e)){r(t,"source must be an object when present");return}lI(e,t,r),e.objectGuid!=null&&!W(e.objectGuid)&&r(`${t}.objectGuid`,"objectGuid must be a non-empty string when present"),e.objectId!=null&&!W(e.objectId)&&r(`${t}.objectId`,"objectId must be a non-empty string when present"),e.component!=null&&!W(e.component)&&r(`${t}.component`,"component must be a non-empty string when present"),e.propertyPath!=null&&!W(e.propertyPath)&&r(`${t}.propertyPath`,"propertyPath must be a non-empty string when present")}}function lI(e,t,r){W(e.sourceId)||r(`${t}.sourceId`,"sourceId must be a non-empty string"),W(e.sourceType)||r(`${t}.sourceType`,"sourceType must be a non-empty string"),e.revision!=null&&(typeof e.revision!="number"||!Number.isFinite(e.revision))&&r(`${t}.revision`,"revision must be a finite number when present")}function fc(e,t){let r=sI(e,t);if(r.ok)return;let n=new Error(`scene_json_schema_failed:
2
+ ${JSON.stringify(r.errors,null,2)}`);throw Object.assign(n,{code:"scene_json_schema_failed",diagnostics:r.errors}),n}function z(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function W(e){return typeof e=="string"&&e.trim().length>0}function uI(e,t,r){if(e!=null){if(!z(e)){r(t,"transform must be an object");return}mn(e.position,`${t}.position`,r),mn(e.rotation,`${t}.rotation`,r),mn(e.rotationDeg,`${t}.rotationDeg`,r),typeof e.scale=="number"?Number.isFinite(e.scale)||r(`${t}.scale`,"scale number must be finite"):mn(e.scale,`${t}.scale`,r)}}function VN(e,t,r){if(!z(e)){r(t,"marker must be an object");return}Oo(e,["schemaVersion","label","type","kind","tags","note","color","target","semanticFrame","geometry","metadata"],t,r),e.schemaVersion!==1&&r(`${t}.schemaVersion`,"marker.schemaVersion must be 1"),W(e.label)||r(`${t}.label`,"marker.label must be a non-empty string"),W(e.type)||r(`${t}.type`,"marker.type must be a non-empty string"),e.kind!=null&&!W(e.kind)&&r(`${t}.kind`,"marker.kind must be a non-empty string when present"),e.tags!=null&&(Array.isArray(e.tags)?e.tags.forEach((n,o)=>{typeof n!="string"&&r(`${t}.tags[${o}]`,"marker tag must be a string")}):r(`${t}.tags`,"marker.tags must be an array when present")),e.note!=null&&typeof e.note!="string"&&r(`${t}.note`,"marker.note must be a string when present"),e.color!=null&&qN(e.color,`${t}.color`,r),e.target!=null&&$f(e.target,`${t}.target`,r),e.semanticFrame!=null&&KN(e.semanticFrame,`${t}.semanticFrame`,r),WN(e.geometry,`${t}.geometry`,r),e.metadata!=null&&!z(e.metadata)&&r(`${t}.metadata`,"marker.metadata must be an object when present")}function HN(e,t,r,n,o,i){if(!z(e))return;let a=[];e.target!=null&&a.push({value:e.target,path:`${o}.target`}),z(e.geometry)&&e.geometry.target!=null&&a.push({value:e.geometry.target,path:`${o}.geometry.target`});for(let s of a)z(s.value)&&(s.value.kind!=="scene-object"&&s.value.kind!=="marker"&&i(`${s.path}.kind`,"runtime marker target kind must be scene-object or marker"),W(s.value.id)&&(s.value.id===t?i(`${s.path}.id`,"runtime marker target must not reference its marker node"):r.has(s.value.id)?s.value.kind==="marker"&&!n.has(s.value.id)?i(`${s.path}.id`,`runtime marker target must reference a marker node: ${s.value.id}`):s.value.kind==="scene-object"&&n.has(s.value.id)&&i(`${s.path}.id`,`runtime scene-object target must not reference a marker node: ${s.value.id}`):i(`${s.path}.id`,`runtime marker target must reference scene.nodes: ${s.value.id}`)))}function $f(e,t,r){if(!z(e)){r(t,"marker target must be an object");return}Oo(e,["kind","id","label","path","metadata"],t,r),W(e.kind)||r(`${t}.kind`,"marker target kind must be a non-empty string"),W(e.id)||r(`${t}.id`,"marker target id must be a non-empty string");for(let n of["label","path"])e[n]!=null&&typeof e[n]!="string"&&r(`${t}.${n}`,`marker target ${n} must be a string when present`);e.metadata!=null&&!z(e.metadata)&&r(`${t}.metadata`,"marker target metadata must be an object when present")}function KN(e,t,r){if(!z(e)){r(t,"marker semanticFrame must be an object");return}Oo(e,["origin","forward","right","up","label","description"],t,r),z(e.origin)?mn(e.origin,`${t}.origin`,r):r(`${t}.origin`,"marker semanticFrame.origin must be a vector object");for(let n of["forward","right","up"])e[n]!=null&&mn(e[n],`${t}.${n}`,r);for(let n of["label","description"])e[n]!=null&&typeof e[n]!="string"&&r(`${t}.${n}`,`marker semanticFrame ${n} must be a string when present`)}function WN(e,t,r){if(!z(e)){r(t,"marker.geometry must be an object");return}if(e.kind==="box"){Oo(e,["kind"],t,r);return}if(e.kind==="point"){Oo(e,["kind","coordinateSpace","position","offset","target"],t,r),e.coordinateSpace!=null&&e.coordinateSpace!=="world"&&e.coordinateSpace!=="local"&&r(`${t}.coordinateSpace`,"point marker coordinateSpace must be world or local"),e.position!=null&&mn(e.position,`${t}.position`,r),e.offset!=null&&mn(e.offset,`${t}.offset`,r),e.target!=null&&$f(e.target,`${t}.target`,r);return}if(e.kind==="object-bounds"){Oo(e,["kind","target"],t,r),$f(e.target,`${t}.target`,r);return}if(e.kind==="polyhedron"){Oo(e,["kind","coordinateSpace","vertices","faces"],t,r),e.coordinateSpace!=null&&e.coordinateSpace!=="world"&&r(`${t}.coordinateSpace`,"polyhedron marker coordinateSpace must be world"),Array.isArray(e.vertices)?e.vertices.forEach((n,o)=>{let i=`${t}.vertices[${o}]`;z(n)?mn(n,i,r):r(i,"polyhedron marker vertex must be a vector object")}):r(`${t}.vertices`,"polyhedron marker vertices must be an array"),e.faces!=null&&(Array.isArray(e.faces)?e.faces.forEach((n,o)=>{Array.isArray(n)?n.forEach((i,a)=>{(!Number.isInteger(i)||i<0)&&r(`${t}.faces[${o}][${a}]`,"polyhedron marker index must be a non-negative integer")}):r(`${t}.faces[${o}]`,"polyhedron marker face must be an array")}):r(`${t}.faces`,"polyhedron marker faces must be an array when present"));return}r(`${t}.kind`,"marker.geometry.kind must be box, point, object-bounds, or polyhedron")}function qN(e,t,r){if(!z(e)){r(t,"marker color must be an object");return}Oo(e,["r","g","b"],t,r);for(let n of["r","g","b"])mI(e[n])||r(`${t}.${n}`,"marker color component must be between 0 and 1")}function Oo(e,t,r,n){let o=new Set(t);for(let i of Object.keys(e))o.has(i)||n(`${r}.${i}`,`field is not allowed: ${i}`)}function mn(e,t,r){if(e!=null){if(!z(e)){r(t,"value must be a vector object");return}for(let n of["x","y","z"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,"vector component must be a finite number")}}function YN(e,t,r){if(e!=null){if(!z(e)){r(t,"value must be a vector object");return}for(let n of["x","y"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,"vector component must be a finite number")}}function Kt(e){return typeof e=="number"&&Number.isFinite(e)}function Mi(e){return Kt(e)&&e>0}function mI(e){return Kt(e)&&e>=0&&e<=1}function Nl(e,t,r){if(e!=null){if(!z(e)){r(t,"color must be an object");return}for(let n of["r","g","b"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,"color component must be a finite number")}}function JN(e,t,r){if(e!=null){if(!z(e)){r(t,"camera must be an object");return}e.projection!=null&&e.projection!=="orthographic"&&e.projection!=="perspective"&&r(`${t}.projection`,"camera projection must be orthographic or perspective");for(let n of["alpha","beta"])e[n]!=null&&!Kt(e[n])&&r(`${t}.${n}`,"camera property must be a finite number when present");for(let n of["radius","orthoSize"])e[n]!=null&&!Mi(e[n])&&r(`${t}.${n}`,"camera property must be a positive finite number when present");e.fov!=null&&!Mi(e.fov)&&r(`${t}.fov`,"camera fov must be a positive finite number"),mn(e.targetOffset,`${t}.targetOffset`,r),YN(e.targetScreenOffset,`${t}.targetScreenOffset`,r);for(let n of["minZ","maxZ","lowerRadiusLimit","upperRadiusLimit"])e[n]!=null&&!Mi(e[n])&&r(`${t}.${n}`,"camera property must be a positive finite number");for(let n of["lowerBetaLimit","upperBetaLimit"])e[n]!=null&&!Kt(e[n])&&r(`${t}.${n}`,"camera property must be a finite number");e.inertia!=null&&!mI(e.inertia)&&r(`${t}.inertia`,"camera inertia must be between 0 and 1"),Mi(e.minZ)&&Mi(e.maxZ)&&e.maxZ<=e.minZ&&r(`${t}.maxZ`,"camera maxZ must be greater than minZ"),Kt(e.lowerBetaLimit)&&Kt(e.upperBetaLimit)&&e.upperBetaLimit<e.lowerBetaLimit&&r(`${t}.upperBetaLimit`,"camera upperBetaLimit must be greater than or equal to lowerBetaLimit"),Mi(e.lowerRadiusLimit)&&Mi(e.upperRadiusLimit)&&e.upperRadiusLimit<e.lowerRadiusLimit&&r(`${t}.upperRadiusLimit`,"camera upperRadiusLimit must be greater than or equal to lowerRadiusLimit")}}function XN(e){let t=e.meta?.generatedFrom;return z(t)&&t.compilerId===yN&&t.compilerVersion===bN}function QN(e,t,r,n=!1){if(e==null)return;let o=n&&z(e)&&!Object.prototype.hasOwnProperty.call(e,"schemaVersion")?ZN(e,t):e;try{Aa(o,t)}catch(i){let a=i;r(typeof a.path=="string"?a.path:t,typeof a.reason=="string"?a.reason:typeof a.message=="string"?a.message:"light does not satisfy the Engine Runtime Light contract")}}function ZN(e,t){let r={...e,schemaVersion:1};if(e.type!=="directional"||!z(e.direction))return r;let{x:n,y:o,z:i}=e.direction;if(![n,o,i].every(s=>typeof s=="number"&&Number.isFinite(s)))return r;let a=Math.hypot(n,o,i);return a<=0||Math.abs(a-1)>EN?r:{...r,direction:nc(e.direction,`${t}.direction`)}}function oI(e,t,r){if(e!=null){if(!z(e)){r(t,"outline must be an object");return}e.renderOutline!=null&&typeof e.renderOutline!="boolean"&&r(`${t}.renderOutline`,"renderOutline must be boolean"),e.outlineWidth!=null&&(typeof e.outlineWidth!="number"||!Number.isFinite(e.outlineWidth))&&r(`${t}.outlineWidth`,"outlineWidth must be a finite number"),Nl(e.outlineColor,`${t}.outlineColor`,r)}}function ej(e,t,r){if(e==null){r(t,"groundDecal is required when transformType is groundDecal");return}if(!z(e)){r(t,"groundDecal must be an object");return}tj(e,t,r)}function tj(e,t,r){if(W(e.uiKind)||r(`${t}.uiKind`,"groundDecal UI kind must be non-empty"),!z(e.size))r(`${t}.size`,"groundDecal.size must be an object");else for(let n of["width","depth"])(typeof e.size[n]!="number"||!Number.isFinite(e.size[n])||e.size[n]<=0)&&r(`${t}.size.${n}`,"groundDecal size must be a positive finite number");if(e.aspectSourceLayerId!=null&&!W(e.aspectSourceLayerId)&&r(`${t}.aspectSourceLayerId`,"aspectSourceLayerId must be non-empty when present"),e.lockAspectToBorder!=null&&typeof e.lockAspectToBorder!="boolean"&&r(`${t}.lockAspectToBorder`,"lockAspectToBorder must be boolean when present"),e.editorPreviewActive!=null&&r(`${t}.editorPreviewActive`,"editorPreviewActive is editor-only and must not appear in runtime scene data"),rj(e.mask,`${t}.mask`,r),nj(e.rendering,`${t}.rendering`,r),!Array.isArray(e.layers)){r(`${t}.layers`,"groundDecal UI layers must be an array");return}e.layers.forEach((n,o)=>oj(n,`${t}.layers[${o}]`,r)),ij(e.layers,`${t}.layers`,r)}function rj(e,t,r){if(e!=null){if(!z(e)){r(t,"groundDecal UI mask must be an object");return}e.enabled!=null&&typeof e.enabled!="boolean"&&r(`${t}.enabled`,"mask.enabled must be boolean"),e.source!=null&&e.source!=="roundedRect"&&e.source!=="borderAlpha"&&e.source!=="texture"&&r(`${t}.source`,"mask.source must be roundedRect, borderAlpha, or texture"),e.textureId!=null&&!W(e.textureId)&&r(`${t}.textureId`,"mask.textureId must be non-empty when present");for(let n of["cornerRadius","padding"])e[n]!=null&&(typeof e[n]!="number"||!Number.isFinite(e[n])||e[n]<0)&&r(`${t}.${n}`,`${n} must be a non-negative finite number`)}}function nj(e,t,r){if(e!=null){if(!z(e)){r(t,"groundDecal UI rendering must be an object");return}for(let n of["textureWidth","textureHeight"])e[n]!=null&&(!Number.isInteger(e[n])||e[n]<=0)&&r(`${t}.${n}`,`${n} must be a positive integer`);for(let n of["alphaIndex","diffuseTextureLevel","emissiveTextureLevel"])e[n]!=null&&(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,`${n} must be a finite number`)}}function oj(e,t,r){if(!z(e)){r(t,"groundDecal UI layer must be an object");return}W(e.id)||r(`${t}.id`,"layer.id must be non-empty"),W(e.role)||r(`${t}.role`,"layer.role must be non-empty"),e.editorPreviewPercent!=null&&r(`${t}.editorPreviewPercent`,"editorPreviewPercent is editor-only and must not appear in runtime scene data"),e.enabled!=null&&typeof e.enabled!="boolean"&&r(`${t}.enabled`,"layer.enabled must be boolean"),(typeof e.zOrder!="number"||!Number.isFinite(e.zOrder))&&r(`${t}.zOrder`,"layer.zOrder must be a finite number"),e.opacity!=null&&(typeof e.opacity!="number"||!Number.isFinite(e.opacity))&&r(`${t}.opacity`,"layer.opacity must be finite"),e.rotationDeg!=null&&(typeof e.rotationDeg!="number"||!Number.isFinite(e.rotationDeg)||e.rotationDeg<=-180||e.rotationDeg>180)&&r(`${t}.rotationDeg`,"layer.rotationDeg must be in the range (-180, 180]"),aj(e.rect,`${t}.rect`,r),e.kind==="texture"?(e.textureId!=null&&!W(e.textureId)&&r(`${t}.textureId`,"texture layer textureId must be non-empty when present"),e.imageFit!=null&&e.imageFit!=="contain"&&e.imageFit!=="stretch"&&r(`${t}.imageFit`,"texture layer imageFit must be contain or stretch"),Oa(e.tint,`${t}.tint`,r)):e.kind==="textureProgress"?(e.textureId!=null&&!W(e.textureId)&&r(`${t}.textureId`,"texture progress layer textureId must be non-empty when present"),e.imageFit!=null&&e.imageFit!=="contain"&&e.imageFit!=="stretch"&&r(`${t}.imageFit`,"texture progress layer imageFit must be contain or stretch"),(typeof e.value!="number"||!Number.isFinite(e.value)||e.value<0||e.value>1)&&r(`${t}.value`,"texture progress value must be between 0 and 1"),e.direction!=null&&!["leftToRight","rightToLeft","bottomToTop","topToBottom"].includes(String(e.direction))&&r(`${t}.direction`,"texture progress direction is invalid"),Oa(e.tint,`${t}.tint`,r)):e.kind==="color"?Oa(e.color,`${t}.color`,r):e.kind==="progress"?((typeof e.value!="number"||!Number.isFinite(e.value)||e.value<0||e.value>1)&&r(`${t}.value`,"progress value must be between 0 and 1"),e.direction!=null&&!["leftToRight","rightToLeft","bottomToTop","topToBottom"].includes(String(e.direction))&&r(`${t}.direction`,"progress direction is invalid"),Oa(e.color,`${t}.color`,r)):e.kind==="text"?sj(e.text,`${t}.text`,r):r(`${t}.kind`,"layer.kind must be texture, textureProgress, color, progress, or text")}function ij(e,t,r){let n=new Map;e.forEach((o,i)=>{if(!z(o)||!W(o.id))return;let a=n.get(o.id);if(a!=null){r(`${t}[${i}].id`,`layer.id must be unique; duplicate of layers[${a}]`);return}n.set(o.id,i)})}function aj(e,t,r){if(!z(e)){r(t,"layer.rect must be an object");return}for(let n of["x","z","width","depth"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,`rect.${n} must be a finite number`);for(let n of["width","depth"])typeof e[n]=="number"&&e[n]<=0&&r(`${t}.${n}`,`rect.${n} must be positive`)}function sj(e,t,r){if(!z(e)){r(t,"text layer text must be an object");return}typeof e.value!="string"&&r(`${t}.value`,"text.value must be a string"),e.fontFamily!=null&&typeof e.fontFamily!="string"&&r(`${t}.fontFamily`,"fontFamily must be a string"),e.fontSize!=null&&(typeof e.fontSize!="number"||!Number.isFinite(e.fontSize)||e.fontSize<=0)&&r(`${t}.fontSize`,"fontSize must be a positive finite number"),e.fontWeight!=null&&typeof e.fontWeight!="string"&&r(`${t}.fontWeight`,"fontWeight must be a string"),Oa(e.color,`${t}.color`,r),Oa(e.strokeColor,`${t}.strokeColor`,r),e.strokeWidth!=null&&(typeof e.strokeWidth!="number"||!Number.isFinite(e.strokeWidth)||e.strokeWidth<0)&&r(`${t}.strokeWidth`,"strokeWidth must be a non-negative finite number")}function Oa(e,t,r){if(e!=null){if(!z(e)){r(t,"color must be an object");return}for(let n of["r","g","b"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,`color.${n} must be finite`);e.a!=null&&(typeof e.a!="number"||!Number.isFinite(e.a))&&r(`${t}.a`,"color.a must be finite")}}function cj(e,t,r){if(e!=null){if(!z(e)){r(t,"rendering must be an object");return}e.renderingGroupId!=null&&e.renderingGroupId!==0&&e.renderingGroupId!==1&&e.renderingGroupId!==2&&e.renderingGroupId!==3&&r(`${t}.renderingGroupId`,"renderingGroupId must be 0, 1, 2, or 3"),e.alphaIndex!=null&&(typeof e.alphaIndex!="number"||!Number.isFinite(e.alphaIndex))&&r(`${t}.alphaIndex`,"alphaIndex must be a finite number")}}function iI(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function pI(e,t,r){for(let[n,o]of Object.entries(e)){let i=`${t}.${n}`;["albedoColor","diffuseColor","emissiveColor","outlineColor"].includes(n)&&Nl(o,i,r),["metallic","roughness","contrast","brightness","saturation","hue","colorDensity","alpha","alphaCutOff","transparencyMode"].includes(n)&&(typeof o!="number"||!Number.isFinite(o))&&r(i,`${n} must be a finite number`),n==="backFaceCulling"&&typeof o!="boolean"&&r(i,"backFaceCulling must be boolean"),["albedoTexture","normalTexture","metallicTexture"].includes(n)&&(z(o)?o.url!=null&&!W(o.url)&&r(`${i}.url`,"texture url must be non-empty when present"):r(i,`${n} must be an object`)),["pbr","standard"].includes(n)&&(z(o)?pI(o,i,r):r(i,`${n} must be an object`))}}function aI(e,t,r){let n=JSON.stringify(e),o=RN.filter(i=>n.includes(i));o.length>0&&r(t,`contains runtime-only asset fields: ${o.join(", ")}`)}function gI(e,t,r){let n=fI(e)??512,o=fI(t)??512;if(!Number.isFinite(r)||r<=0)return{width:n,height:o};let i=n,a=Math.max(1,Math.round(i/r));return a>o&&(a=o,i=Math.max(1,Math.round(a*r))),{width:i,height:a}}function jl(e){let t=e.rendering?.textureWidth??512,r=e.rendering?.textureHeight??512,n=e.size.width>0&&e.size.depth>0?e.size.width/e.size.depth:t/r;return gI(t,r,n)}function fI(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?null:Math.max(64,Math.min(2048,Math.round(e)))}var vr=(e,t)=>({kind:"number",...e!=null?{min:e}:{},...t!=null?{max:t}:{}}),Di={kind:"texture"},SI={kind:"color"},dj={kind:"enum",values:["lit","unlit"]},lj={kind:"enum",values:["opaque","mask","blend"]},bI={lightingModel:dj,baseColor:{kind:"object",properties:{color:SI,texture:Di,brightness:vr(0),saturation:vr(0),contrast:vr(0),hue:vr(-180,180)}},normal:{kind:"object",properties:{texture:Di,strength:vr(0)}},emission:{kind:"object",properties:{color:SI,intensity:vr(0),texture:Di,maskTexture:Di}},alpha:{kind:"object",properties:{mode:lj,opacity:vr(0,1),cutoff:vr(0,1),texture:Di}}},uj={kind:"object",properties:{...bI,metallic:vr(0,1),roughness:vr(0,1),metallicRoughness:{kind:"object",properties:{texture:Di}},occlusion:{kind:"object",properties:{texture:Di,strength:vr(0)}}}},mj={kind:"object",properties:bI},pj={lightingModel:"lit",baseColor:{color:{r:1,g:1,b:1},brightness:1,saturation:1,contrast:1,hue:0},metallic:0,roughness:1,emission:{color:{r:0,g:0,b:0},intensity:0}},fj={lightingModel:"lit",baseColor:{color:{r:1,g:1,b:1},brightness:1,saturation:1,contrast:1,hue:0},emission:{color:{r:0,g:0,b:0},intensity:0}},hI=[{id:"surface",title:"Surface",order:40},{id:"geometry",title:"Geometry",order:50},{id:"emission",title:"Emission",order:60},{id:"alpha",title:"Alpha",order:70}],Ri={path:"properties.lightingModel",operator:"equals",value:"lit",inactiveReasonKey:"litMaterial"},EI=[wa("properties.lightingModel","surface",1,"enum","assetLightingModel","lightingModel","lit",{options:[{value:"lit",labelKey:"assetLightingModelLit"},{value:"unlit",labelKey:"assetLightingModelUnlit"}],binding:"lightingModel",updateClass:"define"}),wa("properties.baseColor.color","surface",2,"color","assetBaseColor","baseColor",{r:1,g:1,b:1},{binding:"baseColor.color"}),va("properties.baseColor.texture.textureAssetId","properties.baseColor.texture","surface",3,"assetBaseTexture","baseTexture","baseColor.texture"),kr("properties.baseColor.brightness","surface",4,"assetBrightness","brightness",1,{softMin:0,softMax:4,step:.05,conditions:[Ca("properties.baseColor.texture.textureAssetId","baseTexture")]}),kr("properties.baseColor.saturation","surface",5,"assetSaturation","saturation",1,{softMin:0,softMax:2,step:.05,conditions:[Ca("properties.baseColor.texture.textureAssetId","baseTexture")]}),kr("properties.baseColor.contrast","surface",6,"assetContrast","contrast",1,{softMin:0,softMax:2,step:.05,conditions:[Ca("properties.baseColor.texture.textureAssetId","baseTexture")]}),kr("properties.baseColor.hue","surface",7,"assetHue","hue",0,{step:1,conditions:[Ca("properties.baseColor.texture.textureAssetId","baseTexture")]}),va("properties.normal.texture.textureAssetId","properties.normal.texture","geometry",10,"assetNormalTexture","normalTexture","normal.texture",[Ri]),kr("properties.normal.strength","geometry",11,"assetNormalStrength","normalStrength",1,{softMin:0,softMax:4,step:.05,conditions:[Ri,Ca("properties.normal.texture.textureAssetId","normalTexture")]}),wa("properties.emission.color","emission",50,"color","assetEmissionColor","emissionColor",{r:0,g:0,b:0},{binding:"emission.color"}),kr("properties.emission.intensity","emission",51,"assetEmissionIntensity","emissionIntensity",0,{softMin:0,softMax:8,step:.05}),va("properties.emission.texture.textureAssetId","properties.emission.texture","emission",52,"assetEmissionTexture","emissionTexture","emission.texture"),wa("properties.alpha.mode","alpha",60,"enum","assetAlphaMode","alphaMode","opaque",{options:[{value:"opaque",labelKey:"assetAlphaModeOpaque"},{value:"mask",labelKey:"assetAlphaModeMask"},{value:"blend",labelKey:"assetAlphaModeBlend"}],binding:"alpha.mode",updateClass:"pipeline"}),kr("properties.alpha.opacity","alpha",61,"assetAlphaOpacity","alphaOpacity",1,{step:.05,conditions:[{path:"properties.alpha.mode",operator:"equals",value:"blend",inactiveReasonKey:"alphaBlend"}]}),kr("properties.alpha.cutoff","alpha",62,"assetAlphaCutoff","alphaCutoff",.5,{step:.01,conditions:[{path:"properties.alpha.mode",operator:"equals",value:"mask",inactiveReasonKey:"alphaMask"}]}),va("properties.alpha.texture.textureAssetId","properties.alpha.texture","alpha",63,"assetAlphaTexture","alphaTexture","alpha.texture",[{path:"properties.alpha.mode",operator:"not-equals",value:"opaque",inactiveReasonKey:"alphaTransparency"}])],gj=[...EI,kr("properties.metallic","geometry",20,"assetMetallic","metallic",0,{step:.05,conditions:[Ri]}),kr("properties.roughness","geometry",21,"assetRoughness","roughness",1,{step:.05,conditions:[Ri]}),va("properties.metallicRoughness.texture.textureAssetId","properties.metallicRoughness.texture","geometry",22,"assetMetallicRoughnessTexture","metallicRoughnessTexture","metallicRoughness.texture",[Ri]),va("properties.occlusion.texture.textureAssetId","properties.occlusion.texture","geometry",23,"assetOcclusionTexture","occlusionTexture","occlusion.texture",[Ri]),kr("properties.occlusion.strength","geometry",24,"assetOcclusionStrength","occlusionStrength",1,{softMin:0,softMax:4,step:.05,conditions:[Ri,Ca("properties.occlusion.texture.textureAssetId","occlusionTexture")]})],Sj=[{shaderId:"fps.builtin.pbr",version:1,runtimeKind:"pbr",displayName:"PBR",propertiesSchema:uj,defaultProperties:pj,inspector:{sections:hI,fields:gj}},{shaderId:"fps.builtin.standard",version:1,runtimeKind:"standard",displayName:"Standard",propertiesSchema:mj,defaultProperties:fj,inspector:{sections:hI,fields:EI}}],Co=hj(Sj);function hj(e){let t=new Map;for(let n of e){bj(n,t);let o=Ej(n);t.set(n.shaderId,PI(o))}let r=Object.freeze([...t.values()]);return Object.freeze({get(n){return typeof n=="string"?t.get(n)??null:null},list(){return r}})}function zf(e,t=Co){return t.get(e)}function dr(e){return zf(e)}function yj(e,t,r=Co){let n=Vf(t);return r.get(e)?.inspector.fields.find(i=>i.path===n)??null}function gc(e,t,r=Co){let n=zf(e,r);if(!n)return null;let o=yj(e,t,r),a=(o?.schemaPath??Vf(t)).replace(/^properties\./,"").split(".").filter(Boolean);if(a.length===0)return null;let s=n.propertiesSchema;for(let c=0;c<a.length;c+=1){let d=a[c];if(s.kind==="texture"&&c===a.length-1&&(d==="url"||d==="textureAssetId"))return{kind:"string",nullable:!0};if(s.kind!=="object")return null;let u=s.properties[d];if(!u)return null;s=u}return o?.control==="texture"&&s.kind==="texture"?{kind:"string",nullable:!0}:s}function Uf(e){let t=dr(e);if(!t)throw new Error(`Unknown built-in material shader: ${e}`);return structuredClone(t.defaultProperties)}function Gl(e,t,r="properties",n=Co){let o=zf(e,n);if(!o)return[{path:"shaderId",message:`Unknown material shader: ${String(e)}`}];let i=[];return Hf(o.propertiesSchema,t,r,i),i}function wa(e,t,r,n,o,i,a,s){return{path:e,sectionId:t,order:r,control:n,labelKey:o,tooltipKey:i,defaultValue:a,updateClass:"uniform",...s}}function kr(e,t,r,n,o,i,a={}){return wa(e,t,r,"number",n,o,i,{binding:e.replace(/^properties\./,""),step:a.step??.05,displayPrecision:2,precision:2,...a})}function va(e,t,r,n,o,i,a,s){return wa(e,r,n,"texture",o,i,"",{schemaPath:t,binding:a,updateClass:"texture",conditions:s})}function Ca(e,t){return{path:e,operator:"truthy",inactiveReasonKey:t}}function bj(e,t){if(!e.shaderId.trim())throw new Error("Material Shader Definition shaderId must not be empty.");if(!Number.isInteger(e.version)||e.version<=0)throw new Error(`Material Shader Definition ${e.shaderId} must use a positive integer version.`);if(t.has(e.shaderId))throw new Error(`Duplicate Material Shader Definition: ${e.shaderId}`);if(e.sourceFile!=null&&!Tj(e.sourceFile))throw new Error(`Material Shader Definition ${e.shaderId} sourceFile must be a safe project-relative path.`);II(e.shaderId,e.propertiesSchema,"properties");let r=[];if(Hf(e.propertiesSchema,e.defaultProperties,"properties",r),r.length>0){let i=r[0];throw new Error(`Material Shader Definition ${e.shaderId} default ${i.path} ${i.message}.`)}let n=new Set;for(let i of e.inspector.sections){if(!i.id.trim()||n.has(i.id))throw new Error(`Material Shader Definition ${e.shaderId} contains an invalid or duplicate section: ${i.id}`);n.add(i.id)}let o=new Set;for(let i of e.inspector.fields){if(!i.path.startsWith("properties.")||o.has(i.path))throw new Error(`Material Shader Definition ${e.shaderId} contains an invalid or duplicate field: ${i.path}`);if(!n.has(i.sectionId))throw new Error(`Material Shader Definition ${e.shaderId} field ${i.path} references an unknown section.`);Ij(e,i),o.add(i.path)}}function Ej(e){let t=structuredClone(e);return{...t,inspector:{...t.inspector,fields:t.inspector.fields.map(r=>{if(r.control!=="number")return r;let n=TI(t.propertiesSchema,r.schemaPath??r.path);return n?.kind!=="number"?r:{...r,...n.min!=null?{min:n.min}:{},...n.max!=null?{max:n.max}:{}}})}}}function Ij(e,t){let r=[["min",t.min],["max",t.max],["softMin",t.softMin],["softMax",t.softMax]];for(let[o,i]of r)if(i!=null&&!Number.isFinite(i))throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} ${o} must be finite.`);if(t.control!=="number"){if(r.some(([,o])=>o!=null))throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} uses numeric ranges with a non-number control.`);return}let n=TI(e.propertiesSchema,t.schemaPath??t.path);if(n?.kind!=="number")throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} must reference a number schema.`);for(let[o,i,a]of[["min",t.min,n.min],["max",t.max,n.max]])if(i!=null&&i!==a)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} ${o} must match propertiesSchema.`);if(t.softMin!=null&&t.softMax!=null&&t.softMin>t.softMax)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMin must not exceed softMax.`);if(n.min!=null&&t.softMin!=null&&t.softMin<n.min)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMin must not be below the schema minimum.`);if(n.max!=null&&t.softMax!=null&&t.softMax>n.max)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMax must not exceed the schema maximum.`)}function II(e,t,r){if(t.kind==="object"){for(let[n,o]of Object.entries(t.properties))II(e,o,`${r}.${n}`);return}if(t.kind==="number"){if(t.min!=null&&!Number.isFinite(t.min))throw new Error(`Material Shader Definition ${e} number field ${r} min must be finite.`);if(t.max!=null&&!Number.isFinite(t.max))throw new Error(`Material Shader Definition ${e} number field ${r} max must be finite.`);if(t.min!=null&&t.max!=null&&t.min>t.max)throw new Error(`Material Shader Definition ${e} number field ${r} min must not exceed max.`);return}if(t.kind==="color"&&t.channels!=null&&t.channels!==3&&t.channels!==4)throw new Error(`Material Shader Definition ${e} color field ${r} channels must be 3 or 4.`)}function Tj(e){let t=e.trim();return!t||t.startsWith("/")||t.includes("\\")||t.includes(":")?!1:!t.split("/").includes("..")}function Vf(e){let t=e.trim();return t.startsWith("properties.")?t:`properties.${t}`}function TI(e,t){let r=Vf(t).replace(/^properties\./,"").split(".").filter(Boolean);if(r.length===0)return null;let n=e;for(let o of r){if(n.kind!=="object")return null;let i=n.properties[o];if(!i)return null;n=i}return n}function Hf(e,t,r,n){if(e.kind==="object"){if(!Bf(t)){n.push({path:r,message:"must be an object"});return}for(let i of Object.keys(t))Object.prototype.hasOwnProperty.call(e.properties,i)||n.push({path:`${r}.${i}`,message:"is not supported by the selected shader"});for(let[i,a]of Object.entries(e.properties))t[i]!==void 0&&Hf(a,t[i],`${r}.${i}`,n);return}if(e.kind==="number"){if(typeof t!="number"||!Number.isFinite(t)){n.push({path:r,message:"must be a finite number"});return}e.min!=null&&t<e.min&&n.push({path:r,message:`must be greater than or equal to ${e.min}`}),e.max!=null&&t>e.max&&n.push({path:r,message:`must be less than or equal to ${e.max}`});return}if(e.kind==="boolean"){typeof t!="boolean"&&n.push({path:r,message:"must be a boolean"});return}if(e.kind==="string"){t!==null&&typeof t!="string"?n.push({path:r,message:"must be a string"}):t===null&&!e.nullable&&n.push({path:r,message:"must not be null"});return}if(e.kind==="enum"){(typeof t!="string"||!e.values.includes(t))&&n.push({path:r,message:`must be one of: ${e.values.join(", ")}`});return}if(e.kind==="color"){let i=e.channels===4?["r","g","b","a"]:["r","g","b"];yI(t,r,i,n,e.channels===4?"an RGBA object":"an RGB object");return}if(e.kind==="vec2"||e.kind==="vec3"){yI(t,r,e.kind==="vec2"?["x","y"]:["x","y","z"],n,`a ${e.kind} object`);return}if(t===null)return;if(!Bf(t)){n.push({path:r,message:"must be a texture reference object or null"});return}Object.keys(t).some(i=>i!=="url"&&i!=="textureAssetId")&&n.push({path:r,message:"must contain only url or textureAssetId"});for(let i of["url","textureAssetId"]){let a=t[i];a!==void 0&&(typeof a!="string"||!a.trim())&&n.push({path:`${r}.${i}`,message:"must be a non-empty string"})}}function yI(e,t,r,n,o){if(!Bf(e)){n.push({path:t,message:`must be ${o}`});return}Object.keys(e).some(i=>!r.includes(i))&&n.push({path:t,message:`must contain only ${r.join(", ")}`});for(let i of r)(typeof e[i]!="number"||!Number.isFinite(e[i]))&&n.push({path:`${t}.${i}`,message:"must be a finite number"})}function PI(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.values(e))PI(t)}return e}function Bf(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function AI(e,t){let r=Wf(t.ids);if(r.length===0)return Ie("empty-selection");for(let s of r)if(!Vn(e,s))return Ie("missing-node");let n=_r(e,t.ids);if(n.length===0)return Ie("empty-selection");for(let s of n){let c=Vn(e,s);if(!c)return Ie("missing-node");if(!RI(c))return Ie(c.protected?"node-protected":c.locked?"node-locked":"node-readonly")}if(t.placement==="root")return t.parentId!=null||t.beforeId!=null||t.afterId!=null?Ie("invalid-root-anchors"):Ll();let o=Vn(e,t.targetId);if(!o)return Ie("missing-target-node");if(n.includes(o.id))return Ie("cannot-parent-to-self");if(n.some(s=>MI(e,o.id,s)))return Ie("cannot-parent-to-descendant");if(t.placement==="inside"){if(!DI(o))return Ie("target-cannot-have-children");if(t.parentId!=null&&t.parentId!==o.id)return Ie("invalid-parent-anchor");let s=Kf(e,o.id).filter(c=>!n.includes(c));return t.beforeId&&!s.includes(t.beforeId)?Ie("invalid-before-anchor"):t.afterId&&!s.includes(t.afterId)?Ie("invalid-after-anchor"):Ll()}if(o.locked&&!o.protected)return Ie("target-node-locked");if(o.protected)return Ie("cannot-reorder-root");let i=Vn(e,o.parentId);if(i?.locked&&!i.protected)return Ie("target-parent-locked");if((t.parentId??null)!==(o.parentId??null))return Ie("invalid-parent-anchor");let a=Kf(e,o.parentId??null).filter(s=>!n.includes(s));return t.beforeId&&!a.includes(t.beforeId)?Ie("invalid-before-anchor"):t.afterId&&!a.includes(t.afterId)?Ie("invalid-after-anchor"):t.placement==="before"&&t.beforeId!==o.id?Ie("invalid-before-anchor"):t.placement==="after"&&t.afterId!==o.id?Ie("invalid-after-anchor"):Ll()}function xI(e,t){let r=Wf(t.ids);if(r.length===0)return Ie("empty-selection");for(let a of r)if(!Vn(e,a))return Ie("missing-node");let n=_r(e,t.ids);if(n.length===0)return Ie("empty-selection");if(n.length<2)return Ie("selection-too-small");for(let a of n){let s=Vn(e,a);if(!s)return Ie("missing-node");if(!RI(s))return Ie(s.protected?"node-protected":s.locked?"node-locked":"node-readonly")}let o=Vn(e,t.parentId);if(t.parentId&&!o)return Ie("missing-parent-node");if(o&&!DI(o))return Ie("parent-cannot-have-children");if(o&&n.some(a=>o.id===a||MI(e,o.id,a)))return Ie("cannot-parent-to-descendant");let i=Kf(e,t.parentId??null).filter(a=>!n.includes(a));if(t.insertBeforeId){let a=Vn(e,t.insertBeforeId);if(!i.includes(t.insertBeforeId)||a?.protected)return Ie("invalid-before-anchor")}return Ll()}function Vn(e,t){return t?e.find(r=>r.id===t)??null:null}function Wf(e){let t=[],r=new Set;for(let n of e)!n||r.has(n)||(r.add(n),t.push(n));return t}function _r(e,t){let r=Wf(t).filter(o=>!!Vn(e,o)),n=new Set(r);return r.filter(o=>!Pj(e,o).some(i=>n.has(i)))}function Kf(e,t){return e.filter(r=>(r.parentId??null)===(t??null)).map(r=>r.id)}function MI(e,t,r){let n=new Map(e.map(a=>[a.id,a])),o=n.get(t)??null,i=new Set;for(;o?.parentId;){if(o.parentId===r)return!0;if(i.has(o.parentId))return!1;i.add(o.parentId),o=n.get(o.parentId)??null}return!1}function DI(e){return!e||e.locked&&!e.protected?!1:e.canHaveChildren===!0}function RI(e){return!!e&&e.protected!==!0&&e.locked!==!0&&e.draggable!==!1}function Pj(e,t){let r=new Map(e.map(a=>[a.id,a])),n=[],o=new Set,i=r.get(t)??null;for(;i?.parentId&&!o.has(i.parentId);)o.add(i.parentId),n.push(i.parentId),i=r.get(i.parentId)??null;return n}function Ll(){return{ok:!0}}function Ie(e){return{ok:!1,reason:e}}function ka(e,t={}){let r=new Map;for(let n of t.builtInMarkerTypes??[])r.set(n.type,xj(n));for(let n of Sc(e)){let o=r.get(n.type)??null;r.set(n.type,Mj(o,n))}return[...r.values()]}function Yf(e){return structuredClone(e)}function xj(e){return{...Yf(e),metadata:{...e.metadata??{},builtIn:!0}}}function Mj(e,t){let r=e??null;return{...r??{},...Yf(t),type:t.type,label:t.label||r?.label||t.type,metadata:{...r?.metadata??{},...t.metadata??{},builtIn:r?.metadata?.builtIn===!0}}}function Dj(e,t,r={}){if(!vI(t)||Qf(t.type,r))return e;let n=Sc(e);return n.some(o=>o.type===t.type)?e:Xf(e,[...n,Jf(t,!1)])}function Rj(e,t,r,n={}){let o=t.trim();if(!o)return e;let i=Qf(o,n),a=Sc(e),s=a.find(u=>u.type===o)??null;if(!i&&!s)return e;let c=s??i;if(!c)return e;let d=Jf({...c,...r,type:o,label:typeof r.label=="string"&&r.label.trim()?r.label.trim():c.label||o},!!i);return Xf(e,[...a.filter(u=>u.type!==o),d])}function Oj(e,t,r={}){let n=t.trim();if(!n||kI(n,r)||e.markers.some(a=>a.markerType===n))return e;let o=Sc(e),i=o.filter(a=>a.type!==n);return i.length===o.length?e:Xf(e,i)}function Jf(e,t){return{type:e.type.trim(),label:e.label.trim()||e.type.trim(),...e.kind?{kind:e.kind}:{},...e.description!==void 0?{description:e.description}:{},...e.defaultTags?{defaultTags:[...e.defaultTags]}:{},metadata:{...e.metadata??{},builtIn:!1,...t?{overridesBuiltIn:!0}:{}}}}function Sc(e){let t=e?.metadata?.markerTypes;return Array.isArray(t)?t.map(Cj).filter(r=>!!r):[]}function Xf(e,t){let r=e.metadata?structuredClone(e.metadata):{};return t.length===0?delete r.markerTypes:r.markerTypes=t.map(Yf),{...e,metadata:Object.keys(r).length>0?r:void 0}}function Cj(e){if(!e||typeof e!="object")return null;let t=e;return typeof t.type!="string"||!t.type.trim()||typeof t.label!="string"||!t.label.trim()?null:Jf({type:t.type.trim(),label:t.label.trim(),...typeof t.kind=="string"&&t.kind?{kind:t.kind}:{},...typeof t.description=="string"?{description:t.description}:{},...Array.isArray(t.defaultTags)?{defaultTags:t.defaultTags.filter(r=>typeof r=="string")}:{},...t.metadata&&typeof t.metadata=="object"?{metadata:t.metadata}:{}},t.metadata?.overridesBuiltIn===!0)}function vI(e){return!!e.type.trim()&&!!e.label.trim()}function Qf(e,t={}){let r=e.trim();return t.builtInMarkerTypes?.find(n=>n.type===r)??null}function kI(e,t={}){return!!Qf(e,t)}function Hn(e){let{spatial:t,...r}=structuredClone(e);return r}function Fl(e){return structuredClone(e)}function _I(e,t){return{...Fl(e),from:OI(e.from,t),to:OI(e.to,t)}}function NI(e,t){return{...Hn(e),...e.target?{target:qf(e.target,t)}:{},geometry:wj(e.geometry,t)}}function wj(e,t){switch(e.kind){case"point":return{...structuredClone(e),...e.target?{target:qf(e.target,t)}:{}};case"object-bounds":return{...structuredClone(e),target:qf(e.target,t)};case"box":case"polyhedron":return structuredClone(e)}}function qf(e,t){return e.kind!=="marker"?structuredClone(e):{...structuredClone(e),id:t.get(e.id)??e.id}}function OI(e,t){return e.kind!=="marker"?{...e}:{...e,id:t.get(e.id)??e.id}}function jI(e,t){let r=new Set([t]),n=!0;for(;n;){n=!1;for(let o of e.scene.gameObjects)!o.parentId||!r.has(o.parentId)||r.has(o.id)||(r.add(o.id),n=!0)}return r}function Zf(e,t){return(e.kind==="marker"||e.kind==="scene-object")&&t.has(e.id)}function hc(e,t){return!e||e.kind!=="scene-object"||t.has(e.id)}function eg(e,t,r){return e.kind==="marker"?r.has(e.id):e.kind==="scene-object"?t.has(e.id):!0}function CI(e,t){return e.kind==="marker"&&e.id===t}function Kn(e){return e?{schemaVersion:1,markers:e.markers.map(Hn),relations:e.relations.map(Fl),metadata:e.metadata?structuredClone(e.metadata):void 0}:{schemaVersion:1,markers:[],relations:[]}}function tg(e,t){return{...e,scene:{...e.scene,markerGraph:t}}}function vj(e,t){let r=Hn(t),n=e.markers.some(o=>o.id===r.id);return{...e,markers:n?e.markers.map(o=>o.id===r.id?r:o):[...e.markers,r]}}function kj(e,t,r){let n=!1,o=e.markers.map(i=>i.id!==t?i:(n=!0,Hn({...i,...r,id:i.id})));return n?{...e,markers:o}:e}function _j(e,t){return{...e,markers:e.markers.filter(r=>r.id!==t),relations:e.relations.filter(r=>!CI(r.from,t)&&!CI(r.to,t))}}function wI(e,t){let r=Fl(t),n=e.relations.some(o=>o.id===r.id);return{...e,relations:n?e.relations.map(o=>o.id===r.id?r:o):[...e.relations,r]}}function Nj(e,t){let r=!1,n=e.relations.map(o=>o.id!==t?o:(r=!0,{...Fl(o),from:{...o.to},to:{...o.from}}));return r?{...e,relations:n}:e}function GI(e,t,r={}){switch(t.type){case"marker.create-box":return vj(e,t.marker);case"marker.update":return kj(e,t.markerId,t.patch);case"marker.delete":return _j(e,t.markerId);case"relation.create":return wI(e,t.relation);case"relation.create-many":return t.relations.reduce((n,o)=>wI(n,o),e);case"relation.delete":return{...e,relations:e.relations.filter(n=>n.id!==t.relationId)};case"relation.delete-many":{let n=new Set(t.relationIds);return{...e,relations:e.relations.filter(o=>!n.has(o.id))}}case"relation.reverse":return Nj(e,t.relationId);case"marker.sync-from-scene":return e;case"marker-type.create":return Dj(e,t.definition,r);case"marker-type.update":return Rj(e,t.typeId,t.patch,r);case"marker-type.delete":return Oj(e,t.typeId,r)}}function LI(e,t,r={}){if(t.type!=="marker.create-box")return t;let n=Hn(t.marker),o=new Set(e.scene.gameObjects.map(a=>a.id)),i=new Set(e.scene.gameObjects.map(a=>(a.name??"").trim()).filter(Boolean));return o.has(n.id)&&(n.id=jj(n.id,o,r.sanitizeMarkerGameObjectId)),(!n.label.trim()||i.has(n.label.trim()))&&(n.label=Lj(n.label||n.id,i)),{...t,marker:n}}function jj(e,t,r){let o=(r??Gj)(e).replace(/-\d+$/,"")||"marker";if(!t.has(o))return o;let i=2;for(;t.has(`${o}-${i}`);)i+=1;return`${o}-${i}`}function Gj(e){return e.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")}function Lj(e,t){let n=(e.trim()||"Marker").replace(/\s+\d+$/,"")||"Marker";if(!t.has(n))return n;let o=2;for(;t.has(`${n} ${o}`);)o+=1;return`${n} ${o}`}function FI(e,t,r,n={}){switch(t.type){case"marker.create-box":return Fj(e,t.marker.geometry)&&!!t.marker.id.trim()&&!e.scene.gameObjects.some(o=>o.id===t.marker.id)&&$j(e,t.parentId??null,n);case"relation.create-many":return t.relations.length>0;case"relation.delete-many":return t.relationIds.length>0;case"relation.reverse":return r.relations.some(o=>o.id===t.relationId);case"marker-type.create":return vI(t.definition)&&!ka(e.scene.markerGraph,n).some(o=>o.type===t.definition.type);case"marker-type.update":return!!t.typeId.trim()&&ka(e.scene.markerGraph,n).some(o=>o.type===t.typeId);case"marker-type.delete":{let o=t.typeId.trim();return!o||kI(o,n)?!1:!r.markers.some(i=>i.markerType===o)&&Sc(r).some(i=>i.type===o)}default:return!0}}function Fj(e,t){switch(t.kind){case"box":case"point":return!0;case"object-bounds":return hc(t.target,new Set(e.scene.gameObjects.map(r=>r.id)));case"polyhedron":return!1}}function $j(e,t,r){if(!t)return!0;let n=e.scene.gameObjects.find(o=>o.id===t)??null;return!!n&&!(r.isMarkerGameObject?.(n)??!!n.marker)}function $I(e){switch(e.type){case"marker.create-box":return`Create marker ${e.marker.label}`;case"marker.update":return`Update marker ${e.markerId}`;case"marker.delete":return`Delete marker ${e.markerId}`;case"relation.create":return`Create relation ${e.relation.type}`;case"relation.create-many":return`Create ${e.relations.length} relations`;case"relation.delete":return`Delete relation ${e.relationId}`;case"relation.delete-many":return`Delete ${e.relationIds.length} relations`;case"relation.reverse":return`Reverse relation ${e.relationId}`;case"marker.sync-from-scene":return"Sync marker graph";case"marker-type.create":return`Create marker type ${e.definition.label}`;case"marker-type.update":return`Update marker type ${e.typeId}`;case"marker-type.delete":return`Delete marker type ${e.typeId}`}}function BI(e){switch(e.type){case"marker.create-box":return{changedId:e.marker.id,changedIds:[e.marker.id],selectId:e.marker.id};case"marker.update":case"marker.delete":return{changedId:e.markerId,changedIds:[e.markerId]};case"relation.create":return{changedIds:[e.relation.from.id,e.relation.to.id]};case"relation.create-many":return{changedIds:[...new Set(e.relations.flatMap(t=>[t.from.id,t.to.id]))]};case"relation.delete":case"relation.delete-many":case"relation.reverse":case"marker.sync-from-scene":case"marker-type.create":case"marker-type.update":case"marker-type.delete":return{}}}function zI(e){let t=structuredClone(e);if(t.type==="marker.create-box"&&(t.marker=Hn(t.marker)),t.type==="marker.update"){let{spatial:r,...n}=t.patch;t.patch=n}return t}function yc(e,t){return JSON.stringify(e)===JSON.stringify(t)}function UI(e,t,r,n={}){let o=t.find(i=>i.path===r.path);if(!o)throw new Error(`Serialized property descriptor not found: ${r.path}`);if(o.readOnly===!0||typeof o.setValue!="function")throw new Error(`Serialized property is read-only: ${r.path}`);return o.setValue(e,r.value,{...n,targetId:r.targetId})}var VI="summary",HI="body";function Nr(){return{position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}}function Bj(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Bl(e){let t=XI(e);return t&&zj(t)?{mode:"matrix",matrix:t}:null}function KI(e){return ur(e)?{mode:"matrix",matrix:cg(e.matrix)}:{...e.mode==="trs"?{mode:"trs"}:{},position:$l(e.position),rotation:$l(e.rotation),scale:$l(e.scale)}}function ur(e){return e.mode==="matrix"}function jr(e){return e.mode!=="matrix"}function WI(e){return ur(e)?{x:e.matrix[12],y:e.matrix[13],z:e.matrix[14]}:$l(e.position)}function zj(e){return!!XI(e)&&Math.abs(e[3])<=1e-6&&Math.abs(e[7])<=1e-6&&Math.abs(e[11])<=1e-6&&Math.abs(e[15]-1)<=1e-6&&!!qI(e)}function lr(e){if(ur(e))return cg(e.matrix);let t=Uj(e.rotation),r=t.x,n=t.y,o=t.z,i=t.w,a=r+r,s=n+n,c=o+o,d=r*a,u=r*s,l=r*c,m=n*s,p=n*c,f=o*c,g=i*a,S=i*s,P=i*c,x=e.scale.x,T=e.scale.y,R=e.scale.z;return[(1-(m+f))*x,(u+P)*x,(l-S)*x,0,(u-P)*T,(1-(d+f))*T,(p+g)*T,0,(l+S)*R,(p-g)*R,(1-(d+m))*R,0,e.position.x,e.position.y,e.position.z,1]}function ig(e,t){return[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]]}function qI(e){let t=e[0],r=e[1],n=e[2],o=e[3],i=e[4],a=e[5],s=e[6],c=e[7],d=e[8],u=e[9],l=e[10],m=e[11],p=e[12],f=e[13],g=e[14],S=e[15],P=t*a-r*i,x=t*s-n*i,T=t*c-o*i,R=r*s-n*a,A=r*c-o*a,E=n*c-o*s,C=d*f-u*p,b=d*g-l*p,k=d*S-m*p,O=u*g-l*f,$=u*S-m*f,te=l*S-m*g,de=P*te-x*$+T*O+R*k-A*b+E*C;if(!Number.isFinite(de)||Math.abs(de)<1e-6)return null;let K=1/de;return[(a*te-s*$+c*O)*K,(n*$-r*te-o*O)*K,(f*E-g*A+S*R)*K,(l*A-u*E-m*R)*K,(s*k-i*te-c*b)*K,(t*te-n*k+o*b)*K,(g*T-p*E-S*x)*K,(d*E-l*T+m*x)*K,(i*$-a*k+c*C)*K,(r*k-t*$-o*C)*K,(p*A-f*T+S*P)*K,(u*T-d*A-m*P)*K,(a*b-i*O-s*C)*K,(t*O-r*b+n*C)*K,(f*x-p*R-g*P)*K,(d*R-u*x+l*P)*K]}function ag(e){let t={x:e[12],y:e[13],z:e[14]},r={x:rg(e[0],e[1],e[2]),y:rg(e[4],e[5],e[6]),z:rg(e[8],e[9],e[10])};if(Wj(e)<=0&&(r.y*=-1),!og(t)||!og(r)||Math.abs(r.x)<1e-6||Math.abs(r.y)<1e-6||Math.abs(r.z)<1e-6)return null;let n=1/r.x,o=1/r.y,i=1/r.z,a=[e[0]*n,e[1]*n,e[2]*n,0,e[4]*o,e[5]*o,e[6]*o,0,e[8]*i,e[9]*i,e[10]*i,0,0,0,0,1];if(!qj(a))return null;let s=Kj(Hj(a));if(!s)return null;let c=Vj(s);if(!og(c))return null;let d={position:t,rotation:c,scale:r};return bc(lr(d),e,1e-5)?d:null}function sg(e,t={}){let r=ag(e);return r||(t.allowMatrixFallback?Bl(e):null)}function YI(e){let t=Bj();for(let r of e)t=ig(lr(r),t);return sg(t,{allowMatrixFallback:!0})}function JI(e,t){return sg(ig(lr(t),lr(e)),{allowMatrixFallback:!0})}function _a(e,t,r={}){let n=qI(lr(e));return n?sg(ig(lr(t),n),r):null}function bc(e,t,r=1e-6){return e.length===t.length&&e.every((n,o)=>Math.abs(n-t[o])<=r)}function cg(e){return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]}function XI(e){return e.length!==16||!e.every(Number.isFinite)?null:cg(e)}function $l(e){return{x:e.x,y:e.y,z:e.z}}function Uj(e){let t=e.z*.5,r=e.x*.5,n=e.y*.5,o=Math.sin(t),i=Math.cos(t),a=Math.sin(r),s=Math.cos(r),c=Math.sin(n),d=Math.cos(n);return{x:d*a*i+c*s*o,y:c*s*i-d*a*o,z:d*s*o-c*a*i,w:d*s*i+c*a*o}}function Vj(e){let t=e.z,r=e.x,n=e.y,o=e.w,i=n*t-r*o,a=.4999999;if(i<-a)return{x:Math.PI/2,y:2*Math.atan2(n,o),z:0};if(i>a)return{x:-Math.PI/2,y:2*Math.atan2(n,o),z:0};let s=o*o,c=t*t,d=r*r,u=n*n;return{z:Math.atan2(2*(r*n+t*o),-c-d+u+s),x:Math.asin(-2*i),y:Math.atan2(2*(t*r+n*o),c-d-u+s)}}function Hj(e){let t=e[0],r=e[4],n=e[8],o=e[1],i=e[5],a=e[9],s=e[2],c=e[6],d=e[10],u=t+i+d;if(u>0){let m=.5/Math.sqrt(u+1);return{w:.25/m,x:(c-a)*m,y:(n-s)*m,z:(o-r)*m}}if(t>i&&t>d){let m=2*Math.sqrt(1+t-i-d);return{w:(c-a)/m,x:.25*m,y:(r+o)/m,z:(n+s)/m}}if(i>d){let m=2*Math.sqrt(1+i-t-d);return{w:(n-s)/m,x:(r+o)/m,y:.25*m,z:(a+c)/m}}let l=2*Math.sqrt(1+d-t-i);return{w:(o-r)/l,x:(n+s)/l,y:(a+c)/l,z:.25*l}}function Kj(e){let t=Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w);return!Number.isFinite(t)||t<1e-6?null:{x:e.x/t,y:e.y/t,z:e.z/t,w:e.w/t}}function Wj(e){let t=e[0],r=e[1],n=e[2],o=e[3],i=e[4],a=e[5],s=e[6],c=e[7],d=e[8],u=e[9],l=e[10],m=e[11],p=e[12],f=e[13],g=e[14],S=e[15],P=l*S-g*m,x=u*S-f*m,T=u*g-f*l,R=d*S-p*m,A=d*g-l*p,E=d*f-p*u,C=+(a*P-s*x+c*T),b=-(i*P-s*R+c*A),k=+(i*x-a*R+c*E),O=-(i*T-a*A+s*E);return t*C+r*b+n*k+o*O}function rg(e,t,r){return Math.sqrt(e*e+t*t+r*r)}function qj(e){let t={x:e[0],y:e[1],z:e[2]},r={x:e[4],y:e[5],z:e[6]},n={x:e[8],y:e[9],z:e[10]};return Math.abs(ng(t,r))<1e-6&&Math.abs(ng(t,n))<1e-6&&Math.abs(ng(r,n))<1e-6}function ng(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function og(e){return Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)}var Yj={supportsShear:!0,supportsMatrixTransform:!0};function zl(e={}){let t={...Yj,...e.storageCapabilities};return{allowMatrixFallback:(e.allowMatrixFallback??!0)&&t.supportsMatrixTransform&&t.supportsShear,storageCapabilities:t}}function V(e){return typeof e=="number"&&Number.isFinite(e)}function wo(e){return e==null||typeof e=="string"}function Oi(e){return e==null||typeof e=="string"&&e.trim().length>0}function Ul(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function Vl(e){return e==null||typeof e=="boolean"}function Wt(e){if(!e||typeof e!="object")return!1;let t=e;return V(t.x)&&V(t.y)&&V(t.z)}function Hl(e){if(!e||typeof e!="object")return!1;let t=e;return V(t.x)&&V(t.y)}function Ec(e){if(V(e))return e>=0;if(!e||typeof e!="object")return!1;let t=e;return V(t.x)&&t.x>=0&&V(t.y)&&t.y>=0&&V(t.z)&&t.z>=0}function pn(e){if(!e||typeof e!="object")return!1;let t=e;return V(t.r)&&V(t.g)&&V(t.b)}function Gt(e){return V(e)&&e>0}function fn(e){return V(e)&&e>=0}function Ci(e){return V(e)&&e>=0&&e<=1}function Kl(e){if(!e||typeof e!="object")return!1;let t=e;return!(t.position!==void 0&&!Wt(t.position)||t.rotation!==void 0&&!Wt(t.rotation)||t.rotationDeg!==void 0&&!Wt(t.rotationDeg)||t.scale!==void 0&&!Ec(t.scale))}function Wl(e){return e==="orthographic"||e==="perspective"}function ql(e){return e==="hemispheric"||e==="directional"}function Na(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function ja(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function Ga(e){return e==="inherit"||e==="none"||e==="dynamic"||e==="static"||e==="blob"||e==="projected"||e==="auto"}function La(e){return e==="inherit"||e==="low"||e==="medium"||e==="high"||e==="ultra"}function Fa(e){return e==="inherit"||e==="scene-main"||e==="nearest"||e==="explicit"}var gn=["group","instance","transform","primitive"],xt=["instance","transform","primitive"],Jj=["position","rotation","scale"],Xj=["x","y","z"];function Qj(e){return{path:`transform.${e}`,appliesTo:gn,validate:t=>t==null||(e==="scale"?Ec(t):Wt(t))}}function Zj(e,t){return{path:`transform.${e}.${t}`,appliesTo:gn,...e==="scale"?{allowDelete:!1}:{},validate:r=>r==null||(e==="scale"?fn(r):V(r))}}function eG(e){return[Qj(e),...Xj.map(t=>Zj(e,t))]}var dg=[{path:"name",appliesTo:gn,validate:wo},{path:"parentId",appliesTo:gn,validate:wo},{path:"enabled",appliesTo:gn,validate:Vl},{path:"shadow.cast",appliesTo:xt,validate:e=>e==null||Na(e)},{path:"shadow.receive",appliesTo:xt,validate:e=>e==null||ja(e)},{path:"shadow.mode",appliesTo:xt,validate:e=>e==null||Ga(e)},{path:"shadow.quality",appliesTo:xt,validate:e=>e==null||La(e)},{path:"shadow.light.mode",appliesTo:xt,validate:e=>e==null||Fa(e)},{path:"shadow.light.lightId",appliesTo:xt,validate:wo},{path:"shadow.params.opacity",appliesTo:xt,validate:e=>e==null||Ci(e)},{path:"shadow.params.softness",appliesTo:xt,validate:e=>e==null||fn(e)},{path:"shadow.params.bias",appliesTo:xt,validate:e=>e==null||V(e)},{path:"shadow.params.normalBias",appliesTo:xt,validate:e=>e==null||V(e)},{path:"shadow.params.maxDistance",appliesTo:xt,validate:e=>e==null||Gt(e)},{path:"shadow.params.resolution",appliesTo:xt,validate:e=>e==null||e===512||e===1024||e===2048||e===4096},{path:"shadow.params.cascadeCount",appliesTo:xt,validate:e=>e==null||e===1||e===2||e===4},{path:"shadow.params.bakeSamples",appliesTo:xt,validate:e=>e==null||Gt(e)},{path:"shadow.params.blurKernel",appliesTo:xt,validate:e=>e==null||fn(e)},{path:"transform",appliesTo:gn,validate:e=>e==null||Kl(e)},...Jj.flatMap(eG),{path:"transform.rotationDeg",appliesTo:gn,validate:e=>e==null||Wt(e)},{path:"transform.rotationDeg.x",appliesTo:gn,validate:e=>e==null||V(e)},{path:"transform.rotationDeg.y",appliesTo:gn,validate:e=>e==null||V(e)},{path:"transform.rotationDeg.z",appliesTo:gn,validate:e=>e==null||V(e)},{path:"instance.assetId",appliesTo:["instance"],validate:e=>typeof e=="string"&&e.trim().length>0,allowDelete:!1},{path:"primitive.shape",appliesTo:["primitive"],validate:e=>e==="cube"||e==="sphere"||e==="plane"||e==="capsule",allowDelete:!1},{path:"camera.projection",appliesTo:["transform"],validate:Wl,allowDelete:!1},{path:"camera.alpha",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"camera.beta",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"camera.radius",appliesTo:["transform"],validate:Gt,allowDelete:!1},{path:"camera.orthoSize",appliesTo:["transform"],validate:Gt,allowDelete:!1},{path:"camera.fov",appliesTo:["transform"],validate:Gt,allowDelete:!1},{path:"camera.targetOffset",appliesTo:["transform"],validate:e=>e==null||Wt(e)},{path:"camera.targetOffset.x",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"camera.targetOffset.y",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"camera.targetOffset.z",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"camera.minZ",appliesTo:["transform"],validate:Gt,allowDelete:!1},{path:"camera.maxZ",appliesTo:["transform"],validate:Gt,allowDelete:!1},{path:"camera.lowerBetaLimit",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"camera.upperBetaLimit",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"camera.lowerRadiusLimit",appliesTo:["transform"],validate:Gt,allowDelete:!1},{path:"camera.upperRadiusLimit",appliesTo:["transform"],validate:Gt,allowDelete:!1},{path:"camera.inertia",appliesTo:["transform"],validate:Ci,allowDelete:!1},{path:"camera.targetScreenOffset",appliesTo:["transform"],validate:e=>e==null||Hl(e)},{path:"camera.targetScreenOffset.x",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"camera.targetScreenOffset.y",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"light.type",appliesTo:["transform"],validate:ql,allowDelete:!1},{path:"light.intensity",appliesTo:["transform"],validate:fn,allowDelete:!1},{path:"light.direction",appliesTo:["transform"],validate:Wt,allowDelete:!1},{path:"light.direction.x",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"light.direction.y",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"light.direction.z",appliesTo:["transform"],validate:V,allowDelete:!1},{path:"light.diffuseColor",appliesTo:["transform"],validate:e=>e==null||pn(e)},{path:"light.groundColor",appliesTo:["transform"],validate:e=>e==null||pn(e)},{path:"marker.type",appliesTo:["transform"],validate:wo,allowDelete:!1},{path:"marker.kind",appliesTo:["transform"],validate:Oi},{path:"marker.tags",appliesTo:["transform"],validate:e=>e==null||Ul(e)},{path:"marker.note",appliesTo:["transform"],validate:wo},{path:"marker.color",appliesTo:["transform"],validate:e=>e==null||pn(e)},{path:"marker.color.r",appliesTo:["transform"],validate:e=>e==null||V(e),allowDelete:!1},{path:"marker.color.g",appliesTo:["transform"],validate:e=>e==null||V(e),allowDelete:!1},{path:"marker.color.b",appliesTo:["transform"],validate:e=>e==null||V(e),allowDelete:!1}];var Ue=["instance","transform","primitive"];function qt(e){return{path:e,appliesTo:Ue,validate:t=>t==null||pn(t)}}function me(e){return{path:e,appliesTo:Ue,validate:t=>t==null||V(t)}}function QI(e){return{path:e,appliesTo:Ue,validate:t=>t==null||typeof t=="boolean"}}function tt(e){return{path:e,appliesTo:Ue,validate:Oi}}function rG(e){return{path:e,appliesTo:Ue,validate:t=>t==null||t==="opaque"||t==="mask"||t==="blend"}}function nG(e){return{path:e,appliesTo:Ue,validate:t=>t==null||t==="lit"||t==="unlit"}}var oG=[{path:"transformType",appliesTo:["transform"],validate:e=>e==null||typeof e=="string"},{path:"rendering.renderingGroupId",appliesTo:Ue,validate:e=>e==null||e===0||e===1||e===2||e===3},{path:"rendering.alphaIndex",appliesTo:Ue,validate:e=>e==null||V(e)},{path:"metadata.shadowInspectorLanguage",appliesTo:Ue,validate:e=>e==null||e==="zh"||e==="en"},qt("overrides.material.albedoColor"),qt("overrides.material.diffuseColor"),qt("overrides.material.emissiveColor"),me("overrides.material.metallic"),me("overrides.material.roughness"),me("overrides.material.contrast"),me("overrides.material.brightness"),me("overrides.material.saturation"),me("overrides.material.hue"),me("overrides.material.colorDensity"),me("overrides.material.alpha"),me("overrides.material.alphaCutOff"),me("overrides.material.transparencyMode"),QI("overrides.material.backFaceCulling"),tt("overrides.material.albedoTexture.url"),tt("overrides.material.normalTexture.url"),me("overrides.material.normalTexture.level"),tt("overrides.material.metallicTexture.url"),tt("overrides.material.occlusionTexture.url"),tt("overrides.material.emissiveTexture.url"),tt("overrides.material.opacityTexture.url"),qt("overrides.material.pbr.albedoColor"),me("overrides.material.pbr.baseWeight"),qt("overrides.material.pbr.reflectivityColor"),me("overrides.material.pbr.microSurface"),qt("overrides.material.pbr.emissiveColor"),qt("overrides.material.pbr.ambientColor"),me("overrides.material.pbr.lightFalloff"),me("overrides.material.pbr.directIntensity"),me("overrides.material.pbr.emissiveIntensity"),me("overrides.material.pbr.environmentIntensity"),me("overrides.material.pbr.specularIntensity"),me("overrides.material.pbr.metallicF0Factor"),me("overrides.material.pbr.indexOfRefraction"),qt("overrides.material.standard.diffuseColor"),qt("overrides.material.standard.specularColor"),me("overrides.material.standard.specularPower"),qt("overrides.material.standard.emissiveColor"),qt("overrides.material.standard.ambientColor"),QI("overrides.material.standard.useSpecularOverAlpha"),{path:"overrides.materialBinding.materialAssetId",appliesTo:Ue,validate:Oi},nG("overrides.materialBinding.override.lightingModel"),qt("overrides.materialBinding.override.baseColor.color"),{path:"overrides.materialBinding.override.baseColor.color.r",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1},{path:"overrides.materialBinding.override.baseColor.color.g",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1},{path:"overrides.materialBinding.override.baseColor.color.b",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1},tt("overrides.materialBinding.override.baseColor.texture.url"),tt("overrides.materialBinding.override.baseColor.texture.textureAssetId"),me("overrides.materialBinding.override.baseColor.brightness"),me("overrides.materialBinding.override.baseColor.saturation"),me("overrides.materialBinding.override.baseColor.contrast"),me("overrides.materialBinding.override.baseColor.hue"),tt("overrides.materialBinding.override.normal.texture.url"),tt("overrides.materialBinding.override.normal.texture.textureAssetId"),me("overrides.materialBinding.override.normal.strength"),me("overrides.materialBinding.override.metallic"),me("overrides.materialBinding.override.roughness"),tt("overrides.materialBinding.override.metallicRoughness.texture.url"),tt("overrides.materialBinding.override.metallicRoughness.texture.textureAssetId"),tt("overrides.materialBinding.override.occlusion.texture.url"),tt("overrides.materialBinding.override.occlusion.texture.textureAssetId"),me("overrides.materialBinding.override.occlusion.strength"),qt("overrides.materialBinding.override.emission.color"),{path:"overrides.materialBinding.override.emission.color.r",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1},{path:"overrides.materialBinding.override.emission.color.g",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1},{path:"overrides.materialBinding.override.emission.color.b",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1},me("overrides.materialBinding.override.emission.intensity"),tt("overrides.materialBinding.override.emission.texture.url"),tt("overrides.materialBinding.override.emission.texture.textureAssetId"),tt("overrides.materialBinding.override.emission.maskTexture.url"),tt("overrides.materialBinding.override.emission.maskTexture.textureAssetId"),rG("overrides.materialBinding.override.alpha.mode"),me("overrides.materialBinding.override.alpha.opacity"),me("overrides.materialBinding.override.alpha.cutoff"),tt("overrides.materialBinding.override.alpha.texture.url"),tt("overrides.materialBinding.override.alpha.texture.textureAssetId"),{path:"overrides.outline",appliesTo:Ue,validate:e=>e==null||iG(e)},{path:"overrides.outline.strategy",appliesTo:Ue,validate:e=>e==null||e==="babylon-default"},{path:"overrides.outline.renderOutline",appliesTo:Ue,validate:e=>e==null||typeof e=="boolean"},me("overrides.outline.outlineWidth"),{path:"overrides.outline.outlineColor",appliesTo:Ue,validate:e=>e==null||pn(e)},{path:"overrides.outline.outlineColor.r",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1},{path:"overrides.outline.outlineColor.g",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1},{path:"overrides.outline.outlineColor.b",appliesTo:Ue,validate:e=>e==null||V(e),allowDelete:!1}],ZI=[...dg,...oG];function iG(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return(t.strategy==null||t.strategy==="babylon-default")&&(t.renderOutline==null||typeof t.renderOutline=="boolean")&&(t.outlineWidth==null||V(t.outlineWidth))&&(t.outlineColor==null||pn(t.outlineColor))}function lg(e,t){let r=ZI.find(n=>n.path===e)??null;return!r||!r.appliesTo.includes(t)?null:r}var Wn="scene.materialAssets.",ug="__fps_duplicate_material_asset__:",aG="mat_";function sG(e){return String(e??"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"")}function wi(e){let t=sG(e);return`${aG}${t||"material"}`}function pg(){let e=globalThis.crypto?.randomUUID?.();if(e)return e;let t=Math.random().toString(36).slice(2,12);return`${Date.now().toString(36)}-${t}`}function eT(e){let t=String(e??"").trim()||"material",r=[0,1,2,3].map(n=>cG(`${t}\0${n}`)).join("");return`${r.slice(0,8)}-${r.slice(8,12)}-4${r.slice(13,16)}-a${r.slice(17,20)}-${r.slice(20,32)}`}function cG(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function tT(e,t=Wn){if(!e.startsWith(t))return null;let r=e.slice(t.length);if(!r)return null;if(r.endsWith(".name")){let s=r.slice(0,-5);return s?{materialAssetId:s,fieldPath:"name"}:null}let n=".properties.",o=r.lastIndexOf(n);if(o<0)return null;let i=r.slice(0,o),a=r.slice(o+n.length);return!i||!a?null:{materialAssetId:i,fieldPath:`properties.${a}`}}function vo(e){return e==="overrides.materialBinding.materialAssetId"||Sn(e,"materialAssetId")!=null}function fg(e){if(vo(e))return!0;let t="overrides.materialBinding.override.";if(e.startsWith(t))return mg(`properties.${e.slice(t.length)}`);let r=dG(e);return r?mg(`properties.${r}`):!1}function Yl(e){return e==="overrides.materialBinding.materialAssetId"||e.startsWith("overrides.materialBinding.override.")||Sn(e,"materialAssetId")!=null||Sn(e,"override")!=null}function Sn(e,t){let r="overrides.materialSlotBindings.";if(!e.startsWith(r))return null;let n=e.slice(r.length);if(t==="materialAssetId"){let c=".materialAssetId";if(!n.endsWith(c))return null;let d=n.slice(0,-c.length);return d||null}let o=".override.",i=n.lastIndexOf(o);if(i<0)return null;let a=n.slice(0,i),s=n.slice(i+o.length);return a&&s?a:null}function dG(e){let t="overrides.materialSlotBindings.";if(!e.startsWith(t))return null;let r=e.slice(t.length),n=".override.",o=r.lastIndexOf(n);if(o<0)return null;let i=r.slice(0,o),a=r.slice(o+n.length);return i&&a?a:null}function mg(e){return e.endsWith(".texture.url")||e.endsWith(".maskTexture.url")||e.endsWith(".texture.textureAssetId")||e.endsWith(".maskTexture.textureAssetId")}function mr(e,t){if(e==="name"&&typeof t=="string")return t.trim();if(mg(e)&&typeof t=="string"){let r=t.trim();return r||null}return(e==="properties.alpha.mode"||e==="properties.lightingModel")&&typeof t=="string"?t.trim():t}function qn(e,t,r,n=Co){let o=mr(e,t);if(e==="name")return typeof o=="string"&&o.length>0;let i=lG(e,r,n);return i?uG(i,o):!1}function lG(e,t,r){if(t!=null)return gc(t,e,r);for(let n of r.list()){let o=gc(n.shaderId,e,r);if(o)return o}return null}function uG(e,t){if(t==null)return e.kind==="texture"||e.kind==="string"&&e.nullable===!0;if(e.kind==="number")return!(!V(t)||e.min!=null&&t<e.min||e.max!=null&&t>e.max);if(e.kind==="boolean")return typeof t=="boolean";if(e.kind==="string")return typeof t=="string"&&t.trim().length>0;if(e.kind==="enum")return typeof t=="string"&&e.values.includes(t);if(e.kind==="color")return e.channels===4?pG(t):mG(t);if(e.kind==="vec2"||e.kind==="vec3"){if(!t||typeof t!="object"||Array.isArray(t))return!1;let r=t,n=e.kind==="vec2"?["x","y"]:["x","y","z"];return Object.keys(r).every(o=>n.includes(o))&&n.every(o=>V(r[o]))}if(e.kind==="texture"){if(!t||typeof t!="object"||Array.isArray(t))return!1;let r=t;return Object.keys(r).every(n=>n==="url"||n==="textureAssetId")&&["url","textureAssetId"].every(n=>r[n]===void 0||typeof r[n]=="string"&&r[n].trim().length>0)}return!1}function Jl(e){return typeof e!="string"||!e.startsWith(ug)?null:e.slice(ug.length).trim()||null}function rT(e){return e.trim().replace(/^\/+|\/+$/g,"")}function mG(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return Object.keys(t).every(r=>r==="r"||r==="g"||r==="b")&&V(t.r)&&V(t.g)&&V(t.b)}function pG(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return Object.keys(t).every(r=>r==="r"||r==="g"||r==="b"||r==="a")&&V(t.r)&&V(t.g)&&V(t.b)&&V(t.a)}var fG={r:.78,g:.78,b:.78};function $a(e,t={}){let r=e??{},n=hG(r.baseColor?.texture,t),o=SG(r,t),i=gG(r,t);return{kind:"material-sphere",baseColor:yG(r),metallic:Ic(r.metallic??0),roughness:Ic(r.roughness??1),...r.emission?.color?{emissionColor:iT(r.emission.color)}:{},emissionIntensity:bG(r.emission?.intensity,0),textureUrl:n,profile:o,properties:structuredClone(e??{}),...i.length>0?{textureResources:i}:{}}}function gG(e,t){return[["baseColor",e.baseColor?.texture],["normal",e.normal?.texture],["metallicRoughness",e.metallicRoughness?.texture],["occlusion",e.occlusion?.texture],["emission",e.emission?.texture],["emissionMask",e.emission?.maskTexture],["alpha",e.alpha?.texture]].flatMap(([n,o])=>{let i=gg(o,t);return i?[{channel:n,...i}]:[]})}function SG(e,t){let r=structuredClone(e),n=vi(r.baseColor?.texture,t);n&&(r.baseColor={...r.baseColor??{},texture:n});let o=vi(r.normal?.texture,t);o&&(r.normal={...r.normal??{},texture:o});let i=vi(r.metallicRoughness?.texture,t);i&&(r.metallicRoughness={...r.metallicRoughness??{},texture:i});let a=vi(r.occlusion?.texture,t);a&&(r.occlusion={...r.occlusion??{},texture:a});let s=vi(r.emission?.texture,t),c=vi(r.emission?.maskTexture,t);(s||c)&&(r.emission={...r.emission??{},...s?{texture:s}:{},...c?{maskTexture:c}:{}});let d=vi(r.alpha?.texture,t);return d&&(r.alpha={...r.alpha??{},texture:d}),r}function vi(e,t){if(!e)return;let r=gg(e,t);if(r?.state==="missing")return{...e,url:null};let n=r?.url;return{...e,...n?{url:n}:{}}}function hG(e,t){let r=gg(e,t);return r?.state==="ready"?r.url:void 0}function gg(e,t){let r=typeof e?.textureAssetId=="string"?e.textureAssetId.trim():"";if(r){let o=t.resolveTextureAssetUrl?.(r)?.trim();if(o)return{reference:r,state:"ready",url:o};let i=t.textureAssets?.find(a=>a.id===r)?.url?.trim();if(i)return{reference:r,state:"ready",url:i};if(t.resolveTextureAssetUrl||Array.isArray(t.textureAssets))return{reference:r,state:"missing"}}let n=typeof e?.url=="string"?e.url.trim():"";return n?{reference:r||n,state:"ready",url:n}:null}function oT(e,t){let r=e??{},n=nT(r.metallic??0),o=nT(r.roughness??1);return`M ${n} / R ${o} - ${t}`}function yG(e){let r=(e.baseColor??{}).color??fG;return iT(r)}function iT(e){return{r:Ic(e.r),g:Ic(e.g),b:Ic(e.b)}}function Ic(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function nT(e){return Number.isFinite(e)?Number.isInteger(e)?String(e):e.toFixed(2).replace(/0+$/,"").replace(/\.$/,""):"0"}function bG(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function Le(e,t){return t?e.scene.materialAssets?.find(r=>r.id===t)??null:null}function hn(e,t){return!!Le(e,t)}function pT(e,t){return t?{state:"asset",materialAssetId:t.id,materialAsset:t}:e?.materialAssetId?{state:"missing-asset",materialAssetId:e.materialAssetId}:e?.override?{state:"override"}:{state:"inherit"}}function Tc(e,t){let r=new Set;for(let n of Sg(e,t))r.add(n.gameObjectId);return[...r]}function Sg(e,t){let r=t.trim();return r?Pc(e).filter(n=>n.materialAssetId===r):[]}function Pc(e){let t=[],r=new Map(e.assets.map(n=>[n.id,n]));for(let n of e.scene.gameObjects){let o=DG(n),i=Xl(n.overrides?.materialBinding);i&&t.push({kind:"root",scope:"scene",gameObjectId:n.id,gameObjectName:n.name,materialAssetId:i,bindingPath:"overrides.materialBinding.materialAssetId",label:o});let a=Yn(e,n,r),s=new Map(a.filter(d=>!!d.slotId).map(d=>[d.slotId,d])),c=n.overrides?.materialSlotBindings??{};for(let[d,u]of Object.entries(c)){let l=Xl(u);if(!l)continue;let m=s.get(d),p=RG(m,d);t.push({kind:"slot",scope:"scene",gameObjectId:n.id,gameObjectName:n.name,materialAssetId:l,bindingPath:`overrides.materialSlotBindings.${d}.materialAssetId`,label:`${o} / ${p}`,slotId:d,ownerNodePath:yn(m)??d})}}for(let n of e.assets)if(!(n.type!=="prefab"||!n.prefab)){aT(t,{ownerId:n.id,ownerName:n.displayName??n.id,prefabAssetId:n.id,path:`assets.${n.id}.prefab.overrides`,overrides:n.prefab.overrides});for(let o of n.prefab.nodes??[])aT(t,{ownerId:`${n.id}:${o.id}`,ownerName:`${n.displayName??n.id} / ${o.name??o.id}`,prefabAssetId:n.id,prefabNodeId:o.id,path:`assets.${n.id}.prefab.nodes.${o.id}.overrides`,overrides:o.overrides})}return t}function aT(e,t){let r=Xl(t.overrides?.materialBinding);r&&e.push({kind:"root",scope:"prefab",gameObjectId:t.ownerId,gameObjectName:t.ownerName,materialAssetId:r,bindingPath:`${t.path}.materialBinding.materialAssetId`,label:t.ownerName,prefabAssetId:t.prefabAssetId,...t.prefabNodeId?{prefabNodeId:t.prefabNodeId}:{}});for(let[n,o]of Object.entries(t.overrides?.materialSlotBindings??{})){let i=Xl(o);i&&e.push({kind:"slot",scope:"prefab",gameObjectId:t.ownerId,gameObjectName:t.ownerName,materialAssetId:i,bindingPath:`${t.path}.materialSlotBindings.${n}.materialAssetId`,label:`${t.ownerName} / ${n}`,slotId:n,ownerNodePath:n,prefabAssetId:t.prefabAssetId,...t.prefabNodeId?{prefabNodeId:t.prefabNodeId}:{}})}}function Zl(e){let t=[...new Set((e.scene.materialAssets??[]).map(s=>s.id?.trim()).filter(s=>!!s))],r=new Set(t),n=Pc(e),o=n.filter(s=>!r.has(s.materialAssetId)),i=new Map;for(let s of o){let c=i.get(s.materialAssetId)??[];c.push(s),i.set(s.materialAssetId,c)}let a=[...i.entries()].map(([s,c])=>({kind:"missing-material-asset",materialAssetId:s,usages:c}));return{ok:a.length===0,materialAssetIds:t,references:n,missingMaterialAssetIds:a.map(s=>s.materialAssetId),missingReferences:o,issues:a}}function Yn(e,t,r){let n=new Map;for(let o of Ba(e,t,r))n.set(o.slotId,o);return[...n.values()].sort((o,i)=>(o.label??o.slotId).localeCompare(i.label??i.slotId)||o.slotId.localeCompare(i.slotId))}function fT(e,t){return Ba(e,t).length>0}function gT(e,t,r){let n=structuredClone(e);return n.overrides=n.overrides??{},t.slotId&&(n.overrides.materialSlotBindings=n.overrides.materialSlotBindings??{},n.overrides.materialSlotBindings[t.slotId]={...n.overrides.materialSlotBindings[t.slotId]??{},materialAssetId:r}),n}function Jn(e){return[...new Set(e.sourceSurfaces.map(t=>t.sourceMaterialIndex).filter(t=>Number.isInteger(t)))].sort((t,r)=>t-r)}function yn(e){return e?.sourceSurfaces[0]?.ownerNodePath??null}function ST(e){return e.slotId}function hg(e){return`overrides.materialSlotBindings.${e.slotId}.materialAssetId`}function Ac(e,t){return e.overrides?.materialSlotBindings?.[t.slotId]}function hT(e){let t=yT(e);if(!t)return;let r={},n=MG(t.materialAssetId);return n&&(r.materialAssetId=n),t.override&&typeof t.override=="object"&&!Array.isArray(t.override)&&(r.override=t.override),Object.keys(r).length>0?r:void 0}function Ba(e,t,r){let n=Fe(t);if(!n)return[];let i=(r?.get(n.assetId)??e.assets.find(s=>s.id===n.assetId))?.metadata?.materialSlots;if(!Array.isArray(i))return[];let a=[];for(let s of i){let c=eu(s);c&&a.push(c)}return a}function eu(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=typeof t.slotId=="string"&&t.slotId.trim()?t.slotId.trim():"",n=Array.isArray(t.sourceSurfaces)?t.sourceSurfaces:null,o=EG(n);if(!r||!n||o.length===0||o.length!==n.length)return null;let i=typeof t.label=="string"&&t.label.trim()?t.label.trim():o[0].ownerNodePath,a=typeof t.materialName=="string"&&t.materialName.trim()?t.materialName.trim():"",s=Array.isArray(t.materialNames)?t.materialNames.filter(d=>typeof d=="string"&&!!d.trim()).map(d=>d.trim()):void 0,c=TG(t.sourceMaterialProfiles);return{slotId:r,label:i,sourceSurfaces:o,...a?{materialName:a}:{},...s&&s.length>0?{materialNames:s}:{},...c&&c.length>0?{sourceMaterialProfiles:c}:{}}}function EG(e){return Array.isArray(e)?e.flatMap(t=>{let r=yT(t);if(!r)return[];let n=rT(typeof r.ownerNodePath=="string"?r.ownerNodePath:""),o=Number.isInteger(r.meshIndex)&&r.meshIndex>=0?r.meshIndex:void 0,i=Number.isInteger(r.primitiveIndex)&&r.primitiveIndex>=0?r.primitiveIndex:void 0;if(!n||o==null||i==null)return[];let a=Number.isInteger(r.nodeIndex)&&r.nodeIndex>=0?r.nodeIndex:void 0,s=Array.isArray(r.nodeIndexPath)?r.nodeIndexPath.filter(m=>Number.isInteger(m)&&m>=0):void 0,c=Number.isInteger(r.sourceMaterialIndex)&&r.sourceMaterialIndex>=0?r.sourceMaterialIndex:void 0,d=typeof r.sourceMeshName=="string"&&r.sourceMeshName.trim()?r.sourceMeshName.trim():void 0,u=typeof r.triangleCount=="number"&&Number.isFinite(r.triangleCount)&&r.triangleCount>=0?r.triangleCount:void 0,l=IG(r.boundingBox);return[{ownerNodePath:n,...a!=null?{nodeIndex:a}:{},...s&&s.length>0?{nodeIndexPath:s}:{},meshIndex:o,primitiveIndex:i,...c!=null?{sourceMaterialIndex:c}:{},...d?{sourceMeshName:d}:{},...u!=null?{triangleCount:u}:{},...l?{boundingBox:l}:{}}]}):[]}function IG(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r=sT(t.min),n=sT(t.max);if(!(!r&&!n))return{...r?{min:r}:{},...n?{max:n}:{}}}function sT(e){if(!Array.isArray(e)||e.length<3)return null;let[t,r,n]=e;return typeof t=="number"&&Number.isFinite(t)&&typeof r=="number"&&Number.isFinite(r)&&typeof n=="number"&&Number.isFinite(n)?[t,r,n]:null}function TG(e){if(!Array.isArray(e))return;let t=e.map(PG).filter(r=>!!r);return t.length>0?t:void 0}function PG(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(!Number.isInteger(t.sourceMaterialIndex))return null;let r=typeof t.materialName=="string"&&t.materialName.trim()?t.materialName.trim():"",n=t.profile&&typeof t.profile=="object"&&!Array.isArray(t.profile)?t.profile:void 0,o=AG(t.textureHints);return{sourceMaterialIndex:t.sourceMaterialIndex,...r?{materialName:r}:{},...n?{profile:n}:{},...o&&o.length>0?{textureHints:o}:{}}}function AG(e){if(!Array.isArray(e))return;let t=e.map(xG).filter(r=>!!r);return t.length>0?t:void 0}function xG(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=typeof t.profilePath=="string"&&t.profilePath.trim()?t.profilePath.trim():"",n=typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():"";return!r||!n?null:{profilePath:r,reason:n,...Number.isInteger(t.textureIndex)?{textureIndex:t.textureIndex}:{},...Number.isInteger(t.imageIndex)?{imageIndex:t.imageIndex}:{},...Number.isInteger(t.bufferView)?{bufferView:t.bufferView}:{},...typeof t.mimeType=="string"&&t.mimeType.trim()?{mimeType:t.mimeType.trim()}:{},...typeof t.uri=="string"&&t.uri.trim()?{uri:t.uri.trim()}:{}}}function yT(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function MG(e){return typeof e=="string"&&e.trim()?e.trim():null}function DG(e){return e.name?.trim()||e.id}function Xl(e){return typeof e?.materialAssetId=="string"?e.materialAssetId.trim():""}function RG(e,t){return e?.label?.trim()||yn(e)?.trim()||e?.slotId?.trim()||t}var Ql=class{constructor(t){this.byMaterialId=new Map;this.byOwnerId=new Map;for(let r of Pc(t)){let n=this.byMaterialId.get(r.materialAssetId)??[];n.push(r),this.byMaterialId.set(r.materialAssetId,n);let o=this.byOwnerId.get(r.gameObjectId)??[];o.push(r),this.byOwnerId.set(r.gameObjectId,o)}}forMaterial(t){return this.byMaterialId.get(t.trim())??[]}forOwner(t){return this.byOwnerId.get(t)??[]}},cT=new WeakMap;function OG(e){let t=cT.get(e);return t||(t=new Ql(e),cT.set(e,t)),t}function yg(e){return e?.system?.preset}function dT(e,t){let r=yg(e);return r==="default-pbr"?t.defaultMaterial:r==="default-standard"?t.defaultStandardMaterial:e.name||e.id}function lT(e,t){let r=yg(e);return r==="default-pbr"?t.defaultMaterialMeta:r==="default-standard"?t.defaultStandardMaterialMeta:t.formatMaterialMeta(e.id)}function CG(e,t){let r=e.currentAsset??null,n=!!r&&!e.currentValue,o=r&&!n?uT(e.document,r.id,e.ownershipText,t):null,i=r?lT(r,e.displayText):e.currentValue?e.pickerText.summaryMissingAsset:e.pickerText.summaryInherit,a=o?mT(i,o):i;return{pickerKind:"material",pickerTitle:e.pickerText.materialPickerTitle,pickerTrigger:"preview",placeholder:e.currentValue?e.pickerText.summaryMissingAsset:e.pickerText.inheritNone,...r?{currentMaterialAssetId:r.id,currentMaterialShaderId:r.shaderId}:{},currentLabel:r?dT(r,e.displayText):e.currentValue?e.currentValue:e.pickerText.inheritNone,currentMeta:a,...o?.usageLabel?{currentUsageLabel:o.usageLabel}:{},...o?.editImpactLabel?{currentEditImpactLabel:o.editImpactLabel}:{},...o?{currentOwnership:o}:{},currentPreview:r?$a(r.properties,e.previewContext):void 0,candidates:[{label:e.pickerText.inheritNone,value:"",meta:e.pickerText.summaryInherit},...e.materialAssets.map(s=>{let c=uT(e.document,s.id,e.ownershipText,t);return{label:dT(s,e.displayText),value:s.id,meta:mT(lT(s,e.displayText),c),kind:"material",preview:$a(s.properties,e.previewContext),...c?.usageLabel?{usageLabel:c.usageLabel}:{},...c?{ownership:c}:{}}})]}}function uT(e,t,r,n){if(!e||!n)return null;let o=t.trim(),i=n.forMaterial(o),a=i.length;return{materialAssetId:o,usage:{count:a,items:i.map(s=>structuredClone(s))},usageCount:a,used:a>0,shared:a>1,...r?{usageLabel:r.formatUsageCount(a),editImpactLabel:r.formatEditImpact(a),duplicateImpactLabel:r.formatDuplicateImpact(a)}:{}}}function mT(e,t){return[e,t?.usageLabel].filter(Boolean).join(" \xB7 ")}function wG(e,t,r={}){return(e.scene.materialAssets??[]).map(n=>{let o=t.forMaterial(n.id);return{id:`material:${n.id}`,assetId:n.id,kind:"material",label:n.name||n.id,meta:oT(n.properties,n.id),preview:$a(n.properties,r),material:{id:n.id,name:n.name||n.id,shaderId:n.shaderId,readonly:n.system?.readonly===!0||yg(n)!=null,usage:{count:o.length,items:o.map(i=>structuredClone(i))},properties:structuredClone(n.properties)},placeable:!1}})}var vG={createUsageIndex(e){return new Ql(e)},getCachedUsageIndex:OG,createPickerControlOptions:CG,createBrowserAssetItems:wG},Lt=vG;var ki=1;var Eg="prefab.";var YX=Symbol("unsupported-editor-scene-authored-clone-value");function Q(e){return e.components.find(jG)??null}function Fe(e){return e.components.find(GG)??null}function ko(e){return e.components.find(LG)??null}function Yt(e){return e?.type==="prefab"&&je(e.prefab?.sourceAssetId)!=null}function Jt(e,t){let r=e.assets.find(n=>n.id===t);return r&&Yt(r)?r:null}function tu(e){return je(e?.prefab?.prefabId)!=null}function xc(e){return je(e?.prefab?.sourceAssetId)}function Xt(e){if(!e?.prefab)return null;let t=Tg(e.prefab),r=je(e.prefab.rootNodeId);if(r&&t.some(o=>o.id===r))return r;let n=t.find(o=>o.kind==="root"&&!o.parentId);return n?n.id:null}function Gr(e){return e?.prefab?Tg(e.prefab):[]}function za(e,t){let r=je(t);return r?Gr(e).find(n=>n.id===r)??null:null}function Ig(e,t){let r=je(t);return Gr(e).filter(n=>{let o=je(n.parentId);return r?o===r:!o})}function ET(e){if(!Yt(e))return bg(e,!1,null,[{code:"prefab.invalidDefinition",severity:"error",message:`Asset "${e.id}" is not a valid prefab definition.`,assetId:e.id}]);let t=Tg(e.prefab),r=Xt(e);if(e.prefab.compositionVersion!==ki||t.length===0||!r)return bg(e,!1,null,[{code:"schema.unsupportedVersion",severity:"error",message:`Prefab asset "${e.id}" must use composition version ${ki} with an explicit root node.`,assetId:e.id}]);let n=kG(e);return bg(n,JSON.stringify(n.prefab)!==JSON.stringify(e.prefab))}function bg(e,t,r=null,n=[],o={}){return{ok:n.every(i=>i.severity!=="error"),changed:t,prefabAsset:e,...o.selectedNodeId?{selectedNodeId:o.selectedNodeId}:{},...o.createdNodeId?{createdNodeId:o.createdNodeId}:{},...o.deletedNodeIds?{deletedNodeIds:[...o.deletedNodeIds]}:{},...r?{node:structuredClone(r)}:{},diagnostics:n.map(i=>({...i}))}}function kG(e){let t=structuredClone(e),r=Gr(e);t.prefab=structuredClone(t.prefab),t.prefab.compositionVersion=ki,t.prefab.nodes=r;let n=Xt({...e,prefab:{...e.prefab,nodes:r}});return n?t.prefab.rootNodeId=n:delete t.prefab.rootNodeId,t}function Tg(e){if(!Array.isArray(e.nodes))return[];let t=[];for(let r of e.nodes){let n=_G(r);n&&!t.some(o=>o.id===n.id)&&t.push(n)}return structuredClone(t)}function _G(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=je(t.id);return!r||!NG(t.kind)?null:{id:r,...je(t.guid)?{guid:je(t.guid)}:{},...je(t.name)?{name:je(t.name)}:{},...je(t.parentId)?{parentId:je(t.parentId)}:{},kind:t.kind,...t.transform?{transform:structuredClone(t.transform)}:{},...je(t.sourceAssetId)?{sourceAssetId:je(t.sourceAssetId)}:{},...je(t.sourceNodePath)?{sourceNodePath:je(t.sourceNodePath)}:{},...je(t.childPrefabId)?{childPrefabId:je(t.childPrefabId)}:{},...t.primitive?{primitive:structuredClone(t.primitive)}:{},...t.light?{light:structuredClone(t.light)}:{},...t.marker?{marker:structuredClone(t.marker)}:{},...t.defaults?{defaults:structuredClone(t.defaults)}:{},...t.overrides?{overrides:structuredClone(t.overrides)}:{},...t.metadata?{metadata:structuredClone(t.metadata)}:{}}}function NG(e){return e==="root"||e==="group"||e==="model"||e==="primitive"||e==="light"||e==="prefabInstance"||e==="marker"||e==="collision"}function IT(e){let t=xc(e.prefabAsset);if(!t)throw new Error(`Prefab asset "${e.prefabAsset.id}" does not define a source asset.`);let r=e.prefabAsset.prefab?.defaults;return{id:e.id,...e.guid?{guid:e.guid}:{},name:e.name??e.prefabAsset.displayName??e.prefabAsset.id,kind:"instance",...e.parentId?{parentId:e.parentId}:{},active:e.active??r?.active??!0,...e.shadow??r?.shadow?{shadow:structuredClone(e.shadow??r?.shadow)}:{},prefab:{prefabId:e.prefabAsset.id,...e.prefabAsset.guid?{prefabGuid:e.prefabAsset.guid}:{},sourceAssetId:t},...e.metadata?{metadata:{...e.metadata}}:{},...e.overrides!==void 0?{overrides:e.overrides}:{},components:[e.transform,{type:"ModelRenderer",assetId:t}]}}function TT(e){if(!e.startsWith(Eg))return null;let t=e.slice(Eg.length);return Yl(t)?t:null}function Pg(e){return TT(e)?.endsWith(".materialAssetId")===!0}function PT(e){return e.startsWith(Eg)&&e.endsWith(".materialAssetId")&&Pg(e)}function AT(e,t){if(t.slotId)return hT(e.prefab?.overrides?.materialSlotBindings?.[t.slotId])}function Mc(e,t,r){let n=TT(t);if(!n||!Yt(e))return e;let o=$G(n);if(!o)return e;let i=structuredClone(e);i.prefab=structuredClone(i.prefab??e.prefab),zG(i.prefab,o,r);let a=OT(i.prefab?.overrides);return a?i.prefab.overrides=a:delete i.prefab.overrides,JSON.stringify(i)===JSON.stringify(e)?e:i}function xT(e,t){let r=je(e?.materialAssetId),n=je(t?.materialAssetId),o=Do(e?.override,t?.override);return xg({...n??r?{materialAssetId:n??r}:{},..._i(o)?{override:o}:{}})}function ru(e,t){let r={},n=xT(e?.materialBinding,t?.materialBinding);n&&(r.materialBinding=n);let o=VG(e?.materialSlotBindings,t?.materialSlotBindings);return o&&(r.materialSlotBindings=o),_i(r)?r:void 0}function Ua(e,t){let r=_o(e,t);if(!(!r.gameObject||!r.prefab))return ru(r.definition?.prefab?.overrides,HG(r.gameObject.overrides))}function _o(e,t){let r=typeof t=="string"?FG(e,t):t,n=typeof t=="string"?t:t.id,o=[],i=tu(r)?r.prefab:null;if(!r||!i)return o.push({code:"not-prefab-instance",severity:"info",message:r?`GameObject "${r.id}" is not a prefab instance.`:`GameObject "${n}" was not found.`}),{gameObject:r,prefab:null,definition:null,sourceAsset:null,diagnostics:o};let a=e.assets.find(d=>d.id===i.prefabId&&Yt(d));a||o.push({code:"missing-prefab-definition",severity:"error",message:`Prefab definition "${i.prefabId}" was not found.`,prefabId:i.prefabId});let s=xc(a)??je(i.sourceAssetId);a&&i.sourceAssetId&&s&&i.sourceAssetId!==s&&o.push({code:"source-asset-mismatch",severity:"warning",message:`Prefab instance source "${i.sourceAssetId}" does not match definition source "${s}".`,prefabId:i.prefabId,expectedSourceAssetId:s,actualSourceAssetId:i.sourceAssetId});let c=s?e.assets.find(d=>d.id===s):void 0;if(s&&!c&&o.push({code:"missing-source-asset",severity:"error",message:`Prefab source asset "${s}" was not found.`,prefabId:i.prefabId,sourceAssetId:s}),s){let d=e.assets.filter(u=>Yt(u)&&xc(u)===s).map(u=>u.id);d.length>1&&o.push({code:"duplicate-source-prefab",severity:"info",message:`Source asset "${s}" is referenced by ${d.length} prefab definitions.`,prefabId:i.prefabId,sourceAssetId:s})}return{gameObject:r,prefab:i,definition:a??null,sourceAsset:c??null,diagnostics:o}}function he(e){return e.kind==="group"||e.kind==="instance"||e.kind==="transform"||e.kind==="primitive"?e.kind:tu(e)?"instance":e.primitive?"primitive":Fe(e)?"instance":ko(e)||e.transformType?"transform":"group"}function MT(e){let t=e.rendering&&typeof e.rendering=="object"&&!Array.isArray(e.rendering)?e.rendering:void 0,r=Ag(t?.renderingGroupId),n=RT(t?.alphaIndex),o={};return r!=null&&(o.renderingGroupId=r),n!=null&&(o.alphaIndex=n),Object.keys(o).length>0?o:void 0}function Ag(e){return e===0||e===1||e===2||e===3?e:null}function DT(e){return RT(e)}function jG(e){return e.type==="Transform"}function GG(e){return e.type==="ModelRenderer"}function LG(e){return e.type==="ImageRenderer"}function RT(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function je(e){return typeof e=="string"&&e.trim().length>0?e.trim():null}function FG(e,t){return e.scene.gameObjects.find(r=>r.id===t)??null}function $G(e){if(e==="overrides.materialBinding.materialAssetId")return["overrides","materialBinding","materialAssetId"];let t="overrides.materialBinding.override.";if(e.startsWith(t)){let o=e.slice(t.length);return bT(["overrides","materialBinding","override"],o)}let r=Sn(e,"materialAssetId");if(r)return["overrides","materialSlotBindings",r,"materialAssetId"];let n=Sn(e,"override");if(n){let o=BG(e);return o?bT(["overrides","materialSlotBindings",n,"override"],o):null}return null}function BG(e){let t=".override.",r=e.lastIndexOf(t);if(r<0)return null;let n=e.slice(r+t.length);return n||null}function bT(e,t){let r=t.split(".").filter(Boolean);return r.length===0||r.some(CT)?null:[...e,...r]}function zG(e,t,r){if(t.some(CT))return;let n=e;for(let i of t.slice(0,-1)){let a=n[i];(!a||typeof a!="object"||Array.isArray(a))&&(n[i]={}),n=n[i]}let o=t[t.length-1];o&&(r==null?delete n[o]:n[o]=structuredClone(r))}function OT(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r={},n=xg(t.materialBinding);n&&(r.materialBinding=n);let o=UG(t.materialSlotBindings);return o&&(r.materialSlotBindings=o),_i(r)?r:void 0}function xg(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r=je(t.materialAssetId),n=Do(t.override),o={...r?{materialAssetId:r}:{},..._i(n)?{override:n}:{}};return _i(o)?o:void 0}function UG(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t={};for(let[r,n]of Object.entries(e)){let o=je(r);if(!o)continue;let i=xg(n);i&&(t[o]=i)}return _i(t)?t:void 0}function VG(e,t){let r=new Set([...Object.keys(e??{}),...Object.keys(t??{})]),n={};for(let o of r){let i=xT(e?.[o],t?.[o]);i&&(n[o]=i)}return _i(n)?n:void 0}function HG(e){return OT(e)}function _i(e){return!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length>0}function CT(e){return e==="__proto__"||e==="prototype"||e==="constructor"}var KG=new Set(["id","guid","name","parentId","kind","transform","marker","metadata"]);function wT(e,t,r){if(e.kind!=="marker"){Object.prototype.hasOwnProperty.call(e,"marker")&&ne("schema.invalidValue",`${r}.marker`);return}for(let s of Object.keys(e))KG.has(s)||ne("schema.invalidValue",`${r}.${s}`);Dc(e.parentId)||ne("schema.invalidReference",`${r}.parentId`),JG(e.transform,`${r}.transform`),WG(e.marker,`${r}.marker`);let n=Dc(e.id),o=e.marker,i=qG(o,`${r}.marker`),a=i[0]??null;for(let s of i){s.target.id===n&&ne("schema.invalidReference",`${s.path}.id`),a&&(s.target.kind!==a.target.kind||s.target.id!==a.target.id)&&ne("schema.invalidReference",s.path);let c=t.get(s.target.id);c&&(s.target.kind==="marker"&&c.kind!=="marker"&&ne("schema.invalidReference",`${s.path}.kind`),s.target.kind==="scene-object"&&c.kind==="marker"&&ne("schema.invalidReference",`${s.path}.kind`))}}function WG(e,t){let r=jo(e);r||ne("schema.invalidType",t),Lr(r,["schemaVersion","type","kind","tags","note","color","target","semanticFrame","geometry","metadata"],t),r.schemaVersion!==1&&ne("schema.unsupportedVersion",`${t}.schemaVersion`),Dc(r.type)||ne("schema.invalidValue",`${t}.type`),r.kind!==void 0&&!Dc(r.kind)&&ne("schema.invalidValue",`${t}.kind`),r.tags!==void 0&&ZG(r.tags,`${t}.tags`),r.note!==void 0&&typeof r.note!="string"&&ne("schema.invalidType",`${t}.note`),r.color!==void 0&&QG(r.color,`${t}.color`),r.target!==void 0&&Mg(r.target,`${t}.target`),r.semanticFrame!==void 0&&XG(r.semanticFrame,`${t}.semanticFrame`),YG(r.geometry,`${t}.geometry`),r.metadata!==void 0&&e0(r.metadata,`${t}.metadata`)}function qG(e,t){let r=[];return e.target&&r.push({target:e.target,path:`${t}.target`}),e.geometry.kind==="point"&&e.geometry.target&&r.push({target:e.geometry.target,path:`${t}.geometry.target`}),e.geometry.kind==="object-bounds"&&r.push({target:e.geometry.target,path:`${t}.geometry.target`}),r}function YG(e,t){let r=jo(e);if(r||ne("schema.invalidType",t),r.kind==="box"){Lr(r,["kind"],t);return}if(r.kind==="point"){Lr(r,["kind","coordinateSpace","position","offset","target"],t),r.coordinateSpace!==void 0&&r.coordinateSpace!=="world"&&r.coordinateSpace!=="local"&&ne("schema.invalidValue",`${t}.coordinateSpace`),r.position!==void 0&&No(r.position,`${t}.position`),r.offset!==void 0&&No(r.offset,`${t}.offset`),r.target!==void 0&&Mg(r.target,`${t}.target`);return}if(r.kind==="object-bounds"){Lr(r,["kind","target"],t),Mg(r.target,`${t}.target`);return}if(r.kind==="polyhedron"){Lr(r,["kind","coordinateSpace","vertices","faces"],t),r.coordinateSpace!==void 0&&r.coordinateSpace!=="world"&&ne("schema.invalidValue",`${t}.coordinateSpace`),Array.isArray(r.vertices)||ne("schema.invalidType",`${t}.vertices`),r.vertices.forEach((n,o)=>No(n,`${t}.vertices[${o}]`)),r.faces!==void 0&&(Array.isArray(r.faces)||ne("schema.invalidType",`${t}.faces`),r.faces.forEach((n,o)=>{Array.isArray(n)||ne("schema.invalidType",`${t}.faces[${o}]`),n.forEach((i,a)=>{(!Number.isInteger(i)||i<0)&&ne("schema.invalidValue",`${t}.faces[${o}][${a}]`)})}));return}ne("schema.invalidValue",`${t}.kind`)}function Mg(e,t){let r=jo(e);r||ne("schema.invalidType",t),Lr(r,["kind","id","label"],t),r.kind!=="marker"&&r.kind!=="scene-object"&&ne("schema.invalidValue",`${t}.kind`),Dc(r.id)||ne("schema.invalidValue",`${t}.id`),r.label!==void 0&&typeof r.label!="string"&&ne("schema.invalidType",`${t}.label`)}function JG(e,t){let r=jo(e);if(r||ne("schema.invalidType",t),r.type!=="Transform"&&ne("schema.invalidValue",`${t}.type`),r.mode==="matrix"){Lr(r,["type","mode","matrix"],t),(!Array.isArray(r.matrix)||r.matrix.length!==16)&&ne("schema.invalidType",`${t}.matrix`),r.matrix.forEach((n,o)=>nu(n,`${t}.matrix[${o}]`));return}Lr(r,["type","mode","position","rotation","scale"],t),r.mode!==void 0&&r.mode!=="trs"&&ne("schema.invalidValue",`${t}.mode`),No(r.position,`${t}.position`),No(r.rotation,`${t}.rotation`),r.scale!==void 0&&No(r.scale,`${t}.scale`)}function XG(e,t){let r=jo(e);r||ne("schema.invalidType",t),Lr(r,["origin","forward","right","up","label","description"],t),No(r.origin,`${t}.origin`);for(let n of["forward","right","up"])r[n]!==void 0&&No(r[n],`${t}.${n}`);for(let n of["label","description"])r[n]!==void 0&&typeof r[n]!="string"&&ne("schema.invalidType",`${t}.${n}`)}function QG(e,t){let r=jo(e);r||ne("schema.invalidType",t),Lr(r,["r","g","b"],t);for(let n of["r","g","b"])nu(r[n],`${t}.${n}`),(r[n]<0||r[n]>1)&&ne("schema.invalidValue",`${t}.${n}`)}function No(e,t){let r=jo(e);r||ne("schema.invalidType",t),Lr(r,["x","y","z"],t);for(let n of["x","y","z"])nu(r[n],`${t}.${n}`)}function ZG(e,t){Array.isArray(e)||ne("schema.invalidType",t),e.forEach((r,n)=>{typeof r!="string"&&ne("schema.invalidType",`${t}[${n}]`)})}function e0(e,t){let r=jo(e);r||ne("schema.invalidType",t),Dg(r,t,new Set)}function Dg(e,t,r){if(e===null||typeof e=="string"||typeof e=="boolean")return;if(typeof e=="number"){nu(e,t);return}(!e||typeof e!="object")&&ne("schema.invalidType",t),r.has(e)&&ne("schema.invalidValue",t);let n=Object.getPrototypeOf(e);Array.isArray(e)?n!==Array.prototype&&ne("schema.invalidType",t):n!==Object.prototype&&n!==null&&ne("schema.invalidType",t),r.add(e);try{if(Array.isArray(e))e.forEach((o,i)=>Dg(o,`${t}[${i}]`,r));else for(let[o,i]of Object.entries(e))Dg(i,`${t}.${o}`,r)}finally{r.delete(e)}}function Lr(e,t,r){let n=new Set(t);for(let o of Object.keys(e))n.has(o)||ne("schema.invalidValue",`${r}.${o}`)}function nu(e,t){(typeof e!="number"||!Number.isFinite(e))&&ne("schema.invalidValue",t)}function jo(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Dc(e){return typeof e=="string"&&e.trim()?e.trim():null}function ne(e,t){throw new Error(`${e}: ${t}`)}function Va(e,t){return t===e.rootNodeId?e.instanceId:`${e.instanceId}:${t0(t)}`}function t0(e){return encodeURIComponent(e)}function Rg(e,t){return{...structuredClone(e),id:Va(t,e.id)}}function Rc(e,t){let r=structuredClone(e);return r.target&&(r.target=Rg(r.target,t)),r.geometry.kind==="point"&&r.geometry.target&&(r.geometry.target=Rg(r.geometry.target,t)),r.geometry.kind==="object-bounds"&&(r.geometry.target=Rg(r.geometry.target,t)),r}function le(e,t){if(vT(e))try{return e[t]}catch{return}}function Je(e,t){let r=le(e,t);return typeof r=="string"&&r.trim()?r:null}function Ge(e,t){let r=le(e,t);return typeof r=="number"&&Number.isFinite(r)?r:null}function bt(e,t){let r=le(e,t);return typeof r=="boolean"?r:null}function Mt(e,t,r=[]){let n=le(e,t);if(typeof n=="function")try{return n.apply(e,r)}catch{return}}function bn(e){if(!vT(e))return null;let t=Mt(e,"getClassName");if(typeof t=="string"&&t.trim())return t;let r=le(e,"constructor"),n=r&&typeof r=="function"?r.name:"";return n&&n!=="Object"?n:null}function Ni(e){let t=bn(e),r=Je(e,"name");return t&&r?`${t} \xB7 ${r}`:t??r}function vT(e){return!!e&&(typeof e=="object"||typeof e=="function")}function ou(e,t=new WeakSet,r=0){if(e==null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?r0(e):"[NonFiniteNumber]";if(typeof e=="bigint")return String(e);if(typeof e=="function")return`[Function ${e.name||"anonymous"}]`;if(typeof e=="symbol"||typeof e!="object")return String(e);if(t.has(e))return"[Circular]";if(r>6)return"[MaxDepth]";if(t.add(e),Array.isArray(e))return e.map(i=>ou(i,t,r+1));let n=e,o={};for(let i of Object.keys(n).sort())o[i]=ou(le(n,i),t,r+1);return o}function r0(e){return Math.round(e*1e6)/1e6}function Go(e){let t=e.properties.filter(r=>!!r).map((r,n)=>r.order==null?{...r,order:n}:r);return t.length===0&&e.omitWhenEmpty!==!1?null:{id:e.id,title:e.title,order:e.order,placement:"body",summary:e.summary,persistence:e.persistence??(e.runtimeOnly?"runtime":"readonly"),runtimeOnly:e.runtimeOnly,effect:e.effect??(e.runtimeOnly?"runtime":void 0),disabledReason:e.disabledReason,collapsedByDefault:e.collapsedByDefault,tags:e.tags,properties:t}}function X(e){if(!n0(e.value))return null;let t=ou(e.value);return{path:e.path,label:e.label,valueType:e.valueType??o0(t),control:"readonly",value:t,readOnly:!0,persistence:e.persistence??"readonly",commitMode:"blur",order:e.order,tags:a0(e.source,e.tags),tooltip:e.tooltip,effect:e.effect??i0(e.source,e.persistence),disabledReason:e.disabledReason}}function Og(e,t){let r=X(t);r&&e.push(r)}function iu(e){let t=Object.fromEntries(Object.entries(e.params).filter(r=>typeof r[1]=="string"&&r[1].length>0));return{path:e.path,label:e.label,valueType:"string",control:"custom",customControl:"inspector-action-button",controlOptions:{actionId:e.actionId,label:e.buttonLabel??e.label,icon:e.icon,params:t,...e.disabled?{disabled:!0}:{},...e.disabledReason?{disabledReason:e.disabledReason}:{}},value:e.actionId,readOnly:!1,persistence:"readonly",commitMode:"immediate",order:e.order,tooltip:e.disabledReason??e.tooltip,effect:e.effect,disabledReason:e.disabled?e.disabledReason:void 0}}function Cg(e){let t=ji(e.value);if(!t)return[];let r=e.order??0;return["x","y","z"].map((n,o)=>X({path:`${e.basePath}.${n}`,label:`${e.label}.${n}`,value:t[n],order:r+o,persistence:e.persistence,source:e.source,tags:e.tags,effect:e.effect,disabledReason:e.disabledReason,valueType:"number"})).filter(n=>!!n)}function ji(e){if(!e||typeof e!="object")return null;let t=Ge(e,"x"),r=Ge(e,"y"),n=Ge(e,"z");return t==null||r==null||n==null?null:{x:t,y:r,z:n}}function n0(e){return e!=null&&!(typeof e=="number"&&!Number.isFinite(e))}function o0(e){return typeof e=="string"?"string":typeof e=="number"?"number":typeof e=="boolean"?"boolean":e&&typeof e=="object"?"object":"unknown"}function i0(e,t){if(t==="runtime"||e==="Runtime")return"runtime";if(e==="Derived")return"derived"}function a0(e,t){let r=[...e?[e]:[],...t??[]];return r.length>0?[...new Set(r)]:void 0}function Oc(e){let t=e.projectedRoot??e.root??null,r=_T(t),n=r.find(o=>!!le(o,"material"))??r[0]??null;return{root:t,projectionNode:e.projectionNode??null,childNodes:NT(t),meshes:r,primaryMesh:n,material:s0(t)}}function au(e){let t=Mt(e,"getHierarchyBoundingVectors"),r=ji(le(t,"min")),n=ji(le(t,"max"));if(r&&n)return kT(r,n);let o=Mt(e,"getBoundingInfo"),i=le(o,"boundingBox"),a=ji(le(i,"minimumWorld")),s=ji(le(i,"maximumWorld"));return a&&s?kT(a,s):null}function _T(e){let t=Mt(e,"getChildMeshes",[!1]),r=Array.isArray(t)?[...t]:[];return jT(e)&&r.unshift(e),[...new Set(r)]}function NT(e){let t=Mt(e,"getChildren");return Array.isArray(t)?t:[]}function jT(e){return!!e&&(!!le(e,"material")||typeof le(e,"getTotalVertices")=="function"||typeof le(e,"getBoundingInfo")=="function")}function su(e,t){let r=0,n=0;for(let o of e){let i=Mt(o,t);typeof i!="number"||!Number.isFinite(i)||(r+=i,n+=1)}return n>0?r:"not available"}function Ha(e,t){let r=le(e,t);return Array.isArray(r)?r.length:0}function cu(e,t){let r=Mt(e,t);return Array.isArray(r)?r.length:"not available"}function wg(e){let t=Mt(e,"isEnabled");return typeof t=="boolean"?t:null}function Cc(e,t){let r=Ge(e,t);if(r!=null)return r;let n=Mt(e,"getParam",[t]);return typeof n=="number"&&Number.isFinite(n)?n:null}function kT(e,t){return{min:e,max:t,center:{x:(e.x+t.x)/2,y:(e.y+t.y)/2,z:(e.z+t.z)/2},size:{x:t.x-e.x,y:t.y-e.y,z:t.z-e.z}}}function s0(e){let t=le(e,"material");if(t)return t;let r=Mt(e,"getChildMeshes",[!1]);if(Array.isArray(r)){let n=r.find(o=>!!le(o,"material"));if(n)return le(n,"material")}return null}var lu={x:-.3,y:-1,z:-.2},GT=-180,LT=180,wc=-90,vc=90;function kc(e,t=lu){let r=e&&l0(e)?e:t,n=Math.hypot(r.x,r.y,r.z);if(!Number.isFinite(n)||n<=1e-6){let o=Math.hypot(t.x,t.y,t.z)||1;return{x:t.x/o,y:t.y/o,z:t.z/o}}return{x:r.x/n,y:r.y/n,z:r.z/n}}function kg(e,t){let r=Lo(mu(e)),n=Lo(VT(t,wc,vc)),o=Math.cos(n);return{x:vg(o*Math.cos(r)),y:vg(-Math.sin(n)),z:vg(o*Math.sin(r))}}function _g(e){if(!pu(e.light))return null;let t=Q(e),r=t&&"rotation"in t?t.rotation:void 0,n=zT({direction:e.light.direction,rotation:r}),o=kg(n.horizontalAngleDeg,n.elevationAngleDeg);return{horizontalAngleDeg:n.horizontalAngleDeg,elevationAngleDeg:n.elevationAngleDeg,rotation:{x:Lo(n.elevationAngleDeg),y:Lo(n.horizontalAngleDeg),z:Ka(r?.z)?r.z:0},direction:o,source:r?"transform.rotation":"light.direction"}}function FT(e,t){if(!pu(e.light))return e;let r=_g(e);if(!r)return e;let n=Ka(t.horizontalAngleDeg)?t.horizontalAngleDeg:r.horizontalAngleDeg,o=Ka(t.elevationAngleDeg)?t.elevationAngleDeg:r.elevationAngleDeg,i=kg(n,o),a={...r.rotation,x:Lo(o),y:Lo(n)};return{...e,light:{...e.light,direction:i},components:e.components.map(s=>s===Q(e)&&"rotation"in s?{...s,rotation:a}:s)}}function c0(e,t=lu){let{horizontalAngleDeg:r,elevationAngleDeg:n}=zT({direction:t,rotation:e});return kg(r,n)}function d0(e,t){let r=BT(e);return{x:Lo(r.elevationAngleDeg),y:Lo(r.horizontalAngleDeg),z:Ka(t?.z)?t.z:0}}function Wa(e){if(!pu(e.light))return e;let t=Q(e);if(!t||!("rotation"in t))return e;let r=c0(t.rotation,e.light.direction);return UT(r,kc(e.light.direction))?e:{...e,light:{...e.light,direction:r}}}function uu(e){if(!pu(e.light))return e;let t=Q(e);if(!t||!("rotation"in t))return e;let r=d0(e.light.direction,t.rotation);return UT(r,t.rotation)?e:{...e,components:e.components.map(n=>n===t?{...t,rotation:r}:n)}}function $T(e){let t=kc(e),r=Math.abs(t.y);return r<=1e-6?999:Math.min(999,Math.hypot(t.x,t.z)/r)}function mu(e){let t=((e+180)%360+360)%360-180;return t===-180?180:t}function l0(e){return typeof e.x=="number"&&Number.isFinite(e.x)&&typeof e.y=="number"&&Number.isFinite(e.y)&&typeof e.z=="number"&&Number.isFinite(e.z)}function pu(e){return e?.type==="directional"}function BT(e){let t=kc(e);return{horizontalAngleDeg:mu(du(Math.atan2(t.z,t.x))),elevationAngleDeg:du(Math.asin(VT(-t.y,-1,1)))}}function zT(e){let t=BT(e.direction);return{horizontalAngleDeg:Ka(e.rotation?.y)?du(e.rotation.y):t.horizontalAngleDeg,elevationAngleDeg:Ka(e.rotation?.x)?du(e.rotation.x):t.elevationAngleDeg}}function Ka(e){return typeof e=="number"&&Number.isFinite(e)}function UT(e,t,r=1e-6){return Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r}function du(e){return e*180/Math.PI}function Lo(e){return e*Math.PI/180}function vg(e){return Math.round(e*1e6)/1e6}function VT(e,t,r){return Math.min(r,Math.max(t,e))}var Gi="light.directionHorizontalAngleDeg",Li="light.directionElevationAngleDeg";function qa(e){return e===Gi||e===Li}function HT(e,t){if(t==null||typeof t=="string"&&!t.trim())return null;let r=u0(t);return r==null?t:e===Gi?Math.round(mu(r)):e===Li?Math.round(m0(r,wc,vc)):t}function u0(e){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&!e.trim())return null;let t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?t:null}function m0(e,t,r){return Math.min(r,Math.max(t,e))}var p0="metadata.shadowInspectorLanguage";function Fi(e){return t=>Ya({...e,value:t})}function Ya(e){let t=f0(e);if(t)return t;let r=lg(e.path,e.nodeKind);return r?e.value==null&&r.allowDelete===!1?{ok:!1,message:`Scene node field cannot be deleted: ${e.path}.`}:r.validate(e.value)?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`}:{ok:!1,message:`Unsupported scene node field: ${e.path}.`}}function $i(e,t){return(e==="shadow.cast"||e==="shadow.receive")&&t==="inherit"?null:/^overrides\.material\.(albedoTexture|normalTexture|metallicTexture)\.url$/.test(e)&&typeof t=="string"?KT(t):t}function fu(e,t,r={}){if((r.isDirectionalLightAnglePath??WT)(e))return HT(e,t);if(e==="marker.type"&&typeof t=="string"||e==="marker.target.objectId"&&typeof t=="string")return t.trim();if(e==="marker.tags")return S0(t);if(e==="marker.note"&&typeof t=="string"){let n=t.trim();return n||null}return fg(e)&&typeof t=="string"?KT(t):$i(e,t)}function Ng(e){return t=>g0(t,e)}function f0(e){for(let t of e.extraValidators??[]){let r=t({path:e.path,nodeKind:e.nodeKind,value:e.value,document:e.document});if(r)return r}return null}function g0(e,t){if(e.path==="camera.inspectorLanguage")return e.value==="zh"||e.value==="en"?{ok:!0,value:e.value}:{ok:!1,message:"Invalid value for scene node field: camera.inspectorLanguage."};if(e.path==="light.inspectorLanguage")return e.value==="zh"||e.value==="en"?{ok:!0,value:e.value}:{ok:!1,message:"Invalid value for scene node field: light.inspectorLanguage."};if(e.path==="shadowMapExperiment.behaviorProfile")return e.value==null||typeof e.value=="string"&&e.value.trim().length>0&&e.value===e.value.trim()?{ok:!0,value:e.value}:{ok:!1,message:"Invalid value for scene node field: shadowMapExperiment.behaviorProfile."};if((t.isDirectionalLightAnglePath??WT)(e.path))return typeof e.value=="number"&&Number.isFinite(e.value)?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`};if(e.path==="metadata.artistMaterialInspectorLanguage"||e.path===p0)return e.value==="zh"||e.value==="en"?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`};if(e.path==="instance.assetId"&&e.document&&typeof e.value=="string"&&!(e.document.assets??[]).some(r=>r.id===e.value))return{ok:!1,message:`Asset not found: ${e.value}.`};if(vo(e.path)&&e.document&&typeof e.value=="string"&&e.value&&!t.hasMaterialAsset(e.document,e.value))return{ok:!1,message:`Material asset not found: ${e.value}.`};if(vo(e.path))return e.value==null||typeof e.value=="string"&&e.value.trim().length>0?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`};if(fg(e.path))return e.value==null||typeof e.value=="string"&&e.value.trim().length>0?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`};if(e.path==="marker.target.objectId"){if(typeof e.value!="string")return{ok:!1,message:"Marker target must be a scene object id."};let r=e.value.trim();if(!r)return{ok:!0,value:""};let n=e.document?.scene?.gameObjects?.find(o=>o.id===r)??null;return n&&!t.isMarkerGameObject(n)?{ok:!0,value:r}:{ok:!1,message:`Marker target object not found: ${r}.`}}return null}function KT(e){let t=e.trim();return t||null}function S0(e){let r=(Array.isArray(e)?e:typeof e=="string"?e.split(","):[]).map(n=>typeof n=="string"?n.trim():"").filter((n,o,i)=>n.length>0&&i.indexOf(n)===o);return r.length>0?r:null}function WT(e){return e===Gi||e===Li}function _c(e){return{...e.property,readOnly:!1,persistence:"document",document:e.document??void 0,validate:Fi({path:e.property.path,nodeKind:e.nodeKind,document:e.document,extraValidators:e.extraValidators})}}function pr(e,t){return t==="scale"?e.scale??{x:1,y:1,z:1}:e[t]}function Fr(e){return e*180/Math.PI}function En(e){return e*Math.PI/180}function fr(e){return Math.round(e*1e6)/1e6}var qT={zh:{title:"\u6444\u50CF\u673A",summaryOrthographic:"ArcRotate \u6B63\u4EA4",summaryPerspective:"ArcRotate \u900F\u89C6",language:"\u8BED\u8A00",projection:"\u6295\u5F71\u6A21\u5F0F",projectionOrthographic:"\u6B63\u4EA4",projectionPerspective:"\u900F\u89C6",alpha:"Alpha",beta:"Beta",radius:"\u534A\u5F84",orthoSize:"\u6B63\u4EA4\u5C3A\u5BF8",fov:"\u89C6\u91CE\u89D2\u5EA6",targetOffset:"\u76EE\u6807\u504F\u79FB",nearClip:"\u8FD1\u88C1\u526A",farClip:"\u8FDC\u88C1\u526A",minBeta:"\u6700\u5C0F Beta",maxBeta:"\u6700\u5927 Beta",minRadius:"\u6700\u5C0F\u534A\u5F84",maxRadius:"\u6700\u5927\u534A\u5F84",inertia:"\u60EF\u6027",screenOffset:"\u5C4F\u5E55\u504F\u79FB",rawCamera:"\u539F\u59CB\u6444\u50CF\u673A"},en:{title:"Camera",summaryOrthographic:"ArcRotate Orthographic",summaryPerspective:"ArcRotate Perspective",language:"Language",projection:"Projection",projectionOrthographic:"Orthographic",projectionPerspective:"Perspective",alpha:"Alpha",beta:"Beta",radius:"Radius",orthoSize:"Ortho Size",fov:"FOV",targetOffset:"Target Offset",nearClip:"Near Clip",farClip:"Far Clip",minBeta:"Min Beta",maxBeta:"Max Beta",minRadius:"Min Radius",maxRadius:"Max Radius",inertia:"Inertia",screenOffset:"Screen Offset",rawCamera:"Raw Camera"}},YT=[{label:"\u4E2D\u6587",value:"zh"},{label:"English",value:"en"}];function jg(e){return qT[e]??qT.zh}function h0(e){return[{label:e.projectionOrthographic,value:"orthographic"},{label:e.projectionPerspective,value:"perspective"}]}function JT(e){let{camera:t,createDocumentInspectorProperty:r,nodeKind:n,rig:o}=e,i=o.inspectorLanguage??"zh",a=jg(i),s=[],c=0;s.push(r(null,n,{path:"camera.inspectorLanguage",label:a.language,valueType:"enum",control:"enum",value:i,commitMode:"immediate",order:c,options:YT,controlOptions:{variant:"segmented"}})),c+=1,s.push(r(null,n,{path:"camera.projection",label:a.projection,valueType:"enum",control:"enum",value:o.projection??"orthographic",commitMode:"immediate",order:c,options:h0(a),controlOptions:{variant:"segmented"}})),c+=1,s.push(Ft(n,r,{path:"camera.alpha",label:a.alpha,value:o.alpha,order:c,step:.01})),c+=1,s.push(Ft(n,r,{path:"camera.beta",label:a.beta,value:o.beta,order:c,step:.01})),c+=1,s.push(Ft(n,r,{path:"camera.radius",label:a.radius,value:o.radius,order:c,min:.001,step:.1})),c+=1,(o.projection??"orthographic")==="perspective"?s.push(Ft(n,r,{path:"camera.fov",label:a.fov,value:fr(Fr(o.fov??.85)),order:c,min:1,max:179,step:1,coerce:d=>typeof d=="number"&&Number.isFinite(d)?En(d):d})):s.push(Ft(n,r,{path:"camera.orthoSize",label:a.orthoSize,value:o.orthoSize??6,order:c,min:.001,step:.1})),c+=1;for(let d of["x","y","z"])s.push(Ft(n,r,{path:`camera.targetOffset.${d}`,label:`${a.targetOffset} ${d.toUpperCase()}`,value:o.targetOffset?.[d]??0,order:c,step:.05})),c+=1;s.push(Ft(n,r,{path:"camera.minZ",label:a.nearClip,value:o.minZ??1,order:c,min:.001,step:.1})),c+=1,s.push(Ft(n,r,{path:"camera.maxZ",label:a.farClip,value:o.maxZ??1e4,order:c,min:.001,step:1})),c+=1,s.push(Ft(n,r,{path:"camera.lowerBetaLimit",label:a.minBeta,value:o.lowerBetaLimit??o.beta,order:c,step:.01})),c+=1,s.push(Ft(n,r,{path:"camera.upperBetaLimit",label:a.maxBeta,value:o.upperBetaLimit??o.beta,order:c,step:.01})),c+=1,s.push(Ft(n,r,{path:"camera.lowerRadiusLimit",label:a.minRadius,value:o.lowerRadiusLimit??o.radius,order:c,min:.001,step:.1})),c+=1,s.push(Ft(n,r,{path:"camera.upperRadiusLimit",label:a.maxRadius,value:o.upperRadiusLimit??o.radius,order:c,min:.001,step:.1})),c+=1,s.push(Ft(n,r,{path:"camera.inertia",label:a.inertia,value:o.inertia??.9,order:c,min:0,max:1,step:.05})),c+=1;for(let d of["x","y"])s.push(Ft(n,r,{path:`camera.targetScreenOffset.${d}`,label:`${a.screenOffset} ${d.toUpperCase()}`,value:o.targetScreenOffset?.[d]??0,order:c,step:.01})),c+=1;return Og(s,{path:"camera.raw",label:a.rawCamera,value:t??"defaults",order:s.length,source:"Document",tags:["Raw"]}),s}function Gg(e){let t=jg(e.rig.inspectorLanguage??"zh");return{id:"camera",title:t.title,order:42,placement:"body",summary:e.rig.projection==="perspective"?t.summaryPerspective:t.summaryOrthographic,persistence:"document",collapsedByDefault:!1,properties:JT(e)}}function Ft(e,t,r){return t(null,e,{path:r.path,label:r.label,valueType:"number",control:"number",value:r.value,commitMode:"live",order:r.order,min:r.min,max:r.max,step:r.step??.05,coerce:r.coerce})}var gu="scene.main",Su="scene";function In(e){let t=e.meta?.authoringSource;return{sourceId:t?.sourceId||gu,sourceType:t?.sourceType||Su,revision:typeof t?.revision=="number"?t.revision:1}}function XT(e){let t=In(e);return{...e,meta:{...e.meta,authoringSource:{sourceId:gu,sourceType:Su,revision:t.revision??1}}}}function QT(e){let t=In(e);return{...e,meta:{...e.meta,authoringSource:{sourceId:gu,sourceType:Su,revision:(t.revision??0)+1}}}}function ZT(e,t){let r=In(e),n=y0(t),o=r.revision??null;if(!n)return{detected:!0,sourceId:r.sourceId,sourceType:r.sourceType,sourceRevision:o,generatedRevision:null,reason:"missing-generated-from"};let i=typeof n.revision=="number"?n.revision:null;return n.sourceId!==r.sourceId||n.sourceType!==r.sourceType?{detected:!0,sourceId:r.sourceId,sourceType:r.sourceType,sourceRevision:o,generatedRevision:i,reason:"source-mismatch"}:o!==i?{detected:!0,sourceId:r.sourceId,sourceType:r.sourceType,sourceRevision:o,generatedRevision:i,reason:"revision-mismatch"}:{detected:!1,sourceId:r.sourceId,sourceType:r.sourceType,sourceRevision:o,generatedRevision:i}}function y0(e){if(!e||typeof e!="object")return null;let t=e.meta;if(!t||typeof t!="object")return null;let r=t.generatedFrom;if(!r||typeof r!="object")return null;let n=r.sourceId,o=r.sourceType;return typeof n!="string"||typeof o!="string"?null:{sourceId:n,sourceType:o,revision:typeof r.revision=="number"?r.revision:void 0}}function rt(e,t){return{statusCode:e,body:t}}function hu(e){return{statusCode:e,body:null}}function eP(e){return typeof e=="string"?e:`${JSON.stringify(e??{},null,2)}
3
+ `}async function tP(e,t){let r=String(e.method??"GET").toUpperCase();if(r==="OPTIONS")return hu(204);try{if(r==="GET"){let c=T0(await t.loadConfig?.()),d=c.renderingConfig;Ht(d);let u=dn(d);return rt(200,{ok:!0,...c.response,renderingConfig:I0(d),normalized:u,summary:xa(u)})}if(r!=="POST")return rt(405,{ok:!1,error:"method_not_allowed"});let n=e.body??await t.readBody?.(e)??{},o=Nc(n.renderingConfig);if(!o)return rt(400,{ok:!1,error:"missing_rendering_config"});Ht(o);let i=dn(o),a=xa(i),s=await t.saveConfig?.({body:n,renderingConfig:o,normalized:i,summary:a});return rt(200,{ok:!0,...s??{},renderingConfig:o,normalized:i,summary:a})}catch(n){let o=b0(n),i=E0(n);return rt(o?.startsWith("schema.")?400:500,{ok:!1,error:o??(n instanceof Error?n.message:String(n)),...i?{path:i}:{},details:Nc(n?.details)})}}function b0(e){let t=e?.code;return typeof t=="string"&&t?t:null}function E0(e){let t=e?.path;return typeof t=="string"&&t?t:null}function Nc(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function I0(e){return Nc(e)??{}}function T0(e){let t=Nc(e);return t&&Object.prototype.hasOwnProperty.call(t,"renderingConfig")?{renderingConfig:t.renderingConfig,response:Nc(t.response)??{}}:{renderingConfig:e??{},response:{}}}var P0="main_camera",A0="environment_light",x0="sun_light";function Lg(e){return he(e)==="group"}function $r(e){return!!Q(e)}function Br(e){return he(e)==="transform"&&(e.transformType==="camera"||!!e.camera)}function Ja(e){return he(e)==="transform"&&(e.transformType==="light"||!!e.light)}function zr(e){return e.id===P0||e.id===A0||e.id===x0||Br(e)||Ja(e)}function Fg(e,t){if(!t)return!1;let r=e.scene.gameObjects.find(n=>n.id===t);return!!r&&zr(r)}var Fo="root",M0="go_",$g="GameObject";function nt(e){return e===Fo}function we(e){return nt(e.id)}function zg(e){let t=new Set,r=!1,n=e.scene.gameObjects.map(o=>{let i=R0(o,t);return r=r||i!==o,i});return r?{...e,scene:{...e.scene,gameObjects:n}}:e}function gt(){let e=globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;return`${M0}${e}`}function gr(e,t){let r=new Set(e),n=yu(t)||"game_object";if(!r.has(n))return n;let o=2;for(;r.has(`${n}_${o}`);)o+=1;return`${n}_${o}`}function rP(e,t=$g){return Bg(e)??Bg(t)??$g}function Sr(e,t,r={}){let n=rP(t,r.fallbackName??$g),o=new Set(e.map(s=>Bg(s)).filter(s=>!!s));if(!r.alwaysAppendSuffix&&!o.has(n))return n;let i=1,a=`${n}_${i}`;for(;o.has(a);)i+=1,a=`${n}_${i}`;return a}function Bg(e){let t=String(e??"").trim();return t&&t.replace(/\s+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"")||null}function yu(e){return e.trim().toLowerCase().replace(/[^a-z0-9_]+/g,"_").replace(/^_+|_+$/g,"")||"asset"}function D0(e){return typeof e.guid=="string"&&e.guid.trim()?e.guid.trim():null}function R0(e,t){let r=D0(e);if(r&&!t.has(r))return t.add(r),r===e.guid?e:{...e,guid:r};let n=gt();for(;t.has(n);)n=gt();return t.add(n),{...e,guid:n}}var $o=Nr();function Qt(e,t){if(nt(t))return Nr();let r=ie(e,t);if(!r)return null;let n=[],o=Ug(e),i=new Set,a=r;for(;a&&!i.has(a.id);)i.add(a.id),n.unshift(a),a=a.parentId?o.get(a.parentId):void 0;return YI(n.map(Tn))}function ie(e,t){return e.scene.gameObjects.find(r=>r.id===t)??null}function Ug(e){return new Map(e.scene.gameObjects.map(t=>[t.id,t]))}function Xn(e,t,r,n){let o=t?Qt(e,t):Nr();return o?_a(o,r,n):null}function jc(e,t,r,n={}){let o=zl(n);return Xn(e,t,r,{allowMatrixFallback:o.allowMatrixFallback})}function Tn(e){return we(e)?Nr():Qa(e)}function Gc(e,t={}){let r=e.scene.gameObjects.find(we);if(!r)return e;let n=Qa(r),o=!!Q(r)&&!C0(n,$o),i=!1,a=e.scene.gameObjects.map(s=>{if(we(s)){let l=nP(s,t);return i=i||l!==s,l}if(!o||s.parentId!==Fo||!Q(s))return s;let d=JI(n,Qa(s));if(!d)return s;let u=Vg(s,d);return i=!0,u});return i?{...e,scene:{...e.scene,gameObjects:a}}:e}function nP(e,t={}){let r=!1,n=e.parentId!==void 0||t.normalizeRootActive===!0&&e.active!==!0,o=e.components.map(a=>{if(a.type!=="Transform")return a;r=!0;let s=a;return Eu(s)&&Xa(s.position,$o.position)&&Xa(s.rotation,$o.rotation)&&Xa(oP(s,"scale"),$o.scale)?a:(n=!0,bu())});if(r||(n=!0,o.unshift(bu())),!n)return e;let i={...e,...t.normalizeRootActive===!0?{active:!0}:{},components:o};return delete i.parentId,i}function bu(){return Ur($o)}function Qa(e){let t=Q(e);return t?St(t)?Bl(t.matrix)??Nr():{position:{...t.position},rotation:{...t.rotation},scale:{...oP(t,"scale")}}:Nr()}function Vg(e,t){return{...e,components:e.components.map(r=>r.type!=="Transform"?r:Qn(t)??r)}}function Qn(e){let t=Bi(e);return t?ur(t)?{type:"Transform",mode:"matrix",matrix:t.matrix}:{type:"Transform",...t.mode==="trs"?{mode:"trs"}:{},position:{...t.position},rotation:{...t.rotation},scale:{...t.scale}}:null}function Bi(e){return ur(e)?Bl(e.matrix):KI(e)}function Ur(e){let t=Qn(e);if(!t)throw new Error("Invalid matrix Transform component.");return t}function St(e){return e.mode==="matrix"}function Eu(e){return e.mode!=="matrix"}function oP(e,t){return O0(e)?t==="scale"?e.scale??{x:1,y:1,z:1}:e[t]:t==="scale"?{x:1,y:1,z:1}:{x:0,y:0,z:0}}function O0(e){return!!e.position&&!!e.rotation}function C0(e,t){return!jr(e)||!jr(t)?bc(lr(e),lr(t)):Xa(e.position,t.position)&&Xa(e.rotation,t.rotation)&&Xa(e.scale,t.scale)}function Xa(e,t){return Math.abs(e.x-t.x)<1e-6&&Math.abs(e.y-t.y)<1e-6&&Math.abs(e.z-t.z)<1e-6}function ot(e){return e.scene.gameObjects.find(t=>t.id===Fo&&!!Q(t))?.id??e.scene.gameObjects.find(t=>!t.parentId&&!!Q(t))?.id}function Iu(e,t){return nt(e)&&/^transform(?:\.(position|rotation|scale)(?:\.(x|y|z))?)?$/.test(t)}function Hg(e,t){return!t||t===Fo?!1:!!ie(e,t)}function Zn(e){let t=ot(e),r=new Map(e.scene.gameObjects.map(n=>[n.id,n]));return e.scene.gameObjects.filter(n=>n.id!==Fo).map(n=>{let o=zr(n),i=$r(n),a=n.active!==!1;return{id:n.id,label:n.name??n.id,parentId:n.parentId===t?null:n.parentId??null,depth:Math.max(0,w0(r,n)-(t?1:0)),role:i&&Lg(n)?"group":"object",...tu(n)?{icon:"prefab"}:{},selectable:!0,enabled:a&&v0(r,n.parentId,t),directEnabled:a,canToggleEnabled:!o,enableToggleDisabledReason:o?"Protected system objects cannot be hidden from Hierarchy.":void 0,protected:o,canHaveChildren:!o&&i,renamable:!o,deletable:!o,draggable:!o}})}function w0(e,t){let r=new Set,n=0,o=t.parentId??null;for(;o;){if(r.has(o))return n;r.add(o);let i=e.get(o);if(!i)return n;n+=1,o=i.parentId??null}return n}function v0(e,t,r){let n=new Set,o=t??null;for(;o;){if(n.has(o))return!0;n.add(o);let i=e.get(o);if(!i)return!0;if(i.id!==r&&i.active===!1)return!1;o=i.parentId??null}return!0}function Kg(e){let t=Gc(e,{normalizeRootActive:!0}),r=ot(t);if(!r)return t;let n=t.scene.gameObjects.find(s=>s.id===r);if(!n)return t;let o=we(n)?null:Qt(t,r);if(!we(n)&&!o)return t;let i=!1,a=t.scene.gameObjects.map(s=>{if(s.id===r||s.parentId)return s;let c=Tn(s),d=o?_a(o,c,{allowMatrixFallback:!0}):c;return i=!0,{...s,parentId:r,components:d?s.components.map(u=>u.type!=="Transform"?u:Ur(d)):s.components}});return i?{...t,scene:{...t.scene,gameObjects:a}}:t}function eo(e,t){return[...Vr(e,t)]}function Vr(e,t){let r=new Set,n=new Map;for(let a of e.scene.gameObjects){r.add(a.id);let s=a.parentId;if(!s)continue;let c=n.get(s);c?c.push(a.id):n.set(s,[a.id])}let o=new Set,i=[];for(let a of t)!r.has(a)||o.has(a)||(o.add(a),i.push(a));for(let a=0;a<i.length;a+=1)for(let s of n.get(i[a])??[])o.has(s)||(o.add(s),i.push(s));return o}function Yg(e){let t=[aP(e)],r=cP(e);r&&t.push(r);let n=uP(e);n&&t.push(n);let o=fP(e);o&&t.push(o);let i=hP(e);i&&t.push(i);let a=j0(e);a&&t.push(a);let s=bP(e);s&&t.push(s);let c=EP(e);c&&t.push(c);let d=TP(e);return d&&t.push(d),t}function aP(e){return{id:"common",title:"Common",order:10,placement:"body",summary:Pu(e),persistence:"document",collapsedByDefault:!1,properties:sP(e)}}function sP(e){let{document:t,gameObject:r}=e,n=Pu(e),o=[Zt("id","ID",r.id,0),Pn(e,{document:t,path:"name",label:"Name",valueType:"string",control:"string",value:r.name??r.id,commitMode:"blur",order:1}),Pn(e,{document:t,path:"enabled",label:"Enabled",valueType:"boolean",control:"boolean",value:r.active!==!1,commitMode:"immediate",order:2}),Zt("kind.resolved","Resolved Kind",n,3),Zt("kind.explicit","Explicit Kind",r.kind??"inferred",4),Zt("common.activeField","Active Field",r.active??"default:true",5)];return n==="transform"?o.push(Pn(e,{document:t,path:"transformType",label:"Transform Type",valueType:"enum",control:"enum",value:r.transformType??"plain",commitMode:"immediate",order:6,options:e.transformTypeOptions??H0})):o.push(Zt("common.transformType","Transform Type",r.transformType??"none",6)),o}function cP(e){return Go({id:"hierarchySource",title:"Hierarchy / Source",order:15,summary:dP(e),collapsedByDefault:!0,tags:["Document","Derived"],properties:lP(e)})}function dP(e){let t=e.gameObject.parentId?ie(e.document,e.gameObject.parentId):null;return t?`Parent: ${t.name??t.id}`:"Scene root"}function lP(e){let{document:t,gameObject:r}=e,n=[],o=r.parentId?ie(t,r.parentId):null,i=t.scene.gameObjects.filter(d=>d.parentId===r.id),a=Math.max(eo(t,[r.id]).length-1,0),s=In(t),c=t.scene.gameObjects.filter(d=>d.parentId===r.parentId).findIndex(d=>d.id===r.id);return $e(n,{path:"hierarchy.parentId",label:"Parent ID",value:r.parentId??"none",order:0,source:"Document"}),$e(n,{path:"hierarchy.parentName",label:"Parent Name",value:o?o.name??o.id:r.parentId?"missing":"none",order:1,source:"Document"}),$e(n,{path:"hierarchy.childCount",label:"Children",value:i.length,order:2,source:"Derived"}),$e(n,{path:"hierarchy.descendantCount",label:"Descendants",value:a,order:3,source:"Derived"}),$e(n,{path:"hierarchy.siblingIndex",label:"Sibling Index",value:c>=0?c:"unknown",order:4,source:"Derived"}),$e(n,{path:"document.gameObjectIndex",label:"Document Index",value:t.scene.gameObjects.findIndex(d=>d.id===r.id),order:5,source:"Derived"}),$e(n,{path:"document.schemaVersion",label:"Schema Version",value:t.schemaVersion,order:6,source:"Document"}),$e(n,{path:"source.sourceId",label:"Source ID",value:s.sourceId,order:7,source:"Document"}),$e(n,{path:"source.sourceType",label:"Source Type",value:s.sourceType,order:8,source:"Document"}),$e(n,{path:"source.revision",label:"Revision",value:s.revision??"none",order:9,source:"Document"}),n}function uP(e){return Q(e.gameObject)?{id:"transform",title:"Transform",order:20,placement:"body",summary:pP(e),persistence:"document",collapsedByDefault:!1,properties:mP(e)}:null}function mP(e){if(!Q(e.gameObject))return[];let r=Pu(e),n=we(e.gameObject),o=n?e.rootTransform??Nr():Qa(e.gameObject);if(ur(o))return _0(o,0);let i=!!e.gameObject.parentId,a=[],s=0;for(let c of["position","rotation","scale"]){let d=V0(o,c);for(let u of["x","y","z"]){let l=`transform.${c}.${u}`,m=c==="rotation"?fr(Fr(d[u])):d[u];n?a.push(Zt(l,`${qg(c)}.${u}`,m,s)):a.push(Pn(e,{document:null,path:l,label:`${i?`Local ${qg(c)}`:qg(c)}.${u}`,valueType:"number",control:"number",value:m,commitMode:"live",order:s,displayPrecision:c==="rotation"?2:3,precision:4,step:c==="rotation"?1:c==="scale"?.01:.1,stepPrecision:c==="rotation"?.1:c==="scale"?.001:.01},r)),s+=1}}if(i){let c=Qt(e.document,e.gameObject.id);if(c&&!ur(c))for(let d of["x","y","z"])a.push(Zt(`transform.worldPosition.${d}`,`World Position.${d}`,c.position[d],s)),s+=1}return a}function pP(e){let t=e.gameObject.parentId?ie(e.document,e.gameObject.parentId):null;if(we(e.gameObject))return"Identity Root";let r=Q(e.gameObject);return r&&St(r)?"Matrix Transform":`Relative to: ${t?t.name??t.id:"Scene"}`}function _0(e,t){if(!ur(e))return[];let r=[Zt("transform.mode","Mode","Matrix Transform",t)],n=t+1;for(let i=0;i<4;i+=1)r.push(Zt(`transform.matrix.row${i}`,`Matrix Row ${i+1}`,e.matrix.slice(i*4,i*4+4).map(Tu).join(", "),n)),n+=1;let o=ag(e.matrix);return r.push(Zt("transform.matrix.trsApproximation","TRS Approximation",o?[`P ${Wg(o.position)}`,`R ${Wg({x:Fr(o.rotation.x),y:Fr(o.rotation.y),z:Fr(o.rotation.z)})}`,`S ${Wg(o.scale)}`].join(" | "):"Not representable as TRS",n)),r}function fP(e){let t=Fe(e.gameObject),r=ko(e.gameObject),n=t?.assetId??r?.assetId;return n?{id:"renderer",title:r?"Image Renderer / Asset":"Renderer / Asset",order:30,placement:"body",summary:SP(e.document,n),persistence:"document",collapsedByDefault:!0,properties:r?N0(e,r):gP(e)}:null}function N0(e,t){let r=Lc(e.document,t.assetId);return[Zt("imageRenderer.assetId","Texture Asset",r?.displayName??t.assetId,0),Zt("imageRenderer.size","Image Size",`${t.size.width} \xD7 ${t.size.height}`,1),Zt("imageRenderer.assetType","Asset Type",r?.type??"texture",2)]}function gP(e){let t=Fe(e.gameObject);if(!t)return[];let{document:r}=e,n=Lc(r,t.assetId),o=[Pn(e,{document:r,path:"instance.assetId",label:"Asset",valueType:"enum",control:"enum",value:t.assetId,commitMode:"immediate",order:0,options:r.assets.map(i=>({label:i.displayName??i.id,value:i.id}))})];return $e(o,{path:"renderer.assetId",label:"Renderer Asset ID",value:t.assetId,order:1,source:"Document"}),$e(o,{path:"asset.id",label:"Asset ID",value:n?.id??"missing",order:2,source:"Asset"}),$e(o,{path:"asset.type",label:"Asset Type",value:n?.type??"missing",order:3,source:"Asset"}),$e(o,{path:"asset.guid",label:"GUID",value:n?.guid??"missing",order:4,source:"Asset"}),$e(o,{path:"asset.displayName",label:"Display Name",value:n?.displayName??"none",order:5,source:"Asset"}),$e(o,{path:"asset.category",label:"Category",value:n?.category??"none",order:6,source:"Asset"}),$e(o,{path:"asset.materialMode",label:"Material Mode",value:n?.materialMode??"none",order:7,source:"Asset"}),$e(o,{path:"asset.defaults",label:"Defaults",value:n?.defaults??"none",order:8,source:"Asset",tags:["Raw"]}),o}function SP(e,t){let r=Lc(e,t);return r?r.displayName??r.id:`Missing asset: ${t}`}function hP(e){let t=e.gameObject.primitive;return t?{id:"primitive",title:"Primitive",order:32,placement:"body",summary:t.shape,persistence:"document",collapsedByDefault:!1,properties:yP(e)}:null}function yP(e){let t=e.gameObject.primitive;return t?[Pn(e,{document:e.document,path:"primitive.shape",label:"Shape",valueType:"enum",control:"enum",value:t.shape,commitMode:"immediate",order:0,options:e.primitiveShapeOptions??K0})]:[]}function j0(e){if(!Za(e))return null;let r=ct(e.gameObject.shadow).shadow??{},n=Bo(r.cast),o=Bo(r.receive),i=Pn(e,{document:e.document,path:"shadow.cast",label:"\u6295\u5C04\u9634\u5F71",valueType:"enum",control:"boolean",value:n.value,mixed:n.mixed,coerce:zo,controlOptions:{allowInheritReset:!0,inheritValue:"inherit"},commitMode:"immediate",order:0,tooltip:"\u7EE7\u627F\u65F6\u4F7F\u7528\u4E0A\u5C42\u6216\u9879\u76EE\u9ED8\u8BA4\uFF1B\u5F00\u542F\u540E\u8BE5\u7269\u4F53\u6295\u5C04\u9634\u5F71\uFF1B\u5173\u95ED\u540E\u8BE5\u7269\u4F53\u4E0D\u8FDB\u5165\u9634\u5F71\u6295\u5C04\u5019\u9009\u96C6\u3002"}),a=Pn(e,{document:e.document,path:"shadow.receive",label:"\u63A5\u6536\u9634\u5F71",valueType:"enum",control:"boolean",value:o.value,mixed:o.mixed,coerce:zo,controlOptions:{allowInheritReset:!0,inheritValue:"inherit"},commitMode:"immediate",order:1,tooltip:"\u7EE7\u627F\u65F6\u4F7F\u7528\u4E0A\u5C42\u6216\u9879\u76EE\u9ED8\u8BA4\uFF1B\u5F00\u542F\u540E\u8BE5\u7269\u4F53\u63A5\u6536\u9634\u5F71\uFF1B\u5173\u95ED\u540E\u6750\u8D28\u4E0D\u91C7\u6837\u9634\u5F71\u7ED3\u679C\u3002"});return{id:"shadow",title:"\u9634\u5F71",order:34,placement:"body",persistence:"document",collapsedByDefault:!1,properties:[i,a]}}function G0(e){return e&&typeof e=="object"&&"environment"in e&&"postProcess"in e&&"shadows"in e&&"renderingGroups"in e&&"shadowMeshes"in e?e:dn(e)}function Bo(e){return e==="enabled"?{value:!0,mixed:!1}:e==="none"?{value:!1,mixed:!1}:{value:!1,mixed:!0}}function zo(e){return e===!0?"enabled":e===!1?"none":e}function bP(e){if(!L0(e))return null;let t=G0(e.renderingProfile),r=F0(e.gameObject.rendering?.renderingGroupId),n=t.renderingGroups.slots.find(i=>i.renderingGroupId===r)??t.renderingGroups.slots[0],o=$0(e.gameObject)??null;return{id:"rendering",title:"Rendering",order:36,placement:"body",summary:B0(n,o),persistence:"document",collapsedByDefault:!1,properties:[Pn(e,{document:e.document,path:"rendering.renderingGroupId",label:"Rendering Group",valueType:"enum",control:"enum",value:r,commitMode:"immediate",order:0,options:t.renderingGroups.slots.map(i=>({label:`${i.renderingGroupId}: ${i.name}`,value:i.renderingGroupId}))}),Pn(e,{document:e.document,path:"rendering.alphaIndex",label:"Alpha Order",valueType:"enum",control:"enum",value:o,commitMode:"immediate",order:1,options:z0(n,o)})]}}function EP(e){return Go({id:"components",title:"Scripts / Components",order:65,summary:Jg(e.gameObject),collapsedByDefault:!0,tags:["Document"],properties:IP(e.gameObject)})}function Jg(e){return e.components.map(t=>t.type).join(", ")||"none"}function IP(e){let t=[];return $e(t,{path:"components.count",label:"Count",value:e.components.length,order:0,source:"Document"}),$e(t,{path:"components.types",label:"Types",value:Jg(e),order:1,source:"Document"}),e.components.forEach((r,n)=>{$e(t,{path:`components.${n}`,label:`${r.type} ${n}`,value:r,order:n+2,source:"Document",tags:["Component","Raw"]})}),t}function TP(e){let t=e.assetId??Fe(e.gameObject)?.assetId??ko(e.gameObject)?.assetId??null,r=PP({document:e.document,gameObject:e.gameObject,assetId:t});return r.length===0?null:{id:"metadata",title:"Metadata",order:80,placement:"body",summary:AP({document:e.document,gameObject:e.gameObject,assetId:t}),persistence:"readonly",collapsedByDefault:!0,tags:["Document","Asset"],properties:r}}function PP(e){let t=[],r=e.assetId?Lc(e.document,e.assetId):null;return $e(t,{path:"metadata.document",label:"Document Meta",value:e.document.meta??"none",order:0,source:"Document",tags:["Raw"]}),$e(t,{path:"metadata.gameObject",label:"GameObject Metadata",value:e.gameObject.metadata??"none",order:1,source:"Document",tags:["Raw"]}),$e(t,{path:"metadata.asset",label:"Asset Metadata",value:r?.metadata??"none",order:2,source:"Asset",tags:["Raw"]}),t}function AP(e){let t=e.assetId?Lc(e.document,e.assetId):null,r=[e.document.meta?"Document":null,e.gameObject.metadata?"GameObject":null,t?.metadata?"Asset":null].filter(n=>!!n);return r.length>0?r.join(" + "):"none"}function Pn(e,t,r=Pu(e)){let{document:n,...o}=t;return _c({document:n??null,nodeKind:r,property:o,extraValidators:e.extraValidators})}function $e(e,t){let r=X(t);r&&e.push(r)}function Zt(e,t,r,n){return X({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document"})}function Pu(e){return e.nodeKind??he(e.gameObject)}function Za(e){let t=e.gameObject;if(we(t)||t.transformType==="camera"||t.transformType==="light"||t.camera||t.light)return!1;let r=e.nodeKind??he(t);return r==="instance"||r==="primitive"||r==="transform"}function L0(e){let t=e.gameObject;if(we(t)||t.transformType==="camera"||t.transformType==="light"||t.camera||t.light)return!1;let r=e.nodeKind??he(t);return r==="instance"||r==="primitive"||r==="transform"}function F0(e){return e===1||e===2||e===3?e:0}function $0(e){let t=e.rendering?.alphaIndex;if(typeof t=="number"&&Number.isFinite(t))return t}function B0(e,t){return t==null?`${e.name} \xB7 Babylon \u9ED8\u8BA4`:`${e.name} \xB7 ${U0(e,t)}`}function z0(e,t){let r=[{label:"Babylon \u9ED8\u8BA4",value:null},...e.alphaIndexPresets.map(n=>({label:`${n.name} (${n.alphaIndex})`,value:n.alphaIndex}))];return t!=null&&!e.alphaIndexPresets.some(n=>n.alphaIndex===t)&&r.push({label:`\u672A\u547D\u540D\u503C ${t}`,value:t,batchCompatibility:"ignore"}),r}function U0(e,t){let r=e.alphaIndexPresets.find(n=>n.alphaIndex===t);return r?r.name:`\u672A\u547D\u540D\u503C ${t}`}function Au(e){return iP[e]??iP.zh}function Xg(e){return[{label:e.policyNone,value:"none"},{label:e.policyDynamic,value:"dynamic"},{label:e.policyBlob,value:"blob"},{label:e.policyProjected,value:"projected"}]}function Qg(e){return[{label:e.qualityLow,value:"low"},{label:e.qualityMedium,value:"medium"},{label:e.qualityHigh,value:"high"}]}function Zg(e){return[{label:e.inherit,value:"inherit"},{label:e.lightSceneMain,value:"scene-main"},{label:e.lightNearest,value:"nearest"},{label:e.lightExplicit,value:"explicit"}]}function V0(e,t){return t==="scale"?e.scale??{x:1,y:1,z:1}:e[t]}function Wg(e){return`${Tu(e.x)}, ${Tu(e.y)}, ${Tu(e.z)}`}function Tu(e){return fr(e).toString()}function qg(e){return e==="position"?"Position":e==="rotation"?"Rotation":"Scale"}function Lc(e,t){return e.assets.find(r=>r.id===t)??null}var H0=[{label:"Plain",value:"plain"},{label:"Light",value:"light"},{label:"Camera",value:"camera"}],K0=[{label:"Cube",value:"cube"},{label:"Sphere",value:"sphere"},{label:"Plane",value:"plane"},{label:"Capsule",value:"capsule"}];var iP={zh:{title:"\u9634\u5F71",language:"\u8BED\u8A00",cast:"\u6295\u5C04\u9634\u5F71",receive:"\u63A5\u6536\u9634\u5F71",policy:"\u9634\u5F71\u6A21\u5F0F",quality:"\u8D28\u91CF\u9884\u8BBE",light:"\u9634\u5F71\u5149\u6E90",lightId:"\u663E\u5F0F\u5149\u6E90 ID",opacity:"\u900F\u660E\u5EA6",softness:"\u67D4\u548C\u5EA6",bias:"Bias",normalBias:"Normal Bias",maxDistance:"\u6700\u5927\u8DDD\u79BB",resolution:"\u5206\u8FA8\u7387",cascadeCount:"\u7EA7\u8054\u6570\u91CF",bakeSamples:"\u70D8\u7119\u91C7\u6837",blurKernel:"\u6A21\u7CCA\u6838",bakeAction:"\u66F4\u65B0\u70D8\u7119\u7ED3\u679C",resolvedSource:"\u751F\u6548\u6765\u6E90",resolvedPolicy:"\u751F\u6548\u7B56\u7565",resolvedQuality:"\u751F\u6548\u8D28\u91CF",resolvedReceivers:"\u63A5\u6536\u9762",resolvedLight:"\u5149\u6E90",resolvedDiagnostics:"\u8BCA\u65AD",staticBakeState:"\u9759\u6001\u70D8\u7119\u72B6\u6001",staticBakeAuthored:"\u5DF2\u6807\u8BB0\u9759\u6001\uFF1B\u8BF7\u5728\u4FEE\u6539\u540E\u66F4\u65B0\u70D8\u7119",staticBakeStale:"\u70D8\u7119\u5DF2\u8FC7\u671F",sourceShadowSettings:"\u5F53\u524D\u5BF9\u8C61 shadow.*",sourcePrefabDefaults:"Prefab defaults",sourceAssetDefaults:"Source asset defaults",sourceInherited:"\u7EE7\u627F / \u9879\u76EE\u9ED8\u8BA4",none:"\u65E0",inherit:"\u7EE7\u627F",castNone:"\u5173\u95ED",castEnabled:"\u5F00\u542F",castAuto:"\u81EA\u52A8",receiveNone:"\u5173\u95ED",receiveEnabled:"\u5F00\u542F",receiveAuto:"\u81EA\u52A8",policyNone:"\u65E0\u9634\u5F71",policyDynamic:"\u52A8\u6001 Shadow Map",policyStatic:"\u9759\u6001\u70D8\u7119",policyBlob:"Blob \u9634\u5F71",policyProjected:"Projected \u9634\u5F71",policyAuto:"\u81EA\u52A8",qualityLow:"\u9AD8\u6027\u80FD",qualityMedium:"\u5E73\u8861",qualityHigh:"\u9AD8\u8D28\u91CF",qualityUltra:"\u8D85\u9AD8\u8D28\u91CF",lightSceneMain:"\u573A\u666F\u4E3B\u5149\u6E90",lightNearest:"\u6700\u8FD1\u5149\u6E90",lightExplicit:"\u6307\u5B9A\u5149\u6E90",summaryPolicy:(e,t)=>t?"\u591A\u79CD\u7B56\u7565":e==="none"?"\u65E0\u9634\u5F71":e==="dynamic"?"\u52A8\u6001 Shadow Map":e==="static"?"\u9759\u6001\u70D8\u7119":e==="blob"?"Blob \u9634\u5F71":e==="projected"?"Projected \u9634\u5F71":e==="auto"?"\u81EA\u52A8":"\u7EE7\u627F",tooltips:{language:"\u5207\u6362\u9634\u5F71 Inspector \u7684\u663E\u793A\u8BED\u8A00\u3002\u8BE5\u5B57\u6BB5\u53EA\u5F71\u54CD\u7F16\u8F91\u5668\uFF0C\u4E0D\u4F1A\u5BFC\u51FA\u5230\u8FD0\u884C\u65F6\u3002",cast:"\u63A7\u5236\u8BE5\u5BF9\u8C61\u662F\u5426\u6295\u5C04\u9634\u5F71\u3002\u5173\u95ED\u65F6\u8BE5\u5BF9\u8C61\u4E0D\u4F1A\u4EA7\u751F\u9634\u5F71\u3002",receive:"\u63A7\u5236\u8BE5\u5BF9\u8C61\u662F\u5426\u63A5\u6536\u9634\u5F71\u3002\u901A\u5E38\u5730\u9762\u6216\u5E73\u53F0\u5F00\u542F\uFF0C\u89D2\u8272\u548C\u9053\u5177\u6309\u9700\u8981\u5F00\u542F\u3002",policy:"\u9009\u62E9\u5F53\u524D\u5BF9\u8C61\u4F7F\u7528\u7684\u9634\u5F71\u6A21\u5F0F\uFF1A\u65E0\u9634\u5F71\u3001\u52A8\u6001 Shadow Map\u3001Blob \u9634\u5F71\u6216 Projected \u9634\u5F71\u3002",quality:"\u9009\u62E9\u9634\u5F71\u9884\u8BBE\uFF1A\u9AD8\u6027\u80FD\u3001\u5E73\u8861\u6216\u9AD8\u8D28\u91CF\u3002\u5177\u4F53\u9879\u76EE\u7EA7\u53C2\u6570\u5728\u53F3\u4FA7 Rendering / Shadows \u9762\u677F\u4E2D\u914D\u7F6E\u3002",light:"\u9009\u62E9\u9634\u5F71\u4F7F\u7528\u7684\u5149\u6E90\u7B56\u7565\u3002\u663E\u5F0F\u5149\u6E90\u9700\u8981\u586B\u5199\u5149\u6E90 ID\u3002",lightId:"\u5F53\u9634\u5F71\u5149\u6E90\u4E3A\u6307\u5B9A\u5149\u6E90\u65F6\u4F7F\u7528\u3002\u4E3A\u7A7A\u8868\u793A\u7A0D\u540E\u7531 resolver \u8BCA\u65AD\u3002",opacity:"\u8986\u76D6\u9634\u5F71\u900F\u660E\u5EA6\uFF0C\u8303\u56F4 0 \u5230 1\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",softness:"\u8986\u76D6\u9634\u5F71\u67D4\u548C\u5EA6\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",bias:"\u8986\u76D6 Shadow Map bias\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",normalBias:"\u8986\u76D6 Shadow Map normal bias\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",maxDistance:"\u8986\u76D6\u9634\u5F71\u6700\u5927\u4F5C\u7528\u8DDD\u79BB\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",resolution:"\u8986\u76D6\u9634\u5F71\u8D34\u56FE\u6216\u70D8\u7119\u5206\u8FA8\u7387\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",cascadeCount:"\u8986\u76D6\u52A8\u6001\u9634\u5F71\u7EA7\u8054\u6570\u91CF\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",bakeSamples:"\u8986\u76D6\u9759\u6001\u70D8\u7119\u91C7\u6837\u6570\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",blurKernel:"\u8986\u76D6\u9759\u6001\u6216 projected \u9634\u5F71\u7684\u6A21\u7CCA\u6838\u5927\u5C0F\uFF1B\u4E3A\u7A7A\u5219\u4F7F\u7528\u8D28\u91CF\u9884\u8BBE\u3002",bakeAction:"\u91CD\u65B0\u70D8\u7119\u5F53\u524D\u573A\u666F\u4E2D\u6240\u6709\u6807\u8BB0\u4E3A\u9759\u6001\u70D8\u7119\u9634\u5F71\u7684\u7269\u4F53\uFF0C\u5E76\u5237\u65B0\u7F16\u8F91\u5668\u9884\u89C8\u548C\u8FD0\u884C\u65F6 artifact\u3002",resolvedSource:"\u53EA\u8BFB\u6458\u8981\uFF1A\u5F53\u524D\u5BF9\u8C61\u9634\u5F71\u914D\u7F6E\u4E3B\u8981\u6765\u81EA\u5BF9\u8C61\u81EA\u8EAB\u3001Prefab/Instance \u94FE\u6216\u9879\u76EE\u9ED8\u8BA4\u3002",resolvedPolicy:"\u53EA\u8BFB\u6458\u8981\uFF1Aresolver \u5C06\u5F53\u524D Caster / Receiver / Light / Quality \u8BBE\u7F6E\u89E3\u6790\u6210\u7684\u5B9E\u9645\u540E\u7AEF\u3002",resolvedQuality:"\u53EA\u8BFB\u6458\u8981\uFF1Aresolver \u4F7F\u7528\u7684\u5B9E\u9645\u8D28\u91CF\u9884\u8BBE\u3002",resolvedReceivers:"\u53EA\u8BFB\u6458\u8981\uFF1Aresolver \u627E\u5230\u7684\u9634\u5F71\u63A5\u6536\u9762\u5BF9\u8C61 id\u3002",resolvedLight:"\u53EA\u8BFB\u6458\u8981\uFF1Aresolver \u627E\u5230\u7684\u9634\u5F71\u5149\u6E90 id\u3002",resolvedDiagnostics:"\u53EA\u8BFB\u6458\u8981\uFF1Aresolver \u8FD4\u56DE\u7684 warning/error\uFF0C\u53EF\u7528\u4E8E\u89E3\u91CA\u4E3A\u4EC0\u4E48\u9634\u5F71\u6CA1\u6709\u663E\u793A\u3002",staticBakeState:"\u9759\u6001\u9634\u5F71\u53EA\u968F owner \u663E\u9690\u540C\u6B65\uFF1Btransform\u3001light \u6216 source \u6539\u52A8\u540E\u9700\u8981\u66F4\u65B0\u70D8\u7119\u3002"}},en:{title:"Shadow",language:"Language",cast:"Cast Shadow",receive:"Receive Shadow",policy:"Shadow Mode",quality:"Quality Preset",light:"Shadow Light",lightId:"Explicit Light ID",opacity:"Opacity",softness:"Softness",bias:"Bias",normalBias:"Normal Bias",maxDistance:"Max Distance",resolution:"Resolution",cascadeCount:"Cascade Count",bakeSamples:"Bake Samples",blurKernel:"Blur Kernel",bakeAction:"Update Bake",resolvedSource:"Effective Source",resolvedPolicy:"Effective Policy",resolvedQuality:"Effective Quality",resolvedReceivers:"Receivers",resolvedLight:"Light",resolvedDiagnostics:"Diagnostics",staticBakeState:"Static Bake State",staticBakeAuthored:"Authored static; update bake after changes",staticBakeStale:"Bake is stale",sourceShadowSettings:"This object shadow.*",sourcePrefabDefaults:"Prefab defaults",sourceAssetDefaults:"Source asset defaults",sourceInherited:"Inherited / project default",none:"None",inherit:"Inherit",castNone:"Off",castEnabled:"On",castAuto:"Auto",receiveNone:"Off",receiveEnabled:"On",receiveAuto:"Auto",policyNone:"No Shadow",policyDynamic:"Dynamic Shadow Map",policyStatic:"Static Baked",policyBlob:"Blob Shadow",policyProjected:"Projected Shadow",policyAuto:"Auto",qualityLow:"High Performance",qualityMedium:"Balanced",qualityHigh:"High Quality",qualityUltra:"Ultra",lightSceneMain:"Scene Main Light",lightNearest:"Nearest Light",lightExplicit:"Explicit Light",summaryPolicy:(e,t)=>t?"Mixed policies":e==="none"?"No Shadow":e==="dynamic"?"Dynamic Shadow Map":e==="static"?"Static Baked":e==="blob"?"Blob Shadow":e==="projected"?"Projected Shadow":e==="auto"?"Auto":"Inherit",tooltips:{language:"Switches the display language for this Shadow inspector. This editor-only field is not exported to runtime.",cast:"Controls whether this object casts shadows. Off prevents it from producing a shadow.",receive:"Controls whether this object receives shadows. Ground and platforms usually turn this on; characters and props can opt in when needed.",policy:"Chooses this object shadow mode: No Shadow, Dynamic Shadow Map, Blob Shadow, or Projected Shadow.",quality:"Chooses a shadow preset: High Performance, Balanced, or High Quality. Project-level parameters live in the Rendering / Shadows panel.",light:"Chooses the light selection policy for shadows. Explicit light requires a light id.",lightId:"Used when Shadow Light is Explicit Light. Empty values will be diagnosed by the resolver later.",opacity:"Overrides shadow opacity from 0 to 1. Empty uses the quality preset.",softness:"Overrides softness. Empty uses the quality preset.",bias:"Overrides shadow-map bias. Empty uses the quality preset.",normalBias:"Overrides shadow-map normal bias. Empty uses the quality preset.",maxDistance:"Overrides max shadow distance. Empty uses the quality preset.",resolution:"Overrides map or bake resolution. Empty uses the quality preset.",cascadeCount:"Overrides dynamic shadow cascade count. Empty uses the quality preset.",bakeSamples:"Overrides static bake sample count. Empty uses the quality preset.",blurKernel:"Overrides static or projected blur kernel. Empty uses the quality preset.",bakeAction:"Rebake every object authored as Static Baked Shadow in the current scene, then refresh the editor preview and runtime artifact.",resolvedSource:"Readonly summary of whether this object is mainly using object shadow.*, prefab/instance inheritance, or project defaults.",resolvedPolicy:"Readonly summary of the concrete backend resolved from Caster / Receiver / Light / Quality settings.",resolvedQuality:"Readonly summary of the quality preset used by the resolver.",resolvedReceivers:"Readonly summary of receiver object ids selected by the resolver.",resolvedLight:"Readonly summary of the light id selected by the resolver.",resolvedDiagnostics:"Readonly resolver warnings/errors explaining why a shadow may not appear.",staticBakeState:"Static shadows follow owner visibility; transform, light, or source changes require a rebake."}}};function xP(e){return[RP(e),OP(e.runtime),CP(e.runtime),wP(e.runtime),vP(e.runtime),kP(e.runtime),_P(e.runtime),NP(e.runtime),jP(e.runtime),GP(e.runtime),LP(e.runtime),FP(e.runtime),$P(e)].filter(t=>!!t)}function eS(e,t){if(!e.activeId)return[];let r=t.findGameObject(e.document,e.activeId);if(!r||e.targetIds&&e.targetIds.length!==1)return[];let n=Oc({projectedRoot:e.projectedRoot,projectionNode:e.projectionNode??null});return xP({runtime:n,binding:{sourceId:e.sourceRef.sourceId,sourceType:e.sourceRef.sourceType,objectId:e.activeId,component:t.hasModelRenderer(r)?"ModelRenderer":t.hasImageRenderer(r)?"ImageRenderer":t.readNodeKind(r)==="transform"?"Transform":"GameObject",projectionNodeId:Je(e.projectionNode,"id")??null,projectionName:Je(e.projectionNode,"name")??null,projectionParentId:Je(e.projectionNode,"parentId")??null,projectionAssetId:MP(e.projectionNode)},projectionAssetMetadata:DP(e.projectionNode)})}function MP(e){let t=le(e,"asset");return Je(t,"assetId")??Je(t,"id")}function DP(e){return le(le(e,"asset"),"metadata")}function RP(e){let{binding:t,runtime:r}=e,n=[];return _(n,{path:"runtime.binding.sourceId",label:"Source ID",value:t?.sourceId??"none",order:0,source:"Document"}),_(n,{path:"runtime.binding.sourceType",label:"Source Type",value:t?.sourceType??"none",order:1,source:"Document"}),_(n,{path:"runtime.binding.objectId",label:"Object ID",value:t?.objectId??"none",order:2,source:"Document"}),_(n,{path:"runtime.binding.component",label:"Component",value:t?.component??"GameObject",order:3,source:"Derived"}),_(n,{path:"runtime.projection.nodeId",label:"Projection Node ID",value:t?.projectionNodeId??"none",order:4,source:"Derived"}),_(n,{path:"runtime.projection.name",label:"Projection Name",value:t?.projectionName??"none",order:5,source:"Derived"}),_(n,{path:"runtime.projection.parentId",label:"Projection Parent",value:t?.projectionParentId??"none",order:6,source:"Derived"}),_(n,{path:"runtime.projection.assetId",label:"Projection Asset ID",value:t?.projectionAssetId??"none",order:7,source:"Asset"}),_(n,{path:"runtime.root.status",label:"Projected Root",value:r.root?"available":"not projected",order:8,source:"Runtime"}),_(n,{path:"runtime.root.className",label:"Runtime Class",value:bn(r.root)??"none",order:9,source:"Runtime"}),_(n,{path:"runtime.root.name",label:"Runtime Name",value:Je(r.root,"name")??"none",order:10,source:"Runtime"}),_(n,{path:"runtime.binding.primaryMesh",label:"Primary Mesh",value:Ni(r.primaryMesh)??"none",order:11,source:"Derived"}),_(n,{path:"runtime.binding.primaryMaterial",label:"Primary Material",value:Ni(r.material)??"none",order:12,source:"Derived"}),_(n,{path:"runtime.material.kind",label:"Material Kind",value:HP(r.material)??"none",order:13,source:"Runtime"}),$t({id:"runtimeBinding",title:"Runtime Binding",order:910,summary:r.root?Ni(r.root)??"Runtime":"not projected",collapsedByDefault:!0,properties:n})}function OP(e){let t=[],r=au(e.root)??au(e.primaryMesh);return r?(zi(t,"runtime.bounds.min","Bounds Min",r.min,t.length,"Derived"),zi(t,"runtime.bounds.max","Bounds Max",r.max,t.length,"Derived"),zi(t,"runtime.bounds.center","Bounds Center",r.center,t.length,"Derived"),zi(t,"runtime.bounds.size","Bounds Size",r.size,t.length,"Derived")):_(t,{path:"runtime.bounds.status",label:"Bounds",value:"not available",source:"Derived"}),_(t,{path:"runtime.geometry.meshCount",label:"Mesh Count",value:e.meshes.length,source:"Derived"}),_(t,{path:"runtime.geometry.childNodeCount",label:"Child Nodes",value:e.childNodes.length,source:"Derived"}),_(t,{path:"runtime.geometry.totalVertices",label:"Total Vertices",value:su(e.meshes,"getTotalVertices"),source:"Derived"}),_(t,{path:"runtime.geometry.totalIndices",label:"Total Indices",value:su(e.meshes,"getTotalIndices"),source:"Derived"}),_(t,{path:"runtime.geometry.subMeshCount",label:"SubMeshes",value:e.meshes.reduce((n,o)=>n+Ha(o,"subMeshes"),0),source:"Derived"}),$t({id:"geometryBox",title:"Geometry / Box",order:920,summary:r?`${e.meshes.length} mesh${e.meshes.length===1?"":"es"}`:"no bounds",collapsedByDefault:!1,properties:t})}function CP(e){let t=e.primaryMesh??e.root,r=[];return _(r,{path:"runtime.rendering.nodeClass",label:"Node Class",value:bn(t)??"none"}),_(r,{path:"runtime.rendering.nodeName",label:"Node Name",value:Je(t,"name")??"none"}),_(r,{path:"runtime.rendering.isEnabled",label:"Enabled",value:wg(t)??"not available"}),_(r,{path:"runtime.rendering.isVisible",label:"Is Visible",value:bt(t,"isVisible")??"not available"}),_(r,{path:"runtime.rendering.visibility",label:"Visibility",value:Ge(t,"visibility")??"not available"}),_(r,{path:"runtime.rendering.layerMask",label:"Layer Mask",value:Ge(t,"layerMask")??"not available"}),_(r,{path:"runtime.rendering.renderingGroupId",label:"Rendering Group",value:Ge(t,"renderingGroupId")??"not available"}),_(r,{path:"runtime.rendering.alphaIndex",label:"Alpha Index",value:Ge(t,"alphaIndex")??"not available"}),_(r,{path:"runtime.rendering.alwaysSelectAsActiveMesh",label:"Always Active Mesh",value:bt(t,"alwaysSelectAsActiveMesh")??"not available"}),_(r,{path:"runtime.rendering.billboardMode",label:"Billboard Mode",value:Ge(t,"billboardMode")??"not available"}),$t({id:"rendering",title:"Rendering",order:930,summary:Je(t,"name")??bn(t)??"not available",collapsedByDefault:!0,properties:r})}function wP(e){let t=e.primaryMesh??e.root,r=[];return _(r,{path:"runtime.collisions.checkCollisions",label:"Check Collisions",value:bt(t,"checkCollisions")??"not configured"}),_(r,{path:"runtime.collisions.collisionMask",label:"Collision Mask",value:Ge(t,"collisionMask")??"not configured"}),_(r,{path:"runtime.collisions.collisionGroup",label:"Collision Group",value:Ge(t,"collisionGroup")??"not configured"}),_(r,{path:"runtime.collisions.collisionResponse",label:"Collision Response",value:bt(t,"collisionResponse")??"not configured"}),_(r,{path:"runtime.collisions.moveWithCollisions",label:"Move With Collisions",value:typeof le(t,"moveWithCollisions")=="function"?"available":"not available"}),zi(r,"runtime.collisions.ellipsoid","Ellipsoid",le(t,"ellipsoid"),r.length,"Runtime","not configured"),zi(r,"runtime.collisions.ellipsoidOffset","Ellipsoid Offset",le(t,"ellipsoidOffset"),r.length,"Runtime","not configured"),$t({id:"collisions",title:"Collisions",order:940,summary:bt(t,"checkCollisions")===!0?"enabled":"not configured",collapsedByDefault:!0,properties:r})}function vP(e){let t=e.primaryMesh??e.root,r=le(t,"physicsBody"),n=le(t,"physicsImpostor"),o=r??n,i=[];return _(i,{path:"runtime.physics.status",label:"Physics",value:o?"configured":"not configured"}),_(i,{path:"runtime.physics.bodyClass",label:"Body Class",value:bn(o)??"none"}),_(i,{path:"runtime.physics.bodyName",label:"Body Name",value:Je(o,"name")??Je(o,"id")??"none"}),_(i,{path:"runtime.physics.mass",label:"Mass",value:Cc(o,"mass")??"not available"}),_(i,{path:"runtime.physics.friction",label:"Friction",value:Cc(o,"friction")??"not available"}),_(i,{path:"runtime.physics.restitution",label:"Restitution",value:Cc(o,"restitution")??"not available"}),_(i,{path:"runtime.physics.disablePreStep",label:"Disable Pre Step",value:bt(o,"disablePreStep")??"not available"}),$t({id:"physics",title:"Physics",order:950,summary:o?Ni(o)??"configured":"not configured",collapsedByDefault:!0,properties:i})}function kP(e){let t=e.primaryMesh??e.root,r=[];return _(r,{path:"runtime.shadows.receiveShadows",label:"Receive Shadows",value:bt(t,"receiveShadows")??"not configured"}),_(r,{path:"runtime.shadows.shadowEnabled",label:"Shadow Enabled",value:Mt(t,"isShadowEnabled")??"not available"}),_(r,{path:"runtime.shadows.shadowDepthWrapper",label:"Shadow Depth Wrapper",value:Ni(le(e.material,"shadowDepthWrapper"))??"none"}),_(r,{path:"runtime.shadows.receivingMeshCount",label:"Receiving Meshes",value:e.meshes.filter(n=>bt(n,"receiveShadows")===!0).length,source:"Derived"}),$t({id:"shadows",title:"Shadows",order:960,summary:bt(t,"receiveShadows")===!0?"receiving":"not configured",collapsedByDefault:!0,properties:r})}function _P(e){let t=e.material,r=[];return _(r,{path:"runtime.material.status",label:"Material",value:t?"available":"none"}),_(r,{path:"runtime.material.className",label:"Class",value:bn(t)??"none"}),_(r,{path:"runtime.material.name",label:"Name",value:Je(t,"name")??"none"}),_(r,{path:"runtime.material.id",label:"ID",value:Je(t,"id")??"none"}),_(r,{path:"runtime.material.uniqueId",label:"Unique ID",value:Ge(t,"uniqueId")??"not available"}),_(r,{path:"runtime.material.alpha",label:"Alpha",value:Ge(t,"alpha")??"not available"}),_(r,{path:"runtime.material.backFaceCulling",label:"Back Face Culling",value:bt(t,"backFaceCulling")??"not available"}),_(r,{path:"runtime.material.twoSidedLighting",label:"Two Sided Lighting",value:bt(t,"twoSidedLighting")??"not available"}),_(r,{path:"runtime.material.disableLighting",label:"Disable Lighting",value:bt(t,"disableLighting")??"not available"}),_(r,{path:"runtime.material.wireframe",label:"Wireframe",value:bt(t,"wireframe")??"not available"}),_(r,{path:"runtime.material.pointsCloud",label:"Points Cloud",value:bt(t,"pointsCloud")??"not available"}),_(r,{path:"runtime.material.fillMode",label:"Fill Mode",value:Ge(t,"fillMode")??"not available"}),_(r,{path:"runtime.material.activeTextureCount",label:"Active Textures",value:cu(t,"getActiveTextures"),source:"Derived"}),$t({id:"material",title:"Material",order:970,summary:Ni(t)??"none",collapsedByDefault:!0,properties:r})}function NP(e){let t=e.material,r=[];_(r,{path:"runtime.material.textures.activeCount",label:"Active Texture Count",value:cu(t,"getActiveTextures"),source:"Derived"});let n=0;for(let o of KP){let i=le(t,o);i&&(n+=1,zP(r,`runtime.material.textures.${o}`,Fc(o),i))}return n===0&&_(r,{path:"runtime.material.textures.status",label:"Textures",value:"none"}),$t({id:"materialTextures",title:"Material Textures",order:980,summary:n>0?`${n} slot${n===1?"":"s"}`:"none",collapsedByDefault:!0,properties:r})}function jP(e){let t=[],r=0;for(let n of WP){let o=le(e.material,n);BP(t,`runtime.material.colors.${n}`,Fc(n),o,t.length)&&(r+=1)}return r===0&&_(t,{path:"runtime.material.colors.status",label:"Colors",value:"none"}),$t({id:"materialColors",title:"Material Colors",order:990,summary:r>0?`${r} color${r===1?"":"s"}`:"none",collapsedByDefault:!0,properties:t})}function GP(e){let t=[];for(let r of qP)_(t,{path:`runtime.material.metallicRoughness.${r}`,label:Fc(r),value:Ge(e.material,r)??"not available"});return $t({id:"metallicRoughness",title:"Metallic / Roughness",order:1e3,summary:e.material?"runtime material":"none",collapsedByDefault:!0,properties:t})}function LP(e){let t=[];for(let r of YP)_(t,{path:`runtime.material.intensity.${r}`,label:Fc(r),value:Ge(e.material,r)??"not available"});return $t({id:"intensityProperties",title:"Intensity Properties",order:1010,summary:e.material?"runtime material":"none",collapsedByDefault:!0,properties:t})}function FP(e){let t=e.primaryMesh??e.root,r=le(t,"skeleton"),n=[];return _(n,{path:"runtime.animation.rootAnimationCount",label:"Root Animations",value:Ha(e.root,"animations"),source:"Derived"}),_(n,{path:"runtime.animation.meshAnimationCount",label:"Mesh Animations",value:Ha(t,"animations"),source:"Derived"}),_(n,{path:"runtime.skeleton.status",label:"Skeleton",value:r?"available":"none"}),_(n,{path:"runtime.skeleton.className",label:"Skeleton Class",value:bn(r)??"none"}),_(n,{path:"runtime.skeleton.name",label:"Skeleton Name",value:Je(r,"name")??"none"}),_(n,{path:"runtime.skeleton.id",label:"Skeleton ID",value:Je(r,"id")??"none"}),_(n,{path:"runtime.skeleton.boneCount",label:"Bones",value:Ha(r,"bones"),source:"Derived"}),$t({id:"animationSkeleton",title:"Animation / Skeleton",order:1020,summary:r?Je(r,"name")??"skeleton":"none",collapsedByDefault:!0,properties:n})}function $P(e){let{runtime:t}=e,r=[];return _(r,{path:"runtime.raw.rootMetadata",label:"Root Metadata",value:le(t.root,"metadata")??"none",tags:["Raw"]}),_(r,{path:"runtime.raw.primaryMeshMetadata",label:"Mesh Metadata",value:le(t.primaryMesh,"metadata")??"none",tags:["Raw"]}),_(r,{path:"runtime.raw.materialMetadata",label:"Material Metadata",value:le(t.material,"metadata")??"none",tags:["Raw"]}),_(r,{path:"runtime.raw.projectionAssetMetadata",label:"Projection Asset Metadata",value:e.projectionAssetMetadata??"none",source:"Asset",tags:["Raw"]}),_(r,{path:"runtime.misc.isDisposed",label:"Root Disposed",value:Mt(t.root,"isDisposed")??"not available"}),$t({id:"rawMisc",title:"Raw / Misc",order:1030,summary:"metadata",collapsedByDefault:!0,properties:r})}function $t(e){return Go({id:e.id,title:e.title,order:e.order,summary:e.summary,persistence:"runtime",runtimeOnly:!0,collapsedByDefault:e.collapsedByDefault,omitWhenEmpty:!1,tags:["Runtime"],properties:e.properties})}function _(e,t){let r=X({...t,persistence:"runtime",source:t.source??"Runtime"});r&&e.push(r)}function zi(e,t,r,n,o,i="Runtime",a){let s=Cg({basePath:t,label:r,value:n,order:o,persistence:"runtime",source:i});s.length>0?e.push(...s):a&&_(e,{path:`${t}.status`,label:r,value:a,order:o,source:i})}function BP(e,t,r,n,o){let i=VP(n);return i?(_(e,{path:`${t}.r`,label:`${r}.r`,value:i.r,order:o,valueType:"number"}),_(e,{path:`${t}.g`,label:`${r}.g`,value:i.g,order:o+1,valueType:"number"}),_(e,{path:`${t}.b`,label:`${r}.b`,value:i.b,order:o+2,valueType:"number"}),i.a!=null&&_(e,{path:`${t}.a`,label:`${r}.a`,value:i.a,order:o+3,valueType:"number"}),!0):!1}function zP(e,t,r,n){let o=e.length;_(e,{path:`${t}.className`,label:`${r} Class`,value:bn(n)??"Texture",order:o}),_(e,{path:`${t}.name`,label:`${r} Name`,value:Je(n,"name")??"none",order:o+1}),_(e,{path:`${t}.url`,label:`${r} URL`,value:UP(n)??"none",order:o+2}),_(e,{path:`${t}.level`,label:`${r} Level`,value:Ge(n,"level")??"not available",order:o+3}),_(e,{path:`${t}.coordinatesIndex`,label:`${r} UV Set`,value:Ge(n,"coordinatesIndex")??"not available",order:o+4}),_(e,{path:`${t}.hasAlpha`,label:`${r} Has Alpha`,value:bt(n,"hasAlpha")??"not available",order:o+5})}function UP(e){return Je(e,"url")??Je(e,"name")??Je(Mt(e,"getInternalTexture"),"url")}function VP(e){if(!e||typeof e!="object")return null;let t=Ge(e,"r"),r=Ge(e,"g"),n=Ge(e,"b");if(t==null||r==null||n==null)return null;let o=Ge(e,"a");return o==null?{r:t,g:r,b:n}:{r:t,g:r,b:n,a:o}}function HP(e){let t=bn(e);return t?t.includes("PBR")?"pbr":t.includes("Standard")?"standard":t:null}function Fc(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^./,t=>t.toUpperCase())}var KP=["albedoTexture","diffuseTexture","emissiveTexture","ambientTexture","opacityTexture","bumpTexture","normalTexture","metallicTexture","reflectionTexture","refractionTexture","lightmapTexture","specularTexture","roughnessTexture"],WP=["albedoColor","diffuseColor","emissiveColor","ambientColor","specularColor","reflectivityColor"],qP=["metallic","roughness","microSurface","specularPower","baseWeight","indexOfRefraction"],YP=["directIntensity","emissiveIntensity","environmentIntensity","specularIntensity","cameraExposure","cameraContrast"];var XP=[{label:"\u4E2D\u6587",value:"zh"},{label:"English",value:"en"}],JP={zh:{hemisphericTitle:"\u73AF\u5883\u5149",directionalTitle:"\u76F4\u5C04\u5149",hemisphericSummary:"Hemispheric",directionalSummary:"Directional",language:"\u8BED\u8A00",type:"\u7C7B\u578B",typeHemispheric:"\u73AF\u5883\u5149",typeDirectional:"\u76F4\u5C04\u5149",intensity:"\u5F3A\u5EA6",skyLightColor:"\u5929\u7A7A\u5149\u989C\u8272",groundColor:"\u5730\u9762\u989C\u8272",lightColor:"\u5149\u7167\u989C\u8272",horizontalAngle:"\u6C34\u5E73\u89D2",elevationAngle:"\u9AD8\u5EA6\u89D2",shadowsTitle:"\u9634\u5F71",shadowsSummary:"Planar Main / \u8DDF\u968F\u76F4\u5C04\u5149",shadowSystem:"\u7CFB\u7EDF",shadowEnabled:"\u542F\u7528",shadowOpacity:"\u4E0D\u900F\u660E\u5EA6",shadowLength:"\u9634\u5F71\u957F\u5EA6",shadowFollowDirectional:"Planar Main / \u8DDF\u968F\u76F4\u5C04\u5149",openShadows:"\u6253\u5F00\u9634\u5F71\u8BBE\u7F6E",rawLight:"\u539F\u59CB\u5149\u6E90\u6570\u636E",tooltips:{language:"\u5207\u6362\u6B64\u5149\u6E90\u68C0\u67E5\u5668\u7684\u5C5E\u6027\u663E\u793A\u8BED\u8A00\u3002\u8BE5\u5B57\u6BB5\u53EA\u7528\u4E8E\u7F16\u8F91\u5668\uFF0C\u4E0D\u4F1A\u5BFC\u51FA\u5230\u8FD0\u884C\u65F6\u3002",type:"\u7CFB\u7EDF\u5149\u6E90\u7C7B\u578B\u53EA\u8BFB\u3002\u5BF9\u5E94 BabylonJS \u7684 HemisphericLight \u6216 DirectionalLight\u3002",intensity:"\u5149\u6E90\u5F3A\u5EA6\uFF0C\u5FC5\u987B\u662F\u975E\u8D1F\u6570\u3002BabylonJS \u4E0D\u8BBE\u7F6E\u786C\u4E0A\u9650\uFF1B\u767D\u8272\u6750\u8D28\u5728\u8F83\u9AD8\u5F3A\u5EA6\u4E0B\u901A\u5E38\u5DF2\u7ECF\u63A5\u8FD1\u663E\u793A\u9971\u548C\uFF0C\u7EE7\u7EED\u589E\u5927\u89C6\u89C9\u53D8\u5316\u4F1A\u4E0D\u660E\u663E\u3002",skyLightColor:"\u73AF\u5883\u5149\u6765\u81EA\u5929\u7A7A\u65B9\u5411\u7684\u6F2B\u53CD\u5C04\u989C\u8272\uFF0C\u5BF9\u5E94 BabylonJS HemisphericLight.diffuse\u3002",groundColor:"\u73AF\u5883\u5149\u6765\u81EA\u5730\u9762\u53CD\u5C04\u65B9\u5411\u7684\u989C\u8272\uFF0C\u5BF9\u5E94 BabylonJS HemisphericLight.groundColor\u3002",lightColor:"\u76F4\u5C04\u5149\u989C\u8272\uFF0C\u5BF9\u5E94 BabylonJS DirectionalLight.diffuse\u3002",horizontalAngle:"\u76F4\u5C04\u5149\u5728 XZ \u5E73\u9762\u5185\u7684\u671D\u5411\u89D2\u5EA6\u3002\u7F16\u8F91\u5668\u4F1A\u628A\u5B83\u8F6C\u6362\u4E3A BabylonJS DirectionalLight.direction\u3002",elevationAngle:"\u76F4\u5C04\u5149\u76F8\u5BF9\u5730\u5E73\u7EBF\u7684\u9AD8\u5EA6\u89D2\uFF1B90 \u5EA6\u8868\u793A\u4ECE\u6B63\u4E0A\u65B9\u7167\u4E0B\u3002\u7F16\u8F91\u5668\u4F1A\u628A\u5B83\u8F6C\u6362\u4E3A BabylonJS DirectionalLight.direction\u3002",shadowSystem:"\u9634\u5F71\u7CFB\u7EDF\u53EA\u8BFB\u6458\u8981\u3002Planar \u9634\u5F71\u65B9\u5411\u6765\u81EA\u5F53\u524D\u76F4\u5C04\u5149\uFF0C\u5B8C\u6574\u53C2\u6570\u5728 Rendering \u9762\u677F\u8C03\u6574\u3002",shadowEnabled:"\u5F53\u524D\u9879\u76EE\u7EA7 Planar \u9634\u5F71\u662F\u5426\u542F\u7528\u3002\u8FD9\u91CC\u4EC5\u663E\u793A\u6458\u8981\uFF0C\u4E0D\u5728\u5149\u6E90 Inspector \u4E2D\u7F16\u8F91\u3002",shadowOpacity:"\u5F53\u524D\u9879\u76EE\u7EA7 Planar \u9634\u5F71\u4E0D\u900F\u660E\u5EA6\u3002\u5B8C\u6574\u53C2\u6570\u5728 Rendering \u9762\u677F\u8C03\u6574\u3002",shadowLength:"\u6839\u636E\u76F4\u5C04\u5149\u65B9\u5411\u4F30\u7B97\u7684\u5E73\u9762\u9634\u5F71\u957F\u5EA6\u500D\u7387\uFF1B\u9AD8\u5EA6\u89D2\u8D8A\u4F4E\uFF0C\u9634\u5F71\u8D8A\u957F\u3002",openShadows:"\u5207\u6362\u5230\u53F3\u4FA7 Rendering \u9762\u677F\uFF0C\u7F16\u8F91\u9879\u76EE\u7EA7\u9634\u5F71\u8BBE\u7F6E\u3002",rawLight:"\u7F16\u8F91\u5668\u6587\u6863\u4E2D\u7684\u5149\u6E90\u539F\u59CB\u6570\u636E\uFF0C\u53EA\u8BFB\u663E\u793A\u3002"}},en:{hemisphericTitle:"Environment Light",directionalTitle:"Directional Light",hemisphericSummary:"Hemispheric",directionalSummary:"Directional",language:"Language",type:"Type",typeHemispheric:"Environment Light",typeDirectional:"Directional Light",intensity:"Intensity",skyLightColor:"Sky Light Color",groundColor:"Ground Color",lightColor:"Light Color",horizontalAngle:"Horizontal Angle",elevationAngle:"Elevation Angle",shadowsTitle:"Shadows",shadowsSummary:"Planar Main / Follow Directional Light",shadowSystem:"System",shadowEnabled:"Enabled",shadowOpacity:"Opacity",shadowLength:"Shadow Length",shadowFollowDirectional:"Planar Main / Follow Directional Light",openShadows:"Open Shadows",rawLight:"Raw Light Data",tooltips:{language:"Switches the display language for this light inspector. This editor-only field is not exported to runtime.",type:"Read-only system light type. Maps to BabylonJS HemisphericLight or DirectionalLight.",intensity:"Light intensity. Must be a non-negative number. BabylonJS does not impose a hard upper limit; white surfaces often saturate at high intensity, so further increases may look subtle.",skyLightColor:"Diffuse sky color for the environment light. Maps to BabylonJS HemisphericLight.diffuse.",groundColor:"Ground bounce color for the environment light. Maps to BabylonJS HemisphericLight.groundColor.",lightColor:"Directional light color. Maps to BabylonJS DirectionalLight.diffuse.",horizontalAngle:"Directional light heading in the XZ plane. The editor converts it to BabylonJS DirectionalLight.direction.",elevationAngle:"Directional light elevation above the horizon; 90 degrees points straight down. The editor converts it to BabylonJS DirectionalLight.direction.",shadowSystem:"Read-only shadow system summary. Planar shadow direction follows this Directional Light; edit full settings in Rendering.",shadowEnabled:"Whether the project-level planar shadow system is enabled. This is summary-only in the light Inspector.",shadowOpacity:"Current project-level planar shadow opacity. Edit full settings in Rendering.",shadowLength:"Estimated planar shadow length multiplier from this light direction. Lower elevation makes longer shadows.",openShadows:"Switches the right dock to the Rendering panel for project-level shadow settings.",rawLight:"Read-only raw light data from the editor document."}}};function tS(e){return JP[e]??JP.zh}function rS(e){return e.inspectorLanguage==="en"?"en":"zh"}function QP(e){let{createDocumentInspectorProperty:t,gameObject:r,light:n,nodeKind:o,normalizeValue:i}=e,a=rS(n),s=tS(a),c=[t(null,o,{path:"light.inspectorLanguage",label:s.language,valueType:"enum",control:"enum",value:a,commitMode:"immediate",order:0,options:XP,controlOptions:{variant:"segmented"},tooltip:s.tooltips.language}),X({path:"light.type",label:s.type,value:n.type==="hemispheric"?s.typeHemispheric:s.typeDirectional,order:1,source:"Document",tooltip:s.tooltips.type}),t(null,o,{path:"light.intensity",label:s.intensity,valueType:"number",control:"number",value:n.intensity,commitMode:"live",order:2,min:0,step:.05,tooltip:s.tooltips.intensity})],d=3;if(n.type==="hemispheric")c.push(t(null,o,{path:"light.diffuseColor",label:s.skyLightColor,valueType:"color",control:"color",value:n.diffuseColor??{r:1,g:1,b:1},commitMode:"immediate",order:d,tooltip:s.tooltips.skyLightColor})),d+=1,c.push(t(null,o,{path:"light.groundColor",label:s.groundColor,valueType:"color",control:"color",value:n.groundColor??e.defaultEnvironmentGroundColor??{r:.48,g:.52,b:.62},commitMode:"immediate",order:d,tooltip:s.tooltips.groundColor})),d+=1;else{let l=_g(r)??{horizontalAngleDeg:0,elevationAngleDeg:90};c.push(t(null,o,{path:Gi,label:s.horizontalAngle,valueType:"number",control:"number",value:l.horizontalAngleDeg,commitMode:"live",order:d,min:GT,max:LT,step:1,coerce:m=>i(Gi,m),tooltip:s.tooltips.horizontalAngle})),d+=1,c.push(t(null,o,{path:Li,label:s.elevationAngle,valueType:"number",control:"number",value:l.elevationAngleDeg,commitMode:"live",order:d,min:wc,max:vc,step:1,coerce:m=>i(Li,m),tooltip:s.tooltips.elevationAngle})),d+=1,c.push(t(null,o,{path:"light.diffuseColor",label:s.lightColor,valueType:"color",control:"color",value:n.diffuseColor??{r:1,g:1,b:1},commitMode:"immediate",order:d,tooltip:s.tooltips.lightColor})),d+=1}return W0(c,{path:"light.raw",label:s.rawLight,value:n??"defaults",order:c.length,source:"Document",tags:["Raw"],tooltip:s.tooltips.rawLight}),c}function ZP(e){let t=e.renderingProfile.shadows.planar;return Go({id:"lightShadows",title:e.text.shadowsTitle,order:46,summary:e.text.shadowsSummary,collapsedByDefault:!1,tags:["Rendering","Derived"],properties:[X({path:"rendering.shadows.summary.system",label:e.text.shadowSystem,value:e.text.shadowFollowDirectional,order:0,source:"Document",tags:["Rendering"],tooltip:e.text.tooltips.shadowSystem,effect:"derived"}),X({path:"rendering.shadows.summary.enabled",label:e.text.shadowEnabled,value:t.enabled,order:1,source:"Document",tags:["Rendering"],tooltip:e.text.tooltips.shadowEnabled,effect:"derived"}),X({path:"rendering.shadows.summary.opacity",label:e.text.shadowOpacity,value:fr(t.appearance.color.a),order:2,source:"Document",tags:["Rendering"],tooltip:e.text.tooltips.shadowOpacity,effect:"derived"}),X({path:"rendering.shadows.summary.length",label:e.text.shadowLength,value:Y0($T(e.light.direction)),order:3,source:"Document",tags:["Rendering"],tooltip:e.text.tooltips.shadowLength,effect:"derived"}),q0(e.text)]})}function nS(e){let t=tS(rS(e.light)),r=[{id:"light",title:e.light.type==="hemispheric"?t.hemisphericTitle:t.directionalTitle,order:44,placement:"body",summary:e.light.type==="hemispheric"?t.hemisphericSummary:t.directionalSummary,persistence:"document",collapsedByDefault:!1,properties:QP(e)}];return e.light.type==="directional"&&r.push(ZP({light:e.light,text:t,renderingProfile:e.renderingProfile})),r}function W0(e,t){let r=X(t);r&&e.push(r)}function q0(e){return{path:"rendering.shadows.summary.open",label:e.openShadows,valueType:"string",control:"custom",customControl:"open-right-dock-tab",controlOptions:{targetTab:"rendering",label:e.openShadows,icon:"world"},value:e.openShadows,readOnly:!0,persistence:"readonly",commitMode:"immediate",order:4,tags:["Rendering"],tooltip:e.tooltips.openShadows,effect:"active"}}function Y0(e){return`x${fr(e)}`}function lt(e,t,r){let n=t.split(".").filter(Boolean);if(n.some(J0))return;let o=e;for(let a of n.slice(0,-1)){let s=o[a];(!s||typeof s!="object"||Array.isArray(s))&&(o[a]={}),o=o[a]}let i=n[n.length-1];i&&(r==null?delete o[i]:o[i]=structuredClone(r))}function J0(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function oS(e){let t=Uo(e.overrides);if(!t)return;let r=eA(t.material);r?t.material=r:delete t.material;let n=Uo(t.materialSlotBindings);if(n){for(let[a,s]of Object.entries(n)){let c=Uo(s);if(!c){delete n[a];continue}let d=eA(c.override);d?c.override=d:delete c.override,Object.keys(c).length===0&&delete n[a]}Object.keys(n).length===0&&delete t.materialSlotBindings}let o=Uo(t.childTransforms);o&&Object.keys(o).length===0&&delete t.childTransforms;let i=Uo(t.childOutlines);i&&Object.keys(i).length===0&&delete t.childOutlines,Object.keys(t).length===0&&delete e.overrides}function eA(e){let t=Uo(e);if(!t)return;let r=structuredClone(t);for(let n of["albedoTexture","normalTexture","metallicTexture"]){let o=Uo(r[n]);o&&Object.keys(o).length===0&&delete r[n]}for(let n of["pbr","standard"]){let o=Uo(r[n]);o&&Object.keys(o).length===0&&delete r[n]}return Object.keys(r).length>0?r:void 0}function Uo(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function xu(e,t,r){let n=e.scene.gameObjects.find(i=>i.id===t);if(!n)return e;let o=X0(n,r);return JSON.stringify(o)===JSON.stringify(n)?e:{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.map(i=>i.id===t?o:i)}}}function X0(e,t){let r=tA(e),n=Q0(e,t),o=tA(n);return r&&o&&!Z0(r,o)?Wa(n):n}function Q0(e,t){return Q(e)?{...e,components:e.components.map(r=>{if(r.type!=="Transform")return r;let n=r;return t.transform?Qn(t.transform)??n:St(n)?n:{...n,position:t.position??n.position,rotation:t.rotation??n.rotation,scale:t.scale??n.scale}})}:e}function tA(e){let t=Q(e);return t&&"rotation"in t?t.rotation:null}function Z0(e,t,r=1e-6){return Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r}function rA(e){let t=new Set(e.targetIds);if(t.size===0||!Number.isFinite(e.fromAlphaIndex)||!Number.isFinite(e.toAlphaIndex)||e.fromAlphaIndex===e.toAlphaIndex)return e.gameObjects;let r=!1,n=e.gameObjects.map(o=>!t.has(o.id)||!eL(o,e)?o:(r=!0,{...o,rendering:{...o.rendering??{},alphaIndex:e.toAlphaIndex}}));return r?n:e.gameObjects}function iS(e){let t=rA({gameObjects:e.document.scene.gameObjects,targetIds:e.targetIds,renderingGroupId:e.renderingGroupId,fromAlphaIndex:e.fromAlphaIndex,toAlphaIndex:e.toAlphaIndex});return t===e.document.scene.gameObjects?e.document:{...e.document,scene:{...e.document.scene,gameObjects:t}}}function eL(e,t){return(Ag(e.rendering?.renderingGroupId)??0)===t.renderingGroupId&&DT(e.rendering?.alphaIndex)===t.fromAlphaIndex}var es=gr,ts=yu;function aS(e){let t=Sr(e.document.scene.gameObjects.map(n=>n.name??n.id),e.name??e.asset.displayName,{fallbackName:e.asset.assetId}),r=es(e.document.scene.gameObjects.map(n=>n.id),ts(t));return{label:`Place ${e.asset.displayName}`,patch:{kind:"game-object.create-from-asset",assetItem:e.asset,...e.name?{name:e.name}:{},placement:{position:{...e.hit.position},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}},createdId:r,changedIds:[r]}}function nA(e){let t=e.scene.gameObjects.filter(r=>!!Fe(r)||!!ko(r)||!!r.primitive).length;return{x:t%5*1.8-3.6,y:0,z:Math.floor(t/5)*1.8+1.8}}function sS(e,t){let r=t&&jr(t)?t:null;return{position:r?.position?{...r.position}:nA(e),rotation:r?.rotation?{...r.rotation}:{x:0,y:0,z:0},scale:r?.scale?{...r.scale}:{x:1,y:1,z:1}}}function cS(e){return e.filter(t=>aL(t.kind)&&uS(t)).map(lS).sort(mS)}function dS(e){return e.filter(t=>t.kind==="model"||t.kind==="texture").map(lS).sort(mS)}function lS(e){let t=e.kind==="texture"?"texture":e.kind==="prefab"?"prefab":"glb",r=Ui(e.guid),n=rL(e);return{id:e.assetId,...r?{guid:r}:{},assetId:e.assetId,type:t,kind:e.kind==="texture"?"texture":e.kind==="prefab"?"prefab":"model",displayName:e.displayName,category:e.category??tL(e),warmupCount:e.warmupCount,singleton:e.singleton,materialMode:e.materialMode,defaults:Du(e.defaults),prefab:Du(e.prefab),external:Du(e.external),metadata:n,origin:e.origin??"project",dedupeKey:e.dedupeKey??r??iL(e.external)??e.assetId,placeable:uS(e)}}function iA(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.kind==="texture"||t.type==="texture"}function uS(e){return iA(e)?!0:!e||typeof e!="object"||Array.isArray(e)||e.placeable!==!1}function mS(e,t){return(e.category??"").localeCompare(t.category??"")||e.displayName.localeCompare(t.displayName)||e.assetId.localeCompare(t.assetId)||e.type.localeCompare(t.type)}function tL(e){return e.kind==="prefab"?"Prefab":e.kind==="texture"?"Texture":e.kind==="image"?"Image":e.kind==="sound"?"Sound":"Model"}function rL(e){return nL({originalFileName:e.originalFileName,relativePath:e.relativePath,codeKey:e.codeKey,contentHash:e.contentHash,byteSize:e.byteSize,...Du(e.metadata)})}function nL(e){if(!Array.isArray(e.materialSlots))return e;let t=Mu(e.assetAnalysis),r=Array.isArray(t?.meshes)?t.meshes:[],n=Array.isArray(t?.nodes)?t.nodes:[],o=new Map(r.flatMap(c=>{let d=Mu(c),u=$c(d?.meshIndex),l=Ui(d?.name);return u==null||!l?[]:[[u,l]]})),i=new Map(n.flatMap(c=>{let d=Mu(c),u=$c(d?.nodeIndex),l=Ui(d?.meshName);return u==null||!l?[]:[[u,l]]})),a=oA(t,"meshCount",r.length)||oA(t,"nodeCount",n.length),s=e.materialSlots.map(c=>{let d=Mu(c);if(!d||Ui(d.sourceMeshName))return c;let u=$c(d.meshIndex);if(u==null)return c;let l=$c(d.nodeIndex),m=o.get(u)??(l==null?void 0:i.get(l))??(a?oL(d):void 0);return m?{...d,sourceMeshName:m}:c});return{...e,materialSlots:s}}function oL(e){let t=Ui(e.label);if(t){let r=t.replace(/\s+\/\s+Primitive\s+\d+$/,"").trim();if(r)return r}return Ui(e.ownerNodePath)?.split("/").filter(Boolean).pop()}function oA(e,t,r){let n=$c(e?.[t]);return n!=null&&n>r}function iL(e){return!e||typeof e!="object"||Array.isArray(e)?null:Ui(e.platformAssetId)}function Ui(e){return typeof e=="string"&&e.trim()?e.trim():null}function $c(e){return Number.isInteger(e)&&e>=0?e:null}function Mu(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function Du(e){return e==null?void 0:structuredClone(e)}function aL(e){return e==="model"||e==="prefab"||e==="texture"}function pS(e,t){let r=new Map(t.filter(i=>i.type==="glb").map(i=>[i.assetId,i])),n=e.assets.map(i=>{if(i.type!=="glb")return i;let a=r.get(i.id);return a?rs(i,a):i}),o=new Set(e.assets.map(i=>i.id));for(let i of sL(e)){if(o.has(i))continue;let a=r.get(i);a&&(n.push(rs({id:i,type:"glb"},a)),o.add(i))}return{...e,assets:n}}function sL(e){let t=[],r=new Set,n=o=>{let i=hr(o);!i||r.has(i)||(r.add(i),t.push(i))};for(let o of e.assets)if(o.type==="prefab"){n(o.prefab?.sourceAssetId);for(let i of o.prefab?.nodes??[])n(i.sourceAssetId)}for(let o of e.scene.gameObjects){for(let a of o.components)a.type==="ModelRenderer"&&n(a.assetId);n(o.prefab?.sourceAssetId);let i=Hr(Hr(o)?.instance);n(i?.assetId)}return t}function fS(e,t){Bc(e,t);let r=new Map(t.filter(n=>n.type==="glb").map(n=>[n.assetId,n]));return{...e,assets:e.assets.map(n=>{if(n.type!=="glb")return structuredClone(n);let o=r.get(n.id);if(!o)throw new Error(`asset.catalog.missing: ${n.id}`);let i=o.guid??n.guid;return{id:n.id,...i?{guid:i}:{},type:"glb"}})}}function Bc(e,t){let r=new Map(t.filter(n=>n.type==="glb").map(n=>[n.assetId,n]));for(let n of e.assets){if(n.type!=="glb")continue;let o=r.get(n.id);if(!o)throw new Error(`asset.catalog.missing: ${n.id}`);lL(n,o),dL(n,o),cL(o)}}function cL(e){let t=Hr(e.metadata),r=Hr(e.external);if(!(hr(t?.url)??hr(t?.relativePath)??hr(r?.assetUrl)))throw new Error(`asset.catalog.incomplete: ${e.assetId}.url`);let o=Hr(t?.assetAnalysis),i=t?.assetAnalysisStatus==="unavailable";if(!o&&!i)throw new Error(`asset.catalog.incomplete: ${e.assetId}.metadata.assetAnalysisStatus`);let a=new Map((Array.isArray(o?.meshes)?o.meshes:[]).flatMap(c=>{let d=Hr(c),u=d?.meshIndex,l=Number.isInteger(u)?u:void 0,m=hr(d?.name);return l==null||!m?[]:[[l,m]]})),s=Array.isArray(t?.materialSlots)?t.materialSlots:[];for(let[c,d]of s.entries()){let u=Hr(d);if(!u)throw new Error(`asset.catalog.incomplete: ${e.assetId}.metadata.materialSlots[${c}]`);let l=Number.isInteger(u.meshIndex)?u.meshIndex:void 0;if(l!=null&&!hr(u.sourceMeshName)&&!a.has(l))throw new Error(`asset.catalog.incomplete: ${e.assetId}.metadata.materialSlots[${c}].sourceMeshName`)}}function dL(e,t){let r=Hr(e.metadata),n=Hr(t.metadata),o=Hr(e.external),i=Hr(t.external),a=hr(r?.url)??hr(r?.relativePath)??hr(o?.assetUrl),s=hr(n?.url)??hr(n?.relativePath)??hr(i?.assetUrl);if(a&&!s)throw new Error(`asset.catalog.incomplete: ${e.id}.url`);for(let c of["materialSlots","assetAnalysis"])if(r?.[c]!==void 0&&n?.[c]===void 0)throw new Error(`asset.catalog.incomplete: ${e.id}.metadata.${c}`)}function lL(e,t){for(let r of["materialMode","defaults","external","warmupCount","singleton"])if(e[r]!==void 0&&t[r]===void 0)throw new Error(`asset.catalog.incomplete: ${e.id}.${r}`)}function rs(e,t){return{...e,guid:t.guid??e.guid,displayName:t.displayName||e.displayName,category:t.category??e.category,warmupCount:t.warmupCount??e.warmupCount,singleton:t.singleton??e.singleton,materialMode:t.materialMode??e.materialMode,defaults:Ru(t.defaults??e.defaults),prefab:Ru(t.prefab??e.prefab),external:Ru(t.external??e.external),metadata:Ru(t.metadata??e.metadata)}}function Ru(e){return e==null?void 0:structuredClone(e)}function Hr(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function hr(e){return(typeof e=="string"?e.trim():"")||void 0}function zc(e,t,r,n={}){if(t.type==="prefab"){let s=aA(e,t),c=s?rs(s,t):gS(t),d=cA(e,t,c,r,n),u=mL(s?e.assets.map(l=>l.id===c.id?c:l):[...e.assets,c],c);return{document:{...e,assets:u,scene:{...e.scene,gameObjects:[...e.scene.gameObjects,d]}},gameObject:d}}let o=aA(e,t),i=o?rs(o,t):gS(t),a=t.type==="texture"?uL(e,t,i.id,r,n):sA(e,t,i.id,r,n);return{document:{...e,assets:o?e.assets.map(s=>s.id===i.id?i:s):[...e.assets,i],scene:{...e.scene,gameObjects:[...e.scene.gameObjects,a]}},gameObject:a}}function uL(e,t,r,n,o={}){let i=e.scene.gameObjects.map(u=>u.id),a=Sr(SS(e),o.name??t.displayName,{fallbackName:t.assetId}),s=es(i,ts(a)),c=ot(e),d=hS(e,c,n,o);return{id:s,guid:(o.createGameObjectGuid??gt)(),name:a,kind:"transform",...c?{parentId:c}:{},active:!0,metadata:{...t.metadata??{},assetId:t.assetId,assetType:"texture"},components:[Ur(d),{type:"ImageRenderer",assetId:r,size:{width:1,height:1}}]}}function gS(e){return{id:e.assetId,guid:e.guid,type:e.type,displayName:e.displayName,category:e.category,warmupCount:e.warmupCount,singleton:e.singleton,materialMode:e.materialMode,defaults:Ou(e.defaults),prefab:Ou(e.prefab),external:Ou(e.external),metadata:Ou(e.metadata)}}function sA(e,t,r,n,o={}){let i=e.scene.gameObjects.map(u=>u.id),a=Sr(SS(e),o.name??t.displayName,{fallbackName:t.assetId}),s=es(i,ts(a)),c=ot(e),d=hS(e,c,n,o);return{id:s,guid:(o.createGameObjectGuid??gt)(),name:a,...c?{parentId:c}:{},active:!0,components:[Ur(d),{type:"ModelRenderer",assetId:r}]}}function cA(e,t,r,n,o={}){let i=e.scene.gameObjects.map(u=>u.id),a=Sr(SS(e),o.name??t.displayName,{fallbackName:t.assetId}),s=es(i,ts(a)),c=ot(e),d=hS(e,c,n,o);return IT({id:s,guid:(o.createGameObjectGuid??gt)(),name:a,...c?{parentId:c}:{},prefabAsset:r,transform:Ur(d),metadata:{...t.metadata??{},assetId:t.assetId,assetType:"prefab"}})}function SS(e){return e.scene.gameObjects.map(t=>t.name??t.id)}function aA(e,t){return e.assets.find(r=>r.id===t.assetId||r.guid&&r.guid===t.guid)}function mL(e,t){let r=xc(t);if(!r||e.some(i=>i.id===r))return[...e];let n=t.prefab?.sourceAssetGuid,o=!!n&&!e.some(i=>i.guid===n);return[...e,{id:r,...o?{guid:n}:{},type:"glb",displayName:r,category:"Model",metadata:{sourcePrefabId:t.id}}]}function hS(e,t,r,n){let o=sS(e,r);return t?n.resolveLocalTransform?.({document:e,parentId:t,worldTransform:o})??Xn(e,t,o)??o:o}function Ou(e){return e==null?void 0:structuredClone(e)}function pL(e){return!!e&&ur(e)}function ES(e,t,r={}){let n=t.type==="document.replace"?t.document:lA({document:e,patch:t.patch,options:r});return r.normalizeDocument?.(n,t)??n}function lA(e){let{document:t,patch:r,options:n={}}=e;if(r.kind==="serialized-property")return Vc({document:t,patch:r,validateField:n.serializedProperty?.validateField});if(r.kind==="game-object.field")return Vi(t,r.targetId,r.path,r.value,n.field);if(r.kind==="game-object.field-batch")return Uc(t,r.targetIds,r.path,r.value,n.field);if(r.kind==="game-object.create-from-asset")return zc(t,r.assetItem,r.placement,{...n.assetPlacement??{},...r.name?{name:r.name}:{}}).document;if(r.kind==="game-object.transform")return nt(r.targetId)?t:xu(t,r.targetId,{transform:r.transform});if(r.kind==="game-object.transform-batch")return r.targets.reduce((o,i)=>{if(nt(i.targetId))return o;let a=ie(o,i.targetId),s=a?Q(a):null;if(!s)return o;if(pL(i.transform))return xu(o,i.targetId,{transform:i.transform});if(St(s))return o;let c=i.transform;return xu(o,i.targetId,{position:c.position?{...s.position,...c.position}:void 0,rotation:c.rotation?{...s.rotation,...c.rotation}:void 0,scale:c.scale?{...pr(s,"scale"),...c.scale}:void 0})},t);if(r.kind==="game-object.duplicate-selection"){let o=new Set(t.scene.gameObjects.map(l=>l.id)),i=n.isProtectedDuplicateSource??fL,a=new Set(t.scene.gameObjects.filter(l=>i(l,t)).map(l=>l.id)),s=new Set,c=[];for(let l of r.gameObjects)o.has(l.id)||s.has(l.id)||we(l)||i(l,t)||(s.add(l.id),c.push(l));let d=SL(c,o,a);if(d.length===0)return t;let u=[...t.scene.gameObjects,...d];return{...t,scene:{...t.scene,gameObjects:r.order?yS(u,r.order):u}}}if(r.kind==="game-object.rename"){let o=r.name.trim();if(!o)return t;let i=t.scene.gameObjects.find(a=>a.id===r.targetId);return!i||i.name===o?t:{...t,scene:{...t.scene,gameObjects:t.scene.gameObjects.map(a=>a.id===r.targetId?{...a,name:o}:a)}}}if(r.kind==="game-object.create-group"||r.kind==="game-object.create-primitive")return t.scene.gameObjects.some(o=>o.id===r.gameObject.id)?t:{...t,scene:{...t.scene,gameObjects:[...t.scene.gameObjects,r.gameObject]}};if(r.kind==="game-object.delete-subtree"){if(r.targetIds.some(nt))return t;let o=Vr(t,r.targetIds);if(o.size===0)return t;let i=n.isProtectedDeleteTarget??gL;return t.scene.gameObjects.some(a=>o.has(a.id)&&i(a,t))?t:{...t,scene:{...t.scene,gameObjects:t.scene.gameObjects.filter(a=>!o.has(a.id))}}}if(r.kind==="game-object.reparent"){if(nt(r.targetId))return t;let o=t.scene.gameObjects.find(c=>c.id===r.targetId);if(!o)return t;let i=r.transform?Qn(r.transform):null;if(r.transform&&!i)return t;let a=!!i&&!dA(Q(o),i);if(o.parentId===r.parentId&&!a)return t;let s={...o,parentId:r.parentId,components:a?o.components.map(c=>c.type==="Transform"?i:c):o.components};return{...t,scene:{...t.scene,gameObjects:t.scene.gameObjects.map(c=>c.id===r.targetId?s:c)}}}if(r.kind==="game-object.hierarchy-move"){let o=r.moves.filter(l=>!nt(l.targetId)),i=new Map;for(let l of o){let m=Qn(l.transform);if(!m)return t;i.set(l.targetId,m)}let a=new Map(o.map(l=>[l.targetId,l]));if(a.size===0)return t;let s=!1,c=t.scene.gameObjects.map(l=>{let m=a.get(l.id);if(!m)return l;let p=i.get(m.targetId),f=!dA(Q(l),p);if(l.parentId===m.parentId&&!f)return l;let g={...l,parentId:m.parentId,components:f?l.components.map(S=>S.type==="Transform"?p:S):l.components};return s=!0,g}),d=yS(c,r.order),u=d.some((l,m)=>l!==t.scene.gameObjects[m]);return!s&&!u?t:{...t,scene:{...t.scene,gameObjects:d}}}if(r.kind==="game-object.group-selection"){if(we(r.gameObject)||t.scene.gameObjects.some(s=>s.id===r.gameObject.id))return t;let o=new Set(r.childIds.filter(s=>!nt(s)));if(o.size===0)return t;let i=new Map;for(let[s,c]of Object.entries(r.childTransforms)){if(!o.has(s))continue;let d=Qn(c);if(!d)return t;i.set(s,d)}let a=t.scene.gameObjects.map(s=>{if(!o.has(s.id))return s;let c=i.get(s.id);return{...s,parentId:r.gameObject.id,components:c?s.components.map(d=>d.type!=="Transform"?d:c):s.components}});return{...t,scene:{...t.scene,gameObjects:yS([...a,r.gameObject],r.order)}}}return t}function fL(e){return zr(e)}function gL(e){return Br(e)}function SL(e,t,r){let n=new Map(e.map(i=>[i.id,i])),o=!0;for(;o;){o=!1;for(let i of[...n.values()])!i.parentId||n.has(i.parentId)||t.has(i.parentId)&&!r.has(i.parentId)||(n.delete(i.id),o=!0)}return e.filter(i=>n.has(i.id))}function yS(e,t){let r=new Map(e.map(i=>[i.id,i])),n=[],o=new Set;for(let i of t){if(o.has(i))continue;let a=r.get(i);a&&(n.push(a),o.add(i))}return[...n,...e.filter(i=>!o.has(i.id))]}function dA(e,t){if(!e)return!1;let r=St(e),n=St(t);return r||n?r&&n&&e.matrix.every((o,i)=>o===t.matrix[i]):bS(e.position,t.position)&&bS(e.rotation,t.rotation)&&bS(pr(e,"scale"),pr(t,"scale"))}function bS(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}var hL="main_camera",yL="environment_light",bL="sun_light",Cu={projection:"orthographic",alpha:3.9269908169872414,beta:.8,radius:14,orthoSize:6,fov:.85,targetOffset:{x:0,y:0,z:0},minZ:1,maxZ:1e4,lowerBetaLimit:.8,upperBetaLimit:.8,lowerRadiusLimit:14,upperRadiusLimit:14,inertia:.9,targetScreenOffset:{x:0,y:0},inspectorLanguage:"zh"},Wc={type:"directional",intensity:2,direction:{...lu},diffuseColor:{r:1,g:1,b:1},inspectorLanguage:"zh"},Hi={type:"hemispheric",intensity:.8,diffuseColor:{r:1,g:1,b:1},groundColor:{r:.48,g:.52,b:.62},inspectorLanguage:"zh"};function mA(){return{type:"Transform",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}}function pA(e){let t=AS({...e,kind:"transform",transformType:"camera",camera:qc(e.camera)});return delete t.light,delete t.primitive,xS(t,e)?e:t}function PS(e,t){let r=AS({...e,name:t==="hemispheric"?"Environment Light":"Directional Light",kind:"transform",transformType:"light",light:Ki(e.light,t)});return delete r.camera,delete r.primitive,xS(r,e)?e:r}function fA(e){let t=AS({...e,kind:"transform",transformType:"plain"});return delete t.camera,delete t.light,delete t.primitive,xS(t,e)?e:t}function AS(e){return Q(e)?e:{...e,components:[{type:"Transform",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}},...e.components]}}function qc(e){let t=Cu;return{...t,...e??{},projection:EL(e?.projection),fov:Hc(e?.fov,t.fov??.85),targetOffset:AL(e?.targetOffset)?{...e.targetOffset}:{...t.targetOffset??{x:0,y:0,z:0}},minZ:Hc(e?.minZ,t.minZ??1),maxZ:Hc(e?.maxZ,t.maxZ??1e4),lowerBetaLimit:Kc(e?.lowerBetaLimit,t.lowerBetaLimit??t.beta),upperBetaLimit:Kc(e?.upperBetaLimit,t.upperBetaLimit??t.beta),lowerRadiusLimit:Hc(e?.lowerRadiusLimit,t.lowerRadiusLimit??t.radius),upperRadiusLimit:Hc(e?.upperRadiusLimit,t.upperRadiusLimit??t.radius),inertia:TL(e?.inertia,t.inertia??.9),targetScreenOffset:PL(e?.targetScreenOffset)?{...e.targetScreenOffset}:{...t.targetScreenOffset??{x:0,y:0}},inspectorLanguage:IL(e?.inspectorLanguage)}}function gA(e,t){return uA(e,t,{valueField:"beta",lowerField:"lowerBetaLimit",upperField:"upperBetaLimit",minValue:Number.NEGATIVE_INFINITY}),uA(e,t,{valueField:"radius",lowerField:"lowerRadiusLimit",upperField:"upperRadiusLimit",minValue:.001}),e}function uA(e,t,r){let n=`camera.${r.valueField}`,o=`camera.${r.lowerField}`,i=`camera.${r.upperField}`,a=Kc(e[r.valueField],Cu[r.valueField]),s=Kc(e[r.lowerField],a),c=Kc(e[r.upperField],a);Number.isFinite(r.minValue)&&(a=Math.max(r.minValue,a),s=Math.max(r.minValue,s),c=Math.max(r.minValue,c)),c<s&&(t===i?s=c:c=s),t===o||t===i?a=Math.min(c,Math.max(s,a)):t===n&&(a<s&&(s=a),a>c&&(c=a)),e[r.valueField]=a,e[r.lowerField]=s,e[r.upperField]=c}function EL(e){return e==="perspective"?"perspective":"orthographic"}function IL(e){return e==="en"?"en":"zh"}function SA(e){return e==="en"?"en":"zh"}function Kc(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function Hc(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function TL(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1?e:t}function PL(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.x=="number"&&Number.isFinite(t.x)&&typeof t.y=="number"&&Number.isFinite(t.y)}function AL(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.x=="number"&&Number.isFinite(t.x)&&typeof t.y=="number"&&Number.isFinite(t.y)&&typeof t.z=="number"&&Number.isFinite(t.z)}function hA(e){return e.maxZ!=null&&e.minZ!=null&&e.maxZ<=e.minZ||e.upperBetaLimit!=null&&e.lowerBetaLimit!=null&&e.upperBetaLimit<e.lowerBetaLimit||e.upperRadiusLimit!=null&&e.lowerRadiusLimit!=null&&e.upperRadiusLimit<e.lowerRadiusLimit}function xL(e,t){return e?.type==="hemispheric"?"hemispheric":e?.type==="directional"?"directional":t}function Ki(e,t="directional"){return xL(e,t)==="hemispheric"?DL(e):ML(e)}function ML(e){let t=Wc,r=e?.type==="directional"?e:void 0;return{...t,...r??{},type:"directional",direction:{...t.direction,...r?.direction??{}},diffuseColor:r?.diffuseColor?{...t.diffuseColor,...r.diffuseColor}:t.diffuseColor,inspectorLanguage:SA(yA(r))}}function DL(e){let t=Hi,r=e?.type==="hemispheric"?e:void 0;return{...t,...r??{},type:"hemispheric",diffuseColor:r?.diffuseColor?{...t.diffuseColor,...r.diffuseColor}:t.diffuseColor,groundColor:r?.groundColor?{...t.groundColor,...r.groundColor}:t.groundColor,inspectorLanguage:SA(yA(r))}}function yA(e){return e&&typeof e=="object"?e.inspectorLanguage:void 0}function xS(e,t){return JSON.stringify(e)===JSON.stringify(t)}function bA(e,t,r){return{id:MS(t,hL,r),guid:r.createGameObjectGuid(),name:"Main Camera",kind:"transform",...e?{parentId:e}:{},active:!0,transformType:"camera",camera:qc(void 0),components:[{type:"Transform",position:{x:0,y:5,z:-8},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}]}}function EA(e,t,r){return{id:MS(t,bL,r),guid:r.createGameObjectGuid(),name:"Directional Light",kind:"transform",...e?{parentId:e}:{},active:!0,transformType:"light",light:Ki(void 0,"directional"),components:[{type:"Transform",position:{x:0,y:4,z:-3},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}]}}function IA(e,t,r){return{id:MS(t,yL,r),guid:r.createGameObjectGuid(),name:"Environment Light",kind:"transform",...e?{parentId:e}:{},active:!0,transformType:"light",light:Ki(void 0,"hemispheric"),components:[{type:"Transform",position:{x:0,y:3,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}]}}function MS(e,t,r){let n=r.createUniqueId([...e],t);return e.add(n),n}function PA(e,t){let r=t.name.trim();if(!r)return null;let n=ie(e,t.id);return!n||n.name===r?null:{label:`Rename ${n.name??n.id} to ${r}`,patch:{kind:"game-object.rename",targetId:t.id,name:r},changedId:t.id}}function AA(e,t){let r=wA(e,t);if(r===null)return null;let n=Sr(ku(e),t.name,{fallbackName:"Empty"}),o=gr(e.scene.gameObjects.map(a=>a.id),n),i={id:o,guid:gt(),name:n,kind:"transform",transformType:"plain",...r?{parentId:r}:{},active:!0,components:[{type:"Transform",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}]};return{label:`Create empty ${n}`,patch:{kind:"game-object.create-group",gameObject:i},createdId:o,changedIds:[o]}}function xA(e,t){let r=FL(t.shape);if(!r)return null;let n=kL(e,t);if(n===null)return null;let o=Sr(ku(e),t.name,{fallbackName:$L(r)}),i=gr(e.scene.gameObjects.map(c=>c.id),o),a=BL(r),s={id:i,guid:gt(),name:o,kind:"primitive",...n?{parentId:n}:{},active:!0,primitive:{shape:r},components:[Ur(a)]};return{label:`Create ${o}`,patch:{kind:"game-object.create-primitive",gameObject:s},createdId:i,changedIds:[i]}}function MA(e,t){if(t.ids.some(nt))return null;let r=Vr(e,t.ids);if(r.size===0||e.scene.gameObjects.some(i=>r.has(i.id)&&Br(i)))return null;let n=GL(e,r,t.activeId??null),o=[...r];return{label:`Delete ${o.length} GameObject${o.length===1?"":"s"}`,patch:{kind:"game-object.delete-subtree",targetIds:t.ids},deletedIds:o,fallbackSelectionId:n}}function RS(e,t,r={}){if(t.placement!=="inside")return{ok:!1,reason:"Only inside reparent is supported."};let n=ie(e,t.draggedId),o=ie(e,t.targetId);return n?we(n)?{ok:!1,reason:"Root GameObject cannot be reparented."}:o?Q(n)?$r(o)?n.id===o.id?{ok:!1,reason:"GameObject cannot be parented to itself."}:LL(e,n.id,o.id)?{ok:!1,reason:"GameObject cannot be parented to its descendant."}:t.preserveWorldTransform!==!1&&!vu(e,n.id,o.id,void 0,{preserveWorldPolicy:r})?{ok:!1,reason:"Cannot preserve world transform under the target parent."}:{ok:!0}:{ok:!1,reason:`${t.targetId} cannot have children.`}:{ok:!1,reason:`${t.draggedId} has no Transform to preserve.`}:{ok:!1,reason:`Parent GameObject not found: ${t.targetId}`}:{ok:!1,reason:`GameObject not found: ${t.draggedId}`}}function DA(e,t,r={}){if(!RS(e,t,r).ok)return null;let o=ie(e,t.draggedId);if(!o||!Q(o))return null;let i=t.targetId,a=t.preserveWorldTransform===!1?Tn(o):vu(e,o.id,i,void 0,{preserveWorldPolicy:r});return!a||o.parentId===i&&GA(Tn(o),a)?null:{label:`Reparent ${o.name??o.id}`,patch:{kind:"game-object.reparent",targetId:o.id,parentId:i,transform:a},changedIds:[o.id]}}function OS(e,t,r={}){let n=Zn(e),o=AI(n,t);if(!o.ok)return o;let i=_r(n,t.ids);if(i.some(nt))return{ok:!1,reason:"Root GameObject cannot be moved."};let a=vS(e,t);if(a&&!kS(e,a))return{ok:!1,reason:`${a} cannot have children.`};if(t.preserveWorldTransform!==!1)for(let s of i){let c=ie(e,s);if(!c)return{ok:!1,reason:`GameObject not found: ${s}`};if(!Q(c))return{ok:!1,reason:`${s} has no Transform to preserve.`};if(!vu(e,s,a,t,r))return{ok:!1,reason:"Cannot preserve world transform under the target parent."}}return{ok:!0}}function RA(e,t,r={}){if(!OS(e,t,r).ok)return null;let o=Zn(e),i=_r(o,t.ids),a=vS(e,t),s=i.map(l=>{let m=ie(e,l);if(!m||!Q(m))return null;let p=t.preserveWorldTransform===!1?Tn(m):vu(e,l,a,t,r),f=p?Bi(p):null;return f?a?{targetId:l,parentId:a,transform:f}:{targetId:l,transform:f}:null}).filter(l=>!!l);if(s.length!==i.length)return null;let c=_L(e,i,t),d=e.scene.gameObjects.map(l=>l.id);return!s.some(l=>{let m=ie(e,l.targetId);return!m||m.parentId!==l.parentId||!GA(Tn(m),l.transform)})&&zL(d,c)?null:{label:`Move ${i.length} GameObject${i.length===1?"":"s"}`,patch:{kind:"game-object.hierarchy-move",moves:s,order:c},changedIds:i}}function CS(e,t,r={}){let n=Zn(e),o=xI(n,t);if(!o.ok)return o;let i=_r(n,t.ids);if(i.some(nt))return{ok:!1,reason:"Root GameObject cannot be grouped."};let a=vA(e,t.parentId??null);if(a&&!kS(e,a))return{ok:!1,reason:`${a} cannot have children.`};if(t.preserveWorldTransform!==!1){let s=jA(e,i),c=s?{position:s,rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}:null;if(!c||!jc(e,a,c,r))return{ok:!1,reason:"Cannot preserve world transform under the target parent."};for(let d of i){let u=ie(e,d);if(!u)return{ok:!1,reason:`GameObject not found: ${d}`};if(!Q(u))return{ok:!1,reason:`${d} has no Transform to preserve.`};let l=Qt(e,d);if(!l||!kA(c,l,r))return{ok:!1,reason:"Cannot preserve world transform under the target parent."}}}return{ok:!0}}function OA(e,t,r={}){if(!CS(e,t,r).ok)return null;let o=Zn(e),i=_r(o,t.ids);if(i.length===0)return null;let a=vA(e,t.parentId??null),s=jA(e,i);if(!s)return null;let c={position:s,rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}},d=jc(e,a,c,r);if(!d)return null;let u=Sr(ku(e),t.name,{fallbackName:"Parent"}),l=gr(e.scene.gameObjects.map(g=>g.id),u),m={id:l,guid:gt(),name:u,kind:"transform",transformType:"plain",...a?{parentId:a}:{},active:!0,components:[Ur(d)]},p={};for(let g of i){let S=ie(e,g);if(!S)return null;if(t.preserveWorldTransform===!1){p[g]=Tn(S);continue}let P=Qt(e,g);if(!P)return null;let x=kA(c,P,r);if(!x)return null;p[g]=x}let f=NL(e,l,i,t.insertBeforeId??null);return{label:`Create Parent for ${i.length} GameObject${i.length===1?"":"s"}`,patch:{kind:"game-object.group-selection",gameObject:m,childIds:i,childTransforms:p,order:f},createdId:l,changedIds:[l,...i]}}function CA(e){let t=e.isProtectedDuplicateSource??RL,r=Zn(e.document),n=new Set(_r(r,e.targetIds).filter(S=>{let P=ie(e.document,S);return!!P&&!we(P)&&!t(P,e.document)&&!CL(e.document,P.id,t)})),o=wS(e.document).filter(S=>n.has(S));if(o.length===0)return null;let i=Vr(e.document,o),a=new Map,s=new Set(e.document.scene.gameObjects.map(S=>S.id)),c=new Map,d=ku(e.document),u=wL(e.document,o,i,t);for(let S of u){let P=ie(e.document,S),x=Sr(d,P.name,{alwaysAppendSuffix:!0,fallbackName:P.id});d.push(x);let T=gr([...s],x);s.add(T),a.set(P.id,T),c.set(P.id,x)}let l=u.map(S=>ie(e.document,S)).filter(S=>!!S&&a.has(S.id)).map(S=>{let P=structuredClone(S);return P.id=a.get(S.id),P.guid=gt(),P.name=c.get(S.id),P.parentId&&a.has(P.parentId)&&(P.parentId=a.get(P.parentId)),P});if(l.length===0)return null;let m=l.map(S=>S.id),p=o.map(S=>a.get(S)).filter(S=>!!S),f=OL(e.document,o,e.activeId),g=f&&a.has(f)?a.get(f):p[p.length-1]??m[m.length-1]??null;return{label:`Duplicate ${m.length} object${m.length===1?"":"s"}`,patch:{kind:"game-object.duplicate-selection",gameObjects:l,order:vL(e.document,o,a)},createdIds:m,selectedIds:p,activeId:g,changedIds:m}}function RL(e){return zr(e)}function OL(e,t,r){if(r&&t.includes(r))return r;if(r){for(let n of t)if(Vr(e,[n]).has(r))return n}return t[t.length-1]??null}function CL(e,t,r){let n=new Map(e.scene.gameObjects.map(a=>[a.id,a])),o=new Set,i=n.get(t);for(;i?.parentId;){if(o.has(i.parentId))return!0;o.add(i.parentId);let a=n.get(i.parentId);if(!a)return!1;if(r(a,e))return!0;i=a}return!1}function wL(e,t,r,n){let o=wS(e),i=new Map(o.map((l,m)=>[l,m])),a=new Map(e.scene.gameObjects.map(l=>[l.id,l])),s=new Map;for(let l of e.scene.gameObjects){let m=l.parentId&&a.has(l.parentId)?l.parentId:null,p=s.get(m)??[];p.push(l.id),s.set(m,p)}for(let l of s.values())l.sort((m,p)=>(i.get(m)??Number.MAX_SAFE_INTEGER)-(i.get(p)??Number.MAX_SAFE_INTEGER));let c=[],d=new Set,u=l=>{if(d.has(l)||!r.has(l))return;d.add(l);let m=ie(e,l);if(!(!m||we(m)||n(m,e))){c.push(m.id);for(let p of s.get(m.id)??[])u(p)}};for(let l of t)u(l);return c}function vL(e,t,r){let n=wS(e),o=new Map;for(let a of t){let s=Vr(e,[a]),c=n.filter(l=>s.has(l)),d=c.map(l=>r.get(l)).filter(l=>!!l),u=c[c.length-1];u&&d.length>0&&o.set(u,d)}let i=[];for(let a of n){i.push(a);let s=o.get(a);s&&i.push(...s)}return i}function wS(e){let t=e.scene.gameObjects,r=new Map(t.map(c=>[c.id,c])),n=new Map;for(let c of t){let d=c.parentId&&r.has(c.parentId)?c.parentId:null,u=n.get(d)??[];u.push(c.id),n.set(d,u)}let o=[],i=new Set,a=c=>{if(!(i.has(c)||!r.has(c))){i.add(c),o.push(c);for(let d of n.get(c)??[])a(d)}},s=ot(e);s&&a(s);for(let c of n.get(null)??[])a(c);for(let c of t)a(c.id);return o}function wA(e,t){if(t.parentId){let n=ie(e,t.parentId);return n&&$r(n)?n.id:null}let r=t.activeId?ie(e,t.activeId):null;if(r&&$r(r))return r.id;if(r?.parentId){let n=ie(e,r.parentId);if(n&&$r(n))return n.id}return ot(e)}function kL(e,t){return t.parentId===null?ot(e):wA(e,t)}function vS(e,t){if(t.placement==="root")return ot(e);if(t.placement==="inside"&&t.targetId)return t.targetId;let r=t.targetId?ie(e,t.targetId):null;return t.parentId??r?.parentId??ot(e)}function vA(e,t){return t&&kS(e,t)?t:ot(e)}function kS(e,t){let r=ie(e,t);return!!r&&$r(r)}function vu(e,t,r,n,o={}){let i=Qt(e,t);if(!i)return null;let a=ie(e,t);if(!a)return null;let s=n?o.resolveLocalTransform?.({document:e,intent:n,gameObject:a,parentId:r,worldTransform:i}):null;if(s)return Bi(s);let c=jc(e,r,i,o.preserveWorldPolicy);return c?Bi(c):null}function kA(e,t,r={}){let n=zl(r),o=_a(e,t,{allowMatrixFallback:n.allowMatrixFallback});return o?Bi(o):null}function _L(e,t,r){let n=_A(e,t),o=new Set(n),i=e.scene.gameObjects.map(s=>s.id).filter(s=>!o.has(s)),a=jL(e,i,{placement:r.placement,targetId:r.targetId??null,beforeId:r.beforeId??null,afterId:r.afterId??null,parentId:vS(e,r)});return NA(i,n,a)}function NL(e,t,r,n){let o=_A(e,r),i=new Set(o),a=e.scene.gameObjects.map(l=>l.id),s=a.filter(l=>!i.has(l)),c=Math.min(...r.map(l=>a.indexOf(l)).filter(l=>l>=0)),d=Number.isFinite(c)?s.filter(l=>a.indexOf(l)<c).length:s.length,u=n?Math.max(0,s.indexOf(n)):d;return NA(s,[t,...o],u)}function _A(e,t){let r=Vr(e,[...t]);return e.scene.gameObjects.map(n=>n.id).filter(n=>r.has(n))}function jL(e,t,r){return r.beforeId?TA(t.indexOf(r.beforeId),t.length):r.afterId?wu(e,t,r.afterId):r.placement==="before"&&r.targetId?TA(t.indexOf(r.targetId),t.length):r.placement==="after"&&r.targetId||r.placement==="inside"&&r.targetId?wu(e,t,r.targetId):r.placement==="root"?t.length:r.parentId?wu(e,t,r.parentId):t.length}function wu(e,t,r){let n=Vr(e,[r]),o=t.indexOf(r);if(o<0)return t.length;for(let i=o+1;i<t.length&&n.has(t[i]);i+=1)o=i;return o+1}function NA(e,t,r){let n=Math.max(0,Math.min(r,e.length));return[...e.slice(0,n),...t,...e.slice(n)]}function TA(e,t){return e>=0?e:t}function jA(e,t){let r=t.map(o=>Qt(e,o)).filter(o=>!!o);if(r.length===0)return null;let n=r.map(WI);return{x:n.reduce((o,i)=>o+i.x,0)/n.length,y:n.reduce((o,i)=>o+i.y,0)/n.length,z:n.reduce((o,i)=>o+i.z,0)/n.length}}function GL(e,t,r){let n=r?ie(e,r):null;if(n?.parentId&&!t.has(n.parentId)&&ie(e,n.parentId))return n.parentId;for(let o=e.scene.gameObjects.length-1;o>=0;o-=1){let i=e.scene.gameObjects[o];if(!t.has(i.id))return i.id}return null}function LL(e,t,r){let n=Ug(e),o=new Set,i=n.get(r);for(;i?.parentId&&!o.has(i.parentId);){if(i.parentId===t)return!0;o.add(i.parentId),i=n.get(i.parentId)}return!1}function FL(e){return e==="cube"||e==="sphere"||e==="plane"||e==="capsule"?e:null}function $L(e){return e[0].toUpperCase()+e.slice(1)}function BL(e){return{position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}}function ku(e){return e.scene.gameObjects.map(t=>t.name??t.id)}function GA(e,t){return!jr(e)||!jr(t)?bc(lr(e),lr(t)):DS(e.position,t.position)&&DS(e.rotation,t.rotation)&&DS(e.scale,t.scale)}function DS(e,t){return Math.abs(e.x-t.x)<1e-6&&Math.abs(e.y-t.y)<1e-6&&Math.abs(e.z-t.z)<1e-6}function zL(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function NS(e){return{getHierarchyItems(t){return _S(t,e)},normalizeHierarchyDocument(t){return Kg(t)},createRenamePatch(t,r){return to(PA(t,r))},createCreateGroupPatch(t,r){return to(AA(t,r))},createCreatePrimitivePatch(t,r){return to(xA(t,r))},createDeleteSubtreePatch(t,r){let n=MA(t,r);if(!n)return null;let o=new Set(n.deletedIds);return t.scene.gameObjects.some(i=>o.has(i.id)&&e.isProtectedSystemGameObject(i))?null:to(n)},collectSubtreeIdList(t,r){return eo(t,r)},validateReparent(t,r){let n=e.findGameObject(t,r.draggedId),o=e.findGameObject(t,r.targetId);return n&&e.isProtectedSystemGameObject(n)?{ok:!1,reason:"Protected system GameObject cannot be reparented."}:o&&e.isProtectedSystemGameObject(o)?{ok:!1,reason:"Protected system GameObject cannot have children."}:RS(t,r)},createReparentPatch(t,r){return to(DA(t,r))},validateHierarchyMove(t,r){let n=_S(t,e);if(_r(n,r.ids).some(a=>e.isProtectedSystemGameObjectId(t,a)))return{ok:!1,reason:"Protected system GameObject cannot be moved."};let i=UL(t,r,e);return e.isProtectedSystemGameObjectId(t,i)?{ok:!1,reason:"Protected system GameObject cannot have children."}:OS(t,r)},createHierarchyMovePatch(t,r){return to(RA(t,r))},validateGroupSelection(t,r){let n=_S(t,e);if(_r(n,r.ids).some(a=>e.isProtectedSystemGameObjectId(t,a)))return{ok:!1,reason:"Protected system GameObject cannot be grouped."};let i=VL(t,r.parentId??null,e);return e.isProtectedSystemGameObjectId(t,i)?{ok:!1,reason:"Protected system GameObject cannot have children."}:CS(t,r)},createGroupSelectionPatch(t,r){return to(OA(t,r))},createDuplicateSelectionPatch(t){let r=t.targetIds.filter(n=>{let o=e.findGameObject(t.document,n);return!!o&&!e.isProtectedSystemGameObject(o)});return to(CA({...t,targetIds:r,isProtectedDuplicateSource:n=>e.isProtectedSystemGameObject(n)}))},createPlacedAssetPatch(t){return to(aS(t))}}}function _S(e,t){let r=Zn(e),n=new Map(e.scene.gameObjects.map(i=>[i.id,i])),o=[];for(let i of r){let a=n.get(i.id)??null;o.push(t.decorateHierarchyItem?.({item:i,gameObject:a,document:e})??i),a&&o.push(...t.collectHierarchyItemChildren?.({item:i,gameObject:a,document:e})??[])}return o}function UL(e,t,r){if(t.placement==="root")return r.resolveRootContainerId(e);if(t.placement==="inside"&&t.targetId)return t.targetId;let n=t.targetId?r.findGameObject(e,t.targetId):null;return t.parentId??n?.parentId??r.resolveRootContainerId(e)}function VL(e,t,r){let n=t?r.findGameObject(e,t):null;return n&&$r(n)?n.id:r.resolveRootContainerId(e)}function to(e){return e?{...e,patch:e.patch}:null}function jS(e,t){let r=t.ensureGameObjectGuids(e),n=t.resolveRootContainerId(r),o=!1,i=!1,a=!1,s=r!==e,c=t.ensureDefaultMaterialAssets(r.scene.materialAssets??[]);s=s||c!==r.scene.materialAssets;let d=r.scene.gameObjects.map(g=>{if(g.id===t.systemDefaults.environmentLightId){i=!0;let S=t.systemDefaults.normalizeEnvironmentLightGameObject(g);return s=s||S!==g,S}if(g.id===t.systemDefaults.sunLightId){a=!0;let S=t.systemDefaults.normalizeSunLightGameObject(g);return s=s||S!==g,S}if(t.isCameraGameObject(g)){if(!o){o=!0;let S=t.systemDefaults.normalizeCameraGameObject(g);return s=s||S!==g,S}return s=!0,t.systemDefaults.normalizePlainTransformGameObject(g)}if(t.isLightGameObject(g)){let S=t.systemDefaults.normalizePlainTransformGameObject(g);return s=!0,S}if(!t.isCustomTransformType?.(g.transformType)&&HL(g)){let S=t.systemDefaults.normalizePlainTransformGameObject(g);return s=s||S!==g,S}return g}),u={createGameObjectGuid:t.createGameObjectGuid,createUniqueId:t.createUniqueId},l=new Set(d.map(g=>g.id));o||(s=!0,d.push(t.systemDefaults.createDefaultCameraGameObject(n,l,u))),i||(s=!0,d.push(t.systemDefaults.createDefaultEnvironmentLightGameObject(n,l,u))),a||(s=!0,d.push(t.systemDefaults.createDefaultSunLightGameObject(n,l,u)));let m=t.reconcileMaterialSlotReimportBindings({...r,scene:{...r.scene,gameObjects:d,materialAssets:c}},d);d=m.gameObjects,s=s||m.changed;let p=t.ensureImportedMaterialDefaults(r,c,d);c=p.materialAssets,d=p.gameObjects,s=s||p.changed;let f=s?{...r,scene:{...r.scene,gameObjects:d,materialAssets:c}}:r;return t.syncMarkerGraphDocument(f)}function HL(e){return(e.kind==="transform"||e.transformType==="plain")&&!e.camera&&!e.light&&!e.primitive&&!e.prefab&&!e.marker&&!e.components.some(t=>t.type==="ModelRenderer"||t.type==="ImageRenderer")}function GS(e,t,r){let n=r.normalizeRootTransformDocument(KL(e,t,r));return r.syncMarkerGraphDocument(r.ensureGameObjectGuids(r.normalizeDocumentAfterCommand(n,t)))}function _u(e){return{normalizeFieldValue:e.normalizeFieldValue,validateField:({document:t,gameObject:r,path:n,value:o})=>e.validateField(t,r,n,o),blockFieldPatch:({document:t,targetId:r,path:n,value:o})=>Nu(t,r,n,o,e),normalizePrimitiveShape:e.normalizePrimitiveShape,mergeCameraDefaults:e.systemDefaults.mergeCameraDefaults,normalizeCameraAfterFieldPatch:(t,r)=>t&&e.systemDefaults.normalizeCameraAfterFieldPatch(t,r),mergeLightDefaults:e.systemDefaults.mergeLightDefaults,isCustomTransformType:e.isCustomTransformType,applyCustomTransformType:e.applyCustomTransformType,clearCustomTransformState:e.clearCustomTransformState,patchCustomTransformField:e.patchCustomTransformField}}function LS(e,t,r,n,o){let i=o.findGameObject(e,t);if(!i)return e;let a=FT(i,{...r===o.systemDefaults.horizontalLightAnglePath?{horizontalAngleDeg:n}:{},...r===o.systemDefaults.elevationLightAnglePath?{elevationAngleDeg:n}:{}});return a===i?e:{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.map(s=>s.id===t?a:s)}}}function Nu(e,t,r,n,o){let i=o.findGameObject(e,t);if(!i)return!1;let a=o.isCameraGameObject(i),s=o.isLightGameObject(i),c=o.isProtectedSystemGameObject(i);if(r.startsWith("transform.")&&c||r.startsWith("camera.")&&!a)return!0;if(r.startsWith("camera.")&&a){let d={camera:o.systemDefaults.mergeCameraDefaults(i.camera)};if(lt(d,r,n),d.camera&&(d.camera=o.systemDefaults.normalizeCameraAfterFieldPatch(d.camera,r),o.systemDefaults.hasInvalidCameraRelationships(d.camera)))return!0}return!!(r.startsWith("light.")&&!s||r==="light.type"&&(i.id===o.systemDefaults.environmentLightId&&n!=="hemispheric"||i.id===o.systemDefaults.sunLightId&&n!=="directional")||r==="transformType"&&(a&&n!=="camera"||s&&n!=="light"||!s&&n==="light"||n==="camera"&&!a&&o.hasCamera(e,t)))}function KL(e,t,r){let n=t.type==="document.replace"?null:t.patch;if(n){if(n.kind==="scene.shadow-map-experiment.profiles"){let i={...e.scene.shadowMapExperiment??{}};Object.prototype.hasOwnProperty.call(n,"qualityProfile")&&(typeof n.qualityProfile=="string"?i.qualityProfile=n.qualityProfile:delete i.qualityProfile),Object.prototype.hasOwnProperty.call(n,"behaviorProfile")&&(typeof n.behaviorProfile=="string"?i.behaviorProfile=n.behaviorProfile:delete i.behaviorProfile);try{Object.keys(i).length>0&&dc(i)}catch{return e}if(JSON.stringify(i)===JSON.stringify(e.scene.shadowMapExperiment??{}))return e;let a={...e.scene};return Object.keys(i).length>0?a.shadowMapExperiment=i:delete a.shadowMapExperiment,{...e,scene:a}}if(n.kind==="scene.material-asset.field")return r.patchMaterialAssetField(e,n.materialAssetId,n.path,n.value);if(n.kind==="scene.material-asset.replace")return r.replaceMaterialAsset(e,n.materialAssetId,n.materialAsset);if(n.kind==="scene.material-asset.create")return r.addMaterialAsset(e,n.materialAsset);if(n.kind==="scene.material-asset.delete")return r.deleteMaterialAsset(e,n.materialAssetId);if(n.kind==="scene.material-asset.duplicate-and-bind")return r.addMaterialAssetAndBind(e,n.targetId,n.bindingPath,n.materialAsset);if(n.kind==="scene.prefab-asset.create")return r.addPrefabAsset(e,n.prefabAsset,n.sourceAsset);if(n.kind==="scene.prefab-asset.create-from-game-object"||n.kind==="scene.prefab-asset.duplicate")return r.addPrefabAsset(e,n.prefabAsset);if(n.kind==="scene.prefab-asset.field")return r.patchPrefabAssetField(e,n.assetId,n.path,n.value);if(n.kind==="scene.prefab-asset.replace")return r.replacePrefabAsset(e,n.assetId,n.prefabAsset,n.sourceAsset);if(n.kind==="scene.prefab-material-asset.duplicate-and-bind")return r.addMaterialAssetAndBindPrefabOverride(e,n.assetId,n.bindingPath,n.materialAsset);let o=r.reduceExtensionPatch?.({document:e,patch:n,command:t});if(o)return o;if(n.kind==="game-object.field"&&r.isDirectionalLightAnglePath(n.path)||n.kind==="game-object.field"&&r.isCustomFieldPatchPath?.(n.path))return r.patchGameObjectField(e,n.targetId,n.path,n.value);if(n.kind==="game-object.rendering-alpha-index-migration")return qL(e,n);if(n.kind==="scene.marker-graph")return r.reduceMarkerGraphPatch(e,n.command)}return ES(e,t,WL(r))}function WL(e){return{field:_u(e),serializedProperty:{validateField:e.validateSerializedPropertyField},assetPlacement:{createGameObjectGuid:e.createGameObjectGuid,resolveLocalTransform:({document:t,parentId:r,worldTransform:n})=>e.resolveLocalTransform({document:t,parentId:r,worldTransform:n})},isProtectedDuplicateSource:t=>e.isProtectedSystemGameObject(t),isProtectedDeleteTarget:t=>e.isProtectedSystemGameObject(t)}}function qL(e,t){return iS({document:e,targetIds:t.targetIds,renderingGroupId:t.renderingGroupId,fromAlphaIndex:t.fromAlphaIndex,toAlphaIndex:t.toAlphaIndex})}function LA(e){let t=dr(e.shaderId);if(!t)throw new Error(`Unknown built-in material shader: ${String(e.shaderId)}`);return t.runtimeKind}function Yc(e,t=[]){return e?.system?.readonly===!0||e?.system?.preset==="default-pbr"||e?.system?.preset==="default-standard"||!!e&&t.includes(e.id)}function YL(e){let t=structuredClone(e??{});return Wi(t.baseColor,"texture"),t.baseColor&&Object.keys(t.baseColor).length===0&&delete t.baseColor,Wi(t.normal,"texture"),t.normal&&Object.keys(t.normal).length===0&&delete t.normal,Wi(t.metallicRoughness,"texture"),t.metallicRoughness&&Object.keys(t.metallicRoughness).length===0&&delete t.metallicRoughness,Wi(t.occlusion,"texture"),t.occlusion&&Object.keys(t.occlusion).length===0&&delete t.occlusion,t.emission&&(Wi(t.emission,"texture"),Wi(t.emission,"maskTexture"),Object.keys(t.emission).length===0&&delete t.emission),Wi(t.alpha,"texture"),t.alpha&&Object.keys(t.alpha).length===0&&delete t.alpha,t}function Wi(e,t){if(!e)return;let r=e,n=r[t];if(n===null||!n||typeof n!="object"||Array.isArray(n))return;let o=n,i=typeof o.url=="string"?o.url.trim():"",a=typeof o.textureAssetId=="string"?o.textureAssetId.trim():"";i?o.url=i:delete o.url,a?o.textureAssetId=a:delete o.textureAssetId,Object.keys(o).length===0&&delete r[t]}function FA(e,t,r,n){if(e.system?.readonly===!0)return e;let o=mr(t,r);if(!qn(t,o,e.shaderId,n))return e;let i=structuredClone(e);if(t==="name")return typeof o!="string"?e:(i.name=o.trim(),i.name===e.name?e:i);if(!t.startsWith("properties."))return e;let a=t.slice(11);return!a||(i.properties=structuredClone(i.properties),JL(i.properties,a,o)||lt(i.properties,a,o),dr(i.shaderId)&&(i.properties=YL(i.properties)),Gl(i.shaderId,i.properties,"properties",n).length>0)||JSON.stringify(i)===JSON.stringify(e)?e:i}function JL(e,t,r){let n=t.endsWith(".textureAssetId")?"textureAssetId":t.endsWith(".url")?"url":null;if(!n)return!1;let o=t.slice(0,-`.${n}`.length);if(!o.endsWith(".texture")&&!o.endsWith(".maskTexture"))return!1;let i=o.split(".").filter(Boolean);if(i.length<2)return!1;let a=i[i.length-1],s=e;for(let u of i.slice(0,-1)){let l=s[u];if(!l||typeof l!="object"||Array.isArray(l)){if(r==null)return!0;let m={};s[u]=m,s=m;continue}s=l}if(r==null)return s[a]=null,!0;let c=s[a],d=c&&typeof c=="object"&&!Array.isArray(c)?{...c}:{};return d[n]=r,delete d[n==="url"?"textureAssetId":"url"],s[a]=d,!0}var qi="mat_default_pbr",ns="mat_default_standard",XL="00000000-0000-4000-8000-000000000001",QL="00000000-0000-4000-8000-000000000002",Vo=qi,$A={id:qi,guid:XL,name:"Default PBR Material",shaderId:"fps.builtin.pbr",system:{readonly:!0,preset:"default-pbr"},origin:{type:"preset"},properties:Uf("fps.builtin.pbr")},ZL={id:ns,guid:QL,name:"Default Standard Material",shaderId:"fps.builtin.standard",system:{readonly:!0,preset:"default-standard"},origin:{type:"preset"},properties:Uf("fps.builtin.standard")};function eF(){return structuredClone($A)}function tF(){return structuredClone(ZL)}function BA(e){let t=[eF(),tF()],r=new Set(t.map(o=>o.id)),n=[...t,...e.filter(o=>!r.has(o.id))];return JSON.stringify(n)===JSON.stringify(e)?e:n}function zA(e){return e?.system?.preset==="default-pbr"||e?.id===qi?"default-pbr":e?.system?.preset==="default-standard"||e?.id===ns?"default-standard":null}function UA(e){let t=e.sourceAsset.guid??e.sourceAsset.id,r=eT(`imported:${t}:${e.sourceMaterialIndex}`),n=Jc(e.slot,e.sourceMaterialIndex)??`${e.sourceAsset.displayName??e.sourceAsset.id} Material ${e.sourceMaterialIndex+1}`,o=HA(e.slot,e.sourceMaterialIndex)?.profile;return{id:wi(r),guid:r,name:n,shaderId:"fps.builtin.pbr",origin:{type:"imported",sourceAssetGuid:t,sourceAssetId:e.sourceAsset.id,...e.slot.slotId?{sourceSlotId:e.slot.slotId}:{},sourceMaterialIndex:e.sourceMaterialIndex,sourceMaterialName:n},properties:rF(o)}}function rF(e){let t=structuredClone($A.properties);if(!e||typeof e!="object")return t;let r={...t,...structuredClone(e)};return r.baseColor={...t.baseColor??{},...e.baseColor??{}},(t.normal||e.normal)&&(r.normal={...t.normal??{},...e.normal??{}}),(t.metallicRoughness||e.metallicRoughness)&&(r.metallicRoughness={...t.metallicRoughness??{},...e.metallicRoughness??{}}),(t.occlusion||e.occlusion)&&(r.occlusion={...t.occlusion??{},...e.occlusion??{}}),r.emission={...t.emission??{},...e.emission??{}},(t.alpha||e.alpha)&&(r.alpha={...t.alpha??{},...e.alpha??{}}),r}function VA(e,t){if(e.origin?.type!=="imported"||t.origin?.type!=="imported")return e;let r=e;for(let n of[["baseColor","texture"],["normal","texture"],["metallicRoughness","texture"],["occlusion","texture"],["emission","texture"],["emission","maskTexture"],["alpha","texture"]]){let o=e.properties[n[0]],i=t.properties[n[0]],a=o?.[n[1]],s=i?.[n[1]];if(a===null)continue;let c=typeof a?.textureAssetId=="string"&&a.textureAssetId.trim()||typeof a?.url=="string"&&a.url.trim(),d=typeof s?.textureAssetId=="string"&&s.textureAssetId.trim()||typeof s?.url=="string"&&s.url.trim();if(c||!d)continue;r===e&&(r=structuredClone(e));let u=r.properties;u[n[0]]=u[n[0]]??{},u[n[0]][n[1]]=structuredClone(s)}return r}function Jc(e,t){let r=[...new Set(e.sourceSurfaces.map(s=>s.sourceMaterialIndex).filter(s=>Number.isInteger(s)))],n=e.materialNames??[],o=r.findIndex(s=>s===t),i=o>=0?n[o]??(r.length===1?e.materialName:null):null;if(typeof i=="string"&&i.trim())return i.trim();let a=HA(e,t)?.materialName;return typeof a=="string"&&a.trim()?a.trim():null}function HA(e,t){return e.sourceMaterialProfiles?.find(r=>r.sourceMaterialIndex===t)??null}var nF="New Material",KA=[qi,ns];function WA(e,t,r=`${t.displayName} Material`){let n=YA(e);return{id:wi(n),guid:n,name:iF(e,r),shaderId:t.shaderId,origin:{type:"created"},properties:structuredClone(t.defaultProperties)}}function oF(e,t,r){let n=t.name?.trim()||t.id,o=r.name?.trim()||r.id,i=YA(e);return{id:wi(i),guid:i,name:`${n} - ${o}`,shaderId:r.shaderId,origin:{type:"duplicated",sourceMaterialAssetId:r.id},properties:structuredClone(r.properties)}}function qA(e,t,r){let n=t.trim(),o=e.scene.materialAssets?.findIndex(s=>s.id===n)??-1;if(o<0||r.id!==n)return e;let i=e.scene.materialAssets[o];if(JSON.stringify(i)===JSON.stringify(r))return e;let a=[...e.scene.materialAssets];return a[o]=structuredClone(r),{...e,scene:{...e.scene,materialAssets:a}}}function YA(e){let t=new Set((e.scene.materialAssets??[]).map(o=>o.id)),r=pg(),n=wi(r);for(;t.has(n);)r=pg(),n=wi(r);return r}function iF(e,t){let r=mr("name",t),n=typeof r=="string"&&qn("name",r)?r:nF,o=new Set((e.scene.materialAssets??[]).map(s=>s.name?.trim()).filter(s=>!!s).map(s=>s.toLocaleLowerCase()));if(!o.has(n.toLocaleLowerCase()))return n;let i=2,a=`${n} ${i}`;for(;o.has(a.toLocaleLowerCase());)i+=1,a=`${n} ${i}`;return a}function JA(e){let t=Le(e.document,e.sourceMaterialAssetId);if(!t||e.isBindingPathAllowed&&!e.isBindingPathAllowed(e.bindingPath))return null;let r=oF(e.document,e.gameObject,t);return{patch:{kind:"scene.material-asset.duplicate-and-bind",targetId:e.gameObject.id,bindingPath:e.bindingPath,materialAsset:r},changedId:e.gameObject.id,changedIds:[e.gameObject.id],createdId:r.id,reprojectIds:[e.gameObject.id]}}function FS(e,t,r,n,o){let i=e.scene.materialAssets??[],a=!1,s=i.map(c=>{if(c.id!==t)return c;let d=FA(c,r,mr(r,n),o);return a=a||d!==c,d});return a?{...e,scene:{...e.scene,materialAssets:s}}:e}function aF(e,t,r=[]){let n=Le(e,t),o=Sg(e,t);return n?Yc(n,r)?{ok:!1,reason:"readonly",materialAsset:n,usages:o}:o.length>0?{ok:!1,reason:"in-use",materialAsset:n,usages:o}:{ok:!0,materialAsset:n,usages:o}:{ok:!1,reason:"missing",usages:o}}function sF(e,t,r=[]){return aF(e,t,r).ok?{...e,scene:{...e.scene,materialAssets:(e.scene.materialAssets??[]).filter(o=>o.id!==t)}}:e}function $S(e){return Yc(e,KA)}function XA(e,t){return sF(e,t,KA)}function ju(e,t){return hn(e,t.id)?e:{...e,scene:{...e.scene,materialAssets:[...e.scene.materialAssets??[],structuredClone(t)]}}}function QA(e,t,r,n){return hn(e,n.id)?e:cF({...e,scene:{...e.scene,materialAssets:[...e.scene.materialAssets??[],structuredClone(n)]}},t,r,n.id)}function cF(e,t,r,n){return{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.map(o=>{if(o.id!==t)return o;let i=structuredClone(o);return dF(i,r,n),i})}}}function dF(e,t,r){let n=lF(t)??t.split(".").filter(Boolean);if(n.some(uF))return;let o=e;for(let a of n.slice(0,-1)){let s=o[a];(!s||typeof s!="object"||Array.isArray(s))&&(o[a]={}),o=o[a]}let i=n[n.length-1];i&&(r==null?delete o[i]:o[i]=structuredClone(r))}function lF(e){let t=Sn(e,"materialAssetId");return t?["overrides","materialSlotBindings",t,"materialAssetId"]:null}function uF(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function os(e,t){let r=e.path,n=t.normalizeValue(r,e.value),o=t.parseMaterialAssetFieldPath(r);if(o){let l=t.normalizeMaterialAssetValue(o.fieldPath,n);if(!t.hasMaterialAsset(e.document,o.materialAssetId)||!t.validateMaterialAssetFieldValue(e.document,o.materialAssetId,o.fieldPath,l))return null;let m=t.collectMaterialAssetBindingIds(e.document,o.materialAssetId);return{label:`Patch material asset ${o.materialAssetId} ${o.fieldPath}`,patch:t.createMaterialAssetFieldPatch(o.materialAssetId,o.fieldPath,l),changedId:m[0]??e.targetId,changedIds:m,...o.fieldPath.startsWith("properties.")?{reprojectIds:m}:{}}}let i=t.findGameObject(e.document,e.targetId);if(!i)return null;let a=i.id,s=t.parseDuplicateMaterialAssetValue(n);if(s&&t.isMaterialBindingPath(r))return mF(e.document,i,r,s,t);if(t.isRootTransformPath(a,r))return null;if(r==="marker.target.objectId"&&t.isMarkerGameObject(i)&&typeof n=="string"){let l=t.createMarkerTargetUpdateCommand(e.document,a,n);return l?ZA(a,"marker.target",l,t):null}if(!t.validateValue(e.document,i,r,n).ok||t.blockFieldPatch(e.document,a,r,n))return null;if(r==="marker.type"&&t.isMarkerGameObject(i)&&typeof n=="string"){let l=t.createMarkerTypeUpdateCommand(e.document,a,n);return l?ZA(a,"marker.type",l,t):null}if(t.isDirectionalLightAnglePath(r)&&typeof n=="number"&&Number.isFinite(n))return{label:`Patch ${a} ${r}`,patch:t.createDirectionalLightPatch(a,r,n),changedId:a,changedIds:[a],reprojectIds:[a]};let c=t.createCustomInspectorPropertyPatch?.({...e,gameObject:i,path:r,value:n});if(c)return c;let d=t.collectChangedIdsForFieldPath(e.document,a,r),u=t.isProjectionShapePath(r)||t.isArtistMaterialPatchPath(r)||t.isCustomProjectionPath?.(r)?[a]:void 0;return{label:`Patch ${a} ${r}`,patch:t.createGameObjectFieldPatch(a,r,n),changedId:a,changedIds:d,...u?{reprojectIds:u}:{}}}function Gu(e,t,r,n,o){let i=o.patchCustomGameObjectField?.({document:e,targetId:t,path:r,value:n});if(i)return i;if(r.startsWith("metadata.")||o.isDirectionalLightAnglePath(r)){let s=o.findGameObject(e,t);if(!s)return e;let c=o.normalizeValue(r,n);return!o.validateValue(e,s,r,c).ok||o.blockFieldPatch(e,t,r,c)?e:o.isDirectionalLightAnglePath(r)&&typeof c=="number"&&Number.isFinite(c)?o.patchDirectionalLightAngleField(e,t,r,c):pF(e,t,r,c,o)}let a=Vi(e,t,r,n,o.fieldMutationOptions);return o.normalizeAfterFieldPatch(a,t,r,n)}function ex(e,t,r,n,o){let i=Array.from(new Set(t.filter(Boolean)));if(i.length===0)return e;let a=o.patchCustomGameObjectsField?.({document:e,targetIds:i,path:r,value:n,patchSingle:(c,d,u,l)=>Gu(c,d,u,l,o)});if(a)return a;if(r.startsWith("metadata."))return fF(e,i,r,n,o);if(o.isDirectionalLightAnglePath(r))return i.reduce((c,d)=>Gu(c,d,r,n,o),e);let s=Uc(e,i,r,n,o.fieldMutationOptions);return i.reduce((c,d)=>o.normalizeAfterFieldPatch(c,d,r,n),s)}function ZA(e,t,r,n){return{label:`Patch ${e} ${t}`,patch:n.createMarkerGraphPatch(r),changedId:e,changedIds:[e],reprojectIds:[e]}}function mF(e,t,r,n,o){let i=JA({document:e,gameObject:t,bindingPath:r,sourceMaterialAssetId:n,isBindingPathAllowed:s=>o.isMaterialBindingPathAllowed(t,s)});return i?{label:`Duplicate material ${o.findMaterialAssetName(e,n)??n} for ${t.name??t.id}`,patch:i.patch,changedId:i.changedId,changedIds:i.changedIds,createdId:i.createdId,reprojectIds:i.reprojectIds}:null}function pF(e,t,r,n,o){return{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.map(i=>{if(i.id!==t)return i;let a=structuredClone(i);return lt(a,r,n),a.metadata&&Object.keys(a.metadata).length===0&&delete a.metadata,a})}}}function fF(e,t,r,n,o){let i=new Set(t),a=o.normalizeValue(r,n),s=!1,c=e.scene.gameObjects.map(d=>{if(!i.has(d.id))return d;let u=d;if(!o.validateValue(e,u,r,a).ok||o.blockFieldPatch(e,d.id,r,a))return d;let l=structuredClone(d);return lt(l,r,a),l.metadata&&Object.keys(l.metadata).length===0&&delete l.metadata,s=!0,l});return s?{...e,scene:{...e.scene,gameObjects:c}}:e}function rx(e){return{applySerializedPropertyPatch(t,r){if(e.isRootTransformPath(r.targetId,r.path))return t;let n={...r,value:$i(r.path,r.value)};return Vc({document:t,patch:n,validateField:e.validateSerializedPropertyField})},canCreateSerializedMultiPropertyPatch(t){return tx({document:t.document,targetIds:t.targetIds,activeId:t.activeId,path:t.path,value:e.getSerializedMultiPropertyProbeValue(t.path),services:e}).length>0},createSerializedMultiPropertyPatch(t){if(!e.isSerializedMultiFieldPath(t.path))return null;let r=$i(t.path,t.value),n=tx({...t,value:r,services:e});return n.length===0?null:{label:`Patch ${n.length} GameObjects ${t.path}`,patch:e.createFieldBatchPatch(n.map(o=>({targetId:o,path:t.path,value:r}))),changedIds:n,...e.isSerializedMultiProjectionPath(t.path)?{reprojectIds:n}:{}}}}}function tx(e){return e.services.isSerializedMultiFieldPath(e.path)?e.targetIds.filter(t=>{let r=e.services.findGameObject(e.document,t);return e.services.canPatchCustomSerializedMultiField?.({document:e.document,targetId:t,path:e.path,value:e.value})===!1||e.services.isSerializedMultiProjectionPath(e.path)&&(!r||e.services.isCameraGameObject(r)||e.services.isLightGameObject(r))?!1:!!e.services.createInspectorPropertyPatch({document:e.document,targetId:t,path:e.path,value:e.value})}):[]}var gF=/^transform(?:\.(position|rotation|scale)(?:\.(x|y|z))?)?$/,SF=/^transform\.(position|rotation|scale)$/,hF=/^transform\.(position|rotation|scale)\.(x|y|z)$/;function Vi(e,t,r,n,o={}){return yF({document:e,targetId:t,path:r,value:n,options:o})}function Uc(e,t,r,n,o={}){let i=new Set(t.filter(Boolean));if(i.size===0)return e;let a=o.normalizeFieldValue?.(r,n)??n,s=!1,c=e.scene.gameObjects.map(d=>{if(!i.has(d.id)||BS(d.id,r))return d;let u=d;if(o.validateField?.({document:e,gameObject:u,path:r,value:a})?.ok===!1||o.blockFieldPatch?.({document:e,gameObject:u,targetId:d.id,path:r,value:a}))return d;let l=TS(u,r,a,o);return l===d?d:(s=!0,l)});return s?{...e,scene:{...e.scene,gameObjects:c}}:e}function IS(e,t,r={}){let n=new Map;for(let a of t){if(!a.objectId||a.changes.length===0)continue;let s=n.get(a.objectId)??[];s.push(...a.changes),n.set(a.objectId,s)}if(n.size===0)return e;let o=!1,i=e.scene.gameObjects.map(a=>{let s=n.get(a.id);if(!s?.length)return a;let c;for(let d of s){if(BS(a.id,d.path))continue;let u=r.normalizeFieldValue?.(d.path,d.value)??d.value;r.validateField?.({document:e,gameObject:c??a,path:d.path,value:u})?.ok!==!1&&(r.blockFieldPatch?.({document:e,gameObject:c??a,targetId:a.id,path:d.path,value:u})||(c??=structuredClone(a),c=ax(c,d.path,u,r,!0)))}return!c||JSON.stringify(c)===JSON.stringify(a)?a:(o=!0,c)});return o?{...e,scene:{...e.scene,gameObjects:i}}:e}function yF(e){if(BS(e.targetId,e.path))return e.document;let t=ie(e.document,e.targetId);if(!t)return e.document;let r=e.options?.normalizeFieldValue?.(e.path,e.value)??e.value;if(e.options?.validateField?.({document:e.document,gameObject:t,path:e.path,value:r})?.ok===!1||e.options?.blockFieldPatch?.({document:e.document,gameObject:t,targetId:e.targetId,path:e.path,value:r}))return e.document;let n=TS(t,e.path,r,e.options);return n===t?e.document:{...e.document,scene:{...e.document.scene,gameObjects:e.document.scene.gameObjects.map(o=>o.id===e.targetId?n:o)}}}function TS(e,t,r,n={}){let o=ax(e,t,r,n);return JSON.stringify(o)===JSON.stringify(e)?e:o}function ax(e,t,r,n,o=!1){let i=o?e:structuredClone(e),a=t.startsWith("transform.rotation")?nx(i):null,s=t==="light.direction"||t.startsWith("light.direction.")?ox(i):null;if(t==="name")return typeof r=="string"&&r.trim()?i.name=r.trim():delete i.name,i;if(t==="enabled")return i.active=r!==!1,i;if(t.startsWith("shadow."))return bF(i,t,r),i;if(t.startsWith("shadowMapExperiment."))return PF(i,t,r),i;if(t.startsWith("rendering.")){he(i)==="group"&&(i.kind="instance");let c=xF(t,r);return lt(i,t,c),MF(i),i}if(t.startsWith("metadata."))return lt(i,t,r),i.metadata&&Object.keys(i.metadata).length===0&&delete i.metadata,i;if(t==="instance.assetId"){let c=Fe(i);return c&&typeof r=="string"&&(c.assetId=r),i.kind="instance",delete i.primitive,i}if(t==="primitive.shape"){let c=(n.normalizePrimitiveShape??CF)(r);return c&&(i.kind="primitive",i.primitive={shape:c}),i}if(t==="transformType")return DF(i,r,n),i;if(RF(i,t,r)){let c=a?nx(i):null;return a&&c&&!ix(a,c)?Wa(i):i}if(n.patchCustomTransformField?.(i,t,r))return i;if(t.startsWith("marker."))return!i.marker||typeof i.marker!="object"||(i.kind="transform",delete i.primitive,lt(i,t,r)),i;if(t.startsWith("camera."))return i.kind="transform",i.transformType="camera",i.camera=sx(i.camera,n),delete i.light,n.clearCustomTransformState?.(i,"camera"),delete i.primitive,lt(i,t,r),i.camera=OF(i.camera,t,n),i;if(t.startsWith("light.")){i.kind="transform",i.transformType="light",i.light=cx(i.light,n),delete i.camera,n.clearCustomTransformState?.(i,"light"),delete i.primitive,lt(i,t,r),(t==="light.direction"||t.startsWith("light.direction."))&&i.light?.type==="directional"&&(i.light.direction=kc(i.light.direction,s??void 0));let c=s?ox(i):null;return s&&c&&!ix(s,c)?uu(i):i}return t.startsWith("overrides.")&&(he(i)==="group"&&(i.kind="instance"),lt(i,t,r),oS(i)),i}function nx(e){let t=Q(e);return t&&!St(t)?{...t.rotation}:null}function ox(e){return e.light?.type==="directional"?{...e.light.direction}:null}function ix(e,t,r=1e-6){return Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r}function bF(e,t,r){if(!EF(t,r))return;let n=IF(t,r);lt(e,t,n),TF(e)}function EF(e,t){return t==null?!0:e==="shadow.cast"?Na(t):e==="shadow.receive"?ja(t):e==="shadow.mode"?Ga(t):e==="shadow.quality"?La(t):e==="shadow.light.mode"?Fa(t):e==="shadow.light.lightId"?typeof t=="string":e==="shadow.params.opacity"?Ci(t):e==="shadow.params.softness"?fn(t):e==="shadow.params.bias"||e==="shadow.params.normalBias"?V(t):e==="shadow.params.resolution"?t===512||t===1024||t===2048||t===4096:e==="shadow.params.cascadeCount"?t===1||t===2||t===4:e==="shadow.params.maxDistance"||e==="shadow.params.bakeSamples"?Gt(t):e==="shadow.params.blurKernel"?fn(t):!1}function IF(e,t){if((e==="shadow.cast"||e==="shadow.receive")&&(t==="inherit"||t==="auto"))return null;if(e==="shadow.light.lightId"&&typeof t=="string"){let r=t.trim();return r||null}return t}function TF(e){let t=e.shadow;if(!t||typeof t!="object"||Array.isArray(t)){delete e.shadow;return}let r=t,n=r.light;n&&typeof n=="object"&&!Array.isArray(n)&&Object.keys(n).length===0&&delete r.light;let o=r.params;o&&typeof o=="object"&&!Array.isArray(o)&&Object.keys(o).length===0&&delete r.params,Object.keys(r).length===0&&delete e.shadow}function PF(e,t,r){if(!AF(t,r))return;lt(e,t,r);let n=e.shadowMapExperiment;(!n||typeof n!="object"||Object.keys(n).length===0)&&delete e.shadowMapExperiment}function AF(e,t){return e!=="shadowMapExperiment.behaviorProfile"?!1:t==null||typeof t=="string"&&t.trim().length>0&&t===t.trim()}function xF(e,t){return e==="rendering.renderingGroupId"?t===1||t===2||t===3?t:0:e==="rendering.alphaIndex"?V(t)?t:null:t}function MF(e){let t=e.rendering;if(!t||typeof t!="object"||Array.isArray(t)){delete e.rendering;return}Object.keys(t).length===0&&delete e.rendering}function BS(e,t){return nt(e)&&gF.test(t)}function DF(e,t,r){let n=t==="plain"||t==="light"||t==="camera",o=!n&&r.isCustomTransformType?.(t)===!0;if(!n&&!o)return;let i=t;e.kind="transform",e.transformType=i,delete e.primitive,i==="camera"?e.camera=sx(e.camera,r):delete e.camera,i==="light"?e.light=cx(e.light,r):delete e.light,o?r.applyCustomTransformType?.(e,i):r.clearCustomTransformState?.(e,i)}function RF(e,t,r){let n=t.match(SF);if(n){let i=Q(e);if(!i||St(i))return!0;let a=n[1];return a==="scale"?(V(r)?i.scale={x:r,y:r,z:r}:Wt(r)&&(i.scale={...r}),!0):(Wt(r)&&(i[a]=a==="rotation"?{x:En(r.x),y:En(r.y),z:En(r.z)}:{...r}),!0)}let o=t.match(hF);if(o&&V(r)){let i=Q(e);if(!i||St(i))return!0;let a=o[1],s=o[2],c=a==="rotation"?En(r):r;return a==="scale"?i.scale={...pr(i,"scale"),[s]:c}:i[a]={...i[a],[s]:c},!0}return!1}function sx(e,t){return t.mergeCameraDefaults?t.mergeCameraDefaults(e):dx(e)}function OF(e,t,r){return r.normalizeCameraAfterFieldPatch?r.normalizeCameraAfterFieldPatch(e,t):e}function cx(e,t){return t.mergeLightDefaults?t.mergeLightDefaults(e):dx(e)}function CF(e){return e==="cube"||e==="sphere"||e==="plane"||e==="capsule"?e:null}function dx(e){return wF(e)??{}}function wF(e){return e&&typeof e=="object"&&!Array.isArray(e)?structuredClone(e):null}var mx=["position","rotation","scale"],px=["x","y","z"],vF=1e-6,fx=[{label:"Inherit",value:"inherit"},{label:"On",value:"enabled"},{label:"Off",value:"none"}],gx=[{label:"Inherit",value:"inherit"},{label:"On",value:"enabled"},{label:"Off",value:"none"}],Sx=[{label:"No Shadow",value:"none"},{label:"Dynamic Shadow Map",value:"dynamic"},{label:"Blob Shadow",value:"blob"},{label:"Projected Shadow",value:"projected"}],hx=[{label:"High Performance",value:"low"},{label:"Balanced",value:"medium"},{label:"High Quality",value:"high"}];function zS(e){let t=[{path:"gameObject.id",label:"ID",valueType:"string",readOnly:!0,getValue:()=>e.gameObject.id},{path:"gameObject.name",label:"Name",valueType:"string",readOnly:!0,getValue:()=>e.gameObject.name??e.gameObject.id}],r=Q(e.gameObject);if(r){let o=we(e.gameObject),i=o?Nr():Eu(r)?r:null;if(!i)return t;for(let a of mx)for(let s of px)t.push(NF({gameObject:e.gameObject,vectorName:a,axis:s,rootTransform:o,displayTransform:i,validateField:e.validateField}))}let n=Fe(e.gameObject);return n&&t.push({path:"modelRenderer.assetId",label:"Asset ID",valueType:"asset",readOnly:!0,getValue:()=>n.assetId}),Ex(e.gameObject)&&t.push(...kF({gameObject:e.gameObject,validateField:e.validateField})),t}function yx(e){let t=[];for(let r of mx)for(let n of px){let o=e.map(d=>{let u=Q(d);return u&&!St(u)?pr(u,r)[n]:null}).filter(d=>typeof d=="number");if(o.length!==e.length)continue;let i=r==="rotation"?o.map(Fr):o,a=i[0]??0,s=i.some(d=>Math.abs(d-a)>vF),c=`transform.${r}.${n}`;t.push({path:c,label:`${r}.${n}`,valueType:"number",value:fr(a),mixed:s,readOnly:!1,descriptor:{path:c,valueType:"number",getValue:()=>a}})}return t}function Lu(e){if(e.length===0)return[];let t=e.map(n=>n.active!==!1),r=t[0]??!0;return[{path:"enabled",label:"Enabled",valueType:"boolean",value:r,mixed:t.some(n=>n!==r),readOnly:!1,descriptor:{path:"enabled",label:"Enabled",valueType:"boolean",getValue:()=>r}}]}function Zc(e){return e.length===0||e.some(r=>!Ex(r))?[]:[Qc(e,{path:"shadow.cast",label:"Caster",valueType:"enum",defaultValue:"inherit",options:fx}),Qc(e,{path:"shadow.receive",label:"Receiver",valueType:"enum",defaultValue:"inherit",options:gx}),Qc(e,{path:"shadow.mode",label:"Policy",valueType:"enum",defaultValue:"none",options:Sx}),Qc(e,{path:"shadow.quality",label:"Quality",valueType:"enum",defaultValue:"medium",options:hx}),...[]]}function kF(e){let t=[Xc({...e,path:"shadow.cast",label:"Caster",valueType:"enum",options:fx,defaultValue:"inherit"}),Xc({...e,path:"shadow.receive",label:"Receiver",valueType:"enum",options:gx,defaultValue:"inherit"}),Xc({...e,path:"shadow.mode",label:"Policy",valueType:"enum",options:Sx,defaultValue:"none"}),Xc({...e,path:"shadow.quality",label:"Quality",valueType:"enum",options:hx,defaultValue:"medium"})];if(!1)for(let[r,n]of[["shadow.params.opacity","Opacity"],["shadow.params.softness","Softness"],["shadow.params.bias","Bias"],["shadow.params.normalBias","Normal Bias"],["shadow.params.maxDistance","Max Distance"],["shadow.params.resolution","Resolution"],["shadow.params.cascadeCount","Cascade Count"],["shadow.params.bakeSamples","Bake Samples"],["shadow.params.blurKernel","Blur Kernel"]])t.push(Xc({...e,path:r,label:n,valueType:"number",defaultValue:null}));return t}function Xc(e){return{path:e.path,label:e.label,valueType:e.valueType,...e.options?{options:e.options}:{},getValue:()=>bx(e.gameObject,e.path,e.defaultValue),setValue:(t,r,n)=>{if(!n.targetId)return t;let o=$i(e.path,r),i=e.validateField?.({document:t,gameObject:e.gameObject,nodeKind:he(e.gameObject),path:e.path,value:o});return i&&!i.ok?t:Vi(t,n.targetId,e.path,o)}}}function Qc(e,t){let r=e.map(o=>bx(o,t.path,t.defaultValue)),n=r[0]??t.defaultValue;return{path:t.path,label:t.label,valueType:t.valueType,value:n,mixed:r.some(o=>o!==n),readOnly:!1,...t.options?{options:t.options}:{},descriptor:{path:t.path,label:t.label,valueType:t.valueType,...t.options?{options:t.options}:{},getValue:()=>n}}}function bx(e,t,r){let n=_F(e);if(t==="shadow.cast")return lx(n.cast);if(t==="shadow.receive")return lx(n.receive);if(t==="shadow.mode")return n.mode==="dynamic"||n.mode==="blob"||n.mode==="projected"||n.mode==="none"?n.mode:r;if(t==="shadow.quality")return n.quality==="low"||n.quality==="medium"||n.quality==="high"?n.quality:r;if(t==="shadow.light.mode")return n.light?.mode??r;if(t==="shadow.light.lightId")return n.light?.lightId??r;if(t.startsWith("shadow.params.")){let o=t.slice(14);return n.params?.[o]??r}return r}function lx(e){return e==="enabled"?"enabled":e==="none"?"none":"inherit"}function _F(e){return ct(e.shadow).shadow??{}}function Ex(e){if(we(e)||e.transformType==="camera"||e.transformType==="light"||e.camera||e.light)return!1;let t=he(e);return t==="instance"||t==="primitive"||t==="transform"}function NF(e){return{path:`transform.${e.vectorName}.${e.axis}`,label:`${e.vectorName}.${e.axis}`,valueType:"number",readOnly:e.rootTransform,getValue:()=>{let r=pr(e.displayTransform,e.vectorName)[e.axis];return e.vectorName==="rotation"?fr(Fr(r)):r},...e.rootTransform?{}:{setValue:(r,n,o)=>jF({document:r,targetId:o.targetId,vectorName:e.vectorName,axis:e.axis,value:n,validateField:e.validateField})}}}function jF(e){let t=Number(e.value);if(!e.targetId||!Number.isFinite(t))return e.document;let r=ie(e.document,e.targetId),n=r?Q(r):null;if(!r||!n||St(n))return e.document;let o=`transform.${e.vectorName}.${e.axis}`,i=e.validateField?.({document:e.document,gameObject:r,nodeKind:he(r),path:o,value:t});if(i&&!i.ok)return e.document;let a=e.vectorName==="rotation"?En(t):t,s=e.vectorName==="position"?{...n.position,[e.axis]:a}:n.position,c=e.vectorName==="rotation"?{...n.rotation,[e.axis]:a}:n.rotation,d=e.vectorName==="scale"?{...pr(n,"scale"),[e.axis]:a}:pr(n,"scale");return GF(e.document,e.targetId,{position:s,rotation:c,scale:d})}function GF(e,t,r){return{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.map(n=>n.id===t?Vg(n,r):n)}}}function Ix(e){let t=new Map(e.document.scene.gameObjects.map(o=>[o.id,o])),r=e.targetIds.map(o=>t.get(o)??null).filter(o=>!!o&&!we(o));if(r.length===0)return null;let n=r.map(o=>o.id);return{targetIds:n,activeId:e.activeId&&n.includes(e.activeId)?e.activeId:n[0]??null,label:e.label??`${r.length} GameObjects`,properties:[...Lu(r),...yx(r),...Zc(r)]}}var VS="enabled",Tx="shadow.",Px=200;function KS(e){let t=LF(e.document,e.selectedIds);if(t.length===0)return null;let r=t.map(l=>l.id),n=e.activeId&&r.includes(e.activeId)?e.activeId:r[0]??null,o=e.largeSelectionThreshold??Px,i=FF(t),a=Zc(i),s=t.length>o,c=s?$F({document:e.document,gameObjects:t,shadowGameObjects:i,activeId:n,label:e.label}):Ix({document:e.document,targetIds:r,activeId:n,label:e.label});if(!c)return null;let d=c.properties.some(l=>xx(l.path))||a.length===0?c:{...c,properties:[...c.properties,...a]},u=Ax({document:e.document,serialized:d,shadowOnly:s});return u.length===0?null:{targetIds:d.targetIds,activeId:d.activeId,label:d.label,document:e.document,selection:{targetIds:d.targetIds,activeId:d.activeId,document:e.document},sections:u}}function Ax(e){let t=BF(e.document,e.serialized,e.serialized.properties.filter(n=>xx(n.path))),r=US("common","Common",10,e.serialized.properties.filter(n=>n.path===VS),e.document);return e.shadowOnly?[r,t].filter(n=>!!n):[r,US("transform","Transform",20,e.serialized.properties.filter(n=>n.path.startsWith("transform.")),e.document),t,US("properties","Properties",90,e.serialized.properties.filter(n=>!n.path.startsWith("transform.")&&n.path!==VS&&!n.path.startsWith(Tx)),e.document)].filter(n=>!!n)}function LF(e,t){let r=new Map(e.scene.gameObjects.map(i=>[i.id,i])),n=new Set,o=[];for(let i of t){if(!i||n.has(i))continue;n.add(i);let a=r.get(i);a&&(we(a)||o.push(a))}return o}function FF(e){return e.filter(t=>Za({gameObject:t,nodeKind:he(t)}))}function $F(e){if(e.gameObjects.length===0)return null;let t=e.shadowGameObjects.length===0?[]:Zc(e.shadowGameObjects);return{targetIds:e.gameObjects.map(r=>r.id),activeId:e.activeId,label:e.label??`${e.gameObjects.length} GameObjects`,properties:[...Lu(e.gameObjects),...t]}}function BF(e,t,r){if(r.length===0)return null;let n=new Map(e.scene.gameObjects.map(S=>[S.id,S])),o=t.targetIds.map(S=>n.get(S)).filter(S=>!!S).filter(S=>Za({gameObject:S,nodeKind:he(S)})),i=n.get(t.activeId??"")??o[0]??null,a=i&&Za({gameObject:i,nodeKind:he(i)})?i:o[0]??null;if(!a)return null;let s=he(a),c=r.find(S=>S.path==="shadow.cast"),d=r.find(S=>S.path==="shadow.receive");if(!c||!d)return null;let u=HS(c,0),l=HS(d,1),m=Bo(u.value),p=Bo(l.value),f=Fi({path:c.path,nodeKind:s,document:e}),g=Fi({path:d.path,nodeKind:s,document:e});return{id:"shadow",title:"\u9634\u5F71",order:25,placement:"body",persistence:"document",collapsedByDefault:!1,properties:[{...u,label:"\u6295\u5C04\u9634\u5F71",control:"boolean",value:m.value,mixed:u.mixed===!0||m.mixed,options:void 0,coerce:zo,tooltip:"\u7EE7\u627F\u65F6\u4F7F\u7528\u4E0A\u5C42\u6216\u9879\u76EE\u9ED8\u8BA4\uFF1B\u5F00\u542F\u540E\u6240\u9009\u7269\u4F53\u6295\u5C04\u9634\u5F71\uFF1B\u5173\u95ED\u540E\u6240\u9009\u7269\u4F53\u4E0D\u8FDB\u5165\u9634\u5F71\u6295\u5C04\u5019\u9009\u96C6\u3002",validate:f},{...l,label:"\u63A5\u6536\u9634\u5F71",control:"boolean",value:p.value,mixed:l.mixed===!0||p.mixed,options:void 0,coerce:zo,tooltip:"\u7EE7\u627F\u65F6\u4F7F\u7528\u4E0A\u5C42\u6216\u9879\u76EE\u9ED8\u8BA4\uFF1B\u5F00\u542F\u540E\u6240\u9009\u7269\u4F53\u63A5\u6536\u9634\u5F71\uFF1B\u5173\u95ED\u540E\u6750\u8D28\u4E0D\u91C7\u6837\u9634\u5F71\u7ED3\u679C\u3002",validate:g}]}}function xx(e){return e.startsWith(Tx)}function US(e,t,r,n,o){return n.length===0?null:{id:e,title:t,order:r,placement:"body",persistence:"document",properties:n.map((i,a)=>{let s=HS(i,a),c=zF(o,i.path);return{...s,step:i.valueType==="number"?i.path.startsWith("transform.rotation.")?1:.1:s.step,validate:c?Fi({path:i.path,nodeKind:c,document:o}):s.validate}})}}function HS(e,t){let r=e.readOnly===!0;return{path:e.path,label:e.label,valueType:e.valueType,control:r?"readonly":UF(e.valueType),value:e.value,options:e.options,mixed:e.mixed,readOnly:r,persistence:r?"readonly":"document",commitMode:VF(e.valueType),order:t,source:e}}function zF(e,t){if(t.startsWith("transform."))return"transform";if(t===VS){let r=e.scene.gameObjects.find(n=>!we(n));return r?he(r):null}return null}function UF(e){return e==="string"||e==="number"||e==="boolean"||e==="enum"||e==="asset"||e==="object"?e:"readonly"}function VF(e){return e==="number"?"live":e==="boolean"||e==="enum"||e==="asset"?"immediate":"blur"}var HF=/^transform\.(position|rotation|scale)\.(x|y|z)$/;function Vc(e){if(nt(e.patch.targetId)&&HF.test(e.patch.path))return e.document;let t=ie(e.document,e.patch.targetId);if(!t)return e.document;let r=e.patch.path.startsWith("transform.rotation")?Mx(t):null,n=e.patch.path.startsWith("light.direction")?Dx(t):null,o=UI(e.document,zS({gameObject:t,validateField:e.validateField}),e.patch);if(!e.patch.path.startsWith("transform.rotation")&&!e.patch.path.startsWith("light.direction"))return o;let i=ie(o,e.patch.targetId);if(!i)return o;let a=r?Mx(i):null,s=n?Dx(i):null,c=r&&a&&!Rx(r,a),d=n&&s&&!Rx(n,s);return!c&&!d?o:{...o,scene:{...o.scene,gameObjects:o.scene.gameObjects.map(u=>{if(u.id!==e.patch.targetId)return u;let l=c?Wa(u):u;return d?uu(l):l})}}}function Mx(e){let t=Q(e);return t&&"rotation"in t?t.rotation:null}function Dx(e){return e.light?.type==="directional"?e.light.direction:null}function Rx(e,t,r=1e-6){return Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r}function qS(e){let t=e.findGameObject(e.document,e.targetId);if(!t)return null;let r=e.isMarkerGameObject(t);return{targetIds:[t.id],activeId:t.id,label:t.name??t.id,document:e.document,selection:{targetIds:[t.id],activeId:t.id,scopeType:"scene",targetKind:r?"marker":e.readNodeKind(t),...r?{capabilities:["markerGraph"]}:{},document:e.document},sections:e.createInspectorSections(e.document,t,e.context)}}function YS(e){let t=KS({document:e.document,selectedIds:e.selectedIds,activeId:e.activeId}),r=t?{...t,selection:{...t.selection,scopeType:"scene"}}:null;if(!e.extraSection)return r;if(!r){let n=e.resolveFallbackTargetIds(),o=e.activeId&&n.includes(e.activeId)?e.activeId:n[0]??null;return{targetIds:n,activeId:o,label:e.formatFallbackLabel(n),document:e.document,selection:{targetIds:n,activeId:o,scopeType:"scene",targetKind:e.fallbackSelectionKind??"object",document:e.document},sections:[e.extraSection]}}return{...r,sections:[...r.sections.filter(n=>n.id!==e.extraSection.id),e.extraSection].sort((n,o)=>(n.order??0)-(o.order??0))}}function JS(e){let t=[...e.createBaseSections()],r=e.isCameraGameObject(e.gameObject),n=e.isLightGameObject(e.gameObject),o=e.isMarkerGameObject(e.gameObject),i=e.nodeKind==="transform";return WS(t,e.createCustomSections?.({document:e.document,gameObject:e.gameObject,context:e.context,nodeKind:e.nodeKind,isCamera:r,isLight:n,isMarker:o})),ed(t,i&&r?e.createCameraSection?.():null),WS(t,i&&n?e.createLightSections?.():null),ed(t,i&&o?e.createMarkerSection?.():null),ed(t,e.createPrefabInstanceSection?.()),(e.isMaterialInspectorCandidate?.({nodeKind:e.nodeKind,gameObject:e.gameObject,isCamera:r,isLight:n,isMarker:o})??(e.nodeKind==="instance"||e.nodeKind==="primitive"||i&&!r&&!n&&!o))&&(WS(t,e.createMaterialSections?.()),ed(t,e.createOutlineSection?.())),t.sort((s,c)=>(s.order??0)-(c.order??0))}function ed(e,t){t&&e.push(t)}function WS(e,t){if(t)for(let r of t)ed(e,r)}function XS(e){let t=e.outline,r=t?"active":"default",n=r==="default"?Ox:void 0;return{id:"outline",title:"Outline",order:60,placement:"body",summary:t?"Configured":"Defaults",persistence:r==="default"?"readonly":"document",effect:r,disabledReason:n,collapsedByDefault:!0,properties:WF(KF(e),r,n)}}var Ox="Outline fields are showing defaults; configure an outline override before edits affect this object.";function KF(e){let t=e.outline,r=[e.createDocumentInspectorProperty(null,e.nodeKind,{path:"overrides.outline.renderOutline",label:"Render Outline",valueType:"boolean",control:"boolean",value:t?.renderOutline??!1,commitMode:"immediate",order:0}),e.createDocumentInspectorProperty(null,e.nodeKind,{path:"overrides.outline.outlineWidth",label:"Width",valueType:"number",control:"number",value:t?.outlineWidth??.04,commitMode:"live",order:1,min:0,step:.005,displayPrecision:3,precision:3,stepPrecision:.001}),e.createDocumentInspectorProperty(null,e.nodeKind,{path:"overrides.outline.outlineColor",label:"Color",valueType:"color",control:"color",value:t?.outlineColor??{r:.03,g:.03,b:.03},commitMode:"immediate",order:2})],n=X({path:"overrides.outline.raw",label:"Raw Override",value:t??"not configured",order:r.length,source:"Document",tags:["Raw"]});return n&&r.push(n),r}function WF(e,t,r){return!t||t==="active"?e:e.map(n=>({...n,readOnly:!0,persistence:n.persistence==="runtime"?"runtime":"readonly",control:n.control==="custom"?n.control:"readonly",effect:n.effect??t,disabledReason:n.disabledReason??r}))}var qF={title:"\u6807\u8BB0",typeLabel:"\u6807\u8BB0\u7C7B\u578B",kindLabel:"\u7A7A\u95F4\u7C7B\u522B",tagsLabel:"\u6807\u7B7E",colorLabel:"\u989C\u8272",noteLabel:"\u5907\u6CE8",geometryLabel:"\u51E0\u4F55",targetLabel:"\u7ED1\u5B9A\u5BF9\u8C61",targetStatusLabel:"\u7ED1\u5B9A\u72B6\u6001",emptyTypeOption:"\u672A\u9009\u62E9",emptyTargetOption:"\u672A\u7ED1\u5B9A",tagsPlaceholder:"\u6807\u7B7E, \u53E6\u4E00\u4E2A\u6807\u7B7E",notePlaceholder:"\u53EF\u9009\u6807\u8BB0\u5907\u6CE8",unselectedSummary:"\u672A\u9009\u62E9",missingTargetPrefix:"\u7F3A\u5931",missingTargetStatus:"\u76EE\u6807\u7F3A\u5931",targetStatusUnbound:"\u672A\u7ED1\u5B9A",targetStatusOk:"\u6B63\u5E38",unsupportedTargetPrefix:"\u4E0D\u652F\u6301\u76EE\u6807"},YF={region:"\u533A\u57DF",point:"\u70B9",anchor:"\u951A\u70B9",object:"\u5BF9\u8C61\u7ED1\u5B9A"},JF={box:"\u76D2\u4F53",point:"\u70B9","object-bounds":"\u5BF9\u8C61\u5305\u56F4\u76D2",polyhedron:"\u591A\u9762\u4F53"};function th(e){let t={...qF,...e.text},r=e.gameObject.marker,n=e.resolveMarkerKind(e.document,r),o=XF(e.markerTypeCatalog,r.type,t,e.formatMarkerTypeLabel),i=r$(r),a=i?.kind==="scene-object"?i.id:"",s=QF(e.document,e.gameObject.id,a,e.isMarkerGameObject,t),c=[e.createDocumentInspectorProperty(e.document,e.nodeKind,{path:"marker.type",label:t.typeLabel,valueType:"enum",control:o.length>0?"enum":"string",value:r.type,options:o.length>0?o:void 0,commitMode:"change",order:0}),ZS("marker.kind",t.kindLabel,e$(n,e.formatMarkerKindLabel),1),e.createDocumentInspectorProperty(e.document,e.nodeKind,{path:"marker.tags",label:t.tagsLabel,valueType:"string",control:"string",value:r.tags?.join(", ")??"",commitMode:"blur",placeholder:t.tagsPlaceholder,order:2}),e.createDocumentInspectorProperty(e.document,e.nodeKind,{path:"marker.color",label:t.colorLabel,valueType:"color",control:"color",value:r.color??{r:.1,g:.85,b:1},commitMode:"immediate",order:3}),e.createDocumentInspectorProperty(e.document,e.nodeKind,{path:"marker.note",label:t.noteLabel,valueType:"string",control:"string",value:r.note??"",commitMode:"blur",placeholder:t.notePlaceholder,order:4}),ZS("marker.geometry.kind",t.geometryLabel,t$(r.geometry.kind,e.formatMarkerGeometryKindLabel),5),e.createDocumentInspectorProperty(e.document,e.nodeKind,{path:"marker.target.objectId",label:t.targetLabel,valueType:"enum",control:"enum",value:a,options:s,commitMode:"change",order:6}),ZS("marker.target.status",t.targetStatusLabel,n$(e.document,i,t),7)];return{id:"marker",title:t.title,order:35,placement:"body",persistence:"document",summary:ZF(e.markerTypeCatalog,r.type,t,e.formatMarkerTypeLabel),collapsedByDefault:!1,properties:c}}function XF(e,t,r,n){let o=[{label:r.emptyTypeOption,value:""},...e.map(i=>({label:eh(i.type,i.label||i.type,n),value:i.type}))];return t&&!o.some(i=>i.value===t)&&o.push({label:eh(t,t,n),value:t}),o}function QF(e,t,r,n,o){let i=[{label:o.emptyTargetOption,value:""},...e.scene.gameObjects.filter(a=>a.id!==t&&!n(a)).map(a=>({label:a.name||a.id,value:a.id}))];return r&&!i.some(a=>a.value===r)&&i.push({label:`${o.missingTargetPrefix}: ${r}`,value:r}),i}function ZF(e,t,r,n){if(!t.trim())return r.unselectedSummary;let o=e.find(i=>i.type===t);return eh(t,o?.label||t,n)}function eh(e,t,r){return r?.(e,t)??t}function e$(e,t){return t?.(e)??YF[e]??e}function t$(e,t){return t?.(e)??JF[e]??e}function r$(e){return e.target?QS(e.target):e.geometry.kind==="point"&&e.geometry.target||e.geometry.kind==="object-bounds"?QS(e.geometry.target):null}function n$(e,t,r){return t?t.kind!=="scene-object"?`${r.unsupportedTargetPrefix}: ${t.kind}`:e.scene.gameObjects.some(n=>n.id===t.id)?r.targetStatusOk:r.missingTargetStatus:r.targetStatusUnbound}function QS(e){return{...e,...e.metadata?{metadata:{...e.metadata}}:{}}}function ZS(e,t,r,n){return X({path:e,label:t,value:r,order:n,source:"Document"})}var td={r:1,g:1,b:1,a:1};function o$(e){return{...e}}function kx(e){let t=o$(e);return{services:t,normalizeLayoutPatchValue:r=>Vu(r,t),isLayoutPatchCompatibleWithDecal:(r,n)=>Fx(r,n,t),canPatchMultiField:(r,n,o,i)=>d$(r,n,o,i,t),patchLayout:(r,n,o)=>l$(r,n,o,t),patchKind:(r,n,o)=>u$(r,n,o,t),patchInspectorField:(r,n,o,i)=>m$(r,n,o,i,t),normalizeGameObject:r=>Yi(r,t),replaceUi:(r,n,o)=>f$(r,n,o,t),normalizeScaleAfterFieldPatch:(r,n,o,i)=>Fu(r,n,o,i,t),normalizeScalesForCommand:(r,n)=>g$(r,n,t),normalizeScales:(r,n,o)=>Uu(r,t,n,o),mergeDefaults:r=>yr(r,t.createDefaultGroundDecal,t)}}function _x(e){return{...e.policy,createDocumentInspectorProperty:e.createDocumentInspectorProperty,normalizeValue:e.normalizeValue,findTarget:e.findTarget,getTargetId:e.getTargetId,getTargetNodeKind:e.getTargetNodeKind,getTargetGroundDecal:e.getTargetGroundDecal,canShowTarget:e.canShowTarget,isUiTarget:e.isUiTarget,canPatchMultiField:e.canPatchMultiField,findTextureAsset:e.findTextureAsset,resolveTextureAssetUrl:e.resolveTextureAssetUrl,getMaterialText:e.getMaterialText,createTexturePickerControlOptions:e.createTexturePickerControlOptions}}var i$=75;function rh(e,t){if(e==="transform.scale"){let r=t;return!r||typeof r!="object"?null:Bx({x:typeof r.x=="number"?r.x:1,y:typeof r.y=="number"?r.y:1,z:typeof r.z=="number"?r.z:1})}return!/^transform\.scale\.(x|y|z)$/.test(e)||typeof t!="number"||!Number.isFinite(t)?null:Math.max(.001,Math.abs(t))}function Vu(e,t={}){let r=sd(e),n=Array.isArray(e)?e:r&&Array.isArray(r.layers)?r.layers:null;if(!n)return null;let o=n.map((i,a)=>a$(i,a,t)).filter(i=>!!i);return o.length>0?o:null}function a$(e,t,r={}){let n=sd(e);if(!n)return null;let o=$$(n.id)??`layer_${t}`,i=as(n.rect),a=n.fontSize==null?null:$u(n.fontSize),s=n.rotationDeg==null?null:cs(n.rotationDeg);return!i||n.fontSize!=null&&a==null||n.rotationDeg!=null&&s==null?null:{id:o,rect:i,...s==null?{}:{rotationDeg:s},...a==null?{}:{fontSize:Ho(a)}}}function as(e){let t=sd(e);if(!t)return null;let r=An(t.x),n=An(t.z),o=$u(t.width),i=$u(t.depth);return r==null||n==null||o==null||i==null?null:{x:r,z:n,width:o,depth:i}}function An(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function $u(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:null}function Nx(e,t){if(e==="groundDecal.editorPreviewActive")return typeof t=="boolean"?{ok:!0,value:t}:{ok:!1,message:`Invalid value for scene node field: ${e}.`};if(Hu(e))return as(t)?{ok:!0,value:t}:{ok:!1,message:`Invalid value for scene node field: ${e}.`};if(jx(e)){let r=cs(t);return r!==null?{ok:!0,value:r}:{ok:!1,message:`Invalid value for scene node field: ${e}.`}}if(Ku(e))return typeof t=="string"?{ok:!0,value:t.trim()}:{ok:!1,message:`Invalid value for scene node field: ${e}.`};if(Yu(e))return typeof t=="string"?{ok:!0,value:t}:{ok:!1,message:`Invalid value for scene node field: ${e}.`};if(Gx(e)){let r=oh(t);return r!==null?{ok:!0,value:r}:{ok:!1,message:`Invalid value for scene node field: ${e}.`}}if(Wu(e)||Qu(e)||Ju(e)){let r=rd(t);return r?{ok:!0,value:r}:{ok:!1,message:`Invalid value for scene node field: ${e}.`}}if(qu(e)||Zu(e)||Xu(e)){let r=nd(t);return r!==null?{ok:!0,value:r}:{ok:!1,message:`Invalid value for scene node field: ${e}.`}}if(em(e)){let r=nh(t);return r!==null?{ok:!0,value:r}:{ok:!1,message:`Invalid value for scene node field: ${e}.`}}if(Ko(e)){let r=ad(t);return r!==null?{ok:!0,value:r}:{ok:!1,message:`Invalid value for scene node field: ${e}.`}}return null}function od(e){let t=e.match(/^groundDecal\.layers\.(\d+)\.(rect|rotationDeg|textureId|text\.value|text\.fontSize|color|color\.a|tint|tint\.a|text\.color|text\.color\.a|editorPreviewPercent)$/);if(!t)return null;let r=Number(t[1]);return!Number.isInteger(r)||r<0?null:{index:r,field:t[2]}}function Hu(e){return/^groundDecal\.layers\.\d+\.rect$/.test(e)}function jx(e){return/^groundDecal\.layers\.\d+\.rotationDeg$/.test(e)}function Ku(e){return/^groundDecal\.layers\.\d+\.textureId$/.test(e)}function Wu(e){return/^groundDecal\.layers\.\d+\.color$/.test(e)}function qu(e){return/^groundDecal\.layers\.\d+\.color\.a$/.test(e)}function Yu(e){return/^groundDecal\.layers\.\d+\.text\.value$/.test(e)}function Gx(e){return/^groundDecal\.layers\.\d+\.text\.fontSize$/.test(e)}function Ju(e){return/^groundDecal\.layers\.\d+\.text\.color$/.test(e)}function Xu(e){return/^groundDecal\.layers\.\d+\.text\.color\.a$/.test(e)}function Qu(e){return/^groundDecal\.layers\.\d+\.tint$/.test(e)}function Zu(e){return/^groundDecal\.layers\.\d+\.tint\.a$/.test(e)}function em(e){return/^groundDecal\.layers\.\d+\.editorPreviewPercent$/.test(e)}function Ko(e){return e==="groundDecal.rendering.textureWidth"||e==="groundDecal.rendering.textureHeight"}function tm(e){return e==="groundDecal.editorPreviewActive"||e==="groundDecal.layers"||!!od(e)||Ko(e)}function id(e){return e==="groundDecal.size.width"||e==="groundDecal.size.depth"||e==="groundDecal.editorPreviewActive"||e==="groundDecal.layers"||tm(e)}function s$(e,t,r={}){return t==="rect"?ss(e,r):t==="rotationDeg"?nm(e,r):t==="textureId"||t==="tint"||t==="tint.a"?Bu(e,r):t==="text.value"||t==="text.fontSize"||t==="text.color"||t==="text.color.a"?Lx(e,r):t==="color"||t==="color.a"?zu(e,r):t==="editorPreviewPercent"?e.kind==="textureProgress"?Bu(e,r):e.kind==="progress"&&zu(e,r):!1}function rm(e,t={}){return t.isProjectEditableLayer?.(e)??e.enabled!==!1}function ss(e,t={}){return t.isLayoutEditableLayer?.(e)??e.enabled!==!1}function nm(e,t={}){return t.isRotationEditableLayer?.(e)??!1}function Bu(e,t={}){return t.isEditableTextureLayer?.(e)??(e.kind==="texture"||e.kind==="textureProgress")}function zu(e,t={}){return t.isEditableColorLayer?.(e)??(e.kind==="color"||e.kind==="progress")}function Lx(e,t={}){return t.isEditableTextLayer?.(e)??e.kind==="text"}function Fx(e,t,r={}){let n=e.layers.filter(o=>ss(o,r));return t.length!==n.length?!1:n.every((o,i)=>{let a=t[i];return a?.id===o.id&&(a.fontSize==null||o.kind==="text")&&(a.rotationDeg==null||nm(o,r))})}function rd(e){let t=sd(e);if(!t)return null;let r=An(t.r),n=An(t.g),o=An(t.b);if(r==null||n==null||o==null)return null;let i=An(t.a);return{r:Ho(Math.max(0,Math.min(1,r))),g:Ho(Math.max(0,Math.min(1,n))),b:Ho(Math.max(0,Math.min(1,o))),...i==null?{}:{a:Ho(Math.max(0,Math.min(1,i)))}}}function nd(e){let t=An(e);return t==null?null:Ho(Math.max(0,Math.min(1,t)))}function nh(e){let t=An(e);return t==null?null:Math.round(Math.max(0,Math.min(100,t)))}function cs(e){let t=An(e);if(t==null)return null;let r=t%360;r>180&&(r-=360),r<=-180&&(r+=360);let n=Ho(r);return Object.is(n,-0)?0:n}function oh(e){let t=$u(e);return t==null?null:Ho(t)}function ad(e){let t=An(e);return t==null||t<=0?null:Math.max(64,Math.min(2048,Math.round(t)))}function Ho(e){return Math.round(e*1e3)/1e3}function om(e,t){return e==="groundDecal.editorPreviewActive"?t===!0:e==="groundDecal.layers"?Vu(t)??t:Hu(e)?as(t)??t:jx(e)?cs(t)??t:Ku(e)&&typeof t=="string"?t.trim():Yu(e)&&typeof t=="string"?t:Gx(e)?oh(t)??t:Wu(e)||Qu(e)||Ju(e)?rd(t)??t:qu(e)||Zu(e)||Xu(e)?nd(t)??t:em(e)?nh(t)??t:Ko(e)?ad(t)??t:t}function $x(e,t,r){if(t==="rect"){let n=as(r);return n?c$(e.rect,n)?e:{...e,rect:n}:null}if(t==="rotationDeg"){let n=cs(r);if(n==null)return null;if(n===0){if(e.rotationDeg==null)return e;let{rotationDeg:o,...i}=e;return i}return e.rotationDeg===n?e:{...e,rotationDeg:n}}if(t==="textureId"){if(e.kind!=="texture"&&e.kind!=="textureProgress"||typeof r!="string")return null;let n=r.trim();if(!n){if(!e.textureId)return e;let{textureId:o,...i}=e;return i}return e.textureId===n?e:{...e,textureId:n}}if(t==="text.value")return e.kind!=="text"||typeof r!="string"?null:e.text.value===r?e:{...e,text:{...e.text,value:r}};if(t==="text.fontSize"){if(e.kind!=="text")return null;let n=oh(r);return n==null?null:e.text.fontSize===n?e:{...e,text:{...e.text,fontSize:n}}}if(t==="color"){if(e.kind!=="color"&&e.kind!=="progress")return null;let n=rd(r);if(!n)return null;let o={...n,...n.a==null&&e.color.a!=null?{a:e.color.a}:{}};return is(e.color,o)?e:{...e,color:o}}if(t==="color.a"){if(e.kind!=="color"&&e.kind!=="progress")return null;let n=nd(r);if(n===null)return null;let o={...e.color,a:n};return is(e.color,o)?e:{...e,color:o}}if(t==="editorPreviewPercent"){if(e.kind!=="progress"&&e.kind!=="textureProgress")return null;let n=nh(r);return n===null?null:e.editorPreviewPercent===n?e:{...e,editorPreviewPercent:n}}if(t==="tint"){if(e.kind!=="texture"&&e.kind!=="textureProgress")return null;let n=rd(r);if(!n)return null;let o={...n,...n.a==null&&e.tint?.a!=null?{a:e.tint.a}:{}};return is(e.tint??td,o)?e:{...e,tint:o}}if(t==="tint.a"){if(e.kind!=="texture"&&e.kind!=="textureProgress")return null;let n=nd(r);if(n===null)return null;let o={...td,...e.tint??{},a:n};return is(e.tint??td,o)?e:{...e,tint:o}}if(t==="text.color"){if(e.kind!=="text")return null;let n=rd(r);if(!n)return null;let o={...n,...n.a==null&&e.text.color.a!=null?{a:e.text.color.a}:{}};return is(e.text.color,o)?e:{...e,text:{...e.text,color:o}}}if(t==="text.color.a"){if(e.kind!=="text")return null;let n=nd(r);if(n===null)return null;let o={...e.text.color,a:n};return is(e.text.color,o)?e:{...e,text:{...e.text,color:o}}}return null}function yr(e,t,r={}){let n=e&&typeof e=="object"&&!Array.isArray(e)?e:null,o=typeof n?.uiKind=="string"?n.uiKind.trim():"",i=o&&(r.isKnownUiKind?.(o)??!0)?o:r.defaultUiKind??"default",a=t(i);return n?{...a,...structuredClone(n),uiKind:i,size:{...a.size,...n.size&&typeof n.size=="object"?n.size:{}},layers:Array.isArray(n.layers)&&n.layers.length>0?structuredClone(n.layers):a.layers,mask:n.mask&&typeof n.mask=="object"?{...a.mask??{},...n.mask}:a.mask,rendering:n.rendering&&typeof n.rendering=="object"?{...a.rendering??{},...n.rendering}:a.rendering}:a}function is(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&(e.a??1)===(t.a??1)}function c$(e,t){return e.x===t.x&&e.z===t.z&&e.width===t.width&&e.depth===t.depth}function Bx(e){let t=[e.x,e.y,e.z].filter(n=>Number.isFinite(n));if(t.length===0)return 1;let r=t.reduce((n,o)=>Math.abs(o-1)>Math.abs(n-1)?o:n,t[0]);return Math.max(.001,Math.abs(r))}function d$(e,t,r,n,o){if(!id(r))return!1;let i=I$(e,t);if(!i||!o.canShowGroundDecalInspector(i))return!1;let a=yr(i.groundDecal,o.createDefaultGroundDecal,o);if(r==="groundDecal.size.width"||r==="groundDecal.size.depth"||Ko(r)||r==="groundDecal.editorPreviewActive")return!0;if(r==="groundDecal.layers"){let d=Vu(n,o);return d?Fx(a,d,o):!1}let s=od(r);if(!s)return!1;let c=a.layers[s.index];return!!c&&rm(c,o)&&s$(c,s.field,o)}function l$(e,t,r,n){let o=Vu(r,n);return o?Ux(e,i=>i.id===t?S$(i,o,n):i):e}function u$(e,t,r,n){if(typeof r!="string"||!r.trim())return e;let o=r.trim();return n.isKnownUiKind&&!n.isKnownUiKind(o)?e:Ux(e,i=>i.id===t?h$(i,o,n):i)}function m$(e,t,r,n,o){if(r==="groundDecal.editorPreviewActive"){if(typeof n!="boolean")return e;let d=!1,u=e.scene.gameObjects.map(l=>{if(l.id!==t||!o.canShowGroundDecalInspector(l))return l;let m=yr(l.groundDecal,o.createDefaultGroundDecal,o);return m.editorPreviewActive===n?l:(d=!0,Yi({...l,groundDecal:{...m,editorPreviewActive:n}},o))});return d?{...e,scene:{...e.scene,gameObjects:u}}:e}if(Ko(r))return p$(e,t,r,n,o);let i=od(r);if(!i)return null;let a=!1,s=om(r,n),c=e.scene.gameObjects.map(d=>{if(d.id!==t||!o.canShowGroundDecalInspector(d))return d;let u=yr(d.groundDecal,o.createDefaultGroundDecal,o),l=u.layers[i.index];if(!l||!rm(l,o)||i.field==="rect"&&!ss(l,o))return d;let m=$x(l,i.field,s);if(!m||m===l)return d;let p=[...u.layers];return p[i.index]=m,a=!0,Yi({...d,groundDecal:{...u,layers:p}},o)});return a?{...e,scene:{...e.scene,gameObjects:c}}:e}function p$(e,t,r,n,o){let i=ad(n);if(i===null)return e;let a=r==="groundDecal.rendering.textureWidth"?"textureWidth":"textureHeight",s=!1,c=e.scene.gameObjects.map(d=>{if(d.id!==t||!o.canShowGroundDecalInspector(d))return d;let u=yr(d.groundDecal,o.createDefaultGroundDecal,o);return u.rendering?.[a]===i?d:(s=!0,Yi({...d,groundDecal:{...u,rendering:{...u.rendering,[a]:i}}},o))});return s?{...e,scene:{...e.scene,gameObjects:c}}:e}function f$(e,t,r,n){if(!n.isGroundDecalConfig(r))return e;let o=!1,i=e.scene.gameObjects.map(a=>a.id!==t||!n.isGroundDecalUiGameObject(a)||a.groundDecal.uiKind!==r.uiKind?a:(o=!0,Yi({...a,kind:"transform",transformType:"groundDecal",groundDecal:yr(r,n.createDefaultGroundDecal,n)},n)));return o?{...e,scene:{...e.scene,gameObjects:i}}:e}function Fu(e,t,r,n,o){return r.startsWith("transform.scale")?Uu(e,o,t,rh(r,n)):e}function g$(e,t,r){if(t.type==="document.replace")return Uu(e,r);let n=t.patch;return n.kind==="game-object.field"?Fu(e,String(n.targetId??""),String(n.path??""),n.value,r):n.kind==="game-object.property-field-batch"&&Array.isArray(n.fields)?n.fields.reduce((o,i)=>{let a=sd(i);return Fu(o,String(a?.targetId??""),String(a?.path??""),a?.value,r)},e):n.kind==="game-object.field-batch"?Array.isArray(n.targetIds)?n.targetIds.reduce((o,i)=>Fu(o,String(i),String(n.path??""),n.value,r),e):e:Uu(e,r)}function Uu(e,t,r,n){let o=!1,i=e.scene.gameObjects.map(a=>{if(r&&a.id!==r||!t.isGroundDecalUiGameObject(a))return a;let s=Q(a);if(!s||!E$(s)||!s.scale)return a;let c=n??Bx(s.scale);return Math.abs(s.scale.x-c)<1e-6&&Math.abs(s.scale.y-c)<1e-6&&Math.abs(s.scale.z-c)<1e-6?a:(o=!0,{...a,components:a.components.map(d=>d===s?{...d,scale:{x:c,y:c,z:c}}:d)})});return o?{...e,scene:{...e.scene,gameObjects:i}}:e}function Yi(e,t){let r=y$({...e,kind:"transform",transformType:"groundDecal",groundDecal:yr(e.groundDecal,t.createDefaultGroundDecal,t)});return delete r.camera,delete r.light,delete r.primitive,r}function zx(e){return e==="groundDecal"||e.startsWith("groundDecal.")}function S$(e,t,r){let n=new Map(t.map(i=>[i.id,i])),o=yr(e.groundDecal,r.createDefaultGroundDecal,r);return Yi({...e,kind:"transform",transformType:"groundDecal",groundDecal:{...o,layers:o.layers.map((i,a)=>{if(!ss(i,r))return i;let s=n.get(i.id)??t[a];if(!s)return i;let c=i.kind==="text"?{...i.rect,x:s.rect.x,z:s.rect.z}:s.rect,d=i.kind==="text"&&s.fontSize!=null?{...i,rect:c,text:{...i.text,fontSize:s.fontSize}}:{...i,rect:c};return s.rotationDeg!=null&&nm(i,r)&&(d=$x(d,"rotationDeg",s.rotationDeg)??d),d})}},r)}function h$(e,t,r){let n=yr(e.groundDecal,r.createDefaultGroundDecal,r),o=r.createDefaultGroundDecal(t);return Yi({...e,kind:"transform",transformType:"groundDecal",groundDecal:{...o,size:n.size,mask:n.mask??o.mask,rendering:n.rendering??o.rendering}},r)}function y$(e){return e.components.some(t=>t.type==="Transform")?e:{...e,components:[b$(),...e.components]}}function b$(){return{type:"Transform",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}}function E$(e){return e.type==="Transform"&&e.mode!=="matrix"}function I$(e,t){return t?e.scene.gameObjects.find(r=>r.id===t)??null:null}function Ux(e,t){return{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.map(t)}}}function Vx(e,t,r={},n){let o=yr(t,n.createDefaultGroundDecal,n),i=[F$("groundDecal.uiKind","Type",n.createUiKindLabel?.(o.uiKind)??o.uiKind,0),n.createDocumentInspectorProperty(null,e,{path:"groundDecal.size.width",label:"Width",valueType:"number",control:"number",value:o.size.width,commitMode:"live",order:1,min:.001,step:.1,controlOptions:{refreshInspector:!1}}),n.createDocumentInspectorProperty(null,e,{path:"groundDecal.size.depth",label:"Depth",valueType:"number",control:"number",value:o.size.depth,commitMode:"live",order:2,min:.001,step:.1,controlOptions:{refreshInspector:!1}}),n.createDocumentInspectorProperty(null,e,{path:"groundDecal.rendering.textureWidth",label:"Texture Width",valueType:"number",control:"number",value:o.rendering?.textureWidth??512,commitMode:"change",order:3,min:64,max:2048,step:64}),n.createDocumentInspectorProperty(null,e,{path:"groundDecal.rendering.textureHeight",label:"Texture Height",valueType:"number",control:"number",value:o.rendering?.textureHeight??512,commitMode:"change",order:4,min:64,max:2048,step:64}),n.createDocumentInspectorProperty(null,e,{path:"groundDecal.layers",label:"Layout",valueType:"object",control:"custom",customControl:"ground-decal-layout",value:Yx(o,r,n),commitMode:"live",order:5,coerce:s=>n.normalizeValue("groundDecal.layers",s),controlOptions:{aspectRatio:G$(o),aspectRatioUsesDecalSize:j$(o),sizeWidth:o.size.width,sizeDepth:o.size.depth}})],a=10;if((n.canShowActivePreview?.(o)??!1)&&i.push(n.createDocumentInspectorProperty(null,e,{path:"groundDecal.editorPreviewActive",label:"Preview Active Background",valueType:"boolean",control:"boolean",value:o.editorPreviewActive===!0,commitMode:"immediate",order:6,tags:["GroundDecalUI","Preview"],controlOptions:{refreshInspector:!1}})),r.enableGroundDecalUiActions&&(n.canShowLayerPairActions?.(o)??!1)&&n.layerPairActions){let s=n.getLayerPairs?.(o).length??0,c=n.canAddLayerPair?.(o)??!1,d=n.canRemoveLayerPair?.(o)??!1;i.push(vx({path:n.layerPairActions.addPath??"groundDecal.layerPairs.add",label:n.layerPairActions.addLabel??"Add item",actionId:n.layerPairActions.addActionId,order:a,icon:"asset",tooltip:n.layerPairActions.addTooltip??"Add an item.",params:{},disabled:!c,disabledReason:c?void 0:n.createLayerPairDisabledReason?.({decal:o,action:"add",pairCount:s}),effect:c?"active":"unsupported"})),a+=1,i.push(vx({path:n.layerPairActions.removePath??"groundDecal.layerPairs.remove",label:n.layerPairActions.removeLabel??"Remove item",actionId:n.layerPairActions.removeActionId,order:a,icon:"asset",tooltip:n.layerPairActions.removeTooltip??"Remove an item.",params:{},disabled:!d,disabledReason:d?void 0:n.createLayerPairDisabledReason?.({decal:o,action:"remove",pairCount:s}),effect:d?"active":"unsupported"})),a+=1}for(let s=0;s<o.layers.length;s+=1){let c=o.layers[s];if(!c||!rm(c,n))continue;let d=Jx(c,n);if(Bu(c,n)){let u=n.resolveImageFit?.(c)??c.imageFit??"contain",l=w$(e,r,c,s,d,a,n);u!=="stretch"&&o.lockAspectToBorder===!0&&o.aspectSourceLayerId===c.id&&(l.controlOptions={...l.controlOptions,groundDecalAspectSizeWidth:o.size.width,groundDecalAspectSizeDepthPath:"groundDecal.size.depth",groundDecalAspectTextureWidth:o.rendering?.textureWidth??512,groundDecalAspectTextureHeight:o.rendering?.textureHeight??512,groundDecalAspectTextureWidthPath:"groundDecal.rendering.textureWidth",groundDecalAspectTextureHeightPath:"groundDecal.rendering.textureHeight"}),i.push(l),a+=1,i.push(_$(e,c,s,d,a,n)),a+=1}(c.kind==="progress"&&zu(c,n)||c.kind==="textureProgress"&&Bu(c,n))&&(i.push(k$(e,c,s,d,a,n)),a+=1),zu(c,n)&&(i.push(v$(e,c,s,d,a,n)),a+=1),Lx(c,n)&&(i.push(n.createDocumentInspectorProperty(null,e,{path:`groundDecal.layers.${s}.text.value`,label:`${d} Text`,valueType:"string",control:"string",value:c.text.value,commitMode:"blur",order:a,tags:["GroundDecalUI","Text"]})),a+=1,i.push(N$(e,c,s,d,a,n)),a+=1)}return L$(i,{path:"groundDecal.raw",label:"Raw Ground Decal",value:t??o,order:a,source:"Document",tags:["Raw"]}),i}function Hx(e,t,r,n){let o=n.getTargetGroundDecal(e),i=yr(o,n.createDefaultGroundDecal,n),a=Vx(t,i,{...r,enableGroundDecalUiActions:n.isUiTarget?.(e)??!1},n),s=a.find(d=>d.path==="groundDecal.layers");if(!s)throw new Error("Ground Decal Inspector requires the canonical layout property.");let c=a.filter(d=>d!==s).map(d=>({...d,controlOptions:{...d.controlOptions,groundDecalWorkbenchChild:!0}}));return{id:"groundDecal",title:"Ground Decal",order:40,placement:"body",summary:P$(i,n),persistence:"document",collapsedByDefault:!1,properties:[T$(i,[s,...c],n),...c]}}function T$(e,t,r){let n=t.find(i=>i.path==="groundDecal.layers");if(!n||!n.value||typeof n.value!="object"||Array.isArray(n.value))throw new Error("Ground Decal Inspector requires the canonical layout property.");let o={uiKind:e.uiKind,uiKindLabel:r.createUiKindLabel?.(e.uiKind)??e.uiKind,layout:n.value,properties:t.filter(i=>i!==n)};return{...n,label:"Ground Decal Editor",customControl:"ground-decal-workbench",value:o,controlOptions:{...n.controlOptions,refreshInspector:!1}}}function P$(e,t){let r=t.createUiKindLabel?.(e.uiKind)??e.uiKind,n=Math.max(1,Math.round(e.rendering?.textureWidth??512)),o=Math.max(1,Math.round(e.rendering?.textureHeight??512)),i=n===o?`${n}\xB2`:`${n}\xD7${o}`,a=t.canShowLayerPairActions?.(e)??!1?t.getLayerPairs?.(e).length??0:0;return a>0?`${r} \xB7 ${a} item${a===1?"":"s"} \xB7 ${i}`:`${r} \xB7 ${i}`}function Kx(e,t,r,n,o){let i=qx(e,t,o);if(i.length<=1)return null;let a=i.find(l=>o.getTargetId(l.target)===r)??i[0];if(!a)return null;let s=A$(i.map(l=>l.decal),o),c=o.getTargetNodeKind(a.target),d=Vx(c,a.decal,{...n,enableGroundDecalUiActions:!1},o).filter(l=>M$(l,s)).filter(l=>i.every(m=>l.readOnly||o.canPatchMultiField(e,o.getTargetId(m.target),l.path,l.value))).map(l=>({...l,mixed:D$(i,l.path,n,o)}));return d.length===0?null:{id:"groundDecal",title:"Ground Decal",order:40,placement:"body",summary:i.some(l=>l.decal.uiKind!==a.decal.uiKind)?"Mixed":`${i.length} ${o.createUiKindLabel?.(a.decal.uiKind)??a.decal.uiKind} UIs`,persistence:"document",collapsedByDefault:!1,properties:d}}function Wx(e,t,r){return qx(e,t,r).map(n=>r.getTargetId(n.target))}function qx(e,t,r){let n=new Set,o=[];for(let i of t){if(!i||n.has(i))continue;n.add(i);let a=r.findTarget(e,i);!a||!r.canShowTarget(a)||o.push({target:a,decal:yr(r.getTargetGroundDecal(a),r.createDefaultGroundDecal,r)})}return o}function A$(e,t={}){if(e.length===0)return!1;let[r,...n]=e.map(o=>x$(o,t));return n.every(o=>o===r)}function x$(e,t={}){return e.layers.map((r,n)=>({layer:r,index:n})).filter(r=>rm(r.layer,t)).map(({layer:r,index:n})=>`${n}:${r.id}:${r.role}:${r.kind}`).join("|")}function M$(e,t){return e.path==="groundDecal.raw"?!1:e.path==="groundDecal.uiKind"||e.path==="groundDecal.size.width"||e.path==="groundDecal.size.depth"||e.path==="groundDecal.editorPreviewActive"||Ko(e.path)?!0:e.path==="groundDecal.layers"||od(e.path)?t:!1}function D$(e,t,r,n){if(e.length<=1)return!1;let[o,...i]=e.map(a=>JSON.stringify(R$(a.decal,t,r,n)));return i.some(a=>a!==o)}function R$(e,t,r,n){if(t==="groundDecal.uiKind")return e.uiKind;if(t==="groundDecal.size.width")return e.size.width;if(t==="groundDecal.size.depth")return e.size.depth;if(t==="groundDecal.editorPreviewActive")return e.editorPreviewActive===!0;if(t==="groundDecal.rendering.textureWidth")return e.rendering?.textureWidth??512;if(t==="groundDecal.rendering.textureHeight")return e.rendering?.textureHeight??512;if(t==="groundDecal.layers")return Yx(e,r,n).layers;let o=od(t);if(!o)return;let i=e.layers[o.index];if(i)return O$(i,o.field)}function O$(e,t){if(t==="rect")return e.rect;if(t==="rotationDeg")return e.rotationDeg??0;if(t==="textureId")return e.kind==="texture"||e.kind==="textureProgress"?e.textureId:void 0;if(t==="text.value")return e.kind==="text"?e.text.value:void 0;if(t==="text.fontSize")return e.kind==="text"?e.text.fontSize:void 0;if(t==="color")return e.kind==="color"||e.kind==="progress"?e.color:void 0;if(t==="color.a")return e.kind==="color"||e.kind==="progress"?e.color.a??1:void 0;if(t==="tint")return e.kind==="texture"||e.kind==="textureProgress"?e.tint??td:void 0;if(t==="tint.a")return e.kind==="texture"||e.kind==="textureProgress"?e.tint?.a??1:void 0;if(t==="text.color")return e.kind==="text"?e.text.color:void 0;if(t==="text.color.a")return e.kind==="text"?e.text.color.a??1:void 0;if(t==="editorPreviewPercent")return e.kind==="progress"||e.kind==="textureProgress"?ih(e):void 0}function Yx(e,t,r){let n=jl(e),o=e.layers.map((i,a)=>({layer:i,index:a})).filter(i=>ss(i.layer,r));return{textureSize:n,mask:e.mask,layers:o.map(({layer:i,index:a})=>Cx(t,i,a,r)),previewLayers:e.layers.map((i,a)=>{let s=Cx(t,i,a,r),c=r.getLayerPreviewVisibility?.(i,e);return c?{...s,enabled:s.enabled!==!1&&c.value,previewVisibilityPath:c.path,previewVisibilityBaseEnabled:s.enabled!==!1}:s})}}function Cx(e,t,r,n){return{index:r,id:t.id,role:t.role,kind:t.kind,label:Jx(t,n),rect:t.rect,rotationDeg:t.rotationDeg??0,rotationEditable:nm(t,n),enabled:t.enabled!==!1,editable:ss(t,n),zOrder:t.zOrder,...typeof t.opacity=="number"?{opacity:t.opacity}:{},...n.useUniformLayoutScaleMode?.(t)?{scaleMode:"uniform"}:{},...t.kind==="progress"||t.kind==="textureProgress"?{previewValuePath:`groundDecal.layers.${r}.editorPreviewPercent`}:{},...t.kind==="text"&&typeof t.text.fontSize=="number"?{fontSize:t.text.fontSize}:{},preview:C$(e,t,n)}}function Jx(e,t={}){let r=t.createLayerLabel?.(e);return r||e.role.charAt(0).toUpperCase()+e.role.slice(1)}function C$(e,t,r){if(t.kind==="texture"||t.kind==="textureProgress"){if(!t.textureId)return;let n=r.findTextureAsset?.(e,t.textureId)??null,o=n?.url??e.resolveTextureAssetUrl?.(t.textureId)??r.resolveTextureAssetUrl?.(t.textureId);return o?{kind:t.kind==="textureProgress"?"imageProgress":"image",url:o,alt:n?.label??t.textureId,imageFit:r.resolveImageFit?.(t)??t.imageFit??"contain",...t.tint?{tint:t.tint}:{},...t.kind==="textureProgress"?{value:wx(t),direction:t.direction}:{}}:void 0}if(t.kind==="color")return{kind:"color",color:t.color};if(t.kind==="progress")return{kind:"progress",value:wx(t),direction:t.direction,color:t.color};if(t.kind==="text")return{kind:"text",text:t.text.value,fontFamily:t.text.fontFamily,fontSize:t.text.fontSize,fontWeight:t.text.fontWeight,color:t.text.color,strokeColor:t.text.strokeColor,strokeWidth:t.text.strokeWidth,align:t.text.align,baseline:t.text.baseline}}function ih(e){let t=typeof e.editorPreviewPercent=="number"&&Number.isFinite(e.editorPreviewPercent)?e.editorPreviewPercent:i$;return Math.round(Math.max(0,Math.min(100,t)))}function wx(e){return ih(e)/100}function w$(e,t,r,n,o,i,a){let s=a.getMaterialText?.("zh"),c=a.findTextureAsset?.(t,r.textureId)??null,d=`groundDecal.layers.${n}.textureId`;return a.createDocumentInspectorProperty(null,e,{path:d,label:`${o} PNG`,valueType:"string",control:"custom",customControl:"asset-picker-card",value:r.textureId??"",commitMode:"change",order:i,tags:["GroundDecalUI","TextureAsset"],controlOptions:a.createTexturePickerControlOptions?.(t,s,r.textureId,c)??{currentTextureId:r.textureId,currentTexture:c},coerce:u=>a.normalizeValue(d,u)})}function v$(e,t,r,n,o,i){return i.createDocumentInspectorProperty(null,e,{path:`groundDecal.layers.${r}.color`,label:`${n} Color`,valueType:"color",control:"color",value:t.color,commitMode:"immediate",order:o,tags:["GroundDecalUI","Color"],controlOptions:{refreshInspector:!1,colorChannelDisplay:"normalized",colorChannelPrecision:2}})}function k$(e,t,r,n,o,i){let a=`groundDecal.layers.${r}.editorPreviewPercent`;return i.createDocumentInspectorProperty(null,e,{path:a,label:`${n} Preview %`,valueType:"number",control:"number",value:ih(t),commitMode:"blur",order:o,min:0,max:100,step:1,tags:["GroundDecalUI","Progress"],controlOptions:{refreshInspector:!1},coerce:s=>i.normalizeValue(a,s)})}function _$(e,t,r,n,o,i){let a=t.tint??td;return i.createDocumentInspectorProperty(null,e,{path:`groundDecal.layers.${r}.tint`,label:`${n} Color`,valueType:"color",control:"color",value:a,commitMode:"immediate",order:o,tags:["GroundDecalUI","Color"],controlOptions:{refreshInspector:!1,colorChannelDisplay:"normalized",colorChannelPrecision:2}})}function N$(e,t,r,n,o,i){return i.createDocumentInspectorProperty(null,e,{path:`groundDecal.layers.${r}.text.color`,label:`${n} Color`,valueType:"color",control:"color",value:t.text.color,commitMode:"immediate",order:o,tags:["GroundDecalUI","Color"],controlOptions:{refreshInspector:!1,colorChannelDisplay:"normalized",colorChannelPrecision:2}})}function j$(e){return e.size.width>0&&e.size.depth>0}function G$(e){return e.size.width>0&&e.size.depth>0?e.size.width/e.size.depth:1}function L$(e,t){let r=X(t);r&&e.push(r)}function F$(e,t,r,n,o){return X({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}function vx(e){let t=Object.fromEntries(Object.entries(e.params).filter(r=>typeof r[1]=="string"&&r[1].length>0));return{path:e.path,label:e.label,valueType:"string",control:"custom",customControl:"inspector-action-button",controlOptions:{actionId:e.actionId,label:e.label,icon:e.icon,params:t,...e.disabled?{disabled:!0}:{},...e.disabledReason?{disabledReason:e.disabledReason}:{}},value:e.actionId,readOnly:!1,persistence:"readonly",commitMode:"immediate",order:e.order,tooltip:e.disabledReason??e.tooltip,effect:e.effect,disabledReason:e.disabled?e.disabledReason:void 0}}function sd(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function $$(e){return typeof e=="string"&&e.trim()?e.trim():null}function am(e,t){let r=Fe(t),n=r?e.assets.find(g=>g.id===r.assetId):null,o=typeof n?.guid=="string"&&n.guid.trim()?n.guid.trim():n?.id,i=Ba(e,t),a=new Map(i.filter(g=>!!g.slotId).map(g=>[g.slotId,g])),s=t.overrides?.materialSlotBindings??{},c=B$({document:e,assetId:n?.id,assetGuid:o,currentSlots:i,materialSlotBindings:s}),d=c.remaps,u=new Map(d.map(g=>[g.toSlotId,g])),l=new Set([...d.map(g=>g.fromSlotId),...c.coalescedSourceSlotIds]),m=new Map;for(let[g,S]of Object.entries(s))!S||l.has(g)||m.set(g,S);for(let g of d){let S=s[g.fromSlotId];S&&m.set(g.toSlotId,S)}let p=[];for(let[g,S]of i.entries()){let P=S.slotId?m.get(S.slotId):void 0,x=ds(P),T=x?Le(e,x):null,R=Qx(S),A=R[0],E=S.slotId?u.get(S.slotId):void 0;if(E){p.push({status:"changed",reason:"slot-remapped",...S.slotId?{slotId:S.slotId}:{},previousSlotId:E.fromSlotId,ownerNodePath:yn(S)??void 0,label:im(S,g),...A==null?{}:{sourceMaterialIndex:A},...R.length>0?{sourceMaterialIndices:R}:{},materialAssetId:x,bindingPath:`overrides.materialSlotBindings.${S.slotId}.materialAssetId`,conflict:!1});continue}let C=Zx(T,o,n?.id)?.sourceMaterialIndex;if(C!=null&&R.length>0&&!R.includes(C)){p.push(Xx({status:"changed",reason:"source-material-changed",...S.slotId?{slotId:S.slotId}:{},ownerNodePath:yn(S)??void 0,label:im(S,g),...A==null?{}:{sourceMaterialIndex:A},...R.length>0?{sourceMaterialIndices:R}:{},previousSourceMaterialIndex:C,...x?{materialAssetId:x}:{},bindingPath:S.slotId?`overrides.materialSlotBindings.${S.slotId}.materialAssetId`:""}));continue}if(!x&&R.length>0){p.push({status:"unchanged",reason:"slot-current",...S.slotId?{slotId:S.slotId}:{},ownerNodePath:yn(S)??void 0,label:im(S,g),...A==null?{}:{sourceMaterialIndex:A},...R.length>0?{sourceMaterialIndices:R}:{},bindingPath:S.slotId?`overrides.materialSlotBindings.${S.slotId}.materialAssetId`:"",conflict:!1});continue}p.push({status:"unchanged",reason:"slot-current",...S.slotId?{slotId:S.slotId}:{},ownerNodePath:yn(S)??void 0,label:im(S,g),...A==null?{}:{sourceMaterialIndex:A},...R.length>0?{sourceMaterialIndices:R}:{},...x?{materialAssetId:x}:{},bindingPath:S.slotId?`overrides.materialSlotBindings.${S.slotId}.materialAssetId`:"",conflict:!1})}for(let[g,S]of Object.entries(s))!S||a.has(g)||l.has(g)||p.push(Xx({status:"removed",reason:"slot-removed",slotId:g,...ds(S)?{materialAssetId:ds(S)}:{},bindingPath:`overrides.materialSlotBindings.${g}.materialAssetId`}));let f=p.filter(U$);return{gameObjectId:t.id,...t.name?{gameObjectName:t.name}:{},...n?.id?{assetId:n.id}:{},...o?{assetGuid:o}:{},ok:f.length===0,items:p,issues:f,bindingRemaps:d,bindingRemapIssues:c.issues,counts:V$(p)}}function B$(e){let t=new Set(e.currentSlots.map(d=>d.slotId).filter(d=>!!d)),r=new Set(Object.keys(e.materialSlotBindings).filter(d=>t.has(d))),n=[],o=[],i=new Map;for(let[d,u]of Object.entries(e.materialSlotBindings)){if(!u||t.has(d))continue;let l=ds(u),m=l?Le(e.document,l):null,p=Zx(m,e.assetGuid,e.assetId);if(!p){o.push({fromSlotId:d,materialAssetId:l,reason:"binding-unmatched",candidateSlotIds:[]});continue}let f=e.currentSlots.filter(g=>!!g.slotId&&Qx(g).includes(p.sourceMaterialIndex)).map(g=>g.slotId);i.set(d,{materialAssetId:l,candidateSlotIds:f,binding:u,anchored:p.sourceSlotId===d})}let a=new Map;for(let[d,u]of i){if(u.candidateSlotIds.length!==1)continue;let[l]=u.candidateSlotIds,m=a.get(l)??[];m.push(d),a.set(l,m)}let s=new Set,c=new Set;for(let[d,u]of a){u.forEach(g=>c.add(g));let l=u.filter(g=>i.get(g)?.anchored).sort((g,S)=>g.localeCompare(S));if(l.length===0){for(let g of u){let S=i.get(g);o.push({fromSlotId:g,materialAssetId:S.materialAssetId,reason:"binding-unmatched",candidateSlotIds:[]})}continue}let m=l[0],p=i.get(m);if(!u.every(g=>z$(p.binding,i.get(g).binding))||r.has(d)){for(let g of u){let S=i.get(g);o.push({fromSlotId:g,materialAssetId:S.materialAssetId,reason:"binding-ambiguous",candidateSlotIds:[d]})}continue}r.add(d),n.push({fromSlotId:m,toSlotId:d,materialAssetId:p.materialAssetId,reason:"source-material-index"});for(let g of u)g!==m&&s.add(g)}for(let[d,u]of i)c.has(d)||o.push({fromSlotId:d,materialAssetId:u.materialAssetId,reason:u.anchored&&u.candidateSlotIds.length>0?"binding-ambiguous":"binding-unmatched",candidateSlotIds:u.anchored?u.candidateSlotIds:[]});return{remaps:n,issues:o,coalescedSourceSlotIds:[...s].sort((d,u)=>d.localeCompare(u))}}function z$(e,t){return ds(e)===ds(t)&&ah(e.override,t.override)}function ah(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((a,s)=>ah(a,t[s]));if(!e||!t||typeof e!="object"||typeof t!="object")return!1;let r=e,n=t,o=Object.keys(r).sort(),i=Object.keys(n).sort();return o.length===i.length&&o.every((a,s)=>a===i[s]&&ah(r[a],n[a]))}function Qx(e){return Jn(e)}function Zx(e,t,r){if(e?.origin?.type!=="imported")return null;let n=e.origin.sourceMaterialIndex;if(typeof n!="number"||!Number.isInteger(n))return null;let o=e.origin.sourceAssetGuid,i=e.origin.sourceAssetId;if((o||i)&&!(!!t&&!!o&&o===t)&&!(!!r&&!!i&&i===r)||!o&&!i&&(t||r))return null;let c=typeof e.origin.sourceSlotId=="string"&&e.origin.sourceSlotId.trim()?e.origin.sourceSlotId.trim():void 0;return{sourceMaterialIndex:n,...c?{sourceSlotId:c}:{}}}function im(e,t){return e.label?.trim()||yn(e)?.trim()||e.slotId?.trim()||`Slot ${t+1}`}function ds(e){return typeof e?.materialAssetId=="string"?e.materialAssetId.trim():""}function Xx(e){return{...e,conflict:!0}}function U$(e){return e.conflict}function V$(e){return e.reduce((t,r)=>(t[r.status]+=1,t),{unchanged:0,added:0,removed:0,changed:0,conflict:0})}function sm(e){let t=Zl(e);if(t.ok)return;let r=new Error(`editor_scene_material_assets_missing: ${t.missingMaterialAssetIds.join(", ")}`);throw r.details={missingMaterialAssetIds:t.missingMaterialAssetIds,missingReferences:t.missingReferences.map(n=>({materialAssetId:n.materialAssetId,gameObjectId:n.gameObjectId,bindingPath:n.bindingPath,label:n.label,kind:n.kind,...n.slotId?{slotId:n.slotId}:{},...n.ownerNodePath?{ownerNodePath:n.ownerNodePath}:{}}))},r}function eM(e,t){let r=!1;return{gameObjects:t.map(o=>{let i=am(e,o),a=Fe(o),s=a?e.assets.find(u=>u.id===a.assetId):null,c=Array.isArray(s?.metadata?.materialSlots)?Ba(e,o):null;if(i.bindingRemaps.length===0&&c==null)return o;let d=o;for(let u of i.bindingRemaps){let l=d.overrides?.materialSlotBindings?.[u.fromSlotId];!l||d.overrides?.materialSlotBindings?.[u.toSlotId]||(d=structuredClone(d),d.overrides=d.overrides??{},d.overrides.materialSlotBindings=d.overrides.materialSlotBindings??{},d.overrides.materialSlotBindings[u.toSlotId]=structuredClone(l),delete d.overrides.materialSlotBindings[u.fromSlotId],Object.keys(d.overrides.materialSlotBindings).length===0&&delete d.overrides.materialSlotBindings,r=!0)}if(c!=null){let u=new Set(c.map(l=>l.slotId).filter(l=>!!l));for(let l of Object.keys(d.overrides?.materialSlotBindings??{}))u.has(l)||(d===o&&(d=structuredClone(o)),d.overrides?.materialSlotBindings&&(delete d.overrides.materialSlotBindings[l],Object.keys(d.overrides.materialSlotBindings).length===0&&delete d.overrides.materialSlotBindings,r=!0))}return d}),changed:r}}function tM(e,t,r){let n=!1,o=[...t],i=new Set(o.map(c=>c.id)),a=new Map(e.assets.map(c=>[c.id,c])),s=r.map(c=>{let d=Fe(c);if(!d||he(c)==="primitive")return c;let u=a.get(d.assetId);if(!u)return c;let l=Yn(e,c,a).filter(f=>Jn(f).length>0);if(l.length===0)return c;let m=c,p=Ua(e,c.id);for(let f of l){let P=Jn(f).map(T=>{let R=UA({sourceAsset:u,slot:f,sourceMaterialIndex:T});if(!i.has(R.id))i.add(R.id),o.push(R),n=!0;else{let A=o.findIndex(C=>C.id===R.id),E=A>=0?o[A]:null;if(E){let C=VA(E,R);C!==E&&(o[A]=C,n=!0)}}return R.id})[0],x=p?.materialSlotBindings?.[f.slotId];!P||Ac(m,f)?.materialAssetId||x?.materialAssetId||(m=gT(m,f,P),n=!0)}return m});return{materialAssets:o,gameObjects:s,changed:n}}function rM(e,t){let r=new Set,n=e.properties,o=Ji(n)?n:{},i=Ji(t.defaultProperties)?t.defaultProperties:{},a=nM(t.propertiesSchema,o,i,"properties",r),s=new Set;oM(o,"properties",s);let c=[...s].filter(d=>!r.has(d)).sort();return{materialAsset:{...structuredClone(e),shaderId:t.shaderId,properties:a},preservedPaths:[...r].sort(),resetPaths:c}}function nM(e,t,r,n,o){if(e.kind!=="object")return H$(e,t)?(o.add(n),structuredClone(t)):structuredClone(r);let i=Ji(t)?t:{},a=Ji(r)?r:{},s={};for(let[c,d]of Object.entries(e.properties)){let u=Object.prototype.hasOwnProperty.call(i,c),l=Object.prototype.hasOwnProperty.call(a,c);if(!u&&!l)continue;let m=nM(d,u?i[c]:void 0,l?a[c]:void 0,`${n}.${c}`,o);m!==void 0&&(s[c]=m)}return s}function H$(e,t){if(e.kind==="number")return typeof t=="number"&&Number.isFinite(t)&&(e.min==null||t>=e.min)&&(e.max==null||t<=e.max);if(e.kind==="boolean")return typeof t=="boolean";if(e.kind==="string")return typeof t=="string"||t===null&&e.nullable===!0;if(e.kind==="enum")return typeof t=="string"&&e.values.includes(t);if(e.kind==="color")return sh(t,e.channels===4?["r","g","b","a"]:["r","g","b"]);if(e.kind==="vec2")return sh(t,["x","y"]);if(e.kind==="vec3")return sh(t,["x","y","z"]);if(t===null)return!0;if(!Ji(t))return!1;let r=Object.keys(t);return r.every(n=>n==="url"||n==="textureAssetId")&&r.every(n=>typeof t[n]=="string"&&!!t[n].trim())}function oM(e,t,r){for(let[n,o]of Object.entries(e)){let i=`${t}.${n}`;Ji(o)&&!K$(o)?oM(o,i,r):r.add(i)}}function K$(e){let t=Object.keys(e);return t.length===0?!0:t.every(r=>["r","g","b","a"].includes(r))||t.every(r=>["x","y","z"].includes(r))||t.every(r=>r==="url"||r==="textureAssetId")}function sh(e,t){return Ji(e)&&Object.keys(e).length===t.length&&t.every(r=>typeof e[r]=="number"&&Number.isFinite(e[r]))}function Ji(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function W$(e){return e?.system?.preset}function aM(e,t){let r=W$(e);return r==="default-pbr"?t.defaultMaterial:r==="default-standard"?t.defaultStandardMaterial:e.name||e.id}function cm(e,t){let r=t.trim();return r?e?.find(n=>n.url===r||n.id===r)??null:null}function iM(e,t){return{kind:"image",url:e.url,alt:e.label,fit:"contain",...t?{resourceStatusText:{loading:t.loadingTexture,failed:t.failedTexture}}:{}}}function sM(e){let t=e.currentTexture??cm(e.textureAssets,e.currentValue),r=e.currentValue.trim(),n=!!r&&!t,o=!!t&&!t.disabled&&!!t.url.trim(),i=n?"missing":t?o?"ready":"failed":void 0,a=e.candidateValue??"url",s=(e.textureAssets??[]).filter(q$);return{pickerKind:"texture",pickerTitle:e.pickerText.texturePickerTitle,pickerTrigger:"preview",placeholder:e.pickerText.emptyTexture,currentLabel:n?e.pickerText.missingTexture:t?.label??(r||e.pickerText.emptyTexture),currentMeta:n?`${e.pickerText.missingTextureMeta} \xB7 ${r}`:t?.previewUnavailableReason??t?.meta??(r||e.pickerText.emptyTextureMeta),...i?{currentResourceState:i}:{},...r?{currentResourceReference:r}:{},resourceStatusText:{missing:e.pickerText.missingTexture,loading:e.pickerText.loadingTexture,failed:e.pickerText.failedTexture},currentPreview:o?iM(t,e.pickerText):void 0,candidates:[{label:e.pickerText.clearTexture,value:"",meta:e.pickerText.clearTextureMeta},...s.map(c=>({label:c.label,value:a==="assetId"?c.id:c.url,meta:c.meta??c.id,kind:"texture",...typeof c.width=="number"?{width:c.width}:{},...typeof c.height=="number"?{height:c.height}:{},...!c.disabled&&c.url.trim()?{preview:iM(c,e.pickerText)}:{},...c.disabled?{disabled:!0,disabledReason:c.disabledReason}:{}}))]}}function q$(e){return e.capabilities?.materialTexture===!0?!0:e.capabilities?.materialTexture===!1?!1:e.usage!=="environment"}function cM(e){return{path:`${e.pathPrefix??Wn}${e.materialAsset.id}.${e.fieldPath}`,label:e.label,valueType:e.valueType,control:e.control,value:e.value,readOnly:!1,persistence:"document",commitMode:e.commitMode,order:e.order,tooltip:e.tooltip,tags:e.tags??["ArtistMaterial","MaterialAsset"],document:e.document}}var dM={zh:{title:"\u7F8E\u672F\u6750\u8D28",slotTitle:"\u6750\u8D28\u69FD",language:"\u8BED\u8A00",materialAsset:"\u6750\u8D28\u8D44\u4EA7",materialCard:"\u5F53\u524D\u6750\u8D28",inheritNone:"\u7EE7\u627F / \u65E0",defaultMaterial:"\u9ED8\u8BA4 PBR \u6750\u8D28",defaultMaterialMeta:"BabylonJS \u9ED8\u8BA4 PBR \u6750\u8D28",defaultStandardMaterial:"\u9ED8\u8BA4 Standard \u6750\u8D28",defaultStandardMaterialMeta:"BabylonJS \u9ED8\u8BA4 Standard \u6750\u8D28",defaultMaterialReadOnly:"\u7CFB\u7EDF\u9ED8\u8BA4\u6750\u8D28\u4E3A\u53EA\u8BFB\uFF1B\u8BF7\u9009\u62E9\u53EF\u7F16\u8F91\u6750\u8D28\u7403\u540E\u8C03\u6574\u53C2\u6570\u3002",replace:"\u66FF\u6362",batchReplaceUnsupported:"\u591A\u9009\u7EDF\u4E00\u66FF\u6362\u6750\u8D28\u6682\u672A\u63A5\u5165\uFF1B\u8BF7\u5148\u5355\u9009\u5BF9\u8C61\u66FF\u6362\u6750\u8D28\u3002",duplicateForObject:"\u590D\u5236",materialPickerTitle:"\u9009\u62E9\u6750\u8D28\u8D44\u4EA7",texturePickerTitle:"\u9009\u62E9\u8D34\u56FE\u8D44\u4EA7",emptyTexture:"\u9009\u62E9\u8D34\u56FE",emptyTextureMeta:"\u70B9\u51FB\u9009\u62E9\u8D34\u56FE\u8D44\u4EA7",clearTexture:"\u6E05\u9664\u8D34\u56FE",clearTextureMeta:"\u4E0D\u4F7F\u7528\u8D34\u56FE",missingTexture:"\u8D34\u56FE\u8D44\u4EA7\u7F3A\u5931",missingTextureMeta:"\u5F53\u524D\u5F15\u7528\u65E0\u6CD5\u5728\u9879\u76EE\u8D44\u4EA7\u5E93\u4E2D\u89E3\u6790",loadingTexture:"\u6B63\u5728\u52A0\u8F7D\u8D34\u56FE",failedTexture:"\u8D34\u56FE\u52A0\u8F7D\u5931\u8D25",assetProfile:"\u8D44\u4EA7\u53C2\u6570",assetProfileEmpty:"\u9009\u62E9\u6750\u8D28\u8D44\u4EA7\u540E\u53EF\u7F16\u8F91\u8D44\u4EA7\u53C2\u6570",assetName:"\u8D44\u4EA7\u540D\u79F0",assetKind:"Shader",assetKindPbr:"PBR \u6807\u51C6\u6750\u8D28\u7403",assetKindStandard:"Standard \u6807\u51C6\u6750\u8D28\u7403",assetLightingModel:"\u5149\u7167\u6A21\u578B",assetLightingModelLit:"\u53D7\u5149\u7167",assetLightingModelUnlit:"\u4E0D\u53D7\u5149\u7167",assetBaseColor:"\u57FA\u7840\u8272",assetBaseTexture:"\u57FA\u7840\u8D34\u56FE",assetBrightness:"\u8D34\u56FE\u4EAE\u5EA6",assetSaturation:"\u8D34\u56FE\u9971\u548C\u5EA6",assetContrast:"\u8D34\u56FE\u5BF9\u6BD4\u5EA6",assetHue:"\u8D34\u56FE\u8272\u76F8",assetNormalTexture:"\u6CD5\u7EBF\u8D34\u56FE",assetNormalStrength:"\u6CD5\u7EBF\u5F3A\u5EA6",assetMetallic:"\u91D1\u5C5E\u5EA6",assetRoughness:"\u7C97\u7CD9\u5EA6",assetMetallicRoughnessTexture:"\u91D1\u5C5E\u7C97\u7CD9\u8D34\u56FE",assetOcclusionTexture:"AO \u8D34\u56FE",assetOcclusionStrength:"AO \u5F3A\u5EA6",resetValue:"\u6062\u590D Shader \u9ED8\u8BA4\u503C",modifiedValue:"\u5DF2\u504F\u79BB Shader \u9ED8\u8BA4\u503C",inactiveReasons:{baseTexture:"\u4EC5\u5728\u5DF2\u9009\u62E9\u57FA\u7840\u8D34\u56FE\u65F6\u751F\u6548\u3002",litMaterial:"\u4EC5\u5728\u201C\u53D7\u5149\u7167\u201D\u6A21\u5F0F\u4E0B\u751F\u6548\u3002",normalTexture:"\u4EC5\u5728\u5DF2\u9009\u62E9\u6CD5\u7EBF\u8D34\u56FE\u65F6\u751F\u6548\u3002",occlusionTexture:"\u4EC5\u5728\u5DF2\u9009\u62E9 AO \u8D34\u56FE\u65F6\u751F\u6548\u3002",alphaBlend:"\u4EC5\u5728\u201C\u534A\u900F\u660E\u201D\u6A21\u5F0F\u4E0B\u751F\u6548\u3002",alphaMask:"\u4EC5\u5728\u201C\u906E\u7F69\u201D\u6A21\u5F0F\u4E0B\u751F\u6548\u3002",alphaTransparency:"\u4EC5\u5728\u201C\u906E\u7F69\u201D\u6216\u201C\u534A\u900F\u660E\u201D\u6A21\u5F0F\u4E0B\u751F\u6548\u3002"},assetEmissionColor:"\u81EA\u53D1\u5149\u8272",assetEmissionIntensity:"\u81EA\u53D1\u5149\u5F3A\u5EA6",assetEmissionTexture:"\u81EA\u53D1\u5149\u8D34\u56FE",assetEmissionMaskUrl:"\u906E\u7F69\u8D34\u56FE",assetAlphaMode:"\u900F\u660E\u6A21\u5F0F",assetAlphaModeOpaque:"\u4E0D\u900F\u660E",assetAlphaModeMask:"\u906E\u7F69",assetAlphaModeBlend:"\u534A\u900F\u660E",assetAlphaOpacity:"\u4E0D\u900F\u660E\u5EA6",assetAlphaCutoff:"Alpha \u9608\u503C",assetAlphaTexture:"Alpha \u8D34\u56FE",createSlotMaterial:"\u6DFB\u52A0\u6750\u8D28\u69FD",slotList:"\u69FD\u5217\u8868",slotId:"\u69FD ID",slotOwnerPath:"\u69FD\u8282\u70B9\u8DEF\u5F84",slotMaterialAsset:"\u69FD\u6750\u8D28\u8D44\u4EA7",slotSourceMaterial:"\u6E90\u6750\u8D28",slotBindingPath:"\u7ED1\u5B9A\u8DEF\u5F84",reimportConflicts:"\u91CD\u5BFC\u5165\u6750\u8D28\u51B2\u7A81",summaryAsset:e=>`\u8D44\u4EA7\uFF1A${e}`,summaryMissingAsset:"\u8D44\u4EA7\u7F3A\u5931",summaryCustomOverride:"\u81EA\u5B9A\u4E49\u53C2\u6570",summaryInherit:"\u7EE7\u627F",summaryAddSlot:"\u6DFB\u52A0\u69FD",summarySlotCount:e=>`${e} \u4E2A\u69FD`,formatUsageCount:e=>e>0?`\u88AB ${e} \u5904\u4F7F\u7528`:"\u672A\u88AB\u4F7F\u7528",formatMaterialEditImpact:e=>e<=0?"\u5F53\u524D\u672A\u88AB\u573A\u666F\u4F7F\u7528\uFF0C\u4FEE\u6539\u53EA\u4F1A\u6539\u53D8\u6750\u8D28\u8D44\u4EA7\u672C\u8EAB\u3002":e===1?"\u4FEE\u6539\u4F1A\u5F71\u54CD\u5F53\u524D\u7ED1\u5B9A\u3002":`\u5171\u4EAB\u6750\u8D28\uFF0C\u4FEE\u6539\u4F1A\u5F71\u54CD ${e} \u5904\u7ED1\u5B9A\u3002`,formatDuplicateMaterialImpact:e=>e<=0?"\u590D\u5236\u540E\u521B\u5EFA\u4E00\u4E2A\u53EF\u72EC\u7ACB\u7F16\u8F91\u7684\u6750\u8D28\u8D44\u4EA7\u3002":e===1?"\u590D\u5236\u540E\u5F53\u524D\u5BF9\u8C61\u6216\u69FD\u4F1A\u4F7F\u7528\u72EC\u7ACB\u6750\u8D28\u3002":`\u590D\u5236\u540E\u5F53\u524D\u5BF9\u8C61\u6216\u69FD\u4F1A\u4F7F\u7528\u72EC\u7ACB\u6750\u8D28\uFF0C\u539F ${e} \u5904\u5171\u4EAB\u7ED1\u5B9A\u4E0D\u88AB\u7EE7\u7EED\u4FEE\u6539\u3002`,formatReimportConflictSummary:e=>`\u68C0\u6D4B\u5230 ${e} \u4E2A\u6750\u8D28\u69FD\u91CD\u5BFC\u5165\u5DEE\u5F02\uFF1B\u5DF2\u4FDD\u7559\u73B0\u6709\u7ED1\u5B9A\uFF0C\u9700\u4EBA\u5DE5\u786E\u8BA4\u4E0D\u53EF\u5339\u914D\u9879\u3002`,tooltips:{language:"\u5207\u6362\u7F8E\u672F\u6750\u8D28 Inspector \u7684\u663E\u793A\u8BED\u8A00\u3002",materialAsset:"\u9009\u62E9\u9879\u76EE\u7EA7\u5171\u4EAB\u6750\u8D28\u8D44\u4EA7\uFF0C\u6216\u4F7F\u7528\u53EA\u8BFB\u7684\u9ED8\u8BA4 PBR \u6750\u8D28\u3002",baseTexture:"\u9009\u62E9\u9879\u76EE\u8D34\u56FE\u4F5C\u4E3A\u57FA\u7840\u8D34\u56FE\u3002\u8D34\u56FE\u8C03\u8272\u53C2\u6570\u4F1A\u5148\u4F5C\u7528\u4E8E\u8FD9\u5F20\u8D34\u56FE\u3002",assetProfile:"\u5171\u4EAB\u6750\u8D28\u8D44\u4EA7\u7684\u53C2\u6570\u4F1A\u5F71\u54CD\u6240\u6709\u7ED1\u5B9A\u8BE5\u8D44\u4EA7\u7684\u8282\u70B9\u3002",assetName:"\u6750\u8D28\u8D44\u4EA7\u540D\u79F0\u53EA\u7528\u4E8E\u5C55\u793A\uFF1B\u7ED1\u5B9A\u4F7F\u7528\u7A33\u5B9A\u6750\u8D28 ID\uFF0C\u4E0D\u53D7\u91CD\u547D\u540D\u5F71\u54CD\u3002",assetKind:"\u9009\u62E9\u8BE5\u6750\u8D28\u5F15\u7528\u7684 Shader Definition\uFF1B\u5207\u6362\u65F6\u4F1A\u4FDD\u7559\u517C\u5BB9\u53C2\u6570\u3002",lightingModel:"\u53D7\u5149\u7167\u6750\u8D28\u4F1A\u54CD\u5E94\u73AF\u5883\u5149\u548C\u76F4\u5C04\u5149\uFF1B\u4E0D\u53D7\u5149\u7167\u6750\u8D28\u9002\u5408 UI\u3001\u7279\u6548\u3001\u56FE\u6807\u548C\u5BFC\u89C6\u6807\u8BB0\u3002",baseColor:"\u57FA\u7840\u8272\u4F5C\u4E3A\u989C\u8272\u56E0\u5B50\uFF0C\u4F1A\u5728\u57FA\u7840\u8D34\u56FE\u5B8C\u6210\u8C03\u8272\u540E\u53C2\u4E0E\u76F8\u4E58\u3002\u4FEE\u6539\u5171\u4EAB\u6750\u8D28\u8D44\u4EA7\u4F1A\u5F71\u54CD\u6240\u6709\u7ED1\u5B9A\u8BE5\u6750\u8D28\u7403\u7684\u8282\u70B9\u3002",duplicateForObject:"\u590D\u5236\u5F53\u524D\u6750\u8D28\u7403\u4E3A\u8FD9\u4E2A\u5BF9\u8C61\u6216\u69FD\u7684\u72EC\u7ACB\u6750\u8D28\uFF0C\u7136\u540E\u81EA\u52A8\u66FF\u6362\u7ED1\u5B9A\u3002",brightness:"\u57FA\u7840\u8D34\u56FE\u4EAE\u5EA6\u500D\u7387\uFF0C1 \u4E3A\u4E0D\u6539\u53D8\uFF1B\u4EC5\u5728\u6709\u57FA\u7840\u8D34\u56FE\u65F6\u5F71\u54CD\u8D34\u56FE\u3002",saturation:"\u57FA\u7840\u8D34\u56FE\u9971\u548C\u5EA6\u500D\u7387\uFF0C1 \u4E3A\u4E0D\u6539\u53D8\uFF1B\u4EC5\u5728\u6709\u57FA\u7840\u8D34\u56FE\u65F6\u5F71\u54CD\u8D34\u56FE\u3002",contrast:"\u57FA\u7840\u8D34\u56FE\u5BF9\u6BD4\u5EA6\u500D\u7387\uFF0C1 \u4E3A\u4E0D\u6539\u53D8\uFF1B\u4EC5\u5728\u6709\u57FA\u7840\u8D34\u56FE\u65F6\u5F71\u54CD\u8D34\u56FE\u3002",hue:"\u57FA\u7840\u8D34\u56FE\u8272\u76F8\u504F\u79FB\uFF0C\u5355\u4F4D\u4E3A\u5EA6\uFF1B\u4EC5\u5728\u6709\u57FA\u7840\u8D34\u56FE\u65F6\u5F71\u54CD\u8D34\u56FE\u3002",normalTexture:"\u9009\u62E9\u6CD5\u7EBF\u8D34\u56FE\uFF0C\u8FD0\u884C\u65F6\u5E94\u7528\u5230 PBR/Standard \u6750\u8D28\u7684 bump/normal \u901A\u9053\u3002",normalStrength:"\u6CD5\u7EBF\u5F3A\u5EA6\uFF0C1 \u4E3A\u8D34\u56FE\u539F\u59CB\u5F3A\u5EA6\u3002",metallic:"\u91D1\u5C5E\u5EA6\uFF0C\u8303\u56F4 0 \u5230 1\u3002",roughness:"\u7C97\u7CD9\u5EA6\uFF0C\u8303\u56F4 0 \u5230 1\u3002",metallicRoughnessTexture:"\u9009\u62E9\u91D1\u5C5E\u7C97\u7CD9\u8D34\u56FE\u3002PBR \u8FD0\u884C\u65F6\u6309 GLB \u5E38\u7528\u7EA6\u5B9A\u8BFB\u53D6\u84DD\u8272\u91D1\u5C5E\u5EA6\u3001\u7EFF\u8272\u7C97\u7CD9\u5EA6\u3002",occlusionTexture:"\u9009\u62E9\u73AF\u5883\u906E\u853D AO \u8D34\u56FE\uFF0C\u53EA\u5BF9 PBR \u6750\u8D28\u751F\u6548\u3002",occlusionStrength:"AO \u5F3A\u5EA6\uFF0C1 \u4E3A\u8D34\u56FE\u539F\u59CB\u5F3A\u5EA6\u3002",emissionColor:"\u81EA\u53D1\u5149\u989C\u8272\uFF0C\u4F1A\u4E0E\u5F3A\u5EA6\u76F8\u4E58\u3002",emissionIntensity:"\u81EA\u53D1\u5149\u5F3A\u5EA6\uFF0C0 \u8868\u793A\u65E0\u81EA\u53D1\u5149\u3002",emissionTexture:"\u9009\u62E9\u81EA\u53D1\u5149\u8D34\u56FE\uFF1B\u82E5\u672A\u8BBE\u7F6E\u5219\u517C\u5BB9\u4F7F\u7528\u65E7\u906E\u7F69\u8D34\u56FE\u3002",emissionMaskUrl:"\u9009\u62E9\u7070\u5EA6\u8D34\u56FE\u4F5C\u4E3A\u81EA\u53D1\u5149\u5F3A\u5EA6\u906E\u7F69\u3002",alphaMode:"\u900F\u660E\u6A21\u5F0F\uFF1A\u4E0D\u900F\u660E\u3001Alpha Test \u906E\u7F69\u6216 Alpha Blend \u534A\u900F\u660E\u3002",alphaOpacity:"\u6750\u8D28\u6574\u4F53\u4E0D\u900F\u660E\u5EA6\uFF0C1 \u4E3A\u5B8C\u5168\u4E0D\u900F\u660E\u3002",alphaCutoff:"\u906E\u7F69\u6A21\u5F0F\u7684 Alpha \u622A\u65AD\u9608\u503C\u3002",alphaTexture:"\u9009\u62E9 Alpha/Opacity \u8D34\u56FE\u3002",createSlotMaterial:"\u8F93\u5165 GLB \u5B50\u8282\u70B9\u6216 mesh \u7684 ownerNodePath \u6765\u6DFB\u52A0\u69FD\u7ED1\u5B9A\uFF0C\u521D\u59CB\u4F7F\u7528\u9ED8\u8BA4 PBR \u6750\u8D28\u3002",slotList:"\u6839\u8282\u70B9\u4E0A\u7684\u6750\u8D28\u69FD\u4E3A\u53EA\u8BFB\u603B\u89C8\u3002",slotOwnerPath:"\u6750\u8D28\u69FD\u5B9A\u4F4D\u5230\u7684\u5B50\u8282\u70B9\u6216 mesh \u8DEF\u5F84\u3002",reimportConflicts:"\u6A21\u578B\u91CD\u5BFC\u5165\u540E\u65E0\u6CD5\u81EA\u52A8\u5339\u914D\u6216\u6E90\u6750\u8D28\u53D8\u5316\u7684\u69FD\u3002\u73B0\u6709\u7ED1\u5B9A\u4F1A\u4FDD\u7559\uFF0C\u4E0D\u4F1A\u9759\u9ED8\u5220\u9664\u6216\u8986\u76D6\u3002"}},en:{title:"Artist Material",slotTitle:"Material Slots",language:"Language",materialAsset:"Material Asset",materialCard:"Current Material",inheritNone:"Inherit / None",defaultMaterial:"Default PBR Material",defaultMaterialMeta:"BabylonJS-style default PBR material",defaultStandardMaterial:"Default Standard Material",defaultStandardMaterialMeta:"BabylonJS-style default Standard material",defaultMaterialReadOnly:"The system default material is read-only. Choose an editable material asset to adjust parameters.",replace:"Replace",batchReplaceUnsupported:"Batch material replacement is not wired yet. Select one object to replace its material.",duplicateForObject:"Copy",materialPickerTitle:"Select Material Asset",texturePickerTitle:"Select Texture Asset",emptyTexture:"Select Texture",emptyTextureMeta:"Choose a texture asset",clearTexture:"Clear Texture",clearTextureMeta:"Do not use a texture",missingTexture:"Missing texture asset",missingTextureMeta:"The current reference cannot be resolved in the project asset library",loadingTexture:"Loading texture",failedTexture:"Texture failed to load",assetProfile:"Asset Profile",assetProfileEmpty:"Select a material asset to edit asset parameters",assetName:"Asset Name",assetKind:"Shader",assetKindPbr:"PBR standard material",assetKindStandard:"Standard material",assetLightingModel:"Lighting Model",assetLightingModelLit:"Lit",assetLightingModelUnlit:"Unlit",assetBaseColor:"Base Color",assetBaseTexture:"Base Texture",assetBrightness:"Texture Brightness",assetSaturation:"Texture Saturation",assetContrast:"Texture Contrast",assetHue:"Texture Hue",assetNormalTexture:"Normal Texture",assetNormalStrength:"Normal Strength",assetMetallic:"Metallic",assetRoughness:"Roughness",assetMetallicRoughnessTexture:"Metallic-Roughness Texture",assetOcclusionTexture:"AO Texture",assetOcclusionStrength:"AO Strength",resetValue:"Reset to shader default",modifiedValue:"Modified from shader default",inactiveReasons:{baseTexture:"Available after assigning a base texture.",litMaterial:"Available only when the lighting model is Lit.",normalTexture:"Available after assigning a normal texture.",occlusionTexture:"Available after assigning an AO texture.",alphaBlend:"Available only in Blend alpha mode.",alphaMask:"Available only in Mask alpha mode.",alphaTransparency:"Available only in Mask or Blend alpha mode."},assetEmissionColor:"Emission Color",assetEmissionIntensity:"Emission Intensity",assetEmissionTexture:"Emission Texture",assetEmissionMaskUrl:"Mask Texture",assetAlphaMode:"Alpha Mode",assetAlphaModeOpaque:"Opaque",assetAlphaModeMask:"Mask",assetAlphaModeBlend:"Blend",assetAlphaOpacity:"Opacity",assetAlphaCutoff:"Alpha Cutoff",assetAlphaTexture:"Alpha Texture",createSlotMaterial:"Add Material Slot",slotList:"Slot List",slotId:"Slot ID",slotOwnerPath:"Slot Owner Path",slotMaterialAsset:"Slot Material Asset",slotSourceMaterial:"Source Material",slotBindingPath:"Binding Path",reimportConflicts:"Reimport Material Conflicts",summaryAsset:e=>`Asset: ${e}`,summaryMissingAsset:"Missing asset",summaryCustomOverride:"Custom override",summaryInherit:"Inherit",summaryAddSlot:"Add slot",summarySlotCount:e=>`${e} slot${e===1?"":"s"}`,formatUsageCount:e=>e>0?`Used in ${e} place${e===1?"":"s"}`:"Unused",formatMaterialEditImpact:e=>e<=0?"This material is not used in the scene; edits only change the asset.":e===1?"Edits affect the current binding.":`Shared material: edits affect ${e} bindings.`,formatDuplicateMaterialImpact:e=>e<=0?"Copying creates an independently editable material asset.":e===1?"After copying, the current object or slot uses an independent material.":`After copying, the current object or slot uses an independent material; the original ${e} shared bindings are left unchanged.`,formatReimportConflictSummary:e=>`${e} material slot reimport difference${e===1?"":"s"} detected. Existing bindings are preserved until unmatched items are resolved.`,tooltips:{language:"Switch the artist material Inspector language.",materialAsset:"Choose a project-level shared material asset, or use the read-only Default PBR material.",baseTexture:"Choose a project texture as the base texture. Texture adjustment parameters are applied to this texture first.",assetProfile:"Shared asset parameters affect every node bound to this material asset.",assetName:"Material asset names are display-only for bindings; stable material IDs survive renames.",assetKind:"Select the Shader Definition referenced by this material; compatible values survive a change.",lightingModel:"Lit materials respond to environment and directional lights; unlit materials are useful for UI, VFX, icons, and markers.",baseColor:"Base color is the final color factor multiplied after base texture adjustment. Editing the shared material asset affects every bound node.",duplicateForObject:"Copy the current material as an independent material for this object or slot, then bind it automatically.",brightness:"Base texture brightness multiplier. It only affects materials with a base texture; 1 leaves the texture unchanged.",saturation:"Base texture saturation multiplier. It only affects materials with a base texture; 1 leaves the texture unchanged.",contrast:"Base texture contrast multiplier. It only affects materials with a base texture; 1 leaves the texture unchanged.",hue:"Base texture hue offset in degrees. It only affects materials with a base texture.",normalTexture:"Choose a normal map applied to the runtime bump/normal channel for PBR and Standard materials.",normalStrength:"Normal strength. 1 keeps the texture at original strength.",metallic:"Metallic value from 0 to 1.",roughness:"Roughness value from 0 to 1.",metallicRoughnessTexture:"Choose a metallic-roughness texture. PBR runtime reads blue as metallic and green as roughness by the common GLB convention.",occlusionTexture:"Choose an ambient occlusion texture. Applies to PBR materials.",occlusionStrength:"Ambient occlusion strength. 1 keeps the texture at original strength.",emissionColor:"Emission color multiplied by emission intensity.",emissionIntensity:"Emission intensity. 0 means no emission.",emissionTexture:"Choose an emissive texture. If empty, the mask texture remains the fallback.",emissionMaskUrl:"Choose a grayscale texture to modulate emission intensity.",alphaMode:"Alpha mode: opaque, alpha-test mask, or alpha-blend transparency.",alphaOpacity:"Overall material opacity. 1 is fully opaque.",alphaCutoff:"Alpha-test cutoff threshold for mask mode.",alphaTexture:"Choose an alpha/opacity texture.",createSlotMaterial:"Enter a GLB child node or mesh ownerNodePath to add a slot binding with the Default PBR material.",slotList:"Material slots on the root object are a readonly overview.",slotOwnerPath:"Child node or mesh path targeted by this material slot.",reimportConflicts:"Slots whose source material changed or could not be matched after model reimport. Existing bindings are preserved instead of being silently deleted or overwritten."}}};function ro(e){return dM[e]??dM.zh}function dm(e){return e.metadata?.artistMaterialInspectorLanguage==="en"?"en":"zh"}var Y$={},lM=new WeakMap;function uM(e,t,r,n,o){return X({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}function mM(e,t){return aM(e,gM(t))}function J$(e){return{materialPickerTitle:e.materialPickerTitle,replace:e.replace,duplicateForObject:e.duplicateForObject,duplicateForObjectTooltip:e.tooltips.duplicateForObject,summaryMissingAsset:e.summaryMissingAsset,summaryInherit:e.summaryInherit,inheritNone:e.inheritNone}}function X$(e){return{formatUsageCount:e.formatUsageCount,formatEditImpact:e.formatMaterialEditImpact,formatDuplicateImpact:e.formatDuplicateMaterialImpact}}function gM(e){return{defaultMaterial:e.defaultMaterial,defaultStandardMaterial:e.defaultStandardMaterial,defaultMaterialMeta:e.defaultMaterialMeta,defaultStandardMaterialMeta:e.defaultStandardMaterialMeta,formatMaterialMeta:t=>`Material - ${t}`}}function SM(e,t,r,n,o={}){if(!t)return[];let i=o.materialShaderDefinitions?.get(t.shaderId)??dr(t.shaderId),a=nB(e,t,r,n,o,i??void 0);if(yM(t,o))return[...a,X({path:`scene.materialAssets.${t.id}.properties`,label:r.assetProfile,value:r.defaultMaterialReadOnly,order:n+2,source:"Document",effect:"default",disabledReason:r.defaultMaterialReadOnly,tags:["ArtistMaterial","MaterialAsset"],tooltip:r.tooltips.assetProfile})];if(!i)return a;let s=[...i.inspector.fields].sort((c,d)=>c.order-d.order||c.path.localeCompare(d.path)).map(c=>Q$({document:e,materialAsset:t,definition:i,fieldDefinition:c,text:r,context:o,orderOffset:n}));return[...a,...s]}function Q$(e){let{fieldDefinition:t}=e,r=pM(e.text,t.labelKey,t.label??t.path),n=eB(e.text,t.tooltipKey,t.tooltip),o=hM(e.materialAsset.properties,t),i;if(t.control==="texture")i=iB({path:`${Wn}${e.materialAsset.id}.${t.path}`,label:r,value:typeof o=="string"?o:"",order:e.orderOffset+t.order,text:e.text,context:e.context,tooltip:n});else if(t.control==="number")i=sB(e.document,e.materialAsset,t.path,r,typeof o=="number"?o:Number(t.defaultValue),e.orderOffset+t.order,t,n,e.context.materialShaderDefinitions);else if(t.control==="enum")i=cB(e.document,e.materialAsset,t.path,r,String(o),e.orderOffset+t.order,(t.options??[]).map(c=>({value:c.value,label:pM(e.text,c.labelKey,c.label??c.value)})),n,e.context.materialShaderDefinitions);else{let c=t.control;i=mm(e.document,e.materialAsset,t.path,r,o,e.orderOffset+t.order,c,c,"immediate",n,e.context.materialShaderDefinitions)}let a=t.control==="color"?gc(e.definition.shaderId,t.path,e.context.materialShaderDefinitions):null;i={...i,displayPrecision:t.displayPrecision,precision:t.precision,controlOptions:{...i.controlOptions,...t.control==="color"?{colorChannels:a?.kind==="color"&&a.channels===4?4:3}:{},materialShaderSectionId:t.sectionId,materialShaderUpdateClass:t.updateClass,materialShaderBinding:t.binding}};let s=t.conditions?.find(c=>!Z$(e.definition,e.materialAsset.properties,c));return s&&(i=uB(i,!1,tB(e.text,s))),dB(i,e.text,t.defaultValue)}function hM(e,t){if(t.control==="texture"){let n=ch(e,t.schemaPath??t.path);return bM(n)}let r=ch(e,t.path);return r===void 0?structuredClone(t.defaultValue):r}function ch(e,t){let r=t.replace(/^properties\./,"").split(".").filter(Boolean),n=e;for(let o of r){if(!n||typeof n!="object"||Array.isArray(n))return;n=n[o]}return n}function Z$(e,t,r){let n=e.inspector.fields.find(a=>a.path===r.path),o=n?hM(t,n):ch(t,r.path);if(r.operator==="truthy")return!!o;let i=JSON.stringify(o??null)===JSON.stringify(r.value??null);return r.operator==="equals"?i:!i}function pM(e,t,r){let n=t?e[t]:void 0;return typeof n=="string"?n:r}function eB(e,t,r){let n=t?e.tooltips[t]:void 0;return typeof n=="string"?n:r}function tB(e,t){let r=t.inactiveReasonKey?e.inactiveReasons[t.inactiveReasonKey]:void 0;return typeof r=="string"?r:t.inactiveReason??"This field is inactive for the current material state."}function rB(e){return e.defaultMaterialAssetIds??[qi,ns]}function yM(e,t){return Yc(e,rB(t))||e.system?.preset==="default-pbr"||e.system?.preset==="default-standard"}function nB(e,t,r,n,o,i){if(!yM(t,o)){let a=o.materialShaderDefinitions??Co;return[mm(e,t,"name",r.assetName,mM(t,r),n,"string","string","change",r.tooltips.assetName,a),{path:`${Wn}${t.id}.shaderId`,label:r.assetKind,valueType:"string",control:"enum",value:t.shaderId,readOnly:!1,persistence:"document",commitMode:"immediate",order:n+1,tooltip:r.tooltips.assetKind,tags:["ArtistMaterial","MaterialAsset","ShaderDefinition"],options:a.list().map(s=>({value:s.shaderId,label:s.displayName})),controlOptions:{materialShaderSelector:!0,shaderId:t.shaderId,shaderVersion:i?.version,shaderRuntimeKind:i?.runtimeKind,...i?.sourceFile?{shaderSourceFile:i.sourceFile}:{}},validate:s=>typeof s=="string"&&a.get(s)?{ok:!0,value:s}:{ok:!1,message:"Unknown Shader Definition."},coerce:s=>typeof s=="string"?s.trim():""}]}return[uM(`${Wn}${t.id}.name`,r.assetName,mM(t,r),n,r.tooltips.assetName),uM(`${Wn}${t.id}.shaderId`,r.assetKind,i?.displayName??oB(LA(t),r),n+1,r.tooltips.assetKind)]}function oB(e,t){return e==="standard"?t.assetKindStandard:t.assetKindPbr}function iB(e){let t=dh(e.context,e.value);return{path:e.path,label:e.label,valueType:"string",control:"custom",customControl:"asset-picker-card",value:e.value,readOnly:!1,persistence:"document",commitMode:"change",order:e.order,tooltip:e.tooltip,tags:["ArtistMaterial","TextureAsset"],controlOptions:um(e.context,e.text,e.value,t),validate:r=>{let n=fM(e.context,e.path,r);return n.ok?{ok:!0,value:n.value}:{ok:!1,message:"Invalid texture selection."}},coerce:r=>{let n=fM(e.context,e.path,r);return n.ok?n.value:null}}}function um(e,t,r,n){return{...sM({textureAssets:e.textureAssets,currentTexture:n,currentValue:r,pickerText:aB(t),candidateValue:"assetId"})}}function dh(e,t){return cm(e.textureAssets,t)}function bM(e){let t=typeof e?.textureAssetId=="string"?e.textureAssetId.trim():"";return t||(typeof e?.url=="string"?e.url.trim():"")}function fM(e,t,r){if(r==null||r==="")return{ok:!0,value:null};if(typeof r!="string")return{ok:!1};let n=r.trim();if(!n)return{ok:!0,value:null};if(!t.endsWith(".textureAssetId"))return{ok:!0,value:n};let o=cm(e.textureAssets,n);return o?{ok:!0,value:o.id}:/^[A-Za-z0-9_-]+$/.test(n)?{ok:!0,value:n}:{ok:!0,value:null}}function aB(e){return{texturePickerTitle:e.texturePickerTitle,replace:e.replace,emptyTexture:e.emptyTexture,emptyTextureMeta:e.emptyTextureMeta,clearTexture:e.clearTexture,clearTextureMeta:e.clearTextureMeta,missingTexture:e.missingTexture,missingTextureMeta:e.missingTextureMeta,loadingTexture:e.loadingTexture,failedTexture:e.failedTexture}}function sB(e,t,r,n,o,i,a={},s,c){return{...mm(e,t,r,n,o,i,"number","number","live",s,c),...a.min!=null?{min:a.min}:{},...a.max!=null?{max:a.max}:{},...a.softMin!=null?{softMin:a.softMin}:{},...a.softMax!=null?{softMax:a.softMax}:{},step:a.step??.05}}function cB(e,t,r,n,o,i,a,s,c){return{...mm(e,t,r,n,o,i,"enum","enum","immediate",s,c),options:a,controlOptions:{variant:"segmented"}}}function mm(e,t,r,n,o,i,a,s,c,d,u){return{...cM({document:e,materialAsset:t,fieldPath:r,label:n,value:o,order:i,valueType:a,control:s,commitMode:c,tooltip:d,pathPrefix:Wn}),validate:l=>{let m=mr(r,l);return qn(r,m,t.shaderId,u)?{ok:!0,value:m}:{ok:!1,message:`Invalid material asset field: ${r}.`}},coerce:l=>mr(r,l)}}function dB(e,t,r){return e.readOnly?e:{...e,controlOptions:{...e.controlOptions,resetValue:structuredClone(r),modified:!lB(e.value,r),resetLabel:t.resetValue,modifiedLabel:t.modifiedValue}}}function lB(e,t){return JSON.stringify(e??null)===JSON.stringify(t??null)}function uB(e,t,r){return t?e:{...e,controlOptions:{...e.controlOptions,conditionalInactive:!0,conditionalInactiveReason:r}}}function EM(e,t,r,n){let o=r.currentAsset??Le(e,r.value);return{path:r.path,label:r.label,valueType:"string",control:"custom",customControl:"asset-picker-card",value:r.value,readOnly:!1,persistence:"document",commitMode:"change",order:r.order,controlOptions:fB(lm(e,o,r.text,r.value,n,r.previewContext),o,r.currentAction),tooltip:r.text.tooltips.materialAsset,tags:["ArtistMaterial","MaterialAsset"],document:e,validate:i=>{let a=Jl(i);return a&&hn(e,a)?{ok:!0,value:i}:i==null||i===""?{ok:!0,value:i}:typeof i=="string"&&hn(e,i)?{ok:!0,value:i}:{ok:!1,message:`Material asset not found: ${String(i)}`}},coerce:i=>typeof i=="string"?i.trim():i,effect:mB(t,r.value),validation:pB(r.value,o,r.text),disabledReason:t==="group"?"Groups do not own materials.":void 0}}function mB(e,t){return e==="group"?"unsupported":t.trim()?"override":void 0}function pB(e,t,r){let n=e.trim();if(!(!n||t))return{status:"error",code:"material.asset.missing",message:`${r.summaryMissingAsset}: ${n}`}}function fB(e,t,r){return!t||!r?e:{...e,currentActionId:r.actionId,currentActionParams:Object.fromEntries(Object.entries(r.params).filter(n=>typeof n[1]=="string"&&n[1].length>0))}}function gB(e,t,r){return EM(e,t,r,Lt.getCachedUsageIndex(e))}function lm(e,t,r,n,o,i={}){return{...Lt.createPickerControlOptions({materialAssets:e.scene.materialAssets??[],currentAsset:t,currentValue:n,pickerText:J$(r),displayText:gM(r),document:e,ownershipText:X$(r),previewContext:i},o),actionDisabledReason:r.batchReplaceUnsupported}}function SB(e,t,r,n,o={}){if(o.textureAssets?.length||o.resolveTextureAssetUrl)return lm(e,t,r,n,Lt.getCachedUsageIndex(e),o);let i=lM.get(e);i||(i=new WeakMap,lM.set(e,i));let a=i.get(r);a||(a=new WeakMap,i.set(r,a));let s=t??Y$,c=a.get(s);c||(c=new Map,a.set(s,c));let d=c.get(n);if(d)return d;let u=lm(e,t,r,n,Lt.getCachedUsageIndex(e),o);return c.set(n,u),u}var hB={createSelectorInspectorPropertyWithUsage:EM,createSelectorInspectorPropertyWithCachedUsage:gB,createPickerControlOptionsWithUsage:lm,createPickerControlOptionsWithCachedUsage:SB},Xi=hB;function IM(e,t,r){let n=pT(e,t);if(n.state==="asset"&&n.materialAsset){let o=zA(n.materialAsset),i=o==="default-pbr"?r.defaultMaterial:o==="default-standard"?r.defaultStandardMaterial:n.materialAsset.name??n.materialAsset.id;return r.summaryAsset(i)}return n.state==="missing-asset"?r.summaryMissingAsset:n.state==="override"?r.summaryCustomOverride:r.summaryInherit}function TM(e,t,r){let n=Yn(e,t).length;return n>0?r.summarySlotCount(n):r.summaryAddSlot}function yB(e,t,r,n,o,i={}){let a=ro(dm(t)),s=[];return Yn(e,t).forEach((d,u)=>{let l=yn(d)??d.slotId,m=Ac(t,d),p=o?.materialSlotBindings?.[d.slotId]??m,f=Le(e,p?.materialAssetId??Vo),g=(u+1)*100,S=hg(d);s.push(Xi.createSelectorInspectorPropertyWithUsage(e,r,{path:S,label:d.label||lh(l,u,a),value:m?.materialAssetId??"",order:g,text:a,currentAsset:f,currentAction:{actionId:"material.open-asset",params:{materialAssetId:f?.id,browserAssetId:f?`material:${f.id}`:void 0,sourceObjectId:t.id,sourceBindingPath:S}},previewContext:i},n))}),s}function bB(e,t,r,n){let o=Yn(e,t);if(o.length===0)return[];let i=[],a=am(e,t),s=Ua(e,t.id)??t.overrides;a.issues.length>0&&i.push(PB("asset.materialSlots.reimportConflicts",r.reimportConflicts,EB(a.issues,r),-1,r.tooltips.reimportConflicts));let c=o.map((d,u)=>IB(e,t,d,u,r,n,s));return i.push({path:"asset.materialSlots",label:r.slotList,valueType:"object",control:"custom",customControl:"material-slot-list",value:{count:o.length,slots:c},readOnly:!0,persistence:"readonly",commitMode:"immediate",order:0,controlOptions:{labels:{material:r.slotMaterialAsset,slotId:r.slotId,ownerNodePath:r.slotOwnerPath,sourceMaterial:r.slotSourceMaterial,primitive:"Primitive",triangles:"Triangles",bounds:"Bounds",bindingPath:r.slotBindingPath},slots:c},tags:["ArtistMaterial","MaterialSlot","Readonly"],tooltip:r.tooltips.slotList,document:e}),i}function EB(e,t){let r=e.map(n=>{let o=n.label||n.ownerNodePath||n.slotId||n.previousSlotId||n.bindingPath||"slot";if(n.reason==="source-material-changed"){let i=n.previousSourceMaterialIndex==null?"?":`#${n.previousSourceMaterialIndex}`,a=n.sourceMaterialIndex==null?"?":`#${n.sourceMaterialIndex}`;return`${o}: source material ${i} -> ${a}; ${n.materialAssetId??t.inheritNone}`}return n.reason==="slot-removed"?`${o}: removed slot; ${n.materialAssetId??t.inheritNone}`:`${o}: ${n.status}`});return[t.formatReimportConflictSummary(e.length),...r].join(`
4
+ `)}function IB(e,t,r,n,o,i,a){let s=Ac(t,r),c=a?.materialSlotBindings?.[r.slotId]??s,d=Le(e,c?.materialAssetId??Vo),u=Xi.createPickerControlOptionsWithUsage(e,d,o,s?.materialAssetId??"",i),l=Jn(r),m=l[0],p=m==null?null:Jc(r,m),f=r.sourceSurfaces[0],g=f.ownerNodePath;return{key:ST(r),label:r.label||lh(g,n,o),slotId:r.slotId,sourceSurfaces:structuredClone(r.sourceSurfaces),ownerNodePath:g,materialAssetId:s?.materialAssetId??"",materialLabel:u.currentLabel??o.inheritNone,materialMeta:u.currentMeta??o.summaryInherit,...u.currentPreview?{materialPreview:u.currentPreview}:{},...m==null?{}:{sourceMaterialIndex:m},...l.length?{sourceMaterialIndices:l}:{},...p?{sourceMaterialName:p}:{},...r.materialNames?.length?{materialNames:r.materialNames}:{},...r.sourceSurfaces.length===1&&typeof f.triangleCount=="number"?{triangleCount:f.triangleCount}:{},...r.sourceSurfaces.length===1&&f.boundingBox?{boundingBox:f.boundingBox}:{},bindingPath:hg(r)}}var TB={createChildMaterialBindingInspectorPropertiesWithUsage:yB,createReadonlyMaterialSlotListInspectorPropertiesWithUsage:bB},PM=TB;function lh(e,t,r){let n=e.split("/").filter(Boolean).pop()??e;return`${r.slotMaterialAsset} ${t+1}: ${n}`}function PB(e,t,r,n,o){return X({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}var AM="materialAsset::",AB=5;function xB(e){return e.startsWith(AM)&&e.slice(AM.length).trim()||null}function MB(e,t,r,n,o,i){let a=[],s=dm(t),c=ro(s),d=t.overrides?.materialBinding,u=Ua(e,t.id)??t.overrides,l=u?.materialBinding??d,m=l?.materialAssetId??Vo,p=Le(e,m),f=l?.materialAssetId?l:{...l,materialAssetId:Vo};if(!fT(e,t)){let P="overrides.materialBinding.materialAssetId";a.push({id:"artistMaterial",title:c.title,order:46,placement:"body",summary:IM(f,p,c),persistence:"document",collapsedByDefault:!1,properties:[Xi.createSelectorInspectorPropertyWithUsage(e,r,{path:P,label:c.materialCard,value:d?.materialAssetId??"",order:0,text:c,currentAsset:p,currentAction:{actionId:"material.open-asset",params:{materialAssetId:p?.id,browserAssetId:p?`material:${p.id}`:void 0,sourceObjectId:t.id,sourceBindingPath:P}},previewContext:n},i)]})}let S=r==="primitive"?[]:PM.createChildMaterialBindingInspectorPropertiesWithUsage(e,t,r,i,u,n);return S.length>0&&a.push({id:"artistMaterialSlots",title:c.slotTitle,order:48,placement:"body",summary:TM(e,t,c),persistence:"document",collapsedByDefault:!1,properties:S}),a}function DB(e,t,r,n){let o=xB(t),i=o?Le(e,o):null;if(!i)return null;let a=ro("zh"),s=n.forMaterial(i.id),c=SM(e,i,a,0,r),d=`scene.materialAssets.${i.id}.properties`,u=`${d}.`,l=T=>T.path===d||T.path.startsWith(u),m=c.filter(T=>!l(T)),p=c.filter(l),f=[{path:`scene.materialAssets.${i.id}.preview`,label:i.name||i.id,valueType:"object",control:"custom",customControl:"asset-picker-card",value:i.id,readOnly:!0,persistence:"readonly",commitMode:"immediate",order:-10,controlOptions:{currentMaterialAssetId:i.id,currentMaterialShaderId:i.shaderId,currentLabel:i.name||i.id,currentMeta:i.shaderId,currentPreview:$a(i.properties,r)},document:e},...m,wB(`scene.materialAssets.${i.id}.usageCount`,"\u5F15\u7528",a.formatUsageCount(s.length),10)],g=[iu({path:`scene.materialAssets.${i.id}.actions.locate`,label:"\u5728 Assets \u4E2D\u5B9A\u4F4D",actionId:"material.locate-asset",icon:"asset",params:{materialAssetId:i.id,browserAssetId:`material:${i.id}`},order:20,tooltip:"\u5728 Assets \u9762\u677F\u4E2D\u5B9A\u4F4D\u5F53\u524D\u6750\u8D28\u3002",disabled:!1}),iu({path:`scene.materialAssets.${i.id}.actions.back`,label:"\u8FD4\u56DE\u6765\u6E90",actionId:"material.back-to-owner",icon:"chevron-left",params:{materialAssetId:i.id},order:21,tooltip:"\u8FD4\u56DE\u6253\u5F00\u5F53\u524D\u6750\u8D28\u524D\u7684\u5BF9\u8C61\u6216 Prefab Inspector\u3002",disabled:!1})],S=[{id:"materialAssetSummary",title:"Material",order:10,regionId:VI,persistence:"readonly",collapsedByDefault:!1,properties:f}];S.push({id:"materialAssetNavigation",title:"\u5BFC\u822A",order:15,placement:"body",persistence:"readonly",collapsedByDefault:!1,properties:g}),S.push({id:"materialReferences",title:`\u4F7F\u7528\u4F4D\u7F6E (${s.length})`,order:20,placement:"body",persistence:"readonly",collapsedByDefault:s.length===0,properties:[{path:`scene.materialAssets.${i.id}.references.browser`,label:"\u4F7F\u7528\u4F4D\u7F6E",valueType:"object",control:"custom",customControl:"material-reference-list",controlOptions:{previewLimit:AB,items:s.map((T,R)=>({key:`${T.scope}:${T.gameObjectId}:${T.bindingPath}:${R}`,label:T.label,scope:T.scope,actionId:"material.open-owner",params:Object.fromEntries(Object.entries({materialAssetId:i.id,ownerScope:T.scope,sourceObjectId:T.gameObjectId,sourceBindingPath:T.bindingPath,slotId:T.slotId,ownerNodePath:T.ownerNodePath,prefabAssetId:T.prefabAssetId,prefabNodeId:T.prefabNodeId}).filter(A=>typeof A[1]=="string"&&A[1].length>0))}))},value:s.length,readOnly:!1,persistence:"readonly",commitMode:"immediate",order:0,tooltip:s.length>0?"\u67E5\u770B\u4F7F\u7528\u5F53\u524D\u6750\u8D28\u7684 Scene \u5BF9\u8C61\u548C Prefab \u8282\u70B9\u3002":"\u5F53\u524D\u672A\u88AB\u4EFB\u4F55\u5BF9\u8C61\u6216 Prefab \u4F7F\u7528\u3002",document:e}]});let P=r.materialShaderDefinitions?.get(i.shaderId)??dr(i.shaderId);for(let[T,R]of[...P?.inspector.sections??[]].sort((A,E)=>A.order-E.order||A.id.localeCompare(E.id)).entries())xM(S,{id:`material${R.id.charAt(0).toUpperCase()}${R.id.slice(1)}`,title:R.title,order:R.order,properties:[...T===0?p.filter(A=>A.path===d):[],...p.filter(A=>A.controlOptions?.materialShaderSectionId===R.id)]});let x=new Set(S.flatMap(T=>T.properties.map(R=>R.path)));return xM(S,{id:"materialAdvanced",title:"Advanced",order:80,properties:p.filter(T=>!x.has(T.path))}),{targetIds:[t],activeId:t,label:i.name||i.id,document:e,selection:{targetIds:[t],activeId:t,scopeType:"scene",targetKind:"materialAsset",capabilities:["material"],document:e},sections:S}}function RB(e,t,r,n={},o){return MB(e,t,r,n,o,Lt.getCachedUsageIndex(e))}function OB(e,t,r={}){return DB(e,t,r,Lt.getCachedUsageIndex(e))}var CB={createArtistMaterialInspectorSectionsWithCachedUsage:RB,createEditorSceneMaterialAssetInspectorObjectWithCachedUsage:OB},uh=CB;function xM(e,t){t.properties.length!==0&&e.push({...t,placement:"body",persistence:t.properties.some(r=>r.persistence==="document")?"document":"readonly",collapsedByDefault:!1})}function wB(e,t,r,n,o){return X({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}var cd="groundDecal";function MM(e,t){if(e.scene?.kind!==cd)return null;let r=e.config;if(!Array.isArray(r.uiKinds)||!r.documentPolicy)return null;let n=r.documentPolicy;if(typeof n.createDefaultGroundDecal!="function"||typeof n.isGroundDecalConfig!="function")return null;let o=vB(n),i=s=>s?.transformType===cd&&o.isGroundDecalConfig(s.groundDecal);return kB({features:[e],documentPolicy:o,createInspectorServices:(s,c)=>_x({policy:{...o,...r.inspectorPolicy??{}},createDocumentInspectorProperty:s,normalizeValue:om,findTarget:(d,u)=>d.scene.gameObjects.find(l=>l.id===u)??null,getTargetId:d=>d.id,getTargetNodeKind:d=>d.kind??"transform",getTargetGroundDecal:d=>d.groundDecal??null,canShowTarget:i,isUiTarget:i,canPatchMultiField:c.canPatchMultiField,findTextureAsset:(d,u)=>dh(d,u??""),getMaterialText:ro,createTexturePickerControlOptions:(d,u,l,m)=>um(d,u,l??"",m)}),getDocumentInspectorPropertyFactory:t,createDefaultGroundDecal:o.createDefaultGroundDecal,createObjectPatch:s=>({kind:"game-object.create-primitive",gameObject:s}),isGroundDecalObject:i,createHierarchyLabel:r.createHierarchyLabel}).contribution}function vB(e){let t=e;return{...e,createDefaultGroundDecal:r=>structuredClone(e.createDefaultGroundDecal(r)),isGroundDecalConfig(r){return e.isGroundDecalConfig(structuredClone(r))},...typeof t.isProjectEditableLayer=="function"?{isProjectEditableLayer:r=>t.isProjectEditableLayer(structuredClone(r))}:{},...typeof t.isLayoutEditableLayer=="function"?{isLayoutEditableLayer:r=>t.isLayoutEditableLayer(structuredClone(r))}:{},...typeof t.isRotationEditableLayer=="function"?{isRotationEditableLayer:r=>t.isRotationEditableLayer(structuredClone(r))}:{}}}function kB(e){let r=(e.features.find(a=>a.id===cd)??null)?.config?.uiKinds,n=Array.isArray(r)?[...new Set(r.filter(a=>typeof a=="string"&&a.length>0))]:[],o=kx({...e.documentPolicy,canShowGroundDecalInspector:e.isGroundDecalObject,isGroundDecalUiGameObject:e.isGroundDecalObject}),i=_B({uiKinds:n,documentBridge:o,createInspectorServices:a=>e.createInspectorServices(a,o),getDocumentInspectorPropertyFactory:e.getDocumentInspectorPropertyFactory,createDefaultGroundDecal:e.createDefaultGroundDecal,createObjectPatch:e.createObjectPatch,canShowInspector:e.isGroundDecalObject,isGroundDecalObject:e.isGroundDecalObject,createHierarchyLabel:e.createHierarchyLabel});return{bridge:o,contribution:i,uiKinds:n,resolve(a){return a.id===cd&&a.scene?.kind===cd?i:null}}}function _B(e){let t=e.documentBridge;return{documentReducerImmutability:"preserves-input",normalizeInspectorValue:(n,o)=>n.startsWith("groundDecal.")?om(n,o):void 0,validateInspectorField({path:n,value:o}){if(n==="groundDecal.uiKind")return e.uiKinds.includes(String(o))?{ok:!0,value:o}:{ok:!1,message:"Invalid value for scene node field: groundDecal.uiKind."};if(n==="groundDecal.layers"){let i=t.normalizeLayoutPatchValue(o);return i?{ok:!0,value:i}:{ok:!1,message:"Invalid value for scene node field: groundDecal.layers."}}return Nx(n,o)},isInspectorPatchPath:tm,isProjectionPath:zx,normalizeDocumentAfterCommand:t.normalizeScalesForCommand,normalizeAfterFieldPatch:t.normalizeScaleAfterFieldPatch,fieldMutation:{isCustomTransformType:n=>n==="groundDecal",applyCustomTransformType(n,o){o==="groundDecal"&&(n.groundDecal=t.mergeDefaults(n.groundDecal))},clearCustomTransformState(n,o){o!=="groundDecal"&&delete n.groundDecal},patchCustomTransformField(n,o,i){return o.startsWith("groundDecal.")?(n.kind="transform",n.transformType=n.transformType??"groundDecal",delete n.primitive,n.groundDecal=t.mergeDefaults(n.groundDecal),jB(n,o,i),!0):!1}},createInspectorPropertyPatch({gameObject:n,path:o,value:i,collectChangedIds:a}){if(!e.isGroundDecalObject(n))return null;let s=rh(o,i);return s===null?null:{label:`Patch ${n.id} transform.scale`,patch:{kind:"game-object.field",targetId:n.id,path:"transform.scale",value:{x:s,y:s,z:s}},changedId:n.id,changedIds:a()}},patchGameObjectField:({document:n,targetId:o,path:i,value:a})=>i==="groundDecal.uiKind"?t.patchKind(n,o,a):i==="groundDecal.layers"?t.patchLayout(n,o,a):t.patchInspectorField(n,o,i,a),patchGameObjectsField:({document:n,targetIds:o,path:i,value:a,patchSingle:s})=>i==="groundDecal.uiKind"||i==="groundDecal.layers"||tm(i)?o.reduce((c,d)=>s(c,d,i,a),n):null,reducePatch:({document:n,patch:o})=>o.kind==="game-object.ground-decal-ui.replace"?t.replaceUi(n,String(o.targetId),o.groundDecal):null,createHierarchyPatch:(n,o)=>NB(n,o,e),createInspectorSections:n=>e.canShowInspector(n.gameObject)?[Hx(n.gameObject,n.nodeKind,n.context,e.createInspectorServices(n.createDocumentInspectorProperty))]:[],createMultiInspectorSection:({document:n,targetIds:o,activeId:i,context:a})=>Kx(n,o,i,a,e.createInspectorServices(e.getDocumentInspectorPropertyFactory())),resolveMultiInspectorTargetIds:(n,o)=>Wx(n,o,e.createInspectorServices(e.getDocumentInspectorPropertyFactory())),isSerializedMultiFieldPath:id,isSerializedMultiProjectionPath:id,getSerializedMultiProbeValue:GB,canPatchSerializedMultiField:({document:n,targetId:o,path:i,value:a})=>!id(i)||t.canPatchMultiField(n,o,i,a)}}function NB(e,t,r){let n=t.startsWith("ground-decal:")?t.slice(13):"";if(!r.uiKinds.includes(n))return null;let o=gr(e.scene.gameObjects.map(d=>d.id),`${n}_ground_decal_ui`),i=r.createHierarchyLabel?.(n)??`${n} Ground Decal UI`,a=new Set(e.scene.gameObjects.map(d=>d.name).filter(Boolean)),s=i;for(let d=2;a.has(s);d+=1)s=`${i} ${d}`;let c={id:o,guid:gt(),name:s,kind:"transform",parentId:ot(e)??void 0,active:!0,transformType:"groundDecal",groundDecal:r.createDefaultGroundDecal(n),components:[{type:"Transform",position:{x:0,y:.02,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}]};return{label:`Add ${i}`,patch:r.createObjectPatch(c),createdId:o,changedIds:[o],reprojectIds:[o]}}function jB(e,t,r){let n=t.split("."),o=e;for(let i of n.slice(0,-1))o=o[i]??={};o[n[n.length-1]]=r}function GB(e){if(e.endsWith(".width")||e.endsWith(".depth"))return 1;if(e.endsWith(".rotationDeg"))return 45;if(e.endsWith("textureWidth")||e.endsWith("textureHeight"))return 512;if(e==="groundDecal.layers")return{layers:[{id:"mainLogo",rect:{x:0,z:0,width:1,depth:1}}]};if(Ku(e))return"texture_probe";if(Yu(e))return"30";if(Wu(e)||Qu(e)||Ju(e))return{r:1,g:1,b:1,a:1};if(qu(e)||Zu(e)||Xu(e))return 1;if(em(e))return 75;if(Hu(e))return as({x:0,z:0,width:1,depth:1});if(Ko(e))return ad(512)}var mh=["model","texture","image","sound"],pm=[".glb",".gltf"],ph=[".png",".jpg",".jpeg",".webp"],DM=[".env",".hdr",".dds",".ktx",".ktx2"],fm=[...ph,...DM],gm=[".mp3",".wav",".ogg",".flac",".aac",".m4a"],ls=[...pm,...fm,...gm];function RM(e){return String(e??"").trim().toLowerCase().replace(/-/g,"")}function Sm(e,t){let r=RM(t);return`${e==="model"?"asset":e==="texture"?"texture":e==="sound"?"sound":"image"}_${r}`}function hm(e){let o=String(e??"").trim().split(/[^a-zA-Z0-9_$]+/).filter(Boolean).map((i,a)=>a===0?i:`${i.charAt(0).toUpperCase()}${i.slice(1)}`).join("").replace(/[^a-zA-Z0-9_$]/g,"")||"assetUrl";return/^[a-zA-Z_$]/.test(o)?o:`asset${o}`}function ym(e,t=""){let r=String(e??"").trim().toLowerCase();if(r==="glb"||r==="gltf"||r==="model")return"model";if(r==="groundtexture"||r==="ground-texture"||r==="texture")return"texture";if(r==="ui"||r==="image"||r==="img")return"image";if(r==="audio"||r==="sound")return"sound";let n=LB(t);return pm.includes(n)?"model":gm.includes(n)?"sound":fm.includes(n)?"texture":null}function LB(e){let t=e.split(/[?#]/,1)[0]??"",r=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\")),n=t.slice(r+1),o=n.lastIndexOf(".");return o>=0?n.slice(o).toLowerCase():""}function fh(e){let t=String(e??"").trim(),r=t.toLowerCase();for(let n of[...ls].sort((o,i)=>i.length-o.length))if(r.endsWith(n)){t=t.slice(0,-n.length);break}return t}function gh(e,t){return String(e??"").trim()||fh(t)||"Asset"}function Sh(e,t){return fh(e||t).trim().toLowerCase().normalize("NFKD").replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").replace(/_{2,}/g,"_")||null}function hh(e){return e==="model"?pm:e==="sound"?gm:e==="texture"?fm:e==="image"?ph:[]}function OM(e){let t=typeof e=="string"&&e.trim()?e.trim():void 0;if(!t)return;if(t.includes("\0"))throw new Error("external_asset_path_must_be_portable");let r=t.replace(/\\/g,"/");if(r.startsWith("/")||/^[a-z]:\//i.test(r)||/^[a-z][a-z0-9+.-]*:/i.test(r))throw new Error("external_asset_path_must_be_portable");let n=[];for(let o of r.split("/"))if(!(!o||o===".")){if(o==="..")throw new Error("external_asset_path_must_be_portable");n.push(o)}if(n.length===0)throw new Error("external_asset_path_must_be_portable");return n.join("/")}function We(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function bm(e,t=4,r="$"){if(!Number.isInteger(t)||t<0||t>100)throw new Error(`json.number.invalidDecimalPlaces: ${t}`);let n=[],o=i=>{if(typeof i=="number"){if(!Number.isFinite(i))throw new Error(`json.number.nonFinite: ${FB(r,n)}`);if(Object.is(i,-0))return 0;if(Number.isInteger(i))return i;let a=Number(i.toFixed(t));return Object.is(a,-0)?0:a}if(Array.isArray(i)){let a;for(let s=0;s<i.length;s+=1){let c=i[s];n.push(s);let d=o(c);n.pop(),!Object.is(d,c)&&(a??=i.slice(),a[s]=d)}return a??i}if(i&&typeof i=="object"){let a=i,s;for(let[c,d]of Object.entries(a)){n.push(c);let u=o(d);n.pop(),!Object.is(u,d)&&(s??={...a},s[c]=u)}return s??i}return i};return o(e)}function FB(e,t){return t.reduce((r,n)=>typeof n=="number"?`${r}[${n}]`:`${r}.${n}`,e)}function dd(){return{isCoreMaterialOverridePath:Pg,isMaterialAssetIdOverridePath:PT,addMaterialAsset:ju}}function CM(e){return e.assets.filter(Yt).flatMap(t=>{let r=t.prefab?.sourceAssetId;return typeof r!="string"||r.length===0?[]:[{id:`prefab:${t.id}`,assetId:t.id,guid:t.guid,type:"prefab",kind:"prefab",label:t.displayName??t.id,displayName:t.displayName??t.id,category:t.category??"Prefab",origin:"project",placeable:!0,dedupeKey:`prefab:${t.guid??t.id}`,prefab:{id:t.id,guid:t.guid,displayName:t.displayName??t.id,category:t.category??"Prefab",...structuredClone(t.prefab),sourceAssetId:r},metadata:structuredClone(t.metadata??{})}]})}function yh(e,t,r=dd()){if(e==="displayName"&&typeof t=="string")return t.trim();if(e==="prefab.defaults.active")return t??null;if(e==="prefab.defaults.shadowMapExperiment.behaviorProfile")return typeof t=="string"?t.trim()||null:t;if(Eh(e)){if(t==null||(e==="prefab.defaults.shadow.cast"||e==="prefab.defaults.shadow.receive")&&(t==="inherit"||t==="auto"))return null;if(e==="prefab.defaults.shadow.light.lightId"&&typeof t=="string"){let n=t.trim();return n||null}return t}if(r.isMaterialAssetIdOverridePath(e)&&typeof t=="string"){let n=t.trim();return n||null}return t}function bh(e,t,r=dd()){if(e==="displayName")return typeof t=="string"&&t.length>0;if(e==="prefab.defaults.active")return t==null||typeof t=="boolean";if(e==="prefab.defaults.shadowMapExperiment.behaviorProfile")return t==null||typeof t=="string"&&t.trim().length>0;if(Eh(e)){let n=e.slice(16);return Ya({path:n,nodeKind:"instance",value:t}).ok}return r.isCoreMaterialOverridePath(e)?r.isMaterialAssetIdOverridePath(e)&&(t==null||typeof t=="string"&&t.trim().length>0):!1}function Eh(e){return e.startsWith("prefab.defaults.shadow.")}function wM(e,t,r){let n=[...e.assets];r&&!n.some(i=>i.id===r.id)&&n.push(structuredClone(r));let o=Th(t);return n.some(i=>i.id===t.id)||n.push(structuredClone(o)),n.length===e.assets.length?e:{...e,assets:n}}function Ih(e,t,r,n,o=dd()){if(r==="displayName")return e;let i=e.assets.find(s=>s.id===t&&Yt(s));if(!i)return e;let a=$B(kM(i),r,n,o);return JSON.stringify(a)===JSON.stringify(i)?e:{...e,assets:e.assets.map(s=>s.id===t?a:s)}}function vM(e,t,r,n){let o=e.assets.find(s=>s.id===t&&Yt(s));if(!o)return e;let i=n&&!e.assets.some(s=>s.id===n.id)?[...e.assets,structuredClone(n)]:e.assets,a=Th({...structuredClone(r),id:t});return JSON.stringify(a)===JSON.stringify(o)&&i===e.assets?e:{...e,assets:i.map(s=>s.id===t?a:s)}}function $B(e,t,r,n=dd()){if(t==="displayName")return e;if(t==="prefab.defaults.active"||Eh(t)){let o=structuredClone(e),i=structuredClone(o.prefab??e.prefab);return i.defaults={...i.defaults??{}},t==="prefab.defaults.active"?r==null?delete i.defaults.active:i.defaults.active=r:(lt(i.defaults,t.slice(16),r),BB(i.defaults)),Object.keys(i.defaults).length===0&&delete i.defaults,o.prefab=i,Th(o)}return Mc(e,t,r)}function BB(e){let t=e.shadow;if(!t||typeof t!="object"||Array.isArray(t)){delete e.shadow;return}let r=t,n=r.light;n&&typeof n=="object"&&!Array.isArray(n)&&Object.keys(n).length===0&&delete r.light;let o=r.params;o&&typeof o=="object"&&!Array.isArray(o)&&Object.keys(o).length===0&&delete r.params,Object.keys(r).length===0&&delete e.shadow}function kM(e){if(!Yt(e))return e;let t=ET(e);return t.ok?t.prefabAsset:e}function Th(e){if(!Yt(e))return e;let t=kM(e),r=Xt(t);if(!r||!Array.isArray(t.prefab?.nodes))return t;let n=t.prefab.nodes.findIndex(i=>i.id===r);if(n<0)return t;let o=structuredClone(t.prefab.nodes[n]);return o.name=t.displayName??o.name,t.prefab.defaults?o.defaults=structuredClone(t.prefab.defaults):delete o.defaults,t.prefab.nodes=[...t.prefab.nodes],t.prefab.nodes[n]=o,t}function _M(e,t,r,n,o=dd()){let i=o.addMaterialAsset(e,n);return Ih(i,t,r,n.id,o)}function jM(e,t,r,n){let o=Jt(e,t.assetId),i=t.sourceAssetId??o?.prefab?.sourceAssetId,a=i?e.assets.find(l=>l.id===i):null,s=zB(a,i),c=Em(a),d=UB(c,!!n.importStructureReady),u=LM(n.importStructure)?FM(n.importStructure):[];return Im([s,...d?[d]:[],...u],r)}function zB(e,t){return{id:"prefab-source",label:e?.displayName??t??"Missing source asset",kind:"source",sourceAssetId:t,...e?.metadata?.relativePath?{meta:e.metadata.relativePath}:{}}}function UB(e,t){return e.length===0?null:{id:"prefab-material-slots",label:`${t?"Editable Material Slots":"Meshes / Materials"} (${e.length})`,kind:"group",children:[...e]}}function Em(e){return(Array.isArray(e?.metadata?.materialSlots)?e.metadata.materialSlots:[]).map(HB).filter(r=>!!r).map((r,n)=>{let o=r.sourceSurfaces[0],i=BM(o.ownerNodePath),a=Jn(r),s=a.map(m=>Jc(r,m)).filter(m=>!!m);if(s.length===0&&r.materialNames?.length&&s.push(...r.materialNames.filter(m=>typeof m=="string"&&!!m.trim())),s.length===0&&r.materialName&&s.push(r.materialName),!r.slotId)return null;let c=`prefab.overrides.materialSlotBindings.${r.slotId}`,d=o.sourceMaterialIndex,u=r.label??s[0]??i.split("/").filter(Boolean).pop()??`Material Slot ${n+1}`;return{id:`prefab-material-slot:${Ah(r.slotId??i,`material_slot_${n+1}`)}:${n+1}`,itemType:"prefab-material-slot",label:u,kind:"material",bindingKind:"slot",bindingPath:c,materialAssetIdPath:`${c}.materialAssetId`,profilePathPrefix:`${c}.override`,slotId:r.slotId,sourceSurfaces:structuredClone(r.sourceSurfaces),ownerNodePath:i,...typeof o.nodeIndex=="number"?{nodeIndex:o.nodeIndex}:{},...o.nodeIndexPath?.length?{nodeIndexPath:o.nodeIndexPath}:{},...typeof o.meshIndex=="number"?{meshIndex:o.meshIndex}:{},...typeof o.primitiveIndex=="number"?{primitiveIndex:o.primitiveIndex}:{},...d==null?{}:{sourceMaterialIndex:d},...a.length>0?{sourceMaterialIndices:a}:{},...s[0]?{sourceMaterialName:s[0]}:{},...s.length>0?{sourceMaterialNames:s}:{},...r.sourceSurfaces.length===1&&typeof o.triangleCount=="number"?{triangleCount:o.triangleCount}:{},...r.sourceSurfaces.length===1&&o.boundingBox?{boundingBox:o.boundingBox}:{},meta:[i,r.sourceSurfaces.length===1?`primitive #${o.primitiveIndex}`:`${r.sourceSurfaces.length} source surfaces`,s.length>0?s.join(", "):null].filter(Boolean).join(" - ")}}).filter(r=>r!=null)}function GM(e){return e.map(t=>[t.label,typeof t.primitiveIndex=="number"?`primitive #${t.primitiveIndex}`:null,typeof t.sourceMaterialIndex=="number"?`material #${t.sourceMaterialIndex}`:null,typeof t.triangleCount=="number"?`${t.triangleCount} triangles`:null,VB(t.boundingBox)].filter(Boolean).join(" \xB7 ")).join(`
5
+ `)}function VB(e){if(!e)return null;let t=e.min?e.min.join(", "):"",r=e.max?e.max.join(", "):"";return t&&r?`bounds min ${t}; max ${r}`:t?`bounds min ${t}`:r?`bounds max ${r}`:null}function HB(e){return eu(e)}function LM(e){return["nodes","materials","textures","animations"].some(t=>ld(e,t).length>0)}function FM(e){let t=[],r=ld(e,"nodes");r.length>0&&t.push({id:"prefab-import-nodes",label:`Nodes (${r.length})`,kind:"group",children:KB(r)});let n=ld(e,"materials");n.length>0&&t.push({id:"prefab-import-materials",label:`Materials (${n.length})`,kind:"group",children:n.map((a,s)=>Ph(a,s,"material"))});let o=ld(e,"textures");o.length>0&&t.push({id:"prefab-import-textures",label:`Textures (${o.length})`,kind:"group",children:o.map((a,s)=>Ph(a,s,"texture"))});let i=ld(e,"animations");return i.length>0&&t.push({id:"prefab-import-animations",label:`Animations (${i.length})`,kind:"group",children:i.map((a,s)=>Ph(a,s,"animation"))}),t}function KB(e){let t=e.map((o,i)=>{let a=Dt(o.id)??`runtime-node-${i+1}`,s=Dt(o.kind),c={id:`prefab-import-node:${Ah(a,`node_${i+1}`)}`,runtimeId:a,label:Dt(o.name)??Dt(o.sourceName)??a,kind:s==="mesh"?"mesh":s==="root"?"root":"group",...Dt(o.ownerNodePath)?{ownerNodePath:Dt(o.ownerNodePath)}:{},...Dt(o.sourceName)?{sourceName:Dt(o.sourceName)}:{},...Array.isArray(o.materialIds)?{materialIds:o.materialIds.filter(d=>typeof d=="string")}:{},children:[]};return{runtimeId:a,parentId:Dt(o.parentId),item:c}}),r=new Map(t.map(o=>[o.runtimeId,o.item])),n=[];for(let o of t)o.parentId&&r.has(o.parentId)?r.get(o.parentId).children.push(o.item):n.push(o.item);return n}function Ph(e,t,r){let n=Dt(e.id)??`${r}-${t+1}`,o=Dt(e.url),i=Array.isArray(e.nodeIds)?e.nodeIds.filter(s=>typeof s=="string"):[],a=Array.isArray(e.textureIds)?e.textureIds.filter(s=>typeof s=="string"):[];return{id:`prefab-import-${r}:${Ah(n,`${r}_${t+1}`)}`,itemType:r==="material"?"runtime-material":r==="texture"?"runtime-texture":"runtime-animation",runtimeId:n,label:Dt(e.name)??n,kind:r,...Dt(e.kind)?{runtimeKind:Dt(e.kind)}:{},...o?{url:o}:{},...i.length>0?{nodeIds:i}:{},...a.length>0?{textureIds:a}:{},meta:[Dt(e.kind),o,i.length>0?`${i.length} node${i.length===1?"":"s"}`:null,a.length>0?`${a.length} texture${a.length===1?"":"s"}`:null].filter(Boolean).join(" - ")}}function $M(e,t,r,n){if(r.itemType==="prefab-material-slot"||r.itemType==="runtime-material"||r.itemType==="runtime-texture")return r;if(r.itemType!=="prefab-node"||r.kind!=="model")return null;let o=typeof r.sourceAssetId=="string"?r.sourceAssetId:t.sourceAssetId;if(!o)return null;let i=e.assets.find(c=>c.id===o),a=Em(i);if(a.length>0){let c=a[0]??null;return c?{...c,...typeof r.nodeId=="string"?{prefabNodeId:r.nodeId}:{}}:null}return(LM(n.importStructure)?FM(n.importStructure).find(c=>c.id==="prefab-import-materials"):null)?.children?.[0]??null}function Im(e,t){for(let r of e){if(r.id===t)return r;let n=r.children?Im(r.children,t):null;if(n)return n}return null}function BM(e){return e.split("/").map(t=>t.trim()).filter(Boolean).join("/")}function Ah(e,t){return BM(e).toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||t}function ld(e,t){let n=NM(e)?.[t];return Array.isArray(n)?n.map(NM).filter(o=>!!o):[]}function NM(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Dt(e){return typeof e=="string"&&e.trim()?e.trim():null}var WB="sun_light";function qB(e,t,r={}){let n=XB(ez(e,t)),o=QB(e,t),i=ZB(t,"instance"),a=[...n.diagnostics,...o.diagnostics,...i.diagnostics];return{settings:Fn(r.project,n.settings,o.settings,r.node,i.settings),diagnostics:a}}function YB(e){let t=new Map,r=e.casterId;for(let n of e.explicitReceiverIds??[]){let o=Tm(e.document,n);!o||o.id===r||o.active===!1||t.set(o.id,{receiverId:o.id,source:"explicit",score:120,...ud(o,"explicit",120,["explicit receiver id"])})}for(let n of e.document.scene.gameObjects){if(n.id===r||n.active===!1)continue;let i=ct(n.shadow).shadow?.receive;if(i!=="none"){if(i==="enabled"){xh(t,{receiverId:n.id,source:"explicit",score:100,...ud(n,"explicit",100,["shadow.receive enabled"])});continue}if(i==="auto"){xh(t,{receiverId:n.id,source:"auto",score:70,...ud(n,"auto",70,["shadow.receive auto"])});continue}oz(n)&&xh(t,{receiverId:n.id,source:"auto",score:40,...ud(n,"auto",40,["plane primitive auto receiver"])})}}return[...t.values()].sort((n,o)=>o.score-n.score||n.receiverId.localeCompare(o.receiverId))}function us(e){let t=e.caster?.id===e.casterId?e.caster:Tm(e.document,e.casterId),r=[];if(!t)return{casterId:e.casterId,receiverIds:[],backend:"none",mode:"none",quality:e.fallbackQuality??"medium",params:El(e.fallbackQuality??"medium"),diagnostics:[{code:"shadow.invalidTarget",severity:"error",message:`Shadow caster "${e.casterId}" was not found.`,casterId:e.casterId}]};let n=e.settings?{settings:Fn(e.settings.project,e.settings.source,e.settings.prefab,e.settings.node,e.settings.instance),diagnostics:[]}:qB(e.document,t);r.push(...n.diagnostics);let i=n.settings?.cast==="none"?"none":xf(n.settings,e.fallbackMode??"none"),a=Mf(n.settings,e.fallbackQuality??"medium"),s=El(a,n.settings?.params),c=JB(i),d=rz(e.explicitReceiverIds),u=c==="none"?{candidates:[],diagnostics:[]}:d.length>0&&e.strictExplicitReceivers===!0?nz(e.document,t.id,d):{candidates:YB({document:e.document,casterId:t.id,explicitReceiverIds:d.length>0?d:void 0}),diagnostics:[]};r.push(...u.diagnostics);let l=u.candidates;c!=="none"&&l.length===0&&r.push({code:"shadow.receiverNotFound",severity:"warning",message:`No shadow receiver was found for caster "${t.id}".`,casterId:t.id});let m=c==="none"?null:tz(e.document,n.settings,e.defaultLightId);return m?.diagnostic&&r.push(m.diagnostic),{casterId:t.id,receiverIds:l.map(p=>p.receiverId),...m?.lightId?{lightId:m.lightId}:{},backend:c,mode:i,quality:a,params:s,diagnostics:r}}function JB(e){return e==="dynamic"?"dynamic-map":e==="static"?"static-baked":e==="blob"?"blob":e==="projected"?"projected":"none"}function XB(e){if(!e)return{diagnostics:[]};let t=e.defaults&&typeof e.defaults=="object"&&!Array.isArray(e.defaults)?e.defaults:void 0;if(!t)return{diagnostics:[]};let r=ct(t.shadow);return{settings:r.shadow,diagnostics:r.diagnostics.map(n=>({...n,details:{...n.details??{},source:"asset",assetId:e.id}}))}}function QB(e,t){let r=typeof t.prefab?.prefabId=="string"?t.prefab.prefabId:null;if(!r)return{diagnostics:[]};let n=e.assets.find(i=>i.id===r);if(!n?.prefab?.defaults)return{diagnostics:[]};let o=ct(n.prefab.defaults.shadow);return{settings:o.shadow,diagnostics:o.diagnostics.map(i=>({...i,details:{...i.details??{},source:"prefab",prefabId:r}}))}}function ZB(e,t){let r=ct(e.shadow);return{settings:r.shadow,diagnostics:r.diagnostics.map(n=>({...n,casterId:e.id,details:{...n.details??{},source:t}}))}}function ez(e,t){let n=Fe(t)?.assetId??t.prefab?.sourceAssetId;return n?e.assets.find(o=>o.id===n)??null:null}function tz(e,t,r){if((t?.light?.mode??"inherit")==="explicit"){let a=t?.light?.lightId;return a&&zM(e,a)?{lightId:a}:{diagnostic:{code:"shadow.lightNotFound",severity:"warning",message:a?`Explicit shadow light "${a}" was not found.`:"Shadow light mode is explicit, but no lightId was configured.",...a?{lightId:a}:{}}}}let o=r??WB;if(zM(e,o))return{lightId:o};let i=e.scene.gameObjects.find(a=>UM(a)&&a.active!==!1);return i?{lightId:i.id}:{diagnostic:{code:"shadow.lightNotFound",severity:"warning",message:"No directional shadow light was found."}}}function zM(e,t){let r=Tm(e,t);return!!r&&r.active!==!1&&UM(r)}function UM(e){return he(e)==="transform"&&e.light?.type==="directional"}function xh(e,t){let r=e.get(t.receiverId);(!r||t.score>r.score)&&e.set(t.receiverId,t)}function rz(e){let t=new Set,r=[];for(let n of e??[]){let o=typeof n=="string"?n.trim():"";!o||t.has(o)||(t.add(o),r.push(o))}return r}function nz(e,t,r){let n=[],o=[];for(let i of r){let a=Tm(e,i);if(!a){o.push({code:"shadow.receiverNotFound",severity:"warning",message:`Explicit shadow receiver "${i}" was not found.`,casterId:t,receiverId:i,details:{source:"explicit"}});continue}if(a.id===t){o.push({code:"shadow.receiverNotFound",severity:"warning",message:`Shadow caster "${t}" cannot be used as its own receiver.`,casterId:t,receiverId:i,details:{source:"explicit",reason:"self"}});continue}if(a.active===!1){o.push({code:"shadow.receiverNotFound",severity:"warning",message:`Explicit shadow receiver "${i}" is inactive.`,casterId:t,receiverId:i,details:{source:"explicit",reason:"inactive"}});continue}n.push({receiverId:a.id,source:"explicit",score:120,...ud(a,"explicit",120,["explicit receiver id"])})}return{candidates:n,diagnostics:o}}function ud(e,t,r,n){let o=ct(e.shadow).shadow;return{active:e.active!==!1,visible:e.active!==!1,...o?.receive?{receive:o.receive}:{},suitability:{score:r,material:he(e)==="primitive"?"primitive":t,reasons:n}}}function oz(e){return he(e)==="primitive"&&e.primitive?.shape==="plane"}function Tm(e,t){return e.scene.gameObjects.find(r=>r.id===t)??null}function VM(e,t,r={}){let n=Jt(e,t.assetId);if(!n?.prefab)return[{id:"prefab-scene",label:"Prefab Scene Tree",kind:"root",children:[]}];let o=Xt(n),i=Ig(n,null);return[{id:"prefab-root",label:"Prefab Scene Tree",kind:"root",children:(o?i.filter(s=>s.id===o):i).map(s=>HM(n,s))}]}function HM(e,t){let r=Ig(e,t.id).map(n=>HM(e,n));return{id:`prefab-node:${t.id}`,nodeId:t.id,label:t.name??iz(t),kind:t.kind,itemType:"prefab-node",...t.guid?{guid:t.guid}:{},...t.sourceAssetId?{sourceAssetId:t.sourceAssetId}:{},...t.childPrefabId?{childPrefabId:t.childPrefabId}:{},...t.sourceNodePath?{sourceNodePath:t.sourceNodePath}:{},...t.transform?{transform:structuredClone(t.transform)}:{},...t.primitive?{primitive:structuredClone(t.primitive)}:{},...t.marker?{marker:structuredClone(t.marker)}:{},...t.defaults&&Object.keys(t.defaults).length>0?{defaults:structuredClone(t.defaults)}:{},...t.overrides&&Object.keys(t.overrides).length>0?{overrides:structuredClone(t.overrides)}:{},...r.length>0?{children:r}:{}}}function iz(e){return e.kind==="model"?e.sourceAssetId??e.id:e.kind==="prefabInstance"?e.childPrefabId??e.id:e.kind==="primitive"?e.primitive?.shape??e.id:e.id}function KM(e,t,r){if(t.itemType!=="prefab-node"||t.kind!=="model")return null;let n=typeof t.sourceAssetId=="string"?t.sourceAssetId:null;if(!n)return null;let o=e.assets.find(f=>f.id===n),i=Em(o),a=Am(o?.metadata?.assetAnalysis),s=Mh(a?.nodes),c=Mh(a?.meshes),d=Pm(r.importStructure,"nodes").length,u=Pm(r.importStructure,"materials").length,l=Pm(r.importStructure,"textures").length,m=Pm(r.importStructure,"animations").length,p=[Kr("prefab.sourceStructure.sourceAsset","Source Asset",o?.displayName??n,0),Kr("prefab.sourceStructure.assetId","Asset ID",n,1)];return o?.metadata?.relativePath&&p.push(Kr("prefab.sourceStructure.relativePath","Relative Path",String(o.metadata.relativePath),2)),p.push(Kr("prefab.sourceStructure.materialSlots","Material Slots",String(i.length),10),Kr("prefab.sourceStructure.modelNodes","Model Nodes",s.length>0?az(s):"No SDK node analysis",11),Kr("prefab.sourceStructure.meshPrimitives","Mesh Primitives",c.length>0?sz(c):"No SDK mesh primitive analysis",12),Kr("prefab.sourceStructure.runtimeNodes","Runtime Nodes",String(d),20),Kr("prefab.sourceStructure.runtimeMaterials","Runtime Materials",String(u),21),Kr("prefab.sourceStructure.runtimeTextures","Runtime Textures",String(l),22),Kr("prefab.sourceStructure.runtimeAnimations","Runtime Animations",String(m),23)),i.length>0&&p.push(Kr("prefab.sourceStructure.materialSlotSummary","Material Slot Summary",GM(i),30)),{id:"prefab-source-structure",title:"Source Structure",summary:o?"Readonly GLB / glTF anatomy":"Missing source asset",persistence:"readonly",effect:o?"active":"unsupported",properties:p}}function az(e){return e.slice(0,8).map((t,r)=>{let n=xm(t.ownerNodePath)??xm(t.name)??`node #${typeof t.nodeIndex=="number"?t.nodeIndex:r}`,o=typeof t.meshIndex=="number"?`mesh #${t.meshIndex}`:null,i=typeof t.primitiveCount=="number"?`${t.primitiveCount} primitives`:null;return[n,o,i].filter(Boolean).join(" \xB7 ")}).join(`
6
+ `)}function sz(e){return e.slice(0,8).map((t,r)=>{let n=xm(t.name)??`mesh #${typeof t.meshIndex=="number"?t.meshIndex:r}`,o=Mh(t.primitives);if(o.length===0)return n;let i=o.slice(0,6).map((a,s)=>[`p${typeof a.primitiveIndex=="number"?a.primitiveIndex:s}`,typeof a.sourceMaterialIndex=="number"?`mat #${a.sourceMaterialIndex}`:null,xm(a.materialName),typeof a.triangleCount=="number"?`${a.triangleCount} tri`:null].filter(Boolean).join(" ")).join(", ");return`${n}: ${i}`}).join(`
7
+ `)}function Pm(e,t){let n=Am(e)?.[t];return Array.isArray(n)?n.map(Am).filter(o=>!!o):[]}function Am(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Mh(e){return Array.isArray(e)?e.map(Am).filter(t=>!!t):[]}function xm(e){return typeof e=="string"&&e.trim()?e.trim():null}function Kr(e,t,r,n,o){return X({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}function WM(e,t,r,n){let o=Au("en"),i=e.prefab?.defaults,a=ct(i?.shadow),s=dz(t),c=us(cz(e,t,n)),d=c.diagnostics.map(l=>`${l.severity}:${l.code} - ${l.message}`).join(`
8
+ `),u=[X({path:"prefab.shadow.resolved.source",label:o.resolvedSource,value:a.shadow?"Prefab defaults":s?o.sourceAssetDefaults:o.sourceInherited,order:r+0,source:"Derived",tooltip:o.tooltips.resolvedSource}),X({path:"prefab.shadow.resolved.policy",label:o.resolvedPolicy,value:`${o.summaryPolicy(c.mode)} / ${c.backend}`,order:r+1,source:"Derived",tooltip:o.tooltips.resolvedPolicy}),X({path:"prefab.shadow.resolved.quality",label:o.resolvedQuality,value:c.quality,order:r+2,source:"Derived",tooltip:o.tooltips.resolvedQuality}),X({path:"prefab.shadow.resolved.receiver",label:o.resolvedReceivers,value:c.receiverIds.length>0?c.receiverIds.join(", "):o.none,order:r+3,source:"Derived",tooltip:o.tooltips.resolvedReceivers}),X({path:"prefab.shadow.resolved.light",label:o.resolvedLight,value:c.lightId??o.none,order:r+4,source:"Derived",tooltip:o.tooltips.resolvedLight})];return c.mode==="static"&&u.push(X({path:"prefab.shadow.static.bakeState",label:o.staticBakeState,value:o.staticBakeAuthored,order:r+5,source:"Derived",tooltip:o.tooltips.staticBakeState})),d&&u.push(X({path:"prefab.shadow.resolved.diagnostics",label:o.resolvedDiagnostics,value:d,order:r+6,source:"Derived",tooltip:o.tooltips.resolvedDiagnostics,effect:c.diagnostics.some(l=>l.severity==="error")?"unsupported":"derived"})),u.filter(l=>!!l)}function cz(e,t,r){let n=e.prefab?.defaults,o="prefab-stage:shadow-default-caster",i="prefab-stage:shadow-default-receiver",a=r.defaultShadowMode??"none",s=r.sunLightId??"sun_light";return{document:{schemaVersion:1,assets:t?[t]:[],scene:{gameObjects:[{id:"prefab-stage:shadow-root",name:"Prefab Stage Shadow Root",kind:"group",components:[r.createIdentityTransformComponent()]},{id:o,name:e.displayName??e.id,kind:"instance",parentId:"prefab-stage:shadow-root",...n?.shadow?{shadow:n.shadow}:{},components:[r.createIdentityTransformComponent(),...t?[{type:"ModelRenderer",assetId:t.id}]:[]]},{id:i,name:"Prefab Stage Shadow Receiver",kind:"primitive",parentId:"prefab-stage:shadow-root",primitive:{shape:"plane"},shadow:{receive:"enabled"},components:[r.createIdentityTransformComponent()]},{id:s,name:"Prefab Stage Directional Light",kind:"transform",parentId:"prefab-stage:shadow-root",light:r.mergeLightDefaults(void 0,"directional"),components:[r.createIdentityTransformComponent()]}]}},casterId:o,fallbackMode:a==="planar"?"projected":a}}function dz(e){let t=e?.defaults;if(t)return ct(t.shadow).shadow}function qM(e,t,r){let n=Au("en"),o=e.prefab?.defaults?.shadow,i=Bo(o?.cast),a=Bo(o?.receive);return[xn({path:"prefab.defaults.shadow.cast",label:"Default Caster",valueType:"enum",control:"boolean",value:i.value,mixed:i.mixed,coerce:zo,order:t+0,tooltip:n.tooltips.cast},r),xn({path:"prefab.defaults.shadow.receive",label:"Default Receiver",valueType:"enum",control:"boolean",value:a.value,mixed:a.mixed,coerce:zo,order:t+1,tooltip:n.tooltips.receive},r),xn({path:"prefab.defaults.shadow.mode",label:"Default Shadow Policy",valueType:"enum",control:"enum",value:o?.mode??"inherit",options:Xg(n),order:t+2,tooltip:n.tooltips.policy},r),xn({path:"prefab.defaults.shadow.quality",label:"Default Shadow Quality",valueType:"enum",control:"enum",value:o?.quality??"inherit",options:Qg(n),order:t+3,tooltip:n.tooltips.quality},r),xn({path:"prefab.defaults.shadow.light.mode",label:"Default Shadow Light",valueType:"enum",control:"enum",value:o?.light?.mode??"inherit",options:Zg(n),order:t+4,tooltip:n.tooltips.light},r),xn({path:"prefab.defaults.shadow.light.lightId",label:"Default Explicit Light ID",valueType:"string",control:"string",value:o?.light?.lightId??"",order:t+5,tooltip:n.tooltips.lightId},r),...[["prefab.defaults.shadow.params.opacity",n.opacity,o?.params?.opacity??null,n.tooltips.opacity],["prefab.defaults.shadow.params.softness",n.softness,o?.params?.softness??null,n.tooltips.softness],["prefab.defaults.shadow.params.bias",n.bias,o?.params?.bias??null,n.tooltips.bias],["prefab.defaults.shadow.params.normalBias",n.normalBias,o?.params?.normalBias??null,n.tooltips.normalBias],["prefab.defaults.shadow.params.maxDistance",n.maxDistance,o?.params?.maxDistance??null,n.tooltips.maxDistance],["prefab.defaults.shadow.params.resolution",n.resolution,o?.params?.resolution??null,n.tooltips.resolution],["prefab.defaults.shadow.params.cascadeCount",n.cascadeCount,o?.params?.cascadeCount??null,n.tooltips.cascadeCount],["prefab.defaults.shadow.params.bakeSamples",n.bakeSamples,o?.params?.bakeSamples??null,n.tooltips.bakeSamples],["prefab.defaults.shadow.params.blurKernel",n.blurKernel,o?.params?.blurKernel??null,n.tooltips.blurKernel]].map(([s,c,d,u],l)=>xn({path:s,label:c,valueType:"number",control:"number",value:d,order:t+10+l,tooltip:u},r))]}function xn(e,t){let r=n=>t.normalizePrefabAssetFieldValue(e.path,e.coerce?e.coerce(n):n);return{path:e.path,label:e.label,valueType:e.valueType,control:e.control,value:e.value,...e.mixed===!0?{mixed:!0}:{},readOnly:!1,persistence:"document",commitMode:e.control==="string"?"blur":"immediate",order:e.order,...e.options?{options:e.options}:{},...e.tooltip?{tooltip:e.tooltip}:{},validate:n=>t.validatePrefabAssetFieldValue(e.path,r(n))?{ok:!0,value:r(n)}:{ok:!1,message:`Invalid prefab field: ${e.path}.`},coerce:r}}function lz(e,t,r,n,o,i){return r.itemType==="prefab-material-slot"?uz(e,t,r,n,o,i()):r.itemType==="runtime-material"?YM("This runtime material has no stable slotId or ownerNodePath mapping.",r):r.itemType==="runtime-texture"?YM("Texture nodes are inspection-only. Edit texture channels from a stable material slot.",r):null}function uz(e,t,r,n,o,i){let a=ro("en"),s=AT(t,r),c=r.prefabNodeId?za(t,r.prefabNodeId):null,d=r.prefabNodeId&&r.slotId?c?.overrides?.materialSlotBindings?.[r.slotId]:s,u=typeof d?.materialAssetId=="string"?d.materialAssetId:"",l=u||(typeof s?.materialAssetId=="string"?s.materialAssetId:""),m=e,p=Le(m,l||Vo);return{id:"prefab-material-override-target",title:"Material Slot",order:20,placement:"body",summary:p?.name??"Unassigned",persistence:"document",effect:"active",collapsedByDefault:!1,properties:[ms("prefab.materialOverride.status","Status","Editable",0),ms("prefab.materialOverride.bindingPath","Binding Path",r.bindingPath,1),ms("prefab.materialOverride.materialAssetPath","Material Asset Path",r.materialAssetIdPath,2),Xi.createSelectorInspectorPropertyWithUsage(m,"instance",{path:r.materialAssetIdPath,label:"Material",value:u,order:10,text:a,currentAsset:p,currentAction:{actionId:"material.open-asset",params:{materialAssetId:p?.id,browserAssetId:p?`material:${p.id}`:void 0,sourceObjectId:t.id,ownerScope:"prefab",prefabAssetId:t.id,prefabNodeId:r.prefabNodeId,sourceBindingPath:r.materialAssetIdPath}},previewContext:n},i)]}}function mz(e,t,r,n,o){return lz(e,t,r,n,o,()=>Lt.getCachedUsageIndex(e))}var pz={createEditorScenePrefabMaterialOverrideInspectorSectionWithCachedUsage:mz},JM=pz;function YM(e,t){return{id:"prefab-material-override-target",title:"Prefab Material Override",order:20,placement:"body",summary:e,persistence:"readonly",effect:"unsupported",collapsedByDefault:!1,properties:[ms("prefab.materialOverride.status","Status","Read Only",0),ms("prefab.materialOverride.reason","Reason",e,1),ms("prefab.materialOverride.runtimeId","Runtime ID",t.runtimeId??t.id,2)]}}function ms(e,t,r,n,o){return X({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}function fz(e,t,r,n,o,i){let a=Jt(e,t.assetId);if(!a)return null;let s=t.sourceAssetId?e.assets.find(S=>S.id===t.sourceAssetId)??null:null,c=r?Im(VM(e,t,n),r)??jM(e,t,r,n):null,d=c?$M(e,t,c,n):null,u=d?i(e,a,d,n,o):null,l=c?KM(e,c,n):null,m=typeof c?.nodeId=="string"?c.nodeId:null,p=m?za(a,m):null,f=p&&p.kind!=="root"&&p.transform?.mode!=="matrix"?hz(a,p):null,g=p?.kind==="marker"&&p.marker?Iz(a,p,o):null;return{targetIds:[a.id],activeId:a.id,label:n.importStructureReady?"Prefab Runtime Ready":t.label,document:e,selection:{targetIds:[a.id],activeId:a.id,scopeType:"prefab-stage",targetKind:"prefab",document:e},sections:[{id:"prefab-stage",title:"Prefab Stage",summary:n.importStructureReady?"Runtime Ready":"Preview",persistence:"document",properties:[xn({path:"displayName",label:"Display Name",valueType:"string",control:"string",value:a.displayName??a.id,order:0},o),X({path:"prefab.sourceAssetId",label:"Source Asset",value:s?.displayName??t.sourceAssetId??"Missing",order:1}),xn({path:"prefab.defaults.active",label:"Default Active",valueType:"boolean",control:"boolean",value:a.prefab?.defaults?.active??!0,order:2},o),...WM(a,s,3,o),...qM(a,10,o),X({path:"prefab.selectedItem",label:"Selected Item",value:r??"Preview Root",order:90})].filter(S=>!!S)},...f?[f]:[],...g?[g]:[],...l?[l]:[],...u?[u]:[]]}}function gz(e,t,r,n={},o){return fz(e,t,r,n,o,JM.createEditorScenePrefabMaterialOverrideInspectorSectionWithCachedUsage)}var Sz={createEditorScenePrefabStageInspectorObjectWithCachedMaterialUsage:gz},QM=Sz;function hz(e,t){let r=yz(t),n=t.parentId?za(e,t.parentId):null,o=[],i=0;for(let a of["position","rotation","scale"])for(let s of["x","y","z"]){let c=r[a][s];o.push({path:`transform.${a}.${s}`,label:`${bz(a)}.${s}`,valueType:"number",control:"number",value:a==="rotation"?Ez(c):c,readOnly:!1,persistence:"document",commitMode:"live",order:i,step:a==="rotation"?1:.1,validate:d=>typeof d=="number"&&Number.isFinite(d)?{ok:!0,value:d}:{ok:!1,message:"Transform value must be a finite number."},coerce:d=>typeof d=="number"?d:Number(d)}),i+=1}return{id:"transform",title:"Transform",summary:`Relative to: ${n?.name??n?.id??"Prefab"}`,order:20,placement:"body",persistence:"document",collapsedByDefault:!1,properties:o}}function yz(e){return e.transform?.type==="Transform"&&e.transform.mode!=="matrix"?{...e.transform,mode:e.transform.mode??"trs",scale:e.transform.scale??{x:1,y:1,z:1}}:{type:"Transform",mode:"trs",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}}function bz(e){return e==="position"?"Position":e==="rotation"?"Rotation":"Scale"}function Ez(e){return Math.round(e*180/Math.PI*1e6)/1e6}function Iz(e,t,r){let n=t.marker,o=n.target??null,i=o?XM(o):"",a=[{label:"Unbound",value:""},...Gr(e).filter(c=>c.id!==t.id).map(c=>{let d=c.kind==="marker"?"marker":"scene-object";return{label:c.name??c.id,value:XM({kind:d,id:c.id})}})];o&&i&&!a.some(c=>c.value===i)&&a.push({label:`Missing: ${o.id}`,value:i});let s=r.markerTypeCatalog.map(c=>({label:c.label||c.type,value:c.type}));return s.some(c=>c.value===n.type)||s.push({label:`Missing: ${n.type}`,value:n.type}),{id:"prefab-marker",title:"Marker",summary:r.markerTypeCatalog.find(c=>c.type===n.type)?.label??n.type,order:35,placement:"body",persistence:"document",collapsedByDefault:!1,properties:[md({path:"prefab.marker.type",label:"Marker Type",valueType:"enum",control:"enum",value:n.type,options:s,order:0,validate:c=>typeof c=="string"&&r.markerTypeCatalog.some(d=>d.type===c)}),X({path:"prefab.marker.kind",label:"Semantic Kind",value:n.kind??"point",order:1,source:"Derived"}),X({path:"prefab.marker.geometry",label:"Geometry",value:n.geometry.kind,order:2,source:"Derived"}),md({path:"prefab.marker.target",label:"Target",valueType:"enum",control:"enum",value:i,options:a,order:3,validate:c=>typeof c=="string"&&a.some(d=>d.value===c)}),X({path:"prefab.marker.targetStatus",label:"Target Status",value:o?a.some(c=>c.value===i&&!c.label.startsWith("Missing:"))?"Resolved":"Unresolved local reference":"Unbound",order:4,source:"Derived"}),md({path:"prefab.marker.tags",label:"Tags",valueType:"string",control:"string",value:n.tags?.join(", ")??"",order:5,validate:c=>typeof c=="string"}),md({path:"prefab.marker.note",label:"Note",valueType:"string",control:"string",value:n.note??"",order:6,validate:c=>typeof c=="string"}),md({path:"prefab.marker.color",label:"Color",valueType:"color",control:"color",value:n.color??{r:.1,g:.85,b:1},order:7,validate:Tz})].filter(c=>!!c)}}function md(e){return{path:e.path,label:e.label,valueType:e.valueType,control:e.control,value:e.value,readOnly:!1,persistence:"document",commitMode:e.control==="string"?"blur":"immediate",order:e.order,...e.options?{options:e.options}:{},validate:t=>e.validate(t)?{ok:!0,value:t}:{ok:!1,message:`Invalid Prefab Marker field: ${e.path}.`}}}function XM(e){return`${e.kind}:${encodeURIComponent(e.id)}`}function Tz(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return["r","g","b"].every(r=>typeof t[r]=="number"&&Number.isFinite(t[r])&&t[r]>=0&&t[r]<=1)}function ZM(e,t){let r=_o(e,t.id);if(!r.prefab)return null;let n=r.diagnostics.filter(m=>m.severity==="error").length,o=r.diagnostics.filter(m=>m.severity==="warning").length,i=r.diagnostics.filter(m=>m.severity==="info").length,a=r.diagnostics.length>0,s=n>0?"unsupported":a?"derived":"active",c=n>0?"Prefab relation is incomplete; fix the missing definition or source asset before using prefab actions.":void 0,d=r.definition?.displayName??r.definition?.id??r.prefab.prefabId,u=r.sourceAsset?.displayName??r.sourceAsset?.id??r.prefab.sourceAssetId??"Missing",l=[X({path:"prefab.relation.definition",label:"Prefab Definition",value:d,order:0,source:"Document",effect:s}),X({path:"prefab.relation.source",label:"Source Model",value:u,order:1,source:r.sourceAsset?"Asset":"Document",effect:s,disabledReason:c})].filter(m=>!!m);return a&&l.push(X({path:"prefab.relation.diagnostics",label:"Diagnostics",value:r.diagnostics.map(m=>`${m.severity}:${m.code} - ${m.message}`).join(`
9
+ `),order:2,source:"Derived",effect:s,disabledReason:c})),l.push(Dh({path:"prefab.actions.editDefinition",label:"Edit Prefab",actionId:"prefab.edit-definition",order:10,icon:"prefab",tooltip:"Open the prefab definition stage.",params:{assetId:r.definition?.id??r.prefab.prefabId,browserAssetId:r.definition?`prefab:${r.definition.id}`:void 0},disabled:!r.definition,disabledReason:c,effect:s})),l.push(Dh({path:"prefab.actions.selectDefinition",label:"Select Prefab",actionId:"prefab.select-definition",order:11,icon:"prefab",tooltip:"Select the prefab asset in the asset browser.",params:{assetId:r.definition?.id??r.prefab.prefabId,browserAssetId:r.definition?`prefab:${r.definition.id}`:void 0},disabled:!r.definition,disabledReason:c,effect:s})),l.push(Dh({path:"prefab.actions.pingSource",label:"Ping Source",actionId:"prefab.ping-source",order:12,icon:"asset",tooltip:"Select the prefab source asset in the asset browser.",params:{assetId:r.sourceAsset?.id??r.prefab.sourceAssetId},disabled:!r.sourceAsset,disabledReason:c,effect:s})),{id:"prefab-instance",title:"Prefab",order:48,placement:"body",summary:n>0?`${n} ${n===1?"error":"errors"}`:o>0?"Warning":i>0?"Info":"Ready",persistence:"readonly",effect:s,disabledReason:c,collapsedByDefault:!1,properties:l}}function Dh(e){let t=Object.fromEntries(Object.entries(e.params).filter(r=>typeof r[1]=="string"&&r[1].length>0));return{path:e.path,label:e.label,valueType:"string",control:"custom",customControl:"inspector-action-button",controlOptions:{actionId:e.actionId,label:e.label,icon:e.icon,params:t,...e.disabled?{disabled:!0}:{},...e.disabledReason?{disabledReason:e.disabledReason}:{}},value:e.actionId,readOnly:!1,persistence:"readonly",commitMode:"immediate",order:e.order,tooltip:e.disabledReason??e.tooltip,effect:e.effect,disabledReason:e.disabled?e.disabledReason:void 0}}function eD(e){return e==="cube"||e==="sphere"||e==="plane"||e==="capsule"?e:null}function Xe(e){return!!e?.marker}function Rh(e){return e.kind==="point"&&e.coordinateSpace!=="world"||e.kind==="object-bounds"}function Qi(e){for(let t of e.components){if(t.type!=="Transform")continue;let r=t.scale;return Az(r)?qe(r):it(1,1,1)}return it(1,1,1)}function Mn(e,t){let r=Qt(e,t);return r&&jr(r)?r:null}function Oh(e,t,r){let n=Xn(e,t??void 0,r);return n&&jr(n)?n:null}function tD(e,t){let r=Mn(e,t.id);return r?{origin:qe(r.position),right:ps(it(1,0,0),r.rotation),up:ps(it(0,1,0),r.rotation),forward:ps(it(0,0,1),r.rotation),label:t.name??t.id}:null}function rD(e,t){let r=vh(t);if(r?.kind!=="scene-object")return null;let n=e.scene.gameObjects.find(i=>i.id===r.id)??null,o=Mn(e,r.id);return!n||!o?null:{origin:qe(o.position),right:ps(it(1,0,0),o.rotation),up:ps(it(0,1,0),o.rotation),forward:ps(it(0,0,1),o.rotation),label:r.label||n.name||r.id}}function no(e,t,r,n={}){let o=t.trim(),i=o?ka(Mz(e),n).find(a=>a.type===o)?.kind:void 0;return Mm(i??r??(o?void 0:"point"))}function Mm(e){let t=e?.trim();return t?t==="object-bound"||t==="object-bounds"?"object":t:"point"}function nD(e,t){return Ch(t)?"box":wh(t)&&vh(e)?"object-bounds":"point"}function Dm(e,t,r,n,o={}){let i=Mn(e,t.id),a=qe(i?.position??it(0,0,0)),s=qe(i?.rotation??it(0,0,0)),c=Pz(e,t,r,o)?fs(r):qe(i?.scale??Qi(t));if(Ch(r))return{kind:"box",coordinateSpace:"world",center:a,size:Cm(c),rotation:s};let d=vh(t.marker);return wh(r)&&d?{kind:"object-bounds",target:d}:n?.kind==="point"?structuredClone(n):{kind:"point",coordinateSpace:"world",position:a,...d?{target:d}:{}}}function oD(e,t,r,n,o){if(o)return wh(n)||r.kind==="object-bounds"?{kind:"object-bounds",target:structuredClone(o)}:r.kind==="point"?{...structuredClone(r),target:structuredClone(o)}:structuredClone(r);if(r.kind==="object-bounds"){let i=Mn(e,t.id);return{kind:"point",coordinateSpace:"world",position:qe(i?.position??it(0,0,0))}}if(r.kind==="point"){let i=structuredClone(r);return delete i.target,i}return structuredClone(r)}function iD(e,t){let r=e.scene.gameObjects.find(n=>n.id===t)??null;return!r||Xe(r)?null:{kind:"scene-object",id:r.id,label:r.name||r.id}}function Pz(e,t,r,n={}){let o=no(e,t.marker.type,t.marker.kind,n);if(o===r)return!1;let i=Mn(e,t.id)?.scale??Qi(t);return sD(i,fs(o))}function aD(e,t,r,n={}){if(!Xe(t))return!1;let o=no(e,t.marker.type,t.marker.kind,n),i=Mm(r.kind);if(o===i&&t.marker.geometry.kind===r.geometry.kind)return!1;let a=Mn(e,t.id)?.scale??Qi(t);return sD(a,fs(o))}function fs(e){return Ch(e)?it(4,1,4):it(.5,.5,.5)}function Ch(e){return Mm(e)==="region"}function wh(e){return Mm(e)==="object"}function vh(e){return e.target?structuredClone(e.target):e.geometry.kind==="point"&&e.geometry.target||e.geometry.kind==="object-bounds"?structuredClone(e.geometry.target):null}function sD(e,t){return Math.abs(e.x-t.x)<1e-6&&Math.abs(e.y-t.y)<1e-6&&Math.abs(e.z-t.z)<1e-6}function cD(e){switch(e.kind){case"box":return{kind:"box"};case"point":return{kind:"point",coordinateSpace:e.coordinateSpace,...e.coordinateSpace==="local"?{position:qe(e.position)}:{},...e.target?{target:structuredClone(e.target)}:{}};case"object-bounds":return{kind:"object-bounds",target:structuredClone(e.target)};case"polyhedron":return{kind:"polyhedron",coordinateSpace:e.coordinateSpace,vertices:e.vertices.map(qe),...e.faces?{faces:e.faces.map(t=>[...t])}:{}}}}function Rm(e){switch(e.kind){case"box":return qe(e.center);case"point":return e.coordinateSpace==="world"?qe(e.position):it(0,0,0);case"polyhedron":return xz(e.vertices);case"object-bounds":return it(0,0,0)}}function Om(e){return e.kind==="box"&&e.rotation?qe(e.rotation):it(0,0,0)}function kh(e,t){return e.kind==="box"?Cm(e.size):qe(t)}function Cm(e){return{x:Math.max(1e-6,Math.abs(e.x)),y:Math.max(1e-6,Math.abs(e.y)),z:Math.max(1e-6,Math.abs(e.z))}}function wm(e){return e.trim().replace(/[^a-zA-Z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")}function qe(e){return{x:e.x,y:e.y,z:e.z}}function Az(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.x=="number"&&typeof t.y=="number"&&typeof t.z=="number"}function it(e,t,r){return{x:e,y:t,z:r}}function dD(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function ps(e,t){let r=Math.cos(t.x),n=Math.sin(t.x),o=Math.cos(t.y),i=Math.sin(t.y),a=Math.cos(t.z),s=Math.sin(t.z),c={x:e.x,y:e.y*r-e.z*n,z:e.y*n+e.z*r},d={x:c.x*o+c.z*i,y:c.y,z:-c.x*i+c.z*o};return{x:d.x*a-d.y*s,y:d.x*s+d.y*a,z:d.z}}function xz(e){if(e.length===0)return it(0,0,0);let t={x:Math.min(...e.map(n=>n.x)),y:Math.min(...e.map(n=>n.y)),z:Math.min(...e.map(n=>n.z))},r={x:Math.max(...e.map(n=>n.x)),y:Math.max(...e.map(n=>n.y)),z:Math.max(...e.map(n=>n.z))};return{x:(t.x+r.x)/2,y:(t.y+r.y)/2,z:(t.z+r.z)/2}}function Mz(e){return e.scene.markerGraph??null}function vm(e,t={}){let r=kz(e,t);if(r!==e)return vm(r,t);let n=Dz(e);if(n!==e)return vm(n,t);let o=km(e);if(!o)return e;let i=Kn(o),a=Rz(e,i);return yc(o,a)?e:tg(e,a)}function Dz(e){let t=km(e),r=t?Kn(t):null;if(!r||r.markers.length===0)return e;let n=new Set(e.scene.gameObjects.map(c=>c.id)),o=new Map,i=[];for(let c of r.markers){if(e.scene.gameObjects.some(u=>u.id===c.id&&Xe(u))){o.set(c.id,c.id);continue}let d=n.has(c.id)?Lz(c.id,n):c.id;n.add(d),o.set(c.id,d),i.push({marker:c,gameObjectId:d})}let a=i.map(c=>uD(e,NI(c.marker,o),c.gameObjectId,null)),s=Kn({...r,markers:[],relations:r.relations.map(c=>_I(c,o))});return{...e,scene:{...e.scene,gameObjects:[...e.scene.gameObjects,...a],markerGraph:s}}}function Rz(e,t){let r=new Set(e.scene.gameObjects.map(a=>a.id)),n=t.markers.filter(a=>Oz(a,r)),o=new Set([...n.map(a=>a.id),...e.scene.gameObjects.filter(Xe).map(a=>a.id)]),i=t.relations.filter(a=>eg(a.from,r,o)&&eg(a.to,r,o));return{...t,markers:n,relations:i}}function Oz(e,t){if(!hc(e.target,t))return!1;switch(e.geometry.kind){case"object-bounds":return hc(e.geometry.target,t);case"point":return hc(e.geometry.target,t);case"box":case"polyhedron":return!0}}function lD(e,t,r={}){switch(t.type){case"marker.create-box":return Cz(e,t.marker,t.parentId??null);case"marker.update":return wz(e,t.markerId,t.patch,r);case"marker.delete":return vz(e,t.markerId);default:return null}}function Cz(e,t,r){if(e.scene.gameObjects.some(a=>a.id===t.id))return null;let n=Kn(km(e)),o=uD(e,t,t.id,r),i={...e,scene:{...e.scene,gameObjects:[...e.scene.gameObjects,o]}};return tg(i,{...n,markers:n.markers.filter(a=>a.id!==t.id)})}function wz(e,t,r,n={}){let o=e.scene.gameObjects.find(d=>d.id===t)??null;if(!Xe(o))return null;let i=Wo(e,o,n),a=Hn({...i,...r,id:i.id,geometry:r.geometry??i.geometry}),s=Kn(void 0);if(yc({...s,markers:[i]},{...s,markers:[a]}))return e;let c=mD(e,o,a,n);return{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.map(d=>d.id===t?c:d)}}}function vz(e,t){let r=e.scene.gameObjects.find(i=>i.id===t)??null;if(!Xe(r))return null;let n=jI(e,t),o=Kn(km(e));return{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.filter(i=>!n.has(i.id)),markerGraph:{...o,markers:[],relations:o.relations.filter(i=>!Zf(i.from,n)&&!Zf(i.to,n))}}}}function kz(e,t={}){let r=!1,n=e.scene.gameObjects.map(o=>{if(!Xe(o))return o;let i=_z(e,o,t);return i!==o&&(r=!0),i});return r?{...e,scene:{...e.scene,gameObjects:n}}:e}function _z(e,t,r={}){return jz(e,t,r)}function uD(e,t,r,n){let o=fs(t.kind),i={position:Rm(t.geometry),rotation:Om(t.geometry),scale:kh(t.geometry,o)},a=n?Oh(e,n,i)??i:i;return{id:r,name:t.label||t.id,kind:"transform",...n?{parentId:n}:{},active:!0,marker:fD(t),components:[{type:"Transform",...a}]}}function mD(e,t,r,n={}){let o=Mn(e,t.id)?.scale??Qi(t),i=aD(e,t,r,n)?fs(r.kind):o;return{...t,name:r.label||t.name||r.id,kind:"transform",marker:fD(r),components:Nz(e,t,t.components,r.geometry,i)}}function Nz(e,t,r,n,o){let i=o??Qi(t),a=Mn(e,t.id),s={position:Rh(n)?qe(a?.position??Rm(n)):Rm(n),rotation:Rh(n)?qe(a?.rotation??Om(n)):Om(n),scale:kh(n,i)},c=Oh(e,t.parentId,s)??s,d=!1,u=r.map(l=>l.type!=="Transform"?l:(d=!0,{...l,position:c.position,rotation:c.rotation,scale:c.scale}));return d?u:[...u,{type:"Transform",position:c.position,rotation:c.rotation,scale:c.scale}]}function jz(e,t,r={}){if(t.marker.geometry.kind==="polyhedron")return t;let n=no(e,t.marker.type,t.marker.kind,r),o=nD(t.marker,n);if((t.marker.kind??"point")===n&&t.marker.geometry.kind===o)return t;let i=Wo(e,t,r),a=Hn({...i,kind:n,markerType:t.marker.type.trim(),geometry:Dm(e,t,n,i.geometry,r)});return mD(e,t,a,r)}function pD(e,t={}){return e.scene.gameObjects.filter(Xe).map(r=>Wo(e,r,t))}function Wo(e,t,r={}){let n=t.marker,o=n.metadata?structuredClone(n.metadata):{},a=(n.geometry.kind==="object-bounds"?rD(e,n):null)??(n.semanticFrame?structuredClone(n.semanticFrame):tD(e,t));return n.color&&(o.color={...n.color}),n.note!==void 0&&(o.note=n.note),{id:t.id,kind:no(e,n.type,n.kind,r),markerType:n.type,label:t.name??t.id,geometry:Gz(e,t),...n.target?{target:structuredClone(n.target)}:{},...a?{semanticFrame:a}:{},...n.tags?.length?{tags:[...n.tags]}:{},...Object.keys(o).length>0?{metadata:o}:{}}}function Gz(e,t){let r=t.marker,n=Mn(e,t.id),o=n?.position??it(0,0,0),i=n?.rotation??it(0,0,0),a=n?.scale??Qi(t);switch(r.geometry.kind){case"box":return{kind:"box",coordinateSpace:"world",center:qe(o),size:Cm(a),rotation:qe(i)};case"point":return(r.geometry.coordinateSpace??"world")==="world"?{kind:"point",coordinateSpace:"world",position:r.geometry.offset?dD(o,r.geometry.offset):qe(o),...r.geometry.target?{target:structuredClone(r.geometry.target)}:{}}:{kind:"point",coordinateSpace:"local",position:r.geometry.position?qe(r.geometry.position):qe(o),...r.geometry.target?{target:structuredClone(r.geometry.target)}:{}};case"object-bounds":return{kind:"object-bounds",target:structuredClone(r.geometry.target)};case"polyhedron":return{kind:"polyhedron",coordinateSpace:r.geometry.coordinateSpace??"world",vertices:r.geometry.vertices.map(qe),...r.geometry.faces?{faces:r.geometry.faces.map(s=>[...s])}:{}}}}function fD(e){let t=e.metadata?structuredClone(e.metadata):{},r=Fz(t.color),n=typeof t.note=="string",o=n?t.note:void 0;return r&&delete t.color,n&&delete t.note,{schemaVersion:1,type:e.markerType,...e.kind?{kind:e.kind}:{},...e.tags?.length?{tags:[...e.tags]}:{},...o!==void 0?{note:o}:{},...r?{color:r}:{},...e.target?{target:structuredClone(e.target)}:{},...e.semanticFrame?{semanticFrame:structuredClone(e.semanticFrame)}:{},geometry:cD(e.geometry),...Object.keys(t).length>0?{metadata:t}:{}}}function Lz(e,t){let r=wm(e)||"marker",n=1,o=`${r}-marker`;for(;t.has(o);)n+=1,o=`${r}-marker-${n}`;return o}function Fz(e){if(!e||typeof e!="object")return null;let t=e,r=_h(t.r),n=_h(t.g),o=_h(t.b);return r==null||n==null||o==null?null:{r,g:n,b:o}}function _h(e){return typeof e!="number"||!Number.isFinite(e)?null:e>=0&&e<=1?e:null}function km(e){return e.scene.markerGraph??null}function SD(e){let t=n=>e.getMarkerTypeCatalogFromGraph(gD(n)),r=n=>{let o=Kn(gD(n)),i=new Map;for(let a of o.markers)i.set(a.id,a);for(let a of pD(n,e.options))i.set(a.id,a);return{...o,markers:[...i.values()]}};return{getMarkerGraph:r,getMarkerTypeCatalog:t,createMarkerGraphPatch(n,o){let i=LI(n,o,{sanitizeMarkerGameObjectId:wm});return FI(n,i,r(n),{builtInMarkerTypes:e.options.builtInMarkerTypes,isMarkerGameObject:a=>Xe(a)})?{patch:e.createPatch(zI(i)),label:$I(i),...BI(i)}:null},createMarkerTypeUpdateCommand(n,o,i){let a=n.scene.gameObjects.find(m=>m.id===o)??null;if(!Xe(a))return null;let s=i.trim(),c=s?t(n).find(m=>m.type===s)??null:null;if(s&&!c)return null;let d=no(n,s,a.marker.kind,e.options),u=Wo(n,a,e.options),l=Dm(n,a,d,u.geometry,e.options);return{type:"marker.update",markerId:o,patch:{markerType:s,kind:d,geometry:l}}},createMarkerTargetUpdateCommand(n,o,i){let a=n.scene.gameObjects.find(m=>m.id===o)??null;if(!Xe(a))return null;let s=i.trim(),c=s?iD(n,s):null;if(s&&!c)return null;let d=Wo(n,a,e.options),u=no(n,a.marker.type,a.marker.kind,e.options),l=oD(n,a,d.geometry,u,c);return{type:"marker.update",markerId:o,patch:{target:c??void 0,geometry:l}}},resolveMarkerKind(n,o,i){return no(n,o,i,e.options)},reduceMarkerGraphPatch(n,o){let i=lD(n,o,e.options);if(i)return i;let a=r(n),s=GI(a,o,e.options);return yc(a,s)?n:{...n,scene:{...n.scene,markerGraph:s}}},syncMarkerGraphDocument(n){return vm(n,e.options)}}}function gD(e){return e?.scene.markerGraph}function hD(e,t=[]){return e.scene.gameObjects.flatMap(r=>{let n=r.prefab?.prefabId?Jt(e,r.prefab.prefabId):null;return n?bD(e,n,r,r.id,t):[]})}function yD(e,t,r,n=[]){let o=Jt(e,t);if(!o)return[];let i={id:r,name:o.displayName??o.id,kind:"group",components:[_m()]};return bD(e,o,i,r,n)}function bD(e,t,r,n,o){let i=[],a=[];ED(e,t,{instanceId:r.id,parentId:r.parentId,rootTransform:Q(r)??_m(),isHostRoot:!0,visitedPrefabIds:new Set,derivedObjects:i,markerDescriptors:a});let s=new Set([r.id,...i.map(d=>d.id)]);for(let d of i)d.marker&&(d.marker.target&&s.add(d.marker.target.id),d.marker.geometry.kind==="point"&&d.marker.geometry.target&&s.add(d.marker.geometry.target.id),d.marker.geometry.kind==="object-bounds"&&s.add(d.marker.geometry.target.id));let c={...e,scene:{...e.scene,gameObjects:[...e.scene.gameObjects.filter(d=>!s.has(d.id)),r,...i]}};return a.flatMap(d=>{let u=c.scene.gameObjects.find(l=>l.id===d.runtimeId);return u?.marker?[{ownerInstanceId:n,prefabAssetId:d.prefabAssetId,localNodeId:d.localNodeId,marker:Wo(c,u,{builtInMarkerTypes:o})}]:[]})}function ED(e,t,r){if(r.visitedPrefabIds.has(t.id))return;let n=Gr(t),o=Xt(t),i=o?n.find(d=>d.id===o):null;if(!i)return;let a=new Set(r.visitedPrefabIds).add(t.id),s={instanceId:r.instanceId,rootNodeId:i.id},c=d=>Va(s,d.id);for(let d of n){let u=c(d),l=d.id===i.id,m=d.parentId?n.find(g=>g.id===d.parentId):null,p=l?r.parentId:c(m??i);if(d.kind==="prefabInstance"&&d.childPrefabId){let g=Jt(e,d.childPrefabId);g&&ED(e,g,{instanceId:u,...p?{parentId:p}:{},rootTransform:l?r.rootTransform:d.transform??_m(),isHostRoot:r.isHostRoot&&l,visitedPrefabIds:a,derivedObjects:r.derivedObjects,markerDescriptors:r.markerDescriptors});continue}if(r.isHostRoot&&l)continue;let f=d.kind==="marker"&&d.marker?Rc({...structuredClone(d.marker),semanticFrame:void 0},s):void 0;r.derivedObjects.push({id:u,name:d.name??d.id,kind:d.kind==="marker"?"transform":"group",...p?{parentId:p}:{},...f?{marker:f}:{},components:[l?r.rootTransform:d.transform??_m()]}),f&&r.markerDescriptors.push({prefabAssetId:t.id,localNodeId:d.id,runtimeId:u})}}function _m(){return{type:"Transform",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}}function $z(e){return e?e.list().filter(t=>dr(t.shaderId)==null).map(t=>{let r=t.inspector.sections.length,n=t.inspector.fields.length;return{id:`shader:${t.shaderId}`,assetId:t.shaderId,label:t.displayName,kind:"shader",placeable:!1,meta:`${t.shaderId} \xB7 v${t.version} \xB7 ${n} fields`,shader:{shaderId:t.shaderId,displayName:t.displayName,version:t.version,runtimeKind:t.runtimeKind,sectionCount:r,fieldCount:n,...t.sourceFile?{sourceFile:t.sourceFile}:{}}}}):[]}function ID(e){let t=rx(e.objectCommandServices);return{getHierarchyItems:e.hierarchyFacade.getHierarchyItems,normalizeHierarchyDocument:e.hierarchyFacade.normalizeHierarchyDocument,createRenamePatch:e.hierarchyFacade.createRenamePatch,createCreateGroupPatch:e.hierarchyFacade.createCreateGroupPatch,createCreatePrimitivePatch:e.hierarchyFacade.createCreatePrimitivePatch,createDeleteSubtreePatch:e.hierarchyFacade.createDeleteSubtreePatch,collectSubtreeIdList:e.hierarchyFacade.collectSubtreeIdList,validateReparent:e.hierarchyFacade.validateReparent,createReparentPatch:e.hierarchyFacade.createReparentPatch,validateHierarchyMove:e.hierarchyFacade.validateHierarchyMove,createHierarchyMovePatch:e.hierarchyFacade.createHierarchyMovePatch,validateGroupSelection:e.hierarchyFacade.validateGroupSelection,createGroupSelectionPatch:e.hierarchyFacade.createGroupSelectionPatch,createDuplicateSelectionPatch:e.hierarchyFacade.createDuplicateSelectionPatch,createPlacedAssetPatch:e.hierarchyFacade.createPlacedAssetPatch,applySerializedPropertyPatch:t.applySerializedPropertyPatch,canCreateSerializedMultiPropertyPatch:t.canCreateSerializedMultiPropertyPatch,createSerializedMultiPropertyPatch:t.createSerializedMultiPropertyPatch,createBrowserAssetItems(r,n={}){let o=Lt.getCachedUsageIndex(r);return[...Lt.createBrowserAssetItems(r,o,n),...$z(n.materialShaderDefinitions),...CM(r)]},addAssetLibraryItemToDocument(r,n,o){let i=zc(r,n,o,e.assetPlacementServices);return{document:i.document,gameObject:i.gameObject}}}}function Bz(e,t){if(!e.scene||typeof e.scene!="object"||Array.isArray(e.scene))return null;let r=e.scene;if(r.kind!==e.id)return null;let n=xD(r.contribution);return n?Nh(n):t?MM(e,t):null}function PD(e){let t=(e.features??[]).flatMap(E=>{let C=e.resolveFeatureSceneContribution?.(E);if(C)return[Nh(C)];let b=Bz(E,()=>d);if(b)return[b];let k=xD(E.scene);return k?[Nh(k)]:[]}),r=t.every(E=>E.documentReducerImmutability==="preserves-input")?"immutable-reference":"defensive-clone",n=u1(t),o=SD({options:{builtInMarkerTypes:e.markerTypes},createPatch:e.createPatch.markerGraph,getMarkerTypeCatalogFromGraph:E=>i1(e.markerTypes,E)}),i=(E,C)=>C?ie(E,C):null,a=()=>[E=>n?.validateInspectorField?.({document:E.document??null,gameObject:E.document?i(E.document,E.targetId):null,path:E.path,value:E.value})??null,E=>o1(e.resolveFieldSchema?.(E.path,E.nodeKind)??null,E.path,E.value),Ng({hasMaterialAsset:hn,isMarkerGameObject:Xe,isDirectionalLightAnglePath:qa})],s=(E,C)=>n?.normalizeInspectorValue?.(E,C)??fu(E,C,{isDirectionalLightAnglePath:qa}),c=(E,C,b,k)=>{if(qa(b)&&C.light?.type!=="directional")return{ok:!1,message:`Unsupported scene node field: ${b}.`};let O=n?.validateInspectorField?.({document:E,gameObject:C,path:b,value:k});return O||Ya({document:E,path:b,nodeKind:pd(C),value:k,extraValidators:a()})},d=(E,C,b)=>_c({document:E,nodeKind:C,property:b,extraValidators:a()}),l={systemDefaults:Qz(e.clearFeatureStateFromSystemObject),normalizeFieldValue:s,validateField:c,normalizePrimitiveShape:eD,findGameObject:i,isCameraGameObject:Br,isLightGameObject:Ja,isProtectedSystemGameObject:zr,hasCamera:(E,C)=>E.scene.gameObjects.some(b=>b.id!==C&&Br(b)),...n?.fieldMutation},m=e1(e,o,l,i,s,c,n),p=(E,C,b,k)=>Gu(E,C,b,k,m),f=(E,C,b,k)=>ex(E,C,b,k,m),g=(E,C)=>IS(E,C,m.fieldMutationOptions),S=Zz(e,o,l,p,f,n),P=t1(o),x={isRootTransformPath:Iu,validateSerializedPropertyField:E=>c(E.document,E.gameObject,E.path,E.value),findGameObject:i,isCameraGameObject:Br,isLightGameObject:Ja,isSerializedMultiFieldPath:E=>s1(E,n),isSerializedMultiProjectionPath:E=>c1(E,n),getSerializedMultiPropertyProbeValue:E=>d1(E,n),canPatchCustomSerializedMultiField:E=>n?.canPatchSerializedMultiField?.(E)??!0,createInspectorPropertyPatch:E=>os(E,m),createFieldBatchPatch:e.createPatch.gameObjectFieldBatch},T=ID({hierarchyFacade:P,objectCommandServices:x,assetPlacementServices:{createGameObjectGuid:gt,resolveLocalTransform:({document:E,parentId:C,worldTransform:b})=>Xn(E,C??void 0,b)}}),R={findGameObject:i,hasModelRenderer:E=>!!E.components?.some(C=>C.type==="ModelRenderer"),hasImageRenderer:E=>!!E.components?.some(C=>C.type==="ImageRenderer"),readNodeKind:pd},A={};return Object.assign(A,{historyDocumentStorage:r,defaults:{camera:Cu,sunLight:Wc,environmentLight:Hi},reduceDocument:(E,C)=>GS(E,C,S),ensureEnvironmentDefaults:E=>jS(E,S),isSelectableHierarchyId:(E,C)=>Hg(E,C),resolveDiagnosticLocator:(E,C)=>{let b=C.locator;if(!b?.objectId||!b.materialSlotId)return b??null;let k=i(E,b.objectId);if(!k)return b;let O=Yn(E,k).find($=>$.slotId===b.materialSlotId);return O?{...b,rowId:k.id,regionId:HI,sectionId:"artistMaterialSlots",path:`overrides.materialSlotBindings.${O.slotId}.materialAssetId`}:b},getHierarchyItems:T.getHierarchyItems,normalizeHierarchyDocument:T.normalizeHierarchyDocument,createRenamePatch:T.createRenamePatch,createCreateGroupPatch:T.createCreateGroupPatch,createCreatePrimitivePatch:T.createCreatePrimitivePatch,createDeleteSubtreePatch:T.createDeleteSubtreePatch,createReparentPatch:T.createReparentPatch,createHierarchyMovePatch:T.createHierarchyMovePatch,createGroupSelectionPatch:T.createGroupSelectionPatch,createDuplicateSelectionPatch:T.createDuplicateSelectionPatch,createPlacedAssetPatch:T.createPlacedAssetPatch,validateReparent:T.validateReparent,validateHierarchyMove:T.validateHierarchyMove,validateGroupSelection:T.validateGroupSelection,collectSubtreeIds:eo,createFeatureHierarchyPatch:(E,C)=>n?.createHierarchyPatch?.(E,C)??null,createInspectorPropertyPatch:E=>Vz(m,E),createSceneMaterialBindingPatch:E=>Uz(e,m,E),createPrefabMaterialBindingPatch:E=>Hz(e,E),createMaterialPropertiesPatch:E=>Xz(e,m,E),createMaterialAssetCreatePatch:E=>qz(e,E),createMaterialAssetRenamePatch:E=>Yz(e,E),createMaterialAssetSetShaderPatch:E=>Jz(e,E),patchGameObjectField:p,patchGameObjectsField:f,patchGameObjectPropertiesMany:g,createSerializedPropertyBatchPatch:E=>zz(e,m,E),canCreateSerializedMultiPropertyPatch:T.canCreateSerializedMultiPropertyPatch,createSerializedMultiPropertyPatch:T.createSerializedMultiPropertyPatch,createBrowserAssetItems:T.createBrowserAssetItems,addAssetLibraryItemToDocument:T.addAssetLibraryItemToDocument,getInspectorObject:(E,C,b={})=>r1(A,e,o,E,C,TD(e.materialShaderDefinitions,b),d,i,a,n),getInspectorMultiObject:(E,C,b,k={})=>n1(E,C,b,k,t),getPrefabStageInspectorObject:(E,C,b,k={})=>QM.createEditorScenePrefabStageInspectorObjectWithCachedMaterialUsage(E,C,b,TD(e.materialShaderDefinitions,k),{createIdentityTransformComponent:mA,mergeLightDefaults:Ki,defaultShadowMode:l1(e.getRenderingProfile().shadows.defaultMode),sunLightId:"sun_light",normalizePrefabAssetFieldValue:yh,validatePrefabAssetFieldValue:bh,markerTypeCatalog:o.getMarkerTypeCatalog(E)}),getRuntimeInspectorSections:E=>eS({...E,sourceRef:In(E.document)},R),createRuntimeInspectorSnapshot:E=>Oc({projectedRoot:E.projectedRoot,projectionNode:E.projectionNode??null}),createDocumentInspectorProperty:d,getMarkerGraph:o.getMarkerGraph,getMarkerTypeCatalog:o.getMarkerTypeCatalog,getPrefabInstanceMarkerOverlays:E=>hD(E,o.getMarkerTypeCatalog(E)),getPrefabStageMarkerOverlays:(E,C,b)=>yD(E,C,b,o.getMarkerTypeCatalog(E)),getRelationTypeCatalog:()=>e.relationTypes.map(E=>structuredClone(E)),createMarkerGraphPatch:o.createMarkerGraphPatch,reduceMarkerGraphPatch:o.reduceMarkerGraphPatch,syncMarkerGraphDocument:o.syncMarkerGraphDocument,resolveMarkerKind:o.resolveMarkerKind,assertMaterialAssetIntegrity:sm}),A}function zz(e,t,r){if(r.changes.length<2)return null;let n=new Set,o=[],i=new Set;for(let s of r.changes){let c=`${s.targetId}\0${s.path}`;if(!s.targetId||!s.path||n.has(c))return null;n.add(c);let d=os({document:r.document,targetId:s.targetId,path:s.path,value:s.value},t),u=d?.patch;if(!d||!u||u.kind!=="game-object.field"||u.targetId!==s.targetId||u.path!==s.path)return null;o.push({targetId:s.targetId,path:s.path,value:u.value});for(let l of d.reprojectIds??[])i.add(l)}let a=[...new Set(o.map(s=>s.targetId))];return{patch:e.createPatch.gameObjectFieldBatch(o),label:`Patch ${o.length} Inspector properties`,changedIds:a,...i.size>0?{reprojectIds:[...i]}:{}}}function Uz(e,t,r){if(r.targets.length===0)return null;let n=new Set,o=[];for(let s of r.targets){let c=`${s.objectId}\0${s.path}`;if(n.has(c))return null;n.add(c);let u=os({document:r.document,targetId:s.objectId,path:s.path,value:r.materialAssetId},t)?.patch;if(!u||u.kind!=="game-object.field"||u.targetId!==s.objectId||u.path!==s.path)return null;o.push({targetId:s.objectId,path:s.path,value:u.value})}let i=[...new Set(o.map(s=>s.targetId))],a=AD(r.document,r.targets,r.materialAssetId);return{patch:e.createPatch.gameObjectFieldBatch(o),label:`${r.materialAssetId?"Set":"Clear"} ${o.length} scene material binding${o.length===1?"":"s"}`,changedIds:i,reprojectIds:i,presentationImpact:a}}function Vz(e,t){let r=os(t,e);if(!r||!vo(t.path))return r;let n=r.createdId??(typeof t.value=="string"&&t.value.trim()?t.value.trim():null);return{...r,presentationImpact:AD(t.document,[{objectId:t.targetId,path:t.path}],n)}}function Hz(e,t){if(t.targets.length===0||t.materialAssetId&&!hn(t.document,t.materialAssetId)||new Set(t.targets.map(s=>s.prefabAssetId)).size!==1)return null;let n=t.targets[0].prefabAssetId,o=Jt(t.document,n);if(!o?.prefab)return null;let i=structuredClone(o),a=new Set;for(let s of t.targets){let c=`${s.nodeId??""}\0${s.path}`;if(a.has(c))return null;a.add(c);let d=`prefab.${s.path}`,u=yh(d,t.materialAssetId);if(!bh(d,u))return null;if(!s.nodeId){i=Mc(i,d,u);continue}let l=i.prefab?.nodes?.findIndex(S=>S.id===s.nodeId)??-1;if(l<0||!i.prefab?.nodes)return null;let m=i.prefab.nodes[l],p={...i,prefab:{...i.prefab,overrides:structuredClone(m.overrides)}},f=Mc(p,d,u),g={...m,...f.prefab?.overrides?{overrides:structuredClone(f.prefab.overrides)}:{}};f.prefab?.overrides||delete g.overrides,i.prefab.nodes=[...i.prefab.nodes],i.prefab.nodes[l]=g}return{patch:e.createPatch.prefabAssetReplace?.(n,i)??{kind:"scene.prefab-asset.replace",assetId:n,prefabAsset:i},label:`${t.materialAssetId?"Set":"Clear"} ${t.targets.length} prefab material binding${t.targets.length===1?"":"s"}`,changedId:n,changedIds:[n],reprojectIds:[n],presentationImpact:Kz(t.document,t.targets,t.materialAssetId)}}function AD(e,t,r){let n=new Set(t.map(i=>`${i.objectId}\0${i.path}`)),o=new Set;r&&o.add(r);for(let i of Pc(e))i.scope==="scene"&&n.has(`${i.gameObjectId}\0${i.bindingPath}`)&&o.add(i.materialAssetId);return{inspector:["material"],materials:{assetIds:[...o]}}}function Kz(e,t,r){let n=new Set;r&&n.add(r);for(let o of t){let i=Wz(e,o);i&&n.add(i)}return{inspector:["material"],materials:{assetIds:[...n]}}}function Wz(e,t){let r=Jt(e,t.prefabAssetId)?.prefab,n=t.nodeId?r?.nodes?.find(i=>i.id===t.nodeId)?.overrides:r?.overrides;if(!n)return null;let o=t.path==="overrides.materialBinding.materialAssetId"?n.materialBinding?.materialAssetId:n.materialSlotBindings?.[Sn(t.path,"materialAssetId")??""]?.materialAssetId;return typeof o=="string"&&o.trim()?o.trim():null}function qz(e,t){let r=WA(t.document,t.definition,t.name);return{patch:e.createPatch.materialAssetCreate?.(r)??{kind:"scene.material-asset.create",materialAsset:r},label:`Create material ${r.name}`,changedIds:[],createdId:r.id}}function Yz(e,t){let r=Le(t.document,t.materialAssetId),n=mr("name",t.name);return!r||$S(r)||typeof n!="string"||!qn("name",n)?null:{patch:e.createPatch.materialAssetField(t.materialAssetId,"name",n),label:`Rename material ${r.name} to ${n}`,changedIds:Tc(t.document,t.materialAssetId),presentationImpact:{inspector:["material"],materials:{assetIds:[t.materialAssetId]}}}}function Jz(e,t){let r=Le(t.document,t.materialAssetId);if(!r||$S(r))return null;let n=rM(r,t.definition),o=Tc(t.document,t.materialAssetId);return{patch:e.createPatch.materialAssetReplace?.(t.materialAssetId,n.materialAsset)??{kind:"scene.material-asset.replace",materialAssetId:t.materialAssetId,materialAsset:n.materialAsset},label:`Set material ${r.name} shader to ${t.definition.displayName}`,changedIds:o,reprojectIds:o,presentationImpact:{inspector:["material"],materials:{assetIds:[t.materialAssetId]}},preservedPaths:n.preservedPaths,resetPaths:n.resetPaths}}function Xz(e,t,r){if(r.changes.length===0||!Le(r.document,r.materialAssetId))return null;let o=new Set,i=r.document;for(let c of r.changes){if(!c.path.startsWith("properties.")||o.has(c.path))return null;o.add(c.path);let d=`scene.materialAssets.${r.materialAssetId}.${c.path}`,l=os({document:i,targetId:r.materialAssetId,path:d,value:c.value},t)?.patch;if(!l||l.kind!=="scene.material-asset.field"||l.materialAssetId!==r.materialAssetId||l.path!==c.path)return null;i=FS(i,r.materialAssetId,c.path,l.value,e.materialShaderDefinitions)}let a=Le(i,r.materialAssetId);if(!a)return null;let s=Tc(r.document,r.materialAssetId);return{patch:e.createPatch.materialAssetReplace?.(r.materialAssetId,a)??{kind:"scene.material-asset.replace",materialAssetId:r.materialAssetId,materialAsset:a},label:`Patch material ${r.materialAssetId} properties`,changedIds:s,reprojectIds:s}}function Qz(e){let t=r=>n=>{let o=r(n);if(!e)return o;let i=structuredClone(o),a=structuredClone(n),s=e(i,a)??i;return JSON.stringify(s)===JSON.stringify(n)?n:s};return{environmentLightId:"environment_light",sunLightId:"sun_light",horizontalLightAnglePath:"light.directionHorizontalAngleDeg",elevationLightAnglePath:"light.directionElevationAngleDeg",normalizeEnvironmentLightGameObject:r=>t(n=>PS(n,"hemispheric"))(r),normalizeSunLightGameObject:r=>t(n=>PS(n,"directional"))(r),normalizeCameraGameObject:t(pA),normalizePlainTransformGameObject:t(fA),createDefaultCameraGameObject:bA,createDefaultEnvironmentLightGameObject:IA,createDefaultSunLightGameObject:EA,mergeCameraDefaults:qc,normalizeCameraAfterFieldPatch:gA,hasInvalidCameraRelationships:hA,mergeLightDefaults:Ki}}function Zz(e,t,r,n,o,i){return{...r,normalizeRootTransformDocument:Gc,syncMarkerGraphDocument:t.syncMarkerGraphDocument,ensureGameObjectGuids:zg,normalizeDocumentAfterCommand:(a,s)=>i?.normalizeDocumentAfterCommand?.(a,s)??a,patchMaterialAssetField:(a,s,c,d)=>FS(a,s,c,d,e.materialShaderDefinitions),replaceMaterialAsset:(a,s,c)=>qA(a,s,c),addMaterialAsset:(a,s)=>ju(a,s),deleteMaterialAsset:(a,s)=>XA(a,s),addMaterialAssetAndBind:(a,s,c,d)=>QA(a,s,c,d),addPrefabAsset:(a,s,c)=>wM(a,s,c),patchPrefabAssetField:(a,s,c,d)=>Ih(a,s,c,d),replacePrefabAsset:(a,s,c,d)=>vM(a,s,c,d),addMaterialAssetAndBindPrefabOverride:(a,s,c,d)=>_M(a,s,c,d),patchGameObjectField:n,patchGameObjectsField:o,reduceExtensionPatch:({document:a,patch:s,command:c})=>s.kind==="game-object.property-field-batch"&&Array.isArray(s.fields)?s.fields.reduce((d,u)=>o(d,[u.targetId],u.path,u.value),a):i?.reducePatch?.({document:a,patch:s,command:c})??null,isCustomFieldPatchPath:i?.isInspectorPatchPath,reduceMarkerGraphPatch:(a,s)=>t.reduceMarkerGraphPatch(a,s),isDirectionalLightAnglePath:qa,validateSerializedPropertyField:a=>r.validateField(a.document,a.gameObject,a.path,a.value),createGameObjectGuid:gt,createUniqueId:gr,resolveLocalTransform:({document:a,parentId:s,worldTransform:c})=>Xn(a,s??void 0,c),resolveRootContainerId:ot,ensureDefaultMaterialAssets:BA,reconcileMaterialSlotReimportBindings:eM,ensureImportedMaterialDefaults:tM}}function e1(e,t,r,n,o,i,a){return{fieldMutationOptions:_u(r),findGameObject:n,normalizeValue:o,validateValue:i,blockFieldPatch:(s,c,d,u)=>Nu(s,c,d,u,r),isRootTransformPath:Iu,parseDuplicateMaterialAssetValue:Jl,isMaterialBindingPath:vo,isMaterialBindingPathAllowed:(s,c)=>vo(c)&&(!!e.resolveFieldSchema?.(c,pd(s))||c.startsWith("overrides.materialSlotBindings.")),findMaterialAssetName:(s,c)=>Le(s,c)?.name??null,parseMaterialAssetFieldPath:tT,normalizeMaterialAssetValue:mr,hasMaterialAsset:hn,validateMaterialAssetFieldValue:(s,c,d,u)=>{let l=Le(s,c);return qn(d,u,l?.shaderId,e.materialShaderDefinitions)},collectMaterialAssetBindingIds:Tc,isMarkerGameObject:Xe,createMarkerTargetUpdateCommand:t.createMarkerTargetUpdateCommand,createMarkerTypeUpdateCommand:t.createMarkerTypeUpdateCommand,createMarkerGraphPatch:e.createPatch.markerGraph,isDirectionalLightAnglePath:qa,createDirectionalLightPatch:e.createPatch.gameObjectField,patchDirectionalLightAngleField:(s,c,d,u)=>LS(s,c,d,u,r),createCustomInspectorPropertyPatch:({document:s,gameObject:c,path:d,value:u})=>a?.createInspectorPropertyPatch?.({document:s,gameObject:c,path:d,value:u,collectChangedIds:()=>eo(s,[c.id])})??null,patchCustomGameObjectField:a?.patchGameObjectField,patchCustomGameObjectsField:a?.patchGameObjectsField,normalizeAfterFieldPatch:(s,c,d,u)=>a?.normalizeAfterFieldPatch?.(s,c,d,u)??s,isProjectionShapePath:a1,isArtistMaterialPatchPath:Yl,isCustomProjectionPath:a?.isProjectionPath,collectChangedIdsForFieldPath:(s,c,d)=>d.startsWith("transform.")?eo(s,[c]):[c],createGameObjectFieldPatch:e.createPatch.gameObjectField,createMaterialAssetFieldPatch:e.createPatch.materialAssetField}}function t1(e){return NS({findGameObject:(t,r)=>r?ie(t,r):null,resolveRootContainerId:ot,isProtectedSystemGameObject:zr,isProtectedSystemGameObjectId:Fg,decorateHierarchyItem:({item:t,gameObject:r})=>r&&Xe(r)?{...t,role:"marker",icon:"view-overlay",canHaveChildren:!1}:t})}function TD(e,t){return{materialShaderDefinitions:e,...t}}function r1(e,t,r,n,o,i,a,s,c,d){let u=uh.createEditorSceneMaterialAssetInspectorObjectWithCachedUsage(n,o,i);return u||qS({document:n,targetId:o,context:i,findGameObject:s,readNodeKind:pd,isMarkerGameObject:Xe,createInspectorSections:(l,m,p)=>{let f=pd(m);return JS({document:l,gameObject:m,context:p,nodeKind:f,isCameraGameObject:Br,isLightGameObject:Ja,isMarkerGameObject:Xe,createBaseSections:()=>Yg({document:l,gameObject:m,nodeKind:f,extraValidators:c(),rootTransform:$o,renderingProfile:t.getRenderingProfile()}),createCustomSections:()=>d?.createInspectorSections?.({document:l,gameObject:m,nodeKind:f,context:p,createDocumentInspectorProperty:a})??[],createCameraSection:()=>Gg({nodeKind:f,camera:m.camera,rig:qc(m.camera),createDocumentInspectorProperty:a}),createLightSections:()=>nS({nodeKind:f,gameObject:m,light:Ki(m.light,m.id==="environment_light"?"hemispheric":"directional"),createDocumentInspectorProperty:a,normalizeValue:(g,S)=>d?.normalizeInspectorValue?.(g,S)??fu(g,S),defaultEnvironmentGroundColor:Hi.groundColor,renderingProfile:t.getRenderingProfile()}),createMarkerSection:()=>Xe(m)?th({document:l,gameObject:m,nodeKind:f,markerTypeCatalog:r.getMarkerTypeCatalog(l),resolveMarkerKind:(g,S)=>r.resolveMarkerKind(l,S.type,S.kind),isMarkerGameObject:Xe,formatMarkerTypeLabel:t.formatMarkerTypeLabel??((g,S)=>S),createDocumentInspectorProperty:a}):null,createPrefabInstanceSection:()=>ZM(l,m),createMaterialSections:()=>uh.createArtistMaterialInspectorSectionsWithCachedUsage(l,m,f,p,{createDocumentInspectorProperty:a}),createOutlineSection:()=>XS({nodeKind:f,outline:m.overrides?.outline,createDocumentInspectorProperty:a})})}})}function n1(e,t,r,n,o){let i=null,a=[];for(let s of o){let c=s.createMultiInspectorSection?.({document:e,targetIds:t,activeId:r,context:n})??null;if(c){i=c,a=s.resolveMultiInspectorTargetIds?.(e,t)??[];break}}return YS({document:e,selectedIds:t,activeId:r,extraSection:i,resolveFallbackTargetIds:()=>a,formatFallbackLabel:s=>`${s.length} Objects`,fallbackSelectionKind:"transform"})}function o1(e,t,r){return e?r==null&&e.allowDelete===!1?{ok:!1,message:`Scene node field cannot be deleted: ${t}.`}:e.validate(r)?{ok:!0,value:r}:{ok:!1,message:`Invalid value for scene node field: ${t}.`}:null}function i1(e,t){return ka(t,{builtInMarkerTypes:e})}var pd=he;function a1(e){return e.startsWith("shadow.")||e==="transformType"||e.startsWith("rendering.")||e.startsWith("primitive.")||e.startsWith("camera.")||e.startsWith("light.")}function s1(e,t){return e==="enabled"||e==="metadata.shadowInspectorLanguage"||e==="shadow.cast"||e==="shadow.receive"||e==="shadow.mode"||e==="shadow.quality"||t?.isSerializedMultiFieldPath?.(e)===!0}function c1(e,t){return e==="shadow.cast"||e==="shadow.receive"||e==="shadow.mode"||e==="shadow.quality"||t?.isSerializedMultiProjectionPath?.(e)===!0}function d1(e,t){return e==="enabled"?!1:e==="shadow.cast"||e==="shadow.receive"||e==="shadow.mode"?"none":e==="shadow.quality"?"medium":e==="metadata.shadowInspectorLanguage"?"en":t?.getSerializedMultiProbeValue?.(e)}function l1(e){return e==="planar"?"projected":e}function xD(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;return["documentReducerImmutability","normalizeInspectorValue","validateInspectorField","isInspectorPatchPath","isProjectionPath","normalizeDocumentAfterCommand","normalizeAfterFieldPatch","fieldMutation","createInspectorPropertyPatch","patchGameObjectField","patchGameObjectsField","reducePatch","createHierarchyPatch","createInspectorSections","createMultiInspectorSection","resolveMultiInspectorTargetIds","isSerializedMultiFieldPath","isSerializedMultiProjectionPath","getSerializedMultiProbeValue","canPatchSerializedMultiField"].some(n=>t[n]!=null)?t:null}function Nh(e){let{documentReducerImmutability:t,...r}=e;return r}function u1(e){if(e.length===0)return;let t=r=>{for(let n of e){let o=r(n);if(o!=null)return o}return null};return{documentReducerImmutability:e.every(r=>r.documentReducerImmutability==="preserves-input")?"preserves-input":void 0,normalizeInspectorValue(r,n){for(let o of e){let i=o.normalizeInspectorValue?.(r,n);if(i!==void 0)return i}},validateInspectorField:r=>t(n=>n.validateInspectorField?.(r)),isInspectorPatchPath:r=>e.some(n=>n.isInspectorPatchPath?.(r)),isProjectionPath:r=>e.some(n=>n.isProjectionPath?.(r)),normalizeDocumentAfterCommand:(r,n)=>e.reduce((o,i)=>i.normalizeDocumentAfterCommand?.(o,n)??o,r),normalizeAfterFieldPatch:(r,n,o,i)=>e.reduce((a,s)=>s.normalizeAfterFieldPatch?.(a,n,o,i)??a,r),fieldMutation:m1(e),createInspectorPropertyPatch:r=>t(n=>n.createInspectorPropertyPatch?.(r)),patchGameObjectField:r=>t(n=>n.patchGameObjectField?.(r)),patchGameObjectsField:r=>t(n=>n.patchGameObjectsField?.(r)),reducePatch:r=>t(n=>n.reducePatch?.(r)),createHierarchyPatch:(r,n)=>t(o=>o.createHierarchyPatch?.(r,n)),createInspectorSections:r=>e.flatMap(n=>n.createInspectorSections?.(r)??[]),isSerializedMultiFieldPath:r=>e.some(n=>n.isSerializedMultiFieldPath?.(r)),isSerializedMultiProjectionPath:r=>e.some(n=>n.isSerializedMultiProjectionPath?.(r)),getSerializedMultiProbeValue(r){for(let n of e){let o=n.getSerializedMultiProbeValue?.(r);if(o!==void 0)return o}},canPatchSerializedMultiField:r=>e.every(n=>n.canPatchSerializedMultiField?.(r)!==!1)}}function m1(e){let t=e.flatMap(r=>r.fieldMutation?[r.fieldMutation]:[]);if(t.length!==0)return{isCustomTransformType:r=>t.some(n=>n.isCustomTransformType?.(r)),applyCustomTransformType(r,n){for(let o of t)o.clearCustomTransformState?.(r,n);for(let o of t)o.applyCustomTransformType?.(r,n)},clearCustomTransformState(r,n){for(let o of t)o.clearCustomTransformState?.(r,n)},patchCustomTransformField(r,n,o){for(let i of t)if(i.patchCustomTransformField?.(r,n,o))return!0;return!1}}}function Gh(e){if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;if(!e||typeof e!="object")return;let t=e,r=jh(t.x),n=jh(t.y),o=jh(t.z);if(!(r==null||n==null||o==null||r<=0||n<=0||o<=0))return{x:r,y:n,z:o}}function jh(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Lh(e){return e==="shared"||e==="instance"?e:void 0}function Fh(e){return Number.isInteger(e)&&e>=0?e:void 0}var MD="rendering",Zi=Ra;function qo(e){let t=We(e);return f1(t?.companionConfigs)}function Bh(e){return qo(e)[MD]??null}function DD(e){return wr(qo(e)[Zi])}function f1(e){if(e==null)return{};let t=g1(e,"$.companionConfigs"),r={};for(let[n,o]of Object.entries(t)){if(!n||n!==n.trim())throw $h("schema.invalidValue","$.companionConfigs");let i=n;if(o===null){r[i]=null;continue}let a=We(o);if(!a)throw $h("schema.invalidType",`$.companionConfigs.${i}`);i===MD&&Ht(a),i===Zi&&un(a,`$.companionConfigs.${i}`),r[i]=a}return r}function g1(e,t){let r=We(e);if(!r)throw $h("schema.invalidType",t);return r}function $h(e,t){let r=new Error(`${e}: ${t}`);return Object.assign(r,{code:e,path:t}),r}var vD="@fps-games/editor.playable-sdk.scene-compiler",kD="3",S1=new Set(["shadowMode","childMaterialBindings","childMaterials"]),h1=new Set(["coordinateSpace","center","size","rotation"]),RD=new Set(["root","group","model","primitive","light","prefabInstance","marker","collision"]);function gd(e){_D(e,!0)}function Hh(e){_D(e,!1)}function _D(e,t){let r=Y(e);if(!r)throw new Error("editor_scene_must_be_object");if(r.schemaVersion!==1)throw F("schema.unsupportedVersion","$.schemaVersion");if(!Array.isArray(r.assets))throw new Error("editor_scene_assets_must_be_array");let n=Y(r.scene);if(!Array.isArray(n?.gameObjects))throw new Error("editor_scene_game_objects_must_be_array");if(n.materialAssets!=null&&!Array.isArray(n.materialAssets))throw new Error("editor_scene_material_assets_must_be_array");n.shadowMapExperiment!==void 0&&dc(n.shadowMapExperiment),n.gameObjects.forEach((o,i)=>{let a=Y(o);a?.shadowMapExperiment!==void 0&&lc(a.shadowMapExperiment,`$.scene.gameObjects[${i}].shadowMapExperiment`)}),E1(r.assets,n.gameObjects),Vh(r,"$"),I1(r.assets),b1(r.assets,n.gameObjects),T1(n.gameObjects,r.assets),P1(n.gameObjects),y1(n.materialAssets??[]),t&&A1(r.assets,n.gameObjects),sm(r)}function y1(e){for(let t=0;t<e.length;t+=1){let r=Y(e[t]),n=`$.scene.materialAssets[${t}]`;if(!r)throw F("schema.invalidType",n);if(Object.prototype.hasOwnProperty.call(r,"materialKind"))throw F("schema.deprecatedField",`${n}.materialKind`);if(Object.prototype.hasOwnProperty.call(r,"profile"))throw F("schema.deprecatedField",`${n}.profile`);if(!J(r.id))throw F("schema.invalidType",`${n}.id`);if(!J(r.name))throw F("schema.invalidType",`${n}.name`);let o=J(r.shaderId);if(!o)throw F("schema.invalidValue",`${n}.shaderId`);if(dr(o)){let a=Gl(o,r.properties,`${n}.properties`);if(a[0])throw F("schema.invalidValue",a[0].path)}else if(!Y(r.properties))throw F("schema.invalidType",`${n}.properties`);for(let a of Object.keys(r))if(!["id","guid","name","shaderId","properties","system","origin"].includes(a))throw F("schema.unknownField",`${n}.${a}`)}}function b1(e,t){let r=new Set(e.map(Y).filter(i=>i?.type==="glb").map(i=>J(i?.id)).filter(i=>!!i)),n=new Set(e.map(Y).filter(i=>i?.type==="texture").map(i=>J(i?.id)).filter(i=>!!i)),o=new Map;for(let i of e.map(Y)){if(i?.type!=="prefab")continue;let a=J(i.id),s=J(Y(i.prefab)?.sourceAssetId);a&&s&&o.set(a,s)}for(let i=0;i<e.length;i+=1){let a=Y(e[i]);if(a?.type!=="prefab")continue;let s=Y(a.prefab),c=J(s?.sourceAssetId),d=J(s?.rootNodeId);if(!c||!r.has(c))throw F("schema.invalidReference",`$.assets[${i}].prefab.sourceAssetId`);let u=Array.isArray(s?.nodes)?s.nodes:[];for(let l=0;l<u.length;l+=1){let m=Y(u[l]),p=J(m?.sourceAssetId);if(m?.kind==="model"&&(!p||!r.has(p)))throw F("schema.invalidReference",`$.assets[${i}].prefab.nodes[${l}].sourceAssetId`);if(m?.kind==="prefabInstance"){let f=J(m.childPrefabId),g=f?o.get(f):null;if(J(m.id)===d&&c!==g)throw F("schema.invalidReference",`$.assets[${i}].prefab.sourceAssetId`);if(p&&p!==g)throw F("schema.invalidReference",`$.assets[${i}].prefab.nodes[${l}].sourceAssetId`)}}}for(let i=0;i<t.length;i+=1){let a=Y(t[i]),s=J(Y(a?.instance)?.assetId);if(s&&!r.has(s))throw F("schema.invalidReference",`$.scene.gameObjects[${i}].instance.assetId`);let c=Array.isArray(a?.components)?a.components:[];for(let d=0;d<c.length;d+=1){let u=Y(c[d]);if(u?.type!=="ModelRenderer")continue;let l=J(u.assetId);if(!l||!r.has(l))throw F("schema.invalidReference",`$.scene.gameObjects[${i}].components[${d}].assetId`)}for(let d=0;d<c.length;d+=1){let u=Y(c[d]);if(u?.type!=="ImageRenderer")continue;let l=J(u.assetId);if(!l||!n.has(l))throw F("schema.invalidReference",`$.scene.gameObjects[${i}].components[${d}].assetId`);let m=Y(u.size);if(!m||!wD(m.width)||!wD(m.height))throw F("schema.invalidValue",`$.scene.gameObjects[${i}].components[${d}].size`)}}}function E1(e,t){let r=new Set;e.forEach((i,a)=>{let s=Y(i);if(!s)throw F("schema.invalidType",`$.assets[${a}]`);let c=J(s.id);if(!c||!J(s.type))throw F("schema.invalidValue",`$.assets[${a}]`);if(r.has(c))throw F("schema.invalidValue",`$.assets[${a}].id`);r.add(c);let d=Y(s.defaults);d?.shadowMapExperiment!==void 0&&lc(d.shadowMapExperiment,`$.assets[${a}].defaults.shadowMapExperiment`)});let n=new Set,o=new Map;t.forEach((i,a)=>{let s=Y(i);if(!s)throw F("schema.invalidType",`$.scene.gameObjects[${a}]`);let c=J(s.id);if(!c)throw F("schema.invalidValue",`$.scene.gameObjects[${a}].id`);if(n.has(c))throw F("schema.invalidValue",`$.scene.gameObjects[${a}].id`);if(n.add(c),o.set(c,{value:s,index:a}),!Array.isArray(s.components))throw F("schema.invalidType",`$.scene.gameObjects[${a}].components`);s.components.forEach((d,u)=>{let l=Y(d);if(!l)throw F("schema.invalidType",`$.scene.gameObjects[${a}].components[${u}]`);if(!J(l.type))throw F("schema.invalidValue",`$.scene.gameObjects[${a}].components[${u}].type`)})});for(let[i,a]of o){if(!("parentId"in a.value))continue;let s=J(a.value.parentId);if(!s||!o.has(s))throw F("schema.invalidReference",`$.scene.gameObjects[${a.index}].parentId`);let c=new Set([i]),d=s;for(;d;){if(c.has(d))throw F("schema.invalidReference",`$.scene.gameObjects[${a.index}].parentId`);c.add(d);let u=o.get(d)?.value;d=u&&u.parentId!=null?J(u.parentId):null}}}function Vh(e,t){if(Array.isArray(e)){e.forEach((n,o)=>Vh(n,`${t}[${o}]`));return}let r=Y(e);if(r)for(let[n,o]of Object.entries(r)){let i=`${t}.${n}`;if(S1.has(n))throw F("schema.deprecatedField",i);n==="shadow"&&ac(o,i),!(n==="metadata"||n==="shadowMapExperiment")&&Vh(o,i)}}function I1(e){let t=new Set(e.map(Y).filter(a=>a?.type==="prefab").map(a=>J(a?.id)).filter(a=>!!a)),r=new Map;for(let a=0;a<e.length;a+=1){let s=Y(e[a]);if(s?.type!=="prefab")continue;let c=Y(s.prefab);if(!Array.isArray(c?.nodes))throw F("schema.unsupportedVersion",`$.assets[${a}].prefab.nodes`);OD(c.defaults,`$.assets[${a}].prefab.defaults`);let d=[],u=new Set;for(let f=0;f<c.nodes.length;f+=1){let g=`$.assets[${a}].prefab.nodes[${f}]`,S=Y(c.nodes[f]);if(!S)throw F("schema.invalidType",g);OD(S.defaults,`${g}.defaults`);let P=J(S.id);if(!P||!RD.has(String(S.kind)))throw F("schema.invalidValue",g);if(u.has(P))throw F("schema.invalidValue",`${g}.id`);u.add(P),d.push(S)}let l=J(c?.rootNodeId),m=l?d.find(f=>J(f?.id)===l):null,p=!!m&&RD.has(String(m.kind))&&!Object.prototype.hasOwnProperty.call(m,"parentId");if(c?.compositionVersion!==ki||d.length===0||!p)throw F("schema.unsupportedVersion",`$.assets[${a}].prefab`);r.set(J(s.id),d.flatMap((f,g)=>{let S=J(f.childPrefabId);return S?[{prefabId:S,path:`$.assets[${a}].prefab.nodes[${g}].childPrefabId`}]:[]}));for(let f=0;f<d.length;f+=1){let g=d[f];wT(g,new Map(d.map(R=>[J(R.id),R])),`$.assets[${a}].prefab.nodes[${f}]`);let S=J(g.id),P=J(g.parentId);if(S!==l&&(!P||!u.has(P)))throw F("schema.invalidReference",`$.assets[${a}].prefab.nodes[${f}].parentId`);if(g.kind==="prefabInstance"){let R=J(g.childPrefabId);if(!R||!t.has(R))throw F("schema.invalidReference",`$.assets[${a}].prefab.nodes[${f}].childPrefabId`)}let x=new Set([S]),T=P;for(;T;){if(x.has(T))throw F("schema.invalidReference",`$.assets[${a}].prefab.nodes[${f}].parentId`);x.add(T);let R=d.find(A=>J(A.id)===T);T=R?J(R.parentId):null}}}let n=new Set,o=new Set,i=a=>{if(!o.has(a)){n.add(a);for(let s of r.get(a)??[]){if(n.has(s.prefabId))throw F("schema.invalidReference",s.path);i(s.prefabId)}n.delete(a),o.add(a)}};for(let a of r.keys())i(a)}function OD(e,t){if(e==null)return;let r=Y(e);if(!r)throw F("schema.invalidType",t);if(Object.prototype.hasOwnProperty.call(r,"active")&&typeof r.active!="boolean")throw F("schema.invalidType",`${t}.active`);r.shadowMapExperiment!==void 0&&lc(r.shadowMapExperiment,`${t}.shadowMapExperiment`)}function T1(e,t){let r=new Map;for(let n of t.map(Y)){if(n?.type!=="prefab")continue;let o=J(n.id),i=J(Y(n.prefab)?.sourceAssetId);o&&i&&r.set(o,i)}for(let n=0;n<e.length;n+=1){let o=Y(e[n]);if(!o||o.prefab==null)continue;let i=Y(o.prefab),a=J(i?.prefabId),s=a?r.get(a):null;if(!a||!s)throw F("schema.unsupportedVersion",`$.scene.gameObjects[${n}].prefab`);if(J(i?.sourceAssetId)!==s)throw F("schema.invalidReference",`$.scene.gameObjects[${n}].prefab.sourceAssetId`);let c=J(Y(o.instance)?.assetId);if(c&&c!==s)throw F("schema.invalidReference",`$.scene.gameObjects[${n}].instance.assetId`);let d=Array.isArray(o.components)?o.components:[];for(let u=0;u<d.length;u+=1){let l=Y(d[u]);if(l?.type==="ModelRenderer"&&J(l.assetId)!==s)throw F("schema.invalidReference",`$.scene.gameObjects[${n}].components[${u}].assetId`)}}}function P1(e){for(let t=0;t<e.length;t+=1){let r=Y(Y(Y(e[t])?.marker)?.geometry);if(r?.kind!=="box")continue;for(let o of h1)if(Object.prototype.hasOwnProperty.call(r,o))throw F("schema.deprecatedField",`$.scene.gameObjects[${t}].marker.geometry.${o}`);if(!(Array.isArray(Y(e[t])?.components)?Y(e[t]).components:[]).some(o=>Y(o)?.type==="Transform"))throw F("schema.invalidValue",`$.scene.gameObjects[${t}].components`)}}function A1(e,t){let r=new Map,n=new Map;for(let o=0;o<e.length;o+=1){let i=Y(e[o]),a=J(i?.id);if(!i||!a)continue;if(i.type==="prefab"){let l=J(Y(i.prefab)?.sourceAssetId);l&&n.set(a,l)}let s=Y(i.metadata),c=s?.materialSlots;if(c==null){r.set(a,new Set);continue}if(!Array.isArray(c))throw F("schema.invalidType",`$.assets[${o}].metadata.materialSlots`);let d=x1(s?.assetAnalysis),u=new Set;for(let l=0;l<c.length;l+=1){let m=Y(c[l]),p=J(m?.slotId);if(!m||!p)throw F("schema.invalidValue",`$.assets[${o}].metadata.materialSlots[${l}]`);let f=`$.assets[${o}].metadata.materialSlots[${l}]`;for(let g of["ownerNodePath","nodeIndex","nodeIndexPath","meshIndex","primitiveIndex","sourceMaterialIndex","sourceMaterialIndices","sourceMeshName","triangleCount","boundingBox"])if(Object.prototype.hasOwnProperty.call(m,g))throw F("schema.deprecatedField",`${f}.${g}`);if(!Array.isArray(m.sourceSurfaces))throw F("schema.invalidType",`${f}.sourceSurfaces`);if(m.sourceSurfaces.length===0)throw F("schema.invalidValue",`${f}.sourceSurfaces`);for(let g=0;g<m.sourceSurfaces.length;g+=1){let S=`${f}.sourceSurfaces[${g}]`,P=Y(m.sourceSurfaces[g]);if(!P||!J(P.ownerNodePath))throw F("schema.invalidValue",S);CD(P,"nodeIndex",S),CD(P,"sourceMaterialIndex",S);for(let T of["meshIndex","primitiveIndex"])if(!Number.isInteger(P[T])||P[T]<0)throw F("schema.invalidValue",`${S}.${T}`);if(P.nodeIndexPath!=null&&(!Array.isArray(P.nodeIndexPath)||P.nodeIndexPath.some(T=>!Number.isInteger(T)||T<0)))throw F("schema.invalidValue",`${S}.nodeIndexPath`);let x=P.meshIndex;if(!J(P.sourceMeshName)&&!d.has(x))throw F("schema.invalidValue",`${S}.sourceMeshName`)}if(u.has(p))throw F("schema.invalidValue",`$.assets[${o}].metadata.materialSlots[${l}].slotId`);u.add(p)}r.set(a,u)}for(let o=0;o<e.length;o+=1){let i=Y(e[o]);if(i?.type!=="prefab")continue;let a=Y(i.prefab),s=J(a?.sourceAssetId);zh(a?.overrides,s?r.get(s):void 0,`$.assets[${o}].prefab.overrides`);let c=Array.isArray(a?.nodes)?a.nodes:[];for(let d=0;d<c.length;d+=1){let u=Y(c[d]),l=J(u?.childPrefabId),m=J(u?.sourceAssetId)??(l?n.get(l)??null:null);zh(u?.overrides,m?r.get(m):void 0,`$.assets[${o}].prefab.nodes[${d}].overrides`)}}for(let o=0;o<t.length;o+=1){let i=Y(t[o]),s=(Array.isArray(i?.components)?i.components:[]).map(Y).find(d=>d?.type==="ModelRenderer"),c=J(s?.assetId);zh(i?.overrides,c?r.get(c):void 0,`$.scene.gameObjects[${o}].overrides`)}}function zh(e,t,r){let n=Y(e);if(!n||n.materialSlotBindings==null)return;let o=Y(n.materialSlotBindings);if(!o)throw F("schema.invalidType",`${r}.materialSlotBindings`);for(let[i,a]of Object.entries(o)){if(!t?.has(i))throw F("schema.invalidReference",`${r}.materialSlotBindings.${i}`);let s=`${r}.materialSlotBindings.${i}`,c=Y(a);if(!c)throw F("schema.invalidType",s);for(let d of Object.keys(c))if(d!=="materialAssetId"&&d!=="override")throw F("schema.deprecatedField",`${s}.${d}`);if("materialAssetId"in c&&c.materialAssetId!=null&&!J(c.materialAssetId))throw F("schema.invalidValue",`${s}.materialAssetId`);if("override"in c&&!Y(c.override))throw F("schema.invalidType",`${s}.override`);"override"in c&&M1(c.override,`${s}.override`)}}function CD(e,t,r){let n=e[t];if(n!=null&&(!Number.isInteger(n)||n<0))throw F("schema.invalidValue",`${r}.${t}`)}function x1(e){let t=Y(e),r=Array.isArray(t?.meshes)?t.meshes:[];return new Set(r.flatMap(n=>{let o=Y(n),i=o?.meshIndex,a=Number.isInteger(i)?i:null;return a!=null&&J(o?.name)?[a]:[]}))}function M1(e,t){let r=Y(e);if(!r)throw F("schema.invalidType",t);if(gs(r,["lightingModel","baseColor","normal","metallic","roughness","metallicRoughness","occlusion","emission","alpha"],t),"lightingModel"in r&&!["lit","unlit"].includes(String(r.lightingModel)))throw F("schema.invalidValue",`${t}.lightingModel`);for(let n of["metallic","roughness"])Sd(r,n,t);D1(r.baseColor,`${t}.baseColor`),Uh(r.normal,`${t}.normal`,["texture","strength"]),Uh(r.metallicRoughness,`${t}.metallicRoughness`,["texture"]),Uh(r.occlusion,`${t}.occlusion`,["texture","strength"]),R1(r.emission,`${t}.emission`),O1(r.alpha,`${t}.alpha`)}function D1(e,t){if(e==null)return;let r=Ss(e,t);gs(r,["color","texture","brightness","saturation","contrast","hue"],t),ND(r.color,`${t}.color`),fd(r.texture,`${t}.texture`);for(let n of["brightness","saturation","contrast","hue"])Sd(r,n,t)}function Uh(e,t,r){if(e==null)return;let n=Ss(e,t);gs(n,r,t),fd(n.texture,`${t}.texture`),r.includes("strength")&&Sd(n,"strength",t)}function R1(e,t){if(e==null)return;let r=Ss(e,t);gs(r,["color","intensity","texture","maskTexture"],t),ND(r.color,`${t}.color`),Sd(r,"intensity",t),fd(r.texture,`${t}.texture`),fd(r.maskTexture,`${t}.maskTexture`)}function O1(e,t){if(e==null)return;let r=Ss(e,t);if(gs(r,["mode","opacity","cutoff","texture"],t),"mode"in r&&!["opaque","mask","blend"].includes(String(r.mode)))throw F("schema.invalidValue",`${t}.mode`);for(let n of["opacity","cutoff"])Sd(r,n,t);fd(r.texture,`${t}.texture`)}function fd(e,t){if(e==null)return;let r=Ss(e,t);gs(r,["url","textureAssetId"],t);for(let n of["url","textureAssetId"])if(n in r&&r[n]!=null&&!J(r[n]))throw F("schema.invalidValue",`${t}.${n}`)}function ND(e,t){if(e==null)return;let r=Ss(e,t);for(let n of["r","g","b"])C1(r,n,t)}function gs(e,t,r){let n=new Set(t);for(let o of Object.keys(e))if(!n.has(o))throw F("schema.deprecatedField",`${r}.${o}`)}function Sd(e,t,r){if(t in e&&e[t]!=null&&(typeof e[t]!="number"||!Number.isFinite(e[t])))throw F("schema.invalidType",`${r}.${t}`)}function C1(e,t,r){if(!(t in e)||typeof e[t]!="number"||!Number.isFinite(e[t]))throw F("schema.invalidValue",`${r}.${t}`)}function Ss(e,t){let r=Y(e);if(!r)throw F("schema.invalidType",t);return r}function F(e,t){let r=new Error(`${e}: ${t}`);return Object.assign(r,{code:e,path:t}),r}function Y(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function J(e){return typeof e=="string"&&e.length>0&&e===e.trim()?e:null}function wD(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}var w1=Object.freeze({bash:"shell",cjs:"javascript",conf:"config",config:"config",css:"css",env:"dotenv",frag:"glsl",fs:"glsl",glsl:"glsl",htm:"html",html:"html",ini:"config",js:"javascript",json:"json",jsonc:"jsonc",jsx:"javascript",less:"less",md:"markdown",mjs:"javascript",scss:"scss",shader:"glsl",sh:"shell",toml:"toml",ts:"typescript",tsx:"typescript",txt:"text",vert:"glsl",vs:"glsl",wgsl:"wgsl",xml:"xml",yaml:"yaml",yml:"yaml",zsh:"shell"}),v1=Object.freeze({".env":"dotenv",".eslintignore":"config",".gitignore":"config",".npmrc":"config",".prettierignore":"config",dockerfile:"dockerfile",makefile:"makefile"}),k1=Object.freeze({png:{kind:"image",mimeType:"image/png"},jpg:{kind:"image",mimeType:"image/jpeg"},jpeg:{kind:"image",mimeType:"image/jpeg"},webp:{kind:"image",mimeType:"image/webp"},gif:{kind:"image",mimeType:"image/gif"},bmp:{kind:"image",mimeType:"image/bmp"},glb:{kind:"model",mimeType:"model/gltf-binary"},mp3:{kind:"audio",mimeType:"audio/mpeg"},wav:{kind:"audio",mimeType:"audio/wav"},ogg:{kind:"audio",mimeType:"audio/ogg"},m4a:{kind:"audio",mimeType:"audio/mp4"},aac:{kind:"audio",mimeType:"audio/aac"},flac:{kind:"audio",mimeType:"audio/flac"}});function Nm(e){let t=e.replace(/\\/g,"/").split("/"),r=t[t.length-1]?.toLowerCase()??"",n=r.lastIndexOf(".");return n>0?r.slice(n+1):""}function Kh(e){let t=e.replace(/\\/g,"/").split("/"),r=t[t.length-1]?.toLowerCase()??"";return v1[r]??w1[Nm(r)]??null}function jD(e){return Kh(e)!==null}function Wh(e){return k1[Nm(e)]??null}var _1="fps.plugin.ground-decal",GD="@fps-games/plugin-ground-decal";function LD(e){G1(e);let t=e.plugins.find(a=>a.pluginId===_1),r=t?j1(t):null,n=r?[{id:"groundDecal",label:"Ground Decal",config:N1(r),scene:{kind:"groundDecal"}}]:[],o=e.authoring.source,i=e.authoring.assets;return Object.freeze({definition:e,plugins:e.plugins,groundDecal:r,metadata:L1(e.metadata),project:Object.freeze({projectId:e.projectId,projectName:e.projectName,source:Object.freeze({editorScene:o.document,runtimeScene:o.runtimeArtifact,...o.rendering?{rendering:o.rendering}:{},...o.shadows?{shadows:o.shadows}:{}}),assets:Object.freeze({...i}),features:Object.freeze(n),...e.metadata&&Rt(e.metadata)?{metadata:Object.freeze({...e.metadata})}:{}})})}function N1(e){let t=new Map(e.kinds.map(l=>[l.id,l])),r=new Set(e.editableLayerRoles??[]),n=new Set(e.layoutEditableLayerRoles??[]),o=new Set(e.rotationEditableLayerRoles??[]),i=new Set(e.stretchedImageRoles??[]),a=new Set(e.activePreviewKinds??[]),s=l=>t.has(l),c=l=>{let m=t.get(l)??t.get(e.defaultUiKind);if(!m)throw new Error(`Ground Decal kind is not configured: ${l}`);return structuredClone(m.defaultConfig)},d=l=>F1(l,t),u={defaultUiKind:e.defaultUiKind,isKnownUiKind:s,isProjectEditableLayer:l=>r.size===0||r.has(l.role),isLayoutEditableLayer:l=>n.has(l.role),isRotationEditableLayer:l=>o.has(l.role),createDefaultGroundDecal:c,isGroundDecalConfig:d};return{uiKinds:Object.freeze([...t.keys()]),documentPolicy:u,inspectorPolicy:{...u,isEditableTextureLayer:l=>(l.kind==="texture"||l.kind==="textureProgress")&&(r.size===0||r.has(l.role)),isEditableColorLayer:l=>(l.kind==="color"||l.kind==="progress")&&(r.size===0||r.has(l.role)),isEditableTextLayer:l=>l.kind==="text"&&(r.size===0||r.has(l.role)),useUniformLayoutScaleMode:l=>n.has(l.role),resolveImageFit:l=>"imageFit"in l&&(l.imageFit==="stretch"||l.imageFit==="contain")?l.imageFit:i.has(l.role)?"stretch":"contain",createLayerLabel:l=>$1(l.role),createUiKindLabel:l=>t.get(l)?.label??l,canShowActivePreview:l=>a.has(l.uiKind),getLayerPreviewVisibility:(l,m)=>a.has(m.uiKind)&&l.role==="activeBackground"?{path:"groundDecal.editorPreviewActive",value:m.editorPreviewActive===!0}:null},createHierarchyLabel:l=>t.get(l)?.hierarchyLabel??`${t.get(l)?.label??l} Ground Decal UI`}}function j1(e){if(e.packageName!==GD)throw new Error(`Ground Decal Plugin package must be ${GD}.`);if(!e.targets.includes("editor"))throw new Error("Ground Decal Plugin must target editor.");let t=e.config;if(!Rt(t)||t.schemaVersion!==1)throw new Error("Ground Decal Plugin config schemaVersion must be 1.");if(typeof t.defaultUiKind!="string"||!Array.isArray(t.kinds)||t.kinds.length===0)throw new Error("Ground Decal Plugin config must define defaultUiKind and kinds.");let r=new Set;for(let n of t.kinds){if(!Rt(n)||typeof n.id!="string"||typeof n.label!="string"||!Rt(n.defaultConfig))throw new Error("Ground Decal Plugin kinds must contain id, label, and defaultConfig.");if(r.has(n.id))throw new Error(`Duplicate Ground Decal kind: ${n.id}`);if(r.add(n.id),n.defaultConfig.uiKind!==n.id)throw new Error(`Ground Decal defaultConfig.uiKind must match kind id: ${n.id}`)}if(!r.has(t.defaultUiKind))throw new Error(`Ground Decal defaultUiKind is not declared: ${t.defaultUiKind}`);for(let n of["editableLayerRoles","layoutEditableLayerRoles","rotationEditableLayerRoles","stretchedImageRoles","activePreviewKinds"]){let o=t[n];if(o!==void 0&&(!Array.isArray(o)||o.some(i=>typeof i!="string")))throw new Error(`Ground Decal Plugin config.${n} must be an array of strings.`)}return t}function G1(e){if(!Rt(e)||e.schemaVersion!==1)throw new Error("Editor Project definition schemaVersion must be 1.");if(typeof e.projectId!="string"||typeof e.projectName!="string")throw new Error("Editor Project identity is invalid.");if(!Rt(e.authoring)||!Rt(e.authoring.source)||!Rt(e.authoring.assets)||!Array.isArray(e.plugins))throw new Error("Editor Project authoring or Plugin configuration is invalid.")}function L1(e){return Rt(e)?Object.freeze({...Array.isArray(e.markerTypes)?{markerTypes:Object.freeze(e.markerTypes.filter(Rt).map(t=>Object.freeze({...t})))}:{},...Array.isArray(e.relationTypes)?{relationTypes:Object.freeze(e.relationTypes.filter(Rt).map(t=>Object.freeze({...t})))}:{}}):Object.freeze({})}function F1(e,t){if(!Rt(e)||typeof e.uiKind!="string"||!t.has(e.uiKind)||!Rt(e.size)||!jm(e.size.width)||!jm(e.size.depth)||!Array.isArray(e.layers))return!1;let r=new Set;for(let n of e.layers){if(!Rt(n)||typeof n.id!="string"||!n.id||typeof n.role!="string"||!n.role||typeof n.kind!="string"||!Rt(n.rect)||!Number.isFinite(n.rect.x)||!Number.isFinite(n.rect.z)||!jm(n.rect.width)||!jm(n.rect.depth)||r.has(n.id))return!1;r.add(n.id)}return!0}function jm(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Rt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function $1(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/^./,t=>t.toUpperCase())}var B1=["/__fps_editor_authoring"],z1=[["manifest","/manifest"],["commit","/commit"],["editor-scene","/editor-scene"],["editor-asset-library","/editor-asset-library"],["project-files","/project-files"],["project-media","/project-media"],["project-file","/project-file"],["save-editor-scene","/save-editor-scene"],["file","/file"],["exec","/exec"]];function FD(e,t={}){let r=new URL(e??"","http://localhost").pathname,n=t.prefixes??B1,o=U1(r,n);if(!o)return null;let i=r.slice(o.length)||"/",a=V1(i);return a?{route:i,routeName:a,prefix:o}:null}function U1(e,t){return t.find(r=>e.startsWith(r))??null}function V1(e){return z1.find(([,t])=>e.startsWith(t))?.[0]??null}function $D(e){let r=e.match(/(?:^|\s)--payload(?:=|\s+)("[^"]+"|'[^']+'|\S+)/)?.[1]??"";return r.startsWith('"')&&r.endsWith('"')||r.startsWith("'")&&r.endsWith("'")?r.slice(1,-1):r}async function BD(e,t){let r=FD(e.url);if(!r)return null;let n=(e.method??"GET").toUpperCase();if(n==="OPTIONS")return hu(204);try{if(H1(r.routeName)){if(n!=="GET")return rt(405,{ok:!1,error:"method_not_allowed"});if(r.routeName==="project-file"){let i=new URL(e.url??"","http://localhost").searchParams.get("path")?.trim()??"";if(!i)return rt(400,{ok:!1,error:"missing_file_path"});let a=await t.loadProjectFile?.({path:i,route:r});return rt(200,a??{ok:!1,error:"not_found"})}return rt(200,await K1(r,t))}if(n!=="POST")return rt(405,{ok:!1,error:"method_not_allowed"});let o=e.body??await t.readBody?.(e,r)??{};return await W1(r,o,t)}catch(o){return rt(500,{ok:!1,error:o instanceof Error?o.message:String(o),code:typeof o?.code=="string"?o.code:"authoring_request_failed",details:We(o?.details)})}}function H1(e){return e==="manifest"||e==="editor-scene"||e==="editor-asset-library"||e==="project-files"||e==="project-file"||e==="project-media"}async function K1(e,t){return e.routeName==="manifest"&&t.loadManifest?t.loadManifest(e):e.routeName==="editor-scene"&&t.loadEditorScene?t.loadEditorScene(e):e.routeName==="editor-asset-library"&&t.loadEditorAssetLibrary?t.loadEditorAssetLibrary(e):e.routeName==="project-files"&&t.loadProjectFiles?t.loadProjectFiles(e):{ok:!1,error:"not_found"}}async function W1(e,t,r){return e.routeName==="file"?q1(e,t,r):e.routeName==="exec"?Y1(e,t,r):e.routeName==="save-editor-scene"?J1(e,t,r):e.routeName==="commit"?rt(410,await X1(e,t,r)):rt(404,{ok:!1,error:"not_found"})}async function q1(e,t,r){let n=String(t.path??""),o=r.normalizeTransportPath?.(n)??n;if(!o)return rt(400,{ok:!1,error:"missing_file_path"});let i=t.content,a=eP(i),s=await r.writeFile?.({body:t,path:o,rawPath:n,content:i,text:a,route:e});return rt(200,s??{ok:!0,path:o})}async function Y1(e,t,r){let n=String(t.cmd??""),o=$D(n);if(!o)return rt(400,{ok:!1,error:"missing_payload_arg",cmd:n});let i=r.normalizeTransportPath?.(o)??o,a=await r.runCommand?.({body:t,cmd:n,payloadPath:i,rawPayloadPath:o,route:e});return rt(200,a??{ok:!0,cmd:n})}async function J1(e,t,r){let n=t.mode==="prepare-platform-save"?"prepare-platform-save":"local-commit-save",o=await r.saveEditorScene?.({body:t,mode:n,rawEditorScene:t.editorScene,route:e});return rt(200,o??{ok:!1,error:"not_found"})}async function X1(e,t,r){return r.commit?.({body:t,route:e})??{ok:!1,error:"platform_commit_route_disabled",message:"Save through /__fps_editor_authoring/save-editor-scene so scene.main remains the authoring source of truth."}}function UD(e,t,r={}){gd(e);let n=t;Object.prototype.hasOwnProperty.call(n,"staticShadows")&&n.staticShadows!=null&&un(n.staticShadows,"$.staticShadows");let{scene:o,...i}=t,a=structuredClone(i),s=Et(o)?o:void 0,c=In(e),d={...c,compilerId:vD,compilerVersion:kD,compiledAt:new Date().toISOString()};a.schemaVersion=3,a.meta={...a.meta??{},generatedFrom:d};let u=s?.rootId||"root",l=e.scene.gameObjects.filter(P=>P.id!==u),m=rU(e),p={...e,scene:{...e.scene,materialAssets:m}},f=l.flatMap(P=>pU(P,c,p,r)),g=f.map(VD);Z1(u,g),eU(u,g);let S={rootId:u,assets:p.assets.filter(iU).map(aU),nodes:g,materialAssets:m,materials:structuredClone(s?.materials??[]),textures:structuredClone(s?.textures??[])};return a.scene=S,a.plugins=gU(a.plugins,r.shadowMapExperimentConfig,p.scene.shadowMapExperiment,f,u,c.revision),fc(a),{sceneConfig:a,summary:{assetCount:S.assets.length,gameObjectCount:e.scene.gameObjects.length,nodeCount:S.nodes.length}}}function VD(e){if(!Object.prototype.hasOwnProperty.call(e,"shadowMapExperiment")&&!Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentInferredUpdateClass")&&!Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentAuthoredShadow"))return e;let{shadowMapExperiment:t,shadowMapExperimentInferredUpdateClass:r,shadowMapExperimentAuthoredShadow:n,...o}=e;return o}function Z1(e,t){let r=new Set([e]);for(let n=0;n<t.length;n+=1){let o=t[n].id;if(r.has(o)){let i=new Error(`schema.invalidReference: $.scene.nodes[${n}].id`);throw Object.assign(i,{code:"schema.invalidReference",path:`$.scene.nodes[${n}].id`,nodeId:o}),i}r.add(o)}}function eU(e,t){let r=new Map(t.map(n=>[n.id,n]));for(let n=0;n<t.length;n+=1){let o=t[n];if(!(o.source?.component!=="PrefabMarker"||!("marker"in o)||!o.marker))for(let i of tU(o.marker)){let a=r.get(i.target.id);if(i.target.id!==e&&(!a||a.source?.objectId===o.source.objectId))continue;let s=`$.scene.nodes[${n}].marker.${i.path}.id`,c=new Error(`schema.invalidReference: ${s}`);throw Object.assign(c,{code:"schema.invalidReference",path:s,nodeId:o.id,targetId:i.target.id}),c}}}function tU(e){let t=[];return e.target&&t.push({path:"target",target:e.target}),e.geometry.kind==="point"&&e.geometry.target&&t.push({path:"geometry.target",target:e.geometry.target}),e.geometry.kind==="object-bounds"&&t.push({path:"geometry.target",target:e.geometry.target}),t}function rU(e){let t=structuredClone(e.scene.materialAssets??[]),r=Zl(nU(e,t));if(!r.ok)throw new Error(`editor_scene_material_assets_missing: ${r.missingMaterialAssetIds.join(", ")}`);return t}function nU(e,t){let r={...e,scene:{...e.scene,materialAssets:t}};return{...r,scene:{...r.scene,gameObjects:[...r.scene.gameObjects.map(n=>{let o=eR(n,r);if(o)return{...n,overrides:o};if(!("overrides"in n))return n;let i={...n};return delete i.overrides,i}),...oU(r)]}}}function oU(e){let t=[];for(let r of e.scene.gameObjects){let n=_o(e,r);!n.definition||!Lm(n.definition)||t.push(...HD({editorDocument:e,prefabAsset:n.definition,hostGameObject:r,instanceOverrides:r.overrides,visitedPrefabIds:new Set}))}return t}function HD(e){if(e.visitedPrefabIds.has(e.prefabAsset.id))return[];e.visitedPrefabIds.add(e.prefabAsset.id);let t=QD(Gr(e.prefabAsset),Xt(e.prefabAsset)??""),r=t.find(i=>i.id===Xt(e.prefabAsset));if(!r)return e.visitedPrefabIds.delete(e.prefabAsset.id),[];let n=ZD(t,e.prefabAsset),o=[];for(let i of t){if(i.kind==="prefabInstance"&&i.childPrefabId){let d=e.editorDocument.assets.find(u=>u.id===i.childPrefabId);if(d&&Lm(d)){o.push(...HD({editorDocument:e.editorDocument,prefabAsset:d,hostGameObject:e.hostGameObject,instanceOverrides:i.overrides,visitedPrefabIds:new Set(e.visitedPrefabIds)}));continue}continue}let a=CU(e.hostGameObject,i);if(!a)continue;let s=i.kind==="model"&&i.sourceAssetId?e.editorDocument.assets.find(d=>d.id===i.sourceAssetId):void 0,c=Xh({hostGameObject:a,prefabAsset:e.prefabAsset,rootNode:r,node:i,asset:s,editorDocument:e.editorDocument,instanceOverrides:i.id===n?e.instanceOverrides:void 0});c&&o.push({...a,overrides:c})}return e.visitedPrefabIds.delete(e.prefabAsset.id),o}function iU(e){return e.type==="glb"||e.type==="texture"}function aU(e){let t=dU(e),r=e.type==="glb"?lU(e):[],n=cU(e.external),o=sU(e.defaults);return{id:e.id,type:e.type,...e.guid?{guid:e.guid}:{},...t?{url:t}:{},...typeof e.warmupCount=="number"&&Number.isInteger(e.warmupCount)&&e.warmupCount>=0?{warmupCount:e.warmupCount}:{},...typeof e.singleton=="boolean"?{singleton:e.singleton}:{},...typeof e.materialMode=="string"?{materialMode:e.materialMode}:{},...o!==void 0?{defaults:o}:{},...n?{external:n}:{},...r.length>0?{materialSlots:r}:{}}}function sU(e){if(!e)return;let t=structuredClone(e);return Et(t)?(delete t.shadowMapExperiment,Object.keys(t).length>0?t:void 0):t}function cU(e){let t=Et(e)?e:void 0,r=oo(t?.platformAssetId),n=oo(t?.assetUrl);if(!(!r&&!n))return{...r?{platformAssetId:r}:{},...n?{assetUrl:n}:{}}}function dU(e){let t=Et(e.metadata)?e.metadata:void 0,r=Et(e.external)?e.external:void 0;return oo(t?.url)??oo(r?.assetUrl)??void 0}function lU(e){let t=Et(e.metadata)?e.metadata:void 0,r=Array.isArray(t?.materialSlots)?t.materialSlots:[],n=uU(t?.assetAnalysis);return r.flatMap(o=>{if(!Et(o))return[];let i=oo(o.slotId);if(!i)return[];let a=oo(o.label),s=(Array.isArray(o.sourceSurfaces)?o.sourceSurfaces:[]).flatMap(c=>{if(!Et(c))return[];let d=oo(c.ownerNodePath),u=hd(c.meshIndex),l=hd(c.primitiveIndex);if(!d||u==null||l==null)return[];let m=hd(c.nodeIndex),p=mU(Array.isArray(c.nodeIndexPath)?c.nodeIndexPath:[]),f=hd(c.sourceMaterialIndex),g=oo(c.sourceMeshName)??n.get(u);return[{ownerNodePath:d,...m==null?{}:{nodeIndex:m},...p.length>0?{nodeIndexPath:p}:{},meshIndex:u,primitiveIndex:l,...f==null?{}:{sourceMaterialIndex:f},...g?{sourceMeshName:g}:{}}]});return s.length===0?[]:[{slotId:i,...a?{label:a}:{},sourceSurfaces:s}]})}function uU(e){let t=Et(e)?e:void 0,r=Array.isArray(t?.meshes)?t.meshes:[];return new Map(r.flatMap(n=>{if(!Et(n))return[];let o=hd(n.meshIndex),i=oo(n.name);return o==null||!i?[]:[[o,i]]}))}function mU(e){return[...new Set(e.filter(t=>typeof t=="number"&&Number.isInteger(t)&&t>=0))]}function hd(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0}function pU(e,t,r,n){let o=_o(r,e);return(o.definition&&Lm(o.definition)?EU(e,o.definition,t,r,new Set):[fU(e,t,r,n)]).map(a=>{let s=a.kind==="instance"?r.assets.find(d=>d.id===a.instance.assetId):void 0,c=n.inferShadowMapExperimentUpdateClass?.({gameObject:e,runtimeNode:VD(a),...s?{asset:s}:{}})??yU(s);return{...a,shadowMapExperimentInferredUpdateClass:c,...Object.prototype.hasOwnProperty.call(a,"shadowMapExperimentAuthoredShadow")?{}:hU(a,r)}})}function fU(e,t,r,n={}){let o=Q(e),i=Fe(e),a=ko(e),s=vU(e),c=he(e),d=eR(e,r),u=MT(e),l=bU(r,e),m={sourceId:t.sourceId,sourceType:t.sourceType,revision:t.revision,...e.guid?{objectGuid:e.guid}:{},objectId:e.id,component:i?"ModelRenderer":a?"ImageRenderer":s||c==="primitive"?"PrimitiveRenderer":c==="transform"?"Transform":"GameObject"},p={id:e.id,...e.name?{name:e.name}:{},...e.parentId?{parentId:e.parentId}:{},...e.active===!1?{enabled:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...l?{shadowMapExperiment:structuredClone(l)}:{},...xU(r,e),...u?{rendering:u}:{},source:m,...o&&"position"in o?{transform:{position:o.position,rotation:o.rotation,...o.scale?{scale:o.scale}:{}}}:{}};if(c==="primitive")return{...p,kind:"primitive",primitive:{shape:s?.shape??"cube"},...d?{overrides:d}:{}};if(a)return{...p,kind:"image",image:{assetId:a.assetId,size:{width:a.size.width,height:a.size.height}},...d?{overrides:d}:{}};if(!i){if(c==="transform"){let f=AU(e,n),g=f.transformType;delete f.transformType;let S=zD(g)??zD(e.transformType);return{...p,kind:"transform",...S?{transformType:S}:{},...e.camera?{camera:NU(e.camera)}:{},...e.light?{light:tR(e.light)}:{},...e.marker?{marker:{label:e.name||e.id,...structuredClone(e.marker)}}:{},...f,...d?{overrides:d}:{}}}return{...p,kind:"group"}}return{...p,kind:"instance",instance:{assetId:i.assetId},...d?{overrides:d}:{}}}function gU(e,t,r,n,o,i){let a=(e??[]).filter(m=>m.pluginId!==vf);if(!t)return a;let s=r,c=n.find(m=>m.id===t.lightRef),d=c?.kind==="transform"&&c.light?.type==="directional"?c:void 0;if(!c&&t.enabled)throw new Error(`shadowMapExperiment.lightMissing:${t.lightRef}`);if(c&&!d&&t.enabled)throw new Error(`shadowMapExperiment.lightUnsupported:${t.lightRef}`);let u=d?.kind==="transform"&&d.light?.type==="directional"?[d.light.direction.x,d.light.direction.y,d.light.direction.z]:[0,-1,0],l=zE({revision:typeof i=="number"&&Number.isInteger(i)&&i>=0?i:0,scopeId:o,config:t,settings:s,lightDirection:u,objects:n.filter(m=>m.kind==="instance"||m.kind==="primitive").map(m=>({entityId:m.id,renderableIds:[m.id],...m.shadowMapExperiment?{override:m.shadowMapExperiment}:{},...SU(m.shadowMapExperimentAuthoredShadow),inferredUpdateClass:m.shadowMapExperimentInferredUpdateClass??"static"}))});return[...a,{pluginId:vf,schemaVersion:3,data:l}]}function SU(e){return{...e?.cast==="none"?{cast:!1}:e?.cast==="enabled"?{cast:!0}:{},...e?.receive==="none"?{receive:!1}:e?.receive==="enabled"?{receive:!0}:{}}}function hU(e,t){let r=e.kind==="instance"?t.assets.find(o=>o.id===e.instance.assetId):void 0,n=KD(Qh(r).shadow,e.shadow);return n?{shadowMapExperimentAuthoredShadow:n}:{}}function KD(...e){let t=Fn(...e),r=t?.cast,n=t?.receive;return r||n?{...r?{cast:r}:{},...n?{receive:n}:{}}:void 0}function yU(e){let t=Et(e?.metadata?.assetAnalysis)?e.metadata.assetAnalysis:void 0;if(!t)return"static";let r=qh(t.skinCount),n=qh(t.morphTargetCount);return r>0||n>0?"skinned":qh(t.animationCount)>0?"dynamic":"static"}function qh(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:0}function Gm(...e){for(let t=e.length-1;t>=0;t-=1)if(e[t])return e[t]}function bU(e,t){let r=Fe(t),n=_o(e,t),o=n.sourceAsset??(r?e.assets.find(i=>i.id===r.assetId):void 0);return Gm(WD(o),n.definition?.prefab?.defaults?.shadowMapExperiment,t.shadowMapExperiment)}function WD(e){if(!e||!Et(e.defaults))return;let t=e.defaults.shadowMapExperiment;return Et(t)?t:void 0}function EU(e,t,r,n,o){return qD({prefabAsset:t,sourceRef:r,editorDocument:n,hostGameObject:e,rootRuntimeId:e.id,rootParentId:e.parentId,rootName:e.name??t.displayName??t.id,rootTransform:Q(e)??void 0,rootActive:e.active,rootShadow:e.shadow,sceneInstanceShadow:e.shadow,rootShadowMapExperiment:e.shadowMapExperiment,instanceOverrides:e.overrides,propertyPathPrefix:`assets.${t.id}.prefab.nodes`,visitedPrefabIds:o})}function qD(e){if(e.visitedPrefabIds.has(e.prefabAsset.id))return[Yh({id:e.rootRuntimeId,name:e.rootName??e.prefabAsset.displayName??e.prefabAsset.id,parentId:e.rootParentId,transform:e.rootTransform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:"PrefabCycle",propertyPath:e.propertyPathPrefix})];e.visitedPrefabIds.add(e.prefabAsset.id);let t=Gr(e.prefabAsset),r=Xt(e.prefabAsset),n=r?t.find(d=>d.id===r):null;if(!n||t.length===0)return e.visitedPrefabIds.delete(e.prefabAsset.id),[Yh({id:e.rootRuntimeId,name:e.rootName??e.prefabAsset.displayName??e.prefabAsset.id,parentId:e.rootParentId,transform:e.rootTransform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:"Prefab",propertyPath:e.propertyPathPrefix})];let o={instanceId:e.rootRuntimeId,rootNodeId:n.id},i=d=>Va(o,d.id),a=QD(t,n.id),s=ZD(a,e.prefabAsset),c=[];for(let d of a){let u=i(d),l=d.id===n.id?e.rootParentId:i(t.find(f=>f.id===d.parentId)??n),m=TU(t,d),p=PU(t,d);if(d.kind==="prefabInstance"&&d.childPrefabId){let f=e.editorDocument.assets.find(g=>g.id===d.childPrefabId);if(f&&Lm(f)){let g=d.id===n.id;c.push(...qD({prefabAsset:f,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,rootRuntimeId:u,rootParentId:l,rootName:g?e.rootName??d.name??f.displayName??f.id:d.name??f.displayName??f.id,rootTransform:g?e.rootTransform??d.transform:d.transform,rootActive:g?e.rootActive??d.defaults?.active??e.prefabAsset.prefab?.defaults?.active:d.defaults?.active,rootShadow:g?Fn(e.prefabAsset.prefab?.defaults?.shadow,d.defaults?.shadow,e.rootShadow):d.defaults?.shadow,inheritedShadowParticipationLayers:[e.prefabAsset.prefab?.defaults?.shadow,...p,d.defaults?.shadow,...e.inheritedShadowParticipationLayers??[]],sceneInstanceShadow:e.sceneInstanceShadow,inheritedShadowMapExperiment:Gm(e.prefabAsset.prefab?.defaults?.shadowMapExperiment,e.inheritedShadowMapExperiment,m,d.defaults?.shadowMapExperiment),rootShadowMapExperiment:e.rootShadowMapExperiment,instanceOverrides:g?yd(yd(Dn(e.prefabAsset.prefab?.overrides),Dn(d.overrides)),Dn(e.instanceOverrides)):d.overrides,propertyPathPrefix:`${e.propertyPathPrefix}.${d.id}.childPrefab.nodes`,visitedPrefabIds:new Set(e.visitedPrefabIds)}));continue}c.push(Yh({id:u,name:d.name??d.childPrefabId??"Prefab Instance",parentId:l,transform:d.transform,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,component:"UnsupportedPrefabInstance",propertyPath:`${e.propertyPathPrefix}.${d.id}`}));continue}c.push(IU({node:d,rootNode:n,identityScope:o,prefabAsset:e.prefabAsset,runtimeId:u,parentId:l,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,rootRuntimeName:e.rootName,rootRuntimeTransform:e.rootTransform,rootRuntimeActive:e.rootActive,rootRuntimeShadow:e.rootShadow,inheritedShadowParticipationLayers:e.inheritedShadowParticipationLayers,compositionAncestorShadowParticipationLayers:p,sceneInstanceShadow:e.sceneInstanceShadow,inheritedShadowMapExperiment:e.inheritedShadowMapExperiment,compositionAncestorShadowMapExperiment:m,rootRuntimeShadowMapExperiment:e.rootShadowMapExperiment,instanceOverrides:d.id===s?e.instanceOverrides:void 0,propertyPath:`${e.propertyPathPrefix}.${d.id}`}))}return e.visitedPrefabIds.delete(e.prefabAsset.id),DU({compiledNodes:c,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject})}function IU(e){let t=e.node.id===e.rootNode.id,r=t?e.rootRuntimeTransform??e.node.transform:e.node.transform,n=e.node.kind==="model"&&e.node.sourceAssetId?e.editorDocument.assets.find(i=>i.id===e.node.sourceAssetId):void 0,o=YD({id:e.runtimeId,name:t?e.rootRuntimeName??e.node.name??e.prefabAsset.displayName??e.prefabAsset.id:e.node.name,parentId:e.parentId,transform:r,active:t?e.rootRuntimeActive??e.node.defaults?.active??e.prefabAsset.prefab?.defaults?.active:e.node.defaults?.active,shadow:t?Fn(e.prefabAsset.prefab?.defaults?.shadow,e.node.defaults?.shadow,e.rootRuntimeShadow):Fn(e.prefabAsset.prefab?.defaults?.shadow,e.node.defaults?.shadow),shadowMapExperimentAuthoredShadow:KD(Qh(n).shadow,e.prefabAsset.prefab?.defaults?.shadow,...e.compositionAncestorShadowParticipationLayers??[],e.node.defaults?.shadow,...e.inheritedShadowParticipationLayers??[],e.sceneInstanceShadow)??{},shadowMapExperiment:Gm(WD(n),e.prefabAsset.prefab?.defaults?.shadowMapExperiment,e.inheritedShadowMapExperiment,e.compositionAncestorShadowMapExperiment,e.node.defaults?.shadowMapExperiment,e.rootRuntimeShadowMapExperiment),sourceAsset:n,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:e.node.kind==="model"?"PrefabModel":e.node.kind==="primitive"?"PrefabPrimitive":e.node.kind==="light"?"PrefabLight":e.node.kind==="marker"?"PrefabMarker":"PrefabNode",propertyPath:e.propertyPath});if(e.node.kind==="model"&&e.node.sourceAssetId){let i=Xh({hostGameObject:e.hostGameObject,prefabAsset:e.prefabAsset,rootNode:e.rootNode,node:e.node,asset:n,editorDocument:e.editorDocument,instanceOverrides:e.instanceOverrides});return{...o,kind:"instance",instance:{assetId:e.node.sourceAssetId},...i?{overrides:i}:{}}}if(e.node.kind==="primitive"){let i=Xh({hostGameObject:e.hostGameObject,prefabAsset:e.prefabAsset,rootNode:e.rootNode,node:e.node,asset:void 0,editorDocument:e.editorDocument,instanceOverrides:e.instanceOverrides});return{...o,kind:"primitive",primitive:{shape:e.node.primitive?.shape??"cube"},...i?{overrides:i}:{}}}return e.node.kind==="light"?{...o,kind:"transform",transformType:"light",...e.node.light?{light:tR(e.node.light)}:{}}:e.node.kind==="marker"&&e.node.marker?{...o,kind:"transform",marker:{label:e.node.name??e.node.id,...Rc(e.node.marker,e.identityScope)}}:{...o,kind:"group"}}function TU(e,t){let r=new Map(e.map(i=>[i.id,i])),n=[],o=t.parentId?r.get(t.parentId):void 0;for(;o;)n.unshift(o),o=o.parentId?r.get(o.parentId):void 0;return Gm(...n.map(i=>i.defaults?.shadowMapExperiment))}function PU(e,t){let r=new Map(e.map(i=>[i.id,i])),n=[],o=t.parentId?r.get(t.parentId):void 0;for(;o;)n.unshift(o),o=o.parentId?r.get(o.parentId):void 0;return n.map(i=>i.defaults?.shadow)}function Yh(e){return{...YD({id:e.id,name:e.name,parentId:e.parentId,transform:e.transform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:e.component,propertyPath:e.propertyPath}),kind:"group"}}function AU(e,t){let r=t.readCustomTransformRuntimeData?.(e);return r&&typeof r=="object"&&!Array.isArray(r)?structuredClone(r):{}}function YD(e){return{id:e.id,...e.name?{name:e.name}:{},...e.parentId?{parentId:e.parentId}:{},...e.active===!1?{enabled:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentAuthoredShadow")?{shadowMapExperimentAuthoredShadow:structuredClone(e.shadowMapExperimentAuthoredShadow??{})}:{},...e.shadowMapExperiment?{shadowMapExperiment:structuredClone(e.shadowMapExperiment)}:{},...MU(e),source:{sourceId:e.sourceRef.sourceId,sourceType:e.sourceRef.sourceType,revision:e.sourceRef.revision,...e.hostGameObject.guid?{objectGuid:e.hostGameObject.guid}:{},objectId:e.hostGameObject.id,component:e.component,propertyPath:e.propertyPath},...e.transform&&"position"in e.transform?{transform:{position:e.transform.position,rotation:e.transform.rotation,...e.transform.scale?{scale:e.transform.scale}:{}}}:{}}}function xU(e,t){let r=us({document:e,casterId:t.id,caster:t});return Zh(r,!!t.shadow)?{shadowPlan:r}:{}}function MU(e){if(!e.editorDocument)return{};let t=ct(e.shadow),r=Qh(e.sourceAsset),n=!!e.shadow||!!t.shadow||!!r.shadow;if(!n&&t.diagnostics.length===0&&r.diagnostics.length===0)return{};let o=us({document:e.editorDocument,casterId:e.hostGameObject.id,caster:e.hostGameObject,settings:{source:r.shadow,instance:t.shadow}}),i={...o,casterId:e.id,diagnostics:[...r.diagnostics,...t.diagnostics,...o.diagnostics].map(a=>({...a,casterId:a.casterId===e.hostGameObject.id||!a.casterId?e.id:a.casterId}))};return Zh(i,n)?{shadowPlan:i}:{}}function Qh(e){if(!e)return{diagnostics:[]};let t=e?.defaults&&typeof e.defaults=="object"&&!Array.isArray(e.defaults)?e.defaults:void 0;if(!t)return{diagnostics:[]};let r=ct(t.shadow);return{shadow:r.shadow,diagnostics:r.diagnostics.map(n=>({...n,details:{...n.details??{},source:"asset",assetId:e.id}}))}}function Zh(e,t){return t||e.backend!=="none"||e.diagnostics.length>0}function DU(e){if(e.compiledNodes.length===0)return e.compiledNodes;let t=new Set(e.compiledNodes.map(a=>a.id)),r=e.compiledNodes.map(a=>RU(a)),n={...e.editorDocument,scene:{...e.editorDocument.scene,gameObjects:[...e.editorDocument.scene.gameObjects.filter(a=>!t.has(a.id)),...r]}},o=e.compiledNodes.filter(a=>a.shadow?.receive==="enabled").map(a=>a.id),i=r.find(a=>a.light?.type==="directional"&&a.active!==!1)?.id;return e.compiledNodes.map((a,s)=>{let c=r[s],d=us({document:n,casterId:a.id,caster:c,explicitReceiverIds:o,...i?{defaultLightId:i}:{}}),u=!!a.shadow;if(!Zh(d,u)){if(!a.shadowPlan)return a;let l={...a};return delete l.shadowPlan,l}return{...a,shadowPlan:d}})}function RU(e){let t=[];return e.transform&&t.push({type:"Transform",position:e.transform.position,rotation:e.transform.rotation,...e.transform.scale?{scale:e.transform.scale}:{}}),e.kind==="instance"&&t.push({type:"ModelRenderer",assetId:e.instance.assetId}),e.kind==="image"&&t.push({type:"ImageRenderer",assetId:e.image.assetId,size:structuredClone(e.image.size)}),{id:e.id,...e.name?{name:e.name}:{},kind:e.kind==="image"?"transform":e.kind,...e.parentId?{parentId:e.parentId}:{},...e.enabled===!1?{active:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...e.kind==="primitive"?{primitive:{shape:e.primitive.shape}}:{},...e.kind==="transform"&&e.transformType?{transformType:e.transformType}:{},...e.kind==="transform"&&e.light?{light:e.light}:{},...e.kind==="transform"&&e.camera?{camera:e.camera}:{},...e.kind==="transform"&&e.marker?{marker:structuredClone(e.marker)}:{},components:t}}function Xh(e){let t=e.node.kind==="model"&&e.node.sourceAssetId?XD(e.hostGameObject,e.node,e.node.sourceAssetId):e.hostGameObject,r=e.asset?.id,n=wU([Jh(Dn(e.prefabAsset.prefab?.overrides),e.prefabAsset.prefab?.sourceAssetId,e.asset),Jh(Dn(e.rootNode.overrides),e.rootNode.kind==="model"?e.rootNode.sourceAssetId:e.prefabAsset.prefab?.sourceAssetId,e.asset),e.node.id===e.rootNode.id?void 0:Jh(Dn(e.node.overrides),e.node.kind==="model"?e.node.sourceAssetId:r,e.asset)]),o=Dn(e.instanceOverrides);return JD(yd(n,o),e.asset)}function Jh(e,t,r){return JD(e,t&&t===r?.id?r:void 0)}function JD(e,t){if(!e?.materialSlotBindings)return e;let r=Et(t?.metadata)&&Array.isArray(t.metadata.materialSlots)?t.metadata.materialSlots:[],n=new Set(r.flatMap(a=>{let s=Et(a)&&typeof a.slotId=="string"?a.slotId.trim():"";return s?[s]:[]})),o=Object.fromEntries(Object.entries(e.materialSlotBindings).filter(([a])=>n.has(a))),i=structuredClone(e);return Object.keys(o).length>0?i.materialSlotBindings=o:delete i.materialSlotBindings,Object.keys(i).length>0?i:void 0}function XD(e,t,r){return{id:`${e.id}:${t.id}`,...t.name?{name:t.name}:{},kind:"instance",components:[...t.transform?[t.transform]:[],{type:"ModelRenderer",assetId:r}]}}function OU(e,t){return{id:`${e.id}:${t.id}`,...t.name?{name:t.name}:{},kind:"primitive",primitive:{shape:t.primitive?.shape??"cube"},components:[...t.transform?[t.transform]:[]]}}function CU(e,t){return t.kind==="model"&&t.sourceAssetId?XD(e,t,t.sourceAssetId):t.kind==="primitive"?OU(e,t):null}function wU(e){let t;for(let r of e){let n=Dn(r);n&&(t=yd(t,n))}return t}function QD(e,t){let r=new Map;for(let s of e){if(!s.parentId)continue;let c=r.get(s.parentId)??[];c.push(s),r.set(s.parentId,c)}let n=[],o=new Set,i=s=>{if(!o.has(s.id)){o.add(s.id),n.push(s);for(let c of r.get(s.id)??[])i(c)}},a=e.find(s=>s.id===t);a&&i(a);for(let s of e)i(s);return n}function ZD(e,t){let r=t.prefab?.sourceAssetId;return e.find(n=>n.kind==="model"&&n.sourceAssetId===r)?.id??e.find(n=>n.kind==="model")?.id}function Lm(e){return Yt(e)&&e.prefab.compositionVersion===ki&&Array.isArray(e.prefab.nodes)&&e.prefab.nodes.length>0&&!!Xt(e)}function vU(e){return e.primitive??null}function eR(e,t){let r=he(e);if(r!=="instance"&&r!=="transform"&&r!=="primitive")return;let n=Fe(e),o=n?t.assets.find(i=>i.id===n.assetId):void 0;return kU(e,t,o)}function kU(e,t,r){let n=Dn(e.overrides),o=_o(t,e),i=Dn(o.definition?.prefab?.overrides);return yd(i,n)}function yd(e,t){let r=ru(e,t);for(let n of[e,t])if(n)for(let[o,i]of Object.entries(n))_U(o)||i===void 0||(r??={},r[o]=structuredClone(i));return r&&Object.keys(r).length>0?r:void 0}function Dn(e){if(!Et(e))return;let t=structuredClone(e);return Object.keys(t).length>0?t:void 0}function _U(e){return e==="materialBinding"||e==="materialSlotBindings"}function Et(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function oo(e){return(typeof e=="string"?e.trim():"")||void 0}function zD(e){return typeof e=="string"?e:void 0}function NU(e){let t=structuredClone(e);return delete t.inspectorLanguage,t}function tR(e){return e.type==="directional"?Aa({schemaVersion:1,type:"directional",intensity:e.intensity,direction:nc(e.direction),diffuseColor:e.diffuseColor??Wc.diffuseColor}):Aa({schemaVersion:1,type:"hemispheric",intensity:e.intensity,diffuseColor:e.diffuseColor??Hi.diffuseColor,groundColor:e.groundColor??Hi.groundColor})}var jU=new Set(["leftToRight","rightToLeft","bottomToTop","topToBottom"]);function oR(e){let t=jl(e),r={uiKind:e.uiKind,size:{width:e.size.width,depth:e.size.depth},layers:e.layers.map((n,o)=>GU(n,o)),rendering:{textureWidth:t.width,textureHeight:t.height}};return e.aspectSourceLayerId&&(r.aspectSourceLayerId=e.aspectSourceLayerId),typeof e.lockAspectToBorder=="boolean"&&(r.lockAspectToBorder=e.lockAspectToBorder),e.mask&&(r.mask={...typeof e.mask.enabled=="boolean"?{enabled:e.mask.enabled}:{},...e.mask.source==="roundedRect"||e.mask.source==="borderAlpha"||e.mask.source==="texture"?{source:e.mask.source}:{},...e.mask.textureId?{textureId:e.mask.textureId}:{},...typeof e.mask.cornerRadius=="number"&&Number.isFinite(e.mask.cornerRadius)?{cornerRadius:e.mask.cornerRadius}:{},...typeof e.mask.padding=="number"&&Number.isFinite(e.mask.padding)?{padding:e.mask.padding}:{}}),e.rendering&&(r.rendering={...r.rendering,...typeof e.rendering.alphaIndex=="number"&&Number.isFinite(e.rendering.alphaIndex)?{alphaIndex:e.rendering.alphaIndex}:{},...typeof e.rendering.diffuseTextureLevel=="number"&&Number.isFinite(e.rendering.diffuseTextureLevel)?{diffuseTextureLevel:e.rendering.diffuseTextureLevel}:{},...typeof e.rendering.emissiveTextureLevel=="number"&&Number.isFinite(e.rendering.emissiveTextureLevel)?{emissiveTextureLevel:e.rendering.emissiveTextureLevel}:{}}),r}function GU(e,t){let r=cs(e.rotationDeg??0)??0,n={id:e.id,role:e.role,zOrder:typeof e.zOrder=="number"&&Number.isFinite(e.zOrder)?e.zOrder:t,rect:LU(e.rect),...r!==0?{rotationDeg:r}:{},...typeof e.enabled=="boolean"?{enabled:e.enabled}:{},...typeof e.opacity=="number"&&Number.isFinite(e.opacity)?{opacity:e.opacity}:{}};return e.kind==="texture"?{...n,kind:"texture",...e.textureId?{textureId:e.textureId}:{},...e.tint?{tint:hs(e.tint)}:{},...e.imageFit?{imageFit:e.imageFit}:{}}:e.kind==="textureProgress"?{...n,kind:"textureProgress",...e.textureId?{textureId:e.textureId}:{},value:nR(e.value),...e.tint?{tint:hs(e.tint)}:{},...e.imageFit?{imageFit:e.imageFit}:{},...rR(e.direction)?{direction:e.direction}:{}}:e.kind==="color"?{...n,kind:"color",color:hs(e.color)}:e.kind==="progress"?{...n,kind:"progress",value:nR(e.value??0),color:hs(e.color),...rR(e.direction)?{direction:e.direction}:{}}:{...n,kind:"text",text:{value:e.text.value,color:hs(e.text.color),...e.text.fontFamily?{fontFamily:e.text.fontFamily}:{},...typeof e.text.fontSize=="number"&&Number.isFinite(e.text.fontSize)?{fontSize:e.text.fontSize}:{},...e.text.fontWeight!=null?{fontWeight:String(e.text.fontWeight)}:{},...e.text.strokeColor?{strokeColor:hs(e.text.strokeColor)}:{},...typeof e.text.strokeWidth=="number"&&Number.isFinite(e.text.strokeWidth)?{strokeWidth:e.text.strokeWidth}:{},...e.text.align==="left"||e.text.align==="center"||e.text.align==="right"?{align:e.text.align}:{},...e.text.baseline==="top"||e.text.baseline==="middle"||e.text.baseline==="bottom"?{baseline:e.text.baseline}:{}}}}function LU(e){return{x:e.x,z:e.z,width:e.width,depth:e.depth}}function hs(e){return{r:e.r,g:e.g,b:e.b,...typeof e.a=="number"?{a:e.a}:{}}}function rR(e){return typeof e=="string"&&jU.has(e)}function nR(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}import LV from"node:fs/promises";function iR(e,t={}){let r=t.generatedBy??"scripts/register-asset.mjs",n=t.codeKeyPolicy??"legacy",o=e.filter(d=>d.codeKey);if(n==="disabled"&&o.length>0){let d=o[0];throw Object.assign(new Error("manifest_code_key_disabled"),{name:"PlayableEditorAssetCatalogGenerationError",details:{codeKeyPolicy:n,assetId:d.assetId,codeKey:d.codeKey}})}let i=e.map(d=>`import ${hm(d.assetId)} from ${JSON.stringify(`${d.relativePath}?url`)};`).join(`
10
+ `),a=e.map(d=>{let u=Lf(d.relativePath);if(!u)throw new Error(`Generated asset catalog entry has no file extension: ${d.assetId}`);if(!Ff(u))throw new Error(`Generated asset catalog entry has unsupported format: ${d.assetId} (${u})`);let l=[`guid: ${JSON.stringify(d.guid)}`,`assetId: ${JSON.stringify(d.assetId)}`,`kind: ${JSON.stringify(d.kind)}`,`displayName: ${JSON.stringify(d.displayName)}`,`url: ${hm(d.assetId)}`,`format: ${JSON.stringify(u)}`,`relativePath: ${JSON.stringify(d.relativePath)}`,d.originalFileName?`originalFileName: ${JSON.stringify(d.originalFileName)}`:"",d.codeKey?`codeKey: ${JSON.stringify(d.codeKey)}`:"",d.category?`category: ${JSON.stringify(d.category)}`:"",typeof d.placeable=="boolean"?`placeable: ${JSON.stringify(d.placeable)}`:"",typeof d.warmupCount=="number"?`warmupCount: ${JSON.stringify(d.warmupCount)}`:"",typeof d.singleton=="boolean"?`singleton: ${JSON.stringify(d.singleton)}`:"",d.materialMode?`materialMode: ${JSON.stringify(d.materialMode)}`:"",d.defaults?`defaults: ${JSON.stringify(d.defaults)}`:"",d.contentHash?`contentHash: ${JSON.stringify(d.contentHash)}`:"",typeof d.byteSize=="number"?`byteSize: ${JSON.stringify(d.byteSize)}`:"",d.external?`external: ${JSON.stringify(d.external)}`:"",d.metadata?`metadata: ${JSON.stringify(d.metadata)}`:"",d.createdAt?`createdAt: ${JSON.stringify(d.createdAt)}`:"",d.updatedAt?`updatedAt: ${JSON.stringify(d.updatedAt)}`:""].filter(Boolean).join(", ");return` ${JSON.stringify(d.assetId)}: { ${l} },`}).join(`
11
+ `),s=new Map;for(let d of o)s.set(d.codeKey,d.assetId);let c=[...s].map(([d,u])=>` ${JSON.stringify(d)}: ${JSON.stringify(u)},`).join(`
12
+ `);return[`// This file is generated by ${r}.`,"// Do not edit by hand.","",i,"",'export type GeneratedAssetCatalogKind = "model" | "texture" | "image" | "sound";',"","export interface GeneratedAssetCatalogEntry {"," guid: string;"," assetId: string;"," kind: GeneratedAssetCatalogKind;"," displayName: string;"," url: string;"," format: `.${string}`;"," relativePath: string;"," originalFileName?: string;",...n==="legacy"?[" /** @deprecated Use the canonical assetId for persisted and runtime identity. */"," codeKey?: string;"]:[]," category?: string;"," placeable?: boolean;"," warmupCount?: number;"," singleton?: boolean;"," materialMode?: string;"," defaults?: Record<string, unknown>;"," contentHash?: string;"," byteSize?: number;"," external?: { platformAssetId?: string; assetPath?: string; assetUrl?: string };"," metadata?: Record<string, unknown>;"," createdAt?: string;"," updatedAt?: string;","}","","export const GENERATED_ASSET_CATALOG: Record<string, GeneratedAssetCatalogEntry> = {",a,"};","","export const GENERATED_ASSET_URL_MAP = Object.fromEntries("," Object.entries(GENERATED_ASSET_CATALOG).map(([assetId, entry]) => [assetId, entry.url]),",") as Record<string, string>;","","export const GENERATED_MODEL_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "model").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_TEXTURE_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "texture").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_IMAGE_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "image").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_SOUND_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "sound").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","/** @deprecated Resolve assets by canonical assetId through GENERATED_ASSET_CATALOG. */","export const ASSET_IDS = {",c,"} as const satisfies Record<string, string>;"].join(`
13
+ `)+`
14
+ `}import ey from"node:fs/promises";import br from"node:path";var ty=5;async function Id(e){let t={...e.existingMetadata??{},...e.payloadMetadata??{}},r=await dR(e);if(r?(t.assetAnalysis=r,t.assetAnalysisStatus="complete"):(delete t.assetAnalysis,t.assetAnalysisStatus="unavailable"),e.kind==="texture"||e.kind==="image"){let o=sV(e.sourcePath,t);return o&&(t.textureUsage=o.usage,t.capabilities={...ut(t.capabilities)?t.capabilities:{},materialTexture:o.materialTexture,environmentTexture:o.environmentTexture}),Object.keys(t).length>0?t:null}if(e.kind!=="model")return Object.keys(t).length>0?t:null;t.assetMetadataVersion=ty;let n=await lR(e.sourcePath,{assetGuid:e.guid,assetId:e.assetId,cwd:e.cwd,assetsDir:e.assetsDir,existingMaterialSlots:t.materialSlots});return n.length===0?delete t.materialSlots:t.materialSlots=n,Object.keys(t).length>0?t:null}async function dR(e){return e.kind==="model"?FU(e.sourcePath):e.kind==="texture"||e.kind==="image"?$U(e.sourcePath):null}async function lR(e,t={}){try{let r=await uR(e);return XU(r,{...t,sourcePath:e})}catch{return[]}}async function uR(e){let t=br.extname(e).toLowerCase();if(t===".gltf")return JSON.parse(await ey.readFile(e,"utf8"));if(t!==".glb")return null;let r=await ey.readFile(e);if(r.length<20||r.toString("utf8",0,4)!=="glTF"||r.readUInt32LE(4)!==2||r.readUInt32LE(8)>r.length)return null;let i=12;for(;i+8<=r.length;){let a=r.readUInt32LE(i),s=r.readUInt32LE(i+4);if(i+=8,i+a>r.length)return null;if(s===1313821514){let c=r.toString("utf8",i,i+a).replace(/\0+$/g,"");return JSON.parse(c)}i+=a}return null}async function FU(e){try{let t=await uR(e);if(!t||typeof t!="object")return null;let r=Array.isArray(t.scenes)?t.scenes:[],n=Array.isArray(t.nodes)?t.nodes:[],o=Array.isArray(t.meshes)?t.meshes:[],i=Array.isArray(t.materials)?t.materials:[],a=Array.isArray(t.textures)?t.textures:[],s=Array.isArray(t.images)?t.images:[],c=Array.isArray(t.animations)?t.animations:[],d=Array.isArray(t.skins)?t.skins:[],u=Array.isArray(t.accessors)?t.accessors:[],l=SR(t),m=hR(n),p=new Set(l),f=o.reduce((T,R)=>T+(Array.isArray(R?.primitives)?R.primitives.length:0),0),g=o.reduce((T,R)=>T+(Array.isArray(R?.primitives)?R.primitives.reduce((A,E)=>A+(Array.isArray(E?.targets)?E.targets.length:0),0):0),0),S=HU({nodeCount:n.length,meshCount:o.length,primitiveCount:f,materialCount:i.length,textureCount:a.length,imageCount:s.length}),P=KU({nodeCount:n.length,meshCount:o.length,primitiveCount:f,materialCount:i.length,textureCount:a.length,imageCount:s.length,animationCount:c.length,skinCount:d.length,morphTargetCount:g,complexity:S});return{kind:"gltf",format:br.extname(e).toLowerCase()===".gltf"?"gltf":"glb",summary:`${n.length} nodes, ${o.length} meshes, ${f} primitives, ${i.length} materials`,complexity:S,sceneCount:r.length,nodeCount:n.length,meshCount:o.length,primitiveCount:f,materialCount:i.length,textureCount:a.length,imageCount:s.length,animationCount:c.length,skinCount:d.length,morphTargetCount:g,nodes:BU(n,o,i,u,m,p),meshes:zU(o,i,u),materials:UU(t),diagnostics:P}}catch{return null}}async function $U(e){try{let t=await ey.readFile(e),r=br.extname(e).toLowerCase(),n=r===".png"?WU(t):r===".jpg"||r===".jpeg"?qU(t):r===".webp"?YU(t):null;if(!n)return null;let o=JU(n);return{kind:"image",format:n.format,summary:`${n.width}x${n.height} ${n.mime}`,complexity:n.estimatedPixels>=4096*4096?"high":n.estimatedPixels>=2048*2048?"medium":"low",width:n.width,height:n.height,mime:n.mime,bitDepth:n.bitDepth,hasAlpha:n.hasAlpha,estimatedPixels:n.estimatedPixels,diagnostics:o}}catch{return null}}function BU(e,t,r,n,o,i){return e.slice(0,100).map((a,s)=>{let c=Number.isInteger(a?.mesh)?a.mesh:-1,d=c>=0&&c<t.length?t[c]:null,u=Array.isArray(a?.children)?a.children.filter(p=>Number.isInteger(p)):[],l=yR(e,o,i,s),m={nodeIndex:s,nodeIndexPath:ER(o,s),...typeof a?.name=="string"&&a.name.trim()?{name:a.name.trim()}:{},...l?{ownerNodePath:l}:{},...u.length>0?{children:u}:{}};if(d){let p=mR(d,r,n);Object.assign(m,{meshIndex:c,...typeof d?.name=="string"&&d.name.trim()?{meshName:d.name.trim()}:{},primitiveCount:p.length,...p.length>0?{primitives:p}:{}})}return m})}function zU(e,t,r){return e.slice(0,50).map((n,o)=>{let i=Array.isArray(n?.primitives)?n.primitives:[],a=[...new Set(i.map(c=>Number.isInteger(c?.material)?c.material:-1).filter(c=>c>=0))],s=mR(n,t,r);return{meshIndex:o,...typeof n?.name=="string"&&n.name.trim()?{name:n.name.trim()}:{},primitiveCount:i.length,...s.length>0?{primitives:s}:{},...a.length>0?{materialIndices:a}:{},...a.length>0?{materialNames:a.map(c=>{let d=t[c];return typeof d?.name=="string"?d.name.trim():""}).filter(Boolean)}:{}}})}function mR(e,t,r){let n=ut(e)?e:{};return(Array.isArray(n.primitives)?n.primitives:[]).map((i,a)=>{let s=Number.isInteger(i?.material)?i.material:-1,c=s>=0?t[s]:null,d=typeof c?.name=="string"&&c.name.trim()?c.name.trim():"",u=IR(i,r),l=TR(i,r);return{primitiveIndex:a,...Number.isInteger(i?.mode)?{mode:i.mode}:{},...s>=0?{sourceMaterialIndex:s}:{},...d?{materialName:d}:{},...Number.isFinite(u)?{triangleCount:u}:{},...l?{boundingBox:l}:{}}})}function UU(e){return(Array.isArray(e?.materials)?e.materials:[]).slice(0,50).map((r,n)=>{let o=r?.pbrMetallicRoughness&&typeof r.pbrMetallicRoughness=="object"?r.pbrMetallicRoughness:{},i=VU(r,o);return{sourceMaterialIndex:n,...typeof r?.name=="string"&&r.name.trim()?{materialName:r.name.trim()}:{},...Array.isArray(o.baseColorFactor)?{baseColorFactor:o.baseColorFactor.slice(0,4)}:{},metallicFactor:Number.isFinite(o.metallicFactor)?o.metallicFactor:1,roughnessFactor:Number.isFinite(o.roughnessFactor)?o.roughnessFactor:1,alphaMode:fR(r?.alphaMode)??"opaque",...Number.isFinite(r?.alphaCutoff)?{alphaCutoff:r.alphaCutoff}:{},...i.length>0?{textureSlots:i}:{}}})}function VU(e,t){let r=[];return bd(r,"baseColor",t?.baseColorTexture),bd(r,"metallicRoughness",t?.metallicRoughnessTexture),bd(r,"normal",e?.normalTexture),bd(r,"occlusion",e?.occlusionTexture),bd(r,"emissive",e?.emissiveTexture),r}function bd(e,t,r){!ut(r)||!Number.isInteger(r.index)||e.push({slot:t,textureIndex:r.index,...Number.isFinite(r.texCoord)?{texCoord:r.texCoord}:{}})}function HU(e){return e.nodeCount>=300||e.meshCount>=250||e.primitiveCount>=300||e.materialCount>=200||e.textureCount>=80||e.imageCount>=80?"high":e.nodeCount>=100||e.meshCount>=80||e.primitiveCount>=100||e.materialCount>=50||e.textureCount>=24||e.imageCount>=24?"medium":"low"}function KU(e){let t=[];return e.complexity==="high"&&t.push({severity:"warning",source:"asset",code:"asset.analysis.highComplexity",message:"GLTF asset is structurally complex; agent should place and inspect it before duplicating or using dense shadows.",details:{nodeCount:e.nodeCount,meshCount:e.meshCount,primitiveCount:e.primitiveCount,materialCount:e.materialCount,textureCount:e.textureCount,imageCount:e.imageCount}}),(e.animationCount>0||e.skinCount>0||e.morphTargetCount>0)&&t.push({severity:"info",source:"asset",code:"asset.analysis.riggedOrAnimated",message:"GLTF asset contains animation, skin, or morph target data.",details:{animationCount:e.animationCount,skinCount:e.skinCount,morphTargetCount:e.morphTargetCount}}),t}function WU(e){if(e.length<33||e[0]!==137||e.toString("ascii",1,4)!=="PNG"||e[4]!==13||e[5]!==10||e[6]!==26||e[7]!==10||e.toString("ascii",12,16)!=="IHDR")return null;let r=e.readUInt32BE(16),n=e.readUInt32BE(20),o=e[24],i=e[25];return{format:"png",mime:"image/png",width:r,height:n,bitDepth:o,hasAlpha:i===4||i===6,estimatedPixels:r*n}}function qU(e){if(e.length<4||e[0]!==255||e[1]!==216)return null;let t=2;for(;t+9<e.length;){if(e[t]!==255){t+=1;continue}let r=e[t+1],n=e.readUInt16BE(t+2);if(n<2)return null;if(r>=192&&r<=207&&![196,200,204].includes(r)&&t+8<e.length){let i=e[t+4],a=e.readUInt16BE(t+5),s=e.readUInt16BE(t+7);return{format:"jpeg",mime:"image/jpeg",width:s,height:a,bitDepth:i,hasAlpha:!1,estimatedPixels:s*a}}t+=2+n}return null}function YU(e){if(e.length<30||e.toString("ascii",0,4)!=="RIFF"||e.toString("ascii",8,12)!=="WEBP")return null;let t=e.toString("ascii",12,16);if(t==="VP8X"&&e.length>=30){let r=e[20],n=aR(e,24)+1,o=aR(e,27)+1;return{format:"webp",mime:"image/webp",width:n,height:o,hasAlpha:(r&16)!==0,estimatedPixels:n*o}}if(t==="VP8 "&&e.length>=30){let r=e.readUInt16LE(26)&16383,n=e.readUInt16LE(28)&16383;return{format:"webp",mime:"image/webp",width:r,height:n,hasAlpha:!1,estimatedPixels:r*n}}if(t==="VP8L"&&e.length>=25&&e[20]===47){let r=e.readUInt32LE(21),n=(r&16383)+1,o=(r>>14&16383)+1;return{format:"webp",mime:"image/webp",width:n,height:o,hasAlpha:!0,estimatedPixels:n*o}}return null}function aR(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16}function JU(e){let t=[];return e.estimatedPixels>=4096*4096&&t.push({severity:"warning",source:"asset",code:"asset.analysis.largeImage",message:"Image asset is large; agent should inspect texture usage before assigning it broadly.",details:{width:e.width,height:e.height,estimatedPixels:e.estimatedPixels}}),t}function XU(e,t={}){if(!e||typeof e!="object")return[];let r=Array.isArray(e.nodes)?e.nodes:[],n=Array.isArray(e.meshes)?e.meshes:[],o=Array.isArray(e.materials)?e.materials:[],i=ZU(e,t),a=SR(e),s=hR(r),c=new Set(a),d=Array.isArray(e.accessors)?e.accessors:[],u=oV(t.existingMaterialSlots),l=[],m=new Map;for(let p=0;p<r.length;p+=1){let f=r[p],g=Number.isInteger(f?.mesh)?f.mesh:-1;if(g<0||g>=n.length)continue;let S=yR(r,s,c,p);if(!S)continue;let P=n[g],x=Array.isArray(P?.primitives)?P.primitives:[],T=dV(f,P,S),R=bR(P),A=ER(s,p);for(let E=0;E<x.length;E+=1){let C=x[E],b=lV(C,o),k=gR({ownerNodePath:S,nodeIndex:p,meshIndex:g,primitiveIndex:E}),O=IR(C,d),$=TR(C,d),te=x.length>1?`${T} / Primitive ${E}`:T,de={ownerNodePath:S,nodeIndex:p,nodeIndexPath:A,meshIndex:g,primitiveIndex:E,...R?{sourceMeshName:R}:{},...b.index>=0?{sourceMaterialIndex:b.index}:{},...Number.isFinite(O)?{triangleCount:O}:{},...$?{boundingBox:$}:{}};if(b.index>=0){let K=m.get(b.index)??{label:te,materialName:b.name,sourceSurfaces:[]};K.sourceSurfaces.push(de),m.set(b.index,K);continue}l.push({slotId:u.byExactSource.get(k)??iV({assetGuid:t.assetGuid,assetId:t.assetId,nodeIndex:p,meshIndex:g,primitiveIndex:x.length>1?E:void 0}),label:te,sourceSurfaces:[de]})}}for(let[p,f]of m){let g=f.sourceSurfaces.sort(pR);l.push({slotId:u.bySourceMaterialIndex.get(p)??aV({assetGuid:t.assetGuid,assetId:t.assetId,sourceMaterialIndex:p}),label:f.label,sourceSurfaces:g,...f.materialName?{materialName:f.materialName,materialNames:[f.materialName]}:{},...eV(i,[p])})}return l.sort(QU)}function QU(e,t){let r=Array.isArray(e.sourceSurfaces)?e.sourceSurfaces[0]:void 0,n=Array.isArray(t.sourceSurfaces)?t.sourceSurfaces[0]:void 0;return pR(r,n)}function pR(e,t){let r=String(e?.ownerNodePath??"").localeCompare(String(t?.ownerNodePath??""));if(r!==0)return r;let n=Number.isInteger(e?.nodeIndex)?e.nodeIndex:-1,o=Number.isInteger(t?.nodeIndex)?t.nodeIndex:-1;if(n!==o)return n-o;let i=Number.isInteger(e?.meshIndex)?e.meshIndex:-1,a=Number.isInteger(t?.meshIndex)?t.meshIndex:-1;if(i!==a)return i-a;let s=Number.isInteger(e?.primitiveIndex)?e.primitiveIndex:-1,c=Number.isInteger(t?.primitiveIndex)?t.primitiveIndex:-1;return s-c}function ZU(e,t={}){let r=Array.isArray(e?.materials)?e.materials:[],n=[];for(let o=0;o<r.length;o+=1){let i=tV(e,o,t);i&&n.push(i)}return n}function eV(e,t){if(!t.length||!e.length)return{};let r=new Map(e.map(o=>[o.sourceMaterialIndex,o])),n=t.map(o=>r.get(o)).filter(Boolean);return n.length>0?{sourceMaterialProfiles:n}:{}}function tV(e,t,r={}){let n=Array.isArray(e?.materials)?e.materials[t]:null;if(!n||typeof n!="object")return null;let o={},i=[],a=n.pbrMetallicRoughness&&typeof n.pbrMetallicRoughness=="object"?n.pbrMetallicRoughness:{},s={},c=Array.isArray(a.baseColorFactor)?a.baseColorFactor:null,d=sR(c);d&&(s.color=d);let u=Ed(e,a.baseColorTexture,r,"baseColor.texture",s,"texture",i);Object.keys(s).length>0&&(o.baseColor={...s,brightness:1,saturation:1,contrast:1,hue:0});let l={};Ed(e,n.normalTexture,r,"normal.texture",l,"texture",i),Number.isFinite(n.normalTexture?.scale)?l.strength=n.normalTexture.scale:l.texture&&(l.strength=1),Object.keys(l).length>0&&(o.normal=l),o.metallic=Number.isFinite(a.metallicFactor)?a.metallicFactor:1,o.roughness=Number.isFinite(a.roughnessFactor)?a.roughnessFactor:1;let m={};Ed(e,a.metallicRoughnessTexture,r,"metallicRoughness.texture",m,"texture",i),Object.keys(m).length>0&&(o.metallicRoughness=m);let p={};Ed(e,n.occlusionTexture,r,"occlusion.texture",p,"texture",i),Number.isFinite(n.occlusionTexture?.strength)?p.strength=n.occlusionTexture.strength:p.texture&&(p.strength=1),Object.keys(p).length>0&&(o.occlusion=p);let f={},g=sR(Array.isArray(n.emissiveFactor)?n.emissiveFactor:null),S=g&&(g.r!==0||g.g!==0||g.b!==0);S&&(f.color=g),Ed(e,n.emissiveTexture,r,"emission.texture",f,"texture",i),S&&(f.intensity=1),Object.keys(f).length>0&&(o.emission=f);let P={},x=fR(n.alphaMode);if(x&&(P.mode=x),(x==="mask"||x==="blend")&&(c&&Number.isFinite(c[3])&&c[3]!==1&&(P.opacity=c[3]),Number.isFinite(n.alphaCutoff)?P.cutoff=n.alphaCutoff:x==="mask"&&(P.cutoff=.5),u.texture&&(P.texture=structuredClone(u.texture)),u.hint&&i.push({...u.hint,profilePath:"alpha.texture"})),Object.keys(P).length>0&&(o.alpha=P),Object.keys(o).length===0&&i.length===0)return null;let T=typeof n.name=="string"&&n.name.trim()?n.name.trim():"";return{sourceMaterialIndex:t,...T?{materialName:T}:{},...Object.keys(o).length>0?{profile:o}:{},...i.length>0?{textureHints:i}:{}}}function sR(e){if(!Array.isArray(e)||e.length<3)return null;let[t,r,n]=e;return Number.isFinite(t)&&Number.isFinite(r)&&Number.isFinite(n)?{r:t,g:r,b:n}:null}function fR(e){return e==="MASK"?"mask":e==="BLEND"?"blend":e==="OPAQUE"?"opaque":null}function Ed(e,t,r,n,o,i,a){let s=rV(e,t,r,n);return s.texture&&(o[i]=s.texture),s.hint&&a.push(s.hint),s}function rV(e,t,r,n){let o=ut(t)?t:{},i=Number.isInteger(o.index)?o.index:-1;if(i<0)return{};let a=Array.isArray(e?.textures)?e.textures:[],s=Array.isArray(e?.images)?e.images:[],c=a[i],d=nV(c),u=d.imageIndex,l=u>=0?s[u]:null,m=typeof l?.uri=="string"?l.uri.trim():"",p=/^data:/i.test(m),f={profilePath:n,textureIndex:i,...u>=0?{imageIndex:u}:{},...d.previewImageIndex>=0?{previewImageIndex:d.previewImageIndex}:{},...m&&!p?{uri:m}:{},...Number.isInteger(l?.bufferView)?{bufferView:l.bufferView}:{},...typeof l?.mimeType=="string"&&l.mimeType.trim()?{mimeType:l.mimeType.trim()}:{}};if(l?.bufferView!=null)return{hint:{...f,reason:"embedded-texture"}};if(!m)return{hint:{...f,reason:"missing-image-uri"}};if(p)return{hint:{...f,reason:"embedded-texture"}};if(/^https?:\/\//i.test(m)||m.startsWith("/"))return{texture:{url:m}};let g=m;try{g=decodeURIComponent(m)}catch{return{hint:{...f,reason:"unresolved-external-texture"}}}let S=br.dirname(String(r.sourcePath??"")),P=br.resolve(S,g),x=r.assetsDir?br.resolve(r.assetsDir):"",T=r.cwd?br.resolve(r.cwd):"",R=x?br.relative(x,P):"../";return x&&T&&R&&!R.startsWith("..")&&!br.isAbsolute(R)?{texture:{url:`/${br.relative(T,P).split(br.sep).join("/")}`},hint:{...f,reason:"external-texture"}}:{hint:{...f,reason:"external-texture"}}}function nV(e){let t=ut(e)?e:{},r=ut(t.extensions)?t.extensions:{},n=Number.isInteger(t.source)?t.source:-1,o=ut(r.KHR_texture_basisu)?r.KHR_texture_basisu:{};if(Number.isInteger(o.source))return{imageIndex:o.source,previewImageIndex:n>=0&&n!==o.source?n:-1};let i=ut(r.EXT_texture_webp)?r.EXT_texture_webp:{};return Number.isInteger(i.source)?{imageIndex:i.source,previewImageIndex:-1}:{imageIndex:n,previewImageIndex:-1}}function oV(e){let t=new Map,r=new Map;if(!Array.isArray(e))return{byExactSource:t,bySourceMaterialIndex:new Map};for(let o of e){if(!ut(o))continue;let i=Array.isArray(o.sourceSurfaces)?o.sourceSurfaces:[],a=typeof o.slotId=="string"?o.slotId.trim():"";if(!a)continue;let s=new Set;for(let c of i){if(!ut(c))continue;let d=typeof c.ownerNodePath=="string"?c.ownerNodePath.trim().replace(/^\/+|\/+$/g,""):"",u=Number.isInteger(c.nodeIndex)?c.nodeIndex:-1,l=Number.isInteger(c.meshIndex)?c.meshIndex:-1,m=Number.isInteger(c.primitiveIndex)?c.primitiveIndex:-1;i.length===1&&d&&u>=0&&l>=0&&m>=0&&t.set(gR({ownerNodePath:d,nodeIndex:u,meshIndex:l,primitiveIndex:m}),a),Number.isInteger(c.sourceMaterialIndex)&&c.sourceMaterialIndex>=0&&s.add(c.sourceMaterialIndex)}if(s.size===1){let[c]=s,d=r.get(c)??[];d.push(a),r.set(c,d)}}let n=new Map;for(let[o,i]of r)i.length===1&&n.set(o,i[0]);return{byExactSource:t,bySourceMaterialIndex:n}}function gR(e){return[e.ownerNodePath,e.nodeIndex,e.meshIndex,e.primitiveIndex].join("\0")}function iV(e){let t=Number.isInteger(e.primitiveIndex)?`:${e.primitiveIndex}`:"",r=`${e.assetGuid||e.assetId||"asset"}:${e.nodeIndex}:${e.meshIndex}${t}`;return`slot_${AR(r)}`}function aV(e){let t=`${e.assetGuid||e.assetId||"asset"}:material:${e.sourceMaterialIndex}`;return`slot_${AR(t)}`}function sV(e,t){if(t.textureUsage==="material"||t.usage==="material")return{usage:"material",materialTexture:!0,environmentTexture:!1};if(ut(t.capabilities)&&t.capabilities.materialTexture===!0)return{usage:"material",materialTexture:!0,environmentTexture:!1};if(t.textureUsage==="environment"||t.usage==="environment")return{usage:"environment",materialTexture:!1,environmentTexture:!0};if(ut(t.capabilities)&&t.capabilities.environmentTexture===!0)return{usage:"environment",materialTexture:!1,environmentTexture:!0};let r=br.extname(e).toLowerCase();return[".env",".hdr",".dds",".ktx",".ktx2"].includes(r)?{usage:"environment",materialTexture:!1,environmentTexture:!0}:[".png",".jpg",".jpeg",".webp"].includes(r)?{usage:"material",materialTexture:!0,environmentTexture:!1}:null}function SR(e){let t=Array.isArray(e.scenes)?e.scenes:[],r=Number.isInteger(e.scene)?e.scene:0,n=t[r]??t[0];return Array.isArray(n?.nodes)?n.nodes.filter(Number.isInteger):[]}function hR(e){let t=new Map;for(let r=0;r<e.length;r+=1){let n=Array.isArray(e[r]?.children)?e[r].children:[];for(let o of n)Number.isInteger(o)&&!t.has(o)&&t.set(o,r)}return t}function yR(e,t,r,n){let o=[],i=n,a=new Set;for(;Number.isInteger(i)&&i>=0&&i<e.length;){if(a.has(i))return"";a.add(i),o.push(cV(e[i],i));let s=t.get(i);if(typeof s!="number"||!Number.isInteger(s))break;i=s}return o.reverse(),o.length>1&&r.has(i)&&o.shift(),o.filter(Boolean).join("/")}function cV(e,t){return(ut(e)&&typeof e.name=="string"?e.name.trim():"")||`node_${t}`}function dV(e,t,r){let n=ut(e)&&typeof e.name=="string"?e.name.trim():"",o=bR(t);return n||o||r.split("/").filter(Boolean).pop()||r}function bR(e){return ut(e)&&typeof e.name=="string"?e.name.trim():""}function ER(e,t){let r=[],n=t,o=new Set;for(;Number.isInteger(n)&&n>=0;){if(o.has(n))return[];o.add(n),r.push(n);let i=e.get(n);if(!Number.isInteger(i))break;n=i}return r.reverse(),r}function lV(e,t){let r=ut(e)?e:{},n=Number.isInteger(r.material)?r.material:-1,o=n>=0?t[n]:null,i=typeof o?.name=="string"&&o.name.trim()?o.name.trim():"";return{index:n,name:i}}function IR(e,t){let r=ut(e)?e:{},n=Number.isInteger(r.indices)?r.indices:-1,o=PR(r),i=n>=0?t[n]:null,a=o>=0?t[o]:null,s=Number.isFinite(i?.count)?Number(i.count):Number.isFinite(a?.count)?Number(a.count):null;if(s==null)return null;let c=Number.isInteger(r.mode)?r.mode:4;return c===4?Math.floor(s/3):c===5||c===6?Math.max(0,s-2):0}function TR(e,t){let r=ut(e)?e:{},n=PR(r),o=n>=0?t[n]:null,i=cR(o?.min),a=cR(o?.max);return i&&a?{min:i,max:a}:null}function PR(e){let t=ut(e.attributes)?e.attributes:{};return Number.isInteger(t.POSITION)?t.POSITION:-1}function cR(e){if(!Array.isArray(e)||e.length<3)return null;let t=Number(e[0]),r=Number(e[1]),n=Number(e[2]);return Number.isFinite(t)&&Number.isFinite(r)&&Number.isFinite(n)?[t,r,n]:null}function ut(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function AR(e){let t=String(e??""),r=2166136261;for(let n=0;n<t.length;n+=1)r^=t.charCodeAt(n),r=Math.imul(r,16777619);return(r>>>0).toString(16).padStart(8,"0")}import iy from"node:crypto";import _e from"node:fs/promises";import Pe from"node:path";import Td from"node:fs/promises";import Wr from"node:path";async function MR(e,t={}){try{let r=await uV(e);if(!r)return[];let n=Array.isArray(r.gltf.images)?r.gltf.images:[],o=t.imageIndexes?new Set(t.imageIndexes.filter(a=>Number.isInteger(a)&&a>=0)):null,i=[];for(let a=0;a<n.length;a+=1){if(o&&!o.has(a))continue;let s=Er(n[a]);if(!s)continue;let c=await mV(e,r,s);if(!c)continue;let d=Pd(s.name)??(c.originalFileName?Wr.parse(c.originalFileName).name:null)??void 0;i.push({imageIndex:a,bytes:c.bytes,extension:c.extension,mimeType:c.mimeType,...d?{displayName:d}:{},...c.originalFileName?{originalFileName:c.originalFileName}:{}})}return i}catch{return[]}}function DR(e){let t=new Set;for(let r of OR(e)){let n=io(r.imageIndex),o=io(r.previewImageIndex);n!=null&&t.add(n),o!=null&&t.add(o)}return[...t].sort((r,n)=>r-n)}function RR(e){let t=new Map;for(let r of OR(e)){let n=io(r.imageIndex),o=io(r.previewImageIndex);n==null||o==null||n===o||t.set(`${n}:${o}`,{imageIndex:n,previewImageIndex:o})}return[...t.values()].sort((r,n)=>r.imageIndex-n.imageIndex||r.previewImageIndex-n.previewImageIndex)}function OR(e){if(!e)return[];let t=[],r=Array.isArray(e.materialSlots)?e.materialSlots:[];for(let n of r){let o=Er(n),i=Array.isArray(o?.sourceMaterialProfiles)?o.sourceMaterialProfiles:[];for(let a of i){let s=Er(a),c=Array.isArray(s?.textureHints)?s.textureHints:[];for(let d of c){let u=Er(d);u&&t.push(u)}}}return t}function CR(e,t){if(!e||t.length===0)return e;let r=new Map(t.map(a=>[a.imageIndex,a.textureAssetId])),n=structuredClone(e),o=Array.isArray(n.materialSlots)?n.materialSlots:[],i=!1;for(let a of o){let s=Er(a),c=Array.isArray(s?.sourceMaterialProfiles)?s.sourceMaterialProfiles:[];for(let d of c){let u=Er(d);if(!u)continue;let l=Array.isArray(u.textureHints)?u.textureHints:[];if(l.length===0)continue;let m=[];for(let p of l){let f=Er(p),g=io(f?.imageIndex),S=Pd(f?.profilePath),P=g==null?null:r.get(g)??null;if(!P||!S||!fV(S)){m.push(p);continue}let x=Er(u.profile)??{};gV(x,S,{textureAssetId:P}),u.profile=x,i=!0}m.length>0?u.textureHints=m:delete u.textureHints}}return i?n:e}async function uV(e){let t=Wr.extname(e).toLowerCase();if(t===".gltf"){let c=JSON.parse(await Td.readFile(e,"utf8")),d=await Promise.all((Array.isArray(c.buffers)?c.buffers:[]).map(u=>xR(e,Er(u))));return{gltf:c,buffers:d}}if(t!==".glb")return null;let r=await Td.readFile(e);if(r.length<20||r.toString("utf8",0,4)!=="glTF"||r.readUInt32LE(4)!==2||r.readUInt32LE(8)>r.length)return null;let n=null,o=[],i=12;for(;i+8<=r.length;){let c=r.readUInt32LE(i),d=r.readUInt32LE(i+4);if(i+=8,i+c>r.length)return null;let u=r.subarray(i,i+c);d===1313821514?n=JSON.parse(u.toString("utf8").replace(/\0+$/g,"")):d===5130562&&o.push(Buffer.from(u)),i+=c}if(!n)return null;let a=Array.isArray(n.buffers)?n.buffers:[],s=await Promise.all(a.map(async(c,d)=>{let u=Er(c);return Pd(u?.uri)?xR(e,u):o[d]??(d===0?o[0]??null:null)}));return s.length===0&&o.length>0&&s.push(o[0]),{gltf:n,buffers:s}}async function xR(e,t){let r=Pd(t?.uri);if(!r)return null;let n=kR(r);if(n)return n.bytes;if(ny(r))return null;let o=vR(r);return o?wR(e,o):null}async function mV(e,t,r){let n=Pd(r.uri);if(n){let p=kR(n);if(p){let x=ry(p.bytes);return x?{bytes:p.bytes,...x}:null}if(ny(n))return null;let f=vR(n);if(!f)return null;let g=await wR(e,f);if(!g)return null;let S=Wr.basename(f),P=ry(g);return P?{bytes:g,...P,originalFileName:S}:null}let o=io(r.bufferView);if(o==null)return null;let i=Array.isArray(t.gltf.bufferViews)?t.gltf.bufferViews:[],a=Er(i[o]),s=io(a?.buffer)??0,c=t.buffers[s],d=io(a?.byteOffset)??0,u=io(a?.byteLength);if(!c||u==null||d+u>c.length)return null;let l=Buffer.from(c.subarray(d,d+u)),m=ry(l);return m?{bytes:l,...m}:null}async function wR(e,t){if(Wr.isAbsolute(t)||Wr.win32.isAbsolute(t)||t.includes("\0"))return null;try{let r=await Td.realpath(Wr.dirname(e)),n=Wr.resolve(r,t),o=await Td.realpath(n);return pV(r,o)?await Td.readFile(o):null}catch{return null}}function vR(e){if(ny(e))return null;try{return decodeURIComponent(e)}catch{return null}}function pV(e,t){let r=Wr.relative(e,t);return r===""||!r.startsWith(`..${Wr.sep}`)&&r!==".."&&!Wr.isAbsolute(r)}function kR(e){let t=/^data:([^;,]+)?(?:;[^,]*)?,(.*)$/is.exec(e);if(!t)return null;let r=e.slice(0,e.indexOf(","));try{return{bytes:r.toLowerCase().includes(";base64")?Buffer.from(t[2]??"","base64"):Buffer.from(decodeURIComponent(t[2]??""),"utf8")}}catch{return null}}function ry(e){return e.length>=8&&e.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10]))?{extension:".png",mimeType:"image/png"}:e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?{extension:".jpg",mimeType:"image/jpeg"}:e.length>=12&&e.toString("ascii",0,4)==="RIFF"&&e.toString("ascii",8,12)==="WEBP"?{extension:".webp",mimeType:"image/webp"}:e.length>=12&&e.subarray(0,12).equals(Buffer.from([171,75,84,88,32,50,48,187,13,10,26,10]))?{extension:".ktx2",mimeType:"image/ktx2"}:null}function fV(e){return["baseColor.texture","normal.texture","metallicRoughness.texture","occlusion.texture","emission.texture","emission.maskTexture","alpha.texture"].includes(e)}function gV(e,t,r){let n=t.split("."),o=e;for(let i=0;i<n.length-1;i+=1){let a=n[i],s=Er(o[a])??{};o[a]=s,o=s}o[n[n.length-1]]=r}function ny(e){return/^[a-z][a-z0-9+.-]*:/i.test(e)||e.startsWith("/")||Wr.win32.isAbsolute(e)}function Er(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Pd(e){return typeof e=="string"&&e.trim()?e.trim():null}function io(e){return Number.isInteger(e)&&e>=0?e:null}var Te=class extends Error{constructor(t,r={}){super(t),this.name="PlayableEditorAssetRegistryError",this.details=r}};async function $m(e,t,r={}){if(!t.payload&&!t.payloadData)throw new Te("missing_payload_arg");let n=await FR(e,t),o=e.codeKeyPolicy??"legacy";if(o==="disabled"&&Object.prototype.hasOwnProperty.call(n,"codeKey"))throw new Te("payload_code_key_disabled",{codeKeyPolicy:o,codeKey:n.codeKey});let i=Pe.resolve(e.cwd,String(n.sourcePath??n.assetPath??"")),a=yV(e,i);if(!a)throw new Te(e.unsupportedSourceErrorCode??r.sourceMustBeSupportedAsset??"source_must_be_supported_asset",{sourcePath:i,supportedExtensions:GR(e)});try{await _e.access(i)}catch{throw new Te(r.sourceFileNotFound??"source_file_not_found",{sourcePath:i})}let s=DV(n);await _e.mkdir(e.generatedDir,{recursive:!0});let c=await so(e),d=await uy(i),u=ym(n.kind??n.assetKind??n.assetType,i);if(!u)throw new Te("unsupported_asset_kind",{sourcePath:i,assetType:n.assetType});cy(u,i,"source_path");let l=MV(c,n,s,i,d,u,e),m=Ye(n.assetName)??l?.originalFileName??Pe.basename(i),p=Ye(n.guid);if(l&&p&&l.guid!==p)throw new Te("payload_guid_must_match_existing_asset",{guid:p,existingGuid:l.guid,existingAssetId:l.assetId});let f=l?.guid??p??iy.randomUUID(),g=Ye(n.projectAssetId),S=Sm(u,f);if(l?.assetId&&l.assetId!==S)throw new Te("manifest_asset_id_must_match_guid",{guid:f,assetId:l.assetId,expectedAssetId:S});if(g&&g!==S)throw new Te("project_asset_id_must_match_guid",{guid:f,projectAssetId:g,expectedAssetId:S});let P=`${S}${a}`,x=bV(e,{existing:l,sourcePath:i,kind:u,targetFileName:P}),T=ys(e,x,u,"target_path"),R=new Date().toISOString(),A=gh(Ye(n.displayName)??l?.displayName,m),E=Fm({...Fm(l?.external)??{},...s??{}}),C=!1,b=[],k=null;try{await _e.mkdir(Pe.dirname(T),{recursive:!0});let O=IV(i,T),$=O||await zR(T),te=!l||l.contentHash!==d.contentHash||!$;!O&&te&&(await _e.copyFile(i,T),C=!l);let K=await $R(e,{existing:l,payload:n,sourcePath:i,targetPath:T,kind:u,guid:f,assetId:S});if(u==="model"){let Ne=await SV({config:e,manifest:c,metadata:K,sourcePath:i,sourceAssetId:S,sourceAssetGuid:f,sourceDisplayName:A,now:R});b=Ne.createdPaths,K=CR(K,Ne.references)}let He=dy({...l??{},guid:f,assetId:S,kind:u,displayName:A,relativePath:x,originalFileName:m,...o==="legacy"?{codeKey:Sh(Ye(n.codeKey)??Ye(n.assetName)??l?.codeKey,m)}:{},...Ye(n.category)?{category:Ye(n.category)}:{},placeable:u==="texture"?!0:typeof n.placeable=="boolean"?n.placeable:l?.placeable??u==="model",...Fh(n.warmupCount)!=null?{warmupCount:Fh(n.warmupCount)}:{},...typeof n.singleton=="boolean"?{singleton:n.singleton}:{},...Lh(n.materialMode)?{materialMode:Lh(n.materialMode)}:{},...Gh(n.scale)?{defaults:{transform:{scale:Gh(n.scale)}}}:{},contentHash:d.contentHash,byteSize:d.byteSize,external:E,metadata:K,createdAt:l?.createdAt??R,updatedAt:te?R:l?.updatedAt??R});if(!He)throw new Te("invalid_manifest_entry",{assetId:S,guid:f});k=He;let ze=c.findIndex(Ne=>Ne.guid===f||Ne.assetId===S);ze>=0?c[ze]=He:c.push(He),c.sort(CV),await UR(e,c)}catch(O){C&&await _e.rm(T,{force:!0}).catch(()=>{});for(let $ of b)await _e.rm($,{force:!0}).catch(()=>{});throw O}return{ok:!0,guid:f,assetId:S,kind:u,...k?.contentHash?{contentHash:k.contentHash}:{},...k?.external?{external:k.external}:{},displayName:k?.displayName,originalFileName:k?.originalFileName,assetUrl:AV(e,x,u),targetPath:T,manifestPath:e.manifestPath,registryPath:e.registryPath}}async function SV(e){let t=DR(e.metadata),r=RR(e.metadata),n=await MR(e.sourcePath,{imageIndexes:t}),o=[],i=new Map,a=[];try{for(let d of n){let u=BR(d.bytes),l=e.manifest.find(A=>A.kind==="texture"&&A.contentHash===u.contentHash&&ao(ao(A.metadata).capabilities).materialTexture!==!1&&ao(A.metadata).textureUsage!=="environment");if(l){i.set(d.imageIndex,l),o.push({imageIndex:d.imageIndex,textureAssetId:l.assetId});continue}let m=vV(u.contentHash),p=Sm("texture",m),f=e.manifest.find(A=>A.guid===m||A.assetId===p);if(f)throw new Te("derived_texture_identity_conflict",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p,contentHash:u.contentHash,conflictingAssetId:f.assetId,conflictingContentHash:f.contentHash});let g=`${p}${d.extension}`,S=LR(e.config,"texture",g),P=ys(e.config,S,"texture","derived_texture_target_path");if(await _e.mkdir(Pe.dirname(P),{recursive:!0}),await zR(P)){let A=await uy(P);if(A.contentHash!==u.contentHash)throw new Te("derived_texture_target_conflict",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p,targetPath:P,contentHash:u.contentHash,existingContentHash:A.contentHash})}else await wV(P,d.bytes),a.push(P);let x=d.displayName?`${e.sourceDisplayName} / ${d.displayName}`:`${e.sourceDisplayName} Texture ${d.imageIndex+1}`,T=await $R(e.config,{existing:null,payload:{metadata:{textureUsage:"material",capabilities:{materialTexture:!0,environmentTexture:!1},derivedFrom:{kind:"gltf-image",sourceAssetId:e.sourceAssetId,sourceAssetGuid:e.sourceAssetGuid,imageIndex:d.imageIndex,mimeType:d.mimeType}}},sourcePath:P,targetPath:P,kind:"texture",guid:m,assetId:p}),R=dy({guid:m,assetId:p,kind:"texture",displayName:x,relativePath:S,originalFileName:d.originalFileName??`${kV(x)}${d.extension}`,category:"Texture",placeable:!0,contentHash:u.contentHash,byteSize:u.byteSize,metadata:T,createdAt:e.now,updatedAt:e.now});if(!R)throw new Te("invalid_derived_texture_manifest_entry",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p});e.manifest.push(R),i.set(d.imageIndex,R),o.push({imageIndex:d.imageIndex,textureAssetId:p})}let s=new Map,c=new Map;for(let d of i.values())Pe.extname(d.relativePath).toLowerCase()===".ktx2"&&s.set(d.assetId,d);for(let d of r){let u=i.get(d.imageIndex),l=i.get(d.previewImageIndex);!u||!l||Pe.extname(u.relativePath).toLowerCase()!==".ktx2"||c.set(u.assetId,l.assetId)}for(let d of s.values()){let u=ao(d.metadata),l=hV(u);delete l[e.sourceAssetId];let m=c.get(d.assetId);m&&(l[e.sourceAssetId]=m);let p=Object.fromEntries(Object.entries(l).sort(([S],[P])=>S.localeCompare(P))),f=Object.values(p)[0],g={...u};f?(g.previewTextureAssetId=f,g.previewTextureAssetIdsBySourceAssetId=p):(delete g.previewTextureAssetId,delete g.previewTextureAssetIdsBySourceAssetId),d.metadata=g}return{references:o,createdPaths:a}}catch(s){for(let c of a)await _e.rm(c,{force:!0}).catch(()=>{});throw s}}function hV(e){let t={},r=ao(e.previewTextureAssetIdsBySourceAssetId);for(let[i,a]of Object.entries(r)){let s=Ye(i),c=Ye(a);s&&c&&(t[s]=c)}if(Object.keys(t).length>0)return t;let n=Ye(e.previewTextureAssetId),o=Ye(ao(e.derivedFrom).sourceAssetId);return n&&o&&(t[o]=n),t}async function ay(e,t={}){let r=await so(e),n=[];for(let o of r){let i=ys(e,o.relativePath,o.kind,"refresh_source_path"),a;try{a=await uy(i)}catch(u){throw zm(u)&&u.code==="ENOENT"?new Te(t.sourceFileNotFound??"source_file_not_found",{assetId:o.assetId,guid:o.guid,sourcePath:i}):u}let s=o.kind==="model"&&ao(o.metadata).assetMetadataVersion!==ty,c=o.kind==="texture"&&o.placeable===!1;if(o.contentHash===a.contentHash&&o.byteSize===a.byteSize&&!s&&!c)continue;let d=await $m(e,{payloadData:{sourcePath:i,guid:o.guid,projectAssetId:o.assetId,kind:o.kind}},t);if(!d.contentHash)throw new Te("asset_refresh_missing_content_hash",{assetId:o.assetId,guid:o.guid,sourcePath:i});n.push({guid:o.guid,assetId:o.assetId,kind:o.kind,...o.contentHash?{previousContentHash:o.contentHash}:{},contentHash:d.contentHash})}return{ok:!0,scannedAssetCount:r.length,refreshedAssets:n}}async function sy(e,t,r={}){let n=await FR(e,t),o=Ye(t.assetId??n?.assetId),i=Ye(t.guid??n?.guid);if(!o&&!i)throw new Te(r.missingAssetId??"missing_asset_id");let a=NV(t,n),s=jV(t,n);await _e.mkdir(e.generatedDir,{recursive:!0});let c=await so(e),d=c.findIndex(p=>o&&p.assetId===o||i&&p.guid===i);if(d<0)throw new Te(r.manifestEntryNotFound??"manifest_entry_not_found",{assetId:o,guid:i,manifestPath:e.manifestPath});let u=c[d];if(!u)throw new Te("manifest_entry_not_found",{assetId:o,guid:i});await GV(e,u.assetId,s,r),c.splice(d,1);let l=!1,m=null;return a&&(m=ys(e,u.relativePath,u.kind,"unregister_target_path"),await _e.rm(m,{force:!0}),l=!0),await UR(e,c),{ok:!0,guid:u.guid,assetId:u.assetId,kind:u.kind,removed:!0,deleteFile:a,force:s,deletedFile:l,targetPath:m,manifestPath:e.manifestPath,registryPath:e.registryPath}}async function so(e){let t=await Bm(e.manifestPath,[]);if(!Array.isArray(t))throw new Te("manifest_invalid_root",{manifestPath:e.manifestPath});let r=t.map((a,s)=>{let c=dy(a,!0);if(!c)throw new Te("manifest_invalid_entry",{index:s,manifestPath:e.manifestPath});return c}),n=new Set,o=new Set,i=e.codeKeyPolicy??"legacy";for(let a of r){if(i==="disabled"&&a.codeKey)throw new Te("manifest_code_key_disabled",{manifestPath:e.manifestPath,codeKeyPolicy:i,assetId:a.assetId,codeKey:a.codeKey});if(n.has(a.assetId))throw new Te("manifest_duplicate_asset_id",{assetId:a.assetId});if(o.has(a.guid))throw new Te("manifest_duplicate_guid",{guid:a.guid});n.add(a.assetId),o.add(a.guid)}return r}async function Ad(e){return e.loadRules?e.loadRules():e.rulesPath?Bm(e.rulesPath,{}):{}}function _R(e){return(Array.isArray(e)?e:[e]).filter(r=>typeof r=="string"&&!!r.trim()).map(r=>{let n=r.trim().toLowerCase();return n.startsWith(".")?n:`.${n}`})}function GR(e){let t=_R(e.supportedExtensions??e.supportedExtension);return t.length>0?t:_R(ls)}function yV(e,t){let r=t.toLowerCase();return GR(e).find(n=>r.endsWith(n))??null}function bV(e,t){return t.existing?.relativePath?t.existing.relativePath:EV(e,t.sourcePath,t.kind)??LR(e,t.kind,t.targetFileName)}function LR(e,t,r){let n=e.relativeImportedPath;return n.length>=2?n(t,r):n({kind:t,fileName:r})}function EV(e,t,r){let n=e.assetRootDir??e.assetsDir;if(!n)return null;let o=Pe.resolve(t);return!NR(Pe.resolve(n),o)||NR(Pe.resolve(e.generatedDir),o)?null:(cy(r,o,"source_path"),Pe.relative(e.generatedDir,o).split(Pe.sep).join("/"))}function NR(e,t){let r=Pe.relative(e,t);return r===""||!r.startsWith("..")&&!Pe.isAbsolute(r)}function IV(e,t){return Pe.relative(Pe.resolve(e),Pe.resolve(t))===""}function TV(e,t,r){let n=Pe.relative(e,t);if(n.startsWith("..")||Pe.isAbsolute(n))throw new Te(`${r}_outside_allowed_directory`,{parent:e,child:t})}function PV(e,t,r){let n=Pe.relative(e,t);if(!n.startsWith("..")&&!Pe.isAbsolute(n))throw new Te(`${r}_inside_forbidden_directory`,{parent:e,child:t})}function ys(e,t,r,n){let o=Pe.resolve(e.generatedDir,t),i=Pe.resolve(e.assetRootDir??e.assetsDir??e.importedDir??e.generatedDir);return TV(i,o,n),PV(Pe.resolve(e.generatedDir),o,n),cy(r,o,n),o}function AV(e,t,r){let n=ys(e,t,r,"asset_url_path");return typeof e.publicUrlForCatalogRelativePath=="function"?e.publicUrlForCatalogRelativePath(t):typeof e.publicUrlForRelativePath=="function"?e.publicUrlForRelativePath(t):`/${Pe.relative(e.cwd,n).split(Pe.sep).join("/")}`}function cy(e,t,r){let n=Pe.extname(t).toLowerCase(),o=hh(e);if(!o.includes(n))throw new Te(`${r}_unsupported_extension`,{kind:e,filePath:t,extension:n,supportedExtensions:o})}async function Bm(e,t){try{return JSON.parse(await _e.readFile(e,"utf8"))}catch(r){if(zm(r)&&r.code==="ENOENT")return t;throw r}}async function FR(e,t){if(t.payloadData)return structuredClone(t.payloadData);if(!t.payload)return{};let r=Pe.resolve(e.cwd,t.payload),n=await Bm(r,null);if(!n||typeof n!="object"||Array.isArray(n))throw new Te("invalid_payload_json",{payloadPath:r});return n}function dy(e,t=!1){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e,n=t?ly:Ye,o=n(r.guid),i=n(r.assetId),a=n(r.kind);if(t&&(!a||"assetKind"in r||"assetType"in r))return null;let s=t?mh.includes(a)?a:null:ym(r.kind??r.assetKind??r.assetType,r.relativePath),c=n(r.displayName),d=n(r.relativePath);if(!o||!i||!s||!c||!d||t&&(!ea(r,"originalFileName")||!ea(r,"codeKey")||!ea(r,"category")||!ea(r,"materialMode")||!ea(r,"contentHash")||!ea(r,"createdAt")||!ea(r,"updatedAt")||"placeable"in r&&typeof r.placeable!="boolean"||"warmupCount"in r&&(!Number.isInteger(r.warmupCount)||r.warmupCount<0)||"singleton"in r&&typeof r.singleton!="boolean"||"defaults"in r&&Yo(r.defaults)==null||"byteSize"in r&&(!Number.isFinite(r.byteSize)||r.byteSize<0)||"metadata"in r&&Yo(r.metadata)==null||"external"in r&&!xV(r.external)))return null;let u=Yo(r.metadata),l=n(r.originalFileName),m=n(r.codeKey),p=n(r.category),f=n(r.materialMode),g=Yo(r.defaults),S=n(r.contentHash),P=Fm(r.external),x=n(r.createdAt),T=n(r.updatedAt);return{guid:o,assetId:i,kind:s,displayName:c,relativePath:d,...l?{originalFileName:l}:{},...m?{codeKey:m}:{},...p?{category:p}:{},...typeof r.placeable=="boolean"?{placeable:r.placeable}:{},...typeof r.warmupCount=="number"?{warmupCount:r.warmupCount}:{},...typeof r.singleton=="boolean"?{singleton:r.singleton}:{},...f?{materialMode:f}:{},...g?{defaults:g}:{},...S?{contentHash:S}:{},...typeof r.byteSize=="number"?{byteSize:r.byteSize}:{},...P?{external:P}:{},...u?{metadata:u}:{},...x?{createdAt:x}:{},...T?{updatedAt:T}:{}}}function ly(e){return typeof e=="string"&&e.length>0&&e===e.trim()?e:null}function ea(e,t){return!(t in e)||ly(e[t])!=null}function xV(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e,r=["platformAssetId","assetPath","assetUrl"],n=Object.keys(t);return n.length>0&&n.every(o=>r.includes(o)&&ly(t[o])!=null)}function Fm(e,t=!1){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e,n=Ye(r.platformAssetId),o;try{if(o=OM(r.assetPath),t&&Object.prototype.hasOwnProperty.call(r,"assetPath")&&!o)throw new Error("external_asset_path_must_be_portable")}catch{if(t)throw new Te("external_asset_path_must_be_portable",{assetPath:Ye(r.assetPath)})}let i=Ye(r.assetUrl);return!n&&!o&&!i?null:{...n?{platformAssetId:n}:{},...o?{assetPath:o}:{},...i?{assetUrl:i}:{}}}function Yo(e){return!e||typeof e!="object"||Array.isArray(e)?null:structuredClone(e)}async function $R(e,t){let r=Yo(t.payload?.metadata);if(typeof e.resolveAssetMetadata=="function"){let n=await e.resolveAssetMetadata({...t,existingMetadata:Yo(t.existing?.metadata),payloadMetadata:r}),o=Yo(n);return o||null}return Id({kind:t.kind,sourcePath:t.sourcePath,existingMetadata:Yo(t.existing?.metadata),payloadMetadata:r,guid:t.guid,assetId:t.assetId,cwd:e.cwd,assetsDir:e.assetsDir})}function MV(e,t,r,n,o,i,a){let s=Ye(t.guid),c=Ye(t.projectAssetId);if(s){let l=e.find(m=>m.guid===s);if(l)return l}if(c){let l=e.find(m=>m.assetId===c);if(l)return l}if(r?.platformAssetId){let l=e.find(m=>m.kind===i&&RV(m.external)===r.platformAssetId);if(l)return l}if(r?.assetPath){let l=e.find(m=>m.kind===i&&OV(m.external)===r.assetPath);if(l)return l}let d=Pe.resolve(n),u=e.find(l=>{if(l.kind!==i)return!1;try{return Pe.resolve(ys(a,l.relativePath,l.kind,"manifest_asset_path"))===d}catch{return!1}});if(u)return u;if(o.contentHash){let l=e.find(m=>m.kind===i&&m.contentHash===o.contentHash);if(l)return l}return null}function DV(e){return Fm({...e.external&&typeof e.external=="object"&&!Array.isArray(e.external)?e.external:{},platformAssetId:e.external?.platformAssetId??e.platformAssetId??e.assetId,assetUrl:e.external?.assetUrl??e.assetUrl},!0)}function RV(e){return Ye(ao(e).platformAssetId)}function OV(e){return Ye(ao(e).assetPath)}function CV(e,t){return e.kind.localeCompare(t.kind)||e.displayName.localeCompare(t.displayName)||e.assetId.localeCompare(t.assetId)}async function oy(e,t){try{if(await _e.readFile(e,"utf8")===t)return!1}catch(n){if(!zm(n)||n.code!=="ENOENT")throw n}let r=`${e}.tmp-${process.pid}-${Date.now()}`;try{return await _e.writeFile(r,t),await _e.rename(r,e),!0}catch(n){throw await _e.rm(r,{force:!0}).catch(()=>{}),n}}async function wV(e,t){let r=`${e}.tmp-${process.pid}-${Date.now()}`;try{await _e.writeFile(r,t),await _e.rename(r,e)}catch(n){throw await _e.rm(r,{force:!0}).catch(()=>{}),n}}async function uy(e){let t=await _e.readFile(e),r=await _e.stat(e);return{...BR(t),byteSize:r.size}}function BR(e){return{contentHash:`sha256:${iy.createHash("sha256").update(e).digest("hex")}`,byteSize:e.byteLength}}function vV(e){let t=iy.createHash("sha256").update(`material-texture\0${e}`).digest("hex");return`${t.slice(0,8)}-${t.slice(8,12)}-5${t.slice(13,16)}-8${t.slice(17,20)}-${t.slice(20,32)}`}function kV(e){return e.trim().replace(/[^\p{L}\p{N}._-]+/gu,"_").replace(/^_+|_+$/g,"")||"Imported_Texture"}async function zR(e){try{return await _e.access(e),!0}catch{return!1}}async function UR(e,t){let r=iR(t,{codeKeyPolicy:e.codeKeyPolicy??"legacy"});await _e.mkdir(Pe.dirname(e.manifestPath),{recursive:!0}),await _e.mkdir(Pe.dirname(e.registryPath),{recursive:!0});let n=await jR(e.manifestPath),o=await jR(e.registryPath);try{await oy(e.manifestPath,`${JSON.stringify(t,null,2)}
15
+ `),await oy(e.registryPath,r)}catch(i){let a=[];for(let[s,c]of[[e.manifestPath,n],[e.registryPath,o]])try{await _V(s,c)}catch(d){a.push(d)}if(a.length>0){let s=new Error("generated_registry_transaction_rollback_failed");throw s.cause=i,s.rollbackErrors=a,s}throw i}}async function jR(e){try{return(await _e.lstat(e)).isFile()?{kind:"file",content:await _e.readFile(e,"utf8")}:{kind:"other"}}catch(t){if(zm(t)&&t.code==="ENOENT")return{kind:"missing"};throw t}}async function _V(e,t){if(t.kind!=="other"){if(t.kind==="missing"){await _e.rm(e,{force:!0});return}await oy(e,t.content)}}function NV(e,t){return typeof e.deleteFile=="boolean"?e.deleteFile:t&&typeof t.deleteFile=="boolean"?t.deleteFile:!0}function jV(e,t){return!!(e.force||t?.force===!0)}async function GV(e,t,r,n){if(r||!e.scenePath)return;let o=await Bm(e.scenePath,null),a=(Array.isArray(o?.scene?.nodes)?o.scene.nodes:[]).filter(s=>s?.kind==="instance"&&s?.instance?.assetId===t||s?.kind==="image"&&s?.image?.assetId===t).map(s=>s.id).filter(Boolean);if(a.length!==0)throw new Te(n.assetStillReferenced??"asset_still_referenced",{assetId:t,scenePath:e.scenePath,nodeIds:a})}function Ye(e){return typeof e=="string"&&e.trim()?e.trim():null}function ao(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function zm(e){return e instanceof Error&&"code"in e}function VR(e){return{async loadManifest(){let t=await so(e.assetRegistryConfig),r=e.textureRegistryConfig?await so(e.textureRegistryConfig):[];return{ok:!0,manifest:t,textureManifest:r}},async loadEditorAssetLibrary(){let t=await e.loadAssetCatalogEntries(),r=[...e.createAssetLibrary?e.createAssetLibrary(t):cS(t)];return{ok:!0,assets:r,summary:{assets:r.length}}},async runCommand({cmd:t,payloadPath:r}){let n=await BV(e,r),o=zV(t,e),i=e.selectRegistryConfig?e.selectRegistryConfig({payload:n,commandKind:o,cmd:t,assetRegistryConfig:e.assetRegistryConfig,textureRegistryConfig:e.textureRegistryConfig}):FV(n,e.assetRegistryConfig,e.textureRegistryConfig),a=await Ad(i),s=VV(a.errorCodes),c=o==="unregister"?await sy(i,{payload:r},s):await $m(i,{payload:r},s);return await UV(e,i,c),{ok:!0,cmd:t,result:c}}}}function FV(e,t,r){return r&&$V(e)?r:t}function $V(e){let t=typeof e.assetType=="string"?e.assetType.toLowerCase():"";if(/^(texture|image|png|jpg|jpeg|webp)$/.test(t))return!0;let r=typeof e.kind=="string"?e.kind.toLowerCase():"";if(/^(texture|image)$/.test(r)||(typeof e.mimeType=="string"?e.mimeType.toLowerCase():"").startsWith("image/"))return!0;let o=[e.sourcePath,e.assetPath,e.assetName].filter(i=>typeof i=="string").join(`
16
+ `);return/\.(png|jpe?g|webp)(?:$|[?#])/i.test(o)}async function BV(e,t){let r=e.readPayload?await e.readPayload(t):JSON.parse(await LV.readFile(t,"utf8")||"{}");if(!r||typeof r!="object"||Array.isArray(r))throw new Error("invalid_asset_authoring_payload");return r}function zV(e,t){return[t.assetRegistryConfig.commands?.unregister,t.textureRegistryConfig?.commands?.unregister,"asset:unregister"].filter(n=>typeof n=="string"&&n.trim().length>0).some(n=>e.includes(n))?"unregister":"register"}async function UV(e,t,r){if(!e.invalidateFiles)return;let n=typeof e.additionalInvalidationFiles=="function"?await e.additionalInvalidationFiles():e.additionalInvalidationFiles??[],o=new Set([...n,r.manifestPath||t.manifestPath,r.registryPath||t.registryPath]);await e.invalidateFiles([...o])}function VV(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}import HR from"node:path";async function my(e){let t=[];for await(let r of e)t.push(Buffer.from(r));return JSON.parse(Buffer.concat(t).toString("utf8")||"{}")}function KR(e,t={}){return r=>r.trim()?r.startsWith("/tmp/")||HR.isAbsolute(r)?r:HR.resolve(e,t.relativeRoot??"",r):""}function ta(e,t,r){if(e.statusCode=t.statusCode,Um(e,r),t.body==null){e.end();return}e.setHeader("Content-Type","application/json; charset=utf-8"),e.end(JSON.stringify(t.body))}function Um(e,t={}){e.setHeader("Access-Control-Allow-Origin",t.origin??"*"),e.setHeader("Access-Control-Allow-Methods",t.methods??"GET,POST,OPTIONS"),e.setHeader("Access-Control-Allow-Headers",t.headers??"Content-Type, Authorization"),e.setHeader("Cross-Origin-Resource-Policy",t.resourcePolicy??"cross-origin"),e.setHeader("Cross-Origin-Embedder-Policy",t.embedderPolicy??"credentialless"),e.setHeader("Cache-Control",t.cacheControl??"no-store")}import{existsSync as ZR,readFileSync as eO}from"node:fs";import{mkdir as qR,rename as YV,rm as YR,writeFile as JV}from"node:fs/promises";import{randomUUID as XV}from"node:crypto";import ra from"node:path";import HV from"node:path";var Vm=new Map;async function Hm(e,t){let r=[...new Set(e.map(a=>HV.resolve(a)))].sort(),n=[...new Set(r.map(a=>Vm.get(a)).filter(Boolean))],o=()=>{},i=new Promise(a=>{o=a});for(let a of r)Vm.set(a,i);await Promise.all(n);try{return await t()}finally{o();for(let a of r)Vm.get(a)===i&&Vm.delete(a)}}import{performance as py}from"node:perf_hooks";var KV=1,WV=["prepare","compile","validate","stringify","write","checkpoint"];function WR(){let e=[],t=(r,n,o)=>{let i=process.memoryUsage();e.push({phase:r,durationMs:fy(py.now()-n),rssBeforeBytes:o.rss,rssAfterBytes:i.rss,maxObservedRssBytes:Math.max(o.rss,i.rss),heapUsedBeforeBytes:o.heapUsed,heapUsedAfterBytes:i.heapUsed,maxObservedHeapUsedBytes:Math.max(o.heapUsed,i.heapUsed)})};return{measure(r,n){let o=process.memoryUsage(),i=py.now();try{return n()}finally{t(r,i,o)}},async measureAsync(r,n){let o=process.memoryUsage(),i=py.now();try{return await n()}finally{t(r,i,o)}},snapshot(){return qV(e)}}}function qV(e){let t=new Map;for(let n of e){let o=t.get(n.phase);if(!o){t.set(n.phase,{...n});continue}o.durationMs=fy(o.durationMs+n.durationMs),o.rssAfterBytes=n.rssAfterBytes,o.maxObservedRssBytes=Math.max(o.maxObservedRssBytes,n.maxObservedRssBytes),o.heapUsedAfterBytes=n.heapUsedAfterBytes,o.maxObservedHeapUsedBytes=Math.max(o.maxObservedHeapUsedBytes,n.maxObservedHeapUsedBytes)}let r=WV.flatMap(n=>{let o=t.get(n);return o?[o]:[]});return{schemaVersion:KV,measuredDurationMs:fy(r.reduce((n,o)=>n+o.durationMs,0)),maxObservedRssBytes:r.reduce((n,o)=>Math.max(n,o.maxObservedRssBytes),0),maxObservedHeapUsedBytes:r.reduce((n,o)=>Math.max(n,o.maxObservedHeapUsedBytes),0),phases:r}}function fy(e){return Math.round(Math.max(0,e)*1e3)/1e3}async function tO(e){let t=e.paths,r=xd(t.editorScenePath),n=xd(t.scenePath),o=await e.loadServices(e.server,e.projectRoot),i=await e.listEditorAssetLibrary(e.server);r&&Hh(r),r&&Bc(r,i);let a=r?o.ensureEditorSceneEnvironmentDefaults(o.enrichEditorSceneDocumentAssets(o.ensureAuthoringSource(r),i)):null;a&&gd(a);let s=t.renderingConfigPath?xd(t.renderingConfigPath):void 0;s&&Ht(s);let c={...qo(a),...t.renderingConfigPath?{rendering:s}:{}},d=iO(t.shadowsConfigPath),u=We(n),l=typeof u?.version=="number"?u.version:void 0,m=typeof u?.updatedAt=="string"?u.updatedAt:void 0;return{ok:!0,editorScenePath:t.editorScenePath,scenePath:t.scenePath,editorScene:a,assets:i,...l===void 0?{}:{version:l},...m===void 0?{}:{updatedAt:m},...Object.keys(c).length>0?{companionConfigs:c}:{},...d?{shadowMapExperimentConfig:d}:{},drift:a?o.detectRuntimeInputDrift(a,n):null,summary:oO(a)}}async function rO(e){na(e),XR(e.body,"$",!0),XR(e.rawEditorScene,"$.editorScene");let t=Bh(e.body),r=qo(e.body),n=Object.prototype.hasOwnProperty.call(r,"rendering");t&&Ht(t);let o=Object.prototype.hasOwnProperty.call(e.body,"shadowMapExperimentConfig");if(o&&aO(e.body),o&&!e.paths.shadowsConfigPath)throw new Error("shadows_config_path_missing");let i=[e.paths.editorScenePath,...e.saveMode==="local-commit-save"?[e.paths.scenePath]:[],...n&&e.paths.renderingConfigPath?[e.paths.renderingConfigPath]:[],...o&&e.paths.shadowsConfigPath?[e.paths.shadowsConfigPath]:[]];return Hm(i,()=>(na(e),QV(e)))}async function QV(e){let t=WR(),r=t.measure("prepare",()=>ZV(e)),n=await t.measureAsync("prepare",()=>e.saveServices(e.server,e.projectRoot));na(e);let o=e.paths,i=qo(e.body),a=Bh(e.body),s=Object.prototype.hasOwnProperty.call(i,"rendering"),c=Object.prototype.hasOwnProperty.call(i,Zi),d=i[Zi],u=wr(d),l=t.measure("prepare",()=>xd(o.scenePath)??{}),m=Object.prototype.hasOwnProperty.call(e.body,"shadowMapExperimentConfig"),f=aO(e.body)??iO(o.shadowsConfigPath);t.measure("validate",()=>{gy(d,u,{present:c,path:"$.companionConfigs.staticShadows"})});let g=qo(r),S=g[Zi];t.measure("validate",()=>{gy(S,wr(S),{present:Object.prototype.hasOwnProperty.call(g,Zi),path:"$.editorScene.companionConfigs.staticShadows"})});let P=We(l)?.staticShadows;t.measure("validate",()=>{gy(P,wr(P),{present:Object.prototype.hasOwnProperty.call(l,"staticShadows"),path:"$.scene.staticShadows"}),Hh(r)});let x=a&&e.normalizeRenderingProfile?e.normalizeRenderingProfile(a):a,T=await t.measureAsync("prepare",()=>e.listEditorAssetLibrary(e.server));na(e),t.measure("validate",()=>{Bc(r,T)});let R=t.measure("prepare",()=>{let Oe=n.ensureEditorSceneEnvironmentDefaults(n.enrichEditorSceneDocumentAssets(n.ensureAuthoringSource(r),T));return bm(Oe,4)});t.measure("validate",()=>{n.assertEditorSceneDocument(R),n.assertEditorSceneMaterialAssetIntegrity(R)});let A=t.measure("prepare",()=>n.bumpEditorSceneAuthoringSourceRevision(R)),E=c?u:u??DD(r)??wr(We(l)?.staticShadows),C=t.measure("prepare",()=>bm(eH(A,{staticShadows:E}),4)),b=t.measure("prepare",()=>fS(C,T)),k=t.measure("compile",()=>n.compileEditorSceneDocumentToSceneConfig(A,l,{shadowMapExperimentConfig:f??null})),O=E?{...k.sceneConfig,staticShadows:E}:{...k.sceneConfig};E||delete O.staticShadows;let $=typeof l.version=="number"?l.version:void 0,te=typeof $=="number"?$+1:1,de=new Date().toISOString(),K=t.measure("compile",()=>bm(e.saveMode==="local-commit-save"?{...O,version:te,updatedAt:de}:O,4));t.measure("validate",()=>{fc(K)});let He=We(K)?.version,ze=e.saveMode==="local-commit-save"&&typeof He=="number"?He:te,Ne=`/${ra.relative(e.projectRoot,o.scenePath).split(ra.sep).join("/")}?v=${encodeURIComponent(String(ze))}`,Dr="",Ut=[];try{{let Oe=t.measure("stringify",()=>`${JSON.stringify(b,null,2)}
17
+ `);await t.measureAsync("write",()=>Km(e,Ut,o.editorScenePath,Oe))}if(a){if(!o.renderingConfigPath)throw new Error("rendering_config_path_missing");na(e),await qR(ra.dirname(o.renderingConfigPath),{recursive:!0});let Oe=t.measure("stringify",()=>`${JSON.stringify(a,null,2)}
18
+ `);await t.measureAsync("write",()=>Km(e,Ut,o.renderingConfigPath,Oe))}else if(s&&!o.renderingConfigPath)throw new Error("rendering_config_path_missing");if(m){if(!o.shadowsConfigPath||!f)throw new Error("shadows_config_path_missing");await qR(ra.dirname(o.shadowsConfigPath),{recursive:!0});let Oe=t.measure("stringify",()=>`${JSON.stringify(f,null,2)}
19
+ `);await t.measureAsync("write",()=>Km(e,Ut,o.shadowsConfigPath,Oe))}Dr=t.measure("stringify",()=>`${JSON.stringify(K,null,2)}
20
+ `),e.saveMode==="local-commit-save"&&await t.measureAsync("write",()=>Km(e,Ut,o.scenePath,Dr)),na(e),await t.measureAsync("write",async()=>{for(let Oe of Ut)await YV(Oe.temporaryPath,Oe.targetPath),Oe.committed=!0;s&&!a&&await YR(o.renderingConfigPath,{force:!0})})}finally{await Promise.all(Ut.filter(Oe=>!Oe.committed).map(Oe=>YR(Oe.temporaryPath,{force:!0}).catch(()=>{})))}let q=[...s&&o.renderingConfigPath?e.createRenderingInvalidationFiles?.(e.projectRoot,o.renderingConfigPath)??[o.renderingConfigPath]:[],...m&&o.shadowsConfigPath?[o.shadowsConfigPath]:[]];return q.length>0&&e.invalidateFiles?.(e.server,q),{ok:!0,mode:e.saveMode,editorScenePath:o.editorScenePath,scenePath:o.scenePath,expectedVersion:$,...e.saveMode==="local-commit-save"?{version:ze,updatedAt:de,sceneUrl:Ne}:{},editorScene:C,...f?{shadowMapExperimentConfig:f}:{},...s||c?{companionConfigs:{...s?{rendering:a}:{},...c?{staticShadows:E}:{}},...a?{renderingSummary:e.summarizeRenderingProfile?.(x??null)??null}:{}}:{},sceneJsonText:Dr,performanceProfile:t.snapshot(),summary:{editorScene:oO(A),compiled:k.summary}}}async function Km(e,t,r,n){na(e);let o=ra.join(ra.dirname(r),`.${ra.basename(r)}.${process.pid}.${XV()}.tmp`),i={targetPath:r,temporaryPath:o,committed:!1};t.push(i),await JV(o,n,{encoding:"utf8",signal:e.signal})}function na(e){if(!e.signal?.aborted&&(e.deadlineAt===void 0||Date.now()<e.deadlineAt))return;let t=new Error("Document export lifecycle deadline elapsed before filesystem persistence completed.");throw Object.assign(t,{code:"document_export_timeout"}),t}function ZV(e){let t=xd(e.paths.editorScenePath);if(!t)return e.rawEditorScene;let r=JR(t);if(!r)return e.rawEditorScene;let n=JR(e.rawEditorScene),o=typeof e.body.expectedAuthoringSourceRevision=="number"&&Number.isFinite(e.body.expectedAuthoringSourceRevision)?e.body.expectedAuthoringSourceRevision:n?.revision??null;if(!(n?.sourceId===r.sourceId&&n.sourceType===r.sourceType)){let m={stage:e.saveMode==="prepare-platform-save"?"document.export":"document.save",expectedSourceId:r.sourceId,expectedSourceType:r.sourceType,actualSourceId:n?.sourceId??null,actualSourceType:n?.sourceType??null},p=new Error("authoring_source_identity_mismatch");throw Object.assign(p,{code:"authoring_source_identity_mismatch",details:m,...m}),p}if(n.revision===r.revision&&o===r.revision)return e.rawEditorScene;let a=We(e.body.authoringSourceConflictResolution);if(a?.strategy==="overwrite"&&typeof a.expectedPersistedRevision=="number"&&Number.isFinite(a.expectedPersistedRevision)&&a.expectedPersistedRevision===r.revision){let l=structuredClone(e.rawEditorScene),m=We(We(l.meta)?.authoringSource);return m&&(m.revision=r.revision),l}let c=e.saveMode==="prepare-platform-save"?"document.export":"document.save",d={stage:c,sourceId:r.sourceId,sourceType:r.sourceType,expectedRevision:o,submittedRevision:n.revision,persistedRevision:r.revision},u=new Error("authoring_source_revision_mismatch");throw Object.assign(u,{code:"authoring_source_revision_mismatch",stage:c,sourceId:r.sourceId,expectedRevision:o,actualRevision:r.revision,details:d}),u}function JR(e){let t=We(We(e.meta)?.authoringSource);return typeof t?.sourceId!="string"||!t.sourceId.trim()||typeof t.sourceType!="string"||!t.sourceType.trim()||typeof t.revision!="number"||!Number.isFinite(t.revision)?null:{sourceId:t.sourceId,sourceType:t.sourceType,revision:t.revision}}function gy(e,t,r){if(!r.present||e==null||t)return;let n=new Error(`schema.unsupportedVersion: ${r.path}`);throw Object.assign(n,{code:"schema.unsupportedVersion",path:r.path}),n}function nO(e){gd(e)}function oO(e){let t=We(e),r=We(t?.meta),n=We(r?.authoringSource),o=We(t?.scene);return{schemaVersion:t?.schemaVersion??null,sourceId:n?.sourceId??null,sourceType:n?.sourceType??null,revision:n?.revision??null,assets:Array.isArray(t?.assets)?t.assets.length:0,gameObjects:Array.isArray(o?.gameObjects)?o.gameObjects.length:0,materialAssets:Array.isArray(o?.materialAssets)?o.materialAssets.length:0}}function eH(e,t){let r={...qo(e)};delete r.rendering;for(let[o,i]of Object.entries(t))i==null?delete r[o]:r[o]=i;let n={...e};return Object.keys(r).length>0?n.companionConfigs=r:delete n.companionConfigs,n}function xd(e){return ZR(e)?JSON.parse(eO(e,"utf8")||"{}"):null}function iO(e){if(!e)return null;if(!ZR(e))throw new Error(`shadows_config_missing:${e}`);let t=JSON.parse(eO(e,"utf8")||"{}");return Ii(t,"$"),structuredClone(t)}function aO(e){return Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentConfig")?(Ii(e.shadowMapExperimentConfig,"$.shadowMapExperimentConfig"),structuredClone(e.shadowMapExperimentConfig)):null}function XR(e,t,r=!1){let n=We(e);if(!n)return;for(let i of["shadowMapExperimentConfig","shadowsConfig"])if(!(r&&i==="shadowMapExperimentConfig")&&Object.prototype.hasOwnProperty.call(n,i))throw QR(`${t}.${i}`);let o=We(n.companionConfigs);if(o&&Object.prototype.hasOwnProperty.call(o,"shadows"))throw QR(`${t}.companionConfigs.shadows`)}function QR(e){let t=new Error(`shadow_map_experiment_config_readonly:${e}`);return Object.assign(t,{code:"shadowMapExperiment.configReadonly",path:e}),t}var Wm=new WeakMap;function sO(e,t){if(Wm.has(e))throw new Error("Project authoring backend is already installed on this Vite server.");Wm.set(e,t);let r=!0;return()=>{r&&(r=!1,Wm.get(e)===t&&Wm.delete(e))}}import Es from"node:path";import{mkdir as lH,writeFile as uH}from"node:fs/promises";import{pipeline as mH}from"node:stream/promises";import{realpathSync as tH}from"node:fs";import hy from"node:path";function Md(e,t){let r=e.moduleGraph,n=new Set;for(let o of t)for(let i of rH(o)){let a=r.getModulesByFile(i);if(a)for(let s of a)r.invalidateModule(s,n)}}function rH(e){let t=hy.resolve(e),r=Dd(t);return[...new Set([e,t,r,Sy(e),Sy(t),Sy(r)])]}function Dd(e){let t=hy.resolve(e);try{return tH(t)}catch{return t}}function Sy(e){return e.split(hy.sep).join("/")}import{constants as cO}from"node:fs";import Rd from"node:fs/promises";import oa from"node:path";var nH=128*1024*1024,oH=512*1024*1024;async function bs(e){let t=[];for(let n=0;n<2;n+=1)try{await e.close();return}catch(o){t.push(o)}let r=new Error("project_file_close_failed");throw r.errors=t,r}function iH(e){let t=e.trim();if(!t||t!==e||t.includes("\0")||t.includes("\\")||oa.posix.isAbsolute(t)||/^[A-Za-z]:\//.test(t))throw new Error("project_file_path_invalid");let r=t.split("/");if(r.some(n=>!n||n==="."||n===".."))throw new Error("project_file_path_invalid");return r.join("/")}function yy(e){if(e===void 0)return nH;if(!Number.isSafeInteger(e)||e<=0)throw new Error("project_file_media_limit_invalid");return Math.min(e,oH)}async function qm(e,t){let r=iH(t),n=await Rd.realpath(oa.resolve(e)),o=oa.resolve(n,...r.split("/"));dO(n,o),await aH(n,r);let i;try{i=await Rd.open(o,cO.O_RDONLY|(cO.O_NOFOLLOW??0))}catch(a){throw a?.code==="ELOOP"?new Error("project_file_symlink_unsupported"):a}try{let a=await i.stat();if(!a.isFile())throw new Error("project_file_not_found");let s=await Rd.realpath(o);if(dO(n,s),s!==o)throw new Error("project_file_symlink_unsupported");let c=await Rd.stat(s);if(c.dev!==a.dev||c.ino!==a.ino)throw new Error("project_file_changed_during_read");return{absolutePath:o,handle:i,relativePath:r,stat:a}}catch(a){try{await bs(i)}catch(s){let c=new Error("project_file_close_failed");throw c.errors=[a,s],c}throw a}}function dO(e,t){let r=oa.relative(e,t);if(!r||r===".."||r.startsWith(`..${oa.sep}`)||oa.isAbsolute(r))throw new Error("project_file_path_invalid")}async function aH(e,t){let r=e;for(let n of t.split("/"))if(r=oa.join(r,n),(await Rd.lstat(r)).isSymbolicLink())throw new Error("project_file_symlink_unsupported")}import co from"node:fs/promises";import Ir from"node:path";var lO=512*1024,sH=new Set([".DS_Store",".cache",".git",".next",".nuxt",".parcel-cache",".turbo",".vite","build","coverage","dist","dist-tests","node_modules","output","playwright-report","test-results"]);async function uO(e,t={}){let r=await co.realpath(Ir.resolve(e)),n=Math.max(1,t.maxEntries??2e4),o=new Set([...sH,...t.ignoredNames??[]]),i=[],a=!1,s=async c=>{if(a)return;let d=Ir.resolve(r,c),u=await cH(r,d);if(u){u.sort((l,m)=>Number(m.isDirectory())-Number(l.isDirectory())||l.name.localeCompare(m.name,void 0,{numeric:!0,sensitivity:"base"}));for(let l of u){if(l.name.startsWith(".")||o.has(l.name)||l.isSymbolicLink())continue;if(i.length>=n){a=!0;return}let m=Ir.posix.join(c.split(Ir.sep).join("/"),l.name),p=Ir.resolve(r,...m.split("/")),f=await dH(r,p);if(!f)continue;let g=f==="file"?Ir.extname(l.name).slice(1).toLowerCase():"";i.push({path:m,name:l.name,parentPath:c?c.split(Ir.sep).join("/"):null,kind:f,...g?{extension:g}:{}}),f==="directory"&&await s(m)}}};return await s(""),{rootName:Ir.basename(r)||"Project",entries:i,truncated:a}}async function cH(e,t){try{let r=await co.lstat(t);if(r.isSymbolicLink()||!r.isDirectory())return null;let n=await co.realpath(t);if(n!==t||!by(e,n))return null;let o=await co.readdir(t,{withFileTypes:!0}),i=await co.lstat(t),a=await co.realpath(t);return i.isSymbolicLink()||!i.isDirectory()||r.dev!==i.dev||r.ino!==i.ino||n!==a||a!==t||!by(e,a)?null:o}catch{return null}}async function mO(e,t,r={}){let n=await qm(e,t),{handle:o,relativePath:i,stat:a}=n;if(!jD(i))throw await bs(o),new Error("project_file_preview_unsupported");let s=lO,c,d=0;try{s=Math.max(1,Math.min(r.maxBytes??lO,4*1024*1024));let l=Math.min(a.size,s);c=Buffer.alloc(l),l>0&&({bytesRead:d}=await o.read(c,0,l,0))}finally{await bs(o)}let u=Ir.basename(i);return{path:i,name:u,extension:Nm(u),language:Kh(u)??"text",text:c.subarray(0,d).toString("utf8"),size:a.size,truncated:a.size>d}}async function dH(e,t){try{let r=await co.lstat(t);if(r.isSymbolicLink())return null;let n=await co.realpath(t);if(n===e||!by(e,n)||n!==t)return null;let o=await co.stat(n);return o.dev!==r.dev||o.ino!==r.ino?null:o.isDirectory()?"directory":o.isFile()?"file":null}catch{return null}}function by(e,t){let r=Ir.relative(e,t);return r===""||r!==".."&&!r.startsWith(`..${Ir.sep}`)&&!Ir.isAbsolute(r)}function pO(e){let t=Promise.resolve([]);return{name:e.name??"fps-editor-project-authoring-api",enforce:"post",apply:"serve",async configureServer(r){let n=e.createAssetAuthoringHandlers(r),o=sO(r,{loadEditorScene:()=>e.loadEditorScene(r),async listEditorAssets(){let i=await n;if(!i.loadEditorAssetLibrary)return[];let a=await i.loadEditorAssetLibrary({});if(Array.isArray(a))return a;if(a&&typeof a=="object"){let s=a,c=s.assets??s.items;if(Array.isArray(c))return c}return[]},saveEditorScene:i=>e.saveEditorScene({server:r,...i})});r.httpServer?.once("close",o),e.getAuthoringWrittenFiles&&(t=e.getAuthoringWrittenFiles(r).then(i=>i.map(a=>Es.resolve(e.projectRoot,a))).then(async i=>(pH(r,i),fH(r.watcher,i),await r.watcher?.unwatch?.(i),e.logger?.log?.("[ProjectAuthoring][Vite] watcher and HMR suppressed for authoring-written files",i),i)).catch(i=>(e.logger?.warn?.("[ProjectAuthoring][Vite] failed to resolve authoring files for HMR suppression",i),[])),await t),r.middlewares.use(async(i,a,s)=>{let c=new URL(i.url??"","http://localhost"),d=c.pathname,u=d.startsWith("/__fps_editor_authoring"),l=u&&d.replace(/^\/__fps_editor_authoring/,"")||"/";if(u&&l==="/project-media"){if(Um(a),i.method==="OPTIONS"){a.statusCode=204,a.end();return}if(i.method!=="GET"){ta(a,{statusCode:405,body:{ok:!1,error:"method_not_allowed"}});return}let p=c.searchParams.get("path")?.trim()??"";if(!p){ta(a,{statusCode:400,body:{ok:!1,error:"missing_file_path"}});return}try{let f=await qm(e.projectRoot,p),g=null,S=null;try{let P=Wh(f.relativePath);if(!P)throw new Error("project_file_media_unsupported");if(f.stat.size>yy(e.projectMediaMaxBytes))throw new Error("project_file_media_too_large");let x=Es.basename(f.relativePath);if(a.statusCode=200,a.setHeader("Content-Type",P.mimeType),a.setHeader("Content-Length",String(f.stat.size)),a.setHeader("Content-Disposition",`inline; filename*=UTF-8''${encodeURIComponent(x)}`),a.setHeader("X-Content-Type-Options","nosniff"),f.stat.size>0&&(S=Buffer.allocUnsafe(1),(await f.handle.read(S,0,1,f.stat.size-1)).bytesRead!==1))throw new Error("project_file_changed_during_read");f.stat.size>1&&await mH(f.handle.createReadStream({autoClose:!1,start:0,end:f.stat.size-2}),a,{end:!1})}catch(P){g=P}try{await bs(f.handle)}catch(P){if(g){let x=new Error("project_file_close_failed");x.errors=[g,P],g=x}else g=P}if(g)throw g;S?a.end(S):a.end()}catch(f){if(a.headersSent)a.destroy(f instanceof Error?f:void 0);else{let g=f instanceof Error?f.message:String(f);ta(a,{statusCode:g==="project_file_media_too_large"?413:404,body:{ok:!1,error:g}})}}return}if(u&&l.startsWith("/rendering-profile")){if(!e.handleRenderingProfileRoute){s();return}if(Um(a),i.method==="OPTIONS"){a.statusCode=204,a.end();return}try{let p=await e.handleRenderingProfileRoute({server:r,req:i,readJsonBody:my});ta(a,p)}catch(p){ta(a,{statusCode:500,body:{ok:!1,error:p instanceof Error?p.message:String(p),details:p?.details}})}return}let m=await BD({url:i.url??"",method:i.method??"GET"},{readBody:()=>my(i),normalizeTransportPath:KR(e.projectRoot,{relativeRoot:".platform-sim"}),async loadManifest(p){let f=await n;if(!f.loadManifest)throw new Error("asset_manifest_handler_unavailable");return f.loadManifest(p)},async loadEditorAssetLibrary(p){let f=await n;if(!f.loadEditorAssetLibrary)throw new Error("asset_library_handler_unavailable");return f.loadEditorAssetLibrary(p)},async loadProjectFiles(){return uO(e.projectRoot,e.projectFileScan)},async loadProjectFile({path:p}){return mO(e.projectRoot,p)},async loadEditorScene(){return e.loadEditorScene(r)},writeFile:e.writeFile??gH,async runCommand(p){let f=await n;if(!f.runCommand)throw new Error("asset_command_handler_unavailable");return f.runCommand(p)},async saveEditorScene({mode:p,rawEditorScene:f,body:g}){return e.saveEditorScene({server:r,saveMode:p,rawEditorScene:f,body:g})}});if(!m){s();return}ta(a,m)})},async handleHotUpdate(r){if(typeof r.file!="string")return;let n=await t;if(Ym(r.file,n))return[]}}}function Ym(e,t){let r=Dd(e);return t.some(n=>{let o=Dd(n);if(r===o)return!0;let i=Es.relative(o,r);return i.length>0&&i!==".."&&!i.startsWith(`..${Es.sep}`)&&!Es.isAbsolute(i)})}function pH(e,t){if(!e.watcher?.prependListener||!e.ws?.send)return;let r=null,n=null,o=()=>{r=null,n&&clearTimeout(n),n=null},i=s=>{o(),r=typeof s=="string"&&Ym(s,t)?Dd(s):null,r&&(n=setTimeout(o,1e3))};for(let s of["add","change","unlink"])e.watcher.prependListener(s,i);let a=e.ws.send.bind(e.ws);e.ws.send=(s,...c)=>{let d=typeof s?.triggeredBy=="string"?s.triggeredBy:void 0,u=d?Ym(d,t):!1;if(!(s?.type==="full-reload"&&(u||r&&!d)))return a(s,...c)}}function fH(e,t){if(!e?.add)return;let r=e.add.bind(e);e.add=n=>{let i=(typeof n=="string"?[n]:[...n]).filter(a=>!Ym(a,t));return i.length===0?e:r(typeof n=="string"?i[0]:i)}}async function gH({path:e,text:t}){return await lH(Es.dirname(e),{recursive:!0}),await uH(e,t,"utf8"),{ok:!0,path:e}}import Is,{resolve as Od}from"node:path";import{pathToFileURL as SH}from"node:url";function gO(e){let t=Promise.resolve();function r(d){let u=t.then(d);return t=u.then(()=>{},()=>{}),u}async function n(d){let{projectAssetRegistryConfig:u,projectTextureRegistryConfig:l}=await c(),m=[u,l].filter(g=>!!g),p=[],f=0;for(let g of m){let S=await Ad(g),P=typeof S.errorCodes=="object"&&S.errorCodes?S.errorCodes:{},x=await ay(g,P);f+=x.scannedAssetCount,p.push(...x.refreshedAssets)}return p.length>0&&Md(d,[...m.flatMap(g=>[g.manifestPath,g.registryPath]),...fO(e)]),{scannedAssetCount:f,refreshedAssets:p}}function o(d){return r(()=>n(d))}async function i(d){let{projectAssetRegistryConfig:u,projectTextureRegistryConfig:l}=await c(),m=VR({assetRegistryConfig:u,textureRegistryConfig:l,loadAssetCatalogEntries:()=>a(!0),additionalInvalidationFiles:fO(e),invalidateFiles(p){Md(d,p)}});return{loadManifest:p=>r(async()=>(await n(d),m.loadManifest(p))),loadEditorAssetLibrary:p=>r(async()=>(await n(d),m.loadEditorAssetLibrary(p))),runCommand:p=>r(async()=>m.runCommand(p))}}async function a(d){let{projectAssetRegistryConfig:u,projectTextureRegistryConfig:l}=await c(),m=[u,l].filter(S=>!!S),p=[...new Map(m.map(S=>[S.manifestPath,S])).values()],f=(await Promise.all(p.map(S=>so(S)))).flat(),g=new Set;return f.filter(S=>{if(S.kind!=="model"&&S.kind!=="texture"||d&&S.kind==="model"&&S.placeable!==!0)return!1;if(g.has(S.assetId))throw new Error(`asset_catalog_duplicate_asset_id:${S.assetId}`);return g.add(S.assetId),!0})}async function s(d){return r(async()=>(await n(d),dS(await a(!1))))}async function c(){if(e.assetRegistryConfig)return{projectAssetRegistryConfig:e.assetRegistryConfig,projectTextureRegistryConfig:e.textureRegistryConfig??e.assetRegistryConfig};if(!e.assetCatalogConfigModulePath)throw new Error("Project asset authoring requires assetRegistryConfig or assetCatalogConfigModulePath.");return import(`${SH(Od(e.projectRoot,e.assetCatalogConfigModulePath)).href}?project-asset-catalog-config=${Date.now()}`)}return{createProjectAssetAuthoringHandlers:i,listEditorAssetLibrary:s,loadProjectAssetCatalogConfigModule:c,refreshProjectAssetCatalog:o}}function SO(e,t){let r=Od(e,t.importedDir),n=Od(e,t.generatedDir),o=Is.dirname(r);return{cwd:e,codeKeyPolicy:"disabled",assetsDir:o,importedDir:r,generatedDir:n,manifestPath:Is.join(n,"asset-catalog.manifest.json"),registryPath:Is.join(n,"asset-catalog.generated.ts"),scenePath:Od(e,t.runtimeArtifact),supportedExtensions:ls,commands:{register:"asset:register",unregister:"asset:unregister"},relativeImportedPath(i,a){let s=i==="sound"?"sounds":i==="model"?"":"textures",c=Is.join(r,s,a);return Is.relative(n,c).split(Is.sep).join("/")},resolveAssetMetadata(i){return Id({kind:i.kind,sourcePath:i.sourcePath,existingMetadata:i.existingMetadata,payloadMetadata:i.payloadMetadata,guid:i.guid,assetId:i.assetId,cwd:e,assetsDir:o})}}}function fO(e){return(e.additionalInvalidationFiles??[]).map(t=>Od(e.projectRoot,t))}import Jm from"node:path";function hO(e,t){return{editorScenePath:Jm.resolve(t,e.source.editorScene),scenePath:Jm.resolve(t,e.source.runtimeScene),...e.source.rendering?{renderingConfigPath:Jm.resolve(t,e.source.rendering)}:{},...e.source.shadows?{shadowsConfigPath:Jm.resolve(t,e.source.shadows)}:{}}}import{existsSync as hH,readFileSync as yH}from"node:fs";import{mkdir as bH,writeFile as EH}from"node:fs/promises";import Ey from"node:path";function yO(e,t){let r=e.source.rendering,n=r?Ey.resolve(t.projectRoot,r):null,o=()=>[...n?[n]:[],...(t.additionalInvalidationFiles??[]).map(i=>Ey.resolve(t.projectRoot,i))];return{createInvalidationFiles:o,summarize:TH,async handleRoute(i){return n?tP({method:IH(i.req)},{readBody:()=>i.readJsonBody(i.req),loadConfig(){return{renderingConfig:hH(n)?JSON.parse(yH(n,"utf8")||"{}"):{},response:{renderingConfigPath:n}}},async saveConfig({renderingConfig:a}){return Hm([n],async()=>(await bH(Ey.dirname(n),{recursive:!0}),await EH(n,`${JSON.stringify(a,null,2)}
21
+ `,"utf8"),Md(i.server,o()),{renderingConfigPath:n}))}}):{statusCode:404,body:{error:"rendering_config_not_configured"}}}}}function IH(e){if(!e||typeof e!="object")return"GET";let t=e.method;return typeof t=="string"?t:"GET"}function TH(e){return{postProcessEnabled:e?.postProcess?.enabled??e?.globalVolume?.enabled??null,postProcessBloomEnabled:e?.postProcess?.bloom?.enabled??e?.globalVolume?.postProcessing?.bloom?.enabled??null,planarEnabled:e?.shadows?.planar?.enabled??null,planarOpacity:e?.shadows?.planar?.appearance?.color?.a??null,planeHeight:e?.shadows?.planar?.plane?.height??null,planeBias:e?.shadows?.planar?.plane?.bias??null,stencilEnabled:e?.shadows?.planar?.stencil?.enabled??null}}var PH="/__fps_runtime/scene-publish";async function bO(e){let t=e.fetch??globalThis.fetch,r=new URL(AH(e.path),xH(e.runtimeUrl)),n=await t(r,{method:"POST",headers:{authorization:`Bearer ${e.token}`,"content-type":"application/json"},body:JSON.stringify(MH(e.data))});if(!n.ok)throw new Error(`runtime_scene_publish_failed:${n.status}`)}function AH(e){let t=e?.trim()||PH;if(!t.startsWith("/")||t.startsWith("//"))throw new Error("runtime_scene_publish_path_invalid");return t}function xH(e){let t=e.trim();if(!t)throw new Error("runtime_scene_publish_runtime_url_required");let r=new URL(t);if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error("runtime_scene_publish_runtime_url_invalid");return r.toString()}function MH(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("runtime_scene_publish_payload_invalid");let t=e,r=typeof t.transactionId=="string"?t.transactionId.trim():"",n=t.version,o=typeof t.sceneUrl=="string"?t.sceneUrl.trim():"";if(!r||!Number.isSafeInteger(n)||n<0||!o)throw new Error("runtime_scene_publish_payload_invalid");return Object.freeze({transactionId:r,version:n,sceneUrl:o})}import{randomUUID as i_}from"node:crypto";import{createServer as H8}from"node:http";import{mkdir as K8,readFile as W8,realpath as q8,rename as Y8,rm as J8,writeFile as X8}from"node:fs/promises";import ec from"node:path";function Jo(e){let t=e.sessionId??e.clientId??e.principal.id??`request:${e.requestId}`;return Object.freeze({principal:Object.freeze({...e.principal}),source:e.source,sessionId:t,...e.surface?{surface:e.surface}:{}})}function Tr(e){return e?{principal:{...e.principal},source:e.source,sessionId:e.sessionId,...e.surface?{surface:e.surface}:{}}:void 0}var ia=new WeakMap,Cd=new WeakMap,Iy=new WeakSet;function EO(e){Iy.add(e)}function Xm(e){return Iy.has(e)?ia.get(e)===void 0:!1}function Ty(e,t){let r=ia.get(e);if(r&&r!==t)throw new Error("Editor Session already has a different write authority.");ia.set(e,t)}function wd(e,t){ia.get(e)===t&&ia.delete(e)}function Ot(e,t,r){let n=vd(e,t,r);if(n&&typeof n=="object"&&"then"in n&&typeof n.then=="function")throw new Error("Editor Session write authority handlers must be synchronous.");return n}function vd(e,t,r){if(ia.get(e)!==t)throw new Error("Editor Session write authority is unavailable.");let n=Cd.get(e);if(n&&n!==t)throw new Error("Editor Session has a different active write authority.");Cd.set(e,t);try{return r()}finally{n?Cd.set(e,n):Cd.delete(e)}}function qr(e){if(!Iy.has(e))throw new Error("Editor Session mutations require the canonical Session instance.");let t=ia.get(e);if(t&&Cd.get(e)!==t)throw new Error("Editor Session document mutation requires its Authoring Host write authority.")}var IO=Symbol("EditorSession.trustedInitialDocumentReferences");function TO(e){let t=globalThis.structuredClone;return typeof t=="function"?t(e):JSON.parse(JSON.stringify(e))}function DH(e,t){return e===t?!0:JSON.stringify(e)===JSON.stringify(t)}function uo(e){let t=Xo(e?.selectedIds??[]),r=e?.activeId&&t.includes(e.activeId)?e.activeId:t[t.length-1]??null;return{selectedIds:t,activeId:r}}function Xo(e){let t=[],r=new Set;for(let n of e)!n||r.has(n)||(r.add(n),t.push(n));return t}function Qm(e,t){return e.activeId!==t.activeId||e.selectedIds.length!==t.selectedIds.length?!1:e.selectedIds.every((r,n)=>t.selectedIds[n]===r)}function PO(e,t){if(e===void 0)return 0;if(!Number.isSafeInteger(e)||e<0)throw new Error(`${t} must be a non-negative safe integer.`);return e}function RH(e,t){if(t.type==="selection.clear")return uo();if(t.type==="selection.replace")return uo({selectedIds:t.selectedIds,activeId:t.activeId});if(t.type==="selection.add"){let o=Xo([...e.selectedIds,...t.selectedIds]);return uo({selectedIds:o,activeId:t.activeId??t.selectedIds[t.selectedIds.length-1]??e.activeId})}if(t.type==="selection.remove"){let o=new Set(t.selectedIds),i=e.selectedIds.filter(a=>!o.has(a));return uo({selectedIds:i,activeId:e.activeId&&i.includes(e.activeId)?e.activeId:i[i.length-1]??null})}let r=[...e.selectedIds],n=e.activeId;for(let o of t.selectedIds){let i=r.indexOf(o);i>=0?(r.splice(i,1),n===o&&(n=r[r.length-1]??null)):o&&(r.push(o),n=o)}return uo({selectedIds:r,activeId:t.activeId??n})}var Py=class e{constructor(t,r){this.undoStack=[],this.redoStack=[],this.exposedTransactions=new WeakMap,this.nextTransactionId=1,this.documentRevision=0,this.documentStructureRevision=0,this.protectedWorkingDocument=null,this.protectedPersistedDocument=null,EO(this),this.cloneDocument=t.cloneDocument??TO,this.clonePatch=t.clonePatch??TO,this.compareDocuments=t.compareDocuments??DH,this.historyDocumentStorage=t.historyDocumentStorage??"defensive-clone",this.cloneResultDocumentsByDefault=t.cloneResultDocumentsByDefault!==!1,this.reduceDocument=t.reduceDocument,this.isDocumentStructureChange=t.isDocumentStructureChange??(()=>!0),this.source=lo(t.source);let n=r===IO&&this.historyDocumentStorage==="immutable-reference";this.persistedDocument=n?t.persistedDocument:this.cloneDocument(t.persistedDocument),this.workingDocument=n?t.workingDocument??t.persistedDocument:this.cloneDocument(t.workingDocument??t.persistedDocument),this.selection=uo(t.selection),this.documentRevision=PO(t.initialDocumentRevision,"initialDocumentRevision"),this.documentStructureRevision=PO(t.initialDocumentStructureRevision,"initialDocumentStructureRevision"),this.onChange=t.onChange,this.onChangeError=t.onChangeError,this.dirty=!this.compareDocuments(this.workingDocument,this.persistedDocument)}getState(t={}){let r=t.cloneDocuments!==!1,n=!r&&Xm(this);return{persistedDocument:r?this.cloneDocument(this.persistedDocument):n?this.persistedDocument:this.getProtectedDocumentSnapshot("persisted",this.persistedDocument),workingDocument:r?this.cloneDocument(this.workingDocument):n?this.workingDocument:this.getProtectedDocumentSnapshot("working",this.workingDocument),documentRevision:this.documentRevision,documentStructureRevision:this.documentStructureRevision,source:lo(this.source),selection:this.getSelection(),dirty:this.dirty,canUndo:this.canUndo(),canRedo:this.canRedo(),history:this.getHistoryView()}}getMetadata(){return{documentRevision:this.documentRevision,documentStructureRevision:this.documentStructureRevision,source:lo(this.source),selection:this.getSelection(),dirty:this.dirty,canUndo:this.canUndo(),canRedo:this.canRedo(),history:this.getHistoryView()}}getWorkingDocument(){return this.cloneDocument(this.workingDocument)}getPersistedDocument(){return this.cloneDocument(this.persistedDocument)}getSource(){return lo(this.source)}getSelection(){return{selectedIds:[...this.selection.selectedIds],activeId:this.selection.activeId}}detachDocumentReferencesForWriteAuthority(){qr(this),this.persistedDocument=this.cloneDocument(this.persistedDocument),this.workingDocument=this.cloneDocument(this.workingDocument),this.protectedWorkingDocument=null,this.protectedPersistedDocument=null}isDirty(){return this.dirty}fork(t={}){let r=new e({source:this.source,persistedDocument:this.workingDocument,selection:t.selection,onChange:t.onChange,onChangeError:t.onChangeError,cloneDocument:this.cloneDocument,clonePatch:this.clonePatch,compareDocuments:this.compareDocuments,historyDocumentStorage:this.historyDocumentStorage,cloneResultDocumentsByDefault:this.cloneResultDocumentsByDefault,reduceDocument:this.reduceDocument,isDocumentStructureChange:this.isDocumentStructureChange});return t.preserveDocumentRevision&&(r.documentRevision=this.documentRevision,r.documentStructureRevision=this.documentStructureRevision),r}beginTransaction(){let t=this,r=this.documentRevision,n=uo(this.selection),o=new e({source:this.source,persistedDocument:this.persistedDocument,workingDocument:this.workingDocument,selection:this.selection,cloneDocument:this.cloneDocument,clonePatch:this.clonePatch,compareDocuments:this.compareDocuments,historyDocumentStorage:this.historyDocumentStorage,cloneResultDocumentsByDefault:this.cloneResultDocumentsByDefault,reduceDocument:this.reduceDocument,isDocumentStructureChange:this.isDocumentStructureChange},this.historyDocumentStorage==="immutable-reference"?IO:void 0);o.undoStack=this.cloneTransactions(this.undoStack),o.redoStack=this.cloneTransactions(this.redoStack),o.nextTransactionId=this.nextTransactionId,o.documentRevision=this.documentRevision,o.documentStructureRevision=this.documentStructureRevision,o.dirty=this.dirty;let i=!0,a=(s="document")=>{if(!i)throw new Error("Editor Session transaction is no longer active.");if(t.documentRevision!==r)throw i=!1,new Error(`Editor Session transaction base revision changed: expected ${r}, received ${t.documentRevision}.`);let c=o.documentRevision!==r,d=!Qm(t.selection,n),u=uo(d?t.selection:o.selection),l=!Qm(t.selection,u),m=c||t.undoStack.length!==o.undoStack.length||t.redoStack.length!==o.redoStack.length,p=lo(o.source),f=t.historyDocumentStorage==="immutable-reference",g=f?o.persistedDocument:t.cloneDocument(o.persistedDocument),S=f?o.workingDocument:t.cloneDocument(o.workingDocument),P=t.cloneTransactions(o.undoStack),x=t.cloneTransactions(o.redoStack);o.selection=u;let T=o.getState({cloneDocuments:t.cloneResultDocumentsByDefault}),R=!0,A=!1,E=()=>{if(!R||!i)throw new Error("Editor Session prepared commit is no longer active.");if(t.documentRevision!==r)throw R=!1,i=!1,new Error(`Editor Session transaction base revision changed: expected ${r}, received ${t.documentRevision}.`)},C=()=>{A||(A=!0,(c||l||m)&&t.emitChange(s,c,l,m))};return{assertReady:E,commit(b={}){return qr(t),E(),t.source=p,t.persistedDocument=g,t.workingDocument=S,t.selection=u,t.dirty=o.dirty,t.undoStack=P,t.redoStack=x,t.nextTransactionId=o.nextTransactionId,t.documentRevision=o.documentRevision,t.documentStructureRevision=o.documentStructureRevision,R=!1,i=!1,b.deferChangeNotification||C(),{state:T,notifyChange:C}},discard(){R&&(R=!1,i=!1)}}};return{session:o,baseDocumentRevision:r,prepareCommit:a,commit(s="document"){return a(s).commit().state},discard(){i=!1}}}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0}dispatch(t,r={}){let n=this.selection;if(kH(t)){let x=RH(this.selection,t),T=!Qm(n,x),R=r.cloneResultDocument??(this.historyDocumentStorage==="immutable-reference"?this.cloneResultDocumentsByDefault:!1),A=R?this.cloneDocument(this.workingDocument):this.workingDocument,E={selectedIds:[...x.selectedIds],activeId:x.activeId};return this.selection=x,this.emitChange("selection",!1,T,!1),{command:t,workingDocument:R||Xm(this)?A:this.getProtectedDocumentSnapshot("working",this.workingDocument),selection:E,dirty:this.dirty,documentChanged:!1,selectionChanged:T}}qr(this);let o=this.isDocumentStructureChange(t),i=t.type==="document.patch"&&r.assumeDocumentChanged===!0,a=this.historyDocumentStorage==="immutable-reference",s=i||a?this.workingDocument:this.cloneDocument(this.workingDocument),c=this.workingDocument;if(t.type==="document.replace")c=a?t.document:this.cloneDocument(t.document);else if(t.type==="document.patch"){if(!this.reduceDocument)throw new Error("EditorSession requires reduceDocument to handle document.patch commands.");let x=a&&r.clonePatchInput!==!1?{...t,patch:this.clonePatch(t.patch)}:t;c=this.reduceDocument(a||r.clonePatchInput===!1?this.workingDocument:this.cloneDocument(this.workingDocument),x)}let d=r.assumeDocumentChanged===!0?!0:t.type==="document.replace"?!this.compareDocuments(s,c):a?c!==s:!this.compareDocuments(s,c),u=!Qm(n,this.selection),l=d?r.assumeDirty===!0?!0:!this.compareDocuments(c,this.persistedDocument):this.dirty,m=d&&vH(t)?this.stageTransaction(t,s,c,r,o):void 0,p=r.cloneResultDocument??this.cloneResultDocumentsByDefault,f=p?this.cloneDocument(c):c,g=m?p?Zm(m.result,this.cloneDocument):m.result:void 0,S=p&&m?.mergedPrevious?this.exposedTransactions.get(m.mergedPrevious.target):void 0,P=S&&m?Zm(m.result,this.cloneDocument):void 0;if(d&&(this.workingDocument=c,this.documentRevision+=1,o&&(this.documentStructureRevision+=1),this.dirty=l,m)){if(m.mergedPrevious&&Object.assign(m.mergedPrevious.target,m.mergedPrevious.value),S&&P)try{Object.assign(S,P)}catch{this.exposedTransactions.delete(m.mergedPrevious.target)}this.undoStack=m.undoStack,this.redoStack=[],m.advancesTransactionId&&(this.nextTransactionId+=1),!m.mergedPrevious&&p&&g&&this.exposedTransactions.set(m.storedTransaction,g)}return this.emitChange("document",d,u,!!g),{command:t,workingDocument:p||Xm(this)?f:this.getProtectedDocumentSnapshot("working",this.workingDocument),selection:this.getSelection(),dirty:this.isDirty(),documentChanged:d,selectionChanged:u,transaction:g}}undo(t={}){qr(this);let r=this.undoStack[this.undoStack.length-1];if(!r)return null;let n=this.historyDocumentStorage==="immutable-reference"?r.beforeDocument:this.cloneDocument(r.beforeDocument),o=!this.compareDocuments(n,this.persistedDocument),i=t.cloneResultDocument??this.cloneResultDocumentsByDefault,a=i?this.cloneDocument(n):n,s=i?Zm(r,this.cloneDocument):r;return this.undoStack=this.undoStack.slice(0,-1),this.redoStack=[...this.redoStack,r],this.workingDocument=n,this.documentRevision+=1,r.structureChanged&&(this.documentStructureRevision+=1),this.dirty=o,this.emitChange("history",!0,!1,!0),{transaction:s,workingDocument:a,selection:this.getSelection(),dirty:this.isDirty(),documentChanged:!0}}redo(t={}){qr(this);let r=this.redoStack[this.redoStack.length-1];if(!r)return null;let n=this.historyDocumentStorage==="immutable-reference"?r.afterDocument:this.cloneDocument(r.afterDocument),o=!this.compareDocuments(n,this.persistedDocument),i=t.cloneResultDocument??this.cloneResultDocumentsByDefault,a=i?this.cloneDocument(n):n,s=i?Zm(r,this.cloneDocument):r;return this.redoStack=this.redoStack.slice(0,-1),this.undoStack=[...this.undoStack,r],this.workingDocument=n,this.documentRevision+=1,r.structureChanged&&(this.documentStructureRevision+=1),this.dirty=o,this.emitChange("history",!0,!1,!0),{transaction:s,workingDocument:a,selection:this.getSelection(),dirty:this.isDirty(),documentChanged:!0}}markSaved(t,r,n={}){qr(this),this.assertTrustedDocumentInputReuse(n.cloneDocumentInput),r&&(this.source=lo(r));let o=n.structureChanged??!this.compareDocuments(this.workingDocument,t);return n.cloneDocumentInput===!1?(this.persistedDocument=t,this.workingDocument=t):(this.persistedDocument=this.cloneDocument(t),this.workingDocument=this.cloneDocument(t)),n.resetHistory?(this.undoStack=[],this.redoStack=[]):this.rebaseCurrentHistoryBoundary(this.workingDocument),this.documentRevision+=1,o&&(this.documentStructureRevision+=1),this.dirty=!1,this.emitChange("saved",!0,!1,n.resetHistory===!0),this.getState({cloneDocuments:n.cloneResultDocuments!==!1})}markPersistedCheckpoint(t,r,n={}){return qr(this),this.assertTrustedDocumentInputReuse(n.cloneDocumentInput),r&&(this.source=lo(r)),this.persistedDocument=n.cloneDocumentInput===!1?t:this.cloneDocument(t),this.documentRevision+=1,this.dirty=!this.compareDocuments(this.workingDocument,this.persistedDocument),this.emitChange("saved",!0,!1,!1),this.getState({cloneDocuments:n.cloneResultDocuments!==!1})}reset(t,r){return qr(this),this.source=lo(r),this.persistedDocument=this.cloneDocument(t),this.workingDocument=this.cloneDocument(t),this.documentRevision+=1,this.documentStructureRevision+=1,this.selection=uo(),this.dirty=!1,this.undoStack=[],this.redoStack=[],this.emitChange("reset",!0,!0,!0),this.getState()}rebaseExternalDocuments(t,r={}){qr(this),this.assertTrustedDocumentInputReuse(r.cloneDocumentInput);let n=r.cloneDocumentInput===!1?t.persistedDocument:this.cloneDocument(t.persistedDocument),o=r.cloneDocumentInput===!1?t.workingDocument:this.cloneDocument(t.workingDocument),i=!this.compareDocuments(o,n),a=t.structureChanged??!this.compareDocuments(this.workingDocument,o),s=r.cloneResultDocuments!==!1,c=s?this.cloneDocument(n):n,d=s?this.cloneDocument(o):o,u=lo(this.source),l=this.getSelection(),m=this.documentRevision+1;return this.persistedDocument=n,this.workingDocument=o,this.documentRevision=m,a&&(this.documentStructureRevision+=1),this.dirty=i,this.undoStack=[],this.redoStack=[],this.emitChange("rebase",!0,!1,!0),{persistedDocument:c,workingDocument:d,documentRevision:m,documentStructureRevision:this.documentStructureRevision,source:u,selection:l,dirty:i,canUndo:!1,canRedo:!1,history:{entries:[]}}}advanceRevisionsForScopeSwitch(t,r){if(qr(this),!Number.isSafeInteger(t)||t<=this.documentRevision)throw new Error("Scope switch document revision must advance the target Session.");if(!Number.isSafeInteger(r)||r<=this.documentStructureRevision)throw new Error("Scope switch structure revision must advance the target Session.");this.documentRevision=t,this.documentStructureRevision=r}emitChange(t,r,n,o){try{this.onChange?.(Object.freeze({reason:t,dirty:this.dirty,documentChanged:r,selectionChanged:n,historyChanged:o,documentRevision:this.documentRevision}))}catch(i){try{this.onChangeError?.(i)}catch{}}}assertTrustedDocumentInputReuse(t){if(t===!1&&this.historyDocumentStorage!=="immutable-reference")throw new Error("Editor Session can retain document input only with immutable-reference storage.")}rebaseCurrentHistoryBoundary(t){let r=this.undoStack[this.undoStack.length-1],n=this.redoStack[this.redoStack.length-1],o=r?this.exposedTransactions.get(r):void 0,i=n?this.exposedTransactions.get(n):void 0,a=o?this.cloneDocument(t):void 0,s=i?this.cloneDocument(t):void 0;r&&(r.afterDocument=t),n&&(n.beforeDocument=t),o&&a&&(o.afterDocument=a),i&&s&&(i.beforeDocument=s)}getProtectedDocumentSnapshot(t,r){let n=t==="working"?this.protectedWorkingDocument:this.protectedPersistedDocument;if(n?.revision===this.documentRevision&&n.source===r)return n.snapshot;let o=AO(this.cloneDocument(r)),i={revision:this.documentRevision,source:r,snapshot:o};return t==="working"?this.protectedWorkingDocument=i:this.protectedPersistedDocument=i,o}stageTransaction(t,r,n,o,i){let a=this.historyDocumentStorage==="immutable-reference",s=u=>a?u:this.cloneDocument(u),c=o.mergeWithPrevious?this.undoStack[this.undoStack.length-1]:void 0;if(c){let u={...c,afterDocument:s(n),projectionImpact:OH(c.projectionImpact,t.projectionImpact),presentationImpact:CH(c.presentationImpact,t.presentationImpact),origin:Tr(t.origin)??Tr(c.origin),structureChanged:c.structureChanged||i};return{undoStack:this.undoStack,storedTransaction:c,advancesTransactionId:!1,mergedPrevious:{target:c,value:u},result:a?u:{...u,beforeDocument:this.cloneDocument(u.beforeDocument),afterDocument:this.cloneDocument(u.afterDocument),projectionImpact:ep(u.projectionImpact),presentationImpact:tp(u.presentationImpact)}}}let d={id:`transaction_${this.nextTransactionId}`,label:t.label??t.type,commandType:t.type,beforeDocument:s(r),afterDocument:s(n),...t.projectionImpact?{projectionImpact:ep(t.projectionImpact)}:{},...t.presentationImpact?{presentationImpact:tp(t.presentationImpact)}:{},structureChanged:i,createdAt:Date.now(),...t.origin?{origin:Tr(t.origin)}:{}};return{undoStack:[...this.undoStack,d],storedTransaction:d,advancesTransactionId:!0,result:d}}cloneTransactions(t){let r=this.historyDocumentStorage==="immutable-reference";return t.map(n=>({...n,beforeDocument:r?n.beforeDocument:this.cloneDocument(n.beforeDocument),afterDocument:r?n.afterDocument:this.cloneDocument(n.afterDocument),projectionImpact:ep(n.projectionImpact),presentationImpact:tp(n.presentationImpact),origin:Tr(n.origin)}))}getHistoryView(){return{entries:[...this.undoStack,...this.redoStack].map(wH).sort((t,r)=>r.createdAt-t.createdAt)}}};function AO(e,t=new WeakSet){if(e===null||typeof e!="object")return e;let r=e;if(t.has(r))return e;t.add(r);for(let n of Reflect.ownKeys(r)){let o=Object.getOwnPropertyDescriptor(r,n);o&&"value"in o&&AO(o.value,t)}try{Object.freeze(r)}catch{}return e}function ep(e){if(e)return e.type==="rebuild"?{type:"rebuild",...e.reason?{reason:e.reason}:{}}:{type:"incremental",...e.syncTransformIds?{syncTransformIds:[...e.syncTransformIds]}:{},...e.syncMetadataIds?{syncMetadataIds:[...e.syncMetadataIds]}:{},...e.syncAppearanceIds?{syncAppearanceIds:[...e.syncAppearanceIds]}:{},...e.reprojectIds?{reprojectIds:[...e.reprojectIds]}:{},...e.createdNodeIds?{createdNodeIds:[...e.createdNodeIds]}:{},...e.deletedNodeIds?{deletedNodeIds:[...e.deletedNodeIds]}:{}}}function OH(e,t){if(!(!e||!t)){if(e.type==="rebuild"||t.type==="rebuild"){let r=e.type==="rebuild"?e.reason:t.type==="rebuild"?t.reason:void 0;return{type:"rebuild",...r?{reason:r}:{}}}return{type:"incremental",syncTransformIds:Xo([...e.syncTransformIds??[],...t.syncTransformIds??[]]),syncMetadataIds:Xo([...e.syncMetadataIds??[],...t.syncMetadataIds??[]]),syncAppearanceIds:Xo([...e.syncAppearanceIds??[],...t.syncAppearanceIds??[]]),reprojectIds:Xo([...e.reprojectIds??[],...t.reprojectIds??[]]),createdNodeIds:Xo([...e.createdNodeIds??[],...t.createdNodeIds??[]]),deletedNodeIds:Xo([...e.deletedNodeIds??[],...t.deletedNodeIds??[]])}}}function tp(e){if(e)return{...e.inspector?{inspector:e.inspector==="full"?"full":[...e.inspector]}:{},...e.hierarchy?{hierarchy:e.hierarchy==="full"?"full":{labelIds:[...e.hierarchy.labelIds]}}:{},...e.materials?{materials:{assetIds:[...e.materials.assetIds]}}:{},...e.rendering?{rendering:!0}:{}}}function CH(e,t){if(!(!e||!t))return{...e.inspector||t.inspector?{inspector:e.inspector==="full"||t.inspector==="full"?"full":[...new Set([...e.inspector??[],...t.inspector??[]])]}:{},...e.hierarchy||t.hierarchy?{hierarchy:e.hierarchy==="full"||t.hierarchy==="full"?"full":{labelIds:[...new Set([...e.hierarchy?.labelIds??[],...t.hierarchy?.labelIds??[]])]}}:{},...e.materials||t.materials?{materials:{assetIds:[...new Set([...e.materials?.assetIds??[],...t.materials?.assetIds??[]])]}}:{},...e.rendering||t.rendering?{rendering:!0}:{}}}function wH(e){return{id:e.id,label:e.label,commandType:e.commandType,createdAt:e.createdAt,...e.origin?{origin:Tr(e.origin)}:{}}}function Zm(e,t){return{...e,beforeDocument:t(e.beforeDocument),afterDocument:t(e.afterDocument),projectionImpact:ep(e.projectionImpact),presentationImpact:tp(e.presentationImpact),origin:Tr(e.origin)}}function lo(e){if(e)return{...e,ref:{...e.ref},capabilities:e.capabilities?{...e.capabilities}:void 0,metadata:e.metadata?structuredClone(e.metadata):void 0}}function vH(e){return e.type==="document.patch"||e.type==="document.replace"}function kH(e){return e.type==="selection.replace"||e.type==="selection.add"||e.type==="selection.remove"||e.type==="selection.toggle"||e.type==="selection.clear"}function xO(e){return new Py(e)}var y={ASSET_ANALYSIS_GET:"asset.analysis.get",ASSET_INFO_GET:"asset.info.get",ASSET_LIBRARY_LIST:"asset.library.list",ASSET_REFERENCES_LIST:"asset.references.list",AUTHORING_VALIDATION_LIST:"authoring.validation.list",EDITOR_SNAPSHOT_GET:"editor.snapshot.get",EDITOR_STATE_GET:"editor.state.get",EDITOR_DIAGNOSTICS_LIST:"editor.diagnostics.list",EDITOR_UI_REGIONS_GET:"editor.ui.regions.get",HOST_EDITOR_ENTER:"host.editor.enter",HOST_EDITOR_SAVE_AND_RUN:"host.editor.saveAndRun",HOST_EDITOR_DISCARD_AND_RUN:"host.editor.discardAndRun",HOST_EDITOR_WAIT_READY:"host.editor.waitReady",HOST_MODE_GET:"host.mode.get",HIERARCHY_SCOPE_GET:"hierarchy.scope.get",HIERARCHY_OPERATIONS_LIST:"hierarchy.operations.list",HIERARCHY_OPERATION_EXECUTE:"hierarchy.operation.execute",MATERIAL_ASSETS_LIST:"material.assets.list",MATERIAL_ASSET_GET:"material.asset.get",MATERIAL_ASSET_CREATE:"material.asset.create",MATERIAL_ASSET_RENAME:"material.asset.rename",MATERIAL_ASSET_SET_SHADER:"material.asset.setShader",MATERIAL_SHADER_DEFINITIONS_LIST:"material.shaderDefinitions.list",MATERIAL_SHADER_DEFINITION_GET:"material.shaderDefinition.get",MATERIAL_FRAME_PARTICIPANTS_LIST:"material.frameParticipants.list",MATERIAL_REFERENCES_LIST:"material.references.list",MATERIAL_BINDINGS_LIST:"material.bindings.list",MATERIAL_BINDING_SET:"material.binding.set",MATERIAL_BINDING_CLEAR:"material.binding.clear",MATERIAL_PROPERTIES_GET:"material.properties.get",MATERIAL_PROPERTIES_PATCH:"material.properties.patch",OBJECT_CREATE_FROM_ASSET:"object.createFromAsset",OBJECT_CREATE_PRIMITIVE:"object.createPrimitive",OBJECT_DELETE:"object.delete",OBJECT_PROPERTIES_GET:"object.properties.get",OBJECT_PROPERTIES_PATCH_MANY:"object.properties.patchMany",OBJECT_REFERENCES_LIST:"object.references.list",OBJECT_RESOLVE:"object.resolve",PREFAB_MATERIAL_SLOTS_LIST:"prefab.materialSlots.list",PREFAB_ASSET_RENAME:"prefab.asset.rename",PREFAB_NODE_CREATE_FROM_ASSET:"prefab.node.createFromAsset",PREFAB_NODE_CREATE_GROUP:"prefab.node.createGroup",PREFAB_NODE_CREATE_MARKER:"prefab.node.createMarker",PREFAB_NODE_CREATE_PRIMITIVE:"prefab.node.createPrimitive",PREFAB_NODE_DELETE:"prefab.node.delete",PREFAB_NODE_REPARENT:"prefab.node.reparent",PREFAB_NODE_RENAME:"prefab.node.rename",PREFAB_NODE_SELECT:"prefab.node.select",PREFAB_NODE_SET_TRANSFORM:"prefab.node.setTransform",PREFAB_NODE_SET_MARKER:"prefab.node.setMarker",PREFAB_RESOLVE:"prefab.resolve",PREFAB_SCENE_GET:"prefab.scene.get",PREFAB_SOURCE_STRUCTURE_GET:"prefab.source.structure.get",PREFAB_STAGE_EXIT:"prefab.stage.exit",PREFAB_STAGE_OPEN:"prefab.stage.open",PREFAB_STAGE_SAVE:"prefab.stage.save",PREFAB_STAGE_DISCARD:"prefab.stage.discard",SCENE_OBJECTS_LIST:"scene.objects.list",SELECTION_SET:"selection.set",SHADOW_POLICY_GET:"shadow.policy.get",SHADOW_POLICY_SET:"shadow.policy.set",SHADOW_MAP_EXPERIMENT_CONFIG_GET:"shadowMapExperiment.config.get",SHADOW_MAP_EXPERIMENT_POLICY_GET:"shadowMapExperiment.policy.get",SHADOW_MAP_EXPERIMENT_POLICY_SET:"shadowMapExperiment.policy.set",SHADOW_MAP_EXPERIMENT_PLAN_PREVIEW:"shadowMapExperiment.plan.preview",SHADOW_MAP_EXPERIMENT_RUNTIME_SNAPSHOT:"shadowMapExperiment.runtime.snapshot",SHADOW_DEBUG_INSPECT:"shadow.debug.inspect",SHADOW_DEBUG_CONTEXT_CLEAR:"shadow.debug.context.clear",SHADOW_DEBUG_CONTEXT_ENTER:"shadow.debug.context.enter",SHADOW_DEBUG_OVERLAY_CLEAR:"shadow.debug.overlay.clear",SHADOW_DEBUG_OVERLAY_SET:"shadow.debug.overlay.set",SHADOW_DEBUG_VISIBILITY_MEASURE:"shadow.debug.visibilityMeasure",SHADOW_RECEIVERS_LIST:"shadow.receivers.list",SHADOW_RESOLVE_PREVIEW:"shadow.resolvePreview",SHADOW_STATIC_BAKE:"shadow.static.bake",SHADOW_STATIC_INVALIDATE:"shadow.static.invalidate",TRANSFORM_MOVE:"transform.move",TRANSFORM_SET:"transform.set",VIEWPORT_CAMERA_GET:"viewport.camera.get",VIEWPORT_CAMERA_ORBIT:"viewport.camera.orbit",VIEWPORT_CAMERA_SET_PRESET:"viewport.camera.setPreset",VIEWPORT_FRAME_SELECTION:"viewport.frameSelection",VIEWPORT_FOCUS_OBJECT:"viewport.focusObject",VIEWPORT_ISOLATION_ENTER:"viewport.isolation.enter",VIEWPORT_RENDER_STATS_GET:"viewport.renderStats.get",VIEWPORT_VISIBILITY_CLEAR:"viewport.visibility.clear",VIEWPORT_VISIBILITY_SET:"viewport.visibility.set",VIEWPORT_VISIBILITY_SNAPSHOT:"viewport.visibility.snapshot"},My=Object.freeze({...Object.fromEntries(Object.values(y).map(e=>[e,"view"])),[y.HIERARCHY_SCOPE_GET]:"authoring",[y.SCENE_OBJECTS_LIST]:"authoring",[y.OBJECT_RESOLVE]:"authoring",[y.ASSET_LIBRARY_LIST]:"authoring",[y.ASSET_INFO_GET]:"authoring",[y.ASSET_REFERENCES_LIST]:"authoring",[y.AUTHORING_VALIDATION_LIST]:"authoring",[y.MATERIAL_ASSETS_LIST]:"authoring",[y.MATERIAL_ASSET_GET]:"authoring",[y.MATERIAL_ASSET_CREATE]:"authoring",[y.MATERIAL_ASSET_RENAME]:"authoring",[y.MATERIAL_ASSET_SET_SHADER]:"authoring",[y.MATERIAL_SHADER_DEFINITIONS_LIST]:"authoring",[y.MATERIAL_SHADER_DEFINITION_GET]:"authoring",[y.MATERIAL_REFERENCES_LIST]:"authoring",[y.MATERIAL_BINDINGS_LIST]:"authoring",[y.MATERIAL_BINDING_SET]:"authoring",[y.MATERIAL_BINDING_CLEAR]:"authoring",[y.MATERIAL_PROPERTIES_GET]:"authoring",[y.MATERIAL_PROPERTIES_PATCH]:"authoring",[y.PREFAB_RESOLVE]:"authoring",[y.PREFAB_ASSET_RENAME]:"authoring",[y.PREFAB_SCENE_GET]:"authoring",[y.PREFAB_NODE_CREATE_FROM_ASSET]:"authoring",[y.PREFAB_NODE_CREATE_GROUP]:"authoring",[y.PREFAB_NODE_CREATE_PRIMITIVE]:"authoring",[y.PREFAB_NODE_SET_TRANSFORM]:"authoring",[y.PREFAB_NODE_REPARENT]:"authoring",[y.PREFAB_NODE_RENAME]:"authoring",[y.PREFAB_NODE_DELETE]:"authoring",[y.OBJECT_CREATE_PRIMITIVE]:"authoring",[y.OBJECT_DELETE]:"authoring",[y.OBJECT_PROPERTIES_GET]:"authoring",[y.OBJECT_PROPERTIES_PATCH_MANY]:"authoring",[y.OBJECT_REFERENCES_LIST]:"authoring",[y.TRANSFORM_MOVE]:"authoring",[y.TRANSFORM_SET]:"authoring",[y.OBJECT_CREATE_FROM_ASSET]:"authoring",[y.SHADOW_MAP_EXPERIMENT_PLAN_PREVIEW]:"renderer",[y.SHADOW_MAP_EXPERIMENT_RUNTIME_SNAPSHOT]:"renderer",[y.SHADOW_DEBUG_INSPECT]:"renderer",[y.SHADOW_DEBUG_CONTEXT_ENTER]:"renderer",[y.SHADOW_DEBUG_CONTEXT_CLEAR]:"renderer",[y.SHADOW_DEBUG_OVERLAY_SET]:"renderer",[y.SHADOW_DEBUG_OVERLAY_CLEAR]:"renderer",[y.SHADOW_DEBUG_VISIBILITY_MEASURE]:"renderer",[y.VIEWPORT_FOCUS_OBJECT]:"renderer",[y.MATERIAL_FRAME_PARTICIPANTS_LIST]:"renderer",[y.VIEWPORT_RENDER_STATS_GET]:"renderer",[y.VIEWPORT_FRAME_SELECTION]:"renderer",[y.VIEWPORT_VISIBILITY_SNAPSHOT]:"renderer",[y.VIEWPORT_VISIBILITY_SET]:"renderer",[y.VIEWPORT_VISIBILITY_CLEAR]:"renderer",[y.VIEWPORT_ISOLATION_ENTER]:"renderer",[y.VIEWPORT_CAMERA_GET]:"renderer",[y.VIEWPORT_CAMERA_SET_PRESET]:"renderer",[y.VIEWPORT_CAMERA_ORBIT]:"renderer"}),xie=new Set([y.HOST_MODE_GET,y.HOST_EDITOR_ENTER,y.HOST_EDITOR_SAVE_AND_RUN,y.HOST_EDITOR_DISCARD_AND_RUN,y.HOST_EDITOR_WAIT_READY]),Ts=Object.freeze({[y.HIERARCHY_SCOPE_GET]:N(y.HIERARCHY_SCOPE_GET,"Get active Hierarchy scope","hierarchy","read"),[y.HIERARCHY_OPERATIONS_LIST]:N(y.HIERARCHY_OPERATIONS_LIST,"List Hierarchy operations","hierarchy","read"),[y.HIERARCHY_OPERATION_EXECUTE]:N(y.HIERARCHY_OPERATION_EXECUTE,"Execute Hierarchy operation","hierarchy","write"),[y.ASSET_LIBRARY_LIST]:N(y.ASSET_LIBRARY_LIST,"List asset library","asset","read"),[y.ASSET_INFO_GET]:N(y.ASSET_INFO_GET,"Get asset info","asset","read"),[y.ASSET_ANALYSIS_GET]:N(y.ASSET_ANALYSIS_GET,"Get asset analysis","asset","read"),[y.ASSET_REFERENCES_LIST]:N(y.ASSET_REFERENCES_LIST,"List asset references","asset","read"),[y.AUTHORING_VALIDATION_LIST]:N(y.AUTHORING_VALIDATION_LIST,"List authoring validation diagnostics","authoring","read"),[y.MATERIAL_ASSETS_LIST]:N(y.MATERIAL_ASSETS_LIST,"List material assets","material","read"),[y.MATERIAL_ASSET_GET]:N(y.MATERIAL_ASSET_GET,"Get material asset","material","read"),[y.MATERIAL_ASSET_CREATE]:N(y.MATERIAL_ASSET_CREATE,"Create material asset","material","write"),[y.MATERIAL_ASSET_RENAME]:N(y.MATERIAL_ASSET_RENAME,"Rename material asset","material","write"),[y.MATERIAL_ASSET_SET_SHADER]:N(y.MATERIAL_ASSET_SET_SHADER,"Set material shader","material","write"),[y.MATERIAL_SHADER_DEFINITIONS_LIST]:N(y.MATERIAL_SHADER_DEFINITIONS_LIST,"List Shader Definitions","material","read"),[y.MATERIAL_SHADER_DEFINITION_GET]:N(y.MATERIAL_SHADER_DEFINITION_GET,"Get Shader Definition","material","read"),[y.MATERIAL_FRAME_PARTICIPANTS_LIST]:N(y.MATERIAL_FRAME_PARTICIPANTS_LIST,"List material frame participants","material","read"),[y.MATERIAL_REFERENCES_LIST]:N(y.MATERIAL_REFERENCES_LIST,"List material references","material","read"),[y.MATERIAL_BINDINGS_LIST]:N(y.MATERIAL_BINDINGS_LIST,"List material bindings","material","read"),[y.MATERIAL_BINDING_SET]:N(y.MATERIAL_BINDING_SET,"Set material bindings","material","write"),[y.MATERIAL_BINDING_CLEAR]:N(y.MATERIAL_BINDING_CLEAR,"Clear material bindings","material","write"),[y.MATERIAL_PROPERTIES_GET]:N(y.MATERIAL_PROPERTIES_GET,"Get material properties","material","read"),[y.MATERIAL_PROPERTIES_PATCH]:N(y.MATERIAL_PROPERTIES_PATCH,"Patch material properties","material","write"),[y.PREFAB_RESOLVE]:N(y.PREFAB_RESOLVE,"Resolve prefab asset","prefab","read"),[y.PREFAB_STAGE_OPEN]:N(y.PREFAB_STAGE_OPEN,"Open prefab stage","prefab","write"),[y.PREFAB_STAGE_EXIT]:N(y.PREFAB_STAGE_EXIT,"Exit prefab stage","prefab","write"),[y.PREFAB_STAGE_SAVE]:N(y.PREFAB_STAGE_SAVE,"Save prefab stage","prefab","write"),[y.PREFAB_STAGE_DISCARD]:N(y.PREFAB_STAGE_DISCARD,"Discard prefab stage changes","prefab","write"),[y.PREFAB_ASSET_RENAME]:N(y.PREFAB_ASSET_RENAME,"Rename prefab asset","prefab","write"),[y.PREFAB_SCENE_GET]:N(y.PREFAB_SCENE_GET,"Get prefab composition scene","prefab","read"),[y.PREFAB_NODE_SELECT]:N(y.PREFAB_NODE_SELECT,"Select prefab node","prefab","write"),[y.PREFAB_NODE_CREATE_FROM_ASSET]:N(y.PREFAB_NODE_CREATE_FROM_ASSET,"Create prefab node from asset","prefab","write"),[y.PREFAB_NODE_CREATE_GROUP]:N(y.PREFAB_NODE_CREATE_GROUP,"Create prefab group node","prefab","write"),[y.PREFAB_NODE_CREATE_MARKER]:N(y.PREFAB_NODE_CREATE_MARKER,"Create prefab Marker node","prefab","write"),[y.PREFAB_NODE_CREATE_PRIMITIVE]:N(y.PREFAB_NODE_CREATE_PRIMITIVE,"Create prefab primitive node","prefab","write"),[y.PREFAB_NODE_SET_TRANSFORM]:N(y.PREFAB_NODE_SET_TRANSFORM,"Set prefab node transform","prefab","write"),[y.PREFAB_NODE_SET_MARKER]:N(y.PREFAB_NODE_SET_MARKER,"Set prefab Marker fields","prefab","write"),[y.PREFAB_NODE_REPARENT]:N(y.PREFAB_NODE_REPARENT,"Reparent prefab node","prefab","write"),[y.PREFAB_NODE_RENAME]:N(y.PREFAB_NODE_RENAME,"Rename prefab node","prefab","write"),[y.PREFAB_NODE_DELETE]:N(y.PREFAB_NODE_DELETE,"Delete prefab node","prefab","write"),[y.PREFAB_SOURCE_STRUCTURE_GET]:N(y.PREFAB_SOURCE_STRUCTURE_GET,"Get prefab source structure","prefab","read"),[y.PREFAB_MATERIAL_SLOTS_LIST]:N(y.PREFAB_MATERIAL_SLOTS_LIST,"List prefab material slots","prefab","read"),[y.HOST_MODE_GET]:N(y.HOST_MODE_GET,"Get host mode","lifecycle","read"),[y.HOST_EDITOR_ENTER]:N(y.HOST_EDITOR_ENTER,"Enter editor mode","lifecycle","write"),[y.HOST_EDITOR_SAVE_AND_RUN]:N(y.HOST_EDITOR_SAVE_AND_RUN,"Save editor document and run game","lifecycle","write"),[y.HOST_EDITOR_DISCARD_AND_RUN]:N(y.HOST_EDITOR_DISCARD_AND_RUN,"Discard editor changes and run game","lifecycle","write"),[y.HOST_EDITOR_WAIT_READY]:N(y.HOST_EDITOR_WAIT_READY,"Wait for editor readiness","lifecycle","read"),[y.EDITOR_UI_REGIONS_GET]:N(y.EDITOR_UI_REGIONS_GET,"Get editor workspace regions","ui","read"),[y.SCENE_OBJECTS_LIST]:N(y.SCENE_OBJECTS_LIST,"List scene objects","scene","read"),[y.OBJECT_RESOLVE]:N(y.OBJECT_RESOLVE,"Resolve scene object","scene","read"),[y.OBJECT_CREATE_PRIMITIVE]:N(y.OBJECT_CREATE_PRIMITIVE,"Create primitive object","scene","write"),[y.OBJECT_CREATE_FROM_ASSET]:N(y.OBJECT_CREATE_FROM_ASSET,"Create object from asset","asset","write"),[y.OBJECT_DELETE]:N(y.OBJECT_DELETE,"Delete objects","scene","write"),[y.OBJECT_PROPERTIES_GET]:N(y.OBJECT_PROPERTIES_GET,"Get object properties","scene","read"),[y.OBJECT_PROPERTIES_PATCH_MANY]:N(y.OBJECT_PROPERTIES_PATCH_MANY,"Patch many object properties","scene","write"),[y.OBJECT_REFERENCES_LIST]:N(y.OBJECT_REFERENCES_LIST,"List object references","scene","read"),[y.SELECTION_SET]:N(y.SELECTION_SET,"Set selection","selection","write"),[y.SHADOW_POLICY_GET]:N(y.SHADOW_POLICY_GET,"Get shadow policy","shadow","read"),[y.SHADOW_POLICY_SET]:N(y.SHADOW_POLICY_SET,"Set shadow policy","shadow","write"),[y.SHADOW_MAP_EXPERIMENT_CONFIG_GET]:N(y.SHADOW_MAP_EXPERIMENT_CONFIG_GET,"Get Shadow Map configuration","shadow","read"),[y.SHADOW_MAP_EXPERIMENT_POLICY_GET]:N(y.SHADOW_MAP_EXPERIMENT_POLICY_GET,"Get Shadow Map profiles","shadow","read"),[y.SHADOW_MAP_EXPERIMENT_POLICY_SET]:N(y.SHADOW_MAP_EXPERIMENT_POLICY_SET,"Set Shadow Map profiles","shadow","write"),[y.SHADOW_MAP_EXPERIMENT_PLAN_PREVIEW]:N(y.SHADOW_MAP_EXPERIMENT_PLAN_PREVIEW,"Preview Shadow Map runtime plan","shadow","read"),[y.SHADOW_MAP_EXPERIMENT_RUNTIME_SNAPSHOT]:N(y.SHADOW_MAP_EXPERIMENT_RUNTIME_SNAPSHOT,"Snapshot Shadow Map runtime ownership","shadow","read"),[y.SHADOW_RECEIVERS_LIST]:N(y.SHADOW_RECEIVERS_LIST,"List shadow receivers","shadow","read"),[y.SHADOW_RESOLVE_PREVIEW]:N(y.SHADOW_RESOLVE_PREVIEW,"Resolve shadow preview","shadow","read"),[y.SHADOW_DEBUG_INSPECT]:N(y.SHADOW_DEBUG_INSPECT,"Inspect shadow debug context","shadow","read"),[y.SHADOW_DEBUG_CONTEXT_ENTER]:N(y.SHADOW_DEBUG_CONTEXT_ENTER,"Enter shadow debug context","shadow","write"),[y.SHADOW_DEBUG_CONTEXT_CLEAR]:N(y.SHADOW_DEBUG_CONTEXT_CLEAR,"Clear shadow debug context","shadow","write"),[y.SHADOW_DEBUG_OVERLAY_SET]:N(y.SHADOW_DEBUG_OVERLAY_SET,"Set shadow debug overlay","shadow","write"),[y.SHADOW_DEBUG_OVERLAY_CLEAR]:N(y.SHADOW_DEBUG_OVERLAY_CLEAR,"Clear shadow debug overlay","shadow","write"),[y.SHADOW_DEBUG_VISIBILITY_MEASURE]:N(y.SHADOW_DEBUG_VISIBILITY_MEASURE,"Measure shadow visibility","shadow","read"),[y.TRANSFORM_MOVE]:N(y.TRANSFORM_MOVE,"Move object","transform","write"),[y.TRANSFORM_SET]:N(y.TRANSFORM_SET,"Set object transform","transform","write"),[y.VIEWPORT_FOCUS_OBJECT]:N(y.VIEWPORT_FOCUS_OBJECT,"Focus object in viewport","viewport","write"),[y.VIEWPORT_RENDER_STATS_GET]:N(y.VIEWPORT_RENDER_STATS_GET,"Get viewport render stats","viewport","read"),[y.VIEWPORT_FRAME_SELECTION]:N(y.VIEWPORT_FRAME_SELECTION,"Frame selected object","viewport","write"),[y.VIEWPORT_VISIBILITY_SNAPSHOT]:N(y.VIEWPORT_VISIBILITY_SNAPSHOT,"Get preview visibility overrides","viewport","read"),[y.VIEWPORT_VISIBILITY_SET]:N(y.VIEWPORT_VISIBILITY_SET,"Set preview visibility","viewport","write"),[y.VIEWPORT_VISIBILITY_CLEAR]:N(y.VIEWPORT_VISIBILITY_CLEAR,"Clear preview visibility overrides","viewport","write"),[y.VIEWPORT_ISOLATION_ENTER]:N(y.VIEWPORT_ISOLATION_ENTER,"Enter preview isolation","viewport","write"),[y.VIEWPORT_CAMERA_GET]:N(y.VIEWPORT_CAMERA_GET,"Get viewport camera state","viewport","read"),[y.VIEWPORT_CAMERA_SET_PRESET]:N(y.VIEWPORT_CAMERA_SET_PRESET,"Set viewport camera preset","viewport","write"),[y.VIEWPORT_CAMERA_ORBIT]:N(y.VIEWPORT_CAMERA_ORBIT,"Orbit viewport camera","viewport","write"),[y.EDITOR_SNAPSHOT_GET]:N(y.EDITOR_SNAPSHOT_GET,"Get editor snapshot","state","read"),[y.EDITOR_STATE_GET]:N(y.EDITOR_STATE_GET,"Get editor state","state","read"),[y.EDITOR_DIAGNOSTICS_LIST]:N(y.EDITOR_DIAGNOSTICS_LIST,"List editor diagnostics","state","read")}),Ps=Object.freeze({[y.ASSET_LIBRARY_LIST]:"List SDK catalog assets registered from project files. This does not list document-owned Material Assets or readonly Shader Definition projections.",[y.ASSET_REFERENCES_LIST]:"List bounded references to one project asset across standard scene, Prefab, and Material Asset fields. Project-defined extension fields are reported as a coverage limitation rather than searched heuristically.",[y.AUTHORING_VALIDATION_LIST]:"Run the canonical Editor Scene authoring validator against the current working document and return bounded structured diagnostics.",[y.MATERIAL_ASSETS_LIST]:"List canonical Material Assets authored in the current working document. Use material.shaderDefinitions.list for shader contracts and asset.library.list for imported project assets.",[y.MATERIAL_ASSET_CREATE]:"Create one canonical Material Asset from a registered Shader Definition. The new asset receives stable identity and an independent clone of the Shader defaults.",[y.MATERIAL_ASSET_RENAME]:"Rename one editable Material Asset without changing its stable materialAssetId or any Scene and Prefab references.",[y.MATERIAL_ASSET_SET_SHADER]:"Atomically replace one Material Asset shaderId and properties. Same-path compatible values survive; incompatible values require explicit allowReset confirmation.",[y.MATERIAL_SHADER_DEFINITIONS_LIST]:"List registered Shader Definitions. Definitions are readonly contracts and appear under /@editor/shaders in the Asset Browser; they are not Material Assets.",[y.MATERIAL_SHADER_DEFINITION_GET]:"Read one registered Shader Definition, including its property schema, defaults, Inspector layout, runtime kind, and optional source file.",[y.MATERIAL_PROPERTIES_GET]:"Read canonical authored properties resolved against the material's registered Shader Definition, optionally including its property schema.",[y.MATERIAL_PROPERTIES_PATCH]:"Atomically patch or reset registered Shader Definition leaf properties. Unknown paths, shaderId changes, and partial writes are rejected.",[y.MATERIAL_FRAME_PARTICIPANTS_LIST]:"Read live Scene View material frame participants from the attached renderer. This is preview diagnostics and never changes authored material data.",[y.OBJECT_PROPERTIES_GET]:"Read bounded schema-backed Inspector property values for multiple scene objects. Callers must provide explicit object ids and property paths; full object or document reads are not exposed.",[y.OBJECT_PROPERTIES_PATCH_MANY]:"Atomically validate and patch grouped authored properties across many scene objects. Supports mixed transform, material binding, shadow, rendering, metadata, camera, light, and other registered field paths.",[y.OBJECT_REFERENCES_LIST]:"List bounded standard authored references to one scene object, including hierarchy parents, Marker targets, and Marker Graph relation endpoints. Project-defined extension fields are not searched heuristically.",[y.VIEWPORT_RENDER_STATS_GET]:"Read Scene View scheduler state, frame demand, projected node count, and material frame participant count from the attached renderer."}),Nd=Object.freeze({[y.OBJECT_CREATE_PRIMITIVE]:Object.freeze({category:"scene",menu:{path:["Create","Primitive"]}}),[y.OBJECT_DELETE]:Object.freeze({category:"scene",shortcut:"Delete",menu:{path:["Edit","Delete"]}}),[y.VIEWPORT_FRAME_SELECTION]:Object.freeze({category:"viewport",shortcut:"F",menu:{path:["View","Frame Selection"]}})});function N(e,t,r,n){return Object.freeze({title:t,category:r,access:n,stability:"experimental",target:My[e]??"view"})}var Z={type:"object",properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"}},required:["x","y","z"],additionalProperties:!1},kd={type:"object",properties:{position:Z,rotation:Z,scale:Z},additionalProperties:!1},Dy={type:"object",properties:{min:Z,max:Z,size:Z,center:Z},additionalProperties:!1},Ae={type:"object",properties:{severity:{type:"string",enum:["info","warning","error"]},source:{type:"string"},code:{type:"string"},message:{type:"string"},objectId:{type:"string"},details:{type:"object",additionalProperties:!0}},required:["severity","source","message"],additionalProperties:!1},Ry={type:"string"},_H={type:"object",properties:{kind:{type:"string"},summary:{type:"string"},complexity:{type:"string"},nodeCount:{type:"number"},meshCount:{type:"number"},primitiveCount:{type:"number"},materialCount:{type:"number"},textureCount:{type:"number"},imageCount:{type:"number"},animationCount:{type:"number"},skinCount:{type:"number"},width:{type:"number"},height:{type:"number"},mime:{type:"string"},hasAlpha:{type:"boolean"},diagnostics:{type:"array",items:Ae}},additionalProperties:!0},vO={assetId:{type:"string"},guid:{type:"string"},displayName:{type:"string"},kind:Ry,type:{type:"string"},category:{type:"string"},placeable:{type:"boolean"},byteSize:{type:"number"},contentHash:{type:"string"},relativePath:{type:"string"},metadataSummary:{type:"object",additionalProperties:!0},analysisSummary:_H},NH={type:"object",properties:vO,required:["assetId","displayName","kind","type","placeable"],additionalProperties:!1},jH={type:"object",properties:{...vO,origin:{type:"string"},dedupeKey:{type:"string"},materialMode:{type:"string"},metadata:{type:"object",additionalProperties:!0},external:{type:"object",additionalProperties:!0},defaults:{type:"object",additionalProperties:!0},prefab:{type:"object",additionalProperties:!0}},required:["assetId","displayName","kind","type","placeable"],additionalProperties:!1},GH={type:"object",properties:{includeUnplaceable:{type:"boolean"},query:{type:"string"},kind:Ry,cursor:{type:"string",minLength:1},limit:{type:"integer",minimum:1,maximum:1e3}},additionalProperties:!1},LH={type:"object",properties:{assets:{type:"array",items:NH},totalCount:{type:"integer",minimum:0},returnedCount:{type:"integer",minimum:0},nextCursor:{type:"string"}},required:["assets","totalCount","returnedCount"],additionalProperties:!1},FH={type:"object",properties:{assetId:{type:"string"}},required:["assetId"],additionalProperties:!1},$H={type:"object",properties:{asset:jH},required:["asset"],additionalProperties:!1},kO={type:"object",properties:{complete:{type:"boolean"},included:{type:"array",items:{type:"string"}},limitations:{type:"array",items:{type:"object",properties:{code:{type:"string"},message:{type:"string"}},required:["code","message"],additionalProperties:!1}}},required:["complete","included","limitations"],additionalProperties:!1},BH={type:"object",properties:{assetId:{type:"string"},scope:{type:"string",enum:["scene-object","prefab-asset","prefab-node","material-asset"]},kind:{type:"string"},path:{type:"string"},objectId:{type:"string"},objectName:{type:"string"},prefabAssetId:{type:"string"},nodeId:{type:"string"},materialAssetId:{type:"string"}},required:["assetId","scope","kind","path"],additionalProperties:!1},zH={type:"object",properties:{assetId:{type:"string",minLength:1},scope:{type:"string",enum:["scene-object","prefab-asset","prefab-node","material-asset"]},cursor:{type:"string",minLength:1},limit:{type:"integer",minimum:1,maximum:1e3}},required:["assetId"],additionalProperties:!1},UH={type:"object",properties:{assetId:{type:"string"},references:{type:"array",items:BH},coverage:kO,totalCount:{type:"integer",minimum:0},returnedCount:{type:"integer",minimum:0},nextCursor:{type:"string"}},required:["assetId","references","coverage","totalCount","returnedCount"],additionalProperties:!1},VH={type:"object",properties:{severity:{type:"string",enum:["info","warning","error"]},code:{type:"string"},message:{type:"string"},path:{type:"string"},sourceId:{type:"string"},sourceType:{type:"string"}},required:["severity","message"],additionalProperties:!1},HH={type:"object",properties:{severity:{type:"string",enum:["info","warning","error"]},code:{type:"string"},path:{type:"string"},query:{type:"string"},cursor:{type:"string",minLength:1},limit:{type:"integer",minimum:1,maximum:1e3}},additionalProperties:!1},KH={type:"object",properties:{documentRevision:{type:"integer",minimum:0},diagnostics:{type:"array",items:VH},errorCount:{type:"integer",minimum:0},warningCount:{type:"integer",minimum:0},infoCount:{type:"integer",minimum:0},totalCount:{type:"integer",minimum:0},returnedCount:{type:"integer",minimum:0},nextCursor:{type:"string"}},required:["documentRevision","diagnostics","errorCount","warningCount","infoCount","totalCount","returnedCount"],additionalProperties:!1},WH={type:"object",properties:{assetId:{type:"string"}},required:["assetId"],additionalProperties:!1},qH={type:"object",properties:{kind:{type:"string"},format:{type:"string"},summary:{type:"string"},complexity:{type:"string"},sceneCount:{type:"number"},nodeCount:{type:"number"},meshCount:{type:"number"},primitiveCount:{type:"number"},materialCount:{type:"number"},textureCount:{type:"number"},imageCount:{type:"number"},animationCount:{type:"number"},skinCount:{type:"number"},width:{type:"number"},height:{type:"number"},mime:{type:"string"},bitDepth:{type:"number"},hasAlpha:{type:"boolean"},estimatedPixels:{type:"number"},nodes:{type:"array",items:{type:"object",additionalProperties:!0}},meshes:{type:"array",items:{type:"object",additionalProperties:!0}},materials:{type:"array",items:{type:"object",additionalProperties:!0}},diagnostics:{type:"array",items:Ae}},additionalProperties:!0},YH={type:"object",properties:{assetId:{type:"string"},kind:Ry,analysis:qH},required:["assetId","kind","analysis"],additionalProperties:!1},rp={type:"object",properties:{assetId:{type:"string"},browserAssetId:{type:"string"},displayName:{type:"string"},sourceAssetId:{type:"string"},sourceAssetGuid:{type:"string"},placeable:{type:"boolean"},readonly:{type:"boolean"},status:{type:"string"}},required:["assetId","displayName"],additionalProperties:!1},mo={type:"object",properties:{assetId:{type:"string"},browserAssetId:{type:"string"},label:{type:"string"},sourceAssetId:{type:"string"},sourceAssetGuid:{type:"string"},previewNodeId:{type:"string"},selectedItemId:{anyOf:[{type:"string"},{type:"null"}]},readonly:{type:"boolean"},dirty:{type:"boolean"},documentDirty:{type:"boolean"},canSave:{type:"boolean"},canDiscard:{type:"boolean"}},required:["assetId","label","dirty","documentDirty","canSave","canDiscard"],additionalProperties:!1},JH={type:"object",properties:{assetId:{type:"string"},browserAssetId:{type:"string"},name:{type:"string"},query:{type:"string"},includeUnavailable:{type:"boolean"},cursor:{type:"string",minLength:1},limit:{type:"integer",minimum:1,maximum:1e3}},additionalProperties:!1},XH={type:"object",properties:{prefabs:{type:"array",items:rp},resolvedPrefab:{anyOf:[rp,{type:"null"}]},ambiguous:{type:"boolean"},currentStage:{anyOf:[mo,{type:"null"}]},totalCount:{type:"integer",minimum:0},returnedCount:{type:"integer",minimum:0},nextCursor:{type:"string"}},required:["prefabs","resolvedPrefab","ambiguous","totalCount","returnedCount"],additionalProperties:!1},QH={type:"object",properties:{assetId:{type:"string"},browserAssetId:{type:"string"},name:{type:"string"},query:{type:"string"},dirtyAction:{type:"string",enum:["reject","save","discard"]}},anyOf:[{required:["assetId"]},{required:["browserAssetId"]},{required:["name"]},{required:["query"]}],additionalProperties:!1},ZH={type:"object",properties:{opened:{type:"boolean"},alreadyOpen:{type:"boolean"},prefab:rp,stage:mo,status:{type:"string"}},required:["opened","alreadyOpen","prefab","stage","status"],additionalProperties:!1},eK={type:"object",properties:{dirtyAction:{type:"string",enum:["reject","save","discard"]}},additionalProperties:!1},MO={type:"object",properties:{},additionalProperties:!1},DO={type:"object",properties:{changed:{type:"boolean"},stage:mo,status:{type:"string"}},required:["changed","stage","status"],additionalProperties:!1},tK={type:"object",properties:{exited:{type:"boolean"},wasOpen:{type:"boolean"},previousStage:{anyOf:[mo,{type:"null"}]},status:{type:"string"}},required:["exited","wasOpen","status"],additionalProperties:!1},rK={type:"object",properties:{assetId:{type:"string"},displayName:{type:"string",minLength:1,maxLength:80}},required:["displayName"],additionalProperties:!1},nK={type:"object",properties:{assetId:{type:"string"},previousDisplayName:{type:"string"},displayName:{type:"string"},stageActive:{type:"boolean"},renamed:{type:"boolean"}},required:["assetId","previousDisplayName","displayName","stageActive","renamed"],additionalProperties:!1},xy={type:"object",properties:{kind:{type:"string",enum:["scene-object","marker"]},id:{type:"string",minLength:1},label:{type:"string"}},required:["kind","id"],additionalProperties:!1},_O={type:"object",properties:{kind:{type:"string",enum:["scene-object","marker"]},id:{type:"string",minLength:1}},required:["kind","id"],additionalProperties:!1},Oy={type:"object",properties:{r:{type:"number",minimum:0,maximum:1},g:{type:"number",minimum:0,maximum:1},b:{type:"number",minimum:0,maximum:1}},required:["r","g","b"],additionalProperties:!1},oK={type:"object",properties:{origin:Z,forward:Z,right:Z,up:Z,label:{type:"string"},description:{type:"string"}},required:["origin"],additionalProperties:!1},iK={oneOf:[{type:"object",properties:{kind:{const:"box"}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{const:"point"},coordinateSpace:{type:"string",enum:["world","local"]},position:Z,offset:Z,target:xy},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{const:"object-bounds"},target:xy},required:["kind","target"],additionalProperties:!1},{type:"object",properties:{kind:{const:"polyhedron"},coordinateSpace:{const:"world"},vertices:{type:"array",items:Z},faces:{type:"array",items:{type:"array",items:{type:"number",minimum:0}}}},required:["kind","vertices"],additionalProperties:!1}]},aK={type:"object",properties:{schemaVersion:{const:1},type:{type:"string",minLength:1},kind:{type:"string",minLength:1},tags:{type:"array",items:{type:"string"}},note:{type:"string"},color:Oy,target:xy,semanticFrame:oK,geometry:iK,metadata:{type:"object",additionalProperties:!0}},required:["schemaVersion","type","geometry"],additionalProperties:!1},sK={type:"string",enum:["root","group","model","primitive","light","prefabInstance","marker","collision"]},_d={type:"object",properties:{nodeId:{type:"string"},guid:{type:"string"},name:{type:"string"},parentNodeId:{anyOf:[{type:"string"},{type:"null"}]},kind:sK,path:{type:"string"},transform:kd,sourceAssetId:{type:"string"},sourceNodePath:{type:"string"},childPrefabId:{type:"string"},primitive:{type:"object",properties:{shape:{type:"string"}},required:["shape"],additionalProperties:!0},marker:aK,defaults:{type:"object",additionalProperties:!0},overrides:{type:"object",additionalProperties:!0},readonly:{type:"boolean"},diagnostics:{type:"array",items:Ae}},required:["nodeId","kind"],additionalProperties:!1},cK={type:"object",properties:{assetId:{type:"string"},prefabAssetId:{type:"string"},includeSourceSummary:{type:"boolean"},includeMaterialSlots:{type:"boolean"},cursor:{type:"string",minLength:1},limit:{type:"integer",minimum:1,maximum:1e3}},oneOf:[{required:["assetId"],not:{required:["prefabAssetId"]}},{required:["prefabAssetId"],not:{required:["assetId"]}},{not:{anyOf:[{required:["assetId"]},{required:["prefabAssetId"]}]}}],additionalProperties:!1},dK={type:"object",properties:{stage:mo,prefab:rp,revision:{type:"integer",minimum:0},rootNodeId:{type:"string"},selectedNodeId:{anyOf:[{type:"string"},{type:"null"}]},nodes:{type:"array",items:_d},diagnostics:{type:"array",items:Ae},totalCount:{type:"integer",minimum:0},returnedCount:{type:"integer",minimum:0},nextCursor:{type:"string"}},required:["stage","prefab","revision","rootNodeId","selectedNodeId","nodes","totalCount","returnedCount"],additionalProperties:!1},lK={type:"object",properties:{nodeId:{type:"string"}},required:["nodeId"],additionalProperties:!1},uK={type:"object",properties:{stage:mo,selectedNodeId:{type:"string"},node:_d},required:["stage","selectedNodeId","node"],additionalProperties:!1},mK={type:"object",properties:{prefabAssetId:{type:"string"},assetId:{type:"string"},parentNodeId:{type:"string"},name:{type:"string"},sourceNodePath:{type:"string"},position:Z,rotation:Z,scale:Z,select:{type:"boolean"}},required:["assetId"],additionalProperties:!1},pK={type:"object",properties:{prefabAssetId:{type:"string"},shape:{type:"string",enum:["cube","sphere","plane","capsule"]},parentNodeId:{type:"string"},name:{type:"string"},position:Z,rotation:Z,scale:Z,select:{type:"boolean"}},required:["shape"],additionalProperties:!1},fK={type:"object",properties:{prefabAssetId:{type:"string"},parentNodeId:{type:"string"},name:{type:"string"},position:Z,rotation:Z,scale:Z,select:{type:"boolean"}},additionalProperties:!1},gK={type:"object",properties:{parentNodeId:{type:"string"},name:{type:"string"},type:{type:"string",minLength:1},target:_O,tags:{type:"array",items:{type:"string"}},note:{type:"string"},color:Oy,position:Z,rotation:Z,scale:Z,select:{type:"boolean"}},required:["type"],additionalProperties:!1},SK={type:"object",properties:{nodeId:{type:"string",minLength:1},type:{type:"string",minLength:1},target:{anyOf:[_O,{type:"null"}]},tags:{type:"array",items:{type:"string"}},note:{anyOf:[{type:"string"},{type:"null"}]},color:{anyOf:[Oy,{type:"null"}]}},required:["nodeId"],anyOf:[{required:["type"]},{required:["target"]},{required:["tags"]},{required:["note"]},{required:["color"]}],additionalProperties:!1},Qo={type:"object",properties:{stage:mo,changed:{type:"boolean"},createdNodeId:{type:"string"},changedNodeId:{type:"string"},deletedNodeIds:{type:"array",items:{type:"string"}},selectedNodeId:{anyOf:[{type:"string"},{type:"null"}]},node:{anyOf:[_d,{type:"null"}]},rootNodeId:{type:"string"},nodes:{type:"array",items:_d},status:{type:"string"},diagnostics:{type:"array",items:Ae}},required:["stage","changed","selectedNodeId","rootNodeId","nodes","status"],additionalProperties:!1},hK={type:"object",properties:{assetId:{type:"string"},nodeId:{type:"string"},position:Z,rotation:Z,scale:Z},required:["nodeId"],anyOf:[{required:["position"]},{required:["rotation"]},{required:["scale"]}],additionalProperties:!1},yK={type:"object",properties:{assetId:{type:"string"},nodeId:{type:"string"},name:{type:"string",minLength:1,maxLength:80}},required:["nodeId","name"],additionalProperties:!1},bK={type:"object",properties:{nodeId:{type:"string"},previousName:{type:"string"},name:{type:"string"},selectedNodeId:{anyOf:[{type:"string"},{type:"null"}]},nodes:{type:"array",items:_d}},required:["nodeId","previousName","name","selectedNodeId","nodes"],additionalProperties:!1},EK={type:"object",properties:{assetId:{type:"string"},nodeId:{type:"string"},parentNodeId:{type:"string"}},required:["nodeId","parentNodeId"],additionalProperties:!1},IK={type:"object",properties:{assetId:{type:"string"},nodeId:{type:"string"}},required:["nodeId"],additionalProperties:!1},TK={type:"object",properties:{nodeId:{type:"string"},assetId:{type:"string"}},additionalProperties:!1},PK={type:"object",properties:{assetId:{type:"string"},nodeId:{type:"string"},sourceNodePath:{type:"string"},nodeCount:{type:"number"},meshCount:{type:"number"},primitiveCount:{type:"number"},materialCount:{type:"number"},textureCount:{type:"number"},nodes:{type:"array",items:{type:"object",additionalProperties:!0}},meshes:{type:"array",items:{type:"object",additionalProperties:!0}},materials:{type:"array",items:{type:"object",additionalProperties:!0}}},additionalProperties:!0},AK={type:"object",properties:{stage:mo,nodeId:{type:"string"},assetId:{type:"string"},structure:PK,diagnostics:{type:"array",items:Ae}},required:["stage","assetId","structure"],additionalProperties:!1},xK={type:"object",properties:{ownerNodePath:{type:"string"},nodeIndex:{type:"number"},nodeIndexPath:{type:"array",items:{type:"number"}},meshIndex:{type:"number"},primitiveIndex:{type:"number"},sourceMaterialIndex:{type:"number"},sourceMeshName:{type:"string"},triangleCount:{type:"number"},boundingBox:{type:"object",additionalProperties:!0}},required:["ownerNodePath","meshIndex","primitiveIndex"],additionalProperties:!1},MK={type:"object",properties:{slotId:{type:"string"},label:{type:"string"},sourceSurfaces:{type:"array",items:xK},materialName:{type:"string"},materialNames:{type:"array",items:{type:"string"}},bindingPath:{type:"string"},materialAssetIdPath:{type:"string"},editable:{type:"boolean"},readonlyReason:{type:"string"}},required:["label","sourceSurfaces","editable"],additionalProperties:!0},DK={type:"object",properties:{nodeId:{type:"string"},assetId:{type:"string"},includeReadonly:{type:"boolean"}},additionalProperties:!1},RK={type:"object",properties:{stage:mo,nodeId:{type:"string"},assetId:{type:"string"},slots:{type:"array",items:MK},diagnostics:{type:"array",items:Ae}},required:["stage","slots"],additionalProperties:!1},np={type:"string",enum:["scene","prefab"]},jd={type:"object",properties:{id:{type:"string"},name:{type:"string"},shaderId:{type:"string"},properties:{type:"object",additionalProperties:!0},origin:{type:"object",additionalProperties:!0}},required:["id","name","shaderId","properties"],additionalProperties:!1},OK={type:"object",properties:{query:{type:"string"},path:{type:"string"},shaderId:{type:"string"},cursor:{type:"string"},limit:{type:"number",minimum:1,maximum:200}},additionalProperties:!1},CK={type:"object",properties:{items:{type:"array",items:jd},total:{type:"number"},nextCursor:{type:"string"}},required:["items","total"],additionalProperties:!1},wK={type:"object",properties:{materialAssetId:{type:"string"}},required:["materialAssetId"],additionalProperties:!1},vK={type:"object",properties:{asset:jd,referenceCount:{type:"number"}},required:["asset","referenceCount"],additionalProperties:!1},kK={type:"object",properties:{shaderId:{type:"string"},name:{type:"string"}},required:["shaderId"],additionalProperties:!1},_K={type:"object",properties:{asset:jd,changed:{type:"boolean"},revision:{type:"number"}},required:["asset","changed","revision"],additionalProperties:!1},NK={type:"object",properties:{materialAssetId:{type:"string"},name:{type:"string"}},required:["materialAssetId","name"],additionalProperties:!1},jK={type:"object",properties:{asset:jd,changed:{type:"boolean"},revision:{type:"number"}},required:["asset","changed","revision"],additionalProperties:!1},GK={type:"object",properties:{materialAssetId:{type:"string"},shaderId:{type:"string"},allowReset:{type:"boolean"}},required:["materialAssetId","shaderId"],additionalProperties:!1},LK={type:"object",properties:{asset:jd,previousShaderId:{type:"string"},changed:{type:"boolean"},revision:{type:"number"},preservedPaths:{type:"array",items:{type:"string"}},resetPaths:{type:"array",items:{type:"string"}}},required:["asset","previousShaderId","changed","revision","preservedPaths","resetPaths"],additionalProperties:!1},NO={type:"object",properties:{shaderId:{type:"string"},version:{type:"number"},runtimeKind:{type:"string"},displayName:{type:"string"},builtin:{type:"boolean"},sourceFile:{type:"string"},sectionCount:{type:"number"},fieldCount:{type:"number"}},required:["shaderId","version","runtimeKind","displayName","builtin","sectionCount","fieldCount"],additionalProperties:!1},FK={type:"object",properties:{query:{type:"string"},builtin:{type:"boolean"},cursor:{type:"string"},limit:{type:"number",minimum:1,maximum:200}},additionalProperties:!1},$K={type:"object",properties:{items:{type:"array",items:NO},total:{type:"number"},nextCursor:{type:"string"}},required:["items","total"],additionalProperties:!1},BK={type:"object",properties:{shaderId:{type:"string"}},required:["shaderId"],additionalProperties:!1},zK={type:"object",properties:{definition:{type:"object",properties:{...NO.properties,propertiesSchema:{type:"object",additionalProperties:!0},defaultProperties:{type:"object",additionalProperties:!0},inspector:{type:"object",additionalProperties:!0}},required:["shaderId","version","runtimeKind","displayName","builtin","sectionCount","fieldCount","propertiesSchema","defaultProperties","inspector"],additionalProperties:!1}},required:["definition"],additionalProperties:!1},UK={type:"object",properties:{objectId:{type:"string"},shaderId:{type:"string"},materialAssetId:{type:"string"},frameMode:{type:"string",enum:["on-demand","continuous"]},effectiveVisible:{type:"boolean"}},required:["objectId","shaderId","frameMode","effectiveVisible"],additionalProperties:!1},VK={type:"object",properties:{objectId:{type:"string"},shaderId:{type:"string"},frameMode:{type:"string",enum:["on-demand","continuous"]},cursor:{type:"string"},limit:{type:"number",minimum:1,maximum:200}},additionalProperties:!1},HK={type:"object",properties:{items:{type:"array",items:UK},total:{type:"number"},nextCursor:{type:"string"},frameDemand:{type:"object",properties:{continuous:{type:"boolean"},continuousParticipantCount:{type:"number"}},required:["continuous","continuousParticipantCount"],additionalProperties:!1}},required:["items","total","frameDemand"],additionalProperties:!1},KK={type:"object",properties:{scope:np,kind:{type:"string",enum:["root","slot"]},materialAssetId:{type:"string"},objectId:{type:"string"},objectName:{type:"string"},prefabAssetId:{type:"string"},nodeId:{type:"string"},slotId:{type:"string"},bindingPath:{type:"string"},label:{type:"string"}},required:["scope","kind","materialAssetId","bindingPath","label"],additionalProperties:!1},WK={type:"object",properties:{materialAssetId:{type:"string"},scope:np,cursor:{type:"string"},limit:{type:"number",minimum:1,maximum:200}},required:["materialAssetId"],additionalProperties:!1},qK={type:"object",properties:{materialAssetId:{type:"string"},items:{type:"array",items:KK},total:{type:"number"},nextCursor:{type:"string"}},required:["materialAssetId","items","total"],additionalProperties:!1},Cy={type:"object",properties:{scope:np,objectId:{type:"string"},prefabAssetId:{type:"string"},nodeId:{type:"string"},slotId:{type:"string"}},required:["scope"],additionalProperties:!1},jO={type:"object",properties:{target:Cy,kind:{type:"string",enum:["root","slot"]},bindingPath:{type:"string"},authoredMaterialAssetId:{anyOf:[{type:"string"},{type:"null"}]},effectiveMaterialAssetId:{type:"string"},resolvedSource:{type:"string",enum:["authored","prefab-node","prefab-root","default"]}},required:["target","kind","bindingPath","authoredMaterialAssetId","effectiveMaterialAssetId","resolvedSource"],additionalProperties:!1},YK={type:"object",properties:{scope:np,objectId:{type:"string"},prefabAssetId:{type:"string"},nodeId:{type:"string"},cursor:{type:"string"},limit:{type:"number",minimum:1,maximum:200}},additionalProperties:!1},JK={type:"object",properties:{items:{type:"array",items:jO},total:{type:"number"},nextCursor:{type:"string"}},required:["items","total"],additionalProperties:!1},XK={type:"object",properties:{materialAssetId:{type:"string"},targets:{type:"array",minItems:1,maxItems:200,items:Cy}},required:["materialAssetId","targets"],additionalProperties:!1},QK={type:"object",properties:{targets:{type:"array",minItems:1,maxItems:200,items:Cy}},required:["targets"],additionalProperties:!1},RO={type:"object",properties:{changed:{type:"boolean"},changedCount:{type:"number"},revision:{type:"number"},bindings:{type:"array",items:jO}},required:["changed","changedCount","revision","bindings"],additionalProperties:!1},ZK={type:"object",properties:{materialAssetId:{type:"string"},includeSchema:{type:"boolean"}},required:["materialAssetId"],additionalProperties:!1},eW={type:"object",properties:{materialAssetId:{type:"string"},shaderId:{type:"string"},properties:{type:"object",additionalProperties:!0},defaults:{type:"object",additionalProperties:!0},schema:{type:"object",additionalProperties:!0}},required:["materialAssetId","shaderId","properties","defaults"],additionalProperties:!1},tW={type:"object",properties:{path:{type:"string"},value:{},reset:{type:"boolean"}},required:["path"],additionalProperties:!1},rW={type:"object",properties:{materialAssetId:{type:"string"},changes:{type:"array",minItems:1,maxItems:100,items:tW}},required:["materialAssetId","changes"],additionalProperties:!1},nW={type:"object",properties:{materialAssetId:{type:"string"},shaderId:{type:"string"},changed:{type:"boolean"},changedPaths:{type:"array",items:{type:"string"}},revision:{type:"number"},properties:{type:"object",additionalProperties:!0}},required:["materialAssetId","shaderId","changed","changedPaths","revision","properties"],additionalProperties:!1},Rn={type:"object",properties:{selectedIds:{type:"array",items:{type:"string"}},activeId:{anyOf:[{type:"string"},{type:"null"}]}},required:["selectedIds","activeId"],additionalProperties:!1},aa={type:"object",properties:{id:{type:"string"},name:{type:"string"},label:{type:"string"},type:{type:"string"},sourceAssetId:{type:"string"},path:{type:"string"},parentId:{anyOf:[{type:"string"},{type:"null"}]},selectable:{type:"boolean"},locked:{type:"boolean"},transform:kd,bounds:Dy},required:["id"],additionalProperties:!1},oW={type:"object",properties:{includeUnselectable:{type:"boolean"},name:{type:"string"},type:{type:"string"},parentId:{anyOf:[{type:"string"},{type:"null"}]},sourceAssetId:{type:"string"},query:{type:"string"},cursor:{type:"string",minLength:1},limit:{type:"integer",minimum:1,maximum:1e3}},additionalProperties:!1},iW={type:"object",properties:{objects:{type:"array",items:aa},totalCount:{type:"integer",minimum:0},returnedCount:{type:"integer",minimum:0},nextCursor:{type:"string"}},required:["objects","totalCount","returnedCount"],additionalProperties:!1},aW={type:"object",properties:{objectId:{type:"string"},name:{type:"string"},path:{type:"string"},type:{type:"string"},query:{type:"string"},includeUnselectable:{type:"boolean"}},additionalProperties:!1},sW={type:"object",properties:{objects:{type:"array",items:aa},resolvedObject:{anyOf:[aa,{type:"null"}]},ambiguous:{type:"boolean"}},required:["objects","resolvedObject","ambiguous"],additionalProperties:!1},cW={type:"object",properties:{objectId:{type:"string"},objectIds:{type:"array",items:{type:"string"}},activeId:{anyOf:[{type:"string"},{type:"null"}]}},oneOf:[{required:["objectId"],not:{required:["objectIds"]}},{required:["objectIds"],not:{required:["objectId"]}}],additionalProperties:!1},dW={type:"object",properties:{selection:Rn},required:["selection"],additionalProperties:!1},po={objectId:{type:"string"},nodeId:{type:"string"},assetId:{type:"string"}},Yr={type:"object",properties:po,additionalProperties:!1},lW={type:"string",enum:["inherit","none","enabled","auto"]},GO={type:"string",enum:["inherit","none","enabled","auto"]},uW={type:"string",enum:["inherit","none","dynamic","static","blob","projected","auto"]},LO={type:"string",enum:["inherit","low","medium","high","ultra"]},FO={type:"string",enum:["inherit","scene-main","nearest","explicit"]},mW={type:"object",properties:{opacity:{type:"number",minimum:0,maximum:1},softness:{type:"number",minimum:0,maximum:1},bias:{type:"number"},normalBias:{type:"number"},maxDistance:{type:"number",minimum:0},resolution:{type:"number",enum:[512,1024,2048,4096]},cascadeCount:{type:"number",enum:[1,2,4]},bakeSamples:{type:"number",minimum:1},blurKernel:{type:"number",minimum:0}},additionalProperties:!1},Zo={type:"object",properties:{cast:lW,receive:GO,mode:uW,quality:LO,light:{type:"object",properties:{mode:FO,lightId:{type:"string"}},additionalProperties:!1},params:mW},additionalProperties:!1},pW={type:"object",properties:{opacity:{type:"number"},softness:{type:"number"},bias:{type:"number"},normalBias:{type:"number"},maxDistance:{type:"number"},resolution:{type:"number",enum:[512,1024,2048,4096]},cascadeCount:{type:"number",enum:[1,2,4]},bakeSamples:{type:"number"},blurKernel:{type:"number"}},required:["opacity","softness","bias","normalBias","maxDistance","resolution","cascadeCount","bakeSamples","blurKernel"],additionalProperties:!1},Gd={type:"object",properties:{casterId:{type:"string"},receiverIds:{type:"array",items:{type:"string"}},lightId:{type:"string"},backend:{type:"string",enum:["none","dynamic-map","static-baked","blob","projected"]},mode:{type:"string",enum:["none","dynamic","static","blob","projected"]},quality:{type:"string",enum:["low","medium","high","ultra"]},params:pW,stale:{type:"boolean"},diagnostics:{type:"array",items:Ae}},required:["casterId","receiverIds","backend","mode","quality","params","diagnostics"],additionalProperties:!1},wy={type:"object",properties:{receiverId:{type:"string"},source:{type:"string",enum:["explicit","prefab","auto","scene-default"]},score:{type:"number"},bounds:Dy,boundsCenter:Z,active:{type:"boolean"},visible:{type:"boolean"},receive:GO,suitability:{type:"object",properties:{score:{type:"number"},overlap:{type:"number"},distance:{type:"number"},material:{type:"string"},light:{type:"string"},reasons:{type:"array",items:{type:"string"}}},additionalProperties:!1},diagnostics:{type:"array",items:Ae}},required:["receiverId","source","score"],additionalProperties:!1},$O={type:"object",properties:{objectId:{type:"string"},nodeId:{type:"string"},label:{type:"string"},kind:{type:"string"},active:{type:"boolean"},visible:{type:"boolean"},bounds:Dy,transform:kd,diagnostics:{type:"array",items:Ae}},additionalProperties:!1},BO={type:"object",properties:{lightId:{type:"string"},label:{type:"string"},type:{type:"string"},mode:FO,direction:Z,directionSource:{type:"string",enum:["light.direction","transform.rotation","unknown"]},orientationDiagnostics:{type:"array",items:Ae},position:Z,intensity:{type:"number"},diagnostics:{type:"array",items:Ae}},additionalProperties:!1},zO={type:"object",properties:{kind:{type:"string",enum:["none","estimated","artifact","unknown"]},receiverId:{type:"string"},center:Z,size:Z,normal:Z,direction:Z,area:{type:"number"},confidence:{type:"number",minimum:0,maximum:1},diagnostics:{type:"array",items:Ae}},required:["kind","confidence"],additionalProperties:!1},fW={type:"object",properties:{backend:{type:"string"},renderableShadowPrimitiveCount:{type:"number"},casterRuntimeObjectCount:{type:"number"},receiverRuntimeObjectCount:{type:"number"},shadowMapExperiment:{type:"object",properties:{enabled:{type:"boolean"},planRevision:{type:["number","null"]},lightEntityId:{type:["string","null"]},generatorAllocated:{type:"boolean"},resolution:{type:["number","null"]},mapResolutions:{type:["object","null"],properties:{static:{type:"number"},dynamic:{type:"number"},composite:{type:"number"}},required:["static","dynamic","composite"],additionalProperties:!1},configuredMapResolutions:{type:["object","null"],properties:{static:{type:"number"},dynamic:{type:"number"},composite:{type:"number"}},required:["static","dynamic","composite"],additionalProperties:!1},diagnosticThresholds:{type:["object","null"],properties:{staticCasterCountWarning:{type:"number"},dynamicCasterCountWarning:{type:"number"},renderableCountWarning:{type:"number"}},required:["staticCasterCountWarning","dynamicCasterCountWarning","renderableCountWarning"],additionalProperties:!1},filter:{type:["string","null"],enum:["hard","low-pcf",null]},renderListCount:{type:"number"},receiverMeshCount:{type:"number"},boundMeshCount:{type:"number"},backend:{type:["string","null"],enum:["split-static-dynamic","single-map","single-map-fallback",null]},fallbackReason:{type:["string","null"]},fallbackWarningEmitted:{type:"boolean"},depth:{type:["object","null"],properties:{backend:{type:"string",enum:["split-static-dynamic","single-map","single-map-fallback"]},fallbackReason:{type:["string","null"]},receiverFilter:{type:"string",enum:["hard","poisson-low-pcf","native-low-pcf","native-soft-kernel","native-contact-hardening"]},gpuCapability:{type:"object",properties:{engine:{type:"string",enum:["webgl","webgpu"]},fragmentDepthSupported:{type:"boolean"},nativeShadowComparison:{type:"boolean"},fullFloatRender:{type:"boolean"},fullFloatLinearFiltering:{type:"boolean"},maxRenderTextureSize:{type:"number"},halfFloatRender:{type:"boolean"},halfFloatLinearFiltering:{type:"boolean"},splitSupported:{type:"boolean"}},required:["engine","maxRenderTextureSize","halfFloatRender","halfFloatLinearFiltering","splitSupported"],additionalProperties:!1},textureFormat:{type:"string",enum:["r-half-float","r-full-float","single-map"]},static:{type:"object",properties:{resolution:{type:"number"},candidateMeshCount:{type:"number"},retainedMeshCount:{type:"number"},culledMeshCount:{type:"number"},renderListCount:{type:"number"},refreshCount:{type:"number"},renderCount:{type:"number"},lastRefreshReasons:{type:"array",items:{type:"string"}}},required:["resolution","candidateMeshCount","retainedMeshCount","culledMeshCount","renderListCount","refreshCount","renderCount","lastRefreshReasons"],additionalProperties:!1},dynamic:{type:"object",properties:{resolution:{type:"number"},candidateMeshCount:{type:"number"},retainedMeshCount:{type:"number"},culledMeshCount:{type:"number"},renderListCount:{type:"number"},refreshCount:{type:"number"},renderCount:{type:"number"},lastRefreshReasons:{type:"array",items:{type:"string"}}},required:["resolution","candidateMeshCount","retainedMeshCount","culledMeshCount","renderListCount","refreshCount","renderCount","lastRefreshReasons"],additionalProperties:!1},compositeResolution:{type:"number"},compositeRefreshCount:{type:"number"},compositeRenderCount:{type:"number"},compositorReady:{type:"boolean"}},required:["backend","fallbackReason","receiverFilter","gpuCapability","textureFormat","static","dynamic","compositeResolution","compositeRefreshCount","compositeRenderCount","compositorReady"],additionalProperties:!1},culling:{type:"object",properties:{enabled:{type:"boolean"},guardBandRatio:{type:"number"},coverageRevision:{type:"number"},cameraId:{type:["string","null"]},projectionSignature:{type:["string","null"]},coverage:{type:["object","null"],properties:{min:{type:"array",items:{type:"number"},minItems:3,maxItems:3},max:{type:"array",items:{type:"number"},minItems:3,maxItems:3}},required:["min","max"],additionalProperties:!1},conservative:{type:"boolean"},rebuildCount:{type:"number"},stable:{type:"boolean"},lastInvalidationReason:{type:["string","null"]},coverageMode:{type:"string",enum:["fixed","scene-fit"]},authoredCenter:{type:["array","null"],items:{type:"number"},minItems:3,maxItems:3},effectiveCenter:{type:["array","null"],items:{type:"number"},minItems:3,maxItems:3},authoredExtent:{type:["array","null"],items:{type:"number"},minItems:3,maxItems:3},effectiveExtent:{type:["array","null"],items:{type:"number"},minItems:3,maxItems:3},anchor:{type:["array","null"],items:{type:"number"},minItems:3,maxItems:3}},required:["enabled","guardBandRatio","coverageRevision","cameraId","projectionSignature","coverage","conservative","rebuildCount","stable","lastInvalidationReason"],additionalProperties:!1},activity:{type:"object",properties:{trackedEntityStateCount:{type:"number"},registeredActivitySourceCount:{type:"number"},activeActivitySourceCount:{type:"number"},pendingActivitySourceCount:{type:"number"},activeActivityCasterCount:{type:"number"},activeActivityKindCounts:{type:"object",additionalProperties:{type:"number"}},pendingDirtyReasons:{type:"array",items:{type:"string"}},untrackedDynamicCasterCount:{type:"number"},untrackedDynamicCasterEntityIds:{type:"array",items:{type:"string"}},sources:{type:"array",items:{type:"object",additionalProperties:!0}}},required:["trackedEntityStateCount","registeredActivitySourceCount","activeActivitySourceCount","pendingActivitySourceCount","activeActivityCasterCount","activeActivityKindCounts","pendingDirtyReasons","untrackedDynamicCasterCount","untrackedDynamicCasterEntityIds","sources"],additionalProperties:!1},refreshCount:{type:"number"},lastRefreshReasons:{type:"array",items:{type:"string"}},worldUnitsPerTexel:{type:["array","null"],items:{type:"number"}},worldUnitsPerTexelByMap:{type:["object","null"],properties:{static:{type:"array",items:{type:"number"},minItems:2,maxItems:2},dynamic:{type:"array",items:{type:"number"},minItems:2,maxItems:2},composite:{type:"array",items:{type:"number"},minItems:2,maxItems:2}},required:["static","dynamic","composite"],additionalProperties:!1},registry:{},diagnostics:{type:"array",items:{type:"object",additionalProperties:!0}}},required:["enabled","planRevision","lightEntityId","generatorAllocated","resolution","mapResolutions","configuredMapResolutions","diagnosticThresholds","filter","renderListCount","receiverMeshCount","boundMeshCount","backend","fallbackReason","fallbackWarningEmitted","depth","culling","activity","refreshCount","lastRefreshReasons","worldUnitsPerTexel","worldUnitsPerTexelByMap","registry","diagnostics"],additionalProperties:!1},planar:{type:"object",properties:{strategy:{type:"string",enum:["auto","projected-mesh","convex-hull"]},sourceMeshCount:{type:"number"},projectedMeshCount:{type:"number"},convexHullMeshCount:{type:"number"},alphaCutoutMeshCount:{type:"number"},instancedCasterCount:{type:"number"},batchMeshCount:{type:"number"},instancedBatchIds:{type:"array",items:{type:"string"}},instancedBatchNames:{type:"array",items:{type:"string"}},independentProjectedMeshCount:{type:"number"},visibleInstanceCount:{type:"number"},alphaCutoutChannels:{type:"array",items:{type:"string",enum:["alpha","luminance","red"]}},alphaCutoutUvSets:{type:"array",items:{type:"number"}},alphaCutoutLevels:{type:"array",items:{type:"number"}},fallbackReasons:{type:"array",items:{type:"string"}},instancingFallbackReasons:{type:"array",items:{type:"string"}},casters:{type:"array",items:{type:"object",properties:{sourceName:{type:"string"},sourceMeshNames:{type:"array",items:{type:"string"}},sourceNodeId:{type:"string"},sourceNodeIds:{type:"array",items:{type:"string"}},shadowName:{type:"string"},strategy:{type:"string",enum:["auto","projected-mesh","convex-hull"]},hasSkeleton:{type:"boolean"},projectedMeshCount:{type:"number"},convexHullMeshCount:{type:"number"},alphaCutoutMeshCount:{type:"number"},instancedCasterCount:{type:"number"},batchMeshCount:{type:"number"},instancedBatchIds:{type:"array",items:{type:"string"}},instancedBatchNames:{type:"array",items:{type:"string"}},independentProjectedMeshCount:{type:"number"},visibleInstanceCount:{type:"number"},alphaCutoutChannels:{type:"array",items:{type:"string",enum:["alpha","luminance","red"]}},fallbackReasons:{type:"array",items:{type:"string"}},instancingFallbackReasons:{type:"array",items:{type:"string"}}},required:["sourceName","shadowName","strategy","hasSkeleton","projectedMeshCount","convexHullMeshCount","alphaCutoutMeshCount"],additionalProperties:!1}}},additionalProperties:!1},artifactId:{type:"string"},artifactStale:{type:"boolean"},diagnostics:{type:"array",items:Ae}},additionalProperties:!1},gW={type:"object",properties:Yr.properties,additionalProperties:!1},SW={type:"object",properties:{target:Yr,policy:Zo,effectivePolicy:Zo,plan:Gd,diagnostics:{type:"array",items:Ae}},required:["target","effectivePolicy","plan"],additionalProperties:!1},hW={type:"object",properties:{...po,policy:Zo},required:["policy"],additionalProperties:!1},yW={type:"object",properties:{target:Yr,changed:{type:"boolean"},policy:Zo,effectivePolicy:Zo,plan:Gd,diagnostics:{type:"array",items:Ae}},required:["target","changed","effectivePolicy","plan"],additionalProperties:!1},vy={scope:{type:"string",enum:["scene","object","prefab-node"]},objectId:{type:"string"},nodeId:{type:"string"},prefabAssetId:{type:"string"}},bW={type:"object",properties:vy,required:["scope"],additionalProperties:!1},EW={type:"object",additionalProperties:!1},IW={type:"object",properties:{configured:{type:"boolean"},readonly:{type:"boolean"},config:{type:["object","null"],additionalProperties:!0},qualityProfileIds:{type:"array",items:{type:"string"}},behaviorProfileIds:{type:"array",items:{type:"string"}}},required:["configured","readonly","config","qualityProfileIds","behaviorProfileIds"],additionalProperties:!1},TW={type:"object",properties:vy,required:["scope"],additionalProperties:!1},UO={type:"object",properties:{target:bW,authored:{type:"object",properties:{qualityProfile:{type:["string","null"]},behaviorProfile:{type:["string","null"]}},required:["qualityProfile","behaviorProfile"],additionalProperties:!1},effective:{type:"object",properties:{qualityProfileId:{type:["string","null"]},behaviorProfileId:{type:["string","null"]},cast:{type:["boolean","null"]},receive:{type:["boolean","null"]},updateClass:{type:["string","null"],enum:["static","dynamic","skinned",null]}},required:["qualityProfileId","behaviorProfileId","cast","receive","updateClass"],additionalProperties:!1},qualityProfileIds:{type:"array",items:{type:"string"}},behaviorProfileIds:{type:"array",items:{type:"string"}}},required:["target","authored","effective","qualityProfileIds","behaviorProfileIds"],additionalProperties:!1},PW={type:"object",properties:{...vy,qualityProfile:{type:["string","null"]},behaviorProfile:{type:["string","null"]}},required:["scope"],additionalProperties:!1},AW={type:"object",properties:{changed:{type:"boolean"},policy:UO},required:["changed","policy"],additionalProperties:!1},xW={type:"object",additionalProperties:!1},MW={type:"object",properties:{plan:{type:["object","null"],additionalProperties:!0}},required:["plan"],additionalProperties:!1},DW={type:"object",additionalProperties:!1},RW={type:"object",properties:{snapshot:{type:["object","null"],additionalProperties:!0}},required:["snapshot"],additionalProperties:!1},OW={type:"object",properties:{objectId:{type:"string"},nodeId:{type:"string"},includeAuto:{type:"boolean"}},additionalProperties:!1},CW={type:"object",properties:{receivers:{type:"array",items:wy},diagnostics:{type:"array",items:Ae}},required:["receivers"],additionalProperties:!1},wW={type:"object",properties:{...po,policy:Zo,receiverIds:{type:"array",items:{type:"string"}}},additionalProperties:!1},vW={type:"object",properties:{target:Yr,plan:Gd,caster:$O,light:BO,footprint:zO,receivers:{type:"array",items:wy},diagnostics:{type:"array",items:Ae}},required:["target","plan"],additionalProperties:!1},kW={type:"object",properties:{...po,receiverIds:{type:"array",items:{type:"string"}},quality:LO,force:{type:"boolean"}},additionalProperties:!1},_W={type:"object",properties:{target:Yr,baked:{type:"boolean"},plan:Gd,artifactId:{type:"string"},stale:{type:"boolean"},diagnostics:{type:"array",items:Ae}},required:["target","baked","plan","stale"],additionalProperties:!1},NW={type:"object",properties:po,additionalProperties:!1},jW={type:"object",properties:{target:Yr,invalidated:{type:"boolean"},stale:{type:"boolean"},diagnostics:{type:"array",items:Ae}},required:["target","invalidated","stale"],additionalProperties:!1},GW={type:"object",properties:po,additionalProperties:!1},VO={type:"object",properties:{target:Yr,caster:$O,policy:Zo,effectivePolicy:Zo,plan:Gd,light:BO,receivers:{type:"array",items:wy},footprint:zO,runtimeEvidence:fW,diagnostics:{type:"array",items:Ae}},required:["target","plan","receivers","footprint","runtimeEvidence"],additionalProperties:!1},LW={type:"object",properties:{...po,showCasterBounds:{type:"boolean"},showReceiverBounds:{type:"boolean"},showLightDirection:{type:"boolean"},showFootprint:{type:"boolean"},showArtifactBounds:{type:"boolean"},receiverIds:{type:"array",items:{type:"string"}}},additionalProperties:!1},FW={type:"object",properties:{enabled:{type:"boolean"},target:Yr,overlayIds:{type:"array",items:{type:"string"}},diagnostics:{type:"array",items:Ae}},required:["enabled","overlayIds"],additionalProperties:!1},$W={type:"object",properties:{},additionalProperties:!1},BW={type:"object",properties:{cleared:{type:"boolean"},diagnostics:{type:"array",items:Ae}},required:["cleared"],additionalProperties:!1},zW={type:"object",properties:{...po,receiverIds:{type:"array",items:{type:"string"}}},additionalProperties:!1},HO={type:"object",properties:{target:Yr,visible:{type:"boolean"},visibleScore:{type:"number",minimum:0,maximum:1},coverage:{type:"number",minimum:0,maximum:1},contrastDelta:{type:"number"},renderableShadowPrimitiveCount:{type:"number"},measurementKind:{type:"string",enum:["pixel-readback","structural"]},diagnostics:{type:"array",items:Ae}},required:["target","visible","visibleScore","coverage","renderableShadowPrimitiveCount","measurementKind"],additionalProperties:!1},UW={type:"object",properties:{objectId:{type:"string"},position:Z,offset:Z},required:["objectId"],oneOf:[{required:["position"],not:{required:["offset"]}},{required:["offset"],not:{required:["position"]}}],additionalProperties:!1},OO={type:"object",properties:{objectId:{type:"string"},before:kd,after:kd,selection:Rn},required:["objectId","before","after","selection"],additionalProperties:!1},VW={type:"object",properties:{objectId:{type:"string"},position:Z,rotation:Z,scale:Z},required:["objectId"],anyOf:[{required:["position"]},{required:["rotation"]},{required:["scale"]}],additionalProperties:!1},HW={type:"object",properties:{objectId:{type:"string"}},required:["objectId"],additionalProperties:!1},KW={type:"object",properties:{objectId:{type:"string"},focused:{type:"boolean"}},required:["objectId","focused"],additionalProperties:!1},WW={type:"object",properties:{},additionalProperties:!1},qW={type:"object",properties:{frameStats:{type:"object",properties:{fps:{anyOf:[{type:"number"},{type:"null"}]},frameCount:{type:"number"},mode:{type:"string",enum:["idle","continuous"]},lastFrameMs:{anyOf:[{type:"number"},{type:"null"}]},activeReasons:{type:"array",items:{type:"string"}}},required:["fps","frameCount","mode","lastFrameMs","activeReasons"],additionalProperties:!1},frameDemand:{type:"object",properties:{continuous:{type:"boolean"},continuousParticipantCount:{type:"number"}},required:["continuous","continuousParticipantCount"],additionalProperties:!1},projectedNodeCount:{type:"number"},frameParticipantCount:{type:"number"}},required:["frameStats","frameDemand","projectedNodeCount","frameParticipantCount"],additionalProperties:!1},YW={type:"object",properties:{},additionalProperties:!1},JW={type:"object",properties:{focused:{type:"boolean"},selection:Rn},required:["focused","selection"],additionalProperties:!1},ky={type:"string",enum:["perspective","top","bottom","front","back","left","right","iso","threeQuarterTop"]},KO={oneOf:[{type:"object",properties:{kind:{type:"string",enum:["selection"]}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",enum:["scene"]}},required:["kind"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",enum:["object"]},objectId:{type:"string"}},required:["kind","objectId"],additionalProperties:!1},{type:"object",properties:{kind:{type:"string",enum:["point"]},point:Z},required:["kind","point"],additionalProperties:!1}]},XW={type:"object",properties:{viewPreset:ky,projectionMode:{type:"string",enum:["perspective","orthographic"]},target:Z,position:Z,alpha:{type:"number"},beta:{type:"number"},radius:{type:"number"},selection:Rn},required:["viewPreset","projectionMode","selection"],additionalProperties:!1},QW={type:"object",properties:{},additionalProperties:!1},ZW={type:"object",properties:{preset:ky,target:KO,radius:{type:"number",exclusiveMinimum:0},distanceScale:{type:"number",exclusiveMinimum:0}},required:["preset"],additionalProperties:!1},CO={type:"object",properties:{changed:{type:"boolean"},viewPreset:ky,projectionMode:{type:"string",enum:["perspective","orthographic"]},target:Z,radius:{type:"number"},selection:Rn},required:["changed","viewPreset","projectionMode","selection"],additionalProperties:!1},e2={type:"object",properties:{target:KO,yawDeltaDeg:{type:"number"},pitchDeltaDeg:{type:"number"},distanceScale:{type:"number",exclusiveMinimum:0}},additionalProperties:!1},t2={type:"object",properties:{objectId:{type:"string"},authoredVisible:{type:"boolean"},previewVisible:{type:"boolean"},overrideVisible:{type:"boolean"},isolated:{type:"boolean"},diagnostics:{type:"array",items:Ae}},required:["objectId","authoredVisible","previewVisible","isolated"],additionalProperties:!1},r2={type:"object",properties:{},additionalProperties:!1},_y={type:"object",properties:{isolated:{type:"boolean"},isolatedObjectIds:{type:"array",items:{type:"string"}},entries:{type:"array",items:t2},reason:{type:"string"},diagnostics:{type:"array",items:Ae}},required:["isolated","isolatedObjectIds","entries"],additionalProperties:!1},n2={type:"object",properties:{objectIds:{type:"array",items:{type:"string"},minItems:1},visible:{type:"boolean"},reason:{type:"string"}},required:["objectIds","visible"],additionalProperties:!1},Ay={type:"object",properties:{changed:{type:"boolean"},snapshot:_y,diagnostics:{type:"array",items:Ae}},required:["changed","snapshot"],additionalProperties:!1},o2={type:"object",properties:{...po,receiverIds:{type:"array",items:{type:"string"}},includeAmbientLights:{type:"boolean"},showOverlay:{type:"boolean"},reason:{type:"string"}},additionalProperties:!1},i2={type:"object",properties:{entered:{type:"boolean"},target:Yr,keptObjectIds:{type:"array",items:{type:"string"}},hiddenObjectIds:{type:"array",items:{type:"string"}},protectedReceiverIds:{type:"array",items:{type:"string"}},lightIds:{type:"array",items:{type:"string"}},ambientLightIds:{type:"array",items:{type:"string"}},overlayIds:{type:"array",items:{type:"string"}},snapshot:_y,inspect:VO,visibilityMeasure:HO,diagnostics:{type:"array",items:Ae}},required:["entered","target","keptObjectIds","hiddenObjectIds","protectedReceiverIds","lightIds","ambientLightIds","overlayIds","snapshot","inspect","visibilityMeasure"],additionalProperties:!1},a2={type:"object",properties:{},additionalProperties:!1},s2={type:"object",properties:{cleared:{type:"boolean"},overlayCleared:{type:"boolean"},visibilityCleared:{type:"boolean"},diagnostics:{type:"array",items:Ae}},required:["cleared","overlayCleared","visibilityCleared"],additionalProperties:!1},c2={type:"object",properties:{},additionalProperties:!1},d2={type:"object",properties:{objectIds:{type:"array",items:{type:"string"},minItems:1},includeShadowDependencies:{type:"boolean"},shadowTarget:Yr,reason:{type:"string"}},required:["objectIds"],additionalProperties:!1},l2={type:"object",properties:{objectId:{type:"string"}},additionalProperties:!1},u2={type:"object",properties:{severity:{type:"string",enum:["info","warning","error"]},phase:{type:"string",enum:["load","asset-update","projection","edit","save","run","export","runtime-resolution"]},source:{type:"string"}},additionalProperties:!1},m2={type:"object",properties:{kind:{type:"string"},id:{type:"string"},label:{type:"string"}},required:["kind"],additionalProperties:!1},WO={type:"object",properties:{scopeId:{type:"string"},objectId:{type:"string"},assetId:{type:"string"},rowId:{type:"string"},prefabAssetId:{type:"string"},prefabNodeId:{type:"string"},materialSlotId:{type:"string"},regionId:{type:"string"},sectionId:{type:"string"},path:{type:"string"}},additionalProperties:!1},p2={type:"object",properties:{id:{type:"string"},kind:{type:"string",enum:["locate","reconcile"]},label:{type:"string"},locator:WO},required:["id","kind","label"],additionalProperties:!1},f2={type:"object",properties:{code:{type:"string"},severity:{type:"string",enum:["info","warning","error"]},phase:{type:"string"},source:{type:"string"},producer:{type:"string"},message:{type:"string"},suggestion:{type:"string"},subject:m2,locator:WO,actions:{type:"array",items:p2,maxItems:16},details:{type:"object",additionalProperties:!0}},required:["code","severity","phase","source","producer","message"],additionalProperties:!1},g2={type:"object",properties:{scopeId:{type:"string"},documentRevision:{type:"number"},projectionRevision:{type:"number"},diagnostics:{type:"array",items:f2},errorCount:{type:"number"},warningCount:{type:"number"},infoCount:{type:"number"}},required:["scopeId","documentRevision","diagnostics","errorCount","warningCount","infoCount"],additionalProperties:!1},S2={type:"object",properties:{},additionalProperties:!1},h2={type:"object",properties:{id:{type:"string"},label:{type:"string"},location:{type:"string"},purpose:{type:"string"},primaryCapabilities:{type:"array",items:{type:"string"}},fallbackTools:{type:"array",items:{type:"string"}},notes:{type:"array",items:{type:"string"}}},required:["id","label","location","purpose","primaryCapabilities"],additionalProperties:!1},y2={type:"object",properties:{mode:{type:"string"},editorReady:{type:"boolean"},sessionActive:{type:"boolean"},regions:{type:"array",items:h2},recommendedOperationOrder:{type:"array",items:{type:"string"}},l0FallbackRules:{type:"array",items:{type:"string"}}},required:["mode","editorReady","sessionActive","regions","recommendedOperationOrder","l0FallbackRules"],additionalProperties:!1},b2={type:"object",properties:{includeObjects:{type:"boolean"},includeUnselectable:{type:"boolean"},objectLimit:{type:"number",minimum:0,maximum:500}},additionalProperties:!1},E2={type:"object",properties:{},additionalProperties:!1},I2={type:"object",properties:{id:{type:"string"},scope:{type:"string"},parentId:{type:"string"},state:{type:"string"}},required:["id","scope","state"],additionalProperties:!1},T2={type:"object",properties:{id:{type:"string"},type:{type:"string"},startedAt:{type:"number"},traceId:{type:"string"},transactionId:{type:"string"},sourcePluginId:{type:"string"}},required:["id","type","startedAt"],additionalProperties:!1},P2={type:"object",properties:{revision:{type:"number"},transitioning:{type:"boolean"},activeTransition:T2,application:{type:"string"},project:{type:"string"},mode:{type:"string"},document:{type:"string"},preview:{type:"string"},scopes:{type:"array",items:I2}},required:["revision","transitioning","application","project","mode","document","preview","scopes"],additionalProperties:!1},A2={type:"object",properties:{code:{type:"string"},message:{type:"string"},severity:{type:"string"},pluginId:{type:"string"}},required:["code","message","severity"],additionalProperties:!1},op={mode:{type:"string"},editorReady:{type:"boolean"},busy:{type:"boolean"},status:{type:"string"},statusTone:{type:"string"},statusDetails:{type:"string"},sessionActive:{type:"boolean"},lifecycle:P2,recentDiagnostics:{type:"array",items:A2,maxItems:5}},ip=["mode","editorReady","busy","status","sessionActive"],wO={type:"object",properties:op,required:[...ip],additionalProperties:!1},x2={type:"object",properties:{timeoutMs:{type:"number",minimum:0,maximum:6e4}},additionalProperties:!1},M2={type:"object",properties:{...op,entered:{type:"boolean"},alreadyEditor:{type:"boolean"}},required:[...ip,"entered","alreadyEditor"],additionalProperties:!1},D2={type:"object",properties:{},additionalProperties:!1},R2={type:"object",properties:{...op,saved:{type:"boolean"},runScheduled:{type:"boolean"}},required:[...ip,"saved","runScheduled"],additionalProperties:!1},O2={type:"object",properties:{},additionalProperties:!1},C2={type:"object",properties:{...op,discarded:{type:"boolean"},runScheduled:{type:"boolean"}},required:[...ip,"discarded","runScheduled"],additionalProperties:!1},w2={type:"object",properties:{timeoutMs:{type:"number",minimum:0,maximum:6e4},pollIntervalMs:{type:"number",minimum:1,maximum:1e3}},additionalProperties:!1},v2={type:"object",properties:{shape:{type:"string",enum:["cube","sphere","plane","capsule"]},name:{type:"string"},parentId:{anyOf:[{type:"string"},{type:"null"}]},activeId:{anyOf:[{type:"string"},{type:"null"}]}},required:["shape"],additionalProperties:!1},k2={type:"object",properties:{createdId:{type:"string"},object:aa,selection:Rn},required:["createdId","selection"],additionalProperties:!1},_2={type:"object",properties:{assetId:{type:"string"},name:{type:"string"},position:Z,rotation:Z,scale:Z,select:{type:"boolean"},focus:{type:"boolean"}},required:["assetId"],additionalProperties:!1},N2={type:"object",properties:{assetId:{type:"string"},createdId:{type:"string"},object:aa,selection:Rn,focused:{type:"boolean"},status:{type:"string"}},required:["assetId","createdId","selection","status"],additionalProperties:!1},j2={type:"object",properties:{objectId:{type:"string"},objectIds:{type:"array",items:{type:"string"}},activeId:{anyOf:[{type:"string"},{type:"null"}]}},oneOf:[{required:["objectId"],not:{required:["objectIds"]}},{required:["objectIds"],not:{required:["objectId"]}}],additionalProperties:!1},G2={type:"object",properties:{deletedIds:{type:"array",items:{type:"string"}},fallbackSelectionId:{anyOf:[{type:"string"},{type:"null"}]},selection:Rn},required:["deletedIds","selection"],additionalProperties:!1},L2={type:"object",properties:{objectIds:{type:"array",minItems:1,maxItems:200,uniqueItems:!0,items:{type:"string",minLength:1}},paths:{type:"array",minItems:1,maxItems:128,uniqueItems:!0,items:{type:"string",minLength:1}},includeSchema:{type:"boolean"}},required:["objectIds","paths"],additionalProperties:!1},F2={type:"object",properties:{path:{type:"string"},label:{type:"string"},valueType:{type:"string"},control:{type:"string"},readOnly:{type:"boolean"},persistence:{type:"string"},commitMode:{type:"string"},min:{type:"number"},max:{type:"number"},step:{type:"number"},precision:{type:"number"},options:{type:"array",items:{type:"object",properties:{label:{type:"string"},value:{},disabled:{type:"boolean"}},required:["label","value"],additionalProperties:!1}}},required:["path","label","valueType","control","readOnly","persistence","commitMode"],additionalProperties:!1},$2={type:"object",properties:{path:{type:"string"},value:{},present:{type:"boolean"},schema:F2},required:["path","value","present"],additionalProperties:!1},B2={type:"object",properties:{documentRevision:{type:"integer",minimum:0},objects:{type:"array",items:{type:"object",properties:{objectId:{type:"string"},properties:{type:"array",items:$2}},required:["objectId","properties"],additionalProperties:!1}},objectCount:{type:"integer",minimum:0},propertyCount:{type:"integer",minimum:0}},required:["documentRevision","objects","objectCount","propertyCount"],additionalProperties:!1},z2={type:"object",properties:{targetObjectId:{type:"string"},sourceObjectId:{type:"string"},sourceObjectName:{type:"string"},kind:{type:"string"},path:{type:"string"},relationId:{type:"string"}},required:["targetObjectId","kind","path"],additionalProperties:!1},U2={type:"object",properties:{objectId:{type:"string",minLength:1},kind:{type:"string"},cursor:{type:"string",minLength:1},limit:{type:"integer",minimum:1,maximum:1e3}},required:["objectId"],additionalProperties:!1},V2={type:"object",properties:{objectId:{type:"string"},references:{type:"array",items:z2},coverage:kO,totalCount:{type:"integer",minimum:0},returnedCount:{type:"integer",minimum:0},nextCursor:{type:"string"}},required:["objectId","references","coverage","totalCount","returnedCount"],additionalProperties:!1},H2={type:"object",properties:{targets:{type:"array",minItems:1,maxItems:5e3,items:{type:"object",properties:{objectId:{type:"string",minLength:1},changes:{type:"array",minItems:1,maxItems:128,items:{type:"object",properties:{path:{type:"string",minLength:1},value:{}},required:["path","value"],additionalProperties:!1}}},required:["objectId","changes"],additionalProperties:!1}}},required:["targets"],additionalProperties:!1},K2={type:"object",properties:{requestedObjectCount:{type:"number"},validatedPropertyCount:{type:"number"},changedObjectCount:{type:"number"},sampleChangedObjectIds:{type:"array",items:{type:"string"}}},required:["requestedObjectCount","validatedPropertyCount","changedObjectCount","sampleChangedObjectIds"],additionalProperties:!1},W2={type:"object",properties:{mode:{type:"string"},status:{type:"string"},statusTone:{type:"string"},statusDetails:{type:"string"},dirty:{type:"boolean"},busy:{type:"boolean"},selection:Rn,object:{anyOf:[aa,{type:"null"}]},diagnostics:{type:"array",items:Ae}},required:["mode","status","selection"],additionalProperties:!1},q2={type:"object",properties:{mode:{type:"string"},busy:{type:"boolean"},dirty:{type:"boolean"},status:{type:"string"},statusTone:{type:"string"},selection:Rn,objectCount:{type:"number"},objects:{type:"array",items:aa}},required:["mode","busy","dirty","status","selection","objectCount"],additionalProperties:!1},Y2={type:"object",properties:{expectedRevision:{type:"integer",minimum:0},rootId:{type:"string",minLength:1},maxDepth:{type:"integer",minimum:0},text:{type:"string"},cursor:{type:"string",minLength:1},limit:{type:"integer",minimum:1,maximum:1e3}},additionalProperties:!1},J2={type:"object",properties:{id:{type:"string"},label:{type:"string"},parentId:{anyOf:[{type:"string"},{type:"null"}]},role:{type:"string"},selectable:{type:"boolean"},canHaveChildren:{type:"boolean"},renamable:{type:"boolean"},deletable:{type:"boolean"},draggable:{type:"boolean"},authoredEnabled:{type:"boolean"},editorVisible:{type:"boolean"},editorLocked:{type:"boolean"}},required:["id","label","parentId","selectable","canHaveChildren","renamable","deletable","draggable"],additionalProperties:!1},X2={type:"object",properties:{id:{type:"string"},label:{type:"string"},description:{type:"string"},effect:{type:"string"},targetPolicy:{type:"string"},menu:{anyOf:[{type:"boolean",enum:[!1]},{type:"object",properties:{path:{type:"array",items:{type:"object",properties:{id:{type:"string"},label:{type:"string"},order:{type:"number"}},required:["id","label"],additionalProperties:!1}},group:{type:"string"},order:{type:"number"}},additionalProperties:!1}]},shortcut:{type:"string"},danger:{type:"boolean"},disabledReason:{type:"string"},payload:{type:"object",additionalProperties:!0}},required:["id","label","effect","targetPolicy"],additionalProperties:!1},Q2={type:"object",properties:{scopeKey:{type:"string"},scopeType:{type:"string"},revision:{type:"number"},title:{type:"string"},readonly:{type:"boolean"},nodes:{type:"array",items:J2},selectedIds:{type:"array",items:{type:"string"}},activeId:{anyOf:[{type:"string"},{type:"null"}]},primaryOperationId:{type:"string"},capabilities:{type:"object",additionalProperties:{type:"boolean"}},totalCount:{type:"number"},returnedCount:{type:"number"},nextCursor:{type:"string"}},required:["scopeKey","scopeType","revision","title","readonly","nodes","selectedIds","activeId","capabilities","totalCount","returnedCount"],additionalProperties:!1},Z2={type:"object",properties:{scopeKey:{type:"string"},expectedRevision:{type:"number"},contextNodeId:{anyOf:[{type:"string"},{type:"null"}]},targetIds:{type:"array",items:{type:"string"}},activeId:{anyOf:[{type:"string"},{type:"null"}]}},additionalProperties:!1},eq={type:"object",properties:{scopeKey:{type:"string"},revision:{type:"number"},operations:{type:"array",items:X2}},required:["scopeKey","revision","operations"],additionalProperties:!1},tq={type:"object",properties:{scopeKey:{type:"string"},expectedRevision:{type:"number"},operationId:{type:"string"},contextNodeId:{anyOf:[{type:"string"},{type:"null"}]},targetIds:{type:"array",items:{type:"string"}},activeId:{anyOf:[{type:"string"},{type:"null"}]},input:{type:"object",additionalProperties:!0}},required:["scopeKey","expectedRevision","operationId"],additionalProperties:!1},rq={type:"object",properties:{ok:{type:"boolean"},changed:{type:"boolean"},revision:{type:"number"},diagnostics:{type:"array",items:Ae}},required:["ok","changed","revision","diagnostics"],additionalProperties:!1},Ld={[y.ASSET_ANALYSIS_GET]:{inputSchema:WH,outputSchema:YH},[y.ASSET_INFO_GET]:{inputSchema:FH,outputSchema:$H},[y.ASSET_LIBRARY_LIST]:{inputSchema:GH,outputSchema:LH},[y.ASSET_REFERENCES_LIST]:{inputSchema:zH,outputSchema:UH},[y.AUTHORING_VALIDATION_LIST]:{inputSchema:HH,outputSchema:KH},[y.EDITOR_SNAPSHOT_GET]:{inputSchema:b2,outputSchema:q2},[y.EDITOR_STATE_GET]:{inputSchema:l2,outputSchema:W2},[y.EDITOR_DIAGNOSTICS_LIST]:{inputSchema:u2,outputSchema:g2},[y.EDITOR_UI_REGIONS_GET]:{inputSchema:S2,outputSchema:y2},[y.HOST_EDITOR_ENTER]:{inputSchema:x2,outputSchema:M2},[y.HOST_EDITOR_SAVE_AND_RUN]:{inputSchema:D2,outputSchema:R2},[y.HOST_EDITOR_DISCARD_AND_RUN]:{inputSchema:O2,outputSchema:C2},[y.HOST_EDITOR_WAIT_READY]:{inputSchema:w2,outputSchema:wO},[y.HOST_MODE_GET]:{inputSchema:E2,outputSchema:wO},[y.HIERARCHY_SCOPE_GET]:{inputSchema:Y2,outputSchema:Q2},[y.HIERARCHY_OPERATIONS_LIST]:{inputSchema:Z2,outputSchema:eq},[y.HIERARCHY_OPERATION_EXECUTE]:{inputSchema:tq,outputSchema:rq},[y.MATERIAL_ASSETS_LIST]:{inputSchema:OK,outputSchema:CK},[y.MATERIAL_ASSET_GET]:{inputSchema:wK,outputSchema:vK},[y.MATERIAL_ASSET_CREATE]:{inputSchema:kK,outputSchema:_K},[y.MATERIAL_ASSET_RENAME]:{inputSchema:NK,outputSchema:jK},[y.MATERIAL_ASSET_SET_SHADER]:{inputSchema:GK,outputSchema:LK},[y.MATERIAL_SHADER_DEFINITIONS_LIST]:{inputSchema:FK,outputSchema:$K},[y.MATERIAL_SHADER_DEFINITION_GET]:{inputSchema:BK,outputSchema:zK},[y.MATERIAL_FRAME_PARTICIPANTS_LIST]:{inputSchema:VK,outputSchema:HK},[y.MATERIAL_REFERENCES_LIST]:{inputSchema:WK,outputSchema:qK},[y.MATERIAL_BINDINGS_LIST]:{inputSchema:YK,outputSchema:JK},[y.MATERIAL_BINDING_SET]:{inputSchema:XK,outputSchema:RO},[y.MATERIAL_BINDING_CLEAR]:{inputSchema:QK,outputSchema:RO},[y.MATERIAL_PROPERTIES_GET]:{inputSchema:ZK,outputSchema:eW},[y.MATERIAL_PROPERTIES_PATCH]:{inputSchema:rW,outputSchema:nW},[y.OBJECT_CREATE_FROM_ASSET]:{inputSchema:_2,outputSchema:N2},[y.OBJECT_CREATE_PRIMITIVE]:{inputSchema:v2,outputSchema:k2},[y.OBJECT_DELETE]:{inputSchema:j2,outputSchema:G2},[y.OBJECT_PROPERTIES_GET]:{inputSchema:L2,outputSchema:B2},[y.OBJECT_PROPERTIES_PATCH_MANY]:{inputSchema:H2,outputSchema:K2},[y.OBJECT_REFERENCES_LIST]:{inputSchema:U2,outputSchema:V2},[y.OBJECT_RESOLVE]:{inputSchema:aW,outputSchema:sW},[y.PREFAB_MATERIAL_SLOTS_LIST]:{inputSchema:DK,outputSchema:RK},[y.PREFAB_ASSET_RENAME]:{inputSchema:rK,outputSchema:nK},[y.PREFAB_NODE_CREATE_FROM_ASSET]:{inputSchema:mK,outputSchema:Qo},[y.PREFAB_NODE_CREATE_GROUP]:{inputSchema:fK,outputSchema:Qo},[y.PREFAB_NODE_CREATE_MARKER]:{inputSchema:gK,outputSchema:Qo},[y.PREFAB_NODE_CREATE_PRIMITIVE]:{inputSchema:pK,outputSchema:Qo},[y.PREFAB_NODE_DELETE]:{inputSchema:IK,outputSchema:Qo},[y.PREFAB_NODE_REPARENT]:{inputSchema:EK,outputSchema:Qo},[y.PREFAB_NODE_RENAME]:{inputSchema:yK,outputSchema:bK},[y.PREFAB_NODE_SELECT]:{inputSchema:lK,outputSchema:uK},[y.PREFAB_NODE_SET_TRANSFORM]:{inputSchema:hK,outputSchema:Qo},[y.PREFAB_NODE_SET_MARKER]:{inputSchema:SK,outputSchema:Qo},[y.PREFAB_RESOLVE]:{inputSchema:JH,outputSchema:XH},[y.PREFAB_SCENE_GET]:{inputSchema:cK,outputSchema:dK},[y.PREFAB_SOURCE_STRUCTURE_GET]:{inputSchema:TK,outputSchema:AK},[y.PREFAB_STAGE_EXIT]:{inputSchema:eK,outputSchema:tK},[y.PREFAB_STAGE_OPEN]:{inputSchema:QH,outputSchema:ZH},[y.PREFAB_STAGE_SAVE]:{inputSchema:MO,outputSchema:DO},[y.PREFAB_STAGE_DISCARD]:{inputSchema:MO,outputSchema:DO},[y.SCENE_OBJECTS_LIST]:{inputSchema:oW,outputSchema:iW},[y.SELECTION_SET]:{inputSchema:cW,outputSchema:dW},[y.SHADOW_POLICY_GET]:{inputSchema:gW,outputSchema:SW},[y.SHADOW_POLICY_SET]:{inputSchema:hW,outputSchema:yW},[y.SHADOW_MAP_EXPERIMENT_CONFIG_GET]:{inputSchema:EW,outputSchema:IW},[y.SHADOW_MAP_EXPERIMENT_POLICY_GET]:{inputSchema:TW,outputSchema:UO},[y.SHADOW_MAP_EXPERIMENT_POLICY_SET]:{inputSchema:PW,outputSchema:AW},[y.SHADOW_MAP_EXPERIMENT_PLAN_PREVIEW]:{inputSchema:xW,outputSchema:MW},[y.SHADOW_MAP_EXPERIMENT_RUNTIME_SNAPSHOT]:{inputSchema:DW,outputSchema:RW},[y.SHADOW_DEBUG_INSPECT]:{inputSchema:GW,outputSchema:VO},[y.SHADOW_DEBUG_CONTEXT_CLEAR]:{inputSchema:a2,outputSchema:s2},[y.SHADOW_DEBUG_CONTEXT_ENTER]:{inputSchema:o2,outputSchema:i2},[y.SHADOW_DEBUG_OVERLAY_CLEAR]:{inputSchema:$W,outputSchema:BW},[y.SHADOW_DEBUG_OVERLAY_SET]:{inputSchema:LW,outputSchema:FW},[y.SHADOW_DEBUG_VISIBILITY_MEASURE]:{inputSchema:zW,outputSchema:HO},[y.SHADOW_RECEIVERS_LIST]:{inputSchema:OW,outputSchema:CW},[y.SHADOW_RESOLVE_PREVIEW]:{inputSchema:wW,outputSchema:vW},[y.SHADOW_STATIC_BAKE]:{inputSchema:kW,outputSchema:_W},[y.SHADOW_STATIC_INVALIDATE]:{inputSchema:NW,outputSchema:jW},[y.TRANSFORM_MOVE]:{inputSchema:UW,outputSchema:OO},[y.TRANSFORM_SET]:{inputSchema:VW,outputSchema:OO},[y.VIEWPORT_CAMERA_GET]:{inputSchema:QW,outputSchema:XW},[y.VIEWPORT_CAMERA_ORBIT]:{inputSchema:e2,outputSchema:CO},[y.VIEWPORT_CAMERA_SET_PRESET]:{inputSchema:ZW,outputSchema:CO},[y.VIEWPORT_FRAME_SELECTION]:{inputSchema:YW,outputSchema:JW},[y.VIEWPORT_FOCUS_OBJECT]:{inputSchema:HW,outputSchema:KW},[y.VIEWPORT_RENDER_STATS_GET]:{inputSchema:WW,outputSchema:qW},[y.VIEWPORT_ISOLATION_ENTER]:{inputSchema:d2,outputSchema:Ay},[y.VIEWPORT_VISIBILITY_CLEAR]:{inputSchema:c2,outputSchema:Ay},[y.VIEWPORT_VISIBILITY_SET]:{inputSchema:n2,outputSchema:Ay},[y.VIEWPORT_VISIBILITY_SNAPSHOT]:{inputSchema:r2,outputSchema:_y}};var ap="/__fps_editor_agent/v1";var nq={type:"object",properties:{id:{type:"string",maxLength:128},label:{type:"string",maxLength:128},commandType:{type:"string",maxLength:128},createdAt:{type:"number"},origin:{type:"object",properties:{principal:{type:"object",properties:{type:{type:"string",minLength:1,maxLength:128},id:{type:"string",minLength:1,maxLength:256}},required:["type"],additionalProperties:!1},source:{type:"string",minLength:1,maxLength:128},sessionId:{type:"string",minLength:1,maxLength:256},surface:{type:"string",minLength:1,maxLength:128}},required:["principal","source","sessionId"],additionalProperties:!1}},required:["id","label","commandType","createdAt"],additionalProperties:!1},qO={type:"object",properties:{jsonByteLength:{type:"integer",minimum:0},jsonCharacterLength:{type:"integer",minimum:0},rootType:{type:"string",enum:["object","array","string","number","boolean","null"]},topLevelEntryCount:{type:"integer",minimum:0}},required:["jsonByteLength","jsonCharacterLength","rootType","topLevelEntryCount"],additionalProperties:!1},YO={type:"object",properties:{expectedDocumentRevision:{type:"integer",minimum:0}},additionalProperties:!1},JO={type:"object",properties:{serviceInstanceId:{type:"string",minLength:1,maxLength:256},documentRevision:{type:"integer",minimum:0},documentStructureRevision:{type:"integer",minimum:0},eventCursor:{type:"integer",minimum:0},dirty:{type:"boolean"},canUndo:{type:"boolean"},canRedo:{type:"boolean"},history:{type:"object",properties:{entries:{type:"array",maxItems:20,items:nq},totalCount:{type:"integer",minimum:0},returnedCount:{type:"integer",minimum:0,maximum:20}},required:["entries","totalCount","returnedCount"],additionalProperties:!1},documents:{type:"object",properties:{working:qO,saved:qO},required:["working","saved"],additionalProperties:!1},projection:{const:"summary"}},required:["serviceInstanceId","documentRevision","documentStructureRevision","eventCursor","dirty","canUndo","canRedo","history","documents","projection"],additionalProperties:!1},sp=5e3,cp=8*1024*1024,dp=128,lp=256*1024,XO=100;var Jr=(e,t)=>({kind:"number",...e!=null?{min:e}:{},...t!=null?{max:t}:{}}),sa={kind:"texture"},QO={kind:"color"},oq={kind:"enum",values:["lit","unlit"]},iq={kind:"enum",values:["opaque","mask","blend"]},tC={lightingModel:oq,baseColor:{kind:"object",properties:{color:QO,texture:sa,brightness:Jr(0),saturation:Jr(0),contrast:Jr(0),hue:Jr(-180,180)}},normal:{kind:"object",properties:{texture:sa,strength:Jr(0)}},emission:{kind:"object",properties:{color:QO,intensity:Jr(0),texture:sa,maskTexture:sa}},alpha:{kind:"object",properties:{mode:iq,opacity:Jr(0,1),cutoff:Jr(0,1),texture:sa}}},aq={kind:"object",properties:{...tC,metallic:Jr(0,1),roughness:Jr(0,1),metallicRoughness:{kind:"object",properties:{texture:sa}},occlusion:{kind:"object",properties:{texture:sa,strength:Jr(0)}}}},sq={kind:"object",properties:tC},cq={lightingModel:"lit",baseColor:{color:{r:1,g:1,b:1},brightness:1,saturation:1,contrast:1,hue:0},metallic:0,roughness:1,emission:{color:{r:0,g:0,b:0},intensity:0}},dq={lightingModel:"lit",baseColor:{color:{r:1,g:1,b:1},brightness:1,saturation:1,contrast:1,hue:0},emission:{color:{r:0,g:0,b:0},intensity:0}},ZO=[{id:"surface",title:"Surface",order:40},{id:"geometry",title:"Geometry",order:50},{id:"emission",title:"Emission",order:60},{id:"alpha",title:"Alpha",order:70}],ca={path:"properties.lightingModel",operator:"equals",value:"lit",inactiveReasonKey:"litMaterial"},rC=[xs("properties.lightingModel","surface",1,"enum","assetLightingModel","lightingModel","lit",{options:[{value:"lit",labelKey:"assetLightingModelLit"},{value:"unlit",labelKey:"assetLightingModelUnlit"}],binding:"lightingModel",updateClass:"define"}),xs("properties.baseColor.color","surface",2,"color","assetBaseColor","baseColor",{r:1,g:1,b:1},{binding:"baseColor.color"}),Ms("properties.baseColor.texture.textureAssetId","properties.baseColor.texture","surface",3,"assetBaseTexture","baseTexture","baseColor.texture"),Xr("properties.baseColor.brightness","surface",4,"assetBrightness","brightness",1,{softMin:0,softMax:4,step:.05,conditions:[As("properties.baseColor.texture.textureAssetId","baseTexture")]}),Xr("properties.baseColor.saturation","surface",5,"assetSaturation","saturation",1,{softMin:0,softMax:2,step:.05,conditions:[As("properties.baseColor.texture.textureAssetId","baseTexture")]}),Xr("properties.baseColor.contrast","surface",6,"assetContrast","contrast",1,{softMin:0,softMax:2,step:.05,conditions:[As("properties.baseColor.texture.textureAssetId","baseTexture")]}),Xr("properties.baseColor.hue","surface",7,"assetHue","hue",0,{step:1,conditions:[As("properties.baseColor.texture.textureAssetId","baseTexture")]}),Ms("properties.normal.texture.textureAssetId","properties.normal.texture","geometry",10,"assetNormalTexture","normalTexture","normal.texture",[ca]),Xr("properties.normal.strength","geometry",11,"assetNormalStrength","normalStrength",1,{softMin:0,softMax:4,step:.05,conditions:[ca,As("properties.normal.texture.textureAssetId","normalTexture")]}),xs("properties.emission.color","emission",50,"color","assetEmissionColor","emissionColor",{r:0,g:0,b:0},{binding:"emission.color"}),Xr("properties.emission.intensity","emission",51,"assetEmissionIntensity","emissionIntensity",0,{softMin:0,softMax:8,step:.05}),Ms("properties.emission.texture.textureAssetId","properties.emission.texture","emission",52,"assetEmissionTexture","emissionTexture","emission.texture"),xs("properties.alpha.mode","alpha",60,"enum","assetAlphaMode","alphaMode","opaque",{options:[{value:"opaque",labelKey:"assetAlphaModeOpaque"},{value:"mask",labelKey:"assetAlphaModeMask"},{value:"blend",labelKey:"assetAlphaModeBlend"}],binding:"alpha.mode",updateClass:"pipeline"}),Xr("properties.alpha.opacity","alpha",61,"assetAlphaOpacity","alphaOpacity",1,{step:.05,conditions:[{path:"properties.alpha.mode",operator:"equals",value:"blend",inactiveReasonKey:"alphaBlend"}]}),Xr("properties.alpha.cutoff","alpha",62,"assetAlphaCutoff","alphaCutoff",.5,{step:.01,conditions:[{path:"properties.alpha.mode",operator:"equals",value:"mask",inactiveReasonKey:"alphaMask"}]}),Ms("properties.alpha.texture.textureAssetId","properties.alpha.texture","alpha",63,"assetAlphaTexture","alphaTexture","alpha.texture",[{path:"properties.alpha.mode",operator:"not-equals",value:"opaque",inactiveReasonKey:"alphaTransparency"}])],lq=[...rC,Xr("properties.metallic","geometry",20,"assetMetallic","metallic",0,{step:.05,conditions:[ca]}),Xr("properties.roughness","geometry",21,"assetRoughness","roughness",1,{step:.05,conditions:[ca]}),Ms("properties.metallicRoughness.texture.textureAssetId","properties.metallicRoughness.texture","geometry",22,"assetMetallicRoughnessTexture","metallicRoughnessTexture","metallicRoughness.texture",[ca]),Ms("properties.occlusion.texture.textureAssetId","properties.occlusion.texture","geometry",23,"assetOcclusionTexture","occlusionTexture","occlusion.texture",[ca]),Xr("properties.occlusion.strength","geometry",24,"assetOcclusionStrength","occlusionStrength",1,{softMin:0,softMax:4,step:.05,conditions:[ca,As("properties.occlusion.texture.textureAssetId","occlusionTexture")]})],uq=[{shaderId:"fps.builtin.pbr",version:1,runtimeKind:"pbr",displayName:"PBR",propertiesSchema:aq,defaultProperties:cq,inspector:{sections:ZO,fields:lq}},{shaderId:"fps.builtin.standard",version:1,runtimeKind:"standard",displayName:"Standard",propertiesSchema:sq,defaultProperties:dq,inspector:{sections:ZO,fields:rC}}],Qr=mq(uq);function mq(e){let t=new Map;for(let n of e){fq(n,t);let o=gq(n);t.set(n.shaderId,sC(o))}let r=Object.freeze([...t.values()]);return Object.freeze({get(n){return typeof n=="string"?t.get(n)??null:null},list(){return r}})}function Ds(e,t=Qr){return t.get(e)}function On(e){return Ds(e)}function pq(e,t,r=Qr){let n=up(t);return r.get(e)?.inspector.fields.find(i=>i.path===n)??null}function nC(e,t,r=Qr){let n=up(t),o=Ds(e,r);if(!o||!n)return{found:!1};let i=o.inspector.fields.find(c=>c.path===n);return i?{found:!0,value:structuredClone(i.defaultValue)}:o.inspector.fields.find(c=>c.control==="texture"&&c.schemaPath===n)?{found:!0,value:null}:ei(e,n,r)?.kind==="texture"?{found:!0,value:null}:{found:!1}}function ei(e,t,r=Qr){let n=Ds(e,r);if(!n)return null;let o=pq(e,t,r),a=(o?.schemaPath??up(t)).replace(/^properties\./,"").split(".").filter(Boolean);if(a.length===0)return null;let s=n.propertiesSchema;for(let c=0;c<a.length;c+=1){let d=a[c];if(s.kind==="texture"&&c===a.length-1&&(d==="url"||d==="textureAssetId"))return{kind:"string",nullable:!0};if(s.kind!=="object")return null;let u=s.properties[d];if(!u)return null;s=u}return o?.control==="texture"&&s.kind==="texture"?{kind:"string",nullable:!0}:s}function jy(e){let t=On(e);if(!t)throw new Error(`Unknown built-in material shader: ${e}`);return structuredClone(t.defaultProperties)}function oC(e,t,r="properties",n=Qr){let o=Ds(e,n);if(!o)return[{path:"shaderId",message:`Unknown material shader: ${String(e)}`}];let i=[];return Gy(o.propertiesSchema,t,r,i),i}function xs(e,t,r,n,o,i,a,s){return{path:e,sectionId:t,order:r,control:n,labelKey:o,tooltipKey:i,defaultValue:a,updateClass:"uniform",...s}}function Xr(e,t,r,n,o,i,a={}){return xs(e,t,r,"number",n,o,i,{binding:e.replace(/^properties\./,""),step:a.step??.05,displayPrecision:2,precision:2,...a})}function Ms(e,t,r,n,o,i,a,s){return xs(e,r,n,"texture",o,i,"",{schemaPath:t,binding:a,updateClass:"texture",conditions:s})}function As(e,t){return{path:e,operator:"truthy",inactiveReasonKey:t}}function fq(e,t){if(!e.shaderId.trim())throw new Error("Material Shader Definition shaderId must not be empty.");if(!Number.isInteger(e.version)||e.version<=0)throw new Error(`Material Shader Definition ${e.shaderId} must use a positive integer version.`);if(t.has(e.shaderId))throw new Error(`Duplicate Material Shader Definition: ${e.shaderId}`);if(e.sourceFile!=null&&!hq(e.sourceFile))throw new Error(`Material Shader Definition ${e.shaderId} sourceFile must be a safe project-relative path.`);iC(e.shaderId,e.propertiesSchema,"properties");let r=[];if(Gy(e.propertiesSchema,e.defaultProperties,"properties",r),r.length>0){let i=r[0];throw new Error(`Material Shader Definition ${e.shaderId} default ${i.path} ${i.message}.`)}let n=new Set;for(let i of e.inspector.sections){if(!i.id.trim()||n.has(i.id))throw new Error(`Material Shader Definition ${e.shaderId} contains an invalid or duplicate section: ${i.id}`);n.add(i.id)}let o=new Set;for(let i of e.inspector.fields){if(!i.path.startsWith("properties.")||o.has(i.path))throw new Error(`Material Shader Definition ${e.shaderId} contains an invalid or duplicate field: ${i.path}`);if(!n.has(i.sectionId))throw new Error(`Material Shader Definition ${e.shaderId} field ${i.path} references an unknown section.`);Sq(e,i),o.add(i.path)}}function gq(e){let t=structuredClone(e);return{...t,inspector:{...t.inspector,fields:t.inspector.fields.map(r=>{if(r.control!=="number")return r;let n=aC(t.propertiesSchema,r.schemaPath??r.path);return n?.kind!=="number"?r:{...r,...n.min!=null?{min:n.min}:{},...n.max!=null?{max:n.max}:{}}})}}}function Sq(e,t){let r=[["min",t.min],["max",t.max],["softMin",t.softMin],["softMax",t.softMax]];for(let[o,i]of r)if(i!=null&&!Number.isFinite(i))throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} ${o} must be finite.`);if(t.control!=="number"){if(r.some(([,o])=>o!=null))throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} uses numeric ranges with a non-number control.`);return}let n=aC(e.propertiesSchema,t.schemaPath??t.path);if(n?.kind!=="number")throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} must reference a number schema.`);for(let[o,i,a]of[["min",t.min,n.min],["max",t.max,n.max]])if(i!=null&&i!==a)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} ${o} must match propertiesSchema.`);if(t.softMin!=null&&t.softMax!=null&&t.softMin>t.softMax)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMin must not exceed softMax.`);if(n.min!=null&&t.softMin!=null&&t.softMin<n.min)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMin must not be below the schema minimum.`);if(n.max!=null&&t.softMax!=null&&t.softMax>n.max)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMax must not exceed the schema maximum.`)}function iC(e,t,r){if(t.kind==="object"){for(let[n,o]of Object.entries(t.properties))iC(e,o,`${r}.${n}`);return}if(t.kind==="number"){if(t.min!=null&&!Number.isFinite(t.min))throw new Error(`Material Shader Definition ${e} number field ${r} min must be finite.`);if(t.max!=null&&!Number.isFinite(t.max))throw new Error(`Material Shader Definition ${e} number field ${r} max must be finite.`);if(t.min!=null&&t.max!=null&&t.min>t.max)throw new Error(`Material Shader Definition ${e} number field ${r} min must not exceed max.`);return}if(t.kind==="color"&&t.channels!=null&&t.channels!==3&&t.channels!==4)throw new Error(`Material Shader Definition ${e} color field ${r} channels must be 3 or 4.`)}function hq(e){let t=e.trim();return!t||t.startsWith("/")||t.includes("\\")||t.includes(":")?!1:!t.split("/").includes("..")}function up(e){let t=e.trim();return t.startsWith("properties.")?t:`properties.${t}`}function aC(e,t){let r=up(t).replace(/^properties\./,"").split(".").filter(Boolean);if(r.length===0)return null;let n=e;for(let o of r){if(n.kind!=="object")return null;let i=n.properties[o];if(!i)return null;n=i}return n}function Gy(e,t,r,n){if(e.kind==="object"){if(!Ny(t)){n.push({path:r,message:"must be an object"});return}for(let i of Object.keys(t))Object.prototype.hasOwnProperty.call(e.properties,i)||n.push({path:`${r}.${i}`,message:"is not supported by the selected shader"});for(let[i,a]of Object.entries(e.properties))t[i]!==void 0&&Gy(a,t[i],`${r}.${i}`,n);return}if(e.kind==="number"){if(typeof t!="number"||!Number.isFinite(t)){n.push({path:r,message:"must be a finite number"});return}e.min!=null&&t<e.min&&n.push({path:r,message:`must be greater than or equal to ${e.min}`}),e.max!=null&&t>e.max&&n.push({path:r,message:`must be less than or equal to ${e.max}`});return}if(e.kind==="boolean"){typeof t!="boolean"&&n.push({path:r,message:"must be a boolean"});return}if(e.kind==="string"){t!==null&&typeof t!="string"?n.push({path:r,message:"must be a string"}):t===null&&!e.nullable&&n.push({path:r,message:"must not be null"});return}if(e.kind==="enum"){(typeof t!="string"||!e.values.includes(t))&&n.push({path:r,message:`must be one of: ${e.values.join(", ")}`});return}if(e.kind==="color"){let i=e.channels===4?["r","g","b","a"]:["r","g","b"];eC(t,r,i,n,e.channels===4?"an RGBA object":"an RGB object");return}if(e.kind==="vec2"||e.kind==="vec3"){eC(t,r,e.kind==="vec2"?["x","y"]:["x","y","z"],n,`a ${e.kind} object`);return}if(t===null)return;if(!Ny(t)){n.push({path:r,message:"must be a texture reference object or null"});return}Object.keys(t).some(i=>i!=="url"&&i!=="textureAssetId")&&n.push({path:r,message:"must contain only url or textureAssetId"});for(let i of["url","textureAssetId"]){let a=t[i];a!==void 0&&(typeof a!="string"||!a.trim())&&n.push({path:`${r}.${i}`,message:"must be a non-empty string"})}}function eC(e,t,r,n,o){if(!Ny(e)){n.push({path:t,message:`must be ${o}`});return}Object.keys(e).some(i=>!r.includes(i))&&n.push({path:t,message:`must contain only ${r.join(", ")}`});for(let i of r)(typeof e[i]!="number"||!Number.isFinite(e[i]))&&n.push({path:`${t}.${i}`,message:"must be a finite number"})}function sC(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.values(e))sC(t)}return e}function Ny(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}var cC="summary";function fo(){return{position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}}function yq(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function mp(e){let t=SC(e);return t&&bq(t)?{mode:"matrix",matrix:t}:null}function dC(e){return go(e)?{mode:"matrix",matrix:Vy(e.matrix)}:{...e.mode==="trs"?{mode:"trs"}:{},position:Ly(e.position),rotation:Ly(e.rotation),scale:Ly(e.scale)}}function go(e){return e.mode==="matrix"}function zy(e){return e.mode!=="matrix"}function bq(e){return!!SC(e)&&Math.abs(e[3])<=1e-6&&Math.abs(e[7])<=1e-6&&Math.abs(e[11])<=1e-6&&Math.abs(e[15]-1)<=1e-6&&!!uC(e)}function Fd(e){if(go(e))return Vy(e.matrix);let t=Eq(e.rotation),r=t.x,n=t.y,o=t.z,i=t.w,a=r+r,s=n+n,c=o+o,d=r*a,u=r*s,l=r*c,m=n*s,p=n*c,f=o*c,g=i*a,S=i*s,P=i*c,x=e.scale.x,T=e.scale.y,R=e.scale.z;return[(1-(m+f))*x,(u+P)*x,(l-S)*x,0,(u-P)*T,(1-(d+f))*T,(p+g)*T,0,(l+S)*R,(p-g)*R,(1-(d+m))*R,0,e.position.x,e.position.y,e.position.z,1]}function lC(e,t){return[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]]}function uC(e){let t=e[0],r=e[1],n=e[2],o=e[3],i=e[4],a=e[5],s=e[6],c=e[7],d=e[8],u=e[9],l=e[10],m=e[11],p=e[12],f=e[13],g=e[14],S=e[15],P=t*a-r*i,x=t*s-n*i,T=t*c-o*i,R=r*s-n*a,A=r*c-o*a,E=n*c-o*s,C=d*f-u*p,b=d*g-l*p,k=d*S-m*p,O=u*g-l*f,$=u*S-m*f,te=l*S-m*g,de=P*te-x*$+T*O+R*k-A*b+E*C;if(!Number.isFinite(de)||Math.abs(de)<1e-6)return null;let K=1/de;return[(a*te-s*$+c*O)*K,(n*$-r*te-o*O)*K,(f*E-g*A+S*R)*K,(l*A-u*E-m*R)*K,(s*k-i*te-c*b)*K,(t*te-n*k+o*b)*K,(g*T-p*E-S*x)*K,(d*E-l*T+m*x)*K,(i*$-a*k+c*C)*K,(r*k-t*$-o*C)*K,(p*A-f*T+S*P)*K,(u*T-d*A-m*P)*K,(a*b-i*O-s*C)*K,(t*O-r*b+n*C)*K,(f*x-p*R-g*P)*K,(d*R-u*x+l*P)*K]}function Uy(e){let t={x:e[12],y:e[13],z:e[14]},r={x:Fy(e[0],e[1],e[2]),y:Fy(e[4],e[5],e[6]),z:Fy(e[8],e[9],e[10])};if(Aq(e)<=0&&(r.y*=-1),!By(t)||!By(r)||Math.abs(r.x)<1e-6||Math.abs(r.y)<1e-6||Math.abs(r.z)<1e-6)return null;let n=1/r.x,o=1/r.y,i=1/r.z,a=[e[0]*n,e[1]*n,e[2]*n,0,e[4]*o,e[5]*o,e[6]*o,0,e[8]*i,e[9]*i,e[10]*i,0,0,0,0,1];if(!xq(a))return null;let s=Pq(Tq(a));if(!s)return null;let c=Iq(s);if(!By(c))return null;let d={position:t,rotation:c,scale:r};return gC(Fd(d),e,1e-5)?d:null}function mC(e,t={}){let r=Uy(e);return r||(t.allowMatrixFallback?mp(e):null)}function pC(e){let t=yq();for(let r of e)t=lC(Fd(r),t);return mC(t,{allowMatrixFallback:!0})}function fC(e,t,r={}){let n=uC(Fd(e));return n?mC(lC(Fd(t),n),r):null}function gC(e,t,r=1e-6){return e.length===t.length&&e.every((n,o)=>Math.abs(n-t[o])<=r)}function Vy(e){return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]}function SC(e){return e.length!==16||!e.every(Number.isFinite)?null:Vy(e)}function Ly(e){return{x:e.x,y:e.y,z:e.z}}function Eq(e){let t=e.z*.5,r=e.x*.5,n=e.y*.5,o=Math.sin(t),i=Math.cos(t),a=Math.sin(r),s=Math.cos(r),c=Math.sin(n),d=Math.cos(n);return{x:d*a*i+c*s*o,y:c*s*i-d*a*o,z:d*s*o-c*a*i,w:d*s*i+c*a*o}}function Iq(e){let t=e.z,r=e.x,n=e.y,o=e.w,i=n*t-r*o,a=.4999999;if(i<-a)return{x:Math.PI/2,y:2*Math.atan2(n,o),z:0};if(i>a)return{x:-Math.PI/2,y:2*Math.atan2(n,o),z:0};let s=o*o,c=t*t,d=r*r,u=n*n;return{z:Math.atan2(2*(r*n+t*o),-c-d+u+s),x:Math.asin(-2*i),y:Math.atan2(2*(t*r+n*o),c-d-u+s)}}function Tq(e){let t=e[0],r=e[4],n=e[8],o=e[1],i=e[5],a=e[9],s=e[2],c=e[6],d=e[10],u=t+i+d;if(u>0){let m=.5/Math.sqrt(u+1);return{w:.25/m,x:(c-a)*m,y:(n-s)*m,z:(o-r)*m}}if(t>i&&t>d){let m=2*Math.sqrt(1+t-i-d);return{w:(c-a)/m,x:.25*m,y:(r+o)/m,z:(n+s)/m}}if(i>d){let m=2*Math.sqrt(1+i-t-d);return{w:(n-s)/m,x:(r+o)/m,y:.25*m,z:(a+c)/m}}let l=2*Math.sqrt(1+d-t-i);return{w:(o-r)/l,x:(n+s)/l,y:(a+c)/l,z:.25*l}}function Pq(e){let t=Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w);return!Number.isFinite(t)||t<1e-6?null:{x:e.x/t,y:e.y/t,z:e.z/t,w:e.w/t}}function Aq(e){let t=e[0],r=e[1],n=e[2],o=e[3],i=e[4],a=e[5],s=e[6],c=e[7],d=e[8],u=e[9],l=e[10],m=e[11],p=e[12],f=e[13],g=e[14],S=e[15],P=l*S-g*m,x=u*S-f*m,T=u*g-f*l,R=d*S-p*m,A=d*g-l*p,E=d*f-p*u,C=+(a*P-s*x+c*T),b=-(i*P-s*R+c*A),k=+(i*x-a*R+c*E),O=-(i*T-a*A+s*E);return t*C+r*b+n*k+o*O}function Fy(e,t,r){return Math.sqrt(e*e+t*t+r*r)}function xq(e){let t={x:e[0],y:e[1],z:e[2]},r={x:e[4],y:e[5],z:e[6]},n={x:e[8],y:e[9],z:e[10]};return Math.abs($y(t,r))<1e-6&&Math.abs($y(t,n))<1e-6&&Math.abs($y(r,n))<1e-6}function $y(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function By(e){return Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)}var hC=Symbol("fps.editor.command-composed-authority-registration");function yC(e){return Object.defineProperty(e,hC,{value:!0,enumerable:!1,configurable:!1,writable:!1}),e}function bC(e){return e[hC]===!0}var Mq=200,Dq=128*1024,Zy=20;function MC(e={}){let t=new Map,r=new Map,n=new Map,o=e.now??Date.now,i=e.createOperationId??Bq(),a=AC(e.maxRetainedOperations,Mq),s=AC(e.maxResultBytes,Dq),c=0,d=!1,u,l="",m=A=>{try{let E=o();return typeof E=="number"&&Number.isFinite(E)?E:A}catch{return A}},p={get catalogRevision(){return c},get executionAuthorityInstalled(){return u!==void 0},registerCommand(A){f();let E=Rq(A),C=E.manifest.id;if(t.has(C))throw new Error(`Editor command is already registered: ${C}`);t.set(C,E),c+=1;let b=!0;return()=>{if(b&&(b=!1,t.get(C)===E)){t.delete(C);for(let[k,O]of n)O.registration===E&&n.delete(k);c+=1}}},installExecutionInterceptor(A,E={}){if(f(),typeof A!="function")throw new Error("Editor command execution interceptor is required.");if(u)throw new Error("Editor command execution authority is already installed.");u=A,l=E.scopeId?.trim()??"";let C=!0;return()=>{C&&(C=!1,u===A&&(u=void 0,l=""))}},listManifests(){return f(),[...t.values()].map(A=>$d(A.manifest))},async getCatalog(A={}){f();let E=Nq(A),C=[...t.values()].filter(k=>!E.target||k.manifest.target===E.target).filter(k=>!E.access||k.manifest.access===E.access).map(k=>({registration:k,score:jq(k.manifest,E.text)})).filter(k=>k.score>=0).sort((k,O)=>O.score-k.score||k.registration.manifest.id.localeCompare(O.registration.manifest.id)).slice(0,E.limit),b=await Promise.all(C.map(async({registration:k})=>({manifest:$d(k.manifest),availability:await Ky(k)})));return{catalogRevision:c,commands:b}},async describeCommand(A){f();let E=zd(A),C=t.get(E);return C?{manifest:$d(C.manifest),availability:await Ky(C)}:null},invoke(A){f();let E=zd(A?.commandId),C=t.get(E),b=EC(A,C?.validateInput===!1),k=ws({intentCommandId:b.intentCommandId??null,input:b.input===void 0?{presence:"omitted"}:{presence:"provided",value:b.input},expectedRevision:b.expectedRevision??null}),O=b.idempotencyKey?Gq(b,l):void 0;if(O){let te=n.get(O);if(te){if(te.fingerprint===k)return Wy(te,!0);let de=g(b,C,k);return r.set(de.snapshot.operationId,de),de.completion=T(de,Promise.resolve(x(de,[{severity:"error",source:"command-system",code:"command.idempotencyConflict",message:`Idempotency key was reused with different input: ${b.idempotencyKey}`}]))),R(),Wy(de,!1)}}let $=g(b,C,k,O);return r.set($.snapshot.operationId,$),O&&n.set(O,$),$.completion=T($,S($)),Wy($,!1)},execute(A){return p.invoke(A).completion},getOperation(A){let E=r.get(A);return E?pp(E.snapshot):null},getOperationByRequestId(A){let E=Xy(A,"requestId"),C=null;for(let b of r.values())b.snapshot.requestId===E&&(C=b);return C?pp(C.snapshot):null},cancelOperation(A){let E=r.get(A);return!E||E.snapshot.status!=="accepted"?!1:(E.controller.abort(),!0)},dispose(){if(!d){d=!0,t.clear(),u=void 0,c+=1;for(let A of r.values())A.snapshot.status==="accepted"&&A.controller.abort();n.clear()}}};return p;function f(){if(d)throw new Error("Editor Command System is disposed.")}function g(A,E,C,b){let O={operationId:Xy(i(),"operationId"),requestId:A.requestId,commandId:A.commandId,...A.intentCommandId?{intentCommandId:A.intentCommandId}:{},status:"accepted",source:A.source,principal:{...A.principal},origin:Jo(A),createdAt:m(0),...A.traceId?{traceId:A.traceId}:{},...A.traceStepId?{traceStepId:A.traceStepId}:{},...A.transactionId?{transactionId:A.transactionId}:{}};return{controller:new AbortController,fingerprint:C,...b?{idempotencyScope:b}:{},...E?{registration:E}:{},invocation:A,snapshot:O,completion:Promise.resolve(void 0)}}async function S(A){if(A.controller.signal.aborted)return P(A);let E=A.registration;if(!E)return x(A,[{severity:"error",source:"command-system",code:"command.notFound",message:`Editor command is not registered: ${A.invocation.commandId}`}]);if(E.manifest.target==="authoring"&&E.manifest.access==="write"&&!u)return x(A,[{severity:"error",source:"command-system",code:"command.authorityUnavailable",message:"Editor authoring authority is unavailable."}]);try{let C={...A.invocation,operationId:A.snapshot.operationId,manifest:$d(E.manifest),signal:A.controller.signal,...E.authorityTransaction?{authorityTransaction:E.authorityTransaction}:{}},b=async O=>{let $=await Ky(E,A.controller.signal);if(A.controller.signal.aborted)return Hy(A.invocation.commandId);if(!$.available)return{ok:!1,diagnostics:$.reasons};let te=A.invocation.input!==void 0?A.invocation.input:E.manifest.presentation?.inputMode==="none"?{}:null;if(E.validateInput!==!1){let Ne=Yy(te,E.manifest.inputSchema,"$","command.inputInvalid");if(Ne.length)return{ok:!1,diagnostics:Ne}}if(A.controller.signal.aborted)return Hy(A.invocation.commandId);A.snapshot={...A.snapshot,status:"running",startedAt:m(A.snapshot.createdAt)};let de=O===void 0?C:{...C,authorityContext:O},K=Promise.resolve(E.handler(te,de)),He=E.authorityTransaction==="composed"?await K:await DC(K,A.controller.signal);if(He===fp)return Hy(A.invocation.commandId);if(!He.ok)return{ok:!1,diagnostics:Bd(He.diagnostics)};if(E.validateOutput!==!1){let Ne=Yy(He.output,E.manifest.outputSchema,"$","command.outputInvalid");if(Ne.length)return{ok:!1,diagnostics:Ne}}let ze=He.diagnostics?.length?Bd(He.diagnostics):void 0;return{ok:!0,output:Lq(He.output,s),...ze?{diagnostics:ze}:{}}},k=u?await u(C,b):await b();if(!k.ok){let O=Bd(k.diagnostics);return O.some($=>$.code==="command.cancelled")?x(A,O,"cancelled"):x(A,O)}return A.snapshot={...A.snapshot,status:"completed",completedAt:m(A.snapshot.startedAt??A.snapshot.createdAt),output:k.output,...k.diagnostics?.length?{diagnostics:[...k.diagnostics]}:{}},R(),pp(A.snapshot)}catch(C){return A.controller.signal.aborted?P(A):x(A,[{severity:"error",source:"command-system",code:C instanceof gp?"command.resultTooLarge":"command.exception",message:C instanceof Error?C.message:String(C)}])}}function P(A){return x(A,[{severity:"warning",source:"command-system",code:"command.cancelled",message:`Editor command was cancelled: ${A.invocation.commandId}`}],"cancelled")}function x(A,E,C="failed"){return A.snapshot={...A.snapshot,status:C,completedAt:m(A.snapshot.startedAt??A.snapshot.createdAt),diagnostics:Bd(E)},R(),pp(A.snapshot)}async function T(A,E){let C=await E;try{e.onOperationSettled?.({invocation:EC(A.invocation,A.registration?.validateInput===!1),...A.registration?{manifest:$d(A.registration.manifest)}:{},operation:structuredClone(C)})}catch{}return C}function R(){if(!(r.size<=a)){for(let[A,E]of r)if($q(E.snapshot.status)&&(r.delete(A),r.size<=a))break}}}function Rq(e){if(!e||typeof e!="object")throw new Error("Editor command registration must be an object.");if(typeof e.handler!="function")throw new Error("Editor command handler is required.");if(e.available!==void 0&&typeof e.available!="function")throw new Error("Editor command availability must be a function.");if(e.authorityTransaction!==void 0&&e.authorityTransaction!=="isolated"&&e.authorityTransaction!=="composed")throw new Error("Editor command authority transaction mode is invalid.");if(e.authorityTransaction==="composed"&&!bC(e))throw new Error("Composed Editor command authority is reserved for the owning Authoring Host.");return{manifest:eb(e.manifest),...e.available?{available:e.available}:{},handler:e.handler,...e.validateInput===!1?{validateInput:!1}:{},...e.validateOutput===!1?{validateOutput:!1}:{},...e.authorityTransaction?{authorityTransaction:e.authorityTransaction}:{}}}function eb(e){if(!e||typeof e!="object")throw new Error("Editor command manifest is required.");if(e.schemaVersion!==1)throw new Error(`Unsupported Editor command schema version: ${String(e.schemaVersion)}`);let t=zd(e.id);if(!Number.isInteger(e.version)||e.version<=0)throw new Error(`Editor command version must be a positive integer: ${t}`);let r=ua(e.title,`Editor command title is required: ${t}`);if(!new Set(["workspace-service","tooling","authoring","view","renderer"]).has(e.target))throw new Error(`Editor command target is invalid: ${t}`);if(e.access!=="read"&&e.access!=="write")throw new Error(`Editor command access is invalid: ${t}`);if(!new Set(["experimental","stable","deprecated"]).has(e.stability))throw new Error(`Editor command stability is invalid: ${t}`);if(!e.effects||typeof e.effects!="object")throw new Error(`Editor command effects are required: ${t}`);if(!new Set(["none","view","authoring","filesystem"]).has(e.effects.persistence))throw new Error(`Editor command persistence is invalid: ${t}`);if(typeof e.effects.undoable!="boolean"||typeof e.effects.idempotent!="boolean")throw new Error(`Editor command effects flags are invalid: ${t}`);if(e.transaction&&(e.transaction.compatible!==!0||e.transaction.sideEffects!=="authoring"||e.transaction.phase!=="mutation"||e.target!=="authoring"||e.access!=="write"||e.effects.persistence!=="authoring"))throw new Error(`Editor command transaction policy is invalid: ${t}`);let a=at(e.description),s={schemaVersion:1,id:t,version:e.version,title:r,...a?{description:a}:{},target:e.target,access:e.access,stability:e.stability,inputSchema:IC(e.inputSchema,`${t}.inputSchema`),outputSchema:IC(e.outputSchema,`${t}.outputSchema`),...e.requires?{requires:Oq(e.requires,t)}:{},effects:Object.freeze({...e.effects}),...e.transaction?{transaction:Object.freeze({...e.transaction})}:{},...e.presentation?{presentation:Cq(e.presentation,t,e.inputSchema)}:{}};return Object.freeze(s)}function Oq(e,t){for(let r of["editorReady","viewAttached","rendererAttached"])if(e[r]!==void 0&&typeof e[r]!="boolean")throw new Error(`Editor command requirement ${r} is invalid: ${t}`);return Object.freeze({...e.editorReady!==void 0?{editorReady:e.editorReady}:{},...e.viewAttached!==void 0?{viewAttached:e.viewAttached}:{},...e.rendererAttached!==void 0?{rendererAttached:e.rendererAttached}:{},...e.activeScope?{activeScope:Object.freeze(Os(e.activeScope,t))}:{},...e.permissions?{permissions:Object.freeze(Os(e.permissions,t))}:{}})}function Cq(e,t,r){let n=at(e.category),o=at(e.shortcut),i=new Set(["none","inline-json","schema-form"]);if(e.inputMode!==void 0&&!i.has(e.inputMode))throw new Error(`Editor command presentation input mode is invalid: ${t}`);let a=e.menu?Object.freeze({path:Object.freeze(Os(e.menu.path,t)),...at(e.menu.group)?{group:e.menu.group.trim()}:{},...e.menu.order!==void 0?{order:Fq(e.menu.order,`${t}.menu.order`)}:{}}):void 0,s=e.selectionBinding?wq(e.selectionBinding,t,r):void 0;return Object.freeze({...n?{category:n}:{},...e.aliases?{aliases:Object.freeze(Os(e.aliases,t))}:{},...e.keywords?{keywords:Object.freeze(Os(e.keywords,t))}:{},...e.examples?{examples:Object.freeze(Os(e.examples,t))}:{},...o?{shortcut:o}:{},...a?{menu:a}:{},...e.inputMode?{inputMode:e.inputMode}:{},...s?{selectionBinding:s}:{}})}function wq(e,t,r){let n=at(e.activeId),o=at(e.selectedIds);if(!n&&!o)throw new Error(`Editor command selection binding is empty: ${t}`);let i=r.properties&&typeof r.properties=="object"?r.properties:{};if(n&&i[n]?.type!=="string")throw new Error(`Editor command active selection binding must target a string property: ${t}.${n}`);if(o&&(i[o]?.type!=="array"||i[o]?.items?.type!=="string"))throw new Error(`Editor command multi-selection binding must target a string array property: ${t}.${o}`);return Object.freeze({...n?{activeId:n}:{},...o?{selectedIds:o}:{}})}function EC(e,t=!1){if(!e||typeof e!="object")throw new Error("Editor command invocation is required.");let r=zd(e.commandId),n=e.intentCommandId===void 0?void 0:zd(e.intentCommandId),o=Xy(e.requestId,"requestId");if(!e.principal||typeof e.principal!="object")throw new Error("Editor command principal is required.");let i=ua(e.principal.type,"Editor command principal type is required."),a=ua(e.source,"Editor command source is required."),s=at(e.principal.id),c=at(e.idempotencyKey),d=at(e.traceId),u=at(e.traceStepId),l=at(e.transactionId),m=at(e.clientId),p=at(e.sessionId),f=at(e.surface);return Object.freeze({commandId:r,...n?{intentCommandId:n}:{},...e.input!==void 0?{input:t?Jy(e.input,"$input"):Cs(e.input,"$input")}:{},requestId:o,...c?{idempotencyKey:c}:{},principal:Object.freeze({type:i,...s?{id:s}:{}}),source:a,...p?{sessionId:p}:{},...f?{surface:f}:{},...e.expectedRevision?{expectedRevision:Object.freeze(vq(e.expectedRevision))}:{},...d?{traceId:d}:{},...u?{traceStepId:u}:{},...l?{transactionId:l}:{},...m?{clientId:m}:{}})}function vq(e){let t={};if(e.serviceInstanceId!==void 0){let r=ua(e.serviceInstanceId,"expectedRevision.serviceInstanceId");t.serviceInstanceId=r}for(let r of["document","scope","catalog"]){let n=e[r];if(n!==void 0){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Editor command expected revision is invalid: ${r}`);t[r]=n}}return t}var fp=Symbol("editor-command-aborted");async function DC(e,t){return t.aborted?fp:new Promise((r,n)=>{let o=()=>r(fp);t.addEventListener("abort",o,{once:!0}),e.then(i=>{t.removeEventListener("abort",o),r(i)},i=>{t.removeEventListener("abort",o),n(i)})})}function Hy(e){return{ok:!1,diagnostics:[{severity:"warning",source:"command-system",code:"command.cancelled",message:`Editor command was cancelled: ${e}`}]}}async function Ky(e,t){if(!e.available)return{available:!0,reasons:[]};try{let r=Promise.resolve(e.available()),n=t?await DC(r,t):await r;return n===fp?da("Editor command was cancelled.","command.cancelled"):n===!0?{available:!0,reasons:[]}:n===!1?da("Editor command is unavailable."):typeof n=="string"?da(n.trim()||"Editor command is unavailable."):!n||typeof n!="object"||typeof n.available!="boolean"?da("Editor command availability returned an invalid result.","command.availabilityInvalid"):{available:n.available,reasons:n.available||n.reasons?.length?Bd(n.reasons??[]):da("Editor command is unavailable.").reasons}}catch(r){return da(r instanceof Error?r.message:String(r),"command.availabilityException")}}function da(e,t="command.unavailable"){return{available:!1,reasons:[{severity:"error",source:"command-system",code:t,message:e}]}}function Yy(e,t,r,n){let o=[];return ti(e,t,r,o),o.slice(0,Zy).map(i=>({severity:"error",source:"command-system",code:n,message:i,path:i.split(":",1)[0]}))}function tb(e,t,r="command.inputInvalid"){return Yy(e,t,"$",r)}function IC(e,t){let r=RC(e,t);return Rs(r,t),r}function Rs(e,t){if(typeof e=="boolean")return;if(!Pr(e))throw new Error(`Editor command JSON Schema is invalid at ${t}.`);let r=e,n=new Set(["null","object","array","string","number","integer","boolean"]);if("type"in r){let o=typeof r.type=="string"?[r.type]:r.type;if(!Array.isArray(o)||o.length===0||o.some(i=>typeof i!="string"||!n.has(i))||new Set(o).size!==o.length)throw new Error(`Editor command JSON Schema type is invalid at ${t}.type.`)}if("required"in r&&(!Array.isArray(r.required)||r.required.some(o=>typeof o!="string"||o.length===0)||new Set(r.required).size!==r.required.length))throw new Error(`Editor command JSON Schema required is invalid at ${t}.required.`);if("properties"in r){if(!Pr(r.properties))throw new Error(`Editor command JSON Schema properties is invalid at ${t}.properties.`);for(let[o,i]of Object.entries(r.properties))Rs(i,`${t}.properties.${o}`)}if("additionalProperties"in r&&typeof r.additionalProperties!="boolean"&&!Pr(r.additionalProperties))throw new Error(`Editor command JSON Schema additionalProperties is invalid at ${t}.additionalProperties.`);Pr(r.additionalProperties)&&Rs(r.additionalProperties,`${t}.additionalProperties`),"items"in r&&Rs(r.items,`${t}.items`);for(let o of["allOf","anyOf","oneOf"]){if(!(o in r))continue;let i=r[o];if(!Array.isArray(i)||i.length===0)throw new Error(`Editor command JSON Schema ${o} is invalid at ${t}.${o}.`);i.forEach((a,s)=>Rs(a,`${t}.${o}[${s}]`))}if("not"in r&&Rs(r.not,`${t}.not`),"enum"in r&&(!Array.isArray(r.enum)||r.enum.length===0))throw new Error(`Editor command JSON Schema enum is invalid at ${t}.enum.`);for(let o of["minLength","maxLength","minItems","maxItems","minProperties","maxProperties"])if(o in r&&(!Number.isSafeInteger(r[o])||r[o]<0))throw new Error(`Editor command JSON Schema ${o} is invalid at ${t}.${o}.`);for(let o of["minimum","maximum","exclusiveMinimum","exclusiveMaximum"])if(o in r&&(typeof r[o]!="number"||!Number.isFinite(r[o])))throw new Error(`Editor command JSON Schema ${o} is invalid at ${t}.${o}.`);if("multipleOf"in r&&(typeof r.multipleOf!="number"||!Number.isFinite(r.multipleOf)||r.multipleOf<=0))throw new Error(`Editor command JSON Schema multipleOf is invalid at ${t}.multipleOf.`);if("uniqueItems"in r&&typeof r.uniqueItems!="boolean")throw new Error(`Editor command JSON Schema uniqueItems is invalid at ${t}.uniqueItems.`);if("pattern"in r){if(typeof r.pattern!="string")throw new Error(`Editor command JSON Schema pattern is invalid at ${t}.pattern.`);try{new RegExp(r.pattern)}catch{throw new Error(`Editor command JSON Schema pattern is invalid at ${t}.pattern.`)}}}function ti(e,t,r,n){if(n.length>=Zy||t===!0||t===void 0)return;if(t===!1){n.push(`${r}: value is not allowed`);return}if(!t||typeof t!="object"||Array.isArray(t)){n.push(`${r}: schema is invalid`);return}let o=t;if(Array.isArray(o.allOf))for(let a of o.allOf)ti(e,a,r,n);if(Array.isArray(o.anyOf)&&(o.anyOf.some(s=>{let c=[];return ti(e,s,r,c),c.length===0})||n.push(`${r}: value does not match any allowed schema`)),Array.isArray(o.oneOf)&&o.oneOf.filter(s=>{let c=[];return ti(e,s,r,c),c.length===0}).length!==1&&n.push(`${r}: value must match exactly one allowed schema`),o.not!==void 0){let a=[];ti(e,o.not,r,a),a.length===0&&n.push(`${r}: value matches a disallowed schema`)}if(Array.isArray(o.enum)&&!o.enum.some(a=>qy(a,e))){n.push(`${r}: value is not in the allowed enum`);return}if("const"in o&&!qy(o.const,e)){n.push(`${r}: value does not match the required constant`);return}let i=typeof o.type=="string"?[o.type]:Array.isArray(o.type)?o.type.filter(a=>typeof a=="string"):[];if(i.length&&!i.some(a=>kq(e,a))){n.push(`${r}: expected ${i.join(" or ")}`);return}if(typeof e=="string"&&(typeof o.minLength=="number"&&e.length<o.minLength&&n.push(`${r}: string is shorter than ${o.minLength}`),typeof o.maxLength=="number"&&e.length>o.maxLength&&n.push(`${r}: string is longer than ${o.maxLength}`),typeof o.pattern=="string"))try{new RegExp(o.pattern).test(e)||n.push(`${r}: string does not match pattern`)}catch{n.push(`${r}: schema pattern is invalid`)}if(typeof e=="number"&&(typeof o.minimum=="number"&&e<o.minimum&&n.push(`${r}: number is below minimum`),typeof o.maximum=="number"&&e>o.maximum&&n.push(`${r}: number is above maximum`),typeof o.exclusiveMinimum=="number"&&e<=o.exclusiveMinimum&&n.push(`${r}: number is not above exclusive minimum`),typeof o.exclusiveMaximum=="number"&&e>=o.exclusiveMaximum&&n.push(`${r}: number is not below exclusive maximum`),typeof o.multipleOf=="number"&&!_q(e,o.multipleOf)&&n.push(`${r}: number is not a multiple of ${o.multipleOf}`)),Array.isArray(e)&&(typeof o.minItems=="number"&&e.length<o.minItems&&n.push(`${r}: array has too few items`),typeof o.maxItems=="number"&&e.length>o.maxItems&&n.push(`${r}: array has too many items`),o.uniqueItems===!0&&e.some((a,s)=>e.slice(0,s).some(c=>qy(c,a)))&&n.push(`${r}: array items are not unique`),o.items!==void 0&&e.forEach((a,s)=>ti(a,o.items,`${r}[${s}]`,n))),Pr(e)){let a=Pr(o.properties)?o.properties:{},s=Array.isArray(o.required)?o.required.filter(c=>typeof c=="string"):[];typeof o.minProperties=="number"&&Object.keys(e).length<o.minProperties&&n.push(`${r}: object has too few properties`),typeof o.maxProperties=="number"&&Object.keys(e).length>o.maxProperties&&n.push(`${r}: object has too many properties`);for(let c of s)TC(e,c)||n.push(`${r}.${c}: required property is missing`);for(let[c,d]of Object.entries(e))TC(a,c)?ti(d,a[c],`${r}.${c}`,n):o.additionalProperties===!1?n.push(`${r}.${c}: additional property is not allowed`):Pr(o.additionalProperties)&&ti(d,o.additionalProperties,`${r}.${c}`,n)}}function kq(e,t){switch(t){case"null":return e===null;case"object":return Pr(e);case"array":return Array.isArray(e);case"string":return typeof e=="string";case"number":return typeof e=="number"&&Number.isFinite(e);case"integer":return typeof e=="number"&&Number.isSafeInteger(e);case"boolean":return typeof e=="boolean";default:return!1}}function TC(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _q(e,t){let r=PC(e),n=PC(t),o=r.coefficient*10n**BigInt(n.scale),i=n.coefficient*10n**BigInt(r.scale);return i!==0n&&o%i===0n}function PC(e){let t=e.toString().toLowerCase(),[r,n]=t.split("e"),o=n===void 0?0:Number(n),i=r.startsWith("-"),a=i?r.slice(1):r,[s,c=""]=a.split("."),d=`${s}${c}`.replace(/^0+(?=\d)/,"")||"0",u=BigInt(d);i&&(u=-u);let l=c.length-o;return l>=0?{coefficient:u,scale:l}:{coefficient:u*10n**BigInt(-l),scale:0}}function Bd(e){return Array.isArray(e)?e.slice(0,Zy).map((t,r)=>!t||typeof t!="object"?{severity:"error",source:"command-system",code:"command.diagnosticInvalid",message:`Command diagnostic is invalid at index ${r}.`}:{severity:t.severity==="info"||t.severity==="warning"?t.severity:"error",source:at(t.source)??"command",code:at(t.code)??"command.failed",message:at(t.message)??"Editor command failed.",...at(t.path)?{path:t.path.trim()}:{},...at(t.objectId)?{objectId:t.objectId.trim()}:{},...t.details?{details:RC(t.details,"$diagnostic.details")}:{}}):da("Command diagnostics are invalid.").reasons}function Nq(e){let t=at(e.text)?.toLocaleLowerCase(),r=e.limit===void 0?200:e.limit;if(!Number.isInteger(r)||r<1||r>1e3)throw new Error("Editor command catalog limit must be an integer between 1 and 1000.");return{...e,...t?{text:t}:{},limit:r}}function jq(e,t){if(!t)return 0;let r=e.id.toLocaleLowerCase(),n=e.title.toLocaleLowerCase(),o=e.presentation?.aliases?.map(a=>a.toLocaleLowerCase())??[],i=e.presentation?.keywords?.map(a=>a.toLocaleLowerCase())??[];return r===t?100:o.includes(t)?90:r.startsWith(t)?80:n.startsWith(t)?70:r.includes(t)?60:n.includes(t)?50:o.some(a=>a.includes(t))?40:i.some(a=>a.includes(t))?30:e.description?.toLocaleLowerCase().includes(t)?10:-1}function Wy(e,t){return{operationId:e.snapshot.operationId,requestId:e.snapshot.requestId,reused:t,completion:e.completion}}function Gq(e,t){return ws([t,e.principal.type,e.principal.id??"",e.source,e.sessionId??e.clientId??"",e.commandId,e.idempotencyKey??""])}function $d(e){return Cs(e,"$manifest")}function pp(e){return Cs(e,"$operation")}function Lq(e,t){if(e===void 0)throw new Error("Editor command result is not JSON-serializable: undefined.");let r;try{r=JSON.stringify(e)}catch(o){throw new Error(`Editor command result is not serializable: ${o instanceof Error?o.message:String(o)}`)}if(r===void 0)throw new Error("Editor command result is not serializable.");let n=new TextEncoder().encode(r).byteLength;if(n>t)throw new gp(`Editor command result exceeds the ${t} byte limit (${n} bytes). Request a narrower bounded projection; for paged commands, retry with a smaller limit.`);return JSON.parse(r)}var gp=class extends Error{};function RC(e,t){let r=Cs(e,t);if(!Pr(r))throw new Error(`Editor command JSON object is required at ${t}.`);return Object.freeze(r)}function Cs(e,t){if(e===null||typeof e=="string"||typeof e=="boolean"||typeof e=="number"&&Number.isFinite(e))return e;if(Array.isArray(e))return Object.freeze(e.map((n,o)=>Cs(n,`${t}[${o}]`)));if(!Pr(e))throw new Error(`Editor command value must be JSON-compatible at ${t}.`);let r=Object.create(null);for(let[n,o]of Object.entries(e))o!==void 0&&(r[n]=Cs(o,`${t}.${n}`));return Object.freeze(r)}function Jy(e,t){if(e===null||typeof e=="string"||typeof e=="boolean"||typeof e=="number")return e;if(Array.isArray(e))return Object.freeze(e.map((n,o)=>Jy(n,`${t}[${o}]`)));if(!Pr(e))throw new Error(`Unvalidated Editor command input must contain plain values at ${t}.`);let r=Object.create(null);for(let[n,o]of Object.entries(e))o!==void 0&&(r[n]=Jy(o,`${t}.${n}`));return Object.freeze(r)}function Pr(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function qy(e,t){try{return ws(e)===ws(t)}catch{return!1}}function ws(e){if(e===null||typeof e=="string"||typeof e=="boolean")return JSON.stringify(e);if(typeof e=="number")return Number.isFinite(e)?JSON.stringify(e):Number.isNaN(e)?'"__non_json_finite_nan__"':e>0?'"__non_json_finite_infinity__"':'"__non_json_finite_negative_infinity__"';if(Array.isArray(e))return`[${e.map(ws).join(",")}]`;if(!Pr(e))throw new Error("Editor command idempotency input must be JSON-compatible.");return`{${Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${JSON.stringify(t)}:${ws(e[t])}`).join(",")}}`}function Os(e,t){if(!Array.isArray(e))throw new Error(`Editor command string list is invalid: ${t}`);return[...new Set(e.map(r=>ua(r,`Editor command string list contains an empty value: ${t}`)))]}function zd(e){let t=ua(e,"Editor command id is required.");if(t.length>160||/\s/.test(t))throw new Error(`Editor command id is invalid: ${t}`);return t}function Xy(e,t){let r=ua(e,`Editor command ${t} is required.`);if(r.length>256)throw new Error(`Editor command ${t} is too long.`);return r}function ua(e,t){if(typeof e!="string"||!e.trim())throw new Error(t);return e.trim()}function at(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function Fq(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`Editor command number is invalid: ${t}`);return e}function AC(e,t){return Number.isInteger(e)&&e>0?e:t}function $q(e){return e==="completed"||e==="failed"||e==="cancelled"}function Bq(){let e=0;return()=>`editor-command-${Date.now().toString(36)}-${(++e).toString(36)}`}var OC=2048,zq=200,Qy=1e3;function CC(e){let t=a3();return t?o3(e.signedPrefix,t):i3(e.opaquePrefix??`${e.signedPrefix}o`,e.opaqueCursorLimit??OC)}function wC(){let e=CC({signedPrefix:"h2"});return(t,r)=>Uq(t,r,e)}async function Uq(e,t,r){let n=Xq(t);if(n)return n;let o=t.cursor?await Jq(t.cursor,r):null;if(t.cursor&&!o)return er("hierarchy.scope.cursorStale","Hierarchy cursor is invalid or expired.");if(o&&(o.scopeKey!==e.scopeKey||o.revision!==e.revision))return er("hierarchy.scope.cursorStale","Hierarchy cursor no longer matches the active scope revision.");if(t.expectedRevision!==void 0&&t.expectedRevision!==e.revision)return er("hierarchy.scope.stale","Hierarchy scope revision changed before the query was read.");let i=Hq(t.rootId),a=Kq(t.text),s=Wq(t.maxDepth),c=qq(t.limit);if(o&&(t.rootId!==void 0&&i!==o.rootId||t.text!==void 0&&a!==o.text||t.maxDepth!==void 0&&s!==o.maxDepth||t.limit!==void 0&&c!==o.limit))return er("hierarchy.scope.cursorStale","Hierarchy cursor does not match the supplied query.");let d=o?.rootId??i,u=o?.text??a,l=o?.maxDepth??s,m=o?.limit??c,p=o?.offset??0,f=new Map(e.nodes.map(R=>[R.id,R]));if(d&&!f.has(d))return er("hierarchy.scope.rootNotFound",`Hierarchy query root was not found: ${d}`);let g=Vq(e.nodes,d,l),S=u?g.filter(R=>R.id.toLocaleLowerCase().includes(u)||R.label.toLocaleLowerCase().includes(u)):g;if(o&&p>=S.length)return er("hierarchy.scope.cursorStale","Hierarchy cursor offset no longer matches the query result.");let P=S.slice(p,p+m),x=p+P.length,T=x<S.length?await Yq({v:1,scopeKey:e.scopeKey,revision:e.revision,rootId:d,maxDepth:l,text:u,limit:m,offset:x},r):void 0;return Qq({...e,nodes:P,totalCount:S.length,returnedCount:P.length,...T?{nextCursor:T}:{}})}function Vq(e,t,r){let n=new Map(e.map(d=>[d.id,d])),o=new Map;for(let d of e){let u=d.parentId&&n.has(d.parentId)?d.parentId:null,l=o.get(u)??[];l.push(d),o.set(u,l)}let i=[],s=[...t?[n.get(t)]:o.get(null)??[]].reverse().map(d=>({node:d,depth:0})),c=new Set;for(;s.length>0;){let d=s.pop();if(c.has(d.node.id)||(c.add(d.node.id),i.push(d.node),r!==null&&d.depth>=r))continue;let u=o.get(d.node.id)??[];for(let l=u.length-1;l>=0;l-=1)s.push({node:u[l],depth:d.depth+1})}return i}function Hq(e){return(e?.trim()??"")||null}function Kq(e){return e?.trim().toLocaleLowerCase()??""}function Wq(e){return e===void 0?null:e}function qq(e){return e??zq}async function Yq(e,t){let r=encodeURIComponent(JSON.stringify(e));return t.encode(r)}async function Jq(e,t){try{let r=await t.decode(e);if(!r)return null;let n=JSON.parse(decodeURIComponent(r));return n.v!==1||typeof n.scopeKey!="string"||!Number.isSafeInteger(n.revision)||!(n.rootId===null||typeof n.rootId=="string")||!(n.maxDepth===null||Number.isSafeInteger(n.maxDepth)&&n.maxDepth>=0)||typeof n.text!="string"||!Number.isSafeInteger(n.limit)||n.limit<1||n.limit>Qy||!Number.isSafeInteger(n.offset)||n.offset<=0||n.offset%n.limit!==0?null:n}catch{return null}}function Xq(e){let t=e,r=new Set(["expectedRevision","rootId","maxDepth","text","cursor","limit"]);return Object.keys(t).some(n=>!r.has(n))?er("hierarchy.scope.invalidQuery","Hierarchy query contains unsupported fields."):t.expectedRevision!==void 0&&(!Number.isSafeInteger(t.expectedRevision)||t.expectedRevision<0)?er("hierarchy.scope.invalidQuery","expectedRevision must be a non-negative integer."):t.rootId!==void 0&&(typeof t.rootId!="string"||!t.rootId.trim())?er("hierarchy.scope.invalidQuery","rootId must be a non-empty string."):t.maxDepth!==void 0&&(!Number.isSafeInteger(t.maxDepth)||t.maxDepth<0)?er("hierarchy.scope.invalidQuery","maxDepth must be a non-negative integer."):t.text!==void 0&&typeof t.text!="string"?er("hierarchy.scope.invalidQuery","text must be a string."):t.cursor!==void 0&&(typeof t.cursor!="string"||!t.cursor)?er("hierarchy.scope.invalidQuery","cursor must be a non-empty string."):t.limit!==void 0&&(!Number.isSafeInteger(t.limit)||t.limit<1||t.limit>Qy)?er("hierarchy.scope.invalidQuery",`limit must be an integer between 1 and ${Qy}.`):null}function Qq(e){return{ok:!0,output:e}}function er(e,t){return{ok:!1,code:e,message:t}}var Zq=200,e3=1e3;function ri(e){let t=CC({signedPrefix:e.cursorPrefix}),r=xC(e.defaultLimit,Zq),n=xC(e.maxLimit,e3);if(r>n)throw new Error("Bounded list defaultLimit cannot exceed maxLimit.");return async(o,i)=>{let a=t3(o,e.diagnosticPrefix,n);if(a)return a;let s=o.cursor?await n3(o.cursor,t,n):null;if(o.cursor&&!s)return la(`${e.diagnosticPrefix}.cursorStale`,"Cursor is invalid or expired.");let c=String(i.revision);if(s&&(s.scopeKey!==i.scopeKey||s.revision!==c))return la(`${e.diagnosticPrefix}.cursorStale`,"Cursor no longer matches the active scope revision.");let d=JSON.stringify(i.query);if(s&&i.queryProvided&&JSON.stringify(s.query)!==d)return la(`${e.diagnosticPrefix}.cursorStale`,"Cursor does not match the supplied query.");let u=o.limit??r;if(s&&o.limit!==void 0&&u!==s.limit)return la(`${e.diagnosticPrefix}.cursorStale`,"Cursor does not match the supplied page limit.");let l=s?.query??i.query,m=s?.limit??u,p=s?.offset??0,f=i.items.filter(x=>i.matches(x,l));if(s&&p>=f.length)return la(`${e.diagnosticPrefix}.cursorStale`,"Cursor offset no longer matches the query result.");let g=f.slice(p,p+m),S=p+g.length,P=S<f.length?await r3({v:1,scopeKey:i.scopeKey,revision:c,query:l,limit:m,offset:S},t):void 0;return{ok:!0,items:g,query:l,totalCount:f.length,returnedCount:g.length,...P?{nextCursor:P}:{}}}}function xC(e,t){return Number.isSafeInteger(e)&&e>0?e:t}function t3(e,t,r){return e.cursor!==void 0&&(typeof e.cursor!="string"||!e.cursor)?la(`${t}.invalidQuery`,"cursor must be a non-empty string."):e.limit!==void 0&&(!Number.isSafeInteger(e.limit)||e.limit<1||e.limit>r)?la(`${t}.invalidQuery`,`limit must be an integer between 1 and ${r}.`):null}async function r3(e,t){return t.encode(encodeURIComponent(JSON.stringify(e)))}async function n3(e,t,r){try{let n=await t.decode(e);if(!n)return null;let o=JSON.parse(decodeURIComponent(n));return o.v!==1||typeof o.scopeKey!="string"||typeof o.revision!="string"||!o.query||typeof o.query!="object"||Array.isArray(o.query)||!Number.isSafeInteger(o.limit)||o.limit<1||o.limit>r||!Number.isSafeInteger(o.offset)||o.offset<=0||o.offset%o.limit!==0?null:o}catch{return null}}function la(e,t){return{ok:!1,code:e,message:t}}function o3(e,t){let r=vC().getRandomValues(new Uint8Array(32)),n=t.importKey("raw",r,{name:"HMAC",hash:"SHA-256"},!1,["sign","verify"]);return Object.freeze({async encode(o){let i=new Uint8Array(await t.sign("HMAC",await n,new TextEncoder().encode(o)));return`${e}.${o}.${kC(i)}`},async decode(o){if(!o.startsWith(`${e}.`))return null;let i=o.lastIndexOf(".");if(i<=e.length+1)return null;let a=o.slice(e.length+1,i),s=s3(o.slice(i+1));return!s||!await t.verify("HMAC",await n,s,new TextEncoder().encode(a))?null:a}})}function i3(e,t){let r=new Map,n=Number.isSafeInteger(t)&&t>0?t:OC;return Object.freeze({async encode(o){let i;do i=`${e}.${kC(vC().getRandomValues(new Uint8Array(24)))}`;while(r.has(i));for(r.set(i,o);r.size>n;){let a=r.keys().next().value;if(!a)break;r.delete(a)}return i},async decode(o){return r.get(o)??null}})}function a3(){let e=globalThis.crypto?.subtle;return e&&typeof e.importKey=="function"&&typeof e.sign=="function"&&typeof e.verify=="function"&&typeof e.digest=="function"?e:null}function vC(){if(!globalThis.crypto||typeof globalThis.crypto.getRandomValues!="function")throw new Error("Runtime cursor generation requires crypto.getRandomValues().");return globalThis.crypto}function kC(e){return[...e].map(t=>t.toString(16).padStart(2,"0")).join("")}function s3(e){if(!/^[0-9a-f]{64}$/i.test(e))return null;let t=new Uint8Array(e.length/2);for(let r=0;r<t.length;r+=1)t[r]=Number.parseInt(e.slice(r*2,r*2+2),16);return t}function jC(e){return async(t,r,n)=>{let o=t.expectedDocumentRevision;if(o!==void 0&&o!==r.documentRevision)return l3("authoring.snapshot.revisionConflict",`Expected document revision ${o}, received ${r.documentRevision}.`,{expected:o,actual:r.documentRevision});let i=NC(r.workingDocument,"working document"),a=NC(r.persistedDocument,"saved document"),s=r.history.entries.slice(0,20).map(c=>({id:rb(c.id,128),label:rb(c.label,128),commandType:rb(c.commandType,128),createdAt:c.createdAt,...c.origin?{origin:structuredClone(c.origin)}:{}}));return{ok:!0,output:{serviceInstanceId:e,documentRevision:r.documentRevision,documentStructureRevision:r.documentStructureRevision,eventCursor:n,dirty:r.dirty,canUndo:r.canUndo,canRedo:r.canRedo,history:{entries:s,totalCount:r.history.entries.length,returnedCount:s.length},documents:{working:i.summary,saved:a.summary},projection:"summary"}}}}function NC(e,t){let r;try{r=JSON.stringify(e)}catch(n){throw new Error(`Editor Authoring ${t} is not JSON-serializable: ${n instanceof Error?n.message:String(n)}`)}if(r===void 0)throw new Error(`Editor Authoring ${t} is not JSON-serializable.`);return{summary:{jsonByteLength:new TextEncoder().encode(r).byteLength,jsonCharacterLength:r.length,rootType:c3(e),topLevelEntryCount:Array.isArray(e)?e.length:d3(e)?Object.keys(e).length:0}}}function c3(e){if(e===null)return"null";if(Array.isArray(e))return"array";let t=typeof e;return t==="string"||t==="number"||t==="boolean"?t:"object"}function rb(e,t){return e.length<=t?e:`${e.slice(0,t-3)}...`}function d3(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function l3(e,t,r){return{ok:!1,diagnostics:[{severity:"error",source:"authoring-snapshot",code:e,message:t,...r?{details:r}:{}}]}}var u3=Symbol("fps.editor.call-with-serialized-session-authority");var m3=200,FC=200,p3=5e3,f3=256*1024,g3=12,S3=256,Sp=64,GC=2048,h3=64,y3=new Set(["getState","getWorkingDocument","getSource","getSelection","isDirty","canUndo","canRedo","dispatch","undo","redo","rebaseExternalDocuments"]),ni=new WeakMap,nb=new WeakMap;function $C(e){let t=ho(e.serviceInstanceId,"serviceInstanceId"),r=e.commandSystem??MC(e.commandSystemOptions),n=e.commandSystem===void 0,o=Object.freeze({serviceInstanceId:t}),i=new Set,a=new Map,s=new Set,c=!1,d=h=>{if(!h||typeof h!="object")throw new Error("Editor Authoring Host session is required.");let M=ni.get(h);if(M&&M!==o)throw new Error("Editor Session already has a different write authority.")},u=h=>{d(h),Ty(h,o);try{Ot(h,o,()=>{h.detachDocumentReferencesForWriteAuthority()})}catch(M){throw wd(h,o),M}ni.set(h,o),i.add(h),s.add(h)},l=h=>{if(d(h),i.has(h))return Object.freeze({establish(){},release(){}});let M=ni.get(h);if(Ty(h,o),!M)try{Ot(h,o,()=>{h.detachDocumentReferencesForWriteAuthority()})}catch(w){throw wd(h,o),w}ni.set(h,o),s.add(h),a.set(h,(a.get(h)??0)+1);let D=!0,I=w=>{if(!D)return;D=!1;let v=(a.get(h)??1)-1;v>0?a.set(h,v):a.delete(h),w&&i.add(h),!i.has(h)&&!a.has(h)&&(ni.get(h)===o&&ni.delete(h),wd(h,o),s.delete(h))};return Object.freeze({establish:()=>I(!0),release:()=>I(!1)})},m=()=>{if(!c){c=!0;for(let h of s)ni.get(h)===o&&ni.delete(h),wd(h,o);i.clear(),a.clear(),s.clear()}};try{u(e.session)}catch(h){throw n&&r.dispose(),h}let p=_3(e.eventLimit,m3),f=e.now??Date.now,g=[],S=new Set,P=[],x=new Set,T=new Set,R=new Map,A=new Set,E=0,C=!1,b=new AbortController,k=Promise.resolve(),O=0,$=0,te=new Set,de=!1,K,He=new Promise(h=>{K=h}),ze=new Map,Ne=new WeakMap,Dr=new Map,Ut=new WeakSet,q=e.session,Oe=(h,M,D,I,w)=>Object.freeze({cursor:E+1,serviceInstanceId:t,reason:h,documentRevision:M.documentRevision,dirty:M.dirty,timestamp:D,...w?{origin:Tr(w)}:{},...I?{projectionImpact:VC(I)}:{}}),sr=h=>{for(E=h.cursor,g.push(h);g.length>p;)g.shift();for(let M of[...S])gl(M,yt.readEvents(M.afterCursor,M.expectedServiceInstanceId))},gl=(h,M)=>{S.delete(h)&&(h.timeout&&clearTimeout(h.timeout),h.timeout=void 0,h.resolve(M))},bf=h=>{for(let M of[...S])S.delete(M)&&(M.timeout&&clearTimeout(M.timeout),M.timeout=void 0,M.reject(h))},Pa=h=>{De();let M=h.expectedRevisionPolicy??"current-document";if(M!=="current-document"&&M!=="handler-validated")throw new Error("Editor Authoring Host command expected revision policy is invalid.");if(M==="handler-validated"&&(h.manifest.target!=="authoring"||h.manifest.access!=="write"))throw new Error("Handler-validated revisions are reserved for authoring write commands.");let D=h.manifest.target==="authoring"&&h.manifest.access==="write",I={...h,manifest:eb(h.manifest)},{expectedRevisionPolicy:w,...v}=I,L=r.registerCommand({...v,authorityTransaction:"isolated",handler:async(U,B)=>{let oe=D?void 0:q.beginTransaction(),se=D?ze.get(B.operationId)?.session:oe?.session;if(!se)return{ok:!1,diagnostics:[Ct("command.authorityUnavailable",`Authoring transaction is unavailable: ${B.commandId}`)]};try{return await I.handler(U,{...B,session:se,dispatch(Ke,ge){let xe=se.dispatch({...Ke,origin:Jo(B)},ge);return hp(se,xe.documentChanged,xe.transaction?.projectionImpact,Ne),se.getState({cloneDocuments:!1})}})}finally{oe?.discard()}}});T.add(h.manifest.id),I.manifest.transaction?.compatible&&R.set(I.manifest.id,I),M==="handler-validated"&&A.add(h.manifest.id);let j=!0,G=()=>{j&&(j=!1,x.delete(G),T.delete(h.manifest.id),R.get(I.manifest.id)===I&&R.delete(I.manifest.id),A.delete(h.manifest.id),L())};return x.add(G),G},tc;try{tc=r.installExecutionInterceptor(async(h,M)=>{if(!(h.authorityTransaction==="composed"&&h.manifest.access==="write"||h.manifest.target==="authoring"&&h.manifest.access==="write"))return M();let I=q;return kt(async()=>{if(b.signal.aborted||h.signal.aborted)return Vd(h.commandId);if(q!==I&&h.authorityTransaction!=="composed")return{ok:!1,diagnostics:[Ct("command.documentScopeChanged",`Authoring document scope changed before execution: ${h.commandId}`)]};if(h.authorityTransaction!=="composed"&&!T.has(h.commandId))return{ok:!1,diagnostics:[Ct("command.authorityRegistrationRequired",`Authoring write command is not registered by this Host: ${h.commandId}`)]};let w=I3(h,q,A.has(h.commandId));if(w)return{ok:!1,diagnostics:[w]};let v=q.getMetadata().documentRevision;if(h.authorityTransaction==="composed"){let G=f();$+=1,te.add(h.operationId);let U=Object.freeze({serviceInstanceId:t,[u3]:B=>{if(!Ut.has(U))throw new Error("Editor Authoring Host serialized access is invalid or expired.");return vd(q,o,B)}});Ut.add(U);try{try{return await vd(q,o,()=>M(U))}catch(B){return{ok:!1,diagnostics:[Ct("command.exception",B instanceof Error?B.message:String(B))]}}}finally{Ut.delete(U);let B=q.getMetadata();q===I&&B.documentRevision!==v&&sr(Oe("document",B,G,void 0,Jo(h))),$-=1,te.delete(h.operationId),Ze()}}let L=q.beginTransaction();ze.set(h.operationId,L);let j=!1;try{let G=await Sl(M,h.commandId);if(!G.ok)return G;if(h.signal.aborted)return Vd(h.commandId);let U=h.commandId==="history.undo"||h.commandId==="history.redo"?"history":h.commandId==="document.save"||h.commandId==="document.commit"?"saved":"document",B=L.session.getMetadata(),oe=LC(L.session,Ne),se=B.documentRevision!==v?Oe(U,B,f(),oe,Jo(h)):null;return Ot(q,o,()=>{L.commit(U)}),j=!0,se&&sr(se),G}finally{ze.delete(h.operationId),Ne.delete(L.session),j||L.discard()}})},{scopeId:t})}catch(h){throw m(),n&&r.dispose(),h}let yt={serviceInstanceId:t,commandSystem:b3(r),registerCommand:Pa,invoke(h){return De(),r.invoke(h)},execute(h){return De(),r.execute(h)},getMetadata(){return De(),q.getMetadata()},getCheckpoint(){return De(),O3(q.getMetadata(),q.getPersistedDocument(),t,E)},getSnapshot(){return De(),vs(q.getState(),t,E)},runTransactionBatch(h){return De(),kt(async()=>{let M=q.getMetadata();if(h.baseDocumentRevision!==M.documentRevision)return So(M,0,[],Ud("transaction.documentRevisionMismatch",`Expected document revision ${h.baseDocumentRevision}, received ${M.documentRevision}.`,void 0,{expected:h.baseDocumentRevision,actual:M.documentRevision}));let D=q.beginTransaction(),I=D.session.beginTransaction(),w=I.session,v=[],L=new Map,j=0,G=0;try{for(let ft=0;ft<h.operations.length;ft+=1){if(h.signal?.aborted||b.signal.aborted)return So(M,j,v,Ud("transaction.cancelled","Authoring transaction was cancelled.",h.operations[ft],{operationIndex:ft}));let be=h.operations[ft],an=R.get(be.commandId);if(!an)return So(M,j,v,Ud("command.notTransactionCompatible",`Editor command is not transaction compatible: ${be.commandId}`,be,{operationIndex:ft}));let To;try{To=w3(be.input??{},L)}catch(et){return So(M,j,v,Ud("transaction.referenceInvalid",et instanceof Error?et.message:String(et),be,{operationIndex:ft}))}let Po=tb(To,an.manifest.inputSchema);if(Po.length)return So(M,j,v,Po.map(et=>yp(et,be,ft)));let Ao=await C3(an);if(!Ao.available)return So(M,j,v,Ao.diagnostics.map(et=>yp(et,be,ft)));let bi=w.getMetadata().documentRevision,Ln;try{Ln=await an.handler(To,{commandId:be.commandId,input:To,requestId:`${h.transactionId}:${be.opId}`,idempotencyKey:`${h.transactionId}:${be.opId}`,principal:h.principal,source:h.source,expectedRevision:{serviceInstanceId:t,document:h.baseDocumentRevision},...h.traceId?{traceId:h.traceId}:{},traceStepId:be.opId,transactionId:h.transactionId,...h.sessionId?{sessionId:h.sessionId}:{},...h.surface?{surface:h.surface}:{},operationId:`${h.transactionId}:${be.opId}`,manifest:an.manifest,signal:h.signal??b.signal,session:w,dispatch(et,Ef={}){let NE=et.type==="document.patch"||et.type==="document.replace",jE=w.dispatch({...D3(et),origin:Jo({principal:h.principal,source:h.source,requestId:h.transactionId,...h.sessionId?{sessionId:h.sessionId}:{},...h.surface?{surface:h.surface}:{}})},{...Ef,...NE&&Ef.assumeDocumentChanged===void 0?{assumeDocumentChanged:!0}:{},...NE&&Ef.assumeDirty===void 0?{assumeDirty:!0}:{},mergeWithPrevious:G>0,clonePatchInput:!1,cloneResultDocument:!1});return hp(w,jE.documentChanged,et.projectionImpact,Ne),jE.documentChanged&&(G+=1),w.getState({cloneDocuments:!1})}})}catch(et){return So(M,j,v,Ud("command.exception",et instanceof Error?et.message:String(et),be,{operationIndex:ft}))}if(!Ln.ok)return So(M,j,v,Ln.diagnostics.map(et=>yp(et,be,ft)));let _E=tb(Ln.output,an.manifest.outputSchema,"command.outputInvalid");if(_E.length)return So(M,j,v,_E.map(et=>yp(et,be,ft)));let hl=v3(Ln.output),m_={index:ft,opId:be.opId,commandId:be.commandId,...be.as?{alias:be.as}:{},...hl===void 0?{}:{output:hl}};if(v.push(m_),be.as&&hl!==void 0&&L.set(be.as,hl),j+=1,w.getMetadata().documentRevision<bi)throw new Error("Authoring transaction operation moved the document revision backwards.");j&31||await k3()}let U=w.getState({cloneDocuments:!1}),B=D.session.getState({cloneDocuments:!1}),oe=U.workingDocument!==B.workingDocument;if(h.mode==="preflight"||!oe)return{ok:!0,processedOperations:j,results:v,documentChanged:oe,metadata:M};let se=LC(w,Ne)??{type:"rebuild",reason:"agent-transaction-unclassified"},Ke=Jo({principal:h.principal,source:h.source,requestId:h.transactionId,...h.sessionId?{sessionId:h.sessionId}:{},...h.surface?{surface:h.surface}:{}});D.session.dispatch({type:"document.replace",document:U.workingDocument,label:h.label?.trim()||`Agent transaction (${j} operations)`,projectionImpact:se,origin:Ke},{assumeDocumentChanged:!0,cloneResultDocument:!1});let ge=U.selection;(ge.activeId!==B.selection.activeId||ge.selectedIds.join("\0")!==B.selection.selectedIds.join("\0"))&&D.session.dispatch({type:"selection.replace",selectedIds:ge.selectedIds,activeId:ge.activeId});let xe=f(),Vt=D.session.getMetadata(),Gn=Oe("document",Vt,xe,se,Ke);Ot(q,o,()=>{D.commit("document")});let yi=q.getMetadata();return sr(Gn),{ok:!0,processedOperations:j,results:v,documentChanged:!0,metadata:yi}}finally{Ne.delete(w),I.discard(),D.discard()}})},readEvents(h=E,M=t){if(De(),M!==t)return{kind:"snapshot-required",reason:"service.restarted",snapshot:yt.getSnapshot()};let D=Number.isSafeInteger(h)&&h>=0?h:0;if(D>E)return{kind:"snapshot-required",reason:"cursor.invalid",snapshot:yt.getSnapshot()};let I=g[0]?.cursor??E+1;return D<I-1?{kind:"snapshot-required",reason:"cursor.expired",snapshot:yt.getSnapshot()}:{kind:"events",serviceInstanceId:t,latestCursor:E,events:g.filter(w=>w.cursor>D).map(R3)}},waitForEvents(h=E,M=t,D=0){De();let I=yt.readEvents(h,M);return I.kind==="snapshot-required"||I.events.length>0||D<=0?Promise.resolve(I):new Promise((w,v)=>{let L={afterCursor:h,expectedServiceInstanceId:M,resolve:w,reject:v,timeout:void 0};L.timeout=setTimeout(()=>{if(S.has(L))try{gl(L,yt.readEvents(h,M))}catch(j){if(!S.delete(L))return;L.reject(j instanceof Error?j:new Error(String(j)))}},D),L.timeout.unref?.(),S.add(L)})},async markSaved(h,M){if(De(),!M||typeof M!="object"||!Number.isSafeInteger(M.expectedDocumentRevision)||M.expectedDocumentRevision<0)throw new Error("Editor save checkpoint expectedDocumentRevision must be a non-negative safe integer.");let D=M.expectedDocumentRevision,I=M.serializedAccess,w=q,v=w.beginTransaction(),L,j;try{v.session.reset(h,M.source),L=v.session.getWorkingDocument(),j=v.session.getSource()}finally{v.discard()}let G=async()=>{if(De(),q!==w)throw new Error("Editor save checkpoint document scope changed before commit.");let U=q.getState({cloneDocuments:!1}).documentRevision;if(U!==D)throw new Error(`Editor save checkpoint revision mismatch: expected ${D}, received ${U}.`);let B=q.beginTransaction(),oe=!1;try{let se=f();B.session.markSaved(L,j);let Ke=B.session.getState({cloneDocuments:!1}),ge=Oe("saved",Ke,se),xe=Ot(q,o,()=>B.commit("saved"));return oe=!0,sr(ge),vs(xe,t,E)}finally{oe||B.discard()}};return I?(jn(I),G()):kt(G)},async markSavedWithRelatedSession(h,M){if(De(),!M||typeof M!="object"||!Number.isSafeInteger(M.expectedDocumentRevision)||M.expectedDocumentRevision<0)throw new Error("Editor related save checkpoint expectedDocumentRevision must be a non-negative safe integer.");if(!M.relatedSession||typeof M.relatedSession!="object")throw new Error("Editor related save checkpoint Session is required.");if(!Number.isSafeInteger(M.expectedRelatedDocumentRevision)||M.expectedRelatedDocumentRevision<0)throw new Error("Editor related save checkpoint expectedRelatedDocumentRevision must be a non-negative safe integer.");if(typeof M.mutateRelatedSession!="function")throw new Error("Editor related save checkpoint mutation is required.");let D=M.expectedDocumentRevision,I=q,w=M.relatedSession,v=M.expectedRelatedDocumentRevision,L=M.resetHistory===!0,j=M.mutateRelatedSession,G=M.serializedAccess;if(I===w)throw new Error("Editor related save checkpoint requires a distinct Session.");let U=I.beginTransaction(),B,oe;try{U.session.reset(h,M.source),B=U.session.getWorkingDocument(),oe=U.session.getSource()}finally{U.discard()}let se=l(w),Ke=async()=>{if(De(),q!==I)throw new Error("Editor related save checkpoint document scope changed before commit.");let ge=q.getState({cloneDocuments:!1}).documentRevision;if(ge!==D)throw new Error(`Editor related save checkpoint revision mismatch: expected ${D}, received ${ge}.`);let xe=w.getState({cloneDocuments:!1}).documentRevision;if(xe!==v)throw new Error(`Editor related save checkpoint related revision mismatch: expected ${v}, received ${xe}.`);let Vt=q.beginTransaction(),Gn=w.beginTransaction(),yi=!1;try{let ft=f();Vt.session.markSaved(B,oe,{resetHistory:L});let be=j(Gn.session);if(be&&typeof be=="object"&&"then"in be&&typeof be.then=="function")throw new Error("Editor related save checkpoint mutation must be synchronous.");let an=Vt.session.getState({cloneDocuments:!1}),To=Oe("saved",an,ft),Po=Vt.prepareCommit("saved"),Ao=Gn.prepareCommit("saved");Po.assertReady(),Ao.assertReady();let{activeCommit:bi,relatedCommit:Ln}=Ot(q,o,()=>Ot(w,o,()=>({activeCommit:Po.commit({deferChangeNotification:!0}),relatedCommit:Ao.commit({deferChangeNotification:!0})})));return yi=!0,se.establish(),bi.notifyChange(),Ln.notifyChange(),sr(To),vs(bi.state,t,E)}finally{yi||(Vt.discard(),Gn.discard())}};try{return G?(jn(G),await Ke()):await kt(Ke)}catch(ge){throw se.release(),ge}},async reset(h,M,D){if(De(),!D||!Number.isSafeInteger(D.expectedDocumentRevision)||D.expectedDocumentRevision<0)throw new Error("Editor reset expectedDocumentRevision must be a non-negative safe integer.");let I=D.expectedDocumentRevision,w=D.serializedAccess,v=q,L=v.beginTransaction(),j,G;try{L.session.reset(h,M),j=L.session.getWorkingDocument(),G=L.session.getSource()}finally{L.discard()}let U=async()=>{if(De(),q!==v)throw new Error("Editor reset document scope changed before commit.");let B=q.getState({cloneDocuments:!1}).documentRevision;if(B!==I)throw new Error(`Editor reset revision mismatch: expected ${I}, received ${B}.`);let oe=q.beginTransaction(),se=!1;try{let Ke=f();oe.session.reset(j,G);let ge=oe.session.getState({cloneDocuments:!1}),xe=Oe("reset",ge,Ke),Vt=Ot(q,o,()=>oe.commit("reset"));return se=!0,sr(xe),vs(Vt,t,E)}finally{se||oe.discard()}};return w?(jn(w),U()):kt(U)},async resetWithRelatedSession(h,M,D){if(De(),!D||!Number.isSafeInteger(D.expectedDocumentRevision)||D.expectedDocumentRevision<0)throw new Error("Editor related reset expectedDocumentRevision must be a non-negative safe integer.");if(!D.relatedSession||typeof D.relatedSession!="object")throw new Error("Editor related reset Session is required.");if(!Number.isSafeInteger(D.expectedRelatedDocumentRevision)||D.expectedRelatedDocumentRevision<0)throw new Error("Editor related reset expectedRelatedDocumentRevision must be a non-negative safe integer.");if(typeof D.mutateRelatedSession!="function")throw new Error("Editor related reset mutation is required.");let I=q,w=D.relatedSession,v=D.expectedDocumentRevision,L=D.expectedRelatedDocumentRevision,j=D.mutateRelatedSession,G=D.serializedAccess;if(I===w)throw new Error("Editor related reset requires a distinct Session.");let U=I.beginTransaction(),B,oe;try{U.session.reset(h,M),B=U.session.getWorkingDocument(),oe=U.session.getSource()}finally{U.discard()}let se=l(w),Ke=async()=>{if(De(),q!==I)throw new Error("Editor related reset document scope changed before commit.");let ge=q.getState({cloneDocuments:!1}).documentRevision;if(ge!==v)throw new Error(`Editor related reset revision mismatch: expected ${v}, received ${ge}.`);let xe=w.getState({cloneDocuments:!1}).documentRevision;if(xe!==L)throw new Error(`Editor related reset related revision mismatch: expected ${L}, received ${xe}.`);let Vt=q.beginTransaction(),Gn=w.beginTransaction(),yi=!1;try{let ft=f();Vt.session.reset(B,oe);let be=j(Gn.session);if(be&&typeof be=="object"&&"then"in be&&typeof be.then=="function")throw new Error("Editor related reset mutation must be synchronous.");let an=Vt.session.getState({cloneDocuments:!1}),To=Oe("reset",an,ft),Po=Vt.prepareCommit("reset"),Ao=Gn.prepareCommit("reset");Po.assertReady(),Ao.assertReady();let{activeCommit:bi,relatedCommit:Ln}=Ot(q,o,()=>Ot(w,o,()=>({activeCommit:Po.commit({deferChangeNotification:!0}),relatedCommit:Ao.commit({deferChangeNotification:!0})})));return yi=!0,se.establish(),bi.notifyChange(),Ln.notifyChange(),sr(To),vs(bi.state,t,E)}finally{yi||(Vt.discard(),Gn.discard())}};try{return G?(jn(G),await Ke()):await kt(Ke)}catch(ge){throw se.release(),ge}},async switchSession(h,M){if(De(),!h||typeof h!="object")throw new Error("Editor Authoring Host session is required.");if(!M||!Number.isSafeInteger(M.expectedDocumentRevision)||M.expectedDocumentRevision<0)throw new Error("Editor scope switch expectedDocumentRevision must be a non-negative safe integer.");let D=M.expectedDocumentRevision,I=M.serializedAccess,w=l(h),v=q,L=async()=>{if(De(),q!==v)throw new Error("Editor scope changed before scope switch commit.");let j=q.getState({cloneDocuments:!1}).documentRevision;if(j!==D)throw new Error(`Editor scope switch revision mismatch: expected ${D}, received ${j}.`);if(q===h)return yt.getSnapshot();let G=q.getState({cloneDocuments:!1}),U=h.getState(),B=f(),oe=Math.max(G.documentRevision,U.documentRevision)+1,se=Math.max(G.documentStructureRevision,U.documentStructureRevision)+1,Ke={...U,documentRevision:oe,documentStructureRevision:se},ge=Oe("rebase",Ke,B),xe=vs(Ke,t,ge.cursor);return Ot(h,o,()=>{h.advanceRevisionsForScopeSwitch(oe,se)}),w.establish(),q=h,sr(ge),xe};try{return I?(jn(I),await L()):await kt(L)}catch(j){throw w.release(),j}},runExternalCommandMutation(h,M){De();let D=ho(h?.commandId,"commandId");ho(h?.requestId,"requestId");let I=ho(h?.idempotencyKey,"idempotencyKey"),w=ho(h?.fingerprint,"fingerprint"),v=JSON.stringify([D,I]);if(!Number.isSafeInteger(h?.expectedDocumentRevision)||h.expectedDocumentRevision<0)throw new Error("External command authoring mutation expectedDocumentRevision must be a non-negative safe integer.");let L=h.expectedDocumentRevision;if(typeof M!="function")throw new Error("External command authoring mutation handler is required.");let j=Dr.get(v);if(j){if(j.fingerprint!==w||j.expectedDocumentRevision!==L)throw new Error(`External command authoring idempotency conflict: ${I}`);return j.result}let G=q;$+=1;let U=kt(()=>{let B=null,oe=null,se=!0,Ke=E3(G,()=>{if(!se)throw new Error("Browser authoring Session access is expired.")},xe=>Ot(G,o,xe)),ge=()=>{if(se=!1,B!==null&&oe!==null&&q===G){let xe=q.getState({cloneDocuments:!1});xe.documentRevision!==B&&sr(Oe("document",xe,oe))}$-=1,Ze()};try{if(De(),q!==G)throw new Error(`Browser authoring document scope changed before execution: ${D}`);if(B=q.getState({cloneDocuments:!1}).documentRevision,B!==L)throw new Error(`Browser authoring revision mismatch for ${D}: expected ${L}, received ${B}.`);oe=f();let xe=vd(G,o,()=>M(Ke));return xe&&typeof xe=="object"&&"then"in xe&&typeof xe.then=="function"?Promise.resolve(xe).finally(ge):(ge(),xe)}catch(xe){throw ge(),xe}},!0);return Dr.set(v,{fingerprint:w,expectedDocumentRevision:L,result:U}),U},tryRunExternalCommandMutationImmediately(h,M){De();let D=ho(h?.commandId,"commandId");ho(h?.requestId,"requestId");let I=ho(h?.idempotencyKey,"idempotencyKey"),w=ho(h?.fingerprint,"fingerprint"),v=JSON.stringify([D,I]);if(!Number.isSafeInteger(h?.expectedDocumentRevision)||h.expectedDocumentRevision<0)throw new Error("External command authoring mutation expectedDocumentRevision must be a non-negative safe integer.");let L=h.expectedDocumentRevision;if(typeof M!="function")throw new Error("External command authoring mutation handler is required.");let j=Dr.get(v);if(j){if(j.fingerprint!==w||j.expectedDocumentRevision!==L)throw new Error(`External command authoring idempotency conflict: ${I}`);return j.hasImmediateValue?{ok:!0,value:j.immediateValue,reused:!0}:{ok:!1,reason:"busy"}}if(O>0)return{ok:!1,reason:"busy"};let G=q.getState({cloneDocuments:!1}).documentRevision;if(G!==L)throw new Error(`Browser authoring revision mismatch for ${D}: expected ${L}, received ${G}.`);let U=f();$+=1;let B=q.beginTransaction(),oe=!1;try{let se=M(B.session);if(se&&typeof se=="object"&&"then"in se&&typeof se.then=="function")throw new Error("Immediate Browser authoring mutations must be synchronous.");let Ke=B.session.getState({cloneDocuments:!1}),ge=Ke.documentRevision!==G?Oe("document",Ke,U):null;return Ot(q,o,()=>{B.commit("document")}),oe=!0,ge&&sr(ge),Dr.set(v,{fingerprint:w,expectedDocumentRevision:L,result:Promise.resolve(se),immediateValue:se,hasImmediateValue:!0}),{ok:!0,value:se,reused:!1}}finally{oe||B.discard(),$-=1,Ze()}},runSerializedExternalMutation(h,M,D){if(De(),jn(h),!Number.isSafeInteger(M)||M<0)throw new Error("Serialized external command mutation expectedDocumentRevision must be a non-negative safe integer.");let I=q.getState({cloneDocuments:!1}).documentRevision;if(I!==M)throw new Error(`Serialized external command mutation revision mismatch: expected ${M}, received ${I}.`);let w=q.beginTransaction(),v=!1;try{let L=D(w.session);if(L&&typeof L=="object"&&"then"in L&&typeof L.then=="function")throw new Error("Serialized external command mutations must be synchronous.");return Ot(q,o,()=>{w.commit("document")}),v=!0,L}finally{v||w.discard()}},dispose(){if(!C){C=!0,nb.delete(yt),bf(new Error("Editor Authoring Host is disposed.")),b.abort();for(let h of te)r.cancelOperation(h);for(let h of P.splice(0).reverse())h();for(let h of[...x].reverse())h();R.clear(),Ze()}},drain(){return C?He:Promise.resolve()}};nb.set(yt,h=>{De();let M=r.registerCommand(yC({...h,authorityTransaction:"composed"})),D=!0,I=()=>{D&&(D=!1,x.delete(I),M())};return x.add(I),I});try{P.push(Pa(T3(yt,()=>E))),P.push(Pa(P3((h,M)=>{hp(h,M.documentChanged,M.transaction.projectionImpact,Ne)}))),P.push(Pa(A3((h,M)=>{hp(h,M.documentChanged,M.transaction.projectionImpact,Ne)})))}catch(h){nb.delete(yt);for(let M of P.splice(0).reverse())M();for(let M of[...x].reverse())M();throw tc(),m(),e.disposeCommandSystem!==!1&&r.dispose(),h}return yt;function De(){if(C)throw new Error("Editor Authoring Host is disposed.")}function jn(h){if(!h||typeof h!="object"||!Ut.has(h))throw new Error("Editor Authoring Host serialized access is invalid or expired.")}function kt(h,M=!1){let D=M&&O===0;O+=1;let I=k,w;k=new Promise(j=>{w=j});let v=()=>{O-=1,w(),Ze()},L=()=>{try{let j=h();return j&&typeof j=="object"&&"then"in j&&typeof j.then=="function"?Promise.resolve(j).finally(v):(v(),Promise.resolve(j))}catch(j){return v(),Promise.reject(j)}};return D?L():I.then(L)}async function Sl(h,M){return b.signal.aborted?Vd(M):new Promise((D,I)=>{let w=()=>D(Vd(M));b.signal.addEventListener("abort",w,{once:!0}),h().then(v=>{b.signal.removeEventListener("abort",w),D(v)},v=>{b.signal.removeEventListener("abort",w),I(v)})})}function Ze(){!C||de||$>0||O>0||(de=!0,tc(),m(),e.disposeCommandSystem!==!1&&r.dispose(),K())}}function b3(e){return Object.freeze({get catalogRevision(){return e.catalogRevision},get executionAuthorityInstalled(){return e.executionAuthorityInstalled},listManifests:()=>e.listManifests(),getCatalog:t=>e.getCatalog(t),describeCommand:t=>e.describeCommand(t),invoke:t=>e.invoke(t),execute:t=>e.execute(t),getOperation:t=>e.getOperation(t),getOperationByRequestId:t=>e.getOperationByRequestId(t),cancelOperation:t=>e.cancelOperation(t)})}function E3(e,t,r){return new Proxy(Object.create(null),{get(n,o){if(t(),!y3.has(o))throw new Error(`Browser authoring Session member is unavailable: ${String(o)}.`);let i=Reflect.get(e,o,e);if(typeof i!="function")throw new Error(`Browser authoring Session method is unavailable: ${String(o)}.`);return(...a)=>(t(),r(()=>Reflect.apply(i,e,a)))},set(){throw new Error("Browser authoring Session properties are immutable.")},defineProperty(){throw new Error("Browser authoring Session properties are immutable.")},deleteProperty(){throw new Error("Browser authoring Session properties are immutable.")}})}function I3(e,t,r=!1){if(!e.idempotencyKey)return Ct("command.idempotencyKeyRequired","Authoring write commands require an idempotency key.");let n=e.expectedRevision?.document;if(n===void 0)return Ct("command.expectedRevisionRequired","Authoring write commands require expectedRevision.document.");if(r)return null;let o=t.getMetadata().documentRevision;return n!==o?Ct("command.documentRevisionMismatch",`Expected document revision ${n}, received ${o}.`,{expected:n,actual:o}):null}function T3(e,t){let r=jC(e.serviceInstanceId);return{manifest:{schemaVersion:1,id:"authoring.snapshot.get",version:3,title:"Get Authoring Snapshot",description:"Reads bounded authoring identity, history, and document-size metadata.",target:"authoring",access:"read",stability:"stable",inputSchema:YO,outputSchema:JO,effects:{persistence:"none",undoable:!1,idempotent:!0},presentation:{category:"Authoring",inputMode:"none",keywords:["snapshot","document","revision","summary"],examples:["{}",'{"expectedDocumentRevision":12}']}},handler:(n,o)=>r(n,o.session.getState({cloneDocuments:!1}),t())}}function P3(e){return{manifest:BC({id:"history.undo",title:"Undo",target:"authoring",access:"write",persistence:"authoring",idempotent:!1,shortcut:"Mod+Z",menu:{path:["Edit","Undo"]}}),available:()=>!0,handler:(t,r)=>{let n=r.session.undo();return n?(e(r.session,n),{ok:!0,output:zC(r.session,n)}):{ok:!1,diagnostics:[Ct("history.undoUnavailable","There is no command to undo.")]}}}}function A3(e){return{manifest:BC({id:"history.redo",title:"Redo",target:"authoring",access:"write",persistence:"authoring",idempotent:!1,shortcut:"Mod+Shift+Z / Ctrl+Y",menu:{path:["Edit","Redo"]}}),handler:(t,r)=>{let n=r.session.redo();return n?(e(r.session,n),{ok:!0,output:zC(r.session,n)}):{ok:!1,diagnostics:[Ct("history.redoUnavailable","There is no command to redo.")]}}}}function BC(e){return{schemaVersion:1,id:e.id,version:1,title:e.title,target:e.target,access:e.access,stability:"stable",inputSchema:{type:"object",additionalProperties:!1},outputSchema:{type:"object"},effects:{persistence:e.persistence,undoable:e.id==="history.undo"||e.id==="history.redo",idempotent:e.idempotent},presentation:{category:"History",inputMode:"none",...e.shortcut?{shortcut:e.shortcut}:{},...e.menu?{menu:e.menu}:{}}}}function zC(e,t){let r=e.getState({cloneDocuments:!1});return{documentRevision:r.documentRevision,dirty:r.dirty,canUndo:r.canUndo,canRedo:r.canRedo,...t.transaction.presentationImpact?{presentationImpact:structuredClone(t.transaction.presentationImpact)}:{},...t.transaction.projectionImpact?{projectionImpact:structuredClone(t.transaction.projectionImpact)}:{}}}var UC=["syncTransformIds","syncMetadataIds","syncAppearanceIds","reprojectIds","createdNodeIds","deletedNodeIds"];function hp(e,t,r,n){if(!t)return;let o=r??{type:"rebuild",reason:"unclassified-document-change"},i=n.get(e);if(i?.type==="rebuild")return;if(o.type==="rebuild"){n.set(e,{type:"rebuild",...o.reason?{reason:o.reason}:{}});return}let a=i??x3();for(let s of UC)for(let c of o[s]??[]){let d=a.ids[s];if(d.has(c))continue;let u=a.idCount+1,l=a.idBytes+M3(c)+3;if(u>p3||l>f3){n.set(e,{type:"rebuild",reason:"projection-impact-budget-exceeded"});return}d.add(c),a.idCount=u,a.idBytes=l}i||n.set(e,a)}function x3(){return{type:"incremental",ids:{syncTransformIds:new Set,syncMetadataIds:new Set,syncAppearanceIds:new Set,reprojectIds:new Set,createdNodeIds:new Set,deletedNodeIds:new Set},idCount:0,idBytes:0}}function M3(e){let t=0;for(let r=0;r<e.length;r+=1){let n=e.charCodeAt(r);n<128?t+=1:n<2048?t+=2:n>=55296&&n<=56319&&r+1<e.length&&e.charCodeAt(r+1)>=56320&&e.charCodeAt(r+1)<=57343?(t+=4,r+=1):t+=3}return t}function LC(e,t){let r=t.get(e);if(!r)return;if(r.type==="rebuild")return{type:"rebuild",...r.reason?{reason:r.reason}:{}};let n={type:"incremental"};for(let o of UC)r.ids[o].size>0&&(n[o]=[...r.ids[o]]);return n}function D3(e){if(!e.projectionImpact&&!e.presentationImpact)return e;let{projectionImpact:t,presentationImpact:r,...n}=e;return n}function R3(e){return{...e,...e.origin?{origin:Tr(e.origin)}:{},...e.projectionImpact?{projectionImpact:VC(e.projectionImpact)}:{}}}function VC(e){return e.type==="rebuild"?{type:"rebuild",...e.reason?{reason:e.reason}:{}}:{type:"incremental",...e.syncTransformIds?{syncTransformIds:[...e.syncTransformIds]}:{},...e.syncMetadataIds?{syncMetadataIds:[...e.syncMetadataIds]}:{},...e.syncAppearanceIds?{syncAppearanceIds:[...e.syncAppearanceIds]}:{},...e.reprojectIds?{reprojectIds:[...e.reprojectIds]}:{},...e.createdNodeIds?{createdNodeIds:[...e.createdNodeIds]}:{},...e.deletedNodeIds?{deletedNodeIds:[...e.deletedNodeIds]}:{}}}function vs(e,t,r){return{serviceInstanceId:t,documentRevision:e.documentRevision,documentStructureRevision:e.documentStructureRevision,eventCursor:r,dirty:e.dirty,canUndo:e.canUndo,canRedo:e.canRedo,history:{entries:e.history.entries.slice(0,FC).map(n=>({...n,...n.origin?{origin:Tr(n.origin)}:{}}))},document:e.workingDocument,savedDocument:e.persistedDocument}}function O3(e,t,r,n){return{serviceInstanceId:r,documentRevision:e.documentRevision,documentStructureRevision:e.documentStructureRevision,eventCursor:n,dirty:e.dirty,canUndo:e.canUndo,canRedo:e.canRedo,history:{entries:e.history.entries.slice(0,FC).map(o=>({...o,...o.origin?{origin:Tr(o.origin)}:{}}))},savedDocument:t}}function So(e,t,r,n){return{ok:!1,processedOperations:t,results:r,diagnostics:Array.isArray(n)?[...n]:[n],metadata:e}}function Ud(e,t,r,n={}){return{severity:"error",source:"command-system",code:e,message:t,details:{...n,...r?{opId:r.opId,commandId:r.commandId}:{}}}}function yp(e,t,r){return{...e,...e.details?{details:{...e.details,operationIndex:r,opId:t.opId,commandId:t.commandId}}:{details:{operationIndex:r,opId:t.opId,commandId:t.commandId}}}}async function C3(e){if(!e.available)return{available:!0,diagnostics:[]};try{let t=await e.available();return t===!0?{available:!0,diagnostics:[]}:t===!1?{available:!1,diagnostics:[Ct("command.unavailable","Editor command is unavailable.")]}:typeof t=="string"?{available:!1,diagnostics:[Ct("command.unavailable",t.trim()||"Editor command is unavailable.")]}:!t||typeof t!="object"||typeof t.available!="boolean"?{available:!1,diagnostics:[Ct("command.availabilityInvalid","Editor command availability returned an invalid result.")]}:{available:t.available,diagnostics:t.reasons?.length?t.reasons.map(r=>({...r,...r.details?{details:{...r.details}}:{}})):t.available?[]:[Ct("command.unavailable","Editor command is unavailable.")]}}catch(t){return{available:!1,diagnostics:[Ct("command.availabilityException",t instanceof Error?t.message:String(t))]}}}function w3(e,t){let r=0,n=(o,i)=>{if(r+=1,i>h3||r>1e5)throw new Error("Transaction input exceeds the reference resolution limit.");if(o===null||typeof o=="string"||typeof o=="number"||typeof o=="boolean")return o;if(Array.isArray(o))return o.map(c=>n(c,i+1));let a=Object.entries(o);if(a.length===1&&a[0]?.[0]==="$ref"){let c=a[0][1];if(typeof c!="string"||!c.trim())throw new Error("Transaction reference must be a non-empty string.");let[d,...u]=c.split(".");if(!d||!t.has(d))throw new Error(`Transaction reference alias is unavailable: ${d||c}`);let l=t.get(d);for(let m of u){if(!m||l===null||typeof l!="object")throw new Error(`Transaction reference path is unavailable: ${c}`);if(Array.isArray(l)){let p=Number(m);if(!Number.isSafeInteger(p)||p<0||p>=l.length)throw new Error(`Transaction reference path is unavailable: ${c}`);l=l[p]}else if(Object.prototype.hasOwnProperty.call(l,m))l=l[m];else throw new Error(`Transaction reference path is unavailable: ${c}`)}if(l===void 0)throw new Error(`Transaction reference path is unavailable: ${c}`);return n(l,i+1)}let s=Object.create(null);for(let[c,d]of a)d!==void 0&&(s[c]=n(d,i+1));return s};return n(e,0)}function v3(e){if(e===void 0)return;let t=0,r=o=>({truncated:!0,reason:o}),n=(o,i)=>{if(t+=1,i>g3)return r("max-depth");if(t>S3)return r("max-nodes");if(o===null||typeof o=="boolean")return o;if(typeof o=="number")return Number.isFinite(o)?o:String(o);if(typeof o=="string")return o.length<=GC?o:`${o.slice(0,GC)}...`;if(Array.isArray(o)){let c=o.slice(0,Sp).map(d=>n(d,i+1));return o.length>Sp&&c.push(r("max-array-entries")),c}if(!o||typeof o!="object")return String(o);let a=Object.create(null),s=Object.entries(o).slice(0,Sp);for(let[c,d]of s)a[c]=n(d,i+1);return Object.keys(o).length>Sp&&(a.__truncated__=r("max-object-entries")),a};return n(e,0)}function k3(){return new Promise(e=>setTimeout(e,0))}function Vd(e){return{ok:!1,diagnostics:[Ct("command.cancelled",`Editor command was cancelled: ${e}`)]}}function Ct(e,t,r){return{severity:"error",source:"command-system",code:e,message:t,...r?{details:r}:{}}}function ho(e,t){if(typeof e!="string"||!e.trim())throw new Error(`Editor Authoring Host ${t} is required.`);return e.trim()}function _3(e,t){return Number.isInteger(e)&&e>0?e:t}var N3=200,j3=100,G3=2e3;function KC(e={}){let t=bp(e.maxTraces,N3),r=bp(e.maxStepsPerTrace,j3),n=bp(e.maxSummaryCharacters,G3),o=new Map;return Object.freeze({recordOperation(i){let a=i.operation,s=i.invocation.traceId??`operation:${a.operationId}`,c=ob(a.createdAt),d=ob(a.completedAt??a.startedAt??a.createdAt),u=o.get(s),l=L3(a.diagnostics??[]),m=a.intentCommandId??a.commandId,p={id:i.invocation.traceStepId??a.operationId,traceId:s,source:$3(i.invocation.source),layer:i.manifest?.target==="renderer"?"L1":"L2",action:m,status:a.status==="completed"?"ok":"failed",startedAt:ob(a.startedAt??a.createdAt),endedAt:d,durationMs:Math.max(0,(a.completedAt??a.createdAt)-(a.startedAt??a.createdAt)),commandId:a.commandId,...a.intentCommandId?{intentCommandId:a.intentCommandId}:{},requestId:a.requestId,origin:structuredClone(a.origin),inputSummary:HC(i.invocation.input,n),...a.output!==void 0?{outputSummary:HC(a.output,n)}:{},...l.length?{diagnostics:l}:{}},f=[...u?.steps??[],p].slice(-r),g=f.reduce((P,x)=>P+(x.diagnostics?.length??0),0),S={schemaVersion:1,traceId:s,status:f.some(P=>P.status==="failed")?"failed":"ok",createdAt:u?.createdAt??c,updatedAt:d,stepCount:f.length,diagnosticCount:g,artifactCount:0,lastAction:m,...l[0]?.message?{lastMessage:l[0].message}:{},steps:f};for(o.delete(s),o.set(s,S);o.size>t;)o.delete(o.keys().next().value)},read(i){let a=i.traceId?o.has(i.traceId)?[o.get(i.traceId)]:[]:[...o.values()].reverse(),s=B3(i.cursor),c=bp(i.limit,100),d=a.slice(s,s+c).map(F3),u=s+d.length;return{traces:d,...u<a.length?{nextCursor:String(u)}:{}}},clear(){o.clear()}})}function HC(e,t){let r;try{r=JSON.stringify(e===void 0?null:e)}catch{r='"[unserializable]"'}return{preview:r.length>t?`${r.slice(0,t)}\u2026`:r,characters:r.length,truncated:r.length>t}}function L3(e){return e.map(t=>structuredClone(t))}function F3(e){return structuredClone(e)}function $3(e){return e==="agent-cli"?"agent":"editor"}function ob(e){return new Date(Number.isFinite(e)?e:0).toISOString()}function B3(e){if(e===void 0)return 0;let t=Number(e);if(!Number.isSafeInteger(t)||t<0)throw new Error("Trace cursor is invalid.");return t}function bp(e,t){return Number.isSafeInteger(e)&&Number(e)>0?Number(e):t}var JC=100,z3=100,U3=32,WC=32,V3=50,XC=3e4;function QC(e){let t=e.host,r=e.now??Date.now,n=Kd(e.maxCatalogPageSize,JC),o=Kd(e.maxTracePageSize,z3),i=Kd(e.maxBrowserAttachments,U3),a=Kd(e.browserAttachmentLeaseMs,4e4),s=Math.max(a*2,6e4),c=Kd(e.browserOperationTimeoutMs,3e4),d=new Map,u=new Map,l=new Map,m=new Map,p=0,f=0,g=!1,S=setInterval(Sl,Math.min(1e3,Math.max(25,Math.floor(a/2))));return S.unref?.(),Object.freeze({serviceInstanceId:t.serviceInstanceId,async handle(h,M=["read","write"],D){if(g)return re("service.disposed","Editor Service Gateway is disposed.");if(Sl(),!h||typeof h!="object"||typeof h.kind!="string")return re("request.invalid","Editor Service Gateway request is invalid.");try{switch(h.kind){case"status":return{ok:!0,kind:"status",status:P()};case"commands.list":return{ok:!0,kind:"commands",page:await Ne("",h.cursor,h.limit)};case"commands.search":return{ok:!0,kind:"commands",page:await Ne(h.query,h.cursor,h.limit)};case"commands.describe":return{ok:!0,kind:"command",command:await Dr(h.commandId)};case"command.invoke":return Ut(h.invocation,h.timeoutMs,h.includeAuthoringSnapshot===!0,M,D);case"operation.get":{let I=h,w=typeof I.operationId=="string",v=typeof I.requestId=="string";return w===v?re("operation.identityInvalid","Operation query requires exactly one operationId or requestId."):{ok:!0,kind:"operation",operation:w?t.commandSystem.getOperation(I.operationId):t.commandSystem.getOperationByRequestId(I.requestId)}}case"operation.cancel":return l.get(h.operationId)?.dispatched?{ok:!0,kind:"cancel",cancelled:!1,operation:t.commandSystem.getOperation(h.operationId)}:{ok:!0,kind:"cancel",cancelled:t.commandSystem.cancelOperation(h.operationId),operation:t.commandSystem.getOperation(h.operationId)};case"trace.get":{let I=ib(h.limit,o);return{ok:!0,kind:"traces",page:e.readTraces?await e.readTraces({traceId:h.traceId,cursor:h.cursor,limit:I}):{traces:[]}}}case"authoring.snapshot":{let I=h.afterEventCursor===void 0?{kind:"snapshot-required",reason:"cursor.invalid",snapshot:t.getSnapshot()}:h.timeoutMs===void 0?t.readEvents(h.afterEventCursor,h.serviceInstanceId):await t.waitForEvents(h.afterEventCursor,h.serviceInstanceId,ab(h.timeoutMs));if(I.kind==="snapshot-required"){let w=await e.readAuthoringPersistence?.();w&&(I.snapshot={...I.snapshot,persistence:{...w}})}return{ok:!0,kind:"authoring.snapshot",result:I}}case"authoring.checkpoint":{if(h.serviceInstanceId!==t.serviceInstanceId)return re("service.instanceConflict",`Editor Service instance changed: expected ${h.serviceInstanceId}, current ${t.serviceInstanceId}.`);let I=t.getMetadata();if(h.documentRevision!==I.documentRevision)return re("authoring.checkpointRevisionMismatch",`Editor checkpoint revision changed: expected ${h.documentRevision}, current ${I.documentRevision}.`);let w=t.getCheckpoint(),v=await e.readAuthoringPersistence?.();return{ok:!0,kind:"authoring.checkpoint",checkpoint:{...w,...v?{persistence:{...v}}:{}}}}case"document.export.get":return{ok:!0,kind:"document.export",artifact:e.readDocumentExport?await e.readDocumentExport(Bt(h.transactionId,"transactionId")):null};case"document.export.discard":return M.includes("write")?{ok:!0,kind:"document.export.discard",discarded:e.discardDocumentExport?await e.discardDocumentExport(Bt(h.transactionId,"transactionId")):!1}:re("auth.writeScopeRequired","Write scope is required to discard a prepared document export.");case"transaction.begin":return M.includes("write")?x(h,D):ze("begin");case"transaction.append":return M.includes("write")?T(h,D):ze("append");case"transaction.preflight":return M.includes("write")?R(h,D):ze("preflight");case"transaction.commit":return M.includes("write")?A(h,D):ze("commit");case"transaction.get":return E(h,D);case"transaction.abort":return M.includes("write")?C(h,D):ze("abort");case"attachment.register":return gl(h.attachment);case"attachment.poll":return bf(h.attachmentId,h.leaseId,h.timeoutMs);case"attachment.result":return Pa(h.attachmentId,h.leaseId,h.result);case"attachment.unregister":return tc(h.attachmentId,h.leaseId);default:return re("request.unknown","Editor Service Gateway request kind is unknown.")}}catch(I){return re("request.failed",I instanceof Error?I.message:String(I))}},forwardBrowserCommand:sr,dispose(){if(!g){g=!0,clearInterval(S);for(let h of d.values())De(h,"attachment.disconnected");d.clear();for(let h of l.values())kt(h,{ok:!1,diagnostics:[Zr("service.disposed","Editor Service Gateway is disposed.")]});l.clear(),m.clear()}}});function P(){let h=t.getMetadata(),M=[...d.values()].filter(D=>D.connected).map(D=>({attachmentId:D.registration.attachmentId,...D.registration.label?{label:D.registration.label}:{},targets:D.registration.targets,commandCount:D.registration.commandIds.length,...D.registration.ownerId?{ownerId:D.registration.ownerId,ownerGeneration:D.registration.ownerGeneration}:{}})).sort((D,I)=>D.attachmentId.localeCompare(I.attachmentId));return{ok:!0,protocolVersion:2,serviceInstanceId:t.serviceInstanceId,canonicalProjectRoot:e.canonicalProjectRoot,packageVersion:e.packageVersion,buildKey:e.buildKey,startedAt:e.startedAt,documentRevision:h.documentRevision,catalogRevision:t.commandSystem.catalogRevision,dirty:h.dirty,transactions:{active:[...m.values()].filter(D=>!Hd(D.state)).length,retained:[...m.values()].filter(D=>Hd(D.state)).length,maxOperationsPerTransaction:sp,maxBytesPerTransaction:cp,maxOperationsPerAppend:dp,maxBytesPerAppend:lp},browserAttachmentCount:M.length,browserAttachments:M,warnings:K3(M),recovery:e.recovery?{...e.recovery}:{draftJournal:!1,unsavedWorkingStateRecovered:!1,message:"Service restart loads the last saved checkpoint; unsaved working state is not recoverable."}}}function x(h,M){let D=k(M);if(h.serviceInstanceId!==void 0&&h.serviceInstanceId!==t.serviceInstanceId)return He(h.serviceInstanceId);if(!Number.isSafeInteger(h.expectedDocumentRevision)||h.expectedDocumentRevision<0)return re("transaction.documentRevisionInvalid","Transaction expectedDocumentRevision must be a non-negative safe integer.");let I=h.transactionId===void 0?void 0:Bt(h.transactionId,"transactionId"),w=I?m.get(I):void 0;if(w)return w.baseDocumentRevision!==h.expectedDocumentRevision||w.label!==ks(h.label)||w.traceId!==ks(h.traceId)||!qC(w.origin,D)?re("transaction.idempotencyConflict",`Transaction ID was reused with different input: ${I}`):O(w);let v=t.getMetadata();if(h.expectedDocumentRevision!==v.documentRevision)return re("transaction.documentRevisionMismatch",`Expected document revision ${h.expectedDocumentRevision}, received ${v.documentRevision}.`);if([...m.values()].filter(B=>!Hd(B.state)).length>=WC)return re("transaction.activeLimitExceeded",`Active transaction limit reached: ${WC}.`);let j=I??`${t.serviceInstanceId}:transaction:${++f}`,G=Ze(),U={transactionId:j,serviceInstanceId:t.serviceInstanceId,baseDocumentRevision:h.expectedDocumentRevision,...ks(h.label)?{label:ks(h.label)}:{},...ks(h.traceId)?{traceId:ks(h.traceId)}:{},origin:D,operations:[],results:[],createdAt:G,state:"open",acceptedOperations:0,acceptedBytes:0,processedOperations:0,dirty:v.dirty,diagnostics:[],updatedAt:G};return m.set(j,U),O(U)}function T(h,M){let D=b(h.transactionId,h.serviceInstanceId,M);if(!D.ok)return D.response;let I=D.record;if(I.state!=="open")return re("transaction.stateConflict",`Transaction cannot append while ${I.state}: ${I.transactionId}`);if(!Number.isSafeInteger(h.sequence)||h.sequence<0)return re("transaction.sequenceInvalid","Transaction append sequence must be a non-negative safe integer.");let w=W3(h.operations);if(w.length===0)return re("transaction.appendEmpty","Transaction append requires at least one operation.");if(w.length>dp)return re("transaction.appendOperationLimitExceeded",`Transaction append exceeds ${dp} operations.`);let v=q3(w);if(v>lp)return re("transaction.appendByteLimitExceeded",`Transaction append exceeds ${lp} bytes.`);if(h.sequence<I.operations.length){let G=I.operations.slice(h.sequence,h.sequence+w.length);return h.sequence+w.length<=I.operations.length&&JSON.stringify(G)===JSON.stringify(w)?O(I):re("transaction.appendIdempotencyConflict",`Transaction append sequence ${h.sequence} conflicts with accepted operations.`)}if(h.sequence!==I.operations.length)return re("transaction.sequenceMismatch",`Expected append sequence ${I.operations.length}, received ${h.sequence}.`);if(I.operations.length+w.length>sp)return re("transaction.operationLimitExceeded",`Transaction exceeds ${sp} operations.`);if(I.acceptedBytes+v>cp)return re("transaction.byteLimitExceeded",`Transaction exceeds ${cp} bytes.`);let L=new Set(I.operations.map(G=>G.opId)),j=new Set(I.operations.flatMap(G=>G.as?[G.as]:[]));for(let G of w){if(L.has(G.opId))return re("transaction.opIdConflict",`Transaction operation ID is duplicated: ${G.opId}`);if(G.as&&j.has(G.as))return re("transaction.aliasConflict",`Transaction alias is duplicated: ${G.as}`);L.add(G.opId),G.as&&j.add(G.as)}return I.operations.push(...w),I.acceptedOperations+=w.length,I.acceptedBytes+=v,I.updatedAt=Ze(),O(I)}async function R(h,M){let D=b(h.transactionId,h.serviceInstanceId,M);if(!D.ok)return D.response;let I=D.record;if(I.state==="preflighted")return O(I);if(I.state!=="open")return re("transaction.stateConflict",`Transaction cannot preflight while ${I.state}: ${I.transactionId}`);if(I.operations.length===0)return re("transaction.empty","Transaction has no operations.");I.state="preflighting",I.updatedAt=Ze();try{let w=await t.runTransactionBatch({transactionId:I.transactionId,baseDocumentRevision:I.baseDocumentRevision,operations:I.operations,mode:"preflight",...I.label?{label:I.label}:{},principal:wt(I.origin.principal),source:I.origin.source,sessionId:I.origin.sessionId,...I.origin.surface?{surface:I.origin.surface}:{},...I.traceId?{traceId:I.traceId}:{}});$(I,w),I.state=w.ok?"preflighted":"failed"}catch(w){te(I,"transaction.preflightException",w)}return I.updatedAt=Ze(),Hd(I.state)&&de(I),O(I)}async function A(h,M){let D=b(h.transactionId,h.serviceInstanceId,M);if(!D.ok)return D.response;let I=D.record;if(I.state==="working_committed")return O(I);if(I.state!=="open"&&I.state!=="preflighted")return re("transaction.stateConflict",`Transaction cannot commit while ${I.state}: ${I.transactionId}`);if(I.operations.length===0)return re("transaction.empty","Transaction has no operations.");I.state="committing",I.updatedAt=Ze();try{let w=await t.runTransactionBatch({transactionId:I.transactionId,baseDocumentRevision:I.baseDocumentRevision,operations:I.operations,mode:"commit",...I.label?{label:I.label}:{},principal:wt(I.origin.principal),source:I.origin.source,sessionId:I.origin.sessionId,...I.origin.surface?{surface:I.origin.surface}:{},...I.traceId?{traceId:I.traceId}:{}});$(I,w),w.ok?(I.state="working_committed",I.committedRevision=w.metadata.documentRevision):I.state="failed"}catch(w){te(I,"transaction.commitException",w)}return I.updatedAt=Ze(),de(I),O(I)}function E(h,M){let D=b(h.transactionId,h.serviceInstanceId,M);return D.ok?O(D.record,h.cursor,h.limit):D.response}function C(h,M){let D=b(h.transactionId,h.serviceInstanceId,M);if(!D.ok)return D.response;let I=D.record;return I.state==="aborted"?O(I):I.state!=="open"&&I.state!=="preflighted"?re("transaction.stateConflict",`Transaction cannot abort while ${I.state}: ${I.transactionId}`):(I.state="aborted",I.updatedAt=Ze(),de(I),O(I))}function b(h,M,D){if(M!==t.serviceInstanceId)return{ok:!1,response:He(M)};let I=Bt(h,"transactionId"),w=m.get(I);return w?qC(w.origin,k(D))?{ok:!0,record:w}:{ok:!1,response:re("transaction.originConflict",`Transaction belongs to another trusted authoring session: ${I}`)}:{ok:!1,response:re("transaction.notFound",`Transaction was not found in this Editor Service instance: ${I}`)}}function k(h){return h?wt(h):{principal:{type:"agent",id:"fps-editor-agent"},source:"agent-cli",sessionId:`agent:${t.serviceInstanceId}`,surface:"agent-transaction"}}function O(h,M,D){let I=ib(D,XO),w=Z3(M,h),v=h.results.slice(w,w+I).map(G=>wt(G)),L=w+v.length;return{ok:!0,kind:"transaction",transaction:{transactionId:h.transactionId,serviceInstanceId:h.serviceInstanceId,state:h.state,phase:Y3(h.state),baseDocumentRevision:h.baseDocumentRevision,...h.committedRevision===void 0?{}:{workingDocumentRevision:h.committedRevision},dirty:h.dirty,acceptedOperations:h.acceptedOperations,acceptedBytes:h.acceptedBytes,processedOperations:h.processedOperations,createdAt:h.createdAt,updatedAt:h.updatedAt,allowedActions:J3(h.state),retry:X3(h),diagnostics:h.diagnostics.map(G=>wt(G)),results:{offset:w,returned:v.length,total:h.results.length,items:v,...L<h.results.length?{nextCursor:Q3(h,L)}:{}}}}}function $(h,M){h.processedOperations=M.processedOperations,h.results.splice(0,h.results.length,...M.results.map(D=>wt(D))),h.diagnostics=M.ok?[]:M.diagnostics.map(D=>wt(D)),h.dirty=M.metadata.dirty}function te(h,M,D){h.state="failed",h.diagnostics=[Zr(M,D instanceof Error?D.message:String(D))]}function de(h){h.operations.splice(0,h.operations.length),K()}function K(){let h=[...m.values()].filter(M=>Hd(M.state)).sort((M,D)=>M.updatedAt-D.updatedAt||M.transactionId.localeCompare(D.transactionId));for(;h.length>V3;){let M=h.shift();M&&m.delete(M.transactionId)}}function He(h){return re("transaction.serviceInstanceChanged",`Editor Service instance changed: expected ${h}, current ${t.serviceInstanceId}.`)}function ze(h){return re("auth.writeScopeRequired",`Write scope is required to ${h} an authoring transaction.`)}async function Ne(h,M,D){let I=typeof h=="string"?h.trim().toLocaleLowerCase():"",w=t.commandSystem.catalogRevision,v=tY(M,w,I),L=ib(D,n),j=t.commandSystem.listManifests().filter(oe=>rY(oe,I)).sort((oe,se)=>oe.id.localeCompare(se.id)),G=j.slice(v,v+L),U=(await Promise.all(G.map(oe=>Dr(oe.id)))).filter(oe=>oe!==null),B=v+G.length;return{catalogRevision:w,commands:U,...B<j.length?{nextCursor:eY(w,I,B)}:{}}}async function Dr(h){let M=await t.commandSystem.describeCommand(h);if(!M||M.manifest.target!=="view"&&M.manifest.target!=="renderer")return M;let D=M.manifest.target;return[...d.values()].some(w=>w.connected&&w.registration.targets.includes(D)&&w.registration.commandIds.includes(M.manifest.id))?M:{manifest:M.manifest,availability:{available:!1,reasons:[Zr(`${D}.sessionUnavailable`,`No Browser attachment is available for ${M.manifest.id}.`)]}}}async function Ut(h,M,D,I,w){let v=wt(h);w&&(v.principal=wt(w.principal),v.source=w.source,v.sessionId=w.sessionId,w.surface?v.surface=w.surface:delete v.surface);let L=v.expectedRevision?.serviceInstanceId;if(L!==void 0&&L!==t.serviceInstanceId)return re("service.instanceConflict",`Editor Service instance changed: expected ${L}, current ${t.serviceInstanceId}.`);let j=await t.commandSystem.describeCommand(v.commandId);if(!j)return re("command.unknown",`Editor command is not registered: ${v.commandId}`);if(j.manifest.access==="write"&&!I.includes("write"))return re("auth.writeScopeRequired",`Write scope is required: ${v.commandId}`);let G=Oe(j.manifest,v.clientId);if(!G.ok)return re(G.code,G.message);G.clientId&&(v.clientId=G.clientId);let U=t.invoke(v),B=ab(M);return B===0||await oY(U.completion,B),q(U.operationId,D)}function q(h,M){let D=t.commandSystem.getOperation(h);return{ok:!0,kind:"operation",operation:D,...M&&D?.status==="completed"?{authoringSnapshot:t.getSnapshot()}:{}}}function Oe(h,M){let D=M;for(let I of["view","renderer"]){if(!(I==="view"?h.requires?.viewAttached===!0:h.requires?.rendererAttached===!0))continue;if(!D){let j=[...d.values()].filter(G=>G.connected&&G.registration.targets.includes(I)&&G.registration.commandIds.includes(h.id));if(j.length===1)D=j[0].registration.attachmentId;else if(j.length>1)return{ok:!1,code:`${I}.clientIdRequired`,message:`Multiple Browser attachments can execute ${h.id}; pass --client-id with one of: ${j.map(G=>G.registration.attachmentId).sort().join(", ")}.`}}let v=D?d.get(D):void 0,L=h.target!==I||v?.registration.commandIds.includes(h.id)===!0;if(!(v?.connected&&v.registration.targets.includes(I)&&L))return{ok:!1,code:`${I}.sessionUnavailable`,message:`The requested Browser attachment is unavailable for ${h.id}${D?`: ${D}`:"."}`}}return{ok:!0,...D?{clientId:D}:{}}}function sr(h,M){let D=h.clientId?d.get(h.clientId):void 0;if(!D)return Promise.resolve({ok:!1,diagnostics:[Zr(`${M}.sessionUnavailable`,`No Browser attachment is available for ${h.commandId}.`)]});if(!D.connected||!D.registration.targets.includes(M)||!D.registration.commandIds.includes(h.commandId))return Promise.resolve({ok:!1,diagnostics:[Zr(`${M}.sessionUnavailable`,`The requested Browser attachment is unavailable for ${h.commandId}: ${h.clientId}.`)]});if(l.has(h.operationId))return Promise.resolve({ok:!1,diagnostics:[Zr("attachment.operationConflict",`Browser command is already forwarded: ${h.operationId}`)]});let I={requestId:h.requestId,operationId:h.operationId,invocation:nY(h)};return new Promise(w=>{let v={attachmentId:D.registration.attachmentId,request:I,resolve:w,signal:h.signal,onAbort:()=>{kt(v,{ok:!1,diagnostics:[Zr("command.cancelled",`Browser command was cancelled: ${h.commandId}`)]})},dispatched:!1,settled:!1};l.set(h.operationId,v),h.signal.addEventListener("abort",v.onAbort,{once:!0}),v.timeout=setTimeout(()=>{kt(v,{ok:!1,diagnostics:[Zr("command.timeout",`Browser command timed out: ${h.commandId}`)]})},c),v.timeout.unref?.(),D.operations.add(h.operationId);let L=D.waiters.values().next().value;L?(D.waiters.delete(L),v.dispatched=!0,L(wt(I))):D.queued.push(I)})}function gl(h){let M=H3(h),D=[],I=M.ownerGeneration;if(M.ownerId){let U=u.get(M.ownerId)?.generation;if(D=[...d.entries()].filter(([,B])=>B.registration.ownerId===M.ownerId),I===void 0){if(U===Number.MAX_SAFE_INTEGER)return re("attachment.ownerGenerationExhausted",`Browser attachment owner generation is exhausted: ${M.ownerId}.`);I=(U??0)+1}else if(U!==void 0&&I<U)return re("attachment.ownerGenerationStale",`Browser attachment owner generation is stale: ${M.ownerId}@${I}; latest is ${U}.`);if(U===I&&D.length>0)return re("attachment.ownerConflict",`Browser attachment owner is already registered: ${M.ownerId}@${I}.`)}let w=M.ownerId?Object.freeze({...M,ownerGeneration:I}):M,v=D.some(([U])=>U===w.attachmentId);if(d.has(w.attachmentId)&&!v)return re("attachment.conflict",`Browser attachment is already registered: ${w.attachmentId}`);if(d.size-D.length+1>i)return re("attachment.limitExceeded",`Browser attachment limit reached: ${i}.`);let j=new Map(t.commandSystem.listManifests().map(U=>[U.id,U]));for(let U of w.commandIds){let B=j.get(U);if(!B||B.target!=="view"&&B.target!=="renderer"||!w.targets.includes(B.target))return re("attachment.commandMismatch",`Browser attachment command does not match its registered target: ${U}`)}for(let[U,B]of D)De(B,"attachment.ownerReplaced"),d.delete(U);let G=`${t.serviceInstanceId}:${++p}`;return d.set(w.attachmentId,{registration:w,leaseId:G,queued:[],waiters:new Set,operations:new Set,connected:!0,lastSeenAt:Ze()}),w.ownerId&&u.set(w.ownerId,{generation:w.ownerGeneration,lastSeenAt:Ze()}),{ok:!0,kind:"attachment",attachmentId:w.attachmentId,leaseId:G,...w.ownerGeneration===void 0?{}:{ownerGeneration:w.ownerGeneration}}}async function bf(h,M,D){let I=d.get(Bt(h,"attachmentId"));if(!I?.connected)return re("attachment.notFound",`Browser attachment was not found: ${h}`);let w=yt(I,M);if(w)return w;I.lastSeenAt=Ze();let v=I.queued.shift();if(v){let G=l.get(v.operationId);return G&&(G.dispatched=!0),{ok:!0,kind:"attachment.poll",request:wt(v)}}let L=Math.min(ab(D),XC);if(L===0)return{ok:!0,kind:"attachment.poll",request:null};let j=await new Promise(G=>{let U=!1,B=se=>{U||(U=!0,clearTimeout(oe),I.waiters.delete(B),G(se))},oe=setTimeout(()=>B(null),L);I.waiters.add(B)});return I.connected&&(I.lastSeenAt=Ze()),{ok:!0,kind:"attachment.poll",request:j}}function Pa(h,M,D){let I=d.get(Bt(h,"attachmentId"));if(I){let v=yt(I,M);if(v)return v}let w=l.get(Bt(D?.operationId,"operationId"));return!I||!w||w.attachmentId!==h||w.request.requestId!==D.requestId||!w.dispatched||w.settled?{ok:!0,kind:"attachment.result",accepted:!1}:(I.lastSeenAt=Ze(),kt(w,D.ok?{ok:!0,output:iY(D.output),...D.diagnostics?.length?{diagnostics:wt(D.diagnostics)}:{}}:{ok:!1,diagnostics:D.diagnostics?.length?wt(D.diagnostics):[Zr("command.executionFailed",`Browser command failed: ${w.request.invocation.commandId}`)]}),{ok:!0,kind:"attachment.result",accepted:!0})}function tc(h,M){let D=Bt(h,"attachmentId"),I=d.get(D);if(!I)return{ok:!0,kind:"attachment.unregister",removed:!1};let w=yt(I,M);return w||(De(I,"attachment.disconnected"),jn(I),d.delete(D),{ok:!0,kind:"attachment.unregister",removed:!0})}function yt(h,M){return!h.registration.ownerId||M===h.leaseId?null:re("attachment.leaseMismatch",`Browser attachment lease is no longer current: ${h.registration.attachmentId}.`)}function De(h,M){h.connected=!1;for(let D of h.waiters)D(null);h.waiters.clear(),h.queued.splice(0);for(let D of h.operations){let I=l.get(D);!I||I.settled||kt(I,{ok:!1,diagnostics:[Zr(M,`Browser attachment disconnected: ${h.registration.attachmentId}`)]})}h.operations.clear()}function jn(h,M=Ze()){let D=h.registration.ownerId,I=h.registration.ownerGeneration;!D||I===void 0||u.set(D,{generation:I,lastSeenAt:M})}function kt(h,M){if(h.settled)return;h.settled=!0;let D=d.get(h.attachmentId);if(D){let I=D.queued.findIndex(w=>w.operationId===h.request.operationId);I>=0&&D.queued.splice(I,1),D.operations.delete(h.request.operationId)}l.delete(h.request.operationId),h.signal.removeEventListener("abort",h.onAbort),h.timeout&&clearTimeout(h.timeout),h.timeout=void 0,h.resolve(M)}function Sl(){if(g)return;let h=Ze();for(let[D,I]of d)h-I.lastSeenAt<=a||(De(I,"attachment.leaseExpired"),jn(I,h),d.delete(D));let M=new Set([...d.values()].map(D=>D.registration.ownerId).filter(D=>D!==void 0));for(let[D,I]of u)M.has(D)||h-I.lastSeenAt<=s||u.delete(D)}function Ze(){let h=r();return Number.isFinite(h)?h:Date.now()}}function H3(e){let t=Bt(e?.attachmentId,"attachmentId"),r=[...new Set(e?.targets??[])];if(r.length===0||r.some(a=>a!=="view"&&a!=="renderer"))throw new Error("Browser attachment targets must contain view or renderer.");let n=[...new Set((e?.commandIds??[]).map(a=>Bt(a,"commandId")))],o=e?.ownerId===void 0?void 0:Bt(e.ownerId,"ownerId"),i=e?.ownerGeneration;if(o===void 0&&i!==void 0)throw new Error("Browser attachment ownerGeneration requires ownerId.");if(i!==void 0&&(!Number.isSafeInteger(i)||i<1))throw new Error("Browser attachment ownerGeneration must be a positive safe integer.");return Object.freeze({attachmentId:t,targets:Object.freeze(r),commandIds:Object.freeze(n),...e.label?.trim()?{label:e.label.trim()}:{},...e.connectedAt?.trim()?{connectedAt:e.connectedAt.trim()}:{},...o?{ownerId:o,...i===void 0?{}:{ownerGeneration:i}}:{}})}function K3(e){let t=[],r=new Map,n=[];for(let o of e)if(o.ownerId){let i=r.get(o.ownerId)??[];i.push(o.attachmentId),r.set(o.ownerId,i)}else o.label==="Local Editor Command Host"&&n.push(o.attachmentId);for(let[o,i]of r)i.length<2||t.push(Object.freeze({code:"attachment.duplicateOwner",message:`Multiple Browser attachments share owner ${o}.`,attachmentIds:Object.freeze([...i].sort())}));return n.length>1&&t.push(Object.freeze({code:"attachment.possibleDuplicateLocalEditorHost",message:"Multiple legacy Local Editor Command Hosts are active without owner identity.",attachmentIds:Object.freeze([...n].sort())})),Object.freeze(t)}function Bt(e,t){if(typeof e!="string"||!e.trim())throw new Error(`${t} must be a non-empty string.`);return e.trim()}function ks(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function W3(e){if(!Array.isArray(e))throw new Error("Transaction operations must be an array.");return e.map((t,r)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Transaction operation ${r} must be an object.`);let n=t,o=Bt(n.opId,`operations[${r}].opId`),i=Bt(n.commandId,`operations[${r}].commandId`),a=n.as===void 0?void 0:Bt(n.as,`operations[${r}].as`);return{opId:o,commandId:i,...n.input===void 0?{}:{input:wt(n.input)},...a?{as:a}:{}}})}function q3(e){let t=JSON.stringify(e);return t===void 0?0:new TextEncoder().encode(t).byteLength}function Hd(e){return e==="working_committed"||e==="failed"||e==="aborted"}function Y3(e){switch(e){case"open":return"append";case"preflighting":case"preflighted":return"preflight";case"committing":return"commit";case"working_committed":return"complete";case"failed":return"failed";case"aborted":return"aborted"}}function J3(e){switch(e){case"open":return["append","preflight","commit","get","abort"];case"preflighting":case"committing":return["get"];case"preflighted":return["preflight","commit","get","abort"];case"working_committed":return["get","document.export","document.commit"];case"failed":case"aborted":return["get"]}}function X3(e){let t=e.diagnostics.some(r=>r.code==="transaction.documentRevisionMismatch"||r.code==="command.documentRevisionMismatch"||r.code==="service.instanceConflict"||r.code==="transaction.serviceInstanceChanged");return{retryable:e.state==="preflighting"||e.state==="committing",requiresRebase:t}}function Q3(e,t){return`${Ep(e.transactionId)}.${e.results.length}.${t}`}function Z3(e,t){if(e===void 0)return 0;let r=/^([0-9a-f]+)\.(\d+)\.(\d+)$/.exec(e);if(!r||r[1]!==Ep(t.transactionId)||Number(r[2])!==t.results.length)throw new Error("Transaction result cursor is invalid or stale.");let n=Number(r[3]);if(!Number.isSafeInteger(n)||n<0||n>t.results.length)throw new Error("Transaction result cursor offset is invalid.");return n}function Kd(e,t){return Number.isSafeInteger(e)&&e>0?e:t}function ib(e,t){if(e===void 0)return Math.min(JC,t);if(!Number.isSafeInteger(e)||e<=0)throw new Error("Pagination limit must be a positive safe integer.");return Math.min(e,t)}function ab(e){if(e===void 0)return 1e4;if(!Number.isSafeInteger(e)||e<0)throw new Error("timeoutMs must be a non-negative safe integer.");return Math.min(e,XC)}function eY(e,t,r){return`${e}.${r}.${Ep(t)}`}function tY(e,t,r){if(e===void 0)return 0;let n=/^(\d+)\.(\d+)\.([0-9a-f]+)$/.exec(e);if(!n||Number(n[1])!==t||n[3]!==Ep(r))throw new Error("Command catalog cursor is invalid or stale.");let o=Number(n[2]);if(!Number.isSafeInteger(o)||o<0)throw new Error("Command catalog cursor offset is invalid.");return o}function Ep(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16)}function rY(e,t){return t?[e.id,e.title,e.description??"",...e.presentation?.aliases??[],...e.presentation?.keywords??[]].some(r=>r.toLocaleLowerCase().includes(t)):!0}function re(e,t){return{ok:!1,diagnostics:[Zr(e,t)]}}function Zr(e,t){return{severity:"error",source:"transport",code:e,message:t}}function nY(e){return wt({commandId:e.commandId,...e.intentCommandId?{intentCommandId:e.intentCommandId}:{},...e.input!==void 0?{input:e.input}:{},requestId:e.requestId,...e.idempotencyKey?{idempotencyKey:e.idempotencyKey}:{},...e.expectedRevision?{expectedRevision:e.expectedRevision}:{},principal:e.principal,source:e.source,...e.sessionId?{sessionId:e.sessionId}:{},...e.surface?{surface:e.surface}:{},...e.traceId?{traceId:e.traceId}:{},...e.traceStepId?{traceStepId:e.traceStepId}:{},...e.transactionId?{transactionId:e.transactionId}:{},...e.clientId?{clientId:e.clientId}:{}})}function oY(e,t){return new Promise(r=>{let n=!1,o=()=>{n||(n=!0,clearTimeout(i),r())},i=setTimeout(o,t);e.then(o,o)})}function wt(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}function qC(e,t){return e.principal.type===t.principal.type&&e.principal.id===t.principal.id&&e.source===t.source&&e.sessionId===t.sessionId&&e.surface===t.surface}function iY(e){let t=JSON.stringify(e??null);return t===void 0?null:JSON.parse(t)}function H(e){return typeof e=="number"&&Number.isFinite(e)}function oi(e){return e==null||typeof e=="string"}function ma(e){return e==null||typeof e=="string"&&e.trim().length>0}function Ip(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function Tp(e){return e==null||typeof e=="boolean"}function rr(e){if(!e||typeof e!="object")return!1;let t=e;return H(t.x)&&H(t.y)&&H(t.z)}function Pp(e){if(!e||typeof e!="object")return!1;let t=e;return H(t.x)&&H(t.y)}function Wd(e){if(H(e))return e>=0;if(!e||typeof e!="object")return!1;let t=e;return H(t.x)&&t.x>=0&&H(t.y)&&t.y>=0&&H(t.z)&&t.z>=0}function Cn(e){if(!e||typeof e!="object")return!1;let t=e;return H(t.r)&&H(t.g)&&H(t.b)}function zt(e){return H(e)&&e>0}function wn(e){return H(e)&&e>=0}function pa(e){return H(e)&&e>=0&&e<=1}function Ap(e){if(!e||typeof e!="object")return!1;let t=e;return!(t.position!==void 0&&!rr(t.position)||t.rotation!==void 0&&!rr(t.rotation)||t.rotationDeg!==void 0&&!rr(t.rotationDeg)||t.scale!==void 0&&!Wd(t.scale))}function xp(e){return e==="orthographic"||e==="perspective"}function Mp(e){return e==="hemispheric"||e==="directional"}function _s(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function Ns(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function js(e){return e==="inherit"||e==="none"||e==="dynamic"||e==="static"||e==="blob"||e==="projected"||e==="auto"}function Gs(e){return e==="inherit"||e==="low"||e==="medium"||e==="high"||e==="ultra"}function Ls(e){return e==="inherit"||e==="scene-main"||e==="nearest"||e==="explicit"}var vn=["group","instance","transform","primitive"],vt=["instance","transform","primitive"],aY=["position","rotation","scale"],sY=["x","y","z"];function cY(e){return{path:`transform.${e}`,appliesTo:vn,validate:t=>t==null||(e==="scale"?Wd(t):rr(t))}}function dY(e,t){return{path:`transform.${e}.${t}`,appliesTo:vn,...e==="scale"?{allowDelete:!1}:{},validate:r=>r==null||(e==="scale"?wn(r):H(r))}}function lY(e){return[cY(e),...sY.map(t=>dY(e,t))]}var sb=[{path:"name",appliesTo:vn,validate:oi},{path:"parentId",appliesTo:vn,validate:oi},{path:"enabled",appliesTo:vn,validate:Tp},{path:"shadow.cast",appliesTo:vt,validate:e=>e==null||_s(e)},{path:"shadow.receive",appliesTo:vt,validate:e=>e==null||Ns(e)},{path:"shadow.mode",appliesTo:vt,validate:e=>e==null||js(e)},{path:"shadow.quality",appliesTo:vt,validate:e=>e==null||Gs(e)},{path:"shadow.light.mode",appliesTo:vt,validate:e=>e==null||Ls(e)},{path:"shadow.light.lightId",appliesTo:vt,validate:oi},{path:"shadow.params.opacity",appliesTo:vt,validate:e=>e==null||pa(e)},{path:"shadow.params.softness",appliesTo:vt,validate:e=>e==null||wn(e)},{path:"shadow.params.bias",appliesTo:vt,validate:e=>e==null||H(e)},{path:"shadow.params.normalBias",appliesTo:vt,validate:e=>e==null||H(e)},{path:"shadow.params.maxDistance",appliesTo:vt,validate:e=>e==null||zt(e)},{path:"shadow.params.resolution",appliesTo:vt,validate:e=>e==null||e===512||e===1024||e===2048||e===4096},{path:"shadow.params.cascadeCount",appliesTo:vt,validate:e=>e==null||e===1||e===2||e===4},{path:"shadow.params.bakeSamples",appliesTo:vt,validate:e=>e==null||zt(e)},{path:"shadow.params.blurKernel",appliesTo:vt,validate:e=>e==null||wn(e)},{path:"transform",appliesTo:vn,validate:e=>e==null||Ap(e)},...aY.flatMap(lY),{path:"transform.rotationDeg",appliesTo:vn,validate:e=>e==null||rr(e)},{path:"transform.rotationDeg.x",appliesTo:vn,validate:e=>e==null||H(e)},{path:"transform.rotationDeg.y",appliesTo:vn,validate:e=>e==null||H(e)},{path:"transform.rotationDeg.z",appliesTo:vn,validate:e=>e==null||H(e)},{path:"instance.assetId",appliesTo:["instance"],validate:e=>typeof e=="string"&&e.trim().length>0,allowDelete:!1},{path:"primitive.shape",appliesTo:["primitive"],validate:e=>e==="cube"||e==="sphere"||e==="plane"||e==="capsule",allowDelete:!1},{path:"camera.projection",appliesTo:["transform"],validate:xp,allowDelete:!1},{path:"camera.alpha",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"camera.beta",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"camera.radius",appliesTo:["transform"],validate:zt,allowDelete:!1},{path:"camera.orthoSize",appliesTo:["transform"],validate:zt,allowDelete:!1},{path:"camera.fov",appliesTo:["transform"],validate:zt,allowDelete:!1},{path:"camera.targetOffset",appliesTo:["transform"],validate:e=>e==null||rr(e)},{path:"camera.targetOffset.x",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"camera.targetOffset.y",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"camera.targetOffset.z",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"camera.minZ",appliesTo:["transform"],validate:zt,allowDelete:!1},{path:"camera.maxZ",appliesTo:["transform"],validate:zt,allowDelete:!1},{path:"camera.lowerBetaLimit",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"camera.upperBetaLimit",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"camera.lowerRadiusLimit",appliesTo:["transform"],validate:zt,allowDelete:!1},{path:"camera.upperRadiusLimit",appliesTo:["transform"],validate:zt,allowDelete:!1},{path:"camera.inertia",appliesTo:["transform"],validate:pa,allowDelete:!1},{path:"camera.targetScreenOffset",appliesTo:["transform"],validate:e=>e==null||Pp(e)},{path:"camera.targetScreenOffset.x",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"camera.targetScreenOffset.y",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"light.type",appliesTo:["transform"],validate:Mp,allowDelete:!1},{path:"light.intensity",appliesTo:["transform"],validate:wn,allowDelete:!1},{path:"light.direction",appliesTo:["transform"],validate:rr,allowDelete:!1},{path:"light.direction.x",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"light.direction.y",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"light.direction.z",appliesTo:["transform"],validate:H,allowDelete:!1},{path:"light.diffuseColor",appliesTo:["transform"],validate:e=>e==null||Cn(e)},{path:"light.groundColor",appliesTo:["transform"],validate:e=>e==null||Cn(e)},{path:"marker.type",appliesTo:["transform"],validate:oi,allowDelete:!1},{path:"marker.kind",appliesTo:["transform"],validate:ma},{path:"marker.tags",appliesTo:["transform"],validate:e=>e==null||Ip(e)},{path:"marker.note",appliesTo:["transform"],validate:oi},{path:"marker.color",appliesTo:["transform"],validate:e=>e==null||Cn(e)},{path:"marker.color.r",appliesTo:["transform"],validate:e=>e==null||H(e),allowDelete:!1},{path:"marker.color.g",appliesTo:["transform"],validate:e=>e==null||H(e),allowDelete:!1},{path:"marker.color.b",appliesTo:["transform"],validate:e=>e==null||H(e),allowDelete:!1}];import{randomUUID as ul}from"node:crypto";import{readFile as o8}from"node:fs/promises";import i8 from"node:path";var Ve=["instance","transform","primitive"];function nr(e){return{path:e,appliesTo:Ve,validate:t=>t==null||Cn(t)}}function pe(e){return{path:e,appliesTo:Ve,validate:t=>t==null||H(t)}}function ZC(e){return{path:e,appliesTo:Ve,validate:t=>t==null||typeof t=="boolean"}}function st(e){return{path:e,appliesTo:Ve,validate:ma}}function mY(e){return{path:e,appliesTo:Ve,validate:t=>t==null||t==="opaque"||t==="mask"||t==="blend"}}function pY(e){return{path:e,appliesTo:Ve,validate:t=>t==null||t==="lit"||t==="unlit"}}var fY=[{path:"transformType",appliesTo:["transform"],validate:e=>e==null||typeof e=="string"},{path:"rendering.renderingGroupId",appliesTo:Ve,validate:e=>e==null||e===0||e===1||e===2||e===3},{path:"rendering.alphaIndex",appliesTo:Ve,validate:e=>e==null||H(e)},{path:"metadata.shadowInspectorLanguage",appliesTo:Ve,validate:e=>e==null||e==="zh"||e==="en"},nr("overrides.material.albedoColor"),nr("overrides.material.diffuseColor"),nr("overrides.material.emissiveColor"),pe("overrides.material.metallic"),pe("overrides.material.roughness"),pe("overrides.material.contrast"),pe("overrides.material.brightness"),pe("overrides.material.saturation"),pe("overrides.material.hue"),pe("overrides.material.colorDensity"),pe("overrides.material.alpha"),pe("overrides.material.alphaCutOff"),pe("overrides.material.transparencyMode"),ZC("overrides.material.backFaceCulling"),st("overrides.material.albedoTexture.url"),st("overrides.material.normalTexture.url"),pe("overrides.material.normalTexture.level"),st("overrides.material.metallicTexture.url"),st("overrides.material.occlusionTexture.url"),st("overrides.material.emissiveTexture.url"),st("overrides.material.opacityTexture.url"),nr("overrides.material.pbr.albedoColor"),pe("overrides.material.pbr.baseWeight"),nr("overrides.material.pbr.reflectivityColor"),pe("overrides.material.pbr.microSurface"),nr("overrides.material.pbr.emissiveColor"),nr("overrides.material.pbr.ambientColor"),pe("overrides.material.pbr.lightFalloff"),pe("overrides.material.pbr.directIntensity"),pe("overrides.material.pbr.emissiveIntensity"),pe("overrides.material.pbr.environmentIntensity"),pe("overrides.material.pbr.specularIntensity"),pe("overrides.material.pbr.metallicF0Factor"),pe("overrides.material.pbr.indexOfRefraction"),nr("overrides.material.standard.diffuseColor"),nr("overrides.material.standard.specularColor"),pe("overrides.material.standard.specularPower"),nr("overrides.material.standard.emissiveColor"),nr("overrides.material.standard.ambientColor"),ZC("overrides.material.standard.useSpecularOverAlpha"),{path:"overrides.materialBinding.materialAssetId",appliesTo:Ve,validate:ma},pY("overrides.materialBinding.override.lightingModel"),nr("overrides.materialBinding.override.baseColor.color"),{path:"overrides.materialBinding.override.baseColor.color.r",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1},{path:"overrides.materialBinding.override.baseColor.color.g",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1},{path:"overrides.materialBinding.override.baseColor.color.b",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1},st("overrides.materialBinding.override.baseColor.texture.url"),st("overrides.materialBinding.override.baseColor.texture.textureAssetId"),pe("overrides.materialBinding.override.baseColor.brightness"),pe("overrides.materialBinding.override.baseColor.saturation"),pe("overrides.materialBinding.override.baseColor.contrast"),pe("overrides.materialBinding.override.baseColor.hue"),st("overrides.materialBinding.override.normal.texture.url"),st("overrides.materialBinding.override.normal.texture.textureAssetId"),pe("overrides.materialBinding.override.normal.strength"),pe("overrides.materialBinding.override.metallic"),pe("overrides.materialBinding.override.roughness"),st("overrides.materialBinding.override.metallicRoughness.texture.url"),st("overrides.materialBinding.override.metallicRoughness.texture.textureAssetId"),st("overrides.materialBinding.override.occlusion.texture.url"),st("overrides.materialBinding.override.occlusion.texture.textureAssetId"),pe("overrides.materialBinding.override.occlusion.strength"),nr("overrides.materialBinding.override.emission.color"),{path:"overrides.materialBinding.override.emission.color.r",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1},{path:"overrides.materialBinding.override.emission.color.g",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1},{path:"overrides.materialBinding.override.emission.color.b",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1},pe("overrides.materialBinding.override.emission.intensity"),st("overrides.materialBinding.override.emission.texture.url"),st("overrides.materialBinding.override.emission.texture.textureAssetId"),st("overrides.materialBinding.override.emission.maskTexture.url"),st("overrides.materialBinding.override.emission.maskTexture.textureAssetId"),mY("overrides.materialBinding.override.alpha.mode"),pe("overrides.materialBinding.override.alpha.opacity"),pe("overrides.materialBinding.override.alpha.cutoff"),st("overrides.materialBinding.override.alpha.texture.url"),st("overrides.materialBinding.override.alpha.texture.textureAssetId"),{path:"overrides.outline",appliesTo:Ve,validate:e=>e==null||gY(e)},{path:"overrides.outline.strategy",appliesTo:Ve,validate:e=>e==null||e==="babylon-default"},{path:"overrides.outline.renderOutline",appliesTo:Ve,validate:e=>e==null||typeof e=="boolean"},pe("overrides.outline.outlineWidth"),{path:"overrides.outline.outlineColor",appliesTo:Ve,validate:e=>e==null||Cn(e)},{path:"overrides.outline.outlineColor.r",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1},{path:"overrides.outline.outlineColor.g",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1},{path:"overrides.outline.outlineColor.b",appliesTo:Ve,validate:e=>e==null||H(e),allowDelete:!1}],ew=[...sb,...fY];function gY(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return(t.strategy==null||t.strategy==="babylon-default")&&(t.renderOutline==null||typeof t.renderOutline=="boolean")&&(t.outlineWidth==null||H(t.outlineWidth))&&(t.outlineColor==null||Cn(t.outlineColor))}function cb(e,t){let r=ew.find(n=>n.path===e)??null;return!r||!r.appliesTo.includes(t)?null:r}var ii="scene.materialAssets.",db="__fps_duplicate_material_asset__:",SY="mat_";function hY(e){return String(e??"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"")}function Dp(e){let t=hY(e);return`${SY}${t||"material"}`}function ub(){let e=globalThis.crypto?.randomUUID?.();if(e)return e;let t=Math.random().toString(36).slice(2,12);return`${Date.now().toString(36)}-${t}`}function ai(e){return e==="overrides.materialBinding.materialAssetId"||Ar(e,"materialAssetId")!=null}function mb(e){if(ai(e))return!0;let t="overrides.materialBinding.override.";if(e.startsWith(t))return lb(`properties.${e.slice(t.length)}`);let r=yY(e);return r?lb(`properties.${r}`):!1}function pb(e){return e==="overrides.materialBinding.materialAssetId"||e.startsWith("overrides.materialBinding.override.")||Ar(e,"materialAssetId")!=null||Ar(e,"override")!=null}function Ar(e,t){let r="overrides.materialSlotBindings.";if(!e.startsWith(r))return null;let n=e.slice(r.length);if(t==="materialAssetId"){let c=".materialAssetId";if(!n.endsWith(c))return null;let d=n.slice(0,-c.length);return d||null}let o=".override.",i=n.lastIndexOf(o);if(i<0)return null;let a=n.slice(0,i),s=n.slice(i+o.length);return a&&s?a:null}function yY(e){let t="overrides.materialSlotBindings.";if(!e.startsWith(t))return null;let r=e.slice(t.length),n=".override.",o=r.lastIndexOf(n);if(o<0)return null;let i=r.slice(0,o),a=r.slice(o+n.length);return i&&a?a:null}function lb(e){return e.endsWith(".texture.url")||e.endsWith(".maskTexture.url")||e.endsWith(".texture.textureAssetId")||e.endsWith(".maskTexture.textureAssetId")}function en(e,t){if(e==="name"&&typeof t=="string")return t.trim();if(lb(e)&&typeof t=="string"){let r=t.trim();return r||null}return(e==="properties.alpha.mode"||e==="properties.lightingModel")&&typeof t=="string"?t.trim():t}function si(e,t,r,n=Qr){let o=en(e,t);if(e==="name")return typeof o=="string"&&o.length>0;let i=bY(e,r,n);return i?EY(i,o):!1}function bY(e,t,r){if(t!=null)return ei(t,e,r);for(let n of r.list()){let o=ei(n.shaderId,e,r);if(o)return o}return null}function EY(e,t){if(t==null)return e.kind==="texture"||e.kind==="string"&&e.nullable===!0;if(e.kind==="number")return!(!H(t)||e.min!=null&&t<e.min||e.max!=null&&t>e.max);if(e.kind==="boolean")return typeof t=="boolean";if(e.kind==="string")return typeof t=="string"&&t.trim().length>0;if(e.kind==="enum")return typeof t=="string"&&e.values.includes(t);if(e.kind==="color")return e.channels===4?TY(t):IY(t);if(e.kind==="vec2"||e.kind==="vec3"){if(!t||typeof t!="object"||Array.isArray(t))return!1;let r=t,n=e.kind==="vec2"?["x","y"]:["x","y","z"];return Object.keys(r).every(o=>n.includes(o))&&n.every(o=>H(r[o]))}if(e.kind==="texture"){if(!t||typeof t!="object"||Array.isArray(t))return!1;let r=t;return Object.keys(r).every(n=>n==="url"||n==="textureAssetId")&&["url","textureAssetId"].every(n=>r[n]===void 0||typeof r[n]=="string"&&r[n].trim().length>0)}return!1}function fb(e){return typeof e!="string"||!e.startsWith(db)?null:e.slice(db.length).trim()||null}function tw(e){return e.trim().replace(/^\/+|\/+$/g,"")}function IY(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return Object.keys(t).every(r=>r==="r"||r==="g"||r==="b")&&H(t.r)&&H(t.g)&&H(t.b)}function TY(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return Object.keys(t).every(r=>r==="r"||r==="g"||r==="b"||r==="a")&&H(t.r)&&H(t.g)&&H(t.b)&&H(t.a)}var PY={r:.78,g:.78,b:.78};function Fs(e,t={}){let r=e??{},n=MY(r.baseColor?.texture,t),o=xY(r,t),i=AY(r,t);return{kind:"material-sphere",baseColor:DY(r),metallic:qd(r.metallic??0),roughness:qd(r.roughness??1),...r.emission?.color?{emissionColor:ow(r.emission.color)}:{},emissionIntensity:RY(r.emission?.intensity,0),textureUrl:n,profile:o,properties:structuredClone(e??{}),...i.length>0?{textureResources:i}:{}}}function AY(e,t){return[["baseColor",e.baseColor?.texture],["normal",e.normal?.texture],["metallicRoughness",e.metallicRoughness?.texture],["occlusion",e.occlusion?.texture],["emission",e.emission?.texture],["emissionMask",e.emission?.maskTexture],["alpha",e.alpha?.texture]].flatMap(([n,o])=>{let i=gb(o,t);return i?[{channel:n,...i}]:[]})}function xY(e,t){let r=structuredClone(e),n=fa(r.baseColor?.texture,t);n&&(r.baseColor={...r.baseColor??{},texture:n});let o=fa(r.normal?.texture,t);o&&(r.normal={...r.normal??{},texture:o});let i=fa(r.metallicRoughness?.texture,t);i&&(r.metallicRoughness={...r.metallicRoughness??{},texture:i});let a=fa(r.occlusion?.texture,t);a&&(r.occlusion={...r.occlusion??{},texture:a});let s=fa(r.emission?.texture,t),c=fa(r.emission?.maskTexture,t);(s||c)&&(r.emission={...r.emission??{},...s?{texture:s}:{},...c?{maskTexture:c}:{}});let d=fa(r.alpha?.texture,t);return d&&(r.alpha={...r.alpha??{},texture:d}),r}function fa(e,t){if(!e)return;let r=gb(e,t);if(r?.state==="missing")return{...e,url:null};let n=r?.url;return{...e,...n?{url:n}:{}}}function MY(e,t){let r=gb(e,t);return r?.state==="ready"?r.url:void 0}function gb(e,t){let r=typeof e?.textureAssetId=="string"?e.textureAssetId.trim():"";if(r){let o=t.resolveTextureAssetUrl?.(r)?.trim();if(o)return{reference:r,state:"ready",url:o};let i=t.textureAssets?.find(a=>a.id===r)?.url?.trim();if(i)return{reference:r,state:"ready",url:i};if(t.resolveTextureAssetUrl||Array.isArray(t.textureAssets))return{reference:r,state:"missing"}}let n=typeof e?.url=="string"?e.url.trim():"";return n?{reference:r||n,state:"ready",url:n}:null}function nw(e,t){let r=e??{},n=rw(r.metallic??0),o=rw(r.roughness??1);return`M ${n} / R ${o} - ${t}`}function DY(e){let r=(e.baseColor??{}).color??PY;return ow(r)}function ow(e){return{r:qd(e.r),g:qd(e.g),b:qd(e.b)}}function qd(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function rw(e){return Number.isFinite(e)?Number.isInteger(e)?String(e):e.toFixed(2).replace(/0+$/,"").replace(/\.$/,""):"0"}function RY(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function fe(e,t){return t?e.scene.materialAssets?.find(r=>r.id===t)??null:null}function $s(e,t){return!!fe(e,t)}function mw(e,t){return t?{state:"asset",materialAssetId:t.id,materialAsset:t}:e?.materialAssetId?{state:"missing-asset",materialAssetId:e.materialAssetId}:e?.override?{state:"override"}:{state:"inherit"}}function Yd(e,t){let r=new Set;for(let n of pw(e,t))r.add(n.gameObjectId);return[...r]}function pw(e,t){let r=t.trim();return r?tn(e).filter(n=>n.materialAssetId===r):[]}function tn(e){let t=[],r=new Map(e.assets.map(n=>[n.id,n]));for(let n of e.scene.gameObjects){let o=jY(n),i=Rp(n.overrides?.materialBinding);i&&t.push({kind:"root",scope:"scene",gameObjectId:n.id,gameObjectName:n.name,materialAssetId:i,bindingPath:"overrides.materialBinding.materialAssetId",label:o});let a=kn(e,n,r),s=new Map(a.filter(d=>!!d.slotId).map(d=>[d.slotId,d])),c=n.overrides?.materialSlotBindings??{};for(let[d,u]of Object.entries(c)){let l=Rp(u);if(!l)continue;let m=s.get(d),p=GY(m,d);t.push({kind:"slot",scope:"scene",gameObjectId:n.id,gameObjectName:n.name,materialAssetId:l,bindingPath:`overrides.materialSlotBindings.${d}.materialAssetId`,label:`${o} / ${p}`,slotId:d,ownerNodePath:_n(m)??d})}}for(let n of e.assets)if(!(n.type!=="prefab"||!n.prefab)){iw(t,{ownerId:n.id,ownerName:n.displayName??n.id,prefabAssetId:n.id,path:`assets.${n.id}.prefab.overrides`,overrides:n.prefab.overrides});for(let o of n.prefab.nodes??[])iw(t,{ownerId:`${n.id}:${o.id}`,ownerName:`${n.displayName??n.id} / ${o.name??o.id}`,prefabAssetId:n.id,prefabNodeId:o.id,path:`assets.${n.id}.prefab.nodes.${o.id}.overrides`,overrides:o.overrides})}return t}function iw(e,t){let r=Rp(t.overrides?.materialBinding);r&&e.push({kind:"root",scope:"prefab",gameObjectId:t.ownerId,gameObjectName:t.ownerName,materialAssetId:r,bindingPath:`${t.path}.materialBinding.materialAssetId`,label:t.ownerName,prefabAssetId:t.prefabAssetId,...t.prefabNodeId?{prefabNodeId:t.prefabNodeId}:{}});for(let[n,o]of Object.entries(t.overrides?.materialSlotBindings??{})){let i=Rp(o);i&&e.push({kind:"slot",scope:"prefab",gameObjectId:t.ownerId,gameObjectName:t.ownerName,materialAssetId:i,bindingPath:`${t.path}.materialSlotBindings.${n}.materialAssetId`,label:`${t.ownerName} / ${n}`,slotId:n,ownerNodePath:n,prefabAssetId:t.prefabAssetId,...t.prefabNodeId?{prefabNodeId:t.prefabNodeId}:{}})}}function fw(e){let t=[...new Set((e.scene.materialAssets??[]).map(s=>s.id?.trim()).filter(s=>!!s))],r=new Set(t),n=tn(e),o=n.filter(s=>!r.has(s.materialAssetId)),i=new Map;for(let s of o){let c=i.get(s.materialAssetId)??[];c.push(s),i.set(s.materialAssetId,c)}let a=[...i.entries()].map(([s,c])=>({kind:"missing-material-asset",materialAssetId:s,usages:c}));return{ok:a.length===0,materialAssetIds:t,references:n,missingMaterialAssetIds:a.map(s=>s.materialAssetId),missingReferences:o,issues:a}}function kn(e,t,r){let n=new Map;for(let o of wp(e,t,r))n.set(o.slotId,o);return[...n.values()].sort((o,i)=>(o.label??o.slotId).localeCompare(i.label??i.slotId)||o.slotId.localeCompare(i.slotId))}function gw(e,t){return wp(e,t).length>0}function Cp(e){return[...new Set(e.sourceSurfaces.map(t=>t.sourceMaterialIndex).filter(t=>Number.isInteger(t)))].sort((t,r)=>t-r)}function _n(e){return e?.sourceSurfaces[0]?.ownerNodePath??null}function Sw(e){return e.slotId}function Sb(e){return`overrides.materialSlotBindings.${e.slotId}.materialAssetId`}function hb(e,t){return e.overrides?.materialSlotBindings?.[t.slotId]}function wp(e,t,r){let n=or(t);if(!n)return[];let i=(r?.get(n.assetId)??e.assets.find(s=>s.id===n.assetId))?.metadata?.materialSlots;if(!Array.isArray(i))return[];let a=[];for(let s of i){let c=yb(s);c&&a.push(c)}return a}function yb(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=typeof t.slotId=="string"&&t.slotId.trim()?t.slotId.trim():"",n=Array.isArray(t.sourceSurfaces)?t.sourceSurfaces:null,o=OY(n);if(!r||!n||o.length===0||o.length!==n.length)return null;let i=typeof t.label=="string"&&t.label.trim()?t.label.trim():o[0].ownerNodePath,a=typeof t.materialName=="string"&&t.materialName.trim()?t.materialName.trim():"",s=Array.isArray(t.materialNames)?t.materialNames.filter(d=>typeof d=="string"&&!!d.trim()).map(d=>d.trim()):void 0,c=wY(t.sourceMaterialProfiles);return{slotId:r,label:i,sourceSurfaces:o,...a?{materialName:a}:{},...s&&s.length>0?{materialNames:s}:{},...c&&c.length>0?{sourceMaterialProfiles:c}:{}}}function OY(e){return Array.isArray(e)?e.flatMap(t=>{let r=NY(t);if(!r)return[];let n=tw(typeof r.ownerNodePath=="string"?r.ownerNodePath:""),o=Number.isInteger(r.meshIndex)&&r.meshIndex>=0?r.meshIndex:void 0,i=Number.isInteger(r.primitiveIndex)&&r.primitiveIndex>=0?r.primitiveIndex:void 0;if(!n||o==null||i==null)return[];let a=Number.isInteger(r.nodeIndex)&&r.nodeIndex>=0?r.nodeIndex:void 0,s=Array.isArray(r.nodeIndexPath)?r.nodeIndexPath.filter(m=>Number.isInteger(m)&&m>=0):void 0,c=Number.isInteger(r.sourceMaterialIndex)&&r.sourceMaterialIndex>=0?r.sourceMaterialIndex:void 0,d=typeof r.sourceMeshName=="string"&&r.sourceMeshName.trim()?r.sourceMeshName.trim():void 0,u=typeof r.triangleCount=="number"&&Number.isFinite(r.triangleCount)&&r.triangleCount>=0?r.triangleCount:void 0,l=CY(r.boundingBox);return[{ownerNodePath:n,...a!=null?{nodeIndex:a}:{},...s&&s.length>0?{nodeIndexPath:s}:{},meshIndex:o,primitiveIndex:i,...c!=null?{sourceMaterialIndex:c}:{},...d?{sourceMeshName:d}:{},...u!=null?{triangleCount:u}:{},...l?{boundingBox:l}:{}}]}):[]}function CY(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r=aw(t.min),n=aw(t.max);if(!(!r&&!n))return{...r?{min:r}:{},...n?{max:n}:{}}}function aw(e){if(!Array.isArray(e)||e.length<3)return null;let[t,r,n]=e;return typeof t=="number"&&Number.isFinite(t)&&typeof r=="number"&&Number.isFinite(r)&&typeof n=="number"&&Number.isFinite(n)?[t,r,n]:null}function wY(e){if(!Array.isArray(e))return;let t=e.map(vY).filter(r=>!!r);return t.length>0?t:void 0}function vY(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(!Number.isInteger(t.sourceMaterialIndex))return null;let r=typeof t.materialName=="string"&&t.materialName.trim()?t.materialName.trim():"",n=t.profile&&typeof t.profile=="object"&&!Array.isArray(t.profile)?t.profile:void 0,o=kY(t.textureHints);return{sourceMaterialIndex:t.sourceMaterialIndex,...r?{materialName:r}:{},...n?{profile:n}:{},...o&&o.length>0?{textureHints:o}:{}}}function kY(e){if(!Array.isArray(e))return;let t=e.map(_Y).filter(r=>!!r);return t.length>0?t:void 0}function _Y(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=typeof t.profilePath=="string"&&t.profilePath.trim()?t.profilePath.trim():"",n=typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():"";return!r||!n?null:{profilePath:r,reason:n,...Number.isInteger(t.textureIndex)?{textureIndex:t.textureIndex}:{},...Number.isInteger(t.imageIndex)?{imageIndex:t.imageIndex}:{},...Number.isInteger(t.bufferView)?{bufferView:t.bufferView}:{},...typeof t.mimeType=="string"&&t.mimeType.trim()?{mimeType:t.mimeType.trim()}:{},...typeof t.uri=="string"&&t.uri.trim()?{uri:t.uri.trim()}:{}}}function NY(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function jY(e){return e.name?.trim()||e.id}function Rp(e){return typeof e?.materialAssetId=="string"?e.materialAssetId.trim():""}function GY(e,t){return e?.label?.trim()||_n(e)?.trim()||e?.slotId?.trim()||t}var Op=class{constructor(t){this.byMaterialId=new Map,this.byOwnerId=new Map;for(let r of tn(t)){let n=this.byMaterialId.get(r.materialAssetId)??[];n.push(r),this.byMaterialId.set(r.materialAssetId,n);let o=this.byOwnerId.get(r.gameObjectId)??[];o.push(r),this.byOwnerId.set(r.gameObjectId,o)}}forMaterial(t){return this.byMaterialId.get(t.trim())??[]}forOwner(t){return this.byOwnerId.get(t)??[]}},sw=new WeakMap;function LY(e){let t=sw.get(e);return t||(t=new Op(e),sw.set(e,t)),t}function bb(e){return e?.system?.preset}function cw(e,t){let r=bb(e);return r==="default-pbr"?t.defaultMaterial:r==="default-standard"?t.defaultStandardMaterial:e.name||e.id}function dw(e,t){let r=bb(e);return r==="default-pbr"?t.defaultMaterialMeta:r==="default-standard"?t.defaultStandardMaterialMeta:t.formatMaterialMeta(e.id)}function FY(e,t){let r=e.currentAsset??null,n=!!r&&!e.currentValue,o=r&&!n?lw(e.document,r.id,e.ownershipText,t):null,i=r?dw(r,e.displayText):e.currentValue?e.pickerText.summaryMissingAsset:e.pickerText.summaryInherit,a=o?uw(i,o):i;return{pickerKind:"material",pickerTitle:e.pickerText.materialPickerTitle,pickerTrigger:"preview",placeholder:e.currentValue?e.pickerText.summaryMissingAsset:e.pickerText.inheritNone,...r?{currentMaterialAssetId:r.id,currentMaterialShaderId:r.shaderId}:{},currentLabel:r?cw(r,e.displayText):e.currentValue?e.currentValue:e.pickerText.inheritNone,currentMeta:a,...o?.usageLabel?{currentUsageLabel:o.usageLabel}:{},...o?.editImpactLabel?{currentEditImpactLabel:o.editImpactLabel}:{},...o?{currentOwnership:o}:{},currentPreview:r?Fs(r.properties,e.previewContext):void 0,candidates:[{label:e.pickerText.inheritNone,value:"",meta:e.pickerText.summaryInherit},...e.materialAssets.map(s=>{let c=lw(e.document,s.id,e.ownershipText,t);return{label:cw(s,e.displayText),value:s.id,meta:uw(dw(s,e.displayText),c),kind:"material",preview:Fs(s.properties,e.previewContext),...c?.usageLabel?{usageLabel:c.usageLabel}:{},...c?{ownership:c}:{}}})]}}function lw(e,t,r,n){if(!e||!n)return null;let o=t.trim(),i=n.forMaterial(o),a=i.length;return{materialAssetId:o,usage:{count:a,items:i.map(s=>structuredClone(s))},usageCount:a,used:a>0,shared:a>1,...r?{usageLabel:r.formatUsageCount(a),editImpactLabel:r.formatEditImpact(a),duplicateImpactLabel:r.formatDuplicateImpact(a)}:{}}}function uw(e,t){return[e,t?.usageLabel].filter(Boolean).join(" \xB7 ")}function $Y(e,t,r={}){return(e.scene.materialAssets??[]).map(n=>{let o=t.forMaterial(n.id);return{id:`material:${n.id}`,assetId:n.id,kind:"material",label:n.name||n.id,meta:nw(n.properties,n.id),preview:Fs(n.properties,r),material:{id:n.id,name:n.name||n.id,shaderId:n.shaderId,readonly:n.system?.readonly===!0||bb(n)!=null,usage:{count:o.length,items:o.map(i=>structuredClone(i))},properties:structuredClone(n.properties)},placeable:!1}})}var BY={createUsageIndex(e){return new Op(e)},getCachedUsageIndex:LY,createPickerControlOptions:FY,createBrowserAssetItems:$Y},yo=BY;var Bs=1;var Eb="prefab.";var Mae=Symbol("unsupported-editor-scene-authored-clone-value");function It(e){return e.components.find(qY)??null}function or(e){return e.components.find(YY)??null}function zs(e){return e.components.find(JY)??null}function xr(e){return e?.type==="prefab"&&ue(e.prefab?.sourceAssetId)!=null}function ci(e,t){let r=e.assets.find(n=>n.id===t);return r&&xr(r)?r:null}function yw(e){return ue(e?.prefab?.prefabId)!=null}function Jd(e){return ue(e?.prefab?.sourceAssetId)}function ht(e){if(!e?.prefab)return null;let t=Ab(e.prefab),r=ue(e.prefab.rootNodeId);if(r&&t.some(o=>o.id===r))return r;let n=t.find(o=>o.kind==="root"&&!o.parentId);return n?n.id:null}function Tt(e){return e?.prefab?Ab(e.prefab):[]}function vp(e,t){let r=ue(t);return r?Tt(e).find(n=>n.id===r)??null:null}function zY(e,t){let r=ue(t);return Tt(e).filter(n=>{let o=ue(n.parentId);return r?o===r:!o})}function bo(e){if(!xr(e))return ye(e,!1,null,[{code:"prefab.invalidDefinition",severity:"error",message:`Asset "${e.id}" is not a valid prefab definition.`,assetId:e.id}]);let t=Ab(e.prefab),r=ht(e);if(e.prefab.compositionVersion!==Bs||t.length===0||!r)return ye(e,!1,null,[{code:"schema.unsupportedVersion",severity:"error",message:`Prefab asset "${e.id}" must use composition version ${Bs} with an explicit root node.`,assetId:e.id}]);let n=Dw(e);return ye(n,JSON.stringify(n.prefab)!==JSON.stringify(e.prefab))}function bw(e,t,r){let n=ue(t),o=n?e.assets.find(l=>l.id===n&&xr(l)):null;if(!o)return ye({id:n??String(t??""),type:"prefab",prefab:{sourceAssetId:""}},!1,null,[{code:"prefab.invalidDefinition",severity:"error",message:`Prefab asset "${t}" was not found.`,assetId:t}]);let i=kw(r);if(!i.ok)return ye(o,!1,null,[{code:"prefab.invalidName",severity:"error",message:i.message,assetId:o.id}]);let a=i.name,s=a.toLowerCase(),c=e.assets.find(l=>l.id!==o.id&&xr(l)&&ue(l.displayName)?.toLowerCase()===s);if(c)return ye(o,!1,null,[{code:"prefab.nameConflict",severity:"error",message:`Prefab asset name "${a}" is already used by "${c.id}".`,assetId:o.id}]);if(o.displayName===a)return ye(o,!1);let d=Dw({...structuredClone(o),displayName:a}),u=ht(d);if(u&&Array.isArray(d.prefab?.nodes)){let l=d.prefab.nodes.findIndex(m=>m.id===u);l>=0&&(d.prefab.nodes=[...d.prefab.nodes],d.prefab.nodes[l]={...structuredClone(d.prefab.nodes[l]),name:a})}return ye(d,!0)}function Ew(e,t,r){let n=bo(e);if(!n.ok)return n;let o=ue(t),i=o?vp(n.prefabAsset,o):null;if(!i)return ye(n.prefabAsset,!1,null,[{code:"prefab.nodeNotFound",severity:"error",message:`Prefab node "${t}" was not found.`,assetId:e.id,nodeId:t}]);let a=ht(n.prefabAsset);if(i.id===a)return ye(n.prefabAsset,!1,i,[{code:"prefab.rootRenameRejected",severity:"error",message:"Prefab root node name follows the prefab asset displayName; use prefab.asset.rename instead.",assetId:e.id,nodeId:i.id}]);let s=kw(r);if(!s.ok)return ye(n.prefabAsset,!1,i,[{code:"prefab.invalidName",severity:"error",message:s.message,assetId:e.id,nodeId:i.id}]);let c=s.name,u=zY(n.prefabAsset,i.parentId).find(l=>l.id!==i.id&&ue(l.name)?.toLowerCase()===c.toLowerCase());return u?ye(n.prefabAsset,!1,i,[{code:"prefab.nameConflict",severity:"error",message:`Prefab node name "${c}" is already used by sibling "${u.id}".`,assetId:e.id,nodeId:i.id,parentId:i.parentId}]):Pb(n.prefabAsset,i.id,l=>({...l,name:c}))}function Iw(e,t,r={}){let n=bo(e);if(!n.ok)return n;if(t.id===e.id)return ye(n.prefabAsset,!1,null,[{code:"prefab.selfReferenceRejected",severity:"error",message:`Prefab "${e.id}" cannot contain itself directly.`,assetId:t.id}]);let o=Ib(n.prefabAsset,r.parentId);if(!o.ok)return ye(n.prefabAsset,!1,null,o.diagnostics);let i=Tt(n.prefabAsset),a=xr(t),s=t.type!=="prefab"&&(t.type==="glb"||t.type==="model"||t.type==="gltf");if(!a&&!s)return ye(n.prefabAsset,!1,null,[{code:"prefab.assetUnsupported",severity:"error",message:`Asset "${t.id}" cannot be added to a prefab composition.`,assetId:t.id}]);let c={id:r.id??kp(i,`${a?"prefab":"model"}-${t.id}`),...r.guid?{guid:r.guid}:{},name:r.name??t.displayName??t.id,parentId:o.parentId,kind:a?"prefabInstance":"model",...r.transform?{transform:structuredClone(r.transform)}:{},...a?{childPrefabId:t.id}:{sourceAssetId:t.id},...ue(r.sourceNodePath)?{sourceNodePath:ue(r.sourceNodePath)}:{}};return Tb(n.prefabAsset,c)}function Tw(e,t){let r=bo(e);if(!r.ok)return r;let n=Ib(r.prefabAsset,t.parentId);if(!n.ok)return ye(r.prefabAsset,!1,null,n.diagnostics);let o=ue(t.shape);if(!o)return ye(r.prefabAsset,!1,null,[{code:"prefab.assetUnsupported",severity:"error",message:"Prefab primitive shape must be a non-empty string.",assetId:e.id}]);let i=Tt(r.prefabAsset),a={id:t.id??kp(i,`primitive-${o}`),...t.guid?{guid:t.guid}:{},name:t.name??`${o[0].toUpperCase()}${o.slice(1)}`,parentId:n.parentId,kind:"primitive",primitive:{shape:o},...t.transform?{transform:structuredClone(t.transform)}:{}};return Tb(r.prefabAsset,a)}function Pw(e,t={}){let r=bo(e);if(!r.ok)return r;let n=Ib(r.prefabAsset,t.parentId);if(!n.ok)return ye(r.prefabAsset,!1,null,n.diagnostics);let o=Tt(r.prefabAsset),i={id:t.id??kp(o,"group"),...t.guid?{guid:t.guid}:{},name:t.name??"Empty",parentId:n.parentId,kind:"group",...t.transform?{transform:structuredClone(t.transform)}:{}};return Tb(r.prefabAsset,i)}function Aw(e,t,r){let n=bo(e);return n.ok?!r||r.type!=="Transform"?ye(n.prefabAsset,!1,null,[{code:"prefab.invalidTransform",severity:"error",message:`Prefab node "${t}" requires a Transform component payload.`,assetId:e.id,nodeId:t}]):Pb(n.prefabAsset,t,o=>({...o,transform:structuredClone(r)})):n}function xw(e,t,r,n={}){let o=bo(e);if(!o.ok)return o;let i=ht(o.prefabAsset);if(t===i)return ye(o.prefabAsset,!1,null,[{code:"prefab.rootReparentRejected",severity:"error",message:"Prefab root node cannot be reparented.",assetId:e.id,nodeId:t}]);let a=Tt(o.prefabAsset),s=a.find(S=>S.id===t);if(!s)return ye(o.prefabAsset,!1,null,[{code:"prefab.nodeNotFound",severity:"error",message:`Prefab node "${t}" was not found.`,assetId:e.id,nodeId:t}]);if(!a.some(S=>S.id===r))return ye(o.prefabAsset,!1,null,[{code:"prefab.parentNotFound",severity:"error",message:`Prefab parent node "${r}" was not found.`,assetId:e.id,nodeId:t,parentId:r}]);if(t===r||UY(a,r,t))return ye(o.prefabAsset,!1,null,[{code:"prefab.cycleReparentRejected",severity:"error",message:`Prefab node "${t}" cannot be parented under its own descendant "${r}".`,assetId:e.id,nodeId:t,parentId:r}]);let c=n.beforeId??null,d=n.afterId??null;if(c&&d)return ye(o.prefabAsset,!1,s,[{code:"prefab.moveAnchorAmbiguous",severity:"error",message:"Prefab node move accepts either beforeId or afterId, not both.",assetId:e.id,nodeId:t,parentId:r}]);let u=c??d,l=u?a.find(S=>S.id===u):null;if(u&&(!l||l.id===t||l.parentId!==r))return ye(o.prefabAsset,!1,s,[{code:"prefab.moveAnchorInvalid",severity:"error",message:`Prefab move anchor "${u}" is not a sibling under parent "${r}".`,assetId:e.id,nodeId:t,parentId:r}]);if(!u&&n.placement===void 0)return Pb(o.prefabAsset,t,S=>({...S,parentId:r}));let m={...structuredClone(s),parentId:r},p=a.filter(S=>S.id!==t),f=u?p.findIndex(S=>S.id===u)+(d?1:0):p.length;p.splice(f,0,m);let g=structuredClone(o.prefabAsset);return g.prefab=structuredClone(g.prefab),g.prefab.compositionVersion=Bs,g.prefab.nodes=p,ye(g,JSON.stringify(a)!==JSON.stringify(p),m,[],{selectedNodeId:t})}function Mw(e,t){let r=bo(e);if(!r.ok)return r;let n=ht(r.prefabAsset);if(t===n)return ye(r.prefabAsset,!1,null,[{code:"prefab.rootDeleteRejected",severity:"error",message:"Prefab root node cannot be deleted.",assetId:e.id,nodeId:t}]);let o=Tt(r.prefabAsset),i=o.find(c=>c.id===t);if(!i)return ye(r.prefabAsset,!1,null,[{code:"prefab.nodeNotFound",severity:"error",message:`Prefab node "${t}" was not found.`,assetId:e.id,nodeId:t}]);let a=new Set;Rw(o,t,a);let s=structuredClone(r.prefabAsset);return s.prefab=structuredClone(s.prefab),s.prefab.nodes=o.filter(c=>!a.has(c.id)),ye(s,!0,i,[],{deletedNodeIds:[...a]})}function ye(e,t,r=null,n=[],o={}){return{ok:n.every(i=>i.severity!=="error"),changed:t,prefabAsset:e,...o.selectedNodeId?{selectedNodeId:o.selectedNodeId}:{},...o.createdNodeId?{createdNodeId:o.createdNodeId}:{},...o.deletedNodeIds?{deletedNodeIds:[...o.deletedNodeIds]}:{},...r?{node:structuredClone(r)}:{},diagnostics:n.map(i=>({...i}))}}function Dw(e){let t=structuredClone(e),r=Tt(e);t.prefab=structuredClone(t.prefab),t.prefab.compositionVersion=Bs,t.prefab.nodes=r;let n=ht({...e,prefab:{...e.prefab,nodes:r}});return n?t.prefab.rootNodeId=n:delete t.prefab.rootNodeId,t}function Ib(e,t){let r=ht(e),n=ue(t)??r;return!n||!vp(e,n)?{ok:!1,diagnostics:[{code:"prefab.parentNotFound",severity:"error",message:`Prefab parent node "${n??t??"root"}" was not found.`,assetId:e.id,...n?{parentId:n}:{}}]}:{ok:!0,parentId:n}}function Tb(e,t){let r=structuredClone(e),n=Tt(e),o=kp(n,t.id),i={...structuredClone(t),id:o};r.prefab=structuredClone(r.prefab),r.prefab.compositionVersion=Bs;let a=ht(e);return a?r.prefab.rootNodeId=a:delete r.prefab.rootNodeId,r.prefab.nodes=[...n,i],ye(r,!0,i,[],{createdNodeId:i.id,selectedNodeId:i.id})}function Pb(e,t,r){let n=Tt(e),o=n.findIndex(d=>d.id===t);if(o<0)return ye(e,!1,null,[{code:"prefab.nodeNotFound",severity:"error",message:`Prefab node "${t}" was not found.`,assetId:e.id,nodeId:t}]);let i=r(structuredClone(n[o])),a=[...n];a[o]=i;let s=structuredClone(e);s.prefab=structuredClone(s.prefab),s.prefab.compositionVersion=Bs;let c=ht(e);return c?s.prefab.rootNodeId=c:delete s.prefab.rootNodeId,s.prefab.nodes=a,ye(s,JSON.stringify(n[o])!==JSON.stringify(i),i,[],{selectedNodeId:i.id})}function kp(e,t){let r=new Set(e.map(a=>a.id)),n=QY(t)??"prefab_node";if(!r.has(n))return n;let o=1,i=`${n}_${o}`;for(;r.has(i);)o+=1,i=`${n}_${o}`;return i}function UY(e,t,r){let n=e.find(i=>i.id===t),o=new Set;for(;n?.parentId;){if(n.parentId===r)return!0;if(o.has(n.parentId))return!1;o.add(n.parentId),n=e.find(i=>i.id===n?.parentId)}return!1}function Rw(e,t,r){if(!r.has(t)){r.add(t);for(let n of e.filter(o=>o.parentId===t))Rw(e,n.id,r)}}function Ab(e){if(!Array.isArray(e.nodes))return[];let t=[];for(let r of e.nodes){let n=VY(r);n&&!t.some(o=>o.id===n.id)&&t.push(n)}return structuredClone(t)}function VY(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=ue(t.id);return!r||!HY(t.kind)?null:{id:r,...ue(t.guid)?{guid:ue(t.guid)}:{},...ue(t.name)?{name:ue(t.name)}:{},...ue(t.parentId)?{parentId:ue(t.parentId)}:{},kind:t.kind,...t.transform?{transform:structuredClone(t.transform)}:{},...ue(t.sourceAssetId)?{sourceAssetId:ue(t.sourceAssetId)}:{},...ue(t.sourceNodePath)?{sourceNodePath:ue(t.sourceNodePath)}:{},...ue(t.childPrefabId)?{childPrefabId:ue(t.childPrefabId)}:{},...t.primitive?{primitive:structuredClone(t.primitive)}:{},...t.light?{light:structuredClone(t.light)}:{},...t.marker?{marker:structuredClone(t.marker)}:{},...t.defaults?{defaults:structuredClone(t.defaults)}:{},...t.overrides?{overrides:structuredClone(t.overrides)}:{},...t.metadata?{metadata:structuredClone(t.metadata)}:{}}}function HY(e){return e==="root"||e==="group"||e==="model"||e==="primitive"||e==="light"||e==="prefabInstance"||e==="marker"||e==="collision"}function Ow(e){let t=Jd(e.prefabAsset);if(!t)throw new Error(`Prefab asset "${e.prefabAsset.id}" does not define a source asset.`);let r=e.prefabAsset.prefab?.defaults;return{id:e.id,...e.guid?{guid:e.guid}:{},name:e.name??e.prefabAsset.displayName??e.prefabAsset.id,kind:"instance",...e.parentId?{parentId:e.parentId}:{},active:e.active??r?.active??!0,...e.shadow??r?.shadow?{shadow:structuredClone(e.shadow??r?.shadow)}:{},prefab:{prefabId:e.prefabAsset.id,...e.prefabAsset.guid?{prefabGuid:e.prefabAsset.guid}:{},sourceAssetId:t},...e.metadata?{metadata:{...e.metadata}}:{},...e.overrides!==void 0?{overrides:e.overrides}:{},components:[e.transform,{type:"ModelRenderer",assetId:t}]}}function Cw(e){if(!e.startsWith(Eb))return null;let t=e.slice(Eb.length);return pb(t)?t:null}function xb(e){return Cw(e)?.endsWith(".materialAssetId")===!0}function ww(e){return e.startsWith(Eb)&&e.endsWith(".materialAssetId")&&xb(e)}function Xd(e,t,r){let n=Cw(t);if(!n||!xr(e))return e;let o=ZY(n);if(!o)return e;let i=structuredClone(e);i.prefab=structuredClone(i.prefab??e.prefab),tJ(i.prefab,o,r);let a=_w(i.prefab?.overrides);return a?i.prefab.overrides=a:delete i.prefab.overrides,JSON.stringify(i)===JSON.stringify(e)?e:i}function vw(e,t){let r=ue(e?.materialAssetId),n=ue(t?.materialAssetId),o=Do(e?.override,t?.override);return Mb({...n??r?{materialAssetId:n??r}:{},...ga(o)?{override:o}:{}})}function KY(e,t){let r={},n=vw(e?.materialBinding,t?.materialBinding);n&&(r.materialBinding=n);let o=nJ(e?.materialSlotBindings,t?.materialSlotBindings);return o&&(r.materialSlotBindings=o),ga(r)?r:void 0}function Us(e,t){let r=WY(e,t);if(!(!r.gameObject||!r.prefab))return KY(r.definition?.prefab?.overrides,oJ(r.gameObject.overrides))}function WY(e,t){let r=typeof t=="string"?XY(e,t):t,n=typeof t=="string"?t:t.id,o=[],i=yw(r)?r.prefab:null;if(!r||!i)return o.push({code:"not-prefab-instance",severity:"info",message:r?`GameObject "${r.id}" is not a prefab instance.`:`GameObject "${n}" was not found.`}),{gameObject:r,prefab:null,definition:null,sourceAsset:null,diagnostics:o};let a=e.assets.find(d=>d.id===i.prefabId&&xr(d));a||o.push({code:"missing-prefab-definition",severity:"error",message:`Prefab definition "${i.prefabId}" was not found.`,prefabId:i.prefabId});let s=Jd(a)??ue(i.sourceAssetId);a&&i.sourceAssetId&&s&&i.sourceAssetId!==s&&o.push({code:"source-asset-mismatch",severity:"warning",message:`Prefab instance source "${i.sourceAssetId}" does not match definition source "${s}".`,prefabId:i.prefabId,expectedSourceAssetId:s,actualSourceAssetId:i.sourceAssetId});let c=s?e.assets.find(d=>d.id===s):void 0;if(s&&!c&&o.push({code:"missing-source-asset",severity:"error",message:`Prefab source asset "${s}" was not found.`,prefabId:i.prefabId,sourceAssetId:s}),s){let d=e.assets.filter(u=>xr(u)&&Jd(u)===s).map(u=>u.id);d.length>1&&o.push({code:"duplicate-source-prefab",severity:"info",message:`Source asset "${s}" is referenced by ${d.length} prefab definitions.`,prefabId:i.prefabId,sourceAssetId:s})}return{gameObject:r,prefab:i,definition:a??null,sourceAsset:c??null,diagnostics:o}}function Pt(e){return e.kind==="group"||e.kind==="instance"||e.kind==="transform"||e.kind==="primitive"?e.kind:yw(e)?"instance":e.primitive?"primitive":or(e)?"instance":zs(e)||e.transformType?"transform":"group"}function qY(e){return e.type==="Transform"}function YY(e){return e.type==="ModelRenderer"}function JY(e){return e.type==="ImageRenderer"}function ue(e){return typeof e=="string"&&e.trim().length>0?e.trim():null}function kw(e){if(typeof e!="string")return{ok:!1,message:"Prefab name must be a string."};let t=e.trim();return t?t.length>80?{ok:!1,message:"Prefab name cannot be longer than 80 characters."}:/[\u0000-\u001f\u007f/\\]/u.test(t)?{ok:!1,message:"Prefab name cannot contain control characters, /, or \\."}:{ok:!0,name:t}:{ok:!1,message:"Prefab name cannot be empty."}}function XY(e,t){return e.scene.gameObjects.find(r=>r.id===t)??null}function QY(e){let t=ue(e);return t&&t.replace(/\s+/g,"_").replace(/[^a-zA-Z0-9_:-]/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"")||null}function ZY(e){if(e==="overrides.materialBinding.materialAssetId")return["overrides","materialBinding","materialAssetId"];let t="overrides.materialBinding.override.";if(e.startsWith(t)){let o=e.slice(t.length);return hw(["overrides","materialBinding","override"],o)}let r=Ar(e,"materialAssetId");if(r)return["overrides","materialSlotBindings",r,"materialAssetId"];let n=Ar(e,"override");if(n){let o=eJ(e);return o?hw(["overrides","materialSlotBindings",n,"override"],o):null}return null}function eJ(e){let t=".override.",r=e.lastIndexOf(t);if(r<0)return null;let n=e.slice(r+t.length);return n||null}function hw(e,t){let r=t.split(".").filter(Boolean);return r.length===0||r.some(Nw)?null:[...e,...r]}function tJ(e,t,r){if(t.some(Nw))return;let n=e;for(let i of t.slice(0,-1)){let a=n[i];(!a||typeof a!="object"||Array.isArray(a))&&(n[i]={}),n=n[i]}let o=t[t.length-1];o&&(r==null?delete n[o]:n[o]=structuredClone(r))}function _w(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r={},n=Mb(t.materialBinding);n&&(r.materialBinding=n);let o=rJ(t.materialSlotBindings);return o&&(r.materialSlotBindings=o),ga(r)?r:void 0}function Mb(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r=ue(t.materialAssetId),n=Do(t.override),o={...r?{materialAssetId:r}:{},...ga(n)?{override:n}:{}};return ga(o)?o:void 0}function rJ(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t={};for(let[r,n]of Object.entries(e)){let o=ue(r);if(!o)continue;let i=Mb(n);i&&(t[o]=i)}return ga(t)?t:void 0}function nJ(e,t){let r=new Set([...Object.keys(e??{}),...Object.keys(t??{})]),n={};for(let o of r){let i=vw(e?.[o],t?.[o]);i&&(n[o]=i)}return ga(n)?n:void 0}function oJ(e){return _w(e)}function ga(e){return!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length>0}function Nw(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function Mr(e,t,r){let n=t.split(".").filter(Boolean);if(n.some(iJ))return;let o=e;for(let a of n.slice(0,-1)){let s=o[a];(!s||typeof s!="object"||Array.isArray(s))&&(o[a]={}),o=o[a]}let i=n[n.length-1];i&&(r==null?delete o[i]:o[i]=structuredClone(r))}function iJ(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function Db(e){let t=di(e.overrides);if(!t)return;let r=jw(t.material);r?t.material=r:delete t.material;let n=di(t.materialSlotBindings);if(n){for(let[a,s]of Object.entries(n)){let c=di(s);if(!c){delete n[a];continue}let d=jw(c.override);d?c.override=d:delete c.override,Object.keys(c).length===0&&delete n[a]}Object.keys(n).length===0&&delete t.materialSlotBindings}let o=di(t.childTransforms);o&&Object.keys(o).length===0&&delete t.childTransforms;let i=di(t.childOutlines);i&&Object.keys(i).length===0&&delete t.childOutlines,Object.keys(t).length===0&&delete e.overrides}function jw(e){let t=di(e);if(!t)return;let r=structuredClone(t);for(let n of["albedoTexture","normalTexture","metallicTexture"]){let o=di(r[n]);o&&Object.keys(o).length===0&&delete r[n]}for(let n of["pbr","standard"]){let o=di(r[n]);o&&Object.keys(o).length===0&&delete r[n]}return Object.keys(r).length>0?r:void 0}function di(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Gw(e,t){if(aJ(e))try{return e[t]}catch{return}}function aJ(e){return!!e&&(typeof e=="object"||typeof e=="function")}function _p(e,t=new WeakSet,r=0){if(e==null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?sJ(e):"[NonFiniteNumber]";if(typeof e=="bigint")return String(e);if(typeof e=="function")return`[Function ${e.name||"anonymous"}]`;if(typeof e=="symbol"||typeof e!="object")return String(e);if(t.has(e))return"[Circular]";if(r>6)return"[MaxDepth]";if(t.add(e),Array.isArray(e))return e.map(i=>_p(i,t,r+1));let n=e,o={};for(let i of Object.keys(n).sort())o[i]=_p(Gw(n,i),t,r+1);return o}function sJ(e){return Math.round(e*1e6)/1e6}function Np(e){let t=e.properties.filter(r=>!!r).map((r,n)=>r.order==null?{...r,order:n}:r);return t.length===0&&e.omitWhenEmpty!==!1?null:{id:e.id,title:e.title,order:e.order,placement:"body",summary:e.summary,persistence:e.persistence??(e.runtimeOnly?"runtime":"readonly"),runtimeOnly:e.runtimeOnly,effect:e.effect??(e.runtimeOnly?"runtime":void 0),disabledReason:e.disabledReason,collapsedByDefault:e.collapsedByDefault,tags:e.tags,properties:t}}function rn(e){if(!cJ(e.value))return null;let t=_p(e.value);return{path:e.path,label:e.label,valueType:e.valueType??dJ(t),control:"readonly",value:t,readOnly:!0,persistence:e.persistence??"readonly",commitMode:"blur",order:e.order,tags:uJ(e.source,e.tags),tooltip:e.tooltip,effect:e.effect??lJ(e.source,e.persistence),disabledReason:e.disabledReason}}function jp(e){let t=Object.fromEntries(Object.entries(e.params).filter(r=>typeof r[1]=="string"&&r[1].length>0));return{path:e.path,label:e.label,valueType:"string",control:"custom",customControl:"inspector-action-button",controlOptions:{actionId:e.actionId,label:e.buttonLabel??e.label,icon:e.icon,params:t,...e.disabled?{disabled:!0}:{},...e.disabledReason?{disabledReason:e.disabledReason}:{}},value:e.actionId,readOnly:!1,persistence:"readonly",commitMode:"immediate",order:e.order,tooltip:e.disabledReason??e.tooltip,effect:e.effect,disabledReason:e.disabled?e.disabledReason:void 0}}function cJ(e){return e!=null&&!(typeof e=="number"&&!Number.isFinite(e))}function dJ(e){return typeof e=="string"?"string":typeof e=="number"?"number":typeof e=="boolean"?"boolean":e&&typeof e=="object"?"object":"unknown"}function lJ(e,t){if(t==="runtime"||e==="Runtime")return"runtime";if(e==="Derived")return"derived"}function uJ(e,t){let r=[...e?[e]:[],...t??[]];return r.length>0?[...new Set(r)]:void 0}var Lw={x:-.3,y:-1,z:-.2};var Cb=-90,wb=90;function Fp(e,t=Lw){let r=e&&gJ(e)?e:t,n=Math.hypot(r.x,r.y,r.z);if(!Number.isFinite(n)||n<=1e-6){let o=Math.hypot(t.x,t.y,t.z)||1;return{x:t.x/o,y:t.y/o,z:t.z/o}}return{x:r.x/n,y:r.y/n,z:r.z/n}}function mJ(e,t){let r=Lp($p(e)),n=Lp(Vw(t,Cb,wb)),o=Math.cos(n);return{x:Rb(o*Math.cos(r)),y:Rb(-Math.sin(n)),z:Rb(o*Math.sin(r))}}function pJ(e,t=Lw){let{horizontalAngleDeg:r,elevationAngleDeg:n}=SJ({direction:t,rotation:e});return mJ(r,n)}function fJ(e,t){let r=zw(e);return{x:Lp(r.elevationAngleDeg),y:Lp(r.horizontalAngleDeg),z:Ob(t?.z)?t.z:0}}function Fw(e){if(!Bw(e.light))return e;let t=It(e);if(!t||!("rotation"in t))return e;let r=pJ(t.rotation,e.light.direction);return Uw(r,Fp(e.light.direction))?e:{...e,light:{...e.light,direction:r}}}function $w(e){if(!Bw(e.light))return e;let t=It(e);if(!t||!("rotation"in t))return e;let r=fJ(e.light.direction,t.rotation);return Uw(r,t.rotation)?e:{...e,components:e.components.map(n=>n===t?{...t,rotation:r}:n)}}function $p(e){let t=((e+180)%360+360)%360-180;return t===-180?180:t}function gJ(e){return typeof e.x=="number"&&Number.isFinite(e.x)&&typeof e.y=="number"&&Number.isFinite(e.y)&&typeof e.z=="number"&&Number.isFinite(e.z)}function Bw(e){return e?.type==="directional"}function zw(e){let t=Fp(e);return{horizontalAngleDeg:$p(Gp(Math.atan2(t.z,t.x))),elevationAngleDeg:Gp(Math.asin(Vw(-t.y,-1,1)))}}function SJ(e){let t=zw(e.direction);return{horizontalAngleDeg:Ob(e.rotation?.y)?Gp(e.rotation.y):t.horizontalAngleDeg,elevationAngleDeg:Ob(e.rotation?.x)?Gp(e.rotation.x):t.elevationAngleDeg}}function Ob(e){return typeof e=="number"&&Number.isFinite(e)}function Uw(e,t,r=1e-6){return Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r}function Gp(e){return e*180/Math.PI}function Lp(e){return e*Math.PI/180}function Rb(e){return Math.round(e*1e6)/1e6}function Vw(e,t,r){return Math.min(r,Math.max(t,e))}var vb="light.directionHorizontalAngleDeg",kb="light.directionElevationAngleDeg";function Hw(e,t){if(t==null||typeof t=="string"&&!t.trim())return null;let r=hJ(t);return r==null?t:e===vb?Math.round($p(r)):e===kb?Math.round(yJ(r,Cb,wb)):t}function hJ(e){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&!e.trim())return null;let t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?t:null}function yJ(e,t,r){return Math.min(r,Math.max(t,e))}var bJ="metadata.shadowInspectorLanguage";function _b(e){return t=>Vs({...e,value:t})}function Vs(e){let t=EJ(e);if(t)return t;let r=cb(e.path,e.nodeKind);return r?e.value==null&&r.allowDelete===!1?{ok:!1,message:`Scene node field cannot be deleted: ${e.path}.`}:r.validate(e.value)?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`}:{ok:!1,message:`Unsupported scene node field: ${e.path}.`}}function Kw(e,t){return(e==="shadow.cast"||e==="shadow.receive")&&t==="inherit"?null:/^overrides\.material\.(albedoTexture|normalTexture|metallicTexture)\.url$/.test(e)&&typeof t=="string"?Ww(t):t}function Nb(e,t,r={}){if((r.isDirectionalLightAnglePath??qw)(e))return Hw(e,t);if(e==="marker.type"&&typeof t=="string"||e==="marker.target.objectId"&&typeof t=="string")return t.trim();if(e==="marker.tags")return TJ(t);if(e==="marker.note"&&typeof t=="string"){let n=t.trim();return n||null}return mb(e)&&typeof t=="string"?Ww(t):Kw(e,t)}function jb(e){return t=>IJ(t,e)}function EJ(e){for(let t of e.extraValidators??[]){let r=t({path:e.path,nodeKind:e.nodeKind,value:e.value,document:e.document});if(r)return r}return null}function IJ(e,t){if(e.path==="camera.inspectorLanguage")return e.value==="zh"||e.value==="en"?{ok:!0,value:e.value}:{ok:!1,message:"Invalid value for scene node field: camera.inspectorLanguage."};if(e.path==="light.inspectorLanguage")return e.value==="zh"||e.value==="en"?{ok:!0,value:e.value}:{ok:!1,message:"Invalid value for scene node field: light.inspectorLanguage."};if(e.path==="shadowMapExperiment.behaviorProfile")return e.value==null||typeof e.value=="string"&&e.value.trim().length>0&&e.value===e.value.trim()?{ok:!0,value:e.value}:{ok:!1,message:"Invalid value for scene node field: shadowMapExperiment.behaviorProfile."};if((t.isDirectionalLightAnglePath??qw)(e.path))return typeof e.value=="number"&&Number.isFinite(e.value)?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`};if(e.path==="metadata.artistMaterialInspectorLanguage"||e.path===bJ)return e.value==="zh"||e.value==="en"?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`};if(e.path==="instance.assetId"&&e.document&&typeof e.value=="string"&&!(e.document.assets??[]).some(r=>r.id===e.value))return{ok:!1,message:`Asset not found: ${e.value}.`};if(ai(e.path)&&e.document&&typeof e.value=="string"&&e.value&&!t.hasMaterialAsset(e.document,e.value))return{ok:!1,message:`Material asset not found: ${e.value}.`};if(ai(e.path))return e.value==null||typeof e.value=="string"&&e.value.trim().length>0?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`};if(mb(e.path))return e.value==null||typeof e.value=="string"&&e.value.trim().length>0?{ok:!0,value:e.value}:{ok:!1,message:`Invalid value for scene node field: ${e.path}.`};if(e.path==="marker.target.objectId"){if(typeof e.value!="string")return{ok:!1,message:"Marker target must be a scene object id."};let r=e.value.trim();if(!r)return{ok:!0,value:""};let n=e.document?.scene?.gameObjects?.find(o=>o.id===r)??null;return n&&!t.isMarkerGameObject(n)?{ok:!0,value:r}:{ok:!1,message:`Marker target object not found: ${r}.`}}return null}function Ww(e){let t=e.trim();return t||null}function TJ(e){let r=(Array.isArray(e)?e:typeof e=="string"?e.split(","):[]).map(n=>typeof n=="string"?n.trim():"").filter((n,o,i)=>n.length>0&&i.indexOf(n)===o);return r.length>0?r:null}function qw(e){return e===vb||e===kb}function Qd(e){return{...e.property,readOnly:!1,persistence:"document",document:e.document??void 0,validate:_b({path:e.property.path,nodeKind:e.nodeKind,document:e.document,extraValidators:e.extraValidators})}}function Gb(e,t){return t==="scale"?e.scale??{x:1,y:1,z:1}:e[t]}function Hs(e){return e*180/Math.PI}function Ks(e){return e*Math.PI/180}function Bp(e){return Math.round(e*1e6)/1e6}var Yw="scene.main",Jw="scene";function Xw(e){let t=e.meta?.authoringSource;return{sourceId:t?.sourceId||Yw,sourceType:t?.sourceType||Jw,revision:typeof t?.revision=="number"?t.revision:1}}var PJ="main_camera",AJ="environment_light",xJ="sun_light";function Qw(e){return Pt(e)==="transform"&&(e.transformType==="camera"||!!e.camera)}function Zw(e){return Pt(e)==="transform"&&(e.transformType==="light"||!!e.light)}function Lb(e){return e.id===PJ||e.id===AJ||e.id===xJ||Qw(e)||Zw(e)}var zp="root",MJ="go_",Fb="GameObject";function li(e){return e===zp}function ui(e){return li(e.id)}function Zd(){let e=globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;return`${MJ}${e}`}function Bb(e,t){let r=new Set(e),n=Up(t)||"game_object";if(!r.has(n))return n;let o=2;for(;r.has(`${n}_${o}`);)o+=1;return`${n}_${o}`}function ev(e,t=Fb){return $b(e)??$b(t)??Fb}function el(e,t,r={}){let n=ev(t,r.fallbackName??Fb),o=new Set(e.map(s=>$b(s)).filter(s=>!!s));if(!r.alwaysAppendSuffix&&!o.has(n))return n;let i=1,a=`${n}_${i}`;for(;o.has(a);)i+=1,a=`${n}_${i}`;return a}function $b(e){let t=String(e??"").trim();return t&&t.replace(/\s+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"")||null}function Up(e){return e.trim().toLowerCase().replace(/[^a-z0-9_]+/g,"_").replace(/^_+|_+$/g,"")||"asset"}var DJ=fo();function Vp(e,t){if(li(t))return fo();let r=mi(e,t);if(!r)return null;let n=[],o=RJ(e),i=new Set,a=r;for(;a&&!i.has(a.id);)i.add(a.id),n.unshift(a),a=a.parentId?o.get(a.parentId):void 0;return pC(n.map(tv))}function mi(e,t){return e.scene.gameObjects.find(r=>r.id===t)??null}function RJ(e){return new Map(e.scene.gameObjects.map(t=>[t.id,t]))}function zb(e,t,r,n){let o=t?Vp(e,t):fo();return o?fC(o,r,n):null}function tv(e){return ui(e)?fo():Hp(e)}function Hp(e){let t=It(e);return t?pi(t)?mp(t.matrix)??fo():{position:{...t.position},rotation:{...t.rotation},scale:{...OJ(t,"scale")}}:fo()}function rv(e){let t=nv(e);return t?go(t)?{type:"Transform",mode:"matrix",matrix:t.matrix}:{type:"Transform",...t.mode==="trs"?{mode:"trs"}:{},position:{...t.position},rotation:{...t.rotation},scale:{...t.scale}}:null}function nv(e){return go(e)?mp(e.matrix):dC(e)}function tl(e){let t=rv(e);if(!t)throw new Error("Invalid matrix Transform component.");return t}function pi(e){return e.mode==="matrix"}function OJ(e,t){return CJ(e)?t==="scale"?e.scale??{x:1,y:1,z:1}:e[t]:t==="scale"?{x:1,y:1,z:1}:{x:0,y:0,z:0}}function CJ(e){return!!e.position&&!!e.rotation}function Sa(e){return e.scene.gameObjects.find(t=>t.id===zp&&!!It(t))?.id??e.scene.gameObjects.find(t=>!t.parentId&&!!It(t))?.id}function Ub(e,t){return[...Kp(e,t)]}function Kp(e,t){let r=new Set,n=new Map;for(let a of e.scene.gameObjects){r.add(a.id);let s=a.parentId;if(!s)continue;let c=n.get(s);c?c.push(a.id):n.set(s,[a.id])}let o=new Set,i=[];for(let a of t)!r.has(a)||o.has(a)||(o.add(a),i.push(a));for(let a=0;a<i.length;a+=1)for(let s of n.get(i[a])??[])o.has(s)||(o.add(s),i.push(s));return o}function Kb(e){let t=[av(e)],r=cv(e);r&&t.push(r);let n=uv(e);n&&t.push(n);let o=fv(e);o&&t.push(o);let i=hv(e);i&&t.push(i);let a=kJ(e);a&&t.push(a);let s=bv(e);s&&t.push(s);let c=Ev(e);c&&t.push(c);let d=Tv(e);return d&&t.push(d),t}function av(e){return{id:"common",title:"Common",order:10,placement:"body",summary:qp(e),persistence:"document",collapsedByDefault:!1,properties:sv(e)}}function sv(e){let{document:t,gameObject:r}=e,n=qp(e),o=[ir("id","ID",r.id,0),Nn(e,{document:t,path:"name",label:"Name",valueType:"string",control:"string",value:r.name??r.id,commitMode:"blur",order:1}),Nn(e,{document:t,path:"enabled",label:"Enabled",valueType:"boolean",control:"boolean",value:r.active!==!1,commitMode:"immediate",order:2}),ir("kind.resolved","Resolved Kind",n,3),ir("kind.explicit","Explicit Kind",r.kind??"inferred",4),ir("common.activeField","Active Field",r.active??"default:true",5)];return n==="transform"?o.push(Nn(e,{document:t,path:"transformType",label:"Transform Type",valueType:"enum",control:"enum",value:r.transformType??"plain",commitMode:"immediate",order:6,options:e.transformTypeOptions??zJ})):o.push(ir("common.transformType","Transform Type",r.transformType??"none",6)),o}function cv(e){return Np({id:"hierarchySource",title:"Hierarchy / Source",order:15,summary:dv(e),collapsedByDefault:!0,tags:["Document","Derived"],properties:lv(e)})}function dv(e){let t=e.gameObject.parentId?mi(e.document,e.gameObject.parentId):null;return t?`Parent: ${t.name??t.id}`:"Scene root"}function lv(e){let{document:t,gameObject:r}=e,n=[],o=r.parentId?mi(t,r.parentId):null,i=t.scene.gameObjects.filter(d=>d.parentId===r.id),a=Math.max(Ub(t,[r.id]).length-1,0),s=Xw(t),c=t.scene.gameObjects.filter(d=>d.parentId===r.parentId).findIndex(d=>d.id===r.id);return Be(n,{path:"hierarchy.parentId",label:"Parent ID",value:r.parentId??"none",order:0,source:"Document"}),Be(n,{path:"hierarchy.parentName",label:"Parent Name",value:o?o.name??o.id:r.parentId?"missing":"none",order:1,source:"Document"}),Be(n,{path:"hierarchy.childCount",label:"Children",value:i.length,order:2,source:"Derived"}),Be(n,{path:"hierarchy.descendantCount",label:"Descendants",value:a,order:3,source:"Derived"}),Be(n,{path:"hierarchy.siblingIndex",label:"Sibling Index",value:c>=0?c:"unknown",order:4,source:"Derived"}),Be(n,{path:"document.gameObjectIndex",label:"Document Index",value:t.scene.gameObjects.findIndex(d=>d.id===r.id),order:5,source:"Derived"}),Be(n,{path:"document.schemaVersion",label:"Schema Version",value:t.schemaVersion,order:6,source:"Document"}),Be(n,{path:"source.sourceId",label:"Source ID",value:s.sourceId,order:7,source:"Document"}),Be(n,{path:"source.sourceType",label:"Source Type",value:s.sourceType,order:8,source:"Document"}),Be(n,{path:"source.revision",label:"Revision",value:s.revision??"none",order:9,source:"Document"}),n}function uv(e){return It(e.gameObject)?{id:"transform",title:"Transform",order:20,placement:"body",summary:pv(e),persistence:"document",collapsedByDefault:!1,properties:mv(e)}:null}function mv(e){if(!It(e.gameObject))return[];let r=qp(e),n=ui(e.gameObject),o=n?e.rootTransform??fo():Hp(e.gameObject);if(go(o))return wJ(o,0);let i=!!e.gameObject.parentId,a=[],s=0;for(let c of["position","rotation","scale"]){let d=BJ(o,c);for(let u of["x","y","z"]){let l=`transform.${c}.${u}`,m=c==="rotation"?Bp(Hs(d[u])):d[u];n?a.push(ir(l,`${Hb(c)}.${u}`,m,s)):a.push(Nn(e,{document:null,path:l,label:`${i?`Local ${Hb(c)}`:Hb(c)}.${u}`,valueType:"number",control:"number",value:m,commitMode:"live",order:s,displayPrecision:c==="rotation"?2:3,precision:4,step:c==="rotation"?1:c==="scale"?.01:.1,stepPrecision:c==="rotation"?.1:c==="scale"?.001:.01},r)),s+=1}}if(i){let c=Vp(e.document,e.gameObject.id);if(c&&!go(c))for(let d of["x","y","z"])a.push(ir(`transform.worldPosition.${d}`,`World Position.${d}`,c.position[d],s)),s+=1}return a}function pv(e){let t=e.gameObject.parentId?mi(e.document,e.gameObject.parentId):null;if(ui(e.gameObject))return"Identity Root";let r=It(e.gameObject);return r&&pi(r)?"Matrix Transform":`Relative to: ${t?t.name??t.id:"Scene"}`}function wJ(e,t){if(!go(e))return[];let r=[ir("transform.mode","Mode","Matrix Transform",t)],n=t+1;for(let i=0;i<4;i+=1)r.push(ir(`transform.matrix.row${i}`,`Matrix Row ${i+1}`,e.matrix.slice(i*4,i*4+4).map(Wp).join(", "),n)),n+=1;let o=Uy(e.matrix);return r.push(ir("transform.matrix.trsApproximation","TRS Approximation",o?[`P ${Vb(o.position)}`,`R ${Vb({x:Hs(o.rotation.x),y:Hs(o.rotation.y),z:Hs(o.rotation.z)})}`,`S ${Vb(o.scale)}`].join(" | "):"Not representable as TRS",n)),r}function fv(e){let t=or(e.gameObject),r=zs(e.gameObject),n=t?.assetId??r?.assetId;return n?{id:"renderer",title:r?"Image Renderer / Asset":"Renderer / Asset",order:30,placement:"body",summary:Sv(e.document,n),persistence:"document",collapsedByDefault:!0,properties:r?vJ(e,r):gv(e)}:null}function vJ(e,t){let r=rl(e.document,t.assetId);return[ir("imageRenderer.assetId","Texture Asset",r?.displayName??t.assetId,0),ir("imageRenderer.size","Image Size",`${t.size.width} \xD7 ${t.size.height}`,1),ir("imageRenderer.assetType","Asset Type",r?.type??"texture",2)]}function gv(e){let t=or(e.gameObject);if(!t)return[];let{document:r}=e,n=rl(r,t.assetId),o=[Nn(e,{document:r,path:"instance.assetId",label:"Asset",valueType:"enum",control:"enum",value:t.assetId,commitMode:"immediate",order:0,options:r.assets.map(i=>({label:i.displayName??i.id,value:i.id}))})];return Be(o,{path:"renderer.assetId",label:"Renderer Asset ID",value:t.assetId,order:1,source:"Document"}),Be(o,{path:"asset.id",label:"Asset ID",value:n?.id??"missing",order:2,source:"Asset"}),Be(o,{path:"asset.type",label:"Asset Type",value:n?.type??"missing",order:3,source:"Asset"}),Be(o,{path:"asset.guid",label:"GUID",value:n?.guid??"missing",order:4,source:"Asset"}),Be(o,{path:"asset.displayName",label:"Display Name",value:n?.displayName??"none",order:5,source:"Asset"}),Be(o,{path:"asset.category",label:"Category",value:n?.category??"none",order:6,source:"Asset"}),Be(o,{path:"asset.materialMode",label:"Material Mode",value:n?.materialMode??"none",order:7,source:"Asset"}),Be(o,{path:"asset.defaults",label:"Defaults",value:n?.defaults??"none",order:8,source:"Asset",tags:["Raw"]}),o}function Sv(e,t){let r=rl(e,t);return r?r.displayName??r.id:`Missing asset: ${t}`}function hv(e){let t=e.gameObject.primitive;return t?{id:"primitive",title:"Primitive",order:32,placement:"body",summary:t.shape,persistence:"document",collapsedByDefault:!1,properties:yv(e)}:null}function yv(e){let t=e.gameObject.primitive;return t?[Nn(e,{document:e.document,path:"primitive.shape",label:"Shape",valueType:"enum",control:"enum",value:t.shape,commitMode:"immediate",order:0,options:e.primitiveShapeOptions??UJ})]:[]}function kJ(e){if(!xv(e))return null;let r=ct(e.gameObject.shadow).shadow??{},n=ov(r.cast),o=ov(r.receive),i=Nn(e,{document:e.document,path:"shadow.cast",label:"\u6295\u5C04\u9634\u5F71",valueType:"enum",control:"boolean",value:n.value,mixed:n.mixed,coerce:iv,controlOptions:{allowInheritReset:!0,inheritValue:"inherit"},commitMode:"immediate",order:0,tooltip:"\u7EE7\u627F\u65F6\u4F7F\u7528\u4E0A\u5C42\u6216\u9879\u76EE\u9ED8\u8BA4\uFF1B\u5F00\u542F\u540E\u8BE5\u7269\u4F53\u6295\u5C04\u9634\u5F71\uFF1B\u5173\u95ED\u540E\u8BE5\u7269\u4F53\u4E0D\u8FDB\u5165\u9634\u5F71\u6295\u5C04\u5019\u9009\u96C6\u3002"}),a=Nn(e,{document:e.document,path:"shadow.receive",label:"\u63A5\u6536\u9634\u5F71",valueType:"enum",control:"boolean",value:o.value,mixed:o.mixed,coerce:iv,controlOptions:{allowInheritReset:!0,inheritValue:"inherit"},commitMode:"immediate",order:1,tooltip:"\u7EE7\u627F\u65F6\u4F7F\u7528\u4E0A\u5C42\u6216\u9879\u76EE\u9ED8\u8BA4\uFF1B\u5F00\u542F\u540E\u8BE5\u7269\u4F53\u63A5\u6536\u9634\u5F71\uFF1B\u5173\u95ED\u540E\u6750\u8D28\u4E0D\u91C7\u6837\u9634\u5F71\u7ED3\u679C\u3002"});return{id:"shadow",title:"\u9634\u5F71",order:34,placement:"body",persistence:"document",collapsedByDefault:!1,properties:[i,a]}}function _J(e){return e&&typeof e=="object"&&"environment"in e&&"postProcess"in e&&"shadows"in e&&"renderingGroups"in e&&"shadowMeshes"in e?e:dn(e)}function ov(e){return e==="enabled"?{value:!0,mixed:!1}:e==="none"?{value:!1,mixed:!1}:{value:!1,mixed:!0}}function iv(e){return e===!0?"enabled":e===!1?"none":e}function bv(e){if(!NJ(e))return null;let t=_J(e.renderingProfile),r=jJ(e.gameObject.rendering?.renderingGroupId),n=t.renderingGroups.slots.find(i=>i.renderingGroupId===r)??t.renderingGroups.slots[0],o=GJ(e.gameObject)??null;return{id:"rendering",title:"Rendering",order:36,placement:"body",summary:LJ(n,o),persistence:"document",collapsedByDefault:!1,properties:[Nn(e,{document:e.document,path:"rendering.renderingGroupId",label:"Rendering Group",valueType:"enum",control:"enum",value:r,commitMode:"immediate",order:0,options:t.renderingGroups.slots.map(i=>({label:`${i.renderingGroupId}: ${i.name}`,value:i.renderingGroupId}))}),Nn(e,{document:e.document,path:"rendering.alphaIndex",label:"Alpha Order",valueType:"enum",control:"enum",value:o,commitMode:"immediate",order:1,options:FJ(n,o)})]}}function Ev(e){return Np({id:"components",title:"Scripts / Components",order:65,summary:Wb(e.gameObject),collapsedByDefault:!0,tags:["Document"],properties:Iv(e.gameObject)})}function Wb(e){return e.components.map(t=>t.type).join(", ")||"none"}function Iv(e){let t=[];return Be(t,{path:"components.count",label:"Count",value:e.components.length,order:0,source:"Document"}),Be(t,{path:"components.types",label:"Types",value:Wb(e),order:1,source:"Document"}),e.components.forEach((r,n)=>{Be(t,{path:`components.${n}`,label:`${r.type} ${n}`,value:r,order:n+2,source:"Document",tags:["Component","Raw"]})}),t}function Tv(e){let t=e.assetId??or(e.gameObject)?.assetId??zs(e.gameObject)?.assetId??null,r=Pv({document:e.document,gameObject:e.gameObject,assetId:t});return r.length===0?null:{id:"metadata",title:"Metadata",order:80,placement:"body",summary:Av({document:e.document,gameObject:e.gameObject,assetId:t}),persistence:"readonly",collapsedByDefault:!0,tags:["Document","Asset"],properties:r}}function Pv(e){let t=[],r=e.assetId?rl(e.document,e.assetId):null;return Be(t,{path:"metadata.document",label:"Document Meta",value:e.document.meta??"none",order:0,source:"Document",tags:["Raw"]}),Be(t,{path:"metadata.gameObject",label:"GameObject Metadata",value:e.gameObject.metadata??"none",order:1,source:"Document",tags:["Raw"]}),Be(t,{path:"metadata.asset",label:"Asset Metadata",value:r?.metadata??"none",order:2,source:"Asset",tags:["Raw"]}),t}function Av(e){let t=e.assetId?rl(e.document,e.assetId):null,r=[e.document.meta?"Document":null,e.gameObject.metadata?"GameObject":null,t?.metadata?"Asset":null].filter(n=>!!n);return r.length>0?r.join(" + "):"none"}function Nn(e,t,r=qp(e)){let{document:n,...o}=t;return Qd({document:n??null,nodeKind:r,property:o,extraValidators:e.extraValidators})}function Be(e,t){let r=rn(t);r&&e.push(r)}function ir(e,t,r,n){return rn({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document"})}function qp(e){return e.nodeKind??Pt(e.gameObject)}function xv(e){let t=e.gameObject;if(ui(t)||t.transformType==="camera"||t.transformType==="light"||t.camera||t.light)return!1;let r=e.nodeKind??Pt(t);return r==="instance"||r==="primitive"||r==="transform"}function NJ(e){let t=e.gameObject;if(ui(t)||t.transformType==="camera"||t.transformType==="light"||t.camera||t.light)return!1;let r=e.nodeKind??Pt(t);return r==="instance"||r==="primitive"||r==="transform"}function jJ(e){return e===1||e===2||e===3?e:0}function GJ(e){let t=e.rendering?.alphaIndex;if(typeof t=="number"&&Number.isFinite(t))return t}function LJ(e,t){return t==null?`${e.name} \xB7 Babylon \u9ED8\u8BA4`:`${e.name} \xB7 ${$J(e,t)}`}function FJ(e,t){let r=[{label:"Babylon \u9ED8\u8BA4",value:null},...e.alphaIndexPresets.map(n=>({label:`${n.name} (${n.alphaIndex})`,value:n.alphaIndex}))];return t!=null&&!e.alphaIndexPresets.some(n=>n.alphaIndex===t)&&r.push({label:`\u672A\u547D\u540D\u503C ${t}`,value:t,batchCompatibility:"ignore"}),r}function $J(e,t){let r=e.alphaIndexPresets.find(n=>n.alphaIndex===t);return r?r.name:`\u672A\u547D\u540D\u503C ${t}`}function BJ(e,t){return t==="scale"?e.scale??{x:1,y:1,z:1}:e[t]}function Vb(e){return`${Wp(e.x)}, ${Wp(e.y)}, ${Wp(e.z)}`}function Wp(e){return Bp(e).toString()}function Hb(e){return e==="position"?"Position":e==="rotation"?"Rotation":"Scale"}function rl(e,t){return e.assets.find(r=>r.id===t)??null}var zJ=[{label:"Plain",value:"plain"},{label:"Light",value:"light"},{label:"Camera",value:"camera"}],UJ=[{label:"Cube",value:"cube"},{label:"Sphere",value:"sphere"},{label:"Plane",value:"plane"},{label:"Capsule",value:"capsule"}];var Yp=Bb,Jp=Up;function VJ(e){let t=e.scene.gameObjects.filter(r=>!!or(r)||!!zs(r)||!!r.primitive).length;return{x:t%5*1.8-3.6,y:0,z:Math.floor(t/5)*1.8+1.8}}function Mv(e,t){let r=t&&zy(t)?t:null;return{position:r?.position?{...r.position}:VJ(e),rotation:r?.rotation?{...r.rotation}:{x:0,y:0,z:0},scale:r?.scale?{...r.scale}:{x:1,y:1,z:1}}}function Dv(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.kind==="texture"||t.type==="texture"}function ha(e){return Dv(e)?!0:!e||typeof e!="object"||Array.isArray(e)||e.placeable!==!1}function Qp(e,t){return{...e,guid:t.guid??e.guid,displayName:t.displayName||e.displayName,category:t.category??e.category,warmupCount:t.warmupCount??e.warmupCount,singleton:t.singleton??e.singleton,materialMode:t.materialMode??e.materialMode,defaults:Xp(t.defaults??e.defaults),prefab:Xp(t.prefab??e.prefab),external:Xp(t.external??e.external),metadata:Xp(t.metadata??e.metadata)}}function Xp(e){return e==null?void 0:structuredClone(e)}function Yb(e,t,r,n={}){if(t.type==="prefab"){let s=Rv(e,t),c=s?Qp(s,t):qb(t),d=Cv(e,t,c,r,n),u=KJ(s?e.assets.map(l=>l.id===c.id?c:l):[...e.assets,c],c);return{document:{...e,assets:u,scene:{...e.scene,gameObjects:[...e.scene.gameObjects,d]}},gameObject:d}}let o=Rv(e,t),i=o?Qp(o,t):qb(t),a=t.type==="texture"?HJ(e,t,i.id,r,n):Ov(e,t,i.id,r,n);return{document:{...e,assets:o?e.assets.map(s=>s.id===i.id?i:s):[...e.assets,i],scene:{...e.scene,gameObjects:[...e.scene.gameObjects,a]}},gameObject:a}}function HJ(e,t,r,n,o={}){let i=e.scene.gameObjects.map(u=>u.id),a=el(Jb(e),o.name??t.displayName,{fallbackName:t.assetId}),s=Yp(i,Jp(a)),c=Sa(e),d=Xb(e,c,n,o);return{id:s,guid:(o.createGameObjectGuid??Zd)(),name:a,kind:"transform",...c?{parentId:c}:{},active:!0,metadata:{...t.metadata??{},assetId:t.assetId,assetType:"texture"},components:[tl(d),{type:"ImageRenderer",assetId:r,size:{width:1,height:1}}]}}function qb(e){return{id:e.assetId,guid:e.guid,type:e.type,displayName:e.displayName,category:e.category,warmupCount:e.warmupCount,singleton:e.singleton,materialMode:e.materialMode,defaults:Zp(e.defaults),prefab:Zp(e.prefab),external:Zp(e.external),metadata:Zp(e.metadata)}}function Ov(e,t,r,n,o={}){let i=e.scene.gameObjects.map(u=>u.id),a=el(Jb(e),o.name??t.displayName,{fallbackName:t.assetId}),s=Yp(i,Jp(a)),c=Sa(e),d=Xb(e,c,n,o);return{id:s,guid:(o.createGameObjectGuid??Zd)(),name:a,...c?{parentId:c}:{},active:!0,components:[tl(d),{type:"ModelRenderer",assetId:r}]}}function Cv(e,t,r,n,o={}){let i=e.scene.gameObjects.map(u=>u.id),a=el(Jb(e),o.name??t.displayName,{fallbackName:t.assetId}),s=Yp(i,Jp(a)),c=Sa(e),d=Xb(e,c,n,o);return Ow({id:s,guid:(o.createGameObjectGuid??Zd)(),name:a,...c?{parentId:c}:{},prefabAsset:r,transform:tl(d),metadata:{...t.metadata??{},assetId:t.assetId,assetType:"prefab"}})}function Jb(e){return e.scene.gameObjects.map(t=>t.name??t.id)}function Rv(e,t){return e.assets.find(r=>r.id===t.assetId||r.guid&&r.guid===t.guid)}function KJ(e,t){let r=Jd(t);if(!r||e.some(i=>i.id===r))return[...e];let n=t.prefab?.sourceAssetGuid,o=!!n&&!e.some(i=>i.guid===n);return[...e,{id:r,...o?{guid:n}:{},type:"glb",displayName:r,category:"Model",metadata:{sourcePrefabId:t.id}}]}function Xb(e,t,r,n){let o=Mv(e,r);return t?n.resolveLocalTransform?.({document:e,parentId:t,worldTransform:o})??zb(e,t,o)??o:o}function Zp(e){return e==null?void 0:structuredClone(e)}var ya="mat_default_pbr",Ws="mat_default_standard",WJ="00000000-0000-4000-8000-000000000001",qJ="00000000-0000-4000-8000-000000000002",fi=ya,Kse={id:ya,guid:WJ,name:"Default PBR Material",shaderId:"fps.builtin.pbr",system:{readonly:!0,preset:"default-pbr"},origin:{type:"preset"},properties:jy("fps.builtin.pbr")},Wse={id:Ws,guid:qJ,name:"Default Standard Material",shaderId:"fps.builtin.standard",system:{readonly:!0,preset:"default-standard"},origin:{type:"preset"},properties:jy("fps.builtin.standard")};function wv(e){return e?.system?.preset==="default-pbr"||e?.id===ya?"default-pbr":e?.system?.preset==="default-standard"||e?.id===Ws?"default-standard":null}function vv(e,t){let r=[...new Set(e.sourceSurfaces.map(s=>s.sourceMaterialIndex).filter(s=>Number.isInteger(s)))],n=e.materialNames??[],o=r.findIndex(s=>s===t),i=o>=0?n[o]??(r.length===1?e.materialName:null):null;if(typeof i=="string"&&i.trim())return i.trim();let a=YJ(e,t)?.materialName;return typeof a=="string"&&a.trim()?a.trim():null}function YJ(e,t){return e.sourceMaterialProfiles?.find(r=>r.sourceMaterialIndex===t)??null}var JJ="New Material",XJ=[ya,Ws];function Qb(e,t,r=`${t.displayName} Material`){let n=QJ(e);return{id:Dp(n),guid:n,name:ZJ(e,r),shaderId:t.shaderId,origin:{type:"created"},properties:structuredClone(t.defaultProperties)}}function QJ(e){let t=new Set((e.scene.materialAssets??[]).map(o=>o.id)),r=ub(),n=Dp(r);for(;t.has(n);)r=ub(),n=Dp(r);return r}function ZJ(e,t){let r=en("name",t),n=typeof r=="string"&&si("name",r)?r:JJ,o=new Set((e.scene.materialAssets??[]).map(s=>s.name?.trim()).filter(s=>!!s).map(s=>s.toLocaleLowerCase()));if(!o.has(n.toLocaleLowerCase()))return n;let i=2,a=`${n} ${i}`;for(;o.has(a.toLocaleLowerCase());)i+=1,a=`${n} ${i}`;return a}function ef(e,t,r,n,o){let i=e.scene.materialAssets??[],a=!1,s=i.map(c=>{if(c.id!==t)return c;let d=_v(c,r,en(r,n),o);return a=a||d!==c,d});return a?{...e,scene:{...e.scene,materialAssets:s}}:e}function tf(e){return rf(e,XJ)}function Zb(e,t){return $s(e,t.id)?e:{...e,scene:{...e.scene,materialAssets:[...e.scene.materialAssets??[],structuredClone(t)]}}}function kv(e,t,r,n){return{...e,scene:{...e.scene,gameObjects:e.scene.gameObjects.map(o=>{if(o.id!==t)return o;let i=structuredClone(o);return e4(i,r,n),i})}}}function eE(e,t,r,n){let o=en(e,t);return si(e,o,r,n)?{ok:!0,value:o}:{ok:!1}}function e4(e,t,r){let n=t4(t)??t.split(".").filter(Boolean);if(n.some(r4))return;let o=e;for(let a of n.slice(0,-1)){let s=o[a];(!s||typeof s!="object"||Array.isArray(s))&&(o[a]={}),o=o[a]}let i=n[n.length-1];i&&(r==null?delete o[i]:o[i]=structuredClone(r))}function t4(e){let t=Ar(e,"materialAssetId");return t?["overrides","materialSlotBindings",t,"materialAssetId"]:null}function r4(e){return e==="__proto__"||e==="prototype"||e==="constructor"}var n4=/^transform(?:\.(position|rotation|scale)(?:\.(x|y|z))?)?$/,o4=/^transform\.(position|rotation|scale)$/,i4=/^transform\.(position|rotation|scale)\.(x|y|z)$/;function tE(e,t,r,n,o={}){return a4({document:e,targetId:t,path:r,value:n,options:o})}function rE(e,t,r={}){let n=new Map;for(let a of t){if(!a.objectId||a.changes.length===0)continue;let s=n.get(a.objectId)??[];s.push(...a.changes),n.set(a.objectId,s)}if(n.size===0)return e;let o=!1,i=e.scene.gameObjects.map(a=>{let s=n.get(a.id);if(!s?.length)return a;let c;for(let d of s){if($v(a.id,d.path))continue;let u=r.normalizeFieldValue?.(d.path,d.value)??d.value;r.validateField?.({document:e,gameObject:c??a,path:d.path,value:u})?.ok!==!1&&(r.blockFieldPatch?.({document:e,gameObject:c??a,targetId:a.id,path:d.path,value:u})||(c??(c=structuredClone(a)),c=Fv(c,d.path,u,r,!0)))}return!c||JSON.stringify(c)===JSON.stringify(a)?a:(o=!0,c)});return o?{...e,scene:{...e.scene,gameObjects:i}}:e}function a4(e){if($v(e.targetId,e.path))return e.document;let t=mi(e.document,e.targetId);if(!t)return e.document;let r=e.options?.normalizeFieldValue?.(e.path,e.value)??e.value;if(e.options?.validateField?.({document:e.document,gameObject:t,path:e.path,value:r})?.ok===!1||e.options?.blockFieldPatch?.({document:e.document,gameObject:t,targetId:e.targetId,path:e.path,value:r}))return e.document;let n=Lv(t,e.path,r,e.options);return n===t?e.document:{...e.document,scene:{...e.document.scene,gameObjects:e.document.scene.gameObjects.map(o=>o.id===e.targetId?n:o)}}}function Lv(e,t,r,n={}){let o=Fv(e,t,r,n);return JSON.stringify(o)===JSON.stringify(e)?e:o}function Fv(e,t,r,n,o=!1){let i=o?e:structuredClone(e),a=t.startsWith("transform.rotation")?Nv(i):null,s=t==="light.direction"||t.startsWith("light.direction.")?jv(i):null;if(t==="name")return typeof r=="string"&&r.trim()?i.name=r.trim():delete i.name,i;if(t==="enabled")return i.active=r!==!1,i;if(t.startsWith("shadow."))return s4(i,t,r),i;if(t.startsWith("shadowMapExperiment."))return u4(i,t,r),i;if(t.startsWith("rendering.")){Pt(i)==="group"&&(i.kind="instance");let c=p4(t,r);return Mr(i,t,c),f4(i),i}if(t.startsWith("metadata."))return Mr(i,t,r),i.metadata&&Object.keys(i.metadata).length===0&&delete i.metadata,i;if(t==="instance.assetId"){let c=or(i);return c&&typeof r=="string"&&(c.assetId=r),i.kind="instance",delete i.primitive,i}if(t==="primitive.shape"){let c=(n.normalizePrimitiveShape??y4)(r);return c&&(i.kind="primitive",i.primitive={shape:c}),i}if(t==="transformType")return g4(i,r,n),i;if(S4(i,t,r)){let c=a?Nv(i):null;return a&&c&&!Gv(a,c)?Fw(i):i}if(n.patchCustomTransformField?.(i,t,r))return i;if(t.startsWith("marker."))return!i.marker||typeof i.marker!="object"||(i.kind="transform",delete i.primitive,Mr(i,t,r)),i;if(t.startsWith("camera."))return i.kind="transform",i.transformType="camera",i.camera=Bv(i.camera,n),delete i.light,n.clearCustomTransformState?.(i,"camera"),delete i.primitive,Mr(i,t,r),i.camera=h4(i.camera,t,n),i;if(t.startsWith("light.")){i.kind="transform",i.transformType="light",i.light=zv(i.light,n),delete i.camera,n.clearCustomTransformState?.(i,"light"),delete i.primitive,Mr(i,t,r),(t==="light.direction"||t.startsWith("light.direction."))&&i.light?.type==="directional"&&(i.light.direction=Fp(i.light.direction,s??void 0));let c=s?jv(i):null;return s&&c&&!Gv(s,c)?$w(i):i}return t.startsWith("overrides.")&&(Pt(i)==="group"&&(i.kind="instance"),Mr(i,t,r),Db(i)),i}function Nv(e){let t=It(e);return t&&!pi(t)?{...t.rotation}:null}function jv(e){return e.light?.type==="directional"?{...e.light.direction}:null}function Gv(e,t,r=1e-6){return Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r&&Math.abs(e.z-t.z)<=r}function s4(e,t,r){if(!c4(t,r))return;let n=d4(t,r);Mr(e,t,n),l4(e)}function c4(e,t){return t==null?!0:e==="shadow.cast"?_s(t):e==="shadow.receive"?Ns(t):e==="shadow.mode"?js(t):e==="shadow.quality"?Gs(t):e==="shadow.light.mode"?Ls(t):e==="shadow.light.lightId"?typeof t=="string":e==="shadow.params.opacity"?pa(t):e==="shadow.params.softness"?wn(t):e==="shadow.params.bias"||e==="shadow.params.normalBias"?H(t):e==="shadow.params.resolution"?t===512||t===1024||t===2048||t===4096:e==="shadow.params.cascadeCount"?t===1||t===2||t===4:e==="shadow.params.maxDistance"||e==="shadow.params.bakeSamples"?zt(t):e==="shadow.params.blurKernel"?wn(t):!1}function d4(e,t){if((e==="shadow.cast"||e==="shadow.receive")&&(t==="inherit"||t==="auto"))return null;if(e==="shadow.light.lightId"&&typeof t=="string"){let r=t.trim();return r||null}return t}function l4(e){let t=e.shadow;if(!t||typeof t!="object"||Array.isArray(t)){delete e.shadow;return}let r=t,n=r.light;n&&typeof n=="object"&&!Array.isArray(n)&&Object.keys(n).length===0&&delete r.light;let o=r.params;o&&typeof o=="object"&&!Array.isArray(o)&&Object.keys(o).length===0&&delete r.params,Object.keys(r).length===0&&delete e.shadow}function u4(e,t,r){if(!m4(t,r))return;Mr(e,t,r);let n=e.shadowMapExperiment;(!n||typeof n!="object"||Object.keys(n).length===0)&&delete e.shadowMapExperiment}function m4(e,t){return e!=="shadowMapExperiment.behaviorProfile"?!1:t==null||typeof t=="string"&&t.trim().length>0&&t===t.trim()}function p4(e,t){return e==="rendering.renderingGroupId"?t===1||t===2||t===3?t:0:e==="rendering.alphaIndex"?H(t)?t:null:t}function f4(e){let t=e.rendering;if(!t||typeof t!="object"||Array.isArray(t)){delete e.rendering;return}Object.keys(t).length===0&&delete e.rendering}function $v(e,t){return li(e)&&n4.test(t)}function g4(e,t,r){let n=t==="plain"||t==="light"||t==="camera",o=!n&&r.isCustomTransformType?.(t)===!0;if(!n&&!o)return;let i=t;e.kind="transform",e.transformType=i,delete e.primitive,i==="camera"?e.camera=Bv(e.camera,r):delete e.camera,i==="light"?e.light=zv(e.light,r):delete e.light,o?r.applyCustomTransformType?.(e,i):r.clearCustomTransformState?.(e,i)}function S4(e,t,r){let n=t.match(o4);if(n){let i=It(e);if(!i||pi(i))return!0;let a=n[1];return a==="scale"?(H(r)?i.scale={x:r,y:r,z:r}:rr(r)&&(i.scale={...r}),!0):(rr(r)&&(i[a]=a==="rotation"?{x:Ks(r.x),y:Ks(r.y),z:Ks(r.z)}:{...r}),!0)}let o=t.match(i4);if(o&&H(r)){let i=It(e);if(!i||pi(i))return!0;let a=o[1],s=o[2],c=a==="rotation"?Ks(r):r;return a==="scale"?i.scale={...Gb(i,"scale"),[s]:c}:i[a]={...i[a],[s]:c},!0}return!1}function Bv(e,t){return t.mergeCameraDefaults?t.mergeCameraDefaults(e):Uv(e)}function h4(e,t,r){return r.normalizeCameraAfterFieldPatch?r.normalizeCameraAfterFieldPatch(e,t):e}function zv(e,t){return t.mergeLightDefaults?t.mergeLightDefaults(e):Uv(e)}function y4(e){return e==="cube"||e==="sphere"||e==="plane"||e==="capsule"?e:null}function Uv(e){return b4(e)??{}}function b4(e){return e&&typeof e=="object"&&!Array.isArray(e)?structuredClone(e):null}function Vv(e){let t=On(e.shaderId);if(!t)throw new Error(`Unknown built-in material shader: ${String(e.shaderId)}`);return t.runtimeKind}function rf(e,t=[]){return e?.system?.readonly===!0||e?.system?.preset==="default-pbr"||e?.system?.preset==="default-standard"||!!e&&t.includes(e.id)}function E4(e){let t=structuredClone(e??{});return ba(t.baseColor,"texture"),t.baseColor&&Object.keys(t.baseColor).length===0&&delete t.baseColor,ba(t.normal,"texture"),t.normal&&Object.keys(t.normal).length===0&&delete t.normal,ba(t.metallicRoughness,"texture"),t.metallicRoughness&&Object.keys(t.metallicRoughness).length===0&&delete t.metallicRoughness,ba(t.occlusion,"texture"),t.occlusion&&Object.keys(t.occlusion).length===0&&delete t.occlusion,t.emission&&(ba(t.emission,"texture"),ba(t.emission,"maskTexture"),Object.keys(t.emission).length===0&&delete t.emission),ba(t.alpha,"texture"),t.alpha&&Object.keys(t.alpha).length===0&&delete t.alpha,t}function ba(e,t){if(!e)return;let r=e,n=r[t];if(n===null||!n||typeof n!="object"||Array.isArray(n))return;let o=n,i=typeof o.url=="string"?o.url.trim():"",a=typeof o.textureAssetId=="string"?o.textureAssetId.trim():"";i?o.url=i:delete o.url,a?o.textureAssetId=a:delete o.textureAssetId,Object.keys(o).length===0&&delete r[t]}function _v(e,t,r,n){if(e.system?.readonly===!0)return e;let o=en(t,r);if(!si(t,o,e.shaderId,n))return e;let i=structuredClone(e);if(t==="name")return typeof o!="string"?e:(i.name=o.trim(),i.name===e.name?e:i);if(!t.startsWith("properties."))return e;let a=t.slice(11);return!a||(i.properties=structuredClone(i.properties),I4(i.properties,a,o)||Mr(i.properties,a,o),On(i.shaderId)&&(i.properties=E4(i.properties)),oC(i.shaderId,i.properties,"properties",n).length>0)||JSON.stringify(i)===JSON.stringify(e)?e:i}function I4(e,t,r){let n=t.endsWith(".textureAssetId")?"textureAssetId":t.endsWith(".url")?"url":null;if(!n)return!1;let o=t.slice(0,-`.${n}`.length);if(!o.endsWith(".texture")&&!o.endsWith(".maskTexture"))return!1;let i=o.split(".").filter(Boolean);if(i.length<2)return!1;let a=i[i.length-1],s=e;for(let u of i.slice(0,-1)){let l=s[u];if(!l||typeof l!="object"||Array.isArray(l)){if(r==null)return!0;let m={};s[u]=m,s=m;continue}s=l}if(r==null)return s[a]=null,!0;let c=s[a],d=c&&typeof c=="object"&&!Array.isArray(c)?{...c}:{};return d[n]=r,delete d[n==="url"?"textureAssetId":"url"],s[a]=d,!0}function Kv(e,t){let r=or(t),n=r?e.assets.find(g=>g.id===r.assetId):null,o=typeof n?.guid=="string"&&n.guid.trim()?n.guid.trim():n?.id,i=wp(e,t),a=new Map(i.filter(g=>!!g.slotId).map(g=>[g.slotId,g])),s=t.overrides?.materialSlotBindings??{},c=T4({document:e,assetId:n?.id,assetGuid:o,currentSlots:i,materialSlotBindings:s}),d=c.remaps,u=new Map(d.map(g=>[g.toSlotId,g])),l=new Set([...d.map(g=>g.fromSlotId),...c.coalescedSourceSlotIds]),m=new Map;for(let[g,S]of Object.entries(s))!S||l.has(g)||m.set(g,S);for(let g of d){let S=s[g.fromSlotId];S&&m.set(g.toSlotId,S)}let p=[];for(let[g,S]of i.entries()){let P=S.slotId?m.get(S.slotId):void 0,x=qs(P),T=x?fe(e,x):null,R=Wv(S),A=R[0],E=S.slotId?u.get(S.slotId):void 0;if(E){p.push({status:"changed",reason:"slot-remapped",...S.slotId?{slotId:S.slotId}:{},previousSlotId:E.fromSlotId,ownerNodePath:_n(S)??void 0,label:nf(S,g),...A==null?{}:{sourceMaterialIndex:A},...R.length>0?{sourceMaterialIndices:R}:{},materialAssetId:x,bindingPath:`overrides.materialSlotBindings.${S.slotId}.materialAssetId`,conflict:!1});continue}let C=qv(T,o,n?.id)?.sourceMaterialIndex;if(C!=null&&R.length>0&&!R.includes(C)){p.push(Hv({status:"changed",reason:"source-material-changed",...S.slotId?{slotId:S.slotId}:{},ownerNodePath:_n(S)??void 0,label:nf(S,g),...A==null?{}:{sourceMaterialIndex:A},...R.length>0?{sourceMaterialIndices:R}:{},previousSourceMaterialIndex:C,...x?{materialAssetId:x}:{},bindingPath:S.slotId?`overrides.materialSlotBindings.${S.slotId}.materialAssetId`:""}));continue}if(!x&&R.length>0){p.push({status:"unchanged",reason:"slot-current",...S.slotId?{slotId:S.slotId}:{},ownerNodePath:_n(S)??void 0,label:nf(S,g),...A==null?{}:{sourceMaterialIndex:A},...R.length>0?{sourceMaterialIndices:R}:{},bindingPath:S.slotId?`overrides.materialSlotBindings.${S.slotId}.materialAssetId`:"",conflict:!1});continue}p.push({status:"unchanged",reason:"slot-current",...S.slotId?{slotId:S.slotId}:{},ownerNodePath:_n(S)??void 0,label:nf(S,g),...A==null?{}:{sourceMaterialIndex:A},...R.length>0?{sourceMaterialIndices:R}:{},...x?{materialAssetId:x}:{},bindingPath:S.slotId?`overrides.materialSlotBindings.${S.slotId}.materialAssetId`:"",conflict:!1})}for(let[g,S]of Object.entries(s))!S||a.has(g)||l.has(g)||p.push(Hv({status:"removed",reason:"slot-removed",slotId:g,...qs(S)?{materialAssetId:qs(S)}:{},bindingPath:`overrides.materialSlotBindings.${g}.materialAssetId`}));let f=p.filter(A4);return{gameObjectId:t.id,...t.name?{gameObjectName:t.name}:{},...n?.id?{assetId:n.id}:{},...o?{assetGuid:o}:{},ok:f.length===0,items:p,issues:f,bindingRemaps:d,bindingRemapIssues:c.issues,counts:x4(p)}}function T4(e){let t=new Set(e.currentSlots.map(d=>d.slotId).filter(d=>!!d)),r=new Set(Object.keys(e.materialSlotBindings).filter(d=>t.has(d))),n=[],o=[],i=new Map;for(let[d,u]of Object.entries(e.materialSlotBindings)){if(!u||t.has(d))continue;let l=qs(u),m=l?fe(e.document,l):null,p=qv(m,e.assetGuid,e.assetId);if(!p){o.push({fromSlotId:d,materialAssetId:l,reason:"binding-unmatched",candidateSlotIds:[]});continue}let f=e.currentSlots.filter(g=>!!g.slotId&&Wv(g).includes(p.sourceMaterialIndex)).map(g=>g.slotId);i.set(d,{materialAssetId:l,candidateSlotIds:f,binding:u,anchored:p.sourceSlotId===d})}let a=new Map;for(let[d,u]of i){if(u.candidateSlotIds.length!==1)continue;let[l]=u.candidateSlotIds,m=a.get(l)??[];m.push(d),a.set(l,m)}let s=new Set,c=new Set;for(let[d,u]of a){u.forEach(g=>c.add(g));let l=u.filter(g=>i.get(g)?.anchored).sort((g,S)=>g.localeCompare(S));if(l.length===0){for(let g of u){let S=i.get(g);o.push({fromSlotId:g,materialAssetId:S.materialAssetId,reason:"binding-unmatched",candidateSlotIds:[]})}continue}let m=l[0],p=i.get(m);if(!u.every(g=>P4(p.binding,i.get(g).binding))||r.has(d)){for(let g of u){let S=i.get(g);o.push({fromSlotId:g,materialAssetId:S.materialAssetId,reason:"binding-ambiguous",candidateSlotIds:[d]})}continue}r.add(d),n.push({fromSlotId:m,toSlotId:d,materialAssetId:p.materialAssetId,reason:"source-material-index"});for(let g of u)g!==m&&s.add(g)}for(let[d,u]of i)c.has(d)||o.push({fromSlotId:d,materialAssetId:u.materialAssetId,reason:u.anchored&&u.candidateSlotIds.length>0?"binding-ambiguous":"binding-unmatched",candidateSlotIds:u.anchored?u.candidateSlotIds:[]});return{remaps:n,issues:o,coalescedSourceSlotIds:[...s].sort((d,u)=>d.localeCompare(u))}}function P4(e,t){return qs(e)===qs(t)&&nE(e.override,t.override)}function nE(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((a,s)=>nE(a,t[s]));if(!e||!t||typeof e!="object"||typeof t!="object")return!1;let r=e,n=t,o=Object.keys(r).sort(),i=Object.keys(n).sort();return o.length===i.length&&o.every((a,s)=>a===i[s]&&nE(r[a],n[a]))}function Wv(e){return Cp(e)}function qv(e,t,r){if(e?.origin?.type!=="imported")return null;let n=e.origin.sourceMaterialIndex;if(typeof n!="number"||!Number.isInteger(n))return null;let o=e.origin.sourceAssetGuid,i=e.origin.sourceAssetId;if((o||i)&&!(!!t&&!!o&&o===t)&&!(!!r&&!!i&&i===r)||!o&&!i&&(t||r))return null;let c=typeof e.origin.sourceSlotId=="string"&&e.origin.sourceSlotId.trim()?e.origin.sourceSlotId.trim():void 0;return{sourceMaterialIndex:n,...c?{sourceSlotId:c}:{}}}function nf(e,t){return e.label?.trim()||_n(e)?.trim()||e.slotId?.trim()||`Slot ${t+1}`}function qs(e){return typeof e?.materialAssetId=="string"?e.materialAssetId.trim():""}function Hv(e){return{...e,conflict:!0}}function A4(e){return e.conflict}function x4(e){return e.reduce((t,r)=>(t[r.status]+=1,t),{unchanged:0,added:0,removed:0,changed:0,conflict:0})}function iE(e,t){let r=new Set,n=e.properties,o=Ea(n)?n:{},i=Ea(t.defaultProperties)?t.defaultProperties:{},a=Yv(t.propertiesSchema,o,i,"properties",r),s=new Set;Jv(o,"properties",s);let c=[...s].filter(d=>!r.has(d)).sort();return{materialAsset:{...structuredClone(e),shaderId:t.shaderId,properties:a},preservedPaths:[...r].sort(),resetPaths:c}}function Yv(e,t,r,n,o){if(e.kind!=="object")return M4(e,t)?(o.add(n),structuredClone(t)):structuredClone(r);let i=Ea(t)?t:{},a=Ea(r)?r:{},s={};for(let[c,d]of Object.entries(e.properties)){let u=Object.prototype.hasOwnProperty.call(i,c),l=Object.prototype.hasOwnProperty.call(a,c);if(!u&&!l)continue;let m=Yv(d,u?i[c]:void 0,l?a[c]:void 0,`${n}.${c}`,o);m!==void 0&&(s[c]=m)}return s}function M4(e,t){if(e.kind==="number")return typeof t=="number"&&Number.isFinite(t)&&(e.min==null||t>=e.min)&&(e.max==null||t<=e.max);if(e.kind==="boolean")return typeof t=="boolean";if(e.kind==="string")return typeof t=="string"||t===null&&e.nullable===!0;if(e.kind==="enum")return typeof t=="string"&&e.values.includes(t);if(e.kind==="color")return oE(t,e.channels===4?["r","g","b","a"]:["r","g","b"]);if(e.kind==="vec2")return oE(t,["x","y"]);if(e.kind==="vec3")return oE(t,["x","y","z"]);if(t===null)return!0;if(!Ea(t))return!1;let r=Object.keys(t);return r.every(n=>n==="url"||n==="textureAssetId")&&r.every(n=>typeof t[n]=="string"&&!!t[n].trim())}function Jv(e,t,r){for(let[n,o]of Object.entries(e)){let i=`${t}.${n}`;Ea(o)&&!D4(o)?Jv(o,i,r):r.add(i)}}function D4(e){let t=Object.keys(e);return t.length===0?!0:t.every(r=>["r","g","b","a"].includes(r))||t.every(r=>["x","y","z"].includes(r))||t.every(r=>r==="url"||r==="textureAssetId")}function oE(e,t){return Ea(e)&&Object.keys(e).length===t.length&&t.every(r=>typeof e[r]=="number"&&Number.isFinite(e[r]))}function Ea(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function R4(e){return e?.system?.preset}function Qv(e,t){let r=R4(e);return r==="default-pbr"?t.defaultMaterial:r==="default-standard"?t.defaultStandardMaterial:e.name||e.id}function of(e,t){let r=t.trim();return r?e?.find(n=>n.url===r||n.id===r)??null:null}function Xv(e,t){return{kind:"image",url:e.url,alt:e.label,fit:"contain",...t?{resourceStatusText:{loading:t.loadingTexture,failed:t.failedTexture}}:{}}}function Zv(e){let t=e.currentTexture??of(e.textureAssets,e.currentValue),r=e.currentValue.trim(),n=!!r&&!t,o=!!t&&!t.disabled&&!!t.url.trim(),i=n?"missing":t?o?"ready":"failed":void 0,a=e.candidateValue??"url",s=(e.textureAssets??[]).filter(O4);return{pickerKind:"texture",pickerTitle:e.pickerText.texturePickerTitle,pickerTrigger:"preview",placeholder:e.pickerText.emptyTexture,currentLabel:n?e.pickerText.missingTexture:t?.label??(r||e.pickerText.emptyTexture),currentMeta:n?`${e.pickerText.missingTextureMeta} \xB7 ${r}`:t?.previewUnavailableReason??t?.meta??(r||e.pickerText.emptyTextureMeta),...i?{currentResourceState:i}:{},...r?{currentResourceReference:r}:{},resourceStatusText:{missing:e.pickerText.missingTexture,loading:e.pickerText.loadingTexture,failed:e.pickerText.failedTexture},currentPreview:o?Xv(t,e.pickerText):void 0,candidates:[{label:e.pickerText.clearTexture,value:"",meta:e.pickerText.clearTextureMeta},...s.map(c=>({label:c.label,value:a==="assetId"?c.id:c.url,meta:c.meta??c.id,kind:"texture",...typeof c.width=="number"?{width:c.width}:{},...typeof c.height=="number"?{height:c.height}:{},...!c.disabled&&c.url.trim()?{preview:Xv(c,e.pickerText)}:{},...c.disabled?{disabled:!0,disabledReason:c.disabledReason}:{}}))]}}function O4(e){return e.capabilities?.materialTexture===!0?!0:e.capabilities?.materialTexture===!1?!1:e.usage!=="environment"}function ek(e){return{path:`${e.pathPrefix??ii}${e.materialAsset.id}.${e.fieldPath}`,label:e.label,valueType:e.valueType,control:e.control,value:e.value,readOnly:!1,persistence:"document",commitMode:e.commitMode,order:e.order,tooltip:e.tooltip,tags:e.tags??["ArtistMaterial","MaterialAsset"],document:e.document}}var tk={zh:{title:"\u7F8E\u672F\u6750\u8D28",slotTitle:"\u6750\u8D28\u69FD",language:"\u8BED\u8A00",materialAsset:"\u6750\u8D28\u8D44\u4EA7",materialCard:"\u5F53\u524D\u6750\u8D28",inheritNone:"\u7EE7\u627F / \u65E0",defaultMaterial:"\u9ED8\u8BA4 PBR \u6750\u8D28",defaultMaterialMeta:"BabylonJS \u9ED8\u8BA4 PBR \u6750\u8D28",defaultStandardMaterial:"\u9ED8\u8BA4 Standard \u6750\u8D28",defaultStandardMaterialMeta:"BabylonJS \u9ED8\u8BA4 Standard \u6750\u8D28",defaultMaterialReadOnly:"\u7CFB\u7EDF\u9ED8\u8BA4\u6750\u8D28\u4E3A\u53EA\u8BFB\uFF1B\u8BF7\u9009\u62E9\u53EF\u7F16\u8F91\u6750\u8D28\u7403\u540E\u8C03\u6574\u53C2\u6570\u3002",replace:"\u66FF\u6362",batchReplaceUnsupported:"\u591A\u9009\u7EDF\u4E00\u66FF\u6362\u6750\u8D28\u6682\u672A\u63A5\u5165\uFF1B\u8BF7\u5148\u5355\u9009\u5BF9\u8C61\u66FF\u6362\u6750\u8D28\u3002",duplicateForObject:"\u590D\u5236",materialPickerTitle:"\u9009\u62E9\u6750\u8D28\u8D44\u4EA7",texturePickerTitle:"\u9009\u62E9\u8D34\u56FE\u8D44\u4EA7",emptyTexture:"\u9009\u62E9\u8D34\u56FE",emptyTextureMeta:"\u70B9\u51FB\u9009\u62E9\u8D34\u56FE\u8D44\u4EA7",clearTexture:"\u6E05\u9664\u8D34\u56FE",clearTextureMeta:"\u4E0D\u4F7F\u7528\u8D34\u56FE",missingTexture:"\u8D34\u56FE\u8D44\u4EA7\u7F3A\u5931",missingTextureMeta:"\u5F53\u524D\u5F15\u7528\u65E0\u6CD5\u5728\u9879\u76EE\u8D44\u4EA7\u5E93\u4E2D\u89E3\u6790",loadingTexture:"\u6B63\u5728\u52A0\u8F7D\u8D34\u56FE",failedTexture:"\u8D34\u56FE\u52A0\u8F7D\u5931\u8D25",assetProfile:"\u8D44\u4EA7\u53C2\u6570",assetProfileEmpty:"\u9009\u62E9\u6750\u8D28\u8D44\u4EA7\u540E\u53EF\u7F16\u8F91\u8D44\u4EA7\u53C2\u6570",assetName:"\u8D44\u4EA7\u540D\u79F0",assetKind:"Shader",assetKindPbr:"PBR \u6807\u51C6\u6750\u8D28\u7403",assetKindStandard:"Standard \u6807\u51C6\u6750\u8D28\u7403",assetLightingModel:"\u5149\u7167\u6A21\u578B",assetLightingModelLit:"\u53D7\u5149\u7167",assetLightingModelUnlit:"\u4E0D\u53D7\u5149\u7167",assetBaseColor:"\u57FA\u7840\u8272",assetBaseTexture:"\u57FA\u7840\u8D34\u56FE",assetBrightness:"\u8D34\u56FE\u4EAE\u5EA6",assetSaturation:"\u8D34\u56FE\u9971\u548C\u5EA6",assetContrast:"\u8D34\u56FE\u5BF9\u6BD4\u5EA6",assetHue:"\u8D34\u56FE\u8272\u76F8",assetNormalTexture:"\u6CD5\u7EBF\u8D34\u56FE",assetNormalStrength:"\u6CD5\u7EBF\u5F3A\u5EA6",assetMetallic:"\u91D1\u5C5E\u5EA6",assetRoughness:"\u7C97\u7CD9\u5EA6",assetMetallicRoughnessTexture:"\u91D1\u5C5E\u7C97\u7CD9\u8D34\u56FE",assetOcclusionTexture:"AO \u8D34\u56FE",assetOcclusionStrength:"AO \u5F3A\u5EA6",resetValue:"\u6062\u590D Shader \u9ED8\u8BA4\u503C",modifiedValue:"\u5DF2\u504F\u79BB Shader \u9ED8\u8BA4\u503C",inactiveReasons:{baseTexture:"\u4EC5\u5728\u5DF2\u9009\u62E9\u57FA\u7840\u8D34\u56FE\u65F6\u751F\u6548\u3002",litMaterial:"\u4EC5\u5728\u201C\u53D7\u5149\u7167\u201D\u6A21\u5F0F\u4E0B\u751F\u6548\u3002",normalTexture:"\u4EC5\u5728\u5DF2\u9009\u62E9\u6CD5\u7EBF\u8D34\u56FE\u65F6\u751F\u6548\u3002",occlusionTexture:"\u4EC5\u5728\u5DF2\u9009\u62E9 AO \u8D34\u56FE\u65F6\u751F\u6548\u3002",alphaBlend:"\u4EC5\u5728\u201C\u534A\u900F\u660E\u201D\u6A21\u5F0F\u4E0B\u751F\u6548\u3002",alphaMask:"\u4EC5\u5728\u201C\u906E\u7F69\u201D\u6A21\u5F0F\u4E0B\u751F\u6548\u3002",alphaTransparency:"\u4EC5\u5728\u201C\u906E\u7F69\u201D\u6216\u201C\u534A\u900F\u660E\u201D\u6A21\u5F0F\u4E0B\u751F\u6548\u3002"},assetEmissionColor:"\u81EA\u53D1\u5149\u8272",assetEmissionIntensity:"\u81EA\u53D1\u5149\u5F3A\u5EA6",assetEmissionTexture:"\u81EA\u53D1\u5149\u8D34\u56FE",assetEmissionMaskUrl:"\u906E\u7F69\u8D34\u56FE",assetAlphaMode:"\u900F\u660E\u6A21\u5F0F",assetAlphaModeOpaque:"\u4E0D\u900F\u660E",assetAlphaModeMask:"\u906E\u7F69",assetAlphaModeBlend:"\u534A\u900F\u660E",assetAlphaOpacity:"\u4E0D\u900F\u660E\u5EA6",assetAlphaCutoff:"Alpha \u9608\u503C",assetAlphaTexture:"Alpha \u8D34\u56FE",createSlotMaterial:"\u6DFB\u52A0\u6750\u8D28\u69FD",slotList:"\u69FD\u5217\u8868",slotId:"\u69FD ID",slotOwnerPath:"\u69FD\u8282\u70B9\u8DEF\u5F84",slotMaterialAsset:"\u69FD\u6750\u8D28\u8D44\u4EA7",slotSourceMaterial:"\u6E90\u6750\u8D28",slotBindingPath:"\u7ED1\u5B9A\u8DEF\u5F84",reimportConflicts:"\u91CD\u5BFC\u5165\u6750\u8D28\u51B2\u7A81",summaryAsset:e=>`\u8D44\u4EA7\uFF1A${e}`,summaryMissingAsset:"\u8D44\u4EA7\u7F3A\u5931",summaryCustomOverride:"\u81EA\u5B9A\u4E49\u53C2\u6570",summaryInherit:"\u7EE7\u627F",summaryAddSlot:"\u6DFB\u52A0\u69FD",summarySlotCount:e=>`${e} \u4E2A\u69FD`,formatUsageCount:e=>e>0?`\u88AB ${e} \u5904\u4F7F\u7528`:"\u672A\u88AB\u4F7F\u7528",formatMaterialEditImpact:e=>e<=0?"\u5F53\u524D\u672A\u88AB\u573A\u666F\u4F7F\u7528\uFF0C\u4FEE\u6539\u53EA\u4F1A\u6539\u53D8\u6750\u8D28\u8D44\u4EA7\u672C\u8EAB\u3002":e===1?"\u4FEE\u6539\u4F1A\u5F71\u54CD\u5F53\u524D\u7ED1\u5B9A\u3002":`\u5171\u4EAB\u6750\u8D28\uFF0C\u4FEE\u6539\u4F1A\u5F71\u54CD ${e} \u5904\u7ED1\u5B9A\u3002`,formatDuplicateMaterialImpact:e=>e<=0?"\u590D\u5236\u540E\u521B\u5EFA\u4E00\u4E2A\u53EF\u72EC\u7ACB\u7F16\u8F91\u7684\u6750\u8D28\u8D44\u4EA7\u3002":e===1?"\u590D\u5236\u540E\u5F53\u524D\u5BF9\u8C61\u6216\u69FD\u4F1A\u4F7F\u7528\u72EC\u7ACB\u6750\u8D28\u3002":`\u590D\u5236\u540E\u5F53\u524D\u5BF9\u8C61\u6216\u69FD\u4F1A\u4F7F\u7528\u72EC\u7ACB\u6750\u8D28\uFF0C\u539F ${e} \u5904\u5171\u4EAB\u7ED1\u5B9A\u4E0D\u88AB\u7EE7\u7EED\u4FEE\u6539\u3002`,formatReimportConflictSummary:e=>`\u68C0\u6D4B\u5230 ${e} \u4E2A\u6750\u8D28\u69FD\u91CD\u5BFC\u5165\u5DEE\u5F02\uFF1B\u5DF2\u4FDD\u7559\u73B0\u6709\u7ED1\u5B9A\uFF0C\u9700\u4EBA\u5DE5\u786E\u8BA4\u4E0D\u53EF\u5339\u914D\u9879\u3002`,tooltips:{language:"\u5207\u6362\u7F8E\u672F\u6750\u8D28 Inspector \u7684\u663E\u793A\u8BED\u8A00\u3002",materialAsset:"\u9009\u62E9\u9879\u76EE\u7EA7\u5171\u4EAB\u6750\u8D28\u8D44\u4EA7\uFF0C\u6216\u4F7F\u7528\u53EA\u8BFB\u7684\u9ED8\u8BA4 PBR \u6750\u8D28\u3002",baseTexture:"\u9009\u62E9\u9879\u76EE\u8D34\u56FE\u4F5C\u4E3A\u57FA\u7840\u8D34\u56FE\u3002\u8D34\u56FE\u8C03\u8272\u53C2\u6570\u4F1A\u5148\u4F5C\u7528\u4E8E\u8FD9\u5F20\u8D34\u56FE\u3002",assetProfile:"\u5171\u4EAB\u6750\u8D28\u8D44\u4EA7\u7684\u53C2\u6570\u4F1A\u5F71\u54CD\u6240\u6709\u7ED1\u5B9A\u8BE5\u8D44\u4EA7\u7684\u8282\u70B9\u3002",assetName:"\u6750\u8D28\u8D44\u4EA7\u540D\u79F0\u53EA\u7528\u4E8E\u5C55\u793A\uFF1B\u7ED1\u5B9A\u4F7F\u7528\u7A33\u5B9A\u6750\u8D28 ID\uFF0C\u4E0D\u53D7\u91CD\u547D\u540D\u5F71\u54CD\u3002",assetKind:"\u9009\u62E9\u8BE5\u6750\u8D28\u5F15\u7528\u7684 Shader Definition\uFF1B\u5207\u6362\u65F6\u4F1A\u4FDD\u7559\u517C\u5BB9\u53C2\u6570\u3002",lightingModel:"\u53D7\u5149\u7167\u6750\u8D28\u4F1A\u54CD\u5E94\u73AF\u5883\u5149\u548C\u76F4\u5C04\u5149\uFF1B\u4E0D\u53D7\u5149\u7167\u6750\u8D28\u9002\u5408 UI\u3001\u7279\u6548\u3001\u56FE\u6807\u548C\u5BFC\u89C6\u6807\u8BB0\u3002",baseColor:"\u57FA\u7840\u8272\u4F5C\u4E3A\u989C\u8272\u56E0\u5B50\uFF0C\u4F1A\u5728\u57FA\u7840\u8D34\u56FE\u5B8C\u6210\u8C03\u8272\u540E\u53C2\u4E0E\u76F8\u4E58\u3002\u4FEE\u6539\u5171\u4EAB\u6750\u8D28\u8D44\u4EA7\u4F1A\u5F71\u54CD\u6240\u6709\u7ED1\u5B9A\u8BE5\u6750\u8D28\u7403\u7684\u8282\u70B9\u3002",duplicateForObject:"\u590D\u5236\u5F53\u524D\u6750\u8D28\u7403\u4E3A\u8FD9\u4E2A\u5BF9\u8C61\u6216\u69FD\u7684\u72EC\u7ACB\u6750\u8D28\uFF0C\u7136\u540E\u81EA\u52A8\u66FF\u6362\u7ED1\u5B9A\u3002",brightness:"\u57FA\u7840\u8D34\u56FE\u4EAE\u5EA6\u500D\u7387\uFF0C1 \u4E3A\u4E0D\u6539\u53D8\uFF1B\u4EC5\u5728\u6709\u57FA\u7840\u8D34\u56FE\u65F6\u5F71\u54CD\u8D34\u56FE\u3002",saturation:"\u57FA\u7840\u8D34\u56FE\u9971\u548C\u5EA6\u500D\u7387\uFF0C1 \u4E3A\u4E0D\u6539\u53D8\uFF1B\u4EC5\u5728\u6709\u57FA\u7840\u8D34\u56FE\u65F6\u5F71\u54CD\u8D34\u56FE\u3002",contrast:"\u57FA\u7840\u8D34\u56FE\u5BF9\u6BD4\u5EA6\u500D\u7387\uFF0C1 \u4E3A\u4E0D\u6539\u53D8\uFF1B\u4EC5\u5728\u6709\u57FA\u7840\u8D34\u56FE\u65F6\u5F71\u54CD\u8D34\u56FE\u3002",hue:"\u57FA\u7840\u8D34\u56FE\u8272\u76F8\u504F\u79FB\uFF0C\u5355\u4F4D\u4E3A\u5EA6\uFF1B\u4EC5\u5728\u6709\u57FA\u7840\u8D34\u56FE\u65F6\u5F71\u54CD\u8D34\u56FE\u3002",normalTexture:"\u9009\u62E9\u6CD5\u7EBF\u8D34\u56FE\uFF0C\u8FD0\u884C\u65F6\u5E94\u7528\u5230 PBR/Standard \u6750\u8D28\u7684 bump/normal \u901A\u9053\u3002",normalStrength:"\u6CD5\u7EBF\u5F3A\u5EA6\uFF0C1 \u4E3A\u8D34\u56FE\u539F\u59CB\u5F3A\u5EA6\u3002",metallic:"\u91D1\u5C5E\u5EA6\uFF0C\u8303\u56F4 0 \u5230 1\u3002",roughness:"\u7C97\u7CD9\u5EA6\uFF0C\u8303\u56F4 0 \u5230 1\u3002",metallicRoughnessTexture:"\u9009\u62E9\u91D1\u5C5E\u7C97\u7CD9\u8D34\u56FE\u3002PBR \u8FD0\u884C\u65F6\u6309 GLB \u5E38\u7528\u7EA6\u5B9A\u8BFB\u53D6\u84DD\u8272\u91D1\u5C5E\u5EA6\u3001\u7EFF\u8272\u7C97\u7CD9\u5EA6\u3002",occlusionTexture:"\u9009\u62E9\u73AF\u5883\u906E\u853D AO \u8D34\u56FE\uFF0C\u53EA\u5BF9 PBR \u6750\u8D28\u751F\u6548\u3002",occlusionStrength:"AO \u5F3A\u5EA6\uFF0C1 \u4E3A\u8D34\u56FE\u539F\u59CB\u5F3A\u5EA6\u3002",emissionColor:"\u81EA\u53D1\u5149\u989C\u8272\uFF0C\u4F1A\u4E0E\u5F3A\u5EA6\u76F8\u4E58\u3002",emissionIntensity:"\u81EA\u53D1\u5149\u5F3A\u5EA6\uFF0C0 \u8868\u793A\u65E0\u81EA\u53D1\u5149\u3002",emissionTexture:"\u9009\u62E9\u81EA\u53D1\u5149\u8D34\u56FE\uFF1B\u82E5\u672A\u8BBE\u7F6E\u5219\u517C\u5BB9\u4F7F\u7528\u65E7\u906E\u7F69\u8D34\u56FE\u3002",emissionMaskUrl:"\u9009\u62E9\u7070\u5EA6\u8D34\u56FE\u4F5C\u4E3A\u81EA\u53D1\u5149\u5F3A\u5EA6\u906E\u7F69\u3002",alphaMode:"\u900F\u660E\u6A21\u5F0F\uFF1A\u4E0D\u900F\u660E\u3001Alpha Test \u906E\u7F69\u6216 Alpha Blend \u534A\u900F\u660E\u3002",alphaOpacity:"\u6750\u8D28\u6574\u4F53\u4E0D\u900F\u660E\u5EA6\uFF0C1 \u4E3A\u5B8C\u5168\u4E0D\u900F\u660E\u3002",alphaCutoff:"\u906E\u7F69\u6A21\u5F0F\u7684 Alpha \u622A\u65AD\u9608\u503C\u3002",alphaTexture:"\u9009\u62E9 Alpha/Opacity \u8D34\u56FE\u3002",createSlotMaterial:"\u8F93\u5165 GLB \u5B50\u8282\u70B9\u6216 mesh \u7684 ownerNodePath \u6765\u6DFB\u52A0\u69FD\u7ED1\u5B9A\uFF0C\u521D\u59CB\u4F7F\u7528\u9ED8\u8BA4 PBR \u6750\u8D28\u3002",slotList:"\u6839\u8282\u70B9\u4E0A\u7684\u6750\u8D28\u69FD\u4E3A\u53EA\u8BFB\u603B\u89C8\u3002",slotOwnerPath:"\u6750\u8D28\u69FD\u5B9A\u4F4D\u5230\u7684\u5B50\u8282\u70B9\u6216 mesh \u8DEF\u5F84\u3002",reimportConflicts:"\u6A21\u578B\u91CD\u5BFC\u5165\u540E\u65E0\u6CD5\u81EA\u52A8\u5339\u914D\u6216\u6E90\u6750\u8D28\u53D8\u5316\u7684\u69FD\u3002\u73B0\u6709\u7ED1\u5B9A\u4F1A\u4FDD\u7559\uFF0C\u4E0D\u4F1A\u9759\u9ED8\u5220\u9664\u6216\u8986\u76D6\u3002"}},en:{title:"Artist Material",slotTitle:"Material Slots",language:"Language",materialAsset:"Material Asset",materialCard:"Current Material",inheritNone:"Inherit / None",defaultMaterial:"Default PBR Material",defaultMaterialMeta:"BabylonJS-style default PBR material",defaultStandardMaterial:"Default Standard Material",defaultStandardMaterialMeta:"BabylonJS-style default Standard material",defaultMaterialReadOnly:"The system default material is read-only. Choose an editable material asset to adjust parameters.",replace:"Replace",batchReplaceUnsupported:"Batch material replacement is not wired yet. Select one object to replace its material.",duplicateForObject:"Copy",materialPickerTitle:"Select Material Asset",texturePickerTitle:"Select Texture Asset",emptyTexture:"Select Texture",emptyTextureMeta:"Choose a texture asset",clearTexture:"Clear Texture",clearTextureMeta:"Do not use a texture",missingTexture:"Missing texture asset",missingTextureMeta:"The current reference cannot be resolved in the project asset library",loadingTexture:"Loading texture",failedTexture:"Texture failed to load",assetProfile:"Asset Profile",assetProfileEmpty:"Select a material asset to edit asset parameters",assetName:"Asset Name",assetKind:"Shader",assetKindPbr:"PBR standard material",assetKindStandard:"Standard material",assetLightingModel:"Lighting Model",assetLightingModelLit:"Lit",assetLightingModelUnlit:"Unlit",assetBaseColor:"Base Color",assetBaseTexture:"Base Texture",assetBrightness:"Texture Brightness",assetSaturation:"Texture Saturation",assetContrast:"Texture Contrast",assetHue:"Texture Hue",assetNormalTexture:"Normal Texture",assetNormalStrength:"Normal Strength",assetMetallic:"Metallic",assetRoughness:"Roughness",assetMetallicRoughnessTexture:"Metallic-Roughness Texture",assetOcclusionTexture:"AO Texture",assetOcclusionStrength:"AO Strength",resetValue:"Reset to shader default",modifiedValue:"Modified from shader default",inactiveReasons:{baseTexture:"Available after assigning a base texture.",litMaterial:"Available only when the lighting model is Lit.",normalTexture:"Available after assigning a normal texture.",occlusionTexture:"Available after assigning an AO texture.",alphaBlend:"Available only in Blend alpha mode.",alphaMask:"Available only in Mask alpha mode.",alphaTransparency:"Available only in Mask or Blend alpha mode."},assetEmissionColor:"Emission Color",assetEmissionIntensity:"Emission Intensity",assetEmissionTexture:"Emission Texture",assetEmissionMaskUrl:"Mask Texture",assetAlphaMode:"Alpha Mode",assetAlphaModeOpaque:"Opaque",assetAlphaModeMask:"Mask",assetAlphaModeBlend:"Blend",assetAlphaOpacity:"Opacity",assetAlphaCutoff:"Alpha Cutoff",assetAlphaTexture:"Alpha Texture",createSlotMaterial:"Add Material Slot",slotList:"Slot List",slotId:"Slot ID",slotOwnerPath:"Slot Owner Path",slotMaterialAsset:"Slot Material Asset",slotSourceMaterial:"Source Material",slotBindingPath:"Binding Path",reimportConflicts:"Reimport Material Conflicts",summaryAsset:e=>`Asset: ${e}`,summaryMissingAsset:"Missing asset",summaryCustomOverride:"Custom override",summaryInherit:"Inherit",summaryAddSlot:"Add slot",summarySlotCount:e=>`${e} slot${e===1?"":"s"}`,formatUsageCount:e=>e>0?`Used in ${e} place${e===1?"":"s"}`:"Unused",formatMaterialEditImpact:e=>e<=0?"This material is not used in the scene; edits only change the asset.":e===1?"Edits affect the current binding.":`Shared material: edits affect ${e} bindings.`,formatDuplicateMaterialImpact:e=>e<=0?"Copying creates an independently editable material asset.":e===1?"After copying, the current object or slot uses an independent material.":`After copying, the current object or slot uses an independent material; the original ${e} shared bindings are left unchanged.`,formatReimportConflictSummary:e=>`${e} material slot reimport difference${e===1?"":"s"} detected. Existing bindings are preserved until unmatched items are resolved.`,tooltips:{language:"Switch the artist material Inspector language.",materialAsset:"Choose a project-level shared material asset, or use the read-only Default PBR material.",baseTexture:"Choose a project texture as the base texture. Texture adjustment parameters are applied to this texture first.",assetProfile:"Shared asset parameters affect every node bound to this material asset.",assetName:"Material asset names are display-only for bindings; stable material IDs survive renames.",assetKind:"Select the Shader Definition referenced by this material; compatible values survive a change.",lightingModel:"Lit materials respond to environment and directional lights; unlit materials are useful for UI, VFX, icons, and markers.",baseColor:"Base color is the final color factor multiplied after base texture adjustment. Editing the shared material asset affects every bound node.",duplicateForObject:"Copy the current material as an independent material for this object or slot, then bind it automatically.",brightness:"Base texture brightness multiplier. It only affects materials with a base texture; 1 leaves the texture unchanged.",saturation:"Base texture saturation multiplier. It only affects materials with a base texture; 1 leaves the texture unchanged.",contrast:"Base texture contrast multiplier. It only affects materials with a base texture; 1 leaves the texture unchanged.",hue:"Base texture hue offset in degrees. It only affects materials with a base texture.",normalTexture:"Choose a normal map applied to the runtime bump/normal channel for PBR and Standard materials.",normalStrength:"Normal strength. 1 keeps the texture at original strength.",metallic:"Metallic value from 0 to 1.",roughness:"Roughness value from 0 to 1.",metallicRoughnessTexture:"Choose a metallic-roughness texture. PBR runtime reads blue as metallic and green as roughness by the common GLB convention.",occlusionTexture:"Choose an ambient occlusion texture. Applies to PBR materials.",occlusionStrength:"Ambient occlusion strength. 1 keeps the texture at original strength.",emissionColor:"Emission color multiplied by emission intensity.",emissionIntensity:"Emission intensity. 0 means no emission.",emissionTexture:"Choose an emissive texture. If empty, the mask texture remains the fallback.",emissionMaskUrl:"Choose a grayscale texture to modulate emission intensity.",alphaMode:"Alpha mode: opaque, alpha-test mask, or alpha-blend transparency.",alphaOpacity:"Overall material opacity. 1 is fully opaque.",alphaCutoff:"Alpha-test cutoff threshold for mask mode.",alphaTexture:"Choose an alpha/opacity texture.",createSlotMaterial:"Enter a GLB child node or mesh ownerNodePath to add a slot binding with the Default PBR material.",slotList:"Material slots on the root object are a readonly overview.",slotOwnerPath:"Child node or mesh path targeted by this material slot.",reimportConflicts:"Slots whose source material changed or could not be matched after model reimport. Existing bindings are preserved instead of being silently deleted or overwritten."}}};function nl(e){return tk[e]??tk.zh}function af(e){return e.metadata?.artistMaterialInspectorLanguage==="en"?"en":"zh"}var C4={},rk=new WeakMap;function nk(e,t,r,n,o){return rn({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}function ok(e,t){return Qv(e,sk(t))}function w4(e){return{materialPickerTitle:e.materialPickerTitle,replace:e.replace,duplicateForObject:e.duplicateForObject,duplicateForObjectTooltip:e.tooltips.duplicateForObject,summaryMissingAsset:e.summaryMissingAsset,summaryInherit:e.summaryInherit,inheritNone:e.inheritNone}}function v4(e){return{formatUsageCount:e.formatUsageCount,formatEditImpact:e.formatMaterialEditImpact,formatDuplicateImpact:e.formatDuplicateMaterialImpact}}function sk(e){return{defaultMaterial:e.defaultMaterial,defaultStandardMaterial:e.defaultStandardMaterial,defaultMaterialMeta:e.defaultMaterialMeta,defaultStandardMaterialMeta:e.defaultStandardMaterialMeta,formatMaterialMeta:t=>`Material - ${t}`}}function ck(e,t,r,n,o={}){if(!t)return[];let i=o.materialShaderDefinitions?.get(t.shaderId)??On(t.shaderId),a=L4(e,t,r,n,o,i??void 0);if(lk(t,o))return[...a,rn({path:`scene.materialAssets.${t.id}.properties`,label:r.assetProfile,value:r.defaultMaterialReadOnly,order:n+2,source:"Document",effect:"default",disabledReason:r.defaultMaterialReadOnly,tags:["ArtistMaterial","MaterialAsset"],tooltip:r.tooltips.assetProfile})];if(!i)return a;let s=[...i.inspector.fields].sort((c,d)=>c.order-d.order||c.path.localeCompare(d.path)).map(c=>k4({document:e,materialAsset:t,definition:i,fieldDefinition:c,text:r,context:o,orderOffset:n}));return[...a,...s]}function k4(e){let{fieldDefinition:t}=e,r=ik(e.text,t.labelKey,t.label??t.path),n=N4(e.text,t.tooltipKey,t.tooltip),o=dk(e.materialAsset.properties,t),i;if(t.control==="texture")i=$4({path:`${ii}${e.materialAsset.id}.${t.path}`,label:r,value:typeof o=="string"?o:"",order:e.orderOffset+t.order,text:e.text,context:e.context,tooltip:n});else if(t.control==="number")i=U4(e.document,e.materialAsset,t.path,r,typeof o=="number"?o:Number(t.defaultValue),e.orderOffset+t.order,t,n,e.context.materialShaderDefinitions);else if(t.control==="enum")i=V4(e.document,e.materialAsset,t.path,r,String(o),e.orderOffset+t.order,(t.options??[]).map(c=>({value:c.value,label:ik(e.text,c.labelKey,c.label??c.value)})),n,e.context.materialShaderDefinitions);else{let c=t.control;i=cf(e.document,e.materialAsset,t.path,r,o,e.orderOffset+t.order,c,c,"immediate",n,e.context.materialShaderDefinitions)}let a=t.control==="color"?ei(e.definition.shaderId,t.path,e.context.materialShaderDefinitions):null;i={...i,displayPrecision:t.displayPrecision,precision:t.precision,controlOptions:{...i.controlOptions,...t.control==="color"?{colorChannels:a?.kind==="color"&&a.channels===4?4:3}:{},materialShaderSectionId:t.sectionId,materialShaderUpdateClass:t.updateClass,materialShaderBinding:t.binding}};let s=t.conditions?.find(c=>!_4(e.definition,e.materialAsset.properties,c));return s&&(i=W4(i,!1,j4(e.text,s))),H4(i,e.text,t.defaultValue)}function dk(e,t){if(t.control==="texture"){let n=aE(e,t.schemaPath??t.path);return mk(n)}let r=aE(e,t.path);return r===void 0?structuredClone(t.defaultValue):r}function aE(e,t){let r=t.replace(/^properties\./,"").split(".").filter(Boolean),n=e;for(let o of r){if(!n||typeof n!="object"||Array.isArray(n))return;n=n[o]}return n}function _4(e,t,r){let n=e.inspector.fields.find(a=>a.path===r.path),o=n?dk(t,n):aE(t,r.path);if(r.operator==="truthy")return!!o;let i=JSON.stringify(o??null)===JSON.stringify(r.value??null);return r.operator==="equals"?i:!i}function ik(e,t,r){let n=t?e[t]:void 0;return typeof n=="string"?n:r}function N4(e,t,r){let n=t?e.tooltips[t]:void 0;return typeof n=="string"?n:r}function j4(e,t){let r=t.inactiveReasonKey?e.inactiveReasons[t.inactiveReasonKey]:void 0;return typeof r=="string"?r:t.inactiveReason??"This field is inactive for the current material state."}function G4(e){return e.defaultMaterialAssetIds??[ya,Ws]}function lk(e,t){return rf(e,G4(t))||e.system?.preset==="default-pbr"||e.system?.preset==="default-standard"}function L4(e,t,r,n,o,i){if(!lk(t,o)){let a=o.materialShaderDefinitions??Qr;return[cf(e,t,"name",r.assetName,ok(t,r),n,"string","string","change",r.tooltips.assetName,a),{path:`${ii}${t.id}.shaderId`,label:r.assetKind,valueType:"string",control:"enum",value:t.shaderId,readOnly:!1,persistence:"document",commitMode:"immediate",order:n+1,tooltip:r.tooltips.assetKind,tags:["ArtistMaterial","MaterialAsset","ShaderDefinition"],options:a.list().map(s=>({value:s.shaderId,label:s.displayName})),controlOptions:{materialShaderSelector:!0,shaderId:t.shaderId,shaderVersion:i?.version,shaderRuntimeKind:i?.runtimeKind,...i?.sourceFile?{shaderSourceFile:i.sourceFile}:{}},validate:s=>typeof s=="string"&&a.get(s)?{ok:!0,value:s}:{ok:!1,message:"Unknown Shader Definition."},coerce:s=>typeof s=="string"?s.trim():""}]}return[nk(`${ii}${t.id}.name`,r.assetName,ok(t,r),n,r.tooltips.assetName),nk(`${ii}${t.id}.shaderId`,r.assetKind,i?.displayName??F4(Vv(t),r),n+1,r.tooltips.assetKind)]}function F4(e,t){return e==="standard"?t.assetKindStandard:t.assetKindPbr}function $4(e){let t=B4(e.context,e.value);return{path:e.path,label:e.label,valueType:"string",control:"custom",customControl:"asset-picker-card",value:e.value,readOnly:!1,persistence:"document",commitMode:"change",order:e.order,tooltip:e.tooltip,tags:["ArtistMaterial","TextureAsset"],controlOptions:uk(e.context,e.text,e.value,t),validate:r=>{let n=ak(e.context,e.path,r);return n.ok?{ok:!0,value:n.value}:{ok:!1,message:"Invalid texture selection."}},coerce:r=>{let n=ak(e.context,e.path,r);return n.ok?n.value:null}}}function uk(e,t,r,n){return{...Zv({textureAssets:e.textureAssets,currentTexture:n,currentValue:r,pickerText:z4(t),candidateValue:"assetId"})}}function B4(e,t){return of(e.textureAssets,t)}function mk(e){let t=typeof e?.textureAssetId=="string"?e.textureAssetId.trim():"";return t||(typeof e?.url=="string"?e.url.trim():"")}function ak(e,t,r){if(r==null||r==="")return{ok:!0,value:null};if(typeof r!="string")return{ok:!1};let n=r.trim();if(!n)return{ok:!0,value:null};if(!t.endsWith(".textureAssetId"))return{ok:!0,value:n};let o=of(e.textureAssets,n);return o?{ok:!0,value:o.id}:/^[A-Za-z0-9_-]+$/.test(n)?{ok:!0,value:n}:{ok:!0,value:null}}function z4(e){return{texturePickerTitle:e.texturePickerTitle,replace:e.replace,emptyTexture:e.emptyTexture,emptyTextureMeta:e.emptyTextureMeta,clearTexture:e.clearTexture,clearTextureMeta:e.clearTextureMeta,missingTexture:e.missingTexture,missingTextureMeta:e.missingTextureMeta,loadingTexture:e.loadingTexture,failedTexture:e.failedTexture}}function U4(e,t,r,n,o,i,a={},s,c){return{...cf(e,t,r,n,o,i,"number","number","live",s,c),...a.min!=null?{min:a.min}:{},...a.max!=null?{max:a.max}:{},...a.softMin!=null?{softMin:a.softMin}:{},...a.softMax!=null?{softMax:a.softMax}:{},step:a.step??.05}}function V4(e,t,r,n,o,i,a,s,c){return{...cf(e,t,r,n,o,i,"enum","enum","immediate",s,c),options:a,controlOptions:{variant:"segmented"}}}function cf(e,t,r,n,o,i,a,s,c,d,u){return{...ek({document:e,materialAsset:t,fieldPath:r,label:n,value:o,order:i,valueType:a,control:s,commitMode:c,tooltip:d,pathPrefix:ii}),validate:l=>{let m=en(r,l);return si(r,m,t.shaderId,u)?{ok:!0,value:m}:{ok:!1,message:`Invalid material asset field: ${r}.`}},coerce:l=>en(r,l)}}function H4(e,t,r){return e.readOnly?e:{...e,controlOptions:{...e.controlOptions,resetValue:structuredClone(r),modified:!K4(e.value,r),resetLabel:t.resetValue,modifiedLabel:t.modifiedValue}}}function K4(e,t){return JSON.stringify(e??null)===JSON.stringify(t??null)}function W4(e,t,r){return t?e:{...e,controlOptions:{...e.controlOptions,conditionalInactive:!0,conditionalInactiveReason:r}}}function pk(e,t,r,n){let o=r.currentAsset??fe(e,r.value);return{path:r.path,label:r.label,valueType:"string",control:"custom",customControl:"asset-picker-card",value:r.value,readOnly:!1,persistence:"document",commitMode:"change",order:r.order,controlOptions:J4(sf(e,o,r.text,r.value,n,r.previewContext),o,r.currentAction),tooltip:r.text.tooltips.materialAsset,tags:["ArtistMaterial","MaterialAsset"],document:e,validate:i=>{let a=fb(i);return a&&$s(e,a)?{ok:!0,value:i}:i==null||i===""?{ok:!0,value:i}:typeof i=="string"&&$s(e,i)?{ok:!0,value:i}:{ok:!1,message:`Material asset not found: ${String(i)}`}},coerce:i=>typeof i=="string"?i.trim():i,effect:q4(t,r.value),validation:Y4(r.value,o,r.text),disabledReason:t==="group"?"Groups do not own materials.":void 0}}function q4(e,t){return e==="group"?"unsupported":t.trim()?"override":void 0}function Y4(e,t,r){let n=e.trim();if(!(!n||t))return{status:"error",code:"material.asset.missing",message:`${r.summaryMissingAsset}: ${n}`}}function J4(e,t,r){return!t||!r?e:{...e,currentActionId:r.actionId,currentActionParams:Object.fromEntries(Object.entries(r.params).filter(n=>typeof n[1]=="string"&&n[1].length>0))}}function X4(e,t,r){return pk(e,t,r,yo.getCachedUsageIndex(e))}function sf(e,t,r,n,o,i={}){return{...yo.createPickerControlOptions({materialAssets:e.scene.materialAssets??[],currentAsset:t,currentValue:n,pickerText:w4(r),displayText:sk(r),document:e,ownershipText:v4(r),previewContext:i},o),actionDisabledReason:r.batchReplaceUnsupported}}function Q4(e,t,r,n,o={}){if(o.textureAssets?.length||o.resolveTextureAssetUrl)return sf(e,t,r,n,yo.getCachedUsageIndex(e),o);let i=rk.get(e);i||(i=new WeakMap,rk.set(e,i));let a=i.get(r);a||(a=new WeakMap,i.set(r,a));let s=t??C4,c=a.get(s);c||(c=new Map,a.set(s,c));let d=c.get(n);if(d)return d;let u=sf(e,t,r,n,yo.getCachedUsageIndex(e),o);return c.set(n,u),u}var Z4={createSelectorInspectorPropertyWithUsage:pk,createSelectorInspectorPropertyWithCachedUsage:X4,createPickerControlOptionsWithUsage:sf,createPickerControlOptionsWithCachedUsage:Q4},ol=Z4;function fk(e,t,r){let n=mw(e,t);if(n.state==="asset"&&n.materialAsset){let o=wv(n.materialAsset),i=o==="default-pbr"?r.defaultMaterial:o==="default-standard"?r.defaultStandardMaterial:n.materialAsset.name??n.materialAsset.id;return r.summaryAsset(i)}return n.state==="missing-asset"?r.summaryMissingAsset:n.state==="override"?r.summaryCustomOverride:r.summaryInherit}function gk(e,t,r){let n=kn(e,t).length;return n>0?r.summarySlotCount(n):r.summaryAddSlot}function e5(e,t,r,n,o,i={}){let a=nl(af(t)),s=[];return kn(e,t).forEach((d,u)=>{let l=_n(d)??d.slotId,m=hb(t,d),p=o?.materialSlotBindings?.[d.slotId]??m,f=fe(e,p?.materialAssetId??fi),g=(u+1)*100,S=Sb(d);s.push(ol.createSelectorInspectorPropertyWithUsage(e,r,{path:S,label:d.label||sE(l,u,a),value:m?.materialAssetId??"",order:g,text:a,currentAsset:f,currentAction:{actionId:"material.open-asset",params:{materialAssetId:f?.id,browserAssetId:f?`material:${f.id}`:void 0,sourceObjectId:t.id,sourceBindingPath:S}},previewContext:i},n))}),s}function t5(e,t,r,n){let o=kn(e,t);if(o.length===0)return[];let i=[],a=Kv(e,t),s=Us(e,t.id)??t.overrides;a.issues.length>0&&i.push(i5("asset.materialSlots.reimportConflicts",r.reimportConflicts,r5(a.issues,r),-1,r.tooltips.reimportConflicts));let c=o.map((d,u)=>n5(e,t,d,u,r,n,s));return i.push({path:"asset.materialSlots",label:r.slotList,valueType:"object",control:"custom",customControl:"material-slot-list",value:{count:o.length,slots:c},readOnly:!0,persistence:"readonly",commitMode:"immediate",order:0,controlOptions:{labels:{material:r.slotMaterialAsset,slotId:r.slotId,ownerNodePath:r.slotOwnerPath,sourceMaterial:r.slotSourceMaterial,primitive:"Primitive",triangles:"Triangles",bounds:"Bounds",bindingPath:r.slotBindingPath},slots:c},tags:["ArtistMaterial","MaterialSlot","Readonly"],tooltip:r.tooltips.slotList,document:e}),i}function r5(e,t){let r=e.map(n=>{let o=n.label||n.ownerNodePath||n.slotId||n.previousSlotId||n.bindingPath||"slot";if(n.reason==="source-material-changed"){let i=n.previousSourceMaterialIndex==null?"?":`#${n.previousSourceMaterialIndex}`,a=n.sourceMaterialIndex==null?"?":`#${n.sourceMaterialIndex}`;return`${o}: source material ${i} -> ${a}; ${n.materialAssetId??t.inheritNone}`}return n.reason==="slot-removed"?`${o}: removed slot; ${n.materialAssetId??t.inheritNone}`:`${o}: ${n.status}`});return[t.formatReimportConflictSummary(e.length),...r].join(`
22
+ `)}function n5(e,t,r,n,o,i,a){let s=hb(t,r),c=a?.materialSlotBindings?.[r.slotId]??s,d=fe(e,c?.materialAssetId??fi),u=ol.createPickerControlOptionsWithUsage(e,d,o,s?.materialAssetId??"",i),l=Cp(r),m=l[0],p=m==null?null:vv(r,m),f=r.sourceSurfaces[0],g=f.ownerNodePath;return{key:Sw(r),label:r.label||sE(g,n,o),slotId:r.slotId,sourceSurfaces:structuredClone(r.sourceSurfaces),ownerNodePath:g,materialAssetId:s?.materialAssetId??"",materialLabel:u.currentLabel??o.inheritNone,materialMeta:u.currentMeta??o.summaryInherit,...u.currentPreview?{materialPreview:u.currentPreview}:{},...m==null?{}:{sourceMaterialIndex:m},...l.length?{sourceMaterialIndices:l}:{},...p?{sourceMaterialName:p}:{},...r.materialNames?.length?{materialNames:r.materialNames}:{},...r.sourceSurfaces.length===1&&typeof f.triangleCount=="number"?{triangleCount:f.triangleCount}:{},...r.sourceSurfaces.length===1&&f.boundingBox?{boundingBox:f.boundingBox}:{},bindingPath:Sb(r)}}var o5={createChildMaterialBindingInspectorPropertiesWithUsage:e5,createReadonlyMaterialSlotListInspectorPropertiesWithUsage:t5},Sk=o5;function sE(e,t,r){let n=e.split("/").filter(Boolean).pop()??e;return`${r.slotMaterialAsset} ${t+1}: ${n}`}function i5(e,t,r,n,o){return rn({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}var hk="materialAsset::",a5=5;function s5(e){return e.startsWith(hk)&&e.slice(hk.length).trim()||null}function c5(e,t,r,n,o,i){let a=[],s=af(t),c=nl(s),d=t.overrides?.materialBinding,u=Us(e,t.id)??t.overrides,l=u?.materialBinding??d,m=l?.materialAssetId??fi,p=fe(e,m),f=l?.materialAssetId?l:{...l,materialAssetId:fi};if(!gw(e,t)){let P="overrides.materialBinding.materialAssetId";a.push({id:"artistMaterial",title:c.title,order:46,placement:"body",summary:fk(f,p,c),persistence:"document",collapsedByDefault:!1,properties:[ol.createSelectorInspectorPropertyWithUsage(e,r,{path:P,label:c.materialCard,value:d?.materialAssetId??"",order:0,text:c,currentAsset:p,currentAction:{actionId:"material.open-asset",params:{materialAssetId:p?.id,browserAssetId:p?`material:${p.id}`:void 0,sourceObjectId:t.id,sourceBindingPath:P}},previewContext:n},i)]})}let S=r==="primitive"?[]:Sk.createChildMaterialBindingInspectorPropertiesWithUsage(e,t,r,i,u,n);return S.length>0&&a.push({id:"artistMaterialSlots",title:c.slotTitle,order:48,placement:"body",summary:gk(e,t,c),persistence:"document",collapsedByDefault:!1,properties:S}),a}function d5(e,t,r,n){let o=s5(t),i=o?fe(e,o):null;if(!i)return null;let a=nl("zh"),s=n.forMaterial(i.id),c=ck(e,i,a,0,r),d=`scene.materialAssets.${i.id}.properties`,u=`${d}.`,l=T=>T.path===d||T.path.startsWith(u),m=c.filter(T=>!l(T)),p=c.filter(l),f=[{path:`scene.materialAssets.${i.id}.preview`,label:i.name||i.id,valueType:"object",control:"custom",customControl:"asset-picker-card",value:i.id,readOnly:!0,persistence:"readonly",commitMode:"immediate",order:-10,controlOptions:{currentMaterialAssetId:i.id,currentMaterialShaderId:i.shaderId,currentLabel:i.name||i.id,currentMeta:i.shaderId,currentPreview:Fs(i.properties,r)},document:e},...m,p5(`scene.materialAssets.${i.id}.usageCount`,"\u5F15\u7528",a.formatUsageCount(s.length),10)],g=[jp({path:`scene.materialAssets.${i.id}.actions.locate`,label:"\u5728 Assets \u4E2D\u5B9A\u4F4D",actionId:"material.locate-asset",icon:"asset",params:{materialAssetId:i.id,browserAssetId:`material:${i.id}`},order:20,tooltip:"\u5728 Assets \u9762\u677F\u4E2D\u5B9A\u4F4D\u5F53\u524D\u6750\u8D28\u3002",disabled:!1}),jp({path:`scene.materialAssets.${i.id}.actions.back`,label:"\u8FD4\u56DE\u6765\u6E90",actionId:"material.back-to-owner",icon:"chevron-left",params:{materialAssetId:i.id},order:21,tooltip:"\u8FD4\u56DE\u6253\u5F00\u5F53\u524D\u6750\u8D28\u524D\u7684\u5BF9\u8C61\u6216 Prefab Inspector\u3002",disabled:!1})],S=[{id:"materialAssetSummary",title:"Material",order:10,regionId:cC,persistence:"readonly",collapsedByDefault:!1,properties:f}];S.push({id:"materialAssetNavigation",title:"\u5BFC\u822A",order:15,placement:"body",persistence:"readonly",collapsedByDefault:!1,properties:g}),S.push({id:"materialReferences",title:`\u4F7F\u7528\u4F4D\u7F6E (${s.length})`,order:20,placement:"body",persistence:"readonly",collapsedByDefault:s.length===0,properties:[{path:`scene.materialAssets.${i.id}.references.browser`,label:"\u4F7F\u7528\u4F4D\u7F6E",valueType:"object",control:"custom",customControl:"material-reference-list",controlOptions:{previewLimit:a5,items:s.map((T,R)=>({key:`${T.scope}:${T.gameObjectId}:${T.bindingPath}:${R}`,label:T.label,scope:T.scope,actionId:"material.open-owner",params:Object.fromEntries(Object.entries({materialAssetId:i.id,ownerScope:T.scope,sourceObjectId:T.gameObjectId,sourceBindingPath:T.bindingPath,slotId:T.slotId,ownerNodePath:T.ownerNodePath,prefabAssetId:T.prefabAssetId,prefabNodeId:T.prefabNodeId}).filter(A=>typeof A[1]=="string"&&A[1].length>0))}))},value:s.length,readOnly:!1,persistence:"readonly",commitMode:"immediate",order:0,tooltip:s.length>0?"\u67E5\u770B\u4F7F\u7528\u5F53\u524D\u6750\u8D28\u7684 Scene \u5BF9\u8C61\u548C Prefab \u8282\u70B9\u3002":"\u5F53\u524D\u672A\u88AB\u4EFB\u4F55\u5BF9\u8C61\u6216 Prefab \u4F7F\u7528\u3002",document:e}]});let P=r.materialShaderDefinitions?.get(i.shaderId)??On(i.shaderId);for(let[T,R]of[...P?.inspector.sections??[]].sort((A,E)=>A.order-E.order||A.id.localeCompare(E.id)).entries())yk(S,{id:`material${R.id.charAt(0).toUpperCase()}${R.id.slice(1)}`,title:R.title,order:R.order,properties:[...T===0?p.filter(A=>A.path===d):[],...p.filter(A=>A.controlOptions?.materialShaderSectionId===R.id)]});let x=new Set(S.flatMap(T=>T.properties.map(R=>R.path)));return yk(S,{id:"materialAdvanced",title:"Advanced",order:80,properties:p.filter(T=>!x.has(T.path))}),{targetIds:[t],activeId:t,label:i.name||i.id,document:e,selection:{targetIds:[t],activeId:t,scopeType:"scene",targetKind:"materialAsset",capabilities:["material"],document:e},sections:S}}function l5(e,t,r,n={},o){return c5(e,t,r,n,o,yo.getCachedUsageIndex(e))}function u5(e,t,r={}){return d5(e,t,r,yo.getCachedUsageIndex(e))}var m5={createArtistMaterialInspectorSectionsWithCachedUsage:l5,createEditorSceneMaterialAssetInspectorObjectWithCachedUsage:u5},bk=m5;function yk(e,t){t.properties.length!==0&&e.push({...t,placement:"body",persistence:t.properties.some(r=>r.persistence==="document")?"document":"readonly",collapsedByDefault:!1})}function p5(e,t,r,n,o){return rn({path:e,label:t,value:r,order:n,persistence:"readonly",source:"Document",tooltip:o})}function Ek(){return{isCoreMaterialOverridePath:xb,isMaterialAssetIdOverridePath:ww,addMaterialAsset:Zb}}function Ik(e,t,r=Ek()){if(e==="displayName"&&typeof t=="string")return t.trim();if(e==="prefab.defaults.active")return t??null;if(e==="prefab.defaults.shadowMapExperiment.behaviorProfile")return typeof t=="string"?t.trim()||null:t;if(Pk(e)){if(t==null||(e==="prefab.defaults.shadow.cast"||e==="prefab.defaults.shadow.receive")&&(t==="inherit"||t==="auto"))return null;if(e==="prefab.defaults.shadow.light.lightId"&&typeof t=="string"){let n=t.trim();return n||null}return t}if(r.isMaterialAssetIdOverridePath(e)&&typeof t=="string"){let n=t.trim();return n||null}return t}function Tk(e,t,r=Ek()){if(e==="displayName")return typeof t=="string"&&t.length>0;if(e==="prefab.defaults.active")return t==null||typeof t=="boolean";if(e==="prefab.defaults.shadowMapExperiment.behaviorProfile")return t==null||typeof t=="string"&&t.trim().length>0;if(Pk(e)){let n=e.slice(16);return Vs({path:n,nodeKind:"instance",value:t}).ok}return r.isCoreMaterialOverridePath(e)?r.isMaterialAssetIdOverridePath(e)&&(t==null||typeof t=="string"&&t.trim().length>0):!1}function Pk(e){return e.startsWith("prefab.defaults.shadow.")}function Ak(e,t,r,n){let o=e.assets.find(s=>s.id===t&&xr(s));if(!o)return e;let i=n&&!e.assets.some(s=>s.id===n.id)?[...e.assets,structuredClone(n)]:e.assets,a=g5({...structuredClone(r),id:t});return JSON.stringify(a)===JSON.stringify(o)&&i===e.assets?e:{...e,assets:i.map(s=>s.id===t?a:s)}}function f5(e){if(!xr(e))return e;let t=bo(e);return t.ok?t.prefabAsset:e}function g5(e){if(!xr(e))return e;let t=f5(e),r=ht(t);if(!r||!Array.isArray(t.prefab?.nodes))return t;let n=t.prefab.nodes.findIndex(i=>i.id===r);if(n<0)return t;let o=structuredClone(t.prefab.nodes[n]);return o.name=t.displayName??o.name,t.prefab.defaults?o.defaults=structuredClone(t.prefab.defaults):delete o.defaults,t.prefab.nodes=[...t.prefab.nodes],t.prefab.nodes[n]=o,t}function xk(e,t){let r=[];if(e.schemaVersion!==1&&r.push({severity:"error",message:"editor-scene schemaVersion must be 1",path:"schemaVersion",source:t.ref}),Array.isArray(e.assets)||r.push({severity:"error",message:"editor-scene assets must be an array",path:"assets",source:t.ref}),Array.isArray(e.scene?.gameObjects)||r.push({severity:"error",message:"editor-scene scene.gameObjects must be an array",path:"scene.gameObjects",source:t.ref}),e.scene?.materialAssets!=null&&!Array.isArray(e.scene.materialAssets)&&r.push({severity:"error",message:"editor-scene scene.materialAssets must be an array when present",path:"scene.materialAssets",source:t.ref}),Array.isArray(e.assets)&&Array.isArray(e.scene?.gameObjects)){let o=fw(e);for(let i of o.issues)for(let a of i.usages)r.push({severity:"error",message:`editor-scene material binding references missing scene.materialAssets id: ${i.materialAssetId}`,path:S5(e,a),source:t.ref,code:"editor_scene_material_asset_missing"})}return r}function S5(e,t){let r=e.scene.gameObjects.findIndex(o=>o.id===t.gameObjectId);return`${r>=0?`scene.gameObjects[${r}]`:`scene.gameObjects.${t.gameObjectId}`}.${t.bindingPath}`}var cE=Object.freeze({complete:!1,included:["standard scene hierarchy and renderer components","standard scene Prefab instances and Marker targets","standard Prefab definitions and composition nodes","standard Material Asset origins and textureAssetId fields","standard Marker Graph targets and relation endpoints"],limitations:[{code:"reference.coverage.projectExtensionsExcluded",message:"Project-defined extension fields are not searched because the Editor cannot infer their reference semantics safely."}]});function Dk(){let e=ri({cursorPrefix:"al2",diagnosticPrefix:"asset.library"});return async(t,r,n)=>e(r,{scopeKey:"asset-library",revision:n,items:t,query:y5(r),queryProvided:df(r),matches:b5})}function Rk(){let e=ri({cursorPrefix:"so2",diagnosticPrefix:"scene.objects"});return async(t,r,n)=>e(r,{scopeKey:"scene-objects",revision:n,items:t,query:E5(r),queryProvided:df(r),matches:I5})}function Ok(){let e=ri({cursorPrefix:"pr2",diagnosticPrefix:"prefab.resolve"});return async(t,r,n)=>e(r,{scopeKey:"prefab-assets",revision:n,items:t,query:T5(r),queryProvided:df(r),matches:P5})}function Ck(){let e=ri({cursorPrefix:"ps2",diagnosticPrefix:"prefab.scene"});return async(t,r,n,o)=>{let i=ee(r.prefabAssetId)||ee(r.assetId)||"",a=i||o.stage?.assetId||"";if(!a&&!r.cursor)return{ok:!1,code:"prefab.assetIdRequired",message:"prefab.scene.get requires prefabAssetId unless that Prefab Stage is already open."};let s=t.assets.filter(p=>!!p.prefab).flatMap(p=>Tt(p).map(f=>({prefabAssetId:p.id,node:h5(f)}))),c=await e(r,{scopeKey:"prefab-scenes",revision:n,items:s,query:{prefabAssetId:a},queryProvided:!!i,matches:(p,f)=>p.prefabAssetId===f.prefabAssetId});if(!c.ok)return c;let d=String(c.query.prefabAssetId||""),u=d?ci(t,d):null;if(!u)return{ok:!1,code:"prefab.notFound",message:`Prefab asset was not found: ${d||a}`};let l=lE(u);return{ok:!0,output:{stage:o.stage?.assetId===u.id?o.stage:O5(u,o.dirty),prefab:l,revision:n,rootNodeId:ht(u)??"prefab-root",selectedNodeId:o.stage?.assetId===u.id?o.selectedNodeId??null:null,nodes:c.items.map(p=>p.node),diagnostics:[],totalCount:c.totalCount,returnedCount:c.returnedCount,...c.nextCursor?{nextCursor:c.nextCursor}:{}}}}}function wk(){let e=ri({cursorPrefix:"ar2",diagnosticPrefix:"asset.references"});return async(t,r,n)=>{let o=ee(r.assetId);if(!o)return gi("asset.references.invalidQuery","assetId must be a non-empty string.");let i=M5(t,o),a=await e(r,{scopeKey:`asset-references:${o}`,revision:n,items:i,query:{assetId:o,scope:ee(r.scope)},queryProvided:r.scope!==void 0,matches:(s,c)=>!c.scope||s.scope===c.scope});return a.ok?{ok:!0,output:{assetId:o,references:a.items,coverage:Gk(),totalCount:a.totalCount,returnedCount:a.returnedCount,...a.nextCursor?{nextCursor:a.nextCursor}:{}}}:a}}function vk(){let e=ri({cursorPrefix:"or2",diagnosticPrefix:"object.references"});return async(t,r,n)=>{let o=ee(r.objectId);if(!o)return gi("object.references.invalidQuery","objectId must be a non-empty string.");if(!t.scene.gameObjects.some(s=>s.id===o))return gi("object.notFound",`Scene object was not found: ${o}`);let i=D5(t,o),a=await e(r,{scopeKey:`object-references:${o}`,revision:n,items:i,query:{objectId:o,kind:ee(r.kind).toLocaleLowerCase()},queryProvided:r.kind!==void 0,matches:(s,c)=>!c.kind||s.kind.toLocaleLowerCase()===c.kind});return a.ok?{ok:!0,output:{objectId:o,references:a.items,coverage:Gk(),totalCount:a.totalCount,returnedCount:a.returnedCount,...a.nextCursor?{nextCursor:a.nextCursor}:{}}}:a}}function kk(){let e=ri({cursorPrefix:"av2",diagnosticPrefix:"authoring.validation"});return async(t,r,n)=>{let o=t.meta?.authoringSource??{sourceId:"editor-scene",sourceType:"scene",revision:n},i=xk(t,{ref:o}).map(c=>({severity:c.severity,...c.code?{code:c.code}:{},message:c.message,...c.path?{path:c.path}:{},...c.source?.sourceId?{sourceId:c.source.sourceId}:{},...c.source?.sourceType?{sourceType:c.source.sourceType}:{}})),a=A5(r),s=await e(r,{scopeKey:"authoring-validation",revision:n,items:i,query:a,queryProvided:df(r),matches:x5});return s.ok?{ok:!0,output:{documentRevision:n,diagnostics:s.items,errorCount:i.filter(c=>c.severity==="error").length,warningCount:i.filter(c=>c.severity==="warning").length,infoCount:i.filter(c=>c.severity==="info").length,totalCount:s.totalCount,returnedCount:s.returnedCount,...s.nextCursor?{nextCursor:s.nextCursor}:{}}}:s}}function _k(e,t,r,n){let o=t.objectIds.map(ee),i=t.paths.map(ee);if(o.some(l=>!l)||new Set(o).size!==o.length)return gi("object.properties.invalidTargets","objectIds must contain unique non-empty ids.");if(i.some(l=>!l)||new Set(i).size!==i.length)return gi("object.properties.invalidPaths","paths must contain unique non-empty field paths.");if(o.length>200||i.length>128||o.length*i.length>5e3)return gi("object.properties.queryTooLarge","object.properties.get supports at most 200 objects, 128 paths, and 5000 object/path values per call.");let a=new Set(e.scene.gameObjects.map(l=>l.id)),s=o.find(l=>!a.has(l));if(s)return gi("object.notFound",`Scene object was not found: ${s}`);let c=new Map(i.map(l=>[l,0])),d=o.map(l=>{let m=n(e,l),p=new Map((m?.sections??[]).flatMap(f=>f.properties).map(f=>[f.path,f]));return{objectId:l,properties:i.map(f=>{let g=p.get(f);return g?(c.set(f,(c.get(f)??0)+1),{path:f,value:g.value===void 0?null:structuredClone(g.value),present:!0,...t.includeSchema?{schema:R5(g)}:{}}):{path:f,value:null,present:!1}})}}),u=i.find(l=>c.get(l)===0);return u?gi("object.properties.unsupportedPath",`Property path is not exposed by the Inspector schema for any requested object: ${u}`):{ok:!0,output:{documentRevision:r,objects:d,objectCount:d.length,propertyCount:d.reduce((l,m)=>l+m.properties.length,0)}}}function dE(e){let t=e,r=ar(t.metadata),n=ee(t.assetId)||ee(t.id),o=ee(t.type)||"glb",i=ee(t.kind)||(o==="prefab"?"prefab":o==="texture"?"texture":"model");return{assetId:n,...ee(t.guid)?{guid:ee(t.guid)}:{},displayName:ee(t.displayName)||ee(t.label)||n,kind:i,type:o,...ee(t.category)?{category:ee(t.category)}:{},placeable:ha(t),...Mk(r.byteSize)!==null?{byteSize:Mk(r.byteSize)}:{},...ee(r.contentHash)?{contentHash:ee(r.contentHash)}:{},...ee(r.relativePath)?{relativePath:ee(r.relativePath)}:{},...ee(t.origin)?{origin:ee(t.origin)}:{},...ee(t.dedupeKey)?{dedupeKey:ee(t.dedupeKey)}:{},...ee(t.materialMode)?{materialMode:ee(t.materialMode)}:{},...Object.keys(r).length?{metadata:structuredClone(r)}:{},...Object.keys(ar(t.external)).length?{external:structuredClone(ar(t.external))}:{},...Object.keys(ar(t.defaults)).length?{defaults:structuredClone(ar(t.defaults))}:{},...Object.keys(ar(t.prefab)).length?{prefab:structuredClone(ar(t.prefab))}:{}}}function Nk(e){let t=dE(e);return{assetId:t.assetId,...t.guid?{guid:t.guid}:{},displayName:t.displayName,kind:t.kind,type:t.type,...t.category?{category:t.category}:{},placeable:t.placeable,...t.byteSize!==void 0?{byteSize:t.byteSize}:{},...t.contentHash?{contentHash:t.contentHash}:{},...t.relativePath?{relativePath:t.relativePath}:{}}}function jk(e,t){let r=2166136261;for(let n of t){let o=[n.assetId,n.guid??"",n.kind,n.type,n.displayName,n.placeable,n.category??"",n.relativePath??"",n.contentHash??"",n.byteSize??"",JSON.stringify(n.metadataSummary??null),JSON.stringify(n.analysisSummary??null)].join("\0");for(let i=0;i<o.length;i+=1)r=Math.imul(r^o.charCodeAt(i),16777619)>>>0}return`${e}:${t.length}:${r.toString(16)}`}function lE(e){return{assetId:e.id,displayName:e.displayName??e.id,...e.prefab?.sourceAssetId?{sourceAssetId:e.prefab.sourceAssetId}:{},...e.prefab?.sourceAssetGuid?{sourceAssetGuid:e.prefab.sourceAssetGuid}:{},placeable:!0,readonly:!1,status:"available"}}function h5(e){return{nodeId:e.id,...e.guid?{guid:e.guid}:{},...e.name?{name:e.name}:{},parentNodeId:e.parentId??null,kind:e.kind,...e.transform?{transform:structuredClone(e.transform)}:{},...e.sourceAssetId?{sourceAssetId:e.sourceAssetId}:{},...e.sourceNodePath?{sourceNodePath:e.sourceNodePath}:{},...e.childPrefabId?{childPrefabId:e.childPrefabId}:{},...e.primitive?{primitive:structuredClone(e.primitive)}:{},...e.marker?{marker:structuredClone(e.marker)}:{},...e.defaults?{defaults:structuredClone(e.defaults)}:{},...e.overrides?{overrides:structuredClone(e.overrides)}:{}}}function y5(e){return{includeUnplaceable:e.includeUnplaceable===!0,query:ee(e.query).toLocaleLowerCase(),kind:ee(e.kind).toLocaleLowerCase()}}function b5(e,t){if(!t.includeUnplaceable&&!e.placeable||t.kind&&String(e.kind).toLocaleLowerCase()!==t.kind)return!1;let r=String(t.query||"");return!r||[e.assetId,e.guid,e.displayName,e.kind,e.type,e.category,e.relativePath,e.contentHash].some(n=>String(n??"").toLocaleLowerCase().includes(r))}function E5(e){return{includeUnselectable:e.includeUnselectable===!0,name:ee(e.name).toLocaleLowerCase(),type:ee(e.type).toLocaleLowerCase(),parentId:e.parentId===null?null:ee(e.parentId),hasParentFilter:e.parentId!==void 0,sourceAssetId:ee(e.sourceAssetId),query:ee(e.query).toLocaleLowerCase()}}function I5(e,t){if(!t.includeUnselectable&&e.selectable===!1||t.name&&![e.name,e.label].some(n=>String(n??"").toLocaleLowerCase()===t.name)||t.type&&String(e.type??"").toLocaleLowerCase()!==t.type||t.hasParentFilter&&(e.parentId??null)!==t.parentId||t.sourceAssetId&&e.sourceAssetId!==t.sourceAssetId)return!1;let r=String(t.query||"");return!r||[e.id,e.name,e.label,e.type,e.path,e.parentId,e.sourceAssetId].some(n=>String(n??"").toLocaleLowerCase().includes(r))}function T5(e){return{assetId:ee(e.assetId),browserAssetId:ee(e.browserAssetId),name:ee(e.name).toLocaleLowerCase(),query:ee(e.query).toLocaleLowerCase(),includeUnavailable:e.includeUnavailable===!0}}function P5(e,t){if(!t.includeUnavailable&&e.placeable===!1||t.assetId&&e.assetId!==t.assetId||t.browserAssetId&&e.browserAssetId!==t.browserAssetId||t.name&&e.displayName.toLocaleLowerCase()!==t.name)return!1;let r=String(t.query||"");return!r||[e.assetId,e.browserAssetId,e.displayName,e.sourceAssetId,e.sourceAssetGuid].some(n=>String(n??"").toLocaleLowerCase().includes(r))}function A5(e){return{severity:ee(e.severity),code:ee(e.code).toLocaleLowerCase(),path:ee(e.path).toLocaleLowerCase(),query:ee(e.query).toLocaleLowerCase()}}function x5(e,t){if(t.severity&&e.severity!==t.severity||t.code&&String(e.code??"").toLocaleLowerCase()!==t.code||t.path&&!String(e.path??"").toLocaleLowerCase().includes(String(t.path)))return!1;let r=String(t.query||"");return!r||[e.code,e.message,e.path].some(n=>String(n??"").toLocaleLowerCase().includes(r))}function M5(e,t){let r=[],n=(i,a)=>{ee(a)===t&&r.push({assetId:t,...i})};for(let i=0;i<e.scene.gameObjects.length;i+=1){let a=e.scene.gameObjects[i];for(let s=0;s<a.components.length;s+=1){let c=a.components[s];c.type!=="ModelRenderer"&&c.type!=="ImageRenderer"||n({scope:"scene-object",kind:`${c.type}.assetId`,path:`scene.gameObjects[${i}].components[${s}].assetId`,objectId:a.id,...a.name?{objectName:a.name}:{}},c.assetId)}n({scope:"scene-object",kind:"prefab.prefabId",path:`scene.gameObjects[${i}].prefab.prefabId`,objectId:a.id,...a.name?{objectName:a.name}:{}},a.prefab?.prefabId),n({scope:"scene-object",kind:"prefab.sourceAssetId",path:`scene.gameObjects[${i}].prefab.sourceAssetId`,objectId:a.id,...a.name?{objectName:a.name}:{}},a.prefab?.sourceAssetId),il(a.overrides,`scene.gameObjects[${i}].overrides`,(s,c)=>n({scope:"scene-object",kind:"material.textureAssetId",path:s,objectId:a.id,...a.name?{objectName:a.name}:{}},c))}for(let i=0;i<e.assets.length;i+=1){let a=e.assets[i];if(!a.prefab)continue;n({scope:"prefab-asset",kind:"prefab.sourceAssetId",path:`assets[${i}].prefab.sourceAssetId`,prefabAssetId:a.id},a.prefab.sourceAssetId);let s=Tt(a);for(let c=0;c<s.length;c+=1){let d=s[c],u=`assets[${i}].prefab.nodes[${c}]`;n({scope:"prefab-node",kind:"node.sourceAssetId",path:`${u}.sourceAssetId`,prefabAssetId:a.id,nodeId:d.id},d.sourceAssetId),n({scope:"prefab-node",kind:"node.childPrefabId",path:`${u}.childPrefabId`,prefabAssetId:a.id,nodeId:d.id},d.childPrefabId),il(d.overrides,`${u}.overrides`,(l,m)=>n({scope:"prefab-node",kind:"material.textureAssetId",path:l,prefabAssetId:a.id,nodeId:d.id},m))}}let o=Array.isArray(e.scene.materialAssets)?e.scene.materialAssets:[];for(let i=0;i<o.length;i+=1){let a=o[i],s=ee(a.id);n({scope:"material-asset",kind:"origin.sourceAssetId",path:`scene.materialAssets[${i}].origin.sourceAssetId`,materialAssetId:s},ar(a.origin).sourceAssetId),il(a.properties,`scene.materialAssets[${i}].properties`,(c,d)=>n({scope:"material-asset",kind:"material.textureAssetId",path:c,materialAssetId:s},d))}return r.sort(Lk)}function D5(e,t){let r=[],n=(s,c)=>{let d=ar(s);d.kind==="scene-object"&&ee(d.id)===t&&r.push({targetObjectId:t,...c})};for(let s=0;s<e.scene.gameObjects.length;s+=1){let c=e.scene.gameObjects[s];if(c.parentId===t&&r.push({targetObjectId:t,sourceObjectId:c.id,...c.name?{sourceObjectName:c.name}:{},kind:"hierarchy.parent",path:`scene.gameObjects[${s}].parentId`}),!c.marker)continue;let d=`scene.gameObjects[${s}].marker`;n(c.marker.target,{sourceObjectId:c.id,...c.name?{sourceObjectName:c.name}:{},kind:"marker.target",path:`${d}.target`}),n("target"in c.marker.geometry?c.marker.geometry.target:null,{sourceObjectId:c.id,...c.name?{sourceObjectName:c.name}:{},kind:"marker.geometryTarget",path:`${d}.geometry.target`})}let o=ar(e.scene.markerGraph),i=Array.isArray(o.markers)?o.markers:[];for(let s=0;s<i.length;s+=1){let c=ar(i[s]);n(c.target,{kind:"markerGraph.markerTarget",path:`scene.markerGraph.markers[${s}].target`});let d=ar(c.geometry);n(d.target,{kind:"markerGraph.geometryTarget",path:`scene.markerGraph.markers[${s}].geometry.target`})}let a=Array.isArray(o.relations)?o.relations:[];for(let s=0;s<a.length;s+=1){let c=ar(a[s]),d=ee(c.id);n(c.from,{kind:"markerGraph.relationFrom",path:`scene.markerGraph.relations[${s}].from`,...d?{relationId:d}:{}}),n(c.to,{kind:"markerGraph.relationTo",path:`scene.markerGraph.relations[${s}].to`,...d?{relationId:d}:{}})}return r.sort(Lk)}function il(e,t,r){if(!(!e||typeof e!="object")){if(Array.isArray(e)){e.forEach((n,o)=>il(n,`${t}[${o}]`,r));return}for(let[n,o]of Object.entries(e)){let i=`${t}.${n}`;n==="textureAssetId"?r(i,o):il(o,i,r)}}}function R5(e){return{path:e.path,label:e.label,valueType:e.valueType,control:e.control,readOnly:e.readOnly,persistence:e.persistence,commitMode:e.commitMode,...e.min!==void 0?{min:e.min}:{},...e.max!==void 0?{max:e.max}:{},...e.step!==void 0?{step:e.step}:{},...e.precision!==void 0?{precision:e.precision}:{},...e.options?{options:e.options.map(t=>({label:t.label,value:structuredClone(t.value),...t.disabled!==void 0?{disabled:t.disabled}:{}}))}:{}}}function O5(e,t){return{assetId:e.id,label:e.displayName??e.id,...e.prefab?.sourceAssetId?{sourceAssetId:e.prefab.sourceAssetId}:{},...e.prefab?.sourceAssetGuid?{sourceAssetGuid:e.prefab.sourceAssetGuid}:{},selectedItemId:null,readonly:!1,dirty:t,documentDirty:t,canSave:t,canDiscard:t}}function Gk(){return{complete:cE.complete,included:[...cE.included],limitations:cE.limitations.map(e=>({...e}))}}function Lk(e,t){return e.path.localeCompare(t.path)||e.kind.localeCompare(t.kind)}function df(e){return Object.keys(e).some(t=>t!=="cursor"&&t!=="limit")}function ee(e){return typeof e=="string"?e.trim():""}function ar(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Mk(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function gi(e,t){return{ok:!1,code:e,message:t}}function Uk(e){let t=[],r=wC(),n=Rk(),o=Dk(),i=wk(),a=vk(),s=kk(),c=Ok(),d=Ck(),u=e.materialShaderDefinitions??Qr;try{t.push(e.host.registerCommand({manifest:Me(y.HIERARCHY_SCOPE_GET),handler:async(l,m)=>{let p=e.sceneAssembly.getHierarchyItems(Qe(m)),f={scopeKey:"scene",scopeType:"scene",revision:m.session.getState({cloneDocuments:!1}).documentRevision,title:"Scene",readonly:!1,nodes:p.map(S=>({id:S.id,label:S.label,parentId:S.parentId??null,selectable:!0,canHaveChildren:!0,renamable:!0,deletable:!0,draggable:!0})),selectedIds:m.session.getSelection().selectedIds,activeId:m.session.getSelection().activeId,capabilities:{},totalCount:p.length,returnedCount:p.length},g=await r(f,l);return g.ok?{ok:!0,output:g.output}:{ok:!1,diagnostics:[{severity:"error",source:"hierarchy",code:g.code,message:g.message}]}}})),t.push(e.host.registerCommand({manifest:Me(y.SCENE_OBJECTS_LIST),handler:async(l,m)=>{let p=m.session.getState({cloneDocuments:!1}),f=p.workingDocument,g=pE(f),S=await n(f.scene.gameObjects.map(P=>al(P,f,g)),l,p.documentRevision);return S.ok?{ok:!0,output:{objects:S.items,totalCount:S.totalCount,returnedCount:S.returnedCount,...S.nextCursor?{nextCursor:S.nextCursor}:{}}}:Si(S)}})),t.push(e.host.registerCommand({manifest:Me(y.OBJECT_RESOLVE,{activeId:"objectId"}),handler:(l,m)=>H5(Qe(m),l)})),t.push(e.host.registerCommand({manifest:Me(y.OBJECT_PROPERTIES_GET),handler:(l,m)=>{let p=m.session.getState({cloneDocuments:!1}),f=_k(p.workingDocument,l,p.documentRevision,e.sceneAssembly.getInspectorObject);return f.ok?f:Si(f)}})),t.push(e.host.registerCommand({manifest:Me(y.OBJECT_REFERENCES_LIST),handler:async(l,m)=>{let p=m.session.getState({cloneDocuments:!1}),f=await a(p.workingDocument,l,p.documentRevision);return f.ok?f:Si(f)}})),t.push(e.host.registerCommand({manifest:Me(y.ASSET_LIBRARY_LIST),handler:async(l,m)=>{let p=m.session.getState({cloneDocuments:!1}),f=[...await e.listAssets(p.workingDocument)].map(Nk),g=await o(f,l,jk(p.documentRevision,f));return g.ok?{ok:!0,output:{assets:g.items,totalCount:g.totalCount,returnedCount:g.returnedCount,...g.nextCursor?{nextCursor:g.nextCursor}:{}}}:Si(g)}})),t.push(e.host.registerCommand({manifest:Me(y.ASSET_INFO_GET),handler:async(l,m)=>{let p=l.assetId.trim(),f=[...await e.listAssets(Qe(m))].find(g=>g.assetId===p||g.id===p);return f?{ok:!0,output:{asset:dE(f)}}:ae("asset.notFound",`Asset was not found: ${p}`)}})),t.push(e.host.registerCommand({manifest:Me(y.ASSET_REFERENCES_LIST),handler:async(l,m)=>{let p=m.session.getState({cloneDocuments:!1}),f=await i(p.workingDocument,l,p.documentRevision);return f.ok?f:Si(f)}})),t.push(e.host.registerCommand({manifest:Me(y.AUTHORING_VALIDATION_LIST),handler:async(l,m)=>{let p=m.session.getState({cloneDocuments:!1}),f=await s(p.workingDocument,l,p.documentRevision);return f.ok?f:Si(f)}})),t.push(e.host.registerCommand({manifest:Me(y.PREFAB_RESOLVE),handler:async(l,m)=>{let p=m.session.getState({cloneDocuments:!1}),f=p.workingDocument.assets.filter(S=>!!S.prefab).map(lE),g=await c(f,l,p.documentRevision);return g.ok?{ok:!0,output:{prefabs:g.items,resolvedPrefab:g.totalCount===1?g.items[0]??null:null,ambiguous:g.totalCount>1,currentStage:null,totalCount:g.totalCount,returnedCount:g.returnedCount,...g.nextCursor?{nextCursor:g.nextCursor}:{}}}:Si(g)}})),t.push(e.host.registerCommand({manifest:Me(y.PREFAB_SCENE_GET),handler:async(l,m)=>{let p=m.session.getState({cloneDocuments:!1}),f=await d(p.workingDocument,l,p.documentRevision,{dirty:p.dirty});return f.ok?f:Si(f)}})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_ASSETS_LIST),handler:(l,m)=>({ok:!0,output:C5(Qe(m),l)})})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_ASSET_GET),handler:(l,m)=>k5(Qe(m),l.materialAssetId)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_ASSET_CREATE),handler:(l,m)=>_5(m,e.sceneAssembly,l,u)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_ASSET_RENAME),handler:(l,m)=>N5(m,e.sceneAssembly,l)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_ASSET_SET_SHADER),handler:(l,m)=>j5(m,e.sceneAssembly,l,u)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_SHADER_DEFINITIONS_LIST),handler:l=>({ok:!0,output:w5(u,l)})})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_SHADER_DEFINITION_GET),handler:l=>v5(u,l.shaderId)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_REFERENCES_LIST),handler:(l,m)=>G5(Qe(m),l)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_BINDINGS_LIST),handler:(l,m)=>({ok:!0,output:mf(uE(Qe(m),l),l.cursor,l.limit)})})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_BINDING_SET),handler:(l,m)=>$k(m,e.sceneAssembly,l.targets,l.materialAssetId)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_BINDING_CLEAR),handler:(l,m)=>$k(m,e.sceneAssembly,l.targets,null)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_PROPERTIES_GET),handler:(l,m)=>L5(Qe(m),l.materialAssetId,l.includeSchema===!0,u)})),t.push(e.host.registerCommand({manifest:Me(y.MATERIAL_PROPERTIES_PATCH),handler:(l,m)=>F5(m,e.sceneAssembly,l,u)})),t.push(e.host.registerCommand({manifest:Me(y.OBJECT_CREATE_PRIMITIVE),handler:(l,m)=>zk(m,e.sceneAssembly.createCreatePrimitivePatch(Qe(m),l),p=>({createdId:p.createdId,object:al(Qe(m).scene.gameObjects.find(f=>f.id===p.createdId),Qe(m)),selection:m.session.getSelection()}))})),t.push(e.host.registerCommand({manifest:Me(y.OBJECT_DELETE,{selectedIds:"objectIds"}),handler:(l,m)=>zk(m,e.sceneAssembly.createDeleteSubtreePatch(Qe(m),{ids:l.objectIds??(l.objectId?[l.objectId]:[])}),p=>({deletedIds:p.deletedIds??p.changedIds??[],fallbackSelectionId:m.session.getSelection().activeId,selection:m.session.getSelection()}))})),t.push(e.host.registerCommand({manifest:Me(y.OBJECT_PROPERTIES_PATCH_MANY),handler:(l,m)=>q5(m,e.sceneAssembly,l)})),t.push(e.host.registerCommand({manifest:Me(y.TRANSFORM_MOVE,{activeId:"objectId"}),handler:(l,m)=>{let p=lf(Qe(m),l.objectId);if(!p)return ae("object.notFound",`Scene object was not found: ${l.objectId}`);let f=l.position??(l.offset?{x:p.position.x+l.offset.x,y:p.position.y+l.offset.y,z:p.position.z+l.offset.z}:null);if(!f)return ae("transform.invalidInput","Transform move requires position or offset.");let g=e.sceneAssembly.patchGameObjectField(Qe(m),l.objectId,"transform.position",f),S=lf(g,l.objectId);return!S||JSON.stringify(S)===JSON.stringify(p)?ae("transform.unchanged",`Transform did not change: ${l.objectId}`):(m.dispatch({type:"document.replace",document:g,label:`Move ${l.objectId}`,projectionImpact:{type:"incremental",syncTransformIds:[l.objectId]}}),{ok:!0,output:{objectId:l.objectId,before:p,after:S,selection:m.session.getSelection()}})}})),t.push(e.host.registerCommand({manifest:Me(y.TRANSFORM_SET,{activeId:"objectId"}),handler:(l,m)=>{let p=Qe(m),f=lf(p,l.objectId);if(!f)return ae("object.notFound",`Scene object was not found: ${l.objectId}`);let g=["position","rotation","scale"].flatMap(x=>l[x]?[{path:`transform.${x}`,value:l[x]}]:[]),S=e.sceneAssembly.patchGameObjectPropertiesMany(p,[{objectId:l.objectId,changes:g}]),P=lf(S,l.objectId);return!P||JSON.stringify(P)===JSON.stringify(f)?ae("transform.unchanged",`Transform did not change: ${l.objectId}`):(m.dispatch({type:"document.replace",document:S,label:`Set transform on ${l.objectId}`,projectionImpact:{type:"incremental",syncTransformIds:[l.objectId]}}),{ok:!0,output:{objectId:l.objectId,before:f,after:P,selection:m.session.getSelection()}})}})),t.push(e.host.registerCommand({manifest:Me(y.OBJECT_CREATE_FROM_ASSET),handler:async(l,m)=>{let p=Qe(m),f=[...await e.listAssets(p)].find(S=>S.assetId===l.assetId);if(!f)return ae("asset.notFound",`Asset was not found: ${l.assetId}`);if(!ha(f))return ae("asset.unplaceable",`Asset is not placeable: ${l.assetId}`);let g=e.sceneAssembly.addAssetLibraryItemToDocument(p,f,U5(l));return m.dispatch({type:"document.replace",document:g.document,label:`Create ${g.gameObject.name??g.gameObject.id}`}),{ok:!0,output:{assetId:l.assetId,createdId:g.gameObject.id,object:al(g.gameObject,g.document),selection:m.session.getSelection(),focused:!1,status:`Created ${g.gameObject.name??g.gameObject.id}`}}}}))}catch(l){for(let m of t.splice(0).reverse())m();throw l}return()=>{for(let l of t.splice(0).reverse())l()}}function C5(e,t){let r=t.query?.trim().toLowerCase()??"",n=t.path?.trim().toLowerCase()??"",o=t.shaderId?.trim()??"",i=(e.scene.materialAssets??[]).map(a=>({id:a.id,name:a.name?.trim()||a.id,shaderId:a.shaderId,properties:structuredClone(a.properties),...a.origin?{origin:structuredClone(a.origin)}:{}})).filter(a=>!o||a.shaderId===o).filter(a=>!r||`${a.name}
23
+ ${a.id}`.toLowerCase().includes(r)).filter(a=>!n||JSON.stringify(a.origin??{}).toLowerCase().includes(n)).sort((a,s)=>a.name.localeCompare(s.name)||a.id.localeCompare(s.id));return mf(i,t.cursor,t.limit)}function w5(e,t){let r=t.query?.trim().toLowerCase()??"",n=e.list().map(Vk).filter(o=>t.builtin===void 0||o.builtin===t.builtin).filter(o=>!r||`${o.displayName}
24
+ ${o.shaderId}
25
+ ${o.runtimeKind}`.toLowerCase().includes(r)).sort((o,i)=>o.displayName.localeCompare(i.displayName)||o.shaderId.localeCompare(i.shaderId));return mf(n,t.cursor,t.limit)}function v5(e,t){let r=t?.trim(),n=e.get(r);return n?{ok:!0,output:{definition:{...Vk(n),propertiesSchema:structuredClone(n.propertiesSchema),defaultProperties:structuredClone(n.defaultProperties),inspector:structuredClone(n.inspector)}}}:ae("material.shaderDefinitionNotFound",`Shader Definition was not found: ${r}`)}function Vk(e){return{shaderId:e.shaderId,version:e.version,runtimeKind:e.runtimeKind,displayName:e.displayName,builtin:On(e.shaderId)!==null,...e.sourceFile?{sourceFile:e.sourceFile}:{},sectionCount:e.inspector.sections.length,fieldCount:e.inspector.fields.length}}function k5(e,t){let r=t?.trim(),n=fe(e,r);return n?{ok:!0,output:{asset:{id:n.id,name:n.name?.trim()||n.id,shaderId:n.shaderId,properties:structuredClone(n.properties),...n.origin?{origin:structuredClone(n.origin)}:{}},referenceCount:tn(e).filter(o=>o.materialAssetId===r).length}}:ae("material.assetNotFound",`Material asset was not found: ${r}`)}function _5(e,t,r,n){let o=r.shaderId?.trim(),i=n.get(o);if(!i)return ae("material.shaderDefinitionNotFound",`Shader Definition was not found: ${o}`);let a=r.name?.trim();if(r.name!==void 0&&!a)return ae("material.invalidName","Material name must not be empty.");let s=t.createMaterialAssetCreatePatch({document:e.session.getWorkingDocument(),definition:i,...a?{name:a}:{}});if(!s?.createdId)return ae("material.assetMutationUnavailable","Material Asset creation is unavailable.");let c=e.session.getState({cloneDocuments:!1}).documentRevision;mE(e,s);let d=fe(e.session.getWorkingDocument(),s.createdId);return{ok:!0,output:{asset:sl(d),changed:e.session.getState({cloneDocuments:!1}).documentRevision!==c,revision:e.session.getState({cloneDocuments:!1}).documentRevision}}}function N5(e,t,r){let n=e.session.getWorkingDocument(),o=r.materialAssetId?.trim(),i=fe(n,o);if(!i)return ae("material.assetNotFound",`Material asset was not found: ${o}`);let a=r.name?.trim();if(!a)return ae("material.invalidName","Material name must not be empty.");let s=(n.scene.materialAssets??[]).find(l=>l.id!==o&&l.name?.trim().toLocaleLowerCase()===a.toLocaleLowerCase());if(s)return ae("material.nameConflict",`A Material Asset named "${a}" already exists.`,{materialAssetId:o,conflictingMaterialAssetId:s.id,name:a});if(i.name===a)return{ok:!0,output:{asset:sl(i),changed:!1,revision:e.session.getState({cloneDocuments:!1}).documentRevision}};let c=t.createMaterialAssetRenamePatch({document:n,materialAssetId:o,name:a});if(!c)return ae("material.assetReadonly",`Material asset is read-only: ${o}`);let d=e.session.getState({cloneDocuments:!1}).documentRevision;mE(e,c);let u=fe(e.session.getWorkingDocument(),o);return{ok:!0,output:{asset:sl(u),changed:e.session.getState({cloneDocuments:!1}).documentRevision!==d,revision:e.session.getState({cloneDocuments:!1}).documentRevision}}}function j5(e,t,r,n){let o=e.session.getWorkingDocument(),i=r.materialAssetId?.trim(),a=fe(o,i);if(!a)return ae("material.assetNotFound",`Material asset was not found: ${i}`);let s=r.shaderId?.trim(),c=n.get(s);if(!c)return ae("material.shaderDefinitionNotFound",`Shader Definition was not found: ${s}`);if(a.shaderId===s)return{ok:!0,output:{asset:sl(a),previousShaderId:a.shaderId,changed:!1,revision:e.session.getState({cloneDocuments:!1}).documentRevision,preservedPaths:[],resetPaths:[]}};let d=t.createMaterialAssetSetShaderPatch({document:o,materialAssetId:i,definition:c});if(!d)return ae("material.assetReadonly",`Material asset is read-only: ${i}`);if((d.resetPaths?.length??0)>0&&r.allowReset!==!0)return ae("material.shaderChangeRequiresConfirmation",`Changing to ${c.displayName} resets ${d.resetPaths.length} incompatible material properties.`,{materialAssetId:i,previousShaderId:a.shaderId,shaderId:s,preservedPaths:d.preservedPaths??[],resetPaths:d.resetPaths??[]});let u=e.session.getState({cloneDocuments:!1}).documentRevision;mE(e,d);let l=fe(e.session.getWorkingDocument(),i);return{ok:!0,output:{asset:sl(l),previousShaderId:a.shaderId,changed:e.session.getState({cloneDocuments:!1}).documentRevision!==u,revision:e.session.getState({cloneDocuments:!1}).documentRevision,preservedPaths:d.preservedPaths??[],resetPaths:d.resetPaths??[]}}}function mE(e,t){e.dispatch({type:"document.patch",patch:t.patch,label:t.label,...t.reprojectIds?.length?{projectionImpact:{type:"incremental",reprojectIds:t.reprojectIds}}:{},...t.presentationImpact?{presentationImpact:t.presentationImpact}:{}})}function sl(e){return{id:e.id,name:e.name?.trim()||e.id,shaderId:e.shaderId,properties:structuredClone(e.properties),...e.origin?{origin:structuredClone(e.origin)}:{}}}function G5(e,t){let r=t.materialAssetId?.trim();if(!fe(e,r))return ae("material.assetNotFound",`Material asset was not found: ${r}`);let n=tn(e).filter(o=>o.materialAssetId===r).filter(o=>!t.scope||o.scope===t.scope).map(o=>({scope:o.scope,kind:o.kind,materialAssetId:o.materialAssetId,...o.scope==="scene"?{objectId:o.gameObjectId}:{},...o.gameObjectName?{objectName:o.gameObjectName}:{},...o.prefabAssetId?{prefabAssetId:o.prefabAssetId}:{},...o.prefabNodeId?{nodeId:o.prefabNodeId}:{},...o.slotId?{slotId:o.slotId}:{},bindingPath:o.bindingPath,label:o.label})).sort((o,i)=>Eo(o).localeCompare(Eo(i)));return{ok:!0,output:{materialAssetId:r,...mf(n,t.cursor,t.limit)}}}function uE(e,t){let r=t.scope==="prefab"?[]:e.scene.gameObjects.filter(o=>!t.objectId||o.id===t.objectId).flatMap(o=>{let i=kn(e,o),a=Us(e,o.id)??o.overrides;return i.length===0?[uf({scope:"scene",objectId:o.id},o.overrides?.materialBinding,a?.materialBinding,a!==o.overrides?"prefab-root":"default","overrides.materialBinding.materialAssetId")]:i.map(s=>uf({scope:"scene",objectId:o.id,slotId:s.slotId},o.overrides?.materialSlotBindings?.[s.slotId],a?.materialSlotBindings?.[s.slotId],a!==o.overrides?"prefab-root":"default",`overrides.materialSlotBindings.${s.slotId}.materialAssetId`))}),n=t.scope==="scene"?[]:e.assets.filter(o=>o.type==="prefab"&&!!o.prefab).filter(o=>!t.prefabAssetId||o.id===t.prefabAssetId).flatMap(o=>{let i=t.nodeId?[]:Fk(e,o,null,o.prefab.overrides,void 0),a=ht(o),s=(o.prefab?.nodes??[]).filter(c=>c.id!==a).filter(c=>!t.nodeId||c.id===t.nodeId).flatMap(c=>Fk(e,o,c,c.overrides,o.prefab.overrides));return[...i,...s]});return[...r,...n].sort((o,i)=>Eo(o.target).localeCompare(Eo(i.target)))}function Fk(e,t,r,n,o){let i=B5(e,t,r),a={scope:"prefab",prefabAssetId:t.id,...r?{nodeId:r.id}:{}};return i.length===0?[uf(a,n?.materialBinding,n?.materialBinding??o?.materialBinding,o?.materialBinding?"prefab-root":"default","overrides.materialBinding.materialAssetId")]:i.map(s=>uf({...a,slotId:s},n?.materialSlotBindings?.[s],n?.materialSlotBindings?.[s]??o?.materialSlotBindings?.[s],o?.materialSlotBindings?.[s]?"prefab-root":"default",`overrides.materialSlotBindings.${s}.materialAssetId`))}function uf(e,t,r,n,o){let i=Bk(t?.materialAssetId);return{target:e,kind:e.slotId?"slot":"root",bindingPath:o,authoredMaterialAssetId:i,effectiveMaterialAssetId:Bk(r?.materialAssetId)??fi,resolvedSource:i?"authored":n}}function $k(e,t,r,n){let o=Qe(e),i=n?.trim()||null;if(i&&!fe(o,i))return ae("material.assetNotFound",`Material asset was not found: ${i}`);let a=$5(r);if(!a.ok)return a.failure;let s=new Map(uE(o,{}).map(g=>[Eo(g.target),g])),c=a.targets.map(g=>s.get(Eo(g)));if(c.some(g=>!g))return ae("material.invalidTarget","One or more material binding targets do not exist or require a logical slotId.");let d=c,l=a.targets[0].scope==="scene"?t.createSceneMaterialBindingPatch({document:o,materialAssetId:i,targets:c.map(g=>({objectId:g.target.objectId,path:g.bindingPath}))}):t.createPrefabMaterialBindingPatch({document:o,materialAssetId:i,targets:c.map(g=>({prefabAssetId:g.target.prefabAssetId,...g.target.nodeId?{nodeId:g.target.nodeId}:{},path:g.bindingPath}))});if(!l)return ae("material.patchUnavailable","Material binding preflight rejected the atomic patch.");e.dispatch({type:"document.patch",patch:l.patch,label:l.label,...l.reprojectIds?.length?{projectionImpact:{type:"incremental",reprojectIds:l.reprojectIds}}:{},...l.presentationImpact?{presentationImpact:l.presentationImpact}:{}});let m=Qe(e),p=new Map(uE(m,{}).map(g=>[Eo(g.target),g])),f=a.targets.map(g=>p.get(Eo(g)));return{ok:!0,output:{changed:f.some((g,S)=>JSON.stringify(g)!==JSON.stringify(d[S])),changedCount:f.filter((g,S)=>JSON.stringify(g)!==JSON.stringify(d[S])).length,revision:e.session.getState({cloneDocuments:!1}).documentRevision,bindings:f}}}function L5(e,t,r,n){let o=t?.trim(),i=fe(e,o),a=i?Ds(i.shaderId,n):null;return i?a?{ok:!0,output:{materialAssetId:o,shaderId:i.shaderId,properties:structuredClone(i.properties),defaults:structuredClone(a.defaultProperties),...r?{schema:structuredClone(a.propertiesSchema)}:{}}}:ae("material.shaderUnsupported",`Unsupported material shader: ${i.shaderId}`):ae("material.assetNotFound",`Material asset was not found: ${o}`)}function F5(e,t,r,n){let o=Qe(e),i=r.materialAssetId?.trim(),a=fe(o,i);if(!a)return ae("material.assetNotFound",`Material asset was not found: ${i}`);let s=new Set,c=[];for(let l of r.changes??[]){let m=z5(l.path),p=ei(a.shaderId,m,n),f=Object.prototype.hasOwnProperty.call(l,"value"),g=l.reset===!0;if(!m||s.has(m)||!p||p.kind==="object"||f===g)return ae("material.invalidPropertyPatch",`Invalid material property change: ${l.path}`);let S=g?nC(a.shaderId,m,n):{found:!0,value:l.value};if(!S.found)return ae("material.invalidPropertyPatch",`Material property cannot be reset: ${m}`);s.add(m),c.push({path:m,value:S.value})}let d=t.createMaterialPropertiesPatch({document:o,materialAssetId:i,changes:c});if(!d)return ae("material.invalidPropertyPatch","Material property preflight rejected the atomic patch.");e.dispatch({type:"document.patch",patch:d.patch,label:d.label,...d.reprojectIds?.length?{projectionImpact:{type:"incremental",reprojectIds:d.reprojectIds}}:{}});let u=fe(Qe(e),i);return{ok:!0,output:{materialAssetId:i,shaderId:u.shaderId,changed:JSON.stringify(a.properties)!==JSON.stringify(u.properties),changedPaths:JSON.stringify(a.properties)!==JSON.stringify(u.properties)?[...s]:[],revision:e.session.getState({cloneDocuments:!1}).documentRevision,properties:structuredClone(u.properties)}}}function $5(e){if(!Array.isArray(e)||e.length===0)return{ok:!1,failure:ae("material.invalidTarget","At least one material target is required.")};let t=new Set,r=[];for(let n of e){let o=n.scope,i=n.objectId?.trim(),a=n.prefabAssetId?.trim(),s=n.nodeId?.trim(),c=n.slotId?.trim();if(o==="scene"&&(!i||a||s)||o==="prefab"&&(!a||i)||o!=="scene"&&o!=="prefab")return{ok:!1,failure:ae("material.invalidTarget","Material target identity is invalid.")};let d={scope:o,...i?{objectId:i}:{},...a?{prefabAssetId:a}:{},...s?{nodeId:s}:{},...c?{slotId:c}:{}},u=Eo(d);if(t.has(u))return{ok:!1,failure:ae("material.invalidTarget","Duplicate material target.")};t.add(u),r.push(d)}return new Set(r.map(n=>n.scope)).size!==1?{ok:!1,failure:ae("material.invalidTarget","Scene and Prefab targets cannot be mixed.")}:r[0].scope==="prefab"&&new Set(r.map(n=>n.prefabAssetId)).size!==1?{ok:!1,failure:ae("material.invalidTarget","One atomic command must target one Prefab asset.")}:{ok:!0,targets:r}}function B5(e,t,r){let n=r?.sourceAssetId??t.prefab?.sourceAssetId,o=e.assets.find(a=>a.id===n);return(Array.isArray(o?.metadata?.materialSlots)?o.metadata.materialSlots:[]).map(yb).filter(a=>!!a?.slotId).map(a=>a.slotId)}function mf(e,t,r){let n=t?/^offset:(\d+)$/.exec(t.trim()):null,o=n?Number(n[1]):0,i=Number.isSafeInteger(r)?Math.max(1,Math.min(200,Number(r))):50,a=e.slice(o,o+i),s=o+a.length;return{items:a,total:e.length,...s<e.length?{nextCursor:`offset:${s}`}:{}}}function Eo(e){return[e.scope??"",e.objectId??"",e.prefabAssetId??"",e.nodeId??"",e.slotId??""].join("\0")}function z5(e){let t=typeof e=="string"?e.trim():"";return t&&!t.startsWith("properties.")?`properties.${t}`:t}function Bk(e){return typeof e=="string"&&e.trim()?e.trim():null}function U5(e){if(!(!e.position&&!e.rotation&&!e.scale))return{position:e.position??{x:0,y:0,z:0},rotation:e.rotation??{x:0,y:0,z:0},scale:e.scale??{x:1,y:1,z:1}}}function zk(e,t,r){if(!t)return ae("command.unavailable","The requested scene mutation is unavailable.");let n=V5(t);return e.dispatch({type:"document.patch",patch:t.patch,label:t.label,...n?{projectionImpact:n}:{}}),{ok:!0,output:r?r(t):{changedIds:t.changedIds??t.deletedIds??[],...t.createdId?{createdId:t.createdId}:{},...t.selectId?{selectId:t.selectId}:{}}}}function V5(e){let t=e.createdId?[e.createdId]:[],r=e.deletedIds??[],n=[];if(e.reprojectIds?.length){let o=new Set([...t,...r]);n=e.reprojectIds.filter(i=>!o.has(i))}if(!(t.length===0&&r.length===0&&n.length===0))return{type:"incremental",...t.length?{createdNodeIds:t}:{},...r.length?{deletedNodeIds:r}:{},...n.length?{reprojectIds:n}:{}}}function H5(e,t){let r=t.objectId??t.name??t.path??t.query??"",n=r.trim().toLocaleLowerCase(),o=e.scene.gameObjects.find(s=>s.id===r),i=o?[o]:e.scene.gameObjects.filter(s=>s.name?.trim().toLocaleLowerCase()===n||s.id.toLocaleLowerCase().includes(n)),a=pE(e);return{ok:!0,output:{objects:i.map(s=>al(s,e,a)),resolvedObject:i.length===1?al(i[0],e,a):null,ambiguous:i.length>1}}}function al(e,t,r=pE(t)){let n=K5(e);return{id:e.id,label:e.name??e.id,name:e.name??e.id,type:Pt(e),...n?{sourceAssetId:n}:{},path:W5(r,e),parentId:e.parentId??null,selectable:!0,locked:!1}}function K5(e){return e.components.find(r=>r.type==="ModelRenderer"||r.type==="ImageRenderer")?.assetId||e.prefab?.sourceAssetId||e.prefab?.prefabId}function pE(e){return new Map(e.scene.gameObjects.map(t=>[t.id,t]))}function W5(e,t){let r=[],n=new Set,o=t;for(;o&&!n.has(o.id);)n.add(o.id),r.push(o.name??o.id),o=o.parentId?e.get(o.parentId):void 0;return r.reverse().join("/")}function q5(e,t,r){let n=Qe(e),o=new Map(n.scene.gameObjects.map(p=>[p.id,p])),i=new Map,a=new Set,s=jb({hasMaterialAsset:(p,f)=>!!fe(p,f),isMarkerGameObject:p=>!!p.marker}),c=0;for(let p of r.targets){let f=p.objectId.trim(),g=o.get(f);if(!g)return ae("object.notFound",`Scene object was not found: ${f}`);let S=i.get(f)??[];for(let P of p.changes){let x=P.path.trim(),T=`${f}\0${x}`;if(a.has(T))return ae("object.properties.duplicateField",`Object property is duplicated: ${f}.${x}`);a.add(T);let R=Nb(x,P.value),A=Vs({document:n,path:x,nodeKind:Pt(g),value:R,extraValidators:[s]});if(!A.ok)return ae("object.properties.invalid",`${A.message??`Invalid object property: ${x}.`} Target: ${f}.`);S.push({path:x,value:R}),c+=1}i.set(f,S)}let d=[...i].map(([p,f])=>({objectId:p,changes:f})),u=t.patchGameObjectPropertiesMany(n,d),l=new Map(u.scene.gameObjects.map(p=>[p.id,p])),m=d.map(p=>p.objectId).filter(p=>l.get(p)!==o.get(p));if(u!==n){let p=[],f=[],g=[],S=[];for(let P of m){let x=i.get(P)??[],T=new Set(x.map(R=>Y5(R.path)));if(T.has("reproject")){S.push(P);continue}T.has("transform")&&p.push(P),T.has("metadata")&&f.push(P),T.has("appearance")&&g.push(P)}e.dispatch({type:"document.replace",document:u,label:`Patch ${c} properties on ${d.length} objects`,...m.length>0?{projectionImpact:{type:"incremental",...p.length>0?{syncTransformIds:p}:{},...f.length>0?{syncMetadataIds:f}:{},...g.length>0?{syncAppearanceIds:g}:{},...S.length>0?{reprojectIds:S}:{}}}:{}})}return{ok:!0,output:{requestedObjectCount:d.length,validatedPropertyCount:c,changedObjectCount:m.length,sampleChangedObjectIds:m.slice(0,20)}}}function Y5(e){return e==="transform.position"||e.startsWith("transform.position.")||e==="transform.rotation"||e.startsWith("transform.rotation.")||e==="transform.scale"||e.startsWith("transform.scale.")?"transform":e==="name"||e.startsWith("metadata.")?"metadata":e==="active"||e==="enabled"||e.startsWith("shadow.")||e.startsWith("rendering.")||e.startsWith("overrides.material")||e.startsWith("overrides.outline")||e.startsWith("material.")?"appearance":"reproject"}function Qe(e){return e.session.getState({cloneDocuments:!1}).workingDocument}function Me(e,t){let r=Ts[e],n=Ld[e],o=Nd[e];if(!r)throw new Error(`Built-in Editor command metadata is missing: ${e}`);return{schemaVersion:1,id:e,version:1,title:r.title,...Ps[e]?{description:Ps[e]}:{},target:r.target,access:r.access,stability:r.stability,inputSchema:n.inputSchema,outputSchema:n.outputSchema,effects:{persistence:r.access==="write"?"authoring":"none",undoable:r.access==="write",idempotent:r.access==="read"},...r.target==="authoring"&&r.access==="write"?{transaction:{compatible:!0,sideEffects:"authoring",phase:"mutation"}}:{},presentation:{category:r.category,inputMode:J5(n.inputSchema)?"schema-form":"none",...o?.aliases?{aliases:o.aliases}:{},...o?.keywords?{keywords:o.keywords}:{},...o?.examples?{examples:o.examples}:{},...o?.shortcut?{shortcut:o.shortcut}:{},...o?.menu?{menu:o.menu}:{},...t?{selectionBinding:t}:{}}}}function lf(e,t){let r=e.scene.gameObjects.find(o=>o.id===t),n=r?.components.find(o=>o.type==="Transform")??r?.transform;return!n||"mode"in n&&n.mode==="matrix"?null:{position:{...n.position},rotation:{...n.rotation},scale:{...n.scale??{x:1,y:1,z:1}}}}function J5(e){let t=e.properties;return!!t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length>0}function ae(e,t,r){return{ok:!1,diagnostics:[{severity:"error",source:"command",code:e,message:t,...r?{details:r}:{}}]}}function Si(e){return ae(e.code,e.message)}function Hk(e,t,r){let n=new Set(t.map(i=>`${i.objectId}\0${i.path}`)),o=new Set;r&&o.add(r);for(let i of tn(e))i.scope==="scene"&&n.has(`${i.gameObjectId}\0${i.bindingPath}`)&&o.add(i.materialAssetId);return{inspector:["material"],materials:{assetIds:[...o]}}}function Kk(e,t,r){let n=new Set;r&&n.add(r);for(let o of t){let i=X5(e,o);i&&n.add(i)}return{inspector:["material"],materials:{assetIds:[...n]}}}function X5(e,t){let r=ci(e,t.prefabAssetId)?.prefab,n=t.nodeId?r?.nodes?.find(i=>i.id===t.nodeId)?.overrides:r?.overrides;if(!n)return null;let o=t.path==="overrides.materialBinding.materialAssetId"?n.materialBinding?.materialAssetId:n.materialSlotBindings?.[Ar(t.path,"materialAssetId")??""]?.materialAssetId;return typeof o=="string"&&o.trim()?o.trim():null}function pf(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}var Q5="rendering",Z5=Ra;function Wk(e){let t=pf(e);return e8(t?.companionConfigs)}function e8(e){if(e==null)return{};let t=t8(e,"$.companionConfigs"),r={};for(let[n,o]of Object.entries(t)){if(!n||n!==n.trim())throw fE("schema.invalidValue","$.companionConfigs");let i=n;if(o===null){r[i]=null;continue}let a=pf(o);if(!a)throw fE("schema.invalidType",`$.companionConfigs.${i}`);i===Q5&&Ht(a),i===Z5&&un(a,`$.companionConfigs.${i}`),r[i]=a}return r}function t8(e,t){let r=pf(e);if(!r)throw fE("schema.invalidType",t);return r}function fE(e,t){let r=new Error(`${e}: ${t}`);return Object.assign(r,{code:e,path:t}),r}var r8=new WeakMap;function ff(e){return r8.get(e)??null}import{performance as gE}from"node:perf_hooks";var Yk=1,hE=["prepare","compile","validate","stringify","write","checkpoint"];function cl(){let e=[],t=(r,n,o)=>{let i=process.memoryUsage();e.push({phase:r,durationMs:SE(gE.now()-n),rssBeforeBytes:o.rss,rssAfterBytes:i.rss,maxObservedRssBytes:Math.max(o.rss,i.rss),heapUsedBeforeBytes:o.heapUsed,heapUsedAfterBytes:i.heapUsed,maxObservedHeapUsedBytes:Math.max(o.heapUsed,i.heapUsed)})};return{measure(r,n){let o=process.memoryUsage(),i=gE.now();try{return n()}finally{t(r,i,o)}},async measureAsync(r,n){let o=process.memoryUsage(),i=gE.now();try{return await n()}finally{t(r,i,o)}},snapshot(){return yE(e)}}}function dl(...e){let t=e.flatMap(r=>r?.phases??[]);return t.length>0?yE(t):null}function ll(e){if(!qk(e)||e.schemaVersion!==Yk||!Array.isArray(e.phases)||e.phases.length>hE.length)return null;let t=[];for(let r of e.phases){if(!qk(r)||!n8(r.phase)||!Ia(r.durationMs)||!Ia(r.rssBeforeBytes)||!Ia(r.rssAfterBytes)||!Ia(r.maxObservedRssBytes)||!Ia(r.heapUsedBeforeBytes)||!Ia(r.heapUsedAfterBytes)||!Ia(r.maxObservedHeapUsedBytes))return null;t.push({phase:r.phase,durationMs:r.durationMs,rssBeforeBytes:r.rssBeforeBytes,rssAfterBytes:r.rssAfterBytes,maxObservedRssBytes:r.maxObservedRssBytes,heapUsedBeforeBytes:r.heapUsedBeforeBytes,heapUsedAfterBytes:r.heapUsedAfterBytes,maxObservedHeapUsedBytes:r.maxObservedHeapUsedBytes})}return yE(t)}function yE(e){let t=new Map;for(let n of e){let o=t.get(n.phase);if(!o){t.set(n.phase,{...n});continue}o.durationMs=SE(o.durationMs+n.durationMs),o.rssAfterBytes=n.rssAfterBytes,o.maxObservedRssBytes=Math.max(o.maxObservedRssBytes,n.maxObservedRssBytes),o.heapUsedAfterBytes=n.heapUsedAfterBytes,o.maxObservedHeapUsedBytes=Math.max(o.maxObservedHeapUsedBytes,n.maxObservedHeapUsedBytes)}let r=hE.flatMap(n=>{let o=t.get(n);return o?[o]:[]});return{schemaVersion:Yk,measuredDurationMs:SE(r.reduce((n,o)=>n+o.durationMs,0)),maxObservedRssBytes:r.reduce((n,o)=>Math.max(n,o.maxObservedRssBytes),0),maxObservedHeapUsedBytes:r.reduce((n,o)=>Math.max(n,o.maxObservedHeapUsedBytes),0),phases:r}}function n8(e){return typeof e=="string"&&hE.includes(e)}function Ia(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0}function qk(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function SE(e){return Math.round(Math.max(0,e)*1e3)/1e3}var a8=200,s8=4;async function t_(e){let t=e.backend??(e.server?ff(e.server):null);if(!t&&e.project)throw new Error("Project Editor Service requires a project authoring backend.");let r=await c8(e),n=xO({persistedDocument:r.savedDocument,workingDocument:r.workingDocument,initialDocumentRevision:r.documentRevision,initialDocumentStructureRevision:r.documentStructureRevision,historyDocumentStorage:"immutable-reference",cloneResultDocumentsByDefault:!1,reduceDocument(m,p){return p.type==="document.replace"?p.document:p.patch?.kind==="replace"?p.patch.document:m},isDocumentStructureChange:m=>m.type==="document.replace"||m.type==="document.patch"}),o=KC(),i=null,a=$C({serviceInstanceId:e.serviceInstanceId,session:n,commandSystemOptions:{onOperationSettled:m=>o.recordOperation(m)}}),s=[],c=new Map,d=new Map,u=new Map,l=r.persistence?{...r.persistence}:null;try{s.push(Uk({host:a,listAssets:async m=>d8(t,m),sceneAssembly:u8(e.materialShaderDefinitions),materialShaderDefinitions:e.materialShaderDefinitions})),s.push(m8(a)),s.push(w8(a,(m,p)=>i?i(m,p):Promise.resolve(ve(p==="renderer"?"renderer.sessionUnavailable":"view.sessionUnavailable",`Command requires a Browser attachment: ${m.commandId}`)))),s.push(S8(a,e,()=>t,c,d,u,m=>{l=m},e.onDocumentCommitted))}catch(m){for(let p of s.splice(0).reverse())p();throw a.dispose(),await a.drain(),m}return Object.freeze({host:a,readTraces:o.read,recordOperation:o.recordOperation,readDocumentExport(m){let p=c.get(m);if(!p)return null;let{document:f,performanceProfile:g,...S}=p;return S},discardDocumentExport(m){return d.delete(m),c.delete(m)},readAuthoringPersistence(){return l?{...l}:null},bindBrowserCommandForwarder(m){if(i)throw new Error("Browser command forwarder is already bound.");i=m;let p=!0;return()=>{p&&(p=!1,i===m&&(i=null))}},rebindViteServer(m){t=ff(m)},rebindProjectAuthoringBackend(m){t=m},async dispose(){i=null,c.clear(),d.clear(),u.clear();for(let m of s.splice(0).reverse())m();a.dispose(),await a.drain(),o.clear()}})}async function c8(e){if(e.recovery){let n=on(e,e.recovery.workingDocument),o=on(e,e.recovery.savedDocument);return{workingDocument:n,savedDocument:o,documentRevision:Jk(e.recovery.documentRevision,"documentRevision"),documentStructureRevision:Jk(e.recovery.documentStructureRevision,"documentStructureRevision"),...e.recovery.persistence?{persistence:{...e.recovery.persistence}}:{}}}let t=e.backend??(e.server?ff(e.server):null);if(t){let n=await t.loadEditorScene(),o=on(e,ME(n));return{workingDocument:o,savedDocument:o,documentRevision:0,documentStructureRevision:0,...ml(n)?{persistence:ml(n)}:{}}}let r=e.project?.source.editorScene??"src/config/editor-scene.json";try{let n=await o8(i8.resolve(e.projectRoot,r),"utf8"),o=on(e,JSON.parse(n));return{workingDocument:o,savedDocument:o,documentRevision:0,documentStructureRevision:0}}catch(n){if(e.project)throw n;let o=on(e,{schemaVersion:1,assets:[],scene:{gameObjects:[]}});return{workingDocument:o,savedDocument:o,documentRevision:0,documentStructureRevision:0}}}function Jk(e,t){if(!Number.isSafeInteger(e)||e<0)throw new Error(`Editor Service recovery ${t} must be a non-negative safe integer.`);return e}function on(e,t){let r=pl(t),n=e.prepareAuthoringDocument?.(r)??r;return pl(n,!1)}function bE(e,t){let r=e.preparePersistedDocument?e.preparePersistedDocument(structuredClone(t)):t;return pl(r,!1)}function ME(e){return Object.prototype.hasOwnProperty.call(e,"editorScene")?e.editorScene:e}function pl(e,t=!0){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Project Editor Service expected the editor scene to be a JSON object.");let r=t?structuredClone(e):e,n=r.scene;if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Project Editor Service expected scene.gameObjects.");let o=n.gameObjects;if(!Array.isArray(o))throw new Error("Project Editor Service expected scene.gameObjects to be an array.");return Array.isArray(r.assets)?r:{...r,assets:[]}}async function d8(e,t){let r=e?await e.listEditorAssets():t.assets;return(Array.isArray(r)?r:[]).map((n,o)=>l8(n,o)).filter(n=>n!==null)}function l8(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e,n=Re(r.assetId)??Re(r.id);return n?{...r,id:Re(r.id)??n,assetId:n,type:Re(r.type)??"glb",kind:Re(r.kind)??"model",displayName:Re(r.displayName)??Re(r.label)??n,origin:Re(r.origin)??"project",dedupeKey:Re(r.dedupeKey)??`project:${n}:${t}`,placeable:ha(r)}:null}function u8(e){return{getHierarchyItems(t){return t.scene.gameObjects.map(r=>({id:r.id,label:r.name??r.id,...r.parentId?{parentId:r.parentId}:{}}))},getInspectorObject(t,r){let n=t.scene.gameObjects.find(a=>a.id===r);if(!n)return null;let o=Pt(n),i=Kb({document:t,gameObject:n,nodeKind:o});return i.push(...bk.createArtistMaterialInspectorSectionsWithCachedUsage(t,n,o,{},{createDocumentInspectorProperty:(a,s,c)=>Qd({document:a,nodeKind:s,property:c})})),{targetIds:[n.id],activeId:n.id,label:n.name??n.id,document:t,selection:{targetIds:[n.id],activeId:n.id,scopeType:"scene",targetKind:o,document:t},sections:i}},createCreatePrimitivePatch(t,r){let n=G8(t,`primitive_${r.shape}`),o=r.parentId??Sa(t),i=j8(n,r.name??F8(r.shape),o);return i.kind="primitive",i.primitive={shape:r.shape},{patch:{kind:"replace",document:{...t,scene:{...t.scene,gameObjects:[...t.scene.gameObjects,i]}}},label:`Create ${r.shape}`,changedIds:[n],createdId:n,selectId:n}},createDeleteSubtreePatch(t,r){if(r.ids.some(li))return null;let n=Kp(t,r.ids);if(n.size===0||t.scene.gameObjects.some(a=>n.has(a.id)&&Lb(a)))return null;let o=[...n];return{patch:{kind:"replace",document:{...t,scene:{...t.scene,gameObjects:t.scene.gameObjects.filter(a=>!n.has(a.id))}}},label:`Delete ${o.length} object(s)`,changedIds:o,deletedIds:o}},patchGameObjectField(t,r,n,o){return tE(t,r,n,o)},patchGameObjectPropertiesMany(t,r){return rE(t,r)},addAssetLibraryItemToDocument(t,r,n){return Yb(t,r,n)},createSceneMaterialBindingPatch(t){let r=t.document;if(t.targets.length===0||t.materialAssetId&&!fe(r,t.materialAssetId))return null;let n=new Set,o=r;for(let a of t.targets){let s=`${a.objectId}\0${a.path}`,c=o.scene.gameObjects.find(l=>l.id===a.objectId);if(n.has(s)||!c||!ai(a.path))return null;n.add(s);let d=kn(o,c),u=Ar(a.path,"materialAssetId");if(u&&!d.some(l=>l.slotId===u)||!u&&d.length>0)return null;o=kv(o,a.objectId,a.path,t.materialAssetId)}let i=[...new Set(t.targets.map(a=>a.objectId))];return{patch:{kind:"replace",document:o},label:`${t.materialAssetId?"Set":"Clear"} ${t.targets.length} scene material binding${t.targets.length===1?"":"s"}`,changedIds:i,reprojectIds:i,presentationImpact:Hk(t.document,t.targets,t.materialAssetId)}},createPrefabMaterialBindingPatch(t){let r=t.document;if(t.targets.length===0||t.materialAssetId&&!fe(r,t.materialAssetId)||new Set(t.targets.map(d=>d.prefabAssetId)).size!==1)return null;let o=t.targets[0].prefabAssetId,i=ci(t.document,o);if(!i?.prefab)return null;let a=structuredClone(i),s=new Set;for(let d of t.targets){let u=`${d.nodeId??""}\0${d.path}`,l=`prefab.${d.path}`,m=Ik(l,t.materialAssetId);if(s.has(u)||!ai(d.path)||!Tk(l,m))return null;if(s.add(u),!d.nodeId){a=Xd(a,l,m);continue}let p=a.prefab?.nodes?.findIndex(x=>x.id===d.nodeId)??-1;if(p<0||!a.prefab?.nodes)return null;let f=a.prefab.nodes[p],g={...a,prefab:{...a.prefab,overrides:structuredClone(f.overrides)}},S=Xd(g,l,m),P={...f,...S.prefab?.overrides?{overrides:structuredClone(S.prefab.overrides)}:{}};S.prefab?.overrides||delete P.overrides,a.prefab.nodes=[...a.prefab.nodes],a.prefab.nodes[p]=P}return{patch:{kind:"replace",document:Ak(t.document,o,a)},label:`${t.materialAssetId?"Set":"Clear"} ${t.targets.length} prefab material binding${t.targets.length===1?"":"s"}`,changedId:o,changedIds:[o],reprojectIds:[o],presentationImpact:Kk(t.document,t.targets,t.materialAssetId)}},createMaterialPropertiesPatch(t){let r=t.document,n=fe(r,t.materialAssetId);if(t.changes.length===0||!n)return null;let o=new Set,i=r;for(let s of t.changes){let c=eE(s.path,s.value,n.shaderId,e);if(!s.path.startsWith("properties.")||o.has(s.path)||!c.ok)return null;o.add(s.path),i=ef(i,t.materialAssetId,s.path,c.value,e)}let a=Yd(r,t.materialAssetId);return{patch:{kind:"replace",document:i},label:`Patch material ${t.materialAssetId} properties`,changedIds:a,reprojectIds:a}},createMaterialAssetCreatePatch(t){let r=t.document,n=Qb(r,t.definition,t.name),o=structuredClone(r);return o.scene.materialAssets=[...o.scene.materialAssets??[],n],{patch:{kind:"replace",document:o},label:`Create material ${n.name}`,changedIds:[],createdId:n.id}},createMaterialAssetRenamePatch(t){let r=t.document,n=fe(r,t.materialAssetId);if(!n||tf(n))return null;let o=eE("name",t.name,n.shaderId,e);return o.ok?{patch:{kind:"replace",document:ef(r,t.materialAssetId,"name",o.value,e)},label:`Rename material ${n.name} to ${String(o.value)}`,changedIds:Yd(r,t.materialAssetId),presentationImpact:{inspector:["material"],materials:{assetIds:[t.materialAssetId]}}}:null},createMaterialAssetSetShaderPatch(t){let r=t.document,n=fe(r,t.materialAssetId);if(!n||tf(n))return null;let o=iE(n,t.definition),i=structuredClone(r);i.scene.materialAssets=(i.scene.materialAssets??[]).map(s=>s.id===t.materialAssetId?o.materialAsset:s);let a=Yd(r,t.materialAssetId);return{patch:{kind:"replace",document:i},label:`Set material ${n.name} shader to ${t.definition.displayName}`,changedIds:a,reprojectIds:a,presentationImpact:{inspector:["material"],materials:{assetIds:[t.materialAssetId]}},preservedPaths:o.preservedPaths,resetPaths:o.resetPaths}}}}function m8(e){let t=[],r=(n,o)=>t.push(e.registerCommand({manifest:p8(n),handler:o}));try{r(y.PREFAB_ASSET_RENAME,(n,o)=>{let i=Re(n.assetId);if(!i)return ve("prefab.assetIdRequired","Headless prefab rename requires assetId.");let a=nn(o),s=ci(a,i);if(!s)return ve("prefab.notFound",`Prefab asset was not found: ${i}`);let c=bw(a,i,n.displayName),d=RE(c);return d||(DE(o,a,c,`Rename prefab ${i}`),{ok:!0,output:{assetId:i,previousDisplayName:s.displayName??s.id,displayName:c.prefabAsset.displayName??c.prefabAsset.id,stageActive:!1,renamed:c.changed}})}),r(y.PREFAB_NODE_CREATE_FROM_ASSET,(n,o)=>{let i=nn(o),a=hf(i,{assetId:n.prefabAssetId}),s=Re(n.assetId),c=s?i.assets.find(d=>d.id===s):null;return!a||!c?ve("prefab.assetNotFound","Headless prefab node creation requires prefabAssetId and a valid assetId."):Ys(o,i,a.id,Iw(a,c,{...Re(n.parentNodeId)?{parentId:Re(n.parentNodeId)}:{},...Re(n.name)?{name:Re(n.name)}:{},...Re(n.sourceNodePath)?{sourceNodePath:Re(n.sourceNodePath)}:{},...Js(n)?{transform:Js(n)}:{}}),"Create prefab node from asset")}),r(y.PREFAB_NODE_CREATE_GROUP,(n,o)=>{let i=nn(o),a=hf(i,{assetId:n.prefabAssetId});return a?Ys(o,i,a.id,Pw(a,{...Re(n.parentNodeId)?{parentId:Re(n.parentNodeId)}:{},...Re(n.name)?{name:Re(n.name)}:{},...Js(n)?{transform:Js(n)}:{}}),"Create prefab group"):ve("prefab.assetIdRequired","Headless prefab group creation requires prefabAssetId.")}),r(y.PREFAB_NODE_CREATE_PRIMITIVE,(n,o)=>{let i=nn(o),a=hf(i,{assetId:n.prefabAssetId}),s=Re(n.shape);return!a||!s?ve("prefab.invalidInput","Headless prefab primitive creation requires prefabAssetId and shape."):Ys(o,i,a.id,Tw(a,{shape:s,...Re(n.parentNodeId)?{parentId:Re(n.parentNodeId)}:{},...Re(n.name)?{name:Re(n.name)}:{},...Js(n)?{transform:Js(n)}:{}}),"Create prefab primitive")}),r(y.PREFAB_NODE_SET_TRANSFORM,(n,o)=>{let i=gf(nn(o),n);if(!i.ok)return i.failure;let a=i.node.transform&&i.node.transform.mode!=="matrix"?i.node.transform:g8(),s={type:"Transform",position:Qs(n.position)??a.position,rotation:Qs(n.rotation)??a.rotation,scale:Qs(n.scale)??a.scale??{x:1,y:1,z:1}};return Ys(o,i.document,i.prefab.id,Aw(i.prefab,i.node.id,s),"Set prefab node transform")}),r(y.PREFAB_NODE_REPARENT,(n,o)=>{let i=gf(nn(o),n),a=Re(n.parentNodeId);return i.ok?a?Ys(o,i.document,i.prefab.id,xw(i.prefab,i.node.id,a),"Reparent prefab node"):ve("prefab.parentNotFound","Prefab parentNodeId is required."):i.failure}),r(y.PREFAB_NODE_RENAME,(n,o)=>{let i=gf(nn(o),n);if(!i.ok)return i.failure;let a=i.node.name??i.node.id,s=Ew(i.prefab,i.node.id,n.name),c=RE(s);return c||(DE(o,i.document,s,"Rename prefab node"),{ok:!0,output:{nodeId:i.node.id,previousName:a,name:s.node?.name??a,selectedNodeId:s.selectedNodeId??i.node.id,nodes:Tt(s.prefabAsset).map(OE)}})}),r(y.PREFAB_NODE_DELETE,(n,o)=>{let i=gf(nn(o),n);return i.ok?Ys(o,i.document,i.prefab.id,Mw(i.prefab,i.node.id),"Delete prefab node"):i.failure})}catch(n){for(let o of t.splice(0).reverse())o();throw n}return()=>{for(let n of t.splice(0).reverse())n()}}function p8(e){let t=Ts[e],r=Ld[e],n=Nd[e];if(!t||!r)throw new Error(`Built-in Editor command contract is missing: ${e}`);return{schemaVersion:1,id:e,version:1,title:t.title,...Ps[e]?{description:Ps[e]}:{},target:t.target,access:t.access,stability:t.stability,inputSchema:r.inputSchema,outputSchema:r.outputSchema,requires:{editorReady:!0},effects:{persistence:t.access==="write"?"authoring":"none",undoable:t.access==="write",idempotent:t.access==="read"},...t.target==="authoring"&&t.access==="write"?{transaction:{compatible:!0,sideEffects:"authoring",phase:"mutation"}}:{},presentation:{category:t.category,inputMode:Array.isArray(r.inputSchema.required)&&r.inputSchema.required.length?"schema-form":"none",...n?.aliases?{aliases:n.aliases}:{},...n?.keywords?{keywords:n.keywords}:{},...n?.examples?{examples:n.examples}:{},...n?.shortcut?{shortcut:n.shortcut}:{},...n?.menu?{menu:n.menu}:{}}}}function hf(e,t){let r=Re(t.assetId);return r?ci(e,r):null}function nn(e){return e.session.getState({cloneDocuments:!1}).workingDocument}function gf(e,t){let r=hf(e,t);if(!r)return{ok:!1,failure:ve("prefab.assetIdRequired","Headless prefab node mutation requires assetId.")};let n=Re(t.nodeId),o=n?vp(r,n):null;return o?{ok:!0,document:e,prefab:r,node:o}:{ok:!1,failure:ve("prefab.nodeNotFound",`Prefab node was not found: ${n??""}`)}}function Ys(e,t,r,n,o){let i=RE(n);return i||(DE(e,t,n,o),{ok:!0,output:{stage:f8(n.prefabAsset,e.session.getState({cloneDocuments:!1}).dirty),changed:n.changed,...n.createdNodeId?{createdNodeId:n.createdNodeId}:{},...n.node?.id?{changedNodeId:n.node.id}:{},...n.deletedNodeIds?.length?{deletedNodeIds:n.deletedNodeIds}:{},selectedNodeId:n.selectedNodeId??n.node?.id??null,node:n.node?OE(n.node):null,rootNodeId:ht(n.prefabAsset)??"prefab-root",nodes:Tt(n.prefabAsset).map(OE),status:n.changed?o:`${o}: unchanged`}})}function DE(e,t,r,n){if(!r.changed)return;let o=structuredClone(t),i=o.assets.findIndex(a=>a.id===r.prefabAsset.id);if(i<0)throw new Error(`Prefab asset disappeared during mutation: ${r.prefabAsset.id}`);o.assets[i]=r.prefabAsset,e.dispatch({type:"document.replace",document:o,label:n})}function RE(e){let t=e.diagnostics.find(r=>r.severity==="error");return t?ve(t.code,t.message):null}function f8(e,t){return{assetId:e.id,label:e.displayName??e.id,...e.prefab?.sourceAssetId?{sourceAssetId:e.prefab.sourceAssetId}:{},...e.prefab?.sourceAssetGuid?{sourceAssetGuid:e.prefab.sourceAssetGuid}:{},selectedItemId:null,readonly:!1,dirty:t,documentDirty:t,canSave:t,canDiscard:t}}function OE(e){return{nodeId:e.id,...e.guid?{guid:e.guid}:{},...e.name?{name:e.name}:{},parentNodeId:e.parentId??null,kind:e.kind,...e.transform&&e.transform.mode!=="matrix"?{transform:{position:{...e.transform.position},rotation:{...e.transform.rotation},scale:{...e.transform.scale??{x:1,y:1,z:1}}}}:{},...e.sourceAssetId?{sourceAssetId:e.sourceAssetId}:{},...e.sourceNodePath?{sourceNodePath:e.sourceNodePath}:{},...e.childPrefabId?{childPrefabId:e.childPrefabId}:{},...e.primitive?{primitive:e.primitive}:{},...e.marker?{marker:e.marker}:{},...e.defaults?{defaults:e.defaults}:{},...e.overrides?{overrides:e.overrides}:{},readonly:!1,diagnostics:[]}}function Js(e){let t=Qs(e.position),r=Qs(e.rotation),n=Qs(e.scale);return!t&&!r&&!n?null:{type:"Transform",position:t??{x:0,y:0,z:0},rotation:r??{x:0,y:0,z:0},scale:n??{x:1,y:1,z:1}}}function Qs(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;return typeof t.x=="number"&&typeof t.y=="number"&&typeof t.z=="number"?{x:t.x,y:t.y,z:t.z}:null}function g8(){return{type:"Transform",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}}function S8(e,t,r,n,o,i,a,s){let c=[],d=Ta(e.getSnapshot().document),u=0,l=0,m=(p,f,g)=>c.push(e.registerCommand({manifest:p,handler:f,...g?{expectedRevisionPolicy:g}:{}}));try{m({schemaVersion:1,id:"authoring.proposal.commit",version:1,title:"Commit Browser Authoring Proposal",description:"Commits a Browser-composed document through the project Authoring Host while preserving the originating command identity.",target:"authoring",access:"write",stability:"experimental",requires:{viewAttached:!0},inputSchema:{type:"object",additionalProperties:!1,required:["commandId","inputFingerprint","document"],properties:{commandId:{type:"string",minLength:1},inputFingerprint:{type:"string"},document:{type:"object"}}},outputSchema:{type:"object"},effects:{persistence:"authoring",undoable:!0,idempotent:!1},presentation:{category:"Authoring",inputMode:"schema-form"}},(p,f)=>{if(f.source!=="browser-ui"||f.principal.type!=="human"||!f.clientId)return ve("authoring.proposal.browserRequired","Authoring proposals are accepted only from the authenticated Browser UI.");if(f.intentCommandId!==p.commandId)return ve("authoring.proposal.identityMismatch","Browser authoring proposal identity does not match the invocation intent.");let g=on(t,p.document),{presentationImpact:S,projectionImpact:P}=Xk(nn(f),g,p.commandId);f.dispatch({type:"document.patch",patch:{kind:"replace",document:g},label:p.commandId,...S?{presentationImpact:S}:{},projectionImpact:P},{assumeDocumentChanged:!0,assumeDirty:!0,clonePatchInput:!1,cloneResultDocument:!1});let x=f.session.getState({cloneDocuments:!1});return{ok:!0,output:{intentCommandId:p.commandId,inputFingerprint:p.inputFingerprint,documentRevision:x.documentRevision,dirty:x.dirty,canUndo:x.canUndo,canRedo:x.canRedo,...S?{presentationImpact:structuredClone(S)}:{},projectionImpact:structuredClone(P),history:{entries:x.history.entries.slice(0,a8).map(T=>({id:T.id,label:T.label,commandType:T.commandType,createdAt:T.createdAt}))}}}}),m(N8(),async()=>{let p=r();if(!p)return ve("document.persistenceUnavailable","Project authoring persistence is unavailable.");try{let f=await p.loadEditorScene(),g=pl(ME(f)),S=Ta(g);return D8(d,S)?{ok:!0,output:Xs(f)}:ve("authoring_source_snapshot_mismatch","The persisted companion state no longer matches the active authoring source snapshot.",{activeAuthoringSource:d?{...d}:null,loadedAuthoringSource:S?{...S}:null})}catch(f){return Io(f)}}),m({...Sf("runtimeDebug.commitAndSave","Commit and Save Runtime Debug Authoring",k8()),stability:"experimental",description:"Persists one Runtime Debug Panel scene proposal through the Editor Service authority.",effects:{persistence:"filesystem",undoable:!0,idempotent:!1}},async(p,f)=>{if(f.source!=="runtime-debug-panel"||f.principal.type!=="human"||f.surface!=="runtime-debug-panel")return ve("runtimeDebug.trustedIngressRequired","Runtime Debug authoring requires the trusted Runtime Debug ingress.");if(f.intentCommandId!==p.commandId)return ve("runtimeDebug.identityMismatch","Runtime Debug authoring identity does not match the invocation intent.");if(!p.commandId.startsWith("runtime-debug."))return ve("runtimeDebug.identityInvalid","Runtime Debug authoring command identity must use the runtime-debug namespace.");let g=r();if(!g)return ve("document.persistenceUnavailable","Project authoring persistence is unavailable.");if(p.shadowMapExperimentConfig)try{Ii(p.shadowMapExperimentConfig)}catch(te){return Io(te)}let S=on(t,p.document),{presentationImpact:P,projectionImpact:x}=Xk(nn(f),S,p.commandId),T=bE(t,TE(S,d)),R=cl(),A;try{A=await g.saveEditorScene({saveMode:"local-commit-save",rawEditorScene:T,body:PE(d,p),signal:f.signal})}catch(te){return Io(te)}let E,C;try{E=Xs(A),C=on(t,AE(A))}catch(te){return Io(te)}f.dispatch({type:"document.patch",patch:{kind:"replace",document:C},label:p.commandId,...P?{presentationImpact:P}:{},projectionImpact:x},{assumeDocumentChanged:!0,assumeDirty:!0,clonePatchInput:!1,cloneResultDocument:!1}),d=Ta(C)??d,f.session.markSaved(C,void 0,{structureChanged:!1,cloneDocumentInput:!1,cloneResultDocuments:!1});let b=ml(A);b&&a(b);let k=f.session.getState({cloneDocuments:!1}),O=dl(ll(A.performanceProfile),R.snapshot()),$=ul();try{s?.({transactionId:$,documentRevision:k.documentRevision,dirty:k.dirty,...typeof A.version=="number"?{version:A.version}:{},...typeof A.updatedAt=="string"?{updatedAt:A.updatedAt}:{},...typeof A.sceneUrl=="string"?{sceneUrl:A.sceneUrl}:{}})}catch{t.logger?.warn?.("[FPS Editor] Runtime Debug \u4FDD\u5B58\u540E\u7684 Runtime \u901A\u77E5\u5931\u8D25\uFF0C\u4FDD\u5B58\u4E8B\u52A1\u5DF2\u6210\u529F\u3002")}return{ok:!0,output:{...xE(A,k.documentRevision,E,O),transactionId:$,intentCommandId:p.commandId,inputFingerprint:p.inputFingerprint,projectionImpact:structuredClone(x),...P?{presentationImpact:structuredClone(P)}:{}}}}),m(Sf("document.save","Save Project Document",CE()),async(p,f)=>{let g=r();if(!g)return ve("document.persistenceUnavailable","Project authoring persistence is unavailable.");let S=cl(),P=S.measure("prepare",()=>bE(t,TE(nn(f),d))),x;try{x=await g.saveEditorScene({saveMode:"local-commit-save",rawEditorScene:P,body:PE(d,p),signal:f.signal})}catch(C){return Io(C)}let T;try{T=Xs(x)}catch(C){return Io(C)}let R=S.measure("checkpoint",()=>{let C=AE(x),b=on(t,C);d=Ta(C)??d,f.session.markSaved(b,void 0,{structureChanged:!1,cloneDocumentInput:!1,cloneResultDocuments:!1});let k=ml(x);return k&&a(k),f.session.getState({cloneDocuments:!1})}),A=dl(ll(x.performanceProfile),S.snapshot()),E=ul();try{s?.({transactionId:E,documentRevision:R.documentRevision,dirty:R.dirty,...typeof x.version=="number"?{version:x.version}:{},...typeof x.updatedAt=="string"?{updatedAt:x.updatedAt}:{},...typeof x.sceneUrl=="string"?{sceneUrl:x.sceneUrl}:{}})}catch{t.logger?.warn?.("[FPS Editor] document.save \u540E\u7684 Runtime \u901A\u77E5\u5931\u8D25\uFF0C\u4FDD\u5B58\u4E8B\u52A1\u5DF2\u6210\u529F\u3002")}return{ok:!0,output:{...xE(x,R.documentRevision,T,A),transactionId:E}}}),m(Sf("document.export","Save Project Export",CE()),async(p,f)=>{let g=r();if(!g)return ve("document.persistenceUnavailable","Project authoring persistence is unavailable.");let S=cl(),{state:P,document:x}=S.measure("prepare",()=>{let O=f.session.getState({cloneDocuments:!1});return{state:O,document:bE(t,TE(O.workingDocument,d))}}),T=O8(f.signal,p.deadlineAt);if(T.deadlineElapsed)return T.dispose(),ve("document_export_timeout","Document export lifecycle deadline elapsed before persistence started.");let R;try{R=await g.saveEditorScene({saveMode:"local-commit-save",rawEditorScene:x,body:PE(d,p),signal:T.signal,...p.deadlineAt===void 0?{}:{deadlineAt:p.deadlineAt}})}catch(O){return T.deadlineElapsed?ve("document_export_timeout","Document export lifecycle deadline elapsed during persistence."):Io(O)}finally{T.dispose()}let A;try{A=Xs(R)}catch(O){return Io(O)}let E=S.measure("prepare",()=>{let O=AE(R),$=on(t,O);return d=Ta(O)??d,$}),C=ul(),b=++u,k=dl(ll(R.performanceProfile),S.snapshot());for(n.set(C,{transactionId:C,documentRevision:P.documentRevision,document:E,sceneJsonText:C8(R),...typeof R.expectedVersion=="number"?{expectedVersion:R.expectedVersion}:{},...typeof R.version=="number"?{version:R.version}:{},...typeof R.updatedAt=="string"?{updatedAt:R.updatedAt}:{},...typeof R.sceneUrl=="string"?{sceneUrl:R.sceneUrl}:{},...k?{performanceProfile:k}:{}}),o.set(C,b);n.size>s8;){let O=n.keys().next().value;n.delete(O),o.delete(O)}return{ok:!0,output:{...xE(R,P.documentRevision,A,k),transactionId:C}}}),m(_8(),async(p,f)=>{let g=r();if(!g)return ve("document.persistenceUnavailable","Project authoring persistence is unavailable.");let S,P,x;try{S=await g.loadEditorScene(),P=on(t,ME(S)),x=Xs(S)}catch(A){return Io(A)}let T=Ta(P);if(d&&(!T||T.sourceId!==d.sourceId||T.sourceType!==d.sourceType))return ve("authoring_source_identity_mismatch","The persisted authoring source identity changed and cannot replace the active document.");f.session.reset(P),d=T??d,n.clear(),o.clear();let R=f.session.getState({cloneDocuments:!1});return{ok:!0,output:{documentRevision:R.documentRevision,dirty:R.dirty,...T?{sourceId:T.sourceId,sourceType:T.sourceType,authoringSourceRevision:T.revision}:{},...x}}}),m(Sf("document.commit","Commit Saved Checkpoint",{type:"object",additionalProperties:!1,required:["transactionId"],properties:{transactionId:{type:"string",minLength:1}}}),(p,f)=>{let g=i.get(p.transactionId);if(g)return{ok:!0,output:structuredClone(g.output)};let S=n.get(p.transactionId),P=o.get(p.transactionId);if(!S)return ve("document.commitUnavailable","\u627E\u4E0D\u5230\u53EF\u63D0\u4EA4\u7684\u5BFC\u51FA\u4E8B\u52A1\uFF0C\u8BE5\u4E8B\u52A1\u53EF\u80FD\u5DF2\u8FC7\u671F\u6216\u5DF2\u88AB\u5E9F\u5F03\u3002");if(P===void 0)return ve("document.commitUnavailable","\u5BFC\u51FA\u4E8B\u52A1\u7F3A\u5C11\u6301\u4E45\u5316\u987A\u5E8F\uFF0C\u65E0\u6CD5\u5B89\u5168\u63D0\u4EA4\u3002");if(f.expectedRevision?.document!==S.documentRevision)return ve("document.commitRevisionMismatch",`\u5F85\u63D0\u4EA4\u5BFC\u51FA\u7684\u6587\u6863\u7248\u672C ${S.documentRevision} \u4E0E\u671F\u671B\u7248\u672C ${String(f.expectedRevision?.document)} \u4E0D\u4E00\u81F4\u3002`);let x=P>l,T=cl();x&&T.measure("checkpoint",()=>{f.session.getState({cloneDocuments:!1}).documentRevision===S.documentRevision?f.session.markSaved(S.document,void 0,{structureChanged:!1,cloneDocumentInput:!1,cloneResultDocuments:!1}):f.session.markPersistedCheckpoint(S.document,void 0,{cloneDocumentInput:!1,cloneResultDocuments:!1}),l=P}),n.delete(p.transactionId),o.delete(p.transactionId);let R=f.session.getState({cloneDocuments:!1}),A=dl(S.performanceProfile,x?T.snapshot():null),E={transactionId:p.transactionId,preparedRevision:S.documentRevision,documentRevision:R.documentRevision,dirty:R.dirty,...A?{performanceProfile:A}:{}};if(i.set(p.transactionId,{persistenceOrder:P,output:structuredClone(E)}),x){let C=ml(S);C&&a(C);try{s?.({transactionId:p.transactionId,documentRevision:R.documentRevision,dirty:R.dirty,...typeof S.version=="number"?{version:S.version}:{},...typeof S.updatedAt=="string"?{updatedAt:S.updatedAt}:{},...typeof S.sceneUrl=="string"?{sceneUrl:S.sceneUrl}:{}})}catch{t.logger?.warn?.("[FPS Editor] document.commit \u540E\u7684 Runtime \u901A\u77E5\u5931\u8D25\uFF0C\u4FDD\u5B58\u4E8B\u52A1\u5DF2\u6210\u529F\u3002")}}return{ok:!0,output:E}},"handler-validated")}catch(p){for(let f of c.splice(0).reverse())f();throw p}return()=>{for(let p of c.splice(0).reverse())p()}}function Xk(e,t,r){let n=h8(e,t),o=n?null:y8(e,t),i=n||o?null:b8(e,t),a=n||o||i?null:E8(e,t,r),s=n?{hierarchy:{labelIds:n},inspector:["summary"]}:i?.presentationImpact??a?.presentationImpact,c=n?{type:"incremental",syncMetadataIds:n}:o?{type:"incremental",syncTransformIds:o}:i?.projectionImpact??a?.projectionImpact??{type:"rebuild",reason:"project-proposal-full"};return{...s?{presentationImpact:s}:{},projectionImpact:c}}function h8(e,t){let r=e.scene.gameObjects,n=t.scene.gameObjects;if(r.length!==n.length||!vE(e,t))return null;let o=[];for(let i=0;i<r.length;i+=1){let a=r[i],s=n[i];if(a.id!==s.id)return null;if(a.name===s.name){if(JSON.stringify(a)!==JSON.stringify(s))return null;continue}let{name:c,...d}=a,{name:u,...l}=s;if(JSON.stringify(d)!==JSON.stringify(l))return null;o.push(a.id)}return o.length>0?o:null}function y8(e,t){let r=e.scene.gameObjects,n=t.scene.gameObjects;if(r.length!==n.length||!vE(e,t))return null;let o=[];for(let i=0;i<r.length;i+=1){let a=r[i],s=n[i];if(a.id!==s.id)return null;if(JSON.stringify(a)===JSON.stringify(s))continue;let c={...a,components:(Array.isArray(a.components)?a.components:[]).filter(u=>u.type!=="Transform")},d={...s,components:(Array.isArray(s.components)?s.components:[]).filter(u=>u.type!=="Transform")};if(JSON.stringify(c)!==JSON.stringify(d))return null;o.push(a.id)}return o.length>0?o:null}function b8(e,t){let r=tn({...e,assets:e.assets??[],scene:{...e.scene,materialAssets:e.scene.materialAssets??[],gameObjects:e.scene.gameObjects.map(d=>({...d,components:d.components??[]}))}}),n=tn({...t,assets:t.assets??[],scene:{...t.scene,materialAssets:t.scene.materialAssets??[],gameObjects:t.scene.gameObjects.map(d=>({...d,components:d.components??[]}))}}),o=new Map(r.map(d=>[Qk(d),d])),i=new Map(n.map(d=>[Qk(d),d])),a=[...new Set([...o.keys(),...i.keys()])].filter(d=>o.get(d)?.materialAssetId!==i.get(d)?.materialAssetId);if(a.length===0||JSON.stringify(Zk(e))!==JSON.stringify(Zk(t)))return null;let s=new Set,c=new Set;for(let d of a)for(let u of[o.get(d),i.get(d)])u&&(s.add(u.materialAssetId),c.add(u.scope==="scene"?u.gameObjectId:u.prefabAssetId??u.gameObjectId));return{projectionImpact:{type:"incremental",reprojectIds:[...c]},presentationImpact:{inspector:["material"],materials:{assetIds:[...s]}}}}function Qk(e){return[e.scope,e.scope==="scene"?e.gameObjectId:e.prefabAssetId??"",e.prefabNodeId??"",e.bindingPath].join("\0")}function Zk(e){let t=structuredClone(e);for(let r of t.scene.gameObjects)EE(r);for(let r of t.assets??[]){let n=r.prefab;if(n){EE(n);for(let o of n.nodes??[])EE(o)}}return t}function EE(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r=t.overrides;!r||typeof r!="object"||Array.isArray(r)||(delete r.materialBinding,delete r.materialSlotBindings,Object.keys(r).length===0&&delete t.overrides)}function E8(e,t,r){if(!vE(e,t))return null;let n=I8(r)?T8(e,t):null;if(n)return{projectionImpact:{type:"incremental",createdNodeIds:n},presentationImpact:{hierarchy:"full",inspector:"full"}};let o=r==="hierarchy.node.delete"?P8(e,t):null;if(o)return{projectionImpact:{type:"incremental",deletedNodeIds:o},presentationImpact:{hierarchy:"full",inspector:"full"}};let i=r==="hierarchy.node.reparent"?A8(e,t):null;return i?{projectionImpact:{type:"incremental",syncTransformIds:i},presentationImpact:{hierarchy:"full",inspector:["transform"]}}:null}function I8(e){return e==="hierarchy.node.duplicate"||e==="hierarchy.clipboard.paste"||e==="hierarchy.selection.group"||/(?:^|[.:-])create(?:[.:-]|$)/.test(e)}function T8(e,t){let r=e.scene.gameObjects,n=t.scene.gameObjects;if(n.length<=r.length)return null;let o=Zs(r),i=Zs(n);if(!o||!i||!wE(i))return null;for(let c of r){let d=i.get(c.id);if(!d||JSON.stringify(c)!==JSON.stringify(d))return null}let a=n.filter(c=>o.has(c.id)).map(c=>c.id);if(a.length!==r.length||a.some((c,d)=>r[d]?.id!==c))return null;let s=n.filter(c=>!o.has(c.id)).map(c=>c.id);return s.length>0?s:null}function P8(e,t){let r=e.scene.gameObjects,n=t.scene.gameObjects;if(n.length>=r.length)return null;let o=Zs(r),i=Zs(n);if(!o||!i||!wE(i))return null;let a=[];for(let c of r){let d=i.get(c.id);if(!d){a.push(c.id);continue}if(JSON.stringify(c)!==JSON.stringify(d))return null}let s=r.filter(c=>i.has(c.id)).map(c=>c.id);return s.length!==n.length||s.some((c,d)=>n[d]?.id!==c)?null:a.length>0?a:null}function A8(e,t){let r=e.scene.gameObjects,n=t.scene.gameObjects;if(r.length!==n.length)return null;let o=Zs(r),i=Zs(n);if(!o||!i||o.size!==i.size||!wE(i))return null;let a=[];for(let s of r){let c=i.get(s.id);if(!c)return null;if(JSON.stringify(s)===JSON.stringify(c))continue;let d=s.parentId??null,u=c.parentId??null;if(d===u)return null;let{parentId:l,components:m,...p}=s,{parentId:f,components:g,...S}=c,P={...p,components:(Array.isArray(m)?m:[]).filter(T=>T.type!=="Transform")},x={...S,components:(Array.isArray(g)?g:[]).filter(T=>T.type!=="Transform")};if(JSON.stringify(P)!==JSON.stringify(x))return null;a.push(s.id)}return a.length>0&&x8(r,n,a)?a:null}function Zs(e){let t=new Map;for(let r of e){if(!r.id||t.has(r.id))return null;t.set(r.id,r)}return t}function wE(e){for(let t of e.values()){let r=new Set([t.id]),n=t.parentId??null;for(;n;){let o=e.get(n);if(!o||r.has(n))return!1;r.add(n),n=o.parentId??null}}return!0}function x8(e,t,r){let n=r_(e,r);if(!n)return!1;let o=e.filter(p=>n.has(p.id)).map(p=>p.id),i=t.filter(p=>n.has(p.id)).map(p=>p.id),a=e.filter(p=>!n.has(p.id)).map(p=>p.id),s=t.filter(p=>!n.has(p.id)).map(p=>p.id),c=new Map(t.map(p=>[p.id,p])),d=new Set(r.map(p=>c.get(p)?.parentId??null));if(d.size!==1)return!1;let[u]=d;if(u&&n.has(u))return!1;let l=M8(e,a,u??null);if(l===null)return!1;let m=[...a.slice(0,l),...o,...a.slice(l)];return IE(o,i)&&IE(a,s)&&IE(m,t.map(p=>p.id))}function M8(e,t,r){if(!r)return t.length;let n=r_(e,[r]);if(!n)return null;let o=t.indexOf(r);if(o<0)return null;for(let i=o+1;i<t.length&&n.has(t[i]);i+=1)o=i;return t.slice(o+1).some(i=>n.has(i))?null:o+1}function r_(e,t){let r=new Map,n=new Set(e.map(a=>a.id));if(n.size!==e.length||t.some(a=>!n.has(a)))return null;for(let a of e){let s=a.parentId??null;if(!s)continue;let c=r.get(s)??[];c.push(a.id),r.set(s,c)}let o=new Set,i=[...t];for(;i.length>0;){let a=i.pop();o.has(a)||(o.add(a),i.push(...r.get(a)??[]))}return o}function IE(e,t){return e.length===t.length&&e.every((r,n)=>t[n]===r)}function vE(e,t){let r={...e,assets:e.assets.map(e_),scene:{...e.scene,gameObjects:[]}},n={...t,assets:t.assets.map(e_),scene:{...t.scene,gameObjects:[]}};return JSON.stringify(r)===JSON.stringify(n)}function e_(e){return e.type!=="glb"?e:{id:e.id,...e.guid?{guid:e.guid}:{},type:"glb"}}function Ta(e){let t=e&&typeof e=="object"&&!Array.isArray(e)?e:null,r=t?.meta&&typeof t.meta=="object"&&!Array.isArray(t.meta)?t.meta:null,n=r?.authoringSource&&typeof r.authoringSource=="object"&&!Array.isArray(r.authoringSource)?r.authoringSource:null;return typeof n?.sourceId=="string"&&n.sourceId.trim()&&typeof n.sourceType=="string"&&n.sourceType.trim()&&typeof n.revision=="number"&&Number.isFinite(n.revision)?{sourceId:n.sourceId,sourceType:n.sourceType,revision:n.revision}:null}function D8(e,t){return e!==null&&t!==null&&t.sourceId===e.sourceId&&t.sourceType===e.sourceType&&t.revision===e.revision}function TE(e,t){if(t===null)return e;let r=Ta(e);if(r?.sourceId===t.sourceId&&r.sourceType===t.sourceType&&r.revision===t.revision)return e;let n=e.meta&&typeof e.meta=="object"&&!Array.isArray(e.meta)?e.meta:{};return{...e,meta:{...n,authoringSource:{...t}}}}function R8(e){return e===null?{}:{expectedAuthoringSourceRevision:e.revision}}function PE(e,t){return{...R8(e),...t.companionConfigs?{companionConfigs:structuredClone(t.companionConfigs)}:{},...t.shadowMapExperimentConfig?{shadowMapExperimentConfig:structuredClone(t.shadowMapExperimentConfig)}:{},...t.authoringSourceConflictResolution?{authoringSourceConflictResolution:t.authoringSourceConflictResolution}:{}}}function O8(e,t){let r=new AbortController,n=t!==void 0&&Date.now()>=t,o=()=>r.abort(e.reason);e.addEventListener("abort",o,{once:!0}),e.aborted&&o();let i=null;return n?r.abort():t!==void 0&&(i=setTimeout(()=>{n=!0,r.abort()},Math.max(1,t-Date.now())),i.unref?.()),{signal:r.signal,get deadlineElapsed(){return n},dispose(){i&&clearTimeout(i),e.removeEventListener("abort",o)}}}function AE(e){if(!e.editorScene)throw new Error("Project authoring backend did not return the prepared editor scene.");return pl(e.editorScene,!1)}function C8(e){if(typeof e.sceneJsonText=="string"&&e.sceneJsonText.trim())return e.sceneJsonText;throw new Error("Project authoring backend did not return the prepared runtime scene artifact.")}function w8(e,t){let r=[],n=o=>r.push(e.registerCommand({manifest:o,handler:(i,a)=>t(a,o.target)}));try{for(let o of Object.keys(Ts)){let i=My[o];i!=="view"&&i!=="renderer"||n(v8(o,i))}}catch(o){for(let i of r.splice(0).reverse())i();throw o}return()=>{for(let o of r.splice(0).reverse())o()}}function v8(e,t){let r=Ld[e],n=Ts[e];if(!n)throw new Error(`Editor command metadata is missing: ${e}`);let o=n.access,i=Nd[e];return{schemaVersion:1,id:e,version:1,title:n.title,target:t,access:o,stability:n.stability,inputSchema:r?.inputSchema??{type:"object"},outputSchema:r?.outputSchema??{type:"object"},requires:{editorReady:!0,...t==="view"?{viewAttached:!0}:{rendererAttached:!0}},effects:{persistence:o==="read"?"none":"view",undoable:!1,idempotent:o==="read"},presentation:{category:n.category,inputMode:Array.isArray(r?.inputSchema.required)&&r.inputSchema.required.length?"schema-form":"none",...i?.aliases?{aliases:i.aliases}:{},...i?.keywords?{keywords:i.keywords}:{},...i?.examples?{examples:i.examples}:{},...i?.shortcut?{shortcut:i.shortcut}:{},...i?.menu?{menu:i.menu}:{}}}}function Sf(e,t,r={type:"object",additionalProperties:!1}){return{schemaVersion:1,id:e,version:1,title:t,target:"authoring",access:"write",stability:"stable",inputSchema:r,outputSchema:{type:"object"},effects:{persistence:"filesystem",undoable:!1,idempotent:!1},presentation:{category:"Document",inputMode:Array.isArray(r.required)&&r.required.length?"schema-form":"none",...e==="document.save"?{shortcut:"Mod+S",menu:{path:["File","Save"]}}:{}}}}function CE(){return{type:"object",additionalProperties:!1,properties:{authoringSourceConflictResolution:{type:"object",additionalProperties:!1,required:["strategy","expectedPersistedRevision"],properties:{strategy:{const:"overwrite"},expectedPersistedRevision:{type:"number"}}},companionConfigs:{type:"object",additionalProperties:{anyOf:[{type:"object"},{type:"null"}]}},shadowMapExperimentConfig:{type:"object"},deadlineAt:{type:"number",minimum:0}}}}function k8(){let e=CE();return{...e,required:["commandId","inputFingerprint","document"],properties:{...e.properties,commandId:{type:"string",pattern:"^runtime-debug\\."},inputFingerprint:{type:"string"},document:{type:"object"}}}}function _8(){return{schemaVersion:1,id:"document.reload",version:1,title:"Reload Project Document",description:"Discards the active working document and reloads the latest canonical authoring source from disk.",target:"authoring",access:"write",stability:"stable",inputSchema:{type:"object",additionalProperties:!1,required:["discardUnsavedChanges"],properties:{discardUnsavedChanges:{const:!0}}},outputSchema:{type:"object"},effects:{persistence:"none",undoable:!1,idempotent:!1},presentation:{category:"Document",inputMode:"schema-form",aliases:["reload latest","reload from disk"],keywords:["document","reload","disk","conflict","recovery"]}}}function N8(){return{schemaVersion:1,id:"document.companionState.get",version:1,title:"Get Project Document Companion State",description:"Reads the canonical Rendering and related companion authoring state persisted beside the scene document.",target:"authoring",access:"read",stability:"stable",inputSchema:{type:"object",additionalProperties:!1},outputSchema:{type:"object"},effects:{persistence:"none",undoable:!1,idempotent:!0},presentation:{category:"Document",inputMode:"none",aliases:["document companion state","rendering persistence state"],keywords:["document","rendering","companion","persistence"]}}}function xE(e,t,r=Xs(e),n=ll(e.performanceProfile)){let o=typeof e.sceneJsonText=="string"?e.sceneJsonText:void 0;return{documentRevision:t,...typeof e.expectedVersion=="number"?{expectedVersion:e.expectedVersion}:{},...typeof e.version=="number"?{version:e.version}:{},...typeof e.updatedAt=="string"?{updatedAt:e.updatedAt}:{},...typeof e.sceneUrl=="string"?{sceneUrl:e.sceneUrl}:{},...r,...o?{sceneJsonBytes:Buffer.byteLength(o)}:{},...n?{performanceProfile:n}:{},prepared:!0}}function ml(e){let t=typeof e.version=="number"&&Number.isFinite(e.version)?e.version:void 0,r=typeof e.updatedAt=="string"&&e.updatedAt.trim()?e.updatedAt:void 0,n=typeof e.sceneUrl=="string"&&e.sceneUrl.trim()?e.sceneUrl:void 0;return t===void 0&&r===void 0&&n===void 0?null:{...t===void 0?{}:{version:t},...r===void 0?{}:{updatedAt:r},...n===void 0?{}:{sceneUrl:n}}}function Xs(e){let t=Wk(e),r=Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentConfig"),n;return r&&(e.shadowMapExperimentConfig==null?n=null:(Ii(e.shadowMapExperimentConfig),n=structuredClone(e.shadowMapExperimentConfig))),{...Object.keys(t).length>0?{companionConfigs:structuredClone(t)}:{},...r?{shadowMapExperimentConfig:n}:{}}}function ve(e,t,r){return{ok:!1,diagnostics:[{severity:"error",source:"adapter",code:e,message:t,...r?{details:r}:{}}]}}function Io(e){let t=e&&typeof e=="object"?e:null,r=typeof t?.code=="string"&&t.code.trim()?t.code:"document.persistenceFailed",n=e instanceof Error?e.message:typeof t?.message=="string"?t.message:String(e),o=t?.details&&typeof t.details=="object"&&!Array.isArray(t.details)?structuredClone(t.details):void 0;return ve(r,n,o)}function j8(e,t,r){return{id:e,guid:`go_${ul()}`,name:t,active:!0,...r?{parentId:r}:{},components:[{type:"Transform",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}]}}function G8(e,t){let r=L8(t)||"object",n=new Set(e.scene.gameObjects.map(o=>o.id));if(!n.has(r))return r;for(let o=2;o<1e4;o+=1){let i=`${r}_${o}`;if(!n.has(i))return i}return`${r}_${ul()}`}function L8(e){return e.trim().toLocaleLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")}function F8(e){return e?`${e[0].toLocaleUpperCase()}${e.slice(1)}`:"Object"}function Re(e){return typeof e=="string"&&e.trim()?e.trim():void 0}import{randomBytes as sue,randomUUID as cue,timingSafeEqual as $8}from"node:crypto";import B8 from"node:path";var uue=B8.join(".fps-editor","state","agent-runtime.json"),mue=Symbol.for("@fps-games/editor/playable-sdk/vite/project-editor-service-leases-v1");function n_(e){let t=e.gateway,r=e.agentToken,n=e.browserToken,o=e.runtimeDebugToken,i=e.tokenScopes,a=e.gatewayPath??ap;return async(s,c,d)=>{if(new URL(s.url??"","http://fps-editor.local").pathname!==a)return d();if(V8(s,c),s.method==="OPTIONS"){c.statusCode=204,c.end();return}if(s.method!=="POST"){yf(c,405,{ok:!1,diagnostics:[{severity:"error",source:"transport",code:"http.methodNotAllowed",message:"Editor Service Gateway requires POST."}]});return}let l=kE(s.headers?.authorization,n),m=kE(s.headers?.authorization,r),p=!!o?.trim()&&kE(s.headers?.authorization,o.trim());if(!l&&!m&&!p){yf(c,401,{ok:!1,diagnostics:[{severity:"error",source:"transport",code:"auth.invalidToken",message:"Editor Service bearer token is invalid."}]});return}try{let f=await U8(s),g=l&&f.kind==="command.invoke"?f.invocation:null,S=g&&typeof g.clientId=="string"&&g.clientId.length>0&&g.clientId.length<=256?g.clientId:null,P=g?z8(g.surface):void 0,x=await t.handle(f,i,l?{principal:{type:"human"},source:"browser-ui",sessionId:`browser:${t.serviceInstanceId}:${S??"unattached"}`,...P?{surface:P}:{}}:p?{principal:{type:"human"},source:"runtime-debug-panel",sessionId:`runtime-debug:${t.serviceInstanceId}`,surface:"runtime-debug-panel"}:{principal:{type:"agent",id:"fps-editor-agent"},source:"agent-cli",sessionId:`agent:${t.serviceInstanceId}`,surface:"agent-transaction"});await e.onHandled?.(f,x),yf(c,x.ok?200:400,x)}catch(f){yf(c,400,{ok:!1,diagnostics:[{severity:"error",source:"transport",code:"request.invalidJson",message:f instanceof Error?f.message:String(f)}]})}}}function z8(e){return typeof e=="string"&&["inspector","gizmo","hierarchy","asset-library","runtime-debug-panel","command-palette"].includes(e)?e:void 0}function kE(e,t){if(typeof e!="string"||!e.startsWith("Bearer "))return!1;let r=Buffer.from(e.slice(7),"utf8"),n=Buffer.from(t,"utf8");return r.length===n.length&&$8(r,n)}async function U8(e){let t=[],r=0;for await(let n of e){let o=Buffer.isBuffer(n)?n:Buffer.from(n);if(r+=o.byteLength,r>1024*1024)throw new Error("Editor Service request body exceeds 1 MiB.");t.push(o)}if(t.length===0)throw new Error("Editor Service request body is required.");return JSON.parse(Buffer.concat(t).toString("utf8"))}function V8(e,t){t.setHeader("Cache-Control","no-store"),t.setHeader("Content-Type","application/json; charset=utf-8"),t.setHeader("X-Content-Type-Options","nosniff"),t.setHeader("Access-Control-Allow-Headers","authorization, content-type"),t.setHeader("Access-Control-Allow-Methods","POST, OPTIONS");let r=typeof e.headers?.origin=="string"?e.headers.origin:void 0;r&&(t.setHeader("Access-Control-Allow-Origin",r),t.setHeader("Vary","Origin"))}function yf(e,t,r){e.statusCode=t,e.end(`${JSON.stringify(r)}
26
+ `)}async function a_(e){let t=await q8(e.projectRoot),r=ec.resolve(e.journalPath??ec.join(t,".fps-editor/state/working-document-journal.json"));t6(t,r);let n=await Z8(r,t,e.build.buildKey),o=i_(),i=await t_({projectRoot:t,project:e.project,serviceInstanceId:o,backend:e.backend,logger:e.logger,...n?{recovery:n}:{},...e.prepareAuthoringDocument?{prepareAuthoringDocument:e.prepareAuthoringDocument}:{},...e.preparePersistedDocument?{preparePersistedDocument:e.preparePersistedDocument}:{},...e.materialShaderDefinitions?{materialShaderDefinitions:e.materialShaderDefinitions}:{},...e.onDocumentCommitted?{onDocumentCommitted:e.onDocumentCommitted}:{}}),a=new Date().toISOString(),s=QC({canonicalProjectRoot:t,packageVersion:e.build.version,buildKey:e.build.buildKey,startedAt:a,host:i.host,readTraces:i.readTraces,readDocumentExport:i.readDocumentExport,discardDocumentExport:i.discardDocumentExport,readAuthoringPersistence:i.readAuthoringPersistence,recovery:{draftJournal:!0,unsavedWorkingStateRecovered:n!==null,message:n?"Working document and saved checkpoint were recovered from the atomic worker journal.":"Atomic working-document journal is enabled for worker recovery."}}),c=i.bindBrowserCommandForwarder(s.forwardBrowserCommand),d=Promise.resolve(),u="",l=async()=>{let x=i.host.getSnapshot(),T=`${x.documentRevision}:${x.documentStructureRevision}:${x.dirty}`;if(T===u)return d;u=T;let R=i.readAuthoringPersistence(),A={schemaVersion:1,canonicalProjectRoot:t,buildKey:e.build.buildKey,writtenAt:new Date().toISOString(),recovery:{workingDocument:x.document,savedDocument:x.savedDocument,documentRevision:x.documentRevision,documentStructureRevision:x.documentStructureRevision,...R?{persistence:R}:{}}};return d=d.then(()=>e6(r,A)),d},m=n_({gateway:s,agentToken:e.agentToken,browserToken:e.browserToken,runtimeDebugToken:e.runtimeDebugToken,tokenScopes:e.tokenScopes??["read","write"],gatewayPath:ap,async onHandled(x,T){T.ok&&Q8(x)&&await l()}}),p=[...e.middlewares??[],m],f=H8((x,T)=>{r6(T);let R=new URL(x.url??"/","http://fps-editor-worker.local");if(x.method==="GET"&&R.pathname==="/__fps_editor_worker/health"){T.statusCode=200,T.setHeader("Content-Type","application/json; charset=utf-8"),T.end(`${JSON.stringify({ok:!0,serviceInstanceId:o})}
27
+ `);return}let A=0,E=()=>{let C=p[A++];if(!C){T.statusCode=404,T.end();return}Promise.resolve(C(x,T,E)).catch(b=>{if(T.headersSent){T.destroy(b instanceof Error?b:void 0);return}T.statusCode=500,T.setHeader("Content-Type","application/json; charset=utf-8"),T.end(JSON.stringify({ok:!1,error:o_(b)}))})};E()});await new Promise((x,T)=>{f.once("error",T),f.listen(0,"127.0.0.1",()=>{f.off("error",T),x()})});let g=f.address();if(!g||typeof g=="string")throw new Error("Editor Service worker address is unavailable.");await l();let S=`http://127.0.0.1:${g.port}`;e.logger?.info?.(`[fps-editor] Editor Service worker ready at ${S}`);let P=null;return Object.freeze({serviceInstanceId:o,internalUrl:S,journalPath:r,dispose(){return P||(P=(async()=>{await l().catch(x=>{e.logger?.warn?.(`[fps-editor] Final worker journal failed: ${o_(x)}`)}),await new Promise((x,T)=>{f.close(R=>R?T(R):x())}),c(),s.dispose(),await i.dispose()})(),P)}})}function Q8(e){return e.kind==="command.invoke"||e.kind==="transaction.commit"||e.kind==="attachment.result"}async function Z8(e,t,r){try{let n=JSON.parse(await W8(e,"utf8"));return n.schemaVersion!==1||n.canonicalProjectRoot!==t||n.buildKey!==r||!n.recovery?null:n.recovery}catch{return null}}async function e6(e,t){let r=ec.dirname(e);await K8(r,{recursive:!0,mode:448});let n=`${e}.${process.pid}.${i_()}.tmp`;try{await X8(n,`${JSON.stringify(t)}
28
+ `,{encoding:"utf8",mode:384}),await Y8(n,e)}finally{await J8(n,{force:!0}).catch(()=>{})}}function t6(e,t){let r=ec.relative(e,t);if(!r||r===".."||r.startsWith(`..${ec.sep}`)||ec.isAbsolute(r))throw new Error("Editor Service journal must be inside the canonical project root.")}function r6(e){e.setHeader("Cache-Control","no-store"),e.setHeader("Cross-Origin-Resource-Policy","cross-origin"),e.setHeader("X-Content-Type-Options","nosniff")}function o_(e){return e instanceof Error?e.message:String(e)}async function c_(e){let t=LD(e.definition),r=t.project,n=n6(e.projectRoot),o=SO(e.projectRoot,{importedDir:r.assets.importedDir,generatedDir:r.assets.generatedDir,runtimeArtifact:r.source.runtimeScene}),i=gO({projectRoot:e.projectRoot,assetRegistryConfig:o}),a=yO(r,{projectRoot:e.projectRoot}),s=hO(r,e.projectRoot),c=PD({markerTypes:t.metadata.markerTypes??[],relationTypes:t.metadata.relationTypes??[],features:r.features,getRenderingProfile:()=>({shadows:{defaultMode:"none"}}),createPatch:{gameObjectField:(f,g,S)=>({kind:"game-object.field",targetId:f,path:g,value:S}),gameObjectFieldBatch:f=>({kind:"game-object.property-field-batch",fields:f}),materialAssetField:(f,g,S)=>({kind:"scene.material-asset.field",materialAssetId:f,path:g,value:S}),materialAssetReplace:(f,g)=>({kind:"scene.material-asset.replace",materialAssetId:f,materialAsset:g}),prefabAssetReplace:(f,g)=>({kind:"scene.prefab-asset.replace",assetId:f,prefabAsset:g}),markerGraph:f=>({kind:"scene.marker-graph",command:f})}}),d={ensureAuthoringSource:XT,detectRuntimeInputDrift:ZT,enrichEditorSceneDocumentAssets:pS,ensureEditorSceneEnvironmentDefaults:c.ensureEnvironmentDefaults.bind(c)},u={...d,assertEditorSceneDocument:nO,assertEditorSceneMaterialAssetIntegrity:c.assertMaterialAssetIntegrity.bind(c),bumpEditorSceneAuthoringSourceRevision:QT,compileEditorSceneDocumentToSceneConfig:(f,g,S)=>UD(f,g,{...S,readCustomTransformRuntimeData:P=>P?.transformType==="groundDecal"&&i6(P.groundDecal)?{groundDecal:oR(P.groundDecal)}:null})},l=()=>i.listEditorAssetLibrary(n),m={loadEditorScene:()=>tO({projectRoot:e.projectRoot,server:n,paths:s,listEditorAssetLibrary:l,loadServices:async()=>d}),listEditorAssets:l,saveEditorScene:f=>rO({...f,projectRoot:e.projectRoot,server:n,paths:s,listEditorAssetLibrary:l,saveServices:async()=>u,normalizeRenderingProfile:g=>dn(g),summarizeRenderingProfile:g=>xa(g),createRenderingInvalidationFiles:a.createInvalidationFiles})},p=pO({projectRoot:e.projectRoot,createAssetAuthoringHandlers:()=>i.createProjectAssetAuthoringHandlers(n),handleRenderingProfileRoute:a.handleRoute,loadEditorScene:m.loadEditorScene,saveEditorScene:f=>m.saveEditorScene(f),logger:console});return await o6(p.configureServer,n),a_({projectRoot:e.projectRoot,project:r,backend:m,build:{version:e.build.version,buildKey:e.build.buildId},agentToken:e.agentToken,browserToken:e.browserToken,runtimeDebugToken:e.runtimeDebugToken,...e.journalPath?.trim()?{journalPath:e.journalPath.trim()}:{},middlewares:n.middlewares.stack,logger:console,onDocumentCommitted(f){f.version===void 0||!f.sceneUrl||bO({runtimeUrl:e.runtimeUrl,token:e.runtimeDebugToken,data:{transactionId:f.transactionId,version:f.version,sceneUrl:f.sceneUrl}}).catch(g=>console.warn("[fps-editor-server] Runtime refresh epoch publish failed.",g))}})}function n6(e){let t={stack:[],use(o){this.stack.push(o)}},r=new s_,n=new s_;return n.unwatch=async()=>{},n.add=()=>n,{middlewares:t,httpServer:r,watcher:n,ws:{send(){}},moduleGraph:{getModulesByFile(){},invalidateModule(){}},config:{root:e,logger:console}}}async function o6(e,t){if(typeof e=="function"){await e(t);return}e&&typeof e=="object"&&"handler"in e&&typeof e.handler=="function"&&await e.handler(t)}function i6(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}var hi=await c_({projectRoot:process.cwd(),definition:l_("FPS_EDITOR_WORKER_PROJECT_DEFINITION"),build:l_("FPS_EDITOR_WORKER_BUILD"),agentToken:fl("FPS_EDITOR_WORKER_AGENT_TOKEN"),browserToken:fl("FPS_EDITOR_WORKER_BROWSER_TOKEN"),runtimeDebugToken:fl("FPS_EDITOR_WORKER_RUNTIME_DEBUG_TOKEN"),runtimeUrl:fl("FPS_EDITOR_WORKER_RUNTIME_URL"),journalPath:process.env.FPS_EDITOR_WORKER_JOURNAL_PATH?.trim()||void 0});if(!hi||typeof hi.serviceInstanceId!="string"||typeof hi.internalUrl!="string"||typeof hi.dispose!="function")throw new Error("Static Project worker returned an invalid worker handle.");process.send?.({type:"ready",serviceInstanceId:hi.serviceInstanceId,internalUrl:hi.internalUrl});var u_=setInterval(()=>{process.send?.({type:"heartbeat",serviceInstanceId:hi.serviceInstanceId})},1e3);u_.unref?.();var d_=!1;for(let e of["SIGINT","SIGTERM"])process.once(e,()=>{d_||(d_=!0,clearInterval(u_),hi.dispose().finally(()=>{process.exitCode=e==="SIGINT"?130:143}))});function fl(e){let t=process.env[e]?.trim();if(!t)throw new Error(`${e} is required.`);return t}function l_(e){let t=JSON.parse(fl(e));if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must contain a JSON object.`);return t}