feat: it properly bubbles
This commit is contained in:
1 parent
11757ddf61
commit
9d8c5ca5ab
5 files changed
+52
-48
No files matched your search
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user