// Generated by Qleany v1.5.1 from feature_dtos.tera

use common::entities::TextDirection;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct SetTextFormatDto {
    pub position: i64,
    pub anchor: i64,
    pub font_family: Option<String>,
    pub font_point_size: Option<i64>,
    pub font_weight: Option<i64>,
    pub font_bold: Option<bool>,
    pub font_italic: Option<bool>,
    pub font_underline: Option<bool>,
    pub font_overline: Option<bool>,
    pub font_strikeout: Option<bool>,
    pub letter_spacing: Option<i64>,
    pub word_spacing: Option<i64>,
    pub underline_style: Option<UnderlineStyle>,
    pub vertical_alignment: Option<CharVerticalAlignment>,
}

#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
pub enum UnderlineStyle {
    #[default]
    NoUnderline,
    SingleUnderline,
    DashUnderline,
    DotLine,
    DashDotLine,
    DashDotDotLine,
    WaveUnderline,
    SpellCheckUnderline,
}

#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
pub enum CharVerticalAlignment {
    #[default]
    Normal,
    SuperScript,
    SubScript,
    Middle,
    Bottom,
    Top,
    Baseline,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct MergeTextFormatDto {
    pub position: i64,
    pub anchor: i64,
    pub font_family: Option<String>,
    pub font_bold: Option<bool>,
    pub font_italic: Option<bool>,
    pub font_underline: Option<bool>,
    pub font_strikeout: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct SetBlockFormatDto {
    pub position: i64,
    pub anchor: i64,
    pub alignment: Option<Alignment>,
    pub heading_level: Option<i64>,
    pub indent: Option<i64>,
    pub marker: Option<MarkerType>,
    pub line_height: Option<i64>,
    pub non_breakable_lines: Option<bool>,
    pub direction: Option<TextDirection>,
    pub background_color: Option<String>,
    pub is_code_block: Option<bool>,
    pub code_language: Option<String>,
    pub top_margin: Option<i64>,
    pub bottom_margin: Option<i64>,
    pub left_margin: Option<i64>,
    pub right_margin: Option<i64>,
}

#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
pub enum Alignment {
    #[default]
    Left,
    Right,
    Center,
    Justify,
}

#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
pub enum MarkerType {
    #[default]
    NoMarker,
    Unchecked,
    Checked,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct SetFrameFormatDto {
    pub position: i64,
    pub anchor: i64,
    pub frame_id: i64,
    pub height: Option<i64>,
    pub width: Option<i64>,
    pub top_margin: Option<i64>,
    pub bottom_margin: Option<i64>,
    pub left_margin: Option<i64>,
    pub right_margin: Option<i64>,
    pub padding: Option<i64>,
    pub border: Option<i64>,
    pub is_blockquote: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct SetTableFormatDto {
    pub table_id: i64,
    pub border: Option<i64>,
    pub cell_spacing: Option<i64>,
    pub cell_padding: Option<i64>,
    pub width: Option<i64>,
    pub alignment: Option<Alignment>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct SetTableCellFormatDto {
    pub cell_id: i64,
    pub padding: Option<i64>,
    pub border: Option<i64>,
    pub vertical_alignment: Option<CellVerticalAlignment>,
    pub background_color: Option<String>,
}

pub use common::entities::ListStyle;

#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct SetListFormatDto {
    pub list_id: i64,
    pub style: Option<ListStyle>,
    pub indent: Option<i64>,
    pub prefix: Option<String>,
    pub suffix: Option<String>,
}

#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
pub enum CellVerticalAlignment {
    #[default]
    Top,
    Middle,
    Bottom,
}
