use std::time::{SystemTime, UNIX_EPOCH};
use bekoedit_core::AppState;
use dioxus::prelude::Signal;
use crate::persistence::AppPersistence;
#[derive(Clone, Copy)]
pub struct ExplorerCollapsed(pub Signal<bool>);
#[derive(Clone, Copy)]
pub struct SettingsOpen(pub Signal<bool>);
#[derive(Clone, Copy)]
pub struct OutlineOpen(pub Signal<bool>);
#[derive(Clone, Copy)]
pub struct SearchOpen(pub Signal<bool>);
#[derive(Clone, Copy)]
pub struct BacklinksOpen(pub Signal<bool>);
#[derive(Clone, Copy)]
pub struct HistoryOpen(pub Signal<bool>);
#[derive(Clone, Copy)]
pub struct NewFileOpen(pub Signal<bool>);
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OpenMenu {
None,
App,
EditorTools,
}
#[derive(Clone, Copy)]
pub struct OpenMenuState(pub Signal<OpenMenu>);
pub const AUTOSAVE_DEBOUNCE_MS: u64 = 1500;
pub fn create_app_state(persistence: &AppPersistence) -> AppState {
persistence.create_app_state(AUTOSAVE_DEBOUNCE_MS)
}
pub fn now_ms() -> u64 {
SystemTime::now()
.duration_since(UNIX_EPOCH)
.map(|d| d.as_millis() as u64)
.unwrap_or(0)
}
#[allow(dead_code)]
pub fn now_secs() -> u64 {
now_ms() / 1000
}