use crate::core::command::Command;
use crate::core::key::Key;
use crate::core::state::{Config, TabId};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct RequestId(pub u64);
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum LoadEvent {
Started,
Committed,
Finished,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum JsPurpose {
FireAndForget,
ReadScrollPercent,
HintsShown,
HintHref,
}
#[derive(Debug, Clone)]
pub enum Msg {
Key(Key),
Command(Command),
Load { tab: TabId, event: LoadEvent },
TitleChanged { tab: TabId, title: String },
UriChanged { tab: TabId, uri: String },
Progress { tab: TabId, fraction: f64 },
JsResult {
id: RequestId,
tab: TabId,
result: Result<String, String>,
},
CommandLineChanged(String),
CompletionNext,
CompletionPrev,
CompletionApply,
HistoryCompletion {
generation: u64,
prefix: String,
entries: Vec<(String, String)>,
},
InputFocusChanged { tab: TabId, focused: bool },
Crashed { tab: TabId },
ConfigLoaded(Config),
SessionLoaded(Vec<String>),
PluginMessage(String),
PluginEvalRequest { id: u64, script: String },
PluginEvalResult { id: u64, result: String },
}