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>),
}