@fps-games/editor 0.2.0-beta.4 → 0.2.1-beta.1

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 (1397) hide show
  1. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/editor-state.js +12 -6
  3. package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
  4. package/dist/agent-bridge/capabilities/hierarchy.d.ts +4 -0
  5. package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +1 -0
  6. package/dist/agent-bridge/capabilities/hierarchy.js +209 -0
  7. package/dist/agent-bridge/capabilities/hierarchy.js.map +1 -0
  8. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -1
  9. package/dist/agent-bridge/capabilities/prefabs.js +208 -73
  10. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
  11. package/dist/agent-bridge/capabilities/scene-objects.d.ts +3 -4
  12. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -1
  13. package/dist/agent-bridge/capabilities/scene-objects.js +24 -23
  14. package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
  15. package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -1
  16. package/dist/agent-bridge/capabilities/shadows.js +829 -66
  17. package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
  18. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
  19. package/dist/agent-bridge/capabilities/ui-regions.js +3 -1
  20. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  21. package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -1
  22. package/dist/agent-bridge/capabilities/viewport.js +22 -9
  23. package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
  24. package/dist/agent-bridge/capability-sources.d.ts.map +1 -1
  25. package/dist/agent-bridge/capability-sources.js +2 -0
  26. package/dist/agent-bridge/capability-sources.js.map +1 -1
  27. package/dist/agent-bridge/register.d.ts.map +1 -1
  28. package/dist/agent-bridge/register.js +194 -0
  29. package/dist/agent-bridge/register.js.map +1 -1
  30. package/dist/agent-bridge/shared.d.ts +231 -11
  31. package/dist/agent-bridge/shared.d.ts.map +1 -1
  32. package/dist/agent-bridge/shared.js +162 -20
  33. package/dist/agent-bridge/shared.js.map +1 -1
  34. package/dist/agent-bridge/source-types.d.ts +17 -1
  35. package/dist/agent-bridge/source-types.d.ts.map +1 -1
  36. package/dist/agent-bridge/source-types.js.map +1 -1
  37. package/dist/build-info.json +57 -42
  38. package/dist/index.d.ts +7 -6
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -3
  41. package/dist/index.js.map +1 -1
  42. package/dist/internal/babylon-preview-engine.d.ts +3 -0
  43. package/dist/internal/babylon-preview-engine.d.ts.map +1 -0
  44. package/dist/internal/babylon-preview-engine.js +11 -0
  45. package/dist/internal/babylon-preview-engine.js.map +1 -0
  46. package/dist/internal/product-local-editor-cleanup.d.ts +5 -0
  47. package/dist/internal/product-local-editor-cleanup.d.ts.map +1 -0
  48. package/dist/internal/product-local-editor-cleanup.js +20 -0
  49. package/dist/internal/product-local-editor-cleanup.js.map +1 -0
  50. package/dist/local-editor-agent-actions.d.ts +2 -4
  51. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  52. package/dist/local-editor-agent-actions.js +56 -32
  53. package/dist/local-editor-agent-actions.js.map +1 -1
  54. package/dist/local-editor-agent-context.d.ts +5 -5
  55. package/dist/local-editor-agent-context.d.ts.map +1 -1
  56. package/dist/local-editor-agent-context.js.map +1 -1
  57. package/dist/local-editor-harness.d.ts +340 -35
  58. package/dist/local-editor-harness.d.ts.map +1 -1
  59. package/dist/local-editor-harness.js +3834 -1321
  60. package/dist/local-editor-harness.js.map +1 -1
  61. package/dist/local-editor-marker-graph.d.ts +15 -15
  62. package/dist/local-editor-marker-graph.d.ts.map +1 -1
  63. package/dist/local-editor-marker-graph.js +3 -0
  64. package/dist/local-editor-marker-graph.js.map +1 -1
  65. package/dist/local-editor-performance-stats.d.ts +3 -2
  66. package/dist/local-editor-performance-stats.d.ts.map +1 -1
  67. package/dist/local-editor-performance-stats.js.map +1 -1
  68. package/dist/local-editor-prefab-stage-transaction.d.ts +19 -0
  69. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -0
  70. package/dist/local-editor-prefab-stage-transaction.js +45 -0
  71. package/dist/local-editor-prefab-stage-transaction.js.map +1 -0
  72. package/dist/local-editor-scene-view-interaction-runtime.d.ts +3 -1
  73. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  74. package/dist/local-editor-scene-view-interaction-runtime.js +24 -0
  75. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  76. package/dist/local-editor-tools.d.ts +18 -0
  77. package/dist/local-editor-tools.d.ts.map +1 -0
  78. package/dist/local-editor-tools.js +53 -0
  79. package/dist/local-editor-tools.js.map +1 -0
  80. package/dist/playable-babylon-rendering.d.ts +9 -0
  81. package/dist/playable-babylon-rendering.d.ts.map +1 -1
  82. package/dist/playable-babylon-rendering.js +162 -6
  83. package/dist/playable-babylon-rendering.js.map +1 -1
  84. package/dist/playable-local-editor-entry.d.ts +68 -0
  85. package/dist/playable-local-editor-entry.d.ts.map +1 -0
  86. package/dist/playable-local-editor-entry.js +424 -0
  87. package/dist/playable-local-editor-entry.js.map +1 -0
  88. package/dist/playable-local-editor-host.d.ts +51 -29
  89. package/dist/playable-local-editor-host.d.ts.map +1 -1
  90. package/dist/playable-local-editor-host.js +23 -11
  91. package/dist/playable-local-editor-host.js.map +1 -1
  92. package/dist/playable-product-local-editor.d.ts +10 -12
  93. package/dist/playable-product-local-editor.d.ts.map +1 -1
  94. package/dist/playable-product-local-editor.js +178 -85
  95. package/dist/playable-product-local-editor.js.map +1 -1
  96. package/dist/playable-product-projection-preview.d.ts +4 -1
  97. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  98. package/dist/playable-product-projection-preview.js +122 -5
  99. package/dist/playable-product-projection-preview.js.map +1 -1
  100. package/dist/playable-product-rendering.d.ts +12 -0
  101. package/dist/playable-product-rendering.d.ts.map +1 -1
  102. package/dist/playable-product-rendering.js +128 -6
  103. package/dist/playable-product-rendering.js.map +1 -1
  104. package/dist/playable-product-scene-capabilities.d.ts +24 -7
  105. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  106. package/dist/playable-product-scene-capabilities.js +172 -15
  107. package/dist/playable-product-scene-capabilities.js.map +1 -1
  108. package/dist/playable-project-mode.d.ts +17 -0
  109. package/dist/playable-project-mode.d.ts.map +1 -0
  110. package/dist/playable-project-mode.js +2 -0
  111. package/dist/playable-project-mode.js.map +1 -0
  112. package/dist/playable-runtime-babylon.d.ts +3 -6
  113. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  114. package/dist/playable-runtime-babylon.js +1 -5
  115. package/dist/playable-runtime-babylon.js.map +1 -1
  116. package/dist/playable-sdk.d.ts +16 -9
  117. package/dist/playable-sdk.d.ts.map +1 -1
  118. package/dist/playable-sdk.js +6 -4
  119. package/dist/playable-sdk.js.map +1 -1
  120. package/dist/playable-standard-project.d.ts +23 -14
  121. package/dist/playable-standard-project.d.ts.map +1 -1
  122. package/dist/playable-standard-project.js +53 -19
  123. package/dist/playable-standard-project.js.map +1 -1
  124. package/dist/vite-client.d.ts +4 -0
  125. package/node_modules/@babel/helper-string-parser/lib/index.js +0 -1
  126. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js +0 -1
  127. package/node_modules/@babel/helper-validator-identifier/lib/index.js +0 -1
  128. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js +0 -1
  129. package/node_modules/@babel/parser/lib/index.js +0 -1
  130. package/node_modules/@babel/types/lib/asserts/assertNode.js +0 -1
  131. package/node_modules/@babel/types/lib/asserts/generated/index.js +0 -1
  132. package/node_modules/@babel/types/lib/ast-types/generated/index.js +0 -1
  133. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -1
  134. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -1
  135. package/node_modules/@babel/types/lib/builders/generated/index.js +0 -1
  136. package/node_modules/@babel/types/lib/builders/generated/lowercase.js +0 -1
  137. package/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
  138. package/node_modules/@babel/types/lib/builders/productions.js +0 -1
  139. package/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -1
  140. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -1
  141. package/node_modules/@babel/types/lib/builders/validateNode.js +0 -1
  142. package/node_modules/@babel/types/lib/clone/clone.js +0 -1
  143. package/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -1
  144. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -1
  145. package/node_modules/@babel/types/lib/clone/cloneNode.js +0 -1
  146. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -1
  147. package/node_modules/@babel/types/lib/comments/addComment.js +0 -1
  148. package/node_modules/@babel/types/lib/comments/addComments.js +0 -1
  149. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -1
  150. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -1
  151. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -1
  152. package/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -1
  153. package/node_modules/@babel/types/lib/comments/removeComments.js +0 -1
  154. package/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
  155. package/node_modules/@babel/types/lib/constants/index.js +0 -1
  156. package/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -1
  157. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +0 -1
  158. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -1
  159. package/node_modules/@babel/types/lib/converters/toBlock.js +0 -1
  160. package/node_modules/@babel/types/lib/converters/toComputedKey.js +0 -1
  161. package/node_modules/@babel/types/lib/converters/toExpression.js +0 -1
  162. package/node_modules/@babel/types/lib/converters/toIdentifier.js +0 -1
  163. package/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -1
  164. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -1
  165. package/node_modules/@babel/types/lib/converters/toStatement.js +0 -1
  166. package/node_modules/@babel/types/lib/converters/valueToNode.js +0 -1
  167. package/node_modules/@babel/types/lib/definitions/core.js +0 -1
  168. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js +0 -1
  169. package/node_modules/@babel/types/lib/definitions/experimental.js +0 -1
  170. package/node_modules/@babel/types/lib/definitions/flow.js +0 -1
  171. package/node_modules/@babel/types/lib/definitions/index.js +0 -1
  172. package/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
  173. package/node_modules/@babel/types/lib/definitions/misc.js +0 -1
  174. package/node_modules/@babel/types/lib/definitions/placeholders.js +0 -1
  175. package/node_modules/@babel/types/lib/definitions/typescript.js +0 -1
  176. package/node_modules/@babel/types/lib/definitions/utils.js +0 -1
  177. package/node_modules/@babel/types/lib/index.js +0 -1
  178. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -1
  179. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +0 -1
  180. package/node_modules/@babel/types/lib/modifications/inherits.js +0 -1
  181. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -1
  182. package/node_modules/@babel/types/lib/modifications/removeProperties.js +0 -1
  183. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -1
  184. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +0 -1
  185. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js +0 -1
  186. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +0 -1
  187. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js +0 -1
  188. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -1
  189. package/node_modules/@babel/types/lib/traverse/traverse.js +0 -1
  190. package/node_modules/@babel/types/lib/traverse/traverseFast.js +0 -1
  191. package/node_modules/@babel/types/lib/utils/deprecationWarning.js +0 -1
  192. package/node_modules/@babel/types/lib/utils/inherit.js +0 -1
  193. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +0 -1
  194. package/node_modules/@babel/types/lib/utils/shallowEqual.js +0 -1
  195. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -1
  196. package/node_modules/@babel/types/lib/validators/generated/index.js +0 -1
  197. package/node_modules/@babel/types/lib/validators/is.js +0 -1
  198. package/node_modules/@babel/types/lib/validators/isBinding.js +0 -1
  199. package/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -1
  200. package/node_modules/@babel/types/lib/validators/isImmutable.js +0 -1
  201. package/node_modules/@babel/types/lib/validators/isLet.js +0 -1
  202. package/node_modules/@babel/types/lib/validators/isNode.js +0 -1
  203. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +0 -1
  204. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -1
  205. package/node_modules/@babel/types/lib/validators/isReferenced.js +0 -1
  206. package/node_modules/@babel/types/lib/validators/isScope.js +0 -1
  207. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +0 -1
  208. package/node_modules/@babel/types/lib/validators/isType.js +0 -1
  209. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -1
  210. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -1
  211. package/node_modules/@babel/types/lib/validators/isVar.js +0 -1
  212. package/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -1
  213. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
  214. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -1
  215. package/node_modules/@babel/types/lib/validators/validate.js +0 -1
  216. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.d.ts +69 -0
  217. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.js +132 -0
  218. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.d.ts +8 -0
  219. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.js +7 -0
  220. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.d.ts +14 -0
  221. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.js +328 -0
  222. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.d.ts +9 -0
  223. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.js +1 -0
  224. package/node_modules/@babylonjs/loaders/BVH/index.d.ts +2 -0
  225. package/node_modules/@babylonjs/loaders/BVH/index.js +3 -0
  226. package/node_modules/@babylonjs/loaders/OBJ/index.d.ts +4 -0
  227. package/node_modules/@babylonjs/loaders/OBJ/index.js +4 -0
  228. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.d.ts +41 -0
  229. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.js +230 -0
  230. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.d.ts +136 -0
  231. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.js +317 -0
  232. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.d.ts +4 -0
  233. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.js +4 -0
  234. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.d.ts +47 -0
  235. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.js +1 -0
  236. package/node_modules/@babylonjs/loaders/OBJ/solidParser.d.ts +175 -0
  237. package/node_modules/@babylonjs/loaders/OBJ/solidParser.js +903 -0
  238. package/node_modules/@babylonjs/loaders/SPLAT/index.d.ts +2 -0
  239. package/node_modules/@babylonjs/loaders/SPLAT/index.js +3 -0
  240. package/node_modules/@babylonjs/loaders/SPLAT/sog.d.ts +84 -0
  241. package/node_modules/@babylonjs/loaders/SPLAT/sog.js +294 -0
  242. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.d.ts +26 -0
  243. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.js +10 -0
  244. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.d.ts +100 -0
  245. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.js +536 -0
  246. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.d.ts +20 -0
  247. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.js +15 -0
  248. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.d.ts +33 -0
  249. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.js +1 -0
  250. package/node_modules/@babylonjs/loaders/SPLAT/spz.d.ts +11 -0
  251. package/node_modules/@babylonjs/loaders/SPLAT/spz.js +168 -0
  252. package/node_modules/@babylonjs/loaders/STL/index.d.ts +1 -0
  253. package/node_modules/@babylonjs/loaders/STL/index.js +1 -0
  254. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.d.ts +78 -0
  255. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.js +238 -0
  256. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.d.ts +8 -0
  257. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.js +7 -0
  258. package/node_modules/@babylonjs/loaders/bvh/license.md +21 -0
  259. package/node_modules/@babylonjs/loaders/dynamic.d.ts +5 -0
  260. package/node_modules/@babylonjs/loaders/dynamic.js +56 -0
  261. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.d.ts +16 -0
  262. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.js +64 -0
  263. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.d.ts +144 -0
  264. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.js +1841 -0
  265. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.d.ts +412 -0
  266. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.js +95 -0
  267. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.d.ts +71 -0
  268. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.js +254 -0
  269. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.d.ts +13 -0
  270. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.js +130 -0
  271. package/node_modules/@babylonjs/loaders/glTF/1.0/index.d.ts +5 -0
  272. package/node_modules/@babylonjs/loaders/glTF/1.0/index.js +5 -0
  273. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.d.ts +41 -0
  274. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.js +93 -0
  275. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.d.ts +41 -0
  276. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.js +83 -0
  277. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +48 -0
  278. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.js +115 -0
  279. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +39 -0
  280. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +94 -0
  281. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +39 -0
  282. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.js +50 -0
  283. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.d.ts +34 -0
  284. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.js +38 -0
  285. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.d.ts +33 -0
  286. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.js +37 -0
  287. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +53 -0
  288. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.js +73 -0
  289. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +47 -0
  290. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -0
  291. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.js +251 -0
  292. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.js +77 -0
  293. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +47 -0
  294. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +92 -0
  295. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +355 -0
  296. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1678 -0
  297. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
  298. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +19 -0
  299. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
  300. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.js +3 -0
  301. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +70 -0
  302. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +438 -0
  303. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.d.ts +38 -0
  304. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.js +150 -0
  305. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +41 -0
  306. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.js +91 -0
  307. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +42 -0
  308. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.js +65 -0
  309. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +43 -0
  310. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.js +79 -0
  311. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.d.ts +49 -0
  312. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.js +119 -0
  313. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +43 -0
  314. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +58 -0
  315. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +43 -0
  316. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +69 -0
  317. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +43 -0
  318. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.js +56 -0
  319. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +42 -0
  320. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +47 -0
  321. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +43 -0
  322. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.js +77 -0
  323. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.d.ts +46 -0
  324. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.js +54 -0
  325. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +42 -0
  326. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.js +68 -0
  327. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +42 -0
  328. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +80 -0
  329. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +43 -0
  330. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.js +73 -0
  331. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.d.ts +42 -0
  332. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.js +76 -0
  333. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +42 -0
  334. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.js +303 -0
  335. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +42 -0
  336. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.js +66 -0
  337. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.d.ts +112 -0
  338. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.js +262 -0
  339. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.d.ts +43 -0
  340. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.js +82 -0
  341. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +45 -0
  342. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +109 -0
  343. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +29 -0
  344. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.js +22 -0
  345. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +31 -0
  346. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.js +189 -0
  347. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
  348. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.js +123 -0
  349. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.d.ts +30 -0
  350. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.js +66 -0
  351. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +33 -0
  352. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.js +37 -0
  353. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.d.ts +37 -0
  354. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.js +58 -0
  355. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +39 -0
  356. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.js +47 -0
  357. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +56 -0
  358. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.js +228 -0
  359. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.d.ts +104 -0
  360. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.js +337 -0
  361. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +27 -0
  362. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.js +39 -0
  363. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +27 -0
  364. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.js +38 -0
  365. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.d.ts +4 -0
  366. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.js +212 -0
  367. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +45 -0
  368. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.js +100 -0
  369. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.d.ts +43 -0
  370. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.js +44 -0
  371. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.d.ts +306 -0
  372. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.js +884 -0
  373. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.d.ts +450 -0
  374. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.js +2485 -0
  375. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.d.ts +42 -0
  376. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.js +79 -0
  377. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.d.ts +165 -0
  378. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.js +1 -0
  379. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.d.ts +25 -0
  380. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.js +32 -0
  381. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.d.ts +262 -0
  382. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.js +1 -0
  383. package/node_modules/@babylonjs/loaders/glTF/2.0/index.d.ts +8 -0
  384. package/node_modules/@babylonjs/loaders/glTF/2.0/index.js +9 -0
  385. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.d.ts +364 -0
  386. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.js +1 -0
  387. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.d.ts +674 -0
  388. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.js +1034 -0
  389. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +705 -0
  390. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.js +1126 -0
  391. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.d.ts +553 -0
  392. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.js +998 -0
  393. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.d.ts +15 -0
  394. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.js +17 -0
  395. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.d.ts +35 -0
  396. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.js +131 -0
  397. package/node_modules/@babylonjs/loaders/glTF/index.d.ts +5 -0
  398. package/node_modules/@babylonjs/loaders/glTF/index.js +6 -0
  399. package/node_modules/@babylonjs/loaders/index.d.ts +6 -0
  400. package/node_modules/@babylonjs/loaders/index.js +7 -0
  401. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.d.ts +1 -0
  402. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.js +15 -0
  403. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.d.ts +1 -0
  404. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.js +13 -0
  405. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.d.ts +2 -0
  406. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.js +18 -0
  407. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.d.ts +2 -0
  408. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.js +15 -0
  409. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.d.ts +2 -0
  410. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.js +3 -0
  411. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.d.ts +2 -0
  412. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.js +34 -0
  413. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.d.ts +2 -0
  414. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.js +3 -0
  415. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.d.ts +3 -0
  416. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.js +4 -0
  417. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.d.ts +1 -0
  418. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.js +15 -0
  419. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.d.ts +1 -0
  420. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.js +15 -0
  421. package/node_modules/@babylonjs/loaders/legacy/legacy.d.ts +8 -0
  422. package/node_modules/@babylonjs/loaders/legacy/legacy.js +10 -0
  423. package/node_modules/@babylonjs/loaders/license.md +71 -0
  424. package/node_modules/@babylonjs/loaders/package.json +49 -0
  425. package/node_modules/@babylonjs/loaders/readme.md +23 -0
  426. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts +22 -0
  427. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts.map +1 -0
  428. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js +187 -0
  429. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js.map +1 -0
  430. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
  431. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
  432. package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
  433. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  434. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts +19 -0
  435. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts.map +1 -0
  436. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js +212 -0
  437. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js.map +1 -0
  438. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts +17 -2
  439. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts.map +1 -1
  440. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js +192 -17
  441. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  442. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +2 -0
  443. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  444. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +139 -3
  445. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  446. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts +4 -0
  447. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts.map +1 -1
  448. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  449. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts +1 -0
  450. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts.map +1 -1
  451. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js +1 -0
  452. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  453. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts +14 -0
  454. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts.map +1 -0
  455. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js +14 -0
  456. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js.map +1 -0
  457. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts +59 -0
  458. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  459. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js +725 -0
  460. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  461. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts +136 -0
  462. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  463. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js +2735 -0
  464. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js.map +1 -0
  465. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  466. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +1 -1
  467. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  468. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +2 -1
  469. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  470. package/node_modules/@fps-games/editor-babylon/dist/index.js +2 -1
  471. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  472. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts +2 -0
  473. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts.map +1 -1
  474. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js +59 -6
  475. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  476. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -1
  477. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +81 -11
  478. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  479. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +2 -8
  480. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  481. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +17 -5
  482. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  483. package/node_modules/@fps-games/editor-babylon/dist/projection.js +300 -362
  484. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  485. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +4 -0
  486. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
  487. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +76 -10
  488. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  489. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts +46 -0
  490. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts.map +1 -0
  491. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js +304 -0
  492. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js.map +1 -0
  493. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +85 -0
  494. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -0
  495. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +1600 -0
  496. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -0
  497. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +11 -3
  498. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  499. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +105 -15
  500. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  501. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts +25 -0
  502. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts.map +1 -0
  503. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js +44 -0
  504. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js.map +1 -0
  505. package/node_modules/@fps-games/editor-babylon/package.json +6 -5
  506. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +8 -11
  507. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  508. package/node_modules/@fps-games/editor-browser/dist/index.js +6 -9
  509. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  510. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts +2 -0
  511. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts.map +1 -0
  512. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js +36 -0
  513. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js.map +1 -0
  514. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts +2 -0
  515. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts.map +1 -1
  516. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js +17 -0
  517. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  518. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +1 -1
  519. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
  520. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +6 -0
  521. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  522. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts.map +1 -1
  523. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +157 -77
  524. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  525. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.d.ts.map +1 -1
  526. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js +27 -21
  527. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  528. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +19 -0
  529. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -0
  530. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +44 -0
  531. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -0
  532. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +36 -6
  533. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  534. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +829 -866
  535. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  536. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts +8 -7
  537. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts.map +1 -1
  538. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js +1 -7
  539. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  540. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts +7 -0
  541. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts.map +1 -0
  542. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js +20 -0
  543. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js.map +1 -0
  544. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +6 -7
  545. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  546. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +266 -114
  547. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  548. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  549. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  550. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +5 -0
  551. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  552. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  553. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +3 -17
  554. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  555. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts +14 -0
  556. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts.map +1 -1
  557. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js +44 -62
  558. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  559. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +10 -7
  560. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  561. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +591 -639
  562. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  563. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +8 -36
  564. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
  565. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +25 -103
  566. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  567. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  568. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +29 -110
  569. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  570. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +1 -3
  571. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
  572. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +6 -90
  573. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  574. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -1
  575. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +9 -54
  576. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  577. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +16 -1
  578. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -1
  579. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +44 -39
  580. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -1
  581. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts +4 -0
  582. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts.map +1 -0
  583. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js +44 -0
  584. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js.map +1 -0
  585. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.d.ts.map +1 -1
  586. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js +35 -44
  587. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  588. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -1
  589. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +40 -24
  590. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  591. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.d.ts.map +1 -1
  592. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js +2 -20
  593. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  594. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +52 -341
  595. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  596. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  597. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +4 -14
  598. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  599. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +33 -119
  600. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  601. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +5 -10
  602. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  603. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +595 -544
  604. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  605. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts +2 -3
  606. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts.map +1 -1
  607. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js +0 -180
  608. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  609. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts +5 -0
  610. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts.map +1 -0
  611. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js +5 -0
  612. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js.map +1 -0
  613. package/node_modules/@fps-games/editor-browser/package.json +15 -4
  614. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts +22 -0
  615. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts.map +1 -0
  616. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js +226 -0
  617. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js.map +1 -0
  618. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -1
  619. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  620. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +94 -2
  621. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  622. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +24 -2
  623. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  624. package/node_modules/@fps-games/editor-core/dist/editor-session.js +70 -10
  625. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  626. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +112 -0
  627. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -0
  628. package/node_modules/@fps-games/editor-core/dist/editor-tools.js +613 -0
  629. package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -0
  630. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +46 -0
  631. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -1
  632. package/node_modules/@fps-games/editor-core/dist/inspector.js +62 -0
  633. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  634. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -0
  635. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  636. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  637. package/node_modules/@fps-games/editor-core/package.json +14 -6
  638. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  639. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +14 -3
  640. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  641. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +1 -1
  642. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -1
  643. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +1 -1
  644. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  645. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +14 -0
  646. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  647. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +49 -1
  648. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  649. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +58 -2
  650. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  651. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  652. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +48 -6
  653. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  654. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +28 -3
  655. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  656. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +314 -6
  657. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  658. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts +2 -0
  659. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts.map +1 -1
  660. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js +2 -0
  661. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  662. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts +11 -0
  663. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts.map +1 -0
  664. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js +27 -0
  665. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js.map +1 -0
  666. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts +5 -0
  667. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts.map +1 -0
  668. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js +285 -0
  669. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js.map +1 -0
  670. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +7 -3
  671. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  672. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  673. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +3 -0
  674. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  675. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +6 -0
  676. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  677. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  678. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +23 -81
  679. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  680. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts +41 -0
  681. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts.map +1 -0
  682. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js +93 -0
  683. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js.map +1 -0
  684. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts +29 -0
  685. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts.map +1 -0
  686. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js +77 -0
  687. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js.map +1 -0
  688. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts +51 -0
  689. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts.map +1 -0
  690. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js +105 -0
  691. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js.map +1 -0
  692. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts +60 -0
  693. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts.map +1 -0
  694. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js +287 -0
  695. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js.map +1 -0
  696. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +6 -1
  697. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  698. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  699. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +1 -0
  700. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  701. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +53 -17
  702. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  703. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +16 -8
  704. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  705. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +10 -6
  706. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  707. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +5 -3
  708. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  709. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +2 -1
  710. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  711. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  712. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +134 -66
  713. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  714. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +11 -0
  715. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  716. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +21 -14
  717. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  718. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +17 -9
  719. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  720. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  721. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  722. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +20 -0
  723. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  724. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
  725. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +49 -10
  726. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  727. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +2 -2
  728. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  729. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -0
  730. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  731. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts +7 -0
  732. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts.map +1 -1
  733. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js +130 -20
  734. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  735. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts +1 -1
  736. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts.map +1 -1
  737. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js +12 -3
  738. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  739. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts +11 -0
  740. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts.map +1 -0
  741. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js +136 -0
  742. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js.map +1 -0
  743. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts +1 -0
  744. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts.map +1 -1
  745. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js +1 -0
  746. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  747. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts +36 -51
  748. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts.map +1 -1
  749. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js +40 -65
  750. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  751. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +5 -2
  752. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  753. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +207 -1
  754. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  755. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  756. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  757. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +3 -0
  758. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  759. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +18 -7
  760. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  761. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +110 -18
  762. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  763. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +5 -0
  764. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  765. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +6 -0
  766. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  767. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts +5 -2
  768. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  769. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +22 -2
  770. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  771. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  772. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +144 -0
  773. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  774. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +16 -0
  775. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
  776. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  777. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  778. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
  779. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  780. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
  781. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  782. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  783. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +2 -0
  784. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -1
  785. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +241 -13
  786. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  787. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +1 -0
  788. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -1
  789. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +1 -0
  790. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  791. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts +31 -0
  792. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts.map +1 -0
  793. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js +170 -0
  794. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js.map +1 -0
  795. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +153 -13
  796. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -1
  797. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  798. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts +17 -0
  799. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts.map +1 -1
  800. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js +1295 -3
  801. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  802. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  803. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +14 -0
  804. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  805. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.d.ts.map +1 -1
  806. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js +57 -34
  807. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  808. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
  809. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +4 -1
  810. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  811. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +4 -0
  812. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  813. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  814. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
  815. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +20 -198
  816. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  817. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.d.ts.map +1 -1
  818. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js +5 -1
  819. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  820. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts +5 -0
  821. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
  822. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +144 -8
  823. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  824. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts +1 -1
  825. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts.map +1 -1
  826. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js +30 -1
  827. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  828. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts +6 -0
  829. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts.map +1 -1
  830. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  831. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +31 -3
  832. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  833. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +5 -2
  834. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  835. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +40 -4
  836. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  837. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  838. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +116 -3
  839. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  840. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +2 -1
  841. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  842. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -0
  843. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  844. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +17 -1
  845. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  846. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +50 -2
  847. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  848. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  849. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +7 -5
  850. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  851. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +5 -6
  852. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  853. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +31 -17
  854. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  855. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +6 -0
  856. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  857. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  858. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  859. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +417 -2
  860. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -1
  861. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +692 -2
  862. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  863. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts +55 -0
  864. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts.map +1 -0
  865. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js +2 -0
  866. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js.map +1 -0
  867. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +3 -18
  868. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  869. package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
  870. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  871. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  872. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.d.ts.map +1 -1
  873. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js +5 -0
  874. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  875. package/node_modules/@fps-games/editor-tooling/dist/vite.d.ts.map +1 -1
  876. package/node_modules/@fps-games/editor-tooling/dist/vite.js +151 -5
  877. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  878. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  879. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts +107 -0
  880. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts.map +1 -0
  881. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js +770 -0
  882. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js.map +1 -0
  883. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts +21 -0
  884. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts.map +1 -0
  885. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js +172 -0
  886. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js.map +1 -0
  887. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts +14 -0
  888. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts.map +1 -0
  889. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js +32 -0
  890. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js.map +1 -0
  891. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts +3 -0
  892. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -0
  893. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +653 -0
  894. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -0
  895. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts +3 -0
  896. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts.map +1 -0
  897. package/node_modules/@fps-games/editor-ui/dist/gallery.js +3 -0
  898. package/node_modules/@fps-games/editor-ui/dist/gallery.js.map +1 -0
  899. package/node_modules/@fps-games/editor-ui/dist/index.d.ts +5 -0
  900. package/node_modules/@fps-games/editor-ui/dist/index.d.ts.map +1 -0
  901. package/node_modules/@fps-games/editor-ui/dist/index.js +5 -0
  902. package/node_modules/@fps-games/editor-ui/dist/index.js.map +1 -0
  903. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts +7 -0
  904. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts.map +1 -0
  905. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js +29 -0
  906. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js.map +1 -0
  907. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts +2 -0
  908. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts.map +1 -0
  909. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js +95 -0
  910. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js.map +1 -0
  911. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts +28 -0
  912. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts.map +1 -0
  913. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js +387 -0
  914. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js.map +1 -0
  915. package/node_modules/@fps-games/editor-ui/package.json +23 -0
  916. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  917. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts +1 -0
  918. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts.map +1 -1
  919. package/node_modules/@fps-games/playable-contracts/dist/index.js +1 -0
  920. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  921. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts +116 -0
  922. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts.map +1 -0
  923. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js +403 -0
  924. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js.map +1 -0
  925. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  926. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts +3 -0
  927. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts.map +1 -1
  928. package/node_modules/@fps-games/playable-rendering/dist/index.js +3 -0
  929. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  930. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js +5 -25
  931. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  932. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts +3 -0
  933. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts.map +1 -1
  934. package/node_modules/@fps-games/playable-rendering/dist/runtime.js +3 -0
  935. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  936. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts +61 -0
  937. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts.map +1 -0
  938. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js +176 -0
  939. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js.map +1 -0
  940. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts +84 -0
  941. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  942. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js +362 -0
  943. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js.map +1 -0
  944. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts +167 -0
  945. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts.map +1 -0
  946. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js +484 -0
  947. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js.map +1 -0
  948. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  949. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts +5 -0
  950. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts.map +1 -1
  951. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js +1 -0
  952. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  953. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  954. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  955. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  956. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  957. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  958. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  959. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  960. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  961. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts +6 -0
  962. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts.map +1 -0
  963. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js +16 -0
  964. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js.map +1 -0
  965. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts +7 -0
  966. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts.map +1 -0
  967. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js +47 -0
  968. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js.map +1 -0
  969. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +306 -0
  970. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -0
  971. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +1237 -0
  972. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -0
  973. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts +8 -0
  974. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts.map +1 -0
  975. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js +32 -0
  976. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js.map +1 -0
  977. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +2 -0
  978. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts.map +1 -0
  979. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +2 -0
  980. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -0
  981. package/node_modules/@fps-games/plugin-hierarchy/package.json +57 -0
  982. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  983. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  984. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  985. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  986. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  987. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  988. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  989. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  990. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  991. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  992. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  993. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  994. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  995. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  996. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  997. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  998. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  999. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts +8 -0
  1000. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts.map +1 -0
  1001. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js +35 -0
  1002. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js.map +1 -0
  1003. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts +11 -0
  1004. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts.map +1 -0
  1005. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js +14 -0
  1006. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js.map +1 -0
  1007. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +2 -0
  1008. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts.map +1 -0
  1009. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +2 -0
  1010. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -0
  1011. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +53 -0
  1012. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  1013. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  1014. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  1015. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  1016. package/node_modules/@playcanvas/observer/LICENSE +19 -0
  1017. package/node_modules/@playcanvas/observer/README.md +72 -0
  1018. package/node_modules/@playcanvas/observer/dist/index.cjs +2033 -0
  1019. package/node_modules/@playcanvas/observer/dist/index.js +2039 -0
  1020. package/node_modules/@playcanvas/observer/dist/index.mjs +2026 -0
  1021. package/node_modules/@playcanvas/observer/package.json +78 -0
  1022. package/node_modules/@playcanvas/observer/types/event-handle.d.ts +41 -0
  1023. package/node_modules/@playcanvas/observer/types/events.d.ts +162 -0
  1024. package/node_modules/@playcanvas/observer/types/history.d.ts +123 -0
  1025. package/node_modules/@playcanvas/observer/types/index.d.ts +15 -0
  1026. package/node_modules/@playcanvas/observer/types/observer-history.d.ts +32 -0
  1027. package/node_modules/@playcanvas/observer/types/observer-list.d.ts +39 -0
  1028. package/node_modules/@playcanvas/observer/types/observer.d.ts +157 -0
  1029. package/node_modules/@playcanvas/observer/types/utils.d.ts +33 -0
  1030. package/node_modules/@playcanvas/pcui/LICENSE +19 -0
  1031. package/node_modules/@playcanvas/pcui/README.md +164 -0
  1032. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1033. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1034. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1035. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1036. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1037. package/node_modules/@playcanvas/pcui/dist/module/src/Math/color-value.mjs +77 -0
  1038. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1039. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1040. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1041. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1042. package/node_modules/@playcanvas/pcui/dist/module/src/class.mjs +19 -0
  1043. package/node_modules/@playcanvas/pcui/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1044. package/node_modules/@playcanvas/pcui/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1045. package/node_modules/@playcanvas/pcui/dist/module/src/components/Button/index.mjs +119 -0
  1046. package/node_modules/@playcanvas/pcui/dist/module/src/components/Canvas/index.mjs +104 -0
  1047. package/node_modules/@playcanvas/pcui/dist/module/src/components/Code/index.mjs +43 -0
  1048. package/node_modules/@playcanvas/pcui/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1049. package/node_modules/@playcanvas/pcui/dist/module/src/components/Container/index.mjs +642 -0
  1050. package/node_modules/@playcanvas/pcui/dist/module/src/components/Divider/index.mjs +20 -0
  1051. package/node_modules/@playcanvas/pcui/dist/module/src/components/Element/index.mjs +829 -0
  1052. package/node_modules/@playcanvas/pcui/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1053. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridView/index.mjs +448 -0
  1054. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1055. package/node_modules/@playcanvas/pcui/dist/module/src/components/InfoBox/index.mjs +90 -0
  1056. package/node_modules/@playcanvas/pcui/dist/module/src/components/InputElement/index.mjs +186 -0
  1057. package/node_modules/@playcanvas/pcui/dist/module/src/components/Label/index.mjs +124 -0
  1058. package/node_modules/@playcanvas/pcui/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1059. package/node_modules/@playcanvas/pcui/dist/module/src/components/Menu/index.mjs +174 -0
  1060. package/node_modules/@playcanvas/pcui/dist/module/src/components/MenuItem/index.mjs +223 -0
  1061. package/node_modules/@playcanvas/pcui/dist/module/src/components/NumericInput/index.mjs +400 -0
  1062. package/node_modules/@playcanvas/pcui/dist/module/src/components/Overlay/index.mjs +108 -0
  1063. package/node_modules/@playcanvas/pcui/dist/module/src/components/Panel/index.mjs +400 -0
  1064. package/node_modules/@playcanvas/pcui/dist/module/src/components/Progress/index.mjs +45 -0
  1065. package/node_modules/@playcanvas/pcui/dist/module/src/components/RadioButton/index.mjs +113 -0
  1066. package/node_modules/@playcanvas/pcui/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1067. package/node_modules/@playcanvas/pcui/dist/module/src/components/SliderInput/index.mjs +333 -0
  1068. package/node_modules/@playcanvas/pcui/dist/module/src/components/Spinner/index.mjs +34 -0
  1069. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1070. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextInput/index.mjs +98 -0
  1071. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeView/index.mjs +1131 -0
  1072. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1073. package/node_modules/@playcanvas/pcui/dist/module/src/components/VectorInput/index.mjs +366 -0
  1074. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/search.mjs +194 -0
  1075. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/utils.mjs +43 -0
  1076. package/node_modules/@playcanvas/pcui/dist/module/src/index.mjs +56 -0
  1077. package/node_modules/@playcanvas/pcui/dist/pcui-theme-green.scss +2798 -0
  1078. package/node_modules/@playcanvas/pcui/dist/pcui-theme-grey.scss +2798 -0
  1079. package/node_modules/@playcanvas/pcui/package.json +150 -0
  1080. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1081. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1082. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1083. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1084. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1085. package/node_modules/@playcanvas/pcui/react/dist/module/src/Math/color-value.mjs +77 -0
  1086. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1087. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1088. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1089. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1090. package/node_modules/@playcanvas/pcui/react/dist/module/src/class.mjs +19 -0
  1091. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/component.mjs +11 -0
  1092. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1093. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/component.mjs +11 -0
  1094. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1095. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/component.mjs +16 -0
  1096. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/index.mjs +119 -0
  1097. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/component.mjs +16 -0
  1098. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/index.mjs +104 -0
  1099. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/component.mjs +11 -0
  1100. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/index.mjs +43 -0
  1101. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/component.mjs +16 -0
  1102. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1103. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/component.mjs +36 -0
  1104. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/index.mjs +642 -0
  1105. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/component.mjs +11 -0
  1106. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/index.mjs +20 -0
  1107. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/component.mjs +107 -0
  1108. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/index.mjs +829 -0
  1109. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/component.mjs +16 -0
  1110. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1111. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/component.mjs +38 -0
  1112. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/index.mjs +448 -0
  1113. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/component.mjs +11 -0
  1114. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1115. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/component.mjs +16 -0
  1116. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/index.mjs +90 -0
  1117. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InputElement/index.mjs +186 -0
  1118. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/component.mjs +16 -0
  1119. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/index.mjs +124 -0
  1120. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/component.mjs +42 -0
  1121. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1122. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/component.mjs +23 -0
  1123. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/index.mjs +174 -0
  1124. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/MenuItem/index.mjs +223 -0
  1125. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/component.mjs +11 -0
  1126. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/index.mjs +400 -0
  1127. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/component.mjs +11 -0
  1128. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/index.mjs +108 -0
  1129. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/component.mjs +32 -0
  1130. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/index.mjs +400 -0
  1131. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/component.mjs +11 -0
  1132. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/index.mjs +45 -0
  1133. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/component.mjs +11 -0
  1134. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/index.mjs +113 -0
  1135. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/component.mjs +21 -0
  1136. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1137. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/component.mjs +12 -0
  1138. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/index.mjs +333 -0
  1139. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/component.mjs +16 -0
  1140. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/index.mjs +34 -0
  1141. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/component.mjs +11 -0
  1142. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1143. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/component.mjs +23 -0
  1144. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/index.mjs +98 -0
  1145. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/component.mjs +52 -0
  1146. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/index.mjs +1131 -0
  1147. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/component.mjs +33 -0
  1148. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1149. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/component.mjs +11 -0
  1150. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/index.mjs +366 -0
  1151. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/search.mjs +194 -0
  1152. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/utils.mjs +43 -0
  1153. package/node_modules/@playcanvas/pcui/react/dist/module/src/index.mjs +39 -0
  1154. package/node_modules/@playcanvas/pcui/react/package.json +18 -0
  1155. package/node_modules/@playcanvas/pcui/react/types/Math/color-value.d.ts +3 -0
  1156. package/node_modules/@playcanvas/pcui/react/types/binding/BindingBase/index.d.ts +178 -0
  1157. package/node_modules/@playcanvas/pcui/react/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1158. package/node_modules/@playcanvas/pcui/react/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1159. package/node_modules/@playcanvas/pcui/react/types/binding/BindingTwoWay/index.d.ts +54 -0
  1160. package/node_modules/@playcanvas/pcui/react/types/binding/index.d.ts +5 -0
  1161. package/node_modules/@playcanvas/pcui/react/types/class.d.ts +17 -0
  1162. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/component.d.ts +9 -0
  1163. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/index.d.ts +140 -0
  1164. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/component.d.ts +9 -0
  1165. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/index.d.ts +41 -0
  1166. package/node_modules/@playcanvas/pcui/react/types/components/Button/component.d.ts +11 -0
  1167. package/node_modules/@playcanvas/pcui/react/types/components/Button/index.d.ts +75 -0
  1168. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/component.d.ts +11 -0
  1169. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/index.d.ts +61 -0
  1170. package/node_modules/@playcanvas/pcui/react/types/components/Code/component.d.ts +9 -0
  1171. package/node_modules/@playcanvas/pcui/react/types/components/Code/index.d.ts +33 -0
  1172. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/component.d.ts +11 -0
  1173. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/index.d.ts +99 -0
  1174. package/node_modules/@playcanvas/pcui/react/types/components/Container/component.d.ts +15 -0
  1175. package/node_modules/@playcanvas/pcui/react/types/components/Container/index.d.ts +292 -0
  1176. package/node_modules/@playcanvas/pcui/react/types/components/Divider/component.d.ts +10 -0
  1177. package/node_modules/@playcanvas/pcui/react/types/components/Divider/index.d.ts +13 -0
  1178. package/node_modules/@playcanvas/pcui/react/types/components/Element/component.d.ts +23 -0
  1179. package/node_modules/@playcanvas/pcui/react/types/components/Element/index.d.ts +671 -0
  1180. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/component.d.ts +11 -0
  1181. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/index.d.ts +152 -0
  1182. package/node_modules/@playcanvas/pcui/react/types/components/GridView/component.d.ts +14 -0
  1183. package/node_modules/@playcanvas/pcui/react/types/components/GridView/index.d.ts +103 -0
  1184. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/component.d.ts +9 -0
  1185. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/index.d.ts +82 -0
  1186. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/component.d.ts +11 -0
  1187. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/index.d.ts +71 -0
  1188. package/node_modules/@playcanvas/pcui/react/types/components/InputElement/index.d.ts +84 -0
  1189. package/node_modules/@playcanvas/pcui/react/types/components/Label/component.d.ts +11 -0
  1190. package/node_modules/@playcanvas/pcui/react/types/components/Label/index.d.ts +85 -0
  1191. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/component.d.ts +10 -0
  1192. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/index.d.ts +62 -0
  1193. package/node_modules/@playcanvas/pcui/react/types/components/Menu/component.d.ts +14 -0
  1194. package/node_modules/@playcanvas/pcui/react/types/components/Menu/index.d.ts +70 -0
  1195. package/node_modules/@playcanvas/pcui/react/types/components/MenuItem/index.d.ts +139 -0
  1196. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/component.d.ts +9 -0
  1197. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/index.d.ts +173 -0
  1198. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/component.d.ts +9 -0
  1199. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/index.d.ts +53 -0
  1200. package/node_modules/@playcanvas/pcui/react/types/components/Panel/component.d.ts +16 -0
  1201. package/node_modules/@playcanvas/pcui/react/types/components/Panel/index.d.ts +178 -0
  1202. package/node_modules/@playcanvas/pcui/react/types/components/Progress/component.d.ts +9 -0
  1203. package/node_modules/@playcanvas/pcui/react/types/components/Progress/index.d.ts +33 -0
  1204. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/component.d.ts +9 -0
  1205. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/index.d.ts +33 -0
  1206. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/component.d.ts +12 -0
  1207. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/index.d.ts +278 -0
  1208. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/component.d.ts +10 -0
  1209. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/index.d.ts +133 -0
  1210. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/component.d.ts +11 -0
  1211. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/index.d.ts +27 -0
  1212. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/component.d.ts +9 -0
  1213. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/index.d.ts +24 -0
  1214. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/component.d.ts +12 -0
  1215. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/index.d.ts +40 -0
  1216. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/component.d.ts +17 -0
  1217. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/index.d.ts +359 -0
  1218. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/component.d.ts +13 -0
  1219. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/index.d.ts +224 -0
  1220. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/component.d.ts +9 -0
  1221. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/index.d.ts +176 -0
  1222. package/node_modules/@playcanvas/pcui/react/types/components/components.d.ts +30 -0
  1223. package/node_modules/@playcanvas/pcui/react/types/components/index.d.ts +32 -0
  1224. package/node_modules/@playcanvas/pcui/react/types/helpers/search.d.ts +31 -0
  1225. package/node_modules/@playcanvas/pcui/react/types/helpers/utils.d.ts +2 -0
  1226. package/node_modules/@playcanvas/pcui/react/types/index.d.ts +4 -0
  1227. package/node_modules/@playcanvas/pcui/styles/dist/index.mjs +11 -0
  1228. package/node_modules/@playcanvas/pcui/styles/package.json +17 -0
  1229. package/node_modules/@playcanvas/pcui/types/Math/color-value.d.ts +3 -0
  1230. package/node_modules/@playcanvas/pcui/types/binding/BindingBase/index.d.ts +178 -0
  1231. package/node_modules/@playcanvas/pcui/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1232. package/node_modules/@playcanvas/pcui/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1233. package/node_modules/@playcanvas/pcui/types/binding/BindingTwoWay/index.d.ts +54 -0
  1234. package/node_modules/@playcanvas/pcui/types/binding/index.d.ts +5 -0
  1235. package/node_modules/@playcanvas/pcui/types/class.d.ts +17 -0
  1236. package/node_modules/@playcanvas/pcui/types/components/ArrayInput/index.d.ts +140 -0
  1237. package/node_modules/@playcanvas/pcui/types/components/BooleanInput/index.d.ts +41 -0
  1238. package/node_modules/@playcanvas/pcui/types/components/Button/index.d.ts +75 -0
  1239. package/node_modules/@playcanvas/pcui/types/components/Canvas/index.d.ts +61 -0
  1240. package/node_modules/@playcanvas/pcui/types/components/Code/index.d.ts +33 -0
  1241. package/node_modules/@playcanvas/pcui/types/components/ColorPicker/index.d.ts +99 -0
  1242. package/node_modules/@playcanvas/pcui/types/components/Container/index.d.ts +292 -0
  1243. package/node_modules/@playcanvas/pcui/types/components/Divider/index.d.ts +13 -0
  1244. package/node_modules/@playcanvas/pcui/types/components/Element/index.d.ts +671 -0
  1245. package/node_modules/@playcanvas/pcui/types/components/GradientPicker/index.d.ts +152 -0
  1246. package/node_modules/@playcanvas/pcui/types/components/GridView/index.d.ts +103 -0
  1247. package/node_modules/@playcanvas/pcui/types/components/GridViewItem/index.d.ts +82 -0
  1248. package/node_modules/@playcanvas/pcui/types/components/InfoBox/index.d.ts +71 -0
  1249. package/node_modules/@playcanvas/pcui/types/components/InputElement/index.d.ts +84 -0
  1250. package/node_modules/@playcanvas/pcui/types/components/Label/index.d.ts +85 -0
  1251. package/node_modules/@playcanvas/pcui/types/components/LabelGroup/index.d.ts +62 -0
  1252. package/node_modules/@playcanvas/pcui/types/components/Menu/index.d.ts +70 -0
  1253. package/node_modules/@playcanvas/pcui/types/components/MenuItem/index.d.ts +139 -0
  1254. package/node_modules/@playcanvas/pcui/types/components/NumericInput/index.d.ts +173 -0
  1255. package/node_modules/@playcanvas/pcui/types/components/Overlay/index.d.ts +53 -0
  1256. package/node_modules/@playcanvas/pcui/types/components/Panel/index.d.ts +178 -0
  1257. package/node_modules/@playcanvas/pcui/types/components/Progress/index.d.ts +33 -0
  1258. package/node_modules/@playcanvas/pcui/types/components/RadioButton/index.d.ts +33 -0
  1259. package/node_modules/@playcanvas/pcui/types/components/SelectInput/index.d.ts +278 -0
  1260. package/node_modules/@playcanvas/pcui/types/components/SliderInput/index.d.ts +133 -0
  1261. package/node_modules/@playcanvas/pcui/types/components/Spinner/index.d.ts +27 -0
  1262. package/node_modules/@playcanvas/pcui/types/components/TextAreaInput/index.d.ts +24 -0
  1263. package/node_modules/@playcanvas/pcui/types/components/TextInput/index.d.ts +40 -0
  1264. package/node_modules/@playcanvas/pcui/types/components/TreeView/index.d.ts +359 -0
  1265. package/node_modules/@playcanvas/pcui/types/components/TreeViewItem/index.d.ts +224 -0
  1266. package/node_modules/@playcanvas/pcui/types/components/VectorInput/index.d.ts +176 -0
  1267. package/node_modules/@playcanvas/pcui/types/components/index.d.ts +32 -0
  1268. package/node_modules/@playcanvas/pcui/types/helpers/search.d.ts +31 -0
  1269. package/node_modules/@playcanvas/pcui/types/helpers/utils.d.ts +2 -0
  1270. package/node_modules/@playcanvas/pcui/types/index.d.ts +20 -0
  1271. package/node_modules/babylonjs-gltf2interface/babylon.glTF2Interface.d.ts +1655 -0
  1272. package/node_modules/babylonjs-gltf2interface/license.md +71 -0
  1273. package/node_modules/babylonjs-gltf2interface/package.json +26 -0
  1274. package/package.json +31 -19
  1275. package/dist/editor-plugin-hierarchy-command.d.ts +0 -19
  1276. package/dist/editor-plugin-hierarchy-command.d.ts.map +0 -1
  1277. package/dist/editor-plugin-hierarchy-command.js +0 -119
  1278. package/dist/editor-plugin-hierarchy-command.js.map +0 -1
  1279. package/node_modules/@babel/helper-string-parser/lib/index.js.map +0 -1
  1280. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +0 -1
  1281. package/node_modules/@babel/helper-validator-identifier/lib/index.js.map +0 -1
  1282. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +0 -1
  1283. package/node_modules/@babel/parser/lib/index.js.map +0 -1
  1284. package/node_modules/@babel/types/lib/asserts/assertNode.js.map +0 -1
  1285. package/node_modules/@babel/types/lib/asserts/generated/index.js.map +0 -1
  1286. package/node_modules/@babel/types/lib/ast-types/generated/index.js.map +0 -1
  1287. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +0 -1
  1288. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +0 -1
  1289. package/node_modules/@babel/types/lib/builders/generated/index.js.map +0 -1
  1290. package/node_modules/@babel/types/lib/builders/generated/lowercase.js.map +0 -1
  1291. package/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +0 -1
  1292. package/node_modules/@babel/types/lib/builders/productions.js.map +0 -1
  1293. package/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +0 -1
  1294. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +0 -1
  1295. package/node_modules/@babel/types/lib/builders/validateNode.js.map +0 -1
  1296. package/node_modules/@babel/types/lib/clone/clone.js.map +0 -1
  1297. package/node_modules/@babel/types/lib/clone/cloneDeep.js.map +0 -1
  1298. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +0 -1
  1299. package/node_modules/@babel/types/lib/clone/cloneNode.js.map +0 -1
  1300. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +0 -1
  1301. package/node_modules/@babel/types/lib/comments/addComment.js.map +0 -1
  1302. package/node_modules/@babel/types/lib/comments/addComments.js.map +0 -1
  1303. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +0 -1
  1304. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +0 -1
  1305. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +0 -1
  1306. package/node_modules/@babel/types/lib/comments/inheritsComments.js.map +0 -1
  1307. package/node_modules/@babel/types/lib/comments/removeComments.js.map +0 -1
  1308. package/node_modules/@babel/types/lib/constants/generated/index.js.map +0 -1
  1309. package/node_modules/@babel/types/lib/constants/index.js.map +0 -1
  1310. package/node_modules/@babel/types/lib/converters/ensureBlock.js.map +0 -1
  1311. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +0 -1
  1312. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +0 -1
  1313. package/node_modules/@babel/types/lib/converters/toBlock.js.map +0 -1
  1314. package/node_modules/@babel/types/lib/converters/toComputedKey.js.map +0 -1
  1315. package/node_modules/@babel/types/lib/converters/toExpression.js.map +0 -1
  1316. package/node_modules/@babel/types/lib/converters/toIdentifier.js.map +0 -1
  1317. package/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +0 -1
  1318. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +0 -1
  1319. package/node_modules/@babel/types/lib/converters/toStatement.js.map +0 -1
  1320. package/node_modules/@babel/types/lib/converters/valueToNode.js.map +0 -1
  1321. package/node_modules/@babel/types/lib/definitions/core.js.map +0 -1
  1322. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map +0 -1
  1323. package/node_modules/@babel/types/lib/definitions/experimental.js.map +0 -1
  1324. package/node_modules/@babel/types/lib/definitions/flow.js.map +0 -1
  1325. package/node_modules/@babel/types/lib/definitions/index.js.map +0 -1
  1326. package/node_modules/@babel/types/lib/definitions/jsx.js.map +0 -1
  1327. package/node_modules/@babel/types/lib/definitions/misc.js.map +0 -1
  1328. package/node_modules/@babel/types/lib/definitions/placeholders.js.map +0 -1
  1329. package/node_modules/@babel/types/lib/definitions/typescript.js.map +0 -1
  1330. package/node_modules/@babel/types/lib/definitions/utils.js.map +0 -1
  1331. package/node_modules/@babel/types/lib/index.js.map +0 -1
  1332. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +0 -1
  1333. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +0 -1
  1334. package/node_modules/@babel/types/lib/modifications/inherits.js.map +0 -1
  1335. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +0 -1
  1336. package/node_modules/@babel/types/lib/modifications/removeProperties.js.map +0 -1
  1337. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +0 -1
  1338. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +0 -1
  1339. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map +0 -1
  1340. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +0 -1
  1341. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map +0 -1
  1342. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +0 -1
  1343. package/node_modules/@babel/types/lib/traverse/traverse.js.map +0 -1
  1344. package/node_modules/@babel/types/lib/traverse/traverseFast.js.map +0 -1
  1345. package/node_modules/@babel/types/lib/utils/deprecationWarning.js.map +0 -1
  1346. package/node_modules/@babel/types/lib/utils/inherit.js.map +0 -1
  1347. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +0 -1
  1348. package/node_modules/@babel/types/lib/utils/shallowEqual.js.map +0 -1
  1349. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +0 -1
  1350. package/node_modules/@babel/types/lib/validators/generated/index.js.map +0 -1
  1351. package/node_modules/@babel/types/lib/validators/is.js.map +0 -1
  1352. package/node_modules/@babel/types/lib/validators/isBinding.js.map +0 -1
  1353. package/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +0 -1
  1354. package/node_modules/@babel/types/lib/validators/isImmutable.js.map +0 -1
  1355. package/node_modules/@babel/types/lib/validators/isLet.js.map +0 -1
  1356. package/node_modules/@babel/types/lib/validators/isNode.js.map +0 -1
  1357. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +0 -1
  1358. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +0 -1
  1359. package/node_modules/@babel/types/lib/validators/isReferenced.js.map +0 -1
  1360. package/node_modules/@babel/types/lib/validators/isScope.js.map +0 -1
  1361. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +0 -1
  1362. package/node_modules/@babel/types/lib/validators/isType.js.map +0 -1
  1363. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +0 -1
  1364. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +0 -1
  1365. package/node_modules/@babel/types/lib/validators/isVar.js.map +0 -1
  1366. package/node_modules/@babel/types/lib/validators/matchesPattern.js.map +0 -1
  1367. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +0 -1
  1368. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +0 -1
  1369. package/node_modules/@babel/types/lib/validators/validate.js.map +0 -1
  1370. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +0 -37
  1371. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +0 -1
  1372. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +0 -451
  1373. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +0 -1
  1374. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts +0 -49
  1375. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +0 -1
  1376. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +0 -627
  1377. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +0 -1
  1378. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts +0 -52
  1379. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +0 -1
  1380. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +0 -450
  1381. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +0 -1
  1382. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +0 -21
  1383. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +0 -1
  1384. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +0 -75
  1385. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +0 -1
  1386. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts +0 -7
  1387. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts.map +0 -1
  1388. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js +0 -186
  1389. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js.map +0 -1
  1390. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +0 -5
  1391. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +0 -1
  1392. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +0 -98
  1393. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +0 -1
  1394. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +0 -63
  1395. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +0 -1
  1396. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +0 -301
  1397. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"local-editor-ui.js","sourceRoot":"","sources":["../src/local-editor-ui.ts"],"names":[],"mappings":"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","sourcesContent":["import * as LocalEditorPanels from './local-editor-ui-panels';\nimport { renderLocalEditorPluginPanel } from './local-editor-ui-plugin-panel';\nimport { createLocalEditorHierarchyController } from './local-editor-ui-hierarchy-controller';\nimport { createLocalEditorRootOwnership } from './local-editor-root-ownership';\nimport { createLocalEditorContextMenuController } from './local-editor-ui-context-menu';\nimport { createLocalEditorTooltipController } from './local-editor-ui-tooltip';\nimport { createLocalEditorViewportRevealController } from './local-editor-ui-dock-panel';\nimport { createLocalEditorModalDialog } from './local-editor-ui-modal-dialog';\nimport {\n parseLocalEditorBrowserInspectorGroupValueClipboardPayload,\n type LocalEditorBrowserInspectorGroupValueClipboardPayload,\n} from './local-editor-inspector-clipboard';\nimport {\n LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES,\n resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath,\n} from './local-editor-inspector-groups';\nimport {\n DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS,\n DEFAULT_EDITOR_TRANSFORM_TOOL_DESCRIPTORS,\n} from '@fps-games/editor-core';\nexport {\n createLocalEditorViewportRevealController,\n isLocalEditorElementVisibleInViewport,\n resolveLocalEditorViewportRevealScrollTop,\n revealLocalEditorElementInViewport,\n} from './local-editor-ui-dock-panel';\nexport type {\n LocalEditorElementRevealOptions,\n LocalEditorViewportRevealController,\n LocalEditorViewportRevealControllerOptions,\n LocalEditorViewportRevealInput,\n LocalEditorViewportScrollSnapshot,\n} from './local-editor-ui-dock-panel';\nexport {\n createLocalEditorHierarchyBlankMenu,\n createLocalEditorHierarchyCopyShortcutAction,\n createLocalEditorHierarchyDeleteShortcutAction,\n createLocalEditorHierarchyDuplicateShortcutAction,\n createLocalEditorHierarchyNodeMenu,\n createLocalEditorHierarchyPasteShortcutAction,\n createLocalEditorHierarchySelectAllShortcutAction,\n} from './local-editor-ui-hierarchy-actions';\nexport {\n createLocalEditorHierarchyController,\n resolveLocalEditorHierarchyCreateMarkerParentId,\n resolveLocalEditorHierarchyToolbarActiveId,\n} from './local-editor-ui-hierarchy-controller';\nexport {\n resolveLocalEditorHierarchySearchRows,\n} from './local-editor-ui-hierarchy-view';\nexport {\n createLocalEditorHierarchyAttachDialog,\n resolveLocalEditorHierarchyAttachTargets,\n} from './local-editor-ui-hierarchy-attach-dialog';\nexport {\n canLocalEditorHierarchyNodeHaveChildren,\n canLocalEditorHierarchyNodeDelete,\n canLocalEditorHierarchyNodeRename,\n canLocalEditorHierarchyNodeToggleEnabled,\n createLocalEditorHierarchyTreeModel,\n isLocalEditorHierarchyNodeSelectable,\n isLocalEditorHierarchyNodeMovable,\n} from './local-editor-ui-hierarchy-tree';\nexport {\n createLocalEditorContextMenuController,\n type LocalEditorContextMenuController,\n type LocalEditorContextMenuOpenInput,\n} from './local-editor-ui-context-menu';\nexport {\n createLocalEditorTooltipController,\n type LocalEditorTooltipController,\n} from './local-editor-ui-tooltip';\nexport type {\n LocalEditorHierarchyAction,\n LocalEditorHierarchyActionInput,\n LocalEditorHierarchyMenuDefinition,\n} from './local-editor-ui-hierarchy-actions';\nexport type {\n LocalEditorHierarchyController,\n LocalEditorHierarchyControllerOptions,\n} from './local-editor-ui-hierarchy-controller';\nexport type {\n LocalEditorHierarchyDropPlacement,\n LocalEditorHierarchyDropResolution,\n LocalEditorHierarchyTreeModel,\n LocalEditorHierarchyTreeNode,\n LocalEditorHierarchyTreeOptions,\n} from './local-editor-ui-hierarchy-tree';\nexport type {\n LocalEditorHierarchyAttachDialogController,\n LocalEditorHierarchyAttachDialogOpenInput,\n LocalEditorHierarchyAttachDialogOptions,\n LocalEditorHierarchyAttachConfirmResponse,\n LocalEditorHierarchyAttachConfirmResult,\n LocalEditorHierarchyAttachTarget,\n LocalEditorHierarchyAttachTargetInput,\n LocalEditorHierarchyAttachTargetSelection,\n} from './local-editor-ui-hierarchy-attach-dialog';\nimport { createLocalEditorWorkbenchInputRouter } from './local-editor-ui-input-router';\nimport { createLocalEditorPanelRegistry } from './local-editor-ui-panel-registry';\nimport * as LocalEditorShared from './local-editor-ui-shared';\nimport { findLocalEditorRenderingAction } from './local-editor-rendering-actions';\nimport { createShortcutHelpPanel as createLocalEditorShortcutHelpPanel } from './local-editor-ui-shortcuts';\nimport {\n applyLocalEditorTheme,\n ensureLocalEditorTheme,\n LOCAL_EDITOR_THEME_CLASS,\n normalizeLocalEditorThemeName,\n type LocalEditorThemeName,\n} from './local-editor-ui-theme';\nimport {\n createDefaultLocalEditorWorkbenchLayout,\n createLocalEditorWorkbenchLayoutController,\n createLocalEditorWorkbench,\n createSceneHeaderToolbar,\n createWorkbenchPanelContent,\n type LocalEditorWorkbenchLayoutState,\n} from './local-editor-ui-workbench';\nimport { createLocalEditorIcon, isLocalEditorIconName, type LocalEditorIconName } from './local-editor-ui-icons';\nimport {\n createLocalEditorStatusCenterViewModel,\n resolveLocalEditorStatusDiagnostics,\n shouldCloseLocalEditorStatusCenter,\n} from './local-editor-ui-status-diagnostics';\nimport { formatLocalEditorStatusDiagnosticDetails } from './local-editor-ui-hierarchy-projection';\nimport {\n resolveLocalEditorBrowserAssetKind,\n} from './local-editor-ui-asset-kind';\nimport {\n createLocalEditorPrefabStageTitle,\n findLocalEditorPrefabStageStructureItem,\n formatLocalEditorPrefabStageComparisonPreviewStatus,\n LOCAL_EDITOR_PREFAB_COMPARISON_COLUMN_WIDTH_PX,\n resolveLocalEditorRightDockVisibility,\n resolveLocalEditorPrefabStageComparisonPreviewTone,\n resolveLocalEditorPrefabStageWorkbenchLayout,\n resolveLocalEditorPreviewToolSupport,\n shouldLocalEditorClosePerformanceMonitor,\n shouldLocalEditorPrefabStageBlockHierarchyShortcut,\n shouldShowLocalEditorPrefabComparisonColumn,\n shouldToggleLocalEditorPrefabComparisonShortcut,\n type LocalEditorPreviewToolMatrixKey,\n} from './local-editor-ui-prefab-stage';\nimport type {\n LocalEditorAssetBrowserTab,\n LocalEditorBottomDockTab,\n LocalEditorBrowserAgentBridgeStatusKind,\n LocalEditorBrowserAssetActionInput,\n LocalEditorBrowserAssetPreview,\n LocalEditorBrowserCoordinateAxesState,\n LocalEditorBrowserInspectorAssetPickerOption,\n LocalEditorBrowserUiAssetItem,\n LocalEditorBrowserInspectorCommitMode,\n LocalEditorBrowserInspectorActionInput,\n LocalEditorBrowserInspectorControlKind,\n LocalEditorBrowserInspectorEditSource,\n LocalEditorBrowserInspectorPersistenceMode,\n LocalEditorBrowserInspectorProperty,\n LocalEditorBrowserPlacementMode,\n LocalEditorBrowserPerformanceStats,\n LocalEditorBrowserPrefabComparisonPreviewInteraction,\n LocalEditorBrowserPrefabComparisonPreviewSurface,\n LocalEditorBrowserPrefabStageComparisonPreview,\n LocalEditorBrowserPrefabStageComparisonPreviewMode,\n LocalEditorBrowserPrefabStageComparisonPreviewStatus,\n LocalEditorBrowserPrefabStageImportStats,\n LocalEditorBrowserPrefabStageState,\n LocalEditorBrowserPrefabStageStructureItem,\n LocalEditorBrowserRenderingActionInput,\n LocalEditorBrowserRenderingPropertyChangeInput,\n LocalEditorBrowserRenderingPropertyCommitMode,\n LocalEditorBrowserRenderingPropertyControlKind,\n LocalEditorBrowserRenderingPropertyEditSource,\n LocalEditorBrowserRenderingPropertyValueType,\n LocalEditorBrowserSceneFrameStats,\n LocalEditorBrowserMarkerRelationActionInput,\n LocalEditorBrowserMarkerTypeActionInput,\n LocalEditorBrowserTransformAction,\n LocalEditorBrowserTransformSpace,\n LocalEditorBrowserTransformSnapStepKind,\n LocalEditorBrowserTransformTool,\n LocalEditorBrowserTransformToolDescriptor,\n LocalEditorBrowserUiCallbacks,\n LocalEditorBrowserViewportProjectionMode,\n LocalEditorBrowserViewportMeasurementState,\n LocalEditorBrowserViewportUtilityTool,\n LocalEditorBrowserViewportViewPreset,\n LocalEditorBrowserViewportSpatialOverlayState,\n LocalEditorBrowserUi,\n LocalEditorBrowserUiOptions,\n LocalEditorBrowserUiPreviewState,\n LocalEditorBrowserUiPropertyInput,\n LocalEditorBrowserUiState,\n LocalEditorBrowserHierarchyCommandPrecondition,\n LocalEditorBrowserStatusDiagnostic,\n LocalEditorContextMenuItem,\n LocalEditorRightDockTab,\n LocalEditorThemeController,\n} from './local-editor-ui-types';\n\nexport {\n applyLocalEditorBrowserInspectorControlBinding,\n createLocalEditorBrowserInspectorControlRegistry,\n formatLocalEditorBrowserInspectorNumberValue,\n formatLocalEditorBrowserInspectorValue,\n parseLocalEditorBrowserInspectorNumberValue,\n resolveLocalEditorBrowserInspectorSectionStatus,\n resolveLocalEditorBrowserInspectorControlRegistration,\n} from './local-editor-ui-panels';\nexport {\n createLocalEditorBrowserInspectorGroupValueClipboardPayload,\n createLocalEditorBrowserInspectorVectorCopyPayload,\n parseLocalEditorBrowserInspectorGroupValueClipboardPayload,\n} from './local-editor-inspector-clipboard';\nexport {\n LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES,\n isLocalEditorBrowserInspectorTransformVectorGroupPath,\n resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath,\n resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath,\n resolveLocalEditorBrowserInspectorVectorGroupPathFromProperties,\n} from './local-editor-inspector-groups';\nexport type {\n LocalEditorBrowserInspectorVec3Axis,\n LocalEditorBrowserInspectorVectorGroupAxis,\n} from './local-editor-inspector-groups';\nexport type {\n LocalEditorBrowserInspectorAccessMode,\n LocalEditorBrowserInspectorRenderOptions,\n LocalEditorBrowserInspectorSectionStatus,\n} from './local-editor-ui-panels';\n\nexport type {\n LocalEditorThemeName,\n} from './local-editor-ui-theme';\n\nexport {\n DEFAULT_LOCAL_EDITOR_THEME,\n LOCAL_EDITOR_THEME_CLASS,\n applyLocalEditorTheme,\n normalizeLocalEditorThemeName,\n} from './local-editor-ui-theme';\n\nexport {\n LOCAL_EDITOR_ICON_NAMES,\n createLocalEditorIcon,\n isLocalEditorIconName,\n resolveLocalEditorIconName,\n} from './local-editor-ui-icons';\n\nexport type {\n LocalEditorIconName,\n LocalEditorIconOptions,\n} from './local-editor-ui-icons';\n\nexport type {\n LocalEditorBrowserAgentBridgeStatus,\n LocalEditorBrowserAgentBridgeStatusKind,\n LocalEditorAssetBrowserTab,\n LocalEditorBrowserAssetActionInput,\n LocalEditorBottomDockTab,\n LocalEditorBrowserAuthoringSource,\n LocalEditorBrowserCoordinateAxis,\n LocalEditorBrowserCoordinateAxesState,\n LocalEditorBrowserCoordinateAxisId,\n LocalEditorBrowserHierarchyEnabledChangeInput,\n LocalEditorBrowserHierarchySelectionInput,\n LocalEditorBrowserHistoryEntry,\n LocalEditorBrowserHistoryView,\n LocalEditorBrowserHierarchyContextActionContext,\n LocalEditorBrowserHierarchyContextActionPlacement,\n LocalEditorBrowserHierarchyContextActionRegistration,\n LocalEditorBrowserInspectorCommitMode,\n LocalEditorBrowserInspectorConflictStrategy,\n LocalEditorBrowserInspectorControlBindingOptions,\n LocalEditorBrowserInspectorControlKind,\n LocalEditorBrowserInspectorControlRegistration,\n LocalEditorBrowserInspectorControlRenderContext,\n LocalEditorBrowserInspectorControlRenderer,\n LocalEditorBrowserInspectorEffectMode,\n LocalEditorBrowserInspectorEditSource,\n LocalEditorBrowserInspectorObject,\n LocalEditorBrowserInspectorOptions,\n LocalEditorBrowserInspectorPersistenceMode,\n LocalEditorBrowserInspectorProperty,\n LocalEditorBrowserInspectorSection,\n LocalEditorBrowserPlacementMode,\n LocalEditorBrowserMarkerPanelState,\n LocalEditorBrowserMarkerRelationActionInput,\n LocalEditorBrowserMarkerRelationEndpointItem,\n LocalEditorBrowserMarkerRelationItem,\n LocalEditorBrowserMarkerRelationTypeItem,\n LocalEditorBrowserMarkerTypeActionInput,\n LocalEditorBrowserMarkerTypeItem,\n LocalEditorBrowserPerformanceStats,\n LocalEditorBrowserRenderingPanelState,\n LocalEditorBrowserRenderingActionInput,\n LocalEditorBrowserRenderingProperty,\n LocalEditorBrowserRenderingPropertyChangeInput,\n LocalEditorBrowserRenderingPropertyCommitMode,\n LocalEditorBrowserRenderingPropertyControlKind,\n LocalEditorBrowserRenderingPropertyEditSource,\n LocalEditorBrowserRenderingPropertyValueType,\n LocalEditorBrowserRenderingSection,\n LocalEditorBrowserRenderingSystem,\n LocalEditorBrowserRenderingSystemKind,\n LocalEditorBrowserPrimitiveShape,\n LocalEditorBrowserSceneFrameStats,\n LocalEditorBrowserSceneGraphCreateGroupIntent,\n LocalEditorBrowserSceneGraphCreatePrimitiveIntent,\n LocalEditorBrowserSceneGraphDeleteIntent,\n LocalEditorBrowserSceneGraphDuplicateIntent,\n LocalEditorBrowserSceneGraphDropIntent,\n LocalEditorBrowserSceneGraphActionResponse,\n LocalEditorBrowserSceneGraphActionResult,\n LocalEditorBrowserSceneGraphDropPlacement,\n LocalEditorBrowserSceneGraphGroupSelectionIntent,\n LocalEditorBrowserSceneGraphMoveIntent,\n LocalEditorBrowserSceneGraphMovePlacement,\n LocalEditorBrowserSceneGraphRenameIntent,\n LocalEditorBrowserSerializedMultiObject,\n LocalEditorBrowserSerializedObject,\n LocalEditorBrowserSerializedProperty,\n LocalEditorBrowserSerializedValueType,\n LocalEditorBrowserTransformConstraint,\n LocalEditorBrowserTransformAction,\n LocalEditorBrowserTransformOperationSettings,\n LocalEditorBrowserTransformOperationState,\n LocalEditorBrowserTransformSnapStepKind,\n LocalEditorBrowserTransformSpace,\n LocalEditorBrowserTransformTool,\n LocalEditorBrowserTransformToolState,\n LocalEditorBrowserViewportSpatialOverlayState,\n LocalEditorBrowserPrefabAssetEditorData,\n LocalEditorBrowserPrefabComparisonPreviewSurface,\n LocalEditorBrowserPrefabStageComparisonPreview,\n LocalEditorBrowserPrefabStageComparisonPreviewMode,\n LocalEditorBrowserPrefabStageComparisonPreviewStatus,\n LocalEditorBrowserPrefabStageImportStats,\n LocalEditorBrowserPrefabStageState,\n LocalEditorBrowserPrefabStageStructureItem,\n LocalEditorBrowserUi,\n LocalEditorBrowserUiAssetItem,\n LocalEditorBrowserUiCallbacks,\n LocalEditorBrowserUiHierarchyItem,\n LocalEditorBrowserUiOptions,\n LocalEditorBrowserUiPreviewState,\n LocalEditorBrowserUiPropertyInput,\n LocalEditorBrowserUiState,\n LocalEditorRightDockTab,\n LocalEditorThemeController,\n LocalEditorContextAction,\n LocalEditorContextMenuItem,\n} from './local-editor-ui-types';\n\nconst PENDING_NUMERIC_PROPERTY_INPUT = Symbol('pending-numeric-property-input');\ntype LocalEditorPendingNumericPropertyInput = typeof PENDING_NUMERIC_PROPERTY_INPUT;\n\nexport interface LocalEditorEditableFocusSnapshot {\n selector: string;\n value: string | null;\n selectionStart: number | null;\n selectionEnd: number | null;\n selectionDirection: 'forward' | 'backward' | 'none' | null;\n}\n\nfunction readInspectorInputValue(\n input: HTMLInputElement | HTMLSelectElement,\n source: LocalEditorBrowserInspectorEditSource,\n): number | string | boolean | Record<string, unknown> | null | LocalEditorPendingNumericPropertyInput {\n const control = input.dataset.serializedControl;\n const valueType = input.dataset.serializedValueType;\n if ((control === 'vec2' || control === 'vec3') && input instanceof HTMLInputElement) {\n return readInspectorVectorInputValue(input, source) ?? PENDING_NUMERIC_PROPERTY_INPUT;\n }\n if (control === 'enum' && input instanceof HTMLSelectElement) {\n const option = input.selectedOptions.item(0);\n const encoded = option?.dataset.serializedOptionValue;\n if (encoded != null) {\n try {\n return JSON.parse(encoded) as string | number | boolean | Record<string, unknown> | null;\n } catch {\n return option?.value ?? input.value;\n }\n }\n }\n if (input instanceof HTMLInputElement && input.type === 'checkbox') return input.checked;\n if (control === 'boolean' || valueType === 'boolean') return input.value === 'true';\n if (control === 'number' || valueType === 'number') {\n const mode = source === 'input' && readInspectorCommitMode(input) === 'live' ? 'live' : 'final';\n return LocalEditorPanels.parseLocalEditorBrowserInspectorNumberValue(input.value, mode)\n ?? PENDING_NUMERIC_PROPERTY_INPUT;\n }\n if (control === 'color' && input instanceof HTMLInputElement && input.type === 'color') {\n const value = input.value.replace('#', '');\n const numeric = Number.parseInt(value, 16);\n if (!Number.isFinite(numeric)) return null;\n return {\n r: ((numeric >> 16) & 255) / 255,\n g: ((numeric >> 8) & 255) / 255,\n b: (numeric & 255) / 255,\n };\n }\n if (input.dataset.serializedJsonValue === 'true') {\n try {\n const parsed = JSON.parse(input.value) as unknown;\n return isInspectorSerializedInputValue(parsed) ? parsed : null;\n } catch {\n return null;\n }\n }\n return input.value;\n}\n\nfunction isInspectorSerializedInputValue(value: unknown): value is number | string | boolean | Record<string, unknown> | null {\n return value == null\n || typeof value === 'number'\n || typeof value === 'string'\n || typeof value === 'boolean'\n || (!!value && typeof value === 'object' && !Array.isArray(value));\n}\n\nconst TRANSFORM_TOOL_ICONS: Record<LocalEditorBrowserTransformTool, LocalEditorIconName> = {\n select: 'select',\n move: 'move',\n rotate: 'rotate',\n scale: 'scale',\n};\n\nconst TRANSFORM_SPACE_ICONS: Record<LocalEditorBrowserTransformSpace, LocalEditorIconName> = {\n world: 'world',\n local: 'local',\n};\n\nconst PLACEMENT_MODE_ICONS: Record<LocalEditorBrowserPlacementMode, LocalEditorIconName> = {\n off: 'place-off',\n ground: 'place-ground',\n surface: 'place-surface',\n};\n\nconst PLACEMENT_MODE_DESCRIPTIONS: Record<LocalEditorBrowserPlacementMode, string> = {\n off: '关闭放置模式',\n ground: '放置到 XZ 地面',\n surface: '放置到场景表面',\n};\n\nconst VIEW_PRESET_ICONS: Record<LocalEditorBrowserViewportViewPreset, LocalEditorIconName> = {\n perspective: 'view-perspective',\n top: 'view-top',\n bottom: 'view-top',\n front: 'view-front',\n back: 'view-front',\n left: 'view-right',\n right: 'view-right',\n iso: 'view-perspective',\n threeQuarterTop: 'view-perspective',\n};\n\nconst VIEW_PRESET_TOOLTIPS: Record<LocalEditorBrowserViewportViewPreset, string> = {\n perspective: '透视视图',\n top: '顶视图 · 自动切换正交',\n bottom: '底视图 · 自动切换正交',\n front: '前视图 · 自动切换正交',\n back: '后视图 · 自动切换正交',\n left: '左视图 · 自动切换正交',\n right: '右视图 · 自动切换正交',\n iso: '等距视图 · 自动切换正交',\n threeQuarterTop: '斜 45° 俯视图',\n};\n\nconst VIEWPORT_OVERLAY_TOGGLE_LABELS = {\n bounds: '包围盒',\n dimensions: '尺寸摘要',\n edgeLengths: '边长标注',\n anchor: '锚点坐标',\n} as const;\n\nconst VIEWPORT_PROJECTION_LABELS: Record<LocalEditorBrowserViewportProjectionMode, string> = {\n perspective: '透视',\n orthographic: '正交',\n};\n\nconst STATIC_SHADOW_BAKE_ACTION_ID = 'bake-static-shadows';\n\nconst TRANSFORM_ACTION_GROUPS = [\n {\n title: '对齐到 Active Object',\n hint: '需要至少 2 个选中对象',\n actions: ['align-x', 'align-y', 'align-z', 'align-all'],\n },\n {\n title: '均匀分布',\n hint: '需要至少 3 个选中对象',\n actions: ['distribute-x', 'distribute-y', 'distribute-z'],\n },\n] as const satisfies ReadonlyArray<{\n title: string;\n hint: string;\n actions: ReadonlyArray<LocalEditorBrowserTransformAction>;\n}>;\n\nconst TRANSFORM_ACTION_LABELS: Record<LocalEditorBrowserTransformAction, string> = {\n 'align-x': '对齐 X',\n 'align-y': '对齐 Y',\n 'align-z': '对齐 Z',\n 'align-all': '对齐全',\n 'distribute-x': '分布 X',\n 'distribute-y': '分布 Y',\n 'distribute-z': '分布 Z',\n};\n\nfunction createTransformToolTooltip(\n descriptor: LocalEditorBrowserTransformToolDescriptor,\n): string {\n const toolLabel = descriptor.shortcut\n ? `${descriptor.label}工具 (${descriptor.shortcut})`\n : `${descriptor.label}工具`;\n return `${toolLabel} · ${LocalEditorShared.toTransformMouseHint(descriptor.tool)}`;\n}\n\nfunction createToolbarIconButton(\n doc: Document,\n label: string,\n icon: LocalEditorIconName,\n tooltip = label,\n toolbarRole: 'command' | 'toggle' | 'settings' = 'command',\n): HTMLButtonElement {\n return LocalEditorShared.createButton(doc, label, {\n icon,\n labelMode: 'icon-only',\n variant: 'toolbar-icon',\n tooltip,\n ariaLabel: tooltip,\n toolbarRole,\n });\n}\n\nfunction setToolbarButtonTooltip(button: HTMLButtonElement, tooltip: string): void {\n button.dataset.editorTooltip = tooltip;\n button.setAttribute('aria-label', tooltip);\n}\n\nfunction createAgentBridgeStatusTooltip(\n status: LocalEditorBrowserUiState['agentBridge'] | null | undefined,\n): string {\n const label = formatAgentBridgeStatusLabel(status?.status);\n const details = [\n `Agent Bridge:${label}`,\n status?.url ? `URL ${status.url}` : '',\n status?.sessionId ? `Session ${status.sessionId}` : '',\n status ? `Capabilities ${status.capabilityCount}` : '',\n status?.lastError ? `Error ${status.lastError}` : '',\n status?.connectedAt ? `Connected ${status.connectedAt}` : '',\n status?.lastChangedAt ? `Updated ${status.lastChangedAt}` : '',\n ].filter(Boolean);\n return details.join(' · ');\n}\n\nfunction formatAgentBridgeStatusLabel(\n status: LocalEditorBrowserAgentBridgeStatusKind | null | undefined,\n): string {\n switch (status) {\n case 'disabled':\n return '未启用';\n case 'connecting':\n return '连接中';\n case 'connected':\n return '已连接';\n case 'disconnected':\n return '已断开';\n case 'error':\n return '错误';\n default:\n return '未知';\n }\n}\n\nfunction resolveAgentBridgeStatusToneColor(\n status: LocalEditorBrowserUiState['agentBridge'] | null | undefined,\n): string {\n switch (status?.status) {\n case 'connected':\n return 'var(--fps-editor-success)';\n case 'connecting':\n return 'var(--fps-editor-accent-strong)';\n case 'disconnected':\n return 'var(--fps-editor-warn)';\n case 'error':\n return 'var(--fps-editor-danger-strong)';\n case 'disabled':\n default:\n return 'var(--fps-editor-muted)';\n }\n}\n\nfunction setToolbarButtonIcon(\n doc: Document,\n button: HTMLButtonElement,\n icon: LocalEditorIconName,\n): void {\n const currentIcon = button.querySelector<HTMLElement>('[data-editor-icon]');\n if (currentIcon?.dataset.editorIcon === icon) return;\n const nextIcon = createLocalEditorIcon(doc, icon);\n if (currentIcon) currentIcon.replaceWith(nextIcon);\n else button.prepend(nextIcon);\n}\n\nfunction readInspectorVectorInputValue(\n input: HTMLInputElement,\n source: LocalEditorBrowserInspectorEditSource,\n): Record<string, number> | null {\n const wrapper = input.closest<HTMLElement>('[data-inspector-vector-control]');\n const values: Record<string, number> = {};\n const mode = source === 'input' && readInspectorCommitMode(input) === 'live' ? 'live' : 'final';\n const fields = wrapper\n ? Array.from(wrapper.querySelectorAll<HTMLInputElement>('input[data-serialized-vector-axis]'))\n : [input];\n for (const field of fields) {\n const axis = field.dataset.serializedVectorAxis;\n if (!axis) continue;\n const numeric = LocalEditorPanels.parseLocalEditorBrowserInspectorNumberValue(field.value, mode);\n if (numeric == null) return null;\n values[axis] = numeric;\n }\n return values;\n}\n\nfunction createInspectorPropertyInput(\n input: HTMLInputElement | HTMLSelectElement,\n source: LocalEditorBrowserInspectorEditSource,\n): LocalEditorBrowserUiPropertyInput | null {\n if (!input.dataset.serializedPath || !input.dataset.serializedTargetId) return null;\n const targetIds = input.dataset.serializedTargetIds\n ? input.dataset.serializedTargetIds.split(',').filter(Boolean)\n : undefined;\n const value = readInspectorInputValue(input, source);\n if (value === PENDING_NUMERIC_PROPERTY_INPUT) return null;\n\n return {\n targetId: input.dataset.serializedTargetId,\n targetIds,\n path: input.dataset.serializedPath,\n value,\n control: input.dataset.serializedControl as LocalEditorBrowserInspectorControlKind | undefined,\n valueType: input.dataset.serializedValueType as LocalEditorBrowserInspectorProperty['valueType'] | undefined,\n commitMode: input.dataset.serializedCommitMode as LocalEditorBrowserInspectorCommitMode | undefined,\n persistence: input.dataset.serializedPersistence as LocalEditorBrowserInspectorPersistenceMode | undefined,\n source: (input.dataset.serializedEditSource as LocalEditorBrowserInspectorEditSource | undefined) ?? source,\n };\n}\n\nfunction createInspectorPropertyInputs(\n input: HTMLInputElement | HTMLSelectElement,\n source: LocalEditorBrowserInspectorEditSource,\n lockedVectorGroups: ReadonlySet<string>,\n): LocalEditorBrowserUiPropertyInput[] | null {\n const propertyInput = createInspectorPropertyInput(input, source);\n if (!propertyInput) return null;\n const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(propertyInput.path);\n const forceVectorLock = input.dataset.serializedForceVectorLock === 'true';\n if (!groupPath || (!forceVectorLock && !lockedVectorGroups.has(groupPath))) return [propertyInput];\n if (propertyInput.control !== 'number' || propertyInput.valueType !== 'number') return [propertyInput];\n if (typeof propertyInput.value !== 'number' || !Number.isFinite(propertyInput.value)) return [propertyInput];\n return LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.map(axis => ({\n ...propertyInput,\n path: `${groupPath}.${axis}`,\n }));\n}\n\nfunction createInspectorVectorPastePropertyInputs(\n input: HTMLInputElement,\n payload: LocalEditorBrowserInspectorGroupValueClipboardPayload,\n): LocalEditorBrowserUiPropertyInput[] | null {\n const targetGroupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(input.dataset.serializedPath);\n if (!targetGroupPath || payload.groupPath !== targetGroupPath) return null;\n if (!input.dataset.serializedTargetId) return null;\n const targetIds = input.dataset.serializedTargetIds\n ? input.dataset.serializedTargetIds.split(',').filter(Boolean)\n : undefined;\n return LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.map(axis => ({\n targetId: input.dataset.serializedTargetId!,\n targetIds,\n path: `${targetGroupPath}.${axis}`,\n value: payload.value[axis],\n control: 'number',\n valueType: 'number',\n commitMode: input.dataset.serializedCommitMode as LocalEditorBrowserInspectorCommitMode | undefined,\n persistence: input.dataset.serializedPersistence as LocalEditorBrowserInspectorPersistenceMode | undefined,\n source: 'input',\n }));\n}\n\nfunction applyInspectorVectorPasteToDom(\n input: HTMLInputElement,\n payload: LocalEditorBrowserInspectorGroupValueClipboardPayload,\n): void {\n const group = input.closest<HTMLElement>('[data-editor-inspector-vector-group-path]');\n const fields = group\n ? Array.from(group.querySelectorAll<HTMLInputElement>('input[data-serialized-path]'))\n : [input];\n for (const field of fields) {\n const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(field.dataset.serializedPath);\n if (groupPath !== payload.groupPath) continue;\n const axis = field.dataset.serializedPath?.slice(groupPath.length + 1);\n if (axis !== 'x' && axis !== 'y' && axis !== 'z') continue;\n field.value = LocalEditorPanels.formatLocalEditorBrowserInspectorNumberValue(payload.value[axis]);\n }\n}\n\nfunction applyInspectorLockedVectorInputToDom(\n input: HTMLInputElement | HTMLSelectElement,\n propertyInputs: readonly LocalEditorBrowserUiPropertyInput[],\n): void {\n if (!(input instanceof HTMLInputElement)) return;\n const first = propertyInputs[0];\n if (!first || propertyInputs.length !== LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.length) return;\n if (typeof first.value !== 'number' || !Number.isFinite(first.value)) return;\n const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(first.path);\n if (!groupPath) return;\n const group = input.closest<HTMLElement>('[data-editor-inspector-vector-group-path]');\n const fields = group\n ? Array.from(group.querySelectorAll<HTMLInputElement>('input[data-serialized-path]'))\n : [input];\n const formatted = LocalEditorPanels.formatLocalEditorBrowserInspectorNumberValue(first.value);\n for (const field of fields) {\n if (resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(field.dataset.serializedPath) === groupPath) {\n field.value = formatted;\n }\n }\n}\n\nfunction readRenderingInputValue(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n source: LocalEditorBrowserRenderingPropertyEditSource,\n): unknown | LocalEditorPendingNumericPropertyInput {\n const control = input.dataset.renderingControl;\n const valueType = input.dataset.renderingValueType;\n if (control === 'enum' && input instanceof HTMLSelectElement) {\n const option = input.selectedOptions.item(0);\n const encoded = option?.dataset.serializedOptionValue;\n if (encoded != null) {\n try {\n return JSON.parse(encoded) as string | number | boolean | Record<string, unknown> | null;\n } catch {\n return option?.value ?? input.value;\n }\n }\n return input.value;\n }\n if (input instanceof HTMLInputElement && input.type === 'checkbox') return input.checked;\n if (input instanceof HTMLInputElement && input.type === 'color') {\n const value = input.value.replace('#', '');\n const numeric = Number.parseInt(value, 16);\n if (!Number.isFinite(numeric)) return null;\n return {\n r: ((numeric >> 16) & 255) / 255,\n g: ((numeric >> 8) & 255) / 255,\n b: (numeric & 255) / 255,\n };\n }\n if (control === 'number' || valueType === 'number') {\n const mode = source === 'input' && readRenderingCommitMode(input) === 'live' ? 'live' : 'final';\n return LocalEditorPanels.parseLocalEditorBrowserInspectorNumberValue(input.value, mode)\n ?? PENDING_NUMERIC_PROPERTY_INPUT;\n }\n if (control === 'string-list' || valueType === 'string-list') {\n return input.value\n .split(/\\r?\\n/)\n .map(value => value.trim())\n .filter(Boolean);\n }\n if (control === 'boolean' || valueType === 'boolean') return input.value === 'true';\n return input.value;\n}\n\nfunction createRenderingPropertyInput(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n source: LocalEditorBrowserRenderingPropertyEditSource,\n): LocalEditorBrowserRenderingPropertyChangeInput | null {\n const sectionId = input.dataset.renderingSectionId;\n const systemId = input.dataset.renderingSystemId;\n const path = input.dataset.renderingPath;\n if (!sectionId || !systemId || !path) return null;\n const value = readRenderingInputValue(input, source);\n if (value === PENDING_NUMERIC_PROPERTY_INPUT) return null;\n return {\n sectionId,\n systemId,\n path,\n value,\n control: input.dataset.renderingControl as LocalEditorBrowserRenderingPropertyControlKind | undefined,\n valueType: input.dataset.renderingValueType as LocalEditorBrowserRenderingPropertyValueType | undefined,\n commitMode: input.dataset.renderingCommitMode as LocalEditorBrowserRenderingPropertyCommitMode | undefined,\n source,\n };\n}\n\nfunction createRenderingActionInput(\n button: HTMLButtonElement,\n): LocalEditorBrowserRenderingActionInput | null {\n const actionId = button.dataset.editorRenderingAction;\n if (!actionId) return null;\n const params = parseRenderingActionParams(button.dataset.renderingActionParams);\n return {\n actionId,\n sectionId: button.dataset.renderingSectionId,\n systemId: button.dataset.renderingSystemId,\n path: button.dataset.renderingPath,\n ...(params ? { params } : {}),\n };\n}\n\nfunction createInspectorActionInput(\n button: HTMLButtonElement,\n): LocalEditorBrowserInspectorActionInput | null {\n const actionId = button.dataset.editorInspectorAction;\n if (!actionId) return null;\n const params = parseRenderingActionParams(button.dataset.editorInspectorActionParams);\n const targetIds = parseInspectorActionTargetIds(button.dataset.editorInspectorActionTargetIds);\n return {\n actionId,\n targetId: button.dataset.editorInspectorActionTargetId || null,\n targetIds,\n path: button.dataset.editorInspectorActionPath,\n ...(params ? { params } : {}),\n };\n}\n\nfunction parseInspectorActionTargetIds(value: string | undefined): string[] | undefined {\n if (!value) return undefined;\n try {\n const parsed = JSON.parse(value) as unknown;\n return Array.isArray(parsed) && parsed.every(item => typeof item === 'string')\n ? parsed\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction parseRenderingActionParams(value: string | undefined): Record<string, unknown> | null {\n if (!value) return null;\n try {\n const parsed = JSON.parse(value) as unknown;\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? parsed as Record<string, unknown>\n : null;\n } catch {\n return null;\n }\n}\n\nfunction readInspectorCommitMode(input: HTMLInputElement | HTMLSelectElement): LocalEditorBrowserInspectorCommitMode {\n return (input.dataset.serializedCommitMode as LocalEditorBrowserInspectorCommitMode | undefined) ?? 'live';\n}\n\nfunction readRenderingCommitMode(input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement): LocalEditorBrowserRenderingPropertyCommitMode {\n return (input.dataset.renderingCommitMode as LocalEditorBrowserRenderingPropertyCommitMode | undefined) ?? 'live';\n}\n\nfunction isLocalEditorRightDockTab(value: string | undefined): value is LocalEditorRightDockTab {\n return value === 'inspector' || value === 'rendering' || value === 'markers' || value === 'plugins';\n}\n\ninterface LocalEditorRightDockScrollSnapshot {\n tab: LocalEditorRightDockTab;\n contentKey: string;\n panelId: string;\n scrollLeft: number;\n scrollTop: number;\n}\n\nfunction resolveLocalEditorRightDockContentKey<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n tab: LocalEditorRightDockTab,\n inspectorFilter: string,\n): string {\n if (tab === 'markers') {\n const markerPanel = state.markerPanel;\n if (!markerPanel) return 'markers:none';\n return [\n 'markers',\n markerPanel.activeMarkerId ?? '',\n markerPanel.markersVisible === false ? 'markers-hidden' : 'markers-visible',\n markerPanel.status ?? '',\n markerPanel.markerTypes.map(markerType => [\n markerType.type,\n markerType.label,\n markerType.kind ?? '',\n markerType.description ?? '',\n markerType.usedByCount ?? 0,\n ].join('=')).join(';'),\n (markerPanel.relations ?? []).map(relation => [\n relation.id,\n relation.type,\n relation.from.kind,\n relation.from.id,\n relation.from.visibility ?? '',\n relation.to.kind,\n relation.to.id,\n relation.to.visibility ?? '',\n relation.selected ? 'selected' : '',\n relation.status ?? '',\n ].join('=')).join(';'),\n ].join(':');\n }\n if (tab === 'plugins') {\n const plugins = state.pluginPanel;\n if (!plugins) return 'plugins:none';\n return [\n 'plugins',\n plugins.environment,\n plugins.scope,\n plugins.hostState,\n plugins.transitioning ? 'transitioning' : 'idle',\n plugins.plugins.map(plugin => [plugin.id, plugin.version, plugin.lifecycle].join('=')).join(';'),\n plugins.diagnostics.map(diagnostic => [diagnostic.pluginId ?? '', diagnostic.code, diagnostic.severity].join('=')).join(';'),\n ].join(':');\n }\n if (tab === 'rendering') {\n const rendering = state.renderingPanel;\n if (!rendering) return 'rendering:none';\n return [\n 'rendering',\n rendering.sections.map(section => [\n section.id,\n section.systems.map(system => [\n system.id,\n system.properties.map(property => property.path).join(','),\n ].join(':')).join('|'),\n ].join('=')).join(';'),\n ].join(':');\n }\n const selectionCount = state.selectionSummary?.count ?? state.selectedIds.length;\n return [\n 'inspector',\n selectionCount,\n state.selectionSummary?.activeId ?? state.activeId ?? '',\n state.selectedIds.join(','),\n inspectorFilter,\n ].join(':');\n}\n\nfunction findLocalEditorRightDockScrollViewport(\n tab: LocalEditorRightDockTab,\n inspectorPanel: HTMLElement,\n renderingPanel: HTMLElement,\n markersPanel: HTMLElement,\n pluginsPanel: HTMLElement,\n): HTMLElement | null {\n const panel = tab === 'inspector'\n ? inspectorPanel\n : tab === 'rendering'\n ? renderingPanel\n : tab === 'markers'\n ? markersPanel\n : pluginsPanel;\n const selector = tab === 'inspector'\n ? '[data-editor-inspector-scroll-viewport]'\n : tab === 'rendering'\n ? '[data-editor-rendering-scroll-viewport]'\n : tab === 'markers'\n ? '[data-editor-markers-scroll-viewport]'\n : '[data-editor-plugins-scroll-viewport]';\n return panel.querySelector<HTMLElement>(selector) ?? panel;\n}\n\nfunction captureLocalEditorRightDockScrollSnapshot<TDocument>(\n state: LocalEditorBrowserUiState<TDocument> | null,\n tab: LocalEditorRightDockTab,\n inspectorFilter: string,\n inspectorPanel: HTMLElement,\n renderingPanel: HTMLElement,\n markersPanel: HTMLElement,\n pluginsPanel: HTMLElement,\n): LocalEditorRightDockScrollSnapshot | null {\n if (!state || state.mode !== 'editor') return null;\n const viewport = findLocalEditorRightDockScrollViewport(tab, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);\n if (!viewport) return null;\n const panel = tab === 'inspector'\n ? inspectorPanel\n : tab === 'rendering'\n ? renderingPanel\n : tab === 'markers'\n ? markersPanel\n : pluginsPanel;\n return {\n tab,\n contentKey: resolveLocalEditorRightDockContentKey(state, tab, inspectorFilter),\n panelId: panel.dataset.editorPanelId ?? tab,\n scrollLeft: viewport.scrollLeft,\n scrollTop: viewport.scrollTop,\n };\n}\n\nfunction restoreLocalEditorRightDockScrollSnapshot<TDocument>(\n snapshot: LocalEditorRightDockScrollSnapshot | null,\n state: LocalEditorBrowserUiState<TDocument>,\n tab: LocalEditorRightDockTab,\n inspectorFilter: string,\n inspectorPanel: HTMLElement,\n renderingPanel: HTMLElement,\n markersPanel: HTMLElement,\n pluginsPanel: HTMLElement,\n): void {\n if (!snapshot || snapshot.tab !== tab || state.mode !== 'editor') return;\n const panel = tab === 'inspector'\n ? inspectorPanel\n : tab === 'rendering'\n ? renderingPanel\n : tab === 'markers'\n ? markersPanel\n : pluginsPanel;\n if ((panel.dataset.editorPanelId ?? tab) !== snapshot.panelId) return;\n if (resolveLocalEditorRightDockContentKey(state, tab, inspectorFilter) !== snapshot.contentKey) return;\n const viewport = findLocalEditorRightDockScrollViewport(tab, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);\n if (!viewport) return;\n viewport.scrollLeft = snapshot.scrollLeft;\n viewport.scrollTop = snapshot.scrollTop;\n}\n\nfunction readInspectorImmediateSource(input: HTMLInputElement | HTMLSelectElement): LocalEditorBrowserInspectorEditSource {\n if (input instanceof HTMLSelectElement) return 'select';\n if (input.type === 'checkbox') return 'toggle';\n if (input.type === 'color') return 'color';\n return 'input';\n}\n\nfunction readRenderingImmediateSource(input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement): LocalEditorBrowserRenderingPropertyEditSource {\n const explicitSource = input.dataset.renderingEditSource as LocalEditorBrowserRenderingPropertyEditSource | undefined;\n if (explicitSource) return explicitSource;\n if (input instanceof HTMLSelectElement) return 'select';\n if (input instanceof HTMLInputElement && input.type === 'checkbox') return 'toggle';\n if (input instanceof HTMLInputElement && input.type === 'color') return 'color';\n if (input instanceof HTMLTextAreaElement) return 'list';\n return 'input';\n}\n\nfunction createMarkerTypeActionInput(button: HTMLButtonElement): LocalEditorBrowserMarkerTypeActionInput | null {\n const action = button.dataset.editorMarkerTypeAction;\n if (action === 'create') {\n const block = button.closest<HTMLElement>('[data-editor-marker-type-create]');\n if (!block) return null;\n const type = readMarkerTypeFieldValue(block, 'type');\n if (!type) return null;\n const label = readMarkerTypeFieldValue(block, 'label') || type;\n return {\n action: 'create',\n type,\n label,\n kind: readMarkerTypeFieldValue(block, 'kind') || undefined,\n description: readMarkerTypeFieldValue(block, 'description') || undefined,\n };\n }\n const row = button.closest<HTMLElement>('[data-editor-marker-type-row]');\n const type = row?.dataset.editorMarkerTypeRow?.trim() ?? '';\n if (!row || !type) return null;\n if (action === 'delete') return { action: 'delete', type };\n if (action !== 'update') return null;\n return {\n action: 'update',\n type,\n label: readMarkerTypeFieldValue(row, 'label') || type,\n kind: readMarkerTypeFieldValue(row, 'kind') || undefined,\n description: readMarkerTypeFieldValue(row, 'description'),\n };\n}\n\nfunction createMarkerRelationActionInput(target: HTMLElement): LocalEditorBrowserMarkerRelationActionInput | null {\n const action = target.dataset.editorMarkerRelationAction;\n if (action === 'delete') {\n const row = target.closest<HTMLElement>('[data-editor-marker-relation-row]');\n const relationId = row?.dataset.editorMarkerRelationRow?.trim() ?? '';\n return relationId ? { action: 'delete', relationId } : null;\n }\n if (action === 'reverse') {\n const row = target.closest<HTMLElement>('[data-editor-marker-relation-row]');\n const relationId = row?.dataset.editorMarkerRelationRow?.trim() ?? '';\n return relationId ? { action: 'reverse', relationId } : null;\n }\n if (action === 'delete-connected') {\n const markerId = target.dataset.editorMarkerRelationMarkerId?.trim() ?? '';\n return { action: 'delete-connected', ...(markerId ? { markerId } : {}) };\n }\n if (action === 'select') {\n const row = target.closest<HTMLElement>('[data-editor-marker-relation-row]');\n const relationId = row?.dataset.editorMarkerRelationRow?.trim() ?? '';\n return relationId ? { action: 'select', relationId } : null;\n }\n if (action === 'pick-cancel') return { action: 'pick-cancel' };\n if (action !== 'create' && action !== 'pick-start') return null;\n const block = target.closest<HTMLElement>('[data-editor-marker-relation-create]');\n if (!block) return null;\n const type = readMarkerRelationTypeFieldValue(block);\n const from = readMarkerRelationEndpointFieldValue(block, 'from');\n const to = readMarkerRelationEndpointFieldValue(block, 'to');\n if (!type || !from || (action === 'create' && !to)) return null;\n const directed = readMarkerRelationDirectionFieldValue(block);\n if (action === 'pick-start') {\n return {\n action: 'pick-start',\n type,\n fromKind: from.kind,\n fromId: from.id,\n ...(directed === null ? {} : { directed }),\n };\n }\n return {\n action: 'create',\n type,\n fromKind: from.kind,\n fromId: from.id,\n toKind: to!.kind,\n toId: to!.id,\n ...(directed === null ? {} : { directed }),\n };\n}\n\nfunction readMarkerTypeFieldValue(parent: HTMLElement, field: string): string {\n const input = parent.querySelector<HTMLInputElement | HTMLTextAreaElement>(`[data-editor-marker-type-field=\"${field}\"]`);\n return input?.value.trim() ?? '';\n}\n\nfunction readMarkerRelationTypeFieldValue(parent: HTMLElement): string {\n const select = parent.querySelector<HTMLSelectElement>('[data-editor-marker-relation-field=\"type\"]');\n return select?.value.trim() ?? '';\n}\n\nfunction readMarkerRelationDirectionFieldValue(parent: HTMLElement): boolean | null {\n const select = parent.querySelector<HTMLSelectElement>('[data-editor-marker-relation-field=\"directed\"]');\n if (!select || select.value === 'default') return null;\n return select.value === 'true';\n}\n\nfunction readMarkerRelationEndpointFieldValue(\n parent: HTMLElement,\n field: 'from' | 'to',\n): { kind: string; id: string } | null {\n const select = parent.querySelector<HTMLSelectElement>(`[data-editor-marker-relation-field=\"${field}\"]`);\n const option = select?.selectedOptions.item(0) ?? null;\n const kind = option?.dataset.editorMarkerRelationEndpointKind?.trim();\n const id = option?.dataset.editorMarkerRelationEndpointId?.trim();\n if (kind && id) return { kind, id };\n return decodeMarkerRelationEndpointValue(select?.value);\n}\n\nfunction decodeMarkerRelationEndpointValue(value: string | undefined): { kind: string; id: string } | null {\n const raw = value?.trim();\n if (!raw) return null;\n const separator = raw.indexOf(':');\n if (separator <= 0) return null;\n const kind = raw.slice(0, separator);\n const encodedId = raw.slice(separator + 1);\n try {\n return { kind, id: decodeURIComponent(encodedId) };\n } catch {\n return { kind, id: encodedId };\n }\n}\n\nfunction markLocalEditorKeyboardCommittedValue(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): void {\n input.dataset.editorKeyboardCommittedValue = input.value;\n}\n\nfunction consumeLocalEditorKeyboardCommittedValue(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): boolean {\n const committedValue = input.dataset.editorKeyboardCommittedValue;\n if (committedValue == null || committedValue !== input.value) return false;\n delete input.dataset.editorKeyboardCommittedValue;\n return true;\n}\n\nfunction isLocalEditorKeyboardCommitEvent(event: KeyboardEvent, input: Element): boolean {\n if (event.key !== 'Enter' || event.isComposing) return false;\n if (input instanceof HTMLTextAreaElement) return event.metaKey || event.ctrlKey;\n return input instanceof HTMLInputElement;\n}\n\nfunction commitLocalEditorInspectorInput(\n input: HTMLInputElement,\n callbacks: LocalEditorBrowserUiCallbacks,\n lockedInspectorVectorGroups: ReadonlySet<string>,\n): boolean {\n if (!input.dataset.serializedPath || !input.dataset.serializedTargetId) return false;\n if (input.type === 'checkbox' || input.type === 'color') return false;\n const propertyInputs = createInspectorPropertyInputs(input, 'input', lockedInspectorVectorGroups);\n if (!propertyInputs) return false;\n applyInspectorLockedVectorInputToDom(input, propertyInputs);\n markLocalEditorKeyboardCommittedValue(input);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n return true;\n}\n\nfunction commitLocalEditorRenderingInput(\n input: HTMLInputElement | HTMLTextAreaElement,\n callbacks: LocalEditorBrowserUiCallbacks,\n): boolean {\n if (!input.dataset.editorRenderingProperty) return false;\n if (input instanceof HTMLInputElement && (input.type === 'checkbox' || input.type === 'color')) return false;\n const propertyInput = createRenderingPropertyInput(input, input instanceof HTMLTextAreaElement ? 'list' : 'input');\n if (!propertyInput) return false;\n markLocalEditorKeyboardCommittedValue(input);\n callbacks.onRenderingPropertyChange?.(propertyInput);\n return true;\n}\n\nexport function captureLocalEditorEditableFocus(doc: Document): LocalEditorEditableFocusSnapshot | null {\n const active = doc.activeElement;\n if (!(active instanceof HTMLInputElement || active instanceof HTMLTextAreaElement || active instanceof HTMLSelectElement)) {\n return null;\n }\n const selector = createLocalEditorEditableFocusSelector(active);\n if (!selector) return null;\n return {\n selector,\n value: readLocalEditorEditableDraftValue(active),\n ...readLocalEditorEditableSelection(active),\n };\n}\n\nexport function restoreLocalEditorEditableFocus(\n doc: Document,\n snapshot: LocalEditorEditableFocusSnapshot | null,\n): void {\n if (!snapshot) return;\n const element = doc.querySelector<HTMLElement>(snapshot.selector);\n if (!(element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement || element instanceof HTMLSelectElement)) {\n return;\n }\n if (snapshot.value != null && canRestoreLocalEditorEditableDraftValue(element)) {\n element.value = snapshot.value;\n }\n element.focus({ preventScroll: true });\n restoreLocalEditorEditableSelection(element, snapshot);\n}\n\nfunction createLocalEditorEditableFocusSelector(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): string | null {\n if (element instanceof HTMLInputElement && element.dataset.editorHierarchyRenameInput) {\n return [\n 'input',\n `[data-editor-hierarchy-rename-input=\"${cssEscape(element.dataset.editorHierarchyRenameInput)}\"]`,\n ].join('');\n }\n if ((element instanceof HTMLInputElement || element instanceof HTMLSelectElement) && element.dataset.serializedPath && element.dataset.serializedTargetId) {\n return [\n element instanceof HTMLSelectElement ? 'select' : 'input',\n `[data-serialized-path=\"${cssEscape(element.dataset.serializedPath)}\"]`,\n `[data-serialized-target-id=\"${cssEscape(element.dataset.serializedTargetId)}\"]`,\n element.dataset.serializedVectorAxis\n ? `[data-serialized-vector-axis=\"${cssEscape(element.dataset.serializedVectorAxis)}\"]`\n : '',\n ].join('');\n }\n if ((element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) && element.dataset.editorRenderingProperty) {\n const sectionId = element.dataset.renderingSectionId;\n const systemId = element.dataset.renderingSystemId;\n const path = element.dataset.renderingPath;\n if (!sectionId || !systemId || !path) return null;\n return [\n element instanceof HTMLTextAreaElement ? 'textarea' : 'input',\n '[data-editor-rendering-property=\"true\"]',\n `[data-rendering-section-id=\"${cssEscape(sectionId)}\"]`,\n `[data-rendering-system-id=\"${cssEscape(systemId)}\"]`,\n `[data-rendering-path=\"${cssEscape(path)}\"]`,\n element.dataset.serializedVectorAxis\n ? `[data-serialized-vector-axis=\"${cssEscape(element.dataset.serializedVectorAxis)}\"]`\n : '',\n ].join('');\n }\n if (element instanceof HTMLInputElement && element.dataset.editorInspectorSearch != null) {\n return 'input[data-editor-inspector-search]';\n }\n if (element instanceof HTMLInputElement && element.dataset.editorHierarchySearch != null) {\n return 'input[data-editor-hierarchy-search]';\n }\n if (element instanceof HTMLInputElement && element.dataset.editorAssetFilter != null) {\n return 'input[data-editor-asset-filter]';\n }\n return null;\n}\n\nfunction readLocalEditorEditableDraftValue(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): string | null {\n return canRestoreLocalEditorEditableDraftValue(element) ? element.value : null;\n}\n\nfunction canRestoreLocalEditorEditableDraftValue(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): element is HTMLInputElement | HTMLTextAreaElement {\n if (element instanceof HTMLTextAreaElement) return true;\n if (!(element instanceof HTMLInputElement)) return false;\n return element.type !== 'checkbox'\n && element.type !== 'radio'\n && element.type !== 'color'\n && element.type !== 'button'\n && element.type !== 'submit'\n && element.type !== 'reset';\n}\n\nfunction readLocalEditorEditableSelection(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): Pick<LocalEditorEditableFocusSnapshot, 'selectionStart' | 'selectionEnd' | 'selectionDirection'> {\n if (!canRestoreLocalEditorEditableDraftValue(element)) {\n return {\n selectionStart: null,\n selectionEnd: null,\n selectionDirection: null,\n };\n }\n try {\n return {\n selectionStart: element.selectionStart,\n selectionEnd: element.selectionEnd,\n selectionDirection: element.selectionDirection,\n };\n } catch {\n return {\n selectionStart: null,\n selectionEnd: null,\n selectionDirection: null,\n };\n }\n}\n\nfunction restoreLocalEditorEditableSelection(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n snapshot: LocalEditorEditableFocusSnapshot,\n): void {\n if (!canRestoreLocalEditorEditableDraftValue(element)) return;\n const start = snapshot.selectionStart ?? snapshot.value?.length ?? element.value.length;\n const end = snapshot.selectionEnd ?? start;\n try {\n element.setSelectionRange(start, end, snapshot.selectionDirection ?? 'none');\n } catch {\n // Some input types reject text selection APIs even when they carry editable text.\n }\n}\n\nfunction cssEscape(value: string): string {\n return typeof CSS !== 'undefined' && typeof CSS.escape === 'function'\n ? CSS.escape(value)\n : value.replace(/[\"\\\\]/g, '\\\\$&');\n}\n\ninterface CoordinateAxesOverlayElements {\n root: HTMLDivElement;\n lineLayer: SVGGElement;\n labelLayer: SVGGElement;\n axisGroups: Map<string, SVGGElement>;\n axisLines: Map<string, SVGLineElement>;\n axisLabels: Map<string, SVGTextElement>;\n axisDiscs: Map<string, SVGCircleElement>;\n centerDot: SVGCircleElement;\n projectionIcon: SVGGElement;\n projectionIconShape: SVGPathElement;\n}\n\ninterface SceneFrameRateOverlayElements {\n root: HTMLDivElement;\n fpsValue: HTMLSpanElement;\n modeLabel: HTMLSpanElement;\n}\n\ninterface PerformanceMonitorOverlayElements {\n root: HTMLElement;\n modeLabel: HTMLSpanElement;\n values: Record<PerformanceMonitorMetricKey, HTMLSpanElement>;\n}\n\ninterface PrefabImportStatsOverlayElements {\n root: HTMLElement;\n modeLabel: HTMLSpanElement;\n values: Record<PrefabImportStatsMetricKey, HTMLSpanElement>;\n}\n\ninterface PrefabStagePreviewLayoutElements {\n root: HTMLElement;\n mainRegion: HTMLElement;\n comparisonColumn: HTMLElement;\n}\n\ninterface PrefabComparisonPreviewOverlayCardElements {\n root: HTMLElement;\n title: HTMLDivElement;\n statusLabel: HTMLSpanElement;\n surface: HTMLDivElement;\n}\n\ninterface PrefabComparisonPreviewOverlayElements {\n root: HTMLElement;\n cards: Map<string, PrefabComparisonPreviewOverlayCardElements>;\n}\n\ninterface PrefabComparisonPreviewDragState {\n pointerId: number;\n previewId: string;\n surface: HTMLElement;\n lastClientX: number;\n lastClientY: number;\n}\n\ntype PerformanceMonitorMetricKey =\n | 'fps'\n | 'frame'\n | 'drawCalls'\n | 'objects'\n | 'meshes'\n | 'activeMeshes'\n | 'materials'\n | 'textures'\n | 'lights'\n | 'cameras'\n | 'meshClassMesh'\n | 'meshClassInstancedMesh'\n | 'meshClassLinesMesh'\n | 'meshClassGroundMesh'\n | 'meshClassOther'\n | 'meshCategoryAssetMesh'\n | 'meshCategoryPrimitiveMesh'\n | 'meshCategoryStaticProjectedShadow'\n | 'meshCategoryEditorHelper'\n | 'meshCategoryUncategorized'\n | 'projectionRoleAssetInstanceMesh'\n | 'projectionRoleAssetSourceMesh'\n | 'projectionRoleAssetWrapperMesh'\n | 'projectionRoleAssetCloneMesh'\n | 'projectionRoleAssetGeneratedMesh'\n | 'projectionRoleAssetSelectionProxy'\n | 'projectionRolePrimitiveMesh'\n | 'projectionRoleStaticProjectedShadow'\n | 'projectionRoleHelperMesh'\n | 'projectionRoleUncategorized';\n\ntype PrefabImportStatsMetricKey =\n | 'source'\n | 'nodes'\n | 'transforms'\n | 'meshes'\n | 'materials'\n | 'textures'\n | 'animations';\n\ntype PerformanceMonitorMeshClassCountKey = keyof NonNullable<LocalEditorBrowserPerformanceStats['meshClassCounts']>;\ntype PerformanceMonitorMeshCategoryCountKey = keyof NonNullable<LocalEditorBrowserPerformanceStats['meshCategoryCounts']>;\ntype PerformanceMonitorProjectionRoleCountKey = keyof NonNullable<LocalEditorBrowserPerformanceStats['projectionRoleCounts']>;\n\ninterface PerformanceMonitorMetricDefinition {\n key: PerformanceMonitorMetricKey;\n label: string;\n description: string;\n format(stats: LocalEditorBrowserPerformanceStats | null): string;\n}\n\ninterface PerformanceMonitorMetricGroup {\n title: string | null;\n description?: string;\n metrics: PerformanceMonitorMetricDefinition[];\n}\n\ninterface PrefabImportStatsMetricDefinition {\n key: PrefabImportStatsMetricKey;\n label: string;\n description: string;\n format(stats: LocalEditorBrowserPrefabStageImportStats | null): string;\n}\n\nconst PERFORMANCE_MONITOR_METRIC_GROUPS: PerformanceMonitorMetricGroup[] = [\n {\n title: null,\n metrics: [\n {\n key: 'fps',\n label: 'FPS',\n description: '每秒渲染帧数。打开性能浮窗时会启用连续渲染,所以这里显示实时值。',\n format: stats => formatPerformanceInteger(stats?.fps ?? null),\n },\n {\n key: 'frame',\n label: 'Frame',\n description: '最近一帧耗时,单位毫秒。16.7ms 约等于 60 FPS。',\n format: stats => formatPerformanceFrameMs(stats?.frameMs ?? null),\n },\n {\n key: 'drawCalls',\n label: 'Draw calls',\n description: 'Babylon 当前帧提交的绘制调用数量。它受材质、mesh、阴影、辅助层和合批状态影响。',\n format: stats => formatPerformanceInteger(stats?.drawCalls ?? null),\n },\n {\n key: 'objects',\n label: 'Objects',\n description: '编辑器层级中的 authored 对象数量,不包含 root 行,不等同于 Babylon mesh 数。',\n format: stats => formatPerformanceInteger(stats?.objectCount ?? null),\n },\n {\n key: 'meshes',\n label: 'Meshes',\n description: 'Babylon scene.meshes 总数,包含资产 mesh、primitive、阴影预览和编辑器辅助 mesh。',\n format: stats => formatPerformanceInteger(stats?.meshCount ?? null),\n },\n {\n key: 'activeMeshes',\n label: 'Active meshes',\n description: '当前相机和裁剪结果下参与本帧 active mesh 评估的 mesh 数。',\n format: stats => formatPerformanceInteger(stats?.activeMeshCount ?? null),\n },\n {\n key: 'materials',\n label: 'Materials',\n description: 'Babylon scene.materials 数量。材质越分散,越难形成低 draw call。',\n format: stats => formatPerformanceInteger(stats?.materialCount ?? null),\n },\n {\n key: 'textures',\n label: 'Textures',\n description: 'Babylon scene.textures 数量,包含材质贴图和部分 runtime 生成纹理。',\n format: stats => formatPerformanceInteger(stats?.textureCount ?? null),\n },\n {\n key: 'lights',\n label: 'Lights',\n description: 'Babylon scene.lights 数量。',\n format: stats => formatPerformanceInteger(stats?.lightCount ?? null),\n },\n {\n key: 'cameras',\n label: 'Cameras',\n description: 'Babylon scene.cameras 数量。',\n format: stats => formatPerformanceInteger(stats?.cameraCount ?? null),\n },\n ],\n },\n {\n title: 'Mesh 类别 · active/total',\n description: '按 Babylon mesh class 统计,值格式为 active/total。',\n metrics: [\n {\n key: 'meshClassMesh',\n label: 'Mesh',\n description: '普通 Mesh:独立几何网格,通常会独立参与一次渲染批次判断。',\n format: stats => formatPerformanceClassBreakdown(stats, 'mesh'),\n },\n {\n key: 'meshClassInstancedMesh',\n label: 'Instance',\n description: 'InstancedMesh:共享 source mesh 的实例,但仍会进入 active mesh 统计。',\n format: stats => formatPerformanceClassBreakdown(stats, 'instancedMesh'),\n },\n {\n key: 'meshClassLinesMesh',\n label: 'Lines',\n description: 'LinesMesh:线框/辅助线 mesh,常见于相机视锥、灯光方向、编辑器辅助显示。',\n format: stats => formatPerformanceClassBreakdown(stats, 'linesMesh'),\n },\n {\n key: 'meshClassGroundMesh',\n label: 'Ground',\n description: 'GroundMesh:Babylon ground 类型 mesh,常用于地面或平面。',\n format: stats => formatPerformanceClassBreakdown(stats, 'groundMesh'),\n },\n {\n key: 'meshClassOther',\n label: 'Other',\n description: '其他 Babylon mesh 子类,表示未归入 Mesh/Instance/Lines/Ground 的类型。',\n format: stats => formatPerformanceClassBreakdown(stats, 'other'),\n },\n ],\n },\n {\n title: '来源 · active/total',\n description: '按编辑器 runtime 来源粗分类,值格式为 active/total。',\n metrics: [\n {\n key: 'meshCategoryAssetMesh',\n label: 'Asset',\n description: '资产 Mesh:由 GLB/模型资产实例化或克隆出来的可渲染子 mesh。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'assetMesh'),\n },\n {\n key: 'meshCategoryPrimitiveMesh',\n label: 'Primitive',\n description: 'Primitive Mesh:编辑器基础体生成的 mesh,例如 Cube、Sphere、Capsule、Plane。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'primitiveMesh'),\n },\n {\n key: 'meshCategoryStaticProjectedShadow',\n label: 'Shadow',\n description: '静态投影阴影预览 mesh。数量高时通常会显著抬高 draw calls。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'staticProjectedShadow'),\n },\n {\n key: 'meshCategoryEditorHelper',\n label: 'Helper',\n description: '编辑器辅助 mesh,例如网格、天空、相机/灯光 helper、gizmo 辅助显示。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'editorHelper'),\n },\n {\n key: 'meshCategoryUncategorized',\n label: 'Other',\n description: '未能归入资产、基础体、阴影预览或编辑器辅助层的 mesh。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'uncategorized'),\n },\n ],\n },\n {\n title: 'Projection roles · active/total',\n description: '按编辑器 projection 角色细分,值格式为 active/total。',\n metrics: [\n {\n key: 'projectionRoleAssetInstanceMesh',\n label: 'Asset instance',\n description: '资产 InstancedMesh:共享 source mesh 的可渲染模型实例。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetInstanceMesh'),\n },\n {\n key: 'projectionRoleAssetSourceMesh',\n label: 'Asset source',\n description: '资产 source mesh:被 InstancedMesh 引用的源 mesh,通常不应作为可见实例压力解读。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetSourceMesh'),\n },\n {\n key: 'projectionRoleAssetWrapperMesh',\n label: 'Asset wrapper',\n description: '资产 wrapper mesh:GLB 层级里的 0 顶点 Mesh。Babylon 无法将这类节点 instance,会保留为 clone 层级。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetWrapperMesh'),\n },\n {\n key: 'projectionRoleAssetCloneMesh',\n label: 'Asset clone',\n description: '资产 clone mesh:有几何、不是 source mesh、也不是 InstancedMesh 的资产 Mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetCloneMesh'),\n },\n {\n key: 'projectionRoleAssetGeneratedMesh',\n label: 'Asset generated',\n description: '资产适配生成的非 InstancedMesh 几何,例如 texture/decal projection mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetGeneratedMesh'),\n },\n {\n key: 'projectionRoleAssetSelectionProxy',\n label: 'Selection proxy',\n description: '资产选择代理 mesh:用于编辑器 picking / bounds,不代表真实模型渲染几何。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetSelectionProxy'),\n },\n {\n key: 'projectionRolePrimitiveMesh',\n label: 'Primitive',\n description: '编辑器基础体 projection mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'primitiveMesh'),\n },\n {\n key: 'projectionRoleStaticProjectedShadow',\n label: 'Shadow',\n description: '静态投影阴影相关 mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'staticProjectedShadow'),\n },\n {\n key: 'projectionRoleHelperMesh',\n label: 'Helper',\n description: '编辑器辅助 mesh,例如网格、天空、相机和灯光 helper。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'helperMesh'),\n },\n {\n key: 'projectionRoleUncategorized',\n label: 'Other',\n description: '暂未识别 projection 角色的 mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'uncategorized'),\n },\n ],\n },\n];\n\nconst PREFAB_IMPORT_STATS_METRICS: PrefabImportStatsMetricDefinition[] = [\n {\n key: 'source',\n label: 'Source',\n description: '当前 prefab preview 使用的 source model 或 source url。',\n format: stats => stats?.sourceId ?? stats?.assetId ?? '--',\n },\n {\n key: 'nodes',\n label: 'Nodes',\n description: 'Babylon 导入后 runtime snapshot 中的节点总数,包含虚拟 root。',\n format: stats => formatPerformanceInteger(stats?.nodeCount ?? null),\n },\n {\n key: 'transforms',\n label: 'Transforms',\n description: 'runtime snapshot 中 root/transform 节点数量。',\n format: stats => formatPerformanceInteger(stats?.transformCount ?? null),\n },\n {\n key: 'meshes',\n label: 'Meshes',\n description: 'runtime snapshot 中可渲染 mesh 节点数量。',\n format: stats => formatPerformanceInteger(stats?.meshCount ?? null),\n },\n {\n key: 'materials',\n label: 'Materials',\n description: 'runtime snapshot 关联到的材质数量。',\n format: stats => formatPerformanceInteger(stats?.materialCount ?? null),\n },\n {\n key: 'textures',\n label: 'Textures',\n description: 'runtime snapshot 关联到的贴图数量。',\n format: stats => formatPerformanceInteger(stats?.textureCount ?? null),\n },\n {\n key: 'animations',\n label: 'Animations',\n description: 'runtime snapshot 关联到的 animation group 数量。',\n format: stats => formatPerformanceInteger(stats?.animationCount ?? null),\n },\n];\n\nfunction createSceneFrameRateOverlay(doc: Document): SceneFrameRateOverlayElements {\n const root = doc.createElement('div');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorSceneFrameRateOverlay = 'true';\n root.style.cssText = [\n 'position:absolute',\n 'right:14px',\n 'bottom:134px',\n 'z-index:3',\n 'display:none',\n 'align-items:center',\n 'gap:6px',\n 'width:112px',\n 'height:30px',\n 'padding:0 8px',\n 'box-sizing:border-box',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:6px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 76%, transparent)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'font-family:var(--fps-editor-font)',\n 'font-size:11px',\n 'font-weight:900',\n 'letter-spacing:0',\n 'color:var(--fps-editor-text-strong)',\n 'pointer-events:none',\n 'backdrop-filter:blur(5px)',\n 'overflow:hidden',\n ].join(';');\n\n const label = doc.createElement('span');\n label.textContent = 'FPS';\n label.style.cssText = [\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:10px',\n 'line-height:1',\n ].join(';');\n const fpsValue = doc.createElement('span');\n fpsValue.textContent = '--';\n fpsValue.style.cssText = [\n 'width:26px',\n 'flex:0 0 26px',\n 'font-variant-numeric:tabular-nums',\n 'font-size:13px',\n 'line-height:1',\n ].join(';');\n const modeLabel = doc.createElement('span');\n modeLabel.textContent = 'IDLE';\n modeLabel.style.cssText = [\n 'margin-left:auto',\n 'padding:2px 4px',\n 'flex:0 0 auto',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:4px',\n 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',\n 'color:var(--fps-editor-muted)',\n 'font-size:9px',\n 'line-height:1',\n ].join(';');\n\n root.appendChild(label);\n root.appendChild(fpsValue);\n root.appendChild(modeLabel);\n return { root, fpsValue, modeLabel };\n}\n\nfunction renderSceneFrameRateOverlay(\n overlay: SceneFrameRateOverlayElements,\n stats: LocalEditorBrowserSceneFrameStats | null,\n): void {\n if (!stats) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = 'flex';\n const fps = Number.isFinite(stats.fps) ? Math.round(stats.fps as number) : null;\n const displayFps = stats.mode === 'idle' ? 0 : fps;\n overlay.fpsValue.textContent = displayFps == null ? '--' : String(displayFps);\n overlay.modeLabel.textContent = stats.mode === 'continuous' ? 'LIVE' : 'IDLE';\n overlay.modeLabel.style.color = stats.mode === 'continuous'\n ? 'var(--fps-editor-success)'\n : 'var(--fps-editor-muted)';\n overlay.fpsValue.style.color = displayFps == null || stats.mode === 'idle'\n ? 'var(--fps-editor-muted)'\n : displayFps >= 50\n ? 'var(--fps-editor-success)'\n : displayFps >= 30\n ? 'var(--fps-editor-warn)'\n : 'var(--fps-editor-danger-strong)';\n overlay.root.title = [\n `Scene FPS: ${displayFps == null ? '--' : displayFps}`,\n `mode: ${stats.mode}`,\n stats.lastFrameMs == null ? '' : `frame: ${stats.lastFrameMs.toFixed(1)}ms`,\n stats.activeReasons.length ? `active: ${stats.activeReasons.join(', ')}` : '',\n ].filter(Boolean).join(' | ');\n}\n\nfunction createPerformanceMonitorOverlay(doc: Document): PerformanceMonitorOverlayElements {\n const root = doc.createElement('section');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorPerformanceMonitorOverlay = 'true';\n root.setAttribute('aria-label', '编辑器性能监控');\n root.style.cssText = [\n 'position:absolute',\n 'right:14px',\n 'top:48px',\n 'z-index:4',\n 'display:none',\n 'width:226px',\n 'box-sizing:border-box',\n 'padding:10px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:6px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 88%, transparent)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'backdrop-filter:blur(6px)',\n 'font-family:var(--fps-editor-font)',\n 'font-size:11px',\n 'font-weight:800',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n 'max-height:calc(100% - 64px)',\n 'overflow:auto',\n ].join(';');\n\n const header = doc.createElement('div');\n header.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;';\n const title = doc.createElement('div');\n title.textContent = 'Performance';\n title.style.cssText = 'min-width:0;color:var(--fps-editor-text-strong);font-size:12px;font-weight:900;line-height:1.2;';\n const modeLabel = doc.createElement('span');\n modeLabel.textContent = 'IDLE';\n modeLabel.style.cssText = [\n 'flex:0 0 auto',\n 'padding:2px 5px',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:4px',\n 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',\n 'color:var(--fps-editor-muted)',\n 'font-size:9px',\n 'line-height:1',\n 'font-weight:900',\n ].join(';');\n header.append(title, modeLabel);\n\n const grid = doc.createElement('div');\n grid.style.cssText = [\n 'display:grid',\n 'grid-template-columns:minmax(0,1fr) minmax(48px,auto)',\n 'gap:5px 10px',\n 'align-items:center',\n ].join(';');\n const values = {} as Record<PerformanceMonitorMetricKey, HTMLSpanElement>;\n for (const group of PERFORMANCE_MONITOR_METRIC_GROUPS) {\n if (group.title) {\n const groupTitle = doc.createElement('div');\n groupTitle.textContent = group.title;\n groupTitle.title = group.description ?? group.title;\n groupTitle.setAttribute('aria-label', group.description ?? group.title);\n groupTitle.style.cssText = [\n 'grid-column:1/-1',\n 'margin-top:3px',\n 'padding-top:6px',\n 'border-top:1px solid color-mix(in srgb, var(--fps-editor-border-soft) 72%, transparent)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:10px',\n 'font-weight:900',\n 'line-height:1',\n 'cursor:help',\n ].join(';');\n grid.appendChild(groupTitle);\n }\n for (const metric of group.metrics) {\n const rowLabel = doc.createElement('span');\n rowLabel.textContent = metric.label;\n rowLabel.title = metric.description;\n rowLabel.setAttribute('aria-label', `${metric.label}: ${metric.description}`);\n rowLabel.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-muted-strong)',\n 'cursor:help',\n ].join(';');\n const value = doc.createElement('span');\n value.textContent = '--';\n value.title = metric.description;\n value.setAttribute('aria-label', `${metric.label}: --。${metric.description}`);\n value.style.cssText = [\n 'min-width:48px',\n 'justify-self:end',\n 'font-variant-numeric:tabular-nums',\n 'color:var(--fps-editor-text-strong)',\n 'text-align:right',\n 'cursor:help',\n ].join(';');\n values[metric.key] = value;\n grid.append(rowLabel, value);\n }\n }\n\n root.append(header, grid);\n return { root, modeLabel, values };\n}\n\nfunction renderPerformanceMonitorOverlay(\n overlay: PerformanceMonitorOverlayElements,\n stats: LocalEditorBrowserPerformanceStats | null,\n open: boolean,\n): void {\n if (!open) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = 'block';\n overlay.modeLabel.textContent = stats?.mode === 'continuous' ? 'LIVE' : 'IDLE';\n overlay.modeLabel.style.color = stats?.mode === 'continuous'\n ? 'var(--fps-editor-success)'\n : 'var(--fps-editor-muted)';\n for (const group of PERFORMANCE_MONITOR_METRIC_GROUPS) {\n for (const metric of group.metrics) {\n const value = metric.format(stats);\n overlay.values[metric.key].textContent = value;\n overlay.values[metric.key].setAttribute('aria-label', `${metric.label}: ${value}。${metric.description}`);\n }\n }\n overlay.root.title = [\n '悬停各项查看中文解释',\n stats ? `mode: ${stats.mode}` : 'mode: unknown',\n stats?.activeReasons.length ? `active: ${stats.activeReasons.join(', ')}` : '',\n ].filter(Boolean).join(' | ');\n}\n\nfunction createPrefabImportStatsOverlay(doc: Document): PrefabImportStatsOverlayElements {\n const root = doc.createElement('section');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorPrefabImportStatsOverlay = 'true';\n root.setAttribute('aria-label', 'Prefab import diagnostics');\n root.style.cssText = [\n 'display:none',\n 'width:236px',\n 'max-width:100%',\n 'box-sizing:border-box',\n 'padding:10px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:6px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 88%, transparent)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'backdrop-filter:blur(6px)',\n 'font-family:var(--fps-editor-font)',\n 'font-size:11px',\n 'font-weight:800',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n ].join(';');\n\n const header = doc.createElement('div');\n header.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;';\n const title = doc.createElement('div');\n title.textContent = 'Prefab Import';\n title.style.cssText = 'min-width:0;color:var(--fps-editor-text-strong);font-size:12px;font-weight:900;line-height:1.2;';\n const modeLabel = doc.createElement('span');\n modeLabel.textContent = 'MISSING';\n modeLabel.style.cssText = [\n 'flex:0 0 auto',\n 'padding:2px 5px',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:4px',\n 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',\n 'color:var(--fps-editor-muted)',\n 'font-size:9px',\n 'line-height:1',\n 'font-weight:900',\n ].join(';');\n header.append(title, modeLabel);\n\n const grid = doc.createElement('div');\n grid.style.cssText = [\n 'display:grid',\n 'grid-template-columns:minmax(0,1fr) minmax(76px,108px)',\n 'gap:5px 10px',\n 'align-items:center',\n ].join(';');\n const values = {} as Record<PrefabImportStatsMetricKey, HTMLSpanElement>;\n for (const metric of PREFAB_IMPORT_STATS_METRICS) {\n const rowLabel = doc.createElement('span');\n rowLabel.textContent = metric.label;\n rowLabel.title = metric.description;\n rowLabel.setAttribute('aria-label', `${metric.label}: ${metric.description}`);\n rowLabel.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-muted-strong)',\n 'cursor:help',\n ].join(';');\n const value = doc.createElement('span');\n value.textContent = '--';\n value.title = metric.description;\n value.setAttribute('aria-label', `${metric.label}: --。${metric.description}`);\n value.style.cssText = [\n 'min-width:0',\n 'justify-self:end',\n 'max-width:108px',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-variant-numeric:tabular-nums',\n 'color:var(--fps-editor-text-strong)',\n 'text-align:right',\n 'cursor:help',\n ].join(';');\n values[metric.key] = value;\n grid.append(rowLabel, value);\n }\n\n root.append(header, grid);\n return { root, modeLabel, values };\n}\n\nfunction renderPrefabImportStatsOverlay(\n overlay: PrefabImportStatsOverlayElements,\n stage: LocalEditorBrowserPrefabStageState | null,\n): void {\n if (!stage) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = 'block';\n const stats = stage.importStats ?? null;\n const status = stats?.status ?? (stage.importStructureReady === false ? 'loading' : 'missing');\n overlay.modeLabel.textContent = formatPrefabImportStatsStatusLabel(status);\n overlay.modeLabel.style.color = status === 'ready'\n ? 'var(--fps-editor-success)'\n : status === 'loading'\n ? 'var(--fps-editor-warn)'\n : 'var(--fps-editor-danger-strong)';\n\n for (const metric of PREFAB_IMPORT_STATS_METRICS) {\n const value = metric.format(stats);\n overlay.values[metric.key].textContent = value;\n overlay.values[metric.key].title = `${metric.description}\\n${value}`;\n overlay.values[metric.key].setAttribute('aria-label', `${metric.label}: ${value}。${metric.description}`);\n }\n overlay.root.title = [\n `status: ${status}`,\n stats?.projectionNodeId ? `preview: ${stats.projectionNodeId}` : stage.previewNodeId ? `preview: ${stage.previewNodeId}` : '',\n stats?.assetId ? `asset: ${stats.assetId}` : '',\n stats?.sourceId ? `source: ${stats.sourceId}` : '',\n ].filter(Boolean).join(' | ');\n}\n\nfunction createPrefabStagePreviewLayout(doc: Document): PrefabStagePreviewLayoutElements {\n const root = doc.createElement('section');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorPrefabStagePreviewLayout = 'true';\n root.setAttribute('aria-label', 'Prefab stage preview layout');\n root.style.cssText = [\n 'position:absolute',\n 'left:0',\n 'right:0',\n 'top:38px',\n 'bottom:0',\n 'z-index:4',\n 'display:none',\n 'pointer-events:none',\n 'overflow:hidden',\n 'font-family:var(--fps-editor-font)',\n ].join(';');\n\n const mainRegion = doc.createElement('div');\n mainRegion.dataset.editorPrefabStageMainPreview = 'true';\n mainRegion.style.cssText = [\n 'position:absolute',\n 'left:0',\n 'top:0',\n 'bottom:0',\n 'right:0',\n 'min-width:0',\n 'overflow:hidden',\n 'pointer-events:none',\n ].join(';');\n\n const comparisonColumn = doc.createElement('aside');\n comparisonColumn.dataset.editorPrefabStageComparisonColumn = 'true';\n comparisonColumn.setAttribute('aria-label', 'Prefab comparison previews');\n comparisonColumn.style.cssText = [\n 'position:absolute',\n 'top:0',\n 'right:0',\n 'bottom:0',\n `width:${LOCAL_EDITOR_PREFAB_COMPARISON_COLUMN_WIDTH_PX}px`,\n 'display:none',\n 'flex-direction:column',\n 'box-sizing:border-box',\n 'gap:10px',\n 'padding:10px',\n 'border-left:1px solid color-mix(in srgb, var(--fps-editor-divider) 82%, transparent)',\n 'background:transparent',\n 'box-shadow:none',\n 'pointer-events:auto',\n 'overflow:hidden',\n ].join(';');\n\n root.append(mainRegion, comparisonColumn);\n return { root, mainRegion, comparisonColumn };\n}\n\nfunction createPrefabComparisonPreviewOverlay(doc: Document): PrefabComparisonPreviewOverlayElements {\n const root = doc.createElement('section');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorPrefabComparisonPreviewOverlay = 'true';\n root.setAttribute('aria-label', 'Prefab clone and InstanceMesh comparison previews');\n root.style.cssText = [\n 'display:none',\n 'flex:1 1 auto',\n 'min-height:0',\n 'width:100%',\n 'box-sizing:border-box',\n 'grid-template-rows:minmax(0,1fr) minmax(0,1fr)',\n 'gap:10px',\n 'overflow:hidden',\n 'font-family:var(--fps-editor-font)',\n 'pointer-events:auto',\n ].join(';');\n return { root, cards: new Map() };\n}\n\nfunction renderPrefabComparisonPreviewOverlay(\n overlay: PrefabComparisonPreviewOverlayElements,\n stage: LocalEditorBrowserPrefabStageState | null,\n): void {\n const previews = stage?.comparisonPreviews ?? [];\n if (!stage || previews.length === 0) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = 'grid';\n const visibleIds = new Set<string>();\n for (const preview of previews) {\n const card = getOrCreatePrefabComparisonPreviewCard(overlay, preview);\n visibleIds.add(preview.id);\n card.root.style.display = 'flex';\n card.title.textContent = preview.label;\n card.statusLabel.textContent = formatLocalEditorPrefabStageComparisonPreviewStatus(preview.status);\n card.statusLabel.style.color = getPrefabComparisonPreviewStatusColor(preview.status);\n card.surface.dataset.editorPrefabComparisonPreviewId = preview.id;\n card.surface.dataset.editorPrefabComparisonPreviewSurface = preview.projectionNodeId;\n card.surface.dataset.editorPrefabComparisonPreviewStatus = preview.status;\n card.surface.style.background = preview.status === 'ready'\n ? 'transparent'\n : 'color-mix(in srgb, var(--fps-editor-field) 74%, transparent)';\n card.surface.textContent = preview.status === 'ready'\n ? ''\n : preview.status === 'loading'\n ? 'Preview loading'\n : 'Preview unavailable';\n card.root.title = [\n `${preview.label}: ${preview.status}`,\n `mode: ${preview.mode}`,\n `projection: ${preview.projectionNodeId}`,\n ].join(' | ');\n }\n for (const [id, card] of overlay.cards) {\n if (!visibleIds.has(id)) card.root.style.display = 'none';\n }\n}\n\nfunction readPrefabComparisonPreviewSurfaces(\n overlay: PrefabComparisonPreviewOverlayElements,\n): LocalEditorBrowserPrefabComparisonPreviewSurface[] {\n if (overlay.root.style.display === 'none') return [];\n const surfaces: LocalEditorBrowserPrefabComparisonPreviewSurface[] = [];\n for (const [previewId, card] of overlay.cards) {\n if (card.root.style.display === 'none') continue;\n const projectionNodeId = card.surface.dataset.editorPrefabComparisonPreviewSurface;\n if (!projectionNodeId) continue;\n const rect = card.surface.getBoundingClientRect();\n if (rect.width < 1 || rect.height < 1) continue;\n surfaces.push({\n previewId,\n projectionNodeId,\n element: card.surface,\n rect,\n });\n }\n return surfaces;\n}\n\nfunction findPrefabComparisonPreviewSurface(target: EventTarget | null): HTMLElement | null {\n return target instanceof HTMLElement\n ? target.closest<HTMLElement>('[data-editor-prefab-comparison-preview-surface]')\n : null;\n}\n\nfunction readPrefabComparisonPreviewSurfaceId(surface: HTMLElement): string | null {\n return surface.dataset.editorPrefabComparisonPreviewId\n ?? surface.closest<HTMLElement>('[data-editor-prefab-comparison-preview]')?.dataset.editorPrefabComparisonPreview\n ?? null;\n}\n\nfunction isPrefabComparisonPreviewSurfaceReady(surface: HTMLElement): boolean {\n return surface.dataset.editorPrefabComparisonPreviewStatus === 'ready';\n}\n\nfunction getOrCreatePrefabComparisonPreviewCard(\n overlay: PrefabComparisonPreviewOverlayElements,\n preview: LocalEditorBrowserPrefabStageComparisonPreview,\n): PrefabComparisonPreviewOverlayCardElements {\n const existing = overlay.cards.get(preview.id);\n if (existing) return existing;\n const doc = overlay.root.ownerDocument;\n const root = doc.createElement('article');\n root.dataset.editorPrefabComparisonPreview = preview.id;\n root.style.cssText = [\n 'display:flex',\n 'flex-direction:column',\n 'min-width:0',\n 'min-height:0',\n 'flex:1 1 0',\n 'box-sizing:border-box',\n 'padding:8px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:6px',\n 'background:transparent',\n 'box-shadow:none',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n 'overflow:hidden',\n ].join(';');\n\n const header = doc.createElement('div');\n header.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:space-between',\n 'gap:8px',\n 'margin-bottom:7px',\n 'padding:6px 8px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 74%, transparent)',\n 'border-radius:5px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 86%, transparent)',\n 'box-shadow:0 6px 14px color-mix(in srgb, #000 18%, transparent)',\n ].join(';');\n const title = doc.createElement('div');\n title.textContent = preview.label;\n title.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:12px',\n 'line-height:1.2',\n 'font-weight:900',\n ].join(';');\n const statusLabel = doc.createElement('span');\n statusLabel.textContent = 'UNAVAILABLE';\n statusLabel.style.cssText = [\n 'flex:0 0 auto',\n 'padding:2px 5px',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:4px',\n 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',\n 'font-size:9px',\n 'line-height:1',\n 'font-weight:900',\n ].join(';');\n header.append(title, statusLabel);\n\n const surface = doc.createElement('div');\n surface.style.cssText = [\n 'display:flex',\n 'flex:1 1 auto',\n 'align-items:center',\n 'justify-content:center',\n 'width:100%',\n 'min-height:0',\n 'box-sizing:border-box',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border-soft) 84%, transparent)',\n 'border-radius:4px',\n 'background:transparent',\n 'overflow:hidden',\n 'color:var(--fps-editor-muted)',\n 'font-size:10px',\n 'font-weight:800',\n 'text-align:center',\n 'touch-action:none',\n 'user-select:none',\n 'cursor:grab',\n ].join(';');\n root.append(header, surface);\n overlay.root.appendChild(root);\n const card = { root, title, statusLabel, surface };\n overlay.cards.set(preview.id, card);\n return card;\n}\n\nfunction getPrefabComparisonPreviewStatusColor(\n status: LocalEditorBrowserPrefabStageComparisonPreviewStatus,\n): string {\n const tone = resolveLocalEditorPrefabStageComparisonPreviewTone(status);\n return tone === 'success'\n ? 'var(--fps-editor-success)'\n : tone === 'warning'\n ? 'var(--fps-editor-warn)'\n : 'var(--fps-editor-danger-strong)';\n}\n\nfunction formatPrefabImportStatsStatusLabel(status: LocalEditorBrowserPrefabStageImportStats['status']): string {\n return status === 'ready' ? 'READY' : status === 'loading' ? 'LOADING' : 'MISSING';\n}\n\nfunction formatPerformanceInteger(value: number | null): string {\n return typeof value === 'number' && Number.isFinite(value) ? String(Math.round(value)) : '--';\n}\n\nfunction formatPerformanceFrameMs(value: number | null): string {\n return typeof value === 'number' && Number.isFinite(value) ? `${value.toFixed(1)}ms` : '--';\n}\n\nfunction formatPerformanceClassBreakdown(\n stats: LocalEditorBrowserPerformanceStats | null,\n key: PerformanceMonitorMeshClassCountKey,\n): string {\n return formatPerformanceActiveTotal(\n stats?.activeMeshClassCounts?.[key] ?? null,\n stats?.meshClassCounts?.[key] ?? null,\n );\n}\n\nfunction formatPerformanceCategoryBreakdown(\n stats: LocalEditorBrowserPerformanceStats | null,\n key: PerformanceMonitorMeshCategoryCountKey,\n): string {\n return formatPerformanceActiveTotal(\n stats?.activeMeshCategoryCounts?.[key] ?? null,\n stats?.meshCategoryCounts?.[key] ?? null,\n );\n}\n\nfunction formatPerformanceProjectionRoleBreakdown(\n stats: LocalEditorBrowserPerformanceStats | null,\n key: PerformanceMonitorProjectionRoleCountKey,\n): string {\n return formatPerformanceActiveTotal(\n stats?.activeProjectionRoleCounts?.[key] ?? null,\n stats?.projectionRoleCounts?.[key] ?? null,\n );\n}\n\nfunction formatPerformanceActiveTotal(active: number | null, total: number | null): string {\n if (!isFinitePerformanceNumber(active) || !isFinitePerformanceNumber(total)) return '--';\n return `${Math.round(active)}/${Math.round(total)}`;\n}\n\nfunction isFinitePerformanceNumber(value: number | null): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction createCoordinateAxesOverlay(doc: Document): CoordinateAxesOverlayElements {\n const root = doc.createElement('div');\n root.dataset.editorCoordinateAxesOverlay = 'true';\n root.style.cssText = [\n 'position:absolute',\n 'right:14px',\n 'bottom:14px',\n 'width:112px',\n 'height:112px',\n 'display:none',\n 'z-index:2',\n 'box-sizing:border-box',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:8px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 58%, transparent)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'pointer-events:none',\n 'overflow:hidden',\n ].join(';');\n\n const svg = doc.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 112 112');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.cssText = 'display:block;width:100%;height:100%';\n root.appendChild(svg);\n\n const lineLayer = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n const labelLayer = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n svg.appendChild(lineLayer);\n svg.appendChild(labelLayer);\n\n const axisGroups = new Map<string, SVGGElement>();\n const axisLines = new Map<string, SVGLineElement>();\n const axisLabels = new Map<string, SVGTextElement>();\n const axisDiscs = new Map<string, SVGCircleElement>();\n for (const axis of ['x', 'y', 'z']) {\n const group = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n const line = doc.createElementNS('http://www.w3.org/2000/svg', 'line');\n line.setAttribute('stroke-width', '3.2');\n line.setAttribute('stroke-linecap', 'round');\n line.setAttribute('x1', '56');\n line.setAttribute('y1', '56');\n const disc = doc.createElementNS('http://www.w3.org/2000/svg', 'circle');\n disc.setAttribute('r', '7');\n const label = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n label.setAttribute('text-anchor', 'middle');\n label.setAttribute('dominant-baseline', 'middle');\n label.setAttribute('dy', '0.04em');\n label.style.cssText = [\n 'fill:#172033',\n 'font-size:10px',\n 'font-weight:900',\n 'font-family:Arial, Helvetica, sans-serif',\n 'letter-spacing:0',\n ].join(';');\n group.appendChild(disc);\n group.appendChild(label);\n lineLayer.appendChild(line);\n labelLayer.appendChild(group);\n axisGroups.set(axis, group);\n axisLines.set(axis, line);\n axisLabels.set(axis, label);\n axisDiscs.set(axis, disc);\n }\n\n const centerDot = doc.createElementNS('http://www.w3.org/2000/svg', 'circle');\n centerDot.setAttribute('cx', '56');\n centerDot.setAttribute('cy', '56');\n centerDot.setAttribute('r', '3.2');\n centerDot.setAttribute('fill', 'color-mix(in srgb, var(--fps-editor-text) 82%, transparent)');\n labelLayer.appendChild(centerDot);\n\n const projectionIcon = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n projectionIcon.setAttribute('transform', 'translate(8 8)');\n projectionIcon.setAttribute('role', 'button');\n projectionIcon.setAttribute('tabindex', '0');\n projectionIcon.dataset.coordinateAxesProjectionToggle = 'true';\n projectionIcon.style.cssText = 'opacity:0.92;pointer-events:auto;cursor:pointer;outline:none';\n const projectionIconFrame = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n projectionIconFrame.setAttribute('x', '0');\n projectionIconFrame.setAttribute('y', '0');\n projectionIconFrame.setAttribute('width', '18');\n projectionIconFrame.setAttribute('height', '18');\n projectionIconFrame.setAttribute('rx', '4');\n projectionIconFrame.setAttribute('fill', 'color-mix(in srgb, var(--fps-editor-chrome) 78%, transparent)');\n projectionIconFrame.setAttribute('stroke', 'color-mix(in srgb, var(--fps-editor-border) 82%, transparent)');\n projectionIconFrame.setAttribute('stroke-width', '1');\n const projectionIconShape = doc.createElementNS('http://www.w3.org/2000/svg', 'path');\n projectionIconShape.setAttribute('fill', 'none');\n projectionIconShape.setAttribute('stroke', 'color-mix(in srgb, var(--fps-editor-accent) 82%, #ffffff)');\n projectionIconShape.setAttribute('stroke-width', '1.6');\n projectionIconShape.setAttribute('stroke-linejoin', 'round');\n projectionIconShape.setAttribute('stroke-linecap', 'round');\n projectionIcon.appendChild(projectionIconFrame);\n projectionIcon.appendChild(projectionIconShape);\n svg.appendChild(projectionIcon);\n\n return {\n root,\n lineLayer,\n labelLayer,\n axisGroups,\n axisLines,\n axisLabels,\n axisDiscs,\n centerDot,\n projectionIcon,\n projectionIconShape,\n };\n}\n\nfunction renderCoordinateAxesOverlay(\n overlay: CoordinateAxesOverlayElements,\n state: LocalEditorBrowserCoordinateAxesState | null,\n): void {\n if (!state?.axes?.length) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = '';\n renderCoordinateAxesProjectionIcon(overlay, state.projectionMode, state.projectionToggleDisabled === true);\n const center = 56;\n const lineLength = 38;\n const sortedAxes = [...state.axes].sort((left, right) => right.depth - left.depth);\n for (const axis of sortedAxes) {\n const group = overlay.axisGroups.get(axis.id);\n const line = overlay.axisLines.get(axis.id);\n const disc = overlay.axisDiscs.get(axis.id);\n const label = overlay.axisLabels.get(axis.id);\n if (!group || !line || !disc || !label) continue;\n const length = lineLength * axis.scale;\n const endX = center + axis.x * length;\n const endY = center + axis.y * length;\n line.setAttribute('x2', formatSvgNumber(endX));\n line.setAttribute('y2', formatSvgNumber(endY));\n line.setAttribute('stroke', axis.color);\n disc.setAttribute('cx', formatSvgNumber(endX));\n disc.setAttribute('cy', formatSvgNumber(endY));\n disc.setAttribute('fill', axis.color);\n label.setAttribute('x', formatSvgNumber(endX));\n label.setAttribute('y', formatSvgNumber(endY));\n label.textContent = axis.label;\n group.style.opacity = String(0.72 + axis.scale * 0.28);\n overlay.lineLayer.appendChild(line);\n overlay.labelLayer.appendChild(group);\n }\n overlay.labelLayer.appendChild(overlay.centerDot);\n}\n\nfunction renderCoordinateAxesProjectionIcon(\n overlay: CoordinateAxesOverlayElements,\n mode: LocalEditorBrowserViewportProjectionMode,\n disabled: boolean,\n): void {\n overlay.projectionIcon.dataset.viewportProjectionMode = mode;\n overlay.projectionIcon.setAttribute(\n 'aria-label',\n disabled\n ? `编辑视口投影:${VIEWPORT_PROJECTION_LABELS[mode]},Main Camera 预览中不可切换`\n : `编辑视口投影:${VIEWPORT_PROJECTION_LABELS[mode]},点击切换`,\n );\n overlay.projectionIcon.setAttribute('aria-disabled', disabled ? 'true' : 'false');\n overlay.projectionIcon.style.opacity = disabled ? '0.46' : '0.92';\n overlay.projectionIcon.style.cursor = disabled ? 'not-allowed' : 'pointer';\n overlay.projectionIconShape.setAttribute(\n 'd',\n mode === 'orthographic'\n ? 'M5 6.5H12.5V14H5ZM7.5 4H15V11.5'\n : 'M4.5 14H13.5L10.5 4H7.5ZM7 10.5H11',\n );\n}\n\ninterface SpatialOverlayElements {\n root: HTMLDivElement;\n svg: SVGSVGElement;\n lineLayer: SVGGElement;\n markerLayer: SVGGElement;\n labelLayer: HTMLDivElement;\n lines: Map<string, SVGLineElement>;\n markers: Map<string, SVGCircleElement>;\n labels: Map<string, HTMLDivElement>;\n}\n\nfunction createSpatialOverlay(doc: Document): SpatialOverlayElements {\n const root = doc.createElement('div');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorSpatialOverlay = 'true';\n root.style.cssText = [\n 'position:absolute',\n 'top:38px',\n 'left:0',\n 'right:0',\n 'bottom:0',\n 'z-index:1',\n 'display:none',\n 'pointer-events:none',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'overflow:hidden',\n ].join(';');\n\n const svg = doc.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.cssText = [\n 'position:absolute',\n 'inset:0',\n 'width:100%',\n 'height:100%',\n 'overflow:hidden',\n ].join(';');\n const lineLayer = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n const markerLayer = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n svg.appendChild(lineLayer);\n svg.appendChild(markerLayer);\n root.appendChild(svg);\n\n const labelLayer = doc.createElement('div');\n labelLayer.style.cssText = 'position:absolute;inset:0;pointer-events:none';\n root.appendChild(labelLayer);\n\n return {\n root,\n svg,\n lineLayer,\n markerLayer,\n labelLayer,\n lines: new Map(),\n markers: new Map(),\n labels: new Map(),\n };\n}\n\nfunction renderSpatialOverlay(\n overlay: SpatialOverlayElements,\n state: LocalEditorBrowserViewportSpatialOverlayState | null,\n): void {\n if (!state?.active) {\n overlay.root.style.display = 'none';\n clearSpatialOverlayElements(overlay);\n return;\n }\n overlay.root.style.display = '';\n const rect = overlay.root.getBoundingClientRect();\n overlay.svg.setAttribute('width', formatSvgNumber(rect.width));\n overlay.svg.setAttribute('height', formatSvgNumber(rect.height));\n overlay.svg.setAttribute('viewBox', `0 0 ${formatSvgNumber(rect.width)} ${formatSvgNumber(rect.height)}`);\n\n const visibleLineIds = new Set<string>();\n for (const lineState of state.lines) {\n const line = ensureSpatialOverlayLine(overlay, lineState.id);\n line.setAttribute('x1', formatSvgNumber(lineState.start.x - rect.left));\n line.setAttribute('y1', formatSvgNumber(lineState.start.y - rect.top));\n line.setAttribute('x2', formatSvgNumber(lineState.end.x - rect.left));\n line.setAttribute('y2', formatSvgNumber(lineState.end.y - rect.top));\n visibleLineIds.add(lineState.id);\n }\n for (const [id, line] of overlay.lines) {\n if (!visibleLineIds.has(id)) {\n line.remove();\n overlay.lines.delete(id);\n }\n }\n\n const visibleMarkerIds = new Set<string>();\n for (const markerState of state.markers) {\n const marker = ensureSpatialOverlayMarker(overlay, markerState.id);\n marker.setAttribute('cx', formatSvgNumber(markerState.position.x - rect.left));\n marker.setAttribute('cy', formatSvgNumber(markerState.position.y - rect.top));\n visibleMarkerIds.add(markerState.id);\n }\n for (const [id, marker] of overlay.markers) {\n if (!visibleMarkerIds.has(id)) {\n marker.remove();\n overlay.markers.delete(id);\n }\n }\n\n const visibleLabelIds = new Set<string>();\n for (const labelState of state.labels) {\n const label = ensureSpatialOverlayLabel(overlay, labelState.id, labelState.kind);\n label.textContent = labelState.text;\n label.style.left = `${labelState.x - rect.left}px`;\n label.style.top = `${labelState.y - rect.top}px`;\n visibleLabelIds.add(labelState.id);\n }\n for (const [id, label] of overlay.labels) {\n if (!visibleLabelIds.has(id)) {\n label.remove();\n overlay.labels.delete(id);\n }\n }\n}\n\nfunction clearSpatialOverlayElements(overlay: SpatialOverlayElements): void {\n for (const line of overlay.lines.values()) line.remove();\n for (const marker of overlay.markers.values()) marker.remove();\n for (const label of overlay.labels.values()) label.remove();\n overlay.lines.clear();\n overlay.markers.clear();\n overlay.labels.clear();\n}\n\nfunction ensureSpatialOverlayLine(overlay: SpatialOverlayElements, id: string): SVGLineElement {\n const existing = overlay.lines.get(id);\n if (existing) return existing;\n const line = overlay.root.ownerDocument.createElementNS('http://www.w3.org/2000/svg', 'line');\n line.setAttribute('stroke', 'color-mix(in srgb, var(--fps-editor-drop-target) 82%, white)');\n line.setAttribute('stroke-width', '1.4');\n line.setAttribute('stroke-linecap', 'round');\n line.setAttribute('vector-effect', 'non-scaling-stroke');\n line.style.filter = 'drop-shadow(0 1px 2px rgba(0,0,0,0.45))';\n overlay.lineLayer.appendChild(line);\n overlay.lines.set(id, line);\n return line;\n}\n\nfunction ensureSpatialOverlayMarker(overlay: SpatialOverlayElements, id: string): SVGCircleElement {\n const existing = overlay.markers.get(id);\n if (existing) return existing;\n const marker = overlay.root.ownerDocument.createElementNS('http://www.w3.org/2000/svg', 'circle');\n marker.setAttribute('r', '4.5');\n marker.setAttribute('fill', 'var(--fps-editor-drop-target)');\n marker.setAttribute('stroke', 'var(--fps-editor-panel)');\n marker.setAttribute('stroke-width', '2');\n marker.style.filter = 'drop-shadow(0 1px 2px rgba(0,0,0,0.5))';\n overlay.markerLayer.appendChild(marker);\n overlay.markers.set(id, marker);\n return marker;\n}\n\nfunction ensureSpatialOverlayLabel(\n overlay: SpatialOverlayElements,\n id: string,\n kind: LocalEditorBrowserViewportSpatialOverlayState['labels'][number]['kind'],\n): HTMLDivElement {\n const existing = overlay.labels.get(id);\n if (existing) return existing;\n const label = overlay.root.ownerDocument.createElement('div');\n label.dataset.editorSpatialOverlayLabel = kind;\n label.style.cssText = [\n 'position:absolute',\n 'transform:translate(-50%, -50%)',\n 'max-width:220px',\n 'padding:2px 5px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 82%, transparent)',\n 'border-radius:3px',\n 'background:color-mix(in srgb, var(--fps-editor-panel) 88%, transparent)',\n 'box-shadow:0 1px 4px rgba(0,0,0,0.22)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:10px',\n 'font-weight:900',\n 'line-height:1.25',\n 'letter-spacing:0',\n 'white-space:nowrap',\n ].join(';');\n if (kind === 'anchor') label.style.color = 'var(--fps-editor-drop-target)';\n overlay.labelLayer.appendChild(label);\n overlay.labels.set(id, label);\n return label;\n}\n\ninterface MeasurementOverlayElements {\n root: HTMLDivElement;\n svg: SVGSVGElement;\n line: SVGLineElement;\n startMarker: SVGCircleElement;\n endMarker: SVGCircleElement;\n label: HTMLDivElement;\n}\n\nfunction createMeasurementOverlay(doc: Document): MeasurementOverlayElements {\n const root = doc.createElement('div');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorMeasurementOverlay = 'true';\n root.style.cssText = [\n 'position:absolute',\n 'top:38px',\n 'left:0',\n 'right:0',\n 'bottom:0',\n 'z-index:2',\n 'display:none',\n 'pointer-events:none',\n 'overflow:hidden',\n 'font-family:var(--fps-editor-font)',\n ].join(';');\n const svg = doc.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;overflow:hidden';\n const line = doc.createElementNS('http://www.w3.org/2000/svg', 'line');\n line.setAttribute('stroke', 'var(--fps-editor-drop-target)');\n line.setAttribute('stroke-width', '2');\n line.setAttribute('stroke-linecap', 'round');\n line.setAttribute('vector-effect', 'non-scaling-stroke');\n line.style.filter = 'drop-shadow(0 1px 2px rgba(0,0,0,0.5))';\n const startMarker = createMeasurementMarker(doc);\n const endMarker = createMeasurementMarker(doc);\n svg.appendChild(line);\n svg.appendChild(startMarker);\n svg.appendChild(endMarker);\n root.appendChild(svg);\n const label = doc.createElement('div');\n label.dataset.editorMeasurementLabel = 'true';\n label.style.cssText = [\n 'position:absolute',\n 'transform:translate(-50%, -50%)',\n 'padding:3px 6px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-drop-target) 72%, var(--fps-editor-border))',\n 'border-radius:3px',\n 'background:color-mix(in srgb, var(--fps-editor-panel) 90%, transparent)',\n 'box-shadow:0 1px 4px rgba(0,0,0,0.24)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:10px',\n 'font-weight:900',\n 'line-height:1.25',\n 'letter-spacing:0',\n 'white-space:nowrap',\n ].join(';');\n root.appendChild(label);\n return { root, svg, line, startMarker, endMarker, label };\n}\n\nfunction createMeasurementMarker(doc: Document): SVGCircleElement {\n const marker = doc.createElementNS('http://www.w3.org/2000/svg', 'circle');\n marker.setAttribute('r', '4');\n marker.setAttribute('fill', 'var(--fps-editor-drop-target)');\n marker.setAttribute('stroke', 'var(--fps-editor-panel)');\n marker.setAttribute('stroke-width', '2');\n return marker;\n}\n\nfunction renderMeasurementOverlay(\n overlay: MeasurementOverlayElements,\n state: LocalEditorBrowserViewportMeasurementState | null,\n): void {\n const start = state?.screenStart ?? null;\n const end = state?.screenEnd ?? state?.screenPreview ?? null;\n if (!start || !end) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = '';\n const rect = overlay.root.getBoundingClientRect();\n overlay.svg.setAttribute('width', formatSvgNumber(rect.width));\n overlay.svg.setAttribute('height', formatSvgNumber(rect.height));\n overlay.svg.setAttribute('viewBox', `0 0 ${formatSvgNumber(rect.width)} ${formatSvgNumber(rect.height)}`);\n const startX = start.x - rect.left;\n const startY = start.y - rect.top;\n const endX = end.x - rect.left;\n const endY = end.y - rect.top;\n overlay.line.setAttribute('x1', formatSvgNumber(startX));\n overlay.line.setAttribute('y1', formatSvgNumber(startY));\n overlay.line.setAttribute('x2', formatSvgNumber(endX));\n overlay.line.setAttribute('y2', formatSvgNumber(endY));\n overlay.startMarker.setAttribute('cx', formatSvgNumber(startX));\n overlay.startMarker.setAttribute('cy', formatSvgNumber(startY));\n overlay.endMarker.setAttribute('cx', formatSvgNumber(endX));\n overlay.endMarker.setAttribute('cy', formatSvgNumber(endY));\n overlay.label.textContent = state?.label?.text ?? '';\n overlay.label.style.display = state?.label ? '' : 'none';\n if (state?.label) {\n overlay.label.style.left = `${state.label.x - rect.left}px`;\n overlay.label.style.top = `${state.label.y - rect.top}px`;\n }\n}\n\nfunction formatSvgNumber(value: number): string {\n return Number.isFinite(value) ? value.toFixed(2) : '0';\n}\n\nfunction isLocalEditorAssetBrowserTab(value: unknown): value is LocalEditorAssetBrowserTab {\n return value === 'all' || value === 'models' || value === 'prefabs' || value === 'materials' || value === 'textures';\n}\n\nexport function createAssetBrowserMenuItems<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n asset: LocalEditorBrowserUiAssetItem,\n): LocalEditorContextMenuItem[] {\n const assetKind = resolveLocalEditorBrowserAssetKind(asset);\n const placeable = asset.placeable !== false && asset.disabled !== true;\n const activeId = state.activeId;\n const inPrefabStage = !!state.prefabStage;\n const items: LocalEditorContextMenuItem[] = [];\n if (assetKind === 'material') {\n const deleteDisabledReason = getMaterialAssetDeleteDisabledReason(asset);\n items.push({\n id: 'asset.edit-material',\n label: '编辑材质球',\n disabled: !asset.material,\n disabledReason: '该材质资产缺少可编辑参数。',\n });\n items.push({\n id: 'asset.duplicate-material',\n label: '复制材质',\n disabled: !asset.assetId,\n disabledReason: '该材质资产缺少可复制的材质 ID。',\n });\n items.push({\n id: 'asset.delete-material',\n label: '删除材质',\n danger: true,\n separatorBefore: true,\n disabled: !!deleteDisabledReason,\n disabledReason: deleteDisabledReason,\n });\n } else if (assetKind === 'texture' && asset.preview) {\n items.push({\n id: 'asset.preview',\n label: '查看贴图预览',\n });\n } else if (assetKind === 'prefab') {\n if (inPrefabStage) {\n items.push({\n id: 'asset.add-to-current-prefab',\n label: '添加到当前 Prefab',\n disabled: !placeable,\n disabledReason: '该 Prefab 当前不可添加到当前 Prefab。',\n });\n }\n items.push({\n id: 'asset.rename',\n label: '重命名 Prefab',\n disabled: !asset.assetId && !asset.id,\n disabledReason: '该预制体资产缺少可重命名的资产 ID。',\n });\n items.push({\n id: 'asset.edit-prefab',\n label: inPrefabStage ? '打开 Prefab Stage' : '编辑 Prefab',\n separatorBefore: inPrefabStage ? true : undefined,\n disabled: !asset.prefab,\n disabledReason: '该预制体资产缺少可编辑参数。',\n });\n items.push({\n id: 'asset.duplicate-prefab',\n label: '复制 Prefab',\n disabled: !asset.assetId && !asset.id,\n disabledReason: '该预制体资产缺少可复制的 Prefab ID。',\n });\n }\n\n if (assetKind === 'material') {\n items.push({\n id: 'asset.apply-material',\n label: '应用到当前 GameObject',\n separatorBefore: true,\n disabled: !activeId,\n disabledReason: '请先在 Hierarchy 或 Scene View 中选择一个 GameObject。',\n });\n } else if (assetKind === 'texture') {\n if (!inPrefabStage) {\n items.push({\n id: 'asset.add-to-scene',\n label: '作为地贴添加到场景',\n separatorBefore: asset.preview ? true : undefined,\n disabled: !placeable,\n disabledReason: '该贴图当前不可放置。',\n });\n items.push({\n id: 'asset.place',\n label: '进入地面放置模式',\n disabled: !placeable,\n disabledReason: '该贴图当前不可放置。',\n });\n }\n items.push({\n id: 'asset.use-base-texture',\n label: '用作当前材质 Base 图',\n disabled: true,\n disabledReason: 'Base 图材质字段将在下一步接入。',\n separatorBefore: true,\n });\n items.push({\n id: 'asset.use-emission-mask',\n label: '用作当前材质自发光遮罩',\n disabled: true,\n disabledReason: '自发光遮罩绑定将在下一步接入。',\n });\n } else if (assetKind === 'prefab') {\n if (!inPrefabStage) {\n items.push({\n id: 'asset.add-to-scene',\n label: '添加 Prefab 到场景',\n separatorBefore: true,\n disabled: !placeable,\n disabledReason: '该 Prefab 当前不可放置。',\n });\n items.push({\n id: 'asset.place',\n label: '进入 Prefab 放置模式',\n disabled: !placeable,\n disabledReason: '该 Prefab 当前不可放置。',\n });\n }\n } else {\n if (inPrefabStage) {\n items.push({\n id: 'asset.add-to-current-prefab',\n label: '添加到当前 Prefab',\n disabled: !placeable,\n disabledReason: '该模型当前不可添加到当前 Prefab。',\n });\n }\n if (!inPrefabStage) {\n items.push({\n id: 'asset.add-to-scene',\n label: '添加到场景',\n disabled: !placeable,\n disabledReason: '该模型当前不可放置。',\n });\n items.push({\n id: 'asset.place',\n label: '进入放置模式',\n disabled: !placeable,\n disabledReason: '该模型当前不可放置。',\n });\n items.push({\n id: 'asset.create-prefab',\n label: '创建 Prefab',\n disabled: !asset.assetId && !asset.id,\n disabledReason: '该模型缺少可创建 Prefab 的 Asset ID。',\n separatorBefore: true,\n });\n items.push({\n id: 'asset.add-as-child',\n label: '添加为当前节点子对象',\n disabled: true,\n disabledReason: '子对象添加动作将在资产 patch 中接入。',\n });\n items.push({\n id: 'asset.replace-selected-model',\n label: '替换当前模型',\n disabled: true,\n disabledReason: '模型替换动作将在资产 patch 中接入。',\n });\n }\n }\n\n items.push({\n id: 'asset.copy-id',\n label: '复制 Asset ID',\n separatorBefore: true,\n });\n return items;\n}\n\nfunction getMaterialAssetDeleteDisabledReason(asset: LocalEditorBrowserUiAssetItem): string | undefined {\n if (!asset.assetId) return '该材质资产缺少可删除的材质 ID。';\n if (!asset.material) return '该材质资产缺少可删除的材质数据。';\n if (asset.material.readonly) return '系统默认材质不可删除。';\n const usageCount = asset.material.usage?.count ?? 0;\n if (usageCount > 0) return `该材质正在被 ${usageCount} 处使用,请先替换或解绑。`;\n return undefined;\n}\n\nfunction createAssetBrowserActionInput(\n actionId: string,\n asset: LocalEditorBrowserUiAssetItem,\n context?: { targetPrefabAssetId?: string; parentNodeId?: string },\n): LocalEditorBrowserAssetActionInput {\n return {\n actionId,\n assetId: asset.assetId ?? asset.id,\n browserAssetId: asset.id,\n assetKind: asset.kind ?? resolveLocalEditorBrowserAssetKind(asset),\n ...(context?.targetPrefabAssetId ? { targetPrefabAssetId: context.targetPrefabAssetId } : {}),\n ...(context?.parentNodeId ? { parentNodeId: context.parentNodeId } : {}),\n };\n}\n\nexport function resolveAssetBrowserDoubleClickAction<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n asset: LocalEditorBrowserUiAssetItem,\n): string | null {\n const assetKind = resolveLocalEditorBrowserAssetKind(asset);\n if (state.prefabStage && (assetKind === 'model' || assetKind === 'prefab')) return 'asset.add-to-current-prefab';\n if (!state.prefabStage && assetKind === 'prefab') return 'asset.edit-prefab';\n return null;\n}\n\nfunction copyTextToClipboard(win: Window | null, text: string): void {\n void win?.navigator?.clipboard?.writeText?.(text);\n}\n\nfunction readInspectorAssetPickerOptions<TDocument>(\n property: LocalEditorBrowserInspectorProperty<TDocument>,\n): { title: string; candidates: LocalEditorBrowserInspectorAssetPickerOption[] } {\n const title = readControlOptionString(property, 'pickerTitle') || property.label;\n const rawCandidates = property.controlOptions?.candidates;\n const candidates = Array.isArray(rawCandidates)\n ? rawCandidates.flatMap(readInspectorAssetPickerOption)\n : [];\n return { title, candidates };\n}\n\nfunction readInspectorAssetPickerOption(value: unknown): LocalEditorBrowserInspectorAssetPickerOption[] {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return [];\n const record = value as Record<string, unknown>;\n const label = typeof record.label === 'string' ? record.label : '';\n const optionValue = typeof record.value === 'string' ? record.value : '';\n if (!label && !optionValue) return [];\n return [{\n label: label || optionValue,\n value: optionValue,\n ...(typeof record.meta === 'string' ? { meta: record.meta } : {}),\n ...(typeof record.kind === 'string' ? { kind: record.kind } : {}),\n ...(isAssetPreview(record.preview) ? { preview: record.preview } : {}),\n }];\n}\n\nfunction readControlOptionString<TDocument>(\n property: LocalEditorBrowserInspectorProperty<TDocument>,\n key: string,\n): string {\n const value = property.controlOptions?.[key];\n return typeof value === 'string' ? value : '';\n}\n\nfunction isAssetPreview(value: unknown): value is LocalEditorBrowserAssetPreview {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n if (record.kind === 'image') return typeof record.url === 'string' && record.url.length > 0;\n return record.kind === 'material-sphere';\n}\n\nfunction findInspectorPropertyForInput<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n input: HTMLInputElement | HTMLSelectElement,\n): LocalEditorBrowserInspectorProperty<TDocument> | null {\n const path = input.dataset.serializedPath;\n if (!path) return null;\n const objects = [state.inspectorObject, state.inspectorMultiObject].filter(Boolean) as Array<NonNullable<LocalEditorBrowserUiState<TDocument>['inspectorObject']>>;\n for (const object of objects) {\n for (const section of object.sections) {\n const property = section.properties.find(candidate => candidate.path === path);\n if (property) return property;\n }\n }\n return null;\n}\n\nfunction findRenderingPropertyForInput<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n input: HTMLInputElement,\n): LocalEditorBrowserInspectorProperty<TDocument> | null {\n const sectionId = input.dataset.renderingSectionId;\n const systemId = input.dataset.renderingSystemId;\n const path = input.dataset.renderingPath;\n if (!sectionId || !systemId || !path) return null;\n const renderingPanel = state.renderingPanel;\n const section = renderingPanel?.sections.find(candidate => candidate.id === sectionId);\n const system = section?.systems.find(candidate => candidate.id === systemId);\n const property = system?.properties.find(candidate => candidate.path === path);\n if (!property) return null;\n const readOnly = system?.readOnly === true || property.readOnly === true || property.disabled === true;\n return {\n path: property.path,\n label: property.label,\n valueType: property.valueType === 'string-list' ? 'string' : property.valueType,\n control: property.control === 'asset-picker-card'\n ? readOnly ? 'readonly' : 'custom'\n : property.control === 'string-list'\n ? readOnly ? 'readonly' : 'string'\n : property.control,\n customControl: property.control === 'asset-picker-card' ? 'asset-picker-card' : undefined,\n value: property.value,\n readOnly,\n persistence: readOnly ? 'readonly' : 'document',\n commitMode: property.commitMode ?? (property.control === 'string-list' ? 'blur' : 'live'),\n tooltip: property.tooltip,\n effect: property.disabled ? 'unsupported' : undefined,\n disabledReason: property.disabledReason,\n placeholder: property.placeholder,\n min: property.min,\n max: property.max,\n step: property.step,\n options: property.options,\n controlOptions: property.controlOptions,\n tags: property.tags,\n };\n}\n\ninterface LocalEditorBrowserUiConstruction {\n addCleanup(key: string, operation: () => void): void;\n appendRootChild<TNode extends ChildNode>(child: TNode): TNode;\n removeMountedRootChildren(): void;\n}\n\ninterface LocalEditorBrowserUiConstructionError extends Error {\n readonly errors: unknown[];\n readonly retryCleanup: () => void;\n}\n\nexport function createLocalEditorBrowserUi<TDocument = unknown>(\n options: LocalEditorBrowserUiOptions<TDocument> = {},\n): LocalEditorBrowserUi<TDocument> & LocalEditorThemeController {\n const doc = options.document ?? document;\n const root = options.root ?? doc.body;\n const rootOwnership = createLocalEditorRootOwnership(root);\n const completedCleanup = new Set<string>();\n const removeMountedRootChildren = (): void => rootOwnership.removeAll();\n const cleanupOperations: Array<{ key: string; operation: () => void }> = [{\n key: 'root-children',\n operation: removeMountedRootChildren,\n }];\n const construction: LocalEditorBrowserUiConstruction = {\n addCleanup(key, operation) {\n cleanupOperations.push({ key, operation });\n },\n appendRootChild(child) {\n return rootOwnership.append(child);\n },\n removeMountedRootChildren,\n };\n const retryCleanup = (): void => {\n const errors: unknown[] = [];\n for (let index = cleanupOperations.length - 1; index >= 0; index -= 1) {\n const cleanup = cleanupOperations[index]!;\n if (completedCleanup.has(cleanup.key)) continue;\n try {\n cleanup.operation();\n completedCleanup.add(cleanup.key);\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length > 0) {\n const error = new Error('Local Editor browser UI construction cleanup failed.') as Error & {\n errors: unknown[];\n };\n error.errors = errors;\n throw error;\n }\n };\n\n try {\n const ui = createLocalEditorBrowserUiImplementation(options, construction);\n cleanupOperations.length = 0;\n completedCleanup.clear();\n return ui;\n } catch (constructionError) {\n try {\n retryCleanup();\n } catch (cleanupError) {\n const error = new Error(\n 'Local Editor browser UI construction and rollback failed.',\n ) as LocalEditorBrowserUiConstructionError;\n Object.defineProperties(error, {\n errors: { value: [constructionError, cleanupError], enumerable: true },\n retryCleanup: { value: retryCleanup, enumerable: false },\n });\n throw error;\n }\n throw constructionError;\n }\n}\n\nfunction createLocalEditorBrowserUiImplementation<TDocument = unknown>(\n options: LocalEditorBrowserUiOptions<TDocument>,\n construction: LocalEditorBrowserUiConstruction,\n): LocalEditorBrowserUi<TDocument> & LocalEditorThemeController {\n const doc = options.document ?? document;\n const root = options.root ?? doc.body;\n const callbacks = options.callbacks ?? {};\n const localTestActionsEnabled = options.localTestActions === true;\n ensureLocalEditorTheme(doc);\n let activeTheme: LocalEditorThemeName = normalizeLocalEditorThemeName(options.theme);\n const inputRouter = createLocalEditorWorkbenchInputRouter(doc, {\n isShortcutReserved: options.input?.isShortcutReserved,\n });\n construction.addCleanup('input-router', () => inputRouter.dispose());\n const modalDialog = createLocalEditorModalDialog({\n doc,\n host: root,\n getTheme: () => activeTheme,\n onOpenChange: open => inputRouter.setModalOpen(open, 'data-safety'),\n });\n construction.addCleanup('modal-dialog', () => modalDialog.dispose());\n const contextMenu = createLocalEditorContextMenuController(doc, (open) => {\n inputRouter.setContextMenuOpen(open);\n }, activeTheme);\n construction.addCleanup('context-menu', () => contextMenu.dispose());\n const tooltipSurfaces = new Set<HTMLElement>();\n const tooltipController = createLocalEditorTooltipController(doc, root, activeTheme, {\n scope: () => tooltipSurfaces,\n });\n construction.addCleanup('tooltip-controller', () => tooltipController.dispose());\n let currentState: LocalEditorBrowserUiState<TDocument> | null = null;\n let inspectorFilter = '';\n const lockedInspectorVectorGroups = new Set<string>();\n let assetBrowserTab: LocalEditorAssetBrowserTab = 'all';\n const workbenchLayout = createDefaultLocalEditorWorkbenchLayout();\n const panelRegistry = createLocalEditorPanelRegistry(workbenchLayout);\n\n const hostChrome = doc.createElement('div');\n hostChrome.dataset.editorWorkbenchRegion = 'top-bar';\n hostChrome.className = LOCAL_EDITOR_THEME_CLASS;\n hostChrome.style.cssText = [\n 'position:fixed',\n 'top:12px',\n 'left:50%',\n 'transform:translateX(-50%)',\n 'z-index:2147483640',\n 'display:none',\n 'align-items:center',\n 'gap:8px',\n 'height:34px',\n 'padding:0 8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-chrome)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'pointer-events:auto',\n ].join(';');\n const hostModeLabel = doc.createElement('span');\n hostModeLabel.textContent = '本地宿主 · 游戏模式';\n hostModeLabel.style.cssText = [\n 'color:var(--fps-editor-muted-strong)',\n 'font-weight:800',\n 'white-space:nowrap',\n ].join(';');\n const enterEditorButton = LocalEditorShared.createButton(doc, '进入编辑场景', { icon: 'execute' });\n hostChrome.appendChild(hostModeLabel);\n hostChrome.appendChild(enterEditorButton);\n construction.appendRootChild(hostChrome);\n tooltipSurfaces.add(hostChrome);\n\n const dirtyBadge = doc.createElement('span');\n dirtyBadge.dataset.editorDirtyBadge = 'true';\n dirtyBadge.dataset.editorTooltip = '有未保存更改';\n dirtyBadge.setAttribute('role', 'status');\n dirtyBadge.setAttribute('aria-label', '有未保存更改');\n dirtyBadge.style.cssText = [\n 'display:none',\n 'width:8px',\n 'height:8px',\n 'align-items:center',\n 'justify-content:center',\n 'padding:0',\n 'border-radius:999px',\n 'background:var(--fps-editor-danger-strong)',\n 'border:1px solid var(--fps-editor-danger-border)',\n 'box-shadow:0 0 0 3px var(--fps-editor-danger-soft)',\n ].join(';');\n\n const saveButton = LocalEditorShared.createButton(doc, '保存场景', { icon: 'save' });\n const saveAndRunButton = LocalEditorShared.createButton(doc, '保存并运行', { icon: 'execute' });\n const discardRunButton = LocalEditorShared.createButton(doc, '放弃并运行', { icon: 'discard' });\n const localTestButton = createToolbarIconButton(doc, '本地测试', 'execute', '打开本地测试操作');\n localTestButton.dataset.editorLocalTestToggle = 'true';\n const localTestMenu = doc.createElement('div');\n localTestMenu.classList.add(LOCAL_EDITOR_THEME_CLASS);\n localTestMenu.dataset.editorLocalTestMenu = 'true';\n localTestMenu.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:6px',\n 'min-width:150px',\n 'padding:8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n for (const button of [saveButton, saveAndRunButton, discardRunButton]) {\n button.style.justifyContent = 'flex-start';\n button.style.width = '100%';\n localTestMenu.appendChild(button);\n }\n const localTestGroup = doc.createElement('div');\n localTestGroup.style.cssText = [\n `display:${localTestActionsEnabled ? 'flex' : 'none'}`,\n 'align-items:center',\n 'gap:4px',\n ].join(';');\n localTestGroup.appendChild(localTestButton);\n const undoButton = createToolbarIconButton(doc, '撤销', 'undo', '撤销');\n const redoButton = createToolbarIconButton(doc, '重做', 'redo', '重做');\n let helpOpen = false;\n let editorStatusCenterOpen = false;\n let performanceMonitorOpen = false;\n let prefabComparisonPreviewOpen = true;\n let assetPreviewOpen = false;\n let previewedAsset: LocalEditorBrowserUiAssetItem | null = null;\n let assetPreviewMode: 'preview' | 'material-editor' | 'rename' = 'preview';\n let assetPickerOpen = false;\n let assetPickerFilter = '';\n let assetPickerInput: HTMLInputElement | null = null;\n let assetPickerProperty: LocalEditorBrowserInspectorProperty<TDocument> | null = null;\n let prefabComparisonPreviewDrag: PrefabComparisonPreviewDragState | null = null;\n let prefabStageMainWorkbenchLayoutSnapshot: LocalEditorWorkbenchLayoutState | null = null;\n\n const editorStatusButton = createToolbarIconButton(doc, '编辑器状态', 'status', '编辑器状态');\n editorStatusButton.dataset.editorStatusButton = 'true';\n editorStatusButton.dataset.editorStatusToggle = 'true';\n editorStatusButton.setAttribute('aria-expanded', 'false');\n const editorStatusCenter = doc.createElement('div');\n editorStatusCenter.classList.add(LOCAL_EDITOR_THEME_CLASS);\n editorStatusCenter.dataset.editorStatusCenter = 'true';\n editorStatusCenter.style.cssText = [\n 'position:fixed',\n 'z-index:2147483642',\n 'display:none',\n 'flex-direction:column',\n 'gap:8px',\n 'width:min(440px,calc(100vw - 16px))',\n 'max-height:min(520px,calc(100vh - 56px))',\n 'padding:10px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'overflow:hidden',\n 'pointer-events:auto',\n ].join(';');\n const editorStatusCenterHeader = doc.createElement('div');\n editorStatusCenterHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';\n const editorStatusCenterTitle = doc.createElement('div');\n editorStatusCenterTitle.textContent = '编辑器状态';\n editorStatusCenterTitle.style.cssText = 'font-size:13px;font-weight:900;color:var(--fps-editor-text-strong)';\n const editorStatusCopyAllButton = LocalEditorShared.createButton(doc, '复制全部', { icon: 'copy' });\n editorStatusCopyAllButton.dataset.editorStatusCopyAll = 'true';\n editorStatusCopyAllButton.style.cssText += ';min-height:26px;padding:3px 8px;font-size:11px';\n editorStatusCenterHeader.appendChild(editorStatusCenterTitle);\n editorStatusCenterHeader.appendChild(editorStatusCopyAllButton);\n const editorStatusCenterSummary = doc.createElement('div');\n editorStatusCenterSummary.dataset.editorStatusSummary = 'true';\n editorStatusCenterSummary.style.cssText = 'font-size:11px;line-height:1.45;color:var(--fps-editor-muted-strong)';\n const editorStatusCenterList = doc.createElement('div');\n editorStatusCenterList.dataset.editorStatusList = 'true';\n editorStatusCenterList.style.cssText = 'display:flex;flex-direction:column;gap:7px;overflow:auto;min-height:0';\n editorStatusCenter.appendChild(editorStatusCenterHeader);\n editorStatusCenter.appendChild(editorStatusCenterSummary);\n editorStatusCenter.appendChild(editorStatusCenterList);\n const agentBridgeStatusButton = createToolbarIconButton(doc, 'Agent Bridge 状态', 'status', 'Agent Bridge 状态');\n agentBridgeStatusButton.dataset.editorAgentBridgeStatusButton = 'true';\n agentBridgeStatusButton.style.cursor = 'help';\n\n const workbench = createLocalEditorWorkbench(doc);\n const leftDockTabs = doc.createElement('div');\n const hierarchyPanel = createWorkbenchPanelContent(doc);\n const assetPanel = workbench.bottomDock;\n const rightDockTabs = doc.createElement('div');\n const inspectorPanel = createWorkbenchPanelContent(doc);\n const renderingPanel = createWorkbenchPanelContent(doc);\n const markersPanel = createWorkbenchPanelContent(doc);\n const pluginsPanel = createWorkbenchPanelContent(doc);\n workbench.leftDock.appendChild(leftDockTabs);\n workbench.leftDock.appendChild(hierarchyPanel);\n workbench.rightDock.appendChild(rightDockTabs);\n workbench.rightDock.appendChild(inspectorPanel);\n workbench.rightDock.appendChild(renderingPanel);\n workbench.rightDock.appendChild(markersPanel);\n workbench.rightDock.appendChild(pluginsPanel);\n construction.appendRootChild(workbench.root);\n tooltipSurfaces.add(workbench.root);\n const workbenchLayoutController = createLocalEditorWorkbenchLayoutController(doc, workbench, {\n onAfterApply(layout) {\n if (currentState?.mode === 'editor' && currentState.prefabStage) {\n applyPrefabStageWorkbenchLayoutOverride(layout);\n }\n },\n });\n construction.addCleanup('workbench-layout-controller', () => workbenchLayoutController.dispose());\n const findAssetBrowserScrollViewport = (): HTMLElement | null => (\n assetPanel.querySelector<HTMLElement>('[data-editor-asset-browser-scroll-viewport]')\n );\n const assetBrowserViewportReveal = createLocalEditorViewportRevealController<string>({\n getViewport: findAssetBrowserScrollViewport,\n margin: 4,\n });\n let lastRenderedAssetBrowserTab: LocalEditorAssetBrowserTab | undefined;\n let lastRenderedBottomDockTab: LocalEditorBottomDockTab | undefined;\n let lastRenderedSelectedAssetId: string | null | undefined;\n\n const sceneToolOverlay = createSceneHeaderToolbar(doc);\n const sceneTitle = doc.createElement('div');\n sceneTitle.textContent = 'Preview';\n sceneTitle.style.cssText = [\n 'height:100%',\n 'display:flex',\n 'align-items:center',\n 'padding:0 10px 0 2px',\n 'margin-right:2px',\n 'border-right:1px solid var(--fps-editor-divider)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:13px',\n 'font-weight:800',\n 'white-space:nowrap',\n ].join(';');\n const sceneQuickActions = doc.createElement('div');\n sceneQuickActions.style.cssText = 'display:flex;align-items:center;gap:4px';\n const sceneUtilityActions = doc.createElement('div');\n sceneUtilityActions.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const toolGroup = doc.createElement('div');\n toolGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const toolButtons = new Map<LocalEditorBrowserTransformTool, HTMLButtonElement>();\n const transformToolDescriptors = Object.values(\n DEFAULT_EDITOR_TRANSFORM_TOOL_DESCRIPTORS,\n ) as LocalEditorBrowserTransformToolDescriptor[];\n for (const descriptor of transformToolDescriptors) {\n const tooltip = createTransformToolTooltip(descriptor);\n const button = LocalEditorShared.createButton(doc, descriptor.label, {\n icon: TRANSFORM_TOOL_ICONS[descriptor.tool],\n labelMode: 'icon-only',\n variant: 'toolbar-icon',\n tooltip,\n ariaLabel: tooltip,\n });\n button.dataset.transformTool = descriptor.tool;\n toolButtons.set(descriptor.tool, button);\n toolGroup.appendChild(button);\n }\n const spaceGroup = doc.createElement('div');\n spaceGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const spaceButtons = {\n world: createToolbarIconButton(doc, '世界', TRANSFORM_SPACE_ICONS.world, '世界坐标空间'),\n local: createToolbarIconButton(doc, '本地', TRANSFORM_SPACE_ICONS.local, '本地坐标空间'),\n } satisfies Record<LocalEditorBrowserTransformSpace, HTMLButtonElement>;\n for (const [space, button] of Object.entries(spaceButtons) as Array<[LocalEditorBrowserTransformSpace, HTMLButtonElement]>) {\n button.dataset.transformSpace = space;\n spaceGroup.appendChild(button);\n }\n const snapGroup = doc.createElement('div');\n snapGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const snapButton = createToolbarIconButton(doc, '吸附设置', 'snap', '吸附设置', 'settings');\n snapButton.dataset.transformSnapToggle = 'true';\n const snapSettingsPopover = doc.createElement('div');\n snapSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);\n snapSettingsPopover.dataset.transformSnapSettingsPopover = 'true';\n snapSettingsPopover.setAttribute('role', 'dialog');\n snapSettingsPopover.setAttribute('aria-label', '吸附设置');\n snapSettingsPopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:8px',\n 'width:220px',\n 'padding:10px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const snapSettingsHeader = doc.createElement('label');\n snapSettingsHeader.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:space-between',\n 'gap:8px',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'font-weight:900',\n ].join(';');\n const snapSettingsHeaderText = doc.createElement('span');\n snapSettingsHeaderText.textContent = '启用吸附';\n const snapEnabledInput = doc.createElement('input');\n snapEnabledInput.type = 'checkbox';\n snapEnabledInput.dataset.transformSnapEnabled = 'true';\n snapSettingsHeader.appendChild(snapSettingsHeaderText);\n snapSettingsHeader.appendChild(snapEnabledInput);\n snapSettingsPopover.appendChild(snapSettingsHeader);\n const snapStepInputs = new Map<LocalEditorBrowserTransformSnapStepKind, HTMLInputElement>();\n for (const [kind, label, unit] of [\n ['move', '位移', '单位'],\n ['rotate', '旋转', '度'],\n ['scale', '缩放', '倍数'],\n ] as Array<[LocalEditorBrowserTransformSnapStepKind, string, string]>) {\n const row = doc.createElement('label');\n row.style.cssText = [\n 'display:grid',\n 'grid-template-columns:54px 1fr 34px',\n 'align-items:center',\n 'gap:8px',\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:11px',\n 'font-weight:800',\n ].join(';');\n const rowLabel = doc.createElement('span');\n rowLabel.textContent = label;\n const input = doc.createElement('input');\n input.type = 'number';\n input.min = '0.0001';\n input.step = kind === 'rotate' ? '1' : '0.1';\n input.dataset.transformSnapStep = kind;\n input.style.cssText = [\n 'height:26px',\n 'min-width:0',\n 'box-sizing:border-box',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text)',\n 'font-size:11px',\n 'font-weight:800',\n 'padding:0 4px',\n ].join(';');\n const rowUnit = doc.createElement('span');\n rowUnit.textContent = unit;\n rowUnit.style.cssText = 'color:var(--fps-editor-muted);font-size:10px;font-weight:800';\n row.appendChild(rowLabel);\n row.appendChild(input);\n row.appendChild(rowUnit);\n snapSettingsPopover.appendChild(row);\n snapStepInputs.set(kind, input);\n }\n snapGroup.appendChild(snapButton);\n const placementGroup = doc.createElement('div');\n placementGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const placementButton = createToolbarIconButton(doc, '放置模式', PLACEMENT_MODE_ICONS.off, '放置模式', 'settings');\n placementButton.dataset.placementModeToggle = 'true';\n const placementSettingsPopover = doc.createElement('div');\n placementSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);\n placementSettingsPopover.dataset.placementSettingsPopover = 'true';\n placementSettingsPopover.setAttribute('role', 'dialog');\n placementSettingsPopover.setAttribute('aria-label', '放置模式');\n placementSettingsPopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:5px',\n 'width:180px',\n 'padding:8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const placementButtons = Object.fromEntries(\n (Object.keys(PLACEMENT_MODE_ICONS) as LocalEditorBrowserPlacementMode[]).map((mode) => {\n const button = LocalEditorShared.createButton(doc, PLACEMENT_MODE_DESCRIPTIONS[mode], {\n icon: PLACEMENT_MODE_ICONS[mode],\n tooltip: PLACEMENT_MODE_DESCRIPTIONS[mode],\n ariaLabel: PLACEMENT_MODE_DESCRIPTIONS[mode],\n });\n button.dataset.placementMode = mode;\n button.style.justifyContent = 'flex-start';\n button.style.width = '100%';\n placementSettingsPopover.appendChild(button);\n return [mode, button];\n }),\n ) as Record<LocalEditorBrowserPlacementMode, HTMLButtonElement>;\n placementGroup.appendChild(placementButton);\n const actionGroup = doc.createElement('div');\n actionGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const transformActionButton = createToolbarIconButton(doc, '对齐与分布', 'arrange', '对齐与分布', 'settings');\n transformActionButton.dataset.transformActionToggle = 'true';\n const transformActionPopover = doc.createElement('div');\n transformActionPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);\n transformActionPopover.dataset.transformActionPopover = 'true';\n transformActionPopover.setAttribute('role', 'dialog');\n transformActionPopover.setAttribute('aria-label', '对齐与分布');\n transformActionPopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:9px',\n 'width:236px',\n 'padding:10px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const transformActionButtons = new Map<LocalEditorBrowserTransformAction, HTMLButtonElement>();\n for (const group of TRANSFORM_ACTION_GROUPS) {\n const section = doc.createElement('section');\n section.style.cssText = 'display:flex;flex-direction:column;gap:5px';\n const heading = doc.createElement('div');\n heading.textContent = group.title;\n heading.style.cssText = [\n 'color:var(--fps-editor-text-strong)',\n 'font-size:11px',\n 'font-weight:900',\n ].join(';');\n const hint = doc.createElement('div');\n hint.textContent = group.hint;\n hint.style.cssText = [\n 'color:var(--fps-editor-muted)',\n 'font-size:10px',\n 'font-weight:700',\n 'margin-top:-3px',\n ].join(';');\n section.appendChild(heading);\n section.appendChild(hint);\n for (const action of group.actions) {\n const button = LocalEditorShared.createButton(doc, TRANSFORM_ACTION_LABELS[action], {\n icon: 'arrange',\n tooltip: TRANSFORM_ACTION_LABELS[action],\n ariaLabel: TRANSFORM_ACTION_LABELS[action],\n });\n button.dataset.transformAction = action;\n button.style.justifyContent = 'flex-start';\n button.style.width = '100%';\n transformActionButtons.set(action, button);\n section.appendChild(button);\n }\n transformActionPopover.appendChild(section);\n }\n actionGroup.appendChild(transformActionButton);\n const staticShadowBakeGroup = doc.createElement('div');\n staticShadowBakeGroup.style.cssText = [\n 'display:none',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const staticShadowBakeButton = createToolbarIconButton(\n doc,\n '烘焙静态阴影',\n 'save',\n '烘焙静态阴影',\n );\n staticShadowBakeButton.dataset.editorToolbarStaticShadowBake = 'true';\n staticShadowBakeButton.dataset.editorRenderingAction = STATIC_SHADOW_BAKE_ACTION_ID;\n staticShadowBakeGroup.appendChild(staticShadowBakeButton);\n const staticShadowBakePopover = doc.createElement('div');\n staticShadowBakePopover.classList.add(LOCAL_EDITOR_THEME_CLASS);\n staticShadowBakePopover.dataset.editorToolbarStaticShadowBakePopover = 'true';\n staticShadowBakePopover.setAttribute('role', 'dialog');\n staticShadowBakePopover.setAttribute('aria-label', '静态阴影烘焙进度');\n staticShadowBakePopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:9px',\n 'width:360px',\n 'max-width:calc(100vw - 16px)',\n 'padding:10px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'pointer-events:auto',\n ].join(';');\n const staticShadowBakePopoverHeader = doc.createElement('div');\n staticShadowBakePopoverHeader.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:space-between',\n 'gap:8px',\n ].join(';');\n const staticShadowBakePopoverTitle = doc.createElement('div');\n staticShadowBakePopoverTitle.textContent = '静态阴影烘焙';\n staticShadowBakePopoverTitle.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-size:12px',\n 'font-weight:900',\n 'color:var(--fps-editor-text-strong)',\n ].join(';');\n const staticShadowBakePopoverClose = createToolbarIconButton(doc, '关闭', 'discard', '关闭烘焙信息');\n staticShadowBakePopoverClose.dataset.editorToolbarStaticShadowBakePopoverClose = 'true';\n staticShadowBakePopoverHeader.appendChild(staticShadowBakePopoverTitle);\n staticShadowBakePopoverHeader.appendChild(staticShadowBakePopoverClose);\n const staticShadowBakePopoverStatus = doc.createElement('div');\n staticShadowBakePopoverStatus.dataset.editorToolbarStaticShadowBakePopoverStatus = 'true';\n staticShadowBakePopoverStatus.style.cssText = [\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:11px',\n 'font-weight:800',\n 'line-height:1.35',\n 'overflow-wrap:anywhere',\n ].join(';');\n const staticShadowBakeProgress = doc.createElement('div');\n staticShadowBakeProgress.dataset.editorToolbarStaticShadowBakePopoverProgress = 'true';\n staticShadowBakeProgress.style.cssText = [\n 'height:8px',\n 'overflow:hidden',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-chrome-dark)',\n ].join(';');\n const staticShadowBakeProgressFill = doc.createElement('div');\n staticShadowBakeProgressFill.style.cssText = [\n 'height:100%',\n 'width:0%',\n 'border-radius:2px',\n 'background:var(--fps-editor-accent-strong)',\n 'transition:width 140ms ease',\n ].join(';');\n staticShadowBakeProgress.appendChild(staticShadowBakeProgressFill);\n const staticShadowBakeDetails = doc.createElement('div');\n staticShadowBakeDetails.dataset.editorToolbarStaticShadowBakePopoverDetails = 'true';\n staticShadowBakeDetails.style.cssText = [\n 'display:grid',\n 'grid-template-columns:repeat(2, minmax(0, 1fr))',\n 'gap:6px',\n ].join(';');\n staticShadowBakePopover.appendChild(staticShadowBakePopoverHeader);\n staticShadowBakePopover.appendChild(staticShadowBakePopoverStatus);\n staticShadowBakePopover.appendChild(staticShadowBakeProgress);\n staticShadowBakePopover.appendChild(staticShadowBakeDetails);\n const themeToggleButton = createToolbarIconButton(doc, '主题', 'theme', '切换主题');\n themeToggleButton.dataset.editorThemeToggle = 'true';\n const performanceMonitorButton = createToolbarIconButton(doc, '性能监控', 'performance', '性能监控', 'toggle');\n performanceMonitorButton.dataset.performanceMonitorToggle = 'true';\n const gridToggleButton = createToolbarIconButton(doc, '网格', 'grid', '显示 / 隐藏 Scene View 网格');\n gridToggleButton.dataset.editorGridToggle = 'true';\n const prefabComparisonPreviewButton = createToolbarIconButton(\n doc,\n '对比预览',\n 'eye',\n 'Compare Previews (Shift+P)',\n 'toggle',\n );\n prefabComparisonPreviewButton.dataset.prefabComparisonPreviewToggle = 'true';\n const sceneHelpButton = createToolbarIconButton(doc, '快捷键', 'help', '快捷键与操作说明');\n sceneQuickActions.appendChild(localTestGroup);\n const prefabStageBackButton = createToolbarIconButton(doc, '返回场景', 'chevron-right', '返回主场景');\n prefabStageBackButton.dataset.editorPrefabStageBack = 'true';\n prefabStageBackButton.style.display = 'none';\n sceneQuickActions.appendChild(prefabStageBackButton);\n sceneQuickActions.appendChild(undoButton);\n sceneQuickActions.appendChild(redoButton);\n sceneQuickActions.appendChild(dirtyBadge);\n sceneUtilityActions.appendChild(performanceMonitorButton);\n sceneUtilityActions.appendChild(gridToggleButton);\n sceneUtilityActions.appendChild(prefabComparisonPreviewButton);\n sceneUtilityActions.appendChild(themeToggleButton);\n sceneUtilityActions.appendChild(sceneHelpButton);\n const cameraPreviewGroup = doc.createElement('div');\n cameraPreviewGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const sceneCameraButton = createToolbarIconButton(doc, '从 Main Camera 查看场景', 'camera');\n sceneCameraButton.dataset.sceneCameraPreviewToggle = 'true';\n cameraPreviewGroup.appendChild(sceneCameraButton);\n const viewportToolsGroup = doc.createElement('div');\n viewportToolsGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const viewportPresetButtons = new Map<LocalEditorBrowserViewportViewPreset, HTMLButtonElement>();\n for (const preset of ['perspective', 'top', 'front', 'right'] as LocalEditorBrowserViewportViewPreset[]) {\n const button = createToolbarIconButton(doc, VIEW_PRESET_TOOLTIPS[preset], VIEW_PRESET_ICONS[preset], VIEW_PRESET_TOOLTIPS[preset]);\n button.dataset.viewportViewPreset = preset;\n viewportPresetButtons.set(preset, button);\n viewportToolsGroup.appendChild(button);\n }\n const projectionToggleButton = createToolbarIconButton(doc, '投影模式', 'projection-perspective', '切换投影模式');\n projectionToggleButton.dataset.viewportProjectionToggle = 'true';\n viewportToolsGroup.appendChild(projectionToggleButton);\n const markerVisibilityButton = createToolbarIconButton(doc, '标记视图', 'view-overlay', '隐藏标记与关系线', 'toggle');\n markerVisibilityButton.dataset.viewportMarkerVisibilityToggle = 'true';\n viewportToolsGroup.appendChild(markerVisibilityButton);\n const overlaySettingsButton = createToolbarIconButton(doc, '视口信息层设置', 'view-overlay', '视口信息层设置', 'settings');\n overlaySettingsButton.dataset.viewportOverlaySettingsToggle = 'true';\n viewportToolsGroup.appendChild(overlaySettingsButton);\n const measureButton = createToolbarIconButton(doc, '测量距离', 'measure', '测量 XZ 地面距离', 'toggle');\n measureButton.dataset.viewportMeasureToggle = 'true';\n viewportToolsGroup.appendChild(measureButton);\n const clearMeasurementButton = createToolbarIconButton(doc, '清除测量结果', 'discard', '清除测量结果');\n clearMeasurementButton.dataset.viewportMeasurementClear = 'true';\n viewportToolsGroup.appendChild(clearMeasurementButton);\n const overlaySettingsPopover = doc.createElement('div');\n overlaySettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS);\n overlaySettingsPopover.dataset.viewportOverlaySettingsPopover = 'true';\n overlaySettingsPopover.setAttribute('role', 'dialog');\n overlaySettingsPopover.setAttribute('aria-label', '视口信息层设置');\n overlaySettingsPopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:7px',\n 'width:190px',\n 'padding:8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const overlayInputs = new Map<keyof typeof VIEWPORT_OVERLAY_TOGGLE_LABELS, HTMLInputElement>();\n for (const key of Object.keys(VIEWPORT_OVERLAY_TOGGLE_LABELS) as Array<keyof typeof VIEWPORT_OVERLAY_TOGGLE_LABELS>) {\n const row = doc.createElement('label');\n row.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:space-between',\n 'gap:10px',\n 'color:var(--fps-editor-text)',\n 'font-size:11px',\n 'font-weight:800',\n ].join(';');\n const text = doc.createElement('span');\n text.textContent = VIEWPORT_OVERLAY_TOGGLE_LABELS[key];\n const input = doc.createElement('input');\n input.type = 'checkbox';\n input.dataset.viewportOverlaySetting = key;\n row.appendChild(text);\n row.appendChild(input);\n overlaySettingsPopover.appendChild(row);\n overlayInputs.set(key, input);\n }\n const toolbarOverflowButton = createToolbarIconButton(doc, '更多', 'chevron-down', '显示隐藏的工具栏命令');\n toolbarOverflowButton.dataset.editorToolbarOverflowToggle = 'true';\n toolbarOverflowButton.style.display = 'none';\n const toolbarOverflowMenu = doc.createElement('div');\n toolbarOverflowMenu.classList.add(LOCAL_EDITOR_THEME_CLASS);\n toolbarOverflowMenu.dataset.editorToolbarOverflowMenu = 'true';\n toolbarOverflowMenu.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:6px',\n 'min-width:220px',\n 'max-width:min(420px, calc(100vw - 16px))',\n 'max-height:calc(100vh - 72px)',\n 'overflow:auto',\n 'padding:8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const coordinateAxesOverlay = createCoordinateAxesOverlay(doc);\n const sceneFrameRateOverlay = createSceneFrameRateOverlay(doc);\n const performanceMonitorOverlay = createPerformanceMonitorOverlay(doc);\n const prefabImportStatsOverlay = createPrefabImportStatsOverlay(doc);\n const prefabComparisonPreviewOverlay = createPrefabComparisonPreviewOverlay(doc);\n const prefabStagePreviewLayout = createPrefabStagePreviewLayout(doc);\n prefabImportStatsOverlay.root.style.position = 'absolute';\n prefabImportStatsOverlay.root.style.top = '10px';\n prefabImportStatsOverlay.root.style.right = '14px';\n prefabComparisonPreviewOverlay.root.style.height = '100%';\n prefabStagePreviewLayout.mainRegion.appendChild(prefabImportStatsOverlay.root);\n prefabStagePreviewLayout.comparisonColumn.appendChild(prefabComparisonPreviewOverlay.root);\n const emitPrefabComparisonPreviewInteraction = (\n input: LocalEditorBrowserPrefabComparisonPreviewInteraction,\n ): void => {\n if (currentState?.mode !== 'editor' || !currentState.prefabStage) return;\n callbacks.onPrefabComparisonPreviewInteraction?.(input);\n };\n const endPrefabComparisonPreviewDrag = (pointerId?: number): void => {\n const drag = prefabComparisonPreviewDrag;\n if (!drag || (pointerId != null && drag.pointerId !== pointerId)) return;\n try {\n if (!drag.surface.hasPointerCapture || drag.surface.hasPointerCapture(drag.pointerId)) {\n drag.surface.releasePointerCapture?.(drag.pointerId);\n }\n } catch {\n // Pointer capture may already be released by the browser when this cleanup runs.\n }\n drag.surface.style.cursor = 'grab';\n prefabComparisonPreviewDrag = null;\n };\n const onPrefabComparisonPreviewPointerDown = (event: PointerEvent): void => {\n if (event.button !== 0 || currentState?.mode !== 'editor' || !currentState.prefabStage) return;\n const surface = findPrefabComparisonPreviewSurface(event.target);\n if (!surface || !isPrefabComparisonPreviewSurfaceReady(surface)) return;\n const previewId = readPrefabComparisonPreviewSurfaceId(surface);\n if (!previewId) return;\n event.preventDefault();\n event.stopPropagation();\n endPrefabComparisonPreviewDrag();\n try {\n surface.setPointerCapture?.(event.pointerId);\n } catch {\n // Pointer capture is an input nicety; drag state still works through the overlay listener.\n }\n surface.style.cursor = 'grabbing';\n prefabComparisonPreviewDrag = {\n pointerId: event.pointerId,\n previewId,\n surface,\n lastClientX: event.clientX,\n lastClientY: event.clientY,\n };\n };\n const onPrefabComparisonPreviewPointerMove = (event: PointerEvent): void => {\n const drag = prefabComparisonPreviewDrag;\n if (!drag || drag.pointerId !== event.pointerId) return;\n event.preventDefault();\n event.stopPropagation();\n const deltaX = event.clientX - drag.lastClientX;\n const deltaY = event.clientY - drag.lastClientY;\n drag.lastClientX = event.clientX;\n drag.lastClientY = event.clientY;\n if (Math.abs(deltaX) < 0.001 && Math.abs(deltaY) < 0.001) return;\n emitPrefabComparisonPreviewInteraction({\n kind: 'orbit',\n previewId: drag.previewId,\n deltaX,\n deltaY,\n });\n };\n const onPrefabComparisonPreviewPointerEnd = (event: PointerEvent): void => {\n const drag = prefabComparisonPreviewDrag;\n if (!drag || drag.pointerId !== event.pointerId) return;\n event.preventDefault();\n event.stopPropagation();\n endPrefabComparisonPreviewDrag(event.pointerId);\n };\n const onPrefabComparisonPreviewWheel = (event: WheelEvent): void => {\n if (currentState?.mode !== 'editor' || !currentState.prefabStage) return;\n const surface = findPrefabComparisonPreviewSurface(event.target);\n if (!surface || !isPrefabComparisonPreviewSurfaceReady(surface)) return;\n const previewId = readPrefabComparisonPreviewSurfaceId(surface);\n if (!previewId) return;\n event.preventDefault();\n event.stopPropagation();\n emitPrefabComparisonPreviewInteraction({\n kind: 'zoom',\n previewId,\n deltaY: event.deltaY,\n });\n };\n prefabComparisonPreviewOverlay.root.addEventListener('pointerdown', onPrefabComparisonPreviewPointerDown);\n prefabComparisonPreviewOverlay.root.addEventListener('pointermove', onPrefabComparisonPreviewPointerMove);\n prefabComparisonPreviewOverlay.root.addEventListener('pointerup', onPrefabComparisonPreviewPointerEnd);\n prefabComparisonPreviewOverlay.root.addEventListener('pointercancel', onPrefabComparisonPreviewPointerEnd);\n prefabComparisonPreviewOverlay.root.addEventListener('lostpointercapture', onPrefabComparisonPreviewPointerEnd);\n prefabComparisonPreviewOverlay.root.addEventListener('wheel', onPrefabComparisonPreviewWheel, { passive: false });\n const spatialOverlay = createSpatialOverlay(doc);\n const measurementOverlay = createMeasurementOverlay(doc);\n sceneToolOverlay.appendChild(sceneTitle);\n sceneToolOverlay.appendChild(sceneQuickActions);\n sceneToolOverlay.appendChild(toolGroup);\n sceneToolOverlay.appendChild(spaceGroup);\n sceneToolOverlay.appendChild(snapGroup);\n sceneToolOverlay.appendChild(placementGroup);\n sceneToolOverlay.appendChild(actionGroup);\n sceneToolOverlay.appendChild(staticShadowBakeGroup);\n sceneToolOverlay.appendChild(viewportToolsGroup);\n sceneToolOverlay.appendChild(sceneUtilityActions);\n sceneToolOverlay.appendChild(cameraPreviewGroup);\n sceneToolOverlay.appendChild(agentBridgeStatusButton);\n sceneToolOverlay.appendChild(editorStatusButton);\n sceneToolOverlay.appendChild(toolbarOverflowButton);\n workbench.sceneHeader.appendChild(sceneToolOverlay);\n workbench.sceneFrame.appendChild(spatialOverlay.root);\n workbench.sceneFrame.appendChild(measurementOverlay.root);\n workbench.sceneFrame.appendChild(sceneFrameRateOverlay.root);\n workbench.sceneFrame.appendChild(performanceMonitorOverlay.root);\n workbench.sceneFrame.appendChild(prefabStagePreviewLayout.root);\n workbench.sceneFrame.appendChild(coordinateAxesOverlay.root);\n construction.appendRootChild(localTestMenu);\n construction.appendRootChild(editorStatusCenter);\n construction.appendRootChild(toolbarOverflowMenu);\n construction.appendRootChild(staticShadowBakePopover);\n construction.appendRootChild(snapSettingsPopover);\n construction.appendRootChild(placementSettingsPopover);\n construction.appendRootChild(transformActionPopover);\n construction.appendRootChild(overlaySettingsPopover);\n tooltipSurfaces.add(localTestMenu);\n tooltipSurfaces.add(editorStatusCenter);\n tooltipSurfaces.add(toolbarOverflowMenu);\n tooltipSurfaces.add(staticShadowBakePopover);\n tooltipSurfaces.add(snapSettingsPopover);\n tooltipSurfaces.add(placementSettingsPopover);\n tooltipSurfaces.add(transformActionPopover);\n tooltipSurfaces.add(overlaySettingsPopover);\n\n const boxSelectionOverlay = doc.createElement('div');\n boxSelectionOverlay.classList.add(LOCAL_EDITOR_THEME_CLASS);\n boxSelectionOverlay.style.cssText = [\n 'position:fixed',\n 'z-index:2147483637',\n 'display:none',\n 'border:1px solid var(--fps-editor-drop-target)',\n 'background:var(--fps-editor-box-select-bg)',\n 'box-shadow:var(--fps-editor-box-select-shadow)',\n 'pointer-events:none',\n ].join(';');\n construction.appendRootChild(boxSelectionOverlay);\n tooltipSurfaces.add(boxSelectionOverlay);\n\n const shortcutHelpPanel = createLocalEditorShortcutHelpPanel(doc);\n shortcutHelpPanel.classList.add(LOCAL_EDITOR_THEME_CLASS);\n construction.appendRootChild(shortcutHelpPanel);\n tooltipSurfaces.add(shortcutHelpPanel);\n\n const assetPreviewModal = doc.createElement('div');\n assetPreviewModal.classList.add(LOCAL_EDITOR_THEME_CLASS);\n assetPreviewModal.dataset.editorAssetPreviewModal = 'true';\n assetPreviewModal.dataset.editorWorkbenchRegion = 'modal';\n assetPreviewModal.style.cssText = [\n 'position:fixed',\n 'inset:0',\n 'z-index:2147483642',\n 'display:none',\n 'align-items:center',\n 'justify-content:center',\n 'padding:32px',\n 'background:rgba(0,0,0,0.45)',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n ].join(';');\n const assetPreviewDialog = doc.createElement('div');\n assetPreviewDialog.setAttribute('role', 'dialog');\n assetPreviewDialog.setAttribute('aria-modal', 'true');\n assetPreviewDialog.setAttribute('aria-label', '资产预览');\n assetPreviewDialog.style.cssText = [\n 'width:min(420px,calc(100vw - 64px))',\n 'max-height:calc(100vh - 64px)',\n 'display:flex',\n 'flex-direction:column',\n 'gap:12px',\n 'padding:14px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-modal)',\n 'overflow:auto',\n ].join(';');\n const assetPreviewHeader = doc.createElement('div');\n assetPreviewHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';\n const assetPreviewTitle = doc.createElement('h2');\n assetPreviewTitle.style.cssText = [\n 'min-width:0',\n 'margin:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-size:13px',\n 'font-weight:900',\n 'color:var(--fps-editor-text-strong)',\n ].join(';');\n const assetPreviewCloseButton = LocalEditorShared.createButton(doc, '关闭');\n assetPreviewCloseButton.dataset.editorAssetPreviewClose = 'true';\n assetPreviewHeader.appendChild(assetPreviewTitle);\n assetPreviewHeader.appendChild(assetPreviewCloseButton);\n const assetPreviewBody = doc.createElement('div');\n assetPreviewBody.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:center',\n 'min-height:240px',\n 'border:1px solid var(--fps-editor-divider)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel-soft)',\n ].join(';');\n const assetPreviewMeta = doc.createElement('div');\n assetPreviewMeta.style.cssText = [\n 'min-height:16px',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-muted)',\n 'font-size:11px',\n 'font-weight:800',\n ].join(';');\n assetPreviewDialog.appendChild(assetPreviewHeader);\n assetPreviewDialog.appendChild(assetPreviewBody);\n assetPreviewDialog.appendChild(assetPreviewMeta);\n assetPreviewModal.appendChild(assetPreviewDialog);\n construction.appendRootChild(assetPreviewModal);\n tooltipSurfaces.add(assetPreviewModal);\n\n const assetPickerModal = doc.createElement('div');\n assetPickerModal.classList.add(LOCAL_EDITOR_THEME_CLASS);\n assetPickerModal.dataset.editorAssetPickerModal = 'true';\n assetPickerModal.dataset.editorWorkbenchRegion = 'modal';\n assetPickerModal.style.cssText = [\n 'position:fixed',\n 'inset:0',\n 'z-index:2147483642',\n 'display:none',\n 'align-items:center',\n 'justify-content:center',\n 'padding:32px',\n 'background:rgba(0,0,0,0.45)',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n ].join(';');\n const assetPickerDialog = doc.createElement('div');\n assetPickerDialog.setAttribute('role', 'dialog');\n assetPickerDialog.setAttribute('aria-modal', 'true');\n assetPickerDialog.setAttribute('aria-label', '资产选择');\n assetPickerDialog.style.cssText = [\n 'width:min(620px,calc(100vw - 64px))',\n 'max-height:calc(100vh - 64px)',\n 'display:flex',\n 'flex-direction:column',\n 'gap:10px',\n 'padding:14px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-modal)',\n 'overflow:hidden',\n ].join(';');\n const assetPickerHeader = doc.createElement('div');\n assetPickerHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';\n const assetPickerTitle = doc.createElement('h2');\n assetPickerTitle.style.cssText = [\n 'min-width:0',\n 'margin:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-size:13px',\n 'font-weight:900',\n 'color:var(--fps-editor-text-strong)',\n ].join(';');\n const assetPickerCloseButton = LocalEditorShared.createButton(doc, '关闭');\n assetPickerCloseButton.dataset.editorAssetPickerClose = 'true';\n assetPickerHeader.appendChild(assetPickerTitle);\n assetPickerHeader.appendChild(assetPickerCloseButton);\n const assetPickerSearch = doc.createElement('input');\n assetPickerSearch.type = 'search';\n assetPickerSearch.dataset.editorAssetPickerSearch = 'true';\n assetPickerSearch.placeholder = '搜索资产';\n assetPickerSearch.style.cssText = [\n 'width:100%',\n 'height:30px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'padding:0 8px',\n ].join(';');\n const assetPickerList = doc.createElement('div');\n assetPickerList.style.cssText = [\n 'min-height:180px',\n 'max-height:min(430px,calc(100vh - 196px))',\n 'overflow:auto',\n 'display:grid',\n 'grid-template-columns:repeat(auto-fill,minmax(176px,1fr))',\n 'gap:7px',\n 'padding-right:2px',\n ].join(';');\n assetPickerDialog.appendChild(assetPickerHeader);\n assetPickerDialog.appendChild(assetPickerSearch);\n assetPickerDialog.appendChild(assetPickerList);\n assetPickerModal.appendChild(assetPickerDialog);\n construction.appendRootChild(assetPickerModal);\n tooltipSurfaces.add(assetPickerModal);\n\n function applyThemeToSurfaces(): void {\n applyLocalEditorTheme(hostChrome, activeTheme);\n applyLocalEditorTheme(workbench.root, activeTheme);\n applyLocalEditorTheme(spatialOverlay.root, activeTheme);\n applyLocalEditorTheme(measurementOverlay.root, activeTheme);\n applyLocalEditorTheme(sceneFrameRateOverlay.root, activeTheme);\n applyLocalEditorTheme(performanceMonitorOverlay.root, activeTheme);\n applyLocalEditorTheme(prefabStagePreviewLayout.root, activeTheme);\n applyLocalEditorTheme(prefabImportStatsOverlay.root, activeTheme);\n applyLocalEditorTheme(prefabComparisonPreviewOverlay.root, activeTheme);\n applyLocalEditorTheme(shortcutHelpPanel, activeTheme);\n applyLocalEditorTheme(assetPreviewModal, activeTheme);\n applyLocalEditorTheme(assetPickerModal, activeTheme);\n applyLocalEditorTheme(boxSelectionOverlay, activeTheme);\n applyLocalEditorTheme(localTestMenu, activeTheme);\n applyLocalEditorTheme(editorStatusCenter, activeTheme);\n applyLocalEditorTheme(toolbarOverflowMenu, activeTheme);\n applyLocalEditorTheme(staticShadowBakePopover, activeTheme);\n applyLocalEditorTheme(snapSettingsPopover, activeTheme);\n applyLocalEditorTheme(placementSettingsPopover, activeTheme);\n applyLocalEditorTheme(transformActionPopover, activeTheme);\n applyLocalEditorTheme(overlaySettingsPopover, activeTheme);\n tooltipController.setTheme(activeTheme);\n contextMenu.setTheme?.(activeTheme);\n modalDialog.setTheme(activeTheme);\n }\n\n function updateThemeToggleButton(): void {\n const nextTheme = activeTheme === 'dark' ? 'light' : 'dark';\n themeToggleButton.dataset.editorTheme = activeTheme;\n themeToggleButton.setAttribute('aria-pressed', activeTheme === 'light' ? 'true' : 'false');\n setToolbarButtonTooltip(themeToggleButton, nextTheme === 'light' ? '切换为浅色主题' : '切换为深色主题');\n }\n\n function setActiveTheme(theme: unknown): void {\n activeTheme = normalizeLocalEditorThemeName(theme);\n applyThemeToSurfaces();\n updateThemeToggleButton();\n }\n\n let localTestMenuOpen = false;\n let snapSettingsOpen = false;\n let placementSettingsOpen = false;\n let transformActionOpen = false;\n let overlaySettingsOpen = false;\n\n function closeLocalTestMenu(): void {\n localTestMenuOpen = false;\n localTestMenu.style.display = 'none';\n LocalEditorShared.applyButtonActiveState(localTestButton, false);\n }\n\n function readEditorStatusDiagnostics(\n state: LocalEditorBrowserUiState<TDocument> | null,\n ): LocalEditorBrowserStatusDiagnostic[] {\n return resolveLocalEditorStatusDiagnostics(state);\n }\n\n function renderEditorStatusCenter(state: LocalEditorBrowserUiState<TDocument> | null): void {\n const viewModel = createLocalEditorStatusCenterViewModel(state);\n editorStatusCenterSummary.textContent = viewModel.summary;\n editorStatusCopyAllButton.style.display = viewModel.diagnostics.length > 0 ? 'inline-flex' : 'none';\n LocalEditorShared.clearElement(editorStatusCenterList);\n if (viewModel.diagnostics.length === 0) {\n const empty = doc.createElement('div');\n empty.dataset.editorStatusEmpty = 'true';\n empty.textContent = '没有需要处理的错误或警告。';\n empty.style.cssText = 'padding:14px 8px;text-align:center;color:var(--fps-editor-muted);font-size:12px';\n editorStatusCenterList.appendChild(empty);\n return;\n }\n viewModel.entries.forEach(({ diagnostic, copyText }, index) => {\n const item = doc.createElement('div');\n item.dataset.editorStatusDiagnostic = diagnostic.code;\n item.style.cssText = [\n 'display:grid',\n 'grid-template-columns:minmax(0,1fr) auto',\n 'gap:8px',\n 'padding:8px',\n `border:1px solid ${diagnostic.severity === 'error' ? 'var(--fps-editor-danger-border)' : 'var(--fps-editor-warn-border)'}`,\n 'border-radius:3px',\n `background:${diagnostic.severity === 'error' ? 'var(--fps-editor-danger-soft)' : 'var(--fps-editor-warn-soft)'}`,\n ].join(';');\n const content = doc.createElement('div');\n content.style.cssText = 'min-width:0;display:flex;flex-direction:column;gap:4px';\n const code = doc.createElement('div');\n code.textContent = `${diagnostic.severity === 'error' ? '错误' : '警告'} · ${diagnostic.code}`;\n code.style.cssText = `font-size:11px;font-weight:900;color:${diagnostic.severity === 'error' ? 'var(--fps-editor-danger-strong)' : 'var(--fps-editor-warn)'}`;\n const message = doc.createElement('div');\n message.textContent = diagnostic.message;\n message.style.cssText = 'font-size:12px;line-height:1.45;color:var(--fps-editor-text-strong);overflow-wrap:anywhere';\n const meta = doc.createElement('div');\n const diagnosticLocation = [diagnostic.scopeId, diagnostic.rowId, diagnostic.targetId]\n .filter(value => value !== undefined && value !== null && value !== '')\n .join(' / ');\n meta.textContent = [\n `来源: ${diagnostic.source}`,\n diagnosticLocation ? `位置: ${diagnosticLocation}` : '',\n diagnostic.documentRevision != null ? `document revision: ${diagnostic.documentRevision}` : '',\n diagnostic.projectionRevision != null ? `projection revision: ${diagnostic.projectionRevision}` : '',\n diagnostic.details ? `details: ${formatLocalEditorStatusDiagnosticDetails(diagnostic.details)}` : '',\n ].filter(Boolean).join(' · ');\n meta.style.cssText = 'font-size:10px;line-height:1.35;color:var(--fps-editor-muted);overflow-wrap:anywhere';\n meta.style.display = meta.textContent ? 'block' : 'none';\n content.appendChild(code);\n content.appendChild(message);\n content.appendChild(meta);\n const copy = createToolbarIconButton(doc, `复制诊断 ${index + 1}`, 'copy', '复制该诊断');\n copy.dataset.editorStatusCopy = String(index);\n copy.addEventListener('click', event => {\n event.stopPropagation();\n copyTextToClipboard(doc.defaultView, copyText);\n });\n item.appendChild(content);\n item.appendChild(copy);\n editorStatusCenterList.appendChild(item);\n });\n }\n\n function closeEditorStatusCenter(): void {\n editorStatusCenterOpen = false;\n editorStatusCenter.style.display = 'none';\n editorStatusButton.setAttribute('aria-expanded', 'false');\n LocalEditorShared.applyButtonActiveState(editorStatusButton, false);\n }\n\n function openEditorStatusCenter(): void {\n closeLocalTestMenu();\n closeToolbarOverflowMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n renderEditorStatusCenter(currentState);\n const rect = editorStatusButton.getBoundingClientRect();\n const win = doc.defaultView;\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n const width = Math.min(440, Math.max(280, viewportWidth - 16));\n editorStatusCenter.style.width = `${width}px`;\n editorStatusCenter.style.left = `${Math.max(8, Math.min(rect.right - width, viewportWidth - width - 8))}px`;\n editorStatusCenter.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n editorStatusCenter.style.display = 'flex';\n editorStatusCenterOpen = true;\n editorStatusButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(editorStatusButton, true);\n }\n\n function toggleEditorStatusCenter(): void {\n if (editorStatusCenterOpen) closeEditorStatusCenter();\n else openEditorStatusCenter();\n }\n\n function closeSnapSettingsPopover(): void {\n snapSettingsOpen = false;\n snapSettingsPopover.style.display = 'none';\n snapButton.setAttribute('aria-expanded', 'false');\n const enabled = currentState?.transformOperations?.settings.snap.enabled\n ?? DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS.snap.enabled;\n LocalEditorShared.applyButtonActiveState(snapButton, enabled);\n }\n\n function closePlacementSettingsPopover(): void {\n placementSettingsOpen = false;\n placementSettingsPopover.style.display = 'none';\n placementButton.setAttribute('aria-expanded', 'false');\n const mode = currentState?.transformOperations?.settings.placementMode\n ?? DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS.placementMode;\n LocalEditorShared.applyButtonActiveState(placementButton, mode !== 'off');\n }\n\n function closeTransformActionPopover(): void {\n transformActionOpen = false;\n transformActionPopover.style.display = 'none';\n transformActionButton.setAttribute('aria-expanded', 'false');\n LocalEditorShared.applyButtonActiveState(transformActionButton, false);\n }\n\n function closeOverlaySettingsPopover(): void {\n overlaySettingsOpen = false;\n overlaySettingsPopover.style.display = 'none';\n overlaySettingsButton.setAttribute('aria-expanded', 'false');\n LocalEditorShared.applyButtonActiveState(overlaySettingsButton, false);\n }\n\n function openLocalTestMenu(): void {\n if (!localTestActionsEnabled || localTestButton.style.display === 'none') return;\n closeToolbarOverflowMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = localTestButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n localTestMenu.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n localTestMenu.style.right = `${Math.max(8, viewportWidth - rect.right)}px`;\n localTestMenu.style.display = 'flex';\n localTestMenuOpen = true;\n LocalEditorShared.applyButtonActiveState(localTestButton, true);\n }\n\n function openSnapSettingsPopover(): void {\n if (snapButton.disabled || snapGroup.style.display === 'none') return;\n closeToolbarOverflowMenu();\n closeLocalTestMenu();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = snapButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n snapSettingsPopover.style.display = 'flex';\n const popoverWidth = snapSettingsPopover.offsetWidth || 220;\n snapSettingsPopover.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n snapSettingsPopover.style.left = `${Math.max(8, Math.min(rect.left, viewportWidth - popoverWidth - 8))}px`;\n snapSettingsOpen = true;\n snapButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(snapButton, true);\n }\n\n function toggleSnapSettingsPopover(): void {\n if (snapSettingsOpen) closeSnapSettingsPopover();\n else openSnapSettingsPopover();\n }\n\n function openPlacementSettingsPopover(): void {\n if (placementButton.disabled || placementGroup.style.display === 'none') return;\n closeToolbarOverflowMenu();\n closeLocalTestMenu();\n closeSnapSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = placementButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n placementSettingsPopover.style.display = 'flex';\n const popoverWidth = placementSettingsPopover.offsetWidth || 180;\n placementSettingsPopover.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n placementSettingsPopover.style.left = `${Math.max(8, Math.min(rect.left, viewportWidth - popoverWidth - 8))}px`;\n placementSettingsOpen = true;\n placementButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(placementButton, true);\n }\n\n function togglePlacementSettingsPopover(): void {\n if (placementSettingsOpen) closePlacementSettingsPopover();\n else openPlacementSettingsPopover();\n }\n\n function openTransformActionPopover(): void {\n if (transformActionButton.disabled || actionGroup.style.display === 'none') return;\n closeToolbarOverflowMenu();\n closeLocalTestMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = transformActionButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n transformActionPopover.style.display = 'flex';\n const popoverWidth = transformActionPopover.offsetWidth || 236;\n transformActionPopover.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n transformActionPopover.style.left = `${Math.max(8, Math.min(rect.left, viewportWidth - popoverWidth - 8))}px`;\n transformActionOpen = true;\n transformActionButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(transformActionButton, true);\n }\n\n function toggleTransformActionPopover(): void {\n if (transformActionOpen) closeTransformActionPopover();\n else openTransformActionPopover();\n }\n\n function openOverlaySettingsPopover(): void {\n if (overlaySettingsButton.disabled || viewportToolsGroup.style.display === 'none') return;\n const win = doc.defaultView;\n const rect = overlaySettingsButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n closeLocalTestMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeToolbarOverflowMenu();\n overlaySettingsPopover.style.display = 'flex';\n const popoverWidth = overlaySettingsPopover.offsetWidth || 190;\n overlaySettingsPopover.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n overlaySettingsPopover.style.left = `${Math.max(8, Math.min(rect.left, viewportWidth - popoverWidth - 8))}px`;\n overlaySettingsOpen = true;\n overlaySettingsButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(overlaySettingsButton, true);\n }\n\n function toggleOverlaySettingsPopover(): void {\n if (overlaySettingsOpen) closeOverlaySettingsPopover();\n else openOverlaySettingsPopover();\n }\n\n const onLocalTestButtonClick = (event: MouseEvent): void => {\n event.stopPropagation();\n if (localTestMenuOpen) closeLocalTestMenu();\n else openLocalTestMenu();\n };\n\n type ToolbarOverflowItemKind = 'group' | 'text';\n interface ToolbarOverflowItem {\n id: string;\n element: HTMLElement;\n kind: ToolbarOverflowItemKind;\n }\n\n type ToolbarOverflowStyleProperty =\n | 'alignSelf'\n | 'borderLeft'\n | 'display'\n | 'flex'\n | 'height'\n | 'maxWidth'\n | 'minHeight'\n | 'minWidth'\n | 'overflow'\n | 'paddingLeft'\n | 'textOverflow'\n | 'whiteSpace'\n | 'width';\n\n const toolbarOverflowStyleProperties: ToolbarOverflowStyleProperty[] = [\n 'alignSelf',\n 'borderLeft',\n 'display',\n 'flex',\n 'height',\n 'maxWidth',\n 'minHeight',\n 'minWidth',\n 'overflow',\n 'paddingLeft',\n 'textOverflow',\n 'whiteSpace',\n 'width',\n ];\n const toolbarButtonOriginalPadding = new WeakMap<HTMLButtonElement, string>();\n const toolbarOverflowOriginalStyles = new WeakMap<HTMLElement, Partial<Record<ToolbarOverflowStyleProperty, string>>>();\n const toolbarOrder: HTMLElement[] = [\n sceneTitle,\n sceneQuickActions,\n toolGroup,\n spaceGroup,\n snapGroup,\n placementGroup,\n actionGroup,\n staticShadowBakeGroup,\n viewportToolsGroup,\n sceneUtilityActions,\n cameraPreviewGroup,\n agentBridgeStatusButton,\n editorStatusButton,\n toolbarOverflowButton,\n ];\n const toolbarOverflowItems: ToolbarOverflowItem[] = [\n { id: 'editor-status', element: editorStatusButton, kind: 'group' },\n { id: 'scene-utilities', element: sceneUtilityActions, kind: 'group' },\n { id: 'camera-preview', element: cameraPreviewGroup, kind: 'group' },\n { id: 'viewport-tools', element: viewportToolsGroup, kind: 'group' },\n { id: 'transform-actions', element: actionGroup, kind: 'group' },\n { id: 'placement', element: placementGroup, kind: 'group' },\n { id: 'snap', element: snapGroup, kind: 'group' },\n { id: 'space', element: spaceGroup, kind: 'group' },\n { id: 'static-shadow-bake', element: staticShadowBakeGroup, kind: 'group' },\n { id: 'agent-bridge-status', element: agentBridgeStatusButton, kind: 'group' },\n ];\n let toolbarOverflowOpen = false;\n let toolbarOverflowRaf: number | null = null;\n let staticShadowBakePopoverOpen = false;\n construction.addCleanup('toolbar-overflow-frame', () => {\n if (toolbarOverflowRaf != null) {\n doc.defaultView?.cancelAnimationFrame(toolbarOverflowRaf);\n toolbarOverflowRaf = null;\n }\n });\n\n function restoreToolbarOverflowItemStyle(item: ToolbarOverflowItem): void {\n const original = toolbarOverflowOriginalStyles.get(item.element);\n if (!original) return;\n for (const property of toolbarOverflowStyleProperties) {\n item.element.style[property] = original[property] ?? '';\n }\n toolbarOverflowOriginalStyles.delete(item.element);\n item.element.dataset.editorToolbarOverflowPlacement = 'toolbar';\n }\n\n function applyToolbarOverflowMenuStyle(item: ToolbarOverflowItem): void {\n if (!toolbarOverflowOriginalStyles.has(item.element)) {\n const original: Partial<Record<ToolbarOverflowStyleProperty, string>> = {};\n for (const property of toolbarOverflowStyleProperties) {\n original[property] = item.element.style[property];\n }\n toolbarOverflowOriginalStyles.set(item.element, original);\n }\n item.element.dataset.editorToolbarOverflowPlacement = 'menu';\n item.element.style.alignSelf = 'stretch';\n item.element.style.borderLeft = '0';\n item.element.style.display = item.kind === 'group' ? 'flex' : 'block';\n item.element.style.flex = '0 0 auto';\n item.element.style.height = '';\n item.element.style.maxWidth = 'none';\n item.element.style.minHeight = '0';\n item.element.style.minWidth = '0';\n item.element.style.overflow = item.kind === 'group' ? 'visible' : 'hidden';\n item.element.style.paddingLeft = '0';\n item.element.style.textOverflow = item.kind === 'text' ? 'ellipsis' : '';\n item.element.style.whiteSpace = item.kind === 'text' ? 'nowrap' : '';\n item.element.style.width = '100%';\n }\n\n function setToolbarButtonCompact(button: HTMLButtonElement, compact: boolean): void {\n if (button.dataset.editorButtonLabelMode === 'icon-only') return;\n const label = button.querySelector<HTMLElement>('[data-editor-button-label]');\n if (!label) return;\n if (!toolbarButtonOriginalPadding.has(button)) {\n toolbarButtonOriginalPadding.set(button, button.style.padding);\n }\n const accessibleLabel = button.dataset.editorToolbarLabel || label.textContent || button.title;\n button.dataset.editorToolbarLabel = accessibleLabel;\n button.setAttribute('aria-label', accessibleLabel);\n if (!button.title) button.title = accessibleLabel;\n button.style.padding = compact ? '4px 6px' : toolbarButtonOriginalPadding.get(button) ?? '';\n label.style.display = compact ? 'inline-block' : '';\n label.style.width = compact ? '0' : '';\n label.style.maxWidth = compact ? '0' : '';\n label.style.opacity = compact ? '0' : '';\n label.style.marginLeft = compact ? '-5px' : '';\n }\n\n function setToolbarCompact(compact: boolean): void {\n for (const button of Array.from(sceneToolOverlay.querySelectorAll<HTMLButtonElement>('button'))) {\n setToolbarButtonCompact(button, compact);\n }\n }\n\n function closeToolbarOverflowMenu(): void {\n toolbarOverflowOpen = false;\n toolbarOverflowMenu.style.display = 'none';\n LocalEditorShared.applyButtonActiveState(toolbarOverflowButton, false);\n }\n\n function closeStaticShadowBakePopover(): void {\n staticShadowBakePopoverOpen = false;\n staticShadowBakePopover.style.display = 'none';\n }\n\n function openStaticShadowBakePopover(): void {\n staticShadowBakePopoverOpen = true;\n renderStaticShadowBakePopover(currentState);\n }\n\n function positionStaticShadowBakePopover(): void {\n const rect = staticShadowBakeButton.getBoundingClientRect();\n const win = doc.defaultView;\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n const width = Math.min(360, Math.max(240, viewportWidth - 16));\n const left = Math.min(\n Math.max(8, rect.left + rect.width * 0.5 - width * 0.5),\n Math.max(8, viewportWidth - width - 8),\n );\n staticShadowBakePopover.style.width = `${width}px`;\n staticShadowBakePopover.style.left = `${left}px`;\n staticShadowBakePopover.style.top = `${Math.max(38, rect.bottom + 6)}px`;\n }\n\n function renderStaticShadowBakePopover(state: LocalEditorBrowserUiState<TDocument> | null): void {\n if (!staticShadowBakePopoverOpen || !state || state.mode !== 'editor') {\n staticShadowBakePopover.style.display = 'none';\n return;\n }\n const match = findLocalEditorRenderingAction(state.renderingPanel, STATIC_SHADOW_BAKE_ACTION_ID);\n if (!match) {\n staticShadowBakePopover.style.display = 'none';\n return;\n }\n positionStaticShadowBakePopover();\n staticShadowBakePopover.style.display = 'flex';\n staticShadowBakePopoverTitle.textContent = match.system?.label ?? match.action.label ?? '静态阴影烘焙';\n const progress = match.system?.progress;\n const status = match.system?.status || progress?.label || match.action.tooltip || '准备烘焙静态阴影...';\n staticShadowBakePopoverStatus.textContent = status;\n if (progress) {\n staticShadowBakeProgress.style.display = 'block';\n const value = typeof progress.value === 'number' && Number.isFinite(progress.value)\n ? Math.max(0, Math.min(1, progress.value))\n : progress.indeterminate\n ? 1\n : 0;\n staticShadowBakeProgressFill.style.width = `${Math.round(value * 100)}%`;\n staticShadowBakeProgressFill.style.opacity = progress.indeterminate ? '0.55' : '1';\n } else {\n staticShadowBakeProgress.style.display = 'none';\n staticShadowBakeProgressFill.style.width = '0%';\n staticShadowBakeProgressFill.style.opacity = '1';\n }\n LocalEditorShared.clearElement(staticShadowBakeDetails);\n const details = match.system?.details ?? [];\n staticShadowBakeDetails.style.display = details.length > 0 ? 'grid' : 'none';\n for (const detail of details) {\n const item = doc.createElement('div');\n item.style.cssText = [\n 'min-width:0',\n 'padding:6px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-chrome)',\n ].join(';');\n const label = doc.createElement('div');\n label.textContent = detail.label;\n label.style.cssText = [\n 'color:var(--fps-editor-muted)',\n 'font-size:10px',\n 'font-weight:800',\n 'line-height:1.25',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n ].join(';');\n const value = doc.createElement('div');\n value.textContent = detail.value;\n value.style.cssText = [\n `color:${detail.tone === 'warning' ? 'var(--fps-editor-warn)' : detail.tone === 'error' ? 'var(--fps-editor-danger-strong)' : detail.tone === 'success' ? 'var(--fps-editor-success)' : 'var(--fps-editor-text-strong)'}`,\n 'font-size:12px',\n 'font-weight:900',\n 'line-height:1.35',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n ].join(';');\n item.appendChild(label);\n item.appendChild(value);\n staticShadowBakeDetails.appendChild(item);\n }\n }\n\n function openToolbarOverflowMenu(): void {\n if (toolbarOverflowMenu.childElementCount === 0) return;\n closeLocalTestMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = toolbarOverflowButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n toolbarOverflowMenu.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n toolbarOverflowMenu.style.right = `${Math.max(8, viewportWidth - rect.right)}px`;\n toolbarOverflowMenu.style.display = 'flex';\n toolbarOverflowOpen = true;\n LocalEditorShared.applyButtonActiveState(toolbarOverflowButton, true);\n }\n\n function resetToolbarOverflowLayout(): void {\n setToolbarCompact(false);\n for (const item of toolbarOverflowItems) restoreToolbarOverflowItemStyle(item);\n for (const item of toolbarOrder) {\n item.dataset.editorToolbarOverflowed = 'false';\n sceneToolOverlay.appendChild(item);\n }\n LocalEditorShared.clearElement(toolbarOverflowMenu);\n toolbarOverflowButton.style.display = 'none';\n sceneToolOverlay.style.overflowX = 'hidden';\n closeToolbarOverflowMenu();\n }\n\n function layoutToolbarOverflow(): void {\n toolbarOverflowRaf = null;\n resetToolbarOverflowLayout();\n if (sceneToolOverlay.style.display === 'none') return;\n const availableWidth = sceneToolOverlay.clientWidth;\n if (availableWidth <= 0) return;\n const isOverflowing = (): boolean => sceneToolOverlay.scrollWidth > availableWidth + 1;\n if (!isOverflowing()) return;\n\n toolbarOverflowButton.style.display = 'inline-flex';\n for (const item of toolbarOverflowItems) {\n if (!isOverflowing()) break;\n if (item.element.style.display === 'none') continue;\n item.element.dataset.editorToolbarOverflowed = 'true';\n applyToolbarOverflowMenuStyle(item);\n toolbarOverflowMenu.appendChild(item.element);\n }\n\n if (toolbarOverflowMenu.childElementCount === 0) {\n toolbarOverflowButton.style.display = 'none';\n }\n if (isOverflowing()) {\n setToolbarCompact(true);\n }\n sceneToolOverlay.style.overflowX = isOverflowing() ? 'auto' : 'hidden';\n }\n\n function scheduleToolbarOverflowLayout(): void {\n const win = doc.defaultView;\n if (!win) {\n layoutToolbarOverflow();\n return;\n }\n if (toolbarOverflowRaf != null) win.cancelAnimationFrame(toolbarOverflowRaf);\n toolbarOverflowRaf = win.requestAnimationFrame(layoutToolbarOverflow);\n }\n\n const onToolbarOverflowButtonClick = (event: MouseEvent): void => {\n event.stopPropagation();\n if (toolbarOverflowOpen) closeToolbarOverflowMenu();\n else openToolbarOverflowMenu();\n };\n const onEditorStatusButtonClick = (event: MouseEvent): void => {\n event.stopPropagation();\n toggleEditorStatusCenter();\n };\n const onEditorStatusCopyAllClick = (event: MouseEvent): void => {\n event.stopPropagation();\n copyTextToClipboard(doc.defaultView, createLocalEditorStatusCenterViewModel(currentState).copyAllText);\n };\n const onToolbarOverflowPointerDown = (event: PointerEvent): void => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (!target) return;\n if (target.closest('[data-editor-local-test-menu]') || target.closest('[data-editor-local-test-toggle]')) return;\n if (target.closest('[data-editor-status-center]') || target.closest('[data-editor-status-toggle]')) return;\n if (target.closest('[data-editor-toolbar-overflow-menu]') || target.closest('[data-editor-toolbar-overflow-toggle]')) return;\n if (target.closest('[data-transform-snap-settings-popover]') || target.closest('[data-transform-snap-toggle]')) return;\n if (target.closest('[data-placement-settings-popover]') || target.closest('[data-placement-mode-toggle]')) return;\n if (target.closest('[data-transform-action-popover]') || target.closest('[data-transform-action-toggle]')) return;\n if (target.closest('[data-viewport-overlay-settings-popover]') || target.closest('[data-viewport-overlay-settings-toggle]')) return;\n closeLocalTestMenu();\n closeEditorStatusCenter();\n closeToolbarOverflowMenu();\n if (!target.closest('[data-editor-toolbar-static-shadow-bake-popover]')) closeStaticShadowBakePopover();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n };\n const ResizeObserverCtor = doc.defaultView?.ResizeObserver;\n const toolbarResizeObserver = ResizeObserverCtor\n ? new ResizeObserverCtor(() => scheduleToolbarOverflowLayout())\n : null;\n construction.addCleanup('toolbar-resize-observer', () => toolbarResizeObserver?.disconnect());\n toolbarOverflowButton.addEventListener('click', onToolbarOverflowButtonClick);\n localTestButton.addEventListener('click', onLocalTestButtonClick);\n editorStatusButton.addEventListener('click', onEditorStatusButtonClick);\n editorStatusCopyAllButton.addEventListener('click', onEditorStatusCopyAllClick);\n doc.addEventListener('pointerdown', onToolbarOverflowPointerDown);\n construction.addCleanup('toolbar-overflow-pointerdown', () => {\n doc.removeEventListener('pointerdown', onToolbarOverflowPointerDown);\n });\n toolbarResizeObserver?.observe(sceneToolOverlay);\n doc.defaultView?.addEventListener('resize', scheduleToolbarOverflowLayout);\n construction.addCleanup('toolbar-overflow-resize', () => {\n doc.defaultView?.removeEventListener('resize', scheduleToolbarOverflowLayout);\n });\n\n applyThemeToSurfaces();\n updateThemeToggleButton();\n\n enterEditorButton.addEventListener('click', () => callbacks.onEnterEditor?.());\n saveButton.addEventListener('click', () => {\n closeLocalTestMenu();\n if (localTestActionsEnabled) callbacks.onSaveScene?.();\n });\n saveAndRunButton.addEventListener('click', () => {\n closeLocalTestMenu();\n if (localTestActionsEnabled) callbacks.onSaveAndRunGame?.();\n });\n discardRunButton.addEventListener('click', () => {\n closeLocalTestMenu();\n if (localTestActionsEnabled) callbacks.onDiscardAndRunGame?.();\n });\n undoButton.addEventListener('click', () => callbacks.onUndo?.());\n redoButton.addEventListener('click', () => callbacks.onRedo?.());\n performanceMonitorButton.addEventListener('click', () => {\n setPerformanceMonitorOpen(!performanceMonitorOpen);\n });\n prefabComparisonPreviewButton.addEventListener('click', () => {\n setPrefabComparisonPreviewOpen(!prefabComparisonPreviewOpen);\n });\n gridToggleButton.addEventListener('click', () => {\n const visible = currentState?.grid?.visible ?? true;\n callbacks.onGridVisibleChange?.(!visible);\n });\n sceneCameraButton.addEventListener('click', () => {\n const enabled = currentState?.sceneCameraPreview?.enabled ?? false;\n callbacks.onSceneCameraPreviewToggle?.(!enabled);\n });\n staticShadowBakeButton.addEventListener('click', () => {\n if (staticShadowBakeButton.disabled) return;\n const action = findLocalEditorRenderingAction(currentState?.renderingPanel, STATIC_SHADOW_BAKE_ACTION_ID);\n if (!action || action.action.disabled) return;\n openStaticShadowBakePopover();\n callbacks.onRenderingAction?.({ actionId: STATIC_SHADOW_BAKE_ACTION_ID });\n });\n staticShadowBakePopoverClose.addEventListener('click', () => closeStaticShadowBakePopover());\n const toggleCoordinateAxesProjection = (event: Event): void => {\n event.preventDefault();\n event.stopPropagation();\n const axesState = currentState?.coordinateAxes ?? null;\n if (!axesState || axesState.projectionToggleDisabled || currentState?.busy) return;\n const currentMode = axesState.projectionMode;\n const nextMode: LocalEditorBrowserViewportProjectionMode = currentMode === 'orthographic' ? 'perspective' : 'orthographic';\n callbacks.onViewportProjectionModeChange?.(nextMode);\n if (event.type === 'click') coordinateAxesOverlay.projectionIcon.blur();\n };\n coordinateAxesOverlay.projectionIcon.addEventListener('pointerdown', (event) => {\n event.preventDefault();\n });\n coordinateAxesOverlay.projectionIcon.addEventListener('click', toggleCoordinateAxesProjection);\n coordinateAxesOverlay.projectionIcon.addEventListener('keydown', (event) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n toggleCoordinateAxesProjection(event);\n });\n viewportToolsGroup.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const preset = target?.closest<HTMLButtonElement>('[data-viewport-view-preset]')?.dataset.viewportViewPreset as LocalEditorBrowserViewportViewPreset | undefined;\n if (preset) {\n callbacks.onViewportViewPresetChange?.(preset);\n return;\n }\n const projectionToggle = target?.closest<HTMLButtonElement>('[data-viewport-projection-toggle]');\n if (projectionToggle) {\n const currentMode = currentState?.viewportTools?.projectionMode ?? 'perspective';\n const nextMode: LocalEditorBrowserViewportProjectionMode = currentMode === 'orthographic' ? 'perspective' : 'orthographic';\n callbacks.onViewportProjectionModeChange?.(nextMode);\n return;\n }\n const markerVisibilityToggle = target?.closest<HTMLButtonElement>('[data-viewport-marker-visibility-toggle]');\n if (markerVisibilityToggle) {\n const markersVisible = currentState?.viewportTools?.markersVisible ?? true;\n callbacks.onMarkerViewportVisibilityChange?.(!markersVisible);\n return;\n }\n const overlayToggle = target?.closest<HTMLButtonElement>('[data-viewport-overlay-settings-toggle]');\n if (overlayToggle) {\n event.stopPropagation();\n toggleOverlaySettingsPopover();\n return;\n }\n const measureToggle = target?.closest<HTMLButtonElement>('[data-viewport-measure-toggle]');\n if (measureToggle) {\n const currentTool = currentState?.viewportTools?.activeUtilityTool ?? 'none';\n const nextTool: LocalEditorBrowserViewportUtilityTool = currentTool === 'measure-distance' ? 'none' : 'measure-distance';\n callbacks.onViewportUtilityToolChange?.(nextTool);\n return;\n }\n const clearMeasurement = target?.closest<HTMLButtonElement>('[data-viewport-measurement-clear]');\n if (clearMeasurement) {\n callbacks.onViewportMeasurementClear?.();\n }\n });\n const setShortcutHelpOpen = (open: boolean): void => {\n if (open) contextMenu.close();\n helpOpen = open;\n syncInputModalOpen();\n shortcutHelpPanel.style.display = helpOpen ? 'flex' : 'none';\n LocalEditorShared.applyButtonActiveState(sceneHelpButton, helpOpen);\n };\n const setPerformanceMonitorOpen = (open: boolean, notify = true): void => {\n if (performanceMonitorOpen === open) return;\n if (open) contextMenu.close();\n performanceMonitorOpen = open;\n LocalEditorShared.applyButtonActiveState(performanceMonitorButton, performanceMonitorOpen);\n renderPerformanceMonitorOverlay(\n performanceMonitorOverlay,\n currentState?.mode === 'editor' && !currentState.prefabStage ? currentState.performanceStats ?? null : null,\n currentState?.mode === 'editor' && !currentState.prefabStage && performanceMonitorOpen,\n );\n if (notify) callbacks.onPerformanceMonitorOpenChange?.(performanceMonitorOpen);\n };\n const setPrefabComparisonPreviewOpen = (open: boolean): void => {\n if (prefabComparisonPreviewOpen === open) return;\n if (!open) endPrefabComparisonPreviewDrag();\n prefabComparisonPreviewOpen = open;\n if (currentState) renderPreviewState(currentState);\n LocalEditorShared.applyButtonActiveState(prefabComparisonPreviewButton, prefabComparisonPreviewOpen);\n callbacks.onPrefabComparisonPreviewLayoutChange?.();\n };\n\n const openAssetPreviewModal = (asset: LocalEditorBrowserUiAssetItem): void => {\n if (!asset.preview) return;\n contextMenu.close();\n previewedAsset = asset;\n assetPreviewMode = 'preview';\n assetPreviewDialog.setAttribute('aria-label', '资产预览');\n assetPreviewOpen = true;\n renderAssetPreviewModal();\n syncInputModalOpen();\n assetPreviewCloseButton.focus({ preventScroll: true });\n };\n\n const openAssetMaterialEditorModal = (asset: LocalEditorBrowserUiAssetItem): void => {\n if (!asset.material) return;\n contextMenu.close();\n previewedAsset = asset;\n assetPreviewMode = 'material-editor';\n assetPreviewDialog.setAttribute('aria-label', '编辑材质球');\n assetPreviewOpen = true;\n renderAssetPreviewModal();\n syncInputModalOpen();\n assetPreviewCloseButton.focus({ preventScroll: true });\n };\n\n const openAssetRenameModal = (asset: LocalEditorBrowserUiAssetItem): void => {\n contextMenu.close();\n previewedAsset = asset;\n assetPreviewMode = 'rename';\n assetPreviewDialog.setAttribute('aria-label', '重命名资产');\n assetPreviewOpen = true;\n renderAssetPreviewModal();\n syncInputModalOpen();\n setTimeout(() => {\n const input = assetPreviewBody.querySelector<HTMLInputElement>('[data-editor-asset-rename-input]');\n input?.focus({ preventScroll: true });\n input?.select();\n }, 0);\n };\n\n const closeAssetPreviewModal = (): void => {\n if (!assetPreviewOpen) return;\n assetPreviewOpen = false;\n previewedAsset = null;\n assetPreviewMode = 'preview';\n renderAssetPreviewModal();\n syncInputModalOpen();\n };\n\n const openInspectorAssetPicker = (\n input: HTMLInputElement,\n property: LocalEditorBrowserInspectorProperty<TDocument>,\n ): void => {\n contextMenu.close();\n if (helpOpen) setShortcutHelpOpen(false);\n assetPickerInput = input;\n assetPickerProperty = property;\n assetPickerFilter = '';\n assetPickerOpen = true;\n closeAssetPreviewModal();\n renderAssetPickerModal();\n syncInputModalOpen();\n assetPickerSearch.focus({ preventScroll: true });\n assetPickerSearch.select();\n };\n\n const closeInspectorAssetPicker = (): void => {\n if (!assetPickerOpen) return;\n assetPickerOpen = false;\n assetPickerInput = null;\n assetPickerProperty = null;\n assetPickerFilter = '';\n renderAssetPickerModal();\n syncInputModalOpen();\n };\n\n function syncInputModalOpen(): void {\n inputRouter.setModalOpen(currentState?.mode === 'editor' && (helpOpen || assetPreviewOpen || assetPickerOpen));\n }\n\n function resolvePreviewedAssetFromState(): LocalEditorBrowserUiAssetItem | null {\n if (!previewedAsset) return null;\n const refreshed = currentState?.assets.find(asset => asset.id === previewedAsset?.id)\n ?? currentState?.assets.find(asset => (asset.assetId ?? asset.id) === (previewedAsset?.assetId ?? previewedAsset?.id))\n ?? null;\n if (refreshed) previewedAsset = refreshed;\n return previewedAsset;\n }\n\n function renderAssetPreviewModal(): void {\n const asset = resolvePreviewedAssetFromState();\n if (\n !assetPreviewOpen\n || !asset\n || (assetPreviewMode === 'preview' && !asset.preview)\n || (assetPreviewMode === 'material-editor' && !asset.material)\n ) {\n assetPreviewModal.style.display = 'none';\n assetPreviewTitle.textContent = '';\n assetPreviewMeta.textContent = '';\n while (assetPreviewBody.firstChild) assetPreviewBody.removeChild(assetPreviewBody.firstChild);\n return;\n }\n if (assetPreviewMode === 'material-editor' && asset.material) {\n renderAssetMaterialEditorModal(asset);\n assetPreviewModal.style.display = 'flex';\n return;\n }\n if (assetPreviewMode === 'rename') {\n renderAssetRenameModal(asset);\n assetPreviewModal.style.display = 'flex';\n return;\n }\n assetPreviewDialog.style.width = 'min(420px,calc(100vw - 64px))';\n assetPreviewBody.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:center',\n 'min-height:240px',\n 'border:1px solid var(--fps-editor-divider)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel-soft)',\n ].join(';');\n assetPreviewTitle.textContent = asset.label;\n assetPreviewMeta.textContent = [\n asset.kind ? `Kind: ${asset.kind}` : '',\n asset.meta ?? asset.assetId ?? asset.id,\n ].filter(Boolean).join(' · ');\n while (assetPreviewBody.firstChild) assetPreviewBody.removeChild(assetPreviewBody.firstChild);\n assetPreviewBody.appendChild(LocalEditorPanels.createAssetPreviewElement(doc, asset, 'modal'));\n assetPreviewModal.style.display = 'flex';\n }\n\n function renderAssetRenameModal(asset: LocalEditorBrowserUiAssetItem): void {\n assetPreviewDialog.style.width = 'min(420px,calc(100vw - 64px))';\n assetPreviewTitle.textContent = '重命名 Prefab';\n assetPreviewMeta.textContent = asset.assetId ?? asset.id;\n while (assetPreviewBody.firstChild) assetPreviewBody.removeChild(assetPreviewBody.firstChild);\n assetPreviewBody.style.cssText = [\n 'display:flex',\n 'align-items:stretch',\n 'justify-content:stretch',\n 'min-height:0',\n 'border:1px solid var(--fps-editor-divider)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel-soft)',\n 'padding:12px',\n ].join(';');\n const form = doc.createElement('form');\n form.dataset.editorAssetRenameForm = 'true';\n form.style.cssText = 'display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;width:100%;align-items:center';\n const input = doc.createElement('input');\n input.type = 'text';\n input.dataset.editorAssetRenameInput = 'true';\n input.value = asset.label;\n input.maxLength = 80;\n input.required = true;\n input.style.cssText = [\n 'height:30px',\n 'min-width:0',\n 'box-sizing:border-box',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'padding:0 8px',\n 'outline:none',\n ].join(';');\n const submit = LocalEditorShared.createButton(doc, '确认');\n submit.type = 'submit';\n form.appendChild(input);\n form.appendChild(submit);\n assetPreviewBody.appendChild(form);\n }\n\n function renderAssetMaterialEditorModal(asset: LocalEditorBrowserUiAssetItem): void {\n const material = asset.material!;\n const profile = material.profile ?? {};\n const baseColor = profile.baseColor ?? {};\n const emission = profile.emission ?? {};\n const readonly = material.readonly === true;\n const materialKind = material.materialKind === 'standard' ? 'standard' : 'pbr';\n assetPreviewDialog.style.width = 'min(780px,calc(100vw - 64px))';\n assetPreviewTitle.textContent = '编辑材质球';\n assetPreviewMeta.textContent = [\n material.name || asset.label,\n materialKind === 'standard' ? 'Standard' : 'PBR',\n `被 ${material.usage?.count ?? 0} 处使用`,\n readonly ? '只读系统材质' : '共享资产参数',\n material.id,\n ].filter(Boolean).join(' · ');\n while (assetPreviewBody.firstChild) assetPreviewBody.removeChild(assetPreviewBody.firstChild);\n assetPreviewBody.style.cssText = [\n 'display:grid',\n 'grid-template-columns:minmax(180px,250px) minmax(0,1fr)',\n 'gap:14px',\n 'align-items:start',\n 'min-height:360px',\n 'border:1px solid var(--fps-editor-divider)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel-soft)',\n 'padding:12px',\n 'box-sizing:border-box',\n ].join(';');\n\n const previewColumn = doc.createElement('div');\n previewColumn.style.cssText = 'display:flex;flex-direction:column;gap:10px;min-width:0';\n previewColumn.appendChild(LocalEditorPanels.createAssetPreviewElement(doc, asset, 'modal'));\n const previewMeta = doc.createElement('div');\n previewMeta.textContent = readonly\n ? '系统默认材质不可编辑。'\n : '修改会影响所有使用该材质球的物体。';\n previewMeta.style.cssText = 'color:var(--fps-editor-muted);font-size:11px;font-weight:800;line-height:1.45';\n previewColumn.appendChild(previewMeta);\n appendMaterialEditorUsageSummary(previewColumn, material.usage ?? { count: 0, items: [] });\n\n const form = doc.createElement('div');\n form.style.cssText = 'display:grid;grid-template-columns:minmax(96px,140px) minmax(0,1fr);gap:7px 10px;align-items:center;min-width:0';\n appendMaterialEditorTextField(form, '名称', 'name', material.name || asset.label, readonly);\n appendMaterialEditorReadonlyRow(form, '类型', materialKind === 'standard' ? 'Standard 标准材质球' : 'PBR 标准材质球');\n appendMaterialEditorTextureField(form, '基础贴图', 'profile.baseColor.texture.url', baseColor.texture?.url ?? '', readonly);\n appendMaterialEditorNumberField(form, '贴图亮度', 'profile.baseColor.brightness', baseColor.brightness ?? 1, readonly, 0, 2, 0.05);\n appendMaterialEditorNumberField(form, '贴图饱和度', 'profile.baseColor.saturation', baseColor.saturation ?? 1, readonly, 0, 2, 0.05);\n appendMaterialEditorNumberField(form, '贴图对比度', 'profile.baseColor.contrast', baseColor.contrast ?? 1, readonly, 0, 2, 0.05);\n appendMaterialEditorNumberField(form, '贴图色相', 'profile.baseColor.hue', baseColor.hue ?? 0, readonly, -180, 180, 1);\n appendMaterialEditorColorField(form, '基础色', 'profile.baseColor.color', baseColor.color ?? { r: 1, g: 1, b: 1 }, readonly);\n if (materialKind === 'pbr') {\n appendMaterialEditorNumberField(form, '金属度', 'profile.metallic', profile.metallic ?? 0, readonly, 0, 1, 0.05);\n appendMaterialEditorNumberField(form, '粗糙度', 'profile.roughness', profile.roughness ?? 1, readonly, 0, 1, 0.05);\n }\n appendMaterialEditorColorField(form, '自发光颜色', 'profile.emission.color', emission.color ?? { r: 0, g: 0, b: 0 }, readonly);\n appendMaterialEditorNumberField(form, '自发光强度', 'profile.emission.intensity', emission.intensity ?? 0, readonly, 0, undefined, 0.05);\n appendMaterialEditorTextureField(form, '遮罩贴图', 'profile.emission.maskTexture.url', emission.maskTexture?.url ?? '', readonly);\n\n assetPreviewBody.appendChild(previewColumn);\n assetPreviewBody.appendChild(form);\n }\n\n function appendMaterialEditorReadonlyRow(container: HTMLElement, label: string, value: string): void {\n appendMaterialEditorLabel(container, label);\n const output = doc.createElement('div');\n output.textContent = value;\n output.style.cssText = [\n 'min-height:30px',\n 'display:flex',\n 'align-items:center',\n 'min-width:0',\n 'padding:0 8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:12px',\n 'font-weight:900',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n ].join(';');\n container.appendChild(output);\n }\n\n function appendMaterialEditorTextField(\n container: HTMLElement,\n label: string,\n fieldPath: string,\n value: string,\n readonly: boolean,\n ): void {\n appendMaterialEditorLabel(container, label);\n const input = doc.createElement('input');\n input.type = 'text';\n input.value = value;\n input.disabled = readonly;\n input.spellcheck = false;\n input.dataset.editorAssetMaterialField = fieldPath;\n input.dataset.editorAssetMaterialFieldKind = 'text';\n input.style.cssText = createMaterialEditorFieldCss(readonly);\n container.appendChild(input);\n }\n\n function appendMaterialEditorUsageSummary(\n container: HTMLElement,\n usage: NonNullable<NonNullable<LocalEditorBrowserUiAssetItem['material']>['usage']>,\n ): void {\n const panel = doc.createElement('div');\n panel.style.cssText = [\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'padding:8px',\n 'display:flex',\n 'flex-direction:column',\n 'gap:6px',\n 'min-width:0',\n ].join(';');\n const title = doc.createElement('div');\n title.textContent = `被 ${usage.count} 处使用`;\n title.style.cssText = 'font-size:12px;font-weight:900;color:var(--fps-editor-text-strong)';\n panel.appendChild(title);\n if (usage.items.length === 0) {\n const empty = doc.createElement('div');\n empty.textContent = '未被场景使用';\n empty.style.cssText = 'font-size:11px;font-weight:800;color:var(--fps-editor-muted)';\n panel.appendChild(empty);\n } else {\n const list = doc.createElement('div');\n list.style.cssText = 'display:flex;flex-direction:column;gap:4px;min-width:0';\n for (const item of usage.items) {\n const row = doc.createElement('div');\n row.textContent = item.label;\n row.title = item.bindingPath || item.label;\n row.style.cssText = [\n 'min-height:22px',\n 'display:flex',\n 'align-items:center',\n 'min-width:0',\n 'padding:0 6px',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel-soft)',\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:11px',\n 'font-weight:800',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n ].join(';');\n list.appendChild(row);\n }\n panel.appendChild(list);\n }\n container.appendChild(panel);\n }\n\n function appendMaterialEditorColorField(\n container: HTMLElement,\n label: string,\n fieldPath: string,\n color: { r: number; g: number; b: number },\n readonly: boolean,\n ): void {\n appendMaterialEditorLabel(container, label);\n const input = doc.createElement('input');\n input.type = 'color';\n input.value = materialEditorColorToHex(color);\n input.disabled = readonly;\n input.dataset.editorAssetMaterialField = fieldPath;\n input.dataset.editorAssetMaterialFieldKind = 'color';\n input.style.cssText = [\n 'width:48px',\n 'height:32px',\n 'padding:2px',\n 'border:1px solid var(--fps-editor-accent)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n readonly ? 'opacity:0.62' : 'cursor:pointer',\n ].join(';');\n container.appendChild(input);\n }\n\n function appendMaterialEditorNumberField(\n container: HTMLElement,\n label: string,\n fieldPath: string,\n value: number,\n readonly: boolean,\n min?: number,\n max?: number,\n step = 0.05,\n ): void {\n appendMaterialEditorLabel(container, label);\n const input = doc.createElement('input');\n input.type = 'number';\n input.value = formatMaterialEditorNumber(value);\n if (min != null) input.min = String(min);\n if (max != null) input.max = String(max);\n input.step = String(step);\n input.disabled = readonly;\n input.dataset.editorAssetMaterialField = fieldPath;\n input.dataset.editorAssetMaterialFieldKind = 'number';\n input.style.cssText = createMaterialEditorFieldCss(readonly);\n container.appendChild(input);\n }\n\n function appendMaterialEditorTextureField(\n container: HTMLElement,\n label: string,\n fieldPath: string,\n value: string,\n readonly: boolean,\n ): void {\n appendMaterialEditorLabel(container, label);\n const select = doc.createElement('select');\n select.disabled = readonly;\n select.dataset.editorAssetMaterialField = fieldPath;\n select.dataset.editorAssetMaterialFieldKind = 'texture';\n select.style.cssText = createMaterialEditorFieldCss(readonly);\n for (const option of createMaterialEditorTextureOptions(value)) {\n const optionElement = doc.createElement('option');\n optionElement.value = option.value;\n optionElement.textContent = option.label;\n optionElement.title = option.meta ?? option.value;\n select.appendChild(optionElement);\n }\n select.value = value;\n container.appendChild(select);\n }\n\n function appendMaterialEditorLabel(container: HTMLElement, text: string): void {\n const label = doc.createElement('div');\n label.textContent = text;\n label.style.cssText = 'color:var(--fps-editor-muted-strong);font-size:12px;font-weight:900;line-height:1.2';\n container.appendChild(label);\n }\n\n function createMaterialEditorTextureOptions(currentValue: string): Array<{ label: string; value: string; meta?: string }> {\n const options: Array<{ label: string; value: string; meta?: string }> = [{ label: '继承 / 无', value: '', meta: '清空贴图引用' }];\n const seen = new Set(['']);\n for (const asset of currentState?.assets ?? []) {\n if (resolveLocalEditorBrowserAssetKind(asset) !== 'texture') continue;\n const value = asset.preview?.kind === 'image'\n ? asset.preview.url\n : asset.external?.assetUrl ?? asset.external?.assetPath ?? '';\n if (!value || seen.has(value)) continue;\n seen.add(value);\n options.push({ label: asset.label, value, meta: asset.meta ?? asset.assetId ?? asset.id });\n }\n if (currentValue && !seen.has(currentValue)) {\n options.push({ label: currentValue, value: currentValue, meta: '当前贴图 URL' });\n }\n return options;\n }\n\n function createMaterialEditorFieldCss(readonly: boolean): string {\n return [\n 'width:100%',\n 'min-width:0',\n 'height:32px',\n 'padding:0 8px',\n 'border:1px solid var(--fps-editor-accent)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:12px',\n 'font-weight:800',\n 'box-sizing:border-box',\n readonly ? 'opacity:0.62' : '',\n ].join(';');\n }\n\n function formatMaterialEditorNumber(value: number): string {\n if (!Number.isFinite(value)) return '0';\n return Number.isInteger(value) ? String(value) : value.toFixed(4).replace(/0+$/, '').replace(/\\.$/, '');\n }\n\n function materialEditorColorToHex(color: { r: number; g: number; b: number }): string {\n const toHex = (value: number): string => {\n const normalized = Number.isFinite(value) ? value : 0;\n const byte = Math.round(Math.min(255, Math.max(0, normalized <= 1 ? normalized * 255 : normalized)));\n return byte.toString(16).padStart(2, '0');\n };\n return `#${toHex(color.r)}${toHex(color.g)}${toHex(color.b)}`;\n }\n\n function materialEditorHexToColor(value: string): { r: number; g: number; b: number } | null {\n const match = value.trim().match(/^#?([0-9a-f]{6})$/i);\n if (!match) return null;\n const hex = match[1];\n return {\n r: Number.parseInt(hex.slice(0, 2), 16) / 255,\n g: Number.parseInt(hex.slice(2, 4), 16) / 255,\n b: Number.parseInt(hex.slice(4, 6), 16) / 255,\n };\n }\n\n function dispatchMaterialEditorFieldChange(input: HTMLInputElement | HTMLSelectElement): void {\n const asset = resolvePreviewedAssetFromState();\n const material = asset?.material;\n const fieldPath = input.dataset.editorAssetMaterialField;\n if (!asset || !material || !fieldPath || material.readonly === true) return;\n const kind = input.dataset.editorAssetMaterialFieldKind;\n let value: unknown;\n if (kind === 'color' && input instanceof HTMLInputElement) {\n value = materialEditorHexToColor(input.value);\n if (!value) return;\n } else if (kind === 'number' && input instanceof HTMLInputElement) {\n value = Number(input.value);\n if (!Number.isFinite(value)) return;\n } else if (kind === 'texture') {\n value = input.value.trim() || null;\n } else {\n value = input.value;\n }\n callbacks.onAssetAction?.({\n actionId: 'asset.edit-material-field',\n assetId: material.id || asset.assetId || asset.id,\n browserAssetId: asset.id,\n assetKind: asset.kind,\n fieldPath,\n value,\n });\n }\n\n function renderAssetPickerModal(): void {\n if (!assetPickerOpen || !assetPickerProperty || !assetPickerInput) {\n assetPickerModal.style.display = 'none';\n assetPickerTitle.textContent = '';\n assetPickerSearch.value = '';\n while (assetPickerList.firstChild) assetPickerList.removeChild(assetPickerList.firstChild);\n return;\n }\n const options = readInspectorAssetPickerOptions(assetPickerProperty);\n assetPickerTitle.textContent = options.title;\n assetPickerSearch.value = assetPickerFilter;\n while (assetPickerList.firstChild) assetPickerList.removeChild(assetPickerList.firstChild);\n const normalizedFilter = assetPickerFilter.trim().toLowerCase();\n const candidates = options.candidates.filter(candidate => {\n if (!normalizedFilter) return true;\n return [candidate.label, candidate.value, candidate.meta ?? '', candidate.kind ?? '']\n .some(value => value.toLowerCase().includes(normalizedFilter));\n });\n if (candidates.length === 0) {\n const empty = doc.createElement('div');\n empty.textContent = '没有匹配的资产。';\n empty.style.cssText = 'color:var(--fps-editor-muted);font-size:12px;font-weight:800;padding:10px';\n assetPickerList.appendChild(empty);\n }\n for (const candidate of candidates) {\n assetPickerList.appendChild(createInspectorAssetPickerCandidateButton(candidate, assetPickerInput.value));\n }\n assetPickerModal.style.display = 'flex';\n }\n\n function createInspectorAssetPickerCandidateButton(\n candidate: LocalEditorBrowserInspectorAssetPickerOption,\n currentValue: string,\n ): HTMLButtonElement {\n const button = doc.createElement('button');\n button.type = 'button';\n button.dataset.editorAssetPickerCandidate = candidate.value;\n const selected = candidate.value === currentValue;\n button.style.cssText = [\n 'min-width:0',\n 'min-height:56px',\n 'display:flex',\n 'align-items:center',\n 'gap:8px',\n 'padding:7px 8px',\n `border:1px solid ${selected ? 'var(--fps-editor-accent-strong)' : 'var(--fps-editor-border)'}`,\n 'border-radius:3px',\n `background:${selected ? 'var(--fps-editor-accent-soft)' : 'var(--fps-editor-asset-card-bg)'}`,\n 'color:var(--fps-editor-text)',\n 'text-align:left',\n 'cursor:pointer',\n ].join(';');\n button.appendChild(LocalEditorPanels.createAssetPreviewElement(doc, {\n id: candidate.value || '__empty__',\n label: candidate.label,\n preview: candidate.preview,\n }, 'grid'));\n const body = doc.createElement('div');\n body.style.cssText = 'min-width:0;flex:1';\n const label = doc.createElement('div');\n label.textContent = candidate.label;\n label.style.cssText = 'font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';\n const meta = doc.createElement('div');\n meta.textContent = candidate.meta ?? candidate.value;\n meta.style.cssText = 'color:var(--fps-editor-muted);font-size:11px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';\n body.appendChild(label);\n body.appendChild(meta);\n button.appendChild(body);\n return button;\n }\n\n sceneHelpButton.addEventListener('click', () => {\n setShortcutHelpOpen(!helpOpen);\n });\n prefabStageBackButton.addEventListener('click', () => {\n callbacks.onExitPrefabStage?.();\n });\n themeToggleButton.addEventListener('click', () => {\n setActiveTheme(activeTheme === 'dark' ? 'light' : 'dark');\n });\n shortcutHelpPanel.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (!target?.closest('[data-editor-shortcut-help-close]')) return;\n setShortcutHelpOpen(false);\n });\n assetPreviewModal.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (target?.closest('[data-editor-asset-preview-close]')) {\n closeAssetPreviewModal();\n return;\n }\n if (target === assetPreviewModal) closeAssetPreviewModal();\n });\n assetPreviewBody.addEventListener('change', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (assetPreviewMode !== 'material-editor') return;\n const input = target?.closest<HTMLInputElement | HTMLSelectElement>('[data-editor-asset-material-field]');\n if (!input) return;\n dispatchMaterialEditorFieldChange(input);\n });\n assetPreviewBody.addEventListener('submit', (event) => {\n if (assetPreviewMode !== 'rename') return;\n event.preventDefault();\n const asset = resolvePreviewedAssetFromState();\n const form = event.target instanceof HTMLFormElement\n ? event.target.closest<HTMLFormElement>('[data-editor-asset-rename-form]')\n : null;\n const input = form?.querySelector<HTMLInputElement>('[data-editor-asset-rename-input]');\n const name = input?.value.trim() ?? '';\n if (!asset || !name) return;\n callbacks.onAssetAction?.({\n ...createAssetBrowserActionInput('asset.rename', asset),\n value: name,\n });\n closeAssetPreviewModal();\n });\n assetPickerModal.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (target?.closest('[data-editor-asset-picker-close]')) {\n closeInspectorAssetPicker();\n return;\n }\n const candidateButton = target?.closest<HTMLButtonElement>('[data-editor-asset-picker-candidate]');\n if (candidateButton && assetPickerInput) {\n assetPickerInput.value = candidateButton.dataset.editorAssetPickerCandidate ?? '';\n assetPickerInput.dispatchEvent(new Event('change', { bubbles: true }));\n closeInspectorAssetPicker();\n return;\n }\n if (target === assetPickerModal) closeInspectorAssetPicker();\n });\n assetPickerSearch.addEventListener('input', () => {\n assetPickerFilter = assetPickerSearch.value;\n renderAssetPickerModal();\n });\n toolGroup.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const tool = target?.closest<HTMLButtonElement>('[data-transform-tool]')?.dataset.transformTool as LocalEditorBrowserTransformTool | undefined;\n if (tool) callbacks.onTransformToolChange?.(tool);\n });\n spaceGroup.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const space = target?.closest<HTMLButtonElement>('[data-transform-space]')?.dataset.transformSpace as LocalEditorBrowserTransformSpace | undefined;\n if (space) callbacks.onTransformSpaceChange?.(space);\n });\n snapButton.addEventListener('click', (event) => {\n event.stopPropagation();\n toggleSnapSettingsPopover();\n });\n snapSettingsPopover.addEventListener('change', (event) => {\n const enabledInput = event.target instanceof HTMLInputElement\n ? event.target.closest<HTMLInputElement>('[data-transform-snap-enabled]')\n : null;\n if (enabledInput) {\n callbacks.onTransformSnapEnabledChange?.(enabledInput.checked);\n return;\n }\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n const kind = input?.dataset.transformSnapStep as LocalEditorBrowserTransformSnapStepKind | undefined;\n if (!input || !kind) return;\n const value = Number(input.value);\n if (!Number.isFinite(value) || value <= 0) {\n const settings = currentState?.transformOperations?.settings ?? DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS;\n input.value = formatSnapStepInputValue(settings.snap, kind);\n return;\n }\n callbacks.onTransformSnapStepChange?.({ kind, value });\n });\n placementGroup.addEventListener('click', (event) => {\n event.stopPropagation();\n togglePlacementSettingsPopover();\n });\n placementSettingsPopover.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const mode = target?.closest<HTMLButtonElement>('[data-placement-mode]')?.dataset.placementMode as LocalEditorBrowserPlacementMode | undefined;\n if (!mode) return;\n callbacks.onPlacementModeChange?.(mode);\n closePlacementSettingsPopover();\n });\n actionGroup.addEventListener('click', (event) => {\n event.stopPropagation();\n toggleTransformActionPopover();\n });\n transformActionPopover.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const action = target?.closest<HTMLButtonElement>('[data-transform-action]')?.dataset.transformAction as LocalEditorBrowserTransformAction | undefined;\n if (!action) return;\n const transformOperations = currentState?.transformOperations;\n if (!transformOperations || !isTransformActionEnabled(action, transformOperations)) return;\n callbacks.onTransformAction?.(action);\n closeTransformActionPopover();\n });\n overlaySettingsPopover.addEventListener('change', (event) => {\n const input = event.target instanceof HTMLInputElement\n ? event.target.closest<HTMLInputElement>('[data-viewport-overlay-setting]')\n : null;\n const key = input?.dataset.viewportOverlaySetting as keyof typeof VIEWPORT_OVERLAY_TOGGLE_LABELS | undefined;\n if (!input || !key) return;\n const currentOverlay = currentState?.viewportTools?.overlay;\n callbacks.onViewportOverlaySettingsChange?.({\n bounds: currentOverlay?.bounds ?? false,\n dimensions: currentOverlay?.dimensions ?? false,\n edgeLengths: currentOverlay?.edgeLengths ?? false,\n anchor: currentOverlay?.anchor ?? false,\n [key]: input.checked,\n });\n });\n\n function suppressAssetBrowserRevealIfVisible(assetButton: HTMLButtonElement): void {\n const assetId = assetButton.dataset.editorAssetId;\n if (assetId && assetBrowserViewportReveal.isElementVisible(assetButton)) {\n assetBrowserViewportReveal.suppressNextReveal(assetId);\n }\n }\n\n function revealSelectedAssetBrowserItem(assetId: string): void {\n const buttons = assetPanel.querySelectorAll<HTMLButtonElement>('[data-editor-asset-id]');\n for (const button of buttons) {\n if (button.dataset.editorAssetId !== assetId) continue;\n assetBrowserViewportReveal.revealElement(button);\n return;\n }\n }\n\n function createCurrentAssetBrowserActionContext(): { targetPrefabAssetId?: string; parentNodeId?: string } | undefined {\n const stage = currentState?.prefabStage;\n if (!stage) return undefined;\n const selectedItem = findLocalEditorPrefabStageStructureItem(stage, stage.selectedItemId);\n return {\n targetPrefabAssetId: stage.assetId,\n ...(selectedItem?.itemType === 'prefab-node' && selectedItem.nodeId\n ? { parentNodeId: selectedItem.nodeId }\n : {}),\n };\n }\n\n assetPanel.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const tabButton = target?.closest<HTMLButtonElement>('[data-editor-dock-tab]');\n const tab = tabButton?.dataset.editorDockTab as LocalEditorBottomDockTab | undefined;\n if (tab === 'assets' || tab === 'history') {\n panelRegistry.setBottomDockTab(tab);\n if (currentState) render(currentState);\n return;\n }\n const assetBrowserTabButton = target?.closest<HTMLButtonElement>('[data-editor-asset-browser-tab]');\n const nextAssetBrowserTab = assetBrowserTabButton?.dataset.editorAssetBrowserTab;\n if (isLocalEditorAssetBrowserTab(nextAssetBrowserTab)) {\n assetBrowserTab = nextAssetBrowserTab;\n if (currentState) render(currentState);\n return;\n }\n const createMaterialButton = target?.closest<HTMLButtonElement>('[data-editor-create-material-asset]');\n if (createMaterialButton) {\n callbacks.onAssetAction?.({\n actionId: 'asset.create-material',\n assetKind: 'material',\n });\n return;\n }\n const assetButton = target?.closest<HTMLButtonElement>('[data-editor-asset-id]');\n if (assetButton?.dataset.editorAssetId) {\n suppressAssetBrowserRevealIfVisible(assetButton);\n callbacks.onSelectAsset?.(assetButton.dataset.editorAssetId);\n return;\n }\n });\n\n assetPanel.addEventListener('dblclick', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const assetButton = target?.closest<HTMLButtonElement>('[data-editor-asset-id]');\n const browserAssetId = assetButton?.dataset.editorAssetId;\n if (!browserAssetId || !currentState) return;\n const asset = currentState.assets.find(candidate => candidate.id === browserAssetId);\n const actionId = asset ? resolveAssetBrowserDoubleClickAction(currentState, asset) : null;\n if (!asset || !actionId) return;\n event.preventDefault();\n event.stopPropagation();\n suppressAssetBrowserRevealIfVisible(assetButton);\n callbacks.onSelectAsset?.(browserAssetId);\n callbacks.onAssetAction?.(createAssetBrowserActionInput(actionId, asset, createCurrentAssetBrowserActionContext()));\n });\n\n assetPanel.addEventListener('contextmenu', (event) => {\n if (!inputRouter.shouldPreventBrowserContextMenu(event)) return;\n const target = inputRouter.getEventTarget(event);\n if (!target) return;\n const assetButton = target?.closest<HTMLButtonElement>('[data-editor-asset-id]');\n const browserAssetId = assetButton?.dataset.editorAssetId;\n if (!browserAssetId || !currentState) return;\n const asset = currentState.assets.find(candidate => candidate.id === browserAssetId);\n if (!asset) return;\n inputRouter.claimContextMenu(event);\n suppressAssetBrowserRevealIfVisible(assetButton);\n callbacks.onSelectAsset?.(browserAssetId);\n contextMenu.open({\n x: event.clientX,\n y: event.clientY,\n items: createAssetBrowserMenuItems(currentState, asset),\n onAction(item) {\n if (item.id === 'asset.preview') {\n openAssetPreviewModal(asset);\n return;\n }\n if (item.id === 'asset.edit-material') {\n openAssetMaterialEditorModal(asset);\n return;\n }\n if (item.id === 'asset.rename') {\n openAssetRenameModal(asset);\n return;\n }\n if (item.id === 'asset.edit-prefab' || item.id === 'asset.add-to-current-prefab') {\n callbacks.onAssetAction?.(createAssetBrowserActionInput(item.id, asset, createCurrentAssetBrowserActionContext()));\n return;\n }\n if (item.id === 'asset.copy-id') {\n copyTextToClipboard(doc.defaultView, asset.assetId ?? asset.id);\n return;\n }\n callbacks.onAssetAction?.(createAssetBrowserActionInput(item.id, asset, createCurrentAssetBrowserActionContext()));\n },\n });\n });\n\n workbench.rightDock.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const openTabButton = target?.closest<HTMLButtonElement>('[data-editor-open-right-dock-tab]');\n const openTab = openTabButton?.dataset.editorOpenRightDockTab as LocalEditorRightDockTab | undefined;\n if (isLocalEditorRightDockTab(openTab)) {\n panelRegistry.setRightDockTab(openTab);\n if (currentState) render(currentState);\n return;\n }\n const tabButton = target?.closest<HTMLButtonElement>('[data-editor-right-dock-tab]');\n const tab = tabButton?.dataset.editorRightDockTab as LocalEditorRightDockTab | undefined;\n if (isLocalEditorRightDockTab(tab)) {\n panelRegistry.setRightDockTab(tab);\n if (currentState) render(currentState);\n }\n });\n\n workbench.leftDock.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const tabButton = target?.closest<HTMLButtonElement>('[data-editor-left-dock-tab]');\n const tab = tabButton?.dataset.editorLeftDockTab;\n if (tab === 'hierarchy') {\n panelRegistry.setActivePanel('left', tab);\n if (currentState) render(currentState);\n }\n });\n\n const hierarchyController = createLocalEditorHierarchyController<TDocument>({\n doc,\n panel: hierarchyPanel,\n callbacks,\n inputRouter,\n contextMenu,\n getState: () => currentState,\n contextActions: options.hierarchy?.contextActions,\n requestRender: () => {\n if (currentState) render(currentState);\n },\n onBeforeOpenContextMenu: () => {\n if (helpOpen) setShortcutHelpOpen(false);\n if (assetPreviewOpen) closeAssetPreviewModal();\n },\n });\n construction.addCleanup('hierarchy-controller', () => hierarchyController.dispose());\n\n assetPanel.addEventListener('input', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n if (input?.dataset.editorAssetFilter == null) return;\n callbacks.onAssetFilterChange?.(input.value);\n });\n\n inspectorPanel.addEventListener('input', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n if (input?.dataset.editorInspectorSearch != null) {\n inspectorFilter = input.value;\n if (currentState) render(currentState);\n return;\n }\n if (input?.type === 'checkbox' || input?.type === 'color') return;\n if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId) return;\n if (readInspectorCommitMode(input) !== 'live') return;\n const propertyInputs = createInspectorPropertyInputs(input, 'input', lockedInspectorVectorGroups);\n if (!propertyInputs) return;\n applyInspectorLockedVectorInputToDom(input, propertyInputs);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n });\n\n inspectorPanel.addEventListener('paste', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n const text = event.clipboardData?.getData('text/plain') ?? event.clipboardData?.getData('text') ?? '';\n if (!input || !text) return;\n const payload = parseLocalEditorBrowserInspectorGroupValueClipboardPayload(text);\n if (!payload) return;\n event.preventDefault();\n event.stopPropagation();\n const propertyInputs = createInspectorVectorPastePropertyInputs(input, payload);\n if (!propertyInputs) return;\n applyInspectorVectorPasteToDom(input, payload);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n });\n\n inspectorPanel.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const renderingActionButton = target?.closest<HTMLButtonElement>('[data-editor-rendering-action]');\n if (renderingActionButton) {\n if (renderingActionButton.disabled) return;\n const actionInput = createRenderingActionInput(renderingActionButton);\n if (!actionInput) return;\n const action = findLocalEditorRenderingAction(currentState?.renderingPanel, actionInput.actionId);\n if (!action || action.action.disabled) return;\n event.preventDefault();\n event.stopPropagation();\n if (actionInput.actionId === STATIC_SHADOW_BAKE_ACTION_ID) openStaticShadowBakePopover();\n callbacks.onRenderingAction?.(actionInput);\n return;\n }\n const inspectorActionButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-action]');\n if (inspectorActionButton) {\n if (inspectorActionButton.disabled) return;\n const actionInput = createInspectorActionInput(inspectorActionButton);\n if (!actionInput) return;\n event.preventDefault();\n event.stopPropagation();\n callbacks.onInspectorAction?.(actionInput);\n return;\n }\n const relationTarget = target?.closest<HTMLElement>('[data-editor-marker-relation-action]');\n if (relationTarget && !(relationTarget instanceof HTMLButtonElement && relationTarget.disabled)) {\n const relationInput = createMarkerRelationActionInput(relationTarget);\n if (!relationInput) return;\n event.preventDefault();\n event.stopPropagation();\n callbacks.onMarkerRelationAction?.(relationInput);\n return;\n }\n const vectorLockButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-vector-lock]');\n if (vectorLockButton) {\n const groupPath = vectorLockButton.dataset.editorInspectorVectorLock;\n if (!groupPath) return;\n event.preventDefault();\n event.stopPropagation();\n if (lockedInspectorVectorGroups.has(groupPath)) lockedInspectorVectorGroups.delete(groupPath);\n else lockedInspectorVectorGroups.add(groupPath);\n if (currentState) render(currentState);\n return;\n }\n const vectorCopyButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-vector-copy]');\n if (vectorCopyButton) {\n const value = vectorCopyButton.dataset.editorInspectorVectorCopyValue;\n if (!value) return;\n event.preventDefault();\n event.stopPropagation();\n copyTextToClipboard(doc.defaultView, value);\n return;\n }\n const readonlyCopyButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-readonly-copy]');\n if (readonlyCopyButton) {\n const value = readonlyCopyButton.dataset.editorInspectorReadonlyCopyValue;\n if (!value) return;\n event.preventDefault();\n event.stopPropagation();\n copyTextToClipboard(doc.defaultView, value);\n return;\n }\n const materialSlotSelectTarget = target?.closest<HTMLElement>('[data-editor-inspector-material-slot-select]');\n const materialSlotSelectionId = materialSlotSelectTarget?.dataset.editorInspectorMaterialSlotSelect;\n if (materialSlotSelectionId) {\n const precondition = createCurrentHierarchyCommandPrecondition();\n if (!precondition) return;\n callbacks.onSelectHierarchyItem?.({\n id: materialSlotSelectionId,\n additive: event.shiftKey && !event.metaKey && !event.ctrlKey,\n toggle: event.metaKey || event.ctrlKey,\n }, precondition);\n return;\n }\n const copyButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-asset-copy]');\n if (copyButton) {\n const control = copyButton.closest<HTMLElement>('[data-editor-inspector-asset-picker-control]');\n const input = control?.querySelector<HTMLInputElement>('input[data-serialized-path]');\n const value = copyButton.dataset.editorInspectorAssetCopyValue;\n if (!input || !value) return;\n event.preventDefault();\n event.stopPropagation();\n input.value = value;\n input.dispatchEvent(new Event('change', { bubbles: true }));\n return;\n }\n const pickerButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-asset-picker]');\n if (!pickerButton) return;\n const control = pickerButton.closest<HTMLElement>('[data-editor-inspector-asset-picker-control]');\n const input = control?.querySelector<HTMLInputElement>('input[data-serialized-path]');\n if (!input || !currentState) return;\n const property = findInspectorPropertyForInput(currentState, input);\n if (!property) return;\n event.preventDefault();\n openInspectorAssetPicker(input, property);\n });\n\n inspectorPanel.addEventListener('change', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLSelectElement\n ? event.target\n : null;\n if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId) return;\n if (input instanceof HTMLInputElement && (input.type === 'text' || input.type === 'number')) {\n if (readInspectorCommitMode(input) !== 'change') return;\n if (consumeLocalEditorKeyboardCommittedValue(input)) return;\n }\n const propertyInputs = createInspectorPropertyInputs(input, readInspectorImmediateSource(input), lockedInspectorVectorGroups);\n if (!propertyInputs) return;\n applyInspectorLockedVectorInputToDom(input, propertyInputs);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n });\n\n inspectorPanel.addEventListener('keydown', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n if (!input || !isLocalEditorKeyboardCommitEvent(event, input)) return;\n if (!commitLocalEditorInspectorInput(input, callbacks, lockedInspectorVectorGroups)) return;\n event.preventDefault();\n event.stopPropagation();\n });\n\n inspectorPanel.addEventListener('focusout', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId) return;\n if (readInspectorCommitMode(input) !== 'blur') return;\n if (consumeLocalEditorKeyboardCommittedValue(input)) return;\n const propertyInputs = createInspectorPropertyInputs(input, 'input', lockedInspectorVectorGroups);\n if (!propertyInputs) return;\n applyInspectorLockedVectorInputToDom(input, propertyInputs);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n });\n\n renderingPanel.addEventListener('input', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement\n ? event.target\n : null;\n if (!input?.dataset.editorRenderingProperty) return;\n if (input instanceof HTMLSelectElement) return;\n if (input instanceof HTMLInputElement && (input.type === 'checkbox' || input.type === 'color')) return;\n if (readRenderingCommitMode(input) !== 'live') return;\n const propertyInput = createRenderingPropertyInput(input, input instanceof HTMLTextAreaElement ? 'list' : 'input');\n if (propertyInput) callbacks.onRenderingPropertyChange?.(propertyInput);\n });\n\n renderingPanel.addEventListener('change', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement\n ? event.target\n : null;\n if (!input?.dataset.editorRenderingProperty) return;\n if ((input instanceof HTMLInputElement && (input.type === 'text' || input.type === 'number')) || input instanceof HTMLTextAreaElement) {\n if (readRenderingCommitMode(input) !== 'change') return;\n if (consumeLocalEditorKeyboardCommittedValue(input)) return;\n }\n const propertyInput = createRenderingPropertyInput(input, readRenderingImmediateSource(input));\n if (propertyInput) callbacks.onRenderingPropertyChange?.(propertyInput);\n });\n\n renderingPanel.addEventListener('keydown', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement\n ? event.target\n : null;\n if (!input || !isLocalEditorKeyboardCommitEvent(event, input)) return;\n if (!commitLocalEditorRenderingInput(input, callbacks)) return;\n event.preventDefault();\n event.stopPropagation();\n });\n\n renderingPanel.addEventListener('focusout', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement\n ? event.target\n : null;\n if (!input?.dataset.editorRenderingProperty) return;\n if (input instanceof HTMLSelectElement) return;\n if (readRenderingCommitMode(input) !== 'blur') return;\n if (consumeLocalEditorKeyboardCommittedValue(input)) return;\n const propertyInput = createRenderingPropertyInput(input, input instanceof HTMLTextAreaElement ? 'list' : 'input');\n if (propertyInput) callbacks.onRenderingPropertyChange?.(propertyInput);\n });\n\n renderingPanel.addEventListener('click', (event) => {\n const eventTarget = event.target instanceof HTMLElement ? event.target : null;\n const pickerButton = eventTarget?.closest<HTMLButtonElement>('[data-editor-inspector-asset-picker]');\n if (pickerButton) {\n const control = pickerButton.closest<HTMLElement>('[data-editor-inspector-asset-picker-control]');\n const input = control?.querySelector<HTMLInputElement>('input[data-editor-rendering-property]');\n if (!input || !currentState) return;\n const property = findRenderingPropertyForInput(currentState, input);\n if (!property) return;\n event.preventDefault();\n event.stopPropagation();\n openInspectorAssetPicker(input, property);\n return;\n }\n const actionButton = eventTarget?.closest<HTMLButtonElement>('[data-editor-rendering-action]');\n if (!actionButton) return;\n if (actionButton.disabled) return;\n const actionInput = createRenderingActionInput(actionButton);\n if (!actionInput) return;\n event.preventDefault();\n if (actionInput.actionId === STATIC_SHADOW_BAKE_ACTION_ID) openStaticShadowBakePopover();\n callbacks.onRenderingAction?.(actionInput);\n });\n\n markersPanel.addEventListener('click', (event) => {\n const eventTarget = event.target instanceof HTMLElement ? event.target : null;\n const relationTarget = eventTarget?.closest<HTMLElement>('[data-editor-marker-relation-action]');\n if (relationTarget && !(relationTarget instanceof HTMLButtonElement && relationTarget.disabled)) {\n const relationInput = createMarkerRelationActionInput(relationTarget);\n if (!relationInput) return;\n event.preventDefault();\n event.stopPropagation();\n callbacks.onMarkerRelationAction?.(relationInput);\n return;\n }\n const actionButton = eventTarget?.closest<HTMLButtonElement>('[data-editor-marker-type-action]');\n if (!actionButton || actionButton.disabled) return;\n const actionInput = createMarkerTypeActionInput(actionButton);\n if (!actionInput) return;\n event.preventDefault();\n event.stopPropagation();\n callbacks.onMarkerTypeAction?.(actionInput);\n });\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.defaultPrevented) return;\n if (currentState?.mode !== 'editor' || currentState.busy) return;\n const key = event.key.toLowerCase();\n if (key === 'escape' && assetPreviewOpen) {\n event.preventDefault();\n closeAssetPreviewModal();\n return;\n }\n if (key === 'escape' && assetPickerOpen) {\n event.preventDefault();\n closeInspectorAssetPicker();\n return;\n }\n if (key === 'escape' && snapSettingsOpen) {\n event.preventDefault();\n closeSnapSettingsPopover();\n return;\n }\n if (key === 'escape' && placementSettingsOpen) {\n event.preventDefault();\n closePlacementSettingsPopover();\n return;\n }\n if (key === 'escape' && transformActionOpen) {\n event.preventDefault();\n closeTransformActionPopover();\n return;\n }\n if (key === 'escape' && overlaySettingsOpen) {\n event.preventDefault();\n closeOverlaySettingsPopover();\n return;\n }\n if (key === 'escape' && staticShadowBakePopoverOpen) {\n event.preventDefault();\n closeStaticShadowBakePopover();\n return;\n }\n const primaryModifier = event.metaKey || event.ctrlKey;\n const handleDocumentShortcut = inputRouter.shouldHandleDocumentShortcut(event);\n const handleGlobalShortcut = inputRouter.shouldHandleGlobalShortcut(event);\n\n if (shouldToggleLocalEditorPrefabComparisonShortcut({\n inPrefabStage: currentState.prefabStage != null,\n handleGlobalShortcut,\n key,\n shiftKey: event.shiftKey,\n metaKey: event.metaKey,\n ctrlKey: event.ctrlKey,\n altKey: event.altKey,\n })) {\n event.preventDefault();\n setPrefabComparisonPreviewOpen(!prefabComparisonPreviewOpen);\n return;\n }\n\n if (\n handleDocumentShortcut\n && localTestActionsEnabled\n && isPreviewToolEnabled('local-test')\n && primaryModifier\n && key === 's'\n ) {\n event.preventDefault();\n callbacks.onSaveScene?.();\n return;\n }\n if (handleGlobalShortcut && primaryModifier && key === 'z') {\n event.preventDefault();\n if (event.shiftKey) callbacks.onRedo?.();\n else callbacks.onUndo?.();\n return;\n }\n if (handleGlobalShortcut && event.ctrlKey && key === 'y') {\n event.preventDefault();\n callbacks.onRedo?.();\n return;\n }\n if (shouldLocalEditorPrefabStageBlockHierarchyShortcut({\n inPrefabStage: currentState.prefabStage != null,\n handleGlobalShortcut,\n key,\n metaKey: event.metaKey,\n ctrlKey: event.ctrlKey,\n altKey: event.altKey,\n })) {\n event.preventDefault();\n return;\n }\n if (!currentState.prefabStage && handleGlobalShortcut && hierarchyController.handleEditShortcut(event)) {\n return;\n }\n if (!handleGlobalShortcut || event.metaKey || event.ctrlKey || event.altKey) return;\n\n const toolByKey: Partial<Record<string, LocalEditorBrowserTransformTool>> = {\n q: 'select',\n w: 'move',\n e: 'rotate',\n r: 'scale',\n };\n const tool = toolByKey[key];\n if (tool) {\n event.preventDefault();\n if (isPreviewToolEnabled(tool)) callbacks.onTransformToolChange?.(tool);\n return;\n }\n if (key === 'f') {\n event.preventDefault();\n if (isPreviewToolEnabled('focus-selection')) callbacks.onFocusSelection?.();\n return;\n }\n if (key === 'escape') {\n event.preventDefault();\n if (isPreviewToolEnabled('cancel-selection')) {\n if (callbacks.onCancelEditorIntent) callbacks.onCancelEditorIntent();\n else callbacks.onCancelActiveOperation?.();\n }\n }\n };\n doc.addEventListener('keydown', onKeyDown);\n construction.addCleanup('document-keydown', () => doc.removeEventListener('keydown', onKeyDown));\n\n function formatSnapStepInputValue(\n snap: { moveStep: number; rotateStepDegrees: number; scaleStep: number },\n kind: LocalEditorBrowserTransformSnapStepKind,\n ): string {\n const value = kind === 'move'\n ? snap.moveStep\n : kind === 'rotate'\n ? snap.rotateStepDegrees\n : snap.scaleStep;\n return Number.isFinite(value) ? String(value) : '';\n }\n\n function createCurrentHierarchyCommandPrecondition(): LocalEditorBrowserHierarchyCommandPrecondition | null {\n if (!currentState) return null;\n const documentRevision = currentState.documentRevision ?? 0;\n return {\n scopeId: currentState.prefabStage ? `prefab-stage:${currentState.prefabStage.assetId}` : 'scene',\n documentRevision,\n projectionRevision: currentState.hierarchyProjectionRevision ?? documentRevision,\n };\n }\n\n function isTransformActionEnabled(\n action: LocalEditorBrowserTransformAction,\n operationState: NonNullable<LocalEditorBrowserUiState<TDocument>['transformOperations']>,\n ): boolean {\n return action.startsWith('align-')\n ? operationState.canAlign\n : operationState.canDistribute;\n }\n\n function getPreviewToolSupport(tool: LocalEditorPreviewToolMatrixKey): ReturnType<typeof resolveLocalEditorPreviewToolSupport> {\n const inPrefabStage = currentState?.mode === 'editor' && !!currentState.prefabStage;\n return resolveLocalEditorPreviewToolSupport({ inPrefabStage, tool });\n }\n\n function isPreviewToolVisible(tool: LocalEditorPreviewToolMatrixKey): boolean {\n return currentState?.mode === 'editor' && getPreviewToolSupport(tool).support !== 'hidden';\n }\n\n function isPreviewToolEnabled(tool: LocalEditorPreviewToolMatrixKey): boolean {\n return currentState?.mode === 'editor'\n && currentState.busy !== true\n && getPreviewToolSupport(tool).support === 'enabled';\n }\n\n function applyPrefabStageWorkbenchLayoutOverride(\n layout: LocalEditorWorkbenchLayoutState = workbenchLayoutController.getLayout(),\n ): void {\n const { leftWidth, rightWidth, bottomEdge, bottomVisible } = resolveLocalEditorPrefabStageWorkbenchLayout(\n layout,\n readLocalEditorWorkbenchViewport(doc),\n );\n workbench.leftDock.style.display = 'flex';\n workbench.leftDock.style.width = `${leftWidth}px`;\n workbench.leftDock.style.bottom = `${bottomEdge}px`;\n workbench.leftDock.style.zIndex = '';\n workbench.leftDock.style.boxShadow = '';\n workbench.rightDock.style.display = 'flex';\n workbench.rightDock.style.width = `${rightWidth}px`;\n workbench.rightDock.style.zIndex = '';\n workbench.rightDock.style.boxShadow = '';\n workbench.sceneFrame.style.left = `${leftWidth}px`;\n workbench.sceneFrame.style.right = `${rightWidth}px`;\n workbench.sceneFrame.style.bottom = `${bottomEdge}px`;\n if (bottomVisible) {\n workbench.bottomDock.style.right = `${rightWidth}px`;\n workbench.bottomResizer.style.right = `${rightWidth}px`;\n }\n workbench.leftToggle.style.display = 'none';\n workbench.rightToggle.style.display = 'none';\n workbench.leftResizer.style.bottom = `${bottomEdge}px`;\n workbench.rightResizer.style.bottom = '0';\n }\n\n function readLocalEditorWorkbenchViewport(docRef: Document): { width: number; height: number } {\n const win = docRef.defaultView;\n return {\n width: Math.max(320, win?.innerWidth ?? docRef.documentElement.clientWidth ?? 1280),\n height: Math.max(320, win?.innerHeight ?? docRef.documentElement.clientHeight ?? 720),\n };\n }\n\n function renderPrefabStagePropertiesPanel(stage: LocalEditorBrowserPrefabStageState<TDocument>): void {\n inspectorPanel.dataset.editorPanelId = 'prefab-properties';\n inspectorPanel.style.display = '';\n renderingPanel.style.display = 'none';\n if (stage.inspectorObject) {\n LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, {\n ...currentState!,\n selectedIds: stage.inspectorObject.targetIds,\n activeId: stage.inspectorObject.activeId,\n selectionSummary: {\n count: stage.inspectorObject.targetIds.length,\n activeId: stage.inspectorObject.activeId,\n },\n inspectorObject: stage.inspectorObject,\n inspectorMultiObject: null,\n }, inspectorFilter, {\n ...options.inspector,\n title: 'Prefab Properties',\n emptyText: 'Select an item in Prefab Explorer.',\n summaryTitle: 'Prefab',\n lockedVectorGroups: lockedInspectorVectorGroups,\n });\n return;\n }\n LocalEditorShared.clearElement(inspectorPanel);\n inspectorPanel.appendChild(createPrefabStagePanelHeader('Prefab Properties', 'inspector'));\n const selectedItem = findLocalEditorPrefabStageStructureItem(stage, stage.selectedItemId);\n const grid = doc.createElement('div');\n grid.style.cssText = 'display:flex;flex-direction:column;gap:7px;min-width:0';\n appendPrefabStageReadonlyRow(grid, '名称', stage.label);\n appendPrefabStageReadonlyRow(grid, 'Prefab ID', stage.assetId);\n appendPrefabStageReadonlyRow(grid, 'Source', stage.sourceAssetId ?? '未设置');\n appendPrefabStageReadonlyRow(grid, 'Preview', stage.previewNodeId ?? '未生成');\n appendPrefabStageReadonlyRow(grid, 'Selected', selectedItem?.label ?? stage.selectedItemId ?? 'Prefab Root');\n appendPrefabStageReadonlyRow(grid, 'Mode', stage.readonly ? '只读' : '可编辑');\n appendPrefabStageSelectedItemDetails(grid, selectedItem);\n inspectorPanel.appendChild(grid);\n }\n\n function appendPrefabStageSelectedItemDetails(\n container: HTMLElement,\n item: LocalEditorBrowserPrefabStageStructureItem | null,\n ): void {\n if (!item) return;\n appendPrefabStageReadonlyRow(container, 'Kind', item.kind);\n if (item.sourceAssetId) appendPrefabStageReadonlyRow(container, 'Source Asset', item.sourceAssetId);\n if (item.slotId) appendPrefabStageReadonlyRow(container, 'Slot ID', item.slotId);\n if (item.ownerNodePath) appendPrefabStageReadonlyRow(container, 'Owner Path', item.ownerNodePath);\n if (item.meshIndex != null) appendPrefabStageReadonlyRow(container, 'Mesh Index', String(item.meshIndex));\n if (item.primitiveIndex != null) appendPrefabStageReadonlyRow(container, 'Primitive', String(item.primitiveIndex));\n if (item.sourceMaterialIndex != null) {\n appendPrefabStageReadonlyRow(container, 'Material Index', String(item.sourceMaterialIndex));\n }\n if (item.sourceMaterialIndices?.length) {\n appendPrefabStageReadonlyRow(container, 'Material Indices', item.sourceMaterialIndices.join(', '));\n }\n if (item.sourceMaterialName) appendPrefabStageReadonlyRow(container, 'Material Name', item.sourceMaterialName);\n if (item.sourceMaterialNames?.length) {\n appendPrefabStageReadonlyRow(container, 'Material Names', item.sourceMaterialNames.join(', '));\n }\n if (item.meta) appendPrefabStageReadonlyRow(container, 'Meta', item.meta);\n }\n\n function resolvePrefabStageAssetFromState(\n stage: LocalEditorBrowserPrefabStageState,\n ): LocalEditorBrowserUiAssetItem | null {\n return currentState?.assets.find(asset => (\n asset.id === stage.browserAssetId\n || asset.id === `prefab:${stage.assetId}`\n || asset.assetId === stage.assetId\n || asset.prefab?.id === stage.assetId\n )) ?? null;\n }\n\n function createPrefabStagePanelHeader(title: string, icon: LocalEditorIconName): HTMLDivElement {\n const header = doc.createElement('div');\n header.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:8px',\n 'min-height:30px',\n 'margin:-8px -8px 8px',\n 'padding:0 8px',\n 'border-bottom:1px solid var(--fps-editor-divider)',\n 'background:var(--fps-editor-chrome-dark)',\n ].join(';');\n header.appendChild(createLocalEditorIcon(doc, icon, { size: 14 }));\n const label = doc.createElement('h2');\n label.textContent = title;\n label.style.cssText = [\n 'min-width:0',\n 'margin:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-size:13px',\n 'font-weight:800',\n 'color:var(--fps-editor-text-strong)',\n ].join(';');\n header.appendChild(label);\n return header;\n }\n\n function appendPrefabStageReadonlyRow(container: HTMLElement, label: string, value: string): void {\n const row = doc.createElement('div');\n row.style.cssText = [\n 'display:grid',\n 'grid-template-columns:92px minmax(0,1fr)',\n 'gap:8px',\n 'align-items:center',\n 'min-height:26px',\n ].join(';');\n const rowLabel = doc.createElement('div');\n rowLabel.textContent = label;\n rowLabel.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-muted)',\n 'font-size:11px',\n 'font-weight:800',\n ].join(';');\n const output = doc.createElement('div');\n output.textContent = value;\n output.title = value;\n output.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'padding:4px 7px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:12px',\n 'font-weight:800',\n ].join(';');\n row.appendChild(rowLabel);\n row.appendChild(output);\n container.appendChild(row);\n }\n\n const renderPreviewState = (state: LocalEditorBrowserUiState<TDocument>): void => {\n const inEditor = state.mode === 'editor';\n const inPrefabStage = !!state.prefabStage;\n const disabled = state.busy;\n const transformTool = state.transformTool ?? null;\n const transformOperations = state.transformOperations ?? {\n settings: DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS,\n selectedCount: state.selectedIds.length,\n activeId: state.activeId,\n canAlign: false,\n canDistribute: false,\n };\n const hasMeasurement = !!(\n state.viewportMeasurement?.start\n || state.viewportMeasurement?.end\n || state.viewportMeasurement?.preview\n );\n const nextClearMeasurementDisplay = hasMeasurement ? 'inline-flex' : 'none';\n const clearMeasurementDisplayChanged = clearMeasurementButton.style.display !== nextClearMeasurementDisplay;\n clearMeasurementButton.style.display = nextClearMeasurementDisplay;\n clearMeasurementButton.disabled = disabled || !hasMeasurement;\n const editorStatusText = [\n state.status,\n state.session?.dirty ? '有未保存更改' : '',\n LocalEditorShared.formatAuthoringSourceLabel(state.session?.source),\n state.summary,\n ].filter(Boolean).join(' | ');\n const transformStatusText = transformTool?.dragPhase === 'dragging'\n ? `正在拖拽 ${transformTool.draggingNodeId ?? '选择对象'}`\n : LocalEditorShared.toTransformToolStatusLabel(\n transformTool?.activeTool ?? 'select',\n transformTool?.activeSpace ?? 'world',\n );\n const statusViewModel = createLocalEditorStatusCenterViewModel(state);\n const statusDiagnostics = statusViewModel.diagnostics;\n const resolvedDiagnosticTone = statusViewModel.severity;\n const diagnosticTone = resolvedDiagnosticTone === 'default' ? state.statusTone : resolvedDiagnosticTone;\n const statusToneColor = diagnosticTone === 'error'\n ? 'var(--fps-editor-danger-strong)'\n : diagnosticTone === 'warning'\n ? 'var(--fps-editor-warn)'\n : diagnosticTone === 'success'\n ? 'var(--fps-editor-success)'\n : 'var(--fps-editor-muted)';\n setToolbarButtonIcon(doc, editorStatusButton, statusViewModel.icon);\n setToolbarButtonTooltip(editorStatusButton, [\n `编辑器状态:${editorStatusText}`,\n state.statusDetails && state.statusDetails !== state.status ? state.statusDetails : '',\n transformStatusText,\n LocalEditorShared.toTransformOperationStatusLabel(transformOperations.settings),\n statusDiagnostics.length > 0 ? `${statusDiagnostics.length} 条诊断,点击查看并复制` : '',\n ].filter(Boolean).join(' · '));\n editorStatusButton.style.color = statusToneColor;\n editorStatusButton.style.borderColor = diagnosticTone == null || diagnosticTone === 'default'\n ? 'var(--fps-editor-border)'\n : statusToneColor;\n editorStatusButton.dataset.editorStatusSeverity = diagnosticTone ?? 'default';\n if (editorStatusCenterOpen) renderEditorStatusCenter(state);\n const agentBridgeStatusColor = resolveAgentBridgeStatusToneColor(state.agentBridge);\n agentBridgeStatusButton.style.display = inEditor ? 'inline-flex' : 'none';\n agentBridgeStatusButton.style.color = agentBridgeStatusColor;\n agentBridgeStatusButton.style.borderColor = state.agentBridge?.status === 'disabled'\n ? 'var(--fps-editor-border)'\n : agentBridgeStatusColor;\n setToolbarButtonTooltip(agentBridgeStatusButton, createAgentBridgeStatusTooltip(state.agentBridge));\n renderCoordinateAxesOverlay(coordinateAxesOverlay, inEditor ? state.coordinateAxes ?? null : null);\n renderSceneFrameRateOverlay(sceneFrameRateOverlay, inEditor && !inPrefabStage ? state.sceneFrameStats ?? null : null);\n renderPerformanceMonitorOverlay(\n performanceMonitorOverlay,\n inEditor && !inPrefabStage ? state.performanceStats ?? null : null,\n inEditor && !inPrefabStage && performanceMonitorOpen,\n );\n const comparisonColumnVisible = shouldShowLocalEditorPrefabComparisonColumn({\n inPrefabStage: inEditor && inPrefabStage,\n userOpen: prefabComparisonPreviewOpen,\n sceneWidth: workbench.sceneFrame.clientWidth,\n });\n if (!comparisonColumnVisible) endPrefabComparisonPreviewDrag();\n prefabStagePreviewLayout.root.style.display = inEditor && inPrefabStage ? 'block' : 'none';\n prefabStagePreviewLayout.mainRegion.style.right = comparisonColumnVisible\n ? `${LOCAL_EDITOR_PREFAB_COMPARISON_COLUMN_WIDTH_PX}px`\n : '0';\n prefabStagePreviewLayout.comparisonColumn.style.display = comparisonColumnVisible ? 'flex' : 'none';\n renderPrefabImportStatsOverlay(prefabImportStatsOverlay, inEditor && inPrefabStage ? state.prefabStage ?? null : null);\n renderPrefabComparisonPreviewOverlay(\n prefabComparisonPreviewOverlay,\n inEditor && inPrefabStage && comparisonColumnVisible ? state.prefabStage ?? null : null,\n );\n renderSpatialOverlay(spatialOverlay, inEditor ? state.viewportSpatialOverlay ?? null : null);\n renderMeasurementOverlay(measurementOverlay, inEditor ? state.viewportMeasurement ?? null : null);\n const boxSelection = state.boxSelection;\n if (inEditor && boxSelection?.active) {\n boxSelectionOverlay.style.display = '';\n boxSelectionOverlay.style.left = `${boxSelection.left}px`;\n boxSelectionOverlay.style.top = `${boxSelection.top}px`;\n boxSelectionOverlay.style.width = `${boxSelection.width}px`;\n boxSelectionOverlay.style.height = `${boxSelection.height}px`;\n } else {\n boxSelectionOverlay.style.display = 'none';\n }\n if (clearMeasurementDisplayChanged) scheduleToolbarOverflowLayout();\n };\n\n const updatePreview = (preview: LocalEditorBrowserUiPreviewState<TDocument>): void => {\n if (!currentState) return;\n const shouldRenderInspectorPreview = 'inspectorObject' in preview || 'inspectorMultiObject' in preview;\n currentState = {\n ...currentState,\n ...preview,\n };\n renderPreviewState(currentState);\n if (shouldRenderInspectorPreview && panelRegistry.getRightDockTab() === 'inspector') {\n const rightDockScrollSnapshot = captureLocalEditorRightDockScrollSnapshot(\n currentState,\n 'inspector',\n inspectorFilter,\n inspectorPanel,\n renderingPanel,\n markersPanel,\n pluginsPanel,\n );\n LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {\n ...options.inspector,\n lockedVectorGroups: lockedInspectorVectorGroups,\n });\n restoreLocalEditorRightDockScrollSnapshot(\n rightDockScrollSnapshot,\n currentState,\n 'inspector',\n inspectorFilter,\n inspectorPanel,\n renderingPanel,\n markersPanel,\n pluginsPanel,\n );\n }\n };\n\n const render = (state: LocalEditorBrowserUiState<TDocument>): void => {\n const previousState = currentState;\n const previousRightTab = panelRegistry.getRightDockTab();\n const rightDockScrollSnapshot = captureLocalEditorRightDockScrollSnapshot(\n previousState,\n previousRightTab,\n inspectorFilter,\n inspectorPanel,\n renderingPanel,\n markersPanel,\n pluginsPanel,\n );\n currentState = state;\n const focusSnapshot = captureLocalEditorEditableFocus(doc);\n const inEditor = state.mode === 'editor';\n const disabled = state.busy;\n const prefabStage = inEditor ? state.prefabStage ?? null : null;\n const inPrefabStage = !!prefabStage;\n const previousInPrefabStage = previousState?.mode === 'editor' && !!previousState.prefabStage;\n if (!inEditor || disabled) contextMenu.close();\n hostChrome.style.display = !inEditor && localTestActionsEnabled ? 'flex' : 'none';\n enterEditorButton.disabled = disabled;\n for (const button of [saveButton, saveAndRunButton, discardRunButton, undoButton, redoButton, sceneHelpButton, sceneCameraButton, performanceMonitorButton, gridToggleButton, prefabComparisonPreviewButton]) {\n button.style.display = 'inline-flex';\n button.disabled = disabled;\n }\n localTestGroup.style.display = isPreviewToolVisible('local-test') && localTestActionsEnabled ? 'flex' : 'none';\n localTestButton.disabled = !isPreviewToolEnabled('local-test') || !localTestActionsEnabled;\n if (!inEditor || !localTestActionsEnabled || localTestGroup.style.display === 'none') closeLocalTestMenu();\n if (!inEditor) {\n helpOpen = false;\n if (shouldCloseLocalEditorStatusCenter({ inEditor, open: editorStatusCenterOpen })) {\n closeEditorStatusCenter();\n }\n }\n if (shouldLocalEditorClosePerformanceMonitor({ inEditor, inPrefabStage, performanceMonitorOpen })) {\n setPerformanceMonitorOpen(false);\n }\n if (!inEditor || disabled) {\n assetPreviewOpen = false;\n previewedAsset = null;\n assetPreviewMode = 'preview';\n assetPickerOpen = false;\n assetPickerInput = null;\n assetPickerProperty = null;\n }\n syncInputModalOpen();\n const transformTool = state.transformTool ?? null;\n workbench.root.style.display = inEditor ? '' : 'none';\n workbench.root.dataset.editorPrefabStage = String(inPrefabStage);\n sceneTitle.textContent = createLocalEditorPrefabStageTitle(prefabStage);\n sceneToolOverlay.style.display = inEditor ? 'flex' : 'none';\n prefabStageBackButton.style.display = inPrefabStage ? 'inline-flex' : 'none';\n if (inPrefabStage && !previousInPrefabStage) {\n prefabStageMainWorkbenchLayoutSnapshot = workbenchLayoutController.getLayout();\n workbenchLayoutController.setBottomCollapsed(false);\n } else if (!inPrefabStage && previousInPrefabStage && prefabStageMainWorkbenchLayoutSnapshot) {\n workbenchLayoutController.setLayout(prefabStageMainWorkbenchLayoutSnapshot, true);\n prefabStageMainWorkbenchLayoutSnapshot = null;\n }\n workbench.leftToggle.style.display = '';\n workbench.rightToggle.style.display = '';\n workbench.bottomToggle.style.display = '';\n workbenchLayoutController.refresh();\n if (inPrefabStage) applyPrefabStageWorkbenchLayoutOverride();\n if (!inEditor) closeSnapSettingsPopover();\n if (!inEditor) closePlacementSettingsPopover();\n if (!inEditor) closeTransformActionPopover();\n if (!inEditor) closeOverlaySettingsPopover();\n if (!inEditor) closeStaticShadowBakePopover();\n const staticShadowBakeAction = findLocalEditorRenderingAction(state.renderingPanel, STATIC_SHADOW_BAKE_ACTION_ID);\n const staticShadowBakeVisible = isPreviewToolVisible('static-shadow-bake') && !!staticShadowBakeAction;\n staticShadowBakeGroup.style.display = staticShadowBakeVisible ? 'flex' : 'none';\n const staticShadowBakeSupport = getPreviewToolSupport('static-shadow-bake');\n const staticShadowBakeDisabled = !isPreviewToolEnabled('static-shadow-bake') || !staticShadowBakeAction || staticShadowBakeAction.action.disabled === true;\n staticShadowBakeButton.disabled = staticShadowBakeDisabled;\n staticShadowBakeButton.style.opacity = staticShadowBakeDisabled ? '0.62' : '1';\n staticShadowBakeButton.style.cursor = staticShadowBakeDisabled ? 'not-allowed' : 'pointer';\n const staticShadowBakeIcon = staticShadowBakeAction?.action.icon;\n setToolbarButtonIcon(\n doc,\n staticShadowBakeButton,\n isLocalEditorIconName(staticShadowBakeIcon) ? staticShadowBakeIcon : 'save',\n );\n setToolbarButtonTooltip(\n staticShadowBakeButton,\n staticShadowBakeSupport.support === 'enabled'\n ? staticShadowBakeAction?.action.tooltip ?? staticShadowBakeAction?.action.label ?? '烘焙静态阴影'\n : staticShadowBakeSupport.reason,\n );\n LocalEditorShared.applyButtonActiveState(staticShadowBakeButton, !!staticShadowBakeAction?.system?.progress);\n renderStaticShadowBakePopover(state);\n const sceneCameraPreview = state.sceneCameraPreview ?? { enabled: false, available: false };\n cameraPreviewGroup.style.display = isPreviewToolVisible('scene-camera-preview') ? 'flex' : 'none';\n const sceneCameraPreviewSupport = getPreviewToolSupport('scene-camera-preview');\n sceneCameraButton.disabled = !isPreviewToolEnabled('scene-camera-preview') || !sceneCameraPreview.available;\n const sceneCameraTooltip = sceneCameraPreview.available\n ? '从 Main Camera 查看当前场景'\n : '当前场景没有可预览的 Main Camera';\n setToolbarButtonTooltip(sceneCameraButton, sceneCameraPreviewSupport.support === 'enabled'\n ? sceneCameraTooltip\n : sceneCameraPreviewSupport.reason);\n LocalEditorShared.applyButtonActiveState(sceneCameraButton, sceneCameraPreview.enabled);\n const viewportTools = state.viewportTools ?? null;\n const viewportControlsDisabled = !isPreviewToolEnabled('viewport-camera') || sceneCameraPreview.enabled;\n const viewportControlsTooltip = sceneCameraPreview.enabled\n ? '当前为 Main Camera 预览,请关闭后再使用视口工具'\n : '';\n const viewportProjectionTooltip = sceneCameraPreview.enabled\n ? '当前为 Main Camera 预览,投影由 Main Camera 决定;关闭预览后可切换编辑视口投影'\n : '';\n viewportToolsGroup.style.display = isPreviewToolVisible('viewport-camera') ? 'flex' : 'none';\n for (const [preset, button] of viewportPresetButtons) {\n button.disabled = viewportControlsDisabled;\n setToolbarButtonTooltip(button, viewportControlsTooltip || VIEW_PRESET_TOOLTIPS[preset]);\n LocalEditorShared.applyButtonActiveState(button, viewportTools?.viewPreset === preset);\n }\n projectionToggleButton.disabled = viewportControlsDisabled;\n const projectionMode = viewportTools?.projectionMode ?? 'perspective';\n const nextProjectionMode: LocalEditorBrowserViewportProjectionMode = projectionMode === 'orthographic' ? 'perspective' : 'orthographic';\n setToolbarButtonIcon(doc, projectionToggleButton, projectionMode === 'orthographic' ? 'projection-ortho' : 'projection-perspective');\n setToolbarButtonTooltip(\n projectionToggleButton,\n viewportProjectionTooltip || `投影模式:${VIEWPORT_PROJECTION_LABELS[projectionMode]}。切换为${VIEWPORT_PROJECTION_LABELS[nextProjectionMode]}`,\n );\n LocalEditorShared.applyButtonActiveState(projectionToggleButton, projectionMode === 'orthographic');\n const markersVisible = viewportTools?.markersVisible ?? true;\n markerVisibilityButton.disabled = disabled;\n setToolbarButtonTooltip(markerVisibilityButton, markersVisible ? '隐藏标记与关系线' : '显示标记与关系线');\n LocalEditorShared.applyButtonActiveState(markerVisibilityButton, markersVisible);\n overlaySettingsButton.disabled = !isPreviewToolEnabled('spatial-overlay');\n setToolbarButtonTooltip(overlaySettingsButton, '视口信息层设置');\n LocalEditorShared.applyButtonActiveState(overlaySettingsButton, overlaySettingsOpen);\n const overlaySettings = viewportTools?.overlay;\n for (const [key, input] of overlayInputs) {\n input.disabled = !isPreviewToolEnabled('spatial-overlay');\n input.checked = overlaySettings?.[key] ?? false;\n }\n measureButton.disabled = viewportControlsDisabled;\n setToolbarButtonTooltip(\n measureButton,\n viewportControlsTooltip || '测量 XZ 地面距离',\n );\n LocalEditorShared.applyButtonActiveState(measureButton, viewportTools?.activeUtilityTool === 'measure-distance');\n const hasMeasurement = !!(\n state.viewportMeasurement?.start\n || state.viewportMeasurement?.end\n || state.viewportMeasurement?.preview\n );\n clearMeasurementButton.style.display = hasMeasurement ? 'inline-flex' : 'none';\n clearMeasurementButton.disabled = disabled || !hasMeasurement;\n setToolbarButtonTooltip(clearMeasurementButton, '清除测量结果');\n LocalEditorShared.applyButtonActiveState(clearMeasurementButton, false);\n if (!inEditor || disabled || viewportToolsGroup.style.display === 'none') closeOverlaySettingsPopover();\n const gridState = state.grid ?? { visible: false, available: false };\n performanceMonitorButton.style.display = isPreviewToolVisible('performance-monitor') ? 'inline-flex' : 'none';\n performanceMonitorButton.disabled = !isPreviewToolEnabled('performance-monitor');\n const performanceMonitorSupport = getPreviewToolSupport('performance-monitor');\n setToolbarButtonTooltip(performanceMonitorButton, performanceMonitorSupport.support === 'enabled'\n ? performanceMonitorOpen ? '隐藏性能监控' : '显示性能监控'\n : performanceMonitorSupport.reason);\n LocalEditorShared.applyButtonActiveState(performanceMonitorButton, performanceMonitorOpen);\n prefabComparisonPreviewButton.style.display = isPreviewToolVisible('prefab-comparison') ? 'inline-flex' : 'none';\n prefabComparisonPreviewButton.disabled = !isPreviewToolEnabled('prefab-comparison');\n const prefabComparisonSupport = getPreviewToolSupport('prefab-comparison');\n setToolbarButtonTooltip(prefabComparisonPreviewButton, prefabComparisonSupport.support === 'enabled'\n ? prefabComparisonPreviewOpen\n ? '隐藏对比预览 (Shift+P)'\n : '显示对比预览 (Shift+P)'\n : prefabComparisonSupport.reason);\n LocalEditorShared.applyButtonActiveState(prefabComparisonPreviewButton, inPrefabStage && prefabComparisonPreviewOpen);\n gridToggleButton.disabled = disabled || !gridState.available;\n setToolbarButtonTooltip(gridToggleButton, gridState.visible ? '隐藏 Scene View 网格' : '显示 Scene View 网格');\n LocalEditorShared.applyButtonActiveState(gridToggleButton, gridState.visible);\n toolGroup.style.display = isPreviewToolVisible('select') ? 'flex' : 'none';\n spaceGroup.style.display = isPreviewToolVisible('transform-space') ? 'flex' : 'none';\n for (const [tool, button] of toolButtons) {\n button.disabled = !isPreviewToolEnabled(tool);\n LocalEditorShared.applyButtonActiveState(button, transformTool?.activeTool === tool);\n }\n for (const [space, button] of Object.entries(spaceButtons) as Array<[LocalEditorBrowserTransformSpace, HTMLButtonElement]>) {\n button.disabled = !isPreviewToolEnabled('transform-space');\n LocalEditorShared.applyButtonActiveState(button, transformTool?.activeSpace === space);\n }\n sceneHelpButton.disabled = disabled;\n const transformOperations = state.transformOperations ?? {\n settings: DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS,\n selectedCount: state.selectedIds.length,\n activeId: state.activeId,\n canAlign: false,\n canDistribute: false,\n };\n const operationSettings = transformOperations.settings;\n snapGroup.style.display = isPreviewToolVisible('snap') ? 'flex' : 'none';\n snapButton.disabled = !isPreviewToolEnabled('snap');\n snapEnabledInput.disabled = !isPreviewToolEnabled('snap');\n snapEnabledInput.checked = operationSettings.snap.enabled;\n LocalEditorShared.applyButtonActiveState(snapButton, operationSettings.snap.enabled || snapSettingsOpen);\n setToolbarButtonTooltip(\n snapButton,\n `吸附设置 · 位移 ${formatSnapStepInputValue(operationSettings.snap, 'move')} · 旋转 ${formatSnapStepInputValue(operationSettings.snap, 'rotate')}° · 缩放 ${formatSnapStepInputValue(operationSettings.snap, 'scale')}`,\n );\n for (const [kind, input] of snapStepInputs) {\n input.disabled = !isPreviewToolEnabled('snap');\n if (doc.activeElement !== input) input.value = formatSnapStepInputValue(operationSettings.snap, kind);\n }\n if (!inEditor || disabled || snapGroup.style.display === 'none') closeSnapSettingsPopover();\n placementGroup.style.display = isPreviewToolVisible('placement') ? 'flex' : 'none';\n placementButton.disabled = !isPreviewToolEnabled('placement');\n setToolbarButtonIcon(doc, placementButton, PLACEMENT_MODE_ICONS[operationSettings.placementMode]);\n setToolbarButtonTooltip(placementButton, `放置模式 · ${PLACEMENT_MODE_DESCRIPTIONS[operationSettings.placementMode]}`);\n LocalEditorShared.applyButtonActiveState(placementButton, operationSettings.placementMode !== 'off' || placementSettingsOpen);\n for (const [mode, button] of Object.entries(placementButtons) as Array<[LocalEditorBrowserPlacementMode, HTMLButtonElement]>) {\n button.disabled = !isPreviewToolEnabled('placement');\n LocalEditorShared.applyButtonActiveState(button, operationSettings.placementMode === mode);\n }\n if (!inEditor || disabled || placementGroup.style.display === 'none') closePlacementSettingsPopover();\n actionGroup.style.display = isPreviewToolVisible('transform-actions') ? 'flex' : 'none';\n const hasTransformAction = transformOperations.canAlign || transformOperations.canDistribute;\n transformActionButton.disabled = !isPreviewToolEnabled('transform-actions') || !hasTransformAction;\n setToolbarButtonTooltip(\n transformActionButton,\n hasTransformAction ? '对齐与分布' : '选择至少 2 个对象后可用',\n );\n LocalEditorShared.applyButtonActiveState(transformActionButton, transformActionOpen);\n for (const [action, button] of transformActionButtons) {\n const enabled = isTransformActionEnabled(action, transformOperations);\n button.disabled = !isPreviewToolEnabled('transform-actions') || !enabled;\n button.style.opacity = button.disabled ? '0.45' : '1';\n button.style.cursor = button.disabled ? 'not-allowed' : 'pointer';\n }\n if (!inEditor || disabled || !hasTransformAction || actionGroup.style.display === 'none') closeTransformActionPopover();\n undoButton.disabled = disabled || !state.session?.canUndo;\n redoButton.disabled = disabled || !state.session?.canRedo;\n LocalEditorShared.applyButtonActiveState(sceneHelpButton, inEditor && helpOpen);\n shortcutHelpPanel.style.display = inEditor && helpOpen ? 'flex' : 'none';\n renderAssetPreviewModal();\n renderAssetPickerModal();\n dirtyBadge.style.display = inEditor && state.session?.dirty ? 'inline-flex' : 'none';\n renderPreviewState(state);\n\n scheduleToolbarOverflowLayout();\n if (!inEditor) return;\n const activeRightTab = panelRegistry.getRightDockTab();\n if (inPrefabStage && prefabStage) {\n const rightDockVisibility = resolveLocalEditorRightDockVisibility({\n inPrefabStage: true,\n activeRightTab,\n });\n const activeBottomTab = panelRegistry.getBottomDockTab();\n const assetBrowserTabChanged = assetBrowserTab !== lastRenderedAssetBrowserTab;\n const bottomDockTabChanged = activeBottomTab !== lastRenderedBottomDockTab;\n const selectedAssetChanged = state.selectedAssetId !== lastRenderedSelectedAssetId;\n const assetBrowserScrollSnapshot = activeBottomTab === 'assets'\n ? assetBrowserViewportReveal.captureScrollSnapshot()\n : { scrollTop: null };\n leftDockTabs.style.display = 'none';\n rightDockTabs.style.display = rightDockVisibility.tabsDisplay;\n inspectorPanel.style.display = rightDockVisibility.inspectorDisplay;\n renderingPanel.style.display = rightDockVisibility.renderingDisplay;\n markersPanel.style.display = rightDockVisibility.markersDisplay;\n pluginsPanel.style.display = rightDockVisibility.pluginsDisplay;\n hierarchyController.render(state);\n renderPrefabStagePropertiesPanel(prefabStage);\n LocalEditorPanels.renderWorkbenchBottomDockPanel(\n doc,\n assetPanel,\n state,\n activeBottomTab,\n panelRegistry.getPanels('bottom'),\n assetBrowserTab,\n );\n if (activeBottomTab === 'assets' && !assetBrowserTabChanged && !bottomDockTabChanged) {\n assetBrowserViewportReveal.restoreScrollSnapshot(assetBrowserScrollSnapshot);\n }\n const suppressAssetScroll = state.selectedAssetId\n ? assetBrowserViewportReveal.consumeRevealSuppression(state.selectedAssetId, { clearWhenDifferent: selectedAssetChanged })\n : false;\n if (activeBottomTab === 'assets' && selectedAssetChanged && state.selectedAssetId && !suppressAssetScroll) {\n revealSelectedAssetBrowserItem(state.selectedAssetId);\n }\n lastRenderedAssetBrowserTab = assetBrowserTab;\n lastRenderedBottomDockTab = activeBottomTab;\n lastRenderedSelectedAssetId = state.selectedAssetId ?? null;\n restoreLocalEditorEditableFocus(doc, focusSnapshot);\n return;\n }\n leftDockTabs.style.display = '';\n const hierarchyDescriptor = panelRegistry.getActivePanel('left');\n const rightDescriptor = panelRegistry.getActivePanel('right');\n const rightDockVisibility = resolveLocalEditorRightDockVisibility({\n inPrefabStage: false,\n activeRightTab,\n });\n rightDockTabs.style.display = rightDockVisibility.tabsDisplay;\n const activeBottomTab = panelRegistry.getBottomDockTab();\n const assetBrowserTabChanged = assetBrowserTab !== lastRenderedAssetBrowserTab;\n const bottomDockTabChanged = activeBottomTab !== lastRenderedBottomDockTab;\n const selectedAssetChanged = state.selectedAssetId !== lastRenderedSelectedAssetId;\n const assetBrowserScrollSnapshot = activeBottomTab === 'assets'\n ? assetBrowserViewportReveal.captureScrollSnapshot()\n : { scrollTop: null };\n hierarchyPanel.dataset.editorPanelId = hierarchyDescriptor?.id ?? 'hierarchy';\n inspectorPanel.dataset.editorPanelId = activeRightTab === 'inspector' ? rightDescriptor?.id ?? 'inspector' : 'inspector';\n renderingPanel.dataset.editorPanelId = activeRightTab === 'rendering' ? rightDescriptor?.id ?? 'rendering' : 'rendering';\n markersPanel.dataset.editorPanelId = activeRightTab === 'markers' ? rightDescriptor?.id ?? 'markers' : 'markers';\n pluginsPanel.dataset.editorPanelId = activeRightTab === 'plugins' ? rightDescriptor?.id ?? 'plugins' : 'plugins';\n inspectorPanel.style.display = rightDockVisibility.inspectorDisplay;\n renderingPanel.style.display = rightDockVisibility.renderingDisplay;\n markersPanel.style.display = rightDockVisibility.markersDisplay;\n pluginsPanel.style.display = rightDockVisibility.pluginsDisplay;\n LocalEditorPanels.renderWorkbenchLeftDockTabs(\n doc,\n leftDockTabs,\n 'hierarchy',\n panelRegistry.getPanels('left'),\n );\n hierarchyController.render(state);\n LocalEditorPanels.renderWorkbenchBottomDockPanel(\n doc,\n assetPanel,\n state,\n activeBottomTab,\n panelRegistry.getPanels('bottom'),\n assetBrowserTab,\n );\n if (activeBottomTab === 'assets' && !assetBrowserTabChanged && !bottomDockTabChanged) {\n assetBrowserViewportReveal.restoreScrollSnapshot(assetBrowserScrollSnapshot);\n }\n const suppressAssetScroll = state.selectedAssetId\n ? assetBrowserViewportReveal.consumeRevealSuppression(state.selectedAssetId, { clearWhenDifferent: selectedAssetChanged })\n : false;\n if (activeBottomTab === 'assets' && selectedAssetChanged && state.selectedAssetId && !suppressAssetScroll) {\n revealSelectedAssetBrowserItem(state.selectedAssetId);\n }\n lastRenderedAssetBrowserTab = assetBrowserTab;\n lastRenderedBottomDockTab = activeBottomTab;\n lastRenderedSelectedAssetId = state.selectedAssetId;\n LocalEditorPanels.renderWorkbenchRightDockTabs(doc, rightDockTabs, activeRightTab, panelRegistry.getPanels('right'));\n if (activeRightTab === 'inspector') {\n LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, state, inspectorFilter, {\n ...options.inspector,\n lockedVectorGroups: lockedInspectorVectorGroups,\n });\n } else if (activeRightTab === 'rendering') {\n LocalEditorPanels.renderRenderingPanel(doc, renderingPanel, state);\n } else if (activeRightTab === 'markers') {\n LocalEditorPanels.renderMarkerPanel(doc, markersPanel, state);\n } else {\n renderLocalEditorPluginPanel(doc, pluginsPanel, state.pluginPanel ?? null);\n }\n restoreLocalEditorEditableFocus(doc, focusSnapshot);\n restoreLocalEditorRightDockScrollSnapshot(\n rightDockScrollSnapshot,\n state,\n activeRightTab,\n inspectorFilter,\n inspectorPanel,\n renderingPanel,\n markersPanel,\n pluginsPanel,\n );\n };\n\n const completedCleanup = new Set<string>();\n let uiDisposed = false;\n\n return {\n update(state) {\n render(state);\n },\n updatePreview,\n updateSceneFrameStats(stats) {\n if (currentState) currentState = { ...currentState, sceneFrameStats: stats };\n renderSceneFrameRateOverlay(\n sceneFrameRateOverlay,\n currentState?.mode === 'editor' && !currentState.prefabStage ? stats : null,\n );\n },\n updatePerformanceStats(stats) {\n if (currentState) currentState = { ...currentState, performanceStats: stats };\n renderPerformanceMonitorOverlay(\n performanceMonitorOverlay,\n currentState?.mode === 'editor' && !currentState.prefabStage ? stats : null,\n currentState?.mode === 'editor' && !currentState.prefabStage && performanceMonitorOpen,\n );\n },\n getPrefabComparisonPreviewSurfaces() {\n return readPrefabComparisonPreviewSurfaces(prefabComparisonPreviewOverlay);\n },\n alert(input) {\n return modalDialog.alert(input);\n },\n confirm(input) {\n return modalDialog.confirm(input);\n },\n setTheme(theme) {\n setActiveTheme(theme);\n },\n getTheme() {\n return activeTheme;\n },\n dispose() {\n if (uiDisposed) return;\n const errors: unknown[] = [];\n const run = (key: string, operation: () => void): void => {\n if (completedCleanup.has(key)) return;\n try {\n operation();\n completedCleanup.add(key);\n } catch (error) {\n errors.push(error);\n }\n };\n\n run('toolbar-overflow-frame', () => {\n if (toolbarOverflowRaf != null) {\n doc.defaultView?.cancelAnimationFrame(toolbarOverflowRaf);\n toolbarOverflowRaf = null;\n }\n });\n run('toolbar-resize-observer', () => toolbarResizeObserver?.disconnect());\n run('toolbar-overflow-click', () => {\n toolbarOverflowButton.removeEventListener('click', onToolbarOverflowButtonClick);\n });\n run('local-test-click', () => localTestButton.removeEventListener('click', onLocalTestButtonClick));\n run('editor-status-click', () => editorStatusButton.removeEventListener('click', onEditorStatusButtonClick));\n run('editor-status-copy-all-click', () => editorStatusCopyAllButton.removeEventListener('click', onEditorStatusCopyAllClick));\n run('toolbar-overflow-pointerdown', () => {\n doc.removeEventListener('pointerdown', onToolbarOverflowPointerDown);\n });\n run('toolbar-overflow-resize', () => {\n doc.defaultView?.removeEventListener('resize', scheduleToolbarOverflowLayout);\n });\n run('host-chrome', () => hostChrome.remove());\n run('workbench-root', () => workbench.root.remove());\n run('local-test-menu', () => localTestMenu.remove());\n run('editor-status-center', () => editorStatusCenter.remove());\n run('toolbar-overflow-menu', () => toolbarOverflowMenu.remove());\n run('static-shadow-bake-popover', () => staticShadowBakePopover.remove());\n run('snap-settings-popover', () => snapSettingsPopover.remove());\n run('placement-settings-popover', () => placementSettingsPopover.remove());\n run('transform-action-popover', () => transformActionPopover.remove());\n run('overlay-settings-popover', () => overlaySettingsPopover.remove());\n run('spatial-overlay', () => spatialOverlay.root.remove());\n run('measurement-overlay', () => measurementOverlay.root.remove());\n run('scene-frame-rate-overlay', () => sceneFrameRateOverlay.root.remove());\n run('performance-monitor-overlay', () => performanceMonitorOverlay.root.remove());\n run('prefab-stage-preview-layout', () => prefabStagePreviewLayout.root.remove());\n run('box-selection-overlay', () => boxSelectionOverlay.remove());\n run('shortcut-help-panel', () => shortcutHelpPanel.remove());\n run('asset-preview-modal', () => assetPreviewModal.remove());\n run('asset-picker-modal', () => assetPickerModal.remove());\n run('hierarchy-controller', () => hierarchyController.dispose());\n run('workbench-layout-controller', () => workbenchLayoutController.dispose());\n run('tooltip-controller', () => tooltipController.dispose());\n run('context-menu', () => contextMenu.dispose());\n run('modal-dialog', () => modalDialog.dispose());\n run('input-router', () => inputRouter.dispose());\n run('document-keydown', () => doc.removeEventListener('keydown', onKeyDown));\n run('owned-root-children', () => construction.removeMountedRootChildren());\n\n if (errors.length > 0) {\n const error = new Error('Local Editor browser UI cleanup failed.') as Error & { errors: unknown[] };\n error.errors = errors;\n throw error;\n }\n uiDisposed = true;\n },\n };\n}\n"]}
1
+ {"version":3,"file":"local-editor-ui.js","sourceRoot":"","sources":["../src/local-editor-ui.ts"],"names":[],"mappings":"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","sourcesContent":["import * as LocalEditorPanels from './local-editor-ui-panels';\nimport { renderLocalEditorPluginPanel } from './local-editor-ui-plugin-panel';\nimport { createLocalEditorHierarchyController } from './local-editor-ui-hierarchy-controller';\nimport { createLocalEditorRootOwnership } from './local-editor-root-ownership';\nimport { createLocalEditorContextMenuController } from './local-editor-ui-context-menu';\nimport { createLocalEditorTooltipController } from './local-editor-ui-tooltip';\nimport { createLocalEditorViewportRevealController } from './local-editor-ui-dock-panel';\nimport { createLocalEditorModalDialog } from './local-editor-ui-modal-dialog';\nimport {\n parseLocalEditorBrowserInspectorGroupValueClipboardPayload,\n type LocalEditorBrowserInspectorGroupValueClipboardPayload,\n} from './local-editor-inspector-clipboard';\nimport { writeLocalEditorClipboardText } from './local-editor-clipboard';\nimport {\n LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES,\n resolveLocalEditorBrowserInspectorProportionalScaleValues,\n resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath,\n resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath,\n type LocalEditorBrowserInspectorVec3Value,\n} from './local-editor-inspector-groups';\nimport {\n DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS,\n} from '@fps-games/editor-core';\nimport type {\n HierarchyJsonValue,\n HierarchyOperationContext,\n HierarchyOperationDescriptor,\n} from '@fps-games/plugin-hierarchy';\nimport { createEditorUiLayerHost } from '@fps-games/editor-ui';\nexport {\n createLocalEditorViewportRevealController,\n isLocalEditorElementVisibleInViewport,\n resolveLocalEditorViewportRevealScrollTop,\n revealLocalEditorElementInViewport,\n} from './local-editor-ui-dock-panel';\nexport type {\n LocalEditorElementRevealOptions,\n LocalEditorViewportRevealController,\n LocalEditorViewportRevealControllerOptions,\n LocalEditorViewportRevealInput,\n LocalEditorViewportScrollSnapshot,\n} from './local-editor-ui-dock-panel';\nexport {\n canUseHierarchyProviderReparent,\n createHierarchyEnabledOperationRequest,\n createLocalEditorHierarchyController,\n createHierarchyOperationMenuItems,\n createHierarchyToolbarCreateMenuItems,\n matchesHierarchyOperationShortcut,\n} from './local-editor-ui-hierarchy-controller';\nexport {\n createLocalEditorHierarchyViewAdapter,\n type LocalEditorHierarchyViewAdapter,\n} from './local-editor-ui-hierarchy-view-adapter';\nexport {\n createLocalEditorContextMenuController,\n type LocalEditorContextMenuController,\n type LocalEditorContextMenuOpenInput,\n} from './local-editor-ui-context-menu';\nexport {\n createLocalEditorTooltipController,\n type LocalEditorTooltipController,\n} from './local-editor-ui-tooltip';\nexport type {\n LocalEditorHierarchyController,\n LocalEditorHierarchyControllerOptions,\n} from './local-editor-ui-hierarchy-controller';\nimport { createLocalEditorWorkbenchInputRouter } from './local-editor-ui-input-router';\nimport { createLocalEditorPanelRegistry } from './local-editor-ui-panel-registry';\nimport {\n createLocalEditorFormalSurfaceVisibilityController,\n disposeLocalEditorFormalSurfaces,\n shouldRenderLocalEditorInspectorPreview,\n} from './local-editor-ui-formal-surface-visibility';\nimport * as LocalEditorShared from './local-editor-ui-shared';\nimport { findLocalEditorRenderingAction } from './local-editor-rendering-actions';\nimport { createShortcutHelpPanel as createLocalEditorShortcutHelpPanel } from './local-editor-ui-shortcuts';\nimport {\n applyLocalEditorTheme,\n ensureLocalEditorTheme,\n LOCAL_EDITOR_THEME_CLASS,\n normalizeLocalEditorThemeName,\n type LocalEditorThemeName,\n} from './local-editor-ui-theme';\nimport {\n createDefaultLocalEditorWorkbenchLayout,\n createLocalEditorWorkbenchLayoutController,\n createLocalEditorWorkbench,\n createSceneHeaderToolbar,\n createWorkbenchPanelContent,\n type LocalEditorWorkbenchLayoutState,\n} from './local-editor-ui-workbench';\nimport { createLocalEditorIcon, isLocalEditorIconName, type LocalEditorIconName } from './local-editor-ui-icons';\nimport {\n createLocalEditorStatusCenterViewModel,\n resolveLocalEditorStatusDiagnosticLocatePlan,\n settleLocalEditorStatusDiagnosticRequest,\n resolveLocalEditorStatusDiagnostics,\n shouldCloseLocalEditorStatusCenter,\n} from './local-editor-ui-status-diagnostics';\nimport { formatLocalEditorStatusDiagnosticDetails } from './local-editor-ui-status-format';\nimport {\n resolveLocalEditorBrowserAssetKind,\n} from './local-editor-ui-asset-kind';\nimport {\n createLocalEditorPrefabStageTitle,\n findLocalEditorPrefabStageStructureItem,\n resolveLocalEditorRightDockVisibility,\n resolveLocalEditorPrefabStageWorkbenchLayout,\n resolveLocalEditorPreviewToolSupport,\n shouldLocalEditorClosePerformanceMonitor,\n type LocalEditorPreviewControlKey,\n} from './local-editor-ui-prefab-stage';\nimport type {\n LocalEditorAssetBrowserTab,\n LocalEditorBottomDockTab,\n LocalEditorBrowserAgentBridgeStatusKind,\n LocalEditorBrowserAssetActionInput,\n LocalEditorBrowserAssetPreview,\n LocalEditorBrowserCoordinateAxesState,\n LocalEditorBrowserInspectorAssetPickerOption,\n LocalEditorBrowserUiAssetItem,\n LocalEditorBrowserInspectorCommitMode,\n LocalEditorBrowserInspectorActionInput,\n LocalEditorBrowserInspectorControlKind,\n LocalEditorBrowserInspectorEditSource,\n LocalEditorBrowserInspectorPersistenceMode,\n LocalEditorBrowserInspectorProperty,\n LocalEditorBrowserPlacementMode,\n LocalEditorBrowserPerformanceStats,\n LocalEditorBrowserPrefabStageImportStats,\n LocalEditorBrowserPrefabStageState,\n LocalEditorBrowserPrefabStageStructureItem,\n LocalEditorBrowserRenderingActionInput,\n LocalEditorBrowserRenderingPropertyChangeInput,\n LocalEditorBrowserRenderingPropertyCommitMode,\n LocalEditorBrowserRenderingPropertyControlKind,\n LocalEditorBrowserRenderingPropertyEditSource,\n LocalEditorBrowserRenderingPropertyValueType,\n LocalEditorBrowserSceneFrameStats,\n LocalEditorBrowserMarkerRelationActionInput,\n LocalEditorBrowserMarkerTypeActionInput,\n LocalEditorBrowserTransformAction,\n LocalEditorBrowserTransformSpace,\n LocalEditorBrowserTransformSnapStepKind,\n LocalEditorBrowserTransformTool,\n LocalEditorBrowserUiCallbacks,\n LocalEditorBrowserViewportProjectionMode,\n LocalEditorBrowserViewportMeasurementState,\n LocalEditorBrowserViewportUtilityTool,\n LocalEditorBrowserViewportViewPreset,\n LocalEditorBrowserViewportSpatialOverlayState,\n LocalEditorBrowserUi,\n LocalEditorBrowserUiOptions,\n LocalEditorBrowserUiPreviewState,\n LocalEditorBrowserUiPropertyInput,\n LocalEditorBrowserUiState,\n LocalEditorBrowserStatusDiagnostic,\n LocalEditorContextMenuItem,\n LocalEditorRightDockTab,\n LocalEditorThemeController,\n} from './local-editor-ui-types';\n\nexport {\n applyLocalEditorBrowserInspectorControlBinding,\n createLocalEditorBrowserInspectorControlRegistry,\n formatLocalEditorBrowserInspectorNumberValue,\n formatLocalEditorBrowserInspectorValue,\n parseLocalEditorBrowserInspectorNumberValue,\n resolveLocalEditorBrowserInspectorSectionStatus,\n resolveLocalEditorBrowserInspectorControlRegistration,\n shouldShowPrefabModelAddAction,\n} from './local-editor-ui-panels';\nexport {\n createLocalEditorBrowserInspectorGroupValueClipboardPayload,\n createLocalEditorBrowserInspectorVectorCopyPayload,\n parseLocalEditorBrowserInspectorGroupValueClipboardPayload,\n} from './local-editor-inspector-clipboard';\nexport {\n LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES,\n isLocalEditorBrowserInspectorTransformVectorGroupPath,\n resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath,\n resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath,\n resolveLocalEditorBrowserInspectorVectorGroupPathFromProperties,\n} from './local-editor-inspector-groups';\nexport type {\n LocalEditorBrowserInspectorVec3Axis,\n LocalEditorBrowserInspectorVectorGroupAxis,\n} from './local-editor-inspector-groups';\nexport type {\n LocalEditorBrowserInspectorAccessMode,\n LocalEditorBrowserInspectorRenderOptions,\n LocalEditorBrowserInspectorSectionStatus,\n} from './local-editor-ui-panels';\n\nexport type {\n LocalEditorThemeName,\n} from './local-editor-ui-theme';\n\nexport {\n DEFAULT_LOCAL_EDITOR_THEME,\n LOCAL_EDITOR_THEME_CLASS,\n applyLocalEditorTheme,\n normalizeLocalEditorThemeName,\n} from './local-editor-ui-theme';\n\nexport {\n LOCAL_EDITOR_ICON_NAMES,\n createLocalEditorIcon,\n isLocalEditorIconName,\n resolveLocalEditorIconName,\n} from './local-editor-ui-icons';\n\nexport type {\n LocalEditorIconName,\n LocalEditorIconOptions,\n} from './local-editor-ui-icons';\n\nexport type {\n LocalEditorBrowserAgentBridgeStatus,\n LocalEditorBrowserAgentBridgeStatusKind,\n LocalEditorAssetBrowserTab,\n LocalEditorBrowserAssetActionInput,\n LocalEditorBottomDockTab,\n LocalEditorBrowserAuthoringSource,\n LocalEditorBrowserCoordinateAxis,\n LocalEditorBrowserCoordinateAxesState,\n LocalEditorBrowserCoordinateAxisId,\n LocalEditorBrowserHistoryEntry,\n LocalEditorBrowserHistoryView,\n LocalEditorBrowserInspectorCommitMode,\n LocalEditorBrowserInspectorConflictStrategy,\n LocalEditorBrowserInspectorControlBindingOptions,\n LocalEditorBrowserInspectorControlKind,\n LocalEditorBrowserInspectorControlRegistration,\n LocalEditorBrowserInspectorControlRenderContext,\n LocalEditorBrowserInspectorControlRenderer,\n LocalEditorBrowserInspectorControlMount,\n LocalEditorBrowserInspectorEffectMode,\n LocalEditorBrowserInspectorEditSource,\n LocalEditorBrowserInspectorObject,\n LocalEditorBrowserInspectorOptions,\n LocalEditorBrowserInspectorPersistenceMode,\n LocalEditorBrowserInspectorProperty,\n LocalEditorBrowserInspectorSection,\n LocalEditorBrowserPlacementMode,\n LocalEditorBrowserMarkerPanelState,\n LocalEditorBrowserMarkerRelationActionInput,\n LocalEditorBrowserMarkerRelationEndpointItem,\n LocalEditorBrowserMarkerRelationItem,\n LocalEditorBrowserMarkerRelationTypeItem,\n LocalEditorBrowserMarkerTypeActionInput,\n LocalEditorBrowserMarkerTypeItem,\n LocalEditorBrowserPerformanceStats,\n LocalEditorBrowserRenderingPanelState,\n LocalEditorBrowserRenderingActionInput,\n LocalEditorBrowserRenderingProperty,\n LocalEditorBrowserRenderingPropertyChangeInput,\n LocalEditorBrowserRenderingPropertyCommitMode,\n LocalEditorBrowserRenderingPropertyControlKind,\n LocalEditorBrowserRenderingPropertyEditSource,\n LocalEditorBrowserRenderingPropertyValueType,\n LocalEditorBrowserRenderingSection,\n LocalEditorBrowserRenderingSystem,\n LocalEditorBrowserRenderingSystemKind,\n LocalEditorBrowserPrimitiveShape,\n LocalEditorBrowserSceneFrameStats,\n LocalEditorBrowserSceneGraphActionResult,\n LocalEditorBrowserSerializedMultiObject,\n LocalEditorBrowserSerializedObject,\n LocalEditorBrowserSerializedProperty,\n LocalEditorBrowserSerializedValueType,\n LocalEditorBrowserTransformConstraint,\n LocalEditorBrowserTransformAction,\n LocalEditorBrowserTransformOperationSettings,\n LocalEditorBrowserTransformOperationState,\n LocalEditorBrowserTransformSnapStepKind,\n LocalEditorBrowserTransformSpace,\n LocalEditorBrowserTransformTool,\n LocalEditorBrowserTransformToolState,\n LocalEditorBrowserViewportSpatialOverlayState,\n LocalEditorBrowserPrefabAssetEditorData,\n LocalEditorBrowserPrefabStageImportStats,\n LocalEditorBrowserPrefabStageState,\n LocalEditorBrowserPrefabStageStructureItem,\n LocalEditorBrowserUi,\n LocalEditorBrowserUiAssetItem,\n LocalEditorBrowserUiCallbacks,\n LocalEditorBrowserUiOptions,\n LocalEditorBrowserUiPreviewState,\n LocalEditorBrowserUiPropertyInput,\n LocalEditorBrowserUiState,\n LocalEditorRightDockTab,\n LocalEditorThemeController,\n LocalEditorContextMenuItem,\n} from './local-editor-ui-types';\n\nconst PENDING_NUMERIC_PROPERTY_INPUT = Symbol('pending-numeric-property-input');\ntype LocalEditorPendingNumericPropertyInput = typeof PENDING_NUMERIC_PROPERTY_INPUT;\n\nexport interface LocalEditorEditableFocusSnapshot {\n selector: string;\n value: string | null;\n selectionStart: number | null;\n selectionEnd: number | null;\n selectionDirection: 'forward' | 'backward' | 'none' | null;\n}\n\nfunction readInspectorInputValue(\n input: HTMLInputElement | HTMLSelectElement,\n source: LocalEditorBrowserInspectorEditSource,\n): number | string | boolean | Record<string, unknown> | null | LocalEditorPendingNumericPropertyInput {\n const control = input.dataset.serializedControl;\n const valueType = input.dataset.serializedValueType;\n if ((control === 'vec2' || control === 'vec3') && input instanceof HTMLInputElement) {\n return readInspectorVectorInputValue(input, source) ?? PENDING_NUMERIC_PROPERTY_INPUT;\n }\n if (control === 'enum' && input instanceof HTMLSelectElement) {\n const option = input.selectedOptions.item(0);\n const encoded = option?.dataset.serializedOptionValue;\n if (encoded != null) {\n try {\n return JSON.parse(encoded) as string | number | boolean | Record<string, unknown> | null;\n } catch {\n return option?.value ?? input.value;\n }\n }\n }\n if (input instanceof HTMLInputElement && input.type === 'checkbox') return input.checked;\n if (control === 'boolean' || valueType === 'boolean') return input.value === 'true';\n if (control === 'number' || valueType === 'number') {\n const mode = source === 'input' && readInspectorCommitMode(input) === 'live' ? 'live' : 'final';\n return LocalEditorPanels.parseLocalEditorBrowserInspectorNumberValue(input.value, mode)\n ?? PENDING_NUMERIC_PROPERTY_INPUT;\n }\n if (control === 'color' && input instanceof HTMLInputElement && input.type === 'color') {\n const value = input.value.replace('#', '');\n const numeric = Number.parseInt(value, 16);\n if (!Number.isFinite(numeric)) return null;\n return {\n r: ((numeric >> 16) & 255) / 255,\n g: ((numeric >> 8) & 255) / 255,\n b: (numeric & 255) / 255,\n };\n }\n if (input.dataset.serializedJsonValue === 'true') {\n try {\n const parsed = JSON.parse(input.value) as unknown;\n return isInspectorSerializedInputValue(parsed) ? parsed : null;\n } catch {\n return null;\n }\n }\n return input.value;\n}\n\nfunction isInspectorSerializedInputValue(value: unknown): value is number | string | boolean | Record<string, unknown> | null {\n return value == null\n || typeof value === 'number'\n || typeof value === 'string'\n || typeof value === 'boolean'\n || (!!value && typeof value === 'object' && !Array.isArray(value));\n}\n\nconst TRANSFORM_SPACE_ICONS: Record<LocalEditorBrowserTransformSpace, LocalEditorIconName> = {\n world: 'world',\n local: 'local',\n};\n\nconst PLACEMENT_MODE_ICONS: Record<LocalEditorBrowserPlacementMode, LocalEditorIconName> = {\n off: 'place-off',\n ground: 'place-ground',\n surface: 'place-surface',\n};\n\nconst PLACEMENT_MODE_DESCRIPTIONS: Record<LocalEditorBrowserPlacementMode, string> = {\n off: '关闭放置模式',\n ground: '放置到 XZ 地面',\n surface: '放置到场景表面',\n};\n\nconst VIEW_PRESET_ICONS: Record<LocalEditorBrowserViewportViewPreset, LocalEditorIconName> = {\n perspective: 'view-perspective',\n top: 'view-top',\n bottom: 'view-top',\n front: 'view-front',\n back: 'view-front',\n left: 'view-right',\n right: 'view-right',\n iso: 'view-perspective',\n threeQuarterTop: 'view-perspective',\n};\n\nconst VIEW_PRESET_TOOLTIPS: Record<LocalEditorBrowserViewportViewPreset, string> = {\n perspective: '透视视图',\n top: '顶视图 · 自动切换正交',\n bottom: '底视图 · 自动切换正交',\n front: '前视图 · 自动切换正交',\n back: '后视图 · 自动切换正交',\n left: '左视图 · 自动切换正交',\n right: '右视图 · 自动切换正交',\n iso: '等距视图 · 自动切换正交',\n threeQuarterTop: '斜 45° 俯视图',\n};\n\nconst VIEWPORT_OVERLAY_TOGGLE_LABELS = {\n bounds: '包围盒',\n dimensions: '尺寸摘要',\n edgeLengths: '边长标注',\n anchor: '锚点坐标',\n} as const;\n\nconst VIEWPORT_PROJECTION_LABELS: Record<LocalEditorBrowserViewportProjectionMode, string> = {\n perspective: '透视',\n orthographic: '正交',\n};\n\nconst STATIC_SHADOW_BAKE_ACTION_ID = 'bake-static-shadows';\n\nconst TRANSFORM_ACTION_GROUPS = [\n {\n title: '对齐到 Active Object',\n hint: '需要至少 2 个选中对象',\n actions: ['align-x', 'align-y', 'align-z', 'align-all'],\n },\n {\n title: '均匀分布',\n hint: '需要至少 3 个选中对象',\n actions: ['distribute-x', 'distribute-y', 'distribute-z'],\n },\n] as const satisfies ReadonlyArray<{\n title: string;\n hint: string;\n actions: ReadonlyArray<LocalEditorBrowserTransformAction>;\n}>;\n\nconst TRANSFORM_ACTION_LABELS: Record<LocalEditorBrowserTransformAction, string> = {\n 'align-x': '对齐 X',\n 'align-y': '对齐 Y',\n 'align-z': '对齐 Z',\n 'align-all': '对齐全',\n 'distribute-x': '分布 X',\n 'distribute-y': '分布 Y',\n 'distribute-z': '分布 Z',\n};\n\nfunction createToolbarIconButton(\n doc: Document,\n label: string,\n icon: LocalEditorIconName,\n tooltip = label,\n toolbarRole: 'command' | 'toggle' | 'settings' = 'command',\n): HTMLButtonElement {\n return LocalEditorShared.createButton(doc, label, {\n icon,\n labelMode: 'icon-only',\n variant: 'toolbar-icon',\n tooltip,\n ariaLabel: tooltip,\n toolbarRole,\n });\n}\n\nfunction setToolbarButtonTooltip(button: HTMLButtonElement, tooltip: string): void {\n button.dataset.editorTooltip = tooltip;\n button.setAttribute('aria-label', tooltip);\n}\n\nexport function matchesContextActionShortcut(\n shortcut: string | undefined,\n event: Pick<KeyboardEvent, 'key' | 'metaKey' | 'ctrlKey' | 'shiftKey' | 'altKey'>,\n): boolean {\n if (!shortcut) return false;\n const parts = shortcut.toLowerCase().split('+').map(part => part.trim()).filter(Boolean);\n const key = parts[parts.length - 1];\n if (!key || event.key.toLowerCase() !== key) return false;\n const needsPrimary = parts.includes('mod');\n if (needsPrimary !== (event.metaKey || event.ctrlKey)) return false;\n if (parts.includes('shift') !== event.shiftKey) return false;\n if (parts.includes('alt') !== event.altKey) return false;\n return true;\n}\n\nfunction renderContextActionButtons(\n group: HTMLElement,\n actions: NonNullable<LocalEditorBrowserUiState['contextActions']>,\n busy: boolean,\n): void {\n group.replaceChildren();\n const visible = actions\n .filter(action => action.availability.state !== 'hidden')\n .sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));\n group.style.display = visible.length > 0 ? 'flex' : 'none';\n for (const action of visible) {\n const icon = isLocalEditorIconName(action.icon) ? action.icon : 'execute';\n const tooltip = action.shortcut ? `${action.label} (${action.shortcut})` : action.label;\n const button = createToolbarIconButton(group.ownerDocument, action.label, icon, tooltip);\n button.dataset.editorContextAction = action.id;\n button.disabled = busy || action.availability.state !== 'enabled';\n if (action.availability.state === 'disabled' && action.availability.reason) {\n setToolbarButtonTooltip(button, action.availability.reason);\n }\n if (action.danger) button.style.color = 'var(--fps-editor-danger-strong)';\n group.appendChild(button);\n }\n}\n\nfunction createAgentBridgeStatusTooltip(\n status: LocalEditorBrowserUiState['agentBridge'] | null | undefined,\n): string {\n const label = formatAgentBridgeStatusLabel(status?.status);\n const details = [\n `Agent Bridge:${label}`,\n status?.url ? `URL ${status.url}` : '',\n status?.sessionId ? `Session ${status.sessionId}` : '',\n status ? `Capabilities ${status.capabilityCount}` : '',\n status?.lastError ? `Error ${status.lastError}` : '',\n status?.connectedAt ? `Connected ${status.connectedAt}` : '',\n status?.lastChangedAt ? `Updated ${status.lastChangedAt}` : '',\n ].filter(Boolean);\n return details.join(' · ');\n}\n\nfunction formatAgentBridgeStatusLabel(\n status: LocalEditorBrowserAgentBridgeStatusKind | null | undefined,\n): string {\n switch (status) {\n case 'disabled':\n return '未启用';\n case 'connecting':\n return '连接中';\n case 'connected':\n return '已连接';\n case 'disconnected':\n return '已断开';\n case 'error':\n return '错误';\n default:\n return '未知';\n }\n}\n\nfunction resolveAgentBridgeStatusToneColor(\n status: LocalEditorBrowserUiState['agentBridge'] | null | undefined,\n): string {\n switch (status?.status) {\n case 'connected':\n return 'var(--fps-editor-success)';\n case 'connecting':\n return 'var(--fps-editor-accent-strong)';\n case 'disconnected':\n return 'var(--fps-editor-warn)';\n case 'error':\n return 'var(--fps-editor-danger-strong)';\n case 'disabled':\n default:\n return 'var(--fps-editor-muted)';\n }\n}\n\nfunction setToolbarButtonIcon(\n doc: Document,\n button: HTMLButtonElement,\n icon: LocalEditorIconName,\n): void {\n const currentIcon = button.querySelector<HTMLElement>('[data-editor-icon]');\n if (currentIcon?.dataset.editorIcon === icon) return;\n const nextIcon = createLocalEditorIcon(doc, icon);\n if (currentIcon) currentIcon.replaceWith(nextIcon);\n else button.prepend(nextIcon);\n}\n\nfunction readInspectorVectorInputValue(\n input: HTMLInputElement,\n source: LocalEditorBrowserInspectorEditSource,\n): Record<string, number> | null {\n const wrapper = input.closest<HTMLElement>('[data-inspector-vector-control]');\n const values: Record<string, number> = {};\n const mode = source === 'input' && readInspectorCommitMode(input) === 'live' ? 'live' : 'final';\n const fields = wrapper\n ? Array.from(wrapper.querySelectorAll<HTMLInputElement>('input[data-serialized-vector-axis]'))\n : [input];\n for (const field of fields) {\n const axis = field.dataset.serializedVectorAxis;\n if (!axis) continue;\n const numeric = LocalEditorPanels.parseLocalEditorBrowserInspectorNumberValue(field.value, mode);\n if (numeric == null) return null;\n values[axis] = numeric;\n }\n return values;\n}\n\nfunction createInspectorPropertyInput(\n input: HTMLInputElement | HTMLSelectElement,\n source: LocalEditorBrowserInspectorEditSource,\n): LocalEditorBrowserUiPropertyInput | null {\n if (!input.dataset.serializedPath || !input.dataset.serializedTargetId) return null;\n const targetIds = input.dataset.serializedTargetIds\n ? input.dataset.serializedTargetIds.split(',').filter(Boolean)\n : undefined;\n const value = readInspectorInputValue(input, source);\n if (value === PENDING_NUMERIC_PROPERTY_INPUT) return null;\n\n return {\n targetId: input.dataset.serializedTargetId,\n targetIds,\n path: input.dataset.serializedPath,\n value,\n control: input.dataset.serializedControl as LocalEditorBrowserInspectorControlKind | undefined,\n valueType: input.dataset.serializedValueType as LocalEditorBrowserInspectorProperty['valueType'] | undefined,\n commitMode: input.dataset.serializedCommitMode as LocalEditorBrowserInspectorCommitMode | undefined,\n persistence: input.dataset.serializedPersistence as LocalEditorBrowserInspectorPersistenceMode | undefined,\n source: (input.dataset.serializedEditSource as LocalEditorBrowserInspectorEditSource | undefined) ?? source,\n };\n}\n\nfunction createInspectorPropertyInputs(\n input: HTMLInputElement | HTMLSelectElement,\n source: LocalEditorBrowserInspectorEditSource,\n lockedVectorGroups: ReadonlySet<string>,\n): LocalEditorBrowserUiPropertyInput[] | null {\n const propertyInput = createInspectorPropertyInput(input, source);\n if (!propertyInput) return null;\n const vectorAxis = resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath(propertyInput.path);\n const groupPath = vectorAxis?.groupPath ?? null;\n const forceVectorLock = input.dataset.serializedForceVectorLock === 'true';\n if (!groupPath || (!forceVectorLock && !lockedVectorGroups.has(groupPath))) return [propertyInput];\n if (propertyInput.control !== 'number' || propertyInput.valueType !== 'number') return [propertyInput];\n if (typeof propertyInput.value !== 'number' || !Number.isFinite(propertyInput.value)) return [propertyInput];\n if (groupPath !== 'transform.scale' || !vectorAxis) return [propertyInput];\n const group = input.closest<HTMLElement>('[data-editor-inspector-vector-group-path=\"transform.scale\"]');\n const baseValue = {} as Partial<LocalEditorBrowserInspectorVec3Value>;\n for (const field of group?.querySelectorAll<HTMLInputElement>('input[data-serialized-path]') ?? []) {\n const fieldAxis = resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath(field.dataset.serializedPath);\n const serializedBaseValue = field.dataset.serializedVectorBaseValue;\n if (fieldAxis?.groupPath !== groupPath || serializedBaseValue == null) continue;\n const numericBaseValue = Number(serializedBaseValue);\n if (Number.isFinite(numericBaseValue)) baseValue[fieldAxis.axis] = numericBaseValue;\n }\n if (!LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.every(axis => typeof baseValue[axis] === 'number')) {\n return [propertyInput];\n }\n const serializedPrecision = Number(input.dataset.serializedNumberPrecision);\n const scaleValues = resolveLocalEditorBrowserInspectorProportionalScaleValues(\n baseValue as LocalEditorBrowserInspectorVec3Value,\n vectorAxis.axis,\n propertyInput.value,\n Number.isInteger(serializedPrecision) ? serializedPrecision : 4,\n );\n if (!scaleValues) return [propertyInput];\n return LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.map(axis => ({\n ...propertyInput,\n path: `${groupPath}.${axis}`,\n value: scaleValues[axis],\n }));\n}\n\nfunction createInspectorVectorPastePropertyInputs(\n input: HTMLInputElement,\n payload: LocalEditorBrowserInspectorGroupValueClipboardPayload,\n): LocalEditorBrowserUiPropertyInput[] | null {\n const targetGroupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(input.dataset.serializedPath);\n if (!targetGroupPath || payload.groupPath !== targetGroupPath) return null;\n if (!input.dataset.serializedTargetId) return null;\n const targetIds = input.dataset.serializedTargetIds\n ? input.dataset.serializedTargetIds.split(',').filter(Boolean)\n : undefined;\n return LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.map(axis => ({\n targetId: input.dataset.serializedTargetId!,\n targetIds,\n path: `${targetGroupPath}.${axis}`,\n value: payload.value[axis],\n control: 'number',\n valueType: 'number',\n commitMode: input.dataset.serializedCommitMode as LocalEditorBrowserInspectorCommitMode | undefined,\n persistence: input.dataset.serializedPersistence as LocalEditorBrowserInspectorPersistenceMode | undefined,\n source: 'input',\n }));\n}\n\nfunction applyInspectorVectorPasteToDom(\n input: HTMLInputElement,\n payload: LocalEditorBrowserInspectorGroupValueClipboardPayload,\n): void {\n const group = input.closest<HTMLElement>('[data-editor-inspector-vector-group-path]');\n const fields = group\n ? Array.from(group.querySelectorAll<HTMLInputElement>('input[data-serialized-path]'))\n : [input];\n for (const field of fields) {\n const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(field.dataset.serializedPath);\n if (groupPath !== payload.groupPath) continue;\n const axis = field.dataset.serializedPath?.slice(groupPath.length + 1);\n if (axis !== 'x' && axis !== 'y' && axis !== 'z') continue;\n field.value = LocalEditorPanels.formatLocalEditorBrowserInspectorNumberValue(payload.value[axis]);\n }\n}\n\nfunction applyInspectorLockedVectorInputToDom(\n input: HTMLInputElement | HTMLSelectElement,\n propertyInputs: readonly LocalEditorBrowserUiPropertyInput[],\n): void {\n if (!(input instanceof HTMLInputElement)) return;\n if (propertyInputs.length !== LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES.length) return;\n const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath(propertyInputs[0]?.path);\n if (!groupPath) return;\n const values = new Map(propertyInputs.map(propertyInput => [propertyInput.path, propertyInput.value]));\n const group = input.closest<HTMLElement>('[data-editor-inspector-vector-group-path]');\n const fields = group\n ? Array.from(group.querySelectorAll<HTMLInputElement>('input[data-serialized-path]'))\n : [input];\n for (const field of fields) {\n const path = field.dataset.serializedPath;\n const value = path ? values.get(path) : undefined;\n if (typeof value !== 'number' || !Number.isFinite(value)) continue;\n field.value = String(Object.is(value, -0) ? 0 : value);\n }\n}\n\nfunction readRenderingInputValue(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n source: LocalEditorBrowserRenderingPropertyEditSource,\n): unknown | LocalEditorPendingNumericPropertyInput {\n const control = input.dataset.renderingControl;\n const valueType = input.dataset.renderingValueType;\n if (control === 'enum' && input instanceof HTMLSelectElement) {\n const option = input.selectedOptions.item(0);\n const encoded = option?.dataset.serializedOptionValue;\n if (encoded != null) {\n try {\n return JSON.parse(encoded) as string | number | boolean | Record<string, unknown> | null;\n } catch {\n return option?.value ?? input.value;\n }\n }\n return input.value;\n }\n if (input instanceof HTMLInputElement && input.type === 'checkbox') return input.checked;\n if (input instanceof HTMLInputElement && input.type === 'color') {\n const value = input.value.replace('#', '');\n const numeric = Number.parseInt(value, 16);\n if (!Number.isFinite(numeric)) return null;\n return {\n r: ((numeric >> 16) & 255) / 255,\n g: ((numeric >> 8) & 255) / 255,\n b: (numeric & 255) / 255,\n };\n }\n if (control === 'number' || valueType === 'number') {\n const mode = source === 'input' && readRenderingCommitMode(input) === 'live' ? 'live' : 'final';\n return LocalEditorPanels.parseLocalEditorBrowserInspectorNumberValue(input.value, mode)\n ?? PENDING_NUMERIC_PROPERTY_INPUT;\n }\n if (control === 'string-list' || valueType === 'string-list') {\n return input.value\n .split(/\\r?\\n/)\n .map(value => value.trim())\n .filter(Boolean);\n }\n if (control === 'boolean' || valueType === 'boolean') return input.value === 'true';\n return input.value;\n}\n\nfunction createRenderingPropertyInput(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n source: LocalEditorBrowserRenderingPropertyEditSource,\n): LocalEditorBrowserRenderingPropertyChangeInput | null {\n const sectionId = input.dataset.renderingSectionId;\n const systemId = input.dataset.renderingSystemId;\n const path = input.dataset.renderingPath;\n if (!sectionId || !systemId || !path) return null;\n const value = readRenderingInputValue(input, source);\n if (value === PENDING_NUMERIC_PROPERTY_INPUT) return null;\n return {\n sectionId,\n systemId,\n path,\n value,\n control: input.dataset.renderingControl as LocalEditorBrowserRenderingPropertyControlKind | undefined,\n valueType: input.dataset.renderingValueType as LocalEditorBrowserRenderingPropertyValueType | undefined,\n commitMode: input.dataset.renderingCommitMode as LocalEditorBrowserRenderingPropertyCommitMode | undefined,\n source,\n };\n}\n\nfunction createRenderingActionInput(\n button: HTMLButtonElement,\n): LocalEditorBrowserRenderingActionInput | null {\n const actionId = button.dataset.editorRenderingAction;\n if (!actionId) return null;\n const params = parseRenderingActionParams(button.dataset.renderingActionParams);\n return {\n actionId,\n sectionId: button.dataset.renderingSectionId,\n systemId: button.dataset.renderingSystemId,\n path: button.dataset.renderingPath,\n ...(params ? { params } : {}),\n };\n}\n\nfunction createInspectorActionInput(\n button: HTMLButtonElement,\n): LocalEditorBrowserInspectorActionInput | null {\n const actionId = button.dataset.editorInspectorAction;\n if (!actionId) return null;\n const params = parseRenderingActionParams(button.dataset.editorInspectorActionParams);\n const targetIds = parseInspectorActionTargetIds(button.dataset.editorInspectorActionTargetIds);\n return {\n actionId,\n targetId: button.dataset.editorInspectorActionTargetId || null,\n targetIds,\n path: button.dataset.editorInspectorActionPath,\n ...(params ? { params } : {}),\n };\n}\n\nfunction parseInspectorActionTargetIds(value: string | undefined): string[] | undefined {\n if (!value) return undefined;\n try {\n const parsed = JSON.parse(value) as unknown;\n return Array.isArray(parsed) && parsed.every(item => typeof item === 'string')\n ? parsed\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction parseRenderingActionParams(value: string | undefined): Record<string, unknown> | null {\n if (!value) return null;\n try {\n const parsed = JSON.parse(value) as unknown;\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? parsed as Record<string, unknown>\n : null;\n } catch {\n return null;\n }\n}\n\nfunction readInspectorCommitMode(input: HTMLInputElement | HTMLSelectElement): LocalEditorBrowserInspectorCommitMode {\n return (input.dataset.serializedCommitMode as LocalEditorBrowserInspectorCommitMode | undefined) ?? 'live';\n}\n\nfunction readRenderingCommitMode(input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement): LocalEditorBrowserRenderingPropertyCommitMode {\n return (input.dataset.renderingCommitMode as LocalEditorBrowserRenderingPropertyCommitMode | undefined) ?? 'live';\n}\n\nfunction isLocalEditorRightDockTab(value: string | undefined): value is LocalEditorRightDockTab {\n return value === 'inspector' || value === 'rendering' || value === 'markers' || value === 'plugins';\n}\n\ninterface LocalEditorRightDockScrollSnapshot {\n tab: LocalEditorRightDockTab;\n contentKey: string;\n panelId: string;\n scrollLeft: number;\n scrollTop: number;\n}\n\nfunction resolveLocalEditorRightDockContentKey<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n tab: LocalEditorRightDockTab,\n inspectorFilter: string,\n): string {\n if (tab === 'markers') {\n const markerPanel = state.markerPanel;\n if (!markerPanel) return 'markers:none';\n return [\n 'markers',\n markerPanel.activeMarkerId ?? '',\n markerPanel.markersVisible === false ? 'markers-hidden' : 'markers-visible',\n markerPanel.status ?? '',\n markerPanel.markerTypes.map(markerType => [\n markerType.type,\n markerType.label,\n markerType.kind ?? '',\n markerType.description ?? '',\n markerType.usedByCount ?? 0,\n ].join('=')).join(';'),\n (markerPanel.relations ?? []).map(relation => [\n relation.id,\n relation.type,\n relation.from.kind,\n relation.from.id,\n relation.from.visibility ?? '',\n relation.to.kind,\n relation.to.id,\n relation.to.visibility ?? '',\n relation.selected ? 'selected' : '',\n relation.status ?? '',\n ].join('=')).join(';'),\n ].join(':');\n }\n if (tab === 'plugins') {\n const plugins = state.pluginPanel;\n if (!plugins) return 'plugins:none';\n return [\n 'plugins',\n plugins.environment,\n plugins.scope,\n plugins.hostState,\n plugins.transitioning ? 'transitioning' : 'idle',\n plugins.plugins.map(plugin => [plugin.id, plugin.version, plugin.lifecycle].join('=')).join(';'),\n plugins.diagnostics.map(diagnostic => [diagnostic.pluginId ?? '', diagnostic.code, diagnostic.severity].join('=')).join(';'),\n ].join(':');\n }\n if (tab === 'rendering') {\n const rendering = state.renderingPanel;\n if (!rendering) return 'rendering:none';\n return [\n 'rendering',\n rendering.sections.map(section => [\n section.id,\n section.systems.map(system => [\n system.id,\n system.properties.map(property => property.path).join(','),\n ].join(':')).join('|'),\n ].join('=')).join(';'),\n ].join(':');\n }\n const selectionCount = state.selectionSummary?.count ?? state.selectedIds.length;\n return [\n 'inspector',\n selectionCount,\n state.selectionSummary?.activeId ?? state.activeId ?? '',\n state.selectedIds.join(','),\n inspectorFilter,\n ].join(':');\n}\n\nfunction findLocalEditorRightDockScrollViewport(\n tab: LocalEditorRightDockTab,\n inspectorPanel: HTMLElement,\n renderingPanel: HTMLElement,\n markersPanel: HTMLElement,\n pluginsPanel: HTMLElement,\n): HTMLElement | null {\n const panel = tab === 'inspector'\n ? inspectorPanel\n : tab === 'rendering'\n ? renderingPanel\n : tab === 'markers'\n ? markersPanel\n : pluginsPanel;\n const selector = tab === 'inspector'\n ? '[data-editor-inspector-scroll-viewport]'\n : tab === 'rendering'\n ? '[data-editor-rendering-scroll-viewport]'\n : tab === 'markers'\n ? '[data-editor-markers-scroll-viewport]'\n : '[data-editor-plugins-scroll-viewport]';\n return panel.querySelector<HTMLElement>(selector) ?? panel;\n}\n\nfunction captureLocalEditorRightDockScrollSnapshot<TDocument>(\n state: LocalEditorBrowserUiState<TDocument> | null,\n tab: LocalEditorRightDockTab,\n inspectorFilter: string,\n inspectorPanel: HTMLElement,\n renderingPanel: HTMLElement,\n markersPanel: HTMLElement,\n pluginsPanel: HTMLElement,\n): LocalEditorRightDockScrollSnapshot | null {\n if (!state || state.mode !== 'editor') return null;\n const viewport = findLocalEditorRightDockScrollViewport(tab, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);\n if (!viewport) return null;\n const panel = tab === 'inspector'\n ? inspectorPanel\n : tab === 'rendering'\n ? renderingPanel\n : tab === 'markers'\n ? markersPanel\n : pluginsPanel;\n return {\n tab,\n contentKey: resolveLocalEditorRightDockContentKey(state, tab, inspectorFilter),\n panelId: panel.dataset.editorPanelId ?? tab,\n scrollLeft: viewport.scrollLeft,\n scrollTop: viewport.scrollTop,\n };\n}\n\nfunction restoreLocalEditorRightDockScrollSnapshot<TDocument>(\n snapshot: LocalEditorRightDockScrollSnapshot | null,\n state: LocalEditorBrowserUiState<TDocument>,\n tab: LocalEditorRightDockTab,\n inspectorFilter: string,\n inspectorPanel: HTMLElement,\n renderingPanel: HTMLElement,\n markersPanel: HTMLElement,\n pluginsPanel: HTMLElement,\n): void {\n if (!snapshot || snapshot.tab !== tab || state.mode !== 'editor') return;\n const panel = tab === 'inspector'\n ? inspectorPanel\n : tab === 'rendering'\n ? renderingPanel\n : tab === 'markers'\n ? markersPanel\n : pluginsPanel;\n if ((panel.dataset.editorPanelId ?? tab) !== snapshot.panelId) return;\n if (resolveLocalEditorRightDockContentKey(state, tab, inspectorFilter) !== snapshot.contentKey) return;\n const viewport = findLocalEditorRightDockScrollViewport(tab, inspectorPanel, renderingPanel, markersPanel, pluginsPanel);\n if (!viewport) return;\n viewport.scrollLeft = snapshot.scrollLeft;\n viewport.scrollTop = snapshot.scrollTop;\n}\n\nfunction readInspectorImmediateSource(input: HTMLInputElement | HTMLSelectElement): LocalEditorBrowserInspectorEditSource {\n if (input instanceof HTMLSelectElement) return 'select';\n if (input.type === 'checkbox') return 'toggle';\n if (input.type === 'color') return 'color';\n return 'input';\n}\n\nfunction readRenderingImmediateSource(input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement): LocalEditorBrowserRenderingPropertyEditSource {\n const explicitSource = input.dataset.renderingEditSource as LocalEditorBrowserRenderingPropertyEditSource | undefined;\n if (explicitSource) return explicitSource;\n if (input instanceof HTMLSelectElement) return 'select';\n if (input instanceof HTMLInputElement && input.type === 'checkbox') return 'toggle';\n if (input instanceof HTMLInputElement && input.type === 'color') return 'color';\n if (input instanceof HTMLTextAreaElement) return 'list';\n return 'input';\n}\n\nfunction createMarkerTypeActionInput(button: HTMLButtonElement): LocalEditorBrowserMarkerTypeActionInput | null {\n const action = button.dataset.editorMarkerTypeAction;\n if (action === 'create') {\n const block = button.closest<HTMLElement>('[data-editor-marker-type-create]');\n if (!block) return null;\n const type = readMarkerTypeFieldValue(block, 'type');\n if (!type) return null;\n const label = readMarkerTypeFieldValue(block, 'label') || type;\n return {\n action: 'create',\n type,\n label,\n kind: readMarkerTypeFieldValue(block, 'kind') || undefined,\n description: readMarkerTypeFieldValue(block, 'description') || undefined,\n };\n }\n const row = button.closest<HTMLElement>('[data-editor-marker-type-row]');\n const type = row?.dataset.editorMarkerTypeRow?.trim() ?? '';\n if (!row || !type) return null;\n if (action === 'delete') return { action: 'delete', type };\n if (action !== 'update') return null;\n return {\n action: 'update',\n type,\n label: readMarkerTypeFieldValue(row, 'label') || type,\n kind: readMarkerTypeFieldValue(row, 'kind') || undefined,\n description: readMarkerTypeFieldValue(row, 'description'),\n };\n}\n\nfunction createMarkerRelationActionInput(target: HTMLElement): LocalEditorBrowserMarkerRelationActionInput | null {\n const action = target.dataset.editorMarkerRelationAction;\n if (action === 'delete') {\n const row = target.closest<HTMLElement>('[data-editor-marker-relation-row]');\n const relationId = row?.dataset.editorMarkerRelationRow?.trim() ?? '';\n return relationId ? { action: 'delete', relationId } : null;\n }\n if (action === 'reverse') {\n const row = target.closest<HTMLElement>('[data-editor-marker-relation-row]');\n const relationId = row?.dataset.editorMarkerRelationRow?.trim() ?? '';\n return relationId ? { action: 'reverse', relationId } : null;\n }\n if (action === 'delete-connected') {\n const markerId = target.dataset.editorMarkerRelationMarkerId?.trim() ?? '';\n return { action: 'delete-connected', ...(markerId ? { markerId } : {}) };\n }\n if (action === 'select') {\n const row = target.closest<HTMLElement>('[data-editor-marker-relation-row]');\n const relationId = row?.dataset.editorMarkerRelationRow?.trim() ?? '';\n return relationId ? { action: 'select', relationId } : null;\n }\n if (action === 'pick-cancel') return { action: 'pick-cancel' };\n if (action !== 'create' && action !== 'pick-start') return null;\n const block = target.closest<HTMLElement>('[data-editor-marker-relation-create]');\n if (!block) return null;\n const type = readMarkerRelationTypeFieldValue(block);\n const from = readMarkerRelationEndpointFieldValue(block, 'from');\n const to = readMarkerRelationEndpointFieldValue(block, 'to');\n if (!type || !from || (action === 'create' && !to)) return null;\n const directed = readMarkerRelationDirectionFieldValue(block);\n if (action === 'pick-start') {\n return {\n action: 'pick-start',\n type,\n fromKind: from.kind,\n fromId: from.id,\n ...(directed === null ? {} : { directed }),\n };\n }\n return {\n action: 'create',\n type,\n fromKind: from.kind,\n fromId: from.id,\n toKind: to!.kind,\n toId: to!.id,\n ...(directed === null ? {} : { directed }),\n };\n}\n\nfunction readMarkerTypeFieldValue(parent: HTMLElement, field: string): string {\n const input = parent.querySelector<HTMLInputElement | HTMLTextAreaElement>(`[data-editor-marker-type-field=\"${field}\"]`);\n return input?.value.trim() ?? '';\n}\n\nfunction readMarkerRelationTypeFieldValue(parent: HTMLElement): string {\n const select = parent.querySelector<HTMLSelectElement>('[data-editor-marker-relation-field=\"type\"]');\n return select?.value.trim() ?? '';\n}\n\nfunction readMarkerRelationDirectionFieldValue(parent: HTMLElement): boolean | null {\n const select = parent.querySelector<HTMLSelectElement>('[data-editor-marker-relation-field=\"directed\"]');\n if (!select || select.value === 'default') return null;\n return select.value === 'true';\n}\n\nfunction readMarkerRelationEndpointFieldValue(\n parent: HTMLElement,\n field: 'from' | 'to',\n): { kind: string; id: string } | null {\n const select = parent.querySelector<HTMLSelectElement>(`[data-editor-marker-relation-field=\"${field}\"]`);\n const option = select?.selectedOptions.item(0) ?? null;\n const kind = option?.dataset.editorMarkerRelationEndpointKind?.trim();\n const id = option?.dataset.editorMarkerRelationEndpointId?.trim();\n if (kind && id) return { kind, id };\n return decodeMarkerRelationEndpointValue(select?.value);\n}\n\nfunction decodeMarkerRelationEndpointValue(value: string | undefined): { kind: string; id: string } | null {\n const raw = value?.trim();\n if (!raw) return null;\n const separator = raw.indexOf(':');\n if (separator <= 0) return null;\n const kind = raw.slice(0, separator);\n const encodedId = raw.slice(separator + 1);\n try {\n return { kind, id: decodeURIComponent(encodedId) };\n } catch {\n return { kind, id: encodedId };\n }\n}\n\nfunction markLocalEditorKeyboardCommittedValue(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): void {\n input.dataset.editorKeyboardCommittedValue = input.value;\n}\n\nfunction consumeLocalEditorKeyboardCommittedValue(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): boolean {\n const committedValue = input.dataset.editorKeyboardCommittedValue;\n if (committedValue == null || committedValue !== input.value) return false;\n delete input.dataset.editorKeyboardCommittedValue;\n return true;\n}\n\nfunction hasLocalEditorUiKeyboardCommitPending(\n input: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): boolean {\n return input.dataset.editorUiKeyboardCommitPending === 'true';\n}\n\nfunction isLocalEditorKeyboardCommitEvent(event: KeyboardEvent, input: Element): boolean {\n if (event.key !== 'Enter' || event.isComposing) return false;\n if (input instanceof HTMLTextAreaElement) return event.metaKey || event.ctrlKey;\n return input instanceof HTMLInputElement;\n}\n\nfunction commitLocalEditorInspectorInput(\n input: HTMLInputElement,\n callbacks: LocalEditorBrowserUiCallbacks,\n lockedInspectorVectorGroups: ReadonlySet<string>,\n): boolean {\n if (!input.dataset.serializedPath || !input.dataset.serializedTargetId) return false;\n if (input.type === 'checkbox' || input.type === 'color') return false;\n const propertyInputs = createInspectorPropertyInputs(input, 'input', lockedInspectorVectorGroups);\n if (!propertyInputs) return false;\n delete input.dataset.editorUiKeyboardCommitPending;\n applyInspectorLockedVectorInputToDom(input, propertyInputs);\n markLocalEditorKeyboardCommittedValue(input);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n return true;\n}\n\nfunction commitLocalEditorRenderingInput(\n input: HTMLInputElement | HTMLTextAreaElement,\n callbacks: LocalEditorBrowserUiCallbacks,\n): boolean {\n if (!input.dataset.editorRenderingProperty) return false;\n if (input instanceof HTMLInputElement && (input.type === 'checkbox' || input.type === 'color')) return false;\n const propertyInput = createRenderingPropertyInput(input, input instanceof HTMLTextAreaElement ? 'list' : 'input');\n if (!propertyInput) return false;\n markLocalEditorKeyboardCommittedValue(input);\n callbacks.onRenderingPropertyChange?.(propertyInput);\n return true;\n}\n\nexport function captureLocalEditorEditableFocus(doc: Document): LocalEditorEditableFocusSnapshot | null {\n const active = doc.activeElement;\n if (!(active instanceof HTMLInputElement || active instanceof HTMLTextAreaElement || active instanceof HTMLSelectElement)) {\n return null;\n }\n const selector = createLocalEditorEditableFocusSelector(active);\n if (!selector) return null;\n return {\n selector,\n value: readLocalEditorEditableDraftValue(active),\n ...readLocalEditorEditableSelection(active),\n };\n}\n\nexport function restoreLocalEditorEditableFocus(\n doc: Document,\n snapshot: LocalEditorEditableFocusSnapshot | null,\n): void {\n if (!snapshot) return;\n const element = doc.querySelector<HTMLElement>(snapshot.selector);\n if (!(element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement || element instanceof HTMLSelectElement)) {\n return;\n }\n if (snapshot.value != null && canRestoreLocalEditorEditableDraftValue(element)) {\n element.value = snapshot.value;\n }\n element.focus({ preventScroll: true });\n restoreLocalEditorEditableSelection(element, snapshot);\n}\n\nfunction createLocalEditorEditableFocusSelector(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): string | null {\n if (element instanceof HTMLInputElement && element.dataset.editorHierarchyRenameInput) {\n return [\n 'input',\n `[data-editor-hierarchy-rename-input=\"${cssEscape(element.dataset.editorHierarchyRenameInput)}\"]`,\n ].join('');\n }\n if ((element instanceof HTMLInputElement || element instanceof HTMLSelectElement) && element.dataset.serializedPath && element.dataset.serializedTargetId) {\n return [\n element instanceof HTMLSelectElement ? 'select' : 'input',\n `[data-serialized-path=\"${cssEscape(element.dataset.serializedPath)}\"]`,\n `[data-serialized-target-id=\"${cssEscape(element.dataset.serializedTargetId)}\"]`,\n element.dataset.serializedVectorAxis\n ? `[data-serialized-vector-axis=\"${cssEscape(element.dataset.serializedVectorAxis)}\"]`\n : '',\n ].join('');\n }\n if ((element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) && element.dataset.editorRenderingProperty) {\n const sectionId = element.dataset.renderingSectionId;\n const systemId = element.dataset.renderingSystemId;\n const path = element.dataset.renderingPath;\n if (!sectionId || !systemId || !path) return null;\n return [\n element instanceof HTMLTextAreaElement ? 'textarea' : 'input',\n '[data-editor-rendering-property=\"true\"]',\n `[data-rendering-section-id=\"${cssEscape(sectionId)}\"]`,\n `[data-rendering-system-id=\"${cssEscape(systemId)}\"]`,\n `[data-rendering-path=\"${cssEscape(path)}\"]`,\n element.dataset.serializedVectorAxis\n ? `[data-serialized-vector-axis=\"${cssEscape(element.dataset.serializedVectorAxis)}\"]`\n : '',\n ].join('');\n }\n if (element instanceof HTMLInputElement && element.dataset.editorInspectorSearch != null) {\n return 'input[data-editor-inspector-search]';\n }\n if (element instanceof HTMLInputElement && element.dataset.editorHierarchySearch != null) {\n return 'input[data-editor-hierarchy-search]';\n }\n if (element instanceof HTMLInputElement && element.dataset.editorAssetFilter != null) {\n return 'input[data-editor-asset-filter]';\n }\n return null;\n}\n\nfunction readLocalEditorEditableDraftValue(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): string | null {\n return canRestoreLocalEditorEditableDraftValue(element) ? element.value : null;\n}\n\nfunction canRestoreLocalEditorEditableDraftValue(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): element is HTMLInputElement | HTMLTextAreaElement {\n if (element instanceof HTMLTextAreaElement) return true;\n if (!(element instanceof HTMLInputElement)) return false;\n return element.type !== 'checkbox'\n && element.type !== 'radio'\n && element.type !== 'color'\n && element.type !== 'button'\n && element.type !== 'submit'\n && element.type !== 'reset';\n}\n\nfunction readLocalEditorEditableSelection(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n): Pick<LocalEditorEditableFocusSnapshot, 'selectionStart' | 'selectionEnd' | 'selectionDirection'> {\n if (!canRestoreLocalEditorEditableDraftValue(element)) {\n return {\n selectionStart: null,\n selectionEnd: null,\n selectionDirection: null,\n };\n }\n try {\n return {\n selectionStart: element.selectionStart,\n selectionEnd: element.selectionEnd,\n selectionDirection: element.selectionDirection,\n };\n } catch {\n return {\n selectionStart: null,\n selectionEnd: null,\n selectionDirection: null,\n };\n }\n}\n\nfunction restoreLocalEditorEditableSelection(\n element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,\n snapshot: LocalEditorEditableFocusSnapshot,\n): void {\n if (!canRestoreLocalEditorEditableDraftValue(element)) return;\n const start = snapshot.selectionStart ?? snapshot.value?.length ?? element.value.length;\n const end = snapshot.selectionEnd ?? start;\n try {\n element.setSelectionRange(start, end, snapshot.selectionDirection ?? 'none');\n } catch {\n // Some input types reject text selection APIs even when they carry editable text.\n }\n}\n\nfunction cssEscape(value: string): string {\n return typeof CSS !== 'undefined' && typeof CSS.escape === 'function'\n ? CSS.escape(value)\n : value.replace(/[\"\\\\]/g, '\\\\$&');\n}\n\ninterface CoordinateAxesOverlayElements {\n root: HTMLDivElement;\n lineLayer: SVGGElement;\n labelLayer: SVGGElement;\n axisGroups: Map<string, SVGGElement>;\n axisLines: Map<string, SVGLineElement>;\n axisLabels: Map<string, SVGTextElement>;\n axisDiscs: Map<string, SVGCircleElement>;\n centerDot: SVGCircleElement;\n projectionIcon: SVGGElement;\n projectionIconShape: SVGPathElement;\n}\n\ninterface SceneFrameRateOverlayElements {\n root: HTMLDivElement;\n fpsValue: HTMLSpanElement;\n modeLabel: HTMLSpanElement;\n}\n\ninterface PerformanceMonitorOverlayElements {\n root: HTMLElement;\n modeLabel: HTMLSpanElement;\n values: Record<PerformanceMonitorMetricKey, HTMLSpanElement>;\n}\n\ninterface PrefabImportStatsOverlayElements {\n root: HTMLElement;\n modeLabel: HTMLSpanElement;\n values: Record<PrefabImportStatsMetricKey, HTMLSpanElement>;\n}\n\ninterface PrefabStagePreviewLayoutElements {\n root: HTMLElement;\n mainRegion: HTMLElement;\n}\n\ntype PerformanceMonitorMetricKey =\n | 'fps'\n | 'frame'\n | 'drawCalls'\n | 'objects'\n | 'meshes'\n | 'activeMeshes'\n | 'materials'\n | 'textures'\n | 'lights'\n | 'cameras'\n | 'meshClassMesh'\n | 'meshClassInstancedMesh'\n | 'meshClassLinesMesh'\n | 'meshClassGroundMesh'\n | 'meshClassOther'\n | 'meshCategoryAssetMesh'\n | 'meshCategoryPrimitiveMesh'\n | 'meshCategoryStaticProjectedShadow'\n | 'meshCategoryEditorHelper'\n | 'meshCategoryUncategorized'\n | 'projectionRoleAssetInstanceMesh'\n | 'projectionRoleAssetSourceMesh'\n | 'projectionRoleAssetWrapperMesh'\n | 'projectionRoleAssetCloneMesh'\n | 'projectionRoleAssetGeneratedMesh'\n | 'projectionRoleAssetSelectionProxy'\n | 'projectionRolePrimitiveMesh'\n | 'projectionRoleStaticProjectedShadow'\n | 'projectionRoleHelperMesh'\n | 'projectionRoleUncategorized';\n\ntype PrefabImportStatsMetricKey =\n | 'source'\n | 'nodes'\n | 'transforms'\n | 'meshes'\n | 'materials'\n | 'textures'\n | 'animations';\n\ntype PerformanceMonitorMeshClassCountKey = keyof NonNullable<LocalEditorBrowserPerformanceStats['meshClassCounts']>;\ntype PerformanceMonitorMeshCategoryCountKey = keyof NonNullable<LocalEditorBrowserPerformanceStats['meshCategoryCounts']>;\ntype PerformanceMonitorProjectionRoleCountKey = keyof NonNullable<LocalEditorBrowserPerformanceStats['projectionRoleCounts']>;\n\ninterface PerformanceMonitorMetricDefinition {\n key: PerformanceMonitorMetricKey;\n label: string;\n description: string;\n format(stats: LocalEditorBrowserPerformanceStats | null): string;\n}\n\ninterface PerformanceMonitorMetricGroup {\n title: string | null;\n description?: string;\n metrics: PerformanceMonitorMetricDefinition[];\n}\n\ninterface PrefabImportStatsMetricDefinition {\n key: PrefabImportStatsMetricKey;\n label: string;\n description: string;\n format(stats: LocalEditorBrowserPrefabStageImportStats | null): string;\n}\n\nconst PERFORMANCE_MONITOR_METRIC_GROUPS: PerformanceMonitorMetricGroup[] = [\n {\n title: null,\n metrics: [\n {\n key: 'fps',\n label: 'FPS',\n description: '每秒渲染帧数。打开性能浮窗时会启用连续渲染,所以这里显示实时值。',\n format: stats => formatPerformanceInteger(stats?.fps ?? null),\n },\n {\n key: 'frame',\n label: 'Frame',\n description: '最近一帧耗时,单位毫秒。16.7ms 约等于 60 FPS。',\n format: stats => formatPerformanceFrameMs(stats?.frameMs ?? null),\n },\n {\n key: 'drawCalls',\n label: 'Draw calls',\n description: 'Babylon 当前帧提交的绘制调用数量。它受材质、mesh、阴影、辅助层和合批状态影响。',\n format: stats => formatPerformanceInteger(stats?.drawCalls ?? null),\n },\n {\n key: 'objects',\n label: 'Objects',\n description: '编辑器层级中的 authored 对象数量,不包含 root 行,不等同于 Babylon mesh 数。',\n format: stats => formatPerformanceInteger(stats?.objectCount ?? null),\n },\n {\n key: 'meshes',\n label: 'Meshes',\n description: 'Babylon scene.meshes 总数,包含资产 mesh、primitive、阴影预览和编辑器辅助 mesh。',\n format: stats => formatPerformanceInteger(stats?.meshCount ?? null),\n },\n {\n key: 'activeMeshes',\n label: 'Active meshes',\n description: '当前相机和裁剪结果下参与本帧 active mesh 评估的 mesh 数。',\n format: stats => formatPerformanceInteger(stats?.activeMeshCount ?? null),\n },\n {\n key: 'materials',\n label: 'Materials',\n description: 'Babylon scene.materials 数量。材质越分散,越难形成低 draw call。',\n format: stats => formatPerformanceInteger(stats?.materialCount ?? null),\n },\n {\n key: 'textures',\n label: 'Textures',\n description: 'Babylon scene.textures 数量,包含材质贴图和部分 runtime 生成纹理。',\n format: stats => formatPerformanceInteger(stats?.textureCount ?? null),\n },\n {\n key: 'lights',\n label: 'Lights',\n description: 'Babylon scene.lights 数量。',\n format: stats => formatPerformanceInteger(stats?.lightCount ?? null),\n },\n {\n key: 'cameras',\n label: 'Cameras',\n description: 'Babylon scene.cameras 数量。',\n format: stats => formatPerformanceInteger(stats?.cameraCount ?? null),\n },\n ],\n },\n {\n title: 'Mesh 类别 · active/total',\n description: '按 Babylon mesh class 统计,值格式为 active/total。',\n metrics: [\n {\n key: 'meshClassMesh',\n label: 'Mesh',\n description: '普通 Mesh:独立几何网格,通常会独立参与一次渲染批次判断。',\n format: stats => formatPerformanceClassBreakdown(stats, 'mesh'),\n },\n {\n key: 'meshClassInstancedMesh',\n label: 'Instance',\n description: 'InstancedMesh:共享 source mesh 的实例,但仍会进入 active mesh 统计。',\n format: stats => formatPerformanceClassBreakdown(stats, 'instancedMesh'),\n },\n {\n key: 'meshClassLinesMesh',\n label: 'Lines',\n description: 'LinesMesh:线框/辅助线 mesh,常见于相机视锥、灯光方向、编辑器辅助显示。',\n format: stats => formatPerformanceClassBreakdown(stats, 'linesMesh'),\n },\n {\n key: 'meshClassGroundMesh',\n label: 'Ground',\n description: 'GroundMesh:Babylon ground 类型 mesh,常用于地面或平面。',\n format: stats => formatPerformanceClassBreakdown(stats, 'groundMesh'),\n },\n {\n key: 'meshClassOther',\n label: 'Other',\n description: '其他 Babylon mesh 子类,表示未归入 Mesh/Instance/Lines/Ground 的类型。',\n format: stats => formatPerformanceClassBreakdown(stats, 'other'),\n },\n ],\n },\n {\n title: '来源 · active/total',\n description: '按编辑器 runtime 来源粗分类,值格式为 active/total。',\n metrics: [\n {\n key: 'meshCategoryAssetMesh',\n label: 'Asset',\n description: '资产 Mesh:由 GLB/模型资产实例化或克隆出来的可渲染子 mesh。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'assetMesh'),\n },\n {\n key: 'meshCategoryPrimitiveMesh',\n label: 'Primitive',\n description: 'Primitive Mesh:编辑器基础体生成的 mesh,例如 Cube、Sphere、Capsule、Plane。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'primitiveMesh'),\n },\n {\n key: 'meshCategoryStaticProjectedShadow',\n label: 'Shadow',\n description: '静态投影阴影预览 mesh。数量高时通常会显著抬高 draw calls。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'staticProjectedShadow'),\n },\n {\n key: 'meshCategoryEditorHelper',\n label: 'Helper',\n description: '编辑器辅助 mesh,例如网格、天空、相机/灯光 helper、gizmo 辅助显示。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'editorHelper'),\n },\n {\n key: 'meshCategoryUncategorized',\n label: 'Other',\n description: '未能归入资产、基础体、阴影预览或编辑器辅助层的 mesh。',\n format: stats => formatPerformanceCategoryBreakdown(stats, 'uncategorized'),\n },\n ],\n },\n {\n title: 'Projection roles · active/total',\n description: '按编辑器 projection 角色细分,值格式为 active/total。',\n metrics: [\n {\n key: 'projectionRoleAssetInstanceMesh',\n label: 'Asset instance',\n description: '资产 InstancedMesh:共享 source mesh 的可渲染模型实例。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetInstanceMesh'),\n },\n {\n key: 'projectionRoleAssetSourceMesh',\n label: 'Asset source',\n description: '资产 source mesh:被 InstancedMesh 引用的源 mesh,通常不应作为可见实例压力解读。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetSourceMesh'),\n },\n {\n key: 'projectionRoleAssetWrapperMesh',\n label: 'Asset wrapper',\n description: '资产 wrapper mesh:GLB 层级里的 0 顶点 Mesh。Babylon 无法将这类节点 instance,会保留为 clone 层级。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetWrapperMesh'),\n },\n {\n key: 'projectionRoleAssetCloneMesh',\n label: 'Asset clone',\n description: '资产 clone mesh:有几何、不是 source mesh、也不是 InstancedMesh 的资产 Mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetCloneMesh'),\n },\n {\n key: 'projectionRoleAssetGeneratedMesh',\n label: 'Asset generated',\n description: '资产适配生成的非 InstancedMesh 几何,例如 texture/decal projection mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetGeneratedMesh'),\n },\n {\n key: 'projectionRoleAssetSelectionProxy',\n label: 'Selection proxy',\n description: '资产选择代理 mesh:用于编辑器 picking / bounds,不代表真实模型渲染几何。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'assetSelectionProxy'),\n },\n {\n key: 'projectionRolePrimitiveMesh',\n label: 'Primitive',\n description: '编辑器基础体 projection mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'primitiveMesh'),\n },\n {\n key: 'projectionRoleStaticProjectedShadow',\n label: 'Shadow',\n description: '静态投影阴影相关 mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'staticProjectedShadow'),\n },\n {\n key: 'projectionRoleHelperMesh',\n label: 'Helper',\n description: '编辑器辅助 mesh,例如网格、天空、相机和灯光 helper。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'helperMesh'),\n },\n {\n key: 'projectionRoleUncategorized',\n label: 'Other',\n description: '暂未识别 projection 角色的 mesh。',\n format: stats => formatPerformanceProjectionRoleBreakdown(stats, 'uncategorized'),\n },\n ],\n },\n];\n\nconst PREFAB_IMPORT_STATS_METRICS: PrefabImportStatsMetricDefinition[] = [\n {\n key: 'source',\n label: 'Source',\n description: '当前 prefab preview 使用的 source model 或 source url。',\n format: stats => stats?.sourceId ?? stats?.assetId ?? '--',\n },\n {\n key: 'nodes',\n label: 'Nodes',\n description: 'Babylon 导入后 runtime snapshot 中的节点总数,包含虚拟 root。',\n format: stats => formatPerformanceInteger(stats?.nodeCount ?? null),\n },\n {\n key: 'transforms',\n label: 'Transforms',\n description: 'runtime snapshot 中 root/transform 节点数量。',\n format: stats => formatPerformanceInteger(stats?.transformCount ?? null),\n },\n {\n key: 'meshes',\n label: 'Meshes',\n description: 'runtime snapshot 中可渲染 mesh 节点数量。',\n format: stats => formatPerformanceInteger(stats?.meshCount ?? null),\n },\n {\n key: 'materials',\n label: 'Materials',\n description: 'runtime snapshot 关联到的材质数量。',\n format: stats => formatPerformanceInteger(stats?.materialCount ?? null),\n },\n {\n key: 'textures',\n label: 'Textures',\n description: 'runtime snapshot 关联到的贴图数量。',\n format: stats => formatPerformanceInteger(stats?.textureCount ?? null),\n },\n {\n key: 'animations',\n label: 'Animations',\n description: 'runtime snapshot 关联到的 animation group 数量。',\n format: stats => formatPerformanceInteger(stats?.animationCount ?? null),\n },\n];\n\nfunction createSceneFrameRateOverlay(doc: Document): SceneFrameRateOverlayElements {\n const root = doc.createElement('div');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');\n root.dataset.editorSceneFrameRateOverlay = 'true';\n root.style.cssText = [\n 'position:absolute',\n 'right:14px',\n 'bottom:134px',\n 'z-index:3',\n 'display:none',\n 'align-items:center',\n 'gap:6px',\n 'width:112px',\n 'height:30px',\n 'padding:0 8px',\n 'box-sizing:border-box',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:6px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 76%, transparent)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'font-family:var(--fps-editor-font)',\n 'font-size:11px',\n 'font-weight:900',\n 'letter-spacing:0',\n 'color:var(--fps-editor-text-strong)',\n 'pointer-events:none',\n 'backdrop-filter:blur(5px)',\n 'overflow:hidden',\n ].join(';');\n\n const label = doc.createElement('span');\n label.textContent = 'FPS';\n label.style.cssText = [\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:10px',\n 'line-height:1',\n ].join(';');\n const fpsValue = doc.createElement('span');\n fpsValue.textContent = '--';\n fpsValue.style.cssText = [\n 'width:26px',\n 'flex:0 0 26px',\n 'font-variant-numeric:tabular-nums',\n 'font-size:13px',\n 'line-height:1',\n ].join(';');\n const modeLabel = doc.createElement('span');\n modeLabel.textContent = 'IDLE';\n modeLabel.style.cssText = [\n 'margin-left:auto',\n 'padding:2px 4px',\n 'flex:0 0 auto',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:4px',\n 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',\n 'color:var(--fps-editor-muted)',\n 'font-size:9px',\n 'line-height:1',\n ].join(';');\n\n root.appendChild(label);\n root.appendChild(fpsValue);\n root.appendChild(modeLabel);\n return { root, fpsValue, modeLabel };\n}\n\nfunction renderSceneFrameRateOverlay(\n overlay: SceneFrameRateOverlayElements,\n stats: LocalEditorBrowserSceneFrameStats | null,\n): void {\n if (!stats) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = 'flex';\n const fps = Number.isFinite(stats.fps) ? Math.round(stats.fps as number) : null;\n const displayFps = stats.mode === 'idle' ? 0 : fps;\n overlay.fpsValue.textContent = displayFps == null ? '--' : String(displayFps);\n overlay.modeLabel.textContent = stats.mode === 'continuous' ? 'LIVE' : 'IDLE';\n overlay.modeLabel.style.color = stats.mode === 'continuous'\n ? 'var(--fps-editor-success)'\n : 'var(--fps-editor-muted)';\n overlay.fpsValue.style.color = displayFps == null || stats.mode === 'idle'\n ? 'var(--fps-editor-muted)'\n : displayFps >= 50\n ? 'var(--fps-editor-success)'\n : displayFps >= 30\n ? 'var(--fps-editor-warn)'\n : 'var(--fps-editor-danger-strong)';\n overlay.root.title = [\n `Scene FPS: ${displayFps == null ? '--' : displayFps}`,\n `mode: ${stats.mode}`,\n stats.lastFrameMs == null ? '' : `frame: ${stats.lastFrameMs.toFixed(1)}ms`,\n stats.activeReasons.length ? `active: ${stats.activeReasons.join(', ')}` : '',\n ].filter(Boolean).join(' | ');\n}\n\nfunction createPerformanceMonitorOverlay(doc: Document): PerformanceMonitorOverlayElements {\n const root = doc.createElement('section');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');\n root.dataset.editorPerformanceMonitorOverlay = 'true';\n root.setAttribute('aria-label', '编辑器性能监控');\n root.style.cssText = [\n 'position:absolute',\n 'right:14px',\n 'top:48px',\n 'z-index:4',\n 'display:none',\n 'width:226px',\n 'box-sizing:border-box',\n 'padding:10px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:6px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 88%, transparent)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'backdrop-filter:blur(6px)',\n 'font-family:var(--fps-editor-font)',\n 'font-size:11px',\n 'font-weight:800',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n 'max-height:calc(100% - 64px)',\n 'overflow:auto',\n ].join(';');\n\n const header = doc.createElement('div');\n header.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;';\n const title = doc.createElement('div');\n title.textContent = 'Performance';\n title.style.cssText = 'min-width:0;color:var(--fps-editor-text-strong);font-size:12px;font-weight:900;line-height:1.2;';\n const modeLabel = doc.createElement('span');\n modeLabel.textContent = 'IDLE';\n modeLabel.style.cssText = [\n 'flex:0 0 auto',\n 'padding:2px 5px',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:4px',\n 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',\n 'color:var(--fps-editor-muted)',\n 'font-size:9px',\n 'line-height:1',\n 'font-weight:900',\n ].join(';');\n header.append(title, modeLabel);\n\n const grid = doc.createElement('div');\n grid.style.cssText = [\n 'display:grid',\n 'grid-template-columns:minmax(0,1fr) minmax(48px,auto)',\n 'gap:5px 10px',\n 'align-items:center',\n ].join(';');\n const values = {} as Record<PerformanceMonitorMetricKey, HTMLSpanElement>;\n for (const group of PERFORMANCE_MONITOR_METRIC_GROUPS) {\n if (group.title) {\n const groupTitle = doc.createElement('div');\n groupTitle.textContent = group.title;\n groupTitle.title = group.description ?? group.title;\n groupTitle.setAttribute('aria-label', group.description ?? group.title);\n groupTitle.style.cssText = [\n 'grid-column:1/-1',\n 'margin-top:3px',\n 'padding-top:6px',\n 'border-top:1px solid color-mix(in srgb, var(--fps-editor-border-soft) 72%, transparent)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:10px',\n 'font-weight:900',\n 'line-height:1',\n 'cursor:help',\n ].join(';');\n grid.appendChild(groupTitle);\n }\n for (const metric of group.metrics) {\n const rowLabel = doc.createElement('span');\n rowLabel.textContent = metric.label;\n rowLabel.title = metric.description;\n rowLabel.setAttribute('aria-label', `${metric.label}: ${metric.description}`);\n rowLabel.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-muted-strong)',\n 'cursor:help',\n ].join(';');\n const value = doc.createElement('span');\n value.textContent = '--';\n value.title = metric.description;\n value.setAttribute('aria-label', `${metric.label}: --。${metric.description}`);\n value.style.cssText = [\n 'min-width:48px',\n 'justify-self:end',\n 'font-variant-numeric:tabular-nums',\n 'color:var(--fps-editor-text-strong)',\n 'text-align:right',\n 'cursor:help',\n ].join(';');\n values[metric.key] = value;\n grid.append(rowLabel, value);\n }\n }\n\n root.append(header, grid);\n return { root, modeLabel, values };\n}\n\nfunction renderPerformanceMonitorOverlay(\n overlay: PerformanceMonitorOverlayElements,\n stats: LocalEditorBrowserPerformanceStats | null,\n open: boolean,\n): void {\n if (!open) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = 'block';\n overlay.modeLabel.textContent = stats?.mode === 'continuous' ? 'LIVE' : 'IDLE';\n overlay.modeLabel.style.color = stats?.mode === 'continuous'\n ? 'var(--fps-editor-success)'\n : 'var(--fps-editor-muted)';\n for (const group of PERFORMANCE_MONITOR_METRIC_GROUPS) {\n for (const metric of group.metrics) {\n const value = metric.format(stats);\n overlay.values[metric.key].textContent = value;\n overlay.values[metric.key].setAttribute('aria-label', `${metric.label}: ${value}。${metric.description}`);\n }\n }\n overlay.root.title = [\n '悬停各项查看中文解释',\n stats ? `mode: ${stats.mode}` : 'mode: unknown',\n stats?.activeReasons.length ? `active: ${stats.activeReasons.join(', ')}` : '',\n ].filter(Boolean).join(' | ');\n}\n\nfunction createPrefabImportStatsOverlay(doc: Document): PrefabImportStatsOverlayElements {\n const root = doc.createElement('section');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-overlay-card');\n root.dataset.editorPrefabImportStatsOverlay = 'true';\n root.setAttribute('aria-label', 'Prefab import diagnostics');\n root.style.cssText = [\n 'display:none',\n 'width:236px',\n 'max-width:100%',\n 'box-sizing:border-box',\n 'padding:10px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:6px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 88%, transparent)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'backdrop-filter:blur(6px)',\n 'font-family:var(--fps-editor-font)',\n 'font-size:11px',\n 'font-weight:800',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n ].join(';');\n\n const header = doc.createElement('div');\n header.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;';\n const title = doc.createElement('div');\n title.textContent = 'Prefab Import';\n title.style.cssText = 'min-width:0;color:var(--fps-editor-text-strong);font-size:12px;font-weight:900;line-height:1.2;';\n const modeLabel = doc.createElement('span');\n modeLabel.textContent = 'MISSING';\n modeLabel.style.cssText = [\n 'flex:0 0 auto',\n 'padding:2px 5px',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:4px',\n 'background:color-mix(in srgb, var(--fps-editor-field) 72%, transparent)',\n 'color:var(--fps-editor-muted)',\n 'font-size:9px',\n 'line-height:1',\n 'font-weight:900',\n ].join(';');\n header.append(title, modeLabel);\n\n const grid = doc.createElement('div');\n grid.style.cssText = [\n 'display:grid',\n 'grid-template-columns:minmax(0,1fr) minmax(76px,108px)',\n 'gap:5px 10px',\n 'align-items:center',\n ].join(';');\n const values = {} as Record<PrefabImportStatsMetricKey, HTMLSpanElement>;\n for (const metric of PREFAB_IMPORT_STATS_METRICS) {\n const rowLabel = doc.createElement('span');\n rowLabel.textContent = metric.label;\n rowLabel.title = metric.description;\n rowLabel.setAttribute('aria-label', `${metric.label}: ${metric.description}`);\n rowLabel.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-muted-strong)',\n 'cursor:help',\n ].join(';');\n const value = doc.createElement('span');\n value.textContent = '--';\n value.title = metric.description;\n value.setAttribute('aria-label', `${metric.label}: --。${metric.description}`);\n value.style.cssText = [\n 'min-width:0',\n 'justify-self:end',\n 'max-width:108px',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-variant-numeric:tabular-nums',\n 'color:var(--fps-editor-text-strong)',\n 'text-align:right',\n 'cursor:help',\n ].join(';');\n values[metric.key] = value;\n grid.append(rowLabel, value);\n }\n\n root.append(header, grid);\n return { root, modeLabel, values };\n}\n\nfunction renderPrefabImportStatsOverlay(\n overlay: PrefabImportStatsOverlayElements,\n stage: LocalEditorBrowserPrefabStageState | null,\n): void {\n if (!stage) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = 'block';\n const stats = stage.importStats ?? null;\n const status = stats?.status ?? (stage.importStructureReady === false ? 'loading' : 'missing');\n overlay.modeLabel.textContent = formatPrefabImportStatsStatusLabel(status);\n overlay.modeLabel.style.color = status === 'ready'\n ? 'var(--fps-editor-success)'\n : status === 'loading'\n ? 'var(--fps-editor-warn)'\n : 'var(--fps-editor-danger-strong)';\n\n for (const metric of PREFAB_IMPORT_STATS_METRICS) {\n const value = metric.format(stats);\n overlay.values[metric.key].textContent = value;\n overlay.values[metric.key].title = `${metric.description}\\n${value}`;\n overlay.values[metric.key].setAttribute('aria-label', `${metric.label}: ${value}。${metric.description}`);\n }\n overlay.root.title = [\n `status: ${status}`,\n stats?.projectionNodeId ? `preview: ${stats.projectionNodeId}` : stage.previewNodeId ? `preview: ${stage.previewNodeId}` : '',\n stats?.assetId ? `asset: ${stats.assetId}` : '',\n stats?.sourceId ? `source: ${stats.sourceId}` : '',\n ].filter(Boolean).join(' | ');\n}\n\nfunction createPrefabStagePreviewLayout(doc: Document): PrefabStagePreviewLayoutElements {\n const root = doc.createElement('section');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-prefab-stage-layout');\n root.dataset.editorPrefabStagePreviewLayout = 'true';\n root.setAttribute('aria-label', 'Prefab stage preview layout');\n root.style.cssText = [\n 'position:absolute',\n 'left:0',\n 'right:0',\n 'top:38px',\n 'bottom:0',\n 'z-index:4',\n 'display:none',\n 'pointer-events:none',\n 'overflow:hidden',\n 'font-family:var(--fps-editor-font)',\n ].join(';');\n\n const mainRegion = doc.createElement('div');\n mainRegion.dataset.editorPrefabStageMainPreview = 'true';\n mainRegion.style.cssText = [\n 'position:absolute',\n 'left:0',\n 'top:0',\n 'bottom:0',\n 'right:0',\n 'min-width:0',\n 'overflow:hidden',\n 'pointer-events:none',\n ].join(';');\n\n root.append(mainRegion);\n return { root, mainRegion };\n}\n\nfunction formatPrefabImportStatsStatusLabel(status: LocalEditorBrowserPrefabStageImportStats['status']): string {\n return status === 'ready' ? 'READY' : status === 'loading' ? 'LOADING' : 'MISSING';\n}\n\nfunction formatPerformanceInteger(value: number | null): string {\n return typeof value === 'number' && Number.isFinite(value) ? String(Math.round(value)) : '--';\n}\n\nfunction formatPerformanceFrameMs(value: number | null): string {\n return typeof value === 'number' && Number.isFinite(value) ? `${value.toFixed(1)}ms` : '--';\n}\n\nfunction formatPerformanceClassBreakdown(\n stats: LocalEditorBrowserPerformanceStats | null,\n key: PerformanceMonitorMeshClassCountKey,\n): string {\n return formatPerformanceActiveTotal(\n stats?.activeMeshClassCounts?.[key] ?? null,\n stats?.meshClassCounts?.[key] ?? null,\n );\n}\n\nfunction formatPerformanceCategoryBreakdown(\n stats: LocalEditorBrowserPerformanceStats | null,\n key: PerformanceMonitorMeshCategoryCountKey,\n): string {\n return formatPerformanceActiveTotal(\n stats?.activeMeshCategoryCounts?.[key] ?? null,\n stats?.meshCategoryCounts?.[key] ?? null,\n );\n}\n\nfunction formatPerformanceProjectionRoleBreakdown(\n stats: LocalEditorBrowserPerformanceStats | null,\n key: PerformanceMonitorProjectionRoleCountKey,\n): string {\n return formatPerformanceActiveTotal(\n stats?.activeProjectionRoleCounts?.[key] ?? null,\n stats?.projectionRoleCounts?.[key] ?? null,\n );\n}\n\nfunction formatPerformanceActiveTotal(active: number | null, total: number | null): string {\n if (!isFinitePerformanceNumber(active) || !isFinitePerformanceNumber(total)) return '--';\n return `${Math.round(active)}/${Math.round(total)}`;\n}\n\nfunction isFinitePerformanceNumber(value: number | null): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction createCoordinateAxesOverlay(doc: Document): CoordinateAxesOverlayElements {\n const root = doc.createElement('div');\n root.dataset.editorCoordinateAxesOverlay = 'true';\n root.style.cssText = [\n 'position:absolute',\n 'right:14px',\n 'bottom:14px',\n 'width:112px',\n 'height:112px',\n 'display:none',\n 'z-index:2',\n 'box-sizing:border-box',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 78%, transparent)',\n 'border-radius:8px',\n 'background:color-mix(in srgb, var(--fps-editor-chrome) 58%, transparent)',\n 'box-shadow:var(--fps-editor-shadow-panel)',\n 'pointer-events:none',\n 'overflow:hidden',\n ].join(';');\n\n const svg = doc.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 112 112');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.cssText = 'display:block;width:100%;height:100%';\n root.appendChild(svg);\n\n const lineLayer = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n const labelLayer = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n svg.appendChild(lineLayer);\n svg.appendChild(labelLayer);\n\n const axisGroups = new Map<string, SVGGElement>();\n const axisLines = new Map<string, SVGLineElement>();\n const axisLabels = new Map<string, SVGTextElement>();\n const axisDiscs = new Map<string, SVGCircleElement>();\n for (const axis of ['x', 'y', 'z']) {\n const group = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n const line = doc.createElementNS('http://www.w3.org/2000/svg', 'line');\n line.setAttribute('stroke-width', '3.2');\n line.setAttribute('stroke-linecap', 'round');\n line.setAttribute('x1', '56');\n line.setAttribute('y1', '56');\n const disc = doc.createElementNS('http://www.w3.org/2000/svg', 'circle');\n disc.setAttribute('r', '7');\n const label = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n label.setAttribute('text-anchor', 'middle');\n label.setAttribute('dominant-baseline', 'middle');\n label.setAttribute('dy', '0.04em');\n label.style.cssText = [\n 'fill:#172033',\n 'font-size:10px',\n 'font-weight:900',\n 'font-family:Arial, Helvetica, sans-serif',\n 'letter-spacing:0',\n ].join(';');\n group.appendChild(disc);\n group.appendChild(label);\n lineLayer.appendChild(line);\n labelLayer.appendChild(group);\n axisGroups.set(axis, group);\n axisLines.set(axis, line);\n axisLabels.set(axis, label);\n axisDiscs.set(axis, disc);\n }\n\n const centerDot = doc.createElementNS('http://www.w3.org/2000/svg', 'circle');\n centerDot.setAttribute('cx', '56');\n centerDot.setAttribute('cy', '56');\n centerDot.setAttribute('r', '3.2');\n centerDot.setAttribute('fill', 'color-mix(in srgb, var(--fps-editor-text) 82%, transparent)');\n labelLayer.appendChild(centerDot);\n\n const projectionIcon = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n projectionIcon.setAttribute('transform', 'translate(8 8)');\n projectionIcon.setAttribute('role', 'button');\n projectionIcon.setAttribute('tabindex', '0');\n projectionIcon.dataset.coordinateAxesProjectionToggle = 'true';\n projectionIcon.style.cssText = 'opacity:0.92;pointer-events:auto;cursor:pointer;outline:none';\n const projectionIconFrame = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n projectionIconFrame.setAttribute('x', '0');\n projectionIconFrame.setAttribute('y', '0');\n projectionIconFrame.setAttribute('width', '18');\n projectionIconFrame.setAttribute('height', '18');\n projectionIconFrame.setAttribute('rx', '4');\n projectionIconFrame.setAttribute('fill', 'color-mix(in srgb, var(--fps-editor-chrome) 78%, transparent)');\n projectionIconFrame.setAttribute('stroke', 'color-mix(in srgb, var(--fps-editor-border) 82%, transparent)');\n projectionIconFrame.setAttribute('stroke-width', '1');\n const projectionIconShape = doc.createElementNS('http://www.w3.org/2000/svg', 'path');\n projectionIconShape.setAttribute('fill', 'none');\n projectionIconShape.setAttribute('stroke', 'color-mix(in srgb, var(--fps-editor-accent) 82%, #ffffff)');\n projectionIconShape.setAttribute('stroke-width', '1.6');\n projectionIconShape.setAttribute('stroke-linejoin', 'round');\n projectionIconShape.setAttribute('stroke-linecap', 'round');\n projectionIcon.appendChild(projectionIconFrame);\n projectionIcon.appendChild(projectionIconShape);\n svg.appendChild(projectionIcon);\n\n return {\n root,\n lineLayer,\n labelLayer,\n axisGroups,\n axisLines,\n axisLabels,\n axisDiscs,\n centerDot,\n projectionIcon,\n projectionIconShape,\n };\n}\n\nfunction renderCoordinateAxesOverlay(\n overlay: CoordinateAxesOverlayElements,\n state: LocalEditorBrowserCoordinateAxesState | null,\n): void {\n if (!state?.axes?.length) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = '';\n renderCoordinateAxesProjectionIcon(overlay, state.projectionMode, state.projectionToggleDisabled === true);\n const center = 56;\n const lineLength = 38;\n const sortedAxes = [...state.axes].sort((left, right) => right.depth - left.depth);\n for (const axis of sortedAxes) {\n const group = overlay.axisGroups.get(axis.id);\n const line = overlay.axisLines.get(axis.id);\n const disc = overlay.axisDiscs.get(axis.id);\n const label = overlay.axisLabels.get(axis.id);\n if (!group || !line || !disc || !label) continue;\n const length = lineLength * axis.scale;\n const endX = center + axis.x * length;\n const endY = center + axis.y * length;\n line.setAttribute('x2', formatSvgNumber(endX));\n line.setAttribute('y2', formatSvgNumber(endY));\n line.setAttribute('stroke', axis.color);\n disc.setAttribute('cx', formatSvgNumber(endX));\n disc.setAttribute('cy', formatSvgNumber(endY));\n disc.setAttribute('fill', axis.color);\n label.setAttribute('x', formatSvgNumber(endX));\n label.setAttribute('y', formatSvgNumber(endY));\n label.textContent = axis.label;\n group.style.opacity = String(0.72 + axis.scale * 0.28);\n overlay.lineLayer.appendChild(line);\n overlay.labelLayer.appendChild(group);\n }\n overlay.labelLayer.appendChild(overlay.centerDot);\n}\n\nfunction renderCoordinateAxesProjectionIcon(\n overlay: CoordinateAxesOverlayElements,\n mode: LocalEditorBrowserViewportProjectionMode,\n disabled: boolean,\n): void {\n overlay.projectionIcon.dataset.viewportProjectionMode = mode;\n overlay.projectionIcon.setAttribute(\n 'aria-label',\n disabled\n ? `编辑视口投影:${VIEWPORT_PROJECTION_LABELS[mode]},Main Camera 预览中不可切换`\n : `编辑视口投影:${VIEWPORT_PROJECTION_LABELS[mode]},点击切换`,\n );\n overlay.projectionIcon.setAttribute('aria-disabled', disabled ? 'true' : 'false');\n overlay.projectionIcon.style.opacity = disabled ? '0.46' : '0.92';\n overlay.projectionIcon.style.cursor = disabled ? 'not-allowed' : 'pointer';\n overlay.projectionIconShape.setAttribute(\n 'd',\n mode === 'orthographic'\n ? 'M5 6.5H12.5V14H5ZM7.5 4H15V11.5'\n : 'M4.5 14H13.5L10.5 4H7.5ZM7 10.5H11',\n );\n}\n\ninterface SpatialOverlayElements {\n root: HTMLDivElement;\n svg: SVGSVGElement;\n lineLayer: SVGGElement;\n markerLayer: SVGGElement;\n labelLayer: HTMLDivElement;\n lines: Map<string, SVGLineElement>;\n markers: Map<string, SVGCircleElement>;\n labels: Map<string, HTMLDivElement>;\n}\n\nfunction createSpatialOverlay(doc: Document): SpatialOverlayElements {\n const root = doc.createElement('div');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorSpatialOverlay = 'true';\n root.style.cssText = [\n 'position:absolute',\n 'top:38px',\n 'left:0',\n 'right:0',\n 'bottom:0',\n 'z-index:1',\n 'display:none',\n 'pointer-events:none',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'overflow:hidden',\n ].join(';');\n\n const svg = doc.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.cssText = [\n 'position:absolute',\n 'inset:0',\n 'width:100%',\n 'height:100%',\n 'overflow:hidden',\n ].join(';');\n const lineLayer = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n const markerLayer = doc.createElementNS('http://www.w3.org/2000/svg', 'g');\n svg.appendChild(lineLayer);\n svg.appendChild(markerLayer);\n root.appendChild(svg);\n\n const labelLayer = doc.createElement('div');\n labelLayer.style.cssText = 'position:absolute;inset:0;pointer-events:none';\n root.appendChild(labelLayer);\n\n return {\n root,\n svg,\n lineLayer,\n markerLayer,\n labelLayer,\n lines: new Map(),\n markers: new Map(),\n labels: new Map(),\n };\n}\n\nfunction renderSpatialOverlay(\n overlay: SpatialOverlayElements,\n state: LocalEditorBrowserViewportSpatialOverlayState | null,\n): void {\n if (!state?.active) {\n overlay.root.style.display = 'none';\n clearSpatialOverlayElements(overlay);\n return;\n }\n overlay.root.style.display = '';\n const rect = overlay.root.getBoundingClientRect();\n overlay.svg.setAttribute('width', formatSvgNumber(rect.width));\n overlay.svg.setAttribute('height', formatSvgNumber(rect.height));\n overlay.svg.setAttribute('viewBox', `0 0 ${formatSvgNumber(rect.width)} ${formatSvgNumber(rect.height)}`);\n\n const visibleLineIds = new Set<string>();\n for (const lineState of state.lines) {\n const line = ensureSpatialOverlayLine(overlay, lineState.id);\n line.setAttribute('x1', formatSvgNumber(lineState.start.x - rect.left));\n line.setAttribute('y1', formatSvgNumber(lineState.start.y - rect.top));\n line.setAttribute('x2', formatSvgNumber(lineState.end.x - rect.left));\n line.setAttribute('y2', formatSvgNumber(lineState.end.y - rect.top));\n visibleLineIds.add(lineState.id);\n }\n for (const [id, line] of overlay.lines) {\n if (!visibleLineIds.has(id)) {\n line.remove();\n overlay.lines.delete(id);\n }\n }\n\n const visibleMarkerIds = new Set<string>();\n for (const markerState of state.markers) {\n const marker = ensureSpatialOverlayMarker(overlay, markerState.id);\n marker.setAttribute('cx', formatSvgNumber(markerState.position.x - rect.left));\n marker.setAttribute('cy', formatSvgNumber(markerState.position.y - rect.top));\n visibleMarkerIds.add(markerState.id);\n }\n for (const [id, marker] of overlay.markers) {\n if (!visibleMarkerIds.has(id)) {\n marker.remove();\n overlay.markers.delete(id);\n }\n }\n\n const visibleLabelIds = new Set<string>();\n for (const labelState of state.labels) {\n const label = ensureSpatialOverlayLabel(overlay, labelState.id, labelState.kind);\n label.textContent = labelState.text;\n label.style.left = `${labelState.x - rect.left}px`;\n label.style.top = `${labelState.y - rect.top}px`;\n visibleLabelIds.add(labelState.id);\n }\n for (const [id, label] of overlay.labels) {\n if (!visibleLabelIds.has(id)) {\n label.remove();\n overlay.labels.delete(id);\n }\n }\n}\n\nfunction clearSpatialOverlayElements(overlay: SpatialOverlayElements): void {\n for (const line of overlay.lines.values()) line.remove();\n for (const marker of overlay.markers.values()) marker.remove();\n for (const label of overlay.labels.values()) label.remove();\n overlay.lines.clear();\n overlay.markers.clear();\n overlay.labels.clear();\n}\n\nfunction ensureSpatialOverlayLine(overlay: SpatialOverlayElements, id: string): SVGLineElement {\n const existing = overlay.lines.get(id);\n if (existing) return existing;\n const line = overlay.root.ownerDocument.createElementNS('http://www.w3.org/2000/svg', 'line');\n line.setAttribute('stroke', 'color-mix(in srgb, var(--fps-editor-drop-target) 82%, white)');\n line.setAttribute('stroke-width', '1.4');\n line.setAttribute('stroke-linecap', 'round');\n line.setAttribute('vector-effect', 'non-scaling-stroke');\n line.style.filter = 'drop-shadow(0 1px 2px rgba(0,0,0,0.45))';\n overlay.lineLayer.appendChild(line);\n overlay.lines.set(id, line);\n return line;\n}\n\nfunction ensureSpatialOverlayMarker(overlay: SpatialOverlayElements, id: string): SVGCircleElement {\n const existing = overlay.markers.get(id);\n if (existing) return existing;\n const marker = overlay.root.ownerDocument.createElementNS('http://www.w3.org/2000/svg', 'circle');\n marker.setAttribute('r', '4.5');\n marker.setAttribute('fill', 'var(--fps-editor-drop-target)');\n marker.setAttribute('stroke', 'var(--fps-editor-panel)');\n marker.setAttribute('stroke-width', '2');\n marker.style.filter = 'drop-shadow(0 1px 2px rgba(0,0,0,0.5))';\n overlay.markerLayer.appendChild(marker);\n overlay.markers.set(id, marker);\n return marker;\n}\n\nfunction ensureSpatialOverlayLabel(\n overlay: SpatialOverlayElements,\n id: string,\n kind: LocalEditorBrowserViewportSpatialOverlayState['labels'][number]['kind'],\n): HTMLDivElement {\n const existing = overlay.labels.get(id);\n if (existing) return existing;\n const label = overlay.root.ownerDocument.createElement('div');\n label.dataset.editorSpatialOverlayLabel = kind;\n label.style.cssText = [\n 'position:absolute',\n 'transform:translate(-50%, -50%)',\n 'max-width:220px',\n 'padding:2px 5px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-border) 82%, transparent)',\n 'border-radius:3px',\n 'background:color-mix(in srgb, var(--fps-editor-panel) 88%, transparent)',\n 'box-shadow:0 1px 4px rgba(0,0,0,0.22)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:10px',\n 'font-weight:900',\n 'line-height:1.25',\n 'letter-spacing:0',\n 'white-space:nowrap',\n ].join(';');\n if (kind === 'anchor') label.style.color = 'var(--fps-editor-drop-target)';\n overlay.labelLayer.appendChild(label);\n overlay.labels.set(id, label);\n return label;\n}\n\ninterface MeasurementOverlayElements {\n root: HTMLDivElement;\n svg: SVGSVGElement;\n line: SVGLineElement;\n startMarker: SVGCircleElement;\n endMarker: SVGCircleElement;\n label: HTMLDivElement;\n}\n\nfunction createMeasurementOverlay(doc: Document): MeasurementOverlayElements {\n const root = doc.createElement('div');\n root.classList.add(LOCAL_EDITOR_THEME_CLASS);\n root.dataset.editorMeasurementOverlay = 'true';\n root.style.cssText = [\n 'position:absolute',\n 'top:38px',\n 'left:0',\n 'right:0',\n 'bottom:0',\n 'z-index:2',\n 'display:none',\n 'pointer-events:none',\n 'overflow:hidden',\n 'font-family:var(--fps-editor-font)',\n ].join(';');\n const svg = doc.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;overflow:hidden';\n const line = doc.createElementNS('http://www.w3.org/2000/svg', 'line');\n line.setAttribute('stroke', 'var(--fps-editor-drop-target)');\n line.setAttribute('stroke-width', '2');\n line.setAttribute('stroke-linecap', 'round');\n line.setAttribute('vector-effect', 'non-scaling-stroke');\n line.style.filter = 'drop-shadow(0 1px 2px rgba(0,0,0,0.5))';\n const startMarker = createMeasurementMarker(doc);\n const endMarker = createMeasurementMarker(doc);\n svg.appendChild(line);\n svg.appendChild(startMarker);\n svg.appendChild(endMarker);\n root.appendChild(svg);\n const label = doc.createElement('div');\n label.dataset.editorMeasurementLabel = 'true';\n label.style.cssText = [\n 'position:absolute',\n 'transform:translate(-50%, -50%)',\n 'padding:3px 6px',\n 'border:1px solid color-mix(in srgb, var(--fps-editor-drop-target) 72%, var(--fps-editor-border))',\n 'border-radius:3px',\n 'background:color-mix(in srgb, var(--fps-editor-panel) 90%, transparent)',\n 'box-shadow:0 1px 4px rgba(0,0,0,0.24)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:10px',\n 'font-weight:900',\n 'line-height:1.25',\n 'letter-spacing:0',\n 'white-space:nowrap',\n ].join(';');\n root.appendChild(label);\n return { root, svg, line, startMarker, endMarker, label };\n}\n\nfunction createMeasurementMarker(doc: Document): SVGCircleElement {\n const marker = doc.createElementNS('http://www.w3.org/2000/svg', 'circle');\n marker.setAttribute('r', '4');\n marker.setAttribute('fill', 'var(--fps-editor-drop-target)');\n marker.setAttribute('stroke', 'var(--fps-editor-panel)');\n marker.setAttribute('stroke-width', '2');\n return marker;\n}\n\nfunction renderMeasurementOverlay(\n overlay: MeasurementOverlayElements,\n state: LocalEditorBrowserViewportMeasurementState | null,\n): void {\n const start = state?.screenStart ?? null;\n const end = state?.screenEnd ?? state?.screenPreview ?? null;\n if (!start || !end) {\n overlay.root.style.display = 'none';\n return;\n }\n overlay.root.style.display = '';\n const rect = overlay.root.getBoundingClientRect();\n overlay.svg.setAttribute('width', formatSvgNumber(rect.width));\n overlay.svg.setAttribute('height', formatSvgNumber(rect.height));\n overlay.svg.setAttribute('viewBox', `0 0 ${formatSvgNumber(rect.width)} ${formatSvgNumber(rect.height)}`);\n const startX = start.x - rect.left;\n const startY = start.y - rect.top;\n const endX = end.x - rect.left;\n const endY = end.y - rect.top;\n overlay.line.setAttribute('x1', formatSvgNumber(startX));\n overlay.line.setAttribute('y1', formatSvgNumber(startY));\n overlay.line.setAttribute('x2', formatSvgNumber(endX));\n overlay.line.setAttribute('y2', formatSvgNumber(endY));\n overlay.startMarker.setAttribute('cx', formatSvgNumber(startX));\n overlay.startMarker.setAttribute('cy', formatSvgNumber(startY));\n overlay.endMarker.setAttribute('cx', formatSvgNumber(endX));\n overlay.endMarker.setAttribute('cy', formatSvgNumber(endY));\n overlay.label.textContent = state?.label?.text ?? '';\n overlay.label.style.display = state?.label ? '' : 'none';\n if (state?.label) {\n overlay.label.style.left = `${state.label.x - rect.left}px`;\n overlay.label.style.top = `${state.label.y - rect.top}px`;\n }\n}\n\nfunction formatSvgNumber(value: number): string {\n return Number.isFinite(value) ? value.toFixed(2) : '0';\n}\n\nfunction isLocalEditorAssetBrowserTab(value: unknown): value is LocalEditorAssetBrowserTab {\n return value === 'all' || value === 'models' || value === 'prefabs' || value === 'materials' || value === 'textures';\n}\n\nexport function createAssetBrowserMenuItems<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n asset: LocalEditorBrowserUiAssetItem,\n): LocalEditorContextMenuItem[] {\n const assetKind = resolveLocalEditorBrowserAssetKind(asset);\n const placeable = asset.placeable !== false && asset.disabled !== true;\n const activeId = state.activeId;\n const inPrefabStage = !!state.prefabStage;\n const items: LocalEditorContextMenuItem[] = [];\n if (assetKind === 'material') {\n const deleteDisabledReason = getMaterialAssetDeleteDisabledReason(asset);\n items.push({\n id: 'asset.edit-material',\n label: '编辑材质球',\n disabled: !asset.material,\n disabledReason: '该材质资产缺少可编辑参数。',\n });\n items.push({\n id: 'asset.duplicate-material',\n label: '复制材质',\n disabled: !asset.assetId,\n disabledReason: '该材质资产缺少可复制的材质 ID。',\n });\n items.push({\n id: 'asset.delete-material',\n label: '删除材质',\n danger: true,\n separatorBefore: true,\n disabled: !!deleteDisabledReason,\n disabledReason: deleteDisabledReason,\n });\n } else if (assetKind === 'texture' && asset.preview) {\n items.push({\n id: 'asset.preview',\n label: '查看贴图预览',\n });\n } else if (assetKind === 'prefab') {\n if (inPrefabStage) {\n items.push({\n id: 'asset.add-to-current-prefab',\n label: '添加到当前 Prefab',\n disabled: !placeable,\n disabledReason: '该 Prefab 当前不可添加到当前 Prefab。',\n });\n }\n items.push({\n id: 'asset.rename',\n label: '重命名 Prefab',\n disabled: !asset.assetId && !asset.id,\n disabledReason: '该预制体资产缺少可重命名的资产 ID。',\n });\n items.push({\n id: 'asset.edit-prefab',\n label: inPrefabStage ? '打开 Prefab Stage' : '编辑 Prefab',\n separatorBefore: inPrefabStage ? true : undefined,\n disabled: !asset.prefab,\n disabledReason: '该预制体资产缺少可编辑参数。',\n });\n items.push({\n id: 'asset.duplicate-prefab',\n label: '复制 Prefab',\n disabled: !asset.assetId && !asset.id,\n disabledReason: '该预制体资产缺少可复制的 Prefab ID。',\n });\n }\n\n if (assetKind === 'material') {\n items.push({\n id: 'asset.apply-material',\n label: '应用到当前 GameObject',\n separatorBefore: true,\n disabled: !activeId,\n disabledReason: '请先在 Hierarchy 或 Scene View 中选择一个 GameObject。',\n });\n } else if (assetKind === 'texture') {\n if (!inPrefabStage) {\n items.push({\n id: 'asset.add-to-scene',\n label: '作为地贴添加到场景',\n separatorBefore: asset.preview ? true : undefined,\n disabled: !placeable,\n disabledReason: '该贴图当前不可放置。',\n });\n items.push({\n id: 'asset.place',\n label: '进入地面放置模式',\n disabled: !placeable,\n disabledReason: '该贴图当前不可放置。',\n });\n }\n items.push({\n id: 'asset.use-base-texture',\n label: '用作当前材质 Base 图',\n disabled: true,\n disabledReason: 'Base 图材质字段将在下一步接入。',\n separatorBefore: true,\n });\n items.push({\n id: 'asset.use-emission-mask',\n label: '用作当前材质自发光遮罩',\n disabled: true,\n disabledReason: '自发光遮罩绑定将在下一步接入。',\n });\n } else if (assetKind === 'prefab') {\n if (!inPrefabStage) {\n items.push({\n id: 'asset.add-to-scene',\n label: '添加 Prefab 到场景',\n separatorBefore: true,\n disabled: !placeable,\n disabledReason: '该 Prefab 当前不可放置。',\n });\n items.push({\n id: 'asset.place',\n label: '进入 Prefab 放置模式',\n disabled: !placeable,\n disabledReason: '该 Prefab 当前不可放置。',\n });\n }\n } else {\n if (inPrefabStage) {\n items.push({\n id: 'asset.add-to-current-prefab',\n label: '添加到当前 Prefab',\n disabled: !placeable,\n disabledReason: '该模型当前不可添加到当前 Prefab。',\n });\n }\n if (!inPrefabStage) {\n items.push({\n id: 'asset.add-to-scene',\n label: '添加到场景',\n disabled: !placeable,\n disabledReason: '该模型当前不可放置。',\n });\n items.push({\n id: 'asset.place',\n label: '进入放置模式',\n disabled: !placeable,\n disabledReason: '该模型当前不可放置。',\n });\n items.push({\n id: 'asset.create-prefab',\n label: '创建 Prefab',\n disabled: !asset.assetId && !asset.id,\n disabledReason: '该模型缺少可创建 Prefab 的 Asset ID。',\n separatorBefore: true,\n });\n items.push({\n id: 'asset.add-as-child',\n label: '添加为当前节点子对象',\n disabled: true,\n disabledReason: '子对象添加动作将在资产 patch 中接入。',\n });\n items.push({\n id: 'asset.replace-selected-model',\n label: '替换当前模型',\n disabled: true,\n disabledReason: '模型替换动作将在资产 patch 中接入。',\n });\n }\n }\n\n items.push({\n id: 'asset.copy-id',\n label: '复制 Asset ID',\n separatorBefore: true,\n });\n return items;\n}\n\nfunction getMaterialAssetDeleteDisabledReason(asset: LocalEditorBrowserUiAssetItem): string | undefined {\n if (!asset.assetId) return '该材质资产缺少可删除的材质 ID。';\n if (!asset.material) return '该材质资产缺少可删除的材质数据。';\n if (asset.material.readonly) return '系统默认材质不可删除。';\n const usageCount = asset.material.usage?.count ?? 0;\n if (usageCount > 0) return `该材质正在被 ${usageCount} 处使用,请先替换或解绑。`;\n return undefined;\n}\n\nfunction createAssetBrowserActionInput(\n actionId: string,\n asset: LocalEditorBrowserUiAssetItem,\n context?: { targetPrefabAssetId?: string; parentNodeId?: string },\n): LocalEditorBrowserAssetActionInput {\n return {\n actionId,\n assetId: asset.assetId ?? asset.id,\n browserAssetId: asset.id,\n assetKind: asset.kind ?? resolveLocalEditorBrowserAssetKind(asset),\n ...(context?.targetPrefabAssetId ? { targetPrefabAssetId: context.targetPrefabAssetId } : {}),\n ...(context?.parentNodeId ? { parentNodeId: context.parentNodeId } : {}),\n };\n}\n\nexport function resolveAssetBrowserDoubleClickAction<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n asset: LocalEditorBrowserUiAssetItem,\n): string | null {\n const assetKind = resolveLocalEditorBrowserAssetKind(asset);\n if (state.prefabStage && (assetKind === 'model' || assetKind === 'prefab')) return 'asset.add-to-current-prefab';\n if (!state.prefabStage && assetKind === 'prefab') return 'asset.edit-prefab';\n return null;\n}\n\nfunction copyTextToClipboard(\n win: Window | null,\n text: string,\n onResult?: (copied: boolean) => void,\n): void {\n void writeLocalEditorClipboardText(win, text).then(onResult ?? (() => undefined));\n}\n\nfunction copyEditorStatusText(button: HTMLButtonElement, win: Window | null, text: string): void {\n const idleLabel = button.getAttribute('aria-label') ?? '复制诊断';\n copyTextToClipboard(win, text, copied => {\n const resultLabel = copied ? '已复制' : '复制失败,请检查浏览器剪贴板权限';\n button.dataset.editorStatusCopyResult = copied ? 'success' : 'error';\n button.title = resultLabel;\n button.setAttribute('aria-label', resultLabel);\n win?.setTimeout(() => {\n delete button.dataset.editorStatusCopyResult;\n button.title = idleLabel;\n button.setAttribute('aria-label', idleLabel);\n }, 1600);\n });\n}\n\nfunction readInspectorAssetPickerOptions<TDocument>(\n property: LocalEditorBrowserInspectorProperty<TDocument>,\n): { title: string; candidates: LocalEditorBrowserInspectorAssetPickerOption[] } {\n const title = readControlOptionString(property, 'pickerTitle') || property.label;\n const rawCandidates = property.controlOptions?.candidates;\n const candidates = Array.isArray(rawCandidates)\n ? rawCandidates.flatMap(readInspectorAssetPickerOption)\n : [];\n return { title, candidates };\n}\n\nfunction readInspectorAssetPickerOption(value: unknown): LocalEditorBrowserInspectorAssetPickerOption[] {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return [];\n const record = value as Record<string, unknown>;\n const label = typeof record.label === 'string' ? record.label : '';\n const optionValue = typeof record.value === 'string' ? record.value : '';\n if (!label && !optionValue) return [];\n return [{\n label: label || optionValue,\n value: optionValue,\n ...(typeof record.meta === 'string' ? { meta: record.meta } : {}),\n ...(typeof record.kind === 'string' ? { kind: record.kind } : {}),\n ...(isAssetPreview(record.preview) ? { preview: record.preview } : {}),\n }];\n}\n\nfunction readControlOptionString<TDocument>(\n property: LocalEditorBrowserInspectorProperty<TDocument>,\n key: string,\n): string {\n const value = property.controlOptions?.[key];\n return typeof value === 'string' ? value : '';\n}\n\nfunction isAssetPreview(value: unknown): value is LocalEditorBrowserAssetPreview {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n if (record.kind === 'image') return typeof record.url === 'string' && record.url.length > 0;\n return record.kind === 'material-sphere';\n}\n\nfunction findInspectorPropertyForInput<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n input: HTMLInputElement | HTMLSelectElement,\n): LocalEditorBrowserInspectorProperty<TDocument> | null {\n const path = input.dataset.serializedPath;\n if (!path) return null;\n const objects = [state.inspectorObject, state.inspectorMultiObject].filter(Boolean) as Array<NonNullable<LocalEditorBrowserUiState<TDocument>['inspectorObject']>>;\n for (const object of objects) {\n for (const section of object.sections) {\n const property = section.properties.find(candidate => candidate.path === path);\n if (property) return property;\n }\n }\n return null;\n}\n\nfunction findRenderingPropertyForInput<TDocument>(\n state: LocalEditorBrowserUiState<TDocument>,\n input: HTMLInputElement,\n): LocalEditorBrowserInspectorProperty<TDocument> | null {\n const sectionId = input.dataset.renderingSectionId;\n const systemId = input.dataset.renderingSystemId;\n const path = input.dataset.renderingPath;\n if (!sectionId || !systemId || !path) return null;\n const renderingPanel = state.renderingPanel;\n const section = renderingPanel?.sections.find(candidate => candidate.id === sectionId);\n const system = section?.systems.find(candidate => candidate.id === systemId);\n const property = system?.properties.find(candidate => candidate.path === path);\n if (!property) return null;\n const readOnly = system?.readOnly === true || property.readOnly === true || property.disabled === true;\n return {\n path: property.path,\n label: property.label,\n valueType: property.valueType === 'string-list' ? 'string' : property.valueType,\n control: property.control === 'asset-picker-card'\n ? readOnly ? 'readonly' : 'custom'\n : property.control === 'string-list'\n ? readOnly ? 'readonly' : 'string'\n : property.control,\n customControl: property.control === 'asset-picker-card' ? 'asset-picker-card' : undefined,\n value: property.value,\n readOnly,\n persistence: readOnly ? 'readonly' : 'document',\n commitMode: property.commitMode ?? (property.control === 'string-list' ? 'blur' : 'live'),\n tooltip: property.tooltip,\n effect: property.disabled ? 'unsupported' : undefined,\n disabledReason: property.disabledReason,\n placeholder: property.placeholder,\n min: property.min,\n max: property.max,\n step: property.step,\n options: property.options,\n controlOptions: property.controlOptions,\n tags: property.tags,\n };\n}\n\ninterface LocalEditorBrowserUiConstruction {\n addCleanup(key: string, operation: () => void): void;\n appendRootChild<TNode extends ChildNode>(child: TNode): TNode;\n removeMountedRootChildren(): void;\n}\n\ninterface LocalEditorBrowserUiConstructionError extends Error {\n readonly errors: unknown[];\n readonly retryCleanup: () => void;\n}\n\nexport function createLocalEditorBrowserUi<TDocument = unknown>(\n options: LocalEditorBrowserUiOptions<TDocument> = {},\n): LocalEditorBrowserUi<TDocument> & LocalEditorThemeController {\n const doc = options.document ?? document;\n const root = options.root ?? doc.body;\n const rootOwnership = createLocalEditorRootOwnership(root);\n const completedCleanup = new Set<string>();\n const removeMountedRootChildren = (): void => rootOwnership.removeAll();\n const cleanupOperations: Array<{ key: string; operation: () => void }> = [{\n key: 'root-children',\n operation: removeMountedRootChildren,\n }];\n const construction: LocalEditorBrowserUiConstruction = {\n addCleanup(key, operation) {\n cleanupOperations.push({ key, operation });\n },\n appendRootChild(child) {\n return rootOwnership.append(child);\n },\n removeMountedRootChildren,\n };\n const retryCleanup = (): void => {\n const errors: unknown[] = [];\n for (let index = cleanupOperations.length - 1; index >= 0; index -= 1) {\n const cleanup = cleanupOperations[index]!;\n if (completedCleanup.has(cleanup.key)) continue;\n try {\n cleanup.operation();\n completedCleanup.add(cleanup.key);\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length > 0) {\n const error = new Error('Local Editor browser UI construction cleanup failed.') as Error & {\n errors: unknown[];\n };\n error.errors = errors;\n throw error;\n }\n };\n\n try {\n const ui = createLocalEditorBrowserUiImplementation(options, construction);\n cleanupOperations.length = 0;\n completedCleanup.clear();\n return ui;\n } catch (constructionError) {\n try {\n retryCleanup();\n } catch (cleanupError) {\n const error = new Error(\n 'Local Editor browser UI construction and rollback failed.',\n ) as LocalEditorBrowserUiConstructionError;\n Object.defineProperties(error, {\n errors: { value: [constructionError, cleanupError], enumerable: true },\n retryCleanup: { value: retryCleanup, enumerable: false },\n });\n throw error;\n }\n throw constructionError;\n }\n}\n\nfunction createLocalEditorBrowserUiImplementation<TDocument = unknown>(\n options: LocalEditorBrowserUiOptions<TDocument>,\n construction: LocalEditorBrowserUiConstruction,\n): LocalEditorBrowserUi<TDocument> & LocalEditorThemeController {\n const doc = options.document ?? document;\n const root = options.root ?? doc.body;\n const callbacks = options.callbacks ?? {};\n const localTestActionsEnabled = options.localTestActions === true;\n const gameModeEntryVisible = options.gameModeEntryVisible !== false;\n ensureLocalEditorTheme(doc);\n let activeTheme: LocalEditorThemeName = normalizeLocalEditorThemeName(options.theme);\n const inputRouter = createLocalEditorWorkbenchInputRouter(doc, {\n isShortcutReserved: options.input?.isShortcutReserved,\n });\n construction.addCleanup('input-router', () => inputRouter.dispose());\n const modalDialog = createLocalEditorModalDialog({\n doc,\n host: root,\n getTheme: () => activeTheme,\n onOpenChange: open => inputRouter.setModalOpen(open, 'data-safety'),\n });\n construction.addCleanup('modal-dialog', () => modalDialog.dispose());\n const contextMenu = createLocalEditorContextMenuController(doc, (open) => {\n inputRouter.setContextMenuOpen(open);\n }, activeTheme);\n construction.addCleanup('context-menu', () => contextMenu.dispose());\n const tooltipSurfaces = new Set<HTMLElement>();\n const tooltipController = createLocalEditorTooltipController(doc, root, activeTheme, {\n scope: () => tooltipSurfaces,\n });\n construction.addCleanup('tooltip-controller', () => tooltipController.dispose());\n let currentState: LocalEditorBrowserUiState<TDocument> | null = null;\n let pendingStatusDiagnosticRequest: {\n settled: boolean;\n assetId?: string;\n path?: {\n value: string;\n scopeId?: string;\n documentRevision?: number;\n projectionRevision?: number;\n };\n } | null = null;\n let inspectorFilter = '';\n const lockedInspectorVectorGroups = new Set<string>();\n let assetBrowserTab: LocalEditorAssetBrowserTab = 'all';\n const hierarchySurface = options.hierarchy?.surface;\n if (!hierarchySurface) throw new Error('Hierarchy surface is required by the Local Editor workbench.');\n const hierarchyKernel = options.hierarchy?.kernel ?? hierarchySurface.createKernel();\n const workbenchLayout = createDefaultLocalEditorWorkbenchLayout(hierarchySurface);\n const panelRegistry = createLocalEditorPanelRegistry(workbenchLayout);\n\n const hostChrome = doc.createElement('div');\n hostChrome.dataset.editorWorkbenchRegion = 'top-bar';\n hostChrome.className = `${LOCAL_EDITOR_THEME_CLASS} fps-editor-ui-host-chrome`;\n const hostModeLabel = doc.createElement('span');\n hostModeLabel.textContent = '本地宿主 · 游戏模式';\n hostModeLabel.style.cssText = [\n 'color:var(--fps-editor-muted-strong)',\n 'font-weight:800',\n 'white-space:nowrap',\n ].join(';');\n const enterEditorButton = LocalEditorShared.createButton(doc, '进入编辑场景', { icon: 'execute' });\n hostChrome.appendChild(hostModeLabel);\n hostChrome.appendChild(enterEditorButton);\n construction.appendRootChild(hostChrome);\n tooltipSurfaces.add(hostChrome);\n\n const dirtyBadge = doc.createElement('span');\n dirtyBadge.dataset.editorDirtyBadge = 'true';\n dirtyBadge.dataset.editorTooltip = '有未保存更改';\n dirtyBadge.setAttribute('role', 'status');\n dirtyBadge.setAttribute('aria-label', '有未保存更改');\n dirtyBadge.style.cssText = [\n 'display:none',\n 'width:8px',\n 'height:8px',\n 'align-items:center',\n 'justify-content:center',\n 'padding:0',\n 'border-radius:999px',\n 'background:var(--fps-editor-danger-strong)',\n 'border:1px solid var(--fps-editor-danger-border)',\n 'box-shadow:0 0 0 3px var(--fps-editor-danger-soft)',\n ].join(';');\n\n const saveButton = LocalEditorShared.createButton(doc, '保存场景', { icon: 'save' });\n const saveAndRunButton = LocalEditorShared.createButton(doc, '保存并运行', { icon: 'execute' });\n const discardRunButton = LocalEditorShared.createButton(doc, '放弃并运行', { icon: 'discard' });\n const localTestButton = createToolbarIconButton(doc, '本地测试', 'execute', '打开本地测试操作');\n localTestButton.dataset.editorLocalTestToggle = 'true';\n const localTestMenu = doc.createElement('div');\n localTestMenu.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');\n localTestMenu.dataset.editorLocalTestMenu = 'true';\n localTestMenu.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:6px',\n 'min-width:150px',\n 'padding:8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n for (const button of [saveButton, saveAndRunButton, discardRunButton]) {\n button.style.justifyContent = 'flex-start';\n button.style.width = '100%';\n localTestMenu.appendChild(button);\n }\n const localTestGroup = doc.createElement('div');\n localTestGroup.className = 'fps-editor-ui-toolbar-group';\n localTestGroup.style.cssText = [\n `display:${localTestActionsEnabled ? 'flex' : 'none'}`,\n 'align-items:center',\n 'gap:4px',\n ].join(';');\n localTestGroup.appendChild(localTestButton);\n const undoButton = createToolbarIconButton(doc, '撤销', 'undo', '撤销');\n const redoButton = createToolbarIconButton(doc, '重做', 'redo', '重做');\n let helpOpen = false;\n let editorStatusCenterOpen = false;\n let performanceMonitorOpen = false;\n let assetPreviewOpen = false;\n let previewedAsset: LocalEditorBrowserUiAssetItem | null = null;\n let assetPreviewMode: 'preview' | 'material-editor' | 'rename' = 'preview';\n let assetPickerOpen = false;\n let assetPickerFilter = '';\n let assetPickerInput: HTMLInputElement | null = null;\n let assetPickerProperty: LocalEditorBrowserInspectorProperty<TDocument> | null = null;\n let hierarchyOperationInputRequest: {\n operation: HierarchyOperationDescriptor;\n context: HierarchyOperationContext;\n resolve(value: Readonly<Record<string, HierarchyJsonValue>> | null): void;\n } | null = null;\n let prefabStageMainWorkbenchLayoutSnapshot: LocalEditorWorkbenchLayoutState | null = null;\n\n const editorStatusButton = createToolbarIconButton(doc, '验证中心', 'status', '编辑器状态与验证中心');\n editorStatusButton.dataset.editorStatusButton = 'true';\n editorStatusButton.dataset.editorStatusToggle = 'true';\n editorStatusButton.setAttribute('aria-expanded', 'false');\n const editorStatusCenter = doc.createElement('div');\n editorStatusCenter.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover', 'fps-editor-ui-status-center');\n editorStatusCenter.dataset.editorStatusCenter = 'true';\n editorStatusCenter.style.cssText = [\n 'position:fixed',\n 'z-index:2147483642',\n 'display:none',\n 'flex-direction:column',\n 'gap:8px',\n 'width:min(440px,calc(100vw - 16px))',\n 'max-height:min(520px,calc(100vh - 56px))',\n 'padding:10px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'overflow:hidden',\n 'pointer-events:auto',\n ].join(';');\n const editorStatusCenterHeader = doc.createElement('div');\n editorStatusCenterHeader.className = 'fps-editor-ui-surface-header';\n const editorStatusCenterTitle = doc.createElement('div');\n editorStatusCenterTitle.className = 'fps-editor-ui-surface-title';\n editorStatusCenterTitle.textContent = '验证中心';\n editorStatusCenterTitle.style.cssText = 'font-size:13px;font-weight:900;color:var(--fps-editor-text-strong)';\n const editorStatusCenterActions = doc.createElement('div');\n editorStatusCenterActions.className = 'fps-editor-ui-surface-actions';\n const editorStatusCopyAllButton = LocalEditorShared.createButton(doc, '复制全部', { icon: 'copy' });\n editorStatusCopyAllButton.dataset.editorStatusCopyAll = 'true';\n editorStatusCopyAllButton.style.cssText += ';min-height:26px;padding:3px 8px;font-size:11px';\n const editorStatusCloseButton = createToolbarIconButton(doc, '关闭', 'discard', '关闭验证中心');\n editorStatusCloseButton.dataset.editorStatusClose = 'true';\n editorStatusCloseButton.style.minWidth = '28px';\n editorStatusCenterActions.appendChild(editorStatusCopyAllButton);\n editorStatusCenterActions.appendChild(editorStatusCloseButton);\n editorStatusCenterHeader.appendChild(editorStatusCenterTitle);\n editorStatusCenterHeader.appendChild(editorStatusCenterActions);\n const editorStatusCenterSummary = doc.createElement('div');\n editorStatusCenterSummary.className = 'fps-editor-ui-status-summary';\n editorStatusCenterSummary.dataset.editorStatusSummary = 'true';\n editorStatusCenterSummary.style.cssText = 'font-size:11px;line-height:1.45;color:var(--fps-editor-muted-strong)';\n const editorStatusCenterList = doc.createElement('div');\n editorStatusCenterList.className = 'fps-editor-ui-status-list';\n editorStatusCenterList.dataset.editorStatusList = 'true';\n editorStatusCenterList.style.cssText = 'display:flex;flex-direction:column;gap:7px;overflow:auto;min-height:0';\n editorStatusCenter.appendChild(editorStatusCenterHeader);\n editorStatusCenter.appendChild(editorStatusCenterSummary);\n editorStatusCenter.appendChild(editorStatusCenterList);\n const agentBridgeStatusButton = createToolbarIconButton(doc, 'Agent Bridge 状态', 'status', 'Agent Bridge 状态');\n agentBridgeStatusButton.dataset.editorAgentBridgeStatusButton = 'true';\n agentBridgeStatusButton.style.cursor = 'help';\n\n const workbench = createLocalEditorWorkbench(doc);\n const editorUiLayerHost = createEditorUiLayerHost(doc, workbench.root);\n construction.addCleanup('editor-ui-layer-host', () => editorUiLayerHost.dispose());\n const leftDockTabs = doc.createElement('div');\n const hierarchyPanel = createWorkbenchPanelContent(doc);\n const assetPanel = workbench.bottomDock;\n const rightDockTabs = doc.createElement('div');\n const inspectorPanel = createWorkbenchPanelContent(doc);\n const renderingPanel = createWorkbenchPanelContent(doc);\n const markersPanel = createWorkbenchPanelContent(doc);\n const pluginsPanel = createWorkbenchPanelContent(doc);\n workbench.leftDock.appendChild(leftDockTabs);\n workbench.leftDock.appendChild(hierarchyPanel);\n workbench.rightDock.appendChild(rightDockTabs);\n workbench.rightDock.appendChild(inspectorPanel);\n workbench.rightDock.appendChild(renderingPanel);\n workbench.rightDock.appendChild(markersPanel);\n workbench.rightDock.appendChild(pluginsPanel);\n construction.appendRootChild(workbench.root);\n tooltipSurfaces.add(workbench.root);\n const disposeRightDockFormalSurfaces = (): void => {\n disposeLocalEditorFormalSurfaces([\n () => LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel),\n () => LocalEditorPanels.disposeInspectorPanelUi(renderingPanel),\n ]);\n };\n const rightDockFormalSurfaceVisibility = createLocalEditorFormalSurfaceVisibilityController({\n disposeHidden() {\n disposeRightDockFormalSurfaces();\n },\n rehydrateVisible() {\n disposeRightDockFormalSurfaces();\n if (currentState?.mode !== 'editor' || currentState.prefabStage) return;\n const activeRightTab = panelRegistry.getRightDockTab();\n if (activeRightTab === 'inspector') {\n LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {\n ...options.inspector,\n layerHost: editorUiLayerHost,\n lockedVectorGroups: lockedInspectorVectorGroups,\n });\n } else if (activeRightTab === 'rendering') {\n LocalEditorPanels.renderRenderingPanel(doc, renderingPanel, currentState, { layerHost: editorUiLayerHost });\n }\n },\n });\n const workbenchLayoutController = createLocalEditorWorkbenchLayoutController(doc, workbench, {\n onBeforeApply(_layout, dockDisplay) {\n if (currentState?.mode === 'editor' && currentState.prefabStage) return;\n if (dockDisplay.rightDockVisible) {\n rightDockFormalSurfaceVisibility.apply(true);\n }\n },\n onAfterApply(layout, dockDisplay) {\n if (currentState?.mode === 'editor' && currentState.prefabStage) {\n applyPrefabStageWorkbenchLayoutOverride(layout);\n return;\n }\n if (!dockDisplay.rightDockVisible) {\n rightDockFormalSurfaceVisibility.apply(false);\n }\n },\n });\n construction.addCleanup('workbench-layout-controller', () => workbenchLayoutController.dispose());\n const findAssetBrowserScrollViewport = (): HTMLElement | null => (\n assetPanel.querySelector<HTMLElement>('[data-editor-asset-browser-scroll-viewport]')\n );\n const assetBrowserViewportReveal = createLocalEditorViewportRevealController<string>({\n getViewport: findAssetBrowserScrollViewport,\n margin: 4,\n });\n let lastRenderedAssetBrowserTab: LocalEditorAssetBrowserTab | undefined;\n let lastRenderedBottomDockTab: LocalEditorBottomDockTab | undefined;\n let lastRenderedSelectedAssetId: string | null | undefined;\n\n const sceneToolOverlay = createSceneHeaderToolbar(doc);\n const sceneTitle = doc.createElement('div');\n sceneTitle.className = 'fps-editor-ui-surface-title';\n sceneTitle.textContent = 'Preview';\n sceneTitle.style.cssText = [\n 'height:100%',\n 'display:flex',\n 'align-items:center',\n 'padding:0 10px 0 2px',\n 'margin-right:2px',\n 'border-right:1px solid var(--fps-editor-divider)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:13px',\n 'font-weight:800',\n 'white-space:nowrap',\n ].join(';');\n const sceneQuickActions = doc.createElement('div');\n sceneQuickActions.className = 'fps-editor-ui-toolbar-group';\n sceneQuickActions.dataset.editorUiFirst = 'true';\n sceneQuickActions.style.cssText = 'display:flex;align-items:center;gap:4px';\n const sceneUtilityActions = doc.createElement('div');\n sceneUtilityActions.className = 'fps-editor-ui-toolbar-group';\n sceneUtilityActions.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const toolGroup = doc.createElement('div');\n toolGroup.className = 'fps-editor-ui-toolbar-group';\n toolGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const toolButtons = new Map<string, HTMLButtonElement>();\n const synchronizeToolButtons = (\n presentations: NonNullable<LocalEditorBrowserUiState<TDocument>['tools']>,\n ): void => {\n const primaryTools = presentations.filter(tool => tool.kind === 'primary');\n const nextIds = new Set(primaryTools.map(tool => tool.id));\n for (const [toolId, button] of toolButtons) {\n if (nextIds.has(toolId)) continue;\n button.remove();\n toolButtons.delete(toolId);\n }\n for (const tool of primaryTools) {\n let button = toolButtons.get(tool.id);\n const tooltip = tool.shortcut ? `${tool.label}工具 (${tool.shortcut})` : `${tool.label}工具`;\n if (!button) {\n button = LocalEditorShared.createButton(doc, tool.label, {\n icon: tool.icon && isLocalEditorIconName(tool.icon) ? tool.icon : 'object',\n labelMode: 'icon-only',\n variant: 'toolbar-icon',\n tooltip,\n ariaLabel: tooltip,\n });\n button.dataset.editorToolId = tool.id;\n toolButtons.set(tool.id, button);\n }\n setToolbarButtonTooltip(button, tool.availability.state === 'enabled'\n ? tooltip\n : `${tooltip} · ${tool.availability.reason}`);\n button.style.display = tool.availability.state === 'hidden' ? 'none' : 'inline-flex';\n button.disabled = tool.availability.state !== 'enabled';\n LocalEditorShared.applyButtonActiveState(button, tool.active);\n toolGroup.appendChild(button);\n }\n };\n const spaceGroup = doc.createElement('div');\n spaceGroup.className = 'fps-editor-ui-toolbar-group';\n spaceGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const spaceButtons = {\n world: createToolbarIconButton(doc, '世界', TRANSFORM_SPACE_ICONS.world, '世界坐标空间'),\n local: createToolbarIconButton(doc, '本地', TRANSFORM_SPACE_ICONS.local, '本地坐标空间'),\n } satisfies Record<LocalEditorBrowserTransformSpace, HTMLButtonElement>;\n for (const [space, button] of Object.entries(spaceButtons) as Array<[LocalEditorBrowserTransformSpace, HTMLButtonElement]>) {\n button.dataset.transformSpace = space;\n spaceGroup.appendChild(button);\n }\n const snapGroup = doc.createElement('div');\n snapGroup.className = 'fps-editor-ui-toolbar-group';\n snapGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const snapButton = createToolbarIconButton(doc, '吸附设置', 'snap', '吸附设置', 'settings');\n snapButton.dataset.transformSnapToggle = 'true';\n const snapSettingsPopover = doc.createElement('div');\n snapSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');\n snapSettingsPopover.dataset.transformSnapSettingsPopover = 'true';\n snapSettingsPopover.setAttribute('role', 'dialog');\n snapSettingsPopover.setAttribute('aria-label', '吸附设置');\n snapSettingsPopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:8px',\n 'width:220px',\n 'padding:10px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const snapSettingsHeader = doc.createElement('label');\n snapSettingsHeader.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:space-between',\n 'gap:8px',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'font-weight:900',\n ].join(';');\n const snapSettingsHeaderText = doc.createElement('span');\n snapSettingsHeaderText.textContent = '启用吸附';\n const snapEnabledInput = doc.createElement('input');\n snapEnabledInput.type = 'checkbox';\n snapEnabledInput.dataset.transformSnapEnabled = 'true';\n snapSettingsHeader.appendChild(snapSettingsHeaderText);\n snapSettingsHeader.appendChild(snapEnabledInput);\n snapSettingsPopover.appendChild(snapSettingsHeader);\n const snapStepInputs = new Map<LocalEditorBrowserTransformSnapStepKind, HTMLInputElement>();\n for (const [kind, label, unit] of [\n ['move', '位移', '单位'],\n ['rotate', '旋转', '度'],\n ['scale', '缩放', '倍数'],\n ] as Array<[LocalEditorBrowserTransformSnapStepKind, string, string]>) {\n const row = doc.createElement('label');\n row.style.cssText = [\n 'display:grid',\n 'grid-template-columns:54px 1fr 34px',\n 'align-items:center',\n 'gap:8px',\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:11px',\n 'font-weight:800',\n ].join(';');\n const rowLabel = doc.createElement('span');\n rowLabel.textContent = label;\n const input = doc.createElement('input');\n input.type = 'number';\n input.min = '0.0001';\n input.step = kind === 'rotate' ? '1' : '0.1';\n input.dataset.transformSnapStep = kind;\n input.style.cssText = [\n 'height:26px',\n 'min-width:0',\n 'box-sizing:border-box',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text)',\n 'font-size:11px',\n 'font-weight:800',\n 'padding:0 4px',\n ].join(';');\n const rowUnit = doc.createElement('span');\n rowUnit.textContent = unit;\n rowUnit.style.cssText = 'color:var(--fps-editor-muted);font-size:10px;font-weight:800';\n row.appendChild(rowLabel);\n row.appendChild(input);\n row.appendChild(rowUnit);\n snapSettingsPopover.appendChild(row);\n snapStepInputs.set(kind, input);\n }\n snapGroup.appendChild(snapButton);\n const placementGroup = doc.createElement('div');\n placementGroup.className = 'fps-editor-ui-toolbar-group';\n placementGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const placementButton = createToolbarIconButton(doc, '放置模式', PLACEMENT_MODE_ICONS.off, '放置模式', 'settings');\n placementButton.dataset.placementModeToggle = 'true';\n const placementSettingsPopover = doc.createElement('div');\n placementSettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');\n placementSettingsPopover.dataset.placementSettingsPopover = 'true';\n placementSettingsPopover.setAttribute('role', 'dialog');\n placementSettingsPopover.setAttribute('aria-label', '放置模式');\n placementSettingsPopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:5px',\n 'width:180px',\n 'padding:8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const placementButtons = Object.fromEntries(\n (Object.keys(PLACEMENT_MODE_ICONS) as LocalEditorBrowserPlacementMode[]).map((mode) => {\n const button = LocalEditorShared.createButton(doc, PLACEMENT_MODE_DESCRIPTIONS[mode], {\n icon: PLACEMENT_MODE_ICONS[mode],\n tooltip: PLACEMENT_MODE_DESCRIPTIONS[mode],\n ariaLabel: PLACEMENT_MODE_DESCRIPTIONS[mode],\n });\n button.dataset.placementMode = mode;\n button.style.justifyContent = 'flex-start';\n button.style.width = '100%';\n placementSettingsPopover.appendChild(button);\n return [mode, button];\n }),\n ) as Record<LocalEditorBrowserPlacementMode, HTMLButtonElement>;\n placementGroup.appendChild(placementButton);\n const actionGroup = doc.createElement('div');\n actionGroup.className = 'fps-editor-ui-toolbar-group';\n actionGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const transformActionButton = createToolbarIconButton(doc, '对齐与分布', 'arrange', '对齐与分布', 'settings');\n transformActionButton.dataset.transformActionToggle = 'true';\n const transformActionPopover = doc.createElement('div');\n transformActionPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');\n transformActionPopover.dataset.transformActionPopover = 'true';\n transformActionPopover.setAttribute('role', 'dialog');\n transformActionPopover.setAttribute('aria-label', '对齐与分布');\n transformActionPopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:9px',\n 'width:236px',\n 'padding:10px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const transformActionButtons = new Map<LocalEditorBrowserTransformAction, HTMLButtonElement>();\n for (const group of TRANSFORM_ACTION_GROUPS) {\n const section = doc.createElement('section');\n section.style.cssText = 'display:flex;flex-direction:column;gap:5px';\n const heading = doc.createElement('div');\n heading.textContent = group.title;\n heading.style.cssText = [\n 'color:var(--fps-editor-text-strong)',\n 'font-size:11px',\n 'font-weight:900',\n ].join(';');\n const hint = doc.createElement('div');\n hint.textContent = group.hint;\n hint.style.cssText = [\n 'color:var(--fps-editor-muted)',\n 'font-size:10px',\n 'font-weight:700',\n 'margin-top:-3px',\n ].join(';');\n section.appendChild(heading);\n section.appendChild(hint);\n for (const action of group.actions) {\n const button = LocalEditorShared.createButton(doc, TRANSFORM_ACTION_LABELS[action], {\n icon: 'arrange',\n tooltip: TRANSFORM_ACTION_LABELS[action],\n ariaLabel: TRANSFORM_ACTION_LABELS[action],\n });\n button.dataset.transformAction = action;\n button.style.justifyContent = 'flex-start';\n button.style.width = '100%';\n transformActionButtons.set(action, button);\n section.appendChild(button);\n }\n transformActionPopover.appendChild(section);\n }\n actionGroup.appendChild(transformActionButton);\n const staticShadowBakeGroup = doc.createElement('div');\n staticShadowBakeGroup.className = 'fps-editor-ui-toolbar-group';\n staticShadowBakeGroup.style.cssText = [\n 'display:none',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const staticShadowBakeButton = createToolbarIconButton(\n doc,\n '烘焙静态阴影',\n 'save',\n '烘焙静态阴影',\n );\n staticShadowBakeButton.dataset.editorToolbarStaticShadowBake = 'true';\n staticShadowBakeButton.dataset.editorRenderingAction = STATIC_SHADOW_BAKE_ACTION_ID;\n staticShadowBakeGroup.appendChild(staticShadowBakeButton);\n const staticShadowBakePopover = doc.createElement('div');\n staticShadowBakePopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');\n staticShadowBakePopover.dataset.editorToolbarStaticShadowBakePopover = 'true';\n staticShadowBakePopover.setAttribute('role', 'dialog');\n staticShadowBakePopover.setAttribute('aria-label', '静态阴影烘焙进度');\n staticShadowBakePopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:9px',\n 'width:360px',\n 'max-width:calc(100vw - 16px)',\n 'padding:10px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'pointer-events:auto',\n ].join(';');\n const staticShadowBakePopoverHeader = doc.createElement('div');\n staticShadowBakePopoverHeader.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:space-between',\n 'gap:8px',\n ].join(';');\n const staticShadowBakePopoverTitle = doc.createElement('div');\n staticShadowBakePopoverTitle.textContent = '静态阴影烘焙';\n staticShadowBakePopoverTitle.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-size:12px',\n 'font-weight:900',\n 'color:var(--fps-editor-text-strong)',\n ].join(';');\n const staticShadowBakePopoverClose = createToolbarIconButton(doc, '关闭', 'discard', '关闭烘焙信息');\n staticShadowBakePopoverClose.dataset.editorToolbarStaticShadowBakePopoverClose = 'true';\n staticShadowBakePopoverHeader.appendChild(staticShadowBakePopoverTitle);\n staticShadowBakePopoverHeader.appendChild(staticShadowBakePopoverClose);\n const staticShadowBakePopoverStatus = doc.createElement('div');\n staticShadowBakePopoverStatus.dataset.editorToolbarStaticShadowBakePopoverStatus = 'true';\n staticShadowBakePopoverStatus.style.cssText = [\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:11px',\n 'font-weight:800',\n 'line-height:1.35',\n 'overflow-wrap:anywhere',\n ].join(';');\n const staticShadowBakeProgress = doc.createElement('div');\n staticShadowBakeProgress.dataset.editorToolbarStaticShadowBakePopoverProgress = 'true';\n staticShadowBakeProgress.style.cssText = [\n 'height:8px',\n 'overflow:hidden',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-chrome-dark)',\n ].join(';');\n const staticShadowBakeProgressFill = doc.createElement('div');\n staticShadowBakeProgressFill.style.cssText = [\n 'height:100%',\n 'width:0%',\n 'border-radius:2px',\n 'background:var(--fps-editor-accent-strong)',\n 'transition:width 140ms ease',\n ].join(';');\n staticShadowBakeProgress.appendChild(staticShadowBakeProgressFill);\n const staticShadowBakeDetails = doc.createElement('div');\n staticShadowBakeDetails.dataset.editorToolbarStaticShadowBakePopoverDetails = 'true';\n staticShadowBakeDetails.style.cssText = [\n 'display:grid',\n 'grid-template-columns:repeat(2, minmax(0, 1fr))',\n 'gap:6px',\n ].join(';');\n staticShadowBakePopover.appendChild(staticShadowBakePopoverHeader);\n staticShadowBakePopover.appendChild(staticShadowBakePopoverStatus);\n staticShadowBakePopover.appendChild(staticShadowBakeProgress);\n staticShadowBakePopover.appendChild(staticShadowBakeDetails);\n const themeToggleButton = createToolbarIconButton(doc, '主题', 'theme', '切换主题');\n themeToggleButton.dataset.editorThemeToggle = 'true';\n const performanceMonitorButton = createToolbarIconButton(doc, '性能监控', 'performance', '性能监控', 'toggle');\n performanceMonitorButton.dataset.performanceMonitorToggle = 'true';\n const gridToggleButton = createToolbarIconButton(doc, '网格', 'grid', '显示 / 隐藏 Scene View 网格');\n gridToggleButton.dataset.editorGridToggle = 'true';\n const sceneHelpButton = createToolbarIconButton(doc, '快捷键', 'help', '快捷键与操作说明');\n sceneQuickActions.appendChild(localTestGroup);\n const contextActionGroup = doc.createElement('div');\n contextActionGroup.className = 'fps-editor-ui-toolbar-group';\n contextActionGroup.dataset.editorContextActions = 'true';\n contextActionGroup.style.cssText = 'display:none;align-items:center;gap:4px';\n sceneQuickActions.appendChild(contextActionGroup);\n sceneQuickActions.appendChild(undoButton);\n sceneQuickActions.appendChild(redoButton);\n sceneQuickActions.appendChild(dirtyBadge);\n sceneUtilityActions.appendChild(performanceMonitorButton);\n sceneUtilityActions.appendChild(gridToggleButton);\n sceneUtilityActions.appendChild(themeToggleButton);\n sceneUtilityActions.appendChild(sceneHelpButton);\n const cameraPreviewGroup = doc.createElement('div');\n cameraPreviewGroup.className = 'fps-editor-ui-toolbar-group';\n cameraPreviewGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const sceneCameraButton = createToolbarIconButton(doc, '从 Main Camera 查看场景', 'camera');\n sceneCameraButton.dataset.sceneCameraPreviewToggle = 'true';\n cameraPreviewGroup.appendChild(sceneCameraButton);\n const viewportToolsGroup = doc.createElement('div');\n viewportToolsGroup.className = 'fps-editor-ui-toolbar-group';\n viewportToolsGroup.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:4px',\n 'padding-left:8px',\n 'border-left:1px solid var(--fps-editor-divider)',\n ].join(';');\n const viewportPresetButtons = new Map<LocalEditorBrowserViewportViewPreset, HTMLButtonElement>();\n for (const preset of ['perspective', 'top', 'front', 'right'] as LocalEditorBrowserViewportViewPreset[]) {\n const button = createToolbarIconButton(doc, VIEW_PRESET_TOOLTIPS[preset], VIEW_PRESET_ICONS[preset], VIEW_PRESET_TOOLTIPS[preset]);\n button.dataset.viewportViewPreset = preset;\n viewportPresetButtons.set(preset, button);\n viewportToolsGroup.appendChild(button);\n }\n const projectionToggleButton = createToolbarIconButton(doc, '投影模式', 'projection-perspective', '切换投影模式');\n projectionToggleButton.dataset.viewportProjectionToggle = 'true';\n viewportToolsGroup.appendChild(projectionToggleButton);\n const markerVisibilityButton = createToolbarIconButton(doc, '标记视图', 'view-overlay', '隐藏标记与关系线', 'toggle');\n markerVisibilityButton.dataset.viewportMarkerVisibilityToggle = 'true';\n viewportToolsGroup.appendChild(markerVisibilityButton);\n const showAllPrefabMarkersButton = createToolbarIconButton(doc, '全部 Prefab 标记', 'view-overlay', '显示所有 Prefab 实例的标记', 'toggle');\n showAllPrefabMarkersButton.dataset.viewportShowAllPrefabMarkersToggle = 'true';\n viewportToolsGroup.appendChild(showAllPrefabMarkersButton);\n const overlaySettingsButton = createToolbarIconButton(doc, '视口信息层设置', 'view-overlay', '视口信息层设置', 'settings');\n overlaySettingsButton.dataset.viewportOverlaySettingsToggle = 'true';\n viewportToolsGroup.appendChild(overlaySettingsButton);\n const measureButton = createToolbarIconButton(doc, '测量距离', 'measure', '测量 XZ 地面距离', 'toggle');\n measureButton.dataset.viewportMeasureToggle = 'true';\n viewportToolsGroup.appendChild(measureButton);\n const clearMeasurementButton = createToolbarIconButton(doc, '清除测量结果', 'discard', '清除测量结果');\n clearMeasurementButton.dataset.viewportMeasurementClear = 'true';\n viewportToolsGroup.appendChild(clearMeasurementButton);\n const overlaySettingsPopover = doc.createElement('div');\n overlaySettingsPopover.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');\n overlaySettingsPopover.dataset.viewportOverlaySettingsPopover = 'true';\n overlaySettingsPopover.setAttribute('role', 'dialog');\n overlaySettingsPopover.setAttribute('aria-label', '视口信息层设置');\n overlaySettingsPopover.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:7px',\n 'width:190px',\n 'padding:8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const overlayInputs = new Map<keyof typeof VIEWPORT_OVERLAY_TOGGLE_LABELS, HTMLInputElement>();\n for (const key of Object.keys(VIEWPORT_OVERLAY_TOGGLE_LABELS) as Array<keyof typeof VIEWPORT_OVERLAY_TOGGLE_LABELS>) {\n const row = doc.createElement('label');\n row.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:space-between',\n 'gap:10px',\n 'color:var(--fps-editor-text)',\n 'font-size:11px',\n 'font-weight:800',\n ].join(';');\n const text = doc.createElement('span');\n text.textContent = VIEWPORT_OVERLAY_TOGGLE_LABELS[key];\n const input = doc.createElement('input');\n input.type = 'checkbox';\n input.dataset.viewportOverlaySetting = key;\n row.appendChild(text);\n row.appendChild(input);\n overlaySettingsPopover.appendChild(row);\n overlayInputs.set(key, input);\n }\n const toolbarOverflowButton = createToolbarIconButton(doc, '更多', 'chevron-down', '显示隐藏的工具栏命令');\n toolbarOverflowButton.dataset.editorToolbarOverflowToggle = 'true';\n toolbarOverflowButton.style.display = 'none';\n const toolbarOverflowMenu = doc.createElement('div');\n toolbarOverflowMenu.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-popover');\n toolbarOverflowMenu.dataset.editorToolbarOverflowMenu = 'true';\n toolbarOverflowMenu.style.cssText = [\n 'position:fixed',\n 'z-index:2147483641',\n 'display:none',\n 'flex-direction:column',\n 'gap:6px',\n 'min-width:220px',\n 'max-width:min(420px, calc(100vw - 16px))',\n 'max-height:calc(100vh - 72px)',\n 'overflow:auto',\n 'padding:8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-popover)',\n 'pointer-events:auto',\n ].join(';');\n const coordinateAxesOverlay = createCoordinateAxesOverlay(doc);\n const sceneFrameRateOverlay = createSceneFrameRateOverlay(doc);\n const performanceMonitorOverlay = createPerformanceMonitorOverlay(doc);\n const prefabImportStatsOverlay = createPrefabImportStatsOverlay(doc);\n const prefabStagePreviewLayout = createPrefabStagePreviewLayout(doc);\n prefabImportStatsOverlay.root.style.position = 'absolute';\n prefabImportStatsOverlay.root.style.top = '10px';\n prefabImportStatsOverlay.root.style.right = '14px';\n prefabStagePreviewLayout.mainRegion.appendChild(prefabImportStatsOverlay.root);\n const spatialOverlay = createSpatialOverlay(doc);\n const measurementOverlay = createMeasurementOverlay(doc);\n sceneToolOverlay.appendChild(sceneTitle);\n sceneToolOverlay.appendChild(sceneQuickActions);\n sceneToolOverlay.appendChild(toolGroup);\n sceneToolOverlay.appendChild(spaceGroup);\n sceneToolOverlay.appendChild(snapGroup);\n sceneToolOverlay.appendChild(placementGroup);\n sceneToolOverlay.appendChild(actionGroup);\n sceneToolOverlay.appendChild(staticShadowBakeGroup);\n sceneToolOverlay.appendChild(viewportToolsGroup);\n sceneToolOverlay.appendChild(sceneUtilityActions);\n sceneToolOverlay.appendChild(cameraPreviewGroup);\n sceneToolOverlay.appendChild(agentBridgeStatusButton);\n sceneToolOverlay.appendChild(editorStatusButton);\n sceneToolOverlay.appendChild(toolbarOverflowButton);\n workbench.sceneHeader.appendChild(sceneToolOverlay);\n workbench.sceneFrame.appendChild(spatialOverlay.root);\n workbench.sceneFrame.appendChild(measurementOverlay.root);\n workbench.sceneFrame.appendChild(sceneFrameRateOverlay.root);\n workbench.sceneFrame.appendChild(performanceMonitorOverlay.root);\n workbench.sceneFrame.appendChild(prefabStagePreviewLayout.root);\n workbench.sceneFrame.appendChild(coordinateAxesOverlay.root);\n construction.appendRootChild(localTestMenu);\n construction.appendRootChild(editorStatusCenter);\n construction.appendRootChild(toolbarOverflowMenu);\n construction.appendRootChild(staticShadowBakePopover);\n construction.appendRootChild(snapSettingsPopover);\n construction.appendRootChild(placementSettingsPopover);\n construction.appendRootChild(transformActionPopover);\n construction.appendRootChild(overlaySettingsPopover);\n tooltipSurfaces.add(localTestMenu);\n tooltipSurfaces.add(editorStatusCenter);\n tooltipSurfaces.add(toolbarOverflowMenu);\n tooltipSurfaces.add(staticShadowBakePopover);\n tooltipSurfaces.add(snapSettingsPopover);\n tooltipSurfaces.add(placementSettingsPopover);\n tooltipSurfaces.add(transformActionPopover);\n tooltipSurfaces.add(overlaySettingsPopover);\n\n const boxSelectionOverlay = doc.createElement('div');\n boxSelectionOverlay.classList.add(LOCAL_EDITOR_THEME_CLASS);\n boxSelectionOverlay.style.cssText = [\n 'position:fixed',\n 'z-index:2147483637',\n 'display:none',\n 'border:1px solid var(--fps-editor-drop-target)',\n 'background:var(--fps-editor-box-select-bg)',\n 'box-shadow:var(--fps-editor-box-select-shadow)',\n 'pointer-events:none',\n ].join(';');\n construction.appendRootChild(boxSelectionOverlay);\n tooltipSurfaces.add(boxSelectionOverlay);\n\n const shortcutHelpPanel = createLocalEditorShortcutHelpPanel(doc);\n shortcutHelpPanel.classList.add(LOCAL_EDITOR_THEME_CLASS);\n construction.appendRootChild(shortcutHelpPanel);\n tooltipSurfaces.add(shortcutHelpPanel);\n\n const assetPreviewModal = doc.createElement('div');\n assetPreviewModal.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-modal-root', 'fps-editor-ui-asset-preview-modal');\n assetPreviewModal.dataset.editorAssetPreviewModal = 'true';\n assetPreviewModal.dataset.editorWorkbenchRegion = 'modal';\n assetPreviewModal.style.cssText = [\n 'position:fixed',\n 'inset:0',\n 'z-index:2147483642',\n 'display:none',\n 'align-items:center',\n 'justify-content:center',\n 'padding:32px',\n 'background:rgba(0,0,0,0.45)',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n ].join(';');\n const assetPreviewDialog = doc.createElement('div');\n assetPreviewDialog.className = 'fps-editor-ui-modal';\n assetPreviewDialog.setAttribute('role', 'dialog');\n assetPreviewDialog.setAttribute('aria-modal', 'true');\n assetPreviewDialog.setAttribute('aria-label', '资产预览');\n assetPreviewDialog.style.cssText = [\n 'width:min(420px,calc(100vw - 64px))',\n 'max-height:calc(100vh - 64px)',\n 'display:flex',\n 'flex-direction:column',\n 'gap:12px',\n 'padding:14px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-modal)',\n 'overflow:auto',\n ].join(';');\n const assetPreviewHeader = doc.createElement('div');\n assetPreviewHeader.className = 'fps-editor-ui-modal-header';\n assetPreviewHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';\n const assetPreviewTitle = doc.createElement('h2');\n assetPreviewTitle.className = 'fps-editor-ui-modal-title';\n assetPreviewTitle.style.cssText = [\n 'min-width:0',\n 'margin:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-size:13px',\n 'font-weight:900',\n 'color:var(--fps-editor-text-strong)',\n ].join(';');\n const assetPreviewCloseButton = LocalEditorShared.createButton(doc, '关闭');\n assetPreviewCloseButton.dataset.editorAssetPreviewClose = 'true';\n assetPreviewHeader.appendChild(assetPreviewTitle);\n assetPreviewHeader.appendChild(assetPreviewCloseButton);\n const assetPreviewBody = doc.createElement('div');\n assetPreviewBody.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:center',\n 'min-height:240px',\n 'border:1px solid var(--fps-editor-divider)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel-soft)',\n ].join(';');\n const assetPreviewMeta = doc.createElement('div');\n assetPreviewMeta.style.cssText = [\n 'min-height:16px',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-muted)',\n 'font-size:11px',\n 'font-weight:800',\n ].join(';');\n assetPreviewDialog.appendChild(assetPreviewHeader);\n assetPreviewDialog.appendChild(assetPreviewBody);\n assetPreviewDialog.appendChild(assetPreviewMeta);\n assetPreviewModal.appendChild(assetPreviewDialog);\n construction.appendRootChild(assetPreviewModal);\n tooltipSurfaces.add(assetPreviewModal);\n\n const assetPickerModal = doc.createElement('div');\n assetPickerModal.classList.add(LOCAL_EDITOR_THEME_CLASS, 'fps-editor-ui-modal-root', 'fps-editor-ui-asset-modal');\n assetPickerModal.dataset.editorAssetPickerModal = 'true';\n assetPickerModal.dataset.editorWorkbenchRegion = 'modal';\n assetPickerModal.style.cssText = [\n 'position:fixed',\n 'inset:0',\n 'z-index:2147483642',\n 'display:none',\n 'align-items:center',\n 'justify-content:center',\n 'padding:32px',\n 'background:rgba(0,0,0,0.45)',\n 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)',\n 'pointer-events:auto',\n ].join(';');\n const assetPickerDialog = doc.createElement('div');\n assetPickerDialog.className = 'fps-editor-ui-modal';\n assetPickerDialog.setAttribute('role', 'dialog');\n assetPickerDialog.setAttribute('aria-modal', 'true');\n assetPickerDialog.setAttribute('aria-label', '资产选择');\n assetPickerDialog.style.cssText = [\n 'width:min(620px,calc(100vw - 64px))',\n 'max-height:calc(100vh - 64px)',\n 'display:flex',\n 'flex-direction:column',\n 'gap:10px',\n 'padding:14px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-modal)',\n 'overflow:hidden',\n ].join(';');\n const assetPickerHeader = doc.createElement('div');\n assetPickerHeader.className = 'fps-editor-ui-modal-header';\n assetPickerHeader.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px';\n const assetPickerTitle = doc.createElement('h2');\n assetPickerTitle.className = 'fps-editor-ui-modal-title';\n assetPickerTitle.style.cssText = [\n 'min-width:0',\n 'margin:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-size:13px',\n 'font-weight:900',\n 'color:var(--fps-editor-text-strong)',\n ].join(';');\n const assetPickerCloseButton = LocalEditorShared.createButton(doc, '关闭');\n assetPickerCloseButton.dataset.editorAssetPickerClose = 'true';\n assetPickerHeader.appendChild(assetPickerTitle);\n assetPickerHeader.appendChild(assetPickerCloseButton);\n const assetPickerSearch = doc.createElement('input');\n assetPickerSearch.className = 'fps-editor-ui-modal-search';\n assetPickerSearch.type = 'search';\n assetPickerSearch.dataset.editorAssetPickerSearch = 'true';\n assetPickerSearch.placeholder = '搜索资产';\n assetPickerSearch.style.cssText = [\n 'width:100%',\n 'height:30px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'padding:0 8px',\n ].join(';');\n const assetPickerList = doc.createElement('div');\n assetPickerList.className = 'fps-editor-ui-modal-grid';\n assetPickerList.style.cssText = [\n 'min-height:180px',\n 'max-height:min(430px,calc(100vh - 196px))',\n 'overflow:auto',\n 'display:grid',\n 'grid-template-columns:repeat(auto-fill,minmax(176px,1fr))',\n 'gap:7px',\n 'padding-right:2px',\n ].join(';');\n assetPickerDialog.appendChild(assetPickerHeader);\n assetPickerDialog.appendChild(assetPickerSearch);\n assetPickerDialog.appendChild(assetPickerList);\n assetPickerModal.appendChild(assetPickerDialog);\n construction.appendRootChild(assetPickerModal);\n tooltipSurfaces.add(assetPickerModal);\n\n function applyThemeToSurfaces(): void {\n applyLocalEditorTheme(hostChrome, activeTheme);\n applyLocalEditorTheme(workbench.root, activeTheme);\n applyLocalEditorTheme(spatialOverlay.root, activeTheme);\n applyLocalEditorTheme(measurementOverlay.root, activeTheme);\n applyLocalEditorTheme(sceneFrameRateOverlay.root, activeTheme);\n applyLocalEditorTheme(performanceMonitorOverlay.root, activeTheme);\n applyLocalEditorTheme(prefabStagePreviewLayout.root, activeTheme);\n applyLocalEditorTheme(prefabImportStatsOverlay.root, activeTheme);\n applyLocalEditorTheme(shortcutHelpPanel, activeTheme);\n applyLocalEditorTheme(assetPreviewModal, activeTheme);\n applyLocalEditorTheme(assetPickerModal, activeTheme);\n applyLocalEditorTheme(boxSelectionOverlay, activeTheme);\n applyLocalEditorTheme(localTestMenu, activeTheme);\n applyLocalEditorTheme(editorStatusCenter, activeTheme);\n applyLocalEditorTheme(toolbarOverflowMenu, activeTheme);\n applyLocalEditorTheme(staticShadowBakePopover, activeTheme);\n applyLocalEditorTheme(snapSettingsPopover, activeTheme);\n applyLocalEditorTheme(placementSettingsPopover, activeTheme);\n applyLocalEditorTheme(transformActionPopover, activeTheme);\n applyLocalEditorTheme(overlaySettingsPopover, activeTheme);\n tooltipController.setTheme(activeTheme);\n contextMenu.setTheme?.(activeTheme);\n modalDialog.setTheme(activeTheme);\n }\n\n function updateThemeToggleButton(): void {\n const nextTheme = activeTheme === 'dark' ? 'light' : 'dark';\n themeToggleButton.dataset.editorTheme = activeTheme;\n themeToggleButton.setAttribute('aria-pressed', activeTheme === 'light' ? 'true' : 'false');\n setToolbarButtonTooltip(themeToggleButton, nextTheme === 'light' ? '切换为浅色主题' : '切换为深色主题');\n }\n\n function setActiveTheme(theme: unknown): void {\n activeTheme = normalizeLocalEditorThemeName(theme);\n applyThemeToSurfaces();\n updateThemeToggleButton();\n }\n\n let localTestMenuOpen = false;\n let snapSettingsOpen = false;\n let placementSettingsOpen = false;\n let transformActionOpen = false;\n let overlaySettingsOpen = false;\n\n function closeLocalTestMenu(): void {\n localTestMenuOpen = false;\n localTestMenu.style.display = 'none';\n LocalEditorShared.applyButtonActiveState(localTestButton, false);\n }\n\n function readEditorStatusDiagnostics(\n state: LocalEditorBrowserUiState<TDocument> | null,\n ): LocalEditorBrowserStatusDiagnostic[] {\n return resolveLocalEditorStatusDiagnostics(state);\n }\n\n function renderEditorStatusCenter(state: LocalEditorBrowserUiState<TDocument> | null): void {\n const viewModel = createLocalEditorStatusCenterViewModel(state);\n editorStatusCenterSummary.textContent = viewModel.summary;\n editorStatusCopyAllButton.style.display = viewModel.diagnostics.length > 0 ? 'inline-flex' : 'none';\n LocalEditorShared.clearElement(editorStatusCenterList);\n if (viewModel.diagnostics.length === 0) {\n const empty = doc.createElement('div');\n empty.dataset.editorStatusEmpty = 'true';\n empty.textContent = '当前没有诊断信息。';\n empty.style.cssText = 'padding:14px 8px;text-align:center;color:var(--fps-editor-muted);font-size:12px';\n editorStatusCenterList.appendChild(empty);\n return;\n }\n const currentScopeId = state?.prefabStage\n ? `prefab-stage:${state.prefabStage.assetId}`\n : 'scene';\n let previousGroup = '';\n viewModel.entries.forEach(({ diagnostic, copyText }, index) => {\n const group = `${diagnostic.severity}\\u0000${diagnostic.phase ?? 'edit'}\\u0000${diagnostic.source}`;\n if (group !== previousGroup) {\n const groupHeader = doc.createElement('div');\n groupHeader.dataset.editorStatusGroup = group;\n groupHeader.textContent = `${diagnostic.severity === 'error' ? '错误' : diagnostic.severity === 'warning' ? '警告' : '信息'} · ${diagnostic.phase ?? 'edit'} · ${diagnostic.source}`;\n groupHeader.style.cssText = 'padding:5px 2px 1px;font-size:10px;font-weight:900;color:var(--fps-editor-muted-strong);text-transform:uppercase';\n editorStatusCenterList.appendChild(groupHeader);\n previousGroup = group;\n }\n const item = doc.createElement('div');\n item.dataset.editorStatusDiagnostic = diagnostic.code;\n const diagnosticBorder = diagnostic.severity === 'error'\n ? 'var(--fps-editor-danger-border)'\n : diagnostic.severity === 'warning'\n ? 'var(--fps-editor-warn-border)'\n : 'var(--fps-editor-border)';\n const diagnosticBackground = diagnostic.severity === 'error'\n ? 'var(--fps-editor-danger-soft)'\n : diagnostic.severity === 'warning'\n ? 'var(--fps-editor-warn-soft)'\n : 'var(--fps-editor-surface-soft)';\n item.style.cssText = [\n 'display:grid',\n 'grid-template-columns:minmax(0,1fr) auto',\n 'gap:8px',\n 'padding:8px',\n `border:1px solid ${diagnosticBorder}`,\n 'border-radius:3px',\n `background:${diagnosticBackground}`,\n ].join(';');\n const content = doc.createElement('div');\n content.style.cssText = 'min-width:0;display:flex;flex-direction:column;gap:4px';\n const locateAction = diagnostic.actions?.find(action => action.kind === 'locate');\n const locatePlan = resolveLocalEditorStatusDiagnosticLocatePlan(diagnostic, currentScopeId);\n const locator = locatePlan.locator;\n const canLocate = locatePlan.canLocate && !!callbacks.onStatusDiagnosticLocate;\n const locate = () => {\n const navigationRequest = {\n settled: false,\n ...(locator.assetId ? { assetId: locator.assetId } : {}),\n ...(locator.path ? {\n path: {\n value: locator.path,\n ...(locator.scopeId ? { scopeId: locator.scopeId } : {}),\n ...(diagnostic.documentRevision != null ? { documentRevision: diagnostic.documentRevision } : {}),\n ...(diagnostic.projectionRevision != null ? { projectionRevision: diagnostic.projectionRevision } : {}),\n },\n } : {}),\n };\n pendingStatusDiagnosticRequest = navigationRequest;\n if (locator.assetId) {\n assetBrowserTab = 'all';\n panelRegistry.setBottomDockTab('assets');\n workbenchLayoutController.setBottomCollapsed(false);\n callbacks.onAssetFilterChange?.('');\n }\n if (locator.path) {\n inspectorFilter = '';\n panelRegistry.setRightDockTab('inspector');\n const layout = workbenchLayoutController.getLayout();\n if (layout.rightCollapsed) {\n workbenchLayoutController.setLayout({ ...layout, rightCollapsed: false });\n }\n }\n const result = callbacks.onStatusDiagnosticLocate?.({\n ...diagnostic,\n locator,\n });\n const settle = (accepted: boolean | void): void => {\n pendingStatusDiagnosticRequest = settleLocalEditorStatusDiagnosticRequest(\n pendingStatusDiagnosticRequest,\n navigationRequest,\n accepted,\n );\n if (accepted !== false && pendingStatusDiagnosticRequest === navigationRequest && currentState) {\n revealPendingStatusDiagnosticPath(currentState);\n revealPendingStatusDiagnosticAsset(currentState);\n clearCompletedStatusDiagnosticRequest(navigationRequest);\n }\n };\n if (result && typeof (result as Promise<boolean | void>).then === 'function') {\n void (result as Promise<boolean | void>).then(settle, () => settle(false));\n } else {\n settle(result as boolean | void);\n }\n };\n if (canLocate) {\n content.dataset.editorStatusLocate = locator.objectId\n ?? locator.rowId\n ?? locator.prefabNodeId\n ?? locator.assetId\n ?? locator.path\n ?? '';\n content.setAttribute('role', 'button');\n content.tabIndex = 0;\n content.style.cursor = 'pointer';\n content.addEventListener('click', locate);\n content.addEventListener('keydown', event => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n locate();\n });\n }\n const code = doc.createElement('div');\n code.textContent = `${diagnostic.severity === 'error' ? '错误' : diagnostic.severity === 'warning' ? '警告' : '信息'} · ${diagnostic.code}`;\n code.style.cssText = `font-size:11px;font-weight:900;color:${diagnostic.severity === 'error' ? 'var(--fps-editor-danger-strong)' : diagnostic.severity === 'warning' ? 'var(--fps-editor-warn)' : 'var(--fps-editor-text-strong)'}`;\n const message = doc.createElement('div');\n message.textContent = diagnostic.message;\n message.style.cssText = 'font-size:12px;line-height:1.45;color:var(--fps-editor-text-strong);overflow-wrap:anywhere';\n const suggestion = doc.createElement('div');\n suggestion.dataset.editorStatusSuggestion = diagnostic.code;\n suggestion.textContent = diagnostic.suggestion ? `建议:${diagnostic.suggestion}` : '';\n suggestion.style.cssText = 'font-size:11px;line-height:1.4;color:var(--fps-editor-muted-strong);overflow-wrap:anywhere';\n suggestion.style.display = diagnostic.suggestion ? 'block' : 'none';\n const meta = doc.createElement('div');\n const diagnosticLocation = [\n locator.scopeId,\n locator.rowId,\n locator.objectId,\n locator.prefabAssetId,\n locator.prefabNodeId,\n locator.assetId,\n locator.materialSlotId,\n locator.path,\n ]\n .filter(value => value !== undefined && value !== null && value !== '')\n .join(' / ');\n meta.textContent = [\n `来源: ${diagnostic.source}`,\n diagnostic.producer ? `producer: ${diagnostic.producer}` : '',\n diagnostic.phase ? `phase: ${diagnostic.phase}` : '',\n diagnosticLocation ? `位置: ${diagnosticLocation}` : '',\n diagnostic.documentRevision != null ? `document revision: ${diagnostic.documentRevision}` : '',\n diagnostic.projectionRevision != null ? `projection revision: ${diagnostic.projectionRevision}` : '',\n diagnostic.details ? `details: ${formatLocalEditorStatusDiagnosticDetails(diagnostic.details)}` : '',\n ].filter(Boolean).join(' · ');\n meta.style.cssText = 'font-size:10px;line-height:1.35;color:var(--fps-editor-muted);overflow-wrap:anywhere';\n meta.style.display = meta.textContent ? 'block' : 'none';\n content.appendChild(code);\n content.appendChild(message);\n content.appendChild(suggestion);\n content.appendChild(meta);\n const actions = doc.createElement('div');\n actions.style.cssText = 'display:flex;align-items:flex-start;gap:4px';\n if (locateAction) {\n const locateButton = doc.createElement('button');\n locateButton.type = 'button';\n locateButton.dataset.editorStatusAction = locateAction.id;\n locateButton.textContent = locateAction.label;\n locateButton.disabled = !canLocate;\n locateButton.style.cssText = 'font:inherit;font-size:10px;padding:3px 6px;border:1px solid var(--fps-editor-border);border-radius:3px;background:var(--fps-editor-surface);color:var(--fps-editor-text-strong);cursor:pointer;white-space:nowrap';\n locateButton.addEventListener('click', event => {\n event.stopPropagation();\n if (canLocate) locate();\n });\n actions.appendChild(locateButton);\n }\n const copy = createToolbarIconButton(doc, `复制诊断 ${index + 1}`, 'copy', '复制该诊断');\n copy.dataset.editorStatusCopy = String(index);\n copy.addEventListener('click', event => {\n event.stopPropagation();\n copyEditorStatusText(copy, doc.defaultView, copyText);\n });\n item.appendChild(content);\n actions.appendChild(copy);\n item.appendChild(actions);\n editorStatusCenterList.appendChild(item);\n });\n }\n\n function closeEditorStatusCenter(): void {\n editorStatusCenterOpen = false;\n editorStatusCenter.style.display = 'none';\n editorStatusButton.setAttribute('aria-expanded', 'false');\n LocalEditorShared.applyButtonActiveState(editorStatusButton, false);\n }\n\n function openEditorStatusCenter(): void {\n closeLocalTestMenu();\n closeToolbarOverflowMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n renderEditorStatusCenter(currentState);\n const rect = editorStatusButton.getBoundingClientRect();\n const win = doc.defaultView;\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n const width = Math.min(440, Math.max(280, viewportWidth - 16));\n editorStatusCenter.style.width = `${width}px`;\n editorStatusCenter.style.left = `${Math.max(8, Math.min(rect.right - width, viewportWidth - width - 8))}px`;\n editorStatusCenter.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n editorStatusCenter.style.display = 'flex';\n editorStatusCenterOpen = true;\n editorStatusButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(editorStatusButton, true);\n }\n\n function toggleEditorStatusCenter(): void {\n if (editorStatusCenterOpen) closeEditorStatusCenter();\n else openEditorStatusCenter();\n }\n\n function closeSnapSettingsPopover(): void {\n snapSettingsOpen = false;\n snapSettingsPopover.style.display = 'none';\n snapButton.setAttribute('aria-expanded', 'false');\n const enabled = currentState?.transformOperations?.settings.snap.enabled\n ?? DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS.snap.enabled;\n LocalEditorShared.applyButtonActiveState(snapButton, enabled);\n }\n\n function closePlacementSettingsPopover(): void {\n placementSettingsOpen = false;\n placementSettingsPopover.style.display = 'none';\n placementButton.setAttribute('aria-expanded', 'false');\n const mode = currentState?.transformOperations?.settings.placementMode\n ?? DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS.placementMode;\n LocalEditorShared.applyButtonActiveState(placementButton, mode !== 'off');\n }\n\n function closeTransformActionPopover(): void {\n transformActionOpen = false;\n transformActionPopover.style.display = 'none';\n transformActionButton.setAttribute('aria-expanded', 'false');\n LocalEditorShared.applyButtonActiveState(transformActionButton, false);\n }\n\n function closeOverlaySettingsPopover(): void {\n overlaySettingsOpen = false;\n overlaySettingsPopover.style.display = 'none';\n overlaySettingsButton.setAttribute('aria-expanded', 'false');\n LocalEditorShared.applyButtonActiveState(overlaySettingsButton, false);\n }\n\n function openLocalTestMenu(): void {\n if (!localTestActionsEnabled || localTestButton.style.display === 'none') return;\n closeToolbarOverflowMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = localTestButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n localTestMenu.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n localTestMenu.style.right = `${Math.max(8, viewportWidth - rect.right)}px`;\n localTestMenu.style.display = 'flex';\n localTestMenuOpen = true;\n LocalEditorShared.applyButtonActiveState(localTestButton, true);\n }\n\n function openSnapSettingsPopover(): void {\n if (snapButton.disabled || snapGroup.style.display === 'none') return;\n closeToolbarOverflowMenu();\n closeLocalTestMenu();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = snapButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n snapSettingsPopover.style.display = 'flex';\n const popoverWidth = snapSettingsPopover.offsetWidth || 220;\n snapSettingsPopover.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n snapSettingsPopover.style.left = `${Math.max(8, Math.min(rect.left, viewportWidth - popoverWidth - 8))}px`;\n snapSettingsOpen = true;\n snapButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(snapButton, true);\n }\n\n function toggleSnapSettingsPopover(): void {\n if (snapSettingsOpen) closeSnapSettingsPopover();\n else openSnapSettingsPopover();\n }\n\n function openPlacementSettingsPopover(): void {\n if (placementButton.disabled || placementGroup.style.display === 'none') return;\n closeToolbarOverflowMenu();\n closeLocalTestMenu();\n closeSnapSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = placementButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n placementSettingsPopover.style.display = 'flex';\n const popoverWidth = placementSettingsPopover.offsetWidth || 180;\n placementSettingsPopover.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n placementSettingsPopover.style.left = `${Math.max(8, Math.min(rect.left, viewportWidth - popoverWidth - 8))}px`;\n placementSettingsOpen = true;\n placementButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(placementButton, true);\n }\n\n function togglePlacementSettingsPopover(): void {\n if (placementSettingsOpen) closePlacementSettingsPopover();\n else openPlacementSettingsPopover();\n }\n\n function openTransformActionPopover(): void {\n if (transformActionButton.disabled || actionGroup.style.display === 'none') return;\n closeToolbarOverflowMenu();\n closeLocalTestMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = transformActionButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n transformActionPopover.style.display = 'flex';\n const popoverWidth = transformActionPopover.offsetWidth || 236;\n transformActionPopover.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n transformActionPopover.style.left = `${Math.max(8, Math.min(rect.left, viewportWidth - popoverWidth - 8))}px`;\n transformActionOpen = true;\n transformActionButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(transformActionButton, true);\n }\n\n function toggleTransformActionPopover(): void {\n if (transformActionOpen) closeTransformActionPopover();\n else openTransformActionPopover();\n }\n\n function openOverlaySettingsPopover(): void {\n if (overlaySettingsButton.disabled || viewportToolsGroup.style.display === 'none') return;\n const win = doc.defaultView;\n const rect = overlaySettingsButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n closeLocalTestMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeToolbarOverflowMenu();\n overlaySettingsPopover.style.display = 'flex';\n const popoverWidth = overlaySettingsPopover.offsetWidth || 190;\n overlaySettingsPopover.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n overlaySettingsPopover.style.left = `${Math.max(8, Math.min(rect.left, viewportWidth - popoverWidth - 8))}px`;\n overlaySettingsOpen = true;\n overlaySettingsButton.setAttribute('aria-expanded', 'true');\n LocalEditorShared.applyButtonActiveState(overlaySettingsButton, true);\n }\n\n function toggleOverlaySettingsPopover(): void {\n if (overlaySettingsOpen) closeOverlaySettingsPopover();\n else openOverlaySettingsPopover();\n }\n\n const onLocalTestButtonClick = (event: MouseEvent): void => {\n event.stopPropagation();\n if (localTestMenuOpen) closeLocalTestMenu();\n else openLocalTestMenu();\n };\n\n type ToolbarOverflowItemKind = 'group' | 'text';\n interface ToolbarOverflowItem {\n id: string;\n element: HTMLElement;\n kind: ToolbarOverflowItemKind;\n }\n\n type ToolbarOverflowStyleProperty =\n | 'alignSelf'\n | 'borderLeft'\n | 'display'\n | 'flex'\n | 'height'\n | 'maxWidth'\n | 'minHeight'\n | 'minWidth'\n | 'overflow'\n | 'paddingLeft'\n | 'textOverflow'\n | 'whiteSpace'\n | 'width';\n\n const toolbarOverflowStyleProperties: ToolbarOverflowStyleProperty[] = [\n 'alignSelf',\n 'borderLeft',\n 'display',\n 'flex',\n 'height',\n 'maxWidth',\n 'minHeight',\n 'minWidth',\n 'overflow',\n 'paddingLeft',\n 'textOverflow',\n 'whiteSpace',\n 'width',\n ];\n const toolbarButtonOriginalPadding = new WeakMap<HTMLButtonElement, string>();\n const toolbarOverflowOriginalStyles = new WeakMap<HTMLElement, Partial<Record<ToolbarOverflowStyleProperty, string>>>();\n const toolbarOrder: HTMLElement[] = [\n sceneTitle,\n sceneQuickActions,\n toolGroup,\n spaceGroup,\n snapGroup,\n placementGroup,\n actionGroup,\n staticShadowBakeGroup,\n viewportToolsGroup,\n sceneUtilityActions,\n cameraPreviewGroup,\n agentBridgeStatusButton,\n editorStatusButton,\n toolbarOverflowButton,\n ];\n const toolbarOverflowItems: ToolbarOverflowItem[] = [\n { id: 'editor-status', element: editorStatusButton, kind: 'group' },\n { id: 'scene-utilities', element: sceneUtilityActions, kind: 'group' },\n { id: 'camera-preview', element: cameraPreviewGroup, kind: 'group' },\n { id: 'viewport-tools', element: viewportToolsGroup, kind: 'group' },\n { id: 'transform-actions', element: actionGroup, kind: 'group' },\n { id: 'placement', element: placementGroup, kind: 'group' },\n { id: 'snap', element: snapGroup, kind: 'group' },\n { id: 'space', element: spaceGroup, kind: 'group' },\n { id: 'static-shadow-bake', element: staticShadowBakeGroup, kind: 'group' },\n { id: 'agent-bridge-status', element: agentBridgeStatusButton, kind: 'group' },\n ];\n let toolbarOverflowOpen = false;\n let toolbarOverflowRaf: number | null = null;\n let staticShadowBakePopoverOpen = false;\n construction.addCleanup('toolbar-overflow-frame', () => {\n if (toolbarOverflowRaf != null) {\n doc.defaultView?.cancelAnimationFrame(toolbarOverflowRaf);\n toolbarOverflowRaf = null;\n }\n });\n\n function restoreToolbarOverflowItemStyle(item: ToolbarOverflowItem): void {\n const original = toolbarOverflowOriginalStyles.get(item.element);\n if (!original) return;\n for (const property of toolbarOverflowStyleProperties) {\n item.element.style[property] = original[property] ?? '';\n }\n toolbarOverflowOriginalStyles.delete(item.element);\n item.element.dataset.editorToolbarOverflowPlacement = 'toolbar';\n }\n\n function applyToolbarOverflowMenuStyle(item: ToolbarOverflowItem): void {\n if (!toolbarOverflowOriginalStyles.has(item.element)) {\n const original: Partial<Record<ToolbarOverflowStyleProperty, string>> = {};\n for (const property of toolbarOverflowStyleProperties) {\n original[property] = item.element.style[property];\n }\n toolbarOverflowOriginalStyles.set(item.element, original);\n }\n item.element.dataset.editorToolbarOverflowPlacement = 'menu';\n item.element.style.alignSelf = 'stretch';\n item.element.style.borderLeft = '0';\n item.element.style.display = item.kind === 'group' ? 'flex' : 'block';\n item.element.style.flex = '0 0 auto';\n item.element.style.height = '';\n item.element.style.maxWidth = 'none';\n item.element.style.minHeight = '0';\n item.element.style.minWidth = '0';\n item.element.style.overflow = item.kind === 'group' ? 'visible' : 'hidden';\n item.element.style.paddingLeft = '0';\n item.element.style.textOverflow = item.kind === 'text' ? 'ellipsis' : '';\n item.element.style.whiteSpace = item.kind === 'text' ? 'nowrap' : '';\n item.element.style.width = '100%';\n }\n\n function setToolbarButtonCompact(button: HTMLButtonElement, compact: boolean): void {\n if (button.dataset.editorButtonLabelMode === 'icon-only') return;\n const label = button.querySelector<HTMLElement>('[data-editor-button-label]');\n if (!label) return;\n if (!toolbarButtonOriginalPadding.has(button)) {\n toolbarButtonOriginalPadding.set(button, button.style.padding);\n }\n const accessibleLabel = button.dataset.editorToolbarLabel || label.textContent || button.title;\n button.dataset.editorToolbarLabel = accessibleLabel;\n button.setAttribute('aria-label', accessibleLabel);\n if (!button.title) button.title = accessibleLabel;\n button.style.padding = compact ? '4px 6px' : toolbarButtonOriginalPadding.get(button) ?? '';\n label.style.display = compact ? 'inline-block' : '';\n label.style.width = compact ? '0' : '';\n label.style.maxWidth = compact ? '0' : '';\n label.style.opacity = compact ? '0' : '';\n label.style.marginLeft = compact ? '-5px' : '';\n }\n\n function setToolbarCompact(compact: boolean): void {\n for (const button of Array.from(sceneToolOverlay.querySelectorAll<HTMLButtonElement>('button'))) {\n setToolbarButtonCompact(button, compact);\n }\n }\n\n function closeToolbarOverflowMenu(): void {\n toolbarOverflowOpen = false;\n toolbarOverflowMenu.style.display = 'none';\n LocalEditorShared.applyButtonActiveState(toolbarOverflowButton, false);\n }\n\n function closeStaticShadowBakePopover(): void {\n staticShadowBakePopoverOpen = false;\n staticShadowBakePopover.style.display = 'none';\n }\n\n function openStaticShadowBakePopover(): void {\n staticShadowBakePopoverOpen = true;\n renderStaticShadowBakePopover(currentState);\n }\n\n function positionStaticShadowBakePopover(): void {\n const rect = staticShadowBakeButton.getBoundingClientRect();\n const win = doc.defaultView;\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n const width = Math.min(360, Math.max(240, viewportWidth - 16));\n const left = Math.min(\n Math.max(8, rect.left + rect.width * 0.5 - width * 0.5),\n Math.max(8, viewportWidth - width - 8),\n );\n staticShadowBakePopover.style.width = `${width}px`;\n staticShadowBakePopover.style.left = `${left}px`;\n staticShadowBakePopover.style.top = `${Math.max(38, rect.bottom + 6)}px`;\n }\n\n function renderStaticShadowBakePopover(state: LocalEditorBrowserUiState<TDocument> | null): void {\n if (!staticShadowBakePopoverOpen || !state || state.mode !== 'editor') {\n staticShadowBakePopover.style.display = 'none';\n return;\n }\n const match = findLocalEditorRenderingAction(state.renderingPanel, STATIC_SHADOW_BAKE_ACTION_ID);\n if (!match) {\n staticShadowBakePopover.style.display = 'none';\n return;\n }\n positionStaticShadowBakePopover();\n staticShadowBakePopover.style.display = 'flex';\n staticShadowBakePopoverTitle.textContent = match.system?.label ?? match.action.label ?? '静态阴影烘焙';\n const progress = match.system?.progress;\n const status = match.system?.status || progress?.label || match.action.tooltip || '准备烘焙静态阴影...';\n staticShadowBakePopoverStatus.textContent = status;\n if (progress) {\n staticShadowBakeProgress.style.display = 'block';\n const value = typeof progress.value === 'number' && Number.isFinite(progress.value)\n ? Math.max(0, Math.min(1, progress.value))\n : progress.indeterminate\n ? 1\n : 0;\n staticShadowBakeProgressFill.style.width = `${Math.round(value * 100)}%`;\n staticShadowBakeProgressFill.style.opacity = progress.indeterminate ? '0.55' : '1';\n } else {\n staticShadowBakeProgress.style.display = 'none';\n staticShadowBakeProgressFill.style.width = '0%';\n staticShadowBakeProgressFill.style.opacity = '1';\n }\n LocalEditorShared.clearElement(staticShadowBakeDetails);\n const details = match.system?.details ?? [];\n staticShadowBakeDetails.style.display = details.length > 0 ? 'grid' : 'none';\n for (const detail of details) {\n const item = doc.createElement('div');\n item.style.cssText = [\n 'min-width:0',\n 'padding:6px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-chrome)',\n ].join(';');\n const label = doc.createElement('div');\n label.textContent = detail.label;\n label.style.cssText = [\n 'color:var(--fps-editor-muted)',\n 'font-size:10px',\n 'font-weight:800',\n 'line-height:1.25',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n ].join(';');\n const value = doc.createElement('div');\n value.textContent = detail.value;\n value.style.cssText = [\n `color:${detail.tone === 'warning' ? 'var(--fps-editor-warn)' : detail.tone === 'error' ? 'var(--fps-editor-danger-strong)' : detail.tone === 'success' ? 'var(--fps-editor-success)' : 'var(--fps-editor-text-strong)'}`,\n 'font-size:12px',\n 'font-weight:900',\n 'line-height:1.35',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n ].join(';');\n item.appendChild(label);\n item.appendChild(value);\n staticShadowBakeDetails.appendChild(item);\n }\n }\n\n function openToolbarOverflowMenu(): void {\n if (toolbarOverflowMenu.childElementCount === 0) return;\n closeLocalTestMenu();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n const win = doc.defaultView;\n const rect = toolbarOverflowButton.getBoundingClientRect();\n const viewportWidth = win?.innerWidth ?? doc.documentElement.clientWidth;\n toolbarOverflowMenu.style.top = `${Math.max(8, rect.bottom + 5)}px`;\n toolbarOverflowMenu.style.right = `${Math.max(8, viewportWidth - rect.right)}px`;\n toolbarOverflowMenu.style.display = 'flex';\n toolbarOverflowOpen = true;\n LocalEditorShared.applyButtonActiveState(toolbarOverflowButton, true);\n }\n\n function resetToolbarOverflowLayout(): void {\n setToolbarCompact(false);\n for (const item of toolbarOverflowItems) restoreToolbarOverflowItemStyle(item);\n for (const item of toolbarOrder) {\n item.dataset.editorToolbarOverflowed = 'false';\n sceneToolOverlay.appendChild(item);\n }\n LocalEditorShared.clearElement(toolbarOverflowMenu);\n toolbarOverflowButton.style.display = 'none';\n sceneToolOverlay.style.overflowX = 'hidden';\n closeToolbarOverflowMenu();\n }\n\n function layoutToolbarOverflow(): void {\n toolbarOverflowRaf = null;\n resetToolbarOverflowLayout();\n if (sceneToolOverlay.style.display === 'none') return;\n const availableWidth = sceneToolOverlay.clientWidth;\n if (availableWidth <= 0) return;\n const isOverflowing = (): boolean => sceneToolOverlay.scrollWidth > availableWidth + 1;\n if (!isOverflowing()) return;\n\n toolbarOverflowButton.style.display = 'inline-flex';\n for (const item of toolbarOverflowItems) {\n if (!isOverflowing()) break;\n if (item.element.style.display === 'none') continue;\n item.element.dataset.editorToolbarOverflowed = 'true';\n applyToolbarOverflowMenuStyle(item);\n toolbarOverflowMenu.appendChild(item.element);\n }\n\n if (toolbarOverflowMenu.childElementCount === 0) {\n toolbarOverflowButton.style.display = 'none';\n }\n if (isOverflowing()) {\n setToolbarCompact(true);\n }\n sceneToolOverlay.style.overflowX = isOverflowing() ? 'auto' : 'hidden';\n }\n\n function scheduleToolbarOverflowLayout(): void {\n const win = doc.defaultView;\n if (!win) {\n layoutToolbarOverflow();\n return;\n }\n if (toolbarOverflowRaf != null) win.cancelAnimationFrame(toolbarOverflowRaf);\n toolbarOverflowRaf = win.requestAnimationFrame(layoutToolbarOverflow);\n }\n\n const onToolbarOverflowButtonClick = (event: MouseEvent): void => {\n event.stopPropagation();\n if (toolbarOverflowOpen) closeToolbarOverflowMenu();\n else openToolbarOverflowMenu();\n };\n const onEditorStatusButtonClick = (event: MouseEvent): void => {\n event.stopPropagation();\n toggleEditorStatusCenter();\n };\n const onEditorStatusCopyAllClick = (event: MouseEvent): void => {\n event.stopPropagation();\n copyEditorStatusText(\n editorStatusCopyAllButton,\n doc.defaultView,\n createLocalEditorStatusCenterViewModel(currentState).copyAllText,\n );\n };\n const onEditorStatusCloseClick = (event: MouseEvent): void => {\n event.stopPropagation();\n closeEditorStatusCenter();\n };\n const onToolbarOverflowPointerDown = (event: PointerEvent): void => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (!target) return;\n if (target.closest('[data-editor-local-test-menu]') || target.closest('[data-editor-local-test-toggle]')) return;\n if (target.closest('[data-editor-status-center]') || target.closest('[data-editor-status-toggle]')) return;\n if (target.closest('[data-editor-toolbar-overflow-menu]') || target.closest('[data-editor-toolbar-overflow-toggle]')) return;\n if (target.closest('[data-transform-snap-settings-popover]') || target.closest('[data-transform-snap-toggle]')) return;\n if (target.closest('[data-placement-settings-popover]') || target.closest('[data-placement-mode-toggle]')) return;\n if (target.closest('[data-transform-action-popover]') || target.closest('[data-transform-action-toggle]')) return;\n if (target.closest('[data-viewport-overlay-settings-popover]') || target.closest('[data-viewport-overlay-settings-toggle]')) return;\n closeLocalTestMenu();\n closeEditorStatusCenter();\n closeToolbarOverflowMenu();\n if (!target.closest('[data-editor-toolbar-static-shadow-bake-popover]')) closeStaticShadowBakePopover();\n closeSnapSettingsPopover();\n closePlacementSettingsPopover();\n closeTransformActionPopover();\n closeOverlaySettingsPopover();\n };\n const ResizeObserverCtor = doc.defaultView?.ResizeObserver;\n const toolbarResizeObserver = ResizeObserverCtor\n ? new ResizeObserverCtor(() => scheduleToolbarOverflowLayout())\n : null;\n construction.addCleanup('toolbar-resize-observer', () => toolbarResizeObserver?.disconnect());\n toolbarOverflowButton.addEventListener('click', onToolbarOverflowButtonClick);\n localTestButton.addEventListener('click', onLocalTestButtonClick);\n editorStatusButton.addEventListener('click', onEditorStatusButtonClick);\n editorStatusCopyAllButton.addEventListener('click', onEditorStatusCopyAllClick);\n editorStatusCloseButton.addEventListener('click', onEditorStatusCloseClick);\n doc.addEventListener('pointerdown', onToolbarOverflowPointerDown);\n construction.addCleanup('toolbar-overflow-pointerdown', () => {\n doc.removeEventListener('pointerdown', onToolbarOverflowPointerDown);\n });\n toolbarResizeObserver?.observe(sceneToolOverlay);\n doc.defaultView?.addEventListener('resize', scheduleToolbarOverflowLayout);\n construction.addCleanup('toolbar-overflow-resize', () => {\n doc.defaultView?.removeEventListener('resize', scheduleToolbarOverflowLayout);\n });\n\n applyThemeToSurfaces();\n updateThemeToggleButton();\n\n enterEditorButton.addEventListener('click', () => callbacks.onEnterEditor?.());\n saveButton.addEventListener('click', () => {\n closeLocalTestMenu();\n if (localTestActionsEnabled) callbacks.onSaveScene?.();\n });\n saveAndRunButton.addEventListener('click', () => {\n closeLocalTestMenu();\n if (localTestActionsEnabled) callbacks.onSaveAndRunGame?.();\n });\n discardRunButton.addEventListener('click', () => {\n closeLocalTestMenu();\n if (localTestActionsEnabled) callbacks.onDiscardAndRunGame?.();\n });\n undoButton.addEventListener('click', () => callbacks.onUndo?.());\n redoButton.addEventListener('click', () => callbacks.onRedo?.());\n performanceMonitorButton.addEventListener('click', () => {\n setPerformanceMonitorOpen(!performanceMonitorOpen);\n });\n gridToggleButton.addEventListener('click', () => {\n const visible = currentState?.grid?.visible ?? true;\n callbacks.onGridVisibleChange?.(!visible);\n });\n sceneCameraButton.addEventListener('click', () => {\n const enabled = currentState?.sceneCameraPreview?.enabled ?? false;\n callbacks.onSceneCameraPreviewToggle?.(!enabled);\n });\n staticShadowBakeButton.addEventListener('click', () => {\n if (staticShadowBakeButton.disabled) return;\n const action = findLocalEditorRenderingAction(currentState?.renderingPanel, STATIC_SHADOW_BAKE_ACTION_ID);\n if (!action || action.action.disabled) return;\n openStaticShadowBakePopover();\n callbacks.onRenderingAction?.({ actionId: STATIC_SHADOW_BAKE_ACTION_ID });\n });\n staticShadowBakePopoverClose.addEventListener('click', () => closeStaticShadowBakePopover());\n const toggleCoordinateAxesProjection = (event: Event): void => {\n event.preventDefault();\n event.stopPropagation();\n const axesState = currentState?.coordinateAxes ?? null;\n if (!axesState || axesState.projectionToggleDisabled || currentState?.busy) return;\n const currentMode = axesState.projectionMode;\n const nextMode: LocalEditorBrowserViewportProjectionMode = currentMode === 'orthographic' ? 'perspective' : 'orthographic';\n callbacks.onViewportProjectionModeChange?.(nextMode);\n if (event.type === 'click') coordinateAxesOverlay.projectionIcon.blur();\n };\n coordinateAxesOverlay.projectionIcon.addEventListener('pointerdown', (event) => {\n event.preventDefault();\n });\n coordinateAxesOverlay.projectionIcon.addEventListener('click', toggleCoordinateAxesProjection);\n coordinateAxesOverlay.projectionIcon.addEventListener('keydown', (event) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n toggleCoordinateAxesProjection(event);\n });\n viewportToolsGroup.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const preset = target?.closest<HTMLButtonElement>('[data-viewport-view-preset]')?.dataset.viewportViewPreset as LocalEditorBrowserViewportViewPreset | undefined;\n if (preset) {\n callbacks.onViewportViewPresetChange?.(preset);\n return;\n }\n const projectionToggle = target?.closest<HTMLButtonElement>('[data-viewport-projection-toggle]');\n if (projectionToggle) {\n const currentMode = currentState?.viewportTools?.projectionMode ?? 'perspective';\n const nextMode: LocalEditorBrowserViewportProjectionMode = currentMode === 'orthographic' ? 'perspective' : 'orthographic';\n callbacks.onViewportProjectionModeChange?.(nextMode);\n return;\n }\n const markerVisibilityToggle = target?.closest<HTMLButtonElement>('[data-viewport-marker-visibility-toggle]');\n if (markerVisibilityToggle) {\n const markersVisible = currentState?.viewportTools?.markersVisible ?? true;\n callbacks.onMarkerViewportVisibilityChange?.(!markersVisible);\n return;\n }\n const showAllPrefabMarkersToggle = target?.closest<HTMLButtonElement>('[data-viewport-show-all-prefab-markers-toggle]');\n if (showAllPrefabMarkersToggle) {\n const showAllPrefabMarkers = currentState?.viewportTools?.showAllPrefabMarkers ?? false;\n callbacks.onShowAllPrefabMarkersChange?.(!showAllPrefabMarkers);\n return;\n }\n const overlayToggle = target?.closest<HTMLButtonElement>('[data-viewport-overlay-settings-toggle]');\n if (overlayToggle) {\n event.stopPropagation();\n toggleOverlaySettingsPopover();\n return;\n }\n const measureToggle = target?.closest<HTMLButtonElement>('[data-viewport-measure-toggle]');\n if (measureToggle) {\n const currentTool = currentState?.viewportTools?.activeUtilityTool ?? 'none';\n const nextTool: LocalEditorBrowserViewportUtilityTool = currentTool === 'measure-distance' ? 'none' : 'measure-distance';\n callbacks.onViewportUtilityToolChange?.(nextTool);\n return;\n }\n const clearMeasurement = target?.closest<HTMLButtonElement>('[data-viewport-measurement-clear]');\n if (clearMeasurement) {\n callbacks.onViewportMeasurementClear?.();\n }\n });\n const setShortcutHelpOpen = (open: boolean): void => {\n if (open) contextMenu.close();\n helpOpen = open;\n syncInputModalOpen();\n shortcutHelpPanel.style.display = helpOpen ? 'flex' : 'none';\n LocalEditorShared.applyButtonActiveState(sceneHelpButton, helpOpen);\n };\n const setPerformanceMonitorOpen = (open: boolean, notify = true): void => {\n if (performanceMonitorOpen === open) return;\n if (open) contextMenu.close();\n performanceMonitorOpen = open;\n LocalEditorShared.applyButtonActiveState(performanceMonitorButton, performanceMonitorOpen);\n renderPerformanceMonitorOverlay(\n performanceMonitorOverlay,\n currentState?.mode === 'editor' && !currentState.prefabStage ? currentState.performanceStats ?? null : null,\n currentState?.mode === 'editor' && !currentState.prefabStage && performanceMonitorOpen,\n );\n if (notify) callbacks.onPerformanceMonitorOpenChange?.(performanceMonitorOpen);\n };\n const openAssetPreviewModal = (asset: LocalEditorBrowserUiAssetItem): void => {\n if (!asset.preview) return;\n contextMenu.close();\n previewedAsset = asset;\n assetPreviewMode = 'preview';\n assetPreviewDialog.setAttribute('aria-label', '资产预览');\n assetPreviewOpen = true;\n renderAssetPreviewModal();\n syncInputModalOpen();\n assetPreviewCloseButton.focus({ preventScroll: true });\n };\n\n const openAssetMaterialEditorModal = (asset: LocalEditorBrowserUiAssetItem): void => {\n if (!asset.material) return;\n contextMenu.close();\n previewedAsset = asset;\n assetPreviewMode = 'material-editor';\n assetPreviewDialog.setAttribute('aria-label', '编辑材质球');\n assetPreviewOpen = true;\n renderAssetPreviewModal();\n syncInputModalOpen();\n assetPreviewCloseButton.focus({ preventScroll: true });\n };\n\n const openAssetRenameModal = (asset: LocalEditorBrowserUiAssetItem): void => {\n contextMenu.close();\n previewedAsset = asset;\n assetPreviewMode = 'rename';\n assetPreviewDialog.setAttribute('aria-label', '重命名资产');\n assetPreviewOpen = true;\n renderAssetPreviewModal();\n syncInputModalOpen();\n setTimeout(() => {\n const input = assetPreviewBody.querySelector<HTMLInputElement>('[data-editor-asset-rename-input]');\n input?.focus({ preventScroll: true });\n input?.select();\n }, 0);\n };\n\n const closeAssetPreviewModal = (): void => {\n if (!assetPreviewOpen) return;\n assetPreviewOpen = false;\n previewedAsset = null;\n assetPreviewMode = 'preview';\n renderAssetPreviewModal();\n syncInputModalOpen();\n };\n\n const openInspectorAssetPicker = (\n input: HTMLInputElement,\n property: LocalEditorBrowserInspectorProperty<TDocument>,\n ): void => {\n contextMenu.close();\n if (helpOpen) setShortcutHelpOpen(false);\n settleHierarchyOperationInputRequest(null);\n assetPickerInput = input;\n assetPickerProperty = property;\n assetPickerFilter = '';\n assetPickerOpen = true;\n closeAssetPreviewModal();\n renderAssetPickerModal();\n syncInputModalOpen();\n assetPickerSearch.focus({ preventScroll: true });\n assetPickerSearch.select();\n };\n\n const requestHierarchyOperationInput = (\n operation: HierarchyOperationDescriptor,\n context: HierarchyOperationContext,\n ): Promise<Readonly<Record<string, HierarchyJsonValue>> | null> => {\n if (!operation.inputPresentation || currentState?.mode !== 'editor' || currentState.busy) {\n return Promise.resolve(null);\n }\n contextMenu.close();\n if (helpOpen) setShortcutHelpOpen(false);\n assetPickerInput = null;\n assetPickerProperty = null;\n settleHierarchyOperationInputRequest(null);\n assetPickerFilter = '';\n assetPickerOpen = true;\n closeAssetPreviewModal();\n renderAssetPickerModal();\n syncInputModalOpen();\n assetPickerSearch.focus({ preventScroll: true });\n assetPickerSearch.select();\n return new Promise(resolve => {\n hierarchyOperationInputRequest = { operation, context, resolve };\n renderAssetPickerModal();\n });\n };\n\n function settleHierarchyOperationInputRequest(\n value: Readonly<Record<string, HierarchyJsonValue>> | null,\n ): void {\n const request = hierarchyOperationInputRequest;\n hierarchyOperationInputRequest = null;\n request?.resolve(value);\n }\n\n const closeInspectorAssetPicker = (): void => {\n if (!assetPickerOpen) return;\n assetPickerOpen = false;\n assetPickerInput = null;\n assetPickerProperty = null;\n settleHierarchyOperationInputRequest(null);\n assetPickerFilter = '';\n renderAssetPickerModal();\n syncInputModalOpen();\n };\n\n function syncInputModalOpen(): void {\n inputRouter.setModalOpen(currentState?.mode === 'editor' && (helpOpen || assetPreviewOpen || assetPickerOpen));\n }\n\n function resolvePreviewedAssetFromState(): LocalEditorBrowserUiAssetItem | null {\n if (!previewedAsset) return null;\n const refreshed = currentState?.assets.find(asset => asset.id === previewedAsset?.id)\n ?? currentState?.assets.find(asset => (asset.assetId ?? asset.id) === (previewedAsset?.assetId ?? previewedAsset?.id))\n ?? null;\n if (refreshed) previewedAsset = refreshed;\n return previewedAsset;\n }\n\n function renderAssetPreviewModal(): void {\n const asset = resolvePreviewedAssetFromState();\n if (\n !assetPreviewOpen\n || !asset\n || (assetPreviewMode === 'preview' && !asset.preview)\n || (assetPreviewMode === 'material-editor' && !asset.material)\n ) {\n assetPreviewModal.style.display = 'none';\n assetPreviewTitle.textContent = '';\n assetPreviewMeta.textContent = '';\n while (assetPreviewBody.firstChild) assetPreviewBody.removeChild(assetPreviewBody.firstChild);\n return;\n }\n if (assetPreviewMode === 'material-editor' && asset.material) {\n renderAssetMaterialEditorModal(asset);\n assetPreviewModal.style.display = 'flex';\n return;\n }\n if (assetPreviewMode === 'rename') {\n renderAssetRenameModal(asset);\n assetPreviewModal.style.display = 'flex';\n return;\n }\n assetPreviewDialog.style.width = 'min(420px,calc(100vw - 64px))';\n assetPreviewBody.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'justify-content:center',\n 'min-height:240px',\n 'border:1px solid var(--fps-editor-divider)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel-soft)',\n ].join(';');\n assetPreviewTitle.textContent = asset.label;\n assetPreviewMeta.textContent = [\n asset.kind ? `Kind: ${asset.kind}` : '',\n asset.meta ?? asset.assetId ?? asset.id,\n ].filter(Boolean).join(' · ');\n while (assetPreviewBody.firstChild) assetPreviewBody.removeChild(assetPreviewBody.firstChild);\n assetPreviewBody.appendChild(LocalEditorPanels.createAssetPreviewElement(doc, asset, 'modal'));\n assetPreviewModal.style.display = 'flex';\n }\n\n function renderAssetRenameModal(asset: LocalEditorBrowserUiAssetItem): void {\n assetPreviewDialog.style.width = 'min(420px,calc(100vw - 64px))';\n assetPreviewTitle.textContent = '重命名 Prefab';\n assetPreviewMeta.textContent = asset.assetId ?? asset.id;\n while (assetPreviewBody.firstChild) assetPreviewBody.removeChild(assetPreviewBody.firstChild);\n assetPreviewBody.style.cssText = [\n 'display:flex',\n 'align-items:stretch',\n 'justify-content:stretch',\n 'min-height:0',\n 'border:1px solid var(--fps-editor-divider)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel-soft)',\n 'padding:12px',\n ].join(';');\n const form = doc.createElement('form');\n form.dataset.editorAssetRenameForm = 'true';\n form.style.cssText = 'display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;width:100%;align-items:center';\n const input = doc.createElement('input');\n input.type = 'text';\n input.dataset.editorAssetRenameInput = 'true';\n input.value = asset.label;\n input.maxLength = 80;\n input.required = true;\n input.style.cssText = [\n 'height:30px',\n 'min-width:0',\n 'box-sizing:border-box',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text)',\n 'font-size:12px',\n 'padding:0 8px',\n 'outline:none',\n ].join(';');\n const submit = LocalEditorShared.createButton(doc, '确认');\n submit.type = 'submit';\n form.appendChild(input);\n form.appendChild(submit);\n assetPreviewBody.appendChild(form);\n }\n\n function renderAssetMaterialEditorModal(asset: LocalEditorBrowserUiAssetItem): void {\n const material = asset.material!;\n const profile = material.profile ?? {};\n const baseColor = profile.baseColor ?? {};\n const emission = profile.emission ?? {};\n const readonly = material.readonly === true;\n const materialKind = material.materialKind === 'standard' ? 'standard' : 'pbr';\n assetPreviewDialog.style.width = 'min(780px,calc(100vw - 64px))';\n assetPreviewTitle.textContent = '编辑材质球';\n assetPreviewMeta.textContent = [\n material.name || asset.label,\n materialKind === 'standard' ? 'Standard' : 'PBR',\n `被 ${material.usage?.count ?? 0} 处使用`,\n readonly ? '只读系统材质' : '共享资产参数',\n material.id,\n ].filter(Boolean).join(' · ');\n while (assetPreviewBody.firstChild) assetPreviewBody.removeChild(assetPreviewBody.firstChild);\n assetPreviewBody.style.cssText = [\n 'display:grid',\n 'grid-template-columns:minmax(180px,250px) minmax(0,1fr)',\n 'gap:14px',\n 'align-items:start',\n 'min-height:360px',\n 'border:1px solid var(--fps-editor-divider)',\n 'border-radius:4px',\n 'background:var(--fps-editor-panel-soft)',\n 'padding:12px',\n 'box-sizing:border-box',\n ].join(';');\n\n const previewColumn = doc.createElement('div');\n previewColumn.style.cssText = 'display:flex;flex-direction:column;gap:10px;min-width:0';\n previewColumn.appendChild(LocalEditorPanels.createAssetPreviewElement(doc, asset, 'modal'));\n const previewMeta = doc.createElement('div');\n previewMeta.textContent = readonly\n ? '系统默认材质不可编辑。'\n : '修改会影响所有使用该材质球的物体。';\n previewMeta.style.cssText = 'color:var(--fps-editor-muted);font-size:11px;font-weight:800;line-height:1.45';\n previewColumn.appendChild(previewMeta);\n appendMaterialEditorUsageSummary(previewColumn, material.usage ?? { count: 0, items: [] });\n\n const form = doc.createElement('div');\n form.style.cssText = 'display:grid;grid-template-columns:minmax(96px,140px) minmax(0,1fr);gap:7px 10px;align-items:center;min-width:0';\n appendMaterialEditorTextField(form, '名称', 'name', material.name || asset.label, readonly);\n appendMaterialEditorReadonlyRow(form, '类型', materialKind === 'standard' ? 'Standard 标准材质球' : 'PBR 标准材质球');\n appendMaterialEditorTextureField(form, '基础贴图', 'profile.baseColor.texture.url', baseColor.texture?.url ?? '', readonly);\n appendMaterialEditorNumberField(form, '贴图亮度', 'profile.baseColor.brightness', baseColor.brightness ?? 1, readonly, 0, 2, 0.05);\n appendMaterialEditorNumberField(form, '贴图饱和度', 'profile.baseColor.saturation', baseColor.saturation ?? 1, readonly, 0, 2, 0.05);\n appendMaterialEditorNumberField(form, '贴图对比度', 'profile.baseColor.contrast', baseColor.contrast ?? 1, readonly, 0, 2, 0.05);\n appendMaterialEditorNumberField(form, '贴图色相', 'profile.baseColor.hue', baseColor.hue ?? 0, readonly, -180, 180, 1);\n appendMaterialEditorColorField(form, '基础色', 'profile.baseColor.color', baseColor.color ?? { r: 1, g: 1, b: 1 }, readonly);\n if (materialKind === 'pbr') {\n appendMaterialEditorNumberField(form, '金属度', 'profile.metallic', profile.metallic ?? 0, readonly, 0, 1, 0.05);\n appendMaterialEditorNumberField(form, '粗糙度', 'profile.roughness', profile.roughness ?? 1, readonly, 0, 1, 0.05);\n }\n appendMaterialEditorColorField(form, '自发光颜色', 'profile.emission.color', emission.color ?? { r: 0, g: 0, b: 0 }, readonly);\n appendMaterialEditorNumberField(form, '自发光强度', 'profile.emission.intensity', emission.intensity ?? 0, readonly, 0, undefined, 0.05);\n appendMaterialEditorTextureField(form, '遮罩贴图', 'profile.emission.maskTexture.url', emission.maskTexture?.url ?? '', readonly);\n\n assetPreviewBody.appendChild(previewColumn);\n assetPreviewBody.appendChild(form);\n }\n\n function appendMaterialEditorReadonlyRow(container: HTMLElement, label: string, value: string): void {\n appendMaterialEditorLabel(container, label);\n const output = doc.createElement('div');\n output.textContent = value;\n output.style.cssText = [\n 'min-height:30px',\n 'display:flex',\n 'align-items:center',\n 'min-width:0',\n 'padding:0 8px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:12px',\n 'font-weight:900',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n ].join(';');\n container.appendChild(output);\n }\n\n function appendMaterialEditorTextField(\n container: HTMLElement,\n label: string,\n fieldPath: string,\n value: string,\n readonly: boolean,\n ): void {\n appendMaterialEditorLabel(container, label);\n const input = doc.createElement('input');\n input.type = 'text';\n input.value = value;\n input.disabled = readonly;\n input.spellcheck = false;\n input.dataset.editorAssetMaterialField = fieldPath;\n input.dataset.editorAssetMaterialFieldKind = 'text';\n input.style.cssText = createMaterialEditorFieldCss(readonly);\n container.appendChild(input);\n }\n\n function appendMaterialEditorUsageSummary(\n container: HTMLElement,\n usage: NonNullable<NonNullable<LocalEditorBrowserUiAssetItem['material']>['usage']>,\n ): void {\n const panel = doc.createElement('div');\n panel.style.cssText = [\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'padding:8px',\n 'display:flex',\n 'flex-direction:column',\n 'gap:6px',\n 'min-width:0',\n ].join(';');\n const title = doc.createElement('div');\n title.textContent = `被 ${usage.count} 处使用`;\n title.style.cssText = 'font-size:12px;font-weight:900;color:var(--fps-editor-text-strong)';\n panel.appendChild(title);\n if (usage.items.length === 0) {\n const empty = doc.createElement('div');\n empty.textContent = '未被场景使用';\n empty.style.cssText = 'font-size:11px;font-weight:800;color:var(--fps-editor-muted)';\n panel.appendChild(empty);\n } else {\n const list = doc.createElement('div');\n list.style.cssText = 'display:flex;flex-direction:column;gap:4px;min-width:0';\n for (const item of usage.items) {\n const row = doc.createElement('div');\n row.textContent = item.label;\n row.title = item.bindingPath || item.label;\n row.style.cssText = [\n 'min-height:22px',\n 'display:flex',\n 'align-items:center',\n 'min-width:0',\n 'padding:0 6px',\n 'border:1px solid var(--fps-editor-border-soft)',\n 'border-radius:3px',\n 'background:var(--fps-editor-panel-soft)',\n 'color:var(--fps-editor-muted-strong)',\n 'font-size:11px',\n 'font-weight:800',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n ].join(';');\n list.appendChild(row);\n }\n panel.appendChild(list);\n }\n container.appendChild(panel);\n }\n\n function appendMaterialEditorColorField(\n container: HTMLElement,\n label: string,\n fieldPath: string,\n color: { r: number; g: number; b: number },\n readonly: boolean,\n ): void {\n appendMaterialEditorLabel(container, label);\n const input = doc.createElement('input');\n input.type = 'color';\n input.value = materialEditorColorToHex(color);\n input.disabled = readonly;\n input.dataset.editorAssetMaterialField = fieldPath;\n input.dataset.editorAssetMaterialFieldKind = 'color';\n input.style.cssText = [\n 'width:48px',\n 'height:32px',\n 'padding:2px',\n 'border:1px solid var(--fps-editor-accent)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n readonly ? 'opacity:0.62' : 'cursor:pointer',\n ].join(';');\n container.appendChild(input);\n }\n\n function appendMaterialEditorNumberField(\n container: HTMLElement,\n label: string,\n fieldPath: string,\n value: number,\n readonly: boolean,\n min?: number,\n max?: number,\n step = 0.05,\n ): void {\n appendMaterialEditorLabel(container, label);\n const input = doc.createElement('input');\n input.type = 'number';\n input.value = formatMaterialEditorNumber(value);\n if (min != null) input.min = String(min);\n if (max != null) input.max = String(max);\n input.step = String(step);\n input.disabled = readonly;\n input.dataset.editorAssetMaterialField = fieldPath;\n input.dataset.editorAssetMaterialFieldKind = 'number';\n input.style.cssText = createMaterialEditorFieldCss(readonly);\n container.appendChild(input);\n }\n\n function appendMaterialEditorTextureField(\n container: HTMLElement,\n label: string,\n fieldPath: string,\n value: string,\n readonly: boolean,\n ): void {\n appendMaterialEditorLabel(container, label);\n const select = doc.createElement('select');\n select.disabled = readonly;\n select.dataset.editorAssetMaterialField = fieldPath;\n select.dataset.editorAssetMaterialFieldKind = 'texture';\n select.style.cssText = createMaterialEditorFieldCss(readonly);\n for (const option of createMaterialEditorTextureOptions(value)) {\n const optionElement = doc.createElement('option');\n optionElement.value = option.value;\n optionElement.textContent = option.label;\n optionElement.title = option.meta ?? option.value;\n select.appendChild(optionElement);\n }\n select.value = value;\n container.appendChild(select);\n }\n\n function appendMaterialEditorLabel(container: HTMLElement, text: string): void {\n const label = doc.createElement('div');\n label.textContent = text;\n label.style.cssText = 'color:var(--fps-editor-muted-strong);font-size:12px;font-weight:900;line-height:1.2';\n container.appendChild(label);\n }\n\n function createMaterialEditorTextureOptions(currentValue: string): Array<{ label: string; value: string; meta?: string }> {\n const options: Array<{ label: string; value: string; meta?: string }> = [{ label: '继承 / 无', value: '', meta: '清空贴图引用' }];\n const seen = new Set(['']);\n for (const asset of currentState?.assets ?? []) {\n if (resolveLocalEditorBrowserAssetKind(asset) !== 'texture') continue;\n const value = asset.preview?.kind === 'image'\n ? asset.preview.url\n : asset.external?.assetUrl ?? asset.external?.assetPath ?? '';\n if (!value || seen.has(value)) continue;\n seen.add(value);\n options.push({ label: asset.label, value, meta: asset.meta ?? asset.assetId ?? asset.id });\n }\n if (currentValue && !seen.has(currentValue)) {\n options.push({ label: currentValue, value: currentValue, meta: '当前贴图 URL' });\n }\n return options;\n }\n\n function createMaterialEditorFieldCss(readonly: boolean): string {\n return [\n 'width:100%',\n 'min-width:0',\n 'height:32px',\n 'padding:0 8px',\n 'border:1px solid var(--fps-editor-accent)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:12px',\n 'font-weight:800',\n 'box-sizing:border-box',\n readonly ? 'opacity:0.62' : '',\n ].join(';');\n }\n\n function formatMaterialEditorNumber(value: number): string {\n if (!Number.isFinite(value)) return '0';\n return Number.isInteger(value) ? String(value) : value.toFixed(4).replace(/0+$/, '').replace(/\\.$/, '');\n }\n\n function materialEditorColorToHex(color: { r: number; g: number; b: number }): string {\n const toHex = (value: number): string => {\n const normalized = Number.isFinite(value) ? value : 0;\n const byte = Math.round(Math.min(255, Math.max(0, normalized <= 1 ? normalized * 255 : normalized)));\n return byte.toString(16).padStart(2, '0');\n };\n return `#${toHex(color.r)}${toHex(color.g)}${toHex(color.b)}`;\n }\n\n function materialEditorHexToColor(value: string): { r: number; g: number; b: number } | null {\n const match = value.trim().match(/^#?([0-9a-f]{6})$/i);\n if (!match) return null;\n const hex = match[1];\n return {\n r: Number.parseInt(hex.slice(0, 2), 16) / 255,\n g: Number.parseInt(hex.slice(2, 4), 16) / 255,\n b: Number.parseInt(hex.slice(4, 6), 16) / 255,\n };\n }\n\n function dispatchMaterialEditorFieldChange(input: HTMLInputElement | HTMLSelectElement): void {\n const asset = resolvePreviewedAssetFromState();\n const material = asset?.material;\n const fieldPath = input.dataset.editorAssetMaterialField;\n if (!asset || !material || !fieldPath || material.readonly === true) return;\n const kind = input.dataset.editorAssetMaterialFieldKind;\n let value: unknown;\n if (kind === 'color' && input instanceof HTMLInputElement) {\n value = materialEditorHexToColor(input.value);\n if (!value) return;\n } else if (kind === 'number' && input instanceof HTMLInputElement) {\n value = Number(input.value);\n if (!Number.isFinite(value)) return;\n } else if (kind === 'texture') {\n value = input.value.trim() || null;\n } else {\n value = input.value;\n }\n callbacks.onAssetAction?.({\n actionId: 'asset.edit-material-field',\n assetId: material.id || asset.assetId || asset.id,\n browserAssetId: asset.id,\n assetKind: asset.kind,\n fieldPath,\n value,\n });\n }\n\n function renderAssetPickerModal(): void {\n if (!assetPickerOpen || (!hierarchyOperationInputRequest && (!assetPickerProperty || !assetPickerInput))) {\n assetPickerModal.style.display = 'none';\n delete assetPickerModal.dataset.editorAssetPickerMode;\n assetPickerTitle.textContent = '';\n assetPickerSearch.value = '';\n while (assetPickerList.firstChild) assetPickerList.removeChild(assetPickerList.firstChild);\n return;\n }\n const operationInput = hierarchyOperationInputRequest?.operation.inputPresentation;\n const options = operationInput\n ? {\n title: operationInput.title,\n candidates: (currentState?.assets ?? [])\n .filter(asset => (\n operationInput.assetKinds.includes(resolveLocalEditorBrowserAssetKind(asset))\n && asset.placeable !== false\n && asset.disabled !== true\n ))\n .map(asset => ({\n label: asset.label,\n value: asset.assetId ?? asset.id,\n meta: asset.meta ?? asset.assetId ?? asset.id,\n kind: asset.kind ?? resolveLocalEditorBrowserAssetKind(asset),\n preview: asset.preview,\n } satisfies LocalEditorBrowserInspectorAssetPickerOption)),\n }\n : readInspectorAssetPickerOptions(assetPickerProperty!);\n assetPickerModal.dataset.editorAssetPickerMode = operationInput ? 'hierarchy-operation' : 'inspector';\n assetPickerTitle.textContent = options.title;\n assetPickerSearch.value = assetPickerFilter;\n while (assetPickerList.firstChild) assetPickerList.removeChild(assetPickerList.firstChild);\n const normalizedFilter = assetPickerFilter.trim().toLowerCase();\n const candidates = options.candidates.filter(candidate => {\n if (!normalizedFilter) return true;\n return [candidate.label, candidate.value, candidate.meta ?? '', candidate.kind ?? '']\n .some(value => value.toLowerCase().includes(normalizedFilter));\n });\n if (candidates.length === 0) {\n const empty = doc.createElement('div');\n empty.textContent = '没有匹配的资产。';\n empty.style.cssText = 'color:var(--fps-editor-muted);font-size:12px;font-weight:800;padding:10px';\n assetPickerList.appendChild(empty);\n }\n for (const candidate of candidates) {\n assetPickerList.appendChild(createInspectorAssetPickerCandidateButton(candidate, assetPickerInput?.value ?? ''));\n }\n assetPickerModal.style.display = 'flex';\n }\n\n function createInspectorAssetPickerCandidateButton(\n candidate: LocalEditorBrowserInspectorAssetPickerOption,\n currentValue: string,\n ): HTMLButtonElement {\n const button = doc.createElement('button');\n button.type = 'button';\n button.dataset.editorAssetPickerCandidate = candidate.value;\n const selected = candidate.value === currentValue;\n button.style.cssText = [\n 'min-width:0',\n 'min-height:56px',\n 'display:flex',\n 'align-items:center',\n 'gap:8px',\n 'padding:7px 8px',\n `border:1px solid ${selected ? 'var(--fps-editor-accent-strong)' : 'var(--fps-editor-border)'}`,\n 'border-radius:3px',\n `background:${selected ? 'var(--fps-editor-accent-soft)' : 'var(--fps-editor-asset-card-bg)'}`,\n 'color:var(--fps-editor-text)',\n 'text-align:left',\n 'cursor:pointer',\n ].join(';');\n button.appendChild(LocalEditorPanels.createAssetPreviewElement(doc, {\n id: candidate.value || '__empty__',\n label: candidate.label,\n preview: candidate.preview,\n }, 'grid'));\n const body = doc.createElement('div');\n body.style.cssText = 'min-width:0;flex:1';\n const label = doc.createElement('div');\n label.textContent = candidate.label;\n label.style.cssText = 'font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';\n const meta = doc.createElement('div');\n meta.textContent = candidate.meta ?? candidate.value;\n meta.style.cssText = 'color:var(--fps-editor-muted);font-size:11px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';\n body.appendChild(label);\n body.appendChild(meta);\n button.appendChild(body);\n return button;\n }\n\n sceneHelpButton.addEventListener('click', () => {\n setShortcutHelpOpen(!helpOpen);\n });\n contextActionGroup.addEventListener('click', (event) => {\n const button = event.target instanceof Element\n ? event.target.closest<HTMLButtonElement>('[data-editor-context-action]')\n : null;\n if (!button || button.disabled) return;\n callbacks.onContextAction?.(button.dataset.editorContextAction ?? '');\n });\n themeToggleButton.addEventListener('click', () => {\n setActiveTheme(activeTheme === 'dark' ? 'light' : 'dark');\n });\n shortcutHelpPanel.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (!target?.closest('[data-editor-shortcut-help-close]')) return;\n setShortcutHelpOpen(false);\n });\n assetPreviewModal.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (target?.closest('[data-editor-asset-preview-close]')) {\n closeAssetPreviewModal();\n return;\n }\n if (target === assetPreviewModal) closeAssetPreviewModal();\n });\n assetPreviewBody.addEventListener('change', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (assetPreviewMode !== 'material-editor') return;\n const input = target?.closest<HTMLInputElement | HTMLSelectElement>('[data-editor-asset-material-field]');\n if (!input) return;\n dispatchMaterialEditorFieldChange(input);\n });\n assetPreviewBody.addEventListener('submit', (event) => {\n if (assetPreviewMode !== 'rename') return;\n event.preventDefault();\n const asset = resolvePreviewedAssetFromState();\n const form = event.target instanceof HTMLFormElement\n ? event.target.closest<HTMLFormElement>('[data-editor-asset-rename-form]')\n : null;\n const input = form?.querySelector<HTMLInputElement>('[data-editor-asset-rename-input]');\n const name = input?.value.trim() ?? '';\n if (!asset || !name) return;\n callbacks.onAssetAction?.({\n ...createAssetBrowserActionInput('asset.rename', asset),\n value: name,\n });\n closeAssetPreviewModal();\n });\n assetPickerModal.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n if (target?.closest('[data-editor-asset-picker-close]')) {\n closeInspectorAssetPicker();\n return;\n }\n const candidateButton = target?.closest<HTMLButtonElement>('[data-editor-asset-picker-candidate]');\n if (candidateButton && hierarchyOperationInputRequest?.operation.inputPresentation) {\n const value = candidateButton.dataset.editorAssetPickerCandidate ?? '';\n const presentation = hierarchyOperationInputRequest.operation.inputPresentation;\n const asset = currentState?.assets.find(candidate => (candidate.assetId ?? candidate.id) === value);\n if (asset) callbacks.onSelectAsset?.(asset.id);\n settleHierarchyOperationInputRequest(Object.freeze({\n [presentation.field]: presentation.multiple ? Object.freeze([value]) : value,\n }));\n closeInspectorAssetPicker();\n return;\n }\n if (candidateButton && assetPickerInput) {\n assetPickerInput.value = candidateButton.dataset.editorAssetPickerCandidate ?? '';\n assetPickerInput.dispatchEvent(new Event('change', { bubbles: true }));\n closeInspectorAssetPicker();\n return;\n }\n if (target === assetPickerModal) closeInspectorAssetPicker();\n });\n assetPickerSearch.addEventListener('input', () => {\n assetPickerFilter = assetPickerSearch.value;\n renderAssetPickerModal();\n });\n toolGroup.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const toolId = target?.closest<HTMLButtonElement>('[data-editor-tool-id]')?.dataset.editorToolId;\n if (toolId) callbacks.onToolActivate?.(toolId);\n });\n spaceGroup.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const space = target?.closest<HTMLButtonElement>('[data-transform-space]')?.dataset.transformSpace as LocalEditorBrowserTransformSpace | undefined;\n if (space) callbacks.onTransformSpaceChange?.(space);\n });\n snapButton.addEventListener('click', (event) => {\n event.stopPropagation();\n toggleSnapSettingsPopover();\n });\n snapSettingsPopover.addEventListener('change', (event) => {\n const enabledInput = event.target instanceof HTMLInputElement\n ? event.target.closest<HTMLInputElement>('[data-transform-snap-enabled]')\n : null;\n if (enabledInput) {\n callbacks.onTransformSnapEnabledChange?.(enabledInput.checked);\n return;\n }\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n const kind = input?.dataset.transformSnapStep as LocalEditorBrowserTransformSnapStepKind | undefined;\n if (!input || !kind) return;\n const value = Number(input.value);\n if (!Number.isFinite(value) || value <= 0) {\n const settings = currentState?.transformOperations?.settings ?? DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS;\n input.value = formatSnapStepInputValue(settings.snap, kind);\n return;\n }\n callbacks.onTransformSnapStepChange?.({ kind, value });\n });\n placementGroup.addEventListener('click', (event) => {\n event.stopPropagation();\n togglePlacementSettingsPopover();\n });\n placementSettingsPopover.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const mode = target?.closest<HTMLButtonElement>('[data-placement-mode]')?.dataset.placementMode as LocalEditorBrowserPlacementMode | undefined;\n if (!mode) return;\n callbacks.onPlacementModeChange?.(mode);\n closePlacementSettingsPopover();\n });\n actionGroup.addEventListener('click', (event) => {\n event.stopPropagation();\n toggleTransformActionPopover();\n });\n transformActionPopover.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const action = target?.closest<HTMLButtonElement>('[data-transform-action]')?.dataset.transformAction as LocalEditorBrowserTransformAction | undefined;\n if (!action) return;\n const transformOperations = currentState?.transformOperations;\n if (!transformOperations || !isTransformActionEnabled(action, transformOperations)) return;\n callbacks.onTransformAction?.(action);\n closeTransformActionPopover();\n });\n overlaySettingsPopover.addEventListener('change', (event) => {\n const input = event.target instanceof HTMLInputElement\n ? event.target.closest<HTMLInputElement>('[data-viewport-overlay-setting]')\n : null;\n const key = input?.dataset.viewportOverlaySetting as keyof typeof VIEWPORT_OVERLAY_TOGGLE_LABELS | undefined;\n if (!input || !key) return;\n const currentOverlay = currentState?.viewportTools?.overlay;\n callbacks.onViewportOverlaySettingsChange?.({\n bounds: currentOverlay?.bounds ?? false,\n dimensions: currentOverlay?.dimensions ?? false,\n edgeLengths: currentOverlay?.edgeLengths ?? false,\n anchor: currentOverlay?.anchor ?? false,\n [key]: input.checked,\n });\n });\n\n function suppressAssetBrowserRevealIfVisible(assetButton: HTMLButtonElement): void {\n const assetId = assetButton.dataset.editorAssetId;\n if (assetId && assetBrowserViewportReveal.isElementVisible(assetButton)) {\n assetBrowserViewportReveal.suppressNextReveal(assetId);\n }\n }\n\n function revealSelectedAssetBrowserItem(assetId: string): boolean {\n const buttons = assetPanel.querySelectorAll<HTMLButtonElement>('[data-editor-asset-id]');\n for (const button of buttons) {\n if (button.dataset.editorAssetId !== assetId) continue;\n assetBrowserViewportReveal.revealElement(button);\n return true;\n }\n return false;\n }\n\n function revealPendingStatusDiagnosticPath(state: LocalEditorBrowserUiState<TDocument>): void {\n const request = pendingStatusDiagnosticRequest;\n const path = request?.path;\n if (!request?.settled || !path || panelRegistry.getRightDockTab() !== 'inspector') return;\n const hierarchySnapshot = hierarchyKernel.getViewModel()?.snapshot;\n const current = (!path.scopeId || path.scopeId === hierarchySnapshot?.scopeKey)\n && (path.documentRevision == null || path.documentRevision === state.documentRevision)\n && (path.projectionRevision == null || path.projectionRevision === hierarchySnapshot?.revision);\n const target = [...inspectorPanel.querySelectorAll<HTMLElement>('[data-serialized-path]')]\n .find(element => current && element.dataset.serializedPath === path.value);\n delete request.path;\n if (!target) {\n clearCompletedStatusDiagnosticRequest(request);\n return;\n }\n target.closest<HTMLDetailsElement>('details')?.setAttribute('open', '');\n target.scrollIntoView({ block: 'center', inline: 'nearest' });\n const focusTarget = target.matches('input,select,textarea,button,[tabindex]')\n ? target\n : target.querySelector<HTMLElement>('input,select,textarea,button,[tabindex]');\n focusTarget?.focus({ preventScroll: true });\n clearCompletedStatusDiagnosticRequest(request);\n }\n\n function revealPendingStatusDiagnosticAsset(state: LocalEditorBrowserUiState<TDocument>): void {\n const request = pendingStatusDiagnosticRequest;\n if (!request?.settled || !request.assetId || panelRegistry.getBottomDockTab() !== 'assets') return;\n const revealId = state.selectedAssetId ?? request.assetId;\n revealSelectedAssetBrowserItem(revealId);\n delete request.assetId;\n clearCompletedStatusDiagnosticRequest(request);\n }\n\n function clearCompletedStatusDiagnosticRequest(\n request: NonNullable<typeof pendingStatusDiagnosticRequest>,\n ): void {\n if (pendingStatusDiagnosticRequest === request && !request.path && !request.assetId) {\n pendingStatusDiagnosticRequest = null;\n }\n }\n\n function createCurrentAssetBrowserActionContext(): { targetPrefabAssetId?: string; parentNodeId?: string } | undefined {\n const stage = currentState?.prefabStage;\n if (!stage) return undefined;\n const selectedItem = findLocalEditorPrefabStageStructureItem(stage, stage.selectedItemId);\n return {\n targetPrefabAssetId: stage.assetId,\n ...(selectedItem?.itemType === 'prefab-node' && selectedItem.nodeId\n ? { parentNodeId: selectedItem.nodeId }\n : {}),\n };\n }\n\n assetPanel.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const tabButton = target?.closest<HTMLButtonElement>('[data-editor-dock-tab]');\n const tab = tabButton?.dataset.editorDockTab as LocalEditorBottomDockTab | undefined;\n if (tab === 'assets' || tab === 'history') {\n panelRegistry.setBottomDockTab(tab);\n if (currentState) render(currentState);\n return;\n }\n const assetBrowserTabButton = target?.closest<HTMLButtonElement>('[data-editor-asset-browser-tab]');\n const nextAssetBrowserTab = assetBrowserTabButton?.dataset.editorAssetBrowserTab;\n if (isLocalEditorAssetBrowserTab(nextAssetBrowserTab)) {\n assetBrowserTab = nextAssetBrowserTab;\n if (currentState) render(currentState);\n return;\n }\n const createMaterialButton = target?.closest<HTMLButtonElement>('[data-editor-create-material-asset]');\n if (createMaterialButton) {\n callbacks.onAssetAction?.({\n actionId: 'asset.create-material',\n assetKind: 'material',\n });\n return;\n }\n const addToPrefabButton = target?.closest<HTMLButtonElement>('[data-editor-asset-add-to-prefab]');\n const addToPrefabAssetId = addToPrefabButton?.dataset.editorAssetAddToPrefab;\n if (addToPrefabAssetId && currentState) {\n const asset = currentState.assets.find(candidate => candidate.id === addToPrefabAssetId);\n if (asset && LocalEditorPanels.shouldShowPrefabModelAddAction(currentState, asset)) {\n event.preventDefault();\n event.stopPropagation();\n callbacks.onSelectAsset?.(asset.id);\n callbacks.onAssetAction?.(createAssetBrowserActionInput(\n 'asset.add-to-current-prefab',\n asset,\n createCurrentAssetBrowserActionContext(),\n ));\n }\n return;\n }\n const assetButton = target?.closest<HTMLButtonElement>('[data-editor-asset-id]');\n if (assetButton?.dataset.editorAssetId) {\n suppressAssetBrowserRevealIfVisible(assetButton);\n callbacks.onSelectAsset?.(assetButton.dataset.editorAssetId);\n return;\n }\n });\n\n assetPanel.addEventListener('dblclick', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const assetButton = target?.closest<HTMLButtonElement>('[data-editor-asset-id]');\n const browserAssetId = assetButton?.dataset.editorAssetId;\n if (!browserAssetId || !currentState) return;\n const asset = currentState.assets.find(candidate => candidate.id === browserAssetId);\n const actionId = asset ? resolveAssetBrowserDoubleClickAction(currentState, asset) : null;\n if (!asset || !actionId) return;\n event.preventDefault();\n event.stopPropagation();\n suppressAssetBrowserRevealIfVisible(assetButton);\n callbacks.onSelectAsset?.(browserAssetId);\n callbacks.onAssetAction?.(createAssetBrowserActionInput(actionId, asset, createCurrentAssetBrowserActionContext()));\n });\n\n assetPanel.addEventListener('contextmenu', (event) => {\n if (!inputRouter.shouldPreventBrowserContextMenu(event)) return;\n const target = inputRouter.getEventTarget(event);\n if (!target) return;\n const assetButton = target?.closest<HTMLButtonElement>('[data-editor-asset-id]');\n const browserAssetId = assetButton?.dataset.editorAssetId;\n if (!browserAssetId || !currentState) return;\n const asset = currentState.assets.find(candidate => candidate.id === browserAssetId);\n if (!asset) return;\n inputRouter.claimContextMenu(event);\n suppressAssetBrowserRevealIfVisible(assetButton);\n callbacks.onSelectAsset?.(browserAssetId);\n contextMenu.open({\n x: event.clientX,\n y: event.clientY,\n items: createAssetBrowserMenuItems(currentState, asset),\n onAction(item) {\n if (item.id === 'asset.preview') {\n openAssetPreviewModal(asset);\n return;\n }\n if (item.id === 'asset.edit-material') {\n openAssetMaterialEditorModal(asset);\n return;\n }\n if (item.id === 'asset.rename') {\n openAssetRenameModal(asset);\n return;\n }\n if (item.id === 'asset.edit-prefab' || item.id === 'asset.add-to-current-prefab') {\n callbacks.onAssetAction?.(createAssetBrowserActionInput(item.id, asset, createCurrentAssetBrowserActionContext()));\n return;\n }\n if (item.id === 'asset.copy-id') {\n copyTextToClipboard(doc.defaultView, asset.assetId ?? asset.id);\n return;\n }\n callbacks.onAssetAction?.(createAssetBrowserActionInput(item.id, asset, createCurrentAssetBrowserActionContext()));\n },\n });\n });\n\n workbench.rightDock.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const openTabButton = target?.closest<HTMLButtonElement>('[data-editor-open-right-dock-tab]');\n const openTab = openTabButton?.dataset.editorOpenRightDockTab as LocalEditorRightDockTab | undefined;\n if (isLocalEditorRightDockTab(openTab)) {\n panelRegistry.setRightDockTab(openTab);\n if (currentState) render(currentState);\n return;\n }\n const tabButton = target?.closest<HTMLButtonElement>('[data-editor-right-dock-tab]');\n const tab = tabButton?.dataset.editorRightDockTab as LocalEditorRightDockTab | undefined;\n if (isLocalEditorRightDockTab(tab)) {\n panelRegistry.setRightDockTab(tab);\n if (currentState) render(currentState);\n }\n });\n\n workbench.leftDock.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const tabButton = target?.closest<HTMLButtonElement>('[data-editor-left-dock-tab]');\n const tab = tabButton?.dataset.editorLeftDockTab;\n if (tab === 'hierarchy') {\n panelRegistry.setActivePanel('left', tab);\n if (currentState) render(currentState);\n }\n });\n\n const hierarchyController = createLocalEditorHierarchyController<TDocument>({\n doc,\n panel: hierarchyPanel,\n inputRouter,\n contextMenu,\n kernel: hierarchyKernel,\n onOperationResult: options.hierarchy?.onOperationResult,\n getState: () => currentState,\n requestRender: () => {\n if (currentState) render(currentState);\n },\n onBeforeOpenContextMenu: () => {\n if (helpOpen) setShortcutHelpOpen(false);\n if (assetPreviewOpen) closeAssetPreviewModal();\n },\n requestOperationInput: requestHierarchyOperationInput,\n });\n construction.addCleanup('hierarchy-controller', () => hierarchyController.dispose());\n\n assetPanel.addEventListener('input', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n if (input?.dataset.editorAssetFilter == null) return;\n callbacks.onAssetFilterChange?.(input.value);\n });\n\n inspectorPanel.addEventListener('input', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n if (input?.dataset.editorInspectorSearch != null) {\n inspectorFilter = input.value;\n if (currentState) render(currentState);\n return;\n }\n if (input?.type === 'checkbox' || input?.type === 'color') return;\n if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId) return;\n if (readInspectorCommitMode(input) !== 'live') return;\n const propertyInputs = createInspectorPropertyInputs(input, 'input', lockedInspectorVectorGroups);\n if (!propertyInputs) return;\n applyInspectorLockedVectorInputToDom(input, propertyInputs);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n });\n\n inspectorPanel.addEventListener('paste', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n const text = event.clipboardData?.getData('text/plain') ?? event.clipboardData?.getData('text') ?? '';\n if (!input || !text) return;\n const payload = parseLocalEditorBrowserInspectorGroupValueClipboardPayload(text);\n if (!payload) return;\n event.preventDefault();\n event.stopPropagation();\n const propertyInputs = createInspectorVectorPastePropertyInputs(input, payload);\n if (!propertyInputs) return;\n applyInspectorVectorPasteToDom(input, payload);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n });\n\n inspectorPanel.addEventListener('click', (event) => {\n const target = event.target instanceof HTMLElement ? event.target : null;\n const renderingActionButton = target?.closest<HTMLButtonElement>('[data-editor-rendering-action]');\n if (renderingActionButton) {\n if (renderingActionButton.disabled) return;\n const actionInput = createRenderingActionInput(renderingActionButton);\n if (!actionInput) return;\n const action = findLocalEditorRenderingAction(currentState?.renderingPanel, actionInput.actionId);\n if (!action || action.action.disabled) return;\n event.preventDefault();\n event.stopPropagation();\n if (actionInput.actionId === STATIC_SHADOW_BAKE_ACTION_ID) openStaticShadowBakePopover();\n callbacks.onRenderingAction?.(actionInput);\n return;\n }\n const inspectorActionButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-action]');\n if (inspectorActionButton) {\n if (inspectorActionButton.disabled) return;\n const actionInput = createInspectorActionInput(inspectorActionButton);\n if (!actionInput) return;\n event.preventDefault();\n event.stopPropagation();\n callbacks.onInspectorAction?.(actionInput);\n return;\n }\n const relationTarget = target?.closest<HTMLElement>('[data-editor-marker-relation-action]');\n if (relationTarget && !(relationTarget instanceof HTMLButtonElement && relationTarget.disabled)) {\n const relationInput = createMarkerRelationActionInput(relationTarget);\n if (!relationInput) return;\n event.preventDefault();\n event.stopPropagation();\n callbacks.onMarkerRelationAction?.(relationInput);\n return;\n }\n const vectorLockButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-vector-lock]');\n if (vectorLockButton) {\n const groupPath = vectorLockButton.dataset.editorInspectorVectorLock;\n if (!groupPath) return;\n event.preventDefault();\n event.stopPropagation();\n if (lockedInspectorVectorGroups.has(groupPath)) lockedInspectorVectorGroups.delete(groupPath);\n else lockedInspectorVectorGroups.add(groupPath);\n if (currentState) render(currentState);\n return;\n }\n const vectorCopyButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-vector-copy]');\n if (vectorCopyButton) {\n const value = vectorCopyButton.dataset.editorInspectorVectorCopyValue;\n if (!value) return;\n event.preventDefault();\n event.stopPropagation();\n copyTextToClipboard(doc.defaultView, value);\n return;\n }\n const readonlyCopyButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-readonly-copy]');\n if (readonlyCopyButton) {\n const value = readonlyCopyButton.dataset.editorInspectorReadonlyCopyValue;\n if (!value) return;\n event.preventDefault();\n event.stopPropagation();\n copyTextToClipboard(doc.defaultView, value);\n return;\n }\n const materialSlotSelectTarget = target?.closest<HTMLElement>('[data-editor-inspector-material-slot-select]');\n const materialSlotSelectionId = materialSlotSelectTarget?.dataset.editorInspectorMaterialSlotSelect;\n if (materialSlotSelectionId) {\n void hierarchyKernel.dispatch({\n type: 'selection',\n targetId: materialSlotSelectionId,\n modifier: event.metaKey || event.ctrlKey ? 'toggle' : event.shiftKey ? 'range' : 'replace',\n });\n return;\n }\n const copyButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-asset-copy]');\n if (copyButton) {\n const control = copyButton.closest<HTMLElement>('[data-editor-inspector-asset-picker-control]');\n const input = control?.querySelector<HTMLInputElement>('input[data-serialized-path]');\n const value = copyButton.dataset.editorInspectorAssetCopyValue;\n if (!input || !value) return;\n event.preventDefault();\n event.stopPropagation();\n input.value = value;\n input.dispatchEvent(new Event('change', { bubbles: true }));\n return;\n }\n const pickerButton = target?.closest<HTMLButtonElement>('[data-editor-inspector-asset-picker]');\n if (!pickerButton) return;\n const control = pickerButton.closest<HTMLElement>('[data-editor-inspector-asset-picker-control]');\n const input = control?.querySelector<HTMLInputElement>('input[data-serialized-path]');\n if (!input || !currentState) return;\n const property = findInspectorPropertyForInput(currentState, input);\n if (!property) return;\n event.preventDefault();\n openInspectorAssetPicker(input, property);\n });\n\n inspectorPanel.addEventListener('change', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLSelectElement\n ? event.target\n : null;\n if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId) return;\n if (hasLocalEditorUiKeyboardCommitPending(input)) return;\n if (input instanceof HTMLInputElement && (input.type === 'text' || input.type === 'number')) {\n if (readInspectorCommitMode(input) !== 'change') return;\n if (consumeLocalEditorKeyboardCommittedValue(input)) return;\n }\n const propertyInputs = createInspectorPropertyInputs(input, readInspectorImmediateSource(input), lockedInspectorVectorGroups);\n if (!propertyInputs) return;\n applyInspectorLockedVectorInputToDom(input, propertyInputs);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n });\n\n inspectorPanel.addEventListener('keydown', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n if (!input || !isLocalEditorKeyboardCommitEvent(event, input)) return;\n if (!commitLocalEditorInspectorInput(input, callbacks, lockedInspectorVectorGroups)) return;\n event.preventDefault();\n event.stopPropagation();\n });\n\n inspectorPanel.addEventListener('focusout', (event) => {\n const input = event.target instanceof HTMLInputElement ? event.target : null;\n if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId) return;\n if (hasLocalEditorUiKeyboardCommitPending(input)) return;\n if (readInspectorCommitMode(input) !== 'blur') return;\n if (consumeLocalEditorKeyboardCommittedValue(input)) return;\n const propertyInputs = createInspectorPropertyInputs(input, 'input', lockedInspectorVectorGroups);\n if (!propertyInputs) return;\n applyInspectorLockedVectorInputToDom(input, propertyInputs);\n for (const propertyInput of propertyInputs) callbacks.onPropertyInput?.(propertyInput);\n });\n\n renderingPanel.addEventListener('input', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement\n ? event.target\n : null;\n if (!input?.dataset.editorRenderingProperty) return;\n if (input instanceof HTMLSelectElement) return;\n if (input instanceof HTMLInputElement && (input.type === 'checkbox' || input.type === 'color')) return;\n if (readRenderingCommitMode(input) !== 'live') return;\n const propertyInput = createRenderingPropertyInput(input, input instanceof HTMLTextAreaElement ? 'list' : 'input');\n if (propertyInput) callbacks.onRenderingPropertyChange?.(propertyInput);\n });\n\n renderingPanel.addEventListener('change', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement\n ? event.target\n : null;\n if (!input?.dataset.editorRenderingProperty) return;\n if (hasLocalEditorUiKeyboardCommitPending(input)) return;\n if ((input instanceof HTMLInputElement && (input.type === 'text' || input.type === 'number')) || input instanceof HTMLTextAreaElement) {\n if (readRenderingCommitMode(input) !== 'change') return;\n if (consumeLocalEditorKeyboardCommittedValue(input)) return;\n }\n const propertyInput = createRenderingPropertyInput(input, readRenderingImmediateSource(input));\n if (propertyInput) callbacks.onRenderingPropertyChange?.(propertyInput);\n });\n\n renderingPanel.addEventListener('keydown', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement\n ? event.target\n : null;\n if (!input || !isLocalEditorKeyboardCommitEvent(event, input)) return;\n if (!commitLocalEditorRenderingInput(input, callbacks)) return;\n event.preventDefault();\n event.stopPropagation();\n });\n\n renderingPanel.addEventListener('focusout', (event) => {\n const input = event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement\n ? event.target\n : null;\n if (!input?.dataset.editorRenderingProperty) return;\n if (hasLocalEditorUiKeyboardCommitPending(input)) return;\n if (input instanceof HTMLSelectElement) return;\n if (readRenderingCommitMode(input) !== 'blur') return;\n if (consumeLocalEditorKeyboardCommittedValue(input)) return;\n const propertyInput = createRenderingPropertyInput(input, input instanceof HTMLTextAreaElement ? 'list' : 'input');\n if (propertyInput) callbacks.onRenderingPropertyChange?.(propertyInput);\n });\n\n renderingPanel.addEventListener('click', (event) => {\n const eventTarget = event.target instanceof HTMLElement ? event.target : null;\n const pickerButton = eventTarget?.closest<HTMLButtonElement>('[data-editor-inspector-asset-picker]');\n if (pickerButton) {\n const control = pickerButton.closest<HTMLElement>('[data-editor-inspector-asset-picker-control]');\n const input = control?.querySelector<HTMLInputElement>('input[data-editor-rendering-property]');\n if (!input || !currentState) return;\n const property = findRenderingPropertyForInput(currentState, input);\n if (!property) return;\n event.preventDefault();\n event.stopPropagation();\n openInspectorAssetPicker(input, property);\n return;\n }\n const actionButton = eventTarget?.closest<HTMLButtonElement>('[data-editor-rendering-action]');\n if (!actionButton) return;\n if (actionButton.disabled) return;\n const actionInput = createRenderingActionInput(actionButton);\n if (!actionInput) return;\n event.preventDefault();\n if (actionInput.actionId === STATIC_SHADOW_BAKE_ACTION_ID) openStaticShadowBakePopover();\n callbacks.onRenderingAction?.(actionInput);\n });\n\n markersPanel.addEventListener('click', (event) => {\n const eventTarget = event.target instanceof HTMLElement ? event.target : null;\n const relationTarget = eventTarget?.closest<HTMLElement>('[data-editor-marker-relation-action]');\n if (relationTarget && !(relationTarget instanceof HTMLButtonElement && relationTarget.disabled)) {\n const relationInput = createMarkerRelationActionInput(relationTarget);\n if (!relationInput) return;\n event.preventDefault();\n event.stopPropagation();\n callbacks.onMarkerRelationAction?.(relationInput);\n return;\n }\n const actionButton = eventTarget?.closest<HTMLButtonElement>('[data-editor-marker-type-action]');\n if (!actionButton || actionButton.disabled) return;\n const actionInput = createMarkerTypeActionInput(actionButton);\n if (!actionInput) return;\n event.preventDefault();\n event.stopPropagation();\n callbacks.onMarkerTypeAction?.(actionInput);\n });\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.defaultPrevented) return;\n if (currentState?.mode !== 'editor' || currentState.busy) return;\n const key = event.key.toLowerCase();\n if (key === 'escape' && assetPreviewOpen) {\n event.preventDefault();\n closeAssetPreviewModal();\n return;\n }\n if (key === 'escape' && assetPickerOpen) {\n event.preventDefault();\n closeInspectorAssetPicker();\n return;\n }\n if (key === 'escape' && editorStatusCenterOpen) {\n event.preventDefault();\n closeEditorStatusCenter();\n return;\n }\n if (key === 'escape' && snapSettingsOpen) {\n event.preventDefault();\n closeSnapSettingsPopover();\n return;\n }\n if (key === 'escape' && placementSettingsOpen) {\n event.preventDefault();\n closePlacementSettingsPopover();\n return;\n }\n if (key === 'escape' && transformActionOpen) {\n event.preventDefault();\n closeTransformActionPopover();\n return;\n }\n if (key === 'escape' && overlaySettingsOpen) {\n event.preventDefault();\n closeOverlaySettingsPopover();\n return;\n }\n if (key === 'escape' && staticShadowBakePopoverOpen) {\n event.preventDefault();\n closeStaticShadowBakePopover();\n return;\n }\n const primaryModifier = event.metaKey || event.ctrlKey;\n const handleDocumentShortcut = inputRouter.shouldHandleDocumentShortcut(event);\n const handleGlobalShortcut = inputRouter.shouldHandleGlobalShortcut(event);\n\n const contextAction = currentState.contextActions?.find(action => (\n action.availability.state !== 'hidden'\n && matchesContextActionShortcut(action.shortcut, event)\n ));\n if (handleDocumentShortcut && contextAction) {\n event.preventDefault();\n if (contextAction.availability.state === 'enabled') {\n callbacks.onContextAction?.(contextAction.id);\n }\n return;\n }\n\n if (\n handleDocumentShortcut\n && localTestActionsEnabled\n && isPreviewToolEnabled('local-test')\n && primaryModifier\n && key === 's'\n ) {\n event.preventDefault();\n callbacks.onSaveScene?.();\n return;\n }\n if (handleGlobalShortcut && primaryModifier && key === 'z') {\n event.preventDefault();\n if (event.shiftKey) callbacks.onRedo?.();\n else callbacks.onUndo?.();\n return;\n }\n if (handleGlobalShortcut && event.ctrlKey && key === 'y') {\n event.preventDefault();\n callbacks.onRedo?.();\n return;\n }\n if (handleGlobalShortcut && hierarchyController.handleEditShortcut(event)) {\n return;\n }\n if (!handleGlobalShortcut || event.metaKey || event.ctrlKey || event.altKey) return;\n\n const tool = currentState.tools?.find(candidate => (\n candidate.kind === 'primary'\n && candidate.shortcut?.toLowerCase() === key\n ));\n if (tool) {\n event.preventDefault();\n if (tool.availability.state === 'enabled') callbacks.onToolActivate?.(tool.id);\n return;\n }\n if (key === 'f') {\n event.preventDefault();\n if (isPreviewToolEnabled('focus-selection')) callbacks.onFocusSelection?.();\n return;\n }\n if (key === 'escape') {\n event.preventDefault();\n if (isPreviewToolEnabled('cancel-selection')) {\n if (callbacks.onCancelEditorIntent) callbacks.onCancelEditorIntent();\n else callbacks.onCancelActiveOperation?.();\n }\n }\n };\n doc.addEventListener('keydown', onKeyDown);\n construction.addCleanup('document-keydown', () => doc.removeEventListener('keydown', onKeyDown));\n\n function formatSnapStepInputValue(\n snap: { moveStep: number; rotateStepDegrees: number; scaleStep: number },\n kind: LocalEditorBrowserTransformSnapStepKind,\n ): string {\n const value = kind === 'move'\n ? snap.moveStep\n : kind === 'rotate'\n ? snap.rotateStepDegrees\n : snap.scaleStep;\n return Number.isFinite(value) ? String(value) : '';\n }\n\n function isTransformActionEnabled(\n action: LocalEditorBrowserTransformAction,\n operationState: NonNullable<LocalEditorBrowserUiState<TDocument>['transformOperations']>,\n ): boolean {\n return action.startsWith('align-')\n ? operationState.canAlign\n : operationState.canDistribute;\n }\n\n function getPreviewToolSupport(tool: LocalEditorPreviewControlKey): ReturnType<typeof resolveLocalEditorPreviewToolSupport> {\n return resolveLocalEditorPreviewToolSupport({ capabilities: currentState?.capabilities, tool });\n }\n\n function isPreviewToolVisible(tool: LocalEditorPreviewControlKey): boolean {\n return currentState?.mode === 'editor' && getPreviewToolSupport(tool).support !== 'hidden';\n }\n\n function isPreviewToolEnabled(tool: LocalEditorPreviewControlKey): boolean {\n return currentState?.mode === 'editor'\n && currentState.busy !== true\n && getPreviewToolSupport(tool).support === 'enabled';\n }\n\n function applyPrefabStageWorkbenchLayoutOverride(\n layout: LocalEditorWorkbenchLayoutState = workbenchLayoutController.getLayout(),\n ): void {\n const { leftWidth, rightWidth, bottomEdge, bottomVisible } = resolveLocalEditorPrefabStageWorkbenchLayout(\n layout,\n readLocalEditorWorkbenchViewport(doc),\n );\n workbench.leftDock.style.display = 'flex';\n workbench.leftDock.style.width = `${leftWidth}px`;\n workbench.leftDock.style.bottom = `${bottomEdge}px`;\n workbench.leftDock.style.zIndex = '';\n workbench.leftDock.style.boxShadow = '';\n workbench.rightDock.style.display = 'flex';\n workbench.rightDock.style.width = `${rightWidth}px`;\n workbench.rightDock.style.zIndex = '';\n workbench.rightDock.style.boxShadow = '';\n workbench.sceneFrame.style.left = `${leftWidth}px`;\n workbench.sceneFrame.style.right = `${rightWidth}px`;\n workbench.sceneFrame.style.bottom = `${bottomEdge}px`;\n if (bottomVisible) {\n workbench.bottomDock.style.right = `${rightWidth}px`;\n workbench.bottomResizer.style.right = `${rightWidth}px`;\n }\n workbench.leftToggle.style.display = 'none';\n workbench.rightToggle.style.display = 'none';\n workbench.leftResizer.style.bottom = `${bottomEdge}px`;\n workbench.rightResizer.style.bottom = '0';\n }\n\n function readLocalEditorWorkbenchViewport(docRef: Document): { width: number; height: number } {\n const win = docRef.defaultView;\n return {\n width: Math.max(320, win?.innerWidth ?? docRef.documentElement.clientWidth ?? 1280),\n height: Math.max(320, win?.innerHeight ?? docRef.documentElement.clientHeight ?? 720),\n };\n }\n\n function renderPrefabStagePropertiesPanel(stage: LocalEditorBrowserPrefabStageState<TDocument>): void {\n inspectorPanel.dataset.editorPanelId = 'inspector';\n inspectorPanel.style.display = '';\n renderingPanel.style.display = 'none';\n if (currentState?.inspectorObject) {\n LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {\n ...options.inspector,\n layerHost: editorUiLayerHost,\n title: 'Prefab Properties',\n emptyText: 'Select an item in Prefab Explorer.',\n lockedVectorGroups: lockedInspectorVectorGroups,\n });\n return;\n }\n LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel);\n LocalEditorShared.clearElement(inspectorPanel);\n inspectorPanel.appendChild(createPrefabStagePanelHeader('Prefab Properties', 'inspector'));\n const selectedItem = findLocalEditorPrefabStageStructureItem(stage, stage.selectedItemId);\n const grid = doc.createElement('div');\n grid.style.cssText = 'display:flex;flex-direction:column;gap:7px;min-width:0';\n appendPrefabStageReadonlyRow(grid, '名称', stage.label);\n appendPrefabStageReadonlyRow(grid, 'Prefab ID', stage.assetId);\n appendPrefabStageReadonlyRow(grid, 'Source', stage.sourceAssetId ?? '未设置');\n appendPrefabStageReadonlyRow(grid, 'Preview', stage.previewNodeId ?? '未生成');\n appendPrefabStageReadonlyRow(grid, 'Selected', selectedItem?.label ?? stage.selectedItemId ?? 'Prefab Root');\n appendPrefabStageReadonlyRow(grid, 'Mode', stage.readonly ? '只读' : '可编辑');\n appendPrefabStageSelectedItemDetails(grid, selectedItem);\n inspectorPanel.appendChild(grid);\n }\n\n function appendPrefabStageSelectedItemDetails(\n container: HTMLElement,\n item: LocalEditorBrowserPrefabStageStructureItem | null,\n ): void {\n if (!item) return;\n appendPrefabStageReadonlyRow(container, 'Kind', item.kind);\n if (item.sourceAssetId) appendPrefabStageReadonlyRow(container, 'Source Asset', item.sourceAssetId);\n if (item.slotId) appendPrefabStageReadonlyRow(container, 'Slot ID', item.slotId);\n if (item.ownerNodePath) appendPrefabStageReadonlyRow(container, 'Owner Path', item.ownerNodePath);\n if (item.meshIndex != null) appendPrefabStageReadonlyRow(container, 'Mesh Index', String(item.meshIndex));\n if (item.primitiveIndex != null) appendPrefabStageReadonlyRow(container, 'Primitive', String(item.primitiveIndex));\n if (item.sourceMaterialIndex != null) {\n appendPrefabStageReadonlyRow(container, 'Material Index', String(item.sourceMaterialIndex));\n }\n if (item.sourceMaterialIndices?.length) {\n appendPrefabStageReadonlyRow(container, 'Material Indices', item.sourceMaterialIndices.join(', '));\n }\n if (item.sourceMaterialName) appendPrefabStageReadonlyRow(container, 'Material Name', item.sourceMaterialName);\n if (item.sourceMaterialNames?.length) {\n appendPrefabStageReadonlyRow(container, 'Material Names', item.sourceMaterialNames.join(', '));\n }\n if (item.meta) appendPrefabStageReadonlyRow(container, 'Meta', item.meta);\n }\n\n function resolvePrefabStageAssetFromState(\n stage: LocalEditorBrowserPrefabStageState,\n ): LocalEditorBrowserUiAssetItem | null {\n return currentState?.assets.find(asset => (\n asset.id === stage.browserAssetId\n || asset.id === `prefab:${stage.assetId}`\n || asset.assetId === stage.assetId\n || asset.prefab?.id === stage.assetId\n )) ?? null;\n }\n\n function createPrefabStagePanelHeader(title: string, icon: LocalEditorIconName): HTMLDivElement {\n const header = doc.createElement('div');\n header.style.cssText = [\n 'display:flex',\n 'align-items:center',\n 'gap:8px',\n 'min-height:30px',\n 'margin:-8px -8px 8px',\n 'padding:0 8px',\n 'border-bottom:1px solid var(--fps-editor-divider)',\n 'background:var(--fps-editor-chrome-dark)',\n ].join(';');\n header.appendChild(createLocalEditorIcon(doc, icon, { size: 14 }));\n const label = doc.createElement('h2');\n label.textContent = title;\n label.style.cssText = [\n 'min-width:0',\n 'margin:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'font-size:13px',\n 'font-weight:800',\n 'color:var(--fps-editor-text-strong)',\n ].join(';');\n header.appendChild(label);\n return header;\n }\n\n function appendPrefabStageReadonlyRow(container: HTMLElement, label: string, value: string): void {\n const row = doc.createElement('div');\n row.style.cssText = [\n 'display:grid',\n 'grid-template-columns:92px minmax(0,1fr)',\n 'gap:8px',\n 'align-items:center',\n 'min-height:26px',\n ].join(';');\n const rowLabel = doc.createElement('div');\n rowLabel.textContent = label;\n rowLabel.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'color:var(--fps-editor-muted)',\n 'font-size:11px',\n 'font-weight:800',\n ].join(';');\n const output = doc.createElement('div');\n output.textContent = value;\n output.title = value;\n output.style.cssText = [\n 'min-width:0',\n 'overflow:hidden',\n 'text-overflow:ellipsis',\n 'white-space:nowrap',\n 'padding:4px 7px',\n 'border:1px solid var(--fps-editor-border)',\n 'border-radius:3px',\n 'background:var(--fps-editor-field)',\n 'color:var(--fps-editor-text-strong)',\n 'font-size:12px',\n 'font-weight:800',\n ].join(';');\n row.appendChild(rowLabel);\n row.appendChild(output);\n container.appendChild(row);\n }\n\n const renderPreviewState = (state: LocalEditorBrowserUiState<TDocument>): void => {\n const inEditor = state.mode === 'editor';\n const inPrefabStage = !!state.prefabStage;\n const disabled = state.busy;\n const transformTool = state.transformTool ?? null;\n const transformOperations = state.transformOperations ?? {\n settings: DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS,\n selectedCount: state.selectedIds.length,\n activeId: state.activeId,\n canAlign: false,\n canDistribute: false,\n };\n const hasMeasurement = !!(\n state.viewportMeasurement?.start\n || state.viewportMeasurement?.end\n || state.viewportMeasurement?.preview\n );\n const nextClearMeasurementDisplay = hasMeasurement ? 'inline-flex' : 'none';\n const clearMeasurementDisplayChanged = clearMeasurementButton.style.display !== nextClearMeasurementDisplay;\n clearMeasurementButton.style.display = nextClearMeasurementDisplay;\n clearMeasurementButton.disabled = disabled || !hasMeasurement;\n const editorStatusText = [\n state.status,\n state.session?.dirty ? '有未保存更改' : '',\n LocalEditorShared.formatAuthoringSourceLabel(state.session?.source),\n state.summary,\n ].filter(Boolean).join(' | ');\n const transformStatusText = transformTool?.dragPhase === 'dragging'\n ? `正在拖拽 ${transformTool.draggingNodeId ?? '选择对象'}`\n : LocalEditorShared.toTransformToolStatusLabel(\n transformTool?.activeTool ?? 'select',\n transformTool?.activeSpace ?? 'world',\n );\n const statusViewModel = createLocalEditorStatusCenterViewModel(state);\n const statusDiagnostics = statusViewModel.diagnostics;\n const resolvedDiagnosticTone = statusViewModel.severity;\n const diagnosticTone = resolvedDiagnosticTone === 'default' ? state.statusTone : resolvedDiagnosticTone;\n const statusToneColor = diagnosticTone === 'error'\n ? 'var(--fps-editor-danger-strong)'\n : diagnosticTone === 'warning'\n ? 'var(--fps-editor-warn)'\n : diagnosticTone === 'success'\n ? 'var(--fps-editor-success)'\n : 'var(--fps-editor-muted)';\n setToolbarButtonIcon(doc, editorStatusButton, statusViewModel.icon);\n setToolbarButtonTooltip(editorStatusButton, [\n `验证中心:${editorStatusText}`,\n state.statusDetails && state.statusDetails !== state.status ? state.statusDetails : '',\n transformStatusText,\n LocalEditorShared.toTransformOperationStatusLabel(transformOperations.settings),\n statusDiagnostics.length > 0 ? `${statusDiagnostics.length} 条诊断,点击查看并复制` : '',\n ].filter(Boolean).join(' · '));\n editorStatusButton.style.color = statusToneColor;\n editorStatusButton.style.borderColor = diagnosticTone == null || diagnosticTone === 'default'\n ? 'var(--fps-editor-border)'\n : statusToneColor;\n editorStatusButton.dataset.editorStatusSeverity = diagnosticTone ?? 'default';\n if (editorStatusCenterOpen) renderEditorStatusCenter(state);\n const agentBridgeStatusColor = resolveAgentBridgeStatusToneColor(state.agentBridge);\n agentBridgeStatusButton.style.display = inEditor ? 'inline-flex' : 'none';\n agentBridgeStatusButton.style.color = agentBridgeStatusColor;\n agentBridgeStatusButton.style.borderColor = state.agentBridge?.status === 'disabled'\n ? 'var(--fps-editor-border)'\n : agentBridgeStatusColor;\n setToolbarButtonTooltip(agentBridgeStatusButton, createAgentBridgeStatusTooltip(state.agentBridge));\n renderCoordinateAxesOverlay(coordinateAxesOverlay, inEditor ? state.coordinateAxes ?? null : null);\n renderSceneFrameRateOverlay(sceneFrameRateOverlay, inEditor && !inPrefabStage ? state.sceneFrameStats ?? null : null);\n renderPerformanceMonitorOverlay(\n performanceMonitorOverlay,\n inEditor && !inPrefabStage ? state.performanceStats ?? null : null,\n inEditor && !inPrefabStage && performanceMonitorOpen,\n );\n prefabStagePreviewLayout.root.style.display = inEditor && inPrefabStage ? 'block' : 'none';\n renderPrefabImportStatsOverlay(prefabImportStatsOverlay, inEditor && inPrefabStage ? state.prefabStage ?? null : null);\n renderSpatialOverlay(spatialOverlay, inEditor ? state.viewportSpatialOverlay ?? null : null);\n renderMeasurementOverlay(measurementOverlay, inEditor ? state.viewportMeasurement ?? null : null);\n const boxSelection = state.boxSelection;\n if (inEditor && boxSelection?.active) {\n boxSelectionOverlay.style.display = '';\n boxSelectionOverlay.style.left = `${boxSelection.left}px`;\n boxSelectionOverlay.style.top = `${boxSelection.top}px`;\n boxSelectionOverlay.style.width = `${boxSelection.width}px`;\n boxSelectionOverlay.style.height = `${boxSelection.height}px`;\n } else {\n boxSelectionOverlay.style.display = 'none';\n }\n if (clearMeasurementDisplayChanged) scheduleToolbarOverflowLayout();\n };\n\n const updatePreview = (preview: LocalEditorBrowserUiPreviewState<TDocument>): void => {\n if (!currentState) return;\n const shouldRenderInspectorPreview = 'inspectorObject' in preview || 'inspectorMultiObject' in preview;\n currentState = {\n ...currentState,\n ...preview,\n };\n renderPreviewState(currentState);\n if (shouldRenderLocalEditorInspectorPreview({\n hasInspectorPreview: shouldRenderInspectorPreview,\n mode: currentState.mode,\n inPrefabStage: !!currentState.prefabStage,\n rightDockVisible: rightDockFormalSurfaceVisibility.isVisible(),\n activeRightTab: panelRegistry.getRightDockTab(),\n })) {\n const rightDockScrollSnapshot = captureLocalEditorRightDockScrollSnapshot(\n currentState,\n 'inspector',\n inspectorFilter,\n inspectorPanel,\n renderingPanel,\n markersPanel,\n pluginsPanel,\n );\n LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, currentState, inspectorFilter, {\n ...options.inspector,\n layerHost: editorUiLayerHost,\n lockedVectorGroups: lockedInspectorVectorGroups,\n });\n restoreLocalEditorRightDockScrollSnapshot(\n rightDockScrollSnapshot,\n currentState,\n 'inspector',\n inspectorFilter,\n inspectorPanel,\n renderingPanel,\n markersPanel,\n pluginsPanel,\n );\n }\n };\n\n const render = (state: LocalEditorBrowserUiState<TDocument>): void => {\n const previousState = currentState;\n const previousRightTab = panelRegistry.getRightDockTab();\n const rightDockScrollSnapshot = captureLocalEditorRightDockScrollSnapshot(\n previousState,\n previousRightTab,\n inspectorFilter,\n inspectorPanel,\n renderingPanel,\n markersPanel,\n pluginsPanel,\n );\n currentState = state;\n const focusSnapshot = captureLocalEditorEditableFocus(doc);\n const inEditor = state.mode === 'editor';\n const disabled = state.busy;\n const prefabStage = inEditor ? state.prefabStage ?? null : null;\n const inPrefabStage = !!prefabStage;\n const previousInPrefabStage = previousState?.mode === 'editor' && !!previousState.prefabStage;\n if (!inEditor || disabled) contextMenu.close();\n hostChrome.style.display = !inEditor && localTestActionsEnabled && gameModeEntryVisible ? 'flex' : 'none';\n enterEditorButton.disabled = disabled;\n for (const button of [saveButton, saveAndRunButton, discardRunButton, undoButton, redoButton, sceneHelpButton, sceneCameraButton, performanceMonitorButton, gridToggleButton]) {\n button.style.display = 'inline-flex';\n button.disabled = disabled;\n }\n localTestGroup.style.display = isPreviewToolVisible('local-test') && localTestActionsEnabled ? 'flex' : 'none';\n localTestButton.disabled = !isPreviewToolEnabled('local-test') || !localTestActionsEnabled;\n if (!inEditor || !localTestActionsEnabled || localTestGroup.style.display === 'none') closeLocalTestMenu();\n if (!inEditor) {\n helpOpen = false;\n if (shouldCloseLocalEditorStatusCenter({ inEditor, open: editorStatusCenterOpen })) {\n closeEditorStatusCenter();\n }\n }\n if (shouldLocalEditorClosePerformanceMonitor({ inEditor, inPrefabStage, performanceMonitorOpen })) {\n setPerformanceMonitorOpen(false);\n }\n if (!inEditor || disabled) {\n assetPreviewOpen = false;\n previewedAsset = null;\n assetPreviewMode = 'preview';\n assetPickerOpen = false;\n assetPickerInput = null;\n assetPickerProperty = null;\n settleHierarchyOperationInputRequest(null);\n }\n syncInputModalOpen();\n const transformTool = state.transformTool ?? null;\n workbench.root.style.display = inEditor ? '' : 'none';\n workbench.root.dataset.editorPrefabStage = String(inPrefabStage);\n sceneTitle.textContent = createLocalEditorPrefabStageTitle(prefabStage);\n sceneToolOverlay.style.display = inEditor ? 'flex' : 'none';\n renderContextActionButtons(\n contextActionGroup,\n state.contextActions ?? [],\n disabled,\n );\n if (inPrefabStage && !previousInPrefabStage) {\n prefabStageMainWorkbenchLayoutSnapshot = workbenchLayoutController.getLayout();\n workbenchLayoutController.setBottomCollapsed(false);\n } else if (!inPrefabStage && previousInPrefabStage && prefabStageMainWorkbenchLayoutSnapshot) {\n workbenchLayoutController.setLayout(prefabStageMainWorkbenchLayoutSnapshot, true);\n prefabStageMainWorkbenchLayoutSnapshot = null;\n }\n if (!inPrefabStage) {\n LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel);\n }\n workbench.leftToggle.style.display = '';\n workbench.rightToggle.style.display = '';\n workbench.bottomToggle.style.display = '';\n workbenchLayoutController.refresh();\n if (inPrefabStage) applyPrefabStageWorkbenchLayoutOverride();\n if (!inEditor) closeSnapSettingsPopover();\n if (!inEditor) closePlacementSettingsPopover();\n if (!inEditor) closeTransformActionPopover();\n if (!inEditor) closeOverlaySettingsPopover();\n if (!inEditor) closeStaticShadowBakePopover();\n const staticShadowBakeAction = findLocalEditorRenderingAction(state.renderingPanel, STATIC_SHADOW_BAKE_ACTION_ID);\n const staticShadowBakeVisible = isPreviewToolVisible('static-shadow-bake') && !!staticShadowBakeAction;\n staticShadowBakeGroup.style.display = staticShadowBakeVisible ? 'flex' : 'none';\n const staticShadowBakeSupport = getPreviewToolSupport('static-shadow-bake');\n const staticShadowBakeDisabled = !isPreviewToolEnabled('static-shadow-bake') || !staticShadowBakeAction || staticShadowBakeAction.action.disabled === true;\n staticShadowBakeButton.disabled = staticShadowBakeDisabled;\n staticShadowBakeButton.style.opacity = staticShadowBakeDisabled ? '0.62' : '1';\n staticShadowBakeButton.style.cursor = staticShadowBakeDisabled ? 'not-allowed' : 'pointer';\n const staticShadowBakeIcon = staticShadowBakeAction?.action.icon;\n setToolbarButtonIcon(\n doc,\n staticShadowBakeButton,\n isLocalEditorIconName(staticShadowBakeIcon) ? staticShadowBakeIcon : 'save',\n );\n setToolbarButtonTooltip(\n staticShadowBakeButton,\n staticShadowBakeSupport.support === 'enabled'\n ? staticShadowBakeAction?.action.tooltip ?? staticShadowBakeAction?.action.label ?? '烘焙静态阴影'\n : staticShadowBakeSupport.reason,\n );\n LocalEditorShared.applyButtonActiveState(staticShadowBakeButton, !!staticShadowBakeAction?.system?.progress);\n renderStaticShadowBakePopover(state);\n const sceneCameraPreview = state.sceneCameraPreview ?? { enabled: false, available: false };\n cameraPreviewGroup.style.display = isPreviewToolVisible('scene-camera-preview') ? 'flex' : 'none';\n const sceneCameraPreviewSupport = getPreviewToolSupport('scene-camera-preview');\n sceneCameraButton.disabled = !isPreviewToolEnabled('scene-camera-preview') || !sceneCameraPreview.available;\n const sceneCameraTooltip = sceneCameraPreview.available\n ? '从 Main Camera 查看当前场景'\n : '当前场景没有可预览的 Main Camera';\n setToolbarButtonTooltip(sceneCameraButton, sceneCameraPreviewSupport.support === 'enabled'\n ? sceneCameraTooltip\n : sceneCameraPreviewSupport.reason);\n LocalEditorShared.applyButtonActiveState(sceneCameraButton, sceneCameraPreview.enabled);\n const viewportTools = state.viewportTools ?? null;\n const viewportControlsDisabled = !isPreviewToolEnabled('viewport-camera') || sceneCameraPreview.enabled;\n const viewportControlsTooltip = sceneCameraPreview.enabled\n ? '当前为 Main Camera 预览,请关闭后再使用视口工具'\n : '';\n const viewportProjectionTooltip = sceneCameraPreview.enabled\n ? '当前为 Main Camera 预览,投影由 Main Camera 决定;关闭预览后可切换编辑视口投影'\n : '';\n viewportToolsGroup.style.display = isPreviewToolVisible('viewport-camera') ? 'flex' : 'none';\n for (const [preset, button] of viewportPresetButtons) {\n button.disabled = viewportControlsDisabled;\n setToolbarButtonTooltip(button, viewportControlsTooltip || VIEW_PRESET_TOOLTIPS[preset]);\n LocalEditorShared.applyButtonActiveState(button, viewportTools?.viewPreset === preset);\n }\n projectionToggleButton.disabled = viewportControlsDisabled;\n const projectionMode = viewportTools?.projectionMode ?? 'perspective';\n const nextProjectionMode: LocalEditorBrowserViewportProjectionMode = projectionMode === 'orthographic' ? 'perspective' : 'orthographic';\n setToolbarButtonIcon(doc, projectionToggleButton, projectionMode === 'orthographic' ? 'projection-ortho' : 'projection-perspective');\n setToolbarButtonTooltip(\n projectionToggleButton,\n viewportProjectionTooltip || `投影模式:${VIEWPORT_PROJECTION_LABELS[projectionMode]}。切换为${VIEWPORT_PROJECTION_LABELS[nextProjectionMode]}`,\n );\n LocalEditorShared.applyButtonActiveState(projectionToggleButton, projectionMode === 'orthographic');\n const markersVisible = viewportTools?.markersVisible ?? true;\n markerVisibilityButton.disabled = disabled;\n setToolbarButtonTooltip(markerVisibilityButton, markersVisible ? '隐藏标记与关系线' : '显示标记与关系线');\n LocalEditorShared.applyButtonActiveState(markerVisibilityButton, markersVisible);\n const showAllPrefabMarkers = viewportTools?.showAllPrefabMarkers ?? false;\n showAllPrefabMarkersButton.disabled = disabled || !!state.prefabStage;\n setToolbarButtonTooltip(\n showAllPrefabMarkersButton,\n showAllPrefabMarkers ? '仅显示选中 Prefab 实例的标记' : '显示所有 Prefab 实例的标记',\n );\n LocalEditorShared.applyButtonActiveState(showAllPrefabMarkersButton, showAllPrefabMarkers);\n overlaySettingsButton.disabled = !isPreviewToolEnabled('spatial-overlay');\n setToolbarButtonTooltip(overlaySettingsButton, '视口信息层设置');\n LocalEditorShared.applyButtonActiveState(overlaySettingsButton, overlaySettingsOpen);\n const overlaySettings = viewportTools?.overlay;\n for (const [key, input] of overlayInputs) {\n input.disabled = !isPreviewToolEnabled('spatial-overlay');\n input.checked = overlaySettings?.[key] ?? false;\n }\n measureButton.disabled = viewportControlsDisabled;\n setToolbarButtonTooltip(\n measureButton,\n viewportControlsTooltip || '测量 XZ 地面距离',\n );\n LocalEditorShared.applyButtonActiveState(measureButton, viewportTools?.activeUtilityTool === 'measure-distance');\n const hasMeasurement = !!(\n state.viewportMeasurement?.start\n || state.viewportMeasurement?.end\n || state.viewportMeasurement?.preview\n );\n clearMeasurementButton.style.display = hasMeasurement ? 'inline-flex' : 'none';\n clearMeasurementButton.disabled = disabled || !hasMeasurement;\n setToolbarButtonTooltip(clearMeasurementButton, '清除测量结果');\n LocalEditorShared.applyButtonActiveState(clearMeasurementButton, false);\n if (!inEditor || disabled || viewportToolsGroup.style.display === 'none') closeOverlaySettingsPopover();\n const gridState = state.grid ?? { visible: false, available: false };\n performanceMonitorButton.style.display = isPreviewToolVisible('performance-monitor') ? 'inline-flex' : 'none';\n performanceMonitorButton.disabled = !isPreviewToolEnabled('performance-monitor');\n const performanceMonitorSupport = getPreviewToolSupport('performance-monitor');\n setToolbarButtonTooltip(performanceMonitorButton, performanceMonitorSupport.support === 'enabled'\n ? performanceMonitorOpen ? '隐藏性能监控' : '显示性能监控'\n : performanceMonitorSupport.reason);\n LocalEditorShared.applyButtonActiveState(performanceMonitorButton, performanceMonitorOpen);\n gridToggleButton.disabled = disabled || !gridState.available;\n setToolbarButtonTooltip(gridToggleButton, gridState.visible ? '隐藏 Scene View 网格' : '显示 Scene View 网格');\n LocalEditorShared.applyButtonActiveState(gridToggleButton, gridState.visible);\n synchronizeToolButtons(state.tools ?? []);\n toolGroup.style.display = inEditor\n && (state.tools ?? []).some(tool => tool.kind === 'primary' && tool.availability.state !== 'hidden')\n ? 'flex'\n : 'none';\n spaceGroup.style.display = isPreviewToolVisible('transform-space') ? 'flex' : 'none';\n for (const [space, button] of Object.entries(spaceButtons) as Array<[LocalEditorBrowserTransformSpace, HTMLButtonElement]>) {\n button.disabled = !isPreviewToolEnabled('transform-space');\n LocalEditorShared.applyButtonActiveState(button, transformTool?.activeSpace === space);\n }\n sceneHelpButton.disabled = disabled;\n const transformOperations = state.transformOperations ?? {\n settings: DEFAULT_EDITOR_TRANSFORM_OPERATION_SETTINGS,\n selectedCount: state.selectedIds.length,\n activeId: state.activeId,\n canAlign: false,\n canDistribute: false,\n };\n const operationSettings = transformOperations.settings;\n snapGroup.style.display = isPreviewToolVisible('snap') ? 'flex' : 'none';\n snapButton.disabled = !isPreviewToolEnabled('snap');\n snapEnabledInput.disabled = !isPreviewToolEnabled('snap');\n snapEnabledInput.checked = operationSettings.snap.enabled;\n LocalEditorShared.applyButtonActiveState(snapButton, operationSettings.snap.enabled || snapSettingsOpen);\n setToolbarButtonTooltip(\n snapButton,\n `吸附设置 · 位移 ${formatSnapStepInputValue(operationSettings.snap, 'move')} · 旋转 ${formatSnapStepInputValue(operationSettings.snap, 'rotate')}° · 缩放 ${formatSnapStepInputValue(operationSettings.snap, 'scale')}`,\n );\n for (const [kind, input] of snapStepInputs) {\n input.disabled = !isPreviewToolEnabled('snap');\n if (doc.activeElement !== input) input.value = formatSnapStepInputValue(operationSettings.snap, kind);\n }\n if (!inEditor || disabled || snapGroup.style.display === 'none') closeSnapSettingsPopover();\n placementGroup.style.display = isPreviewToolVisible('placement') ? 'flex' : 'none';\n placementButton.disabled = !isPreviewToolEnabled('placement');\n setToolbarButtonIcon(doc, placementButton, PLACEMENT_MODE_ICONS[operationSettings.placementMode]);\n setToolbarButtonTooltip(placementButton, `放置模式 · ${PLACEMENT_MODE_DESCRIPTIONS[operationSettings.placementMode]}`);\n LocalEditorShared.applyButtonActiveState(placementButton, operationSettings.placementMode !== 'off' || placementSettingsOpen);\n for (const [mode, button] of Object.entries(placementButtons) as Array<[LocalEditorBrowserPlacementMode, HTMLButtonElement]>) {\n button.disabled = !isPreviewToolEnabled('placement');\n LocalEditorShared.applyButtonActiveState(button, operationSettings.placementMode === mode);\n }\n if (!inEditor || disabled || placementGroup.style.display === 'none') closePlacementSettingsPopover();\n actionGroup.style.display = isPreviewToolVisible('transform-actions') ? 'flex' : 'none';\n const hasTransformAction = transformOperations.canAlign || transformOperations.canDistribute;\n transformActionButton.disabled = !isPreviewToolEnabled('transform-actions') || !hasTransformAction;\n setToolbarButtonTooltip(\n transformActionButton,\n hasTransformAction ? '对齐与分布' : '选择至少 2 个对象后可用',\n );\n LocalEditorShared.applyButtonActiveState(transformActionButton, transformActionOpen);\n for (const [action, button] of transformActionButtons) {\n const enabled = isTransformActionEnabled(action, transformOperations);\n button.disabled = !isPreviewToolEnabled('transform-actions') || !enabled;\n button.style.opacity = button.disabled ? '0.45' : '1';\n button.style.cursor = button.disabled ? 'not-allowed' : 'pointer';\n }\n if (!inEditor || disabled || !hasTransformAction || actionGroup.style.display === 'none') closeTransformActionPopover();\n undoButton.disabled = disabled || !state.session?.canUndo;\n redoButton.disabled = disabled || !state.session?.canRedo;\n LocalEditorShared.applyButtonActiveState(sceneHelpButton, inEditor && helpOpen);\n shortcutHelpPanel.style.display = inEditor && helpOpen ? 'flex' : 'none';\n renderAssetPreviewModal();\n renderAssetPickerModal();\n dirtyBadge.style.display = inEditor && state.session?.dirty ? 'inline-flex' : 'none';\n renderPreviewState(state);\n\n scheduleToolbarOverflowLayout();\n if (!inEditor) {\n LocalEditorPanels.disposeInspectorPanelUi(renderingPanel);\n return;\n }\n const activeRightTab = panelRegistry.getRightDockTab();\n if (inPrefabStage || activeRightTab !== 'rendering') {\n LocalEditorPanels.disposeInspectorPanelUi(renderingPanel);\n }\n if (inPrefabStage && prefabStage) {\n const rightDockVisibility = resolveLocalEditorRightDockVisibility({\n inPrefabStage: true,\n activeRightTab,\n });\n const activeBottomTab = panelRegistry.getBottomDockTab();\n const assetBrowserTabChanged = assetBrowserTab !== lastRenderedAssetBrowserTab;\n const bottomDockTabChanged = activeBottomTab !== lastRenderedBottomDockTab;\n const selectedAssetChanged = state.selectedAssetId !== lastRenderedSelectedAssetId;\n const assetBrowserScrollSnapshot = activeBottomTab === 'assets'\n ? assetBrowserViewportReveal.captureScrollSnapshot()\n : { scrollTop: null };\n leftDockTabs.style.display = 'none';\n rightDockTabs.style.display = rightDockVisibility.tabsDisplay;\n inspectorPanel.style.display = rightDockVisibility.inspectorDisplay;\n renderingPanel.style.display = rightDockVisibility.renderingDisplay;\n markersPanel.style.display = rightDockVisibility.markersDisplay;\n pluginsPanel.style.display = rightDockVisibility.pluginsDisplay;\n hierarchyController.render(state);\n renderPrefabStagePropertiesPanel(prefabStage);\n LocalEditorPanels.renderWorkbenchBottomDockPanel(\n doc,\n assetPanel,\n state,\n activeBottomTab,\n panelRegistry.getPanels('bottom'),\n assetBrowserTab,\n );\n if (activeBottomTab === 'assets' && !assetBrowserTabChanged && !bottomDockTabChanged) {\n assetBrowserViewportReveal.restoreScrollSnapshot(assetBrowserScrollSnapshot);\n }\n const suppressAssetScroll = state.selectedAssetId\n ? assetBrowserViewportReveal.consumeRevealSuppression(state.selectedAssetId, { clearWhenDifferent: selectedAssetChanged })\n : false;\n if (activeBottomTab === 'assets' && selectedAssetChanged && state.selectedAssetId && !suppressAssetScroll) {\n revealSelectedAssetBrowserItem(state.selectedAssetId);\n }\n revealPendingStatusDiagnosticAsset(state);\n lastRenderedAssetBrowserTab = assetBrowserTab;\n lastRenderedBottomDockTab = activeBottomTab;\n lastRenderedSelectedAssetId = state.selectedAssetId ?? null;\n restoreLocalEditorEditableFocus(doc, focusSnapshot);\n revealPendingStatusDiagnosticPath(state);\n return;\n }\n leftDockTabs.style.display = '';\n const hierarchyDescriptor = panelRegistry.getActivePanel('left');\n const rightDescriptor = panelRegistry.getActivePanel('right');\n const rightDockVisibility = resolveLocalEditorRightDockVisibility({\n inPrefabStage: false,\n activeRightTab,\n });\n rightDockTabs.style.display = rightDockVisibility.tabsDisplay;\n const activeBottomTab = panelRegistry.getBottomDockTab();\n const assetBrowserTabChanged = assetBrowserTab !== lastRenderedAssetBrowserTab;\n const bottomDockTabChanged = activeBottomTab !== lastRenderedBottomDockTab;\n const selectedAssetChanged = state.selectedAssetId !== lastRenderedSelectedAssetId;\n const assetBrowserScrollSnapshot = activeBottomTab === 'assets'\n ? assetBrowserViewportReveal.captureScrollSnapshot()\n : { scrollTop: null };\n hierarchyPanel.dataset.editorPanelId = hierarchyDescriptor?.id ?? 'hierarchy';\n inspectorPanel.dataset.editorPanelId = activeRightTab === 'inspector' ? rightDescriptor?.id ?? 'inspector' : 'inspector';\n renderingPanel.dataset.editorPanelId = activeRightTab === 'rendering' ? rightDescriptor?.id ?? 'rendering' : 'rendering';\n markersPanel.dataset.editorPanelId = activeRightTab === 'markers' ? rightDescriptor?.id ?? 'markers' : 'markers';\n pluginsPanel.dataset.editorPanelId = activeRightTab === 'plugins' ? rightDescriptor?.id ?? 'plugins' : 'plugins';\n inspectorPanel.style.display = rightDockVisibility.inspectorDisplay;\n renderingPanel.style.display = rightDockVisibility.renderingDisplay;\n markersPanel.style.display = rightDockVisibility.markersDisplay;\n pluginsPanel.style.display = rightDockVisibility.pluginsDisplay;\n LocalEditorPanels.renderWorkbenchLeftDockTabs(\n doc,\n leftDockTabs,\n 'hierarchy',\n panelRegistry.getPanels('left'),\n );\n hierarchyController.render(state);\n LocalEditorPanels.renderWorkbenchBottomDockPanel(\n doc,\n assetPanel,\n state,\n activeBottomTab,\n panelRegistry.getPanels('bottom'),\n assetBrowserTab,\n );\n if (activeBottomTab === 'assets' && !assetBrowserTabChanged && !bottomDockTabChanged) {\n assetBrowserViewportReveal.restoreScrollSnapshot(assetBrowserScrollSnapshot);\n }\n const suppressAssetScroll = state.selectedAssetId\n ? assetBrowserViewportReveal.consumeRevealSuppression(state.selectedAssetId, { clearWhenDifferent: selectedAssetChanged })\n : false;\n if (activeBottomTab === 'assets' && selectedAssetChanged && state.selectedAssetId && !suppressAssetScroll) {\n revealSelectedAssetBrowserItem(state.selectedAssetId);\n }\n revealPendingStatusDiagnosticAsset(state);\n lastRenderedAssetBrowserTab = assetBrowserTab;\n lastRenderedBottomDockTab = activeBottomTab;\n lastRenderedSelectedAssetId = state.selectedAssetId;\n LocalEditorPanels.renderWorkbenchRightDockTabs(doc, rightDockTabs, activeRightTab, panelRegistry.getPanels('right'));\n const rightDockVisible = rightDockFormalSurfaceVisibility.isVisible();\n if (!rightDockVisible) {\n LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel);\n LocalEditorPanels.disposeInspectorPanelUi(renderingPanel);\n } else if (activeRightTab === 'inspector') {\n LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, state, inspectorFilter, {\n ...options.inspector,\n layerHost: editorUiLayerHost,\n lockedVectorGroups: lockedInspectorVectorGroups,\n });\n } else if (activeRightTab === 'rendering') {\n LocalEditorPanels.renderRenderingPanel(doc, renderingPanel, state, { layerHost: editorUiLayerHost });\n } else if (activeRightTab === 'markers') {\n LocalEditorPanels.renderMarkerPanel(doc, markersPanel, state);\n } else {\n renderLocalEditorPluginPanel(doc, pluginsPanel, state.pluginPanel ?? null);\n }\n restoreLocalEditorEditableFocus(doc, focusSnapshot);\n restoreLocalEditorRightDockScrollSnapshot(\n rightDockScrollSnapshot,\n state,\n activeRightTab,\n inspectorFilter,\n inspectorPanel,\n renderingPanel,\n markersPanel,\n pluginsPanel,\n );\n revealPendingStatusDiagnosticPath(state);\n };\n\n const completedCleanup = new Set<string>();\n let uiDisposed = false;\n\n return {\n update(state) {\n render(state);\n },\n updatePreview,\n updateSceneFrameStats(stats) {\n if (currentState) currentState = { ...currentState, sceneFrameStats: stats };\n renderSceneFrameRateOverlay(\n sceneFrameRateOverlay,\n currentState?.mode === 'editor' && !currentState.prefabStage ? stats : null,\n );\n },\n updatePerformanceStats(stats) {\n if (currentState) currentState = { ...currentState, performanceStats: stats };\n renderPerformanceMonitorOverlay(\n performanceMonitorOverlay,\n currentState?.mode === 'editor' && !currentState.prefabStage ? stats : null,\n currentState?.mode === 'editor' && !currentState.prefabStage && performanceMonitorOpen,\n );\n },\n alert(input) {\n return modalDialog.alert(input);\n },\n confirm(input) {\n return modalDialog.confirm(input);\n },\n choose(input) {\n return modalDialog.choose(input);\n },\n setTheme(theme) {\n setActiveTheme(theme);\n },\n getTheme() {\n return activeTheme;\n },\n dispose() {\n if (uiDisposed) return;\n const errors: unknown[] = [];\n const run = (key: string, operation: () => void): void => {\n if (completedCleanup.has(key)) return;\n try {\n operation();\n completedCleanup.add(key);\n } catch (error) {\n errors.push(error);\n }\n };\n\n run('toolbar-overflow-frame', () => {\n if (toolbarOverflowRaf != null) {\n doc.defaultView?.cancelAnimationFrame(toolbarOverflowRaf);\n toolbarOverflowRaf = null;\n }\n });\n run('toolbar-resize-observer', () => toolbarResizeObserver?.disconnect());\n run('toolbar-overflow-click', () => {\n toolbarOverflowButton.removeEventListener('click', onToolbarOverflowButtonClick);\n });\n run('local-test-click', () => localTestButton.removeEventListener('click', onLocalTestButtonClick));\n run('editor-status-click', () => editorStatusButton.removeEventListener('click', onEditorStatusButtonClick));\n run('editor-status-copy-all-click', () => editorStatusCopyAllButton.removeEventListener('click', onEditorStatusCopyAllClick));\n run('toolbar-overflow-pointerdown', () => {\n doc.removeEventListener('pointerdown', onToolbarOverflowPointerDown);\n });\n run('toolbar-overflow-resize', () => {\n doc.defaultView?.removeEventListener('resize', scheduleToolbarOverflowLayout);\n });\n run('host-chrome', () => hostChrome.remove());\n run('inspector-ui', () => LocalEditorPanels.disposeInspectorPanelUi(inspectorPanel));\n run('rendering-ui', () => LocalEditorPanels.disposeInspectorPanelUi(renderingPanel));\n run('editor-ui-layer-host', () => editorUiLayerHost.dispose());\n run('workbench-root', () => workbench.root.remove());\n run('local-test-menu', () => localTestMenu.remove());\n run('editor-status-center', () => editorStatusCenter.remove());\n run('toolbar-overflow-menu', () => toolbarOverflowMenu.remove());\n run('static-shadow-bake-popover', () => staticShadowBakePopover.remove());\n run('snap-settings-popover', () => snapSettingsPopover.remove());\n run('placement-settings-popover', () => placementSettingsPopover.remove());\n run('transform-action-popover', () => transformActionPopover.remove());\n run('overlay-settings-popover', () => overlaySettingsPopover.remove());\n run('spatial-overlay', () => spatialOverlay.root.remove());\n run('measurement-overlay', () => measurementOverlay.root.remove());\n run('scene-frame-rate-overlay', () => sceneFrameRateOverlay.root.remove());\n run('performance-monitor-overlay', () => performanceMonitorOverlay.root.remove());\n run('prefab-stage-preview-layout', () => prefabStagePreviewLayout.root.remove());\n run('box-selection-overlay', () => boxSelectionOverlay.remove());\n run('shortcut-help-panel', () => shortcutHelpPanel.remove());\n run('asset-preview-modal', () => assetPreviewModal.remove());\n run('asset-picker-modal', () => assetPickerModal.remove());\n run('hierarchy-controller', () => hierarchyController.dispose());\n run('workbench-layout-controller', () => workbenchLayoutController.dispose());\n run('tooltip-controller', () => tooltipController.dispose());\n run('context-menu', () => contextMenu.dispose());\n run('modal-dialog', () => modalDialog.dispose());\n run('input-router', () => inputRouter.dispose());\n run('document-keydown', () => doc.removeEventListener('keydown', onKeyDown));\n run('owned-root-children', () => construction.removeMountedRootChildren());\n\n if (errors.length > 0) {\n const error = new Error('Local Editor browser UI cleanup failed.') as Error & { errors: unknown[] };\n error.errors = errors;\n throw error;\n }\n uiDisposed = true;\n },\n };\n}\n"]}