use super::tabs::RightPanelTab;
use crate::tokens::DESIGN_TOKENS;
#[derive(Clone, Debug)]
pub struct RightToolbarState {
pub active_tab: Option<RightPanelTab>,
pub expanded: bool,
pub panel_width: f32,
}
impl Default for RightToolbarState {
fn default() -> Self {
Self {
active_tab: None,
expanded: false,
panel_width: DESIGN_TOKENS.sizing.toolbar.right_panel_width,
}
}
}
impl RightToolbarState {
pub fn new() -> Self {
Self::default()
}
pub fn set_active_tab(&mut self, tab: Option<RightPanelTab>) {
self.active_tab = tab;
self.expanded = tab.is_some();
}
pub fn toggle_tab(&mut self, tab: RightPanelTab) {
if self.active_tab == Some(tab) {
self.active_tab = None;
self.expanded = false;
} else {
self.active_tab = Some(tab);
self.expanded = true;
}
}
pub fn is_tab_active(&self, tab: RightPanelTab) -> bool {
self.active_tab == Some(tab)
}
pub fn sync_from(&mut self, panel_width: f32, active_tab: Option<RightPanelTab>) {
self.panel_width = panel_width;
self.active_tab = active_tab;
self.expanded = active_tab.is_some();
}
}