Skip to main content

ansiq_widgets/
transcript_view.rs

1use ansiq_core::{Element, Layout, Length, TranscriptEntry, transcript_block};
2
3use crate::RichText;
4
5pub struct TranscriptView<Message = ()> {
6    entries: Vec<TranscriptEntry>,
7    layout: Layout,
8    marker: std::marker::PhantomData<Message>,
9}
10
11impl<Message> TranscriptView<Message> {
12    pub fn new(entries: impl IntoIterator<Item = TranscriptEntry>) -> Self {
13        Self {
14            entries: entries.into_iter().collect(),
15            layout: Layout {
16                width: Length::Fill,
17                height: Length::Auto,
18            },
19            marker: std::marker::PhantomData,
20        }
21    }
22
23    pub fn layout(mut self, layout: Layout) -> Self {
24        self.layout = layout;
25        self
26    }
27
28    pub fn build(self) -> Element<Message> {
29        RichText::new(transcript_block(&self.entries))
30            .layout(self.layout)
31            .build()
32    }
33}