Skip to main content

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// ANCHOR: Config
10/// Конфигурация компонента cmp_leptos
11pub struct Config<TMsg, TInputStore, TOutputStore>
12where
13    TMsg: MsgDataBound,
14    TInputStore: StoreBound,
15    TOutputStore: StoreBound,
16{
17    /// Корневой компонент для монтирования
18    ///
19    /// **Примеры**
20    ///
21    /// ```rust
22    /// body_component: || view! { <app::App/> }.into_any()
23    /// ```
24    pub body_component: fn() -> AnyView,
25
26    /// Значения по-умолчанию глобального хранилища входных данных
27    pub input_store: TInputStore,
28
29    /// Значения по-умолчанию глобального хранилища выходных данных
30    pub output_store: TOutputStore,
31
32    /// Функция обрабатывает входящие сообщения и сохраняет в хранилище Store
33    pub fn_input: fn(&Message<TMsg>, &Store<TInputStore>),
34
35    /// Функция проверяет изменения в хранилищe Store и отправляет исходящие сообщения
36    pub fn_output: fn(Store<TOutputStore>, mpsc::Sender<TMsg>),
37}
38// ANCHOR: Config