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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
pub mod application;
#[macro_use]
pub mod messenger;
#[macro_use]
pub mod props;
pub mod renderer;
pub mod state;
#[macro_use]
pub mod widget;
pub mod animator;
pub mod data_binding;
pub mod interactive;
pub mod layout;
pub mod signals;
#[cfg(feature = "scalar64")]
pub type Scalar = f64;
#[cfg(not(feature = "scalar64"))]
pub type Scalar = f32;
#[cfg(feature = "integer64")]
pub type Integer = i64;
#[cfg(feature = "integer64")]
pub type UnsignedInteger = u64;
#[cfg(not(feature = "integer64"))]
pub type Integer = i32;
#[cfg(not(feature = "integer64"))]
pub type UnsignedInteger = u32;
pub use raui_derive::*;
use serde::{de::DeserializeOwned, Serialize};
#[doc(inline)]
pub use serde_yaml::{Number as PrefabNumber, Value as PrefabValue};
#[derive(Debug, Clone)]
pub enum PrefabError {
CouldNotSerialize(String),
CouldNotDeserialize(String),
}
pub trait Prefab: Serialize + DeserializeOwned {
fn from_prefab(data: PrefabValue) -> Result<Self, PrefabError> {
match serde_yaml::from_value(data) {
Ok(result) => Ok(result),
Err(error) => Err(PrefabError::CouldNotDeserialize(error.to_string())),
}
}
fn to_prefab(&self) -> Result<PrefabValue, PrefabError> {
match serde_yaml::to_value(self) {
Ok(result) => Ok(result),
Err(error) => Err(PrefabError::CouldNotSerialize(error.to_string())),
}
}
}
#[doc(hidden)]
pub mod prelude {
pub use crate::{
animator::*,
application::*,
data_binding::*,
implement_message_data, implement_props_data,
interactive::default_interactions_engine::*,
interactive::*,
layout::default_layout_engine::*,
layout::*,
make_widget,
messenger::*,
post_hooks, pre_hooks,
props::*,
renderer::*,
signals::*,
state::*,
unpack_named_slots, widget,
widget::*,
widget::{
component::*,
component::{
containers::{
anchor_box::*, content_box::*, context_box::*, flex_box::*, grid_box::*,
hidden_box::*, horizontal_box::*, portal_box::*, scroll_box::*, size_box::*,
switch_box::*, tooltip_box::*, variant_box::*, vertical_box::*, wrap_box::*,
},
image_box::*,
interactive::*,
interactive::{button::*, input_field::*, navigation::*, scroll_view::*},
space_box::*,
text_box::*,
},
context::*,
node::*,
unit::*,
unit::{area::*, content::*, flex::*, grid::*, image::*, size::*, text::*},
utils::*,
},
Integer, MessageData, Prefab, PrefabError, PropsData, Scalar,
};
}