use disposition_model_common::theme::Css;
use serde::{Deserialize, Serialize};
use crate::{
edge::EdgeGroups,
entity::{EntityDescs, EntityTypes},
layout::NodeLayouts,
node::{NodeCopyText, NodeHierarchy, NodeNames, TailwindClasses},
};
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[derive(Clone, Debug, Default, PartialEq, Eq, Deserialize, Serialize)]
pub struct IrDiagram {
#[serde(default, skip_serializing_if = "NodeNames::is_empty")]
pub nodes: NodeNames,
#[serde(default, skip_serializing_if = "NodeCopyText::is_empty")]
pub node_copy_text: NodeCopyText,
#[serde(default, skip_serializing_if = "NodeHierarchy::is_empty")]
pub node_hierarchy: NodeHierarchy,
#[serde(default, skip_serializing_if = "EdgeGroups::is_empty")]
pub edge_groups: EdgeGroups,
#[serde(default, skip_serializing_if = "EntityDescs::is_empty")]
pub entity_descs: EntityDescs,
#[serde(default, skip_serializing_if = "EntityTypes::is_empty")]
pub entity_types: EntityTypes,
#[serde(default, skip_serializing_if = "TailwindClasses::is_empty")]
pub tailwind_classes: TailwindClasses,
#[serde(default, skip_serializing_if = "NodeLayouts::is_empty")]
pub node_layout: NodeLayouts,
#[serde(default, skip_serializing_if = "Css::is_empty")]
pub css: Css,
}
impl IrDiagram {
pub fn new() -> Self {
Self::default()
}
}