feat(editor-app): 重构浏览器预览使用import maps

This commit is contained in:
yhh
2025-12-03 16:19:50 +08:00
parent 55f644a091
commit c2f8cb5272
50 changed files with 5995 additions and 1499 deletions

View File

@@ -13,8 +13,9 @@ import {
} from 'lucide-react';
import { Core } from '@esengine/ecs-framework';
import { SettingsService } from '../services/SettingsService';
import { SettingsRegistry, SettingCategory, SettingDescriptor, ProjectService, PluginManager, IPluginManager } from '@esengine/editor-core';
import { SettingsRegistry, SettingCategory, SettingDescriptor, ProjectService, PluginManager, IPluginManager, ModuleManifest } from '@esengine/editor-core';
import { PluginListSetting } from './PluginListSetting';
import { ModuleListSetting } from './ModuleListSetting';
import '../styles/SettingsWindow.css';
interface SettingsWindowProps {
@@ -142,6 +143,9 @@ export function SettingsWindow({ onClose, settingsRegistry, initialCategoryId }:
} else if (key === 'project.uiDesignResolution.preset') {
const resolution = projectService.getUIDesignResolution();
initialValues.set(key, `${resolution.width}x${resolution.height}`);
} else if (key === 'project.disabledModules') {
// Load disabled modules from ProjectService
initialValues.set(key, projectService.getDisabledModules());
} else {
initialValues.set(key, descriptor.defaultValue);
}
@@ -199,6 +203,8 @@ export function SettingsWindow({ onClose, settingsRegistry, initialCategoryId }:
let uiResolutionChanged = false;
let newWidth = 1920;
let newHeight = 1080;
let disabledModulesChanged = false;
let newDisabledModules: string[] = [];
for (const [key, value] of values.entries()) {
if (key.startsWith('project.') && projectService) {
@@ -215,6 +221,9 @@ export function SettingsWindow({ onClose, settingsRegistry, initialCategoryId }:
newHeight = h;
uiResolutionChanged = true;
}
} else if (key === 'project.disabledModules') {
newDisabledModules = value as string[];
disabledModulesChanged = true;
}
changedSettings[key] = value;
} else {
@@ -227,6 +236,10 @@ export function SettingsWindow({ onClose, settingsRegistry, initialCategoryId }:
await projectService.setUIDesignResolution({ width: newWidth, height: newHeight });
}
if (disabledModulesChanged && projectService) {
await projectService.setDisabledModules(newDisabledModules);
}
console.log('[SettingsWindow] Saving settings, changedSettings:', changedSettings);
window.dispatchEvent(new CustomEvent('settings:changed', {
detail: changedSettings
@@ -487,6 +500,31 @@ export function SettingsWindow({ onClose, settingsRegistry, initialCategoryId }:
);
}
case 'moduleList': {
// Get module data from setting's custom props
// 从设置的自定义属性获取模块数据
const moduleData = setting as SettingDescriptor & {
modules?: ModuleManifest[];
getModules?: () => ModuleManifest[];
useBlacklist?: boolean;
validateDisable?: (moduleId: string) => Promise<{ canDisable: boolean; reason?: string }>;
};
const moduleValue = value as string[] || [];
return (
<div className="settings-module-list">
<ModuleListSetting
modules={moduleData.modules}
getModules={moduleData.getModules}
value={moduleValue}
onModulesChange={(newValue) => handleValueChange(setting.key, newValue, setting)}
useBlacklist={moduleData.useBlacklist}
validateDisable={moduleData.validateDisable}
/>
</div>
);
}
default:
return null;
}