summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-23 02:33:07 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-23 02:33:07 +0200
commitc7ef9d0da705d8f27011fe41d2103c73aae42d2d (patch)
treebbd2baf6ac62426d278c8babef18e1cce49b3872 /src/lib.rs
parent871eb414303804233ed50d43bb9b98a7037cbd4c (diff)
downloadiced-c7ef9d0da705d8f27011fe41d2103c73aae42d2d.tar.gz
iced-c7ef9d0da705d8f27011fe41d2103c73aae42d2d.tar.bz2
iced-c7ef9d0da705d8f27011fe41d2103c73aae42d2d.zip
Connect `iced_web` with `iced` properly
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs36
1 files changed, 26 insertions, 10 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 46574285..1bcdada2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,13 +1,8 @@
-pub use iced_wgpu::{Primitive, Renderer};
-pub use iced_winit::{
- button, slider, text, winit, Align, Background, Checkbox, Color, Image,
- Justify, Length, Radio, Slider, Text,
-};
+#[cfg_attr(target_arch = "wasm32", path = "web.rs")]
+#[cfg_attr(not(target_arch = "wasm32"), path = "winit.rs")]
+mod platform;
-pub type Element<'a, Message> = iced_winit::Element<'a, Message, Renderer>;
-pub type Row<'a, Message> = iced_winit::Row<'a, Message, Renderer>;
-pub type Column<'a, Message> = iced_winit::Column<'a, Message, Renderer>;
-pub type Button<'a, Message> = iced_winit::Button<'a, Message, Renderer>;
+pub use platform::*;
pub trait Application {
type Message;
@@ -20,12 +15,17 @@ pub trait Application {
where
Self: 'static + Sized,
{
- iced_winit::Application::run(Instance(self))
+ #[cfg(not(target_arch = "wasm32"))]
+ iced_winit::Application::run(Instance(self));
+
+ #[cfg(target_arch = "wasm32")]
+ iced_web::Application::run(Instance(self));
}
}
struct Instance<A: Application>(A);
+#[cfg(not(target_arch = "wasm32"))]
impl<A> iced_winit::Application for Instance<A>
where
A: Application,
@@ -41,3 +41,19 @@ where
self.0.view()
}
}
+
+#[cfg(target_arch = "wasm32")]
+impl<A> iced_web::Application for Instance<A>
+where
+ A: Application,
+{
+ type Message = A::Message;
+
+ fn update(&mut self, message: Self::Message) {
+ self.0.update(message);
+ }
+
+ fn view(&mut self) -> Element<Self::Message> {
+ self.0.view()
+ }
+}