use super::draggable_card::CardTransform;
use leptos::prelude::*;
use std::collections::HashMap;
use std::sync::LazyLock;
pub static CARD_TRANSFORMS: LazyLock<std::sync::RwLock<HashMap<String, CardTransform>>> =
LazyLock::new(|| std::sync::RwLock::new(HashMap::new()));
pub fn register_card_transform(id: &str, transform: CardTransform) {
if let Ok(mut transforms) = CARD_TRANSFORMS.write() {
transforms.insert(id.to_string(), transform);
}
}
pub fn update_card_transform(id: &str, transform: CardTransform) {
register_card_transform(id, transform); }
pub fn get_card_transform(id: &str) -> Option<CardTransform> {
CARD_TRANSFORMS.read().ok()?.get(id).copied()
}
pub fn unregister_card_transform(id: &str) {
if let Ok(mut transforms) = CARD_TRANSFORMS.write() {
transforms.remove(id);
}
}
pub fn get_card_transform_signal(id: String) -> Signal<Option<CardTransform>> {
let value = get_card_transform(&id);
Signal::stored(value)
}