tree_table/args/
args_tree_extend.rs1use alloc::string::String;
2use alloc::vec;
3use alloc::vec::Vec;
4
5use crate::Val;
6use crate::statics::default_emit_event_for_api;
7use crate::statics::default_inherit;
8use crate::statics::default_save_selection_for_api;
9use crate::statics::default_undo_for_api;
10#[cfg(feature = "serde")]
11use crate::statics::get_true;
12
13#[cfg_attr(feature = "tsify", derive(tsify::Tsify))]
14#[cfg_attr(feature = "tsify", tsify(from_wasm_abi))]
15#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
16#[derive(Debug, Default, Clone, Copy, PartialEq)]
17pub enum EmptyIdHandling {
18 #[default]
19 New,
20 Error,
21 Ignore,
22}
23
24#[cfg_attr(feature = "tsify", derive(tsify::Tsify))]
25#[cfg_attr(feature = "tsify", tsify(from_wasm_abi))]
26#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
27#[derive(Debug, Default, Clone, Copy, PartialEq)]
28pub enum DuplicateIdHandling {
29 #[default]
30 Rename,
31 Error,
32}
33
34#[cfg_attr(feature = "tsify", derive(tsify::Tsify))]
35#[cfg_attr(feature = "tsify", tsify(from_wasm_abi))]
36#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
37#[derive(Debug, Default, Clone, Copy, PartialEq)]
38pub enum CycleHandling {
39 #[default]
40 Ignore,
41 Clear,
42 Error,
43 Skip,
44 OnlyPrior,
45}
46
47#[cfg_attr(feature = "tsify", derive(tsify::Tsify))]
53#[cfg_attr(feature = "tsify", tsify(from_wasm_abi))]
54#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
55#[derive(Debug, Clone, PartialEq)]
56pub struct TreeExtendRow {
57 #[cfg_attr(feature = "serde", serde(default))]
58 pub iid: String,
59 #[cfg_attr(feature = "serde", serde(default))]
60 pub par: String,
61 pub val: Option<Val>,
62 pub vals: Option<Vec<(String, Val)>>,
63 #[cfg_attr(feature = "serde", serde(default = "get_true"))]
64 pub open: bool,
65 pub dim: Option<u64>,
66}
67
68#[cfg_attr(feature = "tsify", derive(tsify::Tsify))]
74#[cfg_attr(feature = "tsify", tsify(from_wasm_abi))]
75#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
76#[derive(Debug, Clone, PartialEq)]
77pub struct TreeExtendArgs {
78 pub rows: Vec<TreeExtendRow>,
79 #[cfg_attr(feature = "serde", serde(default = "default_inherit"))]
80 pub inherit: String,
81 #[cfg_attr(feature = "serde", serde(default))]
82 pub select: bool,
83 #[cfg_attr(feature = "serde", serde(default = "default_emit_event_for_api"))]
84 pub emit: bool,
85 #[cfg_attr(feature = "serde", serde(default = "default_undo_for_api"))]
86 pub undo: bool,
87 #[cfg_attr(feature = "serde", serde(default))]
88 pub empty_ids: EmptyIdHandling,
89 #[cfg_attr(feature = "serde", serde(default))]
90 pub duplicate_ids: DuplicateIdHandling,
91 #[cfg_attr(feature = "serde", serde(default))]
92 pub cycles: CycleHandling,
93 #[cfg_attr(feature = "serde", serde(default = "default_save_selection_for_api"))]
94 pub save_selection: bool,
95}
96
97impl Default for TreeExtendArgs {
98 fn default() -> Self {
99 TreeExtendArgs {
100 rows: vec![],
101 inherit: default_inherit(),
102 select: false,
103 emit: default_emit_event_for_api(),
104 undo: default_undo_for_api(),
105 empty_ids: EmptyIdHandling::default(),
106 duplicate_ids: DuplicateIdHandling::default(),
107 cycles: CycleHandling::default(),
108 save_selection: default_save_selection_for_api(),
109 }
110 }
111}