windjammer_ui/components/generated/
advancedcodeeditor.rs

1#![allow(clippy::all)]
2#![allow(noop_method_call)]
3use super::traits::Renderable;
4
5pub struct AdvancedCodeEditor {
6    code: String,
7    language: String,
8    theme: String,
9    line_numbers: bool,
10    minimap: bool,
11    autocomplete: bool,
12}
13
14impl AdvancedCodeEditor {
15    #[inline]
16    pub fn new(code: String) -> AdvancedCodeEditor {
17        AdvancedCodeEditor {
18            code,
19            language: "rust".to_string(),
20            theme: "monokai".to_string(),
21            line_numbers: true,
22            minimap: true,
23            autocomplete: true,
24        }
25    }
26    #[inline]
27    pub fn language(mut self, language: String) -> AdvancedCodeEditor {
28        self.language = language;
29        self
30    }
31    #[inline]
32    pub fn theme(mut self, theme: String) -> AdvancedCodeEditor {
33        self.theme = theme;
34        self
35    }
36    #[inline]
37    pub fn line_numbers(mut self, show: bool) -> AdvancedCodeEditor {
38        self.line_numbers = show;
39        self
40    }
41    #[inline]
42    pub fn minimap(mut self, show: bool) -> AdvancedCodeEditor {
43        self.minimap = show;
44        self
45    }
46    #[inline]
47    pub fn autocomplete(mut self, enable: bool) -> AdvancedCodeEditor {
48        self.autocomplete = enable;
49        self
50    }
51}
52
53impl Renderable for AdvancedCodeEditor {
54    #[inline]
55    fn render(self) -> String {
56        let features_class = {
57            if self.minimap {
58                " wj-editor-with-minimap"
59            } else {
60                ""
61            }
62        };
63        let line_class = {
64            if self.line_numbers {
65                " wj-editor-with-lines"
66            } else {
67                ""
68            }
69        };
70        format!(
71            "<div class='wj-advanced-editor wj-editor-{} wj-editor-theme-{}{}{}'>
72  <div class='wj-editor-toolbar'>
73    <span>Language: {}</span>
74    <span>Theme: {}</span>
75  </div>
76  <div class='wj-editor-main'>
77    <textarea class='wj-editor-textarea'>
78{}</textarea>
79    {}
80  </div>
81</div>",
82            self.language,
83            self.theme,
84            features_class,
85            line_class,
86            self.language,
87            self.theme,
88            self.code,
89            {
90                if self.minimap {
91                    "<div class='wj-editor-minimap'></div>"
92                } else {
93                    ""
94                }
95            }
96        )
97    }
98}