appcui 0.4.8

A feature-rich and cross-platform TUI/CUI framework for Rust, enabling modern terminal-based applications on Windows, Linux, and macOS. Includes built-in UI components like buttons, menus, list views, tree views, checkboxes, and more. Perfect for building fast and interactive CLI tools and text-based interfaces.
Documentation
use crate::prelude::*;
use crate::ui::textfield::selection::Selection;
use crate::ui::textfield::CharClass;

pub(super) const MAX_UNDO_DEPTH: usize = 200;

#[derive(Clone)]
pub(super) enum UndoOp {
    Insert {
        pos: usize,
        chars: Vec<Character>,
    },
    Delete {
        pos: usize,
        chars: Vec<Character>,
    },
    Replace {
        pos: usize,
        old_chars: Vec<Character>,
        new_chars: Vec<Character>,
    },
}

#[derive(Clone)]
pub(super) struct UndoEntry {
    pub op: UndoOp,
    pub cursor_before: usize,
    pub cursor_after: usize,
    pub selection_before: Selection,
    pub selection_after: Selection,
}

#[derive(Clone, PartialEq)]
pub(super) enum LastAction {
    None,
    AddChar(CharClass),
    Delete,
    Other,
}