@fps-games/editor 0.1.0

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 (186) hide show
  1. package/dist/authoring-apply.d.ts +21 -0
  2. package/dist/authoring-apply.d.ts.map +1 -0
  3. package/dist/authoring-apply.js +45 -0
  4. package/dist/authoring-apply.js.map +1 -0
  5. package/dist/index.d.ts +85 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +539 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/local-editor-harness.d.ts +173 -0
  10. package/dist/local-editor-harness.d.ts.map +1 -0
  11. package/dist/local-editor-harness.js +969 -0
  12. package/dist/local-editor-harness.js.map +1 -0
  13. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.d.ts +20 -0
  14. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.d.ts.map +1 -0
  15. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +239 -0
  16. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -0
  17. package/node_modules/@fps-games/editor-babylon/dist/edit-session.d.ts +30 -0
  18. package/node_modules/@fps-games/editor-babylon/dist/edit-session.d.ts.map +1 -0
  19. package/node_modules/@fps-games/editor-babylon/dist/edit-session.js +297 -0
  20. package/node_modules/@fps-games/editor-babylon/dist/edit-session.js.map +1 -0
  21. package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts +30 -0
  22. package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts.map +1 -0
  23. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js +67 -0
  24. package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -0
  25. package/node_modules/@fps-games/editor-babylon/dist/event-guard.d.ts +13 -0
  26. package/node_modules/@fps-games/editor-babylon/dist/event-guard.d.ts.map +1 -0
  27. package/node_modules/@fps-games/editor-babylon/dist/event-guard.js +101 -0
  28. package/node_modules/@fps-games/editor-babylon/dist/event-guard.js.map +1 -0
  29. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +19 -0
  30. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -0
  31. package/node_modules/@fps-games/editor-babylon/dist/index.js +18 -0
  32. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -0
  33. package/node_modules/@fps-games/editor-babylon/dist/input-controller.d.ts +3 -0
  34. package/node_modules/@fps-games/editor-babylon/dist/input-controller.d.ts.map +1 -0
  35. package/node_modules/@fps-games/editor-babylon/dist/input-controller.js +182 -0
  36. package/node_modules/@fps-games/editor-babylon/dist/input-controller.js.map +1 -0
  37. package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.d.ts +13 -0
  38. package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.d.ts.map +1 -0
  39. package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.js +94 -0
  40. package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.js.map +1 -0
  41. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.d.ts +43 -0
  42. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.d.ts.map +1 -0
  43. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js +510 -0
  44. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js.map +1 -0
  45. package/node_modules/@fps-games/editor-babylon/dist/legacy-runtime.d.ts +5 -0
  46. package/node_modules/@fps-games/editor-babylon/dist/legacy-runtime.d.ts.map +1 -0
  47. package/node_modules/@fps-games/editor-babylon/dist/legacy-runtime.js +5 -0
  48. package/node_modules/@fps-games/editor-babylon/dist/legacy-runtime.js.map +1 -0
  49. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts +22 -0
  50. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts.map +1 -0
  51. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js +408 -0
  52. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -0
  53. package/node_modules/@fps-games/editor-babylon/dist/monitor.d.ts +39 -0
  54. package/node_modules/@fps-games/editor-babylon/dist/monitor.d.ts.map +1 -0
  55. package/node_modules/@fps-games/editor-babylon/dist/monitor.js +780 -0
  56. package/node_modules/@fps-games/editor-babylon/dist/monitor.js.map +1 -0
  57. package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.d.ts +37 -0
  58. package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.d.ts.map +1 -0
  59. package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.js +268 -0
  60. package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.js.map +1 -0
  61. package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.d.ts +34 -0
  62. package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.d.ts.map +1 -0
  63. package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.js +221 -0
  64. package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.js.map +1 -0
  65. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +90 -0
  66. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -0
  67. package/node_modules/@fps-games/editor-babylon/dist/projection.js +479 -0
  68. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -0
  69. package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.d.ts +3 -0
  70. package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.d.ts.map +1 -0
  71. package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.js +7 -0
  72. package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.js.map +1 -0
  73. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +18 -0
  74. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -0
  75. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +213 -0
  76. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -0
  77. package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.d.ts +36 -0
  78. package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.d.ts.map +1 -0
  79. package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.js +272 -0
  80. package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.js.map +1 -0
  81. package/node_modules/@fps-games/editor-babylon/dist/selection-controller.d.ts +27 -0
  82. package/node_modules/@fps-games/editor-babylon/dist/selection-controller.d.ts.map +1 -0
  83. package/node_modules/@fps-games/editor-babylon/dist/selection-controller.js +308 -0
  84. package/node_modules/@fps-games/editor-babylon/dist/selection-controller.js.map +1 -0
  85. package/node_modules/@fps-games/editor-babylon/dist/tool-controller.d.ts +17 -0
  86. package/node_modules/@fps-games/editor-babylon/dist/tool-controller.d.ts.map +1 -0
  87. package/node_modules/@fps-games/editor-babylon/dist/tool-controller.js +83 -0
  88. package/node_modules/@fps-games/editor-babylon/dist/tool-controller.js.map +1 -0
  89. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts +47 -0
  90. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -0
  91. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +689 -0
  92. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -0
  93. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts +111 -0
  94. package/node_modules/@fps-games/editor-babylon/dist/types.d.ts.map +1 -0
  95. package/node_modules/@fps-games/editor-babylon/dist/types.js +2 -0
  96. package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -0
  97. package/node_modules/@fps-games/editor-babylon/package.json +25 -0
  98. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +28 -0
  99. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -0
  100. package/node_modules/@fps-games/editor-browser/dist/index.js +54 -0
  101. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -0
  102. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts +12 -0
  103. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -0
  104. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +80 -0
  105. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -0
  106. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.d.ts +11 -0
  107. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.d.ts.map +1 -0
  108. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js +33 -0
  109. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -0
  110. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +9 -0
  111. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -0
  112. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +444 -0
  113. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -0
  114. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts +21 -0
  115. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -0
  116. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +103 -0
  117. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -0
  118. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +12 -0
  119. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -0
  120. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +123 -0
  121. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -0
  122. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts +2 -0
  123. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -0
  124. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +115 -0
  125. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -0
  126. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts +3 -0
  127. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -0
  128. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +68 -0
  129. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -0
  130. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +183 -0
  131. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -0
  132. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js +2 -0
  133. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -0
  134. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +58 -0
  135. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -0
  136. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +136 -0
  137. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -0
  138. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +4 -0
  139. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -0
  140. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +589 -0
  141. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -0
  142. package/node_modules/@fps-games/editor-browser/package.json +16 -0
  143. package/node_modules/@fps-games/editor-core/dist/authoring-source.d.ts +211 -0
  144. package/node_modules/@fps-games/editor-core/dist/authoring-source.d.ts.map +1 -0
  145. package/node_modules/@fps-games/editor-core/dist/authoring-source.js +511 -0
  146. package/node_modules/@fps-games/editor-core/dist/authoring-source.js.map +1 -0
  147. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +132 -0
  148. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -0
  149. package/node_modules/@fps-games/editor-core/dist/editor-session.js +265 -0
  150. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -0
  151. package/node_modules/@fps-games/editor-core/dist/host-services.d.ts +24 -0
  152. package/node_modules/@fps-games/editor-core/dist/host-services.d.ts.map +1 -0
  153. package/node_modules/@fps-games/editor-core/dist/host-services.js +2 -0
  154. package/node_modules/@fps-games/editor-core/dist/host-services.js.map +1 -0
  155. package/node_modules/@fps-games/editor-core/dist/index.d.ts +106 -0
  156. package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -0
  157. package/node_modules/@fps-games/editor-core/dist/index.js +217 -0
  158. package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -0
  159. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +44 -0
  160. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -0
  161. package/node_modules/@fps-games/editor-core/dist/scene-graph.js +86 -0
  162. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -0
  163. package/node_modules/@fps-games/editor-core/dist/scene-view-input.d.ts +41 -0
  164. package/node_modules/@fps-games/editor-core/dist/scene-view-input.d.ts.map +1 -0
  165. package/node_modules/@fps-games/editor-core/dist/scene-view-input.js +2 -0
  166. package/node_modules/@fps-games/editor-core/dist/scene-view-input.js.map +1 -0
  167. package/node_modules/@fps-games/editor-core/dist/serialized-object.d.ts +53 -0
  168. package/node_modules/@fps-games/editor-core/dist/serialized-object.d.ts.map +1 -0
  169. package/node_modules/@fps-games/editor-core/dist/serialized-object.js +32 -0
  170. package/node_modules/@fps-games/editor-core/dist/serialized-object.js.map +1 -0
  171. package/node_modules/@fps-games/editor-core/dist/transform-gizmo.d.ts +48 -0
  172. package/node_modules/@fps-games/editor-core/dist/transform-gizmo.d.ts.map +1 -0
  173. package/node_modules/@fps-games/editor-core/dist/transform-gizmo.js +2 -0
  174. package/node_modules/@fps-games/editor-core/dist/transform-gizmo.js.map +1 -0
  175. package/node_modules/@fps-games/editor-core/package.json +19 -0
  176. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +46 -0
  177. package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -0
  178. package/node_modules/@fps-games/editor-forge-play/dist/index.js +156 -0
  179. package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -0
  180. package/node_modules/@fps-games/editor-forge-play/package.json +19 -0
  181. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +239 -0
  182. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -0
  183. package/node_modules/@fps-games/editor-protocol/dist/index.js +54 -0
  184. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -0
  185. package/node_modules/@fps-games/editor-protocol/package.json +16 -0
  186. package/package.json +40 -0
@@ -0,0 +1,589 @@
1
+ import * as LocalEditorPanels from './local-editor-ui-panels';
2
+ import { createLocalEditorWorkbenchInputRouter } from './local-editor-ui-input-router';
3
+ import { createLocalEditorPanelRegistry } from './local-editor-ui-panel-registry';
4
+ import * as LocalEditorShared from './local-editor-ui-shared';
5
+ import { createShortcutHelpPanel as createLocalEditorShortcutHelpPanel } from './local-editor-ui-shortcuts';
6
+ import { ensureLocalEditorTheme, LOCAL_EDITOR_THEME_CLASS } from './local-editor-ui-theme';
7
+ import { createDefaultLocalEditorWorkbenchLayout, createLocalEditorWorkbench, createSceneHeaderToolbar, createWorkbenchPanelContent, } from './local-editor-ui-workbench';
8
+ export function createLocalEditorBrowserUi(options = {}) {
9
+ const doc = options.document ?? document;
10
+ const root = options.root ?? doc.body;
11
+ const callbacks = options.callbacks ?? {};
12
+ ensureLocalEditorTheme(doc);
13
+ const inputRouter = createLocalEditorWorkbenchInputRouter(doc);
14
+ let currentState = null;
15
+ let hierarchyRename = null;
16
+ let hierarchyDrag = null;
17
+ let hierarchyDrop = null;
18
+ const workbenchLayout = createDefaultLocalEditorWorkbenchLayout();
19
+ const panelRegistry = createLocalEditorPanelRegistry(workbenchLayout);
20
+ const hostChrome = doc.createElement('div');
21
+ hostChrome.dataset.editorWorkbenchRegion = 'top-bar';
22
+ hostChrome.className = LOCAL_EDITOR_THEME_CLASS;
23
+ hostChrome.style.cssText = [
24
+ 'position:fixed',
25
+ 'top:12px',
26
+ 'left:50%',
27
+ 'transform:translateX(-50%)',
28
+ 'z-index:2147483640',
29
+ 'display:none',
30
+ 'align-items:center',
31
+ 'gap:8px',
32
+ 'height:34px',
33
+ 'padding:0 8px',
34
+ 'border:1px solid var(--fps-editor-border)',
35
+ 'border-radius:3px',
36
+ 'background:var(--fps-editor-chrome)',
37
+ 'box-shadow:0 10px 28px rgba(0,0,0,0.24)',
38
+ 'font-family:var(--fps-editor-font)',
39
+ 'color:var(--fps-editor-text)',
40
+ 'font-size:12px',
41
+ 'pointer-events:auto',
42
+ ].join(';');
43
+ const hostModeLabel = doc.createElement('span');
44
+ hostModeLabel.textContent = '本地宿主 · 游戏模式';
45
+ hostModeLabel.style.cssText = [
46
+ 'color:var(--fps-editor-muted-strong)',
47
+ 'font-weight:800',
48
+ 'white-space:nowrap',
49
+ ].join(';');
50
+ const enterEditorButton = LocalEditorShared.createButton(doc, '进入编辑场景');
51
+ hostChrome.appendChild(hostModeLabel);
52
+ hostChrome.appendChild(enterEditorButton);
53
+ root.appendChild(hostChrome);
54
+ const dirtyBadge = doc.createElement('span');
55
+ dirtyBadge.style.cssText = [
56
+ 'display:none',
57
+ 'height:20px',
58
+ 'align-items:center',
59
+ 'padding:0 7px',
60
+ 'border-radius:999px',
61
+ 'background:rgba(248,81,73,0.16)',
62
+ 'border:1px solid rgba(248,81,73,0.45)',
63
+ 'color:#ffd7d5',
64
+ 'font-size:11px',
65
+ 'font-weight:800',
66
+ ].join(';');
67
+ dirtyBadge.textContent = '未保存';
68
+ const saveButton = LocalEditorShared.createButton(doc, '保存场景');
69
+ const saveAndRunButton = LocalEditorShared.createButton(doc, '保存并运行');
70
+ const discardRunButton = LocalEditorShared.createButton(doc, '放弃并运行');
71
+ const undoButton = LocalEditorShared.createButton(doc, '撤销');
72
+ const redoButton = LocalEditorShared.createButton(doc, '重做');
73
+ let helpOpen = false;
74
+ const status = doc.createElement('span');
75
+ status.style.cssText = [
76
+ 'flex:0 1 300px',
77
+ 'min-width:120px',
78
+ 'max-width:320px',
79
+ 'overflow:hidden',
80
+ 'text-overflow:ellipsis',
81
+ 'white-space:nowrap',
82
+ 'color:var(--fps-editor-muted)',
83
+ 'font-size:11px',
84
+ ].join(';');
85
+ const workbench = createLocalEditorWorkbench(doc);
86
+ const hierarchyPanel = createWorkbenchPanelContent(doc);
87
+ const assetPanel = workbench.bottomDock;
88
+ const inspectorPanel = createWorkbenchPanelContent(doc);
89
+ workbench.leftDock.appendChild(hierarchyPanel);
90
+ workbench.rightDock.appendChild(inspectorPanel);
91
+ root.appendChild(workbench.root);
92
+ const sceneToolOverlay = createSceneHeaderToolbar(doc);
93
+ const sceneTitle = doc.createElement('div');
94
+ sceneTitle.textContent = 'Preview';
95
+ sceneTitle.style.cssText = [
96
+ 'height:100%',
97
+ 'display:flex',
98
+ 'align-items:center',
99
+ 'padding:0 10px 0 2px',
100
+ 'margin-right:2px',
101
+ 'border-right:1px solid var(--fps-editor-divider)',
102
+ 'color:var(--fps-editor-text-strong)',
103
+ 'font-size:13px',
104
+ 'font-weight:800',
105
+ 'white-space:nowrap',
106
+ ].join(';');
107
+ const sceneQuickActions = doc.createElement('div');
108
+ sceneQuickActions.style.cssText = 'display:flex;align-items:center;gap:4px';
109
+ const toolGroup = doc.createElement('div');
110
+ toolGroup.style.cssText = [
111
+ 'display:flex',
112
+ 'align-items:center',
113
+ 'gap:4px',
114
+ 'padding-left:8px',
115
+ 'border-left:1px solid var(--fps-editor-divider)',
116
+ ].join(';');
117
+ const toolButtons = {
118
+ select: LocalEditorShared.createButton(doc, 'Q 选择'),
119
+ move: LocalEditorShared.createButton(doc, 'W 移动'),
120
+ rotate: LocalEditorShared.createButton(doc, 'E 旋转'),
121
+ scale: LocalEditorShared.createButton(doc, 'R 缩放'),
122
+ };
123
+ for (const [tool, button] of Object.entries(toolButtons)) {
124
+ button.dataset.transformTool = tool;
125
+ toolGroup.appendChild(button);
126
+ }
127
+ const spaceGroup = doc.createElement('div');
128
+ spaceGroup.style.cssText = [
129
+ 'display:flex',
130
+ 'align-items:center',
131
+ 'gap:4px',
132
+ 'padding-left:8px',
133
+ 'border-left:1px solid var(--fps-editor-divider)',
134
+ ].join(';');
135
+ const spaceButtons = {
136
+ world: LocalEditorShared.createButton(doc, '世界'),
137
+ local: LocalEditorShared.createButton(doc, '本地'),
138
+ };
139
+ for (const [space, button] of Object.entries(spaceButtons)) {
140
+ button.dataset.transformSpace = space;
141
+ spaceGroup.appendChild(button);
142
+ }
143
+ const constraintGroup = doc.createElement('div');
144
+ constraintGroup.style.cssText = [
145
+ 'display:flex',
146
+ 'align-items:center',
147
+ 'gap:4px',
148
+ 'padding-left:8px',
149
+ 'border-left:1px solid var(--fps-editor-divider)',
150
+ ].join(';');
151
+ const viewPlaneButton = LocalEditorShared.createButton(doc, '视图平面');
152
+ viewPlaneButton.dataset.transformConstraint = 'view-plane';
153
+ constraintGroup.appendChild(viewPlaneButton);
154
+ const sceneToolStatus = doc.createElement('span');
155
+ sceneToolStatus.style.cssText = [
156
+ 'max-width:220px',
157
+ 'overflow:hidden',
158
+ 'text-overflow:ellipsis',
159
+ 'white-space:nowrap',
160
+ 'color:var(--fps-editor-muted-strong)',
161
+ 'font-size:11px',
162
+ ].join(';');
163
+ const sceneMouseHint = doc.createElement('span');
164
+ sceneMouseHint.style.cssText = [
165
+ 'padding-left:8px',
166
+ 'border-left:1px solid var(--fps-editor-divider)',
167
+ 'max-width:360px',
168
+ 'overflow:hidden',
169
+ 'text-overflow:ellipsis',
170
+ 'white-space:nowrap',
171
+ 'color:var(--fps-editor-muted)',
172
+ 'font-size:11px',
173
+ ].join(';');
174
+ sceneMouseHint.textContent = '左键选择 · 空白拖拽框选 · 中键平移 · Alt+左键环绕 · 右键飞行 · 滚轮缩放';
175
+ const sceneHelpButton = LocalEditorShared.createButton(doc, '快捷键');
176
+ sceneHelpButton.style.padding = '5px 7px';
177
+ sceneQuickActions.appendChild(saveButton);
178
+ sceneQuickActions.appendChild(saveAndRunButton);
179
+ sceneQuickActions.appendChild(discardRunButton);
180
+ sceneQuickActions.appendChild(undoButton);
181
+ sceneQuickActions.appendChild(redoButton);
182
+ sceneQuickActions.appendChild(dirtyBadge);
183
+ sceneQuickActions.appendChild(sceneHelpButton);
184
+ sceneToolOverlay.appendChild(sceneTitle);
185
+ sceneToolOverlay.appendChild(sceneQuickActions);
186
+ sceneToolOverlay.appendChild(toolGroup);
187
+ sceneToolOverlay.appendChild(spaceGroup);
188
+ sceneToolOverlay.appendChild(constraintGroup);
189
+ sceneToolOverlay.appendChild(sceneToolStatus);
190
+ sceneToolOverlay.appendChild(sceneMouseHint);
191
+ sceneToolOverlay.appendChild(status);
192
+ workbench.sceneHeader.appendChild(sceneToolOverlay);
193
+ const boxSelectionOverlay = doc.createElement('div');
194
+ boxSelectionOverlay.style.cssText = [
195
+ 'position:fixed',
196
+ 'z-index:2147483637',
197
+ 'display:none',
198
+ 'border:1px solid rgba(88,166,255,0.95)',
199
+ 'background:rgba(56,139,253,0.18)',
200
+ 'box-shadow:0 0 0 1px rgba(10,15,23,0.55) inset',
201
+ 'pointer-events:none',
202
+ ].join(';');
203
+ root.appendChild(boxSelectionOverlay);
204
+ const shortcutHelpPanel = createLocalEditorShortcutHelpPanel(doc);
205
+ root.appendChild(shortcutHelpPanel);
206
+ enterEditorButton.addEventListener('click', () => callbacks.onEnterEditor?.());
207
+ saveButton.addEventListener('click', () => callbacks.onSaveScene?.());
208
+ saveAndRunButton.addEventListener('click', () => callbacks.onSaveAndRunGame?.());
209
+ discardRunButton.addEventListener('click', () => callbacks.onDiscardAndRunGame?.());
210
+ undoButton.addEventListener('click', () => callbacks.onUndo?.());
211
+ redoButton.addEventListener('click', () => callbacks.onRedo?.());
212
+ const setShortcutHelpOpen = (open) => {
213
+ helpOpen = open;
214
+ inputRouter.setModalOpen(open);
215
+ shortcutHelpPanel.style.display = helpOpen ? '' : 'none';
216
+ LocalEditorShared.applyButtonActiveState(sceneHelpButton, helpOpen);
217
+ };
218
+ sceneHelpButton.addEventListener('click', () => {
219
+ setShortcutHelpOpen(!helpOpen);
220
+ });
221
+ shortcutHelpPanel.addEventListener('click', (event) => {
222
+ const target = event.target instanceof HTMLElement ? event.target : null;
223
+ if (!target?.closest('[data-editor-shortcut-help-close]'))
224
+ return;
225
+ setShortcutHelpOpen(false);
226
+ });
227
+ toolGroup.addEventListener('click', (event) => {
228
+ const target = event.target instanceof HTMLElement ? event.target : null;
229
+ const tool = target?.closest('[data-transform-tool]')?.dataset.transformTool;
230
+ if (tool)
231
+ callbacks.onTransformToolChange?.(tool);
232
+ });
233
+ spaceGroup.addEventListener('click', (event) => {
234
+ const target = event.target instanceof HTMLElement ? event.target : null;
235
+ const space = target?.closest('[data-transform-space]')?.dataset.transformSpace;
236
+ if (space)
237
+ callbacks.onTransformSpaceChange?.(space);
238
+ });
239
+ constraintGroup.addEventListener('click', (event) => {
240
+ const target = event.target instanceof HTMLElement ? event.target : null;
241
+ const constraint = target?.closest('[data-transform-constraint]')?.dataset.transformConstraint;
242
+ if (!constraint)
243
+ return;
244
+ const currentConstraint = currentState?.transformTool?.activeConstraint ?? 'axis';
245
+ callbacks.onTransformConstraintChange?.(currentConstraint === constraint ? 'axis' : constraint);
246
+ });
247
+ assetPanel.addEventListener('click', (event) => {
248
+ const target = event.target instanceof HTMLElement ? event.target : null;
249
+ const tabButton = target?.closest('[data-editor-dock-tab]');
250
+ const tab = tabButton?.dataset.editorDockTab;
251
+ if (tab === 'assets' || tab === 'history') {
252
+ panelRegistry.setBottomDockTab(tab);
253
+ if (currentState)
254
+ render(currentState);
255
+ return;
256
+ }
257
+ const assetButton = target?.closest('[data-editor-asset-id]');
258
+ if (assetButton?.dataset.editorAssetId) {
259
+ callbacks.onCreateFromAsset?.(assetButton.dataset.editorAssetId);
260
+ return;
261
+ }
262
+ });
263
+ hierarchyPanel.addEventListener('click', (event) => {
264
+ const target = event.target instanceof HTMLElement ? event.target : null;
265
+ if (target?.closest('[data-editor-hierarchy-rename-input]'))
266
+ return;
267
+ const createGroupButton = target?.closest('[data-editor-hierarchy-create-group]');
268
+ if (createGroupButton) {
269
+ callbacks.onSceneGraphCreateGroup?.({
270
+ parentId: currentState?.activeId ?? null,
271
+ activeId: currentState?.activeId ?? null,
272
+ name: 'Group',
273
+ });
274
+ return;
275
+ }
276
+ const hierarchyButton = target?.closest('[data-editor-hierarchy-id]');
277
+ if (hierarchyButton?.dataset.editorHierarchyId) {
278
+ callbacks.onSelectHierarchyItem?.({
279
+ id: hierarchyButton.dataset.editorHierarchyId,
280
+ additive: event.shiftKey && !event.metaKey && !event.ctrlKey,
281
+ toggle: event.metaKey || event.ctrlKey,
282
+ });
283
+ }
284
+ });
285
+ hierarchyPanel.addEventListener('dblclick', (event) => {
286
+ const target = event.target instanceof HTMLElement ? event.target : null;
287
+ const hierarchyButton = target?.closest('[data-editor-hierarchy-id]');
288
+ const id = hierarchyButton?.dataset.editorHierarchyId;
289
+ if (!id || !currentState)
290
+ return;
291
+ const item = currentState.hierarchy.find(candidate => candidate.id === id);
292
+ if (!item || item.locked || item.renamable === false)
293
+ return;
294
+ event.preventDefault();
295
+ hierarchyRename = { id, value: item.label };
296
+ render(currentState);
297
+ });
298
+ hierarchyPanel.addEventListener('input', (event) => {
299
+ const input = event.target instanceof HTMLInputElement ? event.target : null;
300
+ if (!input?.dataset.editorHierarchyRenameInput || !hierarchyRename)
301
+ return;
302
+ hierarchyRename = {
303
+ id: input.dataset.editorHierarchyRenameInput,
304
+ value: input.value,
305
+ };
306
+ });
307
+ hierarchyPanel.addEventListener('keydown', (event) => {
308
+ const input = event.target instanceof HTMLInputElement ? event.target : null;
309
+ if (!input?.dataset.editorHierarchyRenameInput)
310
+ return;
311
+ if (event.key === 'Enter') {
312
+ event.preventDefault();
313
+ commitHierarchyRename(input.dataset.editorHierarchyRenameInput, input.value);
314
+ return;
315
+ }
316
+ if (event.key === 'Escape') {
317
+ event.preventDefault();
318
+ hierarchyRename = null;
319
+ if (currentState)
320
+ render(currentState);
321
+ }
322
+ });
323
+ hierarchyPanel.addEventListener('focusout', (event) => {
324
+ const input = event.target instanceof HTMLInputElement ? event.target : null;
325
+ if (!input?.dataset.editorHierarchyRenameInput)
326
+ return;
327
+ commitHierarchyRename(input.dataset.editorHierarchyRenameInput, input.value);
328
+ });
329
+ hierarchyPanel.addEventListener('dragstart', (event) => {
330
+ const target = event.target instanceof HTMLElement ? event.target : null;
331
+ const button = target?.closest('[data-editor-hierarchy-id]');
332
+ const id = button?.dataset.editorHierarchyId;
333
+ if (!id || !currentState)
334
+ return;
335
+ const item = currentState.hierarchy.find(candidate => candidate.id === id);
336
+ if (!item || item.locked || item.draggable === false) {
337
+ event.preventDefault();
338
+ return;
339
+ }
340
+ hierarchyDrag = { id };
341
+ event.dataTransfer?.setData('text/plain', id);
342
+ if (event.dataTransfer)
343
+ event.dataTransfer.effectAllowed = 'move';
344
+ });
345
+ hierarchyPanel.addEventListener('dragover', (event) => {
346
+ const target = event.target instanceof HTMLElement ? event.target : null;
347
+ const button = target?.closest('[data-editor-hierarchy-id]');
348
+ const targetId = button?.dataset.editorHierarchyId;
349
+ const draggedId = hierarchyDrag?.id ?? event.dataTransfer?.getData('text/plain') ?? '';
350
+ if (!targetId || !draggedId || draggedId === targetId)
351
+ return;
352
+ event.preventDefault();
353
+ const placement = LocalEditorShared.readHierarchyDropPlacement(event, button);
354
+ const targetItem = currentState?.hierarchy.find(item => item.id === targetId) ?? null;
355
+ const canSubmitInsideDrop = placement === 'inside'
356
+ && targetItem?.locked !== true
357
+ && targetItem?.canHaveChildren !== false;
358
+ hierarchyDrop = {
359
+ draggedId,
360
+ targetId,
361
+ placement,
362
+ preserveWorldTransform: true,
363
+ };
364
+ if (event.dataTransfer)
365
+ event.dataTransfer.dropEffect = canSubmitInsideDrop ? 'move' : 'none';
366
+ if (currentState)
367
+ render(currentState);
368
+ });
369
+ hierarchyPanel.addEventListener('dragleave', (event) => {
370
+ if (!hierarchyPanel.contains(event.relatedTarget)) {
371
+ hierarchyDrop = null;
372
+ if (currentState)
373
+ render(currentState);
374
+ }
375
+ });
376
+ hierarchyPanel.addEventListener('dragend', () => {
377
+ hierarchyDrag = null;
378
+ hierarchyDrop = null;
379
+ if (currentState)
380
+ render(currentState);
381
+ });
382
+ hierarchyPanel.addEventListener('drop', (event) => {
383
+ const target = event.target instanceof HTMLElement ? event.target : null;
384
+ const button = target?.closest('[data-editor-hierarchy-id]');
385
+ const targetId = button?.dataset.editorHierarchyId;
386
+ const draggedId = hierarchyDrop?.draggedId ?? hierarchyDrag?.id ?? event.dataTransfer?.getData('text/plain') ?? '';
387
+ if (!targetId || !draggedId || draggedId === targetId)
388
+ return;
389
+ event.preventDefault();
390
+ const placement = LocalEditorShared.readHierarchyDropPlacement(event, button);
391
+ const targetItem = currentState?.hierarchy.find(item => item.id === targetId) ?? null;
392
+ const canSubmitInsideDrop = placement === 'inside'
393
+ && targetItem?.locked !== true
394
+ && targetItem?.canHaveChildren !== false;
395
+ hierarchyDrag = null;
396
+ hierarchyDrop = null;
397
+ if (!canSubmitInsideDrop) {
398
+ if (currentState)
399
+ render(currentState);
400
+ return;
401
+ }
402
+ callbacks.onSceneGraphDrop?.({
403
+ draggedId,
404
+ targetId,
405
+ placement,
406
+ preserveWorldTransform: true,
407
+ });
408
+ });
409
+ assetPanel.addEventListener('input', (event) => {
410
+ const input = event.target instanceof HTMLInputElement ? event.target : null;
411
+ if (input?.dataset.editorAssetFilter == null)
412
+ return;
413
+ callbacks.onAssetFilterChange?.(input.value);
414
+ });
415
+ inspectorPanel.addEventListener('input', (event) => {
416
+ const input = event.target instanceof HTMLInputElement ? event.target : null;
417
+ if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId)
418
+ return;
419
+ const targetIds = input.dataset.serializedTargetIds
420
+ ? input.dataset.serializedTargetIds.split(',').filter(Boolean)
421
+ : undefined;
422
+ callbacks.onPropertyInput?.({
423
+ targetId: input.dataset.serializedTargetId,
424
+ targetIds,
425
+ path: input.dataset.serializedPath,
426
+ value: input.type === 'number' ? Number(input.value) : input.value,
427
+ });
428
+ });
429
+ const onKeyDown = (event) => {
430
+ if (currentState?.mode !== 'editor' || currentState.busy)
431
+ return;
432
+ const key = event.key.toLowerCase();
433
+ const primaryModifier = event.metaKey || event.ctrlKey;
434
+ const handleDocumentShortcut = inputRouter.shouldHandleDocumentShortcut(event);
435
+ const handleGlobalShortcut = inputRouter.shouldHandleGlobalShortcut(event);
436
+ if (handleDocumentShortcut && primaryModifier && key === 's') {
437
+ event.preventDefault();
438
+ callbacks.onSaveScene?.();
439
+ return;
440
+ }
441
+ if (handleGlobalShortcut && primaryModifier && key === 'z') {
442
+ event.preventDefault();
443
+ if (event.shiftKey)
444
+ callbacks.onRedo?.();
445
+ else
446
+ callbacks.onUndo?.();
447
+ return;
448
+ }
449
+ if (handleGlobalShortcut && event.ctrlKey && key === 'y') {
450
+ event.preventDefault();
451
+ callbacks.onRedo?.();
452
+ return;
453
+ }
454
+ if (handleGlobalShortcut && (key === 'delete' || key === 'backspace')) {
455
+ const state = currentState;
456
+ const selectedIds = state.selectedIds.filter((id) => {
457
+ const item = state.hierarchy.find(candidate => candidate.id === id);
458
+ return item && item.locked !== true && item.deletable !== false;
459
+ });
460
+ if (selectedIds.length > 0) {
461
+ event.preventDefault();
462
+ callbacks.onSceneGraphDelete?.({
463
+ ids: selectedIds,
464
+ activeId: state.activeId,
465
+ });
466
+ }
467
+ return;
468
+ }
469
+ if (!handleGlobalShortcut || event.metaKey || event.ctrlKey || event.altKey)
470
+ return;
471
+ const toolByKey = {
472
+ q: 'select',
473
+ w: 'move',
474
+ e: 'rotate',
475
+ r: 'scale',
476
+ };
477
+ const tool = toolByKey[key];
478
+ if (tool) {
479
+ event.preventDefault();
480
+ callbacks.onTransformToolChange?.(tool);
481
+ return;
482
+ }
483
+ if (key === 'f') {
484
+ event.preventDefault();
485
+ callbacks.onFocusSelection?.();
486
+ return;
487
+ }
488
+ if (key === 'escape') {
489
+ event.preventDefault();
490
+ callbacks.onCancelActiveOperation?.();
491
+ }
492
+ };
493
+ doc.addEventListener('keydown', onKeyDown);
494
+ function commitHierarchyRename(id, value) {
495
+ if (!hierarchyRename || hierarchyRename.id !== id)
496
+ return;
497
+ const trimmed = value.trim();
498
+ const item = currentState?.hierarchy.find(candidate => candidate.id === id) ?? null;
499
+ hierarchyRename = null;
500
+ if (trimmed && item && trimmed !== item.label) {
501
+ callbacks.onSceneGraphRename?.({ id, name: trimmed });
502
+ }
503
+ if (currentState)
504
+ render(currentState);
505
+ }
506
+ const render = (state) => {
507
+ currentState = state;
508
+ const inEditor = state.mode === 'editor';
509
+ const disabled = state.busy;
510
+ hostChrome.style.display = inEditor ? 'none' : 'flex';
511
+ enterEditorButton.disabled = disabled;
512
+ for (const button of [saveButton, saveAndRunButton, discardRunButton, undoButton, redoButton, sceneHelpButton]) {
513
+ button.style.display = '';
514
+ button.disabled = disabled;
515
+ }
516
+ if (!inEditor)
517
+ helpOpen = false;
518
+ inputRouter.setModalOpen(inEditor && helpOpen);
519
+ const transformTool = state.transformTool ?? null;
520
+ workbench.root.style.display = inEditor ? '' : 'none';
521
+ sceneToolOverlay.style.display = inEditor ? 'flex' : 'none';
522
+ for (const [tool, button] of Object.entries(toolButtons)) {
523
+ button.disabled = disabled;
524
+ LocalEditorShared.applyButtonActiveState(button, transformTool?.activeTool === tool);
525
+ }
526
+ for (const [space, button] of Object.entries(spaceButtons)) {
527
+ button.disabled = disabled;
528
+ LocalEditorShared.applyButtonActiveState(button, transformTool?.activeSpace === space);
529
+ }
530
+ sceneHelpButton.disabled = disabled;
531
+ viewPlaneButton.disabled = disabled || transformTool?.activeTool !== 'move';
532
+ LocalEditorShared.applyButtonActiveState(viewPlaneButton, transformTool?.activeTool === 'move' && transformTool?.activeConstraint === 'view-plane');
533
+ undoButton.disabled = disabled || !state.session?.canUndo;
534
+ redoButton.disabled = disabled || !state.session?.canRedo;
535
+ LocalEditorShared.applyButtonActiveState(sceneHelpButton, inEditor && helpOpen);
536
+ shortcutHelpPanel.style.display = inEditor && helpOpen ? '' : 'none';
537
+ dirtyBadge.style.display = inEditor && state.session?.dirty ? 'inline-flex' : 'none';
538
+ const dragSuffix = transformTool?.dragPhase === 'dragging'
539
+ ? ` | dragging ${transformTool.draggingNodeId ?? 'selection'}`
540
+ : '';
541
+ status.textContent = [
542
+ state.status,
543
+ state.session?.dirty ? '*' : '',
544
+ LocalEditorShared.formatAuthoringSourceLabel(state.session?.source),
545
+ state.summary,
546
+ ].filter(Boolean).join(' | ');
547
+ status.textContent += dragSuffix;
548
+ sceneToolStatus.textContent = transformTool?.dragPhase === 'dragging'
549
+ ? `正在拖拽 ${transformTool.draggingNodeId ?? '选择对象'}`
550
+ : `${LocalEditorShared.toTransformToolLabel(transformTool?.activeTool ?? 'select')} · ${LocalEditorShared.toTransformSpaceLabel(transformTool?.activeSpace ?? 'world')}${transformTool?.activeConstraint === 'view-plane' ? ' · 视图平面' : ''}`;
551
+ sceneMouseHint.textContent = transformTool?.activeConstraint === 'view-plane'
552
+ ? '视图平面移动 · 左键拖拽选中对象 · Esc 取消'
553
+ : '左键选择 · 空白拖拽框选 · 中键平移 · Alt+左键环绕 · 右键飞行 · 滚轮缩放';
554
+ const boxSelection = state.boxSelection;
555
+ if (inEditor && boxSelection?.active) {
556
+ boxSelectionOverlay.style.display = '';
557
+ boxSelectionOverlay.style.left = `${boxSelection.left}px`;
558
+ boxSelectionOverlay.style.top = `${boxSelection.top}px`;
559
+ boxSelectionOverlay.style.width = `${boxSelection.width}px`;
560
+ boxSelectionOverlay.style.height = `${boxSelection.height}px`;
561
+ }
562
+ else {
563
+ boxSelectionOverlay.style.display = 'none';
564
+ }
565
+ if (!inEditor)
566
+ return;
567
+ const hierarchyDescriptor = panelRegistry.getActivePanel('left');
568
+ const inspectorDescriptor = panelRegistry.getActivePanel('right');
569
+ hierarchyPanel.dataset.editorPanelId = hierarchyDescriptor?.id ?? 'hierarchy';
570
+ inspectorPanel.dataset.editorPanelId = inspectorDescriptor?.id ?? 'inspector';
571
+ LocalEditorPanels.renderHierarchyPanel(doc, hierarchyPanel, state, hierarchyRename, hierarchyDrop);
572
+ LocalEditorPanels.renderWorkbenchBottomDockPanel(doc, assetPanel, state, panelRegistry.getBottomDockTab(), panelRegistry.getPanels('bottom'));
573
+ LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, state);
574
+ };
575
+ return {
576
+ update(state) {
577
+ render(state);
578
+ },
579
+ dispose() {
580
+ hostChrome.remove();
581
+ workbench.root.remove();
582
+ boxSelectionOverlay.remove();
583
+ shortcutHelpPanel.remove();
584
+ inputRouter.dispose();
585
+ doc.removeEventListener('keydown', onKeyDown);
586
+ },
587
+ };
588
+ }
589
+ //# sourceMappingURL=local-editor-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-editor-ui.js","sourceRoot":"","sources":["../src/local-editor-ui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "@fps-games/editor-browser",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "description": "Browser host adapters for fps-game-editor.",
7
+ "sideEffects": false,
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ }
16
+ }