Commit 04dee4d
Pass HTML element to callback
Changed files (5)
modifiedCargo.lockmodifiedCargo.tomlmodifiedREADME.mdmodifiedsrc/lib.rsaddedtests/htmlelementarg.rs
Diff
@@ -3,23 +3,6 @@ version = 4 [[package]]-name = "async-trait"-version = "0.1.89"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"-dependencies = [- "proc-macro2",- "quote",- "syn 2.0.117",-]--[[package]]-name = "autocfg"-version = "1.5.1"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"--[[package]] name = "bincode" version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -41,50 +24,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]]-name = "cast"-version = "0.3.0"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"--[[package]]-name = "cc"-version = "1.2.63"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"-dependencies = [- "find-msvc-tools",- "shlex",-]--[[package]] name = "cfg-if" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]]-name = "ctor"-version = "0.1.26"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"-dependencies = [- "quote",- "syn 1.0.109",-]--[[package]] name = "equivalent" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]]-name = "find-msvc-tools"-version = "0.1.9"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"--[[package]] name = "form_urlencoded" version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -183,17 +134,6 @@ dependencies = [ ] [[package]]-name = "ghost"-version = "0.1.21"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "fe3de42e89f5bd0686d0058be48d545333311e34c763f85324938ba7cc473149"-dependencies = [- "proc-macro2",- "quote",- "syn 2.0.117",-]--[[package]] name = "gloo" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -267,7 +207,7 @@ dependencies = [ "gloo-events", "gloo-utils 0.3.0", "serde",- "serde-wasm-bindgen",+ "serde-wasm-bindgen 0.6.5", "serde_urlencoded", "thiserror 2.0.18", "wasm-bindgen",@@ -415,24 +355,11 @@ dependencies = [ [[package]] name = "inventory"-version = "0.1.11"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "f0eb5160c60ba1e809707918ee329adb99d222888155835c6feedba19f6c3fd4"-dependencies = [- "ctor",- "ghost",- "inventory-impl",-]--[[package]]-name = "inventory-impl"-version = "0.1.11"+version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "7e41b53715c6f0c4be49510bb82dee2c1e51c8586d885abe65396e82ed518548"+checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" dependencies = [- "proc-macro2",- "quote",- "syn 1.0.109",+ "rustversion", ] [[package]]@@ -458,24 +385,25 @@ name = "kaja-callback-macro" version = "1.0.0" dependencies = [ "gloo",+ "gloo-console", "inventory", "js-sys", "kaja-html-macro", "proc-macro2", "quote", "serde",- "serde-wasm-bindgen",+ "serde-wasm-bindgen 0.5.0", "syn 2.0.117", "wasm-bindgen",- "wasm-bindgen-test",+ "wasm-bindgen-futures", "web-sys", ] [[package]] name = "kaja-html-macro"-version = "1.0.3"+version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "46133dd45e19d67a03f37f98e356c3851845cec889434a6f928c1403f6abac02"+checksum = "c05d3753d11ea3be7328e65c138be178ae77ebb10386aed18ce2342f8c96cf28" dependencies = [ "proc-macro-error", "proc-macro2",@@ -490,59 +418,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]]-name = "libm"-version = "0.2.16"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"--[[package]] name = "memchr" version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" [[package]]-name = "minicov"-version = "0.3.8"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d"-dependencies = [- "cc",- "walkdir",-]--[[package]]-name = "nu-ansi-term"-version = "0.50.3"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"-dependencies = [- "windows-sys",-]--[[package]]-name = "num-traits"-version = "0.2.19"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"-dependencies = [- "autocfg",- "libm",-]--[[package]] name = "once_cell" version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]]-name = "oorandom"-version = "11.1.5"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"--[[package]] name = "percent-encoding" version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -649,15 +536,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]]-name = "same-file"-version = "1.0.6"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"-dependencies = [- "winapi-util",-]--[[package]] name = "serde" version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -669,6 +547,17 @@ dependencies = [ [[package]] name = "serde-wasm-bindgen"+version = "0.5.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e"+dependencies = [+ "js-sys",+ "serde",+ "wasm-bindgen",+]++[[package]]+name = "serde-wasm-bindgen" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"@@ -724,12 +613,6 @@ dependencies = [ ] [[package]]-name = "shlex"-version = "2.0.1"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"--[[package]] name = "slab" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -742,7 +625,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2",- "quote", "unicode-ident", ] @@ -827,16 +709,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]]-name = "walkdir"-version = "2.5.0"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"-dependencies = [- "same-file",- "winapi-util",-]--[[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -898,45 +770,6 @@ dependencies = [ ] [[package]]-name = "wasm-bindgen-test"-version = "0.3.72"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "74fde991ccdc895cb7fbaa14b137d62af74d9011be67b71c694bfc40edd3119c"-dependencies = [- "async-trait",- "cast",- "js-sys",- "libm",- "minicov",- "nu-ansi-term",- "num-traits",- "oorandom",- "serde",- "serde_json",- "wasm-bindgen",- "wasm-bindgen-futures",- "wasm-bindgen-test-macro",- "wasm-bindgen-test-shared",-]--[[package]]-name = "wasm-bindgen-test-macro"-version = "0.3.72"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "e925354648d2a4d1bf205412e36d520a800280622eef4719678d268e5d40e978"-dependencies = [- "proc-macro2",- "quote",- "syn 2.0.117",-]--[[package]]-name = "wasm-bindgen-test-shared"-version = "0.2.122"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "684365b586a9a6256c1cc3544eee8680de48d6041142f581776ec7b139622ae9"--[[package]] name = "web-sys" version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -947,30 +780,6 @@ dependencies = [ ] [[package]]-name = "winapi-util"-version = "0.1.11"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"-dependencies = [- "windows-sys",-]--[[package]]-name = "windows-link"-version = "0.2.1"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"--[[package]]-name = "windows-sys"-version = "0.61.2"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"-dependencies = [- "windows-link",-]--[[package]] name = "winnow" version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -18,11 +18,13 @@ proc-macro2 = "1" gloo = "0.12.0" [dev-dependencies]+gloo = "0.12.0"+gloo-console = "0.4.0" kaja-html-macro = "1.0.3"-wasm-bindgen = "0.2"-js-sys = "0.3"-web-sys = { version = "0.3", features = ["Window"] }+wasm-bindgen = "0.2.122"+web-sys = { version = "0.3.99", features = ["Document", "HtmlDocument", "Element", "HtmlElement", "HtmlInputElement", "NodeList"] } serde = { version = "1.0", features = ["derive"] }-serde-wasm-bindgen = "0.6"-inventory = "0.1"-wasm-bindgen-test = "0.3"+serde-wasm-bindgen = "0.5"+inventory = "0.3.24"+js-sys = "0.3"+wasm-bindgen-futures = "0.4.72"@@ -4,7 +4,7 @@ This is a tag for annotating Rust functions that should be used as callbacks in JavaScript using the kaja-web framework. Example usage:-```rust+```rust,ignore use kaja_html_macro; use kaja_web::prelude::*; @@ -11,8 +11,8 @@ use syn::{FnArg, Ident, ItemFn, LitStr, parse_macro_input}; /// in the Kaja Web Framework (WebAssembly, Rust). /// /// Example usage:-/// ```-/// kaja_web::prelude::*;+/// ```rust,ignore+/// kaja_web::prelude::* /// /// #[derive(serde::Deserialize)] /// struct SomeClickEvent {@@ -169,6 +169,7 @@ fn generate_callback_closure( // If the expected Rust type is JsValue, skip serde conversion and // pass the JsValue through directly. let ty_tokens = quote! { #ty }.to_string();+ let conv = if ty_tokens.contains("JsValue") { quote! { let #rs_ident = #val_ident;@@ -176,8 +177,10 @@ fn generate_callback_closure( } else if ty_tokens.contains("web_sys") || ty_tokens.contains("js_sys") || ty_tokens.contains("wasm_bindgen")+ || ty_tokens.contains("HtmlElement") { // Convert JsValue -> web_sys/js_sys type using JsCast::dyn_into+ // Treat bare `HtmlElement` identifiers as web_sys elements as well quote! { let #res_ident = #val_ident.clone().dyn_into::<#ty>(); if #res_ident.is_err() {new file mode 100644@@ -0,0 +1,15 @@+use kaja_callback_macro::callback;+use wasm_bindgen::prelude::*;+use web_sys::HtmlElement;++pub struct InitFn(pub fn());++inventory::collect!(InitFn);++#[callback(counterComponentDisconnect)]+fn pass_html_element_in_args(element: HtmlElement, _wasm_id: u32) {+ println!("Works {}", element.id());+}++#[test]+fn it_compiles() {}