Clone in a terminal:
Commit ba49729
Johan Mattsson - 2026-06-28T14:35:11+00:00
ba497297a00ac1b02abef0046328270f2a7ef187johan.mattsson.m@gmail.com

Fix and log init

Changed files (3)

Diff

diff --git a/Cargo.lock b/Cargo.lockindex 7fe3f47..43168b9 100644--- a/Cargo.lock+++ b/Cargo.lock@@ -354,6 +354,15 @@ dependencies = [ ]  [[package]]+name = "inventory"+version = "0.3.24"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b"+dependencies = [+ "rustversion",+]++[[package]] name = "itoa" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -375,6 +384,8 @@ name = "kaja-web-component" version = "0.1.0" dependencies = [  "gloo",+ "gloo-console",+ "inventory",  "js-sys",  "proc-macro2",  "quote",diff --git a/Cargo.toml b/Cargo.tomlindex 2a1f080..6615d82 100644--- a/Cargo.toml+++ b/Cargo.toml@@ -14,6 +14,12 @@ gloo = "0.12.0" wasm-bindgen = "0.2.122" js-sys = "0.3" web-sys = { version = "0.3.99", features = ["Window", "HtmlElement", "CustomElementRegistry", "ElementDefinitionOptions"] }+inventory = "0.3.24"++[dev-dependencies]+gloo = "0.12.0"+gloo-console = "0.4.0"+wasm-bindgen = "0.2.122"  [patch.crates-io] kaja-callback-macro = { path = "../kaja-callback-macro" }diff --git a/src/init.rs b/src/init.rsindex 2b72880..e6efd64 100644--- a/src/init.rs+++ b/src/init.rs@@ -48,7 +48,7 @@ pub fn component_impl(attr: pm::TokenStream, item: pm::TokenStream) -> pm::Token     let component_rs_state_rs_fn = from_pascal_to_snake(component_rs_state_js_fn.as_str());     let component_rs_state_rs_js_ident = Ident::new(&component_rs_state_rs_fn, Span::call_site()); -    let create_js_fn = generate_create_component_fn(+    let create_js_fn = generate_register_component_fn(         fn_create_ident,         tag_lit.clone(),         component_rs_state_js_fn.as_str(),@@ -123,22 +123,25 @@ fn generate_default_component_rs_fn(     let store_name = store_name(&struct_name);     let counter_name = counter_name(&struct_name); +    let counter_ident = Ident::new(&counter_name, Span::call_site());+    let store_ident = Ident::new(&store_name, Span::call_site());+     let expanded = quote! {         #[callback(#js_name)] // initComponentStateStructName         #[allow(non_snake_case)]         pub fn #rust_name() -> u32 {  // init_component_state_struct_name, returns id for the instance of the element             log!("Run counter init rs state.");             let counter = #struct_name::default();-            let wasm_id = #counter_name.fetch_add(1, std::sync::atomic::Ordering::Relaxed)+            let wasm_id = #counter_ident.fetch_add(1, std::sync::atomic::Ordering::Relaxed); -            let mut store = #store_name.write();+            let mut store = #store_ident.write().expect("failed to acquire write lock");              if store.is_none() {                 *store = Some(std::collections::HashMap::new());             } -            let store_instance = *store.unwrap();-            store_instance.set(wasm_id, counter);+            let store_map = store.as_mut().unwrap();+            store_map.insert(wasm_id, counter);             wasm_id         }     };@@ -146,16 +149,26 @@ fn generate_default_component_rs_fn(     expanded } -fn generate_create_component_fn(+fn generate_register_component_fn(     name: Ident,     tag: LitStr,     init_state_fn: &str, ) -> proc_macro2::TokenStream {+    let name_str_lit = LitStr::new(&name.to_string(), Span::call_site());+     let expanded = quote! {+        ::inventory::submit! {+            InitFn(#name)+        }+         #[allow(non_snake_case)]         pub fn #name() { // createComponentTheStructName             let wasm_id = 0; +            let component_name = #name_str_lit;+            let tag_name = #tag;+            log!("init component", component_name, tag_name);+             let js_init = String::from(                 r#"                     let componentId = -1;

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112