use crate::prelude::*; use crate::{theme, Avatar, Player}; #[derive(Element)] pub struct Facepile { players: Vec, } impl Facepile { pub fn new>(players: P) -> Self { Self { players: players.collect(), } } fn render(&mut self, _: &mut V, cx: &mut ViewContext) -> impl IntoElement { let theme = theme(cx); let player_count = self.players.len(); let player_list = self.players.iter().enumerate().map(|(ix, player)| { let isnt_last = ix < player_count - 1; div() .when(isnt_last, |div| div.neg_mr_1()) .child(Avatar::new(player.avatar_src().to_string())) }); div().p_1().flex().items_center().children(player_list) } }