Skip to main content

tui/
test_picker.rs

1use crate::Component;
2use crate::components::{Event, ViewContext};
3use crate::line::Line;
4use crate::rendering::frame::Frame;
5use crate::rendering::render_context::Size;
6
7use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};
8
9pub async fn type_query<P: Component>(picker: &mut P, text: &str) {
10    for c in text.chars() {
11        let _ = picker.on_event(&Event::Key(KeyEvent::new(KeyCode::Char(c), KeyModifiers::NONE))).await;
12    }
13}
14
15pub fn rendered_lines_from(frame: &Frame) -> Vec<String> {
16    frame.lines().iter().map(Line::plain_text).collect()
17}
18
19pub fn rendered_lines_with_context(render: impl FnOnce(&ViewContext) -> Frame, size: impl Into<Size>) -> Vec<String> {
20    let context = ViewContext::new(size);
21    render(&context).lines().iter().map(Line::plain_text).collect()
22}
23
24pub fn rendered_raw_lines_with_context(render: impl FnOnce(&ViewContext) -> Frame, size: impl Into<Size>) -> Vec<Line> {
25    let context = ViewContext::new(size);
26    render(&context).into_lines()
27}