ratatui_kit/components/adapter/
widget.rs1use 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}