Documentation
use super::toast::{ToastBuild, ToastPosition};
use js_sys::{wasm_bindgen::JsValue, Array};
use leptos::web_sys::Element;

pub fn case(props: &ToastBuild, toaster: &Element, toast: &Element) -> String {
    let add_class_to_toast = || {
        let class_split = props.class.split_whitespace();
        let js_array = js_sys::Array::new();
        for class in class_split {
            let js_value = JsValue::from_str(class);
            js_array.push(&js_value);
        }
        toast.class_list().add(&js_array).unwrap();
    };
    let mut class_output = String::new();
    match props.position {
        ToastPosition::TopStart => {
            class_output =
                "transition: 2s ease-in-out; transform: translateY(-100%); opacity:0;".to_string();
            toaster.set_class_name(
                "top-0 left-0 fixed z-50 flex flex-col-reverse gap-4 justify-start transition",
            );
            toast.set_class_name("animate-slideInTop mx-auto rounded-br-lg");
            add_class_to_toast();
        }
        ToastPosition::TopMid => {
            class_output =
                "transition: 2s ease-in-out; transform: translateY(-100%); opacity:0;".to_string();
            toaster.set_class_name(
                "top-0 inset-x-0 fixed z-50 flex flex-col-reverse gap-4 justify-center transition",
            );
            toast.set_class_name("animate-slideInTop mx-auto rounded-b-lg");
            add_class_to_toast();
        }
        ToastPosition::TopEnd => {
            class_output =
                "transition: 2s ease-in-out; transform: translateY(-100%); opacity:0;".to_string();
            toaster.set_class_name(
                "top-0 right-0 fixed z-50 flex flex-col-reverse gap-4 justify-end transition",
            );
            toast.set_class_name("animate-slideInTop mx-auto rounded-bl-lg");
            add_class_to_toast();
        }
        ToastPosition::BottomStart => {
            class_output =
                "transition: 2s ease-in-out; transform: translateY(100%); opacity:0;".to_string();
            toaster.set_class_name(
                "bottom-0 left-0 fixed z-50 flex flex-col-reverse gap-4 justify-start transition",
            );
            toast.set_class_name("animate-toastin mx-auto rounded-l-lg");
            add_class_to_toast();
        }
        ToastPosition::BottomMid => {
            class_output =
                "transition: 2s ease-in-out; transform: translateY(100%); opacity:0;".to_string();
            toaster.set_class_name(
                "bottom-0 inset-x-0 fixed z-50 flex flex-col-reverse gap-4 justify-center transition",
            );
            toast.set_class_name("animate-toastin mx-auto rounded-l-lg");
            add_class_to_toast();
        }
        ToastPosition::BottomEnd => {
            class_output =
                "transition: 2s ease-in-out; transform: translateY(100%); opacity:0;".to_string();
            toaster.set_class_name(
                "bottom-0 right-0 fixed z-50 flex flex-col-reverse gap-4 justify-end transition",
            );
            toast.set_class_name("animate-toastin mx-auto rounded-l-lg");
            add_class_to_toast();
        }
    };
    class_output
}