Skip to main content

ferroui_browser/
lib.rs

1//! The browser platform.
2//!
3//! An application runs on the main thread of a web page, inside the
4//! WebAssembly module the host page creates. There are no windows: content
5//! is shown by a [`FerroView`] over an element of the page, set as the main
6//! view of the single-view lifetime that
7//! [`BrowserAppBuilder::start_browser_app`] installs. The browser drives
8//! everything: dispatcher work is posted as tasks, rendering follows the
9//! animation frames, and the start-up function returns to the page.
10//!
11//! The script side of the platform is the `ferroui.js` module built from
12//! `webapp/`. [`interop`] is the only place that crosses the boundary: it
13//! imports functions of that module and exports the callbacks the module
14//! invokes.
15
16pub mod interop;
17pub mod rendering;
18pub mod storage;
19
20mod browser_activatable_lifetime;
21mod browser_app_builder;
22mod browser_clipboard_data_transfer;
23mod browser_clipboard_data_transfer_item;
24mod browser_data_format_helper;
25mod browser_data_transfer_helper;
26mod browser_drag_data_transfer;
27mod browser_drag_data_transfer_item;
28mod browser_input_handler;
29mod browser_insets_manager;
30mod browser_input_pane;
31mod browser_mouse_device;
32mod browser_native_control_host;
33mod browser_platform_settings;
34mod browser_runtime_platform;
35mod browser_screens;
36mod browser_single_threaded_dispatcher_impl;
37mod browser_single_view_lifetime;
38mod browser_system_navigation_manager;
39mod browser_text_input_method;
40mod browser_top_level_impl;
41mod clipboard_impl;
42mod cursor;
43mod ferro_view;
44mod js_object_control_handle;
45mod key_interop;
46mod win_stubs;
47mod windowing_platform;
48
49pub use browser_activatable_lifetime::BrowserActivatableLifetime;
50pub use browser_app_builder::{BrowserAppBuilder, BrowserPlatformOptions, BrowserRenderer, BrowserRenderingMode};
51pub use browser_input_handler::BrowserInputHandler;
52pub use browser_insets_manager::BrowserInsetsManager;
53pub use browser_input_pane::BrowserInputPane;
54pub use browser_platform_settings::BrowserPlatformSettings;
55pub use browser_runtime_platform::{BrowserRuntimePlatform, BrowserRuntimePlatformServices};
56pub use browser_screens::{BrowserScreen, BrowserScreenKey, BrowserScreens};
57pub use browser_single_threaded_dispatcher_impl::BrowserSingleThreadedDispatcherImpl;
58pub use browser_single_view_lifetime::BrowserSingleViewLifetime;
59pub use browser_system_navigation_manager::BrowserSystemNavigationManagerImpl;
60pub use browser_text_input_method::BrowserTextInputMethod;
61pub use browser_top_level_impl::BrowserTopLevelImpl;
62pub use clipboard_impl::ClipboardImpl;
63pub use cursor::{CssCursor, CssCursorFactory};
64pub use ferro_view::FerroView;
65pub use js_object_control_handle::{JsObjectControlHandle, JsObjectPlatformHandle};
66pub use win_stubs::IconLoaderStub;
67pub use windowing_platform::BrowserWindowingPlatform;