1#[cfg(feature = "async-assets")]
2mod async_asset;
3mod canvas;
4mod child_host;
5mod container;
6mod context;
7pub mod dismiss;
8mod drag;
9pub mod focus;
10mod image;
11mod input;
12mod input_region;
13mod kept;
14mod keyboard;
15mod layout_item;
16mod layout_leaf;
17mod lazy;
18mod line;
19mod line_gutter;
20pub mod named_overlay;
21pub mod overlay;
22mod path;
23mod pointer;
24mod press;
25mod reactive_list;
26mod rect;
27mod rich_text;
28mod scroll_area;
29pub mod scroll_region;
30mod slots;
31mod styled_container;
32mod surface;
33mod surface_context;
34#[cfg(feature = "svg")]
35mod svg;
36mod text;
37mod text_area;
38mod virtual_list;
39
40#[cfg(feature = "async-assets")]
41pub use async_asset::{AssetSource, AssetState};
42pub use canvas::Canvas;
43pub use child_host::{
44 ChildSlot, fragment, fragment_gap, fragment_positional, fragment_positional_gap,
45};
46pub use container::Container;
47pub use context::{
48 NodeId, absolute_rect, compute_layout, compute_layout_root, current_direction, mark_dirty,
49 new_container, new_leaf, relayout_if_dirty, remove_node, reset_layout_runtime, set_children,
50 set_direction, set_display, set_min_height, set_overlay_host, track_layout, use_direction,
51};
52pub use dismiss::{dismiss_depth, dismiss_top, use_dismiss_depth};
53pub use image::Image;
54pub use input::Input;
55pub use input_region::{interactive_rects, register_interactive, unregister_interactive};
56pub use kept::kept;
57pub use keyboard::{
58 end_frame as end_keyboard_frame, key_held, key_pressed, modifiers, observe as observe_keyboard,
59 reset as reset_keyboard,
60};
61pub use layout_item::{ClipAxis, ClippedItem, LayoutItem, box_item};
62pub use layout_leaf::LayoutLeaf;
63pub use lazy::Lazy;
64pub use line::Line;
65pub use line_gutter::LineGutter;
66pub use named_overlay::{
67 close as close_overlay, is_open as use_overlay_open, open as open_overlay,
68 peek_open as overlay_open, state as overlay_state, toggle as toggle_overlay,
69};
70pub use overlay::{Overlay, Placement, anchor_rect};
71pub use path::Path;
72pub use pointer::transform_pointer;
73pub use reactive_list::ReactiveList;
74pub use rect::Rectangle;
75pub use rich_text::RichText;
76pub use scroll_area::{LayoutScrollArea, ScrollViewport, ScrollbarStyle};
77pub use scroll_region::visible_rect;
78pub use slots::Slots;
79pub use styled_container::{StyledContainer, box_transform, style_follows};
80pub use surface::{
81 DEFAULT_SCRIM, KeyboardMode, MIN_FRAME_SIZE, SurfaceAlign, SurfaceAnchor, SurfaceFrameStyle,
82 SurfacePlacement, SurfaceRole, SurfaceRoot, SurfaceScaffold, SurfaceSize, SurfaceTransition,
83 surface_frame,
84};
85pub use surface_context::{Surface, SurfaceGuard};
86#[cfg(feature = "svg")]
87pub use svg::Svg;
88pub use text::Text;
89pub use text_area::TextArea;
90pub use ui_tree::{Component, ComponentList, EventResult, NodeVec, RenderNode};
91pub use virtual_list::{VirtualList, visible_window};
92
93pub fn dispatch_overlays(event: &platform_core::Event) -> EventResult {
99 if let platform_core::Event::KeyPressed {
103 key: platform_core::Key::Named(platform_core::NamedKey::Escape),
104 ..
105 } = event
106 && focus::current().is_none()
107 && dismiss::dismiss_top()
108 {
109 return EventResult::Handled;
110 }
111 ui_tree::dispatch_overlays(event)
112}