rsiot/components/cmp_leptos/component/config.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
use leptos::prelude::*;
use reactive_stores::Store;
use tokio::sync::mpsc;
use crate::message::{Message, MsgDataBound};
use super::StoreBound;
/// Конфигурация компонента cmp_leptos
pub struct Config<TMsg, TView, TIntoView, TInputStore, TOutputStore>
where
TMsg: MsgDataBound,
TView: Fn() -> TIntoView,
TIntoView: IntoView,
TInputStore: StoreBound,
TOutputStore: StoreBound,
{
/// Корневой компонент для монтирования
///
/// **Примеры**
///
/// ```rust
/// body_component: || view! { <App/> }
/// ```
pub body_component: TView,
/// Значения по-умолчанию глобального хранилища входных данных
pub input_store: TInputStore,
/// Значения по-умолчанию глобального хранилища выходных данных
pub output_store: TOutputStore,
/// Функция обрабатывает входящие сообщения и сохраняет в хранилище Store
pub fn_input: fn(&Message<TMsg>, &Store<TInputStore>),
/// Функция проверяет изменения в хранилищe Store и отправляет исходящие сообщения
pub fn_output: fn(Store<TOutputStore>, mpsc::Sender<TMsg>),
}