Explorar o código

fix liveview events

Evan Almloff hai 1 ano
pai
achega
1a4741ce04

+ 1 - 1
packages/core/src/mutations.rs

@@ -26,7 +26,7 @@ pub struct Mutations<'a> {
     /// Any templates encountered while diffing the DOM.
     ///
     /// These must be loaded into a cache before applying the edits
-    pub templates: Vec<Template<'a>>,
+    pub templates: Vec<Template<'static>>,
 
     /// Any mutations required to patch the renderer to match the layout of the VirtualDom
     pub edits: Vec<Mutation<'a>>,

+ 6 - 5
packages/interpreter/src/sledgehammer_bindings.rs

@@ -288,7 +288,7 @@ mod js {
 #[cfg(not(feature = "web"))]
 #[bindgen]
 mod js {
-    const JS_FILE: &str = "./src/interpreter.js";
+    const JS_FILE: &str = "./packages/interpreter/src/interpreter.js";
 
     fn mount_to_root() {
         "{AppendChildren(root, stack.length-1);}"
@@ -329,10 +329,10 @@ mod js {
     fn create_text_node(text: &str, id: u32) {
         "{node = document.createTextNode($text$); nodes[$id$] = node; stack.push(node);}"
     }
-    fn create_element(element: &str<u8, el>) {
+    fn create_element(element: &'static str<u8, el>) {
         "{stack.push(document.createElement($element$))}"
     }
-    fn create_element_ns(element: &str<u8, el>, ns: &str<u8, namespace>) {
+    fn create_element_ns(element: &'static str<u8, el>, ns: &'static str<u8, namespace>) {
         "{stack.push(document.createElementNS($ns$, $element$))}"
     }
     fn create_placeholder(id: u32) {
@@ -343,6 +343,7 @@ mod js {
     }
     fn new_event_listener(event_name: &str<u8, evt>, id: u32, bubbles: u8) {
         r#"
+        bubbles = bubbles == 1;
         node = nodes[id];
         if(node.listening){
             node.listening += 1;
@@ -352,10 +353,10 @@ mod js {
         node.setAttribute('data-dioxus-id', `\${id}`);
 
         // if this is a mounted listener, we send the event immediately
-        if (edit.name === "mounted") {
+        if (event_name === "mounted") {
             window.ipc.postMessage(
                 serializeIpcMessage("user_event", {
-                    name: edit.name,
+                    name: event_name,
                     element: edit.id,
                     data: null,
                     bubbles,

+ 2 - 0
packages/liveview/src/main.js

@@ -1,3 +1,5 @@
+const config = new InterpreterConfig(false);
+
 function main() {
   let root = window.document.getElementById("main");
   if (root != null) {

+ 2 - 2
packages/liveview/src/pool.rs

@@ -248,7 +248,7 @@ pub async fn run(mut vdom: VirtualDom, ws: impl LiveViewSocket) -> Result<(), Li
 }
 
 fn add_template(
-    template: &Template,
+    template: &Template<'static>,
     channel: &mut Channel,
     templates: &mut FxHashMap<String, u16>,
     max_template_count: &mut u16,
@@ -262,7 +262,7 @@ fn add_template(
     *max_template_count += 1
 }
 
-fn create_template_node(channel: &mut Channel, v: &TemplateNode) {
+fn create_template_node(channel: &mut Channel, v: &'static TemplateNode<'static>) {
     use TemplateNode::*;
     match v {
         Element {