Skip to content

Commit

Permalink
Add aper-leptos
Browse files Browse the repository at this point in the history
  • Loading branch information
paulgb committed Oct 5, 2024
1 parent 9783bc8 commit 1da27b2
Show file tree
Hide file tree
Showing 9 changed files with 1,186 additions and 219 deletions.
999 changes: 935 additions & 64 deletions Cargo.lock

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ exclude = [
]

members = [
"aper",
"aper/aper-derive*",
"aper-websocket-client",
"aper-leptos",
"aper-serve",
"aper-stateroom",
"site/doctests", "aper-yew",
"aper-websocket-client",
"aper-yew",
"aper",
"aper/aper-derive*",
"site/doctests",
]
12 changes: 12 additions & 0 deletions aper-leptos/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[package]
name = "aper-leptos"
version = "0.5.0"
edition = "2021"

[dependencies]
aper = {path = "../aper"}
aper-websocket-client = { version="0.5.0", path="../aper-websocket-client" }
leptos = { version = "0.6.14", features = ["csr"] }
serde = "1.0.210"
tracing-subscriber = "0.3.18"
tracing-web = "0.1.3"
File renamed without changes.
26 changes: 26 additions & 0 deletions aper-leptos/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
use aper::{data_structures::Atom, AperSync};
use leptos::{create_signal, SignalGet, SignalSet};
use serde::{de::DeserializeOwned, Serialize};

pub mod init_tracing;

pub trait Watch<T> {
fn watch(&self) -> Box<dyn Fn() -> T>;
}

impl<T> Watch<T> for Atom<T>
where
T: Serialize + DeserializeOwned + Default + Clone + Send + Sync + 'static,
{
fn watch(&self) -> Box<dyn Fn() -> T> {
let (signal, set_signal) = create_signal(self.get());

let self_clone = self.clone();
self.listen(move || {
set_signal.set(self_clone.get());
true
});

Box::new(move || signal.get())
}
}
Loading

0 comments on commit 1da27b2

Please sign in to comment.