ansiq_widgets/
transcript_view.rs1use 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}