ailloli_ui_runtime/
lib.rs

1//! Retained-mode UI engine: element tree, layout, paint, input, and reactivity.
2//!
3//! Pipeline for each frame (see `Runtime::render_root` on [`app::Runtime`]):
4//!
5//! 1. **Reconcile**: diff declarative [`component::View`] into an [`element::ElementTree`]
6//! 2. **Layout**: measure and position nodes ([`layout::LayoutEngine`], [`layout::Widget`])
7//! 3. **Paint**: emit [`scene::DrawCmd`] lists into a [`scene::Scene`]
8//!
9//! Input is routed separately via [`input::InputRouter`] and widget [`component::Widget::event`].
10//!
11//! # Modules
12//!
13//! | Module | Role |
14//! |--------|------|
15//! | [`app`] | `Runtime`, `RuntimeHandle`, scheduler, state store |
16//! | [`component`] | `View`, `Signal`/`Memo`/`Binding`, component builders |
17//! | [`element`] | Retained element tree, keys, reconciliation |
18//! | [`input`] | Hit-test, focus, pointer/keyboard routing |
19//! | [`layout`] | Layout context, results, retained `LayoutNode` |
20//! | [`scene`] | Draw commands, layers, clip stack, paint context |
21
22/// Application runtime, handles, and scheduling.
23pub mod app;
24/// Declarative views, widgets, and reactive state.
25pub mod component;
26/// Retained element tree and reconciliation.
27pub mod element;
28/// Input routing, focus, and hit-testing.
29pub mod input;
30/// Layout measurement and results.
31pub mod layout;
32/// Provider-neutral popup registry, ownership, and dismissal intents.
33pub mod popup;
34/// Retained popup trees for the provider-neutral fallback overlay.
35pub mod popup_mount;
36/// Scene graph and draw commands.
37pub mod scene;
38
39pub use app::{
40    ElementTreeDiagnosticsSnapshot, ElementWorkCounters, FrameWorkPlan, Invalidation,
41    InvalidationDiagnosticsSnapshot, InvalidationRecord, InvalidationSource, UiDrain, UiInbox,
42    UiInboxStats, UiSendError, UiSender, UiWake, UiWakeError,
43};
44
45#[cfg(feature = "devtools")]
46pub use layout::LayoutDebugInfo;
47pub use layout::{LayoutCtx, LayoutPass, Widget};
48pub use scene::{
49    BlendMode, DrawBorder, DrawBoxShadow, DrawCmd, DrawImage, DrawPolyline, DrawRRect, DrawRect,
50    DrawRingProgress, DrawText, IsolatedEffects, Layer, PaintCtx, Painter, Scene,
51};