melt_ui/utils/
component_ref.rs1use leptos::{create_rw_signal, RwSignal, SignalGetUntracked, SignalSet};
2
3pub struct ComponentRef<T: 'static>(RwSignal<Option<T>>);
4
5impl<T> Default for ComponentRef<T> {
6 fn default() -> Self {
7 Self(create_rw_signal(None))
8 }
9}
10
11impl<T> Clone for ComponentRef<T> {
12 fn clone(&self) -> Self {
13 *self
14 }
15}
16
17impl<T: 'static> Copy for ComponentRef<T> {}
18
19impl<T> ComponentRef<T> {
20 pub fn get_untracked(&self) -> Option<T>
21 where
22 T: Clone,
23 {
24 self.0.get_untracked()
25 }
26
27 pub fn load(&self, comp_ref: T) {
28 self.0.set(Some(comp_ref));
29 }
30}