fumble 0.6.1

an oxidized implementation of the original clumsy tool, designed to simulate adverse network conditions on Windows systems.
use ratatui::prelude::{Color, Modifier, Style};
use tui_textarea::TextArea;

pub trait TextAreaExt {
    fn set_text(&mut self, text: &str);
    fn set_cursor_visibility(&mut self, active: bool);
    fn set_dim_placeholder(&mut self, placeholder: impl Into<String>);
}

impl<'a> TextAreaExt for TextArea<'a> {
    fn set_text(&mut self, text: &str) {
        self.set_yank_text(text);
        self.select_all();
        self.paste();
    }

    fn set_cursor_visibility(&mut self, active: bool) {
        self.set_cursor_style(if active {
            Style::default().add_modifier(Modifier::REVERSED)
        } else {
            Style::default().bg(Color::Black)
        });
    }

    fn set_dim_placeholder(&mut self, placeholder: impl Into<String>) {
        self.set_placeholder_text(placeholder);
        self.set_placeholder_style(Style::new().add_modifier(Modifier::DIM));
    }
}