ratatui_kit/components/adapter/
widget.rs

1use crate::Component;
2use ratatui::widgets::Widget;
3use ratatui_kit_macros::Props;
4
5#[derive(Props)]
6pub struct WidgetAdapterProps<T>
7where
8    T: Widget + Sync + Send + 'static,
9{
10    pub inner: T,
11}
12
13pub struct WidgetAdapter<T>
14where
15    T: Widget + Sync + Send + 'static,
16{
17    inner: T,
18}
19
20impl<T> Component for WidgetAdapter<T>
21where
22    T: Widget + Sync + Send + 'static + Unpin + Clone,
23{
24    type Props<'a> = WidgetAdapterProps<T>;
25
26    fn new(props: &Self::Props<'_>) -> Self {
27        Self {
28            inner: props.inner.clone(),
29        }
30    }
31
32    fn update(
33        &mut self,
34        props: &mut Self::Props<'_>,
35        _hooks: crate::Hooks,
36        _updater: &mut crate::ComponentUpdater,
37    ) {
38        self.inner = props.inner.clone();
39    }
40
41    fn draw(&mut self, drawer: &mut crate::ComponentDrawer<'_, '_>) {
42        drawer.render_widget(self.inner.clone(), drawer.area);
43    }
44}