use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::types::TypeDesc;
use super::geometry::CanvasRect;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Symbol {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ty: Option<TypeDesc>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_value: Option<Value>,
#[serde(default, skip_serializing_if = "Value::is_null")]
pub meta: Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Group {
pub title: String,
pub rect: CanvasRect,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub color: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StickyNote {
pub text: String,
pub rect: CanvasRect,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub color: Option<String>,
}