//! Iris Engine - Rust+WebGPU Next-Generation Build-Free Frontend Runtime
//! Iris Engine —— Rust+WebGPU 下一代无构建前端运行时
//!
//! This is the meta crate of Iris, re-exporting all submodules' public APIs and providing complete runtime orchestration.
//! 这是 Iris 的元 crate（meta crate），重新导出所有子模块的公共 API，并提供完整的运行时编排能力。
//!
//! ## Features | 功能特性
//!
//! - Build-free development workflow (no webpack/vite needed)
//! - 无构建开发工作流（无需 webpack/vite）
//! - WebGPU hardware rendering
//! - WebGPU 硬件渲染
//! - Vue 3 runtime with SFC support
//! - Vue 3 运行时，支持单文件组件
//! - Hot module replacement (HMR)
//! - 热模块替换（HMR）
//! - Animation engine (CSS transitions & keyframes)
//! - 动画引擎（CSS 过渡和关键帧）
//!
//! ## Architecture Overview | 架构概览
//!
//! - [`core`](iris_core) - Foundation kernel (window, async, I/O) | 底层内核底座（窗口、异步、IO）
//! - [`gpu`](iris_gpu) - WebGPU rendering pipeline | WebGPU 硬件渲染管线
//! - [`layout`](iris_layout) - Browser-level layout & CSS engine | 浏览器级布局 & CSS 引擎
//! - [`dom`](iris_dom) - Cross-platform DOM/BOM abstraction | 跨端 DOM/BOM 抽象与事件系统
//! - [`js`](iris_js) - JS sandbox runtime (QuickJS + Vue3) | JS 沙箱运行时（QuickJS + Vue3）
//! - [`sfc`](iris_sfc) - SFC/TS instant transpilation | SFC/TS 即时转译层
//! - [`orchestrator`] - Runtime orchestrator (Phase 4) | 运行时编排器（Phase 4）
//!
//! ## Quick Start | 快速开始
//!
//! ### Method 1: Using Application trait | 方式 1: 使用 Application trait
//!
//! ```ignore
//! use iris::core::{run_app, Application, Context};
//!
//! struct MyApp;
//! impl Application for MyApp {
//!     fn initialize(&mut self, _ctx: &Context, _event_loop: &ActiveEventLoop) {}
//!     fn window_event(&mut self, _ctx: &Context, _el: &ActiveEventLoop, _id: WindowId, _e: WindowEvent) {}
//! }
//!
//! fn main() -> Result<(), Box<dyn std::error::Error>> {
//!     run_app(MyApp)?;
//!     Ok(())
//! }
//! ```
//!
//! ### Method 2: Using RuntimeOrchestrator | 方式 2: 使用 RuntimeOrchestrator
//!
//! ```ignore
//! use iris::orchestrator::RuntimeOrchestrator;
//!
//! let mut runtime = RuntimeOrchestrator::new();
//! runtime.initialize()?;
//! runtime.load_vue_app("examples/App.vue")?;
//! runtime.run()?;
//! ```

#![allow(missing_docs)]
#![allow(dead_code)]

pub use iris_core as core;
pub use iris_layout as layout;
pub use iris_gpu as gpu;

// Vue 模式下的模块（可选）
#[cfg(feature = "vue-sfc")]
pub use iris_dom as dom;

#[cfg(feature = "vue-sfc")]
pub use iris_js as js;

#[cfg(feature = "vue-sfc")]
pub use iris_sfc as sfc;

/// 运行时编排器（Phase 4）
///
/// 负责将 iris-sfc、iris-js、iris-dom、iris-layout 和 iris-gpu 连接在一起，
/// 形成完整的 Vue 3 运行时。
pub mod orchestrator;

/// VNode 到 GPU 渲染适配器（Phase 5，仅 WebGPU 模式）
///
/// 将虚拟 DOM 树转换为 GPU 绘制命令，实现高效的渲染管线。
#[cfg(all(feature = "vue-sfc", feature = "webgpu-render"))]
pub mod vnode_renderer;

/// 脏矩形管理器（性能优化）
///
/// 用于优化渲染性能，只重绘发生变化的区域。
pub mod dirty_rect_manager;
pub use dirty_rect_manager::{DirtyRect, DirtyRectManager, DirtyRectStats};

/// 动画引擎（CSS Transitions & Animations）
///
/// 实现 CSS 过渡动画和关键帧动画，支持缓动函数和时间轴控制。
pub mod animation_engine;
pub use animation_engine::{
    EasingFunction, TransitionConfig, ElementAnimationState, TransitionAnimation, AnimatedValue,
};

/// 响应式渲染适配器（Phase 4）
///
/// 将 iris-reactive 响应式布局系统集成到渲染管线，实现自动更新。
pub mod reactive_render_adapter;
pub use reactive_render_adapter::{ReactiveRenderAdapter, integrate_reactive_rendering};

/// 错误处理系统（Phase 7.3）
///
/// 提供组件级别的错误隔离、错误报告和调试工具。
pub mod error_handling;
pub use error_handling::{
    ErrorBoundary, ErrorBoundaryState, ErrorReporter,
    IrisError, ErrorSeverity, ErrorSource,
};

/// CSS 解析共享工具
///
/// 提供 VNodeRenderer 和 orchestrator 共享的 CSS 颜色、渐变、边框等解析工具。
pub mod css;

// 向后兼容：保留 css_utils 别名
#[doc(hidden)]
pub use css as css_utils;

// CSS 解析工具（所有模式都可用）
pub use css::{
    parse_css_color, parse_css_unit, parse_border_width,
    parse_css_color_name, parse_linear_gradient,
    GradientStop, Background, GradientType,
    BorderInfo, TextInfo,
};

/// 调试工具系统（Phase 7.3）
///
/// 提供开发时的组件树检查、性能分析和错误诊断能力。
pub mod dev_tools;
pub use dev_tools::{
    DevTools, ComponentInfo, PerformanceMetrics,
};

/// Vue 项目加载器
///
/// 从 index.html 开始加载完整的 Vue 项目，支持混合布局（HTML + Vue 组件）。
pub mod vue_project_loader;
pub use vue_project_loader::VueProjectLoader;

/// Iris 引擎版本号。
pub const VERSION: &str = env!("CARGO_PKG_VERSION");

/// 初始化整个 Iris 引擎各层。
///
/// 按架构层级自下而上依次初始化：
/// core → gpu → layout → dom → js → sfc
pub fn init() {
    iris_core::init();
    iris_gpu::init();
    iris_layout::init();
    
    // Vue 模式下的初始化（可选）
    #[cfg(feature = "vue-sfc")]
    {
        iris_dom::init();
        iris_js::init();
        iris_sfc::init();
    }
}
