use crate::IntoElementMaybeSignal;
use default_struct_builder::DefaultBuilder;
#[cfg(not(feature = "ssr"))]
use leptos::prelude::*;
use std::marker::PhantomData;
#[derive(DefaultBuilder)]
pub struct UseCssVarOptions<El, M>
where
El: IntoElementMaybeSignal<web_sys::Element, M>,
{
pub(crate) target: El,
#[builder(into)]
pub(crate) initial_value: String,
pub(crate) observe: bool,
#[builder(skip)]
_marker: PhantomData<M>,
}
#[cfg(feature = "ssr")]
impl<M> Default for UseCssVarOptions<Option<web_sys::Element>, M>
where
Option<web_sys::Element>: IntoElementMaybeSignal<web_sys::Element, M>,
{
fn default() -> Self {
Self {
target: None,
initial_value: "".into(),
observe: false,
_marker: PhantomData,
}
}
}
#[cfg(not(feature = "ssr"))]
impl<M> Default for UseCssVarOptions<web_sys::Element, M>
where
web_sys::Element: IntoElementMaybeSignal<web_sys::Element, M>,
{
fn default() -> Self {
Self {
target: document().document_element().expect("No document element"),
initial_value: "".into(),
observe: false,
_marker: PhantomData,
}
}
}