use std::collections::HashMap;
use crate::dom::Dom;
pub struct DomState {
pub dom: Dom,
pub base_url: Option<url::Url>,
pub console_output: Vec<ConsoleMessage>,
pub storage: HashMap<String, HashMap<String, String>>,
}
#[derive(Debug, Clone)]
pub struct ConsoleMessage {
pub level: ConsoleLevel,
pub args: Vec<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ConsoleLevel {
Log,
Warn,
Error,
Info,
Debug,
}
impl DomState {
pub fn new(dom: Dom) -> Self {
let mut storage = HashMap::new();
storage.insert("local".to_string(), HashMap::new());
storage.insert("session".to_string(), HashMap::new());
Self {
dom,
base_url: None,
console_output: Vec::new(),
storage,
}
}
pub fn with_base_url(mut self, url: url::Url) -> Self {
self.base_url = Some(url);
self
}
}