Rename module style to css in iced_web

This commit is contained in:
Héctor Ramón Jiménez 2020-02-05 00:23:22 +01:00
parent 7b892eb3e1
commit 0030bcbd33
16 changed files with 89 additions and 89 deletions

View file

@ -3,9 +3,9 @@ use crate::{bumpalo, Align, Color, Length};
use std::collections::BTreeMap;
/// The style of a VDOM node.
/// A CSS rule of a VDOM node.
#[derive(Debug)]
pub enum Style {
pub enum Rule {
/// Container with vertical distribution
Column,
@ -19,16 +19,16 @@ pub enum Style {
Spacing(u16),
}
impl Style {
impl Rule {
/// Returns the class name of the [`Style`].
///
/// [`Style`]: enum.Style.html
pub fn class<'a>(&self) -> String {
match self {
Style::Column => String::from("c"),
Style::Row => String::from("r"),
Style::Padding(padding) => format!("p-{}", padding),
Style::Spacing(spacing) => format!("s-{}", spacing),
Rule::Column => String::from("c"),
Rule::Row => String::from("r"),
Rule::Padding(padding) => format!("p-{}", padding),
Rule::Spacing(spacing) => format!("s-{}", spacing),
}
}
@ -39,24 +39,24 @@ impl Style {
let class = self.class();
match self {
Style::Column => {
Rule::Column => {
let body = "{ display: flex; flex-direction: column; }";
bumpalo::format!(in bump, ".{} {}", class, body).into_bump_str()
}
Style::Row => {
Rule::Row => {
let body = "{ display: flex; flex-direction: row; }";
bumpalo::format!(in bump, ".{} {}", class, body).into_bump_str()
}
Style::Padding(padding) => bumpalo::format!(
Rule::Padding(padding) => bumpalo::format!(
in bump,
".{} {{ box-sizing: border-box; padding: {}px }}",
class,
padding
)
.into_bump_str(),
Style::Spacing(spacing) => bumpalo::format!(
Rule::Spacing(spacing) => bumpalo::format!(
in bump,
".c.{} > * {{ margin-bottom: {}px }} \
.r.{} > * {{ margin-right: {}px }} \
@ -74,34 +74,34 @@ impl Style {
}
}
/// A sheet of styles.
/// A cascading style sheet.
#[derive(Debug)]
pub struct Sheet<'a> {
styles: BTreeMap<String, &'a str>,
pub struct Css<'a> {
rules: BTreeMap<String, &'a str>,
}
impl<'a> Sheet<'a> {
impl<'a> Css<'a> {
/// Creates an empty style [`Sheet`].
///
/// [`Sheet`]: struct.Sheet.html
pub fn new() -> Self {
Self {
styles: BTreeMap::new(),
Css {
rules: BTreeMap::new(),
}
}
/// Inserts the [`Style`] in the [`Sheet`], if it was not previously
/// Inserts the [`rule`] in the [`Sheet`], if it was not previously
/// inserted.
///
/// It returns the class name of the provided [`Style`].
/// It returns the class name of the provided [`Rule`].
///
/// [`Sheet`]: struct.Sheet.html
/// [`Style`]: enum.Style.html
pub fn insert(&mut self, bump: &'a bumpalo::Bump, style: Style) -> String {
let class = style.class();
/// [`Rule`]: enum.Rule.html
pub fn insert(&mut self, bump: &'a bumpalo::Bump, rule: Rule) -> String {
let class = rule.class();
if !self.styles.contains_key(&class) {
let _ = self.styles.insert(class.clone(), style.declaration(bump));
if !self.rules.contains_key(&class) {
let _ = self.rules.insert(class.clone(), rule.declaration(bump));
}
class
@ -124,7 +124,7 @@ impl<'a> Sheet<'a> {
"button { border: none; cursor: pointer; outline: none }",
));
for declaration in self.styles.values() {
for declaration in self.rules.values() {
declarations.push(text(*declaration));
}

View file

@ -1,4 +1,4 @@
use crate::{style, Bus, Color, Widget};
use crate::{Bus, Color, Css, Widget};
use dodrio::bumpalo;
use std::rc::Rc;
@ -57,7 +57,7 @@ impl<'a, Message> Element<'a, Message> {
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
self.widget.node(bump, bus, style_sheet)
}
@ -89,7 +89,7 @@ where
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<B>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
self.widget
.node(bump, &bus.map(self.mapper.clone()), style_sheet)

View file

@ -63,11 +63,12 @@ mod bus;
mod element;
mod hasher;
pub mod style;
pub mod css;
pub mod subscription;
pub mod widget;
pub use bus::Bus;
pub use css::Css;
pub use dodrio;
pub use element::Element;
pub use hasher::Hasher;
@ -76,7 +77,6 @@ pub use iced_core::{
VerticalAlignment,
};
pub use iced_futures::{executor, futures, Command};
pub use style::Style;
pub use subscription::Subscription;
#[doc(no_inline)]
@ -241,13 +241,13 @@ where
let mut ui = self.application.borrow_mut();
let element = ui.view();
let mut style_sheet = style::Sheet::new();
let mut css = Css::new();
let node = element.widget.node(bump, &self.bus, &mut style_sheet);
let node = element.widget.node(bump, &self.bus, &mut css);
div(bump)
.attr("style", "width: 100%; height: 100%")
.children(vec![style_sheet.node(bump), node])
.children(vec![css.node(bump), node])
.finish()
}
}

View file

@ -14,7 +14,7 @@
//! ```
//!
//! [`Widget`]: trait.Widget.html
use crate::{style, Bus};
use crate::{Bus, Css};
use dodrio::bumpalo;
pub mod button;
@ -64,6 +64,6 @@ pub trait Widget<Message> {
&self,
bump: &'b bumpalo::Bump,
_bus: &Bus<Message>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b>;
}

View file

@ -4,7 +4,7 @@
//!
//! [`Button`]: struct.Button.html
//! [`State`]: struct.State.html
use crate::{style, Background, Bus, Element, Length, Style, Widget};
use crate::{css, Background, Bus, Css, Element, Length, Widget};
use dodrio::bumpalo;
@ -126,18 +126,18 @@ where
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
let width = style::length(self.width);
let width = css::length(self.width);
let padding_class =
style_sheet.insert(bump, Style::Padding(self.padding));
style_sheet.insert(bump, css::Rule::Padding(self.padding));
let background = match self.background {
None => String::from("none"),
Some(background) => match background {
Background::Color(color) => style::color(color),
Background::Color(color) => css::color(color),
},
};

View file

@ -1,4 +1,4 @@
use crate::{style, Bus, Color, Element, Widget};
use crate::{Bus, Color, Css, Element, Widget};
use dodrio::bumpalo;
use std::rc::Rc;
@ -68,7 +68,7 @@ where
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
_style_sheet: &mut style::Sheet<'b>,
_style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;

View file

@ -1,4 +1,4 @@
use crate::{style, Align, Bus, Element, Length, Style, Widget};
use crate::{css, Align, Bus, Css, Element, Length, Widget};
use dodrio::bumpalo;
use std::u32;
@ -112,7 +112,7 @@ impl<'a, Message> Widget<Message> for Column<'a, Message> {
&self,
bump: &'b bumpalo::Bump,
publish: &Bus<Message>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
@ -122,18 +122,18 @@ impl<'a, Message> Widget<Message> for Column<'a, Message> {
.map(|element| element.widget.node(bump, publish, style_sheet))
.collect();
let column_class = style_sheet.insert(bump, Style::Column);
let column_class = style_sheet.insert(bump, css::Rule::Column);
let spacing_class =
style_sheet.insert(bump, Style::Spacing(self.spacing));
style_sheet.insert(bump, css::Rule::Spacing(self.spacing));
let padding_class =
style_sheet.insert(bump, Style::Padding(self.padding));
style_sheet.insert(bump, css::Rule::Padding(self.padding));
let width = style::length(self.width);
let height = style::length(self.height);
let width = css::length(self.width);
let height = css::length(self.height);
let align_items = style::align(self.align_items);
let align_items = css::align(self.align_items);
// TODO: Complete styling
div(bump)

View file

@ -1,4 +1,4 @@
use crate::{bumpalo, style, Align, Bus, Element, Length, Style, Widget};
use crate::{bumpalo, css, Align, Bus, Css, Element, Length, Widget};
/// An element decorating some content.
///
@ -94,17 +94,17 @@ where
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
let column_class = style_sheet.insert(bump, Style::Column);
let column_class = style_sheet.insert(bump, css::Rule::Column);
let width = style::length(self.width);
let height = style::length(self.height);
let width = css::length(self.width);
let height = css::length(self.height);
let align_items = style::align(self.horizontal_alignment);
let justify_content = style::align(self.vertical_alignment);
let align_items = css::align(self.horizontal_alignment);
let justify_content = css::align(self.vertical_alignment);
let node = div(bump)
.attr(

View file

@ -1,4 +1,4 @@
use crate::{style, Bus, Element, Length, Widget};
use crate::{Bus, Css, Element, Length, Widget};
use dodrio::bumpalo;
@ -57,7 +57,7 @@ impl<Message> Widget<Message> for Image {
&self,
bump: &'b bumpalo::Bump,
_bus: &Bus<Message>,
_style_sheet: &mut style::Sheet<'b>,
_style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;

View file

@ -1,4 +1,4 @@
use crate::{style, Bus, Color, Element, Widget};
use crate::{Bus, Color, Css, Element, Widget};
use dodrio::bumpalo;
@ -76,7 +76,7 @@ where
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
_style_sheet: &mut style::Sheet<'b>,
_style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;

View file

@ -1,4 +1,4 @@
use crate::{style, Align, Bus, Element, Length, Style, Widget};
use crate::{css, Align, Bus, Css, Element, Length, Widget};
use dodrio::bumpalo;
use std::u32;
@ -113,7 +113,7 @@ impl<'a, Message> Widget<Message> for Row<'a, Message> {
&self,
bump: &'b bumpalo::Bump,
publish: &Bus<Message>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
@ -123,18 +123,18 @@ impl<'a, Message> Widget<Message> for Row<'a, Message> {
.map(|element| element.widget.node(bump, publish, style_sheet))
.collect();
let row_class = style_sheet.insert(bump, Style::Row);
let row_class = style_sheet.insert(bump, css::Rule::Row);
let spacing_class =
style_sheet.insert(bump, Style::Spacing(self.spacing));
style_sheet.insert(bump, css::Rule::Spacing(self.spacing));
let padding_class =
style_sheet.insert(bump, Style::Padding(self.padding));
style_sheet.insert(bump, css::Rule::Padding(self.padding));
let width = style::length(self.width);
let height = style::length(self.height);
let width = css::length(self.width);
let height = css::length(self.height);
let justify_content = style::align(self.align_items);
let justify_content = css::align(self.align_items);
// TODO: Complete styling
div(bump)

View file

@ -1,5 +1,5 @@
//! Navigate an endless amount of content with a scrollbar.
use crate::{bumpalo, style, Align, Bus, Column, Element, Length, Widget};
use crate::{bumpalo, css, Align, Bus, Column, Css, Element, Length, Widget};
/// A widget that can vertically display an infinite amount of content with a
/// scrollbar.
@ -105,12 +105,12 @@ where
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
let width = style::length(self.width);
let height = style::length(self.height);
let width = css::length(self.width);
let height = css::length(self.height);
let node = div(bump)
.attr(

View file

@ -4,7 +4,7 @@
//!
//! [`Slider`]: struct.Slider.html
//! [`State`]: struct.State.html
use crate::{style, Bus, Element, Length, Widget};
use crate::{Bus, Css, Element, Length, Widget};
use dodrio::bumpalo;
use std::{ops::RangeInclusive, rc::Rc};
@ -88,7 +88,7 @@ where
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
_style_sheet: &mut style::Sheet<'b>,
_style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
use wasm_bindgen::JsCast;

View file

@ -1,4 +1,4 @@
use crate::{style, Bus, Element, Length, Widget};
use crate::{css, Bus, Css, Element, Length, Widget};
use dodrio::bumpalo;
/// An amount of empty space.
@ -44,12 +44,12 @@ impl<'a, Message> Widget<Message> for Space {
&self,
bump: &'b bumpalo::Bump,
_publish: &Bus<Message>,
_style_sheet: &mut style::Sheet<'b>,
_css: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
let width = style::length(self.width);
let height = style::length(self.height);
let width = css::length(self.width);
let height = css::length(self.height);
let style = bumpalo::format!(
in bump,

View file

@ -1,5 +1,5 @@
use crate::{
style, Bus, Color, Element, Font, HorizontalAlignment, Length,
css, Bus, Color, Css, Element, Font, HorizontalAlignment, Length,
VerticalAlignment, Widget,
};
use dodrio::bumpalo;
@ -112,15 +112,15 @@ impl<'a, Message> Widget<Message> for Text {
&self,
bump: &'b bumpalo::Bump,
_publish: &Bus<Message>,
_style_sheet: &mut style::Sheet<'b>,
_style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
let content = bumpalo::format!(in bump, "{}", self.content);
let color = style::color(self.color.unwrap_or(Color::BLACK));
let color = css::color(self.color.unwrap_or(Color::BLACK));
let width = style::length(self.width);
let height = style::length(self.height);
let width = css::length(self.width);
let height = css::length(self.height);
let text_align = match self.horizontal_alignment {
HorizontalAlignment::Left => "left",

View file

@ -4,7 +4,7 @@
//!
//! [`TextInput`]: struct.TextInput.html
//! [`State`]: struct.State.html
use crate::{bumpalo, style, Bus, Element, Length, Style, Widget};
use crate::{bumpalo, css, Bus, Css, Element, Length, Widget};
use std::rc::Rc;
/// A field that can be filled with text.
@ -133,15 +133,15 @@ where
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
style_sheet: &mut style::Sheet<'b>,
style_sheet: &mut Css<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
use wasm_bindgen::JsCast;
let width = style::length(self.width);
let max_width = style::length(self.max_width);
let width = css::length(self.width);
let max_width = css::length(self.max_width);
let padding_class =
style_sheet.insert(bump, Style::Padding(self.padding));
style_sheet.insert(bump, css::Rule::Padding(self.padding));
let on_change = self.on_change.clone();
let event_bus = bus.clone();