Skip to main content

ferroui_controls_repeater/
lib.rs

1//! ferroui-controls-repeater
2//!
3//! A port of the Repeater of WinUI on FerroUI controls: [`ItemsRepeater`] and
4//! [`ItemsRepeaterScrollHost`], [`LayoutPanel`], the stack, uniform grid, flow and lined-flow
5//! layouts with their virtualizing and non-virtualizing contexts, element factories and
6//! [`RecyclePool`], phased template binding, item collection transitions, the selection model
7//! of the repeater (`selection`) and the automation peer. [`register_types`] registers the
8//! types of the crate for markup, in the XML namespace of the framework.
9//!
10//! The port, its sources, tests and deviations are described in
11//! `docs/porting/winui-repeater/` in the repository.
12
13// The markup macros and the registered Rust paths name the types of the crate by its name.
14extern crate self as ferroui_controls_repeater;
15
16pub(crate) mod animation_manager;
17mod build_tree_scheduler;
18mod diagnostics;
19mod element_factory;
20mod item_collection_transition;
21mod item_collection_transition_completed_event_args;
22mod item_collection_transition_progress;
23mod item_collection_transition_provider;
24mod item_template_wrapper;
25mod items_repeater;
26mod items_repeater_event_args;
27mod items_repeater_scroll_host;
28mod layout_panel;
29pub mod layouts;
30pub(crate) mod markup;
31mod lined_flow_layout_item_collection_transition_provider;
32mod phaser;
33mod recycle_pool;
34mod recycling_element_factory;
35mod repeater_automation_peer;
36mod repeater_layout_context;
37// The test hooks are public only with the feature `testing`; the repeater notifies them always.
38#[cfg_attr(not(any(test, feature = "testing")), allow(dead_code))]
39mod repeater_test_hooks;
40mod register_types;
41mod rust_paths;
42pub mod selection;
43pub(crate) mod services_markup;
44mod transition_manager;
45mod unique_id_element_pool;
46mod view_manager;
47mod viewport_manager;
48mod virtualization_info;
49
50pub use build_tree_scheduler::BuildTreeScheduler;
51pub use element_factory::*;
52pub use item_collection_transition::*;
53pub use item_collection_transition_completed_event_args::*;
54pub use item_collection_transition_progress::*;
55pub use item_collection_transition_provider::*;
56pub use item_template_wrapper::*;
57pub use items_repeater::ItemsRepeater;
58pub use items_repeater_event_args::*;
59pub use items_repeater_scroll_host::ItemsRepeaterScrollHost;
60pub use layout_panel::LayoutPanel;
61pub use layouts::*;
62pub use lined_flow_layout_item_collection_transition_provider::*;
63pub use phaser::*;
64pub use recycle_pool::*;
65pub use recycling_element_factory::*;
66pub use repeater_automation_peer::RepeaterAutomationPeer;
67#[cfg(any(test, feature = "testing"))]
68pub use repeater_test_hooks::RepeaterTestHooks;
69#[cfg(not(any(test, feature = "testing")))]
70pub(crate) use repeater_test_hooks::RepeaterTestHooks;
71pub use register_types::register_types;
72pub use services_markup::ElementFactoryTemplatesMetadata;
73pub use transition_manager::TransitionManager;
74pub use virtualization_info::*;
75
76#[cfg(test)]
77mod test_support;
78
79#[cfg(test)]
80mod xaml_tests;
81
82#[cfg(test)]
83mod services_tests;
84
85#[cfg(test)]
86mod diagnostics_tests;
87
88#[cfg(test)]
89mod items_repeater_tests;
90
91#[cfg(test)]
92mod conformance_tests;
93
94#[cfg(test)]
95mod acceptance_tests;
96
97#[cfg(test)]
98mod view_manager_acceptance_tests;
99
100#[cfg(test)]
101mod viewport_tests;
102
103#[cfg(test)]
104mod source_view_tests;
105
106#[cfg(test)]
107mod layout_contract_tests;
108
109#[cfg(test)]
110mod layout_panel_tests;