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