use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum FlexComponent {
FlexBox(Box<models::FlexBox>),
FlexButton(Box<models::FlexButton>),
FlexImage(Box<models::FlexImage>),
FlexVideo(Box<models::FlexVideo>),
FlexIcon(Box<models::FlexIcon>),
FlexText(Box<models::FlexText>),
FlexSpan(Box<models::FlexSpan>),
FlexSeparator(Box<models::FlexSeparator>),
FlexFiller(Box<models::FlexFiller>),
}
impl Default for FlexComponent {
fn default() -> Self {
Self::FlexBox(Box::new(Default::default()))
}
}
impl From<models::FlexBox> for FlexComponent {
fn from(value: models::FlexBox) -> Self {
FlexComponent::FlexBox(Box::new(value))
}
}
impl From<models::FlexButton> for FlexComponent {
fn from(value: models::FlexButton) -> Self {
FlexComponent::FlexButton(Box::new(value))
}
}
impl From<models::FlexImage> for FlexComponent {
fn from(value: models::FlexImage) -> Self {
FlexComponent::FlexImage(Box::new(value))
}
}
impl From<models::FlexVideo> for FlexComponent {
fn from(value: models::FlexVideo) -> Self {
FlexComponent::FlexVideo(Box::new(value))
}
}
impl From<models::FlexIcon> for FlexComponent {
fn from(value: models::FlexIcon) -> Self {
FlexComponent::FlexIcon(Box::new(value))
}
}
impl From<models::FlexText> for FlexComponent {
fn from(value: models::FlexText) -> Self {
FlexComponent::FlexText(Box::new(value))
}
}
impl From<models::FlexSpan> for FlexComponent {
fn from(value: models::FlexSpan) -> Self {
FlexComponent::FlexSpan(Box::new(value))
}
}
impl From<models::FlexSeparator> for FlexComponent {
fn from(value: models::FlexSeparator) -> Self {
FlexComponent::FlexSeparator(Box::new(value))
}
}
impl From<models::FlexFiller> for FlexComponent {
fn from(value: models::FlexFiller) -> Self {
FlexComponent::FlexFiller(Box::new(value))
}
}