mod children;
mod lifecycle;
mod properties;
mod scope;
use super::Html;
pub use children::*;
pub use properties::*;
pub(crate) use scope::Scoped;
pub use scope::{AnyScope, Scope, SendAsMessage};
pub type ShouldRender = bool;
pub type ComponentLink<COMP> = Scope<COMP>;
pub trait Component: Sized + 'static {
type Message: 'static;
type Properties: Properties;
fn create(props: Self::Properties, link: ComponentLink<Self>) -> Self;
fn update(&mut self, msg: Self::Message) -> ShouldRender;
fn change(&mut self, _props: Self::Properties) -> ShouldRender;
fn view(&self) -> Html;
fn rendered(&mut self, _first_render: bool) {}
fn destroy(&mut self) {}
}