use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TabSnapshot {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cwd: Option<String>,
#[serde(default)]
pub title: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub custom_color: Option<[u8; 3]>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_user_title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub custom_icon: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_layout: Option<SessionPaneNode>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum SplitDirection {
Horizontal,
Vertical,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SessionPaneNode {
Leaf {
cwd: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
user_title: Option<String>,
},
Split {
direction: SplitDirection,
ratio: f32,
first: Box<SessionPaneNode>,
second: Box<SessionPaneNode>,
},
}