ZIm/crates/collab_ui/src/face_pile.rs
Max Brunsfeld a8061232a5 cargo fmt
2024-01-03 13:13:50 -08:00

28 lines
865 B
Rust

use gpui::{div, AnyElement, IntoElement, ParentElement, RenderOnce, Styled, WindowContext};
use smallvec::SmallVec;
#[derive(Default, IntoElement)]
pub struct FacePile {
pub faces: SmallVec<[AnyElement; 2]>,
}
impl RenderOnce for FacePile {
fn render(self, _: &mut WindowContext) -> impl IntoElement {
let player_count = self.faces.len();
let player_list = self.faces.into_iter().enumerate().map(|(ix, player)| {
let isnt_last = ix < player_count - 1;
div()
.z_index((player_count - ix) as u8)
.when(isnt_last, |div| div.neg_mr_1())
.child(player)
});
div().p_1().flex().items_center().children(player_list)
}
}
impl ParentElement for FacePile {
fn children_mut(&mut self) -> &mut SmallVec<[AnyElement; 2]> {
&mut self.faces
}
}