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