ratatui_toolkit/primitives/tree_view/tree_view_ref/methods/
render_fn.rs

1//! TreeViewRef::render_fn method.
2
3use ratatui::text::Line;
4
5use crate::primitives::tree_view::node_state::NodeState;
6use crate::primitives::tree_view::tree_view_ref::TreeViewRef;
7
8impl<'a, 'b, T> TreeViewRef<'a, 'b, T> {
9    /// Sets the render function for nodes.
10    ///
11    /// # Arguments
12    ///
13    /// * `f` - A function that takes node data and state, returns a Line.
14    ///
15    /// # Returns
16    ///
17    /// Self for method chaining.
18    ///
19    /// # Example
20    ///
21    /// ```rust
22    /// use ratatui::text::Line;
23    /// use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef};
24    ///
25    /// let nodes = vec![TreeNode::new("Item")];
26    /// let tree = TreeViewRef::new(&nodes)
27    ///     .render_fn(|data, state| {
28    ///         if state.is_selected {
29    ///             Line::from(format!("> {}", data))
30    ///         } else {
31    ///             Line::from(*data)
32    ///         }
33    ///     });
34    /// ```
35    pub fn render_fn<F>(mut self, f: F) -> Self
36    where
37        F: Fn(&T, &NodeState) -> Line<'a> + 'a,
38    {
39        self.render_fn = Box::new(f);
40        self
41    }
42}