khalas 0.2.0

UI Library based on Seed
pub use super::box_align::{AlignContent, AlignItems, AlignSelf, JustifyContent};
use crate::css::{unit::*, values as val, St, StyleMap, ToStyleMap};

#[derive(Clone, Debug, Copy, PartialEq, Display, From)]
pub enum Basis {
    #[from]
    Content(val::Content),
    #[from]
    Auto(val::Auto),
    #[from]
    Inherit(val::Inherit),
    #[from]
    Em(Em),
    #[from]
    Ex(Ex),
    #[from]
    Cap(Cap),
    #[from]
    Ch(Ch),
    #[from]
    Ic(Ic),
    #[from]
    Rem(Rem),
    #[from]
    Rlh(Rlh),
    #[from]
    Vm(Vm),
    #[from]
    Vh(Vh),
    #[from]
    Vi(Vi),
    #[from]
    Vb(Vb),
    #[from]
    Vmin(Vmin),
    #[from]
    Vmax(Vmax),
    #[from]
    Cm(Cm),
    #[from]
    Mm(Mm),
    #[from]
    Q(Q),
    #[from]
    In(In),
    #[from]
    Pc(Pc),
    #[from]
    Pt(Pt),
    #[from]
    Px(Px),
    #[from(forward)]
    Percent(Percent),
}

impl ToStyleMap for Basis {
    fn style_map(&self) -> StyleMap {
        let mut map = StyleMap::default();
        map.add(St::FlexBasis, self);
        map
    }
}

#[derive(Clone, Debug, Copy, PartialEq, Eq, Display, From)]
pub enum Direction {
    #[from]
    Row(val::Row),
    #[from]
    RowReverse(val::RowReverse),
    #[from]
    Column(val::Column),
    #[from]
    ColumnReverse(val::ColumnReverse),
}

impl ToStyleMap for Direction {
    fn style_map(&self) -> StyleMap {
        let mut map = StyleMap::default();
        map.add(St::FlexDirection, self);
        map
    }
}

#[derive(Clone, Debug, Copy, PartialEq, Eq, Display, From)]
pub enum Wrap {
    #[from]
    Wrap(val::Wrap),
    #[from]
    Nowrap(val::Nowrap),
    #[from]
    WrapReverse(val::WrapReverse),
}

impl ToStyleMap for Wrap {
    fn style_map(&self) -> StyleMap {
        let mut map = StyleMap::default();
        map.add(St::FlexWrap, self);
        map
    }
}

#[derive(Clone, Debug, Copy, PartialEq, Eq, Display, From)]
pub struct Order(i32);

impl ToStyleMap for Order {
    fn style_map(&self) -> StyleMap {
        let mut map = StyleMap::default();
        map.add(St::Order, self.0);
        map
    }
}

#[derive(Clone, Debug, Copy, PartialEq, Display, From)]
pub struct Grow(f32);

impl ToStyleMap for Grow {
    fn style_map(&self) -> StyleMap {
        let mut map = StyleMap::default();
        map.add(St::FlexGrow, self.0);
        map
    }
}

#[derive(Clone, Debug, Copy, PartialEq, Display, From)]
pub struct Shrink(f32);

impl ToStyleMap for Shrink {
    fn style_map(&self) -> StyleMap {
        let mut map = StyleMap::default();
        map.add(St::FlexShrink, self.0);
        map
    }
}