Fix: some stuff related to event listeners. POC for lifecyel

This commit is contained in:
Jonathan Kelley committed 2021-03-15 02:16:03 -04:00
1 parent 4e48e0514e
commit 5b7887d76c
6 files changed
+103 -24

No files matched your search

+20 -3
View File
@@ -36,6 +36,8 @@ pub(crate) struct PatchMachine {
pub(crate) document: Document,
pub(crate) events: EventDelegater,
pub(crate) current_known: Option<u32>,
}
#[derive(Debug)]
@@ -95,9 +97,13 @@ impl EventDelegater {
if let (Some(gi_id), Some(gi_gen), Some(li_idx)) = (gi_id, gi_gen, li_idx) {
// Call the trigger
log::debug!("decoded gi_id: {}, gi_gen: {}, li_idx: {}", gi_id,gi_gen,li_idx);
let triggered_scope = ScopeIdx::from_raw_parts(gi_id, gi_gen);
trigger.0.as_ref()(EventTrigger::new(
virtual_event_from_websys_event(event),
scope,
triggered_scope,
// scope,
li_idx,
));
}
@@ -167,6 +173,7 @@ impl PatchMachine {
let events = EventDelegater::new(root.clone(), event_callback);
Self {
current_known: None,
known_roots: Default::default(),
root,
events,
@@ -250,6 +257,13 @@ impl PatchMachine {
panic!("Cannot replace node: {:?}", old_node);
}
// poc to see if this is a valid solution
if let Some(id) = self.current_known {
// update mapping
self.known_roots.insert(id, new_node.clone());
self.current_known = None;
}
self.stack.push(new_node);
}
@@ -485,9 +499,12 @@ impl PatchMachine {
self.known_roots.insert(node, domnode.clone());
}
Edit::TraverseToKnown { node } => {
let domnode = self.known_roots.get(&node).expect("Failed to pop know root");
let domnode = self
.known_roots
.get(&node)
.expect("Failed to pop know root");
self.current_known = Some(node);
self.stack.push(domnode.clone());
}
Edit::RemoveKnown => {}
}
+1 -1
View File
@@ -102,7 +102,7 @@ impl WebsysRenderer {
for edit in &edits {
log::debug!("edit stream {:?}", edit);
log::debug!("Stream stack {:#?}", patch_machine.stack.top());
// log::debug!("Stream stack {:#?}", patch_machine.stack.top());
patch_machine.handle_edit(edit);
}