workflow_terminal/terminal/
options.rs1use web_sys::Element;
6
7pub enum TargetElement {
10 Body,
12 Element(Element),
14 TagName(String),
16 Id(String),
18}
19
20pub struct Options {
22 pub prompt: Option<String>,
24 pub element: TargetElement,
26 pub disable_clipboard_handling: bool,
29 pub font_family: Option<String>,
31 pub font_size: Option<f64>,
33 pub scrollback: Option<u32>,
35}
36
37impl Default for Options {
38 fn default() -> Self {
39 Options {
40 prompt: None,
41 element: TargetElement::Body,
42 disable_clipboard_handling: false,
43 font_family: None,
44 font_size: None,
45 scrollback: Some(2048),
46 }
47 }
48}
49
50impl Options {
51 pub fn new() -> Options {
53 Options::default()
54 }
55
56 pub fn with_prompt(mut self, prompt: &str) -> Self {
58 self.prompt = Some(prompt.into());
59 self
60 }
61
62 pub fn with_scrollback(mut self, scrollback: u32) -> Self {
64 self.scrollback = Some(scrollback);
65 self
66 }
67
68 pub fn with_element(mut self, element: TargetElement) -> Self {
70 self.element = element;
71 self
72 }
73
74 pub fn prompt(&self) -> String {
76 self.prompt.as_ref().unwrap_or(&"$ ".to_string()).clone()
77 }
78}