use super::template::XAttributeTemplate;
use super::template::XDynamicAttribute;
use crate::signal::reactive_closure::reactive_closure_builder::Consumers;
use crate::string::XString;
pub enum XAttributeValue {
Null,
Static(XString),
Dynamic(XDynamicAttribute),
Generated {
template: XAttributeTemplate,
consumers: Consumers,
},
}
impl<S> From<S> for XAttributeValue
where
XString: From<S>,
{
fn from(value: S) -> Self {
Self::Static(value.into())
}
}
impl<S> From<Option<S>> for XAttributeValue
where
XString: From<S>,
{
fn from(value: Option<S>) -> Self {
match value {
Some(value) => Self::Static(value.into()),
None => Self::Null,
}
}
}