2024-06-13 16:00:14 +08:00
|
|
|
use leptos::prelude::*;
|
2024-03-07 15:17:26 +08:00
|
|
|
use std::ops::Deref;
|
|
|
|
|
|
|
|
pub struct OptionalMaybeSignal<T: 'static>(MaybeSignal<Option<T>>);
|
|
|
|
|
|
|
|
impl<T> Default for OptionalMaybeSignal<T> {
|
|
|
|
fn default() -> Self {
|
|
|
|
Self(MaybeSignal::Static(None))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<T: Copy> Copy for OptionalMaybeSignal<T> {}
|
|
|
|
|
|
|
|
impl<T: Clone> Clone for OptionalMaybeSignal<T> {
|
|
|
|
fn clone(&self) -> Self {
|
|
|
|
Self(self.0.clone())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<T> Deref for OptionalMaybeSignal<T> {
|
|
|
|
type Target = MaybeSignal<Option<T>>;
|
|
|
|
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
|
|
&self.0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<T> From<T> for OptionalMaybeSignal<T> {
|
|
|
|
fn from(value: T) -> Self {
|
|
|
|
Self(MaybeSignal::Static(Some(value)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<T> From<Option<T>> for OptionalMaybeSignal<T> {
|
|
|
|
fn from(value: Option<T>) -> Self {
|
|
|
|
Self(MaybeSignal::Static(value))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-13 16:00:14 +08:00
|
|
|
impl<T: Send + Sync> From<ReadSignal<Option<T>>> for OptionalMaybeSignal<T> {
|
2024-03-07 15:17:26 +08:00
|
|
|
fn from(value: ReadSignal<Option<T>>) -> Self {
|
|
|
|
Self(MaybeSignal::Dynamic(value.into()))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-13 16:00:14 +08:00
|
|
|
impl<T: Send + Sync> From<RwSignal<Option<T>>> for OptionalMaybeSignal<T> {
|
2024-03-07 15:17:26 +08:00
|
|
|
fn from(value: RwSignal<Option<T>>) -> Self {
|
|
|
|
Self(MaybeSignal::Dynamic(value.into()))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-13 16:00:14 +08:00
|
|
|
impl<T: Send + Sync> From<Memo<Option<T>>> for OptionalMaybeSignal<T> {
|
2024-03-07 15:17:26 +08:00
|
|
|
fn from(value: Memo<Option<T>>) -> Self {
|
|
|
|
Self(MaybeSignal::Dynamic(value.into()))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<T> From<Signal<Option<T>>> for OptionalMaybeSignal<T> {
|
|
|
|
fn from(value: Signal<Option<T>>) -> Self {
|
|
|
|
Self(MaybeSignal::Dynamic(value))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<T> From<MaybeSignal<Option<T>>> for OptionalMaybeSignal<T> {
|
|
|
|
fn from(value: MaybeSignal<Option<T>>) -> Self {
|
|
|
|
Self(value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-13 16:00:14 +08:00
|
|
|
// TODO
|
|
|
|
// #[cfg(test)]
|
|
|
|
// mod test {
|
|
|
|
// use super::OptionalMaybeSignal;
|
|
|
|
// use leptos::{create_runtime, MaybeSignal};
|
2024-03-07 15:17:26 +08:00
|
|
|
|
2024-06-13 16:00:14 +08:00
|
|
|
// #[test]
|
|
|
|
// fn into() {
|
|
|
|
// let runtime = create_runtime();
|
2024-03-07 15:17:26 +08:00
|
|
|
|
2024-06-13 16:00:14 +08:00
|
|
|
// let _: MaybeSignal<i32> = 12.into();
|
|
|
|
// let _: OptionalMaybeSignal<i32> = Some(12).into();
|
|
|
|
// let _: OptionalMaybeSignal<i32> = MaybeSignal::Static(Some(12)).into();
|
2024-03-07 15:17:26 +08:00
|
|
|
|
2024-06-13 16:00:14 +08:00
|
|
|
// runtime.dispose();
|
|
|
|
// }
|
|
|
|
// }
|