Sfoglia il codice sorgente

fix: collectFormValues should be retrieveFormValues, export WeakDioxusChannel (#3993)

* fix: collectFormValues should be retrieveFormValues

* fix: export weakDioxusChannel
Jonathan Kelley 2 mesi fa
parent
commit
1001d78c7f

+ 1 - 1
packages/interpreter/src/lib.rs

@@ -38,7 +38,7 @@ pub mod minimal_bindings {
         pub fn setAttributeInner(node: JsValue, name: &str, value: JsValue, ns: Option<&str>);
 
         /// Roll up all the values from the node into a JS object that we can deserialize
-        pub fn collectFormValues(node: JsValue) -> JsValue;
+        pub fn retrieveFormValues(node: JsValue) -> JsValue;
     }
 
     #[wasm_bindgen(module = "/src/js/hydrate.js")]

+ 12 - 8
packages/web/src/document.rs

@@ -32,6 +32,17 @@ impl JSOwner {
     }
 }
 
+#[wasm_bindgen::prelude::wasm_bindgen(module = "/src/js/eval.js")]
+extern "C" {
+    pub type WeakDioxusChannel;
+
+    #[wasm_bindgen(method, js_name = "rustSend")]
+    pub fn rust_send(this: &WeakDioxusChannel, value: wasm_bindgen::JsValue);
+
+    #[wasm_bindgen(method, js_name = "rustRecv")]
+    pub async fn rust_recv(this: &WeakDioxusChannel) -> wasm_bindgen::JsValue;
+}
+
 #[wasm_bindgen::prelude::wasm_bindgen(module = "/src/js/eval.js")]
 extern "C" {
     pub type WebDioxusChannel;
@@ -54,13 +65,6 @@ extern "C" {
     #[wasm_bindgen(method)]
     pub fn weak(this: &WebDioxusChannel) -> WeakDioxusChannel;
 
-    pub type WeakDioxusChannel;
-
-    #[wasm_bindgen(method, js_name = "rustSend")]
-    pub fn rust_send(this: &WeakDioxusChannel, value: wasm_bindgen::JsValue);
-
-    #[wasm_bindgen(method, js_name = "rustRecv")]
-    pub async fn rust_recv(this: &WeakDioxusChannel) -> wasm_bindgen::JsValue;
 }
 
 /// Provides the Document through [`ScopeId::provide_context`].
@@ -136,7 +140,7 @@ impl Document for WebDocument {
 const PROMISE_WRAPPER: &str = r#"
     return (async function(){
         {JS_CODE}
-        
+
         dioxus.close();
     })();
 "#;

+ 1 - 1
packages/web/src/js/eval.js

@@ -1 +1 @@
-class Channel{pending;waiting;constructor(){this.pending=[],this.waiting=[]}send(data){if(this.waiting.length>0){this.waiting.shift()(data);return}this.pending.push(data)}async recv(){return new Promise((resolve,_reject)=>{if(this.pending.length>0){resolve(this.pending.shift());return}this.waiting.push(resolve)})}}class WeakDioxusChannel{inner;constructor(channel){this.inner=new WeakRef(channel)}rustSend(data){let channel=this.inner.deref();if(channel)channel.rustSend(data)}async rustRecv(){let channel=this.inner.deref();if(channel)return await channel.rustRecv()}}class DioxusChannel{weak(){return new WeakDioxusChannel(this)}}window.__nextChannelId=0;window.__channels=[];class WebDioxusChannel extends DioxusChannel{js_to_rust;rust_to_js;owner;id;constructor(owner){super();this.owner=owner,this.js_to_rust=new Channel,this.rust_to_js=new Channel,this.id=window.__nextChannelId,window.__channels[this.id]=this,window.__nextChannelId+=1}weak(){return new WeakDioxusChannel(this)}async recv(){return await this.rust_to_js.recv()}send(data){this.js_to_rust.send(data)}rustSend(data){this.rust_to_js.send(data)}async rustRecv(){return await this.js_to_rust.recv()}close(){window.__channels[this.id]=null}}export{WebDioxusChannel};
+class Channel{pending;waiting;constructor(){this.pending=[],this.waiting=[]}send(data){if(this.waiting.length>0){this.waiting.shift()(data);return}this.pending.push(data)}async recv(){return new Promise((resolve,_reject)=>{if(this.pending.length>0){resolve(this.pending.shift());return}this.waiting.push(resolve)})}}class WeakDioxusChannel{inner;constructor(channel){this.inner=new WeakRef(channel)}rustSend(data){let channel=this.inner.deref();if(channel)channel.rustSend(data)}async rustRecv(){let channel=this.inner.deref();if(channel)return await channel.rustRecv()}}class DioxusChannel{weak(){return new WeakDioxusChannel(this)}}window.__nextChannelId=0;window.__channels=[];class WebDioxusChannel extends DioxusChannel{js_to_rust;rust_to_js;owner;id;constructor(owner){super();this.owner=owner,this.js_to_rust=new Channel,this.rust_to_js=new Channel,this.id=window.__nextChannelId,window.__channels[this.id]=this,window.__nextChannelId+=1}weak(){return new WeakDioxusChannel(this)}async recv(){return await this.rust_to_js.recv()}send(data){this.js_to_rust.send(data)}rustSend(data){this.rust_to_js.send(data)}async rustRecv(){return await this.js_to_rust.recv()}close(){window.__channels[this.id]=null}}export{WebDioxusChannel,WeakDioxusChannel};

+ 1 - 1
packages/web/src/js/hash.txt

@@ -1 +1 @@
-[857504888396904142]
+[460758788096589933]

+ 1 - 0
packages/web/src/ts/eval.ts

@@ -7,6 +7,7 @@ import {
 window.__nextChannelId = 0;
 window.__channels = [];
 
+export { WeakDioxusChannel };
 export class WebDioxusChannel extends DioxusChannel {
   js_to_rust: Channel;
   rust_to_js: Channel;