#[macro_export]
macro_rules! navigate {
($router:expr, $route:expr, $param:expr) => {
{
$router.navigate($route, $param);
}
};
}
#[macro_export]
macro_rules! scroll_ {
([ $($child:expr),* $(,)? ]) => { $crate::scroll_!(; [ $($child),* ]) };
(on: $handler:expr $(; on: $more:expr)* $(; [ $($child:expr),* $(,)? ])?) => { $crate::scroll_!(; on: $handler $(; on: $more)* $(; [ $($child),* ])?) };
($( $prop:ident : $val:expr ),* $(; on: $handler:expr )* $(; [ $($child:expr),* $(,)? ])?) => {
{
let mut s = $crate::widgets::scroll::scroll();
$( s = s.$prop($val); )*
(s.build(), $( $crate::prelude::observe($handler), )* $( ::bevy::prelude::children![ $($child),* ] )?)
}
};
}
#[macro_export]
macro_rules! row_ {
([ $($child:expr),* $(,)? ]) => { $crate::row_!(; [ $($child),* ]) };
(on: $handler:expr $(; on: $more:expr)* $(; [ $($child:expr),* $(,)? ])?) => { $crate::row_!(; on: $handler $(; on: $more)* $(; [ $($child),* ])?) };
($( $prop:ident : $val:expr ),* $(; on: $handler:expr )* $(; [ $($child:expr),* $(,)? ])?) => {
{
let mut s = $crate::widgets::row::row();
$( s = s.$prop($val); )*
(s.build(), $( $crate::prelude::observe($handler), )* $( ::bevy::prelude::children![ $($child),* ] )?)
}
};
}
#[macro_export]
macro_rules! column_ {
([ $($child:expr),* $(,)? ]) => { $crate::column_!(; [ $($child),* ]) };
(on: $handler:expr $(; on: $more:expr)* $(; [ $($child:expr),* $(,)? ])?) => { $crate::column_!(; on: $handler $(; on: $more)* $(; [ $($child),* ])?) };
($( $prop:ident : $val:expr ),* $(; on: $handler:expr )* $(; [ $($child:expr),* $(,)? ])?) => {
{
let mut s = $crate::widgets::column::column();
$( s = s.$prop($val); )*
(s.build(), $( $crate::prelude::observe($handler), )* $( ::bevy::prelude::children![ $($child),* ] )?)
}
};
}
#[macro_export]
macro_rules! root_ {
([ $($child:expr),* $(,)? ]) => { $crate::root_!(; [ $($child),* ]) };
(on: $handler:expr $(; on: $more:expr)* $(; [ $($child:expr),* $(,)? ])?) => { $crate::root_!(; on: $handler $(; on: $more)* $(; [ $($child),* ])?) };
($( $prop:ident : $val:expr ),* $(; on: $handler:expr )* $(; [ $($child:expr),* $(,)? ])?) => {
{
let mut s = $crate::widgets::root::root();
$( s = s.$prop($val); )*
(s.build(), $( $crate::prelude::observe($handler), )* $( ::bevy::prelude::children![ $($child),* ] )?)
}
};
}
#[macro_export]
macro_rules! button_ {
($text:expr $(, $prop:ident : $val:expr )* $(; on: $handler:expr )* $(; [ $($child:expr),* $(,)? ])?) => {
{
let mut b = $crate::widgets::button::button($text);
$( b = b.$prop($val); )*
(b.build(), $( $crate::prelude::observe($handler), )* $( ::bevy::prelude::children![ $($child),* ] )?)
}
};
}
#[macro_export]
macro_rules! text_ {
(bind: $resource:ty => $formatter:expr $(, $prop:ident : $val:expr )*) => {
{
let mut t = $crate::widgets::text::text("");
$( t = t.$prop($val); )*
(
t.build(),
$crate::reactivity::ReactiveTextBinding::<$resource>::new($formatter),
)
}
};
($text:expr $(, $prop:ident : $val:expr )* $(; on: $handler:expr )*) => {
{
let mut t = $crate::widgets::text::text($text);
$( t = t.$prop($val); )*
(t.build(), $( $crate::prelude::observe($handler), )*)
}
};
}
#[macro_export]
macro_rules! checkbox_ {
(
model: $model_type:ty,
bind: $text_type:ty => $formatter:expr
$(, $prop:ident : $val:expr )* $(,)?
$( ; on: $handler:expr )*
) => {
{
let mut c = $crate::widgets::checkbox::checkbox("");
$( c = c.$prop($val); )*
(
c.build_reactive_both(
$crate::reactivity::CheckboxModel::<$model_type>::new(),
$crate::reactivity::ReactiveTextBinding::<$text_type>::new($formatter)
),
$( $crate::prelude::observe($handler), )*
)
}
};
(
model: $model_type:ty,
$text:expr
$(, $prop:ident : $val:expr )* $(,)?
$( ; on: $handler:expr )*
) => {
{
let mut c = $crate::widgets::checkbox::checkbox($text);
$( c = c.$prop($val); )*
(
c.build_reactive_model($crate::reactivity::CheckboxModel::<$model_type>::new()),
$( $crate::prelude::observe($handler), )*
)
}
};
(
bind: $text_type:ty => $formatter:expr
$(, $prop:ident : $val:expr )* $(,)?
$( ; on: $handler:expr )*
) => {
{
let mut c = $crate::widgets::checkbox::checkbox("");
$( c = c.$prop($val); )*
(
c.build_reactive_text($crate::reactivity::ReactiveTextBinding::<$text_type>::new($formatter)),
$( $crate::prelude::observe($handler), )*
)
}
};
(
$text:expr
$(, $prop:ident : $val:expr )* $(,)?
$( ; on: $handler:expr )* $( ; [ $($child:expr),* $(,)? ] )?
) => {
{
let mut c = $crate::widgets::checkbox::checkbox($text);
$( c = c.$prop($val); )*
(
c.build(),
$( $crate::prelude::observe($handler), )*
)
}
};
}
#[macro_export]
macro_rules! circular_ {
(
progress: $resource:ty => $formatter:expr
$(, $prop:ident : $val:expr )* $(,)?
$( ; on: $handler:expr )*
) => {
{
let mut c = $crate::widgets::circular::circular();
$( c = c.$prop($val); )*
(
c.build_reactive($crate::widgets::circular::ReactiveCircularProgress::<$resource>::new($formatter)),
$( $crate::prelude::observe($handler), )*
)
}
};
(
$( $prop:ident : $val:expr ),* $(,)?
// Events
$( ; on: $handler:expr )*
) => {
{
let mut c = $crate::widgets::circular::circular();
$( c = c.$prop($val); )*
(
c.build(),
$( $crate::prelude::observe($handler), )*
)
}
};
}
#[macro_export]
macro_rules! progress_bar_ {
(
$( $prop:ident : $val:expr ),* $(,)?
$( ; on: $handler:expr )*
) => {
{
let mut c = $crate::widgets::progress_bar::progress_bar();
$( c = c.$prop($val); )*
(
c.build(),
$( $crate::prelude::observe($handler), )*
)
}
};
}
#[macro_export]
macro_rules! dropdown_ {
($text:expr $(, $prop:ident : $val:expr )* $(; on: $handler:expr )* $(; [ $($child:expr),* $(,)? ])?) => {
{
let mut d = $crate::widgets::dropdown::dropdown($text);
$( d = d.$prop($val); )*
(d.build(), $( $crate::prelude::observe($handler), )* $( ::bevy::prelude::children![ $($child),* ] )?)
}
};
}
#[macro_export]
macro_rules! image_ {
($path:expr $(, $prop:ident : $val:expr )* $(; on: $handler:expr )*) => {
{
let mut i = $crate::widgets::image::image($path);
$( i = i.$prop($val); )*
(i.build(), $( $crate::prelude::observe($handler), )*)
}
};
}
#[macro_export]
macro_rules! link_ {
($path:expr $(, $prop:ident : $val:expr )* $(; on: $handler:expr )*) => {
{
let mut i = $crate::widgets::link::link($path);
$( i = i.$prop($val); )*
(i.build(), $( $crate::prelude::observe($handler), )*)
}
};
}
#[macro_export]
macro_rules! slider_ {
(min: $min:expr, max: $max:expr $(, $prop:ident : $val:expr )* $(; on: $handler:expr )*) => {
{
let mut i = $crate::widgets::slider::slider($min, $max);
$( i = i.$prop($val); )*
(i.build(), $( $crate::prelude::observe($handler), )*)
}
};
}
#[macro_export]
macro_rules! radio_ {
(
$text:expr
$(, $prop:ident : $val:expr )* $(,)?
$( ; on: $handler:expr )* $( ; [ $($child:expr),* $(,)? ] )?
) => {
{
let mut c = $crate::widgets::radio::radio($text);
$( c = c.$prop($val); )*
(
c.build(),
$( $crate::prelude::observe($handler), )*
)
}
};
}
#[macro_export]
macro_rules! radio_group_ {
( [ $($child:expr),* $(,)? ] ) => {
{
let s = $crate::widgets::radio::radio_group();
(s.build(), ::bevy::prelude::children![ $($child),* ])
}
};
( on: $handler:expr $( ; on: $more_handlers:expr )* $( ; [ $($child:expr),* $(,)? ] )? ) => {
{
let s = $crate::widgets::radio::radio_group();
(
s.build(),
$crate::prelude::observe($handler),
$( $crate::prelude::observe($more_handlers), )*
$( ::bevy::prelude::children![ $($child),* ] )?
)
}
};
(
$prop:ident : $val:expr $(, $rest_prop:ident : $rest_val:expr )* $(,)?
$( ; on: $handler:expr )*
$( ; [ $($child:expr),* $(,)? ] )?
) => {
{
let mut s = $crate::widgets::radio::radio_group();
s = s.$prop($val);
$( s = s.$rest_prop($rest_val); )*
(
s.build(),
$( $crate::prelude::observe($handler), )*
$( ::bevy::prelude::children![ $($child),* ] )?
)
}
};
}
#[macro_export]
macro_rules! text_input_ {
($text:expr $(, $prop:ident : $val:expr )* $(; on: $handler:expr )*) => {
{
let mut b = $crate::widgets::text_input::text_input($text);
$( b = b.$prop($val); )*
(
b.build(),
$( $crate::prelude::observe($handler), )*
)
}
};
}
#[macro_export]
macro_rules! select_ {
(
$placeholder:expr,
choices: $choices:expr
$(, $prop:ident : $val:expr )* $(,)?
$( ; on: $handler:expr )* ) => {
{
let mut i = $crate::widgets::select::select($placeholder, $choices);
$( i = i.$prop($val); )*
(
i.build(),
$( $crate::prelude::observe($handler), )*
)
}
};
(
$placeholder:expr,
choices: $choices:expr
; on: $handler:expr $( ; on: $more:expr )*
) => {
$crate::select_!($placeholder, choices: $choices ; on: $handler $( ; on: $more )*)
};
}
#[macro_export]
macro_rules! modal_ {
([ $($child:expr),* $(,)? ]) => {
$crate::modal_!(; [ $($child),* ])
};
(on: $handler:expr $(; on: $more:expr)* $(; [ $($child:expr),* $(,)? ])?) => {
$crate::modal_!(; on: $handler $(; on: $more)* $(; [ $($child),* ])?)
};
($( $prop:ident : $val:expr ),* $(; on: $handler:expr )* $(; [ $($child:expr),* $(,)? ])?) => {
{
let mut s = $crate::widgets::modal::modal();
$( s = s.$prop($val); )*
(s.build(), $( $crate::prelude::observe($handler), )* $( ::bevy::prelude::children![ $($child),* ] )?)
}
};
}