Migrate the Text tool to the document graph (#1435)

* Update text tool to document graph

* Fix selection issue

* Log graph reruns and text node evals

* Hash to set node

* Fix let node crash

* Fix loading document with fonts

* Allow pressing enter to edit

* Cleanup

* Code review nits

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
0HyperCube
2023-10-24 20:55:13 +01:00
committed by GitHub
parent 3d4e3a74e5
commit b8906f344e
17 changed files with 283 additions and 238 deletions

View File

@@ -41,6 +41,9 @@ pub struct DocumentNode {
pub metadata: DocumentNodeMetadata,
#[serde(default)]
pub skip_deduplication: bool,
/// Used as a hash of the graph input where applicable. This ensures that protonodes that depend on the graph's input are always regenerated.
#[serde(default)]
pub hash: u64,
pub path: Option<Vec<NodeId>>,
}
@@ -103,6 +106,7 @@ impl DocumentNode {
construction_args: args,
document_node_path: self.path.unwrap_or(Vec::new()),
skip_deduplication: self.skip_deduplication,
hash: self.hash,
}
}

View File

@@ -197,6 +197,7 @@ pub struct ProtoNode {
pub identifier: NodeIdentifier,
pub document_node_path: Vec<NodeId>,
pub skip_deduplication: bool,
pub hash: u64,
}
/// A ProtoNodeInput represents the input of a node in a ProtoNetwork.
@@ -235,6 +236,7 @@ impl ProtoNode {
if self.skip_deduplication {
self.document_node_path.hash(&mut hasher);
}
self.hash.hash(&mut hasher);
std::mem::discriminant(&self.input).hash(&mut hasher);
match self.input {
ProtoNodeInput::None => (),
@@ -256,6 +258,7 @@ impl ProtoNode {
input: ProtoNodeInput::None,
document_node_path: path,
skip_deduplication: false,
hash: 0,
}
}
@@ -361,6 +364,7 @@ impl ProtoNetwork {
input,
document_node_path: path,
skip_deduplication: false,
hash: 0,
},
));