use crate::{Component, Props};
use ratatui::widgets::Widget;
pub struct WidgetAdapterProps<T>
where
T: 'static,
{
pub inner: T,
}
impl<T: 'static> Props for WidgetAdapterProps<T> {}
pub struct WidgetAdapter<T>
where
T: 'static,
{
inner: T,
}
impl<T> Component for WidgetAdapter<T>
where
T: 'static + Unpin + Clone,
for<'a> &'a T: Widget,
{
type Props<'a> = WidgetAdapterProps<T>;
fn new(props: &Self::Props<'_>) -> Self {
Self {
inner: props.inner.clone(),
}
}
fn update(
&mut self,
props: &mut Self::Props<'_>,
_hooks: crate::Hooks,
_updater: &mut crate::ComponentUpdater,
) {
self.inner = props.inner.clone();
}
fn draw(&mut self, drawer: &mut crate::ComponentDrawer<'_, '_>) {
drawer.render_widget(&self.inner, drawer.area);
}
}