feat: it properly bubbles

This commit is contained in:
Jonathan Kelley committed 2021-11-11 23:55:57 -05:00
1 parent 11757ddf61
commit 9d8c5ca5ab
5 files changed
+52 -48

No files matched your search

+4 -4
View File
@@ -11,7 +11,7 @@ use dioxus_html::on::*;
struct ImEvent {
event: String,
mounted_dom_id: u64,
scope: u64,
// scope: u64,
contents: serde_json::Value,
}
@@ -20,11 +20,11 @@ pub fn trigger_from_serialized(val: serde_json::Value) -> UserEvent {
let ImEvent {
event,
mounted_dom_id,
scope,
// scope,
contents,
} = ims.into_iter().next().unwrap();
let scope_id = ScopeId(scope as usize);
// let scope_id = ScopeId(scope as usize);
let mounted_dom_id = Some(ElementId(mounted_dom_id as usize));
let name = event_name_from_typ(&event);
@@ -33,7 +33,7 @@ pub fn trigger_from_serialized(val: serde_json::Value) -> UserEvent {
UserEvent {
name,
priority: EventPriority::Low,
scope_id,
scope_id: None,
mounted_dom_id,
event,
}
+8 -12
View File
@@ -39,14 +39,9 @@ class Interpreter {
}
ReplaceWith(edit) {
// console.log(edit);
let root = this.nodes[edit.root];
let els = this.stack.splice(this.stack.length - edit.m);
// console.log(root);
// console.log(els);
root.replaceWith(...els);
}
@@ -79,6 +74,7 @@ class Interpreter {
const tagName = edit.tag;
const el = document.createElement(tagName);
this.nodes[edit.root] = el;
el.setAttribute("dioxus-id", edit.root);
this.stack.push(el);
}
@@ -110,14 +106,14 @@ class Interpreter {
this.root.addEventListener(event_name, (event) => {
// console.log("CLICKED");
const target = event.target;
const val = target.getAttribute(`dioxus-event-${event_name}`);
if (val == null) {
const real_id = target.getAttribute(`dioxus-id`);
if (real_id == null) {
return;
}
const fields = val.split(".");
const scope_id = parseInt(fields[0]);
const real_id = parseInt(fields[1]);
// const fields = val.split(".");
// const scope_id = parseInt(fields[0]);
// const real_id = parseInt(fields[1]);
// // console.log(`parsed event with scope_id ${scope_id} and real_id ${real_id}`);
@@ -125,8 +121,8 @@ class Interpreter {
let contents = serialize_event(event);
let evt = {
event: event_name,
scope: scope_id,
mounted_dom_id: real_id,
// scope: scope_id,
mounted_dom_id: parseInt(real_id),
contents: contents,
};
// console.log(evt);