Files
esengine/packages/ui/src/index.ts
YHH b42a7b4e43 Feature/editor optimization (#251)
* refactor: 编辑器/运行时架构拆分与构建系统升级

* feat(core): 层级系统重构与UI变换矩阵修复

* refactor: 移除 ecs-components 聚合包并修复跨包组件查找问题

* fix(physics): 修复跨包组件类引用问题

* feat: 统一运行时架构与浏览器运行支持

* feat(asset): 实现浏览器运行时资产加载系统

* fix: 修复文档、CodeQL安全问题和CI类型检查错误

* fix: 修复文档、CodeQL安全问题和CI类型检查错误

* fix: 修复文档、CodeQL安全问题、CI类型检查和测试错误

* test: 补齐核心模块测试用例,修复CI构建配置

* fix: 修复测试用例中的类型错误和断言问题

* fix: 修复 turbo build:npm 任务的依赖顺序问题

* fix: 修复 CI 构建错误并优化构建性能
2025-12-01 22:28:51 +08:00

166 lines
4.6 KiB
TypeScript

/**
* @esengine/ui - ECS-based UI System
*
* 基于 ECS 架构的 UI 系统,支持 WebGL 渲染
* ECS-based UI system with WebGL rendering support
*
* @example
* ```typescript
* import {
* UIBuilder,
* UILayoutSystem,
* UIInputSystem,
* UIAnimationSystem,
* // ECS Render Systems
* UIRectRenderSystem,
* UITextRenderSystem,
* UIButtonRenderSystem,
* UIProgressBarRenderSystem,
* UISliderRenderSystem,
* UIScrollViewRenderSystem,
* getUIRenderCollector
* } from '@esengine/ui';
*
* // 创建 UI Scene
* const uiScene = world.createScene('ui');
*
* // 添加 UI 系统(按 updateOrder 自动排序)
* // Add UI systems (auto-sorted by updateOrder)
* uiScene.addSystem(new UILayoutSystem()); // Layout first
* uiScene.addSystem(new UIInputSystem()); // Input handling
* uiScene.addSystem(new UIAnimationSystem()); // Animation
*
* // 添加渲染系统(每个组件类型一个系统)
* // Add render systems (one per component type)
* uiScene.addSystem(new UIRectRenderSystem()); // Basic rectangles (order: 100)
* uiScene.addSystem(new UIProgressBarRenderSystem());// Progress bars (order: 110)
* uiScene.addSystem(new UISliderRenderSystem()); // Sliders (order: 111)
* uiScene.addSystem(new UIScrollViewRenderSystem()); // Scroll views (order: 112)
* uiScene.addSystem(new UIButtonRenderSystem()); // Buttons (order: 113)
* uiScene.addSystem(new UITextRenderSystem()); // Text (order: 120)
*
* // 在渲染前清除收集器
* // Clear collector before render
* getUIRenderCollector().clear();
*
* // 使用 UIBuilder 创建元素
* const ui = new UIBuilder(uiScene);
*
* const button = ui.button({
* x: 100, y: 100,
* width: 120, height: 40,
* label: 'Click Me',
* onClick: () => console.log('Clicked!')
* });
*
* const progressBar = ui.progressBar({
* x: 100, y: 160,
* width: 200, height: 20,
* value: 75,
* maxValue: 100
* });
* ```
*/
// Components - Core
export {
UITransformComponent,
AnchorPreset
} from './components/UITransformComponent';
export {
UIRenderComponent,
UIRenderType,
type UIBorderStyle,
type UIShadowStyle
} from './components/UIRenderComponent';
export {
UIInteractableComponent,
type UICursorType
} from './components/UIInteractableComponent';
export {
UITextComponent,
type UITextAlign,
type UITextVerticalAlign,
type UITextOverflow,
type UIFontWeight
} from './components/UITextComponent';
export {
UILayoutComponent,
UILayoutType,
UIJustifyContent,
UIAlignItems,
type UIPadding
} from './components/UILayoutComponent';
// Components - Widgets
export {
UIButtonComponent,
type UIButtonStyle,
type UIButtonDisplayMode
} from './components/widgets/UIButtonComponent';
export {
UIProgressBarComponent,
UIProgressDirection,
UIProgressFillMode
} from './components/widgets/UIProgressBarComponent';
export {
UISliderComponent,
UISliderOrientation
} from './components/widgets/UISliderComponent';
export {
UIScrollViewComponent,
UIScrollbarVisibility
} from './components/widgets/UIScrollViewComponent';
// Systems - Core
export { UILayoutSystem } from './systems/UILayoutSystem';
export { UIInputSystem, MouseButton, type UIInputEvent } from './systems/UIInputSystem';
export { UIAnimationSystem, Easing, type EasingFunction, type EasingName } from './systems/UIAnimationSystem';
export { UIRenderDataProvider, type IRenderDataProvider, type IUIRenderDataProvider } from './systems/UIRenderDataProvider';
// Systems - Render (ECS-compliant render systems)
export {
// Collector
UIRenderCollector,
getUIRenderCollector,
resetUIRenderCollector,
invalidateUIRenderCaches,
type UIRenderPrimitive,
type ProviderRenderData,
// Render systems
UIRenderBeginSystem,
UIRectRenderSystem,
UITextRenderSystem,
UIButtonRenderSystem,
UIProgressBarRenderSystem,
UISliderRenderSystem,
UIScrollViewRenderSystem
} from './systems/render';
// Rendering
export { WebGLUIRenderer } from './rendering/WebGLUIRenderer';
export { TextRenderer, type TextMeasurement, type TextRenderOptions } from './rendering/TextRenderer';
// Builder API
export {
UIBuilder,
type UIBaseConfig,
type UIButtonConfig,
type UITextConfig,
type UIImageConfig,
type UIProgressBarConfig,
type UISliderConfig,
type UIPanelConfig,
type UIScrollViewConfig
} from './UIBuilder';
// Runtime module and plugin
export { UIRuntimeModule, UIPlugin, type UISystemContext } from './UIRuntimeModule';