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,
23 for<'a> &'a T: Widget,
26{
27 type Props<'a> = WidgetAdapterProps<T>;
28
29 fn new(props: &Self::Props<'_>) -> Self {
30 Self {
31 inner: props.inner.clone(),
32 }
33 }
34
35 fn update(
36 &mut self,
37 props: &mut Self::Props<'_>,
38 _hooks: crate::Hooks,
39 _updater: &mut crate::ComponentUpdater,
40 ) {
41 self.inner = props.inner.clone();
42 }
43
44 fn draw(&mut self, drawer: &mut crate::ComponentDrawer<'_, '_>) {
45 drawer.render_widget(&self.inner, drawer.area);
48 }
49}