use crate::{component::Render, MessageSender, Shared};
use wasm_bindgen::prelude::JsValue;
use web_sys::Node;
pub(crate) trait DOMPatch
where
Self: Sized,
{
type RenderContext: Render;
type Node;
fn render_walk(
&mut self,
parent: &Self::Node,
next: Option<&Self::Node>,
render_ctx: Shared<Self::RenderContext>,
rx_sender: MessageSender,
) -> Result<(), JsValue>;
fn patch(
&mut self,
old: Option<&mut Self>,
parent: &Self::Node,
next: Option<&Self::Node>,
render_ctx: Shared<Self::RenderContext>,
rx_sender: MessageSender,
) -> Result<(), JsValue>;
fn reorder(&self, parent: &Self::Node, next: Option<&Self::Node>) -> Result<(), JsValue>;
fn remove(&self, parent: &Self::Node) -> Result<(), JsValue>;
fn node(&self) -> Option<&Node>;
}