use iris::prelude::*; use std::time::Duration; pub(crate) fn build(rsc: &mut Rsc, ui_state: &mut impl HasRoot) where Rsc::State: FocusHost, { let rect = rect(PaintId::RED).add(rsc); rect.label("Toggle color") .task_on(CursorSense::click(), async move |mut ctx| { iris::task::sleep(Duration::from_secs(1)).await; ctx.update(move |_, rsc| { let rect = rect(rsc); if rect.is_paint(&PaintId::RED) { rect.set_paint(PaintId::BLUE); } else { rect.set_paint(PaintId::RED); } }); }) .set_root(rsc, ui_state); }