figma_api/models/
document_node.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct DocumentNode {
16 #[serde(rename = "id")]
18 pub id: String,
19 #[serde(rename = "name")]
21 pub name: String,
22 #[serde(rename = "visible", skip_serializing_if = "Option::is_none")]
24 pub visible: Option<bool>,
25 #[serde(rename = "locked", skip_serializing_if = "Option::is_none")]
27 pub locked: Option<bool>,
28 #[serde(rename = "isFixed", skip_serializing_if = "Option::is_none")]
30 pub is_fixed: Option<bool>,
31 #[serde(rename = "scrollBehavior")]
33 pub scroll_behavior: ScrollBehavior,
34 #[serde(rename = "rotation", skip_serializing_if = "Option::is_none")]
36 pub rotation: Option<f64>,
37 #[serde(rename = "componentPropertyReferences", skip_serializing_if = "Option::is_none")]
39 pub component_property_references: Option<std::collections::HashMap<String, String>>,
40 #[serde(rename = "pluginData", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
41 pub plugin_data: Option<Option<serde_json::Value>>,
42 #[serde(rename = "sharedPluginData", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
43 pub shared_plugin_data: Option<Option<serde_json::Value>>,
44 #[serde(rename = "boundVariables", skip_serializing_if = "Option::is_none")]
45 pub bound_variables: Option<Box<models::IsLayerTraitBoundVariables>>,
46 #[serde(rename = "explicitVariableModes", skip_serializing_if = "Option::is_none")]
48 pub explicit_variable_modes: Option<std::collections::HashMap<String, String>>,
49 #[serde(rename = "children")]
50 pub children: Vec<models::CanvasNode>,
51}
52
53impl DocumentNode {
54 pub fn new(id: String, name: String, scroll_behavior: ScrollBehavior, children: Vec<models::CanvasNode>) -> DocumentNode {
55 DocumentNode {
56 id,
57 name,
58 visible: None,
59 locked: None,
60 is_fixed: None,
61 scroll_behavior,
62 rotation: None,
63 component_property_references: None,
64 plugin_data: None,
65 shared_plugin_data: None,
66 bound_variables: None,
67 explicit_variable_modes: None,
68 children,
69 }
70 }
71}
72#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
74pub enum ScrollBehavior {
75 #[serde(rename = "SCROLLS")]
76 Scrolls,
77 #[serde(rename = "FIXED")]
78 Fixed,
79 #[serde(rename = "STICKY_SCROLLS")]
80 StickyScrolls,
81}
82
83impl Default for ScrollBehavior {
84 fn default() -> ScrollBehavior {
85 Self::Scrolls
86 }
87}
88