#![allow(non_snake_case)]
use crate::composable;
use crate::layout::policies::FlexMeasurePolicy;
use crate::modifier::Modifier;
use crate::widgets::Layout;
use cranpose_core::NodeId;
use cranpose_ui_layout::{HorizontalAlignment, LinearArrangement};
#[composable]
pub fn Button<F, G>(modifier: Modifier, on_click: F, content: G) -> NodeId
where
F: FnMut() + 'static,
G: FnMut() + 'static,
{
use std::cell::RefCell;
use std::rc::Rc;
let on_click_rc: Rc<RefCell<dyn FnMut()>> = Rc::new(RefCell::new(on_click));
let clickable_modifier = modifier.clickable(move |_point| {
(on_click_rc.borrow_mut())();
});
Layout(
clickable_modifier,
FlexMeasurePolicy::column(
LinearArrangement::Center,
HorizontalAlignment::CenterHorizontally,
),
content,
)
}