use crate::binding::interfaces::ICreatesObservableForProperty;
use crate::binding::observable_for_property::{INPCObservableForProperty, POCOObservableForProperty};
use ferroui_splat::{IModule, IMutableDependencyResolver, MutableDependencyResolverExt};
use std::rc::Rc;
#[derive(Debug, Default, Clone, Copy)]
pub struct ReactiveUIBindingModule;
impl IModule for ReactiveUIBindingModule {
fn configure(&self, resolver: &dyn IMutableDependencyResolver) {
register_observation_defaults(resolver);
}
}
pub fn register_observation_defaults(resolver: &dyn IMutableDependencyResolver) {
resolver.register_lazy_singleton::<dyn ICreatesObservableForProperty>(|| {
Some(Rc::new(INPCObservableForProperty::new()) as Rc<dyn ICreatesObservableForProperty>)
});
resolver.register_lazy_singleton::<dyn ICreatesObservableForProperty>(|| {
Some(Rc::new(POCOObservableForProperty::new()) as Rc<dyn ICreatesObservableForProperty>)
});
}