1use crate::prelude::*;
2use crate::{theme, Avatar, Player};
3
4#[derive(Element)]
5pub struct Facepile {
6 players: Vec<Player>,
7}
8
9impl Facepile {
10 pub fn new<P: Iterator<Item = Player>>(players: P) -> Self {
11 Self {
12 players: players.collect(),
13 }
14 }
15
16 fn render<V: 'static>(&mut self, _: &mut V, cx: &mut ViewContext<V>) -> impl IntoElement<V> {
17 let theme = theme(cx);
18 let player_count = self.players.len();
19 let player_list = self.players.iter().enumerate().map(|(ix, player)| {
20 let isnt_last = ix < player_count - 1;
21
22 div()
23 .when(isnt_last, |div| div.neg_mr_1())
24 .child(Avatar::new(player.avatar_src().to_string()))
25 });
26 div().p_1().flex().items_center().children(player_list)
27 }
28}