melt_ui/utils/
component_ref.rs

1use 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}