moduforge_transform/
patch.rs1use serde::{Deserialize, Serialize};
2
3use moduforge_model::{attrs::Attrs, mark::Mark, node::Node, types::NodeId};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
8pub enum Patch {
9 UpdateAttr {
11 path: Vec<String>,
13 id: NodeId,
15 old: Attrs,
17 new: Attrs,
19 },
20 AddNode {
22 path: Vec<String>,
24 parent_id: NodeId,
26 nodes: Vec<Node>,
28 },
29 AddMark {
31 path: Vec<String>,
33 node_id: NodeId,
35 marks: Vec<Mark>,
37 },
38 RemoveMark {
40 path: Vec<String>,
42 parent_id: NodeId,
44 marks: Vec<Mark>,
46 },
47 RemoveNode {
49 path: Vec<String>,
51 parent_id: NodeId,
53 nodes: Vec<Node>,
55 },
56 MoveNode {
58 path: Vec<String>,
59 node_id: NodeId,
60 source_parent_id: NodeId,
61 target_parent_id: NodeId,
62 position: Option<usize>,
63 },
64 SortChildren {
66 path: Vec<String>,
68 parent_id: NodeId,
70 old_children: Vec<NodeId>,
72 new_children: Vec<NodeId>,
74 },
75}