@fps-games/editor 0.2.1-beta.3 → 0.2.1-beta.4

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 (514) hide show
  1. package/dist/build-info.json +44 -44
  2. package/dist/editor-commands/capabilities/assets.d.ts +8 -0
  3. package/dist/editor-commands/capabilities/assets.d.ts.map +1 -0
  4. package/dist/{agent-bridge → editor-commands}/capabilities/assets.js +41 -41
  5. package/dist/editor-commands/capabilities/assets.js.map +1 -0
  6. package/dist/editor-commands/capabilities/editor-state.d.ts +5 -0
  7. package/dist/editor-commands/capabilities/editor-state.d.ts.map +1 -0
  8. package/dist/{agent-bridge → editor-commands}/capabilities/editor-state.js +22 -22
  9. package/dist/editor-commands/capabilities/editor-state.js.map +1 -0
  10. package/dist/editor-commands/capabilities/hierarchy.d.ts +4 -0
  11. package/dist/editor-commands/capabilities/hierarchy.d.ts.map +1 -0
  12. package/dist/{agent-bridge → editor-commands}/capabilities/hierarchy.js +5 -5
  13. package/dist/editor-commands/capabilities/hierarchy.js.map +1 -0
  14. package/dist/editor-commands/capabilities/host-lifecycle.d.ts +11 -0
  15. package/dist/editor-commands/capabilities/host-lifecycle.d.ts.map +1 -0
  16. package/dist/editor-commands/capabilities/host-lifecycle.js +149 -0
  17. package/dist/editor-commands/capabilities/host-lifecycle.js.map +1 -0
  18. package/dist/editor-commands/capabilities/prefabs.d.ts +5 -0
  19. package/dist/editor-commands/capabilities/prefabs.d.ts.map +1 -0
  20. package/dist/{agent-bridge → editor-commands}/capabilities/prefabs.js +93 -93
  21. package/dist/editor-commands/capabilities/prefabs.js.map +1 -0
  22. package/dist/editor-commands/capabilities/scene-objects.d.ts +8 -0
  23. package/dist/editor-commands/capabilities/scene-objects.d.ts.map +1 -0
  24. package/dist/editor-commands/capabilities/scene-objects.js +480 -0
  25. package/dist/editor-commands/capabilities/scene-objects.js.map +1 -0
  26. package/dist/editor-commands/capabilities/selection.d.ts +5 -0
  27. package/dist/editor-commands/capabilities/selection.d.ts.map +1 -0
  28. package/dist/editor-commands/capabilities/selection.js +60 -0
  29. package/dist/editor-commands/capabilities/selection.js.map +1 -0
  30. package/dist/editor-commands/capabilities/shadows.d.ts +5 -0
  31. package/dist/editor-commands/capabilities/shadows.d.ts.map +1 -0
  32. package/dist/{agent-bridge → editor-commands}/capabilities/shadows.js +74 -74
  33. package/dist/editor-commands/capabilities/shadows.js.map +1 -0
  34. package/dist/editor-commands/capabilities/transform.d.ts +5 -0
  35. package/dist/editor-commands/capabilities/transform.d.ts.map +1 -0
  36. package/dist/editor-commands/capabilities/transform.js +164 -0
  37. package/dist/editor-commands/capabilities/transform.js.map +1 -0
  38. package/dist/editor-commands/capabilities/ui-regions.d.ts +4 -0
  39. package/dist/editor-commands/capabilities/ui-regions.d.ts.map +1 -0
  40. package/dist/{agent-bridge → editor-commands}/capabilities/ui-regions.js +55 -57
  41. package/dist/editor-commands/capabilities/ui-regions.js.map +1 -0
  42. package/dist/editor-commands/capabilities/viewport.d.ts +5 -0
  43. package/dist/editor-commands/capabilities/viewport.d.ts.map +1 -0
  44. package/dist/{agent-bridge → editor-commands}/capabilities/viewport.js +100 -100
  45. package/dist/editor-commands/capabilities/viewport.js.map +1 -0
  46. package/dist/editor-commands/command-sources.d.ts +7 -0
  47. package/dist/editor-commands/command-sources.d.ts.map +1 -0
  48. package/dist/editor-commands/command-sources.js +34 -0
  49. package/dist/editor-commands/command-sources.js.map +1 -0
  50. package/dist/editor-commands/diagnostics.d.ts +12 -0
  51. package/dist/editor-commands/diagnostics.d.ts.map +1 -0
  52. package/dist/{agent-bridge → editor-commands}/diagnostics.js +4 -4
  53. package/dist/editor-commands/diagnostics.js.map +1 -0
  54. package/dist/{agent-bridge → editor-commands}/index.d.ts +1 -1
  55. package/dist/editor-commands/index.d.ts.map +1 -0
  56. package/dist/{agent-bridge → editor-commands}/index.js +1 -1
  57. package/dist/editor-commands/index.js.map +1 -0
  58. package/dist/editor-commands/register.d.ts +4 -0
  59. package/dist/editor-commands/register.d.ts.map +1 -0
  60. package/dist/{agent-bridge → editor-commands}/register.js +323 -286
  61. package/dist/editor-commands/register.js.map +1 -0
  62. package/dist/{agent-bridge → editor-commands}/shared.d.ts +80 -80
  63. package/dist/editor-commands/shared.d.ts.map +1 -0
  64. package/dist/{agent-bridge → editor-commands}/shared.js +29 -29
  65. package/dist/editor-commands/shared.js.map +1 -0
  66. package/dist/editor-commands/source-types.d.ts +110 -0
  67. package/dist/editor-commands/source-types.d.ts.map +1 -0
  68. package/dist/editor-commands/source-types.js.map +1 -0
  69. package/dist/editor-plugin-commands.d.ts +4 -0
  70. package/dist/editor-plugin-commands.d.ts.map +1 -0
  71. package/dist/editor-plugin-commands.js +18 -0
  72. package/dist/editor-plugin-commands.js.map +1 -0
  73. package/dist/index.d.ts +2 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/local-editor-commands.d.ts +2 -0
  78. package/dist/local-editor-commands.d.ts.map +1 -0
  79. package/dist/local-editor-commands.js +2 -0
  80. package/dist/local-editor-commands.js.map +1 -0
  81. package/dist/local-editor-harness.d.ts +35 -21
  82. package/dist/local-editor-harness.d.ts.map +1 -1
  83. package/dist/local-editor-harness.js +1721 -367
  84. package/dist/local-editor-harness.js.map +1 -1
  85. package/dist/local-editor-prefab-stage-transaction.d.ts +2 -1
  86. package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -1
  87. package/dist/local-editor-prefab-stage-transaction.js +6 -5
  88. package/dist/local-editor-prefab-stage-transaction.js.map +1 -1
  89. package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
  90. package/dist/local-editor-scene-view-interaction-runtime.js +2 -5
  91. package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
  92. package/dist/playable-local-editor-entry.d.ts +10 -0
  93. package/dist/playable-local-editor-entry.d.ts.map +1 -1
  94. package/dist/playable-local-editor-entry.js +10 -2
  95. package/dist/playable-local-editor-entry.js.map +1 -1
  96. package/dist/playable-local-editor-host.d.ts +3 -32
  97. package/dist/playable-local-editor-host.d.ts.map +1 -1
  98. package/dist/playable-local-editor-host.js +6 -70
  99. package/dist/playable-local-editor-host.js.map +1 -1
  100. package/dist/playable-product-local-editor.d.ts +1 -2
  101. package/dist/playable-product-local-editor.d.ts.map +1 -1
  102. package/dist/playable-product-local-editor.js +0 -1
  103. package/dist/playable-product-local-editor.js.map +1 -1
  104. package/dist/playable-product-projection-preview.d.ts.map +1 -1
  105. package/dist/playable-product-projection-preview.js +1 -1
  106. package/dist/playable-product-projection-preview.js.map +1 -1
  107. package/dist/playable-product-scene-capabilities.d.ts +0 -2
  108. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  109. package/dist/playable-product-scene-capabilities.js +33 -6
  110. package/dist/playable-product-scene-capabilities.js.map +1 -1
  111. package/dist/playable-runtime-babylon.d.ts +4 -0
  112. package/dist/playable-runtime-babylon.d.ts.map +1 -1
  113. package/dist/playable-runtime-babylon.js +4 -0
  114. package/dist/playable-runtime-babylon.js.map +1 -1
  115. package/dist/playable-sdk.d.ts +1 -1
  116. package/dist/playable-sdk.d.ts.map +1 -1
  117. package/dist/playable-sdk.js.map +1 -1
  118. package/dist/playable-standard-project.d.ts +0 -2
  119. package/dist/playable-standard-project.d.ts.map +1 -1
  120. package/dist/playable-standard-project.js +1 -2
  121. package/dist/playable-standard-project.js.map +1 -1
  122. package/dist/project-service-projection.d.ts +16 -0
  123. package/dist/project-service-projection.d.ts.map +1 -0
  124. package/dist/project-service-projection.js +67 -0
  125. package/dist/project-service-projection.js.map +1 -0
  126. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +18 -0
  127. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
  128. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +54 -18
  129. package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
  130. package/node_modules/@fps-games/babylon-renderer/package.json +9 -9
  131. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +1 -0
  132. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  133. package/node_modules/@fps-games/editor-babylon/dist/projection.js +1 -1
  134. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  135. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
  136. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +127 -13
  137. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
  138. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  139. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +66 -1
  140. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  141. package/node_modules/@fps-games/editor-babylon/package.json +6 -6
  142. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts +32 -0
  143. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.d.ts.map +1 -0
  144. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js +254 -0
  145. package/node_modules/@fps-games/editor-browser/dist/editor-command-service-client.js.map +1 -0
  146. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
  147. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  148. package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
  149. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  150. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts +68 -0
  151. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.d.ts.map +1 -0
  152. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js +650 -0
  153. package/node_modules/@fps-games/editor-browser/dist/local-editor-command-center.js.map +1 -0
  154. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +1 -0
  155. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -1
  156. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +22 -0
  157. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -1
  158. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +8 -0
  159. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
  160. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +117 -6
  161. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
  162. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +14 -1
  163. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
  164. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +100 -1
  165. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
  166. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +8 -1
  167. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  168. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +75 -2
  169. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  170. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +37 -12
  171. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  172. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  173. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +25 -2
  174. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  175. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +332 -107
  176. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  177. package/node_modules/@fps-games/editor-browser/package.json +7 -7
  178. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts +107 -0
  179. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.d.ts.map +1 -0
  180. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js +1211 -0
  181. package/node_modules/@fps-games/editor-core/dist/editor-authoring-host.js.map +1 -0
  182. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts +34 -0
  183. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.d.ts.map +1 -0
  184. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js +260 -0
  185. package/node_modules/@fps-games/editor-core/dist/editor-command-capability-adapter.js.map +1 -0
  186. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts +9 -0
  187. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.d.ts.map +1 -0
  188. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js +14 -0
  189. package/node_modules/@fps-games/editor-core/dist/editor-command-composed-authority.js.map +1 -0
  190. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts +18 -0
  191. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.d.ts.map +1 -0
  192. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js +113 -0
  193. package/node_modules/@fps-games/editor-core/dist/editor-command-observability.js.map +1 -0
  194. package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts +82 -0
  195. package/node_modules/@fps-games/editor-core/dist/editor-command-system.d.ts.map +1 -0
  196. package/node_modules/@fps-games/editor-core/dist/editor-command-system.js +1098 -0
  197. package/node_modules/@fps-games/editor-core/dist/editor-command-system.js.map +1 -0
  198. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -7
  199. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
  200. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +62 -103
  201. package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
  202. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts +30 -0
  203. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.d.ts.map +1 -0
  204. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js +540 -0
  205. package/node_modules/@fps-games/editor-core/dist/editor-service-gateway.js.map +1 -0
  206. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts +9 -0
  207. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.d.ts.map +1 -0
  208. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js +61 -0
  209. package/node_modules/@fps-games/editor-core/dist/editor-session-authority.js.map +1 -0
  210. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +55 -0
  211. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  212. package/node_modules/@fps-games/editor-core/dist/editor-session.js +247 -6
  213. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  214. package/node_modules/@fps-games/editor-core/dist/index.d.ts +6 -2
  215. package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -1
  216. package/node_modules/@fps-games/editor-core/dist/index.js +6 -2
  217. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -1
  218. package/node_modules/@fps-games/editor-core/package.json +6 -6
  219. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +0 -1
  220. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -1
  221. package/node_modules/@fps-games/editor-forge-play/dist/index.js +0 -1
  222. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -1
  223. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  224. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts +2 -0
  225. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
  226. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  227. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +41 -1
  228. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  229. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +27 -1
  230. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  231. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
  232. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +2 -0
  233. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  234. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +214 -7
  235. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  236. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +1 -0
  237. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  238. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +11 -3
  239. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  240. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -4
  241. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  242. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +0 -1
  243. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  244. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  245. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +77 -31
  246. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  247. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +8 -1
  248. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  249. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
  250. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts +21 -1
  251. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.d.ts.map +1 -1
  252. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js +90 -4
  253. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/asset-fields.js.map +1 -1
  254. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts +27 -1
  255. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
  256. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +161 -1
  257. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  258. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts +2 -2
  259. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.d.ts.map +1 -1
  260. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js +5 -92
  261. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/inspector.js.map +1 -1
  262. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts +7 -0
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.d.ts.map +1 -1
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js +26 -9
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/scene-inspector.js.map +1 -1
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts +9 -0
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.d.ts.map +1 -1
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js +19 -8
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/slot-inspector.js.map +1 -1
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts +5 -0
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.d.ts.map +1 -1
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js +16 -4
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/material-override-inspector.js.map +1 -1
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +9 -0
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +12 -2
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts +2 -1
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.d.ts.map +1 -1
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js +10 -5
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/product/ground-decal.js.map +1 -1
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +1 -0
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
  286. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +17 -82
  287. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
  288. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +53 -57
  289. package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
  290. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.d.ts.map +1 -1
  291. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js +3 -2
  292. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-session.js.map +1 -1
  293. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts +10 -0
  294. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.d.ts.map +1 -0
  295. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js +256 -0
  296. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-authoring-commands.js.map +1 -0
  297. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
  298. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +7 -5
  299. package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
  300. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  301. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +8 -0
  302. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  303. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +1 -0
  304. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  305. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
  306. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +134 -12
  307. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  308. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
  309. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +47 -0
  310. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
  311. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts +27 -0
  312. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.d.ts.map +1 -0
  313. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js +592 -0
  314. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-service-vite.js.map +1 -0
  315. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +3 -1
  316. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  317. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +2 -1
  318. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  319. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
  320. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +61 -6
  321. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
  322. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +0 -2
  323. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
  324. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -10
  325. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
  326. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  327. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +21 -0
  328. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  329. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts +13 -0
  330. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.d.ts.map +1 -0
  331. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js +18 -0
  332. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-authoring-backend.js.map +1 -0
  333. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts +28 -0
  334. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.d.ts.map +1 -0
  335. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js +863 -0
  336. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-editor-service.js.map +1 -0
  337. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +2 -0
  338. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
  339. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
  340. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  341. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts +1626 -0
  342. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.d.ts.map +1 -0
  343. package/node_modules/@fps-games/editor-protocol/dist/{agent-bridge.js → editor-command-capabilities.js} +766 -620
  344. package/node_modules/@fps-games/editor-protocol/dist/editor-command-capabilities.js.map +1 -0
  345. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts +69 -0
  346. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.d.ts.map +1 -0
  347. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js +22 -0
  348. package/node_modules/@fps-games/editor-protocol/dist/editor-command-trace.js.map +1 -0
  349. package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts +136 -0
  350. package/node_modules/@fps-games/editor-protocol/dist/editor-command.d.ts.map +1 -0
  351. package/node_modules/@fps-games/editor-protocol/dist/editor-command.js +2 -0
  352. package/node_modules/@fps-games/editor-protocol/dist/editor-command.js.map +1 -0
  353. package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts +225 -0
  354. package/node_modules/@fps-games/editor-protocol/dist/editor-service.d.ts.map +1 -0
  355. package/node_modules/@fps-games/editor-protocol/dist/editor-service.js +4 -0
  356. package/node_modules/@fps-games/editor-protocol/dist/editor-service.js.map +1 -0
  357. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +6 -3
  358. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  359. package/node_modules/@fps-games/editor-protocol/dist/index.js +6 -3
  360. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  361. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  362. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  363. package/node_modules/@fps-games/editor-ui/package.json +1 -1
  364. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  365. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  366. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  367. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  368. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  369. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  370. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  371. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  372. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  373. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  374. package/node_modules/@fps-games/plugin-assets/package.json +6 -6
  375. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +1 -0
  376. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -1
  377. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +78 -4
  378. package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -1
  379. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
  380. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
  381. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
  382. package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
  383. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  384. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  385. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  386. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  387. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  388. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  389. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  390. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  391. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  392. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  393. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  394. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  395. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  396. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  397. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  398. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  399. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  400. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
  401. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
  402. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
  403. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
  404. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  405. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  406. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  407. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  408. package/package.json +23 -23
  409. package/dist/agent-bridge/capabilities/assets.d.ts +0 -8
  410. package/dist/agent-bridge/capabilities/assets.d.ts.map +0 -1
  411. package/dist/agent-bridge/capabilities/assets.js.map +0 -1
  412. package/dist/agent-bridge/capabilities/editor-state.d.ts +0 -5
  413. package/dist/agent-bridge/capabilities/editor-state.d.ts.map +0 -1
  414. package/dist/agent-bridge/capabilities/editor-state.js.map +0 -1
  415. package/dist/agent-bridge/capabilities/hierarchy.d.ts +0 -4
  416. package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +0 -1
  417. package/dist/agent-bridge/capabilities/hierarchy.js.map +0 -1
  418. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +0 -11
  419. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +0 -1
  420. package/dist/agent-bridge/capabilities/host-lifecycle.js +0 -149
  421. package/dist/agent-bridge/capabilities/host-lifecycle.js.map +0 -1
  422. package/dist/agent-bridge/capabilities/prefabs.d.ts +0 -5
  423. package/dist/agent-bridge/capabilities/prefabs.d.ts.map +0 -1
  424. package/dist/agent-bridge/capabilities/prefabs.js.map +0 -1
  425. package/dist/agent-bridge/capabilities/scene-objects.d.ts +0 -8
  426. package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +0 -1
  427. package/dist/agent-bridge/capabilities/scene-objects.js +0 -480
  428. package/dist/agent-bridge/capabilities/scene-objects.js.map +0 -1
  429. package/dist/agent-bridge/capabilities/selection.d.ts +0 -5
  430. package/dist/agent-bridge/capabilities/selection.d.ts.map +0 -1
  431. package/dist/agent-bridge/capabilities/selection.js +0 -60
  432. package/dist/agent-bridge/capabilities/selection.js.map +0 -1
  433. package/dist/agent-bridge/capabilities/shadows.d.ts +0 -5
  434. package/dist/agent-bridge/capabilities/shadows.d.ts.map +0 -1
  435. package/dist/agent-bridge/capabilities/shadows.js.map +0 -1
  436. package/dist/agent-bridge/capabilities/transform.d.ts +0 -5
  437. package/dist/agent-bridge/capabilities/transform.d.ts.map +0 -1
  438. package/dist/agent-bridge/capabilities/transform.js +0 -164
  439. package/dist/agent-bridge/capabilities/transform.js.map +0 -1
  440. package/dist/agent-bridge/capabilities/ui-regions.d.ts +0 -4
  441. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +0 -1
  442. package/dist/agent-bridge/capabilities/ui-regions.js.map +0 -1
  443. package/dist/agent-bridge/capabilities/viewport.d.ts +0 -5
  444. package/dist/agent-bridge/capabilities/viewport.d.ts.map +0 -1
  445. package/dist/agent-bridge/capabilities/viewport.js.map +0 -1
  446. package/dist/agent-bridge/capability-sources.d.ts +0 -7
  447. package/dist/agent-bridge/capability-sources.d.ts.map +0 -1
  448. package/dist/agent-bridge/capability-sources.js +0 -34
  449. package/dist/agent-bridge/capability-sources.js.map +0 -1
  450. package/dist/agent-bridge/diagnostics.d.ts +0 -12
  451. package/dist/agent-bridge/diagnostics.d.ts.map +0 -1
  452. package/dist/agent-bridge/diagnostics.js.map +0 -1
  453. package/dist/agent-bridge/index.d.ts.map +0 -1
  454. package/dist/agent-bridge/index.js.map +0 -1
  455. package/dist/agent-bridge/register.d.ts +0 -4
  456. package/dist/agent-bridge/register.d.ts.map +0 -1
  457. package/dist/agent-bridge/register.js.map +0 -1
  458. package/dist/agent-bridge/shared.d.ts.map +0 -1
  459. package/dist/agent-bridge/shared.js.map +0 -1
  460. package/dist/agent-bridge/source-types.d.ts +0 -110
  461. package/dist/agent-bridge/source-types.d.ts.map +0 -1
  462. package/dist/agent-bridge/source-types.js.map +0 -1
  463. package/dist/editor-plugin-agent-capabilities.d.ts +0 -4
  464. package/dist/editor-plugin-agent-capabilities.d.ts.map +0 -1
  465. package/dist/editor-plugin-agent-capabilities.js +0 -64
  466. package/dist/editor-plugin-agent-capabilities.js.map +0 -1
  467. package/dist/local-editor-agent-actions.d.ts +0 -43
  468. package/dist/local-editor-agent-actions.d.ts.map +0 -1
  469. package/dist/local-editor-agent-actions.js +0 -321
  470. package/dist/local-editor-agent-actions.js.map +0 -1
  471. package/dist/local-editor-agent-bridge-transport.d.ts +0 -129
  472. package/dist/local-editor-agent-bridge-transport.d.ts.map +0 -1
  473. package/dist/local-editor-agent-bridge-transport.js +0 -403
  474. package/dist/local-editor-agent-bridge-transport.js.map +0 -1
  475. package/dist/local-editor-agent-bridge.d.ts +0 -2
  476. package/dist/local-editor-agent-bridge.d.ts.map +0 -1
  477. package/dist/local-editor-agent-bridge.js +0 -2
  478. package/dist/local-editor-agent-bridge.js.map +0 -1
  479. package/dist/local-editor-agent-context.d.ts +0 -68
  480. package/dist/local-editor-agent-context.d.ts.map +0 -1
  481. package/dist/local-editor-agent-context.js +0 -716
  482. package/dist/local-editor-agent-context.js.map +0 -1
  483. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts +0 -22
  484. package/node_modules/@fps-games/editor-core/dist/agent-bridge.d.ts.map +0 -1
  485. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js +0 -106
  486. package/node_modules/@fps-games/editor-core/dist/agent-bridge.js.map +0 -1
  487. package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts +0 -17
  488. package/node_modules/@fps-games/editor-core/dist/agent-interaction.d.ts.map +0 -1
  489. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js +0 -14
  490. package/node_modules/@fps-games/editor-core/dist/agent-interaction.js.map +0 -1
  491. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts +0 -23
  492. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts.map +0 -1
  493. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js +0 -47
  494. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +0 -1
  495. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts +0 -112
  496. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.d.ts.map +0 -1
  497. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js +0 -159
  498. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/agent-descriptions.js.map +0 -1
  499. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts +0 -15
  500. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.d.ts.map +0 -1
  501. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js +0 -76
  502. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/session-metadata.js.map +0 -1
  503. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +0 -1622
  504. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +0 -1
  505. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +0 -1
  506. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts +0 -68
  507. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.d.ts.map +0 -1
  508. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js +0 -23
  509. package/node_modules/@fps-games/editor-protocol/dist/agent-trace.js.map +0 -1
  510. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +0 -187
  511. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +0 -1
  512. package/node_modules/@fps-games/editor-protocol/dist/agent.js +0 -5
  513. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +0 -1
  514. /package/dist/{agent-bridge → editor-commands}/source-types.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-editor-command-center.js","sourceRoot":"","sources":["../src/local-editor-command-center.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type EditorCommandCatalogEntry,\n type EditorCommandInvocation,\n type EditorCommandJsonValue,\n type EditorCommandManifest,\n type EditorCommandOperationSnapshot,\n} from '@fps-games/editor-protocol';\nimport type { LocalEditorCommandServiceClient } from './editor-command-service-client';\n\nexport interface LocalEditorCommandCenterOptions {\n readonly document: Document;\n readonly host: HTMLElement;\n readonly client: LocalEditorCommandServiceClient;\n readonly clientId?: string;\n readonly getSelectionIds?: () => { selectedIds: readonly string[]; activeId: string | null };\n readonly onOpenChange?: (open: boolean) => void;\n}\n\nexport interface LocalEditorCommandCenter {\n readonly root: HTMLDivElement;\n open(query?: string): Promise<void>;\n close(): void;\n dispose(): void;\n}\n\nexport type LocalEditorCommandConsoleInstruction =\n | { kind: 'help'; commandId?: string }\n | { kind: 'search'; query: string }\n | { kind: 'history' }\n | { kind: 'rerun'; index: number }\n | { kind: 'invoke'; commandId: string; input: EditorCommandJsonValue };\n\nexport interface LocalEditorCommandShortcutEvent {\n readonly key: string;\n readonly metaKey?: boolean;\n readonly ctrlKey?: boolean;\n readonly altKey?: boolean;\n readonly shiftKey?: boolean;\n}\n\nexport interface LocalEditorCommandShortcutDispatchEvent extends LocalEditorCommandShortcutEvent {\n preventDefault(): void;\n}\n\nexport interface LocalEditorCommandPresentationCatalog {\n get(commandId: string): EditorCommandCatalogEntry | undefined;\n refresh(): Promise<boolean>;\n queueShortcut(\n commandId: string,\n event: LocalEditorCommandShortcutDispatchEvent,\n canInvoke: () => boolean,\n invoke: () => void,\n ): boolean;\n dispose(): void;\n}\n\nexport interface LocalEditorCommandMenuEntry {\n readonly entry: EditorCommandCatalogEntry;\n readonly path: readonly string[];\n readonly group?: string;\n readonly order: number;\n}\n\nexport function listLocalEditorCommandMenuEntries(\n entries: readonly EditorCommandCatalogEntry[],\n): LocalEditorCommandMenuEntry[] {\n return entries.flatMap(entry => {\n const menu = entry.manifest.presentation?.menu;\n return menu?.path.length ? [{\n entry,\n path: [...menu.path],\n ...(menu.group ? { group: menu.group } : {}),\n order: menu.order ?? 0,\n }] : [];\n }).sort((left, right) => (\n left.path[0].localeCompare(right.path[0])\n || (left.group ?? '').localeCompare(right.group ?? '')\n || left.order - right.order\n || left.path.join('/').localeCompare(right.path.join('/'))\n || left.entry.manifest.id.localeCompare(right.entry.manifest.id)\n ));\n}\n\nexport function matchesLocalEditorCommandShortcut(\n shortcut: string | undefined,\n event: LocalEditorCommandShortcutEvent,\n): boolean {\n if (!shortcut?.trim()) return false;\n return shortcut.split(/\\s*\\/\\s*/).some(alternative => {\n const tokens = alternative.split('+').map(token => token.trim().toLocaleLowerCase()).filter(Boolean);\n const key = tokens[tokens.length - 1];\n if (!key) return false;\n const modifiers = new Set(tokens.slice(0, -1));\n const hasMod = modifiers.has('mod');\n const requiresCtrl = modifiers.has('ctrl');\n const requiresMeta = modifiers.has('meta') || modifiers.has('cmd');\n if (hasMod ? !(event.metaKey || event.ctrlKey) : (\n !!event.ctrlKey !== requiresCtrl || !!event.metaKey !== requiresMeta\n )) return false;\n if (!!event.shiftKey !== modifiers.has('shift')) return false;\n if (!!event.altKey !== modifiers.has('alt')) return false;\n return event.key.toLocaleLowerCase() === key;\n });\n}\n\nexport function createLocalEditorCommandPresentationCatalog(\n loadEntries: () => Promise<readonly EditorCommandCatalogEntry[]>,\n): LocalEditorCommandPresentationCatalog {\n let disposed = false;\n let generation = 0;\n let entries = new Map<string, EditorCommandCatalogEntry>();\n let pendingRefresh: Promise<boolean> | null = null;\n\n const catalog: LocalEditorCommandPresentationCatalog = Object.freeze({\n get(commandId: string) {\n return entries.get(commandId);\n },\n refresh() {\n if (disposed) return Promise.resolve(false);\n if (pendingRefresh) return pendingRefresh;\n const refreshGeneration = generation;\n const refresh = (async (): Promise<boolean> => {\n try {\n const loadedEntries = await loadEntries();\n if (disposed || refreshGeneration !== generation) return false;\n entries = new Map(loadedEntries.map(entry => [entry.manifest.id, entry]));\n return true;\n } catch {\n // Keep the last complete catalog for future shortcut matching, but\n // fail this attempt closed because availability could be stale.\n return false;\n }\n })();\n pendingRefresh = refresh;\n void refresh.finally(() => {\n if (pendingRefresh === refresh) pendingRefresh = null;\n });\n return refresh;\n },\n queueShortcut(\n commandId: string,\n event: LocalEditorCommandShortcutDispatchEvent,\n canInvoke: () => boolean,\n invoke: () => void,\n ) {\n if (disposed) return false;\n const currentEntry = entries.get(commandId);\n if (!currentEntry) {\n // An empty cache may be the result of a transient initial failure.\n // Recover without guessing a literal shortcut or consuming the event.\n void catalog.refresh();\n return false;\n }\n if (!matchesLocalEditorCommandShortcut(\n currentEntry.manifest.presentation?.shortcut,\n event,\n )) {\n return false;\n }\n event.preventDefault();\n const shortcutEvent: LocalEditorCommandShortcutEvent = {\n key: event.key,\n metaKey: event.metaKey,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n };\n void catalog.refresh().then((refreshed) => {\n if (\n !refreshed\n || disposed\n || !canInvoke()\n ) {\n return;\n }\n const refreshedEntry = entries.get(commandId);\n if (\n refreshedEntry?.availability.available === true\n && matchesLocalEditorCommandShortcut(\n refreshedEntry.manifest.presentation?.shortcut,\n shortcutEvent,\n )\n ) {\n invoke();\n }\n });\n return true;\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n generation += 1;\n entries.clear();\n },\n });\n return catalog;\n}\n\nexport function applyLocalEditorCommandSelection(\n manifest: EditorCommandManifest,\n input: Record<string, EditorCommandJsonValue>,\n selection: { selectedIds: readonly string[]; activeId: string | null },\n): Record<string, EditorCommandJsonValue> {\n const result = { ...input };\n const binding = manifest.presentation?.selectionBinding;\n if (binding?.selectedIds && selection.selectedIds.length) result[binding.selectedIds] = [...selection.selectedIds];\n if (binding?.activeId && selection.activeId) result[binding.activeId] = selection.activeId;\n return result;\n}\n\nexport function formatLocalEditorCommandMetadata(manifest: EditorCommandManifest): string {\n const shortcut = manifest.presentation?.shortcut;\n const menuPath = manifest.presentation?.menu?.path.join(' / ');\n return `${manifest.presentation?.category ?? 'General'} · ${manifest.target} · ${manifest.access} · ${manifest.effects.persistence}${menuPath ? ` · ${menuPath}` : ''}${shortcut ? ` · ${shortcut}` : ''}`;\n}\n\ninterface InvocationHistoryEntry {\n readonly commandId: string;\n readonly input: EditorCommandJsonValue;\n readonly operation: EditorCommandOperationSnapshot | null;\n readonly timestamp: number;\n}\n\nconst HISTORY_LIMIT = 50;\n\nexport function parseLocalEditorCommandConsole(input: string): LocalEditorCommandConsoleInstruction {\n const source = input.trim();\n if (!source) throw new Error('Command Console input is empty.');\n const firstSpace = source.search(/\\s/);\n const command = firstSpace < 0 ? source : source.slice(0, firstSpace);\n const remainder = firstSpace < 0 ? '' : source.slice(firstSpace).trim();\n if (command === 'help') return { kind: 'help', ...(remainder ? { commandId: remainder } : {}) };\n if (command === 'search') {\n if (!remainder) throw new Error('search requires a query.');\n return { kind: 'search', query: remainder };\n }\n if (command === 'history') {\n if (remainder) throw new Error('history does not accept arguments.');\n return { kind: 'history' };\n }\n if (command === 'rerun') {\n const index = Number(remainder);\n if (!Number.isSafeInteger(index) || index < 1) throw new Error('rerun requires a positive history index.');\n return { kind: 'rerun', index };\n }\n let parsed: unknown = {};\n if (remainder) {\n try { parsed = JSON.parse(remainder); }\n catch (error) { throw new Error(`Command input must be JSON: ${error instanceof Error ? error.message : String(error)}`); }\n }\n return { kind: 'invoke', commandId: command, input: toJsonValue(parsed) };\n}\n\nexport function createLocalEditorCommandCenter(\n options: LocalEditorCommandCenterOptions,\n): LocalEditorCommandCenter {\n const doc = options.document;\n const storageKey = `fps-editor-command-center:${options.client.serviceInstanceId}`;\n const history = readHistory(doc, `${storageKey}:history`);\n const favorites = new Set(readStringList(doc, `${storageKey}:favorites`));\n let disposed = false;\n let open = false;\n let searchGeneration = 0;\n let selectedIndex = 0;\n let entries: EditorCommandCatalogEntry[] = [];\n\n const root = doc.createElement('div');\n root.className = 'fps-editor-ui-command-center';\n root.dataset.editorCommandCenter = 'true';\n root.dataset.editorWorkbenchRegion = 'modal';\n root.style.cssText = [\n 'position:fixed', 'inset:0', 'z-index:2147483643', 'display:none',\n 'align-items:flex-start', 'justify-content:center', 'padding:10vh 24px 24px',\n 'background:rgba(0,0,0,.42)', 'font-family:var(--fps-editor-font)',\n 'color:var(--fps-editor-text)', 'pointer-events:auto',\n ].join(';');\n const panel = doc.createElement('section');\n panel.setAttribute('role', 'dialog');\n panel.setAttribute('aria-modal', 'true');\n panel.setAttribute('aria-label', 'Command Center');\n panel.style.cssText = [\n 'width:min(760px,calc(100vw - 48px))', 'max-height:78vh', 'display:flex',\n 'flex-direction:column', 'overflow:hidden', 'border:1px solid var(--fps-editor-border)',\n 'border-radius:6px', 'background:var(--fps-editor-panel)',\n 'box-shadow:var(--fps-editor-shadow-modal)',\n ].join(';');\n const search = doc.createElement('input');\n search.type = 'search';\n search.placeholder = '搜索命令,或按 Tab 打开 Console';\n search.setAttribute('aria-label', '搜索编辑器命令');\n search.style.cssText = [\n 'height:42px', 'padding:0 14px', 'border:0',\n 'border-bottom:1px solid var(--fps-editor-border)', 'outline:none',\n 'background:var(--fps-editor-field)', 'color:var(--fps-editor-text-strong)',\n 'font:inherit',\n ].join(';');\n const tabs = doc.createElement('div');\n tabs.style.cssText = 'display:flex;gap:4px;padding:6px 8px;border-bottom:1px solid var(--fps-editor-border-soft);background:var(--fps-editor-panel-soft)';\n const paletteTab = button('Palette');\n const menuTab = button('Menus');\n const consoleTab = button('Console');\n tabs.append(paletteTab, menuTab, consoleTab);\n const list = doc.createElement('div');\n list.setAttribute('role', 'listbox');\n list.style.cssText = 'min-height:160px;overflow:auto;padding:6px';\n const menuSurface = doc.createElement('div');\n menuSurface.setAttribute('role', 'menu');\n menuSurface.style.cssText = 'display:none;min-height:160px;overflow:auto;padding:8px';\n const consoleSurface = doc.createElement('div');\n consoleSurface.style.cssText = 'display:none;flex-direction:column;gap:8px;padding:10px';\n const consoleInput = doc.createElement('textarea');\n consoleInput.rows = 4;\n consoleInput.placeholder = '<command-id> [JSON] · help · search · history · rerun';\n consoleInput.setAttribute('aria-label', 'Command Console input');\n consoleInput.style.cssText = [\n 'width:100%', 'box-sizing:border-box', 'resize:vertical', 'padding:9px',\n 'border:1px solid var(--fps-editor-editable-border)', 'border-radius:3px',\n 'background:var(--fps-editor-editable-bg)', 'color:var(--fps-editor-text)',\n 'font:12px/1.5 var(--fps-editor-mono-font,monospace)',\n ].join(';');\n const consoleActions = doc.createElement('div');\n consoleActions.style.cssText = 'display:flex;gap:6px;justify-content:flex-end';\n const useSelectionButton = button('使用当前 Selection');\n const runButton = button('运行');\n consoleActions.append(useSelectionButton, runButton);\n const output = doc.createElement('pre');\n output.dataset.editorCommandOutput = 'true';\n output.style.cssText = [\n 'min-height:90px', 'max-height:240px', 'overflow:auto', 'margin:0', 'padding:9px',\n 'border:1px solid var(--fps-editor-readonly-border)', 'border-radius:3px',\n 'background:var(--fps-editor-readonly-bg)', 'color:var(--fps-editor-readonly-text)',\n 'font:11px/1.45 var(--fps-editor-mono-font,monospace)', 'white-space:pre-wrap',\n ].join(';');\n consoleSurface.append(consoleInput, consoleActions, output);\n const footer = doc.createElement('div');\n footer.style.cssText = 'display:flex;justify-content:space-between;padding:6px 10px;border-top:1px solid var(--fps-editor-border-soft);color:var(--fps-editor-muted);font-size:11px';\n footer.textContent = '↑↓ 选择 · Enter 运行 · Tab Console · Esc 关闭';\n panel.append(search, tabs, list, menuSurface, consoleSurface, footer);\n root.appendChild(panel);\n options.host.appendChild(root);\n\n const onGlobalKeyDown = (event: KeyboardEvent): void => {\n const key = event.key.toLocaleLowerCase();\n if (!open && (event.metaKey || event.ctrlKey) && event.shiftKey && key === 'p') {\n event.preventDefault();\n void controller.open();\n return;\n }\n if (!open) return;\n if (key === 'escape') {\n event.preventDefault();\n controller.close();\n return;\n }\n if (key === 'tab') {\n event.preventDefault();\n showConsole(consoleSurface.style.display === 'none');\n return;\n }\n if (consoleSurface.style.display !== 'none') {\n if ((event.metaKey || event.ctrlKey) && key === 'enter') {\n event.preventDefault();\n void runConsole();\n }\n return;\n }\n if (menuSurface.style.display !== 'none') return;\n if (key === 'arrowdown' || key === 'arrowup') {\n event.preventDefault();\n if (entries.length) selectedIndex = (selectedIndex + (key === 'arrowdown' ? 1 : -1) + entries.length) % entries.length;\n renderEntries();\n return;\n }\n if (key === 'enter') {\n event.preventDefault();\n const entry = entries[selectedIndex];\n if (entry) void activateEntry(entry);\n }\n };\n const onSearchInput = (): void => { void refresh(search.value); };\n const onRootClick = (event: MouseEvent): void => { if (event.target === root) controller.close(); };\n const onPaletteTab = (): void => showConsole(false);\n const onMenuTab = (): void => showMenu();\n const onConsoleTab = (): void => showConsole(true);\n const onRun = (): void => { void runConsole(); };\n const onUseSelection = (): void => { void injectSelection(); };\n doc.addEventListener('keydown', onGlobalKeyDown);\n search.addEventListener('input', onSearchInput);\n root.addEventListener('click', onRootClick);\n paletteTab.addEventListener('click', onPaletteTab);\n menuTab.addEventListener('click', onMenuTab);\n consoleTab.addEventListener('click', onConsoleTab);\n runButton.addEventListener('click', onRun);\n useSelectionButton.addEventListener('click', onUseSelection);\n\n const controller: LocalEditorCommandCenter = Object.freeze({\n root,\n async open(query = '') {\n if (disposed) throw new Error('Command Center is disposed.');\n open = true;\n root.style.display = 'flex';\n options.onOpenChange?.(true);\n search.value = query;\n showConsole(false);\n await refresh(query);\n search.focus();\n },\n close() {\n if (!open) return;\n open = false;\n root.style.display = 'none';\n options.onOpenChange?.(false);\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n controller.close();\n doc.removeEventListener('keydown', onGlobalKeyDown);\n search.removeEventListener('input', onSearchInput);\n root.removeEventListener('click', onRootClick);\n paletteTab.removeEventListener('click', onPaletteTab);\n menuTab.removeEventListener('click', onMenuTab);\n consoleTab.removeEventListener('click', onConsoleTab);\n runButton.removeEventListener('click', onRun);\n useSelectionButton.removeEventListener('click', onUseSelection);\n root.remove();\n },\n });\n return controller;\n\n async function refresh(query: string): Promise<void> {\n const generation = ++searchGeneration;\n const response = await options.client.request(query.trim()\n ? { kind: 'commands.search', query: query.trim(), limit: 100 }\n : { kind: 'commands.list', limit: 100 });\n if (generation !== searchGeneration || disposed || !response.ok || response.kind !== 'commands') return;\n entries = [...response.page.commands].sort((left, right) => {\n const leftFavorite = favorites.has(left.manifest.id) ? 1 : 0;\n const rightFavorite = favorites.has(right.manifest.id) ? 1 : 0;\n return rightFavorite - leftFavorite || left.manifest.id.localeCompare(right.manifest.id);\n });\n selectedIndex = Math.min(selectedIndex, Math.max(0, entries.length - 1));\n renderEntries();\n renderMenus();\n }\n\n function renderMenus(): void {\n menuSurface.replaceChildren();\n let currentSection = '';\n let section: HTMLElement | null = null;\n for (const item of listLocalEditorCommandMenuEntries(entries)) {\n const sectionName = item.path[0];\n if (sectionName !== currentSection) {\n currentSection = sectionName;\n section = doc.createElement('section');\n section.style.cssText = 'display:flex;flex-direction:column;gap:3px;margin-bottom:10px';\n const heading = doc.createElement('h3');\n heading.textContent = sectionName;\n heading.style.cssText = 'margin:0 0 3px;padding:0 6px;color:var(--fps-editor-muted-strong);font-size:11px;font-weight:800';\n section.appendChild(heading);\n menuSurface.appendChild(section);\n }\n const menuButton = button(item.path.slice(1).join(' / ') || item.entry.manifest.title);\n menuButton.setAttribute('role', 'menuitem');\n menuButton.disabled = !item.entry.availability.available;\n menuButton.style.cssText += [\n 'width:100%',\n 'justify-content:space-between',\n 'text-align:left',\n `opacity:${item.entry.availability.available ? '1' : '.45'}`,\n ].join(';');\n const shortcut = item.entry.manifest.presentation?.shortcut;\n if (shortcut) {\n const shortcutLabel = doc.createElement('span');\n shortcutLabel.textContent = shortcut;\n shortcutLabel.style.cssText = 'margin-left:auto;color:var(--fps-editor-muted);font-size:10px';\n menuButton.appendChild(shortcutLabel);\n }\n if (!item.entry.availability.available) {\n menuButton.title = item.entry.availability.reasons.map(reason => reason.message).join('; ');\n }\n menuButton.addEventListener('click', () => { void activateEntry(item.entry); });\n section?.appendChild(menuButton);\n }\n }\n\n function renderEntries(): void {\n list.replaceChildren();\n entries.forEach((entry, index) => {\n const row = doc.createElement('button');\n row.type = 'button';\n row.setAttribute('role', 'option');\n row.setAttribute('aria-selected', index === selectedIndex ? 'true' : 'false');\n row.disabled = !entry.availability.available;\n row.style.cssText = [\n 'width:100%', 'display:grid', 'grid-template-columns:minmax(0,1fr) auto', 'gap:8px',\n 'padding:8px 10px', 'border:0', 'border-radius:3px', 'text-align:left',\n `background:${index === selectedIndex ? 'var(--fps-editor-row-selected)' : 'transparent'}`,\n `color:${index === selectedIndex ? 'var(--fps-editor-row-selected-text)' : 'var(--fps-editor-text)'}`,\n `opacity:${entry.availability.available ? '1' : '.45'}`,\n `cursor:${entry.availability.available ? 'pointer' : 'not-allowed'}`,\n ].join(';');\n const main = doc.createElement('span');\n main.style.cssText = 'min-width:0;display:flex;flex-direction:column;gap:2px';\n const title = doc.createElement('strong');\n title.textContent = `${favorites.has(entry.manifest.id) ? '★ ' : ''}${entry.manifest.title}`;\n const id = doc.createElement('span');\n id.textContent = entry.manifest.id;\n id.style.cssText = 'color:var(--fps-editor-muted);font:11px var(--fps-editor-mono-font,monospace);overflow:hidden;text-overflow:ellipsis';\n main.append(title, id);\n if (!entry.availability.available) {\n const reasonText = doc.createElement('span');\n reasonText.textContent = entry.availability.reasons.map(item => item.message).join('; ');\n reasonText.style.cssText = 'color:var(--fps-editor-disabled-text);font-size:10px';\n main.append(reasonText);\n }\n const meta = doc.createElement('span');\n meta.textContent = formatLocalEditorCommandMetadata(entry.manifest);\n meta.style.cssText = 'align-self:center;color:var(--fps-editor-muted-strong);font-size:10px;white-space:nowrap';\n row.append(main, meta);\n if (!entry.availability.available) {\n const reason = entry.availability.reasons.map(item => item.message).join('; ');\n row.title = reason;\n row.setAttribute('aria-description', reason);\n }\n row.addEventListener('pointerenter', () => { selectedIndex = index; }, { once: true });\n row.addEventListener('click', () => { selectedIndex = index; void activateEntry(entry); });\n row.addEventListener('contextmenu', (event) => {\n event.preventDefault();\n if (favorites.has(entry.manifest.id)) favorites.delete(entry.manifest.id);\n else favorites.add(entry.manifest.id);\n writeStringList(doc, `${storageKey}:favorites`, [...favorites]);\n void refresh(search.value);\n });\n list.appendChild(row);\n });\n }\n\n async function activateEntry(entry: EditorCommandCatalogEntry): Promise<void> {\n if (!entry.availability.available) return;\n if (canInvokeWithoutInput(entry.manifest)) {\n await invoke(entry.manifest, {});\n return;\n }\n showConsole(true);\n consoleInput.value = `${entry.manifest.id} ${JSON.stringify(createSchemaInputTemplate(entry.manifest.inputSchema), null, 2)}`;\n consoleInput.focus();\n }\n\n function showConsole(value: boolean): void {\n consoleSurface.style.display = value ? 'flex' : 'none';\n menuSurface.style.display = 'none';\n list.style.display = value ? 'none' : 'block';\n search.style.display = value ? 'none' : 'block';\n paletteTab.style.background = value ? 'var(--fps-editor-button)' : 'var(--fps-editor-button-active)';\n menuTab.style.background = 'var(--fps-editor-button)';\n consoleTab.style.background = value ? 'var(--fps-editor-button-active)' : 'var(--fps-editor-button)';\n if (value) consoleInput.focus();\n else search.focus();\n }\n\n function showMenu(): void {\n consoleSurface.style.display = 'none';\n list.style.display = 'none';\n menuSurface.style.display = 'block';\n search.style.display = 'none';\n paletteTab.style.background = 'var(--fps-editor-button)';\n menuTab.style.background = 'var(--fps-editor-button-active)';\n consoleTab.style.background = 'var(--fps-editor-button)';\n }\n\n async function runConsole(): Promise<void> {\n try {\n const instruction = parseLocalEditorCommandConsole(consoleInput.value);\n if (instruction.kind === 'help') {\n if (!instruction.commandId) {\n output.textContent = '语法: <command-id> [JSON] | help [id] | search <query> | history | rerun <index>';\n return;\n }\n output.textContent = format(await options.client.request({ kind: 'commands.describe', commandId: instruction.commandId }));\n return;\n }\n if (instruction.kind === 'search') {\n showConsole(false);\n search.value = instruction.query;\n await refresh(instruction.query);\n return;\n }\n if (instruction.kind === 'history') {\n output.textContent = format(history.map((entry, index) => ({ index: index + 1, commandId: entry.commandId, input: entry.input, status: entry.operation?.status, timestamp: entry.timestamp })));\n return;\n }\n if (instruction.kind === 'rerun') {\n const previous = history[instruction.index - 1];\n if (!previous) throw new Error(`History entry does not exist: ${instruction.index}`);\n const manifest = await describe(previous.commandId);\n await invoke(manifest, previous.input);\n return;\n }\n const manifest = await describe(instruction.commandId);\n await invoke(manifest, instruction.input);\n } catch (error) {\n output.textContent = format({ ok: false, error: error instanceof Error ? error.message : String(error) });\n }\n }\n\n async function describe(commandId: string): Promise<EditorCommandManifest> {\n const response = await options.client.request({ kind: 'commands.describe', commandId });\n if (!response.ok || response.kind !== 'command' || !response.command) throw new Error(`Command is not registered: ${commandId}`);\n if (!response.command.availability.available) throw new Error(response.command.availability.reasons.map(reason => reason.message).join('; ') || `Command is unavailable: ${commandId}`);\n return response.command.manifest;\n }\n\n async function invoke(manifest: EditorCommandManifest, input: EditorCommandJsonValue): Promise<void> {\n const requestId = createId();\n let expectedServiceRevision: number | undefined;\n let expectedServiceInstanceId: string | undefined;\n if (manifest.access === 'write') {\n const status = await options.client.request({ kind: 'status' });\n if (!status.ok || status.kind !== 'status') throw new Error('Editor Service status is unavailable.');\n expectedServiceRevision = status.status.documentRevision;\n expectedServiceInstanceId = status.status.serviceInstanceId;\n }\n const invocation: EditorCommandInvocation = {\n commandId: manifest.id,\n input,\n requestId,\n ...(manifest.access === 'write' ? { idempotencyKey: createId() } : {}),\n ...(expectedServiceRevision !== undefined ? {\n expectedRevision: {\n serviceInstanceId: expectedServiceInstanceId,\n document: expectedServiceRevision,\n },\n } : {}),\n principal: { type: 'human' },\n source: 'browser-ui',\n ...(options.clientId ? { clientId: options.clientId } : {}),\n };\n const response = await options.client.request({ kind: 'command.invoke', invocation, timeoutMs: 10_000 });\n const operation = response.ok && response.kind === 'operation' ? response.operation : null;\n history.unshift({ commandId: manifest.id, input, operation, timestamp: Date.now() });\n history.splice(HISTORY_LIMIT);\n writeHistory(doc, `${storageKey}:history`, history);\n output.textContent = format(response);\n showConsole(true);\n }\n\n async function injectSelection(): Promise<void> {\n const selection = options.getSelectionIds?.();\n if (!selection) return;\n let instruction: LocalEditorCommandConsoleInstruction;\n try { instruction = parseLocalEditorCommandConsole(consoleInput.value); }\n catch { return; }\n if (instruction.kind !== 'invoke' || !instruction.input || typeof instruction.input !== 'object' || Array.isArray(instruction.input)) return;\n const manifest = await describe(instruction.commandId);\n const input = applyLocalEditorCommandSelection(\n manifest,\n instruction.input as Record<string, EditorCommandJsonValue>,\n selection,\n );\n consoleInput.value = `${instruction.commandId} ${JSON.stringify(input, null, 2)}`;\n }\n\n function button(label: string): HTMLButtonElement {\n const element = doc.createElement('button');\n element.type = 'button';\n element.textContent = label;\n element.style.cssText = 'padding:5px 9px;border:1px solid var(--fps-editor-border);border-radius:3px;background:var(--fps-editor-button);color:var(--fps-editor-text);font:inherit;cursor:pointer';\n return element;\n }\n}\n\nfunction canInvokeWithoutInput(manifest: EditorCommandManifest): boolean {\n const required = manifest.inputSchema.required;\n return manifest.presentation?.inputMode === 'none' || !Array.isArray(required) || required.length === 0;\n}\n\nfunction createSchemaInputTemplate(schema: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n const properties = schema.properties;\n const required = Array.isArray(schema.required) ? schema.required : [];\n if (!properties || typeof properties !== 'object' || Array.isArray(properties)) return result;\n for (const key of required) {\n if (typeof key !== 'string') continue;\n const property = (properties as Record<string, any>)[key];\n result[key] = property?.default ?? (property?.type === 'array' ? [] : property?.type === 'number' ? 0 : property?.type === 'boolean' ? false : property?.type === 'object' ? {} : '');\n }\n return result;\n}\n\nfunction readHistory(doc: Document, key: string): InvocationHistoryEntry[] {\n try {\n const value = JSON.parse(doc.defaultView?.localStorage.getItem(key) ?? '[]');\n return Array.isArray(value) ? value.slice(0, HISTORY_LIMIT) : [];\n } catch { return []; }\n}\n\nfunction writeHistory(doc: Document, key: string, history: readonly InvocationHistoryEntry[]): void {\n try { doc.defaultView?.localStorage.setItem(key, JSON.stringify(history)); } catch { /* client-local storage is optional */ }\n}\n\nfunction readStringList(doc: Document, key: string): string[] {\n try {\n const value = JSON.parse(doc.defaultView?.localStorage.getItem(key) ?? '[]');\n return Array.isArray(value) ? value.filter(entry => typeof entry === 'string') : [];\n } catch { return []; }\n}\n\nfunction writeStringList(doc: Document, key: string, value: readonly string[]): void {\n try { doc.defaultView?.localStorage.setItem(key, JSON.stringify(value)); } catch { /* client-local storage is optional */ }\n}\n\nfunction format(value: unknown): string {\n return JSON.stringify(value, null, 2);\n}\n\nfunction createId(): string {\n return globalThis.crypto?.randomUUID?.() ?? `command-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\nfunction toJsonValue(value: unknown): EditorCommandJsonValue {\n return JSON.parse(JSON.stringify(value ?? null)) as EditorCommandJsonValue;\n}\n"]}
@@ -13,6 +13,7 @@ export interface LocalEditorInspectorPreviewVisibilityInput {
13
13
  rightDockVisible: boolean;
14
14
  activeRightTab: string;
15
15
  }
16
+ export declare function shouldRenderLocalEditorPreviewSurfaces(preview: Readonly<Record<string, unknown>>): boolean;
16
17
  export declare function disposeLocalEditorFormalSurfaces(disposers: ReadonlyArray<() => void>): void;
17
18
  export declare function shouldRenderLocalEditorInspectorPreview(input: LocalEditorInspectorPreviewVisibilityInput): boolean;
18
19
  export declare function createLocalEditorFormalSurfaceVisibilityController(options: LocalEditorFormalSurfaceVisibilityOptions): LocalEditorFormalSurfaceVisibilityController;
@@ -1 +1 @@
1
- {"version":3,"file":"local-editor-ui-formal-surface-visibility.d.ts","sourceRoot":"","sources":["../src/local-editor-ui-formal-surface-visibility.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4CAA4C;IAC3D,SAAS,IAAI,OAAO,CAAC;IACrB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,yCAAyC;IACxD,aAAa,IAAI,IAAI,CAAC;IACtB,gBAAgB,IAAI,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,0CAA0C;IACzD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,GACnC,IAAI,CAgBN;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,0CAA0C,GAChD,OAAO,CAMT;AAED,wBAAgB,kDAAkD,CAChE,OAAO,EAAE,yCAAyC,GACjD,4CAA4C,CAkB9C"}
1
+ {"version":3,"file":"local-editor-ui-formal-surface-visibility.d.ts","sourceRoot":"","sources":["../src/local-editor-ui-formal-surface-visibility.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4CAA4C;IAC3D,SAAS,IAAI,OAAO,CAAC;IACrB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,yCAAyC;IACxD,aAAa,IAAI,IAAI,CAAC;IACtB,gBAAgB,IAAI,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,0CAA0C;IACzD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAsBD,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACzC,OAAO,CAET;AAED,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,GACnC,IAAI,CAgBN;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,0CAA0C,GAChD,OAAO,CAMT;AAED,wBAAgB,kDAAkD,CAChE,OAAO,EAAE,yCAAyC,GACjD,4CAA4C,CAkB9C"}
@@ -1,3 +1,25 @@
1
+ const LOCAL_EDITOR_PREVIEW_SURFACE_KEYS = [
2
+ 'status',
3
+ 'statusTone',
4
+ 'statusDetails',
5
+ 'selectedIds',
6
+ 'activeId',
7
+ 'selectionSummary',
8
+ 'boxSelection',
9
+ 'coordinateAxes',
10
+ 'tools',
11
+ 'activeToolId',
12
+ 'transformTool',
13
+ 'transformOperations',
14
+ 'viewportTools',
15
+ 'viewportMeasurement',
16
+ 'viewportSpatialOverlay',
17
+ 'performanceStats',
18
+ 'prefabStage',
19
+ ];
20
+ export function shouldRenderLocalEditorPreviewSurfaces(preview) {
21
+ return LOCAL_EDITOR_PREVIEW_SURFACE_KEYS.some(key => key in preview);
22
+ }
1
23
  export function disposeLocalEditorFormalSurfaces(disposers) {
2
24
  const failures = [];
3
25
  for (const dispose of disposers) {
@@ -1 +1 @@
1
- {"version":3,"file":"local-editor-ui-formal-surface-visibility.js","sourceRoot":"","sources":["../src/local-editor-ui-formal-surface-visibility.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,gCAAgC,CAC9C,SAAoC;IAEpC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,6DAA6D,CAEpF,CAAC;QACF,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,KAAiD;IAEjD,OAAO,KAAK,CAAC,mBAAmB;WAC3B,KAAK,CAAC,IAAI,KAAK,QAAQ;WACvB,CAAC,KAAK,CAAC,aAAa;WACpB,KAAK,CAAC,gBAAgB;WACtB,KAAK,CAAC,cAAc,KAAK,WAAW,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kDAAkD,CAChE,OAAkD;IAElD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO;QACxB,KAAK,CAAC,WAAW;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,kEAAkE;gBAClE,qEAAqE;gBACrE,OAAO,GAAG,KAAK,CAAC;gBAChB,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,OAAO;gBAAE,OAAO;YACpB,sEAAsE;YACtE,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["export interface LocalEditorFormalSurfaceVisibilityController {\n isVisible(): boolean;\n apply(visible: boolean): void;\n}\n\nexport interface LocalEditorFormalSurfaceVisibilityOptions {\n disposeHidden(): void;\n rehydrateVisible(): void;\n}\n\nexport interface LocalEditorInspectorPreviewVisibilityInput {\n hasInspectorPreview: boolean;\n mode: string;\n inPrefabStage: boolean;\n rightDockVisible: boolean;\n activeRightTab: string;\n}\n\nexport function disposeLocalEditorFormalSurfaces(\n disposers: ReadonlyArray<() => void>,\n): void {\n const failures: unknown[] = [];\n for (const dispose of disposers) {\n try {\n dispose();\n } catch (error) {\n failures.push(error);\n }\n }\n if (failures.length > 0) {\n const error = new Error('Failed to dispose one or more Local Editor formal surfaces.') as Error & {\n causes: unknown[];\n };\n error.causes = failures;\n throw error;\n }\n}\n\nexport function shouldRenderLocalEditorInspectorPreview(\n input: LocalEditorInspectorPreviewVisibilityInput,\n): boolean {\n return input.hasInspectorPreview\n && input.mode === 'editor'\n && !input.inPrefabStage\n && input.rightDockVisible\n && input.activeRightTab === 'inspector';\n}\n\nexport function createLocalEditorFormalSurfaceVisibilityController(\n options: LocalEditorFormalSurfaceVisibilityOptions,\n): LocalEditorFormalSurfaceVisibilityController {\n let visible = true;\n return {\n isVisible: () => visible,\n apply(nextVisible) {\n if (!nextVisible) {\n // Commit hidden ownership before disposal. If disposal throws, an\n // immediate Show still observes the hidden state and must rehydrate.\n visible = false;\n options.disposeHidden();\n return;\n }\n if (visible) return;\n // Only publish visible after pending cleanup and rehydration succeed.\n options.rehydrateVisible();\n visible = true;\n },\n };\n}\n"]}
1
+ {"version":3,"file":"local-editor-ui-formal-surface-visibility.js","sourceRoot":"","sources":["../src/local-editor-ui-formal-surface-visibility.ts"],"names":[],"mappings":"AAkBA,MAAM,iCAAiC,GAAG;IACxC,QAAQ;IACR,YAAY;IACZ,eAAe;IACf,aAAa;IACb,UAAU;IACV,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,OAAO;IACP,cAAc;IACd,eAAe;IACf,qBAAqB;IACrB,eAAe;IACf,qBAAqB;IACrB,wBAAwB;IACxB,kBAAkB;IAClB,aAAa;CACL,CAAC;AAEX,MAAM,UAAU,sCAAsC,CACpD,OAA0C;IAE1C,OAAO,iCAAiC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,SAAoC;IAEpC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,6DAA6D,CAEpF,CAAC;QACF,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,KAAiD;IAEjD,OAAO,KAAK,CAAC,mBAAmB;WAC3B,KAAK,CAAC,IAAI,KAAK,QAAQ;WACvB,CAAC,KAAK,CAAC,aAAa;WACpB,KAAK,CAAC,gBAAgB;WACtB,KAAK,CAAC,cAAc,KAAK,WAAW,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kDAAkD,CAChE,OAAkD;IAElD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO;QACxB,KAAK,CAAC,WAAW;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,kEAAkE;gBAClE,qEAAqE;gBACrE,OAAO,GAAG,KAAK,CAAC;gBAChB,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,OAAO;gBAAE,OAAO;YACpB,sEAAsE;YACtE,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["export interface LocalEditorFormalSurfaceVisibilityController {\n isVisible(): boolean;\n apply(visible: boolean): void;\n}\n\nexport interface LocalEditorFormalSurfaceVisibilityOptions {\n disposeHidden(): void;\n rehydrateVisible(): void;\n}\n\nexport interface LocalEditorInspectorPreviewVisibilityInput {\n hasInspectorPreview: boolean;\n mode: string;\n inPrefabStage: boolean;\n rightDockVisible: boolean;\n activeRightTab: string;\n}\n\nconst LOCAL_EDITOR_PREVIEW_SURFACE_KEYS = [\n 'status',\n 'statusTone',\n 'statusDetails',\n 'selectedIds',\n 'activeId',\n 'selectionSummary',\n 'boxSelection',\n 'coordinateAxes',\n 'tools',\n 'activeToolId',\n 'transformTool',\n 'transformOperations',\n 'viewportTools',\n 'viewportMeasurement',\n 'viewportSpatialOverlay',\n 'performanceStats',\n 'prefabStage',\n] as const;\n\nexport function shouldRenderLocalEditorPreviewSurfaces(\n preview: Readonly<Record<string, unknown>>,\n): boolean {\n return LOCAL_EDITOR_PREVIEW_SURFACE_KEYS.some(key => key in preview);\n}\n\nexport function disposeLocalEditorFormalSurfaces(\n disposers: ReadonlyArray<() => void>,\n): void {\n const failures: unknown[] = [];\n for (const dispose of disposers) {\n try {\n dispose();\n } catch (error) {\n failures.push(error);\n }\n }\n if (failures.length > 0) {\n const error = new Error('Failed to dispose one or more Local Editor formal surfaces.') as Error & {\n causes: unknown[];\n };\n error.causes = failures;\n throw error;\n }\n}\n\nexport function shouldRenderLocalEditorInspectorPreview(\n input: LocalEditorInspectorPreviewVisibilityInput,\n): boolean {\n return input.hasInspectorPreview\n && input.mode === 'editor'\n && !input.inPrefabStage\n && input.rightDockVisible\n && input.activeRightTab === 'inspector';\n}\n\nexport function createLocalEditorFormalSurfaceVisibilityController(\n options: LocalEditorFormalSurfaceVisibilityOptions,\n): LocalEditorFormalSurfaceVisibilityController {\n let visible = true;\n return {\n isVisible: () => visible,\n apply(nextVisible) {\n if (!nextVisible) {\n // Commit hidden ownership before disposal. If disposal throws, an\n // immediate Show still observes the hidden state and must rehydrate.\n visible = false;\n options.disposeHidden();\n return;\n }\n if (visible) return;\n // Only publish visible after pending cleanup and rehydration succeed.\n options.rehydrateVisible();\n visible = true;\n },\n };\n}\n"]}
@@ -12,10 +12,17 @@ export declare function canUseHierarchyProviderReparent(model: HierarchyViewMode
12
12
  export declare function matchesHierarchyOperationShortcut(event: Pick<KeyboardEvent, 'key' | 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'>, shortcut: string): boolean;
13
13
  export interface LocalEditorHierarchyController<TDocument = unknown> {
14
14
  render(state: LocalEditorBrowserUiState<TDocument>): void;
15
+ syncSelectionPresentation(state: LocalEditorBrowserUiState<TDocument>): LocalEditorHierarchySelectionPresentation | null;
15
16
  handleEditShortcut(event: KeyboardEvent): boolean;
16
17
  handleDeleteShortcut(event: KeyboardEvent): boolean;
17
18
  dispose(): void;
18
19
  }
20
+ export interface LocalEditorHierarchySelectionPresentation {
21
+ readonly scopeId: string;
22
+ readonly selectedIds: readonly string[];
23
+ readonly activeId: string | null;
24
+ readonly activeLabel: string | null;
25
+ }
19
26
  export interface LocalEditorHierarchyControllerOptions<TDocument = unknown> {
20
27
  doc: Document;
21
28
  panel: HTMLElement;
@@ -43,6 +50,7 @@ export interface HierarchyRenderedAuthority {
43
50
  readonly scopeKey: string;
44
51
  readonly revision: number;
45
52
  }
53
+ export declare function canApplyLocalEditorHierarchySelectionPresentation(previous: HierarchyViewModel, next: HierarchyViewModel): boolean;
46
54
  export declare function isHierarchyRenderedAuthorityCurrent(authority: HierarchyRenderedAuthority, model: HierarchyViewModel): boolean;
47
55
  export declare function shouldDeferHierarchyDomRender(input: {
48
56
  readonly renderedAuthority: HierarchyRenderedAuthority | null;
@@ -1 +1 @@
1
- {"version":3,"file":"local-editor-ui-hierarchy-controller.d.ts","sourceRoot":"","sources":["../src/local-editor-ui-hierarchy-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-editor-ui-hierarchy-controller.d.ts","sourceRoot":"","sources":["../src/local-editor-ui-hierarchy-controller.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import {} from '@fps-games/plugin-hierarchy';
2
2
  import { resolveLocalEditorHierarchyDragOperation, } from './local-editor-ui-hierarchy-drag-policy.js';
3
3
  import { resolveLocalEditorHierarchyAutoScroll, } from './local-editor-ui-hierarchy-auto-scroll.js';
4
4
  import { clearLocalEditorStructuredDragSession, createLocalEditorStructuredDragSession, hasLocalEditorStructuredDragSessionFeedback, } from './local-editor-ui-structured-drag-session.js';
5
- import { LOCAL_EDITOR_HIERARCHY_ROW_HEIGHT, renderLocalEditorHierarchyPanel, syncLocalEditorHierarchyDropPreview, } from './local-editor-ui-hierarchy-view.js';
5
+ import { LOCAL_EDITOR_HIERARCHY_ROW_HEIGHT, renderLocalEditorHierarchyPanel, syncLocalEditorHierarchySelectionPresentation, syncLocalEditorHierarchyDropPreview, } from './local-editor-ui-hierarchy-view.js';
6
6
  import { createLocalEditorViewportRevealController, } from './local-editor-ui-dock-panel.js';
7
7
  import { createLocalEditorHierarchyViewAdapter } from './local-editor-ui-hierarchy-view-adapter.js';
8
8
  const HIERARCHY_DRAG_INDENT_WIDTH = 16;
@@ -146,6 +146,7 @@ export function createLocalEditorHierarchyController(options) {
146
146
  let cachedVisibleIds = null;
147
147
  let renderedHierarchyAuthority = null;
148
148
  let renderedHierarchyProjection = null;
149
+ let renderedHierarchyViewModel = null;
149
150
  let renderedHierarchyDragId = null;
150
151
  let hierarchyRenderReplacingRenameInput = false;
151
152
  let pendingHierarchyDragOver = null;
@@ -277,6 +278,41 @@ export function createLocalEditorHierarchyController(options) {
277
278
  })) {
278
279
  return;
279
280
  }
281
+ if (renderedHierarchyViewModel
282
+ && canApplyLocalEditorHierarchySelectionPresentation(renderedHierarchyViewModel, model)) {
283
+ let presentationApplied = false;
284
+ try {
285
+ presentationApplied = syncLocalEditorHierarchySelectionPresentation(panel, {
286
+ viewModel: model,
287
+ previousSelectedIds: renderedHierarchyViewModel.snapshot.selectedIds,
288
+ previousActiveId: renderedHierarchyViewModel.snapshot.activeId,
289
+ });
290
+ }
291
+ catch {
292
+ presentationApplied = false;
293
+ }
294
+ if (presentationApplied) {
295
+ const activeIdChanged = model.snapshot.activeId !== lastRenderedActiveId;
296
+ if (activeIdChanged) {
297
+ pendingHierarchyScrollId = null;
298
+ const suppressActiveScroll = model.snapshot.activeId
299
+ ? treeViewportReveal.consumeRevealSuppression(model.snapshot.activeId, { clearWhenDifferent: true })
300
+ : false;
301
+ if (model.snapshot.activeId
302
+ && !suppressActiveScroll
303
+ && shouldAutoScrollActiveHierarchyNode()) {
304
+ scheduleActiveHierarchyScroll(model.snapshot.activeId);
305
+ }
306
+ }
307
+ lastRenderedActiveId = model.snapshot.activeId;
308
+ lastRenderedScopeId = model.snapshot.scopeKey;
309
+ renderedHierarchyAuthority = createHierarchyRenderedAuthority(model);
310
+ renderedHierarchyProjection = model.projection;
311
+ renderedHierarchyViewModel = model;
312
+ renderedHierarchyDragId = model.state.dragId;
313
+ return;
314
+ }
315
+ }
280
316
  if (renderedHierarchyAuthority
281
317
  && !isHierarchyRenderedAuthorityCurrent(renderedHierarchyAuthority, model)) {
282
318
  nativeHierarchyDragActive = false;
@@ -288,13 +324,11 @@ export function createLocalEditorHierarchyController(options) {
288
324
  // throws, events from that old DOM cannot retain write authority.
289
325
  renderedHierarchyAuthority = null;
290
326
  renderedHierarchyProjection = null;
327
+ renderedHierarchyViewModel = null;
291
328
  renderPanel(currentBridgeState);
292
- renderedHierarchyAuthority = Object.freeze({
293
- token: model.authorityToken,
294
- scopeKey: model.snapshot.scopeKey,
295
- revision: model.snapshot.revision,
296
- });
329
+ renderedHierarchyAuthority = createHierarchyRenderedAuthority(model);
297
330
  renderedHierarchyProjection = model.projection;
331
+ renderedHierarchyViewModel = model;
298
332
  renderedHierarchyDragId = model.state.dragId;
299
333
  }
300
334
  else if (!model) {
@@ -305,6 +339,7 @@ export function createLocalEditorHierarchyController(options) {
305
339
  panel.appendChild(unavailable);
306
340
  renderedHierarchyAuthority = null;
307
341
  renderedHierarchyProjection = null;
342
+ renderedHierarchyViewModel = null;
308
343
  renderedHierarchyDragId = null;
309
344
  }
310
345
  });
@@ -371,6 +406,30 @@ export function createLocalEditorHierarchyController(options) {
371
406
  currentBridgeState = state;
372
407
  kernel.refresh();
373
408
  };
409
+ const syncSelectionPresentation = (state) => {
410
+ currentBridgeState = state;
411
+ const latest = kernel.getViewModel();
412
+ let model = currentKernelViewModel;
413
+ if (model?.providerId !== latest?.providerId
414
+ || model?.authorityToken !== latest?.authorityToken
415
+ || model?.snapshot !== latest?.snapshot
416
+ || model?.state !== latest?.state
417
+ || model?.projection !== latest?.projection) {
418
+ kernel.refresh();
419
+ model = currentKernelViewModel;
420
+ }
421
+ if (!model)
422
+ return null;
423
+ const activeNode = model.snapshot.activeId
424
+ ? model.snapshot.nodeById.get(model.snapshot.activeId)
425
+ : null;
426
+ return Object.freeze({
427
+ scopeId: model.snapshot.scopeKey,
428
+ selectedIds: Object.freeze([...model.snapshot.selectedIds]),
429
+ activeId: model.snapshot.activeId,
430
+ activeLabel: activeNode?.label ?? null,
431
+ });
432
+ };
374
433
  const onClick = (event) => {
375
434
  const target = event.target instanceof HTMLElement ? event.target : null;
376
435
  if (target?.closest('[data-editor-hierarchy-rename-input]'))
@@ -738,6 +797,7 @@ export function createLocalEditorHierarchyController(options) {
738
797
  doc.addEventListener('focusin', onDocumentFocusIn, { capture: true });
739
798
  return {
740
799
  render,
800
+ syncSelectionPresentation,
741
801
  handleDeleteShortcut(event) {
742
802
  return handleDeleteShortcut(event);
743
803
  },
@@ -1335,6 +1395,39 @@ export function resolveHierarchyTransportDragIds(dataTransferValue, frozenDragId
1335
1395
  export function isHierarchyCompositionSessionCurrent(session, input, scopeKey) {
1336
1396
  return session?.input === input && session.scopeKey === scopeKey;
1337
1397
  }
1398
+ function createHierarchyRenderedAuthority(model) {
1399
+ return Object.freeze({
1400
+ token: model.authorityToken,
1401
+ scopeKey: model.snapshot.scopeKey,
1402
+ revision: model.snapshot.revision,
1403
+ });
1404
+ }
1405
+ export function canApplyLocalEditorHierarchySelectionPresentation(previous, next) {
1406
+ const previousSnapshot = previous.snapshot;
1407
+ const nextSnapshot = next.snapshot;
1408
+ const selectionChanged = previousSnapshot.activeId !== nextSnapshot.activeId
1409
+ || !sameHierarchyStringArray(previousSnapshot.selectedIds, nextSnapshot.selectedIds);
1410
+ return selectionChanged
1411
+ && previous.providerId === next.providerId
1412
+ && previous.authorityToken === next.authorityToken
1413
+ && previousSnapshot.scopeKey === nextSnapshot.scopeKey
1414
+ && nextSnapshot.revision >= previousSnapshot.revision
1415
+ && previousSnapshot.scopeType === nextSnapshot.scopeType
1416
+ && previousSnapshot.structureRevision === nextSnapshot.structureRevision
1417
+ && previousSnapshot.rootIds === nextSnapshot.rootIds
1418
+ && previousSnapshot.nodeById === nextSnapshot.nodeById
1419
+ && previousSnapshot.childrenByParentId === nextSnapshot.childrenByParentId
1420
+ && previousSnapshot.title === nextSnapshot.title
1421
+ && previousSnapshot.searchPlaceholder === nextSnapshot.searchPlaceholder
1422
+ && previousSnapshot.readonly === nextSnapshot.readonly
1423
+ && previousSnapshot.primaryOperationId === nextSnapshot.primaryOperationId
1424
+ && sameHierarchyBooleanRecord(previousSnapshot.capabilities, nextSnapshot.capabilities)
1425
+ && previous.projection === next.projection
1426
+ && previous.state.searchQuery === next.state.searchQuery
1427
+ && sameHierarchyRenameState(previous.state.rename, next.state.rename)
1428
+ && previous.state.dragId === next.state.dragId
1429
+ && sameHierarchyStringArray(previous.state.dragIds, next.state.dragIds);
1430
+ }
1338
1431
  export function isHierarchyRenderedAuthorityCurrent(authority, model) {
1339
1432
  return authority.token === model.authorityToken
1340
1433
  && authority.scopeKey === model.snapshot.scopeKey
@@ -1348,4 +1441,22 @@ export function shouldDeferHierarchyDomRender(input) {
1348
1441
  && input.renderedProjection === input.model.projection
1349
1442
  && input.renderedDragId === input.model.state.dragId));
1350
1443
  }
1444
+ function sameHierarchyRenameState(left, right) {
1445
+ return left === right
1446
+ || (!!left && !!right && left.id === right.id && left.value === right.value);
1447
+ }
1448
+ function sameHierarchyStringArray(left, right) {
1449
+ return left === right
1450
+ || (left.length === right.length && left.every((value, index) => value === right[index]));
1451
+ }
1452
+ function sameHierarchyBooleanRecord(left, right) {
1453
+ if (left === right)
1454
+ return true;
1455
+ const keys = new Set([...Object.keys(left), ...Object.keys(right)]);
1456
+ for (const key of keys) {
1457
+ if (left[key] !== right[key])
1458
+ return false;
1459
+ }
1460
+ return true;
1461
+ }
1351
1462
  //# sourceMappingURL=local-editor-ui-hierarchy-controller.js.map