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

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 (1506) 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 +19 -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/material-preview.d.ts +22 -0
  47. package/dist/internal/material-preview.d.ts.map +1 -0
  48. package/dist/internal/material-preview.js +186 -0
  49. package/dist/internal/material-preview.js.map +1 -0
  50. package/dist/internal/product-local-editor-cleanup.d.ts +5 -0
  51. package/dist/internal/product-local-editor-cleanup.d.ts.map +1 -0
  52. package/dist/internal/product-local-editor-cleanup.js +20 -0
  53. package/dist/internal/product-local-editor-cleanup.js.map +1 -0
  54. package/dist/internal/project-model-preview.d.ts +4 -0
  55. package/dist/internal/project-model-preview.d.ts.map +1 -0
  56. package/dist/internal/project-model-preview.js +359 -0
  57. package/dist/internal/project-model-preview.js.map +1 -0
  58. package/dist/local-editor-agent-actions.d.ts +2 -4
  59. package/dist/local-editor-agent-actions.d.ts.map +1 -1
  60. package/dist/local-editor-agent-actions.js +56 -32
  61. package/dist/local-editor-agent-actions.js.map +1 -1
  62. package/dist/local-editor-agent-context.d.ts +17 -6
  63. package/dist/local-editor-agent-context.d.ts.map +1 -1
  64. package/dist/local-editor-agent-context.js +47 -0
  65. package/dist/local-editor-agent-context.js.map +1 -1
  66. package/dist/local-editor-harness.d.ts +353 -35
  67. package/dist/local-editor-harness.d.ts.map +1 -1
  68. package/dist/local-editor-harness.js +4115 -1313
  69. package/dist/local-editor-harness.js.map +1 -1
  70. package/dist/local-editor-marker-graph.d.ts +15 -15
  71. package/dist/local-editor-marker-graph.d.ts.map +1 -1
  72. package/dist/local-editor-marker-graph.js +3 -0
  73. package/dist/local-editor-marker-graph.js.map +1 -1
  74. package/dist/local-editor-performance-stats.d.ts +3 -2
  75. package/dist/local-editor-performance-stats.d.ts.map +1 -1
  76. package/dist/local-editor-performance-stats.js.map +1 -1
  77. package/dist/local-editor-prefab-stage-transaction.d.ts +19 -0
  78. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -0
  79. package/dist/local-editor-prefab-stage-transaction.js +45 -0
  80. package/dist/local-editor-prefab-stage-transaction.js.map +1 -0
  81. package/dist/local-editor-scene-view-interaction-runtime.d.ts +3 -1
  82. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  83. package/dist/local-editor-scene-view-interaction-runtime.js +24 -0
  84. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  85. package/dist/local-editor-tools.d.ts +19 -0
  86. package/dist/local-editor-tools.d.ts.map +1 -0
  87. package/dist/local-editor-tools.js +56 -0
  88. package/dist/local-editor-tools.js.map +1 -0
  89. package/dist/playable-babylon-rendering.d.ts +9 -0
  90. package/dist/playable-babylon-rendering.d.ts.map +1 -1
  91. package/dist/playable-babylon-rendering.js +162 -6
  92. package/dist/playable-babylon-rendering.js.map +1 -1
  93. package/dist/playable-local-editor-entry.d.ts +68 -0
  94. package/dist/playable-local-editor-entry.d.ts.map +1 -0
  95. package/dist/playable-local-editor-entry.js +424 -0
  96. package/dist/playable-local-editor-entry.js.map +1 -0
  97. package/dist/playable-local-editor-host.d.ts +55 -29
  98. package/dist/playable-local-editor-host.d.ts.map +1 -1
  99. package/dist/playable-local-editor-host.js +50 -11
  100. package/dist/playable-local-editor-host.js.map +1 -1
  101. package/dist/playable-product-local-editor.d.ts +10 -12
  102. package/dist/playable-product-local-editor.d.ts.map +1 -1
  103. package/dist/playable-product-local-editor.js +178 -85
  104. package/dist/playable-product-local-editor.js.map +1 -1
  105. package/dist/playable-product-projection-preview.d.ts +4 -1
  106. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  107. package/dist/playable-product-projection-preview.js +122 -5
  108. package/dist/playable-product-projection-preview.js.map +1 -1
  109. package/dist/playable-product-rendering.d.ts +12 -0
  110. package/dist/playable-product-rendering.d.ts.map +1 -1
  111. package/dist/playable-product-rendering.js +128 -6
  112. package/dist/playable-product-rendering.js.map +1 -1
  113. package/dist/playable-product-scene-capabilities.d.ts +24 -7
  114. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  115. package/dist/playable-product-scene-capabilities.js +180 -17
  116. package/dist/playable-product-scene-capabilities.js.map +1 -1
  117. package/dist/playable-project-mode.d.ts +17 -0
  118. package/dist/playable-project-mode.d.ts.map +1 -0
  119. package/dist/playable-project-mode.js +2 -0
  120. package/dist/playable-project-mode.js.map +1 -0
  121. package/dist/playable-runtime-babylon.d.ts +3 -6
  122. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  123. package/dist/playable-runtime-babylon.js +1 -5
  124. package/dist/playable-runtime-babylon.js.map +1 -1
  125. package/dist/playable-sdk.d.ts +16 -9
  126. package/dist/playable-sdk.d.ts.map +1 -1
  127. package/dist/playable-sdk.js +6 -4
  128. package/dist/playable-sdk.js.map +1 -1
  129. package/dist/playable-standard-project.d.ts +23 -14
  130. package/dist/playable-standard-project.d.ts.map +1 -1
  131. package/dist/playable-standard-project.js +57 -20
  132. package/dist/playable-standard-project.js.map +1 -1
  133. package/dist/vite-client.d.ts +4 -0
  134. package/node_modules/@babel/helper-string-parser/lib/index.js +0 -1
  135. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js +0 -1
  136. package/node_modules/@babel/helper-validator-identifier/lib/index.js +0 -1
  137. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js +0 -1
  138. package/node_modules/@babel/parser/lib/index.js +0 -1
  139. package/node_modules/@babel/types/lib/asserts/assertNode.js +0 -1
  140. package/node_modules/@babel/types/lib/asserts/generated/index.js +0 -1
  141. package/node_modules/@babel/types/lib/ast-types/generated/index.js +0 -1
  142. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -1
  143. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -1
  144. package/node_modules/@babel/types/lib/builders/generated/index.js +0 -1
  145. package/node_modules/@babel/types/lib/builders/generated/lowercase.js +0 -1
  146. package/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
  147. package/node_modules/@babel/types/lib/builders/productions.js +0 -1
  148. package/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -1
  149. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -1
  150. package/node_modules/@babel/types/lib/builders/validateNode.js +0 -1
  151. package/node_modules/@babel/types/lib/clone/clone.js +0 -1
  152. package/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -1
  153. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -1
  154. package/node_modules/@babel/types/lib/clone/cloneNode.js +0 -1
  155. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -1
  156. package/node_modules/@babel/types/lib/comments/addComment.js +0 -1
  157. package/node_modules/@babel/types/lib/comments/addComments.js +0 -1
  158. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -1
  159. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -1
  160. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -1
  161. package/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -1
  162. package/node_modules/@babel/types/lib/comments/removeComments.js +0 -1
  163. package/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
  164. package/node_modules/@babel/types/lib/constants/index.js +0 -1
  165. package/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -1
  166. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +0 -1
  167. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -1
  168. package/node_modules/@babel/types/lib/converters/toBlock.js +0 -1
  169. package/node_modules/@babel/types/lib/converters/toComputedKey.js +0 -1
  170. package/node_modules/@babel/types/lib/converters/toExpression.js +0 -1
  171. package/node_modules/@babel/types/lib/converters/toIdentifier.js +0 -1
  172. package/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -1
  173. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -1
  174. package/node_modules/@babel/types/lib/converters/toStatement.js +0 -1
  175. package/node_modules/@babel/types/lib/converters/valueToNode.js +0 -1
  176. package/node_modules/@babel/types/lib/definitions/core.js +0 -1
  177. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js +0 -1
  178. package/node_modules/@babel/types/lib/definitions/experimental.js +0 -1
  179. package/node_modules/@babel/types/lib/definitions/flow.js +0 -1
  180. package/node_modules/@babel/types/lib/definitions/index.js +0 -1
  181. package/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
  182. package/node_modules/@babel/types/lib/definitions/misc.js +0 -1
  183. package/node_modules/@babel/types/lib/definitions/placeholders.js +0 -1
  184. package/node_modules/@babel/types/lib/definitions/typescript.js +0 -1
  185. package/node_modules/@babel/types/lib/definitions/utils.js +0 -1
  186. package/node_modules/@babel/types/lib/index.js +0 -1
  187. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -1
  188. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +0 -1
  189. package/node_modules/@babel/types/lib/modifications/inherits.js +0 -1
  190. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -1
  191. package/node_modules/@babel/types/lib/modifications/removeProperties.js +0 -1
  192. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -1
  193. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +0 -1
  194. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js +0 -1
  195. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +0 -1
  196. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js +0 -1
  197. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -1
  198. package/node_modules/@babel/types/lib/traverse/traverse.js +0 -1
  199. package/node_modules/@babel/types/lib/traverse/traverseFast.js +0 -1
  200. package/node_modules/@babel/types/lib/utils/deprecationWarning.js +0 -1
  201. package/node_modules/@babel/types/lib/utils/inherit.js +0 -1
  202. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +0 -1
  203. package/node_modules/@babel/types/lib/utils/shallowEqual.js +0 -1
  204. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -1
  205. package/node_modules/@babel/types/lib/validators/generated/index.js +0 -1
  206. package/node_modules/@babel/types/lib/validators/is.js +0 -1
  207. package/node_modules/@babel/types/lib/validators/isBinding.js +0 -1
  208. package/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -1
  209. package/node_modules/@babel/types/lib/validators/isImmutable.js +0 -1
  210. package/node_modules/@babel/types/lib/validators/isLet.js +0 -1
  211. package/node_modules/@babel/types/lib/validators/isNode.js +0 -1
  212. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +0 -1
  213. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -1
  214. package/node_modules/@babel/types/lib/validators/isReferenced.js +0 -1
  215. package/node_modules/@babel/types/lib/validators/isScope.js +0 -1
  216. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +0 -1
  217. package/node_modules/@babel/types/lib/validators/isType.js +0 -1
  218. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -1
  219. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -1
  220. package/node_modules/@babel/types/lib/validators/isVar.js +0 -1
  221. package/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -1
  222. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
  223. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -1
  224. package/node_modules/@babel/types/lib/validators/validate.js +0 -1
  225. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.d.ts +69 -0
  226. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.js +132 -0
  227. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.d.ts +8 -0
  228. package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.js +7 -0
  229. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.d.ts +14 -0
  230. package/node_modules/@babylonjs/loaders/BVH/bvhLoader.js +328 -0
  231. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.d.ts +9 -0
  232. package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.js +1 -0
  233. package/node_modules/@babylonjs/loaders/BVH/index.d.ts +2 -0
  234. package/node_modules/@babylonjs/loaders/BVH/index.js +3 -0
  235. package/node_modules/@babylonjs/loaders/OBJ/index.d.ts +4 -0
  236. package/node_modules/@babylonjs/loaders/OBJ/index.js +4 -0
  237. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.d.ts +41 -0
  238. package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.js +230 -0
  239. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.d.ts +136 -0
  240. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.js +317 -0
  241. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.d.ts +4 -0
  242. package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.js +4 -0
  243. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.d.ts +47 -0
  244. package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.js +1 -0
  245. package/node_modules/@babylonjs/loaders/OBJ/solidParser.d.ts +175 -0
  246. package/node_modules/@babylonjs/loaders/OBJ/solidParser.js +903 -0
  247. package/node_modules/@babylonjs/loaders/SPLAT/index.d.ts +2 -0
  248. package/node_modules/@babylonjs/loaders/SPLAT/index.js +3 -0
  249. package/node_modules/@babylonjs/loaders/SPLAT/sog.d.ts +84 -0
  250. package/node_modules/@babylonjs/loaders/SPLAT/sog.js +294 -0
  251. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.d.ts +26 -0
  252. package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.js +10 -0
  253. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.d.ts +100 -0
  254. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.js +536 -0
  255. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.d.ts +20 -0
  256. package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.js +15 -0
  257. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.d.ts +33 -0
  258. package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.js +1 -0
  259. package/node_modules/@babylonjs/loaders/SPLAT/spz.d.ts +11 -0
  260. package/node_modules/@babylonjs/loaders/SPLAT/spz.js +168 -0
  261. package/node_modules/@babylonjs/loaders/STL/index.d.ts +1 -0
  262. package/node_modules/@babylonjs/loaders/STL/index.js +1 -0
  263. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.d.ts +78 -0
  264. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.js +238 -0
  265. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.d.ts +8 -0
  266. package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.js +7 -0
  267. package/node_modules/@babylonjs/loaders/bvh/license.md +21 -0
  268. package/node_modules/@babylonjs/loaders/dynamic.d.ts +5 -0
  269. package/node_modules/@babylonjs/loaders/dynamic.js +56 -0
  270. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.d.ts +16 -0
  271. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.js +64 -0
  272. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.d.ts +144 -0
  273. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.js +1841 -0
  274. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.d.ts +412 -0
  275. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.js +95 -0
  276. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.d.ts +71 -0
  277. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.js +254 -0
  278. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.d.ts +13 -0
  279. package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.js +130 -0
  280. package/node_modules/@babylonjs/loaders/glTF/1.0/index.d.ts +5 -0
  281. package/node_modules/@babylonjs/loaders/glTF/1.0/index.js +5 -0
  282. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.d.ts +41 -0
  283. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.js +93 -0
  284. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.d.ts +41 -0
  285. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.js +83 -0
  286. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +48 -0
  287. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.js +115 -0
  288. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +39 -0
  289. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +94 -0
  290. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +39 -0
  291. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.js +50 -0
  292. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.d.ts +34 -0
  293. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.js +38 -0
  294. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.d.ts +33 -0
  295. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.js +37 -0
  296. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +53 -0
  297. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.js +73 -0
  298. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +47 -0
  299. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -0
  300. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.js +251 -0
  301. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.js +77 -0
  302. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +47 -0
  303. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +92 -0
  304. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +355 -0
  305. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1678 -0
  306. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
  307. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +19 -0
  308. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
  309. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.js +3 -0
  310. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +70 -0
  311. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +438 -0
  312. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.d.ts +38 -0
  313. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.js +150 -0
  314. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +41 -0
  315. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.js +91 -0
  316. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +42 -0
  317. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.js +65 -0
  318. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +43 -0
  319. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.js +79 -0
  320. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.d.ts +49 -0
  321. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.js +119 -0
  322. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +43 -0
  323. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +58 -0
  324. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +43 -0
  325. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +69 -0
  326. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +43 -0
  327. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.js +56 -0
  328. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +42 -0
  329. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +47 -0
  330. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +43 -0
  331. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.js +77 -0
  332. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.d.ts +46 -0
  333. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.js +54 -0
  334. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +42 -0
  335. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.js +68 -0
  336. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +42 -0
  337. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +80 -0
  338. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +43 -0
  339. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.js +73 -0
  340. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.d.ts +42 -0
  341. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.js +76 -0
  342. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +42 -0
  343. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.js +303 -0
  344. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +42 -0
  345. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.js +66 -0
  346. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.d.ts +112 -0
  347. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.js +262 -0
  348. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.d.ts +43 -0
  349. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.js +82 -0
  350. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +45 -0
  351. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +109 -0
  352. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +29 -0
  353. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.js +22 -0
  354. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +31 -0
  355. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.js +189 -0
  356. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
  357. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.js +123 -0
  358. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.d.ts +30 -0
  359. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.js +66 -0
  360. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +33 -0
  361. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.js +37 -0
  362. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.d.ts +37 -0
  363. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.js +58 -0
  364. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +39 -0
  365. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.js +47 -0
  366. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +56 -0
  367. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.js +228 -0
  368. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.d.ts +104 -0
  369. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.js +337 -0
  370. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +27 -0
  371. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.js +39 -0
  372. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +27 -0
  373. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.js +38 -0
  374. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.d.ts +4 -0
  375. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.js +212 -0
  376. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +45 -0
  377. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.js +100 -0
  378. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.d.ts +43 -0
  379. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.js +44 -0
  380. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.d.ts +306 -0
  381. package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.js +884 -0
  382. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.d.ts +450 -0
  383. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.js +2485 -0
  384. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.d.ts +42 -0
  385. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.js +79 -0
  386. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.d.ts +165 -0
  387. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.js +1 -0
  388. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.d.ts +25 -0
  389. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.js +32 -0
  390. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.d.ts +262 -0
  391. package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.js +1 -0
  392. package/node_modules/@babylonjs/loaders/glTF/2.0/index.d.ts +8 -0
  393. package/node_modules/@babylonjs/loaders/glTF/2.0/index.js +9 -0
  394. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.d.ts +364 -0
  395. package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.js +1 -0
  396. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.d.ts +674 -0
  397. package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.js +1034 -0
  398. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +705 -0
  399. package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.js +1126 -0
  400. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.d.ts +553 -0
  401. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.js +998 -0
  402. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.d.ts +15 -0
  403. package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.js +17 -0
  404. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.d.ts +35 -0
  405. package/node_modules/@babylonjs/loaders/glTF/glTFValidation.js +131 -0
  406. package/node_modules/@babylonjs/loaders/glTF/index.d.ts +5 -0
  407. package/node_modules/@babylonjs/loaders/glTF/index.js +6 -0
  408. package/node_modules/@babylonjs/loaders/index.d.ts +6 -0
  409. package/node_modules/@babylonjs/loaders/index.js +7 -0
  410. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.d.ts +1 -0
  411. package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.js +15 -0
  412. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.d.ts +1 -0
  413. package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.js +13 -0
  414. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.d.ts +2 -0
  415. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.js +18 -0
  416. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.d.ts +2 -0
  417. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.js +15 -0
  418. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.d.ts +2 -0
  419. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.js +3 -0
  420. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.d.ts +2 -0
  421. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.js +34 -0
  422. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.d.ts +2 -0
  423. package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.js +3 -0
  424. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.d.ts +3 -0
  425. package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.js +4 -0
  426. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.d.ts +1 -0
  427. package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.js +15 -0
  428. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.d.ts +1 -0
  429. package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.js +15 -0
  430. package/node_modules/@babylonjs/loaders/legacy/legacy.d.ts +8 -0
  431. package/node_modules/@babylonjs/loaders/legacy/legacy.js +10 -0
  432. package/node_modules/@babylonjs/loaders/license.md +71 -0
  433. package/node_modules/@babylonjs/loaders/package.json +49 -0
  434. package/node_modules/@babylonjs/loaders/readme.md +23 -0
  435. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts +22 -0
  436. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts.map +1 -0
  437. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js +187 -0
  438. package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js.map +1 -0
  439. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
  440. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
  441. package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
  442. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  443. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts +19 -0
  444. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts.map +1 -0
  445. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js +212 -0
  446. package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js.map +1 -0
  447. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts +17 -2
  448. package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts.map +1 -1
  449. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js +192 -17
  450. package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
  451. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +2 -0
  452. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  453. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +139 -3
  454. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  455. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts +4 -0
  456. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts.map +1 -1
  457. package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
  458. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts +1 -0
  459. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts.map +1 -1
  460. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js +1 -0
  461. package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
  462. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts +14 -0
  463. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts.map +1 -0
  464. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js +14 -0
  465. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js.map +1 -0
  466. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts +59 -0
  467. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  468. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js +725 -0
  469. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  470. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts +136 -0
  471. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  472. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js +2735 -0
  473. package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js.map +1 -0
  474. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  475. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +1 -1
  476. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  477. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +2 -1
  478. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  479. package/node_modules/@fps-games/editor-babylon/dist/index.js +2 -1
  480. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  481. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts +2 -0
  482. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts.map +1 -1
  483. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js +59 -6
  484. package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
  485. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +24 -0
  486. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
  487. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -1
  488. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +81 -11
  489. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  490. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +2 -8
  491. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  492. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +26 -5
  493. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  494. package/node_modules/@fps-games/editor-babylon/dist/projection.js +396 -363
  495. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  496. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +4 -0
  497. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
  498. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +76 -10
  499. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
  500. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.d.ts.map +1 -1
  501. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js +85 -22
  502. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
  503. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts +46 -0
  504. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts.map +1 -0
  505. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js +304 -0
  506. package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js.map +1 -0
  507. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +87 -0
  508. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -0
  509. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +1746 -0
  510. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -0
  511. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +11 -3
  512. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  513. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +105 -15
  514. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  515. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts +1 -0
  516. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  517. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +249 -15
  518. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  519. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts +1 -1
  520. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts.map +1 -1
  521. package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
  522. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts +25 -0
  523. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts.map +1 -0
  524. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js +44 -0
  525. package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js.map +1 -0
  526. package/node_modules/@fps-games/editor-babylon/package.json +6 -5
  527. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +13 -11
  528. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  529. package/node_modules/@fps-games/editor-browser/dist/index.js +9 -9
  530. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  531. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts +35 -0
  532. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts.map +1 -0
  533. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js +136 -0
  534. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js.map +1 -0
  535. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts +46 -0
  536. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts.map +1 -0
  537. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js +283 -0
  538. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js.map +1 -0
  539. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts +2 -0
  540. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts.map +1 -0
  541. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js +36 -0
  542. package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js.map +1 -0
  543. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts +2 -0
  544. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts.map +1 -1
  545. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js +17 -0
  546. package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
  547. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts +12 -0
  548. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts.map +1 -0
  549. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js +67 -0
  550. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js.map +1 -0
  551. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts +6 -0
  552. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts.map +1 -0
  553. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js +9 -0
  554. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js.map +1 -0
  555. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts +7 -0
  556. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts.map +1 -0
  557. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js +20 -0
  558. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js.map +1 -0
  559. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts +9 -0
  560. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts.map +1 -0
  561. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js +219 -0
  562. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js.map +1 -0
  563. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts +14 -0
  564. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts.map +1 -0
  565. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js +42 -0
  566. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js.map +1 -0
  567. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +1 -1
  568. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
  569. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +8 -0
  570. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  571. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts +27 -0
  572. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts.map +1 -0
  573. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js +288 -0
  574. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js.map +1 -0
  575. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts.map +1 -1
  576. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +157 -77
  577. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
  578. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.d.ts.map +1 -1
  579. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js +27 -21
  580. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
  581. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +19 -0
  582. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -0
  583. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +44 -0
  584. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -0
  585. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +36 -6
  586. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  587. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +829 -866
  588. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  589. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts +8 -7
  590. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts.map +1 -1
  591. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js +1 -7
  592. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
  593. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts +7 -0
  594. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts.map +1 -0
  595. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js +20 -0
  596. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js.map +1 -0
  597. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +6 -7
  598. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  599. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +266 -114
  600. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  601. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  602. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  603. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +34 -0
  604. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  605. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
  606. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +3 -17
  607. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
  608. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts +14 -0
  609. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts.map +1 -1
  610. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js +44 -62
  611. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
  612. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +30 -8
  613. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  614. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +911 -698
  615. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  616. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +10 -37
  617. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
  618. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +29 -105
  619. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  620. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
  621. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +29 -110
  622. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
  623. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +1 -3
  624. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
  625. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +6 -90
  626. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
  627. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -1
  628. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +9 -54
  629. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
  630. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +16 -1
  631. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -1
  632. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +44 -39
  633. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -1
  634. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts +4 -0
  635. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts.map +1 -0
  636. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js +44 -0
  637. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js.map +1 -0
  638. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.d.ts.map +1 -1
  639. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js +35 -44
  640. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
  641. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -1
  642. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +40 -24
  643. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
  644. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.d.ts.map +1 -1
  645. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js +2 -20
  646. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
  647. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +114 -343
  648. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  649. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  650. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +13 -14
  651. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  652. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +120 -134
  653. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  654. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +6 -10
  655. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  656. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +2019 -861
  657. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  658. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts +13 -0
  659. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts.map +1 -0
  660. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js +15 -0
  661. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js.map +1 -0
  662. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts +2 -3
  663. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts.map +1 -1
  664. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js +0 -180
  665. package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
  666. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts +5 -0
  667. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts.map +1 -0
  668. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js +5 -0
  669. package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js.map +1 -0
  670. package/node_modules/@fps-games/editor-browser/package.json +15 -4
  671. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts +22 -0
  672. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts.map +1 -0
  673. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js +226 -0
  674. package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js.map +1 -0
  675. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -1
  676. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  677. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +94 -2
  678. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  679. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +24 -2
  680. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  681. package/node_modules/@fps-games/editor-core/dist/editor-session.js +70 -10
  682. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  683. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +113 -0
  684. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -0
  685. package/node_modules/@fps-games/editor-core/dist/editor-tools.js +615 -0
  686. package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -0
  687. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +46 -0
  688. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -1
  689. package/node_modules/@fps-games/editor-core/dist/inspector.js +62 -0
  690. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  691. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -0
  692. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  693. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  694. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +11 -2
  695. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
  696. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js +12 -1
  697. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  698. package/node_modules/@fps-games/editor-core/package.json +14 -6
  699. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  700. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +14 -3
  701. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  702. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +1 -1
  703. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -1
  704. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +1 -1
  705. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
  706. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +14 -0
  707. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
  708. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +49 -1
  709. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
  710. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts +1 -0
  711. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts.map +1 -1
  712. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +63 -2
  713. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  714. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
  715. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +48 -6
  716. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
  717. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts +1 -1
  718. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts.map +1 -1
  719. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js +1 -1
  720. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
  721. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.d.ts.map +1 -1
  722. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js +15 -1
  723. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
  724. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.d.ts.map +1 -1
  725. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js +3 -0
  726. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
  727. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts +6 -1
  728. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts.map +1 -1
  729. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
  730. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +28 -3
  731. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  732. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +314 -6
  733. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  734. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts +2 -0
  735. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts.map +1 -1
  736. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js +2 -0
  737. package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
  738. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts +11 -0
  739. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts.map +1 -0
  740. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js +27 -0
  741. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js.map +1 -0
  742. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts +5 -0
  743. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts.map +1 -0
  744. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js +285 -0
  745. package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js.map +1 -0
  746. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +7 -3
  747. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  748. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
  749. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +4 -0
  750. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  751. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +7 -0
  752. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  753. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  754. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +23 -81
  755. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  756. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts +41 -0
  757. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts.map +1 -0
  758. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js +93 -0
  759. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js.map +1 -0
  760. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts +29 -0
  761. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts.map +1 -0
  762. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js +77 -0
  763. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js.map +1 -0
  764. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts +51 -0
  765. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts.map +1 -0
  766. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js +105 -0
  767. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js.map +1 -0
  768. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts +60 -0
  769. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts.map +1 -0
  770. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js +287 -0
  771. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js.map +1 -0
  772. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +6 -1
  773. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  774. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  775. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +1 -0
  776. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  777. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +53 -17
  778. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  779. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +16 -8
  780. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  781. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +10 -6
  782. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  783. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +5 -3
  784. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  785. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +2 -1
  786. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  787. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  788. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +134 -66
  789. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  790. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +11 -0
  791. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
  792. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +21 -14
  793. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
  794. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +17 -9
  795. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  796. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  797. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  798. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +20 -0
  799. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  800. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
  801. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +49 -10
  802. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  803. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +2 -2
  804. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  805. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -0
  806. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  807. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts +7 -0
  808. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts.map +1 -1
  809. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js +130 -20
  810. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
  811. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts +1 -1
  812. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts.map +1 -1
  813. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js +12 -3
  814. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
  815. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts +11 -0
  816. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts.map +1 -0
  817. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js +136 -0
  818. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js.map +1 -0
  819. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts +1 -0
  820. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts.map +1 -1
  821. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js +1 -0
  822. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
  823. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts +36 -51
  824. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts.map +1 -1
  825. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js +40 -65
  826. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
  827. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +5 -2
  828. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  829. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +207 -1
  830. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  831. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  832. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  833. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +3 -0
  834. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  835. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +18 -7
  836. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  837. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +110 -18
  838. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  839. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +9 -0
  840. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  841. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +16 -1
  842. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  843. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts +5 -2
  844. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  845. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +22 -2
  846. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  847. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts +4 -0
  848. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts.map +1 -0
  849. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js +4 -0
  850. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js.map +1 -0
  851. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts +4 -0
  852. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts.map +1 -0
  853. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js +86 -0
  854. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js.map +1 -0
  855. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts +9 -0
  856. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts.map +1 -0
  857. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js +76 -0
  858. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js.map +1 -0
  859. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts +34 -0
  860. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts.map +1 -0
  861. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js +2 -0
  862. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js.map +1 -0
  863. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  864. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +144 -0
  865. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  866. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +16 -0
  867. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
  868. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
  869. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  870. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
  871. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  872. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
  873. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  874. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
  875. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +2 -0
  876. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -1
  877. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +241 -13
  878. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  879. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +1 -0
  880. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -1
  881. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +1 -0
  882. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
  883. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts +31 -0
  884. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts.map +1 -0
  885. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js +170 -0
  886. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js.map +1 -0
  887. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +153 -13
  888. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -1
  889. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
  890. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts +17 -0
  891. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts.map +1 -1
  892. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js +1295 -3
  893. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
  894. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts +4 -0
  895. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  896. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +54 -0
  897. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  898. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.d.ts.map +1 -1
  899. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js +57 -34
  900. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  901. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
  902. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +4 -1
  903. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
  904. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +4 -0
  905. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  906. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  907. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
  908. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +20 -198
  909. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
  910. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.d.ts.map +1 -1
  911. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js +5 -1
  912. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
  913. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts +5 -0
  914. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
  915. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +144 -8
  916. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  917. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts +1 -1
  918. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts.map +1 -1
  919. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js +30 -1
  920. package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
  921. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts +6 -0
  922. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts.map +1 -1
  923. package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
  924. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +31 -3
  925. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  926. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +5 -2
  927. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  928. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +40 -4
  929. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  930. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +1 -0
  931. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  932. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +1 -0
  933. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  934. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  935. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +116 -3
  936. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  937. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +2 -1
  938. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  939. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -0
  940. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  941. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +17 -1
  942. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
  943. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +50 -2
  944. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
  945. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +1 -0
  946. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  947. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +101 -5
  948. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  949. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +5 -6
  950. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
  951. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +31 -17
  952. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
  953. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts +14 -0
  954. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts.map +1 -0
  955. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js +101 -0
  956. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js.map +1 -0
  957. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts +23 -0
  958. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts.map +1 -0
  959. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js +180 -0
  960. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js.map +1 -0
  961. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +6 -0
  962. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  963. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  964. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  965. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +417 -2
  966. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -1
  967. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +692 -2
  968. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  969. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +23 -3
  970. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
  971. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  972. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts +55 -0
  973. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts.map +1 -0
  974. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js +2 -0
  975. package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js.map +1 -0
  976. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +3 -18
  977. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  978. package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
  979. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  980. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  981. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.d.ts.map +1 -1
  982. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js +5 -0
  983. package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
  984. package/node_modules/@fps-games/editor-tooling/dist/vite.d.ts.map +1 -1
  985. package/node_modules/@fps-games/editor-tooling/dist/vite.js +151 -5
  986. package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
  987. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  988. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts +107 -0
  989. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts.map +1 -0
  990. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js +770 -0
  991. package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js.map +1 -0
  992. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts +21 -0
  993. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts.map +1 -0
  994. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js +172 -0
  995. package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js.map +1 -0
  996. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts +14 -0
  997. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts.map +1 -0
  998. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js +32 -0
  999. package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js.map +1 -0
  1000. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts +3 -0
  1001. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -0
  1002. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +746 -0
  1003. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -0
  1004. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts +3 -0
  1005. package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts.map +1 -0
  1006. package/node_modules/@fps-games/editor-ui/dist/gallery.js +3 -0
  1007. package/node_modules/@fps-games/editor-ui/dist/gallery.js.map +1 -0
  1008. package/node_modules/@fps-games/editor-ui/dist/index.d.ts +5 -0
  1009. package/node_modules/@fps-games/editor-ui/dist/index.d.ts.map +1 -0
  1010. package/node_modules/@fps-games/editor-ui/dist/index.js +5 -0
  1011. package/node_modules/@fps-games/editor-ui/dist/index.js.map +1 -0
  1012. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts +7 -0
  1013. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts.map +1 -0
  1014. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js +29 -0
  1015. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js.map +1 -0
  1016. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts +2 -0
  1017. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts.map +1 -0
  1018. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js +95 -0
  1019. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js.map +1 -0
  1020. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts +28 -0
  1021. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts.map +1 -0
  1022. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js +387 -0
  1023. package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js.map +1 -0
  1024. package/node_modules/@fps-games/editor-ui/package.json +23 -0
  1025. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  1026. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts +1 -0
  1027. package/node_modules/@fps-games/playable-contracts/dist/index.d.ts.map +1 -1
  1028. package/node_modules/@fps-games/playable-contracts/dist/index.js +1 -0
  1029. package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
  1030. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts +116 -0
  1031. package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts.map +1 -0
  1032. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js +403 -0
  1033. package/node_modules/@fps-games/playable-contracts/dist/material-owner.js.map +1 -0
  1034. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  1035. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts +3 -0
  1036. package/node_modules/@fps-games/playable-rendering/dist/index.d.ts.map +1 -1
  1037. package/node_modules/@fps-games/playable-rendering/dist/index.js +3 -0
  1038. package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
  1039. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js +5 -25
  1040. package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
  1041. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts +3 -0
  1042. package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts.map +1 -1
  1043. package/node_modules/@fps-games/playable-rendering/dist/runtime.js +3 -0
  1044. package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
  1045. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts +61 -0
  1046. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts.map +1 -0
  1047. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js +176 -0
  1048. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js.map +1 -0
  1049. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts +84 -0
  1050. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  1051. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js +362 -0
  1052. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js.map +1 -0
  1053. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts +167 -0
  1054. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts.map +1 -0
  1055. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js +484 -0
  1056. package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js.map +1 -0
  1057. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  1058. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts +5 -0
  1059. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts.map +1 -1
  1060. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js +1 -0
  1061. package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
  1062. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  1063. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  1064. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  1065. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  1066. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  1067. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  1068. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  1069. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  1070. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts +6 -0
  1071. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts.map +1 -0
  1072. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js +16 -0
  1073. package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js.map +1 -0
  1074. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts +7 -0
  1075. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts.map +1 -0
  1076. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js +47 -0
  1077. package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js.map +1 -0
  1078. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +306 -0
  1079. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -0
  1080. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +1237 -0
  1081. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -0
  1082. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts +8 -0
  1083. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts.map +1 -0
  1084. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js +32 -0
  1085. package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js.map +1 -0
  1086. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +2 -0
  1087. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts.map +1 -0
  1088. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +2 -0
  1089. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -0
  1090. package/node_modules/@fps-games/plugin-hierarchy/package.json +57 -0
  1091. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  1092. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  1093. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  1094. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  1095. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  1096. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  1097. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  1098. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  1099. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  1100. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  1101. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  1102. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  1103. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  1104. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  1105. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  1106. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  1107. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  1108. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts +8 -0
  1109. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts.map +1 -0
  1110. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js +35 -0
  1111. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js.map +1 -0
  1112. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts +11 -0
  1113. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts.map +1 -0
  1114. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js +14 -0
  1115. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js.map +1 -0
  1116. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +2 -0
  1117. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts.map +1 -0
  1118. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +2 -0
  1119. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -0
  1120. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +53 -0
  1121. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  1122. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  1123. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  1124. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  1125. package/node_modules/@playcanvas/observer/LICENSE +19 -0
  1126. package/node_modules/@playcanvas/observer/README.md +72 -0
  1127. package/node_modules/@playcanvas/observer/dist/index.cjs +2033 -0
  1128. package/node_modules/@playcanvas/observer/dist/index.js +2039 -0
  1129. package/node_modules/@playcanvas/observer/dist/index.mjs +2026 -0
  1130. package/node_modules/@playcanvas/observer/package.json +78 -0
  1131. package/node_modules/@playcanvas/observer/types/event-handle.d.ts +41 -0
  1132. package/node_modules/@playcanvas/observer/types/events.d.ts +162 -0
  1133. package/node_modules/@playcanvas/observer/types/history.d.ts +123 -0
  1134. package/node_modules/@playcanvas/observer/types/index.d.ts +15 -0
  1135. package/node_modules/@playcanvas/observer/types/observer-history.d.ts +32 -0
  1136. package/node_modules/@playcanvas/observer/types/observer-list.d.ts +39 -0
  1137. package/node_modules/@playcanvas/observer/types/observer.d.ts +157 -0
  1138. package/node_modules/@playcanvas/observer/types/utils.d.ts +33 -0
  1139. package/node_modules/@playcanvas/pcui/LICENSE +19 -0
  1140. package/node_modules/@playcanvas/pcui/README.md +164 -0
  1141. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1142. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1143. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1144. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1145. package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1146. package/node_modules/@playcanvas/pcui/dist/module/src/Math/color-value.mjs +77 -0
  1147. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1148. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1149. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1150. package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1151. package/node_modules/@playcanvas/pcui/dist/module/src/class.mjs +19 -0
  1152. package/node_modules/@playcanvas/pcui/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1153. package/node_modules/@playcanvas/pcui/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1154. package/node_modules/@playcanvas/pcui/dist/module/src/components/Button/index.mjs +119 -0
  1155. package/node_modules/@playcanvas/pcui/dist/module/src/components/Canvas/index.mjs +104 -0
  1156. package/node_modules/@playcanvas/pcui/dist/module/src/components/Code/index.mjs +43 -0
  1157. package/node_modules/@playcanvas/pcui/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1158. package/node_modules/@playcanvas/pcui/dist/module/src/components/Container/index.mjs +642 -0
  1159. package/node_modules/@playcanvas/pcui/dist/module/src/components/Divider/index.mjs +20 -0
  1160. package/node_modules/@playcanvas/pcui/dist/module/src/components/Element/index.mjs +829 -0
  1161. package/node_modules/@playcanvas/pcui/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1162. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridView/index.mjs +448 -0
  1163. package/node_modules/@playcanvas/pcui/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1164. package/node_modules/@playcanvas/pcui/dist/module/src/components/InfoBox/index.mjs +90 -0
  1165. package/node_modules/@playcanvas/pcui/dist/module/src/components/InputElement/index.mjs +186 -0
  1166. package/node_modules/@playcanvas/pcui/dist/module/src/components/Label/index.mjs +124 -0
  1167. package/node_modules/@playcanvas/pcui/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1168. package/node_modules/@playcanvas/pcui/dist/module/src/components/Menu/index.mjs +174 -0
  1169. package/node_modules/@playcanvas/pcui/dist/module/src/components/MenuItem/index.mjs +223 -0
  1170. package/node_modules/@playcanvas/pcui/dist/module/src/components/NumericInput/index.mjs +400 -0
  1171. package/node_modules/@playcanvas/pcui/dist/module/src/components/Overlay/index.mjs +108 -0
  1172. package/node_modules/@playcanvas/pcui/dist/module/src/components/Panel/index.mjs +400 -0
  1173. package/node_modules/@playcanvas/pcui/dist/module/src/components/Progress/index.mjs +45 -0
  1174. package/node_modules/@playcanvas/pcui/dist/module/src/components/RadioButton/index.mjs +113 -0
  1175. package/node_modules/@playcanvas/pcui/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1176. package/node_modules/@playcanvas/pcui/dist/module/src/components/SliderInput/index.mjs +333 -0
  1177. package/node_modules/@playcanvas/pcui/dist/module/src/components/Spinner/index.mjs +34 -0
  1178. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1179. package/node_modules/@playcanvas/pcui/dist/module/src/components/TextInput/index.mjs +98 -0
  1180. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeView/index.mjs +1131 -0
  1181. package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1182. package/node_modules/@playcanvas/pcui/dist/module/src/components/VectorInput/index.mjs +366 -0
  1183. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/search.mjs +194 -0
  1184. package/node_modules/@playcanvas/pcui/dist/module/src/helpers/utils.mjs +43 -0
  1185. package/node_modules/@playcanvas/pcui/dist/module/src/index.mjs +56 -0
  1186. package/node_modules/@playcanvas/pcui/dist/pcui-theme-green.scss +2798 -0
  1187. package/node_modules/@playcanvas/pcui/dist/pcui-theme-grey.scss +2798 -0
  1188. package/node_modules/@playcanvas/pcui/package.json +150 -0
  1189. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
  1190. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
  1191. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
  1192. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
  1193. package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
  1194. package/node_modules/@playcanvas/pcui/react/dist/module/src/Math/color-value.mjs +77 -0
  1195. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingBase/index.mjs +215 -0
  1196. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
  1197. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
  1198. package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
  1199. package/node_modules/@playcanvas/pcui/react/dist/module/src/class.mjs +19 -0
  1200. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/component.mjs +11 -0
  1201. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/index.mjs +498 -0
  1202. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/component.mjs +11 -0
  1203. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/index.mjs +122 -0
  1204. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/component.mjs +16 -0
  1205. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/index.mjs +119 -0
  1206. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/component.mjs +16 -0
  1207. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/index.mjs +104 -0
  1208. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/component.mjs +11 -0
  1209. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/index.mjs +43 -0
  1210. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/component.mjs +16 -0
  1211. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/index.mjs +619 -0
  1212. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/component.mjs +36 -0
  1213. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/index.mjs +642 -0
  1214. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/component.mjs +11 -0
  1215. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/index.mjs +20 -0
  1216. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/component.mjs +107 -0
  1217. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/index.mjs +829 -0
  1218. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/component.mjs +16 -0
  1219. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/index.mjs +1136 -0
  1220. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/component.mjs +38 -0
  1221. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/index.mjs +448 -0
  1222. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/component.mjs +11 -0
  1223. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/index.mjs +152 -0
  1224. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/component.mjs +16 -0
  1225. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/index.mjs +90 -0
  1226. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InputElement/index.mjs +186 -0
  1227. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/component.mjs +16 -0
  1228. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/index.mjs +124 -0
  1229. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/component.mjs +42 -0
  1230. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/index.mjs +74 -0
  1231. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/component.mjs +23 -0
  1232. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/index.mjs +174 -0
  1233. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/MenuItem/index.mjs +223 -0
  1234. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/component.mjs +11 -0
  1235. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/index.mjs +400 -0
  1236. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/component.mjs +11 -0
  1237. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/index.mjs +108 -0
  1238. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/component.mjs +32 -0
  1239. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/index.mjs +400 -0
  1240. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/component.mjs +11 -0
  1241. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/index.mjs +45 -0
  1242. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/component.mjs +11 -0
  1243. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/index.mjs +113 -0
  1244. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/component.mjs +21 -0
  1245. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/index.mjs +1085 -0
  1246. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/component.mjs +12 -0
  1247. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/index.mjs +333 -0
  1248. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/component.mjs +16 -0
  1249. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/index.mjs +34 -0
  1250. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/component.mjs +11 -0
  1251. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/index.mjs +50 -0
  1252. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/component.mjs +23 -0
  1253. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/index.mjs +98 -0
  1254. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/component.mjs +52 -0
  1255. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/index.mjs +1131 -0
  1256. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/component.mjs +33 -0
  1257. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/index.mjs +500 -0
  1258. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/component.mjs +11 -0
  1259. package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/index.mjs +366 -0
  1260. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/search.mjs +194 -0
  1261. package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/utils.mjs +43 -0
  1262. package/node_modules/@playcanvas/pcui/react/dist/module/src/index.mjs +39 -0
  1263. package/node_modules/@playcanvas/pcui/react/package.json +18 -0
  1264. package/node_modules/@playcanvas/pcui/react/types/Math/color-value.d.ts +3 -0
  1265. package/node_modules/@playcanvas/pcui/react/types/binding/BindingBase/index.d.ts +178 -0
  1266. package/node_modules/@playcanvas/pcui/react/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1267. package/node_modules/@playcanvas/pcui/react/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1268. package/node_modules/@playcanvas/pcui/react/types/binding/BindingTwoWay/index.d.ts +54 -0
  1269. package/node_modules/@playcanvas/pcui/react/types/binding/index.d.ts +5 -0
  1270. package/node_modules/@playcanvas/pcui/react/types/class.d.ts +17 -0
  1271. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/component.d.ts +9 -0
  1272. package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/index.d.ts +140 -0
  1273. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/component.d.ts +9 -0
  1274. package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/index.d.ts +41 -0
  1275. package/node_modules/@playcanvas/pcui/react/types/components/Button/component.d.ts +11 -0
  1276. package/node_modules/@playcanvas/pcui/react/types/components/Button/index.d.ts +75 -0
  1277. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/component.d.ts +11 -0
  1278. package/node_modules/@playcanvas/pcui/react/types/components/Canvas/index.d.ts +61 -0
  1279. package/node_modules/@playcanvas/pcui/react/types/components/Code/component.d.ts +9 -0
  1280. package/node_modules/@playcanvas/pcui/react/types/components/Code/index.d.ts +33 -0
  1281. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/component.d.ts +11 -0
  1282. package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/index.d.ts +99 -0
  1283. package/node_modules/@playcanvas/pcui/react/types/components/Container/component.d.ts +15 -0
  1284. package/node_modules/@playcanvas/pcui/react/types/components/Container/index.d.ts +292 -0
  1285. package/node_modules/@playcanvas/pcui/react/types/components/Divider/component.d.ts +10 -0
  1286. package/node_modules/@playcanvas/pcui/react/types/components/Divider/index.d.ts +13 -0
  1287. package/node_modules/@playcanvas/pcui/react/types/components/Element/component.d.ts +23 -0
  1288. package/node_modules/@playcanvas/pcui/react/types/components/Element/index.d.ts +671 -0
  1289. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/component.d.ts +11 -0
  1290. package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/index.d.ts +152 -0
  1291. package/node_modules/@playcanvas/pcui/react/types/components/GridView/component.d.ts +14 -0
  1292. package/node_modules/@playcanvas/pcui/react/types/components/GridView/index.d.ts +103 -0
  1293. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/component.d.ts +9 -0
  1294. package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/index.d.ts +82 -0
  1295. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/component.d.ts +11 -0
  1296. package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/index.d.ts +71 -0
  1297. package/node_modules/@playcanvas/pcui/react/types/components/InputElement/index.d.ts +84 -0
  1298. package/node_modules/@playcanvas/pcui/react/types/components/Label/component.d.ts +11 -0
  1299. package/node_modules/@playcanvas/pcui/react/types/components/Label/index.d.ts +85 -0
  1300. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/component.d.ts +10 -0
  1301. package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/index.d.ts +62 -0
  1302. package/node_modules/@playcanvas/pcui/react/types/components/Menu/component.d.ts +14 -0
  1303. package/node_modules/@playcanvas/pcui/react/types/components/Menu/index.d.ts +70 -0
  1304. package/node_modules/@playcanvas/pcui/react/types/components/MenuItem/index.d.ts +139 -0
  1305. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/component.d.ts +9 -0
  1306. package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/index.d.ts +173 -0
  1307. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/component.d.ts +9 -0
  1308. package/node_modules/@playcanvas/pcui/react/types/components/Overlay/index.d.ts +53 -0
  1309. package/node_modules/@playcanvas/pcui/react/types/components/Panel/component.d.ts +16 -0
  1310. package/node_modules/@playcanvas/pcui/react/types/components/Panel/index.d.ts +178 -0
  1311. package/node_modules/@playcanvas/pcui/react/types/components/Progress/component.d.ts +9 -0
  1312. package/node_modules/@playcanvas/pcui/react/types/components/Progress/index.d.ts +33 -0
  1313. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/component.d.ts +9 -0
  1314. package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/index.d.ts +33 -0
  1315. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/component.d.ts +12 -0
  1316. package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/index.d.ts +278 -0
  1317. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/component.d.ts +10 -0
  1318. package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/index.d.ts +133 -0
  1319. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/component.d.ts +11 -0
  1320. package/node_modules/@playcanvas/pcui/react/types/components/Spinner/index.d.ts +27 -0
  1321. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/component.d.ts +9 -0
  1322. package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/index.d.ts +24 -0
  1323. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/component.d.ts +12 -0
  1324. package/node_modules/@playcanvas/pcui/react/types/components/TextInput/index.d.ts +40 -0
  1325. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/component.d.ts +17 -0
  1326. package/node_modules/@playcanvas/pcui/react/types/components/TreeView/index.d.ts +359 -0
  1327. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/component.d.ts +13 -0
  1328. package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/index.d.ts +224 -0
  1329. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/component.d.ts +9 -0
  1330. package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/index.d.ts +176 -0
  1331. package/node_modules/@playcanvas/pcui/react/types/components/components.d.ts +30 -0
  1332. package/node_modules/@playcanvas/pcui/react/types/components/index.d.ts +32 -0
  1333. package/node_modules/@playcanvas/pcui/react/types/helpers/search.d.ts +31 -0
  1334. package/node_modules/@playcanvas/pcui/react/types/helpers/utils.d.ts +2 -0
  1335. package/node_modules/@playcanvas/pcui/react/types/index.d.ts +4 -0
  1336. package/node_modules/@playcanvas/pcui/styles/dist/index.mjs +11 -0
  1337. package/node_modules/@playcanvas/pcui/styles/package.json +17 -0
  1338. package/node_modules/@playcanvas/pcui/types/Math/color-value.d.ts +3 -0
  1339. package/node_modules/@playcanvas/pcui/types/binding/BindingBase/index.d.ts +178 -0
  1340. package/node_modules/@playcanvas/pcui/types/binding/BindingElementToObservers/index.d.ts +24 -0
  1341. package/node_modules/@playcanvas/pcui/types/binding/BindingObserversToElement/index.d.ts +40 -0
  1342. package/node_modules/@playcanvas/pcui/types/binding/BindingTwoWay/index.d.ts +54 -0
  1343. package/node_modules/@playcanvas/pcui/types/binding/index.d.ts +5 -0
  1344. package/node_modules/@playcanvas/pcui/types/class.d.ts +17 -0
  1345. package/node_modules/@playcanvas/pcui/types/components/ArrayInput/index.d.ts +140 -0
  1346. package/node_modules/@playcanvas/pcui/types/components/BooleanInput/index.d.ts +41 -0
  1347. package/node_modules/@playcanvas/pcui/types/components/Button/index.d.ts +75 -0
  1348. package/node_modules/@playcanvas/pcui/types/components/Canvas/index.d.ts +61 -0
  1349. package/node_modules/@playcanvas/pcui/types/components/Code/index.d.ts +33 -0
  1350. package/node_modules/@playcanvas/pcui/types/components/ColorPicker/index.d.ts +99 -0
  1351. package/node_modules/@playcanvas/pcui/types/components/Container/index.d.ts +292 -0
  1352. package/node_modules/@playcanvas/pcui/types/components/Divider/index.d.ts +13 -0
  1353. package/node_modules/@playcanvas/pcui/types/components/Element/index.d.ts +671 -0
  1354. package/node_modules/@playcanvas/pcui/types/components/GradientPicker/index.d.ts +152 -0
  1355. package/node_modules/@playcanvas/pcui/types/components/GridView/index.d.ts +103 -0
  1356. package/node_modules/@playcanvas/pcui/types/components/GridViewItem/index.d.ts +82 -0
  1357. package/node_modules/@playcanvas/pcui/types/components/InfoBox/index.d.ts +71 -0
  1358. package/node_modules/@playcanvas/pcui/types/components/InputElement/index.d.ts +84 -0
  1359. package/node_modules/@playcanvas/pcui/types/components/Label/index.d.ts +85 -0
  1360. package/node_modules/@playcanvas/pcui/types/components/LabelGroup/index.d.ts +62 -0
  1361. package/node_modules/@playcanvas/pcui/types/components/Menu/index.d.ts +70 -0
  1362. package/node_modules/@playcanvas/pcui/types/components/MenuItem/index.d.ts +139 -0
  1363. package/node_modules/@playcanvas/pcui/types/components/NumericInput/index.d.ts +173 -0
  1364. package/node_modules/@playcanvas/pcui/types/components/Overlay/index.d.ts +53 -0
  1365. package/node_modules/@playcanvas/pcui/types/components/Panel/index.d.ts +178 -0
  1366. package/node_modules/@playcanvas/pcui/types/components/Progress/index.d.ts +33 -0
  1367. package/node_modules/@playcanvas/pcui/types/components/RadioButton/index.d.ts +33 -0
  1368. package/node_modules/@playcanvas/pcui/types/components/SelectInput/index.d.ts +278 -0
  1369. package/node_modules/@playcanvas/pcui/types/components/SliderInput/index.d.ts +133 -0
  1370. package/node_modules/@playcanvas/pcui/types/components/Spinner/index.d.ts +27 -0
  1371. package/node_modules/@playcanvas/pcui/types/components/TextAreaInput/index.d.ts +24 -0
  1372. package/node_modules/@playcanvas/pcui/types/components/TextInput/index.d.ts +40 -0
  1373. package/node_modules/@playcanvas/pcui/types/components/TreeView/index.d.ts +359 -0
  1374. package/node_modules/@playcanvas/pcui/types/components/TreeViewItem/index.d.ts +224 -0
  1375. package/node_modules/@playcanvas/pcui/types/components/VectorInput/index.d.ts +176 -0
  1376. package/node_modules/@playcanvas/pcui/types/components/index.d.ts +32 -0
  1377. package/node_modules/@playcanvas/pcui/types/helpers/search.d.ts +31 -0
  1378. package/node_modules/@playcanvas/pcui/types/helpers/utils.d.ts +2 -0
  1379. package/node_modules/@playcanvas/pcui/types/index.d.ts +20 -0
  1380. package/node_modules/babylonjs-gltf2interface/babylon.glTF2Interface.d.ts +1655 -0
  1381. package/node_modules/babylonjs-gltf2interface/license.md +71 -0
  1382. package/node_modules/babylonjs-gltf2interface/package.json +26 -0
  1383. package/package.json +31 -19
  1384. package/dist/editor-plugin-hierarchy-command.d.ts +0 -19
  1385. package/dist/editor-plugin-hierarchy-command.d.ts.map +0 -1
  1386. package/dist/editor-plugin-hierarchy-command.js +0 -119
  1387. package/dist/editor-plugin-hierarchy-command.js.map +0 -1
  1388. package/node_modules/@babel/helper-string-parser/lib/index.js.map +0 -1
  1389. package/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +0 -1
  1390. package/node_modules/@babel/helper-validator-identifier/lib/index.js.map +0 -1
  1391. package/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +0 -1
  1392. package/node_modules/@babel/parser/lib/index.js.map +0 -1
  1393. package/node_modules/@babel/types/lib/asserts/assertNode.js.map +0 -1
  1394. package/node_modules/@babel/types/lib/asserts/generated/index.js.map +0 -1
  1395. package/node_modules/@babel/types/lib/ast-types/generated/index.js.map +0 -1
  1396. package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +0 -1
  1397. package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +0 -1
  1398. package/node_modules/@babel/types/lib/builders/generated/index.js.map +0 -1
  1399. package/node_modules/@babel/types/lib/builders/generated/lowercase.js.map +0 -1
  1400. package/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +0 -1
  1401. package/node_modules/@babel/types/lib/builders/productions.js.map +0 -1
  1402. package/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +0 -1
  1403. package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +0 -1
  1404. package/node_modules/@babel/types/lib/builders/validateNode.js.map +0 -1
  1405. package/node_modules/@babel/types/lib/clone/clone.js.map +0 -1
  1406. package/node_modules/@babel/types/lib/clone/cloneDeep.js.map +0 -1
  1407. package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +0 -1
  1408. package/node_modules/@babel/types/lib/clone/cloneNode.js.map +0 -1
  1409. package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +0 -1
  1410. package/node_modules/@babel/types/lib/comments/addComment.js.map +0 -1
  1411. package/node_modules/@babel/types/lib/comments/addComments.js.map +0 -1
  1412. package/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +0 -1
  1413. package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +0 -1
  1414. package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +0 -1
  1415. package/node_modules/@babel/types/lib/comments/inheritsComments.js.map +0 -1
  1416. package/node_modules/@babel/types/lib/comments/removeComments.js.map +0 -1
  1417. package/node_modules/@babel/types/lib/constants/generated/index.js.map +0 -1
  1418. package/node_modules/@babel/types/lib/constants/index.js.map +0 -1
  1419. package/node_modules/@babel/types/lib/converters/ensureBlock.js.map +0 -1
  1420. package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +0 -1
  1421. package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +0 -1
  1422. package/node_modules/@babel/types/lib/converters/toBlock.js.map +0 -1
  1423. package/node_modules/@babel/types/lib/converters/toComputedKey.js.map +0 -1
  1424. package/node_modules/@babel/types/lib/converters/toExpression.js.map +0 -1
  1425. package/node_modules/@babel/types/lib/converters/toIdentifier.js.map +0 -1
  1426. package/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +0 -1
  1427. package/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +0 -1
  1428. package/node_modules/@babel/types/lib/converters/toStatement.js.map +0 -1
  1429. package/node_modules/@babel/types/lib/converters/valueToNode.js.map +0 -1
  1430. package/node_modules/@babel/types/lib/definitions/core.js.map +0 -1
  1431. package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map +0 -1
  1432. package/node_modules/@babel/types/lib/definitions/experimental.js.map +0 -1
  1433. package/node_modules/@babel/types/lib/definitions/flow.js.map +0 -1
  1434. package/node_modules/@babel/types/lib/definitions/index.js.map +0 -1
  1435. package/node_modules/@babel/types/lib/definitions/jsx.js.map +0 -1
  1436. package/node_modules/@babel/types/lib/definitions/misc.js.map +0 -1
  1437. package/node_modules/@babel/types/lib/definitions/placeholders.js.map +0 -1
  1438. package/node_modules/@babel/types/lib/definitions/typescript.js.map +0 -1
  1439. package/node_modules/@babel/types/lib/definitions/utils.js.map +0 -1
  1440. package/node_modules/@babel/types/lib/index.js.map +0 -1
  1441. package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +0 -1
  1442. package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +0 -1
  1443. package/node_modules/@babel/types/lib/modifications/inherits.js.map +0 -1
  1444. package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +0 -1
  1445. package/node_modules/@babel/types/lib/modifications/removeProperties.js.map +0 -1
  1446. package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +0 -1
  1447. package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +0 -1
  1448. package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map +0 -1
  1449. package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +0 -1
  1450. package/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map +0 -1
  1451. package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +0 -1
  1452. package/node_modules/@babel/types/lib/traverse/traverse.js.map +0 -1
  1453. package/node_modules/@babel/types/lib/traverse/traverseFast.js.map +0 -1
  1454. package/node_modules/@babel/types/lib/utils/deprecationWarning.js.map +0 -1
  1455. package/node_modules/@babel/types/lib/utils/inherit.js.map +0 -1
  1456. package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +0 -1
  1457. package/node_modules/@babel/types/lib/utils/shallowEqual.js.map +0 -1
  1458. package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +0 -1
  1459. package/node_modules/@babel/types/lib/validators/generated/index.js.map +0 -1
  1460. package/node_modules/@babel/types/lib/validators/is.js.map +0 -1
  1461. package/node_modules/@babel/types/lib/validators/isBinding.js.map +0 -1
  1462. package/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +0 -1
  1463. package/node_modules/@babel/types/lib/validators/isImmutable.js.map +0 -1
  1464. package/node_modules/@babel/types/lib/validators/isLet.js.map +0 -1
  1465. package/node_modules/@babel/types/lib/validators/isNode.js.map +0 -1
  1466. package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +0 -1
  1467. package/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +0 -1
  1468. package/node_modules/@babel/types/lib/validators/isReferenced.js.map +0 -1
  1469. package/node_modules/@babel/types/lib/validators/isScope.js.map +0 -1
  1470. package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +0 -1
  1471. package/node_modules/@babel/types/lib/validators/isType.js.map +0 -1
  1472. package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +0 -1
  1473. package/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +0 -1
  1474. package/node_modules/@babel/types/lib/validators/isVar.js.map +0 -1
  1475. package/node_modules/@babel/types/lib/validators/matchesPattern.js.map +0 -1
  1476. package/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +0 -1
  1477. package/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +0 -1
  1478. package/node_modules/@babel/types/lib/validators/validate.js.map +0 -1
  1479. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +0 -37
  1480. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +0 -1
  1481. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +0 -451
  1482. package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +0 -1
  1483. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts +0 -49
  1484. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +0 -1
  1485. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +0 -627
  1486. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +0 -1
  1487. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts +0 -52
  1488. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +0 -1
  1489. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +0 -450
  1490. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +0 -1
  1491. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +0 -21
  1492. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +0 -1
  1493. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +0 -75
  1494. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +0 -1
  1495. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts +0 -7
  1496. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts.map +0 -1
  1497. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js +0 -186
  1498. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js.map +0 -1
  1499. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +0 -5
  1500. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +0 -1
  1501. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +0 -98
  1502. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +0 -1
  1503. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +0 -63
  1504. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +0 -1
  1505. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +0 -301
  1506. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +0 -1
@@ -1,10 +1,54 @@
1
+ import { createEditorUiBooleanControl, createEditorUiButton, createEditorUiColorControl, createEditorUiExpandableReadonlyControl, createEditorUiNumberControl, createEditorUiReadonlyControl, createEditorUiSection, createEditorUiSelectControl, createEditorUiTextControl, createEditorUiVectorControl, } from '@fps-games/editor-ui';
1
2
  import { createLocalEditorIcon, isLocalEditorIconName, } from './local-editor-ui-icons.js';
2
- import { createBadge, createAssetList, createDockTab, createEditorInputStyle, createEmptyState, createListItemBlock, createPanelHeader, createPropertyRow, createToolbarButton, createTreeView, createTreeViewItem, } from './local-editor-ui-primitives.js';
3
+ import { createBadge, createAssetList, createDockTab, createEditorInputStyle, createEmptyState, createListItemBlock, createPanelHeader, createPropertyRow, createToolbarButton, } from './local-editor-ui-primitives.js';
3
4
  import { configureLocalEditorDockPanelContent, createLocalEditorDockPanelViewport, renderLocalEditorDockTabStrip, } from './local-editor-ui-dock-panel.js';
4
5
  import { clearElement, createButton, toTitle } from './local-editor-ui-shared.js';
5
6
  import { resolveLocalEditorAssetBrowserTab, resolveLocalEditorBrowserAssetKind, } from './local-editor-ui-asset-kind.js';
7
+ import { createLocalEditorAssetFilesystemSnapshot, filterLocalEditorAssetFilesystemEntries, resolveLocalEditorAssetFilesystemBreadcrumbs, resolveLocalEditorAssetFilesystemEntryTab, resolveLocalEditorAssetFilesystemExistingFolderPath, resolveLocalEditorAssetFilesystemParentPath, resolveLocalEditorAssetFilesystemVisibleFolders, resolveLocalEditorProjectMediaThumbnailCacheKey, resolveLocalEditorProjectMediaThumbnailKind, } from './local-editor-asset-filesystem.js';
6
8
  import { createLocalEditorBrowserInspectorVectorCopyPayload, } from './local-editor-inspector-clipboard.js';
7
- import { resolveLocalEditorBrowserInspectorVectorGroupPathFromProperties, } from './local-editor-inspector-groups.js';
9
+ import { resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath, resolveLocalEditorBrowserInspectorVectorGroupPathFromProperties, } from './local-editor-inspector-groups.js';
10
+ const inspectorUiMounts = new WeakMap();
11
+ const inspectorPanelUiPendingDisposals = new WeakMap();
12
+ export function registerInspectorUiMount(mount) {
13
+ mount.element.dataset.editorUiMount = 'inspector';
14
+ inspectorUiMounts.set(mount.element, mount);
15
+ return mount;
16
+ }
17
+ export function disposeInspectorPanelUi(panel) {
18
+ if (typeof panel.querySelectorAll !== 'function')
19
+ return;
20
+ let pending = inspectorPanelUiPendingDisposals.get(panel);
21
+ if (!pending) {
22
+ pending = new Map();
23
+ inspectorPanelUiPendingDisposals.set(panel, pending);
24
+ }
25
+ for (const root of panel.querySelectorAll('[data-editor-ui-mount="inspector"]')) {
26
+ const mount = inspectorUiMounts.get(root);
27
+ if (mount)
28
+ pending.set(root, mount);
29
+ }
30
+ const failures = [];
31
+ // DOM order registers a section before its nested controls. Reverse order
32
+ // disposes children first; the panel-owned pending registry keeps a failed
33
+ // child reachable even if a later parent disposal removes its DOM subtree.
34
+ for (const [root, mount] of Array.from(pending.entries()).reverse()) {
35
+ try {
36
+ mount.dispose();
37
+ inspectorUiMounts.delete(root);
38
+ pending.delete(root);
39
+ }
40
+ catch (error) {
41
+ failures.push(error);
42
+ }
43
+ }
44
+ if (pending.size === 0)
45
+ inspectorPanelUiPendingDisposals.delete(panel);
46
+ if (failures.length > 0) {
47
+ const error = new Error('Failed to dispose one or more Inspector UI mounts.');
48
+ error.causes = failures;
49
+ throw error;
50
+ }
51
+ }
8
52
  const BOTTOM_DOCK_TAB_ICONS = {
9
53
  assets: 'asset',
10
54
  history: 'history',
@@ -24,65 +68,8 @@ const ASSET_BROWSER_TABS = [
24
68
  { id: 'prefabs', label: '预制体', title: '显示预制体资产' },
25
69
  { id: 'materials', label: '材质', title: '显示项目材质资产' },
26
70
  { id: 'textures', label: '贴图', title: '显示贴图资产' },
71
+ { id: 'audio', label: '音频', title: '显示音频资产' },
27
72
  ];
28
- export function renderHierarchyPanel(doc, panel, state, rename, drop) {
29
- clearElement(panel);
30
- const createGroupButton = createToolbarButton(doc, '+ Empty', 'object');
31
- createGroupButton.dataset.editorHierarchyCreateGroup = 'true';
32
- createGroupButton.style.padding = '3px 7px';
33
- createGroupButton.style.fontSize = '11px';
34
- const createMarkerButton = createToolbarButton(doc, '+ Marker', 'view-overlay');
35
- createMarkerButton.dataset.editorHierarchyCreateMarker = 'true';
36
- createMarkerButton.style.padding = '3px 7px';
37
- createMarkerButton.style.fontSize = '11px';
38
- panel.appendChild(createPanelHeader(doc, 'Hierarchy', [createGroupButton, createMarkerButton], 'hierarchy'));
39
- const list = createTreeView(doc);
40
- for (const item of state.hierarchy) {
41
- const isRenaming = rename?.id === item.id;
42
- const selected = state.selectedIds.includes(item.id);
43
- const active = state.activeId === item.id;
44
- const dropPlacement = drop?.targetId === item.id ? drop.placement : null;
45
- const button = createTreeViewItem(doc, {
46
- id: item.id,
47
- label: item.label,
48
- depth: item.depth,
49
- selected,
50
- active,
51
- locked: item.locked,
52
- selectable: item.selectable,
53
- draggable: item.draggable,
54
- dropPlacement,
55
- });
56
- if (isRenaming) {
57
- const input = doc.createElement('input');
58
- input.dataset.editorHierarchyRenameInput = item.id;
59
- input.value = rename.value;
60
- input.style.cssText = [
61
- 'width:100%',
62
- 'height:22px',
63
- 'box-sizing:border-box',
64
- 'border:1px solid var(--fps-editor-accent-strong)',
65
- 'border-radius:2px',
66
- 'background:var(--fps-editor-field)',
67
- 'color:var(--fps-editor-text-strong)',
68
- 'font-size:12px',
69
- 'font-weight:700',
70
- 'padding:2px 5px',
71
- 'outline:none',
72
- ].join(';');
73
- button.appendChild(input);
74
- setTimeout(() => {
75
- input.focus();
76
- input.select();
77
- }, 0);
78
- }
79
- else {
80
- button.textContent = item.locked ? `${item.label} [locked]` : item.label;
81
- }
82
- list.appendChild(button);
83
- }
84
- panel.appendChild(list);
85
- }
86
73
  export function renderBottomDockPanel(doc, panel, state, activeTab, activeAssetBrowserTab = 'all') {
87
74
  clearElement(panel);
88
75
  appendDockTabs(doc, panel, activeTab);
@@ -91,7 +78,7 @@ export function renderBottomDockPanel(doc, panel, state, activeTab, activeAssetB
91
78
  else
92
79
  renderAssetBrowserContent(doc, panel, state, 'list', activeAssetBrowserTab);
93
80
  }
94
- export function renderWorkbenchBottomDockPanel(doc, panel, state, activeTab, panels = [], activeAssetBrowserTab = 'all') {
81
+ export function renderWorkbenchBottomDockPanel(doc, panel, state, activeTab, panels = [], activeAssetBrowserTab = 'all', assetBrowserView = {}) {
95
82
  clearElement(panel);
96
83
  const tabHeader = doc.createElement('div');
97
84
  renderLocalEditorDockTabStrip(doc, {
@@ -112,10 +99,21 @@ export function renderWorkbenchBottomDockPanel(doc, panel, state, activeTab, pan
112
99
  content.dataset.editorPanelId = activeTab;
113
100
  content.style.cssText = 'flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:8px';
114
101
  panel.appendChild(content);
115
- if (activeTab === 'history')
102
+ if (activeTab === 'history') {
103
+ delete panel.dataset.editorAssetBrowserFolderPath;
116
104
  renderHistoryPanel(doc, content, state.session?.history ?? null);
105
+ }
106
+ else {
107
+ renderAssetBrowserContent(doc, content, state, assetBrowserView.viewMode ?? 'grid', activeAssetBrowserTab, assetBrowserView.folderPath ?? '/', assetBrowserView.selectedEntryPath ?? null, assetBrowserView.expandedFolderPaths ?? new Set(['/']));
108
+ syncLocalEditorAssetBrowserEffectiveFolderPath(panel, content);
109
+ }
110
+ }
111
+ export function syncLocalEditorAssetBrowserEffectiveFolderPath(panel, content) {
112
+ const effectiveFolderPath = content.dataset.editorAssetBrowserFolderPath;
113
+ if (effectiveFolderPath === undefined)
114
+ delete panel.dataset.editorAssetBrowserFolderPath;
117
115
  else
118
- renderAssetBrowserContent(doc, content, state, 'grid', activeAssetBrowserTab);
116
+ panel.dataset.editorAssetBrowserFolderPath = effectiveFolderPath;
119
117
  }
120
118
  function appendDockTabs(doc, panel, activeTab) {
121
119
  const tabs = doc.createElement('div');
@@ -184,6 +182,15 @@ export function renderMarkerPanel(doc, panel, state) {
184
182
  viewport.appendChild(list);
185
183
  panel.appendChild(viewport);
186
184
  }
185
+ export function shouldShowPrefabModelAddAction(state, asset) {
186
+ return state.mode === 'editor'
187
+ && state.busy !== true
188
+ && !!state.prefabStage
189
+ && state.prefabStage.readonly !== true
190
+ && resolveLocalEditorBrowserAssetKind(asset) === 'model'
191
+ && asset.placeable !== false
192
+ && asset.disabled !== true;
193
+ }
187
194
  export function renderWorkbenchLeftDockTabs(doc, panel, activeTab, panels = []) {
188
195
  renderLocalEditorDockTabStrip(doc, {
189
196
  activeId: activeTab,
@@ -673,7 +680,8 @@ function createMarkerTypeTextarea(doc, prefix, field, value) {
673
680
  ].join(';');
674
681
  return input;
675
682
  }
676
- export function renderRenderingPanel(doc, panel, state) {
683
+ export function renderRenderingPanel(doc, panel, state, options = {}) {
684
+ disposeInspectorPanelUi(panel);
677
685
  clearElement(panel);
678
686
  configureLocalEditorDockPanelContent(panel);
679
687
  const rendering = state.renderingPanel ?? null;
@@ -723,7 +731,7 @@ export function renderRenderingPanel(doc, panel, state) {
723
731
  panel.appendChild(summary);
724
732
  }
725
733
  for (const section of rendering.sections) {
726
- viewport.appendChild(createRenderingSectionBlock(doc, section));
734
+ viewport.appendChild(createRenderingSectionBlock(doc, section, options.layerHost));
727
735
  }
728
736
  panel.appendChild(viewport);
729
737
  }
@@ -779,7 +787,7 @@ function tabHeaderButtonStyle(button) {
779
787
  button.style.borderRadius = '0';
780
788
  button.style.minWidth = '0';
781
789
  }
782
- function createRenderingSectionBlock(doc, section) {
790
+ function createRenderingSectionBlock(doc, section, layerHost) {
783
791
  const isListLayout = section.layout === 'list';
784
792
  const systemGroups = groupRenderingSystems(section.systems);
785
793
  const hasSystemGroups = systemGroups.some(group => group.group);
@@ -840,11 +848,11 @@ function createRenderingSectionBlock(doc, section) {
840
848
  ].join(';');
841
849
  for (const group of systemGroups) {
842
850
  if (group.group) {
843
- list.appendChild(createRenderingSystemGroupBlock(doc, section.id, group.group, group.systems, section.layout, section.systemsCollapsible === true));
851
+ list.appendChild(createRenderingSystemGroupBlock(doc, section.id, group.group, group.systems, section.layout, section.systemsCollapsible === true, layerHost));
844
852
  continue;
845
853
  }
846
854
  for (const system of group.systems) {
847
- list.appendChild(createRenderingSystemBlock(doc, section.id, system, section.layout, section.systemsCollapsible === true));
855
+ list.appendChild(createRenderingSystemBlock(doc, section.id, system, section.layout, section.systemsCollapsible === true, layerHost));
848
856
  }
849
857
  }
850
858
  content.appendChild(list);
@@ -865,7 +873,7 @@ function groupRenderingSystems(systems) {
865
873
  }
866
874
  return groups;
867
875
  }
868
- function createRenderingSystemGroupBlock(doc, sectionId, group, systems, layout = 'cards', systemsCollapsible = false) {
876
+ function createRenderingSystemGroupBlock(doc, sectionId, group, systems, layout = 'cards', systemsCollapsible = false, layerHost) {
869
877
  const isListLayout = layout === 'list';
870
878
  const block = doc.createElement('section');
871
879
  block.dataset.editorRenderingSystemGroup = group.id;
@@ -925,7 +933,7 @@ function createRenderingSystemGroupBlock(doc, sectionId, group, systems, layout
925
933
  isListLayout ? '' : 'padding:8px',
926
934
  ].filter(Boolean).join(';');
927
935
  systems.forEach((system, index) => {
928
- const systemBlock = createRenderingSystemBlock(doc, sectionId, system, layout, systemsCollapsible);
936
+ const systemBlock = createRenderingSystemBlock(doc, sectionId, system, layout, systemsCollapsible, layerHost);
929
937
  if (isListLayout && index === systems.length - 1)
930
938
  systemBlock.style.borderBottom = '0';
931
939
  body.appendChild(systemBlock);
@@ -942,7 +950,7 @@ function getRenderingSystemGroupAccent(groupId) {
942
950
  return 'var(--fps-editor-warn)';
943
951
  return 'var(--fps-editor-muted)';
944
952
  }
945
- function createRenderingSystemBlock(doc, sectionId, system, layout = 'cards', collapsible = false) {
953
+ function createRenderingSystemBlock(doc, sectionId, system, layout = 'cards', collapsible = false, layerHost) {
946
954
  const isListLayout = layout === 'list';
947
955
  const block = collapsible ? doc.createElement('details') : createListItemBlock(doc);
948
956
  block.dataset.editorRenderingSystem = system.id;
@@ -1045,7 +1053,7 @@ function createRenderingSystemBlock(doc, sectionId, system, layout = 'cards', co
1045
1053
  ] : []),
1046
1054
  ].join(';');
1047
1055
  for (const property of system.properties) {
1048
- propertyGrid.appendChild(createRenderingPropertyRow(doc, sectionId, system.id, property, system.readOnly === true));
1056
+ propertyGrid.appendChild(createRenderingPropertyRow(doc, sectionId, system.id, property, system.readOnly === true, layerHost));
1049
1057
  }
1050
1058
  block.appendChild(propertyGrid);
1051
1059
  return block;
@@ -1168,9 +1176,9 @@ function createRenderingDisclosureIcon(doc, block, id, datasetKey) {
1168
1176
  syncDisclosureIcon();
1169
1177
  return disclosure;
1170
1178
  }
1171
- function createRenderingPropertyRow(doc, sectionId, systemId, property, systemReadOnly) {
1179
+ function createRenderingPropertyRow(doc, sectionId, systemId, property, systemReadOnly, layerHost) {
1172
1180
  const inspectorProperty = createInspectorPropertyFromRenderingProperty(property, systemReadOnly);
1173
- let control = createRenderingPropertyControl(doc, sectionId, systemId, property, inspectorProperty);
1181
+ let control = createRenderingPropertyControl(doc, sectionId, systemId, property, inspectorProperty, layerHost);
1174
1182
  if (property.actions?.length) {
1175
1183
  const controlWithActions = doc.createElement('div');
1176
1184
  controlWithActions.style.cssText = 'display:flex;align-items:center;gap:5px;min-width:0';
@@ -1199,7 +1207,7 @@ function createRenderingPropertyRow(doc, sectionId, systemId, property, systemRe
1199
1207
  label.style.cssText = createInspectorPropertyLabelStyle(access, effect);
1200
1208
  return row;
1201
1209
  }
1202
- function createRenderingPropertyControl(doc, sectionId, systemId, property, inspectorProperty) {
1210
+ function createRenderingPropertyControl(doc, sectionId, systemId, property, inspectorProperty, layerHost) {
1203
1211
  const target = createRenderingInspectorTarget(systemId);
1204
1212
  if (isInspectorPropertyEditable(inspectorProperty) && property.control === 'string-list') {
1205
1213
  return createRenderingStringListControl(doc, sectionId, systemId, property, inspectorProperty);
@@ -1210,7 +1218,7 @@ function createRenderingPropertyControl(doc, sectionId, systemId, property, insp
1210
1218
  input.dataset.renderingEditSource = 'asset';
1211
1219
  });
1212
1220
  }
1213
- let control = renderInspectorControl(doc, builtinInspectorControlRegistrations, target, inspectorProperty);
1221
+ let control = renderInspectorControl(doc, createLocalEditorBrowserInspectorControlRegistry([], 'error', layerHost), target, inspectorProperty);
1214
1222
  bindRenderedInspectorControlsToRendering(control, sectionId, systemId, property);
1215
1223
  if (property.unit && isInspectorPropertyEditable(inspectorProperty) && property.control === 'number') {
1216
1224
  const wrapper = doc.createElement('div');
@@ -1316,124 +1324,367 @@ function createHeadingLabel(doc, text) {
1316
1324
  label.style.cssText = 'min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
1317
1325
  return label;
1318
1326
  }
1319
- function renderAssetBrowserContent(doc, panel, state, variant = 'list', activeTab = 'all') {
1327
+ function renderAssetBrowserContent(doc, panel, state, variant = 'list', activeTab = 'all', requestedFolderPath = '/', selectedEntryPath = null, expandedFolderPaths = new Set(['/'])) {
1320
1328
  configureLocalEditorDockPanelContent(panel);
1321
- const title = doc.createElement('h2');
1322
- title.style.cssText = 'display:flex;align-items:center;gap:6px;font-size:13px;margin:0 0 8px;font-weight:800;color:var(--fps-editor-text-strong)';
1323
- title.appendChild(createLocalEditorIcon(doc, 'asset'));
1324
- title.appendChild(createHeadingLabel(doc, '资产浏览器'));
1325
- panel.appendChild(title);
1326
- appendAssetBrowserTabs(doc, panel, state, activeTab);
1327
- if (activeTab === 'materials') {
1328
- const createMaterialButton = createToolbarButton(doc, '+ 材质', 'asset');
1329
+ panel.classList.add('fps-editor-ui-asset-filesystem');
1330
+ const snapshot = createLocalEditorAssetFilesystemSnapshot(state.assets, state.projectFiles);
1331
+ const folderPath = resolveLocalEditorAssetFilesystemExistingFolderPath(snapshot, requestedFolderPath);
1332
+ panel.dataset.editorAssetBrowserFolderPath = folderPath;
1333
+ const toolbar = doc.createElement('div');
1334
+ toolbar.className = 'fps-editor-ui-asset-toolbar';
1335
+ const toolbarPrimary = doc.createElement('div');
1336
+ toolbarPrimary.className = 'fps-editor-ui-asset-toolbar-group';
1337
+ if (folderPath === '/@editor/materials' || activeTab === 'materials') {
1338
+ const createMaterialButton = createToolbarButton(doc, '', 'plus');
1329
1339
  createMaterialButton.dataset.editorCreateMaterialAsset = 'true';
1330
1340
  createMaterialButton.title = '新建项目材质';
1331
- createMaterialButton.style.cssText = [
1332
- 'height:28px',
1333
- 'margin:0 0 8px',
1334
- 'padding:0 10px',
1335
- 'font-size:12px',
1336
- 'font-weight:800',
1337
- 'align-self:flex-start',
1338
- ].join(';');
1339
- panel.appendChild(createMaterialButton);
1341
+ createMaterialButton.setAttribute('aria-label', createMaterialButton.title);
1342
+ createMaterialButton.dataset.editorAssetToolbarIcon = 'true';
1343
+ toolbarPrimary.appendChild(createMaterialButton);
1340
1344
  }
1345
+ const parentFolderPath = resolveLocalEditorAssetFilesystemParentPath(snapshot, folderPath);
1346
+ const parentButton = createToolbarButton(doc, '', 'arrow-up');
1347
+ parentButton.dataset.editorAssetBrowserParent = 'true';
1348
+ parentButton.dataset.editorAssetToolbarIcon = 'true';
1349
+ parentButton.title = parentFolderPath ? '返回上一级目录' : '已位于项目根目录';
1350
+ parentButton.setAttribute('aria-label', parentButton.title);
1351
+ parentButton.disabled = !parentFolderPath;
1352
+ if (parentFolderPath)
1353
+ parentButton.dataset.editorAssetFolderPath = parentFolderPath;
1354
+ toolbarPrimary.appendChild(parentButton);
1355
+ const refreshButton = createToolbarButton(doc, '', 'refresh');
1356
+ refreshButton.dataset.editorAssetBrowserRefresh = 'true';
1357
+ refreshButton.dataset.editorAssetToolbarIcon = 'true';
1358
+ refreshButton.title = '刷新项目文件与资产';
1359
+ refreshButton.setAttribute('aria-label', refreshButton.title);
1360
+ toolbarPrimary.appendChild(refreshButton);
1361
+ const gridButton = createToolbarButton(doc, '', 'grid');
1362
+ gridButton.dataset.editorAssetViewMode = 'grid';
1363
+ gridButton.dataset.active = variant === 'grid' ? 'true' : 'false';
1364
+ gridButton.dataset.editorAssetToolbarIcon = 'true';
1365
+ gridButton.title = '网格视图';
1366
+ gridButton.setAttribute('aria-label', gridButton.title);
1367
+ gridButton.setAttribute('aria-pressed', variant === 'grid' ? 'true' : 'false');
1368
+ const listButton = createToolbarButton(doc, '', 'list');
1369
+ listButton.dataset.editorAssetViewMode = 'list';
1370
+ listButton.dataset.active = variant === 'list' ? 'true' : 'false';
1371
+ listButton.dataset.editorAssetToolbarIcon = 'true';
1372
+ listButton.title = '列表视图';
1373
+ listButton.setAttribute('aria-label', listButton.title);
1374
+ listButton.setAttribute('aria-pressed', variant === 'list' ? 'true' : 'false');
1375
+ toolbarPrimary.append(gridButton, listButton);
1376
+ toolbar.appendChild(toolbarPrimary);
1377
+ const typeFilter = doc.createElement('select');
1378
+ typeFilter.className = 'fps-editor-ui-asset-type-filter';
1379
+ typeFilter.dataset.editorAssetBrowserTypeFilter = 'true';
1380
+ typeFilter.title = '按资产类型筛选';
1381
+ for (const tab of ASSET_BROWSER_TABS) {
1382
+ const option = doc.createElement('option');
1383
+ option.value = tab.id;
1384
+ const itemCount = snapshot.entries.filter(entry => (entry.kind !== 'directory'
1385
+ && (tab.id === 'all' || resolveLocalEditorAssetFilesystemEntryTab(entry) === tab.id))).length;
1386
+ option.textContent = tab.label;
1387
+ option.title = resolveLocalEditorAssetBrowserTypeOptionTitle(tab.title, itemCount, snapshot.truncated);
1388
+ typeFilter.appendChild(option);
1389
+ }
1390
+ typeFilter.value = activeTab;
1391
+ toolbar.appendChild(typeFilter);
1392
+ const search = doc.createElement('div');
1393
+ search.className = 'fps-editor-ui-asset-search';
1341
1394
  const filter = doc.createElement('input');
1395
+ filter.className = 'fps-editor-ui-search';
1342
1396
  filter.type = 'search';
1343
- filter.placeholder = '筛选资产';
1397
+ filter.placeholder = '搜索文件和资产';
1344
1398
  filter.value = state.assetFilter;
1345
1399
  filter.dataset.editorAssetFilter = 'true';
1346
- filter.style.cssText = [
1347
- 'width:100%',
1348
- 'height:28px',
1349
- 'border:1px solid var(--fps-editor-border)',
1350
- 'border-radius:3px',
1351
- 'background:var(--fps-editor-field)',
1352
- 'color:var(--fps-editor-text)',
1353
- 'font-size:12px',
1354
- 'padding:0 8px',
1355
- 'margin:0 0 8px',
1356
- ].join(';');
1357
- panel.appendChild(filter);
1358
- const tabAssets = filterAssetsByBrowserTab(state.assets, activeTab);
1400
+ const searchIcon = createLocalEditorIcon(doc, 'search', { size: 16 });
1401
+ searchIcon.classList.add('fps-editor-ui-asset-search-icon');
1402
+ const clearFilterButton = createToolbarButton(doc, '', 'close');
1403
+ clearFilterButton.dataset.editorAssetFilterClear = 'true';
1404
+ clearFilterButton.dataset.editorAssetToolbarIcon = 'true';
1405
+ clearFilterButton.title = '清除搜索';
1406
+ clearFilterButton.setAttribute('aria-label', clearFilterButton.title);
1407
+ clearFilterButton.hidden = state.assetFilter.length === 0;
1408
+ search.append(searchIcon, filter, clearFilterButton);
1409
+ toolbar.appendChild(search);
1410
+ panel.appendChild(toolbar);
1359
1411
  const normalizedFilter = state.assetFilter.trim().toLowerCase();
1360
- const filteredAssets = tabAssets
1361
- .filter((asset) => {
1412
+ const typeFilterActive = activeTab !== 'all';
1413
+ const recursiveFilterActive = normalizedFilter.length > 0 || typeFilterActive;
1414
+ const folderEntries = filterLocalEditorAssetFilesystemEntries(snapshot, folderPath, recursiveFilterActive, activeTab);
1415
+ const matchingEntries = folderEntries.filter((entry) => {
1362
1416
  if (!normalizedFilter)
1363
1417
  return true;
1418
+ const asset = entry.asset;
1364
1419
  return [
1365
- asset.id,
1366
- asset.assetId ?? '',
1367
- asset.guid ?? '',
1368
- asset.kind ?? '',
1369
- asset.label,
1370
- asset.meta ?? '',
1371
- asset.external?.platformAssetId ?? '',
1372
- asset.external?.assetPath ?? '',
1373
- asset.external?.assetUrl ?? '',
1420
+ entry.label,
1421
+ entry.path,
1422
+ entry.extension ?? '',
1423
+ asset?.id ?? '',
1424
+ asset?.assetId ?? '',
1425
+ asset?.guid ?? '',
1426
+ asset?.label ?? '',
1427
+ asset?.kind ?? '',
1428
+ asset?.relativePath ?? '',
1429
+ asset?.meta ?? '',
1430
+ asset?.external?.platformAssetId ?? '',
1431
+ asset?.external?.assetPath ?? '',
1432
+ asset?.external?.assetUrl ?? '',
1374
1433
  ]
1375
1434
  .some(value => value.toLowerCase().includes(normalizedFilter));
1376
- })
1377
- .slice(0, 80);
1435
+ });
1436
+ const filteredEntries = matchingEntries.slice(0, 200);
1437
+ const resultLimited = matchingEntries.length > filteredEntries.length;
1438
+ const body = doc.createElement('div');
1439
+ body.className = 'fps-editor-ui-asset-filesystem-body';
1440
+ const tree = doc.createElement('aside');
1441
+ tree.className = 'fps-editor-ui-asset-folder-tree';
1442
+ tree.setAttribute('aria-label', '资产目录');
1443
+ const visibleFolders = resolveLocalEditorAssetFilesystemVisibleFolders(snapshot, expandedFolderPaths);
1444
+ for (const folder of visibleFolders) {
1445
+ const hasChildFolders = snapshot.folders.some(candidate => candidate.parentPath === folder.path);
1446
+ const expanded = expandedFolderPaths.has(folder.path);
1447
+ const row = doc.createElement('div');
1448
+ row.className = 'fps-editor-ui-asset-folder-tree-row';
1449
+ row.style.setProperty('--fps-editor-asset-folder-depth', String(folder.depth));
1450
+ const toggle = doc.createElement('button');
1451
+ toggle.type = 'button';
1452
+ toggle.className = 'fps-editor-ui-asset-folder-toggle';
1453
+ toggle.dataset.editorAssetFolderToggle = folder.path;
1454
+ toggle.disabled = !hasChildFolders;
1455
+ toggle.title = hasChildFolders
1456
+ ? `${expanded ? '折叠' : '展开'} ${folder.path === '/' ? snapshot.rootName : folder.label}`
1457
+ : '';
1458
+ toggle.setAttribute('aria-label', toggle.title || `${folder.label} 无子目录`);
1459
+ toggle.setAttribute('aria-expanded', hasChildFolders ? String(expanded) : 'false');
1460
+ if (hasChildFolders) {
1461
+ toggle.appendChild(createLocalEditorIcon(doc, expanded ? 'chevron-down' : 'chevron-right', { size: 13 }));
1462
+ }
1463
+ const button = doc.createElement('button');
1464
+ button.type = 'button';
1465
+ button.className = 'fps-editor-ui-asset-folder-row';
1466
+ button.dataset.editorAssetFolderPath = folder.path;
1467
+ button.dataset.editorAssetFolderTreePath = folder.path;
1468
+ button.dataset.selected = folder.path === folderPath ? 'true' : 'false';
1469
+ button.appendChild(createLocalEditorIcon(doc, folder.path === '/' ? 'root' : 'folder', { size: 15 }));
1470
+ const label = doc.createElement('span');
1471
+ label.className = 'fps-editor-ui-ellipsis';
1472
+ label.textContent = folder.path === '/' ? snapshot.rootName : folder.label;
1473
+ button.title = resolveLocalEditorAssetBrowserFolderTitle(label.textContent, folder.descendantItemCount, snapshot.truncated);
1474
+ button.append(label);
1475
+ row.append(toggle, button);
1476
+ tree.appendChild(row);
1477
+ }
1478
+ body.appendChild(tree);
1479
+ const browser = doc.createElement('section');
1480
+ browser.className = 'fps-editor-ui-asset-browser';
1481
+ const summary = doc.createElement('div');
1482
+ summary.className = 'fps-editor-ui-asset-browser-summary';
1483
+ const breadcrumb = doc.createElement('nav');
1484
+ breadcrumb.className = 'fps-editor-ui-asset-breadcrumb';
1485
+ breadcrumb.setAttribute('aria-label', '当前项目路径');
1486
+ const breadcrumbs = resolveLocalEditorAssetFilesystemBreadcrumbs(snapshot, folderPath);
1487
+ breadcrumbs.forEach((item, index) => {
1488
+ if (index > 0) {
1489
+ const separator = doc.createElement('span');
1490
+ separator.className = 'fps-editor-ui-asset-breadcrumb-separator';
1491
+ separator.textContent = '/';
1492
+ breadcrumb.appendChild(separator);
1493
+ }
1494
+ if (index === breadcrumbs.length - 1) {
1495
+ const current = doc.createElement('span');
1496
+ current.className = 'fps-editor-ui-asset-breadcrumb-current fps-editor-ui-ellipsis';
1497
+ current.textContent = item.label;
1498
+ current.title = item.path;
1499
+ current.setAttribute('aria-current', 'page');
1500
+ breadcrumb.appendChild(current);
1501
+ return;
1502
+ }
1503
+ const segment = doc.createElement('button');
1504
+ segment.type = 'button';
1505
+ segment.className = 'fps-editor-ui-asset-breadcrumb-button fps-editor-ui-ellipsis';
1506
+ segment.dataset.editorAssetFolderPath = item.path;
1507
+ segment.textContent = item.label;
1508
+ segment.title = item.path;
1509
+ breadcrumb.appendChild(segment);
1510
+ });
1378
1511
  const count = doc.createElement('div');
1379
- const activeTabLabel = ASSET_BROWSER_TABS.find(tab => tab.id === activeTab)?.label ?? '资产';
1380
- count.textContent = activeTab === 'all' && state.assetCountLabel
1381
- ? `${filteredAssets.length} / ${state.assetCountLabel}`
1382
- : `${filteredAssets.length} / ${tabAssets.length} 个${activeTabLabel}资产`;
1383
- count.style.cssText = 'color:var(--fps-editor-muted);font-size:11px;margin-bottom:6px';
1384
- panel.appendChild(count);
1512
+ count.className = 'fps-editor-ui-asset-count';
1513
+ count.textContent = resolveLocalEditorAssetBrowserCountLabel({
1514
+ matchingCount: matchingEntries.length,
1515
+ normalizedFilter,
1516
+ resultLimited,
1517
+ truncated: snapshot.truncated,
1518
+ typeLabel: typeFilterActive
1519
+ ? ASSET_BROWSER_TABS.find(tab => tab.id === activeTab)?.label ?? ''
1520
+ : null,
1521
+ visibleCount: filteredEntries.length,
1522
+ });
1523
+ summary.append(breadcrumb, count);
1524
+ browser.appendChild(summary);
1385
1525
  const list = createAssetList(doc, variant === 'grid');
1386
1526
  list.dataset.editorAssetBrowserList = 'true';
1527
+ list.dataset.searchActive = recursiveFilterActive ? 'true' : 'false';
1387
1528
  list.style.overflow = 'visible';
1529
+ list.style.maxHeight = 'none';
1388
1530
  list.style.paddingRight = '0';
1389
- for (const asset of filteredAssets) {
1531
+ for (const entry of filteredEntries) {
1532
+ if (entry.kind === 'directory') {
1533
+ list.appendChild(createProjectFilesystemEntryButton(doc, entry, variant, selectedEntryPath === entry.path, recursiveFilterActive ? entry.parentPath : undefined));
1534
+ continue;
1535
+ }
1536
+ const asset = entry.asset;
1537
+ if (!asset) {
1538
+ list.appendChild(createProjectFilesystemEntryButton(doc, entry, variant, selectedEntryPath === entry.path, recursiveFilterActive ? entry.parentPath : undefined));
1539
+ continue;
1540
+ }
1390
1541
  const selected = state.selectedAssetId === asset.id;
1391
1542
  const hasPreview = !!asset.preview;
1392
1543
  const button = doc.createElement('button');
1544
+ button.className = 'fps-editor-ui-asset-card';
1393
1545
  button.type = 'button';
1394
1546
  button.dataset.editorAssetId = asset.id;
1547
+ button.dataset.editorProjectFilePath = entry.path;
1395
1548
  button.disabled = asset.disabled ?? false;
1396
1549
  button.setAttribute('aria-selected', selected ? 'true' : 'false');
1397
- button.style.cssText = [
1398
- 'width:100%',
1399
- `min-height:${variant === 'grid' ? (hasPreview ? '66px' : '48px') : (hasPreview ? '38px' : '32px')}`,
1400
- 'text-align:left',
1401
- `padding:${hasPreview ? '7px 8px' : '6px 8px'}`,
1402
- `border:1px solid ${selected ? 'var(--fps-editor-accent-strong)' : 'var(--fps-editor-border)'}`,
1403
- 'border-radius:3px',
1404
- `background:${selected ? 'var(--fps-editor-accent-soft)' : 'var(--fps-editor-asset-card-bg)'}`,
1405
- 'color:var(--fps-editor-text)',
1406
- 'display:flex',
1407
- 'align-items:center',
1408
- 'gap:8px',
1409
- 'font-size:12px',
1410
- asset.disabled ? 'cursor:not-allowed' : 'cursor:pointer',
1411
- asset.disabled ? 'opacity:0.72' : '',
1412
- ].join(';');
1413
- const preview = createAssetPreviewElement(doc, asset, variant);
1550
+ button.dataset.variant = variant;
1551
+ button.dataset.hasPreview = hasPreview ? 'true' : 'false';
1552
+ button.dataset.searchResult = recursiveFilterActive ? 'true' : 'false';
1553
+ button.title = entry.path;
1554
+ const mediaThumbnailKind = asset.preview ? null : resolveLocalEditorProjectMediaThumbnailKind(entry);
1555
+ const preview = mediaThumbnailKind
1556
+ ? createProjectMediaThumbnailPlaceholder(doc, entry, variant, mediaThumbnailKind)
1557
+ : createAssetPreviewElement(doc, asset, variant);
1414
1558
  const body = doc.createElement('div');
1415
- body.style.cssText = 'min-width:0;flex:1';
1559
+ body.className = 'fps-editor-ui-asset-card-body';
1416
1560
  const label = doc.createElement('div');
1417
- label.textContent = asset.label;
1418
- label.style.cssText = 'font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
1561
+ label.className = 'fps-editor-ui-asset-card-label fps-editor-ui-ellipsis';
1562
+ label.textContent = entry.kind === 'file' ? entry.label : asset.label;
1419
1563
  const meta = doc.createElement('div');
1420
- meta.textContent = asset.meta ?? asset.id;
1421
- meta.style.cssText = 'color:var(--fps-editor-muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
1564
+ meta.className = 'fps-editor-ui-asset-card-meta fps-editor-ui-ellipsis';
1565
+ meta.textContent = recursiveFilterActive
1566
+ ? [asset.label !== entry.label ? asset.label : '', entry.parentPath]
1567
+ .filter(Boolean)
1568
+ .join(' · ')
1569
+ : entry.kind === 'file'
1570
+ ? [entry.extension?.toUpperCase(), asset.label !== entry.label ? asset.label : '', asset.kind ?? 'asset']
1571
+ .filter(Boolean)
1572
+ .join(' · ')
1573
+ : asset.meta ?? asset.id;
1574
+ meta.title = meta.textContent;
1422
1575
  body.appendChild(label);
1423
1576
  body.appendChild(meta);
1424
1577
  button.appendChild(preview);
1425
1578
  button.appendChild(body);
1426
- list.appendChild(button);
1579
+ if (shouldShowPrefabModelAddAction(state, asset)) {
1580
+ const shell = doc.createElement('div');
1581
+ shell.dataset.editorAssetCardShell = asset.id;
1582
+ shell.style.cssText = 'min-width:0;display:flex;flex-direction:column;gap:4px';
1583
+ const addButton = createToolbarButton(doc, '添加到当前 Prefab', 'plus');
1584
+ addButton.dataset.editorAssetAddToPrefab = asset.id;
1585
+ addButton.title = `添加 ${asset.label} 到当前 Prefab`;
1586
+ addButton.setAttribute('aria-label', addButton.title);
1587
+ addButton.style.cssText = [
1588
+ 'width:100%',
1589
+ 'min-height:24px',
1590
+ 'justify-content:center',
1591
+ 'padding:2px 7px',
1592
+ 'font-size:11px',
1593
+ 'font-weight:800',
1594
+ ].join(';');
1595
+ shell.append(button, addButton);
1596
+ list.appendChild(shell);
1597
+ }
1598
+ else {
1599
+ list.appendChild(button);
1600
+ }
1427
1601
  }
1428
- if (filteredAssets.length === 0) {
1429
- list.appendChild(createEmptyState(doc, normalizedFilter ? '没有匹配的资产。' : '暂无该类型资产。'));
1602
+ if (filteredEntries.length === 0) {
1603
+ list.appendChild(createEmptyState(doc, recursiveFilterActive ? '当前目录及子目录中没有匹配的资源。' : '当前目录为空。'));
1430
1604
  }
1431
1605
  const viewport = createLocalEditorDockPanelViewport(doc, 'editorAssetBrowserScrollViewport');
1432
1606
  viewport.appendChild(list);
1433
- panel.appendChild(viewport);
1607
+ browser.appendChild(viewport);
1608
+ body.appendChild(browser);
1609
+ panel.appendChild(body);
1610
+ }
1611
+ export function resolveLocalEditorAssetBrowserTypeOptionTitle(title, itemCount, truncated) {
1612
+ return truncated
1613
+ ? `${title},当前清单 ${itemCount} 项 · 文件清单已截断`
1614
+ : `${title},共 ${itemCount} 项`;
1615
+ }
1616
+ export function resolveLocalEditorAssetBrowserFolderTitle(label, descendantItemCount, truncated) {
1617
+ return truncated
1618
+ ? `${label} · 当前清单 ${descendantItemCount} 个文件 · 文件清单已截断`
1619
+ : `${label} · ${descendantItemCount} 个文件`;
1620
+ }
1621
+ export function resolveLocalEditorAssetBrowserCountLabel(input) {
1622
+ const truncationSuffix = input.truncated ? ' · 文件清单已截断' : '';
1623
+ if (input.resultLimited) {
1624
+ return input.truncated
1625
+ ? `显示前 ${input.visibleCount} 项(当前清单 ${input.matchingCount} 项)${truncationSuffix}`
1626
+ : `显示前 ${input.visibleCount} 项(共 ${input.matchingCount} 项)`;
1627
+ }
1628
+ if (input.normalizedFilter)
1629
+ return `${input.visibleCount} 个匹配项${truncationSuffix}`;
1630
+ if (input.typeLabel != null)
1631
+ return `${input.visibleCount} 个${input.typeLabel}资源${truncationSuffix}`;
1632
+ return `${input.visibleCount} 个项目${truncationSuffix}`;
1633
+ }
1634
+ function createProjectFilesystemEntryButton(doc, entry, variant, selected, searchParentPath) {
1635
+ const button = doc.createElement('button');
1636
+ button.className = 'fps-editor-ui-asset-card';
1637
+ button.type = 'button';
1638
+ button.dataset.variant = variant;
1639
+ const mediaThumbnailKind = resolveLocalEditorProjectMediaThumbnailKind(entry);
1640
+ button.dataset.hasPreview = mediaThumbnailKind ? 'true' : 'false';
1641
+ button.dataset.searchResult = searchParentPath ? 'true' : 'false';
1642
+ button.setAttribute('aria-selected', selected ? 'true' : 'false');
1643
+ button.title = entry.path;
1644
+ if (entry.kind === 'directory')
1645
+ button.dataset.editorProjectDirectoryPath = entry.path;
1646
+ else
1647
+ button.dataset.editorProjectFilePath = entry.path;
1648
+ button.appendChild(mediaThumbnailKind
1649
+ ? createProjectMediaThumbnailPlaceholder(doc, entry, variant, mediaThumbnailKind)
1650
+ : createLocalEditorIcon(doc, entry.kind === 'directory' ? 'folder' : 'asset', {
1651
+ size: variant === 'grid' ? 42 : 16,
1652
+ strokeWidth: variant === 'grid' ? 1.35 : 2,
1653
+ }));
1654
+ const body = doc.createElement('div');
1655
+ body.className = 'fps-editor-ui-asset-card-body';
1656
+ const label = doc.createElement('div');
1657
+ label.className = 'fps-editor-ui-asset-card-label fps-editor-ui-ellipsis';
1658
+ label.textContent = entry.label;
1659
+ const meta = doc.createElement('div');
1660
+ meta.className = 'fps-editor-ui-asset-card-meta fps-editor-ui-ellipsis';
1661
+ meta.textContent = searchParentPath || (entry.kind === 'directory'
1662
+ ? 'Folder'
1663
+ : entry.extension?.toUpperCase() || 'File');
1664
+ body.append(label, meta);
1665
+ button.appendChild(body);
1666
+ return button;
1667
+ }
1668
+ function createProjectMediaThumbnailPlaceholder(doc, entry, variant, kind) {
1669
+ const frame = doc.createElement('div');
1670
+ frame.className = 'fps-editor-ui-project-media-thumbnail';
1671
+ frame.dataset.editorProjectMediaThumbnailPath = entry.path;
1672
+ frame.dataset.editorProjectMediaThumbnailKind = kind;
1673
+ const cacheKey = resolveLocalEditorProjectMediaThumbnailCacheKey(entry);
1674
+ if (cacheKey)
1675
+ frame.dataset.editorProjectMediaThumbnailCacheKey = cacheKey;
1676
+ frame.dataset.thumbnailState = 'loading';
1677
+ frame.dataset.variant = variant;
1678
+ const fallback = createLocalEditorIcon(doc, kind === 'model' ? 'object' : 'asset', {
1679
+ size: variant === 'grid' ? 34 : 15,
1680
+ strokeWidth: variant === 'grid' ? 1.35 : 2,
1681
+ });
1682
+ fallback.classList.add('fps-editor-ui-project-media-thumbnail-fallback');
1683
+ frame.appendChild(fallback);
1684
+ return frame;
1434
1685
  }
1435
1686
  export function createAssetPreviewElement(doc, asset, variant) {
1436
- const size = variant === 'modal' ? 220 : variant === 'grid' ? 46 : 24;
1687
+ const size = variant === 'modal' ? 220 : variant === 'grid' ? 64 : 24;
1437
1688
  const preview = asset.preview;
1438
1689
  if (!preview) {
1439
1690
  const kind = resolveLocalEditorBrowserAssetKind(asset);
@@ -1444,7 +1695,10 @@ export function createAssetPreviewElement(doc, asset, variant) {
1444
1695
  : kind === 'texture'
1445
1696
  ? 'asset'
1446
1697
  : 'object';
1447
- return createLocalEditorIcon(doc, icon, { size: variant === 'grid' ? 18 : 16 });
1698
+ return createLocalEditorIcon(doc, icon, {
1699
+ size: variant === 'grid' ? 42 : 16,
1700
+ strokeWidth: variant === 'grid' ? 1.35 : 2,
1701
+ });
1448
1702
  }
1449
1703
  const frame = doc.createElement('div');
1450
1704
  frame.style.cssText = [
@@ -1482,16 +1736,16 @@ export function createAssetPreviewElement(doc, asset, variant) {
1482
1736
  const emissionColor = formatAssetPreviewColor(preview.emissionColor, '#ffffff');
1483
1737
  sphere.style.cssText = [
1484
1738
  'position:relative',
1485
- 'width:82%',
1486
- 'height:82%',
1739
+ 'width:76%',
1740
+ 'height:76%',
1487
1741
  'overflow:hidden',
1488
1742
  'border-radius:999px',
1489
1743
  `background:${baseColor}`,
1490
- 'border:1px solid rgba(255,255,255,0.22)',
1744
+ 'border:1px solid rgba(255,255,255,0.12)',
1491
1745
  'box-shadow:' + [
1492
- `inset -5px -7px 12px rgba(0,0,0,${(0.26 + roughness * 0.14).toFixed(2)})`,
1493
- `inset 5px 5px 10px rgba(255,255,255,${(0.12 + metallic * 0.2).toFixed(2)})`,
1494
- emissionIntensity > 0 ? `0 0 ${Math.round(6 + emissionIntensity * 5)}px ${emissionColor}` : '0 1px 2px rgba(0,0,0,0.4)',
1746
+ `inset -5px -7px 12px rgba(0,0,0,${(0.24 + roughness * 0.12).toFixed(2)})`,
1747
+ `inset 4px 4px 9px rgba(255,255,255,${(0.08 + metallic * 0.14).toFixed(2)})`,
1748
+ emissionIntensity > 0 ? `0 0 ${Math.round(3 + emissionIntensity * 2)}px ${emissionColor}` : '0 1px 2px rgba(0,0,0,0.34)',
1495
1749
  ].join(','),
1496
1750
  ].join(';');
1497
1751
  if (preview.textureUrl) {
@@ -1510,8 +1764,8 @@ export function createAssetPreviewElement(doc, asset, variant) {
1510
1764
  sphere.appendChild(image);
1511
1765
  }
1512
1766
  const shading = doc.createElement('div');
1513
- const highlightAlpha = clampNumber(0.86 - roughness * 0.48 + metallic * 0.12, 0.25, 0.92);
1514
- const highlightEnd = Math.round(9 + roughness * 12);
1767
+ const highlightAlpha = clampNumber(0.66 - roughness * 0.38 + metallic * 0.08, 0.18, 0.72);
1768
+ const highlightEnd = Math.round(8 + roughness * 11);
1515
1769
  const shadowAlpha = clampNumber(0.28 + roughness * 0.14 + metallic * 0.16, 0.2, 0.62);
1516
1770
  const rimAlpha = clampNumber(0.12 + metallic * 0.36, 0.08, 0.52);
1517
1771
  shading.style.cssText = [
@@ -1520,7 +1774,7 @@ export function createAssetPreviewElement(doc, asset, variant) {
1520
1774
  'border-radius:inherit',
1521
1775
  'pointer-events:none',
1522
1776
  'background:' + [
1523
- `radial-gradient(circle at 31% 23%, rgba(255,255,255,${highlightAlpha.toFixed(2)}) 0 ${highlightEnd}%, rgba(255,255,255,0) ${highlightEnd + 17}%)`,
1777
+ `radial-gradient(circle at 31% 23%, rgba(255,255,255,${highlightAlpha.toFixed(2)}) 0 ${highlightEnd}%, rgba(255,255,255,0) ${highlightEnd + 20}%)`,
1524
1778
  `radial-gradient(circle at 70% 82%, rgba(0,0,0,${shadowAlpha.toFixed(2)}) 0 26%, rgba(0,0,0,0) 58%)`,
1525
1779
  `radial-gradient(circle at 82% 22%, rgba(255,255,255,${rimAlpha.toFixed(2)}) 0 9%, rgba(255,255,255,0) 36%)`,
1526
1780
  `linear-gradient(135deg, rgba(255,255,255,${(0.08 + metallic * 0.16).toFixed(2)}), rgba(0,0,0,${(0.12 + roughness * 0.1).toFixed(2)}))`,
@@ -1557,32 +1811,17 @@ function clampNumber(value, min, max) {
1557
1811
  }
1558
1812
  function appendAssetBrowserTabs(doc, panel, state, activeTab) {
1559
1813
  const tabs = doc.createElement('div');
1560
- tabs.style.cssText = [
1561
- 'display:flex',
1562
- 'align-items:center',
1563
- 'gap:4px',
1564
- 'margin:0 0 8px',
1565
- 'min-height:26px',
1566
- ].join(';');
1814
+ tabs.className = 'fps-editor-ui-segmented-tabs';
1567
1815
  for (const tab of ASSET_BROWSER_TABS) {
1568
1816
  const button = doc.createElement('button');
1817
+ button.className = 'fps-editor-ui-button fps-editor-ui-segmented-tab';
1569
1818
  button.type = 'button';
1570
1819
  button.dataset.editorAssetBrowserTab = tab.id;
1571
1820
  button.title = tab.title;
1572
1821
  const active = activeTab === tab.id;
1822
+ button.dataset.active = active ? 'true' : 'false';
1573
1823
  const count = filterAssetsByBrowserTab(state.assets, tab.id).length;
1574
1824
  button.textContent = `${tab.label} ${count}`;
1575
- button.style.cssText = [
1576
- 'height:24px',
1577
- 'padding:0 8px',
1578
- 'border:1px solid var(--fps-editor-border)',
1579
- 'border-radius:3px',
1580
- `background:${active ? 'var(--fps-editor-accent)' : 'var(--fps-editor-button-bg)'}`,
1581
- `color:${active ? 'var(--fps-editor-text-strong)' : 'var(--fps-editor-muted)'}`,
1582
- 'font-size:11px',
1583
- 'font-weight:800',
1584
- 'cursor:pointer',
1585
- ].join(';');
1586
1825
  tabs.appendChild(button);
1587
1826
  }
1588
1827
  panel.appendChild(tabs);
@@ -1595,8 +1834,8 @@ function filterAssetsByBrowserTab(assets, tab) {
1595
1834
  function renderHistoryPanel(doc, panel, history) {
1596
1835
  configureLocalEditorDockPanelContent(panel);
1597
1836
  const title = doc.createElement('h2');
1837
+ title.className = 'fps-editor-ui-panel-title';
1598
1838
  const entries = history?.entries ?? [];
1599
- title.style.cssText = 'display:flex;align-items:center;gap:6px;font-size:13px;margin:0 0 8px;font-weight:800;color:var(--fps-editor-text-strong)';
1600
1839
  title.appendChild(createLocalEditorIcon(doc, 'history'));
1601
1840
  title.appendChild(createHeadingLabel(doc, `历史记录 (${entries.length})`));
1602
1841
  panel.appendChild(title);
@@ -1610,15 +1849,15 @@ function appendHistoryEntries(doc, panel, entries) {
1610
1849
  return;
1611
1850
  }
1612
1851
  const list = doc.createElement('div');
1613
- list.style.cssText = 'display:flex;flex-direction:column;gap:4px';
1852
+ list.className = 'fps-editor-ui-history-list';
1614
1853
  for (const entry of entries) {
1615
1854
  const item = createListItemBlock(doc);
1616
1855
  const label = doc.createElement('div');
1856
+ label.className = 'fps-editor-ui-history-label fps-editor-ui-ellipsis';
1617
1857
  label.textContent = entry.label;
1618
- label.style.cssText = 'font-size:12px;font-weight:900;color:var(--fps-editor-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
1619
1858
  const meta = doc.createElement('div');
1859
+ meta.className = 'fps-editor-ui-history-meta fps-editor-ui-ellipsis';
1620
1860
  meta.textContent = `${formatHistoryTimestamp(entry.createdAt)} · ${entry.commandType}`;
1621
- meta.style.cssText = 'font-size:11px;color:var(--fps-editor-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
1622
1861
  item.appendChild(label);
1623
1862
  item.appendChild(meta);
1624
1863
  list.appendChild(item);
@@ -1646,10 +1885,11 @@ function formatHistoryTimestamp(createdAt) {
1646
1885
  }
1647
1886
  export function renderInspectorPanel(doc, panel, state, filter = '', options = {}) {
1648
1887
  const renderSnapshot = captureInspectorPanelRenderSnapshot(doc, panel);
1888
+ disposeInspectorPanelUi(panel);
1649
1889
  clearElement(panel);
1650
1890
  configureLocalEditorDockPanelContent(panel);
1651
1891
  const title = doc.createElement('h2');
1652
- title.style.cssText = 'display:flex;align-items:center;gap:6px;font-size:13px;margin:-8px -8px 8px;padding:7px 8px;border-bottom:1px solid var(--fps-editor-divider);background:var(--fps-editor-chrome-dark);font-weight:800;color:var(--fps-editor-text-strong)';
1892
+ title.className = 'fps-editor-inspector-title';
1653
1893
  title.appendChild(createLocalEditorIcon(doc, 'inspector'));
1654
1894
  title.appendChild(createHeadingLabel(doc, options.title ?? 'Inspector'));
1655
1895
  panel.appendChild(title);
@@ -1669,7 +1909,7 @@ export function renderInspectorPanel(doc, panel, state, filter = '', options = {
1669
1909
  restoreInspectorPanelRenderSnapshot(panel, renderSnapshot);
1670
1910
  return;
1671
1911
  }
1672
- const controlRegistry = createLocalEditorBrowserInspectorControlRegistry(options.controls, options.controlConflict);
1912
+ const controlRegistry = createLocalEditorBrowserInspectorControlRegistry(options.controls, options.controlConflict, options.layerHost);
1673
1913
  appendInspectorSummary(doc, viewport, inspectorObject, selectionCount, options.summaryTitle);
1674
1914
  const visibleSections = filterInspectorSections(inspectorObject.sections.filter(section => section.placement !== 'summary'), filter);
1675
1915
  if (visibleSections.length === 0) {
@@ -1712,30 +1952,27 @@ function restoreInspectorPanelRenderSnapshot(panel, snapshot) {
1712
1952
  scrollContainer.scrollLeft = snapshot.scrollLeft;
1713
1953
  }
1714
1954
  function createInspectorSearchInput(doc, value) {
1715
- const input = doc.createElement('input');
1955
+ const control = registerInspectorUiMount(createEditorUiTextControl({
1956
+ document: doc,
1957
+ value,
1958
+ placeholder: 'Search…',
1959
+ }));
1960
+ const input = control.nativeInputs[0];
1716
1961
  input.dataset.editorInspectorSearch = 'true';
1717
- input.value = value;
1718
- input.placeholder = 'Search...';
1719
- input.style.cssText = [
1720
- createEditorInputStyle(),
1721
- 'width:100%',
1722
- 'height:30px',
1723
- 'margin:0 0 8px',
1724
- 'outline:none',
1725
- ].join(';');
1726
- return input;
1962
+ control.element.className = `${control.element.className || ''} fps-editor-inspector-search`.trim();
1963
+ return control.element;
1727
1964
  }
1728
1965
  function appendInspectorSummary(doc, panel, inspectorObject, selectionCount, summaryTitle) {
1729
1966
  const block = createInspectorComponentBlock(doc);
1730
1967
  const header = doc.createElement('div');
1731
- header.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px';
1968
+ header.className = 'fps-editor-inspector-summary-header';
1732
1969
  const title = doc.createElement('h3');
1733
1970
  const targetKind = inspectorObject.selection.targetKind;
1734
1971
  const markerLike = targetKind === 'marker' || targetKind === 'marker-graph';
1735
1972
  title.textContent = summaryTitle ?? (selectionCount > 1
1736
1973
  ? markerLike ? 'Markers' : 'Selection'
1737
1974
  : targetKind === 'marker-graph' ? 'Marker Graph' : targetKind === 'marker' ? 'Marker' : 'GameObject');
1738
- title.style.cssText = 'font-size:12px;margin:0;font-weight:900;color:var(--fps-editor-text-strong)';
1975
+ title.className = 'fps-editor-inspector-summary-title';
1739
1976
  header.appendChild(title);
1740
1977
  header.appendChild(createInspectorAccessBadge(doc, 'readonly'));
1741
1978
  block.appendChild(header);
@@ -1766,36 +2003,24 @@ function inspectorPropertyMatches(section, property, needle) {
1766
2003
  .some(value => String(value).toLowerCase().includes(needle));
1767
2004
  }
1768
2005
  function createInspectorSectionBlock(doc, inspectorObject, section, controlRegistry, options) {
1769
- const block = doc.createElement('details');
2006
+ const sectionMount = registerInspectorUiMount(createEditorUiSection({
2007
+ document: doc,
2008
+ title: section.title,
2009
+ collapsed: section.collapsedByDefault === true,
2010
+ collapsible: true,
2011
+ }));
2012
+ const block = sectionMount.element;
1770
2013
  block.dataset.editorInspectorSection = section.id;
1771
- block.open = section.collapsedByDefault !== true;
1772
2014
  const status = resolveLocalEditorBrowserInspectorSectionStatus(section);
1773
2015
  const { access, effect } = status;
1774
2016
  block.dataset.editorInspectorAccess = access;
1775
2017
  block.dataset.editorInspectorEffect = effect;
1776
- block.style.cssText = createInspectorBlockStyle(access, effect);
1777
- const sectionTitle = doc.createElement('summary');
1778
- sectionTitle.style.cssText = [
1779
- 'font-size:12px',
1780
- 'margin:-2px 0 8px',
1781
- 'font-weight:900',
1782
- 'color:var(--fps-editor-text-strong)',
1783
- 'display:flex',
1784
- 'align-items:center',
1785
- 'justify-content:space-between',
1786
- 'gap:8px',
1787
- 'cursor:pointer',
1788
- 'list-style:none',
1789
- ].join(';');
1790
- const label = doc.createElement('span');
1791
- label.textContent = section.title;
1792
- sectionTitle.appendChild(label);
1793
2018
  const meta = doc.createElement('span');
1794
- meta.style.cssText = 'display:flex;align-items:center;gap:6px;min-width:0;color:var(--fps-editor-muted);font-size:10px;text-transform:uppercase;letter-spacing:0';
2019
+ meta.className = 'fps-editor-inspector-section-meta';
1795
2020
  if (section.summary) {
1796
2021
  const summary = doc.createElement('span');
1797
2022
  summary.textContent = section.summary;
1798
- summary.style.cssText = 'overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:none;font-size:11px';
2023
+ summary.className = 'fps-editor-inspector-section-summary';
1799
2024
  meta.appendChild(summary);
1800
2025
  }
1801
2026
  const badge = createInspectorAccessBadge(doc, access);
@@ -1806,9 +2031,8 @@ function createInspectorSectionBlock(doc, inspectorObject, section, controlRegis
1806
2031
  effectBadge.style.flex = '0 0 auto';
1807
2032
  meta.appendChild(effectBadge);
1808
2033
  }
1809
- sectionTitle.appendChild(meta);
1810
- block.appendChild(sectionTitle);
1811
- const content = doc.createElement('div');
2034
+ sectionMount.header.appendChild(meta);
2035
+ const content = sectionMount.content;
1812
2036
  content.dataset.editorInspectorSectionContent = section.id;
1813
2037
  for (const group of groupInspectorProperties(section.properties)) {
1814
2038
  if (group.kind === 'vector')
@@ -1816,14 +2040,13 @@ function createInspectorSectionBlock(doc, inspectorObject, section, controlRegis
1816
2040
  else
1817
2041
  appendInspectorPropertyRow(doc, content, inspectorObject, group.property, controlRegistry);
1818
2042
  }
1819
- block.appendChild(content);
1820
2043
  return block;
1821
2044
  }
1822
2045
  function createInspectorComponentBlock(doc) {
1823
2046
  const block = doc.createElement('div');
2047
+ block.className = 'fps-editor-inspector-component';
1824
2048
  block.dataset.editorInspectorAccess = 'readonly';
1825
2049
  block.dataset.editorInspectorEffect = 'active';
1826
- block.style.cssText = createInspectorBlockStyle('readonly', 'active');
1827
2050
  return block;
1828
2051
  }
1829
2052
  export function resolveLocalEditorBrowserInspectorSectionStatus(section) {
@@ -1837,15 +2060,6 @@ export function resolveLocalEditorBrowserInspectorSectionStatus(section) {
1837
2060
  && !(effect === 'default' && inspectorSummaryLooksDefault(section.summary)),
1838
2061
  };
1839
2062
  }
1840
- function createInspectorBlockStyle(_access, _effect = 'active') {
1841
- return [
1842
- 'margin:0 0 8px',
1843
- 'padding:9px',
1844
- 'border:1px solid var(--fps-editor-inspector-section-border, var(--fps-editor-border))',
1845
- 'border-radius:3px',
1846
- 'background:var(--fps-editor-panel-soft)',
1847
- ].join(';');
1848
- }
1849
2063
  function isInspectorPropertyEditable(property) {
1850
2064
  return property.readOnly !== true
1851
2065
  && property.persistence === 'document'
@@ -2045,123 +2259,125 @@ function resolveInspectorVectorGroupLabel(properties, fallback) {
2045
2259
  return first;
2046
2260
  return toTitle(fallback);
2047
2261
  }
2048
- const builtinInspectorControlRegistrations = [
2049
- {
2050
- id: 'builtin.readonly',
2051
- order: 100,
2052
- control: 'readonly',
2053
- render: ({ doc, target, property }) => createInspectorReadonlyControl(doc, target, property),
2054
- },
2055
- {
2056
- id: 'builtin.string',
2057
- order: 100,
2058
- control: 'string',
2059
- render: ({ doc, target, property }) => createInspectorTextControl(doc, target, property),
2060
- },
2061
- {
2062
- id: 'builtin.number',
2063
- order: 100,
2064
- control: 'number',
2065
- render: ({ doc, target, property }) => createInspectorNumberControl(doc, target, property),
2066
- },
2067
- {
2068
- id: 'builtin.boolean',
2069
- order: 100,
2070
- control: 'boolean',
2071
- render: ({ doc, target, property }) => createInspectorBooleanControl(doc, target, property),
2072
- },
2073
- {
2074
- id: 'builtin.enum',
2075
- order: 100,
2076
- control: 'enum',
2077
- render: ({ doc, target, property }) => createInspectorEnumControl(doc, target, property),
2078
- },
2079
- {
2080
- id: 'builtin.vec2',
2081
- order: 100,
2082
- control: 'vec2',
2083
- render: ({ doc, target, property }) => createInspectorVectorControl(doc, target, property),
2084
- },
2085
- {
2086
- id: 'builtin.vec3',
2087
- order: 100,
2088
- control: 'vec3',
2089
- render: ({ doc, target, property }) => createInspectorVectorControl(doc, target, property),
2090
- },
2091
- {
2092
- id: 'builtin.color',
2093
- order: 100,
2094
- control: 'color',
2095
- render: ({ doc, target, property }) => createInspectorColorControl(doc, target, property),
2096
- },
2097
- {
2098
- id: 'builtin.open-right-dock-tab',
2099
- order: 90,
2100
- control: 'custom',
2101
- customControl: 'open-right-dock-tab',
2102
- render: ({ doc, property }) => createInspectorOpenRightDockTabControl(doc, property),
2103
- },
2104
- {
2105
- id: 'builtin.rendering-action-button',
2106
- order: 92,
2107
- control: 'custom',
2108
- customControl: 'rendering-action-button',
2109
- render: ({ doc, property }) => createInspectorRenderingActionButtonControl(doc, property),
2110
- },
2111
- {
2112
- id: 'builtin.inspector-action-button',
2113
- order: 93,
2114
- control: 'custom',
2115
- customControl: 'inspector-action-button',
2116
- render: ({ doc, target, property }) => createInspectorActionButtonControl(doc, target, property),
2117
- },
2118
- {
2119
- id: 'builtin.marker-relation-editor',
2120
- order: 91,
2121
- control: 'custom',
2122
- customControl: 'marker-relation-editor',
2123
- render: ({ doc, property }) => createInspectorMarkerRelationEditorControl(doc, property),
2124
- },
2125
- {
2126
- id: 'builtin.asset-picker-card',
2127
- order: 95,
2128
- control: 'custom',
2129
- customControl: 'asset-picker-card',
2130
- render: ({ doc, target, property, bindInput }) => createInspectorAssetPickerCardControl(doc, target, property, bindInput),
2131
- },
2132
- {
2133
- id: 'builtin.ground-decal-layout',
2134
- order: 96,
2135
- control: 'custom',
2136
- customControl: 'ground-decal-layout',
2137
- render: ({ doc, target, property, bindInput }) => createInspectorGroundDecalLayoutControl(doc, target, property, bindInput),
2138
- },
2139
- {
2140
- id: 'builtin.material-slot-list',
2141
- order: 97,
2142
- control: 'custom',
2143
- customControl: 'material-slot-list',
2144
- render: ({ doc, property }) => createInspectorMaterialSlotListControl(doc, property),
2145
- },
2146
- {
2147
- id: 'builtin.asset',
2148
- order: 100,
2149
- control: 'asset',
2150
- render: ({ doc, target, property }) => createInspectorTextControl(doc, target, property),
2151
- },
2152
- {
2153
- id: 'builtin.object',
2154
- order: 100,
2155
- control: 'object',
2156
- render: ({ doc, target, property }) => createInspectorReadonlyControl(doc, target, property),
2157
- },
2158
- {
2159
- id: 'builtin.custom',
2160
- order: 1000,
2161
- control: 'custom',
2162
- render: ({ doc, target, property }) => createInspectorReadonlyControl(doc, target, property),
2163
- },
2164
- ];
2262
+ function createBuiltinInspectorControlRegistrations(layerHost) {
2263
+ return [
2264
+ {
2265
+ id: 'builtin.readonly',
2266
+ order: 100,
2267
+ control: 'readonly',
2268
+ render: ({ doc, target, property }) => createInspectorReadonlyControl(doc, target, property),
2269
+ },
2270
+ {
2271
+ id: 'builtin.string',
2272
+ order: 100,
2273
+ control: 'string',
2274
+ render: ({ doc, target, property }) => createInspectorTextControl(doc, target, property),
2275
+ },
2276
+ {
2277
+ id: 'builtin.number',
2278
+ order: 100,
2279
+ control: 'number',
2280
+ render: ({ doc, target, property }) => createInspectorNumberControl(doc, target, property),
2281
+ },
2282
+ {
2283
+ id: 'builtin.boolean',
2284
+ order: 100,
2285
+ control: 'boolean',
2286
+ render: ({ doc, target, property }) => createInspectorBooleanControl(doc, target, property),
2287
+ },
2288
+ {
2289
+ id: 'builtin.enum',
2290
+ order: 100,
2291
+ control: 'enum',
2292
+ render: ({ doc, target, property }) => createInspectorEnumControl(doc, target, property, layerHost),
2293
+ },
2294
+ {
2295
+ id: 'builtin.vec2',
2296
+ order: 100,
2297
+ control: 'vec2',
2298
+ render: ({ doc, target, property }) => createInspectorVectorControl(doc, target, property),
2299
+ },
2300
+ {
2301
+ id: 'builtin.vec3',
2302
+ order: 100,
2303
+ control: 'vec3',
2304
+ render: ({ doc, target, property }) => createInspectorVectorControl(doc, target, property),
2305
+ },
2306
+ {
2307
+ id: 'builtin.color',
2308
+ order: 100,
2309
+ control: 'color',
2310
+ render: ({ doc, target, property }) => createInspectorColorControl(doc, target, property, layerHost),
2311
+ },
2312
+ {
2313
+ id: 'builtin.open-right-dock-tab',
2314
+ order: 90,
2315
+ control: 'custom',
2316
+ customControl: 'open-right-dock-tab',
2317
+ render: ({ doc, property }) => createInspectorOpenRightDockTabControl(doc, property),
2318
+ },
2319
+ {
2320
+ id: 'builtin.rendering-action-button',
2321
+ order: 92,
2322
+ control: 'custom',
2323
+ customControl: 'rendering-action-button',
2324
+ render: ({ doc, property }) => createInspectorRenderingActionButtonControl(doc, property),
2325
+ },
2326
+ {
2327
+ id: 'builtin.inspector-action-button',
2328
+ order: 93,
2329
+ control: 'custom',
2330
+ customControl: 'inspector-action-button',
2331
+ render: ({ doc, target, property }) => createInspectorActionButtonControl(doc, target, property),
2332
+ },
2333
+ {
2334
+ id: 'builtin.marker-relation-editor',
2335
+ order: 91,
2336
+ control: 'custom',
2337
+ customControl: 'marker-relation-editor',
2338
+ render: ({ doc, property }) => createInspectorMarkerRelationEditorControl(doc, property),
2339
+ },
2340
+ {
2341
+ id: 'builtin.asset-picker-card',
2342
+ order: 95,
2343
+ control: 'custom',
2344
+ customControl: 'asset-picker-card',
2345
+ render: ({ doc, target, property, bindInput }) => createInspectorAssetPickerCardControl(doc, target, property, bindInput),
2346
+ },
2347
+ {
2348
+ id: 'builtin.ground-decal-layout',
2349
+ order: 96,
2350
+ control: 'custom',
2351
+ customControl: 'ground-decal-layout',
2352
+ render: ({ doc, target, property, bindInput }) => createInspectorGroundDecalLayoutControl(doc, target, property, bindInput),
2353
+ },
2354
+ {
2355
+ id: 'builtin.material-slot-list',
2356
+ order: 97,
2357
+ control: 'custom',
2358
+ customControl: 'material-slot-list',
2359
+ render: ({ doc, property }) => createInspectorMaterialSlotListControl(doc, property),
2360
+ },
2361
+ {
2362
+ id: 'builtin.asset',
2363
+ order: 100,
2364
+ control: 'asset',
2365
+ render: ({ doc, target, property }) => createInspectorTextControl(doc, target, property),
2366
+ },
2367
+ {
2368
+ id: 'builtin.object',
2369
+ order: 100,
2370
+ control: 'object',
2371
+ render: ({ doc, target, property }) => createInspectorReadonlyControl(doc, target, property),
2372
+ },
2373
+ {
2374
+ id: 'builtin.custom',
2375
+ order: 1000,
2376
+ control: 'custom',
2377
+ render: ({ doc, target, property }) => createInspectorReadonlyControl(doc, target, property),
2378
+ },
2379
+ ];
2380
+ }
2165
2381
  function appendInspectorPropertyRow(doc, parent, inspectorObject, property, controlRegistry) {
2166
2382
  const control = renderInspectorControl(doc, controlRegistry, inspectorObject, property);
2167
2383
  const access = getInspectorPropertyAccess(property);
@@ -2174,17 +2390,24 @@ function appendInspectorPropertyRow(doc, parent, inspectorObject, property, cont
2174
2390
  parent.appendChild(control);
2175
2391
  return;
2176
2392
  }
2177
- const row = createPropertyRow(doc, property.label, control);
2393
+ const row = createInspectorPropertyRowShell(doc, property.label, control);
2178
2394
  row.dataset.editorInspectorAccess = access;
2179
2395
  row.dataset.editorInspectorEffect = effect;
2180
2396
  applyInspectorPropertyRowHierarchyStyle(row, property);
2181
2397
  row.title = createInspectorStatusTitle(access, effect, property.tooltip ?? property.disabledReason);
2182
2398
  row.dataset.editorTooltip = row.title;
2183
- const label = row.firstElementChild;
2184
- if (label)
2185
- label.style.cssText = createInspectorPropertyLabelStyle(access, effect);
2186
2399
  parent.appendChild(row);
2187
2400
  }
2401
+ function createInspectorPropertyRowShell(doc, labelText, control) {
2402
+ const row = doc.createElement('div');
2403
+ row.className = 'fps-editor-inspector-property-row';
2404
+ const label = doc.createElement('span');
2405
+ label.className = 'fps-editor-inspector-property-label';
2406
+ label.textContent = labelText;
2407
+ row.appendChild(label);
2408
+ row.appendChild(control);
2409
+ return row;
2410
+ }
2188
2411
  function applyInspectorPropertyRowHierarchyStyle(row, property) {
2189
2412
  const indentLevel = Math.max(0, Math.min(4, Math.floor(readInspectorControlOptionNumber(property, 'indentLevel'))));
2190
2413
  if (indentLevel <= 0)
@@ -2198,12 +2421,12 @@ function applyInspectorPropertyRowHierarchyStyle(row, property) {
2198
2421
  `margin-left:${indentLevel * 14}px`,
2199
2422
  'padding-left:8px',
2200
2423
  'border-left:2px solid var(--fps-editor-border)',
2201
- `grid-template-columns:${Math.max(68, 92 - indentLevel * 12)}px 1fr`,
2424
+ `grid-template-columns:${Math.max(68, 96 - indentLevel * 12)}px minmax(0,1fr)`,
2202
2425
  ].filter(Boolean).join(';');
2203
2426
  }
2204
- export function createLocalEditorBrowserInspectorControlRegistry(controls = [], conflict = 'error') {
2427
+ export function createLocalEditorBrowserInspectorControlRegistry(controls = [], conflict = 'error', layerHost) {
2205
2428
  const registrations = new Map();
2206
- for (const control of builtinInspectorControlRegistrations) {
2429
+ for (const control of createBuiltinInspectorControlRegistrations(layerHost)) {
2207
2430
  registerInspectorControl(registrations, control, 'error');
2208
2431
  }
2209
2432
  for (const control of controls) {
@@ -2241,12 +2464,24 @@ function renderInspectorControl(doc, registrations, target, property) {
2241
2464
  },
2242
2465
  };
2243
2466
  const registration = resolveLocalEditorBrowserInspectorControlRegistration(registrations, context);
2244
- if (registration)
2245
- return registration.render(context);
2467
+ if (registration) {
2468
+ const rendered = registration.render(context);
2469
+ if (isInspectorControlMount(doc, rendered))
2470
+ return registerInspectorUiMount(rendered).element;
2471
+ return rendered;
2472
+ }
2246
2473
  if (!isInspectorPropertyEditable(normalizedProperty))
2247
2474
  return createInspectorReadonlyControl(doc, target, normalizedProperty);
2248
2475
  return createInspectorReadonlyControl(doc, target, normalizedProperty);
2249
2476
  }
2477
+ function isInspectorControlMount(doc, value) {
2478
+ const HTMLElementConstructor = doc.defaultView?.HTMLElement;
2479
+ if (HTMLElementConstructor && value instanceof HTMLElementConstructor)
2480
+ return false;
2481
+ if ('nodeType' in value && value.nodeType === 1)
2482
+ return false;
2483
+ return 'element' in value && typeof value.dispose === 'function';
2484
+ }
2250
2485
  export function resolveLocalEditorBrowserInspectorControlRegistration(registrations, context) {
2251
2486
  for (const registration of registrations) {
2252
2487
  if (localEditorBrowserInspectorControlSupports(registration, context))
@@ -2303,7 +2538,7 @@ function isInspectorCustomControlFallback(customControl, property) {
2303
2538
  }
2304
2539
  function appendInspectorVectorInputs(doc, parent, inspectorObject, label, properties, layout = 'block', options = {}) {
2305
2540
  const wrapper = doc.createElement('div');
2306
- wrapper.style.cssText = 'margin:8px 0';
2541
+ wrapper.className = 'fps-editor-inspector-vector-group';
2307
2542
  const access = getInspectorPropertyGroupAccess(properties);
2308
2543
  const effect = getInspectorPropertyGroupEffect(properties);
2309
2544
  wrapper.dataset.editorInspectorAccess = access;
@@ -2311,30 +2546,35 @@ function appendInspectorVectorInputs(doc, parent, inspectorObject, label, proper
2311
2546
  wrapper.title = createInspectorStatusTitle(access, effect, getInspectorPropertyGroupTooltip(properties) ?? getInspectorPropertyGroupDisabledReason(properties));
2312
2547
  wrapper.dataset.editorTooltip = wrapper.title;
2313
2548
  const labelElement = doc.createElement('div');
2314
- labelElement.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px';
2549
+ labelElement.className = 'fps-editor-inspector-vector-header';
2315
2550
  const labelText = doc.createElement('span');
2316
2551
  labelText.textContent = label;
2317
- labelText.style.cssText = createInspectorPropertyLabelStyle(access, effect);
2552
+ labelText.className = 'fps-editor-inspector-property-label';
2318
2553
  labelElement.appendChild(labelText);
2319
2554
  const actions = doc.createElement('span');
2320
- actions.style.cssText = 'display:inline-flex;align-items:center;gap:5px;flex:0 0 auto';
2555
+ actions.className = 'fps-editor-inspector-vector-actions';
2321
2556
  labelElement.appendChild(actions);
2322
2557
  const groupPath = resolveLocalEditorBrowserInspectorVectorGroupPathFromProperties(properties);
2558
+ const localizedLabel = resolveInspectorVectorGroupChineseLabel(groupPath, label);
2323
2559
  const forceLocked = properties.some(property => readInspectorControlOptionBoolean(property, 'forceVectorLock'));
2324
2560
  const locked = forceLocked || (!!groupPath && options.lockedVectorGroups?.has(groupPath) === true);
2325
- if (groupPath && access === 'editable') {
2326
- const lockButton = createInspectorVectorHeaderButton(doc, forceLocked ? `${label} axes are locked` : locked ? `Unlock ${label} axes` : `Lock ${label} axes`, locked);
2561
+ if (groupPath === 'transform.scale' && access === 'editable') {
2562
+ const lockButton = createInspectorVectorHeaderButton(doc, forceLocked
2563
+ ? '等比缩放已由当前属性强制开启'
2564
+ : locked
2565
+ ? '关闭等比缩放:恢复各轴独立调整'
2566
+ : '开启等比缩放:调整任意一轴时,其他轴按当前比例同步变化', locked);
2327
2567
  if (!forceLocked)
2328
2568
  lockButton.dataset.editorInspectorVectorLock = groupPath;
2329
2569
  lockButton.disabled = forceLocked;
2330
2570
  lockButton.dataset.editorInspectorVectorLockState = locked ? 'locked' : 'unlocked';
2331
2571
  lockButton.setAttribute('aria-pressed', locked ? 'true' : 'false');
2332
- lockButton.appendChild(createLocalEditorIcon(doc, 'lock', { size: 12, strokeWidth: 2.2 }));
2572
+ lockButton.appendChild(createLocalEditorIcon(doc, 'link', { size: 12, strokeWidth: 2.2 }));
2333
2573
  actions.appendChild(lockButton);
2334
2574
  }
2335
2575
  const copyPayload = createLocalEditorBrowserInspectorVectorCopyPayload(properties);
2336
2576
  if (copyPayload) {
2337
- const copyButton = createInspectorVectorHeaderButton(doc, `Copy ${label}`, false);
2577
+ const copyButton = createInspectorVectorHeaderButton(doc, `复制${localizedLabel}三轴数值`, false);
2338
2578
  copyButton.dataset.editorInspectorVectorCopy = 'true';
2339
2579
  copyButton.dataset.editorInspectorVectorCopyValue = copyPayload;
2340
2580
  copyButton.appendChild(createLocalEditorIcon(doc, 'copy', { size: 12, strokeWidth: 2.2 }));
@@ -2353,21 +2593,34 @@ function appendInspectorVectorInputs(doc, parent, inspectorObject, label, proper
2353
2593
  const fields = doc.createElement('div');
2354
2594
  if (groupPath)
2355
2595
  wrapper.dataset.editorInspectorVectorGroupPath = groupPath;
2356
- fields.style.cssText = `display:grid;grid-template-columns:repeat(${Math.max(1, properties.length)},minmax(0,1fr));gap:6px;width:100%`;
2596
+ fields.className = 'fps-editor-inspector-vector-fields';
2597
+ fields.style.setProperty('--fps-editor-vector-dimensions', String(Math.max(1, properties.length)));
2357
2598
  for (const property of properties) {
2358
- fields.appendChild(isInspectorPropertyEditable(property)
2599
+ const control = isInspectorPropertyEditable(property)
2359
2600
  ? createInspectorNumberControl(doc, inspectorObject, property)
2360
- : createInspectorReadonlyControl(doc, inspectorObject, property));
2601
+ : createInspectorReadonlyControl(doc, inspectorObject, property);
2602
+ const axis = resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath(property.path)?.axis;
2603
+ if (!axis) {
2604
+ fields.appendChild(control);
2605
+ continue;
2606
+ }
2607
+ const axisField = doc.createElement('div');
2608
+ axisField.className = 'fps-editor-inspector-vector-axis-field';
2609
+ axisField.dataset.editorInspectorVectorAxisField = axis;
2610
+ const axisLabel = doc.createElement('span');
2611
+ axisLabel.className = 'fps-editor-inspector-vector-axis-label';
2612
+ axisLabel.textContent = axis.toUpperCase();
2613
+ axisLabel.setAttribute('aria-hidden', 'true');
2614
+ axisField.appendChild(axisLabel);
2615
+ axisField.appendChild(control);
2616
+ fields.appendChild(axisField);
2361
2617
  }
2362
2618
  if (layout === 'inline') {
2363
- const row = createPropertyRow(doc, label, fields);
2619
+ const row = createInspectorPropertyRowShell(doc, label, fields);
2364
2620
  row.dataset.editorInspectorAccess = access;
2365
2621
  row.dataset.editorInspectorEffect = effect;
2366
2622
  row.title = wrapper.title;
2367
2623
  row.dataset.editorTooltip = wrapper.dataset.editorTooltip ?? wrapper.title;
2368
- const rowLabel = row.firstElementChild;
2369
- if (rowLabel)
2370
- rowLabel.style.cssText = createInspectorPropertyLabelStyle(access, effect);
2371
2624
  parent.appendChild(row);
2372
2625
  return;
2373
2626
  }
@@ -2375,25 +2628,22 @@ function appendInspectorVectorInputs(doc, parent, inspectorObject, label, proper
2375
2628
  wrapper.appendChild(fields);
2376
2629
  parent.appendChild(wrapper);
2377
2630
  }
2631
+ function resolveInspectorVectorGroupChineseLabel(groupPath, fallback) {
2632
+ if (groupPath === 'transform.position')
2633
+ return '位置';
2634
+ if (groupPath === 'transform.rotation')
2635
+ return '旋转';
2636
+ if (groupPath === 'transform.scale')
2637
+ return '缩放';
2638
+ return fallback;
2639
+ }
2378
2640
  function createInspectorVectorHeaderButton(doc, title, active) {
2379
- const button = doc.createElement('button');
2380
- button.type = 'button';
2641
+ const mount = registerInspectorUiMount(createEditorUiButton({ document: doc, text: '', title }));
2642
+ const button = mount.element;
2381
2643
  button.title = title;
2382
2644
  button.dataset.editorTooltip = title;
2383
- button.style.cssText = [
2384
- 'width:22px',
2385
- 'height:22px',
2386
- 'padding:0',
2387
- `border:1px solid ${active ? 'var(--fps-editor-accent)' : 'var(--fps-editor-border)'}`,
2388
- 'border-radius:3px',
2389
- `background:${active ? 'var(--fps-editor-accent-soft)' : 'var(--fps-editor-button-bg)'}`,
2390
- `color:${active ? 'var(--fps-editor-accent)' : 'var(--fps-editor-text)'}`,
2391
- 'display:inline-flex',
2392
- 'align-items:center',
2393
- 'justify-content:center',
2394
- 'cursor:pointer',
2395
- 'flex:0 0 auto',
2396
- ].join(';');
2645
+ button.className = `${button.className || ''} fps-editor-inspector-icon-button`.trim();
2646
+ button.dataset.editorUiActive = String(active);
2397
2647
  return button;
2398
2648
  }
2399
2649
  function getInspectorPropertyGroupAccess(properties) {
@@ -2451,31 +2701,6 @@ function createInspectorStatusTitle(access, effect, detail) {
2451
2701
  parts.push(detail);
2452
2702
  return [...new Set(parts)].join(' ');
2453
2703
  }
2454
- function createInspectorReadonlyValueShell(doc, access, effect = 'active', title) {
2455
- const valueElement = doc.createElement('div');
2456
- valueElement.dataset.editorInspectorAccess = access;
2457
- valueElement.dataset.editorInspectorEffect = effect;
2458
- valueElement.title = title ?? createInspectorStatusTitle(access, effect);
2459
- const warningLike = effect === 'default' || effect === 'derived' || access === 'runtime' || effect === 'runtime';
2460
- const unsupported = effect === 'unsupported';
2461
- valueElement.style.cssText = [
2462
- 'min-width:0',
2463
- 'min-height:24px',
2464
- 'display:flex',
2465
- 'align-items:center',
2466
- 'gap:5px',
2467
- 'padding:3px 6px',
2468
- `border:1px solid ${unsupported ? 'var(--fps-editor-danger-border)' : warningLike ? 'var(--fps-editor-warn-border)' : 'var(--fps-editor-readonly-border)'}`,
2469
- 'border-radius:3px',
2470
- `background:${unsupported ? 'var(--fps-editor-danger-soft)' : warningLike ? 'var(--fps-editor-warn-soft)' : 'var(--fps-editor-readonly-bg)'}`,
2471
- `color:${unsupported ? 'var(--fps-editor-danger-text)' : warningLike ? 'var(--fps-editor-warn)' : 'var(--fps-editor-readonly-text)'}`,
2472
- warningLike ? 'font-style:italic' : '',
2473
- ].filter(Boolean).join(';');
2474
- const icon = createLocalEditorIcon(doc, 'lock', { size: 11, strokeWidth: 2.3 });
2475
- icon.style.opacity = '0.78';
2476
- valueElement.appendChild(icon);
2477
- return valueElement;
2478
- }
2479
2704
  function appendInspectorReadonlyTextValue(doc, parent, value, access, effect = 'active', title) {
2480
2705
  const valueText = doc.createElement('span');
2481
2706
  valueText.textContent = value;
@@ -2484,152 +2709,252 @@ function appendInspectorReadonlyTextValue(doc, parent, value, access, effect = '
2484
2709
  parent.title = title ?? createInspectorStatusTitle(access, effect);
2485
2710
  }
2486
2711
  function createInspectorReadonlyCopyButton(doc, value, label) {
2487
- const button = doc.createElement('button');
2488
- button.type = 'button';
2712
+ const mount = registerInspectorUiMount(createEditorUiButton({ document: doc, text: '', title: `Copy ${label}` }));
2713
+ const button = mount.element;
2489
2714
  button.dataset.editorInspectorReadonlyCopy = 'true';
2490
2715
  button.dataset.editorInspectorReadonlyCopyValue = value;
2491
2716
  button.dataset.editorTooltip = `Copy ${label}`;
2492
2717
  button.setAttribute('aria-label', `Copy ${label}`);
2493
2718
  button.title = `Copy ${label}`;
2494
- button.style.cssText = [
2495
- 'width:20px',
2496
- 'height:20px',
2497
- 'min-width:20px',
2498
- 'margin-left:auto',
2499
- 'padding:0',
2500
- 'border:1px solid transparent',
2501
- 'border-radius:3px',
2502
- 'background:transparent',
2503
- 'color:currentColor',
2504
- 'display:inline-flex',
2505
- 'align-items:center',
2506
- 'justify-content:center',
2507
- 'cursor:pointer',
2508
- 'opacity:0.72',
2509
- 'flex:0 0 20px',
2510
- ].join(';');
2719
+ button.className = `${button.className || ''} fps-editor-inspector-copy-button`.trim();
2511
2720
  button.appendChild(createLocalEditorIcon(doc, 'copy', { size: 12, strokeWidth: 2.2 }));
2512
2721
  return button;
2513
2722
  }
2514
2723
  function createInspectorReadonlyScalarControl(doc, value, access, effect = 'active', title, copyLabel = 'value') {
2515
- const valueElement = createInspectorReadonlyValueShell(doc, access, effect, title);
2724
+ const mount = registerInspectorUiMount(createEditorUiReadonlyControl({
2725
+ document: doc,
2726
+ value: '',
2727
+ error: effect === 'unsupported',
2728
+ }));
2729
+ const valueElement = mount.element;
2730
+ valueElement.dataset.editorInspectorAccess = access;
2731
+ valueElement.dataset.editorInspectorEffect = effect;
2732
+ valueElement.title = title ?? createInspectorStatusTitle(access, effect);
2733
+ valueElement.className = `${valueElement.className || ''} fps-editor-inspector-readonly-value`.trim();
2734
+ if (effect === 'default' || effect === 'derived' || effect === 'runtime' || access === 'runtime') {
2735
+ valueElement.className = `${valueElement.className} fps-editor-inspector-readonly-value--warning`.trim();
2736
+ }
2737
+ const icon = createLocalEditorIcon(doc, 'lock', { size: 11, strokeWidth: 2.3 });
2738
+ icon.style.opacity = '0.78';
2739
+ valueElement.appendChild(icon);
2516
2740
  appendInspectorReadonlyTextValue(doc, valueElement, value, access, effect, title);
2517
2741
  if (value)
2518
2742
  valueElement.appendChild(createInspectorReadonlyCopyButton(doc, value, copyLabel));
2519
2743
  return valueElement;
2520
2744
  }
2521
- function createInspectorReadonlyDetailsShell(doc, property, access) {
2522
- const effect = getInspectorPropertyEffect(property);
2523
- const warningLike = effect === 'default' || effect === 'derived' || access === 'runtime' || effect === 'runtime';
2524
- const unsupported = effect === 'unsupported';
2525
- const details = doc.createElement('details');
2526
- details.dataset.editorInspectorAccess = access;
2527
- details.dataset.editorInspectorEffect = effect;
2528
- details.title = createInspectorStatusTitle(access, effect, property.tooltip ?? property.disabledReason);
2529
- details.style.cssText = [
2530
- 'min-width:0',
2531
- 'max-width:100%',
2532
- 'padding:3px 6px',
2533
- `border:1px solid ${unsupported ? 'var(--fps-editor-danger-border)' : warningLike ? 'var(--fps-editor-warn-border)' : 'var(--fps-editor-readonly-border)'}`,
2534
- 'border-radius:3px',
2535
- `background:${unsupported ? 'var(--fps-editor-danger-soft)' : warningLike ? 'var(--fps-editor-warn-soft)' : 'var(--fps-editor-readonly-bg)'}`,
2536
- `color:${unsupported ? 'var(--fps-editor-danger-text)' : warningLike ? 'var(--fps-editor-warn)' : 'var(--fps-editor-readonly-text)'}`,
2537
- ].join(';');
2538
- return details;
2745
+ function bindEditorUiValueControl(control, target, property, options) {
2746
+ for (const input of control.nativeInputs) {
2747
+ applyLocalEditorBrowserInspectorControlBinding(input, target, property, options);
2748
+ }
2749
+ const bridgeInput = control.nativeInputs.find(input => input.classList?.contains?.('fps-editor-ui-proxy-input'))
2750
+ ?? control.nativeInputs[0];
2751
+ const nativeEventListeners = [];
2752
+ for (const input of control.nativeInputs) {
2753
+ for (const type of ['input', 'change', 'blur', 'keydown']) {
2754
+ const listener = (nativeEvent) => {
2755
+ if (input.dataset.editorUiBridgeDispatch === 'true')
2756
+ return;
2757
+ input.dataset.editorUiNativeEventActive = 'true';
2758
+ if (type === 'keydown'
2759
+ && nativeEvent.key === 'Enter'
2760
+ && !nativeEvent.isComposing) {
2761
+ input.dataset.editorUiKeyboardCommitPending = 'true';
2762
+ }
2763
+ queueMicrotask(() => {
2764
+ delete input.dataset.editorUiNativeEventActive;
2765
+ delete input.dataset.editorUiKeyboardCommitPending;
2766
+ });
2767
+ };
2768
+ input.addEventListener(type, listener, true);
2769
+ nativeEventListeners.push({ input, type, listener });
2770
+ }
2771
+ }
2772
+ const stopValueBridge = control.onValue(event => {
2773
+ if (!bridgeInput)
2774
+ return;
2775
+ if (bridgeInput.dataset.editorUiBridgeDispatch === 'true'
2776
+ || control.nativeInputs.some(input => (input.dataset.editorUiNativeEventActive === 'true'
2777
+ || input.dataset.editorUiKeyboardCommitPending === 'true')))
2778
+ return;
2779
+ // PCUI owns the in-control visual preview. Forwarding a synthetic preview
2780
+ // through the legacy property callback would synchronously rerender and
2781
+ // destroy an active slider/color gesture. Only bridge its final commit,
2782
+ // mapped back to the descriptor's existing native commit mode.
2783
+ if (event.phase === 'preview')
2784
+ return;
2785
+ bridgeInput.dataset.editorUiBridgeDispatch = 'true';
2786
+ const EventConstructor = bridgeInput.ownerDocument.defaultView?.Event ?? Event;
2787
+ const eventType = property.commitMode === 'live'
2788
+ ? 'input'
2789
+ : property.commitMode === 'blur'
2790
+ ? 'focusout'
2791
+ : 'change';
2792
+ bridgeInput.dispatchEvent(new EventConstructor(eventType, { bubbles: true }));
2793
+ delete bridgeInput.dataset.editorUiBridgeDispatch;
2794
+ });
2795
+ const disposeControl = control.dispose.bind(control);
2796
+ control.dispose = () => {
2797
+ stopValueBridge();
2798
+ for (const { input, type, listener } of nativeEventListeners) {
2799
+ input.removeEventListener(type, listener, true);
2800
+ }
2801
+ disposeControl();
2802
+ };
2803
+ registerInspectorUiMount(control);
2539
2804
  }
2540
2805
  function createInspectorInputBase(doc, target, property) {
2541
- const input = doc.createElement('input');
2542
- input.value = property.mixed ? '' : formatInspectorEditableValue(property.value, property);
2543
- input.placeholder = property.mixed ? '--' : '';
2544
- applyLocalEditorBrowserInspectorControlBinding(input, target, property);
2545
- input.style.cssText = createInspectorInputStyle();
2546
- return input;
2806
+ const control = createEditorUiTextControl({
2807
+ document: doc,
2808
+ value: property.mixed ? '' : formatInspectorEditableValue(property.value, property),
2809
+ mixed: property.mixed,
2810
+ placeholder: property.placeholder ?? '',
2811
+ disabled: !isInspectorPropertyEditable(property),
2812
+ readOnly: property.readOnly,
2813
+ });
2814
+ bindEditorUiValueControl(control, target, property);
2815
+ return control.element;
2547
2816
  }
2548
2817
  function createInspectorNumberControl(doc, target, property) {
2549
- const input = createInspectorInputBase(doc, target, property);
2550
- input.type = 'text';
2551
- input.inputMode = 'decimal';
2552
- input.dataset.serializedNumberStep = String(property.step ?? 0.1);
2553
- if (property.min != null)
2554
- input.dataset.serializedNumberMin = String(property.min);
2555
- if (property.max != null)
2556
- input.dataset.serializedNumberMax = String(property.max);
2557
- return input;
2818
+ const control = createEditorUiNumberControl({
2819
+ document: doc,
2820
+ value: typeof property.value === 'number' && Number.isFinite(property.value) ? property.value : 0,
2821
+ mixed: property.mixed,
2822
+ placeholder: property.placeholder ?? '',
2823
+ min: property.min,
2824
+ max: property.max,
2825
+ step: property.step ?? 0.1,
2826
+ precision: property.precision,
2827
+ stepPrecision: property.stepPrecision,
2828
+ disabled: !isInspectorPropertyEditable(property),
2829
+ readOnly: property.readOnly,
2830
+ });
2831
+ for (const input of control.nativeInputs) {
2832
+ input.inputMode = 'decimal';
2833
+ input.dataset.serializedNumberStep = String(property.step ?? 0.1);
2834
+ if (property.precision != null)
2835
+ input.dataset.serializedNumberPrecision = String(property.precision);
2836
+ if (property.stepPrecision != null)
2837
+ input.dataset.serializedNumberStepPrecision = String(property.stepPrecision);
2838
+ if (property.min != null)
2839
+ input.dataset.serializedNumberMin = String(property.min);
2840
+ if (property.max != null)
2841
+ input.dataset.serializedNumberMax = String(property.max);
2842
+ }
2843
+ bindEditorUiValueControl(control, target, property);
2844
+ if (property.path.startsWith('transform.scale.')
2845
+ && typeof property.value === 'number'
2846
+ && Number.isFinite(property.value)) {
2847
+ for (const input of control.nativeInputs) {
2848
+ input.dataset.serializedVectorBaseValue = String(property.value);
2849
+ }
2850
+ }
2851
+ return control.element;
2558
2852
  }
2559
2853
  function createInspectorTextControl(doc, target, property) {
2560
- const input = createInspectorInputBase(doc, target, property);
2561
- input.type = 'text';
2562
- return input;
2854
+ return createInspectorInputBase(doc, target, property);
2563
2855
  }
2564
2856
  function createInspectorBooleanControl(doc, target, property) {
2565
- const input = createInspectorInputBase(doc, target, property);
2566
- input.type = 'checkbox';
2567
- input.checked = property.value === true;
2568
- input.indeterminate = property.mixed === true;
2569
- input.style.cssText = [
2570
- 'width:16px',
2571
- 'height:16px',
2572
- 'accent-color:var(--fps-editor-accent)',
2573
- 'justify-self:start',
2574
- 'cursor:pointer',
2575
- 'box-shadow:0 0 0 1px var(--fps-editor-editable-border)',
2576
- ].join(';');
2577
- return input;
2578
- }
2579
- function createInspectorEnumControl(doc, target, property) {
2580
- const select = doc.createElement('select');
2581
- applyLocalEditorBrowserInspectorControlBinding(select, target, property);
2582
- select.style.cssText = createInspectorInputStyle();
2583
- for (const option of property.options ?? []) {
2584
- const item = doc.createElement('option');
2585
- item.value = String(option.value);
2586
- item.dataset.serializedOptionValue = JSON.stringify(option.value);
2587
- item.textContent = option.label;
2588
- item.disabled = option.disabled === true;
2589
- if (!property.mixed && option.value === property.value)
2590
- item.selected = true;
2591
- select.appendChild(item);
2592
- }
2593
- if (property.mixed) {
2594
- const mixed = doc.createElement('option');
2595
- mixed.value = '';
2596
- mixed.textContent = '--';
2597
- mixed.selected = true;
2598
- select.prepend(mixed);
2857
+ const control = createEditorUiBooleanControl({
2858
+ document: doc,
2859
+ value: property.value === true,
2860
+ mixed: property.mixed,
2861
+ disabled: !isInspectorPropertyEditable(property),
2862
+ readOnly: property.readOnly,
2863
+ ariaLabel: property.label,
2864
+ });
2865
+ const proxy = control.nativeInputs[0];
2866
+ if (proxy)
2867
+ proxy.indeterminate = property.mixed === true;
2868
+ bindEditorUiValueControl(control, target, property, { source: 'toggle' });
2869
+ return control.element;
2870
+ }
2871
+ function createInspectorEnumControl(doc, target, property, layerHost) {
2872
+ const options = property.options ?? [];
2873
+ const control = createEditorUiSelectControl({
2874
+ document: doc,
2875
+ value: property.value,
2876
+ options: options.map(option => ({
2877
+ label: option.label,
2878
+ value: option.value,
2879
+ disabled: option.disabled,
2880
+ })),
2881
+ mixed: property.mixed,
2882
+ disabled: !isInspectorPropertyEditable(property),
2883
+ readOnly: property.readOnly,
2884
+ ariaLabel: property.label,
2885
+ layerHost,
2886
+ });
2887
+ const select = control.nativeInputs[0];
2888
+ if (select) {
2889
+ for (const [index, option] of options.entries()) {
2890
+ const item = select.options[index];
2891
+ if (item)
2892
+ item.dataset.serializedOptionValue = JSON.stringify(option.value);
2893
+ }
2894
+ if (property.mixed) {
2895
+ const mixed = doc.createElement('option');
2896
+ mixed.value = '';
2897
+ mixed.textContent = '--';
2898
+ mixed.selected = true;
2899
+ select.prepend(mixed);
2900
+ }
2599
2901
  }
2600
- return select;
2902
+ bindEditorUiValueControl(control, target, property, { source: 'select' });
2903
+ return control.element;
2601
2904
  }
2602
2905
  function createInspectorVectorControl(doc, target, property) {
2603
- const wrapper = doc.createElement('div');
2604
- wrapper.dataset.inspectorVectorControl = 'true';
2605
- wrapper.style.cssText = 'display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;width:100%';
2606
2906
  const axes = property.control === 'vec2' ? ['x', 'y'] : ['x', 'y', 'z'];
2607
- if (property.control === 'vec2')
2608
- wrapper.style.gridTemplateColumns = 'repeat(2,minmax(0,1fr))';
2609
2907
  const value = isRecord(property.value) ? property.value : {};
2610
- for (const axis of axes) {
2611
- const input = createInspectorInputBase(doc, target, property);
2612
- input.type = 'text';
2908
+ const control = createEditorUiVectorControl({
2909
+ document: doc,
2910
+ dimensions: property.control === 'vec2' ? 2 : 3,
2911
+ value: axes.map(axis => typeof value[axis] === 'number' ? value[axis] : 0),
2912
+ mixed: property.mixed,
2913
+ min: property.min,
2914
+ max: property.max,
2915
+ step: property.step ?? 0.1,
2916
+ precision: property.precision,
2917
+ stepPrecision: property.stepPrecision,
2918
+ disabled: !isInspectorPropertyEditable(property),
2919
+ readOnly: property.readOnly,
2920
+ });
2921
+ control.element.dataset.inspectorVectorControl = 'true';
2922
+ control.nativeInputs.forEach((input, index) => {
2923
+ const axis = axes[index];
2924
+ if (!axis || !('inputMode' in input))
2925
+ return;
2613
2926
  input.inputMode = 'decimal';
2614
2927
  input.dataset.serializedNumberStep = String(property.step ?? 0.1);
2928
+ if (property.precision != null)
2929
+ input.dataset.serializedNumberPrecision = String(property.precision);
2930
+ if (property.stepPrecision != null)
2931
+ input.dataset.serializedNumberStepPrecision = String(property.stepPrecision);
2615
2932
  if (property.min != null)
2616
2933
  input.dataset.serializedNumberMin = String(property.min);
2617
2934
  if (property.max != null)
2618
2935
  input.dataset.serializedNumberMax = String(property.max);
2619
2936
  input.dataset.serializedVectorAxis = axis;
2620
- input.value = property.mixed ? '' : formatInspectorEditableValue(value[axis] ?? 0, property);
2621
2937
  input.title = property.tooltip ? `${axis.toUpperCase()}: ${property.tooltip}` : `${property.label}.${axis}`;
2622
2938
  input.dataset.editorTooltip = input.title;
2623
- wrapper.appendChild(input);
2624
- }
2625
- return wrapper;
2626
- }
2627
- function createInspectorColorControl(doc, target, property) {
2628
- const input = createInspectorInputBase(doc, target, property);
2629
- input.type = 'color';
2630
- input.value = colorValueToHex(property.value);
2631
- input.style.cssText = 'width:34px;height:26px;border:1px solid var(--fps-editor-editable-border);border-radius:3px;background:var(--fps-editor-editable-bg);padding:0;box-shadow:var(--fps-editor-editable-shadow)';
2632
- return input;
2939
+ });
2940
+ bindEditorUiValueControl(control, target, property);
2941
+ return control.element;
2942
+ }
2943
+ function createInspectorColorControl(doc, target, property, layerHost) {
2944
+ const hex = colorValueToHex(property.value);
2945
+ const value = [1, 3, 5].map(index => Number.parseInt(hex.slice(index, index + 2), 16) / 255).concat([1]);
2946
+ const control = createEditorUiColorControl({
2947
+ document: doc,
2948
+ value,
2949
+ channels: 4,
2950
+ mixed: property.mixed,
2951
+ disabled: !isInspectorPropertyEditable(property),
2952
+ readOnly: property.readOnly,
2953
+ ariaLabel: property.label,
2954
+ layerHost,
2955
+ });
2956
+ bindEditorUiValueControl(control, target, property, { source: 'color' });
2957
+ return control.element;
2633
2958
  }
2634
2959
  function createInspectorOpenRightDockTabControl(doc, property) {
2635
2960
  const targetTabOption = readInspectorControlOptionString(property, 'targetTab');
@@ -2642,17 +2967,10 @@ function createInspectorOpenRightDockTabControl(doc, property) {
2642
2967
  : 'rendering';
2643
2968
  const label = readInspectorControlOptionString(property, 'label')
2644
2969
  || (typeof property.value === 'string' ? property.value : property.label);
2645
- const button = createToolbarButton(doc, label, RIGHT_DOCK_TAB_ICONS[targetTab]);
2646
- button.type = 'button';
2970
+ const button = createInspectorActionButtonMount(doc, label, RIGHT_DOCK_TAB_ICONS[targetTab], property.tooltip ?? label);
2647
2971
  button.dataset.editorOpenRightDockTab = targetTab;
2648
2972
  button.title = property.tooltip ?? label;
2649
2973
  button.dataset.editorTooltip = button.title;
2650
- button.style.cssText = [
2651
- button.style.cssText,
2652
- 'width:100%',
2653
- 'justify-content:center',
2654
- 'height:28px',
2655
- ].filter(Boolean).join(';');
2656
2974
  return button;
2657
2975
  }
2658
2976
  function createInspectorRenderingActionButtonControl(doc, property) {
@@ -2662,8 +2980,7 @@ function createInspectorRenderingActionButtonControl(doc, property) {
2662
2980
  const icon = isLocalEditorIconName(iconName) ? iconName : 'save';
2663
2981
  const label = readInspectorControlOptionString(property, 'label')
2664
2982
  || (typeof property.value === 'string' ? property.value : property.label);
2665
- const button = createToolbarButton(doc, label, icon);
2666
- button.type = 'button';
2983
+ const button = createInspectorActionButtonMount(doc, label, icon, property.tooltip ?? label);
2667
2984
  if (actionId)
2668
2985
  button.dataset.editorRenderingAction = actionId;
2669
2986
  button.disabled = property.readOnly === true
@@ -2672,12 +2989,6 @@ function createInspectorRenderingActionButtonControl(doc, property) {
2672
2989
  || !actionId;
2673
2990
  button.title = property.tooltip ?? label;
2674
2991
  button.dataset.editorTooltip = button.title;
2675
- button.style.cssText = [
2676
- button.style.cssText,
2677
- 'width:100%',
2678
- 'justify-content:center',
2679
- 'height:28px',
2680
- ].filter(Boolean).join(';');
2681
2992
  return button;
2682
2993
  }
2683
2994
  function createInspectorActionButtonControl(doc, target, property) {
@@ -2687,8 +2998,7 @@ function createInspectorActionButtonControl(doc, target, property) {
2687
2998
  const icon = isLocalEditorIconName(iconName) ? iconName : 'asset';
2688
2999
  const label = readInspectorControlOptionString(property, 'label')
2689
3000
  || (typeof property.value === 'string' ? property.value : property.label);
2690
- const button = createToolbarButton(doc, label, icon);
2691
- button.type = 'button';
3001
+ const button = createInspectorActionButtonMount(doc, label, icon, property.tooltip ?? label);
2692
3002
  if (actionId)
2693
3003
  button.dataset.editorInspectorAction = actionId;
2694
3004
  button.dataset.editorInspectorActionTargetId = target.activeId ?? '';
@@ -2703,18 +3013,19 @@ function createInspectorActionButtonControl(doc, target, property) {
2703
3013
  || !actionId;
2704
3014
  button.title = property.tooltip ?? label;
2705
3015
  button.dataset.editorTooltip = button.title;
2706
- button.style.cssText = [
2707
- button.style.cssText,
2708
- 'width:100%',
2709
- 'justify-content:center',
2710
- 'height:28px',
2711
- ].filter(Boolean).join(';');
3016
+ return button;
3017
+ }
3018
+ function createInspectorActionButtonMount(doc, label, icon, title) {
3019
+ const mount = registerInspectorUiMount(createEditorUiButton({ document: doc, text: label, title }));
3020
+ const button = mount.element;
3021
+ button.className = `${button.className || ''} fps-editor-inspector-action-button`.trim();
3022
+ button.prepend(createLocalEditorIcon(doc, icon, { size: 13, strokeWidth: 2.1 }));
2712
3023
  return button;
2713
3024
  }
2714
3025
  function createInspectorMarkerRelationEditorControl(doc, property) {
2715
3026
  const panel = readInspectorMarkerRelationPanelState(property);
2716
3027
  const wrapper = doc.createElement('div');
2717
- wrapper.style.cssText = 'display:flex;flex-direction:column;gap:8px;width:100%;min-width:0';
3028
+ wrapper.className = 'fps-editor-inspector-special-control fps-editor-inspector-marker-relations';
2718
3029
  if (!panel) {
2719
3030
  wrapper.appendChild(createEmptyState(doc, '当前 marker 没有可编辑的关系数据。'));
2720
3031
  return wrapper;
@@ -2733,12 +3044,7 @@ function readInspectorMarkerRelationPanelState(property) {
2733
3044
  function createInspectorMaterialSlotListControl(doc, property) {
2734
3045
  const wrapper = doc.createElement('div');
2735
3046
  wrapper.dataset.editorInspectorMaterialSlotList = 'true';
2736
- wrapper.style.cssText = [
2737
- 'min-width:0',
2738
- 'display:flex',
2739
- 'flex-direction:column',
2740
- 'gap:6px',
2741
- ].join(';');
3047
+ wrapper.className = 'fps-editor-inspector-special-control fps-editor-inspector-material-slots';
2742
3048
  const items = readInspectorMaterialSlotListItems(property);
2743
3049
  if (items.length === 0) {
2744
3050
  wrapper.appendChild(createEmptyState(doc, 'No material slots.'));
@@ -2752,30 +3058,15 @@ function createInspectorMaterialSlotListControl(doc, property) {
2752
3058
  }
2753
3059
  function createInspectorMaterialSlotListItem(doc, item, labels) {
2754
3060
  const details = doc.createElement('details');
3061
+ details.className = 'fps-editor-inspector-material-slot';
2755
3062
  details.dataset.editorInspectorMaterialSlotItem = item.key;
2756
3063
  if (item.selectionTargetId) {
2757
3064
  details.dataset.editorInspectorMaterialSlotSelect = item.selectionTargetId;
2758
3065
  }
2759
3066
  details.dataset.editorInspectorAccess = 'readonly';
2760
3067
  details.dataset.editorInspectorEffect = 'active';
2761
- details.style.cssText = [
2762
- 'min-width:0',
2763
- 'border:1px solid var(--fps-editor-readonly-border)',
2764
- 'border-radius:3px',
2765
- 'background:var(--fps-editor-readonly-bg)',
2766
- 'color:var(--fps-editor-readonly-text)',
2767
- 'overflow:hidden',
2768
- ].join(';');
2769
3068
  const summary = doc.createElement('summary');
2770
- summary.style.cssText = [
2771
- 'min-width:0',
2772
- 'min-height:44px',
2773
- 'display:flex',
2774
- 'align-items:center',
2775
- 'gap:8px',
2776
- 'padding:6px 8px',
2777
- 'cursor:pointer',
2778
- ].join(';');
3069
+ summary.className = 'fps-editor-inspector-material-slot-summary';
2779
3070
  if (item.selectionTargetId) {
2780
3071
  summary.dataset.editorInspectorMaterialSlotSelect = item.selectionTargetId;
2781
3072
  summary.title = item.label;
@@ -2790,27 +3081,22 @@ function createInspectorMaterialSlotListItem(doc, item, labels) {
2790
3081
  preview: item.materialPreview,
2791
3082
  }, 'list'));
2792
3083
  const body = doc.createElement('div');
2793
- body.style.cssText = 'min-width:0;flex:1';
3084
+ body.className = 'fps-editor-inspector-card-body';
2794
3085
  const title = doc.createElement('div');
2795
3086
  title.textContent = item.label;
2796
- title.style.cssText = 'font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fps-editor-text-strong)';
3087
+ title.className = 'fps-editor-inspector-card-title';
2797
3088
  const subtitle = doc.createElement('div');
2798
3089
  subtitle.textContent = item.materialLabel
2799
3090
  ? `${labels.material}: ${item.materialLabel}`
2800
3091
  : labels.material;
2801
- subtitle.style.cssText = 'color:var(--fps-editor-muted);font-size:11px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
3092
+ subtitle.className = 'fps-editor-inspector-card-subtitle';
2802
3093
  body.appendChild(title);
2803
3094
  body.appendChild(subtitle);
2804
3095
  summary.appendChild(body);
2805
3096
  summary.appendChild(createBadge(doc, 'READONLY', { compact: true }));
2806
3097
  details.appendChild(summary);
2807
3098
  const content = doc.createElement('div');
2808
- content.style.cssText = [
2809
- 'display:flex',
2810
- 'flex-direction:column',
2811
- 'gap:4px',
2812
- 'padding:0 8px 8px',
2813
- ].join(';');
3099
+ content.className = 'fps-editor-inspector-material-slot-content';
2814
3100
  appendMaterialSlotListDetailRow(doc, content, labels.material, item.materialMeta || item.materialAssetId || item.materialLabel || '');
2815
3101
  appendMaterialSlotListDetailRow(doc, content, labels.slotId, item.slotId ?? '');
2816
3102
  appendMaterialSlotListDetailRow(doc, content, labels.ownerNodePath, item.ownerNodePath ?? '');
@@ -2832,27 +3118,13 @@ function appendMaterialSlotListDetailRow(doc, parent, label, value) {
2832
3118
  if (!value)
2833
3119
  return;
2834
3120
  const row = doc.createElement('div');
2835
- row.style.cssText = [
2836
- 'display:grid',
2837
- 'grid-template-columns:88px minmax(0,1fr)',
2838
- 'gap:8px',
2839
- 'align-items:start',
2840
- 'font-size:11px',
2841
- 'line-height:1.35',
2842
- ].join(';');
3121
+ row.className = 'fps-editor-inspector-material-slot-row';
2843
3122
  const labelElement = doc.createElement('div');
2844
3123
  labelElement.textContent = label;
2845
- labelElement.style.cssText = 'color:var(--fps-editor-muted);font-weight:800';
3124
+ labelElement.className = 'fps-editor-inspector-material-slot-label';
2846
3125
  const valueElement = doc.createElement('div');
2847
3126
  valueElement.textContent = value;
2848
- valueElement.style.cssText = [
2849
- 'min-width:0',
2850
- 'overflow:hidden',
2851
- 'text-overflow:ellipsis',
2852
- 'white-space:nowrap',
2853
- 'font-family:var(--fps-editor-mono-font)',
2854
- 'color:var(--fps-editor-readonly-text)',
2855
- ].join(';');
3127
+ valueElement.className = 'fps-editor-inspector-material-slot-value';
2856
3128
  valueElement.title = value;
2857
3129
  valueElement.dataset.editorTooltip = value;
2858
3130
  row.appendChild(labelElement);
@@ -2993,12 +3265,7 @@ function createInspectorGroundDecalLayoutControl(doc, _target, property, bindInp
2993
3265
  const surfaceMaxWidth = Math.max(96, Math.round(220 * aspectRatio));
2994
3266
  const wrapper = doc.createElement('div');
2995
3267
  wrapper.dataset.editorInspectorGroundDecalLayout = 'true';
2996
- wrapper.style.cssText = [
2997
- 'display:flex',
2998
- 'flex-direction:column',
2999
- 'gap:8px',
3000
- 'min-width:0',
3001
- ].join(';');
3268
+ wrapper.className = 'fps-editor-inspector-special-control fps-editor-inspector-ground-decal';
3002
3269
  const input = doc.createElement('input');
3003
3270
  input.type = 'hidden';
3004
3271
  input.value = serializeInspectorGroundDecalLayoutValue(layers, composite);
@@ -3846,6 +4113,7 @@ function commitInspectorGroundDecalLayoutValue(input, layers, fieldInputsByLayer
3846
4113
  function createInspectorAssetPickerCardControl(doc, _target, property, bindInput) {
3847
4114
  const wrapper = doc.createElement('div');
3848
4115
  wrapper.dataset.editorInspectorAssetPickerControl = 'true';
4116
+ wrapper.className = 'fps-editor-inspector-asset-picker';
3849
4117
  const hasCopyAction = !!readInspectorControlOptionString(property, 'copyActionValue');
3850
4118
  const isEditable = isInspectorPropertyEditable(property);
3851
4119
  const actionDisabledReason = readInspectorControlOptionString(property, 'actionDisabledReason')
@@ -3855,39 +4123,19 @@ function createInspectorAssetPickerCardControl(doc, _target, property, bindInput
3855
4123
  const coverageLabel = readInspectorControlOptionString(property, 'coverageLabel')
3856
4124
  || readInspectorControlOptionString(property, 'batchCoverageLabel')
3857
4125
  || '';
3858
- wrapper.style.cssText = [
3859
- 'min-width:0',
3860
- 'display:grid',
3861
- hasCopyAction ? 'grid-template-columns:1fr auto auto' : 'grid-template-columns:1fr auto',
3862
- 'align-items:stretch',
3863
- 'gap:6px',
3864
- ].join(';');
4126
+ wrapper.dataset.editorInspectorAssetPickerActions = hasCopyAction ? 'two' : 'one';
3865
4127
  const input = doc.createElement('input');
3866
4128
  input.type = 'hidden';
3867
4129
  input.value = property.mixed ? '' : String(property.value ?? '');
3868
4130
  bindInput(input, { source: 'asset' });
3869
4131
  wrapper.appendChild(input);
3870
- const card = doc.createElement('button');
3871
- card.type = 'button';
4132
+ const cardMount = registerInspectorUiMount(createEditorUiButton({ document: doc, text: '' }));
4133
+ const card = cardMount.element;
4134
+ card.className = `${card.className || ''} fps-editor-inspector-asset-card`.trim();
3872
4135
  card.dataset.editorInspectorAssetPicker = 'true';
3873
4136
  card.disabled = !isEditable;
3874
4137
  if (actionDisabledReason)
3875
4138
  card.title = actionDisabledReason;
3876
- card.style.cssText = [
3877
- 'min-width:0',
3878
- 'min-height:42px',
3879
- 'display:flex',
3880
- 'align-items:center',
3881
- 'gap:8px',
3882
- 'padding:6px 7px',
3883
- 'border:1px solid var(--fps-editor-editable-border)',
3884
- 'border-radius:3px',
3885
- 'background:var(--fps-editor-field)',
3886
- 'color:var(--fps-editor-text)',
3887
- 'text-align:left',
3888
- card.disabled ? 'cursor:not-allowed' : 'cursor:pointer',
3889
- card.disabled ? 'opacity:0.72' : '',
3890
- ].filter(Boolean).join(';');
3891
4139
  const label = readInspectorControlOptionString(property, 'currentLabel')
3892
4140
  || readInspectorControlOptionString(property, 'placeholder')
3893
4141
  || (property.mixed ? '--' : String(property.value || 'None'));
@@ -3901,60 +4149,40 @@ function createInspectorAssetPickerCardControl(doc, _target, property, bindInput
3901
4149
  preview,
3902
4150
  }, 'list'));
3903
4151
  const body = doc.createElement('div');
3904
- body.style.cssText = 'min-width:0;flex:1';
4152
+ body.className = 'fps-editor-inspector-card-body';
3905
4153
  const title = doc.createElement('div');
3906
4154
  title.textContent = label;
3907
- title.style.cssText = 'font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
4155
+ title.className = 'fps-editor-inspector-card-title';
3908
4156
  const subtitle = doc.createElement('div');
3909
4157
  subtitle.textContent = meta;
3910
- subtitle.style.cssText = 'color:var(--fps-editor-muted);font-size:11px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
4158
+ subtitle.className = 'fps-editor-inspector-card-subtitle';
3911
4159
  body.appendChild(title);
3912
4160
  body.appendChild(subtitle);
3913
4161
  card.appendChild(body);
3914
4162
  wrapper.appendChild(card);
3915
- const action = doc.createElement('button');
3916
- action.type = 'button';
4163
+ const actionMount = registerInspectorUiMount(createEditorUiButton({
4164
+ document: doc,
4165
+ text: readInspectorControlOptionString(property, 'actionLabel') || '替换',
4166
+ }));
4167
+ const action = actionMount.element;
4168
+ action.className = `${action.className || ''} fps-editor-inspector-asset-action`.trim();
3917
4169
  action.dataset.editorInspectorAssetPicker = 'true';
3918
4170
  action.disabled = card.disabled;
3919
- action.textContent = readInspectorControlOptionString(property, 'actionLabel') || '替换';
3920
4171
  if (actionDisabledReason)
3921
4172
  action.title = actionDisabledReason;
3922
- action.style.cssText = [
3923
- 'width:54px',
3924
- 'min-height:42px',
3925
- 'padding:0 8px',
3926
- 'border:1px solid var(--fps-editor-editable-border)',
3927
- 'border-radius:3px',
3928
- 'background:var(--fps-editor-button-bg)',
3929
- 'color:var(--fps-editor-text)',
3930
- 'font-size:11px',
3931
- 'font-weight:900',
3932
- action.disabled ? 'cursor:not-allowed' : 'cursor:pointer',
3933
- action.disabled ? 'opacity:0.72' : '',
3934
- ].filter(Boolean).join(';');
3935
4173
  wrapper.appendChild(action);
3936
4174
  const copyValue = readInspectorControlOptionString(property, 'copyActionValue');
3937
4175
  if (copyValue) {
3938
- const copyAction = doc.createElement('button');
3939
- copyAction.type = 'button';
4176
+ const copyMount = registerInspectorUiMount(createEditorUiButton({
4177
+ document: doc,
4178
+ text: readInspectorControlOptionString(property, 'copyActionLabel') || '复制',
4179
+ }));
4180
+ const copyAction = copyMount.element;
4181
+ copyAction.className = `${copyAction.className || ''} fps-editor-inspector-asset-action`.trim();
3940
4182
  copyAction.dataset.editorInspectorAssetCopy = 'true';
3941
4183
  copyAction.dataset.editorInspectorAssetCopyValue = copyValue;
3942
4184
  copyAction.disabled = card.disabled;
3943
- copyAction.textContent = readInspectorControlOptionString(property, 'copyActionLabel') || '复制';
3944
4185
  copyAction.title = readInspectorControlOptionString(property, 'copyActionTooltip');
3945
- copyAction.style.cssText = [
3946
- 'width:48px',
3947
- 'min-height:42px',
3948
- 'padding:0 8px',
3949
- 'border:1px solid var(--fps-editor-editable-border)',
3950
- 'border-radius:3px',
3951
- 'background:var(--fps-editor-button-bg)',
3952
- 'color:var(--fps-editor-text)',
3953
- 'font-size:11px',
3954
- 'font-weight:900',
3955
- copyAction.disabled ? 'cursor:not-allowed' : 'cursor:pointer',
3956
- copyAction.disabled ? 'opacity:0.72' : '',
3957
- ].filter(Boolean).join(';');
3958
4186
  wrapper.appendChild(copyAction);
3959
4187
  }
3960
4188
  if (card.disabled && (coverageLabel || actionDisabledReason)) {
@@ -3988,36 +4216,24 @@ function createInspectorReadonlyControl(doc, _target, property) {
3988
4216
  function createInspectorObjectReadonlyControl(doc, property) {
3989
4217
  const access = getInspectorPropertyAccess(property);
3990
4218
  const effect = getInspectorPropertyEffect(property);
3991
- const details = createInspectorReadonlyDetailsShell(doc, property, access);
3992
- const summary = doc.createElement('summary');
3993
- summary.style.cssText = 'cursor:pointer;display:flex;align-items:center;gap:5px;overflow:hidden;white-space:nowrap';
4219
+ const formattedValue = formatLocalEditorBrowserInspectorValue(property.value);
4220
+ const mount = registerInspectorUiMount(createEditorUiExpandableReadonlyControl({
4221
+ document: doc,
4222
+ summary: formatInspectorObjectSummary(property.value),
4223
+ value: formattedValue,
4224
+ error: effect === 'unsupported',
4225
+ warning: effect === 'default' || effect === 'derived' || effect === 'runtime' || access === 'runtime',
4226
+ }));
4227
+ const details = mount.element;
4228
+ details.dataset.editorInspectorAccess = access;
4229
+ details.dataset.editorInspectorEffect = effect;
4230
+ details.title = createInspectorStatusTitle(access, effect, property.tooltip ?? property.disabledReason);
4231
+ const summary = mount.summary;
3994
4232
  const icon = createLocalEditorIcon(doc, 'lock', { size: 11, strokeWidth: 2.3 });
3995
4233
  icon.style.opacity = '0.78';
3996
- summary.appendChild(icon);
3997
- const summaryText = doc.createElement('span');
3998
- summaryText.textContent = formatInspectorObjectSummary(property.value);
3999
- summaryText.style.cssText = 'min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
4000
- summary.appendChild(summaryText);
4001
- const formattedValue = formatLocalEditorBrowserInspectorValue(property.value);
4234
+ summary.prepend(icon);
4002
4235
  if (formattedValue)
4003
4236
  summary.appendChild(createInspectorReadonlyCopyButton(doc, formattedValue, property.label));
4004
- details.appendChild(summary);
4005
- const pre = doc.createElement('pre');
4006
- pre.textContent = formattedValue;
4007
- pre.style.cssText = [
4008
- 'max-height:220px',
4009
- 'overflow:auto',
4010
- 'white-space:pre-wrap',
4011
- 'word-break:break-word',
4012
- 'margin:6px 0 0',
4013
- 'padding:7px',
4014
- `border:1px solid ${effect === 'unsupported' ? 'var(--fps-editor-danger-border)' : effect === 'default' || effect === 'derived' || effect === 'runtime' || access === 'runtime' ? 'var(--fps-editor-warn-border)' : 'var(--fps-editor-readonly-border)'}`,
4015
- 'border-radius:3px',
4016
- 'background:var(--fps-editor-field)',
4017
- 'font-size:11px',
4018
- 'line-height:1.45',
4019
- ].join(';');
4020
- details.appendChild(pre);
4021
4237
  return details;
4022
4238
  }
4023
4239
  export function applyLocalEditorBrowserInspectorControlBinding(element, target, property, options) {
@@ -4058,11 +4274,8 @@ function createInspectorInputStyle() {
4058
4274
  }
4059
4275
  function appendReadOnlyRow(doc, parent, label, value) {
4060
4276
  const valueElement = createInspectorReadonlyScalarControl(doc, value, 'readonly', 'active', 'Read-only summary');
4061
- const row = createPropertyRow(doc, label, valueElement);
4277
+ const row = createInspectorPropertyRowShell(doc, label, valueElement);
4062
4278
  row.dataset.editorInspectorAccess = 'readonly';
4063
- const labelElement = row.firstElementChild;
4064
- if (labelElement)
4065
- labelElement.style.cssText = createInspectorPropertyLabelStyle('readonly', 'active');
4066
4279
  parent.appendChild(row);
4067
4280
  }
4068
4281
  function createSelectionSummaryInspectorObject(state) {