@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.
- package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
- package/dist/agent-bridge/capabilities/ui-regions.js +16 -0
- package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
- package/dist/build-info.json +43 -43
- package/dist/internal/material-preview.d.ts +22 -0
- package/dist/internal/material-preview.d.ts.map +1 -0
- package/dist/internal/material-preview.js +186 -0
- package/dist/internal/material-preview.js.map +1 -0
- package/dist/internal/project-model-preview.d.ts +4 -0
- package/dist/internal/project-model-preview.d.ts.map +1 -0
- package/dist/internal/project-model-preview.js +359 -0
- package/dist/internal/project-model-preview.js.map +1 -0
- package/dist/local-editor-agent-context.d.ts +12 -1
- package/dist/local-editor-agent-context.d.ts.map +1 -1
- package/dist/local-editor-agent-context.js +47 -0
- package/dist/local-editor-agent-context.js.map +1 -1
- package/dist/local-editor-harness.d.ts +15 -2
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +310 -21
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/local-editor-tools.d.ts +1 -0
- package/dist/local-editor-tools.d.ts.map +1 -1
- package/dist/local-editor-tools.js +3 -0
- package/dist/local-editor-tools.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +4 -0
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js +27 -0
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
- package/dist/playable-product-scene-capabilities.js +9 -3
- package/dist/playable-product-scene-capabilities.js.map +1 -1
- package/dist/playable-standard-project.d.ts.map +1 -1
- package/dist/playable-standard-project.js +5 -2
- package/dist/playable-standard-project.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +24 -0
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +10 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +96 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js +85 -22
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-spatial-overlay-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +2 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +150 -4
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +249 -15
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/types.d.ts +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +6 -6
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts +5 -0
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/index.js +3 -0
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts +35 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js +136 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-browser-continuity.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts +46 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js +283 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-asset-filesystem.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts +12 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js +67 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-preview-cleanup-registry.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts +6 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js +9 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-open.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts +7 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js +20 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-file-preview.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts +9 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js +219 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-project-media-thumbnail-cache.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts +14 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js +42 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-tool-presentation.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +2 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts +27 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js +288 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-console.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +29 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +20 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +321 -60
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +2 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +4 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +63 -3
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +9 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +88 -16
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +2 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +1463 -356
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts +13 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js +15 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-viewport-orientation.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/package.json +7 -7
- package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-tools.js +3 -1
- package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +11 -2
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.js +12 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
- package/node_modules/@fps-games/editor-core/package.json +6 -6
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js +15 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/handler.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/routes.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts +6 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/authoring-server/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +10 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/index.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js +86 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/protocol.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts +9 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js +76 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/support.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts +34 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/project-files/types.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +40 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +94 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts +14 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js +101 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-file-handle.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts +23 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js +180 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/project-files.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +23 -3
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/package.json +2 -2
- package/node_modules/@fps-games/editor-tooling/package.json +3 -3
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +103 -10
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -1
- package/node_modules/@fps-games/editor-ui/package.json +1 -1
- package/node_modules/@fps-games/playable-assets/package.json +1 -1
- package/node_modules/@fps-games/playable-contracts/package.json +1 -1
- package/node_modules/@fps-games/playable-rendering/package.json +2 -2
- package/node_modules/@fps-games/playable-runtime/package.json +12 -12
- package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
- package/node_modules/@fps-games/playable-scene/package.json +2 -2
- package/node_modules/@fps-games/plugin-api/package.json +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/package.json +5 -5
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
- package/node_modules/@fps-games/plugin-host/package.json +2 -2
- package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-markers/package.json +5 -5
- package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-materials/package.json +5 -5
- package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
- package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-scene/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
- 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'
|
|
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 = `${
|
|
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 =
|
|
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 = `${
|
|
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 =
|
|
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
|
|
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
|
|
374
|
+
const bottomHeight = projectedVisibility.bottomVisible ? layout.bottomHeight : 0;
|
|
329
375
|
layout = {
|
|
330
376
|
...layout,
|
|
331
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"local-editor-ui.d.ts","sourceRoot":"","sources":["../src/local-editor-ui.ts"],"names":[],"mappings":"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"}
|