1#![deny(unsafe_code)]
4
5#[cfg(test)]
6use cranpose_core::{location_key, Composition, MemoryApplier};
7
8pub mod file_picker;
9pub mod http;
10pub mod theme;
11pub mod uri_handler;
12pub mod writable_folder;
13
14pub use file_picker::{
15 clear_platform_file_picker, default_file_picker, local_file_picker, set_platform_file_picker,
16 FileFilter, FilePicker, FilePickerError, FilePickerOptions, FilePickerRef, FolderStream,
17 FolderStreamRef, PickedEntry, PickedEntryRef, PickedKind, PickerFuture, ProvideFilePicker,
18};
19pub use http::{
20 default_http_client, local_http_client, map_ordered_concurrent, HttpClient, HttpClientRef,
21 HttpError, HttpFuture,
22};
23pub use theme::{
24 default_system_theme, isSystemInDarkTheme, local_system_theme, ProvideSystemTheme, SystemTheme,
25};
26pub use uri_handler::{
27 default_uri_handler, local_uri_handler, ProvideUriHandler, UriHandler, UriHandlerError,
28 UriHandlerRef,
29};
30pub use writable_folder::{
31 clear_platform_writable_folder_picker, open_writable_folder, pick_writable_folder,
32 set_platform_writable_folder_picker, set_writable_folder_store_factory, FolderError,
33 WritableFolderPicker, WritableFolderPickerRef, WritableFolderStore, WritableFolderStoreRef,
34};
35
36#[cfg(test)]
38pub(crate) type TestComposition = Composition<MemoryApplier>;
39
40#[cfg(test)]
42pub(crate) fn run_test_composition(build: impl FnMut()) -> TestComposition {
43 let mut composition = Composition::new(MemoryApplier::new());
44 composition
45 .render(location_key(file!(), line!(), column!()), build)
46 .expect("initial render succeeds");
47 composition
48}