@fps-games/editor 0.2.1-beta.1 → 0.2.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/ui-regions.js +16 -0
  3. package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
  4. package/dist/build-info.json +43 -43
  5. package/dist/internal/material-preview.d.ts +22 -0
  6. package/dist/internal/material-preview.d.ts.map +1 -0
  7. package/dist/internal/material-preview.js +186 -0
  8. package/dist/internal/material-preview.js.map +1 -0
  9. package/dist/internal/project-model-preview.d.ts +4 -0
  10. package/dist/internal/project-model-preview.d.ts.map +1 -0
  11. package/dist/internal/project-model-preview.js +359 -0
  12. package/dist/internal/project-model-preview.js.map +1 -0
  13. package/dist/local-editor-agent-context.d.ts +12 -1
  14. package/dist/local-editor-agent-context.d.ts.map +1 -1
  15. package/dist/local-editor-agent-context.js +47 -0
  16. package/dist/local-editor-agent-context.js.map +1 -1
  17. package/dist/local-editor-harness.d.ts +15 -2
  18. package/dist/local-editor-harness.d.ts.map +1 -1
  19. package/dist/local-editor-harness.js +310 -21
  20. package/dist/local-editor-harness.js.map +1 -1
  21. package/dist/local-editor-tools.d.ts +1 -0
  22. package/dist/local-editor-tools.d.ts.map +1 -1
  23. package/dist/local-editor-tools.js +3 -0
  24. package/dist/local-editor-tools.js.map +1 -1
  25. package/dist/playable-local-editor-host.d.ts +4 -0
  26. package/dist/playable-local-editor-host.d.ts.map +1 -1
  27. package/dist/playable-local-editor-host.js +27 -0
  28. package/dist/playable-local-editor-host.js.map +1 -1
  29. package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
  30. package/dist/playable-product-scene-capabilities.js +9 -3
  31. package/dist/playable-product-scene-capabilities.js.map +1 -1
  32. package/dist/playable-standard-project.d.ts.map +1 -1
  33. package/dist/playable-standard-project.js +5 -2
  34. package/dist/playable-standard-project.js.map +1 -1
  35. package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
  36. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +24 -0
  37. package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
  38. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +10 -1
  39. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  40. package/node_modules/@fps-games/editor-babylon/dist/projection.js +96 -1
  41. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  42. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.d.ts.map +1 -1
  43. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js +85 -22
  44. package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
  45. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +2 -0
  46. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
  47. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +150 -4
  48. package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
  49. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts +1 -0
  50. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  51. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +249 -15
  52. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  53. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts +1 -1
  54. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts.map +1 -1
  55. package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
  56. package/node_modules/@fps-games/editor-babylon/package.json +6 -6
  57. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +5 -0
  58. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  59. package/node_modules/@fps-games/editor-browser/dist/index.js +3 -0
  60. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  61. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts +35 -0
  62. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts.map +1 -0
  63. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js +136 -0
  64. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js.map +1 -0
  65. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts +46 -0
  66. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts.map +1 -0
  67. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js +283 -0
  68. package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js.map +1 -0
  69. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts +12 -0
  70. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts.map +1 -0
  71. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js +67 -0
  72. package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js.map +1 -0
  73. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts +6 -0
  74. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts.map +1 -0
  75. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js +9 -0
  76. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js.map +1 -0
  77. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts +7 -0
  78. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts.map +1 -0
  79. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js +20 -0
  80. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js.map +1 -0
  81. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts +9 -0
  82. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts.map +1 -0
  83. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js +219 -0
  84. package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js.map +1 -0
  85. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts +14 -0
  86. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts.map +1 -0
  87. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js +42 -0
  88. package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js.map +1 -0
  89. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
  90. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +2 -0
  91. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
  92. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts +27 -0
  93. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts.map +1 -0
  94. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js +288 -0
  95. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js.map +1 -0
  96. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  97. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  98. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +29 -0
  99. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  100. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +20 -1
  101. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  102. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +321 -60
  103. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  104. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +2 -1
  105. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
  106. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +4 -2
  107. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
  108. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +63 -3
  109. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  110. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
  111. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +9 -0
  112. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
  113. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +88 -16
  114. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
  115. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +2 -1
  116. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  117. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +1463 -356
  118. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  119. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts +13 -0
  120. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts.map +1 -0
  121. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js +15 -0
  122. package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js.map +1 -0
  123. package/node_modules/@fps-games/editor-browser/package.json +7 -7
  124. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +1 -0
  125. package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -1
  126. package/node_modules/@fps-games/editor-core/dist/editor-tools.js +3 -1
  127. package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -1
  128. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +11 -2
  129. package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
  130. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js +12 -1
  131. package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
  132. package/node_modules/@fps-games/editor-core/package.json +6 -6
  133. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  134. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts +1 -0
  135. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts.map +1 -1
  136. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +5 -0
  137. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
  138. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts +1 -1
  139. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts.map +1 -1
  140. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js +1 -1
  141. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
  142. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.d.ts.map +1 -1
  143. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js +15 -1
  144. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
  145. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.d.ts.map +1 -1
  146. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js +3 -0
  147. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
  148. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts +6 -1
  149. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts.map +1 -1
  150. package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
  151. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +1 -0
  152. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  153. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +1 -0
  154. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  155. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +4 -0
  156. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
  157. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +10 -1
  158. package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
  159. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts +4 -0
  160. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts.map +1 -0
  161. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js +4 -0
  162. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js.map +1 -0
  163. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts +4 -0
  164. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts.map +1 -0
  165. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js +86 -0
  166. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js.map +1 -0
  167. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts +9 -0
  168. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts.map +1 -0
  169. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js +76 -0
  170. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js.map +1 -0
  171. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts +34 -0
  172. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts.map +1 -0
  173. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js +2 -0
  174. package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js.map +1 -0
  175. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts +4 -0
  176. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  177. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +40 -0
  178. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  179. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +1 -0
  180. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
  181. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +1 -0
  182. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
  183. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +1 -0
  184. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
  185. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +94 -0
  186. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
  187. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts +14 -0
  188. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts.map +1 -0
  189. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js +101 -0
  190. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js.map +1 -0
  191. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts +23 -0
  192. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts.map +1 -0
  193. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js +180 -0
  194. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js.map +1 -0
  195. package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
  196. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +23 -3
  197. package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
  198. package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
  199. package/node_modules/@fps-games/editor-protocol/package.json +2 -2
  200. package/node_modules/@fps-games/editor-tooling/package.json +3 -3
  201. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -1
  202. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +103 -10
  203. package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -1
  204. package/node_modules/@fps-games/editor-ui/package.json +1 -1
  205. package/node_modules/@fps-games/playable-assets/package.json +1 -1
  206. package/node_modules/@fps-games/playable-contracts/package.json +1 -1
  207. package/node_modules/@fps-games/playable-rendering/package.json +2 -2
  208. package/node_modules/@fps-games/playable-runtime/package.json +12 -12
  209. package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
  210. package/node_modules/@fps-games/playable-scene/package.json +2 -2
  211. package/node_modules/@fps-games/plugin-api/package.json +1 -1
  212. package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
  213. package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
  214. package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
  215. package/node_modules/@fps-games/plugin-assets/package.json +5 -5
  216. package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
  217. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
  218. package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
  219. package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
  220. package/node_modules/@fps-games/plugin-host/package.json +2 -2
  221. package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
  222. package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
  223. package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
  224. package/node_modules/@fps-games/plugin-markers/package.json +5 -5
  225. package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
  226. package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
  227. package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
  228. package/node_modules/@fps-games/plugin-materials/package.json +5 -5
  229. package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
  230. package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
  231. package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
  232. package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
  233. package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
  234. package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
  235. package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
  236. package/node_modules/@fps-games/plugin-scene/package.json +5 -5
  237. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
  238. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
  239. package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
  240. package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
  241. package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
  242. package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
  243. package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
  244. package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
  245. package/package.json +22 -22
@@ -5,9 +5,11 @@ const DEFAULT_WORKBENCH_LAYOUT = {
5
5
  leftWidth: 300,
6
6
  rightWidth: 340,
7
7
  bottomHeight: 260,
8
+ consoleHeight: 220,
8
9
  leftCollapsed: false,
9
10
  rightCollapsed: false,
10
11
  bottomCollapsed: true,
12
+ consoleCollapsed: true,
11
13
  };
12
14
  const WORKBENCH_LAYOUT_LIMITS = {
13
15
  leftMin: 220,
@@ -16,6 +18,9 @@ const WORKBENCH_LAYOUT_LIMITS = {
16
18
  rightMax: 520,
17
19
  bottomMin: 160,
18
20
  bottomMax: 420,
21
+ consoleMin: 140,
22
+ consoleMax: 420,
23
+ consoleCollapsedHeight: 30,
19
24
  sceneMinWidth: 420,
20
25
  sceneMinHeight: 220,
21
26
  };
@@ -30,6 +35,7 @@ export const LOCAL_EDITOR_WORKBENCH_REGIONS = [
30
35
  { id: 'scene-header', label: 'Scene View Header' },
31
36
  { id: 'right-dock', label: 'Right Dock' },
32
37
  { id: 'bottom-dock', label: 'Bottom Dock' },
38
+ { id: 'bottom-console', label: 'Editor Console' },
33
39
  ];
34
40
  export const LOCAL_EDITOR_WORKBENCH_PANELS = [
35
41
  { id: 'inspector', title: '检查器', area: 'right' },
@@ -64,9 +70,11 @@ export function createLocalEditorWorkbench(doc) {
64
70
  const leftDock = createDock(doc, 'left');
65
71
  const rightDock = createDock(doc, 'right');
66
72
  const bottomDock = createDock(doc, 'bottom');
73
+ const consoleDock = createDock(doc, 'console');
67
74
  const leftResizer = createResizer(doc, 'left');
68
75
  const rightResizer = createResizer(doc, 'right');
69
76
  const bottomResizer = createResizer(doc, 'bottom');
77
+ const consoleResizer = createResizer(doc, 'console');
70
78
  const leftToggle = createDockToggle(doc, 'left', 'hierarchy');
71
79
  const rightToggle = createDockToggle(doc, 'right', 'inspector');
72
80
  const bottomToggle = createDockToggle(doc, 'bottom', 'asset');
@@ -81,9 +89,11 @@ export function createLocalEditorWorkbench(doc) {
81
89
  root.appendChild(leftDock);
82
90
  root.appendChild(rightDock);
83
91
  root.appendChild(bottomDock);
92
+ root.appendChild(consoleDock);
84
93
  root.appendChild(leftResizer);
85
94
  root.appendChild(rightResizer);
86
95
  root.appendChild(bottomResizer);
96
+ root.appendChild(consoleResizer);
87
97
  root.appendChild(leftToggle);
88
98
  root.appendChild(rightToggle);
89
99
  root.appendChild(bottomToggle);
@@ -94,9 +104,11 @@ export function createLocalEditorWorkbench(doc) {
94
104
  sceneHeader,
95
105
  rightDock,
96
106
  bottomDock,
107
+ consoleDock,
97
108
  leftResizer,
98
109
  rightResizer,
99
110
  bottomResizer,
111
+ consoleResizer,
100
112
  leftToggle,
101
113
  rightToggle,
102
114
  bottomToggle,
@@ -105,15 +117,21 @@ export function createLocalEditorWorkbench(doc) {
105
117
  function createDock(doc, area) {
106
118
  const dock = doc.createElement('div');
107
119
  dock.className = 'fps-editor-ui-workbench-dock';
108
- dock.dataset.editorWorkbenchRegion = area === 'left' ? 'left-dock' : area === 'right' ? 'right-dock' : 'bottom-dock';
120
+ dock.dataset.editorWorkbenchRegion = area === 'left'
121
+ ? 'left-dock'
122
+ : area === 'right'
123
+ ? 'right-dock'
124
+ : area === 'bottom'
125
+ ? 'bottom-dock'
126
+ : 'bottom-console';
109
127
  return dock;
110
128
  }
111
129
  function createResizer(doc, area) {
112
130
  const resizer = doc.createElement('div');
113
131
  resizer.className = 'fps-editor-ui-workbench-resizer';
114
132
  resizer.dataset.editorWorkbenchResizer = area;
115
- resizer.title = area === 'bottom'
116
- ? '拖拽调整底部面板高度,双击恢复默认'
133
+ resizer.title = area === 'bottom' || area === 'console'
134
+ ? `拖拽调整${area === 'console' ? '控制台' : '底部面板'}高度,双击恢复默认`
117
135
  : '拖拽调整面板宽度,双击恢复默认';
118
136
  return resizer;
119
137
  }
@@ -149,14 +167,17 @@ export function normalizeLocalEditorWorkbenchLayout(input, viewport) {
149
167
  const leftEdge = leftVisible
150
168
  ? clampNumber(userLayout.leftWidth, WORKBENCH_LAYOUT_LIMITS.leftMin, resolveLeftMax(viewport, rightEdge))
151
169
  : 0;
152
- const bottomMax = Math.max(WORKBENCH_LAYOUT_LIMITS.bottomMin, Math.min(WORKBENCH_LAYOUT_LIMITS.bottomMax, Math.floor(viewport.height * 0.45), viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight));
170
+ const bottomMax = Math.max(WORKBENCH_LAYOUT_LIMITS.bottomMin, Math.min(WORKBENCH_LAYOUT_LIMITS.bottomMax, Math.floor(viewport.height * 0.45), viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight - resolveConsoleEdge(userLayout)));
171
+ const consoleMax = resolveConsoleMax(viewport, userLayout.bottomCollapsed ? 0 : userLayout.bottomHeight);
153
172
  return {
154
173
  leftWidth: leftVisible ? leftEdge : userLayout.leftWidth,
155
174
  rightWidth: rightVisible ? rightEdge : userLayout.rightWidth,
156
175
  bottomHeight: clampNumber(userLayout.bottomHeight, WORKBENCH_LAYOUT_LIMITS.bottomMin, bottomMax),
176
+ consoleHeight: clampNumber(userLayout.consoleHeight, WORKBENCH_LAYOUT_LIMITS.consoleMin, consoleMax),
157
177
  leftCollapsed: userLayout.leftCollapsed,
158
178
  rightCollapsed: userLayout.rightCollapsed,
159
179
  bottomCollapsed: userLayout.bottomCollapsed,
180
+ consoleCollapsed: userLayout.consoleCollapsed,
160
181
  };
161
182
  }
162
183
  export function normalizeLocalEditorWorkbenchUserLayout(input) {
@@ -168,9 +189,11 @@ export function normalizeLocalEditorWorkbenchUserLayout(input) {
168
189
  leftWidth: clampNumber(next.leftWidth, WORKBENCH_LAYOUT_LIMITS.leftMin, WORKBENCH_LAYOUT_LIMITS.leftMax),
169
190
  rightWidth: clampNumber(next.rightWidth, WORKBENCH_LAYOUT_LIMITS.rightMin, WORKBENCH_LAYOUT_LIMITS.rightMax),
170
191
  bottomHeight: clampNumber(next.bottomHeight, WORKBENCH_LAYOUT_LIMITS.bottomMin, WORKBENCH_LAYOUT_LIMITS.bottomMax),
192
+ consoleHeight: clampNumber(next.consoleHeight, WORKBENCH_LAYOUT_LIMITS.consoleMin, WORKBENCH_LAYOUT_LIMITS.consoleMax),
171
193
  leftCollapsed: next.leftCollapsed === true,
172
194
  rightCollapsed: next.rightCollapsed === true,
173
195
  bottomCollapsed: next.bottomCollapsed === true,
196
+ consoleCollapsed: next.consoleCollapsed === true,
174
197
  };
175
198
  }
176
199
  export function resolveLocalEditorWorkbenchVisibility(layout, viewport) {
@@ -233,7 +256,9 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
233
256
  }
234
257
  const leftEdge = projectedVisibility.leftVisible ? projectedLayout.leftWidth : 0;
235
258
  const rightEdge = projectedVisibility.rightVisible ? projectedLayout.rightWidth : 0;
259
+ const consoleEdge = resolveConsoleEdge(projectedLayout);
236
260
  const bottomEdge = projectedVisibility.bottomVisible ? projectedLayout.bottomHeight : 0;
261
+ const sceneBottomEdge = consoleEdge + bottomEdge;
237
262
  const leftDockWidth = dockDisplay.leftDockOverlay
238
263
  ? resolveOverlayPanelWidth(viewport, projectedLayout.leftWidth)
239
264
  : projectedLayout.leftWidth;
@@ -249,36 +274,48 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
249
274
  elements.root.dataset.editorLayoutLeftOverlay = String(dockDisplay.leftDockOverlay);
250
275
  elements.root.dataset.editorLayoutRightOverlay = String(dockDisplay.rightDockOverlay);
251
276
  elements.root.dataset.editorLayoutBottomOverlay = String(dockDisplay.bottomDockOverlay);
277
+ elements.root.dataset.editorLayoutConsoleCollapsed = String(projectedLayout.consoleCollapsed);
252
278
  elements.sceneFrame.style.left = `${leftEdge}px`;
253
279
  elements.sceneFrame.style.right = `${rightEdge}px`;
254
- elements.sceneFrame.style.bottom = `${bottomEdge}px`;
280
+ elements.sceneFrame.style.bottom = `${sceneBottomEdge}px`;
255
281
  elements.leftDock.style.display = dockDisplay.leftDockVisible ? 'flex' : 'none';
256
282
  elements.leftDock.style.width = `${leftDockWidth}px`;
257
- elements.leftDock.style.bottom = dockDisplay.leftDockOverlay ? '0' : `${bottomEdge}px`;
283
+ elements.leftDock.style.bottom = `${consoleEdge}px`;
258
284
  elements.leftDock.style.zIndex = dockDisplay.leftDockOverlay ? '6' : '';
259
285
  elements.leftDock.style.boxShadow = dockDisplay.leftDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';
260
286
  elements.rightDock.style.display = dockDisplay.rightDockVisible ? 'flex' : 'none';
261
287
  elements.rightDock.style.width = `${rightDockWidth}px`;
288
+ elements.rightDock.style.bottom = `${consoleEdge}px`;
262
289
  elements.rightDock.style.zIndex = dockDisplay.rightDockOverlay ? '6' : '';
263
290
  elements.rightDock.style.boxShadow = dockDisplay.rightDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';
264
291
  elements.bottomDock.style.display = dockDisplay.bottomDockVisible ? 'flex' : 'none';
265
- elements.bottomDock.style.left = '0';
292
+ elements.bottomDock.style.left = dockDisplay.bottomDockOverlay ? '0' : `${leftEdge}px`;
266
293
  elements.bottomDock.style.right = dockDisplay.bottomDockOverlay ? '0' : `${rightEdge}px`;
294
+ elements.bottomDock.style.bottom = `${consoleEdge}px`;
267
295
  elements.bottomDock.style.height = `${bottomDockHeight}px`;
268
296
  elements.bottomDock.style.zIndex = dockDisplay.bottomDockOverlay ? '6' : '';
269
297
  elements.bottomDock.style.boxShadow = dockDisplay.bottomDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';
298
+ elements.consoleDock.style.display = 'flex';
299
+ elements.consoleDock.style.left = '0';
300
+ elements.consoleDock.style.right = '0';
301
+ elements.consoleDock.style.bottom = '0';
302
+ elements.consoleDock.style.height = `${consoleEdge}px`;
270
303
  elements.leftResizer.style.display = projectedVisibility.leftVisible ? '' : 'none';
271
304
  elements.leftResizer.style.left = `${projectedLayout.leftWidth - Math.ceil(RESIZER_THICKNESS / 2)}px`;
272
305
  elements.leftResizer.style.top = '0';
273
- elements.leftResizer.style.bottom = `${bottomEdge}px`;
306
+ elements.leftResizer.style.bottom = `${consoleEdge}px`;
274
307
  elements.rightResizer.style.display = projectedVisibility.rightVisible ? '' : 'none';
275
308
  elements.rightResizer.style.right = `${projectedLayout.rightWidth - Math.ceil(RESIZER_THICKNESS / 2)}px`;
276
309
  elements.rightResizer.style.top = '0';
277
- elements.rightResizer.style.bottom = '0';
310
+ elements.rightResizer.style.bottom = `${consoleEdge}px`;
278
311
  elements.bottomResizer.style.display = projectedVisibility.bottomVisible ? '' : 'none';
279
- elements.bottomResizer.style.left = '0';
312
+ elements.bottomResizer.style.left = dockDisplay.bottomDockOverlay ? '0' : `${leftEdge}px`;
280
313
  elements.bottomResizer.style.right = `${rightEdge}px`;
281
- elements.bottomResizer.style.bottom = `${projectedLayout.bottomHeight - Math.ceil(RESIZER_THICKNESS / 2)}px`;
314
+ elements.bottomResizer.style.bottom = `${consoleEdge + projectedLayout.bottomHeight - Math.ceil(RESIZER_THICKNESS / 2)}px`;
315
+ elements.consoleResizer.style.display = projectedLayout.consoleCollapsed ? 'none' : '';
316
+ elements.consoleResizer.style.left = '0';
317
+ elements.consoleResizer.style.right = '0';
318
+ elements.consoleResizer.style.bottom = `${consoleEdge - Math.ceil(RESIZER_THICKNESS / 2)}px`;
282
319
  elements.leftToggle.style.left = dockDisplay.leftDockVisible ? `${Math.max(6, leftDockWidth - 13)}px` : '6px';
283
320
  elements.leftToggle.style.top = '43px';
284
321
  elements.leftToggle.disabled = false;
@@ -295,7 +332,9 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
295
332
  elements.rightToggle.setAttribute('aria-label', elements.rightToggle.title);
296
333
  elements.bottomToggle.style.left = '50%';
297
334
  elements.bottomToggle.style.transform = 'translateX(-50%)';
298
- elements.bottomToggle.style.bottom = dockDisplay.bottomDockVisible ? `${Math.max(6, bottomDockHeight - 13)}px` : '6px';
335
+ elements.bottomToggle.style.bottom = dockDisplay.bottomDockVisible
336
+ ? `${consoleEdge + Math.max(6, bottomDockHeight - 13)}px`
337
+ : `${consoleEdge + 6}px`;
299
338
  elements.bottomToggle.disabled = false;
300
339
  elements.bottomToggle.style.opacity = '';
301
340
  elements.bottomToggle.style.cursor = 'pointer';
@@ -324,11 +363,18 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
324
363
  rightWidth: clampNumber(viewport.width - event.clientX, WORKBENCH_LAYOUT_LIMITS.rightMin, resolveRightMax(viewport, projectedVisibility.leftVisible)),
325
364
  };
326
365
  }
366
+ else if (drag.area === 'bottom') {
367
+ const bottomMax = Math.max(WORKBENCH_LAYOUT_LIMITS.bottomMin, Math.min(WORKBENCH_LAYOUT_LIMITS.bottomMax, Math.floor(viewport.height * 0.45), viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight - resolveConsoleEdge(layout)));
368
+ layout = {
369
+ ...layout,
370
+ bottomHeight: clampNumber(viewport.height - event.clientY - resolveConsoleEdge(layout), WORKBENCH_LAYOUT_LIMITS.bottomMin, bottomMax),
371
+ };
372
+ }
327
373
  else {
328
- const bottomMax = Math.max(WORKBENCH_LAYOUT_LIMITS.bottomMin, Math.min(WORKBENCH_LAYOUT_LIMITS.bottomMax, Math.floor(viewport.height * 0.45), viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight));
374
+ const bottomHeight = projectedVisibility.bottomVisible ? layout.bottomHeight : 0;
329
375
  layout = {
330
376
  ...layout,
331
- bottomHeight: clampNumber(viewport.height - event.clientY, WORKBENCH_LAYOUT_LIMITS.bottomMin, bottomMax),
377
+ consoleHeight: clampNumber(viewport.height - event.clientY, WORKBENCH_LAYOUT_LIMITS.consoleMin, resolveConsoleMax(viewport, bottomHeight)),
332
378
  };
333
379
  }
334
380
  apply();
@@ -348,7 +394,7 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
348
394
  return;
349
395
  event.preventDefault();
350
396
  drag = { area };
351
- doc.body.style.cursor = area === 'bottom' ? 'row-resize' : 'col-resize';
397
+ doc.body.style.cursor = area === 'bottom' || area === 'console' ? 'row-resize' : 'col-resize';
352
398
  doc.body.style.userSelect = 'none';
353
399
  win?.addEventListener('pointermove', onPointerMove);
354
400
  win?.addEventListener('pointerup', onPointerUp);
@@ -356,6 +402,7 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
356
402
  const onLeftPointerDown = (event) => beginDrag('left', event);
357
403
  const onRightPointerDown = (event) => beginDrag('right', event);
358
404
  const onBottomPointerDown = (event) => beginDrag('bottom', event);
405
+ const onConsolePointerDown = (event) => beginDrag('console', event);
359
406
  const onLeftDoubleClick = () => {
360
407
  layout = { ...layout, leftWidth: DEFAULT_WORKBENCH_LAYOUT.leftWidth };
361
408
  apply(true);
@@ -368,6 +415,10 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
368
415
  layout = { ...layout, bottomHeight: DEFAULT_WORKBENCH_LAYOUT.bottomHeight };
369
416
  apply(true);
370
417
  };
418
+ const onConsoleDoubleClick = () => {
419
+ layout = { ...layout, consoleHeight: DEFAULT_WORKBENCH_LAYOUT.consoleHeight };
420
+ apply(true);
421
+ };
371
422
  const onLeftToggle = () => {
372
423
  if (projectedVisibility.leftAutoHidden) {
373
424
  overlay = { ...overlay, leftOpen: !overlay.leftOpen };
@@ -399,9 +450,11 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
399
450
  elements.leftResizer.addEventListener('pointerdown', onLeftPointerDown);
400
451
  elements.rightResizer.addEventListener('pointerdown', onRightPointerDown);
401
452
  elements.bottomResizer.addEventListener('pointerdown', onBottomPointerDown);
453
+ elements.consoleResizer.addEventListener('pointerdown', onConsolePointerDown);
402
454
  elements.leftResizer.addEventListener('dblclick', onLeftDoubleClick);
403
455
  elements.rightResizer.addEventListener('dblclick', onRightDoubleClick);
404
456
  elements.bottomResizer.addEventListener('dblclick', onBottomDoubleClick);
457
+ elements.consoleResizer.addEventListener('dblclick', onConsoleDoubleClick);
405
458
  elements.leftToggle.addEventListener('click', onLeftToggle);
406
459
  elements.rightToggle.addEventListener('click', onRightToggle);
407
460
  elements.bottomToggle.addEventListener('click', onBottomToggle);
@@ -424,6 +477,12 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
424
477
  layout = { ...layout, bottomCollapsed: collapsed };
425
478
  apply(save);
426
479
  },
480
+ setConsoleCollapsed(collapsed, save = false) {
481
+ if (layout.consoleCollapsed === collapsed)
482
+ return;
483
+ layout = { ...layout, consoleCollapsed: collapsed };
484
+ apply(save);
485
+ },
427
486
  reset() {
428
487
  layout = { ...DEFAULT_WORKBENCH_LAYOUT };
429
488
  apply(true);
@@ -433,9 +492,11 @@ export function createLocalEditorWorkbenchLayoutController(doc, elements, option
433
492
  elements.leftResizer.removeEventListener('pointerdown', onLeftPointerDown);
434
493
  elements.rightResizer.removeEventListener('pointerdown', onRightPointerDown);
435
494
  elements.bottomResizer.removeEventListener('pointerdown', onBottomPointerDown);
495
+ elements.consoleResizer.removeEventListener('pointerdown', onConsolePointerDown);
436
496
  elements.leftResizer.removeEventListener('dblclick', onLeftDoubleClick);
437
497
  elements.rightResizer.removeEventListener('dblclick', onRightDoubleClick);
438
498
  elements.bottomResizer.removeEventListener('dblclick', onBottomDoubleClick);
499
+ elements.consoleResizer.removeEventListener('dblclick', onConsoleDoubleClick);
439
500
  elements.leftToggle.removeEventListener('click', onLeftToggle);
440
501
  elements.rightToggle.removeEventListener('click', onRightToggle);
441
502
  elements.bottomToggle.removeEventListener('click', onBottomToggle);
@@ -454,7 +515,18 @@ function resolveOverlayPanelWidth(viewport, preferredWidth) {
454
515
  return Math.min(preferredWidth, Math.max(260, viewport.width - 24));
455
516
  }
456
517
  function resolveOverlayPanelHeight(viewport, preferredHeight) {
457
- return Math.min(preferredHeight, Math.max(WORKBENCH_LAYOUT_LIMITS.bottomMin, viewport.height - 64));
518
+ return Math.min(preferredHeight, Math.max(WORKBENCH_LAYOUT_LIMITS.bottomMin, viewport.height - WORKBENCH_LAYOUT_LIMITS.consoleCollapsedHeight - 64));
519
+ }
520
+ export function resolveLocalEditorConsoleEdge(layout) {
521
+ return resolveConsoleEdge(layout);
522
+ }
523
+ function resolveConsoleEdge(layout) {
524
+ return layout.consoleCollapsed
525
+ ? WORKBENCH_LAYOUT_LIMITS.consoleCollapsedHeight
526
+ : layout.consoleHeight;
527
+ }
528
+ function resolveConsoleMax(viewport, bottomHeight) {
529
+ return Math.max(WORKBENCH_LAYOUT_LIMITS.consoleMin, Math.min(WORKBENCH_LAYOUT_LIMITS.consoleMax, Math.floor(viewport.height * 0.45), viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight - bottomHeight));
458
530
  }
459
531
  function resolveLeftMax(viewport, rightWidth) {
460
532
  return Math.max(WORKBENCH_LAYOUT_LIMITS.leftMin, Math.min(WORKBENCH_LAYOUT_LIMITS.leftMax, viewport.width - rightWidth - WORKBENCH_LAYOUT_LIMITS.sceneMinWidth));
@@ -1 +1 @@
1
- {"version":3,"file":"local-editor-ui-workbench.js","sourceRoot":"","sources":["../src/local-editor-ui-workbench.ts"],"names":[],"mappings":"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","sourcesContent":["import { LOCAL_EDITOR_THEME_CLASS } from './local-editor-ui-theme';\nimport { createLocalEditorIcon, type LocalEditorIconName } from './local-editor-ui-icons';\nimport type {\n LocalEditorWorkbenchLayout,\n LocalEditorWorkbenchPanelDescriptor,\n LocalEditorWorkbenchRegionDescriptor,\n} from './local-editor-ui-types';\nimport type { HierarchySurfaceContribution } from '@fps-games/plugin-hierarchy';\n\nexport interface LocalEditorWorkbenchLayoutState {\n leftWidth: number;\n rightWidth: number;\n bottomHeight: number;\n leftCollapsed: boolean;\n rightCollapsed: boolean;\n bottomCollapsed: boolean;\n}\n\nexport interface LocalEditorWorkbenchLayoutController {\n getLayout(): LocalEditorWorkbenchLayoutState;\n refresh(): void;\n setLayout(layout: LocalEditorWorkbenchLayoutState, save?: boolean): void;\n setBottomCollapsed(collapsed: boolean, save?: boolean): void;\n reset(): void;\n dispose(): void;\n}\n\nexport interface LocalEditorWorkbenchLayoutControllerOptions {\n onBeforeApply?: (\n layout: LocalEditorWorkbenchLayoutState,\n dockDisplay: LocalEditorWorkbenchDockDisplay,\n ) => void;\n onAfterApply?: (\n layout: LocalEditorWorkbenchLayoutState,\n dockDisplay: LocalEditorWorkbenchDockDisplay,\n ) => void;\n}\n\nexport interface LocalEditorWorkbenchViewport {\n width: number;\n height: number;\n}\n\nexport interface LocalEditorWorkbenchVisibility {\n leftVisible: boolean;\n rightVisible: boolean;\n bottomVisible: boolean;\n leftAutoHidden: boolean;\n rightAutoHidden: boolean;\n bottomAutoHidden: boolean;\n}\n\nexport interface LocalEditorWorkbenchOverlayState {\n leftOpen: boolean;\n rightOpen: boolean;\n bottomOpen: boolean;\n}\n\nexport interface LocalEditorWorkbenchDockDisplay extends LocalEditorWorkbenchVisibility {\n leftDockVisible: boolean;\n rightDockVisible: boolean;\n bottomDockVisible: boolean;\n leftDockOverlay: boolean;\n rightDockOverlay: boolean;\n bottomDockOverlay: boolean;\n}\n\nconst LOCAL_EDITOR_WORKBENCH_LAYOUT_STORAGE_KEY = 'fps-game-editor:workbench-layout:v1';\n\nconst DEFAULT_WORKBENCH_LAYOUT: LocalEditorWorkbenchLayoutState = {\n leftWidth: 300,\n rightWidth: 340,\n bottomHeight: 260,\n leftCollapsed: false,\n rightCollapsed: false,\n bottomCollapsed: true,\n};\n\nconst WORKBENCH_LAYOUT_LIMITS = {\n leftMin: 220,\n leftMax: 420,\n rightMin: 300,\n rightMax: 520,\n bottomMin: 160,\n bottomMax: 420,\n sceneMinWidth: 420,\n sceneMinHeight: 220,\n};\n\nconst RESIZER_THICKNESS = 7;\nconst WORKBENCH_COMPACT_WIDTH = 760;\nconst WORKBENCH_RIGHT_AUTO_COLLAPSE_WIDTH = 1120;\nconst WORKBENCH_BOTTOM_AUTO_COLLAPSE_HEIGHT = 520;\n\nexport const LOCAL_EDITOR_WORKBENCH_REGIONS = [\n { id: 'top-app-bar', label: 'Top App Bar' },\n { id: 'left-dock', label: 'Left Dock' },\n { id: 'scene-view', label: 'Scene View' },\n { id: 'scene-header', label: 'Scene View Header' },\n { id: 'right-dock', label: 'Right Dock' },\n { id: 'bottom-dock', label: 'Bottom Dock' },\n] satisfies LocalEditorWorkbenchRegionDescriptor[];\n\nexport const LOCAL_EDITOR_WORKBENCH_PANELS = [\n { id: 'inspector', title: '检查器', area: 'right' },\n { id: 'rendering', title: '渲染', area: 'right' },\n { id: 'markers', title: '标记', area: 'right' },\n { id: 'plugins', title: '插件', area: 'right' },\n { id: 'assets', title: '资产', area: 'bottom', contextMenu: 'asset-browser' },\n { id: 'history', title: '历史', area: 'bottom' },\n] satisfies LocalEditorWorkbenchPanelDescriptor[];\n\nexport function createDefaultLocalEditorWorkbenchLayout(\n hierarchySurface: HierarchySurfaceContribution,\n): LocalEditorWorkbenchLayout {\n const hierarchyPanel = {\n id: hierarchySurface.id,\n title: hierarchySurface.title,\n area: hierarchySurface.area,\n toolbar: hierarchySurface.toolbar,\n } satisfies LocalEditorWorkbenchPanelDescriptor;\n return {\n regions: [...LOCAL_EDITOR_WORKBENCH_REGIONS],\n panels: [hierarchyPanel, ...LOCAL_EDITOR_WORKBENCH_PANELS],\n activeTabs: {\n left: 'hierarchy',\n right: 'inspector',\n bottom: 'assets',\n },\n };\n}\n\nexport interface LocalEditorWorkbenchElements {\n root: HTMLDivElement;\n leftDock: HTMLDivElement;\n sceneFrame: HTMLDivElement;\n sceneHeader: HTMLDivElement;\n rightDock: HTMLDivElement;\n bottomDock: HTMLDivElement;\n leftResizer: HTMLDivElement;\n rightResizer: HTMLDivElement;\n bottomResizer: HTMLDivElement;\n leftToggle: HTMLButtonElement;\n rightToggle: HTMLButtonElement;\n bottomToggle: HTMLButtonElement;\n}\n\nexport function createLocalEditorWorkbench(doc: Document): LocalEditorWorkbenchElements {\n const root = doc.createElement('div');\n root.dataset.editorWorkbench = 'true';\n root.className = `${LOCAL_EDITOR_THEME_CLASS} fps-editor-ui-workbench-root`;\n root.style.display = 'none';\n\n const leftDock = createDock(doc, 'left');\n const rightDock = createDock(doc, 'right');\n const bottomDock = createDock(doc, 'bottom');\n const leftResizer = createResizer(doc, 'left');\n const rightResizer = createResizer(doc, 'right');\n const bottomResizer = createResizer(doc, 'bottom');\n const leftToggle = createDockToggle(doc, 'left', 'hierarchy');\n const rightToggle = createDockToggle(doc, 'right', 'inspector');\n const bottomToggle = createDockToggle(doc, 'bottom', 'asset');\n const sceneFrame = doc.createElement('div');\n sceneFrame.className = 'fps-editor-ui-scene-frame';\n sceneFrame.dataset.editorWorkbenchRegion = 'scene-view';\n const sceneHeader = doc.createElement('div');\n sceneHeader.className = 'fps-editor-ui-scene-header';\n sceneHeader.dataset.editorWorkbenchRegion = 'scene-header';\n sceneFrame.appendChild(sceneHeader);\n\n root.appendChild(sceneFrame);\n root.appendChild(leftDock);\n root.appendChild(rightDock);\n root.appendChild(bottomDock);\n root.appendChild(leftResizer);\n root.appendChild(rightResizer);\n root.appendChild(bottomResizer);\n root.appendChild(leftToggle);\n root.appendChild(rightToggle);\n root.appendChild(bottomToggle);\n return {\n root,\n leftDock,\n sceneFrame,\n sceneHeader,\n rightDock,\n bottomDock,\n leftResizer,\n rightResizer,\n bottomResizer,\n leftToggle,\n rightToggle,\n bottomToggle,\n };\n}\n\nfunction createDock(doc: Document, area: 'left' | 'right' | 'bottom'): HTMLDivElement {\n const dock = doc.createElement('div');\n dock.className = 'fps-editor-ui-workbench-dock';\n dock.dataset.editorWorkbenchRegion = area === 'left' ? 'left-dock' : area === 'right' ? 'right-dock' : 'bottom-dock';\n return dock;\n}\n\nfunction createResizer(doc: Document, area: 'left' | 'right' | 'bottom'): HTMLDivElement {\n const resizer = doc.createElement('div');\n resizer.className = 'fps-editor-ui-workbench-resizer';\n resizer.dataset.editorWorkbenchResizer = area;\n resizer.title = area === 'bottom'\n ? '拖拽调整底部面板高度,双击恢复默认'\n : '拖拽调整面板宽度,双击恢复默认';\n return resizer;\n}\n\nfunction createDockToggle(doc: Document, area: 'left' | 'right' | 'bottom', icon: LocalEditorIconName): HTMLButtonElement {\n const button = doc.createElement('button');\n button.className = 'fps-editor-ui-workbench-toggle';\n button.type = 'button';\n button.dataset.editorWorkbenchToggle = area;\n button.appendChild(createLocalEditorIcon(doc, icon, { size: 14 }));\n return button;\n}\n\nexport function createWorkbenchPanelContent(doc: Document): HTMLDivElement {\n const content = doc.createElement('div');\n content.className = 'fps-editor-ui-panel-content';\n content.dataset.editorPanelContent = 'true';\n return content;\n}\n\nexport function createSceneHeaderToolbar(doc: Document): HTMLDivElement {\n const toolbar = doc.createElement('div');\n toolbar.className = 'fps-editor-ui-scene-toolbar';\n toolbar.dataset.editorWorkbenchRegion = 'scene-toolbar';\n return toolbar;\n}\n\nexport function normalizeLocalEditorWorkbenchLayout(\n input: Partial<LocalEditorWorkbenchLayoutState> | null | undefined,\n viewport: LocalEditorWorkbenchViewport,\n): LocalEditorWorkbenchLayoutState {\n const userLayout = normalizeLocalEditorWorkbenchUserLayout(input);\n const compactWidth = viewport.width < WORKBENCH_COMPACT_WIDTH;\n const rightAutoCollapsed = viewport.width < WORKBENCH_RIGHT_AUTO_COLLAPSE_WIDTH;\n const leftVisible = !userLayout.leftCollapsed && !compactWidth;\n const rightVisible = !userLayout.rightCollapsed && !rightAutoCollapsed;\n\n const rightEdge = rightVisible\n ? clampNumber(userLayout.rightWidth, WORKBENCH_LAYOUT_LIMITS.rightMin, resolveRightMax(viewport, leftVisible))\n : 0;\n const leftEdge = leftVisible\n ? clampNumber(userLayout.leftWidth, WORKBENCH_LAYOUT_LIMITS.leftMin, resolveLeftMax(viewport, rightEdge))\n : 0;\n const bottomMax = Math.max(\n WORKBENCH_LAYOUT_LIMITS.bottomMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.bottomMax,\n Math.floor(viewport.height * 0.45),\n viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight,\n ),\n );\n\n return {\n leftWidth: leftVisible ? leftEdge : userLayout.leftWidth,\n rightWidth: rightVisible ? rightEdge : userLayout.rightWidth,\n bottomHeight: clampNumber(userLayout.bottomHeight, WORKBENCH_LAYOUT_LIMITS.bottomMin, bottomMax),\n leftCollapsed: userLayout.leftCollapsed,\n rightCollapsed: userLayout.rightCollapsed,\n bottomCollapsed: userLayout.bottomCollapsed,\n };\n}\n\nexport function normalizeLocalEditorWorkbenchUserLayout(\n input: Partial<LocalEditorWorkbenchLayoutState> | null | undefined,\n): LocalEditorWorkbenchLayoutState {\n const next = {\n ...DEFAULT_WORKBENCH_LAYOUT,\n ...(input ?? {}),\n };\n return {\n leftWidth: clampNumber(next.leftWidth, WORKBENCH_LAYOUT_LIMITS.leftMin, WORKBENCH_LAYOUT_LIMITS.leftMax),\n rightWidth: clampNumber(next.rightWidth, WORKBENCH_LAYOUT_LIMITS.rightMin, WORKBENCH_LAYOUT_LIMITS.rightMax),\n bottomHeight: clampNumber(next.bottomHeight, WORKBENCH_LAYOUT_LIMITS.bottomMin, WORKBENCH_LAYOUT_LIMITS.bottomMax),\n leftCollapsed: next.leftCollapsed === true,\n rightCollapsed: next.rightCollapsed === true,\n bottomCollapsed: next.bottomCollapsed === true,\n };\n}\n\nexport function resolveLocalEditorWorkbenchVisibility(\n layout: LocalEditorWorkbenchLayoutState,\n viewport: LocalEditorWorkbenchViewport,\n): LocalEditorWorkbenchVisibility {\n const leftAutoHidden = viewport.width < WORKBENCH_COMPACT_WIDTH;\n const rightAutoHidden = viewport.width < WORKBENCH_RIGHT_AUTO_COLLAPSE_WIDTH;\n const bottomAutoHidden = viewport.height < WORKBENCH_BOTTOM_AUTO_COLLAPSE_HEIGHT;\n return {\n leftVisible: !layout.leftCollapsed && !leftAutoHidden,\n rightVisible: !layout.rightCollapsed && !rightAutoHidden,\n bottomVisible: !layout.bottomCollapsed && !bottomAutoHidden,\n leftAutoHidden,\n rightAutoHidden,\n bottomAutoHidden,\n };\n}\n\nexport function resolveLocalEditorWorkbenchDockDisplay(\n layout: LocalEditorWorkbenchLayoutState,\n viewport: LocalEditorWorkbenchViewport,\n overlay: Partial<LocalEditorWorkbenchOverlayState> | null | undefined,\n): LocalEditorWorkbenchDockDisplay {\n const visibility = resolveLocalEditorWorkbenchVisibility(layout, viewport);\n const leftDockOverlay = visibility.leftAutoHidden && overlay?.leftOpen === true;\n const rightDockOverlay = visibility.rightAutoHidden && overlay?.rightOpen === true;\n const bottomDockOverlay = visibility.bottomAutoHidden && overlay?.bottomOpen === true;\n return {\n ...visibility,\n leftDockVisible: visibility.leftVisible || leftDockOverlay,\n rightDockVisible: visibility.rightVisible || rightDockOverlay,\n bottomDockVisible: visibility.bottomVisible || bottomDockOverlay,\n leftDockOverlay,\n rightDockOverlay,\n bottomDockOverlay,\n };\n}\n\nexport function createLocalEditorWorkbenchLayoutController(\n doc: Document,\n elements: LocalEditorWorkbenchElements,\n options: LocalEditorWorkbenchLayoutControllerOptions = {},\n): LocalEditorWorkbenchLayoutController {\n const win = doc.defaultView;\n let layout = normalizeLocalEditorWorkbenchUserLayout(readStoredWorkbenchLayout(doc));\n let appliedLayout = { ...layout };\n let projectedVisibility = resolveLocalEditorWorkbenchVisibility(layout, readViewport(doc));\n let overlay: LocalEditorWorkbenchOverlayState = { leftOpen: false, rightOpen: false, bottomOpen: false };\n let appliedProjectedVisibility = { ...projectedVisibility };\n let appliedOverlay = { ...overlay };\n let drag:\n | { area: 'left' | 'right' | 'bottom' }\n | null = null;\n\n const persist = (): void => writeStoredWorkbenchLayout(doc, layout);\n\n const apply = (save = false): void => {\n const viewport = readViewport(doc);\n const projectedLayout = normalizeLocalEditorWorkbenchLayout(layout, viewport);\n projectedVisibility = resolveLocalEditorWorkbenchVisibility(projectedLayout, viewport);\n if (!projectedVisibility.leftAutoHidden && overlay.leftOpen) overlay = { ...overlay, leftOpen: false };\n if (!projectedVisibility.rightAutoHidden && overlay.rightOpen) overlay = { ...overlay, rightOpen: false };\n if (!projectedVisibility.bottomAutoHidden && overlay.bottomOpen) overlay = { ...overlay, bottomOpen: false };\n const dockDisplay = resolveLocalEditorWorkbenchDockDisplay(projectedLayout, viewport, overlay);\n try {\n options.onBeforeApply?.(projectedLayout, dockDisplay);\n } catch (error) {\n layout = { ...appliedLayout };\n projectedVisibility = { ...appliedProjectedVisibility };\n overlay = { ...appliedOverlay };\n throw error;\n }\n const leftEdge = projectedVisibility.leftVisible ? projectedLayout.leftWidth : 0;\n const rightEdge = projectedVisibility.rightVisible ? projectedLayout.rightWidth : 0;\n const bottomEdge = projectedVisibility.bottomVisible ? projectedLayout.bottomHeight : 0;\n const leftDockWidth = dockDisplay.leftDockOverlay\n ? resolveOverlayPanelWidth(viewport, projectedLayout.leftWidth)\n : projectedLayout.leftWidth;\n const rightDockWidth = dockDisplay.rightDockOverlay\n ? resolveOverlayPanelWidth(viewport, projectedLayout.rightWidth)\n : projectedLayout.rightWidth;\n const bottomDockHeight = dockDisplay.bottomDockOverlay\n ? resolveOverlayPanelHeight(viewport, projectedLayout.bottomHeight)\n : projectedLayout.bottomHeight;\n\n elements.root.dataset.editorLayoutLeftCollapsed = String(!dockDisplay.leftDockVisible);\n elements.root.dataset.editorLayoutRightCollapsed = String(!dockDisplay.rightDockVisible);\n elements.root.dataset.editorLayoutBottomCollapsed = String(!dockDisplay.bottomDockVisible);\n elements.root.dataset.editorLayoutLeftOverlay = String(dockDisplay.leftDockOverlay);\n elements.root.dataset.editorLayoutRightOverlay = String(dockDisplay.rightDockOverlay);\n elements.root.dataset.editorLayoutBottomOverlay = String(dockDisplay.bottomDockOverlay);\n\n elements.sceneFrame.style.left = `${leftEdge}px`;\n elements.sceneFrame.style.right = `${rightEdge}px`;\n elements.sceneFrame.style.bottom = `${bottomEdge}px`;\n\n elements.leftDock.style.display = dockDisplay.leftDockVisible ? 'flex' : 'none';\n elements.leftDock.style.width = `${leftDockWidth}px`;\n elements.leftDock.style.bottom = dockDisplay.leftDockOverlay ? '0' : `${bottomEdge}px`;\n elements.leftDock.style.zIndex = dockDisplay.leftDockOverlay ? '6' : '';\n elements.leftDock.style.boxShadow = dockDisplay.leftDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';\n\n elements.rightDock.style.display = dockDisplay.rightDockVisible ? 'flex' : 'none';\n elements.rightDock.style.width = `${rightDockWidth}px`;\n elements.rightDock.style.zIndex = dockDisplay.rightDockOverlay ? '6' : '';\n elements.rightDock.style.boxShadow = dockDisplay.rightDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';\n\n elements.bottomDock.style.display = dockDisplay.bottomDockVisible ? 'flex' : 'none';\n elements.bottomDock.style.left = '0';\n elements.bottomDock.style.right = dockDisplay.bottomDockOverlay ? '0' : `${rightEdge}px`;\n elements.bottomDock.style.height = `${bottomDockHeight}px`;\n elements.bottomDock.style.zIndex = dockDisplay.bottomDockOverlay ? '6' : '';\n elements.bottomDock.style.boxShadow = dockDisplay.bottomDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';\n\n elements.leftResizer.style.display = projectedVisibility.leftVisible ? '' : 'none';\n elements.leftResizer.style.left = `${projectedLayout.leftWidth - Math.ceil(RESIZER_THICKNESS / 2)}px`;\n elements.leftResizer.style.top = '0';\n elements.leftResizer.style.bottom = `${bottomEdge}px`;\n\n elements.rightResizer.style.display = projectedVisibility.rightVisible ? '' : 'none';\n elements.rightResizer.style.right = `${projectedLayout.rightWidth - Math.ceil(RESIZER_THICKNESS / 2)}px`;\n elements.rightResizer.style.top = '0';\n elements.rightResizer.style.bottom = '0';\n\n elements.bottomResizer.style.display = projectedVisibility.bottomVisible ? '' : 'none';\n elements.bottomResizer.style.left = '0';\n elements.bottomResizer.style.right = `${rightEdge}px`;\n elements.bottomResizer.style.bottom = `${projectedLayout.bottomHeight - Math.ceil(RESIZER_THICKNESS / 2)}px`;\n\n elements.leftToggle.style.left = dockDisplay.leftDockVisible ? `${Math.max(6, leftDockWidth - 13)}px` : '6px';\n elements.leftToggle.style.top = '43px';\n elements.leftToggle.disabled = false;\n elements.leftToggle.style.opacity = '';\n elements.leftToggle.style.cursor = 'pointer';\n elements.leftToggle.title = dockDisplay.leftDockVisible ? '隐藏层级面板' : '显示层级面板';\n elements.leftToggle.setAttribute('aria-label', elements.leftToggle.title);\n\n elements.rightToggle.style.right = dockDisplay.rightDockVisible ? `${Math.max(6, rightDockWidth - 13)}px` : '6px';\n elements.rightToggle.style.top = '43px';\n elements.rightToggle.disabled = false;\n elements.rightToggle.style.opacity = '';\n elements.rightToggle.style.cursor = 'pointer';\n elements.rightToggle.title = dockDisplay.rightDockVisible ? '隐藏检查器面板' : '显示检查器面板';\n elements.rightToggle.setAttribute('aria-label', elements.rightToggle.title);\n\n elements.bottomToggle.style.left = '50%';\n elements.bottomToggle.style.transform = 'translateX(-50%)';\n elements.bottomToggle.style.bottom = dockDisplay.bottomDockVisible ? `${Math.max(6, bottomDockHeight - 13)}px` : '6px';\n elements.bottomToggle.disabled = false;\n elements.bottomToggle.style.opacity = '';\n elements.bottomToggle.style.cursor = 'pointer';\n elements.bottomToggle.title = dockDisplay.bottomDockVisible ? '隐藏资产/历史面板' : '显示资产/历史面板';\n elements.bottomToggle.setAttribute('aria-label', elements.bottomToggle.title);\n\n if (save) persist();\n appliedLayout = { ...layout };\n appliedProjectedVisibility = { ...projectedVisibility };\n appliedOverlay = { ...overlay };\n options.onAfterApply?.(projectedLayout, dockDisplay);\n };\n\n const onPointerMove = (event: PointerEvent): void => {\n if (!drag) return;\n const viewport = readViewport(doc);\n if (drag.area === 'left') {\n layout = {\n ...layout,\n leftWidth: clampNumber(\n event.clientX,\n WORKBENCH_LAYOUT_LIMITS.leftMin,\n resolveLeftMax(viewport, projectedVisibility.rightVisible ? layout.rightWidth : 0),\n ),\n };\n } else if (drag.area === 'right') {\n layout = {\n ...layout,\n rightWidth: clampNumber(\n viewport.width - event.clientX,\n WORKBENCH_LAYOUT_LIMITS.rightMin,\n resolveRightMax(viewport, projectedVisibility.leftVisible),\n ),\n };\n } else {\n const bottomMax = Math.max(\n WORKBENCH_LAYOUT_LIMITS.bottomMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.bottomMax,\n Math.floor(viewport.height * 0.45),\n viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight,\n ),\n );\n layout = {\n ...layout,\n bottomHeight: clampNumber(viewport.height - event.clientY, WORKBENCH_LAYOUT_LIMITS.bottomMin, bottomMax),\n };\n }\n apply();\n };\n\n const onPointerUp = (): void => {\n if (!drag) return;\n drag = null;\n doc.body.style.cursor = '';\n doc.body.style.userSelect = '';\n win?.removeEventListener('pointermove', onPointerMove);\n win?.removeEventListener('pointerup', onPointerUp);\n persist();\n };\n\n const beginDrag = (area: 'left' | 'right' | 'bottom', event: PointerEvent): void => {\n if (event.button !== 0) return;\n event.preventDefault();\n drag = { area };\n doc.body.style.cursor = area === 'bottom' ? 'row-resize' : 'col-resize';\n doc.body.style.userSelect = 'none';\n win?.addEventListener('pointermove', onPointerMove);\n win?.addEventListener('pointerup', onPointerUp);\n };\n\n const onLeftPointerDown = (event: PointerEvent): void => beginDrag('left', event);\n const onRightPointerDown = (event: PointerEvent): void => beginDrag('right', event);\n const onBottomPointerDown = (event: PointerEvent): void => beginDrag('bottom', event);\n const onLeftDoubleClick = (): void => {\n layout = { ...layout, leftWidth: DEFAULT_WORKBENCH_LAYOUT.leftWidth };\n apply(true);\n };\n const onRightDoubleClick = (): void => {\n layout = { ...layout, rightWidth: DEFAULT_WORKBENCH_LAYOUT.rightWidth };\n apply(true);\n };\n const onBottomDoubleClick = (): void => {\n layout = { ...layout, bottomHeight: DEFAULT_WORKBENCH_LAYOUT.bottomHeight };\n apply(true);\n };\n const onLeftToggle = (): void => {\n if (projectedVisibility.leftAutoHidden) {\n overlay = { ...overlay, leftOpen: !overlay.leftOpen };\n apply();\n return;\n }\n layout = { ...layout, leftCollapsed: !layout.leftCollapsed };\n apply(true);\n };\n const onRightToggle = (): void => {\n if (projectedVisibility.rightAutoHidden) {\n overlay = { ...overlay, rightOpen: !overlay.rightOpen };\n apply();\n return;\n }\n layout = { ...layout, rightCollapsed: !layout.rightCollapsed };\n apply(true);\n };\n const onBottomToggle = (): void => {\n if (projectedVisibility.bottomAutoHidden) {\n overlay = { ...overlay, bottomOpen: !overlay.bottomOpen };\n apply();\n return;\n }\n layout = { ...layout, bottomCollapsed: !layout.bottomCollapsed };\n apply(true);\n };\n const onResize = (): void => apply();\n\n elements.leftResizer.addEventListener('pointerdown', onLeftPointerDown);\n elements.rightResizer.addEventListener('pointerdown', onRightPointerDown);\n elements.bottomResizer.addEventListener('pointerdown', onBottomPointerDown);\n elements.leftResizer.addEventListener('dblclick', onLeftDoubleClick);\n elements.rightResizer.addEventListener('dblclick', onRightDoubleClick);\n elements.bottomResizer.addEventListener('dblclick', onBottomDoubleClick);\n elements.leftToggle.addEventListener('click', onLeftToggle);\n elements.rightToggle.addEventListener('click', onRightToggle);\n elements.bottomToggle.addEventListener('click', onBottomToggle);\n win?.addEventListener('resize', onResize);\n apply();\n\n return {\n getLayout() {\n return { ...layout };\n },\n refresh() {\n apply();\n },\n setLayout(nextLayout: LocalEditorWorkbenchLayoutState, save = false) {\n layout = normalizeLocalEditorWorkbenchUserLayout(nextLayout);\n apply(save);\n },\n setBottomCollapsed(collapsed: boolean, save = false) {\n if (layout.bottomCollapsed === collapsed) return;\n layout = { ...layout, bottomCollapsed: collapsed };\n apply(save);\n },\n reset() {\n layout = { ...DEFAULT_WORKBENCH_LAYOUT };\n apply(true);\n },\n dispose() {\n onPointerUp();\n elements.leftResizer.removeEventListener('pointerdown', onLeftPointerDown);\n elements.rightResizer.removeEventListener('pointerdown', onRightPointerDown);\n elements.bottomResizer.removeEventListener('pointerdown', onBottomPointerDown);\n elements.leftResizer.removeEventListener('dblclick', onLeftDoubleClick);\n elements.rightResizer.removeEventListener('dblclick', onRightDoubleClick);\n elements.bottomResizer.removeEventListener('dblclick', onBottomDoubleClick);\n elements.leftToggle.removeEventListener('click', onLeftToggle);\n elements.rightToggle.removeEventListener('click', onRightToggle);\n elements.bottomToggle.removeEventListener('click', onBottomToggle);\n win?.removeEventListener('resize', onResize);\n },\n };\n}\n\nfunction readViewport(doc: Document): LocalEditorWorkbenchViewport {\n const win = doc.defaultView;\n return {\n width: Math.max(320, win?.innerWidth ?? doc.documentElement.clientWidth ?? 1280),\n height: Math.max(320, win?.innerHeight ?? doc.documentElement.clientHeight ?? 720),\n };\n}\n\nfunction resolveOverlayPanelWidth(viewport: LocalEditorWorkbenchViewport, preferredWidth: number): number {\n return Math.min(preferredWidth, Math.max(260, viewport.width - 24));\n}\n\nfunction resolveOverlayPanelHeight(viewport: LocalEditorWorkbenchViewport, preferredHeight: number): number {\n return Math.min(preferredHeight, Math.max(WORKBENCH_LAYOUT_LIMITS.bottomMin, viewport.height - 64));\n}\n\nfunction resolveLeftMax(viewport: LocalEditorWorkbenchViewport, rightWidth: number): number {\n return Math.max(\n WORKBENCH_LAYOUT_LIMITS.leftMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.leftMax,\n viewport.width - rightWidth - WORKBENCH_LAYOUT_LIMITS.sceneMinWidth,\n ),\n );\n}\n\nfunction resolveRightMax(viewport: LocalEditorWorkbenchViewport, leftVisible: boolean): number {\n const leftWidth = leftVisible ? WORKBENCH_LAYOUT_LIMITS.leftMin : 0;\n return Math.max(\n WORKBENCH_LAYOUT_LIMITS.rightMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.rightMax,\n viewport.width - leftWidth - WORKBENCH_LAYOUT_LIMITS.sceneMinWidth,\n ),\n );\n}\n\nfunction clampNumber(value: unknown, min: number, max: number): number {\n const numeric = typeof value === 'number' && Number.isFinite(value) ? value : min;\n return Math.min(Math.max(numeric, min), max);\n}\n\nfunction readStoredWorkbenchLayout(doc: Document): Partial<LocalEditorWorkbenchLayoutState> | null {\n try {\n const raw = doc.defaultView?.localStorage?.getItem(LOCAL_EDITOR_WORKBENCH_LAYOUT_STORAGE_KEY);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as Partial<LocalEditorWorkbenchLayoutState>;\n if (!parsed || typeof parsed !== 'object') return null;\n return parsed;\n } catch {\n return null;\n }\n}\n\nfunction writeStoredWorkbenchLayout(doc: Document, layout: LocalEditorWorkbenchLayoutState): void {\n try {\n doc.defaultView?.localStorage?.setItem(LOCAL_EDITOR_WORKBENCH_LAYOUT_STORAGE_KEY, JSON.stringify(layout));\n } catch {\n // Browsers can disable localStorage; the editor should still stay usable.\n }\n}\n"]}
1
+ {"version":3,"file":"local-editor-ui-workbench.js","sourceRoot":"","sources":["../src/local-editor-ui-workbench.ts"],"names":[],"mappings":"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","sourcesContent":["import { LOCAL_EDITOR_THEME_CLASS } from './local-editor-ui-theme';\nimport { createLocalEditorIcon, type LocalEditorIconName } from './local-editor-ui-icons';\nimport type {\n LocalEditorWorkbenchLayout,\n LocalEditorWorkbenchPanelDescriptor,\n LocalEditorWorkbenchRegionDescriptor,\n} from './local-editor-ui-types';\nimport type { HierarchySurfaceContribution } from '@fps-games/plugin-hierarchy';\n\nexport interface LocalEditorWorkbenchLayoutState {\n leftWidth: number;\n rightWidth: number;\n bottomHeight: number;\n consoleHeight: number;\n leftCollapsed: boolean;\n rightCollapsed: boolean;\n bottomCollapsed: boolean;\n consoleCollapsed: boolean;\n}\n\nexport interface LocalEditorWorkbenchLayoutController {\n getLayout(): LocalEditorWorkbenchLayoutState;\n refresh(): void;\n setLayout(layout: LocalEditorWorkbenchLayoutState, save?: boolean): void;\n setBottomCollapsed(collapsed: boolean, save?: boolean): void;\n setConsoleCollapsed(collapsed: boolean, save?: boolean): void;\n reset(): void;\n dispose(): void;\n}\n\nexport interface LocalEditorWorkbenchLayoutControllerOptions {\n onBeforeApply?: (\n layout: LocalEditorWorkbenchLayoutState,\n dockDisplay: LocalEditorWorkbenchDockDisplay,\n ) => void;\n onAfterApply?: (\n layout: LocalEditorWorkbenchLayoutState,\n dockDisplay: LocalEditorWorkbenchDockDisplay,\n ) => void;\n}\n\nexport interface LocalEditorWorkbenchViewport {\n width: number;\n height: number;\n}\n\nexport interface LocalEditorWorkbenchVisibility {\n leftVisible: boolean;\n rightVisible: boolean;\n bottomVisible: boolean;\n leftAutoHidden: boolean;\n rightAutoHidden: boolean;\n bottomAutoHidden: boolean;\n}\n\nexport interface LocalEditorWorkbenchOverlayState {\n leftOpen: boolean;\n rightOpen: boolean;\n bottomOpen: boolean;\n}\n\nexport interface LocalEditorWorkbenchDockDisplay extends LocalEditorWorkbenchVisibility {\n leftDockVisible: boolean;\n rightDockVisible: boolean;\n bottomDockVisible: boolean;\n leftDockOverlay: boolean;\n rightDockOverlay: boolean;\n bottomDockOverlay: boolean;\n}\n\nconst LOCAL_EDITOR_WORKBENCH_LAYOUT_STORAGE_KEY = 'fps-game-editor:workbench-layout:v1';\n\nconst DEFAULT_WORKBENCH_LAYOUT: LocalEditorWorkbenchLayoutState = {\n leftWidth: 300,\n rightWidth: 340,\n bottomHeight: 260,\n consoleHeight: 220,\n leftCollapsed: false,\n rightCollapsed: false,\n bottomCollapsed: true,\n consoleCollapsed: true,\n};\n\nconst WORKBENCH_LAYOUT_LIMITS = {\n leftMin: 220,\n leftMax: 420,\n rightMin: 300,\n rightMax: 520,\n bottomMin: 160,\n bottomMax: 420,\n consoleMin: 140,\n consoleMax: 420,\n consoleCollapsedHeight: 30,\n sceneMinWidth: 420,\n sceneMinHeight: 220,\n};\n\nconst RESIZER_THICKNESS = 7;\nconst WORKBENCH_COMPACT_WIDTH = 760;\nconst WORKBENCH_RIGHT_AUTO_COLLAPSE_WIDTH = 1120;\nconst WORKBENCH_BOTTOM_AUTO_COLLAPSE_HEIGHT = 520;\n\nexport const LOCAL_EDITOR_WORKBENCH_REGIONS = [\n { id: 'top-app-bar', label: 'Top App Bar' },\n { id: 'left-dock', label: 'Left Dock' },\n { id: 'scene-view', label: 'Scene View' },\n { id: 'scene-header', label: 'Scene View Header' },\n { id: 'right-dock', label: 'Right Dock' },\n { id: 'bottom-dock', label: 'Bottom Dock' },\n { id: 'bottom-console', label: 'Editor Console' },\n] satisfies LocalEditorWorkbenchRegionDescriptor[];\n\nexport const LOCAL_EDITOR_WORKBENCH_PANELS = [\n { id: 'inspector', title: '检查器', area: 'right' },\n { id: 'rendering', title: '渲染', area: 'right' },\n { id: 'markers', title: '标记', area: 'right' },\n { id: 'plugins', title: '插件', area: 'right' },\n { id: 'assets', title: '资产', area: 'bottom', contextMenu: 'asset-browser' },\n { id: 'history', title: '历史', area: 'bottom' },\n] satisfies LocalEditorWorkbenchPanelDescriptor[];\n\nexport function createDefaultLocalEditorWorkbenchLayout(\n hierarchySurface: HierarchySurfaceContribution,\n): LocalEditorWorkbenchLayout {\n const hierarchyPanel = {\n id: hierarchySurface.id,\n title: hierarchySurface.title,\n area: hierarchySurface.area,\n toolbar: hierarchySurface.toolbar,\n } satisfies LocalEditorWorkbenchPanelDescriptor;\n return {\n regions: [...LOCAL_EDITOR_WORKBENCH_REGIONS],\n panels: [hierarchyPanel, ...LOCAL_EDITOR_WORKBENCH_PANELS],\n activeTabs: {\n left: 'hierarchy',\n right: 'inspector',\n bottom: 'assets',\n },\n };\n}\n\nexport interface LocalEditorWorkbenchElements {\n root: HTMLDivElement;\n leftDock: HTMLDivElement;\n sceneFrame: HTMLDivElement;\n sceneHeader: HTMLDivElement;\n rightDock: HTMLDivElement;\n bottomDock: HTMLDivElement;\n consoleDock: HTMLDivElement;\n leftResizer: HTMLDivElement;\n rightResizer: HTMLDivElement;\n bottomResizer: HTMLDivElement;\n consoleResizer: HTMLDivElement;\n leftToggle: HTMLButtonElement;\n rightToggle: HTMLButtonElement;\n bottomToggle: HTMLButtonElement;\n}\n\nexport function createLocalEditorWorkbench(doc: Document): LocalEditorWorkbenchElements {\n const root = doc.createElement('div');\n root.dataset.editorWorkbench = 'true';\n root.className = `${LOCAL_EDITOR_THEME_CLASS} fps-editor-ui-workbench-root`;\n root.style.display = 'none';\n\n const leftDock = createDock(doc, 'left');\n const rightDock = createDock(doc, 'right');\n const bottomDock = createDock(doc, 'bottom');\n const consoleDock = createDock(doc, 'console');\n const leftResizer = createResizer(doc, 'left');\n const rightResizer = createResizer(doc, 'right');\n const bottomResizer = createResizer(doc, 'bottom');\n const consoleResizer = createResizer(doc, 'console');\n const leftToggle = createDockToggle(doc, 'left', 'hierarchy');\n const rightToggle = createDockToggle(doc, 'right', 'inspector');\n const bottomToggle = createDockToggle(doc, 'bottom', 'asset');\n const sceneFrame = doc.createElement('div');\n sceneFrame.className = 'fps-editor-ui-scene-frame';\n sceneFrame.dataset.editorWorkbenchRegion = 'scene-view';\n const sceneHeader = doc.createElement('div');\n sceneHeader.className = 'fps-editor-ui-scene-header';\n sceneHeader.dataset.editorWorkbenchRegion = 'scene-header';\n sceneFrame.appendChild(sceneHeader);\n\n root.appendChild(sceneFrame);\n root.appendChild(leftDock);\n root.appendChild(rightDock);\n root.appendChild(bottomDock);\n root.appendChild(consoleDock);\n root.appendChild(leftResizer);\n root.appendChild(rightResizer);\n root.appendChild(bottomResizer);\n root.appendChild(consoleResizer);\n root.appendChild(leftToggle);\n root.appendChild(rightToggle);\n root.appendChild(bottomToggle);\n return {\n root,\n leftDock,\n sceneFrame,\n sceneHeader,\n rightDock,\n bottomDock,\n consoleDock,\n leftResizer,\n rightResizer,\n bottomResizer,\n consoleResizer,\n leftToggle,\n rightToggle,\n bottomToggle,\n };\n}\n\nfunction createDock(doc: Document, area: 'left' | 'right' | 'bottom' | 'console'): HTMLDivElement {\n const dock = doc.createElement('div');\n dock.className = 'fps-editor-ui-workbench-dock';\n dock.dataset.editorWorkbenchRegion = area === 'left'\n ? 'left-dock'\n : area === 'right'\n ? 'right-dock'\n : area === 'bottom'\n ? 'bottom-dock'\n : 'bottom-console';\n return dock;\n}\n\nfunction createResizer(doc: Document, area: 'left' | 'right' | 'bottom' | 'console'): HTMLDivElement {\n const resizer = doc.createElement('div');\n resizer.className = 'fps-editor-ui-workbench-resizer';\n resizer.dataset.editorWorkbenchResizer = area;\n resizer.title = area === 'bottom' || area === 'console'\n ? `拖拽调整${area === 'console' ? '控制台' : '底部面板'}高度,双击恢复默认`\n : '拖拽调整面板宽度,双击恢复默认';\n return resizer;\n}\n\nfunction createDockToggle(doc: Document, area: 'left' | 'right' | 'bottom', icon: LocalEditorIconName): HTMLButtonElement {\n const button = doc.createElement('button');\n button.className = 'fps-editor-ui-workbench-toggle';\n button.type = 'button';\n button.dataset.editorWorkbenchToggle = area;\n button.appendChild(createLocalEditorIcon(doc, icon, { size: 14 }));\n return button;\n}\n\nexport function createWorkbenchPanelContent(doc: Document): HTMLDivElement {\n const content = doc.createElement('div');\n content.className = 'fps-editor-ui-panel-content';\n content.dataset.editorPanelContent = 'true';\n return content;\n}\n\nexport function createSceneHeaderToolbar(doc: Document): HTMLDivElement {\n const toolbar = doc.createElement('div');\n toolbar.className = 'fps-editor-ui-scene-toolbar';\n toolbar.dataset.editorWorkbenchRegion = 'scene-toolbar';\n return toolbar;\n}\n\nexport function normalizeLocalEditorWorkbenchLayout(\n input: Partial<LocalEditorWorkbenchLayoutState> | null | undefined,\n viewport: LocalEditorWorkbenchViewport,\n): LocalEditorWorkbenchLayoutState {\n const userLayout = normalizeLocalEditorWorkbenchUserLayout(input);\n const compactWidth = viewport.width < WORKBENCH_COMPACT_WIDTH;\n const rightAutoCollapsed = viewport.width < WORKBENCH_RIGHT_AUTO_COLLAPSE_WIDTH;\n const leftVisible = !userLayout.leftCollapsed && !compactWidth;\n const rightVisible = !userLayout.rightCollapsed && !rightAutoCollapsed;\n\n const rightEdge = rightVisible\n ? clampNumber(userLayout.rightWidth, WORKBENCH_LAYOUT_LIMITS.rightMin, resolveRightMax(viewport, leftVisible))\n : 0;\n const leftEdge = leftVisible\n ? clampNumber(userLayout.leftWidth, WORKBENCH_LAYOUT_LIMITS.leftMin, resolveLeftMax(viewport, rightEdge))\n : 0;\n const bottomMax = Math.max(\n WORKBENCH_LAYOUT_LIMITS.bottomMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.bottomMax,\n Math.floor(viewport.height * 0.45),\n viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight - resolveConsoleEdge(userLayout),\n ),\n );\n const consoleMax = resolveConsoleMax(viewport, userLayout.bottomCollapsed ? 0 : userLayout.bottomHeight);\n\n return {\n leftWidth: leftVisible ? leftEdge : userLayout.leftWidth,\n rightWidth: rightVisible ? rightEdge : userLayout.rightWidth,\n bottomHeight: clampNumber(userLayout.bottomHeight, WORKBENCH_LAYOUT_LIMITS.bottomMin, bottomMax),\n consoleHeight: clampNumber(userLayout.consoleHeight, WORKBENCH_LAYOUT_LIMITS.consoleMin, consoleMax),\n leftCollapsed: userLayout.leftCollapsed,\n rightCollapsed: userLayout.rightCollapsed,\n bottomCollapsed: userLayout.bottomCollapsed,\n consoleCollapsed: userLayout.consoleCollapsed,\n };\n}\n\nexport function normalizeLocalEditorWorkbenchUserLayout(\n input: Partial<LocalEditorWorkbenchLayoutState> | null | undefined,\n): LocalEditorWorkbenchLayoutState {\n const next = {\n ...DEFAULT_WORKBENCH_LAYOUT,\n ...(input ?? {}),\n };\n return {\n leftWidth: clampNumber(next.leftWidth, WORKBENCH_LAYOUT_LIMITS.leftMin, WORKBENCH_LAYOUT_LIMITS.leftMax),\n rightWidth: clampNumber(next.rightWidth, WORKBENCH_LAYOUT_LIMITS.rightMin, WORKBENCH_LAYOUT_LIMITS.rightMax),\n bottomHeight: clampNumber(next.bottomHeight, WORKBENCH_LAYOUT_LIMITS.bottomMin, WORKBENCH_LAYOUT_LIMITS.bottomMax),\n consoleHeight: clampNumber(next.consoleHeight, WORKBENCH_LAYOUT_LIMITS.consoleMin, WORKBENCH_LAYOUT_LIMITS.consoleMax),\n leftCollapsed: next.leftCollapsed === true,\n rightCollapsed: next.rightCollapsed === true,\n bottomCollapsed: next.bottomCollapsed === true,\n consoleCollapsed: next.consoleCollapsed === true,\n };\n}\n\nexport function resolveLocalEditorWorkbenchVisibility(\n layout: LocalEditorWorkbenchLayoutState,\n viewport: LocalEditorWorkbenchViewport,\n): LocalEditorWorkbenchVisibility {\n const leftAutoHidden = viewport.width < WORKBENCH_COMPACT_WIDTH;\n const rightAutoHidden = viewport.width < WORKBENCH_RIGHT_AUTO_COLLAPSE_WIDTH;\n const bottomAutoHidden = viewport.height < WORKBENCH_BOTTOM_AUTO_COLLAPSE_HEIGHT;\n return {\n leftVisible: !layout.leftCollapsed && !leftAutoHidden,\n rightVisible: !layout.rightCollapsed && !rightAutoHidden,\n bottomVisible: !layout.bottomCollapsed && !bottomAutoHidden,\n leftAutoHidden,\n rightAutoHidden,\n bottomAutoHidden,\n };\n}\n\nexport function resolveLocalEditorWorkbenchDockDisplay(\n layout: LocalEditorWorkbenchLayoutState,\n viewport: LocalEditorWorkbenchViewport,\n overlay: Partial<LocalEditorWorkbenchOverlayState> | null | undefined,\n): LocalEditorWorkbenchDockDisplay {\n const visibility = resolveLocalEditorWorkbenchVisibility(layout, viewport);\n const leftDockOverlay = visibility.leftAutoHidden && overlay?.leftOpen === true;\n const rightDockOverlay = visibility.rightAutoHidden && overlay?.rightOpen === true;\n const bottomDockOverlay = visibility.bottomAutoHidden && overlay?.bottomOpen === true;\n return {\n ...visibility,\n leftDockVisible: visibility.leftVisible || leftDockOverlay,\n rightDockVisible: visibility.rightVisible || rightDockOverlay,\n bottomDockVisible: visibility.bottomVisible || bottomDockOverlay,\n leftDockOverlay,\n rightDockOverlay,\n bottomDockOverlay,\n };\n}\n\nexport function createLocalEditorWorkbenchLayoutController(\n doc: Document,\n elements: LocalEditorWorkbenchElements,\n options: LocalEditorWorkbenchLayoutControllerOptions = {},\n): LocalEditorWorkbenchLayoutController {\n const win = doc.defaultView;\n let layout = normalizeLocalEditorWorkbenchUserLayout(readStoredWorkbenchLayout(doc));\n let appliedLayout = { ...layout };\n let projectedVisibility = resolveLocalEditorWorkbenchVisibility(layout, readViewport(doc));\n let overlay: LocalEditorWorkbenchOverlayState = { leftOpen: false, rightOpen: false, bottomOpen: false };\n let appliedProjectedVisibility = { ...projectedVisibility };\n let appliedOverlay = { ...overlay };\n let drag:\n | { area: 'left' | 'right' | 'bottom' | 'console' }\n | null = null;\n\n const persist = (): void => writeStoredWorkbenchLayout(doc, layout);\n\n const apply = (save = false): void => {\n const viewport = readViewport(doc);\n const projectedLayout = normalizeLocalEditorWorkbenchLayout(layout, viewport);\n projectedVisibility = resolveLocalEditorWorkbenchVisibility(projectedLayout, viewport);\n if (!projectedVisibility.leftAutoHidden && overlay.leftOpen) overlay = { ...overlay, leftOpen: false };\n if (!projectedVisibility.rightAutoHidden && overlay.rightOpen) overlay = { ...overlay, rightOpen: false };\n if (!projectedVisibility.bottomAutoHidden && overlay.bottomOpen) overlay = { ...overlay, bottomOpen: false };\n const dockDisplay = resolveLocalEditorWorkbenchDockDisplay(projectedLayout, viewport, overlay);\n try {\n options.onBeforeApply?.(projectedLayout, dockDisplay);\n } catch (error) {\n layout = { ...appliedLayout };\n projectedVisibility = { ...appliedProjectedVisibility };\n overlay = { ...appliedOverlay };\n throw error;\n }\n const leftEdge = projectedVisibility.leftVisible ? projectedLayout.leftWidth : 0;\n const rightEdge = projectedVisibility.rightVisible ? projectedLayout.rightWidth : 0;\n const consoleEdge = resolveConsoleEdge(projectedLayout);\n const bottomEdge = projectedVisibility.bottomVisible ? projectedLayout.bottomHeight : 0;\n const sceneBottomEdge = consoleEdge + bottomEdge;\n const leftDockWidth = dockDisplay.leftDockOverlay\n ? resolveOverlayPanelWidth(viewport, projectedLayout.leftWidth)\n : projectedLayout.leftWidth;\n const rightDockWidth = dockDisplay.rightDockOverlay\n ? resolveOverlayPanelWidth(viewport, projectedLayout.rightWidth)\n : projectedLayout.rightWidth;\n const bottomDockHeight = dockDisplay.bottomDockOverlay\n ? resolveOverlayPanelHeight(viewport, projectedLayout.bottomHeight)\n : projectedLayout.bottomHeight;\n\n elements.root.dataset.editorLayoutLeftCollapsed = String(!dockDisplay.leftDockVisible);\n elements.root.dataset.editorLayoutRightCollapsed = String(!dockDisplay.rightDockVisible);\n elements.root.dataset.editorLayoutBottomCollapsed = String(!dockDisplay.bottomDockVisible);\n elements.root.dataset.editorLayoutLeftOverlay = String(dockDisplay.leftDockOverlay);\n elements.root.dataset.editorLayoutRightOverlay = String(dockDisplay.rightDockOverlay);\n elements.root.dataset.editorLayoutBottomOverlay = String(dockDisplay.bottomDockOverlay);\n elements.root.dataset.editorLayoutConsoleCollapsed = String(projectedLayout.consoleCollapsed);\n\n elements.sceneFrame.style.left = `${leftEdge}px`;\n elements.sceneFrame.style.right = `${rightEdge}px`;\n elements.sceneFrame.style.bottom = `${sceneBottomEdge}px`;\n\n elements.leftDock.style.display = dockDisplay.leftDockVisible ? 'flex' : 'none';\n elements.leftDock.style.width = `${leftDockWidth}px`;\n elements.leftDock.style.bottom = `${consoleEdge}px`;\n elements.leftDock.style.zIndex = dockDisplay.leftDockOverlay ? '6' : '';\n elements.leftDock.style.boxShadow = dockDisplay.leftDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';\n\n elements.rightDock.style.display = dockDisplay.rightDockVisible ? 'flex' : 'none';\n elements.rightDock.style.width = `${rightDockWidth}px`;\n elements.rightDock.style.bottom = `${consoleEdge}px`;\n elements.rightDock.style.zIndex = dockDisplay.rightDockOverlay ? '6' : '';\n elements.rightDock.style.boxShadow = dockDisplay.rightDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';\n\n elements.bottomDock.style.display = dockDisplay.bottomDockVisible ? 'flex' : 'none';\n elements.bottomDock.style.left = dockDisplay.bottomDockOverlay ? '0' : `${leftEdge}px`;\n elements.bottomDock.style.right = dockDisplay.bottomDockOverlay ? '0' : `${rightEdge}px`;\n elements.bottomDock.style.bottom = `${consoleEdge}px`;\n elements.bottomDock.style.height = `${bottomDockHeight}px`;\n elements.bottomDock.style.zIndex = dockDisplay.bottomDockOverlay ? '6' : '';\n elements.bottomDock.style.boxShadow = dockDisplay.bottomDockOverlay ? 'var(--fps-editor-shadow-panel)' : '';\n\n elements.consoleDock.style.display = 'flex';\n elements.consoleDock.style.left = '0';\n elements.consoleDock.style.right = '0';\n elements.consoleDock.style.bottom = '0';\n elements.consoleDock.style.height = `${consoleEdge}px`;\n\n elements.leftResizer.style.display = projectedVisibility.leftVisible ? '' : 'none';\n elements.leftResizer.style.left = `${projectedLayout.leftWidth - Math.ceil(RESIZER_THICKNESS / 2)}px`;\n elements.leftResizer.style.top = '0';\n elements.leftResizer.style.bottom = `${consoleEdge}px`;\n\n elements.rightResizer.style.display = projectedVisibility.rightVisible ? '' : 'none';\n elements.rightResizer.style.right = `${projectedLayout.rightWidth - Math.ceil(RESIZER_THICKNESS / 2)}px`;\n elements.rightResizer.style.top = '0';\n elements.rightResizer.style.bottom = `${consoleEdge}px`;\n\n elements.bottomResizer.style.display = projectedVisibility.bottomVisible ? '' : 'none';\n elements.bottomResizer.style.left = dockDisplay.bottomDockOverlay ? '0' : `${leftEdge}px`;\n elements.bottomResizer.style.right = `${rightEdge}px`;\n elements.bottomResizer.style.bottom = `${consoleEdge + projectedLayout.bottomHeight - Math.ceil(RESIZER_THICKNESS / 2)}px`;\n\n elements.consoleResizer.style.display = projectedLayout.consoleCollapsed ? 'none' : '';\n elements.consoleResizer.style.left = '0';\n elements.consoleResizer.style.right = '0';\n elements.consoleResizer.style.bottom = `${consoleEdge - Math.ceil(RESIZER_THICKNESS / 2)}px`;\n\n elements.leftToggle.style.left = dockDisplay.leftDockVisible ? `${Math.max(6, leftDockWidth - 13)}px` : '6px';\n elements.leftToggle.style.top = '43px';\n elements.leftToggle.disabled = false;\n elements.leftToggle.style.opacity = '';\n elements.leftToggle.style.cursor = 'pointer';\n elements.leftToggle.title = dockDisplay.leftDockVisible ? '隐藏层级面板' : '显示层级面板';\n elements.leftToggle.setAttribute('aria-label', elements.leftToggle.title);\n\n elements.rightToggle.style.right = dockDisplay.rightDockVisible ? `${Math.max(6, rightDockWidth - 13)}px` : '6px';\n elements.rightToggle.style.top = '43px';\n elements.rightToggle.disabled = false;\n elements.rightToggle.style.opacity = '';\n elements.rightToggle.style.cursor = 'pointer';\n elements.rightToggle.title = dockDisplay.rightDockVisible ? '隐藏检查器面板' : '显示检查器面板';\n elements.rightToggle.setAttribute('aria-label', elements.rightToggle.title);\n\n elements.bottomToggle.style.left = '50%';\n elements.bottomToggle.style.transform = 'translateX(-50%)';\n elements.bottomToggle.style.bottom = dockDisplay.bottomDockVisible\n ? `${consoleEdge + Math.max(6, bottomDockHeight - 13)}px`\n : `${consoleEdge + 6}px`;\n elements.bottomToggle.disabled = false;\n elements.bottomToggle.style.opacity = '';\n elements.bottomToggle.style.cursor = 'pointer';\n elements.bottomToggle.title = dockDisplay.bottomDockVisible ? '隐藏资产/历史面板' : '显示资产/历史面板';\n elements.bottomToggle.setAttribute('aria-label', elements.bottomToggle.title);\n\n if (save) persist();\n appliedLayout = { ...layout };\n appliedProjectedVisibility = { ...projectedVisibility };\n appliedOverlay = { ...overlay };\n options.onAfterApply?.(projectedLayout, dockDisplay);\n };\n\n const onPointerMove = (event: PointerEvent): void => {\n if (!drag) return;\n const viewport = readViewport(doc);\n if (drag.area === 'left') {\n layout = {\n ...layout,\n leftWidth: clampNumber(\n event.clientX,\n WORKBENCH_LAYOUT_LIMITS.leftMin,\n resolveLeftMax(viewport, projectedVisibility.rightVisible ? layout.rightWidth : 0),\n ),\n };\n } else if (drag.area === 'right') {\n layout = {\n ...layout,\n rightWidth: clampNumber(\n viewport.width - event.clientX,\n WORKBENCH_LAYOUT_LIMITS.rightMin,\n resolveRightMax(viewport, projectedVisibility.leftVisible),\n ),\n };\n } else if (drag.area === 'bottom') {\n const bottomMax = Math.max(\n WORKBENCH_LAYOUT_LIMITS.bottomMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.bottomMax,\n Math.floor(viewport.height * 0.45),\n viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight - resolveConsoleEdge(layout),\n ),\n );\n layout = {\n ...layout,\n bottomHeight: clampNumber(\n viewport.height - event.clientY - resolveConsoleEdge(layout),\n WORKBENCH_LAYOUT_LIMITS.bottomMin,\n bottomMax,\n ),\n };\n } else {\n const bottomHeight = projectedVisibility.bottomVisible ? layout.bottomHeight : 0;\n layout = {\n ...layout,\n consoleHeight: clampNumber(\n viewport.height - event.clientY,\n WORKBENCH_LAYOUT_LIMITS.consoleMin,\n resolveConsoleMax(viewport, bottomHeight),\n ),\n };\n }\n apply();\n };\n\n const onPointerUp = (): void => {\n if (!drag) return;\n drag = null;\n doc.body.style.cursor = '';\n doc.body.style.userSelect = '';\n win?.removeEventListener('pointermove', onPointerMove);\n win?.removeEventListener('pointerup', onPointerUp);\n persist();\n };\n\n const beginDrag = (area: 'left' | 'right' | 'bottom' | 'console', event: PointerEvent): void => {\n if (event.button !== 0) return;\n event.preventDefault();\n drag = { area };\n doc.body.style.cursor = area === 'bottom' || area === 'console' ? 'row-resize' : 'col-resize';\n doc.body.style.userSelect = 'none';\n win?.addEventListener('pointermove', onPointerMove);\n win?.addEventListener('pointerup', onPointerUp);\n };\n\n const onLeftPointerDown = (event: PointerEvent): void => beginDrag('left', event);\n const onRightPointerDown = (event: PointerEvent): void => beginDrag('right', event);\n const onBottomPointerDown = (event: PointerEvent): void => beginDrag('bottom', event);\n const onConsolePointerDown = (event: PointerEvent): void => beginDrag('console', event);\n const onLeftDoubleClick = (): void => {\n layout = { ...layout, leftWidth: DEFAULT_WORKBENCH_LAYOUT.leftWidth };\n apply(true);\n };\n const onRightDoubleClick = (): void => {\n layout = { ...layout, rightWidth: DEFAULT_WORKBENCH_LAYOUT.rightWidth };\n apply(true);\n };\n const onBottomDoubleClick = (): void => {\n layout = { ...layout, bottomHeight: DEFAULT_WORKBENCH_LAYOUT.bottomHeight };\n apply(true);\n };\n const onConsoleDoubleClick = (): void => {\n layout = { ...layout, consoleHeight: DEFAULT_WORKBENCH_LAYOUT.consoleHeight };\n apply(true);\n };\n const onLeftToggle = (): void => {\n if (projectedVisibility.leftAutoHidden) {\n overlay = { ...overlay, leftOpen: !overlay.leftOpen };\n apply();\n return;\n }\n layout = { ...layout, leftCollapsed: !layout.leftCollapsed };\n apply(true);\n };\n const onRightToggle = (): void => {\n if (projectedVisibility.rightAutoHidden) {\n overlay = { ...overlay, rightOpen: !overlay.rightOpen };\n apply();\n return;\n }\n layout = { ...layout, rightCollapsed: !layout.rightCollapsed };\n apply(true);\n };\n const onBottomToggle = (): void => {\n if (projectedVisibility.bottomAutoHidden) {\n overlay = { ...overlay, bottomOpen: !overlay.bottomOpen };\n apply();\n return;\n }\n layout = { ...layout, bottomCollapsed: !layout.bottomCollapsed };\n apply(true);\n };\n const onResize = (): void => apply();\n\n elements.leftResizer.addEventListener('pointerdown', onLeftPointerDown);\n elements.rightResizer.addEventListener('pointerdown', onRightPointerDown);\n elements.bottomResizer.addEventListener('pointerdown', onBottomPointerDown);\n elements.consoleResizer.addEventListener('pointerdown', onConsolePointerDown);\n elements.leftResizer.addEventListener('dblclick', onLeftDoubleClick);\n elements.rightResizer.addEventListener('dblclick', onRightDoubleClick);\n elements.bottomResizer.addEventListener('dblclick', onBottomDoubleClick);\n elements.consoleResizer.addEventListener('dblclick', onConsoleDoubleClick);\n elements.leftToggle.addEventListener('click', onLeftToggle);\n elements.rightToggle.addEventListener('click', onRightToggle);\n elements.bottomToggle.addEventListener('click', onBottomToggle);\n win?.addEventListener('resize', onResize);\n apply();\n\n return {\n getLayout() {\n return { ...layout };\n },\n refresh() {\n apply();\n },\n setLayout(nextLayout: LocalEditorWorkbenchLayoutState, save = false) {\n layout = normalizeLocalEditorWorkbenchUserLayout(nextLayout);\n apply(save);\n },\n setBottomCollapsed(collapsed: boolean, save = false) {\n if (layout.bottomCollapsed === collapsed) return;\n layout = { ...layout, bottomCollapsed: collapsed };\n apply(save);\n },\n setConsoleCollapsed(collapsed: boolean, save = false) {\n if (layout.consoleCollapsed === collapsed) return;\n layout = { ...layout, consoleCollapsed: collapsed };\n apply(save);\n },\n reset() {\n layout = { ...DEFAULT_WORKBENCH_LAYOUT };\n apply(true);\n },\n dispose() {\n onPointerUp();\n elements.leftResizer.removeEventListener('pointerdown', onLeftPointerDown);\n elements.rightResizer.removeEventListener('pointerdown', onRightPointerDown);\n elements.bottomResizer.removeEventListener('pointerdown', onBottomPointerDown);\n elements.consoleResizer.removeEventListener('pointerdown', onConsolePointerDown);\n elements.leftResizer.removeEventListener('dblclick', onLeftDoubleClick);\n elements.rightResizer.removeEventListener('dblclick', onRightDoubleClick);\n elements.bottomResizer.removeEventListener('dblclick', onBottomDoubleClick);\n elements.consoleResizer.removeEventListener('dblclick', onConsoleDoubleClick);\n elements.leftToggle.removeEventListener('click', onLeftToggle);\n elements.rightToggle.removeEventListener('click', onRightToggle);\n elements.bottomToggle.removeEventListener('click', onBottomToggle);\n win?.removeEventListener('resize', onResize);\n },\n };\n}\n\nfunction readViewport(doc: Document): LocalEditorWorkbenchViewport {\n const win = doc.defaultView;\n return {\n width: Math.max(320, win?.innerWidth ?? doc.documentElement.clientWidth ?? 1280),\n height: Math.max(320, win?.innerHeight ?? doc.documentElement.clientHeight ?? 720),\n };\n}\n\nfunction resolveOverlayPanelWidth(viewport: LocalEditorWorkbenchViewport, preferredWidth: number): number {\n return Math.min(preferredWidth, Math.max(260, viewport.width - 24));\n}\n\nfunction resolveOverlayPanelHeight(viewport: LocalEditorWorkbenchViewport, preferredHeight: number): number {\n return Math.min(\n preferredHeight,\n Math.max(WORKBENCH_LAYOUT_LIMITS.bottomMin, viewport.height - WORKBENCH_LAYOUT_LIMITS.consoleCollapsedHeight - 64),\n );\n}\n\nexport function resolveLocalEditorConsoleEdge(layout: LocalEditorWorkbenchLayoutState): number {\n return resolveConsoleEdge(layout);\n}\n\nfunction resolveConsoleEdge(layout: LocalEditorWorkbenchLayoutState): number {\n return layout.consoleCollapsed\n ? WORKBENCH_LAYOUT_LIMITS.consoleCollapsedHeight\n : layout.consoleHeight;\n}\n\nfunction resolveConsoleMax(viewport: LocalEditorWorkbenchViewport, bottomHeight: number): number {\n return Math.max(\n WORKBENCH_LAYOUT_LIMITS.consoleMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.consoleMax,\n Math.floor(viewport.height * 0.45),\n viewport.height - WORKBENCH_LAYOUT_LIMITS.sceneMinHeight - bottomHeight,\n ),\n );\n}\n\nfunction resolveLeftMax(viewport: LocalEditorWorkbenchViewport, rightWidth: number): number {\n return Math.max(\n WORKBENCH_LAYOUT_LIMITS.leftMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.leftMax,\n viewport.width - rightWidth - WORKBENCH_LAYOUT_LIMITS.sceneMinWidth,\n ),\n );\n}\n\nfunction resolveRightMax(viewport: LocalEditorWorkbenchViewport, leftVisible: boolean): number {\n const leftWidth = leftVisible ? WORKBENCH_LAYOUT_LIMITS.leftMin : 0;\n return Math.max(\n WORKBENCH_LAYOUT_LIMITS.rightMin,\n Math.min(\n WORKBENCH_LAYOUT_LIMITS.rightMax,\n viewport.width - leftWidth - WORKBENCH_LAYOUT_LIMITS.sceneMinWidth,\n ),\n );\n}\n\nfunction clampNumber(value: unknown, min: number, max: number): number {\n const numeric = typeof value === 'number' && Number.isFinite(value) ? value : min;\n return Math.min(Math.max(numeric, min), max);\n}\n\nfunction readStoredWorkbenchLayout(doc: Document): Partial<LocalEditorWorkbenchLayoutState> | null {\n try {\n const raw = doc.defaultView?.localStorage?.getItem(LOCAL_EDITOR_WORKBENCH_LAYOUT_STORAGE_KEY);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as Partial<LocalEditorWorkbenchLayoutState>;\n if (!parsed || typeof parsed !== 'object') return null;\n return parsed;\n } catch {\n return null;\n }\n}\n\nfunction writeStoredWorkbenchLayout(doc: Document, layout: LocalEditorWorkbenchLayoutState): void {\n try {\n doc.defaultView?.localStorage?.setItem(LOCAL_EDITOR_WORKBENCH_LAYOUT_STORAGE_KEY, JSON.stringify(layout));\n } catch {\n // Browsers can disable localStorage; the editor should still stay usable.\n }\n}\n"]}
@@ -9,13 +9,14 @@ import type { LocalEditorBrowserUiAssetItem, LocalEditorBrowserUi, LocalEditorBr
9
9
  export { applyLocalEditorBrowserInspectorControlBinding, createLocalEditorBrowserInspectorControlRegistry, formatLocalEditorBrowserInspectorNumberValue, formatLocalEditorBrowserInspectorValue, parseLocalEditorBrowserInspectorNumberValue, resolveLocalEditorBrowserInspectorSectionStatus, resolveLocalEditorBrowserInspectorControlRegistration, shouldShowPrefabModelAddAction, } from './local-editor-ui-panels';
10
10
  export { createLocalEditorBrowserInspectorGroupValueClipboardPayload, createLocalEditorBrowserInspectorVectorCopyPayload, parseLocalEditorBrowserInspectorGroupValueClipboardPayload, } from './local-editor-inspector-clipboard';
11
11
  export { LOCAL_EDITOR_BROWSER_INSPECTOR_VEC3_AXES, isLocalEditorBrowserInspectorTransformVectorGroupPath, resolveLocalEditorBrowserInspectorVectorGroupAxisFromPropertyPath, resolveLocalEditorBrowserInspectorVectorGroupPathFromPropertyPath, resolveLocalEditorBrowserInspectorVectorGroupPathFromProperties, } from './local-editor-inspector-groups';
12
+ export { findLocalEditorProjectFileSearchMatches, toLocalEditorProjectRelativePath, } from './local-editor-project-file-preview';
12
13
  export type { LocalEditorBrowserInspectorVec3Axis, LocalEditorBrowserInspectorVectorGroupAxis, } from './local-editor-inspector-groups';
13
14
  export type { LocalEditorBrowserInspectorAccessMode, LocalEditorBrowserInspectorRenderOptions, LocalEditorBrowserInspectorSectionStatus, } from './local-editor-ui-panels';
14
15
  export type { LocalEditorThemeName, } from './local-editor-ui-theme';
15
16
  export { DEFAULT_LOCAL_EDITOR_THEME, LOCAL_EDITOR_THEME_CLASS, applyLocalEditorTheme, normalizeLocalEditorThemeName, } from './local-editor-ui-theme';
16
17
  export { LOCAL_EDITOR_ICON_NAMES, createLocalEditorIcon, isLocalEditorIconName, resolveLocalEditorIconName, } from './local-editor-ui-icons';
17
18
  export type { LocalEditorIconName, LocalEditorIconOptions, } from './local-editor-ui-icons';
18
- export type { LocalEditorBrowserAgentBridgeStatus, LocalEditorBrowserAgentBridgeStatusKind, LocalEditorAssetBrowserTab, LocalEditorBrowserAssetActionInput, LocalEditorBottomDockTab, LocalEditorBrowserAuthoringSource, LocalEditorBrowserCoordinateAxis, LocalEditorBrowserCoordinateAxesState, LocalEditorBrowserCoordinateAxisId, LocalEditorBrowserHistoryEntry, LocalEditorBrowserHistoryView, LocalEditorBrowserInspectorCommitMode, LocalEditorBrowserInspectorConflictStrategy, LocalEditorBrowserInspectorControlBindingOptions, LocalEditorBrowserInspectorControlKind, LocalEditorBrowserInspectorControlRegistration, LocalEditorBrowserInspectorControlRenderContext, LocalEditorBrowserInspectorControlRenderer, LocalEditorBrowserInspectorControlMount, LocalEditorBrowserInspectorEffectMode, LocalEditorBrowserInspectorEditSource, LocalEditorBrowserInspectorObject, LocalEditorBrowserInspectorOptions, LocalEditorBrowserInspectorPersistenceMode, LocalEditorBrowserInspectorProperty, LocalEditorBrowserInspectorSection, LocalEditorBrowserPlacementMode, LocalEditorBrowserMarkerPanelState, LocalEditorBrowserMarkerRelationActionInput, LocalEditorBrowserMarkerRelationEndpointItem, LocalEditorBrowserMarkerRelationItem, LocalEditorBrowserMarkerRelationTypeItem, LocalEditorBrowserMarkerTypeActionInput, LocalEditorBrowserMarkerTypeItem, LocalEditorBrowserPerformanceStats, LocalEditorBrowserRenderingPanelState, LocalEditorBrowserRenderingActionInput, LocalEditorBrowserRenderingProperty, LocalEditorBrowserRenderingPropertyChangeInput, LocalEditorBrowserRenderingPropertyCommitMode, LocalEditorBrowserRenderingPropertyControlKind, LocalEditorBrowserRenderingPropertyEditSource, LocalEditorBrowserRenderingPropertyValueType, LocalEditorBrowserRenderingSection, LocalEditorBrowserRenderingSystem, LocalEditorBrowserRenderingSystemKind, LocalEditorBrowserPrimitiveShape, LocalEditorBrowserSceneFrameStats, LocalEditorBrowserSceneGraphActionResult, LocalEditorBrowserSerializedMultiObject, LocalEditorBrowserSerializedObject, LocalEditorBrowserSerializedProperty, LocalEditorBrowserSerializedValueType, LocalEditorBrowserTransformConstraint, LocalEditorBrowserTransformAction, LocalEditorBrowserTransformOperationSettings, LocalEditorBrowserTransformOperationState, LocalEditorBrowserTransformSnapStepKind, LocalEditorBrowserTransformSpace, LocalEditorBrowserTransformTool, LocalEditorBrowserTransformToolState, LocalEditorBrowserViewportSpatialOverlayState, LocalEditorBrowserPrefabAssetEditorData, LocalEditorBrowserPrefabStageImportStats, LocalEditorBrowserPrefabStageState, LocalEditorBrowserPrefabStageStructureItem, LocalEditorBrowserUi, LocalEditorBrowserUiAssetItem, LocalEditorBrowserUiCallbacks, LocalEditorBrowserUiOptions, LocalEditorBrowserUiPreviewState, LocalEditorBrowserUiPropertyInput, LocalEditorBrowserUiState, LocalEditorRightDockTab, LocalEditorThemeController, LocalEditorContextMenuItem, } from './local-editor-ui-types';
19
+ export type { LocalEditorBrowserAgentBridgeStatus, LocalEditorBrowserAgentBridgeStatusKind, LocalEditorAssetBrowserTab, LocalEditorBrowserAssetActionInput, LocalEditorBottomDockTab, LocalEditorBrowserAuthoringSource, LocalEditorBrowserCoordinateAxis, LocalEditorBrowserCoordinateAxesState, LocalEditorBrowserCoordinateAxisId, LocalEditorBrowserHistoryEntry, LocalEditorBrowserHistoryView, LocalEditorBrowserInspectorCommitMode, LocalEditorBrowserInspectorConflictStrategy, LocalEditorBrowserInspectorControlBindingOptions, LocalEditorBrowserInspectorControlKind, LocalEditorBrowserInspectorControlRegistration, LocalEditorBrowserInspectorControlRenderContext, LocalEditorBrowserInspectorControlRenderer, LocalEditorBrowserInspectorControlMount, LocalEditorBrowserInspectorEffectMode, LocalEditorBrowserInspectorEditSource, LocalEditorBrowserInspectorObject, LocalEditorBrowserInspectorOptions, LocalEditorBrowserInspectorPersistenceMode, LocalEditorBrowserInspectorProperty, LocalEditorBrowserInspectorSection, LocalEditorBrowserPlacementMode, LocalEditorBrowserMarkerPanelState, LocalEditorBrowserMarkerRelationActionInput, LocalEditorBrowserMarkerRelationEndpointItem, LocalEditorBrowserMarkerRelationItem, LocalEditorBrowserMarkerRelationTypeItem, LocalEditorBrowserMarkerTypeActionInput, LocalEditorBrowserMarkerTypeItem, LocalEditorBrowserPerformanceStats, LocalEditorBrowserProjectFileItem, LocalEditorBrowserProjectFileContent, LocalEditorBrowserProjectFileSnapshot, LocalEditorBrowserProjectEntryAgentInput, LocalEditorBrowserProjectMediaSource, LocalEditorBrowserProjectModelPreviewCleanup, LocalEditorBrowserProjectModelThumbnail, LocalEditorBrowserMaterialAssetPreview, LocalEditorBrowserMaterialPreviewCleanup, LocalEditorBrowserMaterialPreviewSource, LocalEditorBrowserRenderingPanelState, LocalEditorBrowserRenderingActionInput, LocalEditorBrowserRenderingProperty, LocalEditorBrowserRenderingPropertyChangeInput, LocalEditorBrowserRenderingPropertyCommitMode, LocalEditorBrowserRenderingPropertyControlKind, LocalEditorBrowserRenderingPropertyEditSource, LocalEditorBrowserRenderingPropertyValueType, LocalEditorBrowserRenderingSection, LocalEditorBrowserRenderingSystem, LocalEditorBrowserRenderingSystemKind, LocalEditorBrowserPrimitiveShape, LocalEditorBrowserSceneFrameStats, LocalEditorBrowserSceneGraphActionResult, LocalEditorBrowserSerializedMultiObject, LocalEditorBrowserSerializedObject, LocalEditorBrowserSerializedProperty, LocalEditorBrowserSerializedValueType, LocalEditorBrowserTransformConstraint, LocalEditorBrowserTransformAction, LocalEditorBrowserTransformOperationSettings, LocalEditorBrowserTransformOperationState, LocalEditorBrowserTransformSnapStepKind, LocalEditorBrowserTransformSpace, LocalEditorBrowserTransformTool, LocalEditorBrowserTransformToolState, LocalEditorBrowserViewportSpatialOverlayState, LocalEditorBrowserPrefabAssetEditorData, LocalEditorBrowserPrefabStageImportStats, LocalEditorBrowserPrefabStageState, LocalEditorBrowserPrefabStageStructureItem, LocalEditorBrowserUi, LocalEditorBrowserUiAssetItem, LocalEditorBrowserUiCallbacks, LocalEditorBrowserUiOptions, LocalEditorBrowserUiPreviewState, LocalEditorBrowserUiPropertyInput, LocalEditorBrowserUiState, LocalEditorRightDockTab, LocalEditorThemeController, LocalEditorContextMenuItem, } from './local-editor-ui-types';
19
20
  export interface LocalEditorEditableFocusSnapshot {
20
21
  selector: string;
21
22
  value: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"local-editor-ui.d.ts","sourceRoot":"","sources":["../src/local-editor-ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-editor-ui.d.ts","sourceRoot":"","sources":["../src/local-editor-ui.ts"],"names":[],"mappings":"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"}