windjammer_ui/components/generated/
advancedcodeeditor.rs1#![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}