use gpui::{Length, Pixels, relative};
use crate::i18n::TextDirection;
pub fn text_align_start(direction: TextDirection) -> gpui::TextAlign {
match direction {
TextDirection::Ltr => gpui::TextAlign::Left,
TextDirection::Rtl => gpui::TextAlign::Right,
}
}
pub fn text_align_end(direction: TextDirection) -> gpui::TextAlign {
match direction {
TextDirection::Ltr => gpui::TextAlign::Right,
TextDirection::Rtl => gpui::TextAlign::Left,
}
}
pub fn flip_left_right<T>(direction: TextDirection, left: T, right: T) -> T {
match direction {
TextDirection::Ltr => left,
TextDirection::Rtl => right,
}
}
pub fn is_row_reverse(direction: TextDirection) -> bool {
direction.is_rtl()
}
pub fn place_start(style: &mut gpui::StyleRefinement, direction: TextDirection, value: Pixels) {
if direction.is_rtl() {
style.inset.right = Some(Length::from(value));
} else {
style.inset.left = Some(Length::from(value));
}
}
pub fn place_start_0(style: &mut gpui::StyleRefinement, direction: TextDirection) {
if direction.is_rtl() {
style.inset.right = Some(relative(0.).into());
} else {
style.inset.left = Some(relative(0.).into());
}
}
pub fn place_end(style: &mut gpui::StyleRefinement, direction: TextDirection, value: Pixels) {
if direction.is_rtl() {
style.inset.left = Some(Length::from(value));
} else {
style.inset.right = Some(Length::from(value));
}
}
pub fn place_end_0(style: &mut gpui::StyleRefinement, direction: TextDirection) {
if direction.is_rtl() {
style.inset.left = Some(relative(0.).into());
} else {
style.inset.right = Some(relative(0.).into());
}
}