pub mod animation;
pub mod animation_driver;
pub mod clipboard;
pub mod color;
pub mod cursor;
pub mod debounce;
pub mod dnd;
pub mod effects;
pub mod effects_ext;
pub mod error;
pub mod focus;
pub mod frame_clock;
pub mod geometry;
pub mod gesture;
pub mod indication;
pub mod input;
pub mod locals;
pub mod modifier;
pub mod nested_scroll;
pub mod prelude;
pub mod present_mode;
pub mod reactive;
pub mod render_api;
pub mod render_context;
pub mod runtime;
pub mod scope;
pub mod scope_cache;
pub mod scroll;
pub mod semantics;
pub mod shortcuts;
pub mod signal;
pub mod state;
pub mod tests;
pub mod text;
pub mod units;
pub mod timer;
#[cfg(feature = "accesskit")]
pub mod a11y;
pub mod view;
pub use color::*;
pub use cursor::*;
pub use effects::*;
pub use effects_ext::*;
pub use focus::*;
pub use frame_clock::{
peek_frame_request, request_frame, request_present, signal_fired, take_frame_request,
take_present_request, take_signal_fired,
};
pub use geometry::*;
pub use gesture::*;
pub use locals::*;
pub use modifier::*;
pub use prelude::*;
pub use present_mode::*;
pub use reactive::*;
pub use render_api::*;
pub use render_context::{ImageHandleGuard, RenderCommand, RenderContext};
pub use runtime::*;
pub use runtime::{FocusDirection, FocusManager, FocusRequester, take_focus_request};
pub use semantics::*;
pub use signal::*;
pub use state::*;
pub use text::*;
pub use units::*;
pub use view::*;
pub use repose_macros::View;
#[macro_export]
macro_rules! scope {
($key:expr, $s:expr, [$($input:expr),+ $(,)?], $body:block) => {{
let _key: &str = $key;
let _input_hash = {
use std::hash::{Hash, Hasher};
let mut _hasher = std::collections::hash_map::DefaultHasher::new();
$(
Hash::hash(&$input, &mut _hasher);
)*
_hasher.finish()
};
if !$crate::scope_cache::should_run(_key, _input_hash) {
$crate::scope_cache::get_cached(_key, $s)
} else {
$crate::scope_cache::clear_scope_deps(_key);
let _prev_cursor = $crate::runtime::COMPOSER.with(|c| c.borrow().cursor);
let _sched_guard = $s.scope_guard_raw(_key);
let mut _result = $crate::scope_cache::with_scope_key(_key, || $body);
drop(_sched_guard);
_result.modifier.repaint_boundary = true;
_result.scope_key = Some(_key.to_string());
let _slot_delta = $crate::runtime::COMPOSER.with(|c| c.borrow().cursor) - _prev_cursor;
$crate::scope_cache::set_cache(_key, _input_hash, _result.clone(), _slot_delta);
_result
}
}};
($key:expr, $s:expr, [], $body:block) => {{
let _key: &str = $key;
let _input_hash: u64 = 0;
if !$crate::scope_cache::should_run(_key, _input_hash) {
$crate::scope_cache::get_cached(_key, $s)
} else {
$crate::scope_cache::clear_scope_deps(_key);
let _prev_cursor = $crate::runtime::COMPOSER.with(|c| c.borrow().cursor);
let _sched_guard = $s.scope_guard_raw(_key);
let mut _result = $crate::scope_cache::with_scope_key(_key, || $body);
drop(_sched_guard);
_result.modifier.repaint_boundary = true;
_result.scope_key = Some(_key.to_string());
let _slot_delta = $crate::runtime::COMPOSER.with(|c| c.borrow().cursor) - _prev_cursor;
$crate::scope_cache::set_cache(_key, _input_hash, _result.clone(), _slot_delta);
_result
}
}};
}