sequoia-view 0.1.0

Sequoia GUI framework — view tree and runtime
Documentation
#[cfg(test)]
mod tests {
    use sequoia_reactive::Signal;

    use crate::live::SignalLiveExt;
    use crate::view::View;
    use crate::views::{Column, Row, Text};

    #[derive(Clone)]
    struct Counter {
        value: Signal<i32>,
    }

    impl View for Counter {
        fn body(&self) -> impl View + 'static {
            let label = self.value.clone();
            let inc = self.value.clone();
            Row::new()
                .child(Text::with(move || label.get().to_string()))
                .child(crate::views::Unit)
                .child(crate::live_view::LiveOpacity::new(
                    crate::views::Unit,
                    inc.map_live(|v| *v as f32),
                ))
        }
    }

    #[test]
    fn counter_component_composes() {
        let c = Counter {
            value: Signal::new(0),
        };

        let _ = c.body();
        c.value.set(3);
        assert_eq!(c.value.get_untracked(), 3);
        let _ = Column::new().child(c);
    }
}