ratatui_kit/components/adapter/
widget.rs1use crate::{Component, Props};
2use ratatui::widgets::Widget;
3
4pub struct WidgetAdapterProps<T>
5where
6 T: 'static,
7{
8 pub inner: T,
9}
10
11impl<T: 'static> Props for WidgetAdapterProps<T> {}
12
13pub struct WidgetAdapter<T>
14where
15 T: 'static,
16{
17 inner: T,
18}
19
20impl<T> Component for WidgetAdapter<T>
21where
22 T: 'static + Unpin + Clone + Widget,
29{
30 type Props<'a> = WidgetAdapterProps<T>;
31
32 fn new(props: &Self::Props<'_>) -> Self {
33 Self {
34 inner: props.inner.clone(),
35 }
36 }
37
38 fn update(
39 &mut self,
40 props: &mut Self::Props<'_>,
41 _hooks: crate::Hooks,
42 _updater: &mut crate::ComponentUpdater,
43 ) {
44 self.inner = props.inner.clone();
45 }
46
47 fn draw(&mut self, drawer: &mut crate::ComponentDrawer<'_, '_>) {
48 drawer.render_widget(self.inner.clone(), drawer.area);
50 }
51}