use super::{inspector_metadata, EdgeInsets, InspectorMetadata, Modifier};
use crate::modifier_nodes::PaddingElement;
impl Modifier {
pub fn padding(self, p: f32) -> Self {
let padding = EdgeInsets::uniform(p);
let modifier = Self::with_element(PaddingElement::new(padding))
.with_inspector_metadata(padding_metadata(padding));
self.then(modifier)
}
pub fn padding_horizontal(self, horizontal: f32) -> Self {
let padding = EdgeInsets::horizontal(horizontal);
let modifier = Self::with_element(PaddingElement::new(padding))
.with_inspector_metadata(padding_metadata(padding));
self.then(modifier)
}
pub fn padding_vertical(self, vertical: f32) -> Self {
let padding = EdgeInsets::vertical(vertical);
let modifier = Self::with_element(PaddingElement::new(padding))
.with_inspector_metadata(padding_metadata(padding));
self.then(modifier)
}
pub fn padding_symmetric(self, horizontal: f32, vertical: f32) -> Self {
let padding = EdgeInsets::symmetric(horizontal, vertical);
let modifier = Self::with_element(PaddingElement::new(padding))
.with_inspector_metadata(padding_metadata(padding));
self.then(modifier)
}
pub fn padding_each(self, left: f32, top: f32, right: f32, bottom: f32) -> Self {
let padding = EdgeInsets::from_components(left, top, right, bottom);
let modifier = Self::with_element(PaddingElement::new(padding))
.with_inspector_metadata(padding_metadata(padding));
self.then(modifier)
}
pub fn padding_relative(self, start: f32, top: f32, end: f32, bottom: f32) -> Self {
self.padding_relative_in(
crate::layout_direction::layout_direction(),
start,
top,
end,
bottom,
)
}
pub fn padding_relative_in(
self,
direction: crate::layout_direction::LayoutDirection,
start: f32,
top: f32,
end: f32,
bottom: f32,
) -> Self {
let (left, right) = direction.resolve(start, end);
self.padding_each(left, top, right, bottom)
}
}
fn padding_metadata(padding: EdgeInsets) -> InspectorMetadata {
inspector_metadata("padding", |info| {
info.add_property("paddingLeft", padding.left.to_string());
info.add_property("paddingTop", padding.top.to_string());
info.add_property("paddingRight", padding.right.to_string());
info.add_property("paddingBottom", padding.bottom.to_string());
})
}