use leptos::{html::ElementDescriptor, *};
use std::{ops::Deref, time::Duration};
use thaw_utils::{add_event_listener, use_next_frame, EventListenerHandle};
/// # CSS Transition
///
/// Reference to https://vuejs.org/guide/built-ins/transition.html
#[component]
pub fn CSSTransition(
node_ref: NodeRef,
#[prop(into)] show: MaybeSignal,
#[prop(into)] name: MaybeSignal,
#[prop(optional)] appear: bool,
#[prop(optional, into)] on_before_enter: Option>,
#[prop(optional, into)] on_enter: Option>,
#[prop(optional, into)] on_after_enter: Option>,
#[prop(optional, into)] on_before_leave: Option>,
#[prop(optional, into)] on_leave: Option>,
#[prop(optional, into)] on_after_leave: Option>,
children: CF,
) -> impl IntoView
where
T: ElementDescriptor + Clone + 'static,
CF: FnOnce(ReadSignal