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}