1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! # repose-tree
//!
//! Persistent view tree with incremental reconciliation.
//!
//! Instead of rebuilding the entire view tree every frame, this module
//! maintains a persistent tree structure that:
//!
//! 1. **Stable Identity**: Nodes have stable IDs across frames
//! 2. **Change Detection**: Content hashing identifies what changed
//! 3. **Incremental Updates**: Only changed subtrees are processed
//! 4. **Layout Caching**: Unchanged nodes keep their cached layout
//!
//! ## Architecture
//!
//! ```text
//! ┌─────────────────────────────────────────────────────────┐
//! │ ViewTree │
//! │ ┌─────────────────────────────────────────────────────┐│
//! │ │ nodes: SlotMap<NodeId, TreeNode> ││
//! │ │ root: NodeId ││
//! │ │ dirty: FxHashSet<NodeId> ││
//! │ │ generation: u64 ││
//! │ └─────────────────────────────────────────────────────┘│
//! └─────────────────────────────────────────────────────────┘
//! │
//! ▼
//! ┌─────────────────────────────────────────────────────────┐
//! │ TreeNode │
//! │ ┌─────────────────────────────────────────────────────┐│
//! │ │ id: NodeId ││
//! │ │ view_id: ViewId (stable user-facing ID) ││
//! │ │ kind: ViewKind ││
//! │ │ modifier: Modifier ││
//! │ │ children: SmallVec<[NodeId; 4]> ││
//! │ │ parent: Option<NodeId> ││
//! │ │ content_hash: u64 ││
//! │ │ layout_cache: Option<LayoutCache> ││
//! │ │ generation: u64 ││
//! │ └─────────────────────────────────────────────────────┘│
//! └─────────────────────────────────────────────────────────┘
//! ```
pub use *;
pub use *;
pub use *;
pub use *;