1#![deny(unsafe_code)]
4
5#[cfg(test)]
6use cranpose_core::{location_key, Composition, MemoryApplier};
7
8pub mod background;
9pub mod camera;
10pub mod device_info;
11pub mod file_picker;
12pub mod haptics;
13pub mod http;
14pub mod image_picker;
15pub mod network_status;
16pub mod notifier;
17#[cfg(not(target_arch = "wasm32"))]
18pub mod peer;
19pub mod share_sheet;
20pub mod theme;
21pub mod uri_handler;
22pub mod writable_folder;
23
24pub use background::{
25 background_activity, clear_platform_background_activity, set_background_active,
26 set_platform_background_activity, BackgroundActivity, BackgroundActivityRef,
27};
28pub use camera::{
29 camera, clear_platform_camera, set_platform_camera, Camera, CameraError, CameraFrame, CameraRef,
30};
31pub use device_info::{
32 clear_platform_device_info, device_info, set_platform_device_info, DeviceInfo, DeviceInfoRef,
33};
34pub use file_picker::{
35 clear_platform_file_picker, default_file_picker, local_file_picker, set_platform_file_picker,
36 FileFilter, FilePicker, FilePickerError, FilePickerOptions, FilePickerRef, FolderStream,
37 FolderStreamRef, PickedEntry, PickedEntryRef, PickedKind, PickerFuture, ProvideFilePicker,
38 ResumedPick,
39};
40pub use haptics::{
41 clear_platform_haptics, default_haptics, local_haptics, set_platform_haptics, HapticFeedback,
42 Haptics, HapticsRef, ProvideHaptics,
43};
44pub use http::{
45 default_http_client, local_http_client, map_ordered_concurrent, HttpClient, HttpClientRef,
46 HttpError, HttpFuture,
47};
48pub use image_picker::{
49 clear_platform_image_picker, default_image_picker, local_image_picker,
50 set_platform_image_picker, ImagePicker, ImagePickerError, ImagePickerRef, ImageSource,
51 ProvideImagePicker, IMAGE_EXTENSIONS,
52};
53pub use network_status::{
54 clear_platform_network_monitor, network_monitor, network_status, set_platform_network_monitor,
55 NetworkMonitor, NetworkMonitorRef, NetworkStatus,
56};
57pub use notifier::{
58 clear_platform_notifier, default_notifier, local_notifier, push_notification_deeplink,
59 set_platform_notifier, take_notification_deeplink, Notifier, NotifierRef, NotifyRequest,
60 ProvideNotifier,
61};
62#[cfg(not(target_arch = "wasm32"))]
63pub use peer::{
64 content_length, fetch_range, fetch_to_writer, ByteSource, BytesSource, FetchResult, PeerError,
65 PeerServer, SourceResolver,
66};
67pub use share_sheet::{
68 clear_platform_share_sheet, default_share_sheet, local_share_sheet, set_platform_share_sheet,
69 ProvideShareSheet, ShareContent, ShareError, ShareSheet, ShareSheetRef,
70};
71pub use theme::{
72 default_system_theme, isSystemInDarkTheme, local_system_theme, ProvideSystemTheme, SystemTheme,
73};
74pub use uri_handler::{
75 clear_platform_uri_handler, default_uri_handler, local_uri_handler, set_platform_uri_handler,
76 ProvideUriHandler, UriHandler, UriHandlerError, UriHandlerRef,
77};
78pub use writable_folder::{
79 clear_platform_writable_folder_picker, open_writable_folder, pick_writable_folder,
80 set_platform_writable_folder_picker, set_writable_folder_store_factory,
81 take_resumed_writable_folder, FolderError, WritableFolderPicker, WritableFolderPickerRef,
82 WritableFolderStore, WritableFolderStoreRef,
83};
84
85#[cfg(test)]
87pub(crate) type TestComposition = Composition<MemoryApplier>;
88
89#[cfg(test)]
91pub(crate) fn run_test_composition(build: impl FnMut()) -> TestComposition {
92 let mut composition = Composition::new(MemoryApplier::new());
93 composition
94 .render(location_key(file!(), line!(), column!()), build)
95 .expect("initial render succeeds");
96 composition
97}