1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
use oatie::doc::*;
use oatie::rtf::RtfSchema;
use wasm_bindgen::prelude::*;
use wasm_typescript_definition::*;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, TypescriptDefinition)]
#[serde(tag = "tag", content = "fields")]
pub enum ServerCommand {
Commit(String, Op<RtfSchema>, usize),
Log(String),
TerminateProxy,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, TypescriptDefinition)]
#[serde(tag = "tag", content = "fields")]
pub enum ClientCommand {
Init(String, DocSpan<RtfSchema>, usize),
Update(usize, String, Op<RtfSchema>),
ServerDisconnect,
}
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, TypescriptDefinition)]
#[serde(tag = "tag", content = "fields")]
pub enum ControllerCommand {
Keypress {
key_code: u32,
meta_key: bool,
shift_key: bool,
alt_key: bool,
},
Button {
button: u32,
},
Character {
char_code: u32,
},
InsertText {
text: String,
},
RenameGroup {
tag: String,
curspan: CurSpan,
},
Cursor {
focus: Option<CurSpan>,
anchor: Option<CurSpan>,
},
CursorSelectWord {
focus: CurSpan,
},
RandomTarget {
position: f64,
},
Monkey {
enabled: bool,
},
}
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, TypescriptDefinition)]
#[serde(tag = "tag", content = "fields")]
pub enum FrontendCommand {
Init(String),
Controls(Controls),
PromptString(String, String, ControllerCommand),
RenderDelta(String, Op<RtfSchema>),
RenderFull(String),
Error(String),
ServerCommand(ServerCommand),
ServerDisconnect,
}
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
pub enum Ui {
Button(String, usize, bool),
ButtonGroup(Vec<Ui>),
}
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
pub struct Controls {
pub keys: Vec<(u32, bool, bool)>,
pub buttons: Vec<Ui>,
}