use termina::escape::csi::{
Csi, DecPrivateMode, DecPrivateModeCode, Keyboard, KittyKeyboardFlags, Mode, Window,
};
use termina::escape::osc::{ColorOrQuery, DynamicColorNumber, Osc, Selection};
pub const ENTER_ALTERNATE_SCREEN: Csi = Csi::Mode(Mode::SetDecPrivateMode(DecPrivateMode::Code(
DecPrivateModeCode::ClearAndEnableAlternateScreen,
)));
pub const EXIT_ALTERNATE_SCREEN: Csi = Csi::Mode(Mode::ResetDecPrivateMode(DecPrivateMode::Code(
DecPrivateModeCode::ClearAndEnableAlternateScreen,
)));
pub const ENABLE_KITTY_KEYBOARD: Csi = Csi::Keyboard(Keyboard::PushFlags(
KittyKeyboardFlags::from_bits_truncate(5),
));
pub const DISABLE_KITTY_KEYBOARD: Csi = Csi::Keyboard(Keyboard::PopFlags(1));
pub const ENABLE_MOUSE: Csi = Csi::Mode(Mode::SetDecPrivateMode(DecPrivateMode::Code(
DecPrivateModeCode::ButtonEventMouse,
)));
pub const ENABLE_SGR_MOUSE: Csi = Csi::Mode(Mode::SetDecPrivateMode(DecPrivateMode::Code(
DecPrivateModeCode::SGRMouse,
)));
pub const DISABLE_MOUSE: Csi = Csi::Mode(Mode::ResetDecPrivateMode(DecPrivateMode::Code(
DecPrivateModeCode::ButtonEventMouse,
)));
pub const DISABLE_SGR_MOUSE: Csi = Csi::Mode(Mode::ResetDecPrivateMode(DecPrivateMode::Code(
DecPrivateModeCode::SGRMouse,
)));
pub const ENABLE_BRACKETED_PASTE: Csi = Csi::Mode(Mode::SetDecPrivateMode(DecPrivateMode::Code(
DecPrivateModeCode::BracketedPaste,
)));
pub const DISABLE_BRACKETED_PASTE: Csi = Csi::Mode(Mode::ResetDecPrivateMode(
DecPrivateMode::Code(DecPrivateModeCode::BracketedPaste),
));
pub fn push_window_title() -> Csi {
Csi::Window(Box::new(Window::PushWindowTitle))
}
pub fn pop_window_title() -> Csi {
Csi::Window(Box::new(Window::PopWindowTitle))
}
pub fn set_window_title(title: &str) -> Osc<'_> {
Osc::SetWindowTitle(title)
}
pub fn set_clipboard(text: &str) -> Osc<'_> {
Osc::SetSelection(Selection::CLIPBOARD, text)
}
pub fn query_background_color() -> Osc<'static> {
Osc::ChangeDynamicColors(
DynamicColorNumber::TextBackgroundColor,
vec![ColorOrQuery::Query],
)
}