diff --git a/Cargo.lock b/Cargo.lock index fbe19887..b86f0acc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -213,9 +213,9 @@ dependencies = [ [[package]] name = "anyrender_vello" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de526a0f2b1ff121db1abde218e8285a54059d444f4947ea8e09db915f656064" +checksum = "6dd9574a872584fa9c7be06ed8be1c4875aeae37e74a567597125f3ec4579bd3" dependencies = [ "anyrender", "debug_timer", @@ -394,7 +394,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.1.2", + "rustix 1.1.3", "slab", "windows-sys 0.61.2", ] @@ -425,7 +425,7 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 1.1.2", + "rustix 1.1.3", ] [[package]] @@ -436,7 +436,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -451,7 +451,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.1.2", + "rustix 1.1.3", "signal-hook-registry", "slab", "windows-sys 0.61.2", @@ -476,7 +476,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -493,7 +493,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -606,9 +606,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ "axum-core", "axum-macros", @@ -644,9 +644,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", @@ -692,7 +692,7 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -927,12 +927,6 @@ dependencies = [ "piper", ] -[[package]] -name = "bumpalo" -version = "3.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" - [[package]] name = "bytemuck" version = "1.24.0" @@ -950,7 +944,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -967,9 +961,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] @@ -1027,9 +1021,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.45" +version = "1.2.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" +checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3" dependencies = [ "find-msvc-tools", "jobserver", @@ -1258,30 +1252,49 @@ dependencies = [ [[package]] name = "const-serialize" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd339aa356cc6452308fad2ee56623f900a8e68bc0ab9360a0ddb8270e5640c8" +checksum = "ad7154afa56de2f290e3c82c2c6dc4f5b282b6870903f56ef3509aba95866edc" +dependencies = [ + "const-serialize-macro 0.7.2", +] + +[[package]] +name = "const-serialize" +version = "0.8.0" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ - "const-serialize-macro", + "const-serialize 0.7.2", + "const-serialize-macro 0.8.0-alpha.0", "serde", ] [[package]] name = "const-serialize-macro" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "797d158acb331e2a89d696343a27cd39bf7e36aaef33ba4799a5ef1526e24861" +checksum = "4f160aad86b4343e8d4e261fee9965c3005b2fd6bc117d172ab65948779e4acf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", +] + +[[package]] +name = "const-serialize-macro" +version = "0.8.0-alpha.0" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] name = "const-str" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4d34b8f066904ed7cfa4a6f9ee96c3214aa998cb44b69ca20bd2054f47402ed" +checksum = "b0664d2867b4a32697dfe655557f5c3b187e9b605b38612a748e5ec99811d160" [[package]] name = "const_format" @@ -1340,9 +1353,9 @@ dependencies = [ [[package]] name = "cookie_store" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9" +checksum = "3fc4bff745c9b4c7fb1e97b25d13153da2bc7796260141df62378998d070207f" dependencies = [ "cookie", "document-features", @@ -1457,6 +1470,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-channel" version = "0.5.15" @@ -1545,7 +1564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -1595,7 +1614,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -1608,7 +1627,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -1619,7 +1638,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -1630,7 +1649,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -1684,7 +1703,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -1704,7 +1723,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "unicode-xid", ] @@ -1720,9 +1739,8 @@ dependencies = [ [[package]] name = "dioxus" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f76e820919058a685a1fdbb2ef4888c73ac77d623c39a7dfde2aa812947246be" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-asset-resolver", "dioxus-cli-config", @@ -1755,9 +1773,8 @@ dependencies = [ [[package]] name = "dioxus-asset-resolver" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6a124667ce5565c39fe2f33af45c21fe459c5bfcf7a8074ad12c9e9da5817c" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-cli-config", "http", @@ -1776,18 +1793,16 @@ dependencies = [ [[package]] name = "dioxus-cli-config" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "babc8eaf90379352bc4820830749fd231feb9312433d4094b4e7b79d912b3d96" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "wasm-bindgen", ] [[package]] name = "dioxus-config-macro" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30018b5b95567cee42febbb444d5e5e47dbe3e91fa6e44b9e571edad0184cd36" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "proc-macro2", "quote", @@ -1795,15 +1810,13 @@ dependencies = [ [[package]] name = "dioxus-config-macros" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a16b25f8761253ed5ffa4d0789376310fbbc1bbaa8190fc2f374db82c6285a1" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" [[package]] name = "dioxus-core" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75468d08468919f783b0f7ee826802f4e8e66c5b5a0451245d861c211ca18216" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "anyhow", "const_format", @@ -1819,33 +1832,29 @@ dependencies = [ "slotmap", "subsecond", "tracing", - "warnings", ] [[package]] name = "dioxus-core-macro" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f145abdb2a3f858456cb4382390863cf0398c228ad0733618f48891da7687be3" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "convert_case 0.8.0", "dioxus-rsx", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] name = "dioxus-core-types" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f5ecf5a51de06d78aded3b5f7516a258f53117cba718bc5706317a3c04c844" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" [[package]] name = "dioxus-desktop" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f493c74ff09410c5eadf42abd031d4b3d4032a4d5a2411c77d1d0d5156ca3687" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "async-trait", "base64", @@ -1869,7 +1878,7 @@ dependencies = [ "global-hotkey", "infer", "jni", - "lazy-js-bundle 0.7.1", + "lazy-js-bundle 0.7.2 (git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen)", "libc", "muda", "ndk", @@ -1889,18 +1898,19 @@ dependencies = [ "tao", "thiserror 2.0.17", "tokio", + "tokio-util", "tracing", "tray-icon", "tungstenite 0.27.0", + "wasm-bindgen", "webbrowser", "wry", ] [[package]] name = "dioxus-devtools" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb2c5019b7fa72e8e6b21ba99e9263bd390c9a30bbf09793b72f4b57ed7c3d7" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1914,14 +1924,12 @@ dependencies = [ "thiserror 2.0.17", "tracing", "tungstenite 0.27.0", - "warnings", ] [[package]] name = "dioxus-devtools-types" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b007cec5b8548281921c4e4678926a3936e9d6757e951380685cc6121a6f974" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-core", "serde", @@ -1930,9 +1938,8 @@ dependencies = [ [[package]] name = "dioxus-document" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c55bcae9aaf150d4a141c61b3826da5a7ac23dfff09726568525cd46336e9a2" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-core", "dioxus-core-macro", @@ -1941,7 +1948,7 @@ dependencies = [ "futures-channel", "futures-util", "generational-box", - "lazy-js-bundle 0.7.1", + "lazy-js-bundle 0.7.2 (git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen)", "serde", "serde_json", "tracing", @@ -1949,9 +1956,8 @@ dependencies = [ [[package]] name = "dioxus-fullstack" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff04cef82d6639eb15186f626298645dbd92978bf66dc3efd2e5984a2ff4a1ff" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "anyhow", "async-stream", @@ -2014,9 +2020,8 @@ dependencies = [ [[package]] name = "dioxus-fullstack-core" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41281c7cd4d311a50933256e19a5d91d0d950ad350dd3232bd4321fdd3a59fb0" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "anyhow", "axum-core", @@ -2042,23 +2047,21 @@ dependencies = [ [[package]] name = "dioxus-fullstack-macro" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae73023c8b8fee2692fc50a28063336f0b6930e86727e30c1047c92d30805b49" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "const_format", "convert_case 0.8.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "xxhash-rust", ] [[package]] name = "dioxus-history" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac73657da5c7a20629482d774b52f4a4f7cb57a520649f1d855d4073e809c98" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-core", "tracing", @@ -2066,9 +2069,8 @@ dependencies = [ [[package]] name = "dioxus-hooks" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffd445f16d64939e06cd71a1c63a665f383fda6b7882f4c6f8f1bd6efca2046" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-core", "dioxus-signals", @@ -2078,14 +2080,12 @@ dependencies = [ "rustversion", "slab", "tracing", - "warnings", ] [[package]] name = "dioxus-html" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f407fc73a9554a644872fcccc9faf762acad8f45158e3d67e42ab8dd42f4586" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "async-trait", "bytes", @@ -2100,7 +2100,7 @@ dependencies = [ "futures-util", "generational-box", "keyboard-types", - "lazy-js-bundle 0.7.1", + "lazy-js-bundle 0.7.2 (git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen)", "rustversion", "serde", "serde_json", @@ -2110,14 +2110,13 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a968aae4bc92de87cbac3d0d043803b25a7c62c187841e61adcc9b49917c2b2a" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "convert_case 0.8.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -2134,15 +2133,14 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ab170d89308399205f8ad3d43d8d419affe317016b41ca0695186f7593cba2" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-core", "dioxus-core-types", "dioxus-html", "js-sys", - "lazy-js-bundle 0.7.1", + "lazy-js-bundle 0.7.2 (git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen)", "rustc-hash 2.1.1", "serde", "sledgehammer_bindgen", @@ -2154,9 +2152,8 @@ dependencies = [ [[package]] name = "dioxus-liveview" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4f2850ec1a468c6f15b578c43218562d2309aadaf2b8bf17f54ce30e72f594" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "axum", "dioxus-cli-config", @@ -2182,9 +2179,8 @@ dependencies = [ [[package]] name = "dioxus-logger" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42237934c6a67f5ed9a8c37e47ca980ee7cfec9e783a9a1f8c2e36c8b96ae74b" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-cli-config", "tracing", @@ -2194,9 +2190,8 @@ dependencies = [ [[package]] name = "dioxus-native" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1468a33d63d9e23b749a0630b48bcd21e65b60c9c2c0a52d1aeaee52c034747c" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "anyrender", "anyrender_vello", @@ -2225,9 +2220,8 @@ dependencies = [ [[package]] name = "dioxus-native-dom" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dc2c524c5bc84a998db9ca22075a8b375ff4cfe1415abe2cc84ee7f653e086b" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "blitz-dom", "blitz-traits", @@ -2244,19 +2238,25 @@ version = "0.0.1" dependencies = [ "dioxus", "dioxus-sdk-time", + "gloo-events", + "gloo-timers", + "js-sys", "lazy-js-bundle 0.6.2", "num-integer", "time", "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] name = "dioxus-primitives" version = "0.0.1" -source = "git+https://github.com/DioxusLabs/components#98067ce2da493651b0c089db91e9903714c211f7" +source = "git+https://github.com/DioxusLabs/components#db92c1eff9760f3240fd0d81cabee232b4dcf56b" dependencies = [ "dioxus", - "dioxus-time", + "dioxus-sdk-time", "lazy-js-bundle 0.6.2", "num-integer", "time", @@ -2265,9 +2265,8 @@ dependencies = [ [[package]] name = "dioxus-router" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf1b95b7cafd07a2b39651ab2b146e4aa72acb0295cd52f422b7db5e2ab6eeb" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -2286,9 +2285,8 @@ dependencies = [ [[package]] name = "dioxus-router-macro" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a292046c5d166046ae027fce47b177a733946cf1efc8d006de9f4064f69110cd" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "base16", "digest", @@ -2296,19 +2294,19 @@ dependencies = [ "quote", "sha2", "slab", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] name = "dioxus-rsx" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f026380dfda8b93ad995c0a90a62a17b8afeb246baff1b781a52c7b1b3ebd791" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.110", + "rustversion", + "syn 2.0.114", ] [[package]] @@ -2325,9 +2323,8 @@ dependencies = [ [[package]] name = "dioxus-server" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "012e972802d2dc4f4afab89bb4c7695e6a7b8b8a81b6bc30d43c1a42e11eb6ff" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "anyhow", "async-trait", @@ -2383,9 +2380,8 @@ dependencies = [ [[package]] name = "dioxus-signals" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3895cc17ff5b43ada07743111be586e7a927ed7ec511457020e4235e13e63fe6" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-core", "futures-channel", @@ -2399,9 +2395,8 @@ dependencies = [ [[package]] name = "dioxus-ssr" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592391fc30a77f94bc5a3385d1569052907e3b3cecb28099671b9d5801dee6c6" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "askama_escape", "dioxus-core", @@ -2411,43 +2406,30 @@ dependencies = [ [[package]] name = "dioxus-stores" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8521729ac35f362476ac4eb7d1c4ab79e7e92a0facfdea3ee978c0ddf7108d37" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-core", "dioxus-signals", "dioxus-stores-macro", + "generational-box", ] [[package]] name = "dioxus-stores-macro" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a733d2684dc843e81954f6176b3353e4cfc71b6978a8e464591bb5536f610b" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "convert_case 0.8.0", "proc-macro2", "quote", - "syn 2.0.110", -] - -[[package]] -name = "dioxus-time" -version = "0.7.0" -source = "git+https://github.com/ealmloff/dioxus-std?branch=0.7#8c868ac1d60e3232e3f16f6195d6deb3c016de17" -dependencies = [ - "dioxus", - "futures", - "gloo-timers", - "tokio", + "syn 2.0.114", ] [[package]] name = "dioxus-web" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76155ecd44535e7c096ec8c5aac4a945899e47567ead4869babdaa74f3f9bca0" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -2464,7 +2446,7 @@ dependencies = [ "generational-box", "gloo-timers", "js-sys", - "lazy-js-bundle 0.7.1", + "lazy-js-bundle 0.7.2 (git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen)", "rustc-hash 2.1.1", "send_wrapper", "serde", @@ -2524,7 +2506,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -2538,9 +2520,9 @@ dependencies = [ [[package]] name = "dlopen2" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b54f373ccf864bf587a89e880fb7610f8d73f3045f13580948ccbcaff26febff" +checksum = "8d65cde5fb0c42a3d5882d99807698b459f5928de035fa7f547c784fb7b34219" dependencies = [ "dlopen2_derive", "libc", @@ -2550,13 +2532,13 @@ dependencies = [ [[package]] name = "dlopen2_derive" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" +checksum = "95f4a04e1bfbfa4835a6073177aafb95ead4de0722dbb339195fdc7e0a09599b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -2582,9 +2564,9 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "dtoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" [[package]] name = "dtoa-short" @@ -2618,9 +2600,9 @@ dependencies = [ [[package]] name = "endi" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" [[package]] name = "enumflags2" @@ -2640,7 +2622,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -2661,7 +2643,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -2753,9 +2735,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41" [[package]] name = "flate2" @@ -2927,7 +2909,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -3041,7 +3023,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -3170,9 +3152,8 @@ dependencies = [ [[package]] name = "generational-box" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c1ae09dfd2d455484a54b56129b9821241c4b0e412227806b6c3730cd18a29" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "parking_lot", "tracing", @@ -3194,7 +3175,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.3", "windows-link 0.2.1", ] @@ -3332,7 +3313,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -3362,6 +3343,16 @@ dependencies = [ "xkeysym", ] +[[package]] +name = "gloo-events" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27c26fb45f7c385ba980f5fa87ac677e363949e065a083722697ef1b2cc91e41" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + [[package]] name = "gloo-net" version = "0.6.0" @@ -3547,9 +3538,9 @@ dependencies = [ [[package]] name = "grid" -version = "0.18.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12101ecc8225ea6d675bc70263074eab6169079621c2186fe0c66590b2df9681" +checksum = "f9e2d4c0a8296178d8802098410ca05d86b17a10bb5ab559b3fb404c1f948220" [[package]] name = "gtk" @@ -3600,7 +3591,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -3615,9 +3606,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -3680,9 +3671,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "allocator-api2", "equivalent", @@ -3792,12 +3783,11 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -3844,9 +3834,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1744436df46f0bde35af3eda22aeaba453aada65d8f1c171cd8a5f59030bd69f" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ "atomic-waker", "bytes", @@ -3900,9 +3890,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ "base64", "bytes", @@ -3919,6 +3909,7 @@ dependencies = [ "socket2", "system-configuration", "tokio", + "tower-layer", "tower-service", "tracing", "windows-registry", @@ -4076,7 +4067,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -4177,7 +4168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", ] [[package]] @@ -4225,9 +4216,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", @@ -4244,9 +4235,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "javascriptcore-rs" @@ -4305,9 +4296,8 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +version = "0.3.83" +source = "git+https://github.com/DioxusLabs/wasm-bindgen-wry#7bdcdb76f8e502e1ca89dfb32c248b1c9bb2a7d1" dependencies = [ "once_cell", "wasm-bindgen", @@ -4383,9 +4373,13 @@ checksum = "e49596223b9d9d4947a14a25c142a6e7d8ab3f27eb3ade269d238bb8b5c267e2" [[package]] name = "lazy-js-bundle" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "409273b42d0e3ae7c8ce6b8cfbc6a27b7c7d83bbb94fc7f93f22cc9b90eea078" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" + +[[package]] +name = "lazy-js-bundle" +version = "0.7.2" +source = "git+https://github.com/DioxusLabs/dioxus#15bf75b7b0df82384c98872eae80c12c299abf50" [[package]] name = "lazy_static" @@ -4419,9 +4413,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.177" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libloading" @@ -4451,13 +4445,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags 2.10.0", "libc", - "redox_syscall 0.5.18", + "redox_syscall 0.7.0", ] [[package]] @@ -4532,9 +4526,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "longest-increasing-subsequence" @@ -4544,11 +4538,11 @@ checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" [[package]] name = "lru" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" +checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" dependencies = [ - "hashbrown 0.16.0", + "hashbrown 0.16.1", ] [[package]] @@ -4571,7 +4565,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -4590,45 +4584,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f44db74bde26fdf427af23f1d146c211aed857c59e3be750cf2617f6b0b05c94" dependencies = [ "proc-macro2", - "syn 2.0.110", + "syn 2.0.114", "synstructure", ] [[package]] name = "manganis" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "124f8f094eb75783b38209ce4d534b9617da4efac652802d9bafe05043a3ec95" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ - "const-serialize", + "const-serialize 0.7.2", + "const-serialize 0.8.0", "manganis-core", "manganis-macro", ] [[package]] name = "manganis-core" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fbd1fb8c5aabcc54c6b02dbc968e1c89c28f3e543f2789ef9e3ce45dbdf5df" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ - "const-serialize", + "const-serialize 0.7.2", + "const-serialize 0.8.0", "dioxus-cli-config", "dioxus-core-types", "serde", + "winnow 0.7.14", ] [[package]] name = "manganis-macro" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d6fec2a8249739bb30b53a08ecbb217f76096c08f1053f38ec3981ba424c11" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "dunce", "macro-string", "manganis-core", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -4664,7 +4658,7 @@ checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -4675,7 +4669,7 @@ checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -4711,7 +4705,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.3", ] [[package]] @@ -4790,9 +4784,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", @@ -4833,7 +4827,7 @@ dependencies = [ "httparse", "memchr", "mime", - "spin", + "spin 0.9.8", "version_check", ] @@ -4991,7 +4985,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -5042,7 +5036,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -5397,6 +5391,10 @@ name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "onig" @@ -5443,7 +5441,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -5472,10 +5470,11 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orbclient" -version = "0.3.49" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247ad146e19b9437f8604c21f8652423595cf710ad108af40e77d3ae6e96b827" +checksum = "52ad2c6bae700b7aa5d1cc30c59bdd3a1c180b09dbaea51e2ae2b8e1cf211fdd" dependencies = [ + "libc", "libredox", ] @@ -5704,7 +5703,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -5757,7 +5756,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -5850,7 +5849,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.2", + "rustix 1.1.3", "windows-sys 0.61.2", ] @@ -5868,9 +5867,9 @@ checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "portable-atomic-util" @@ -5915,12 +5914,17 @@ dependencies = [ "dioxus", "dioxus-i18n", "dioxus-primitives 0.0.1", + "futures", + "gloo-timers", + "js-sys", "pulldown-cmark", "strum", "syntect", "time", "tracing", "unic-langid", + "wasm-bindgen", + "web-sys", ] [[package]] @@ -5949,7 +5953,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.7", + "toml_edit 0.23.10+spec-1.0.0", ] [[package]] @@ -5984,9 +5988,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] @@ -5999,7 +6003,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "version_check", ] @@ -6060,15 +6064,6 @@ dependencies = [ "serde", ] -[[package]] -name = "quick-xml" -version = "0.37.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" -dependencies = [ - "memchr", -] - [[package]] name = "quick-xml" version = "0.38.4" @@ -6135,9 +6130,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ "proc-macro2", ] @@ -6335,6 +6330,15 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "redox_syscall" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +dependencies = [ + "bitflags 2.10.0", +] + [[package]] name = "redox_users" version = "0.5.2" @@ -6371,9 +6375,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.12.24" +version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64", "bytes", @@ -6499,9 +6503,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ "bitflags 2.10.0", "errno", @@ -6512,9 +6516,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.35" +version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ "once_cell", "ring", @@ -6526,9 +6530,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282" dependencies = [ "web-time", "zeroize", @@ -6571,9 +6575,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "safe_arch" @@ -6691,9 +6695,9 @@ dependencies = [ [[package]] name = "self_cell" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" +checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" [[package]] name = "semver" @@ -6748,20 +6752,20 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -6794,7 +6798,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -6887,18 +6891,19 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "simplecss" @@ -6964,7 +6969,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f62f06db0370222f7f498ef478fce9f8df5828848d1d3517e3331936d7074f55" dependencies = [ "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -6978,9 +6983,9 @@ dependencies = [ [[package]] name = "slotmap" -version = "1.0.7" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" dependencies = [ "serde", "version_check", @@ -7074,6 +7079,15 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +dependencies = [ + "lock_api", +] + [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" @@ -7147,7 +7161,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -7233,7 +7247,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "synstructure", ] @@ -7306,9 +7320,8 @@ dependencies = [ [[package]] name = "subsecond" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "834e8caec50249083ee6972a2f7645c4baadcb39d49ea801da1dc1d5e1c2ccb9" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "js-sys", "libc", @@ -7325,9 +7338,8 @@ dependencies = [ [[package]] name = "subsecond-types" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6beffea67e72a7a530990b270fd0277971eae564fdc10c1e0080e928b477fab" +version = "0.7.2" +source = "git+https://github.com/ealmloff/dioxus?branch=wasm-bindgen#2c73079e5a6fb31055d0e642df9dfebea3eba093" dependencies = [ "serde", ] @@ -7378,9 +7390,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.110" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -7404,7 +7416,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -7464,9 +7476,9 @@ dependencies = [ [[package]] name = "taffy" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b25026fb8cc9ab51ab9fdabe5d11706796966f6d1c78e19871ef63be2b8f0644" +checksum = "41ba83ebaf2954d31d05d67340fd46cebe99da2b7133b0dd68d70c65473a437b" dependencies = [ "arrayvec", "grid", @@ -7523,7 +7535,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -7534,14 +7546,14 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.23.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.2", + "rustix 1.1.3", "windows-sys 0.61.2", ] @@ -7605,7 +7617,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -7616,7 +7628,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -7742,15 +7754,15 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "synstructure", ] [[package]] name = "tokio" -version = "1.48.0" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ "bytes", "libc", @@ -7771,7 +7783,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -7796,9 +7808,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -7832,9 +7844,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -7868,9 +7880,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] @@ -7901,23 +7913,23 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.7" +version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ "indexmap", - "toml_datetime 0.7.3", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", - "winnow 0.7.13", + "winnow 0.7.14", ] [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ - "winnow 0.7.13", + "winnow 0.7.14", ] [[package]] @@ -7938,9 +7950,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "bitflags 2.10.0", "bytes", @@ -7978,9 +7990,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -7990,20 +8002,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", ] @@ -8020,9 +8032,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "once_cell", @@ -8046,9 +8058,9 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b" +checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c" dependencies = [ "crossbeam-channel", "dirs", @@ -8199,15 +8211,15 @@ checksum = "a1249a628de3ad34b821ecb1001355bca3940bcb2f88558f1a8bd82e977f75b5" dependencies = [ "proc-macro-hack", "quote", - "syn 2.0.110", + "syn 2.0.114", "unic-langid-impl", ] [[package]] name = "unicase" -version = "2.8.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-bidi" @@ -8241,9 +8253,9 @@ checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-script" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" +checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" @@ -8283,14 +8295,15 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -8340,9 +8353,9 @@ checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" [[package]] name = "utf8-width" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" +checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" [[package]] name = "utf8_iter" @@ -8352,12 +8365,12 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.18.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ "js-sys", - "serde", + "serde_core", "wasm-bindgen", ] @@ -8493,7 +8506,7 @@ checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -8519,22 +8532,28 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +version = "0.2.106" +source = "git+https://github.com/DioxusLabs/wasm-bindgen-wry#7bdcdb76f8e502e1ca89dfb32c248b1c9bb2a7d1" dependencies = [ - "cfg-if", + "async-channel", + "base64", + "bytemuck", + "futures-channel", + "futures-core", + "futures-util", + "http", + "inventory", + "lazy-js-bundle 0.7.2 (git+https://github.com/DioxusLabs/dioxus)", "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", + "pollster 0.4.0", + "spin 0.10.0", + "wry-bindgen-macro", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +version = "0.4.56" +source = "git+https://github.com/DioxusLabs/wasm-bindgen-wry#7bdcdb76f8e502e1ca89dfb32c248b1c9bb2a7d1" dependencies = [ "cfg-if", "js-sys", @@ -8543,38 +8562,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.110", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" -dependencies = [ - "unicode-ident", -] - [[package]] name = "wasm-streams" version = "0.4.2" @@ -8590,13 +8577,13 @@ dependencies = [ [[package]] name = "wayland-backend" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +checksum = "fee64194ccd96bf648f42a65a7e589547096dfa702f7cadef84347b66ad164f9" dependencies = [ "cc", "downcast-rs", - "rustix 1.1.2", + "rustix 1.1.3", "scoped-tls", "smallvec", "wayland-sys", @@ -8604,12 +8591,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.11" +version = "0.31.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec" dependencies = [ "bitflags 2.10.0", - "rustix 1.1.2", + "rustix 1.1.3", "wayland-backend", "wayland-scanner", ] @@ -8627,20 +8614,20 @@ dependencies = [ [[package]] name = "wayland-cursor" -version = "0.31.11" +version = "0.31.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +checksum = "5864c4b5b6064b06b1e8b74ead4a98a6c45a285fe7a0e784d24735f011fdb078" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.3", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.32.9" +version = "0.32.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3" dependencies = [ "bitflags 2.10.0", "wayland-backend", @@ -8650,9 +8637,9 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +checksum = "aa98634619300a535a9a97f338aed9a5ff1e01a461943e8346ff4ae26007306b" dependencies = [ "bitflags 2.10.0", "wayland-backend", @@ -8663,9 +8650,9 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +checksum = "e9597cdf02cf0c34cd5823786dce6b5ae8598f05c2daf5621b6e178d4f7345f3" dependencies = [ "bitflags 2.10.0", "wayland-backend", @@ -8676,20 +8663,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.7" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +checksum = "5423e94b6a63e68e439803a3e153a9252d5ead12fd853334e2ad33997e3889e3" dependencies = [ "proc-macro2", - "quick-xml 0.37.5", + "quick-xml 0.38.4", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.7" +version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +checksum = "1e6dbfc3ac5ef974c92a2235805cc0114033018ae1290a72e474aa8b28cbbdfd" dependencies = [ "dlib", "log", @@ -8699,9 +8686,8 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +version = "0.3.83" +source = "git+https://github.com/DioxusLabs/wasm-bindgen-wry#7bdcdb76f8e502e1ca89dfb32c248b1c9bb2a7d1" dependencies = [ "js-sys", "wasm-bindgen", @@ -8791,18 +8777,18 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" dependencies = [ "rustls-pki-types", ] [[package]] name = "webview2-com" -version = "0.38.0" +version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" dependencies = [ "webview2-com-macros", "webview2-com-sys", @@ -8814,20 +8800,20 @@ dependencies = [ [[package]] name = "webview2-com-macros" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] name = "webview2-com-sys" -version = "0.38.0" +version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" dependencies = [ "thiserror 2.0.17", "windows 0.61.3", @@ -9098,9 +9084,9 @@ dependencies = [ [[package]] name = "wgpu_context" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066bd52170313ca33ba22c7cdc442bf9dbc06a1539eed1719ff7ae63386c0cae" +checksum = "a0f49e6f733fcc61e41a5ecdb36910baa5148497036784bca319289bfdca6141" dependencies = [ "futures-intrusive", "wgpu 26.0.1", @@ -9249,7 +9235,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -9260,7 +9246,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -9271,7 +9257,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -9282,7 +9268,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -9667,9 +9653,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] @@ -9741,6 +9727,25 @@ dependencies = [ "windows-version", ] +[[package]] +name = "wry-bindgen-macro" +version = "0.1.0" +source = "git+https://github.com/DioxusLabs/wasm-bindgen-wry#7bdcdb76f8e502e1ca89dfb32c248b1c9bb2a7d1" +dependencies = [ + "quote", + "wry-bindgen-macro-support", +] + +[[package]] +name = "wry-bindgen-macro-support" +version = "0.1.0" +source = "git+https://github.com/DioxusLabs/wasm-bindgen-wry#7bdcdb76f8e502e1ca89dfb32c248b1c9bb2a7d1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "x11" version = "2.21.0" @@ -9773,7 +9778,7 @@ dependencies = [ "libc", "libloading 0.8.9", "once_cell", - "rustix 1.1.2", + "rustix 1.1.3", "x11rb-protocol", ] @@ -9892,7 +9897,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "synstructure", ] @@ -9957,7 +9962,7 @@ dependencies = [ "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow 0.7.13", + "winnow 0.7.14", "zbus_macros 5.12.0", "zbus_names 4.2.0", "zvariant 5.8.0", @@ -9981,7 +9986,7 @@ checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "zbus-lockstep", "zbus_xml", "zvariant 4.2.0", @@ -9996,7 +10001,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "zvariant_utils 2.1.0", ] @@ -10009,7 +10014,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "zbus_names 4.2.0", "zvariant 5.8.0", "zvariant_utils 3.2.1", @@ -10034,7 +10039,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", - "winnow 0.7.13", + "winnow 0.7.14", "zvariant 5.8.0", ] @@ -10059,22 +10064,22 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -10094,7 +10099,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "synstructure", ] @@ -10123,9 +10128,15 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] +[[package]] +name = "zmij" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fc5a66a20078bf1251bde995aa2fdcc4b800c70b5d92dd2c62abc5c60f679f8" + [[package]] name = "zune-core" version = "0.4.12" @@ -10164,7 +10175,7 @@ dependencies = [ "enumflags2", "serde", "url", - "winnow 0.7.13", + "winnow 0.7.14", "zvariant_derive 5.8.0", "zvariant_utils 3.2.1", ] @@ -10178,7 +10189,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "zvariant_utils 2.1.0", ] @@ -10191,7 +10202,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", "zvariant_utils 3.2.1", ] @@ -10203,7 +10214,7 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.114", ] [[package]] @@ -10215,6 +10226,6 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.110", - "winnow 0.7.13", + "syn 2.0.114", + "winnow 0.7.14", ] diff --git a/Cargo.toml b/Cargo.toml index 21cda6ed..930d26b2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,3 +15,11 @@ lto = true codegen-units = 1 strip = true incremental = false + +# Outside of wasm, we need to use our wry/desktop compatible patch for the wasm-bindgen family of libraries +[patch.crates-io] +dioxus = { git = "https://github.com/ealmloff/dioxus", branch = "wasm-bindgen" } +wasm-bindgen = { git = "https://github.com/DioxusLabs/wasm-bindgen-wry" } +wasm-bindgen-futures = { git = "https://github.com/DioxusLabs/wasm-bindgen-wry" } +js-sys = { git = "https://github.com/DioxusLabs/wasm-bindgen-wry" } +web-sys = { git = "https://github.com/DioxusLabs/wasm-bindgen-wry" } diff --git a/preview/Cargo.toml b/preview/Cargo.toml index 24c45db0..474e57bd 100644 --- a/preview/Cargo.toml +++ b/preview/Cargo.toml @@ -12,6 +12,16 @@ unic-langid = { version = "0.9", features = ["macros"] } strum = { version = "0.27.2", features = ["derive"] } tracing.workspace = true time = { version = "0.3.44", features = ["std", "macros"] } +wasm-bindgen = "0.2" +js-sys = "0.3" +gloo-timers = { version = "0.3", features = ["futures"] } +futures = "0.3" +web-sys = { version = "0.3", features = [ + "Window", + "Document", + "Element", + "HtmlElement", +] } [build-dependencies] syntect = "5.2" diff --git a/preview/src/components/progress/variants/main/mod.rs b/preview/src/components/progress/variants/main/mod.rs index 45d835ed..537b74e0 100644 --- a/preview/src/components/progress/variants/main/mod.rs +++ b/preview/src/components/progress/variants/main/mod.rs @@ -1,20 +1,19 @@ use super::super::component::*; use dioxus::prelude::*; +use futures::StreamExt; +use gloo_timers::future::IntervalStream; #[component] pub fn Demo() -> Element { let mut progress = use_signal(|| 0); use_effect(move || { - let mut timer = document::eval( - "setInterval(() => { - dioxus.send(Math.floor(Math.random() * 30)); - }, 1000);", - ); spawn(async move { - while let Ok(new_progress) = timer.recv::().await { + let mut interval = IntervalStream::new(1000); + while interval.next().await.is_some() { + let random_value = (js_sys::Math::random() * 30.0).floor() as usize; let mut progress = progress.write(); - *progress = (*progress + new_progress) % 101; + *progress = (*progress + random_value) % 101; } }); }); diff --git a/preview/src/main.rs b/preview/src/main.rs index d5f7c641..4244a1b6 100644 --- a/preview/src/main.rs +++ b/preview/src/main.rs @@ -4,6 +4,7 @@ use crate::components::{separator::Separator, tabs::component::*}; use crate::dioxus_router::LinkProps; use dioxus::prelude::*; use dioxus_i18n::prelude::*; +use wasm_bindgen::JsValue; use std::str::FromStr; use strum::{Display, EnumIter, EnumString, IntoEnumIterator}; @@ -155,9 +156,17 @@ fn NavigationLayout() -> Element { return; } - document::eval(&format!( - "window.top.postMessage({{ 'route': '{route}' }}, '*');" - )); + if let Some(window) = web_sys::window() { + if let Ok(Some(top)) = window.top() { + let message = js_sys::Object::new(); + let _ = js_sys::Reflect::set( + &message, + &JsValue::from_str("route"), + &JsValue::from_str(&route.to_string()), + ); + let _ = top.post_message(&message.into(), "*"); + } + } }); rsx! { @@ -339,9 +348,13 @@ fn CheckIcon() -> Element { fn set_theme(dark_mode: bool) { let theme = if dark_mode { "dark" } else { "light" }; - _ = document::eval(&format!( - "document.documentElement.setAttribute('data-theme', '{theme}');", - )); + if let Some(window) = web_sys::window() { + if let Some(document) = window.document() { + if let Some(doc_el) = document.document_element() { + let _ = doc_el.set_attribute("data-theme", theme); + } + } + } } #[component] diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 687ae1e8..4a7c5298 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -17,6 +17,23 @@ dioxus-sdk-time = "0.7.0" time = { version = "0.3.44", features = ["std", "macros", "parsing"] } num-integer = "0.1.46" tracing.workspace = true +wasm-bindgen = "0.2" +js-sys = "0.3" +wasm-bindgen-futures = "0.4" +gloo-events = "0.2" +gloo-timers = { version = "0.3", features = ["futures"] } +web-sys = { version = "0.3", features = [ + "Window", + "Document", + "Element", + "HtmlElement", + "HtmlInputElement", + "HtmlBodyElement", + "CssStyleDeclaration", + "EventTarget", + "KeyboardEvent", + "PointerEvent", +] } [build-dependencies] lazy-js-bundle = "0.6.2" diff --git a/primitives/src/alert_dialog.rs b/primitives/src/alert_dialog.rs index 476343de..1dadb5b6 100644 --- a/primitives/src/alert_dialog.rs +++ b/primitives/src/alert_dialog.rs @@ -1,5 +1,6 @@ //! Defines the [`AlertDialogRoot`] component and its sub-components. +use crate::focus_trap::{self, FocusTrap}; use crate::use_global_escape_listener; use crate::{use_animated_open, use_id_or, use_unique_id, FOCUS_TRAP_JS}; use dioxus::document; @@ -186,19 +187,13 @@ pub fn AlertDialogContent(props: AlertDialogContentProps) -> Element { let gen_id = use_unique_id(); let id = use_id_or(gen_id, props.id); - use_effect(move || { - document::eval(&format!( - r#"let dialog = document.getElementById("{id}"); - let is_open = {open}; - if (is_open) {{ - dialog.trap = window.createFocusTrap(dialog); - }} - if (!is_open && dialog.trap) {{ - dialog.trap.remove(); - dialog.trap = null; - }}"# - )); + let mut trap: Signal> = use_signal(|| None); + use_effect(move || { + let id_str = id(); + let is_open = open(); + let mut trap_ref = trap.write(); + focus_trap::setup_focus_trap(&id_str, is_open, &mut trap_ref); }); rsx! { diff --git a/primitives/src/checkbox.rs b/primitives/src/checkbox.rs index 03db4030..ec199dfa 100644 --- a/primitives/src/checkbox.rs +++ b/primitives/src/checkbox.rs @@ -1,8 +1,9 @@ //! Defines the [`Checkbox`] component and its subcomponents, which manage checkbox inputs with controlled state. use crate::{use_controlled, use_unique_id}; -use dioxus::{document::eval, prelude::*}; +use dioxus::prelude::*; use std::ops::Not; +use wasm_bindgen::JsCast; /// The state of a [`Checkbox`] component. #[derive(Debug, Clone, Copy, PartialEq)] @@ -236,31 +237,35 @@ fn BubbleInput( // Update the actual input state to match our virtual state. use_effect(move || { let checked = checked(); - let js = eval( - r#" - let id = await dioxus.recv(); - let action = await dioxus.recv(); - let input = document.getElementById(id); - - switch(action) { - case "checked": - input.checked = true; - input.indeterminate = false; - break; - case "indeterminate": - input.indeterminate = true; - input.checked = true; - break; - case "unchecked": - input.checked = false; - input.indeterminate = false; - break; + let id_str = id(); + + let Some(window) = web_sys::window() else { + return; + }; + let Some(document) = window.document() else { + return; + }; + let Some(element) = document.get_element_by_id(&id_str) else { + return; + }; + let Ok(input) = element.dyn_into::() else { + return; + }; + + match checked { + CheckboxState::Checked => { + input.set_checked(true); + input.set_indeterminate(false); } - "#, - ); - - let _ = js.send(id()); - let _ = js.send(checked.to_data_state()); + CheckboxState::Indeterminate => { + input.set_checked(true); + input.set_indeterminate(true); + } + CheckboxState::Unchecked => { + input.set_checked(false); + input.set_indeterminate(false); + } + } }); rsx! { diff --git a/primitives/src/context_menu.rs b/primitives/src/context_menu.rs index c519d14f..8b754b73 100644 --- a/primitives/src/context_menu.rs +++ b/primitives/src/context_menu.rs @@ -5,6 +5,7 @@ use crate::{ use_animated_open, use_controlled, use_effect_cleanup, use_id_or, use_unique_id, }; use dioxus::prelude::*; +use wasm_bindgen::JsCast; #[derive(Clone, Copy)] struct ContextMenuCtx { @@ -120,15 +121,27 @@ pub fn ContextMenu(props: ContextMenuProps) -> Element { }); // If the context menu is open, prevent pointer and scroll events outside of it - let pointer_events_disabled = |disabled| { - if disabled { - dioxus::document::eval( - "document.body.style.pointerEvents = 'none'; document.documentElement.style.overflow = 'hidden';", - ); + let pointer_events_disabled = |disabled: bool| { + let Some(window) = web_sys::window() else { + return; + }; + let Some(document) = window.document() else { + return; + }; + + let (pointer_events, overflow) = if disabled { + ("none", "hidden") } else { - dioxus::document::eval( - "document.body.style.pointerEvents = 'auto'; document.documentElement.style.overflow = 'auto';", - ); + ("auto", "auto") + }; + + if let Some(body) = document.body() { + let _ = body.style().set_property("pointer-events", pointer_events); + } + if let Some(doc_el) = document.document_element() { + if let Ok(html_el) = doc_el.dyn_into::() { + let _ = html_el.style().set_property("overflow", overflow); + } } }; use_effect(move || { diff --git a/primitives/src/dialog.rs b/primitives/src/dialog.rs index b4b80aec..fb9bc7b4 100644 --- a/primitives/src/dialog.rs +++ b/primitives/src/dialog.rs @@ -3,6 +3,7 @@ use dioxus::document; use dioxus::prelude::*; +use crate::focus_trap::{self, FocusTrap}; use crate::use_global_escape_listener; use crate::{use_animated_open, use_controlled, use_id_or, use_unique_id, FOCUS_TRAP_JS}; @@ -229,6 +230,8 @@ pub fn DialogContent(props: DialogContentProps) -> Element { let gen_id = use_unique_id(); let id = use_id_or(gen_id, props.id); + + let mut trap: Signal> = use_signal(|| None); use_effect(move || { let is_modal = is_modal(); if !is_modal { @@ -236,18 +239,10 @@ pub fn DialogContent(props: DialogContentProps) -> Element { return; } - document::eval(&format!( - r#"let dialog = document.getElementById("{id}"); - let is_open = {open}; - - if (is_open) {{ - dialog.trap = window.createFocusTrap(dialog); - }} - if (!is_open && dialog.trap) {{ - dialog.trap.remove(); - dialog.trap = null; - }}"# - )); + let id_str = id(); + let is_open = open(); + let mut trap_ref = trap.write(); + focus_trap::setup_focus_trap(&id_str, is_open, &mut trap_ref); }); rsx! { diff --git a/primitives/src/focus_trap.rs b/primitives/src/focus_trap.rs new file mode 100644 index 00000000..2ebc21a4 --- /dev/null +++ b/primitives/src/focus_trap.rs @@ -0,0 +1,44 @@ +//! Typed bindings for the focus trap JavaScript library. + +use wasm_bindgen::prelude::*; +use wasm_bindgen::JsCast; + +#[wasm_bindgen] +extern "C" { + /// A focus trap instance that keeps focus within a container element. + pub type FocusTrap; + + /// Creates a new focus trap for the given container element. + /// This calls `window.createFocusTrap(container)` defined in focus-trap.js. + #[wasm_bindgen(js_namespace = window, js_name = createFocusTrap)] + pub fn create_focus_trap(container: &web_sys::HtmlElement) -> FocusTrap; + + /// Removes the focus trap, restoring normal focus behavior. + #[wasm_bindgen(method)] + pub fn remove(this: &FocusTrap); +} + +/// Sets up or tears down a focus trap for the given element. +/// +/// When `open` is true, creates a new focus trap. When `open` is false, +/// removes any existing focus trap. +pub fn setup_focus_trap(id: &str, open: bool, trap: &mut Option) { + let Some(window) = web_sys::window() else { + return; + }; + let Some(document) = window.document() else { + return; + }; + let Some(element) = document.get_element_by_id(id) else { + return; + }; + let Ok(html_el) = element.dyn_into::() else { + return; + }; + + if open { + *trap = Some(create_focus_trap(&html_el)); + } else if let Some(t) = trap.take() { + t.remove(); + } +} diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index b58fa05f..2476f4a9 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -8,6 +8,9 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use dioxus::core::{current_scope_id, use_drop}; use dioxus::prelude::*; use dioxus::prelude::{asset, manganis, Asset}; +use gloo_events::EventListener; +use wasm_bindgen::JsCast; +use wasm_bindgen_futures::JsFuture; pub mod accordion; pub mod alert_dialog; @@ -21,6 +24,7 @@ pub mod date_picker; pub mod dialog; pub mod dropdown_menu; mod focus; +pub(crate) mod focus_trap; pub mod hover_card; pub mod label; pub mod menubar; @@ -160,27 +164,86 @@ fn use_global_escape_listener(mut on_escape: impl FnMut() + Clone + 'static) { fn use_global_keydown_listener(key: &'static str, on_escape: impl FnMut() + Clone + 'static) { use_effect_with_cleanup(move || { - let mut escape = document::eval(&format!( - "function listener(event) {{ - if (event.key === '{key}') {{ - event.preventDefault(); - dioxus.send(true); - }} - }} - document.addEventListener('keydown', listener); - await dioxus.recv(); - document.removeEventListener('keydown', listener);" - )); - let mut on_escape = on_escape.clone(); - spawn(async move { - while let Ok(true) = escape.recv().await { - on_escape(); - } - }); - move || _ = escape.send(true) + let listener = (|| { + let window = web_sys::window()?; + let document = window.document()?; + let mut on_escape = on_escape.clone(); + let listener = EventListener::new(&document, "keydown", move |event| { + let event = event.dyn_ref::().unwrap(); + if event.key() == key { + event.prevent_default(); + on_escape(); + } + }); + Some(listener) + })(); + move || drop(listener) }); } +/// Manual bindings for Web Animations API since web-sys doesn't have stable getAnimations. +mod animations { + use wasm_bindgen::prelude::*; + + #[wasm_bindgen] + extern "C" { + /// Represents a Web Animation. + pub type Animation; + + /// The `finished` promise that resolves when the animation completes. + #[wasm_bindgen(method, getter)] + pub fn finished(this: &Animation) -> js_sys::Promise; + } + + /// Get all animations running on an element using js_sys::Reflect. + pub fn get_animations(element: &web_sys::Element) -> js_sys::Array { + let method = js_sys::Reflect::get(element, &JsValue::from_str("getAnimations")) + .ok() + .and_then(|f| f.dyn_into::().ok()); + match method { + Some(func) => func + .call0(element) + .ok() + .and_then(|arr| arr.dyn_into::().ok()) + .unwrap_or_else(js_sys::Array::new), + None => js_sys::Array::new(), + } + } +} + +/// Wait for all animations on an element to finish. +async fn wait_for_animations(element_id: &str) { + let Some(window) = web_sys::window() else { + return; + }; + let Some(document) = window.document() else { + return; + }; + let Some(element) = document.get_element_by_id(element_id) else { + return; + }; + + let anims = animations::get_animations(&element); + if anims.length() == 0 { + return; + } + + let finished_promises = js_sys::Array::new(); + for i in 0..anims.length() { + let anim = anims.get(i); + if !anim.is_undefined() { + let anim: animations::Animation = anim.unchecked_into(); + finished_promises.push(&anim.finished()); + } + } + if finished_promises.length() == 0 { + return; + } + + let all_promise = js_sys::Promise::all(&finished_promises); + let _ = JsFuture::from(all_promise).await; +} + fn use_animated_open( id: impl Readable + Copy + 'static, open: impl Readable + Copy + 'static, @@ -198,17 +261,7 @@ fn use_animated_open( } else { spawn(async move { let id = id.cloned(); - let script = format!( - "const element = document.getElementById('{id}'); - if (element && element.getAnimations().length > 0) {{ - Promise.all(element.getAnimations().map((animation) => animation.finished)).then(() => {{ - dioxus.send(true); - }}); - }} else {{ - dioxus.send(true); - }}" - ); - _ = dioxus::document::eval(&script).recv::().await; + wait_for_animations(&id).await; show_in_dom.set(open); }); } diff --git a/primitives/src/popover.rs b/primitives/src/popover.rs index 1554092d..1482289c 100644 --- a/primitives/src/popover.rs +++ b/primitives/src/popover.rs @@ -3,6 +3,7 @@ use dioxus::document; use dioxus::prelude::*; +use crate::focus_trap::{self, FocusTrap}; use crate::use_global_escape_listener; use crate::{ use_animated_open, use_controlled, use_id_or, use_unique_id, ContentAlign, ContentSide, @@ -208,6 +209,7 @@ pub fn PopoverContent(props: PopoverContentProps) -> Element { let render = use_animated_open(id, ctx.open); + let mut trap: Signal> = use_signal(|| None); use_effect(move || { if !render() { return; @@ -218,18 +220,10 @@ pub fn PopoverContent(props: PopoverContentProps) -> Element { return; } - document::eval(&format!( - r#"let dialog = document.getElementById("{id}"); - let is_open = {open}; - - if (is_open) {{ - dialog.trap = window.createFocusTrap(dialog); - }} - if (!is_open && dialog.trap) {{ - dialog.trap.remove(); - dialog.trap = null; - }}"# - )); + let id_str = id(); + let is_open = open(); + let mut trap_ref = trap.write(); + focus_trap::setup_focus_trap(&id_str, is_open, &mut trap_ref); }); rsx! { diff --git a/primitives/src/slider.rs b/primitives/src/slider.rs index 866b38fb..f2dfa049 100644 --- a/primitives/src/slider.rs +++ b/primitives/src/slider.rs @@ -1,6 +1,6 @@ //! Defines the [`Slider`] component and its sub-components, which provide a range input control for selecting a value within a specified range. -use crate::dioxus_core::{queue_effect, Runtime}; +use crate::dioxus_core::queue_effect; use crate::use_controlled; use dioxus::html::geometry::euclid::Rect; use dioxus::html::geometry::euclid::Vector2D; @@ -8,7 +8,9 @@ use dioxus::html::geometry::Pixels; use dioxus::html::geometry::{ClientPoint, ClientSpace}; use dioxus::html::input_data::MouseButton; use dioxus::prelude::*; +use gloo_events::EventListener; use std::rc::Rc; +use wasm_bindgen::JsCast; /// The value of the slider. Currently this can only be a single value, but support for ranges is planned. #[derive(Debug, Clone, PartialEq)] @@ -43,52 +45,40 @@ impl Pointer { } static POINTERS: GlobalSignal> = Global::new(|| { - let runtime = Runtime::current(); queue_effect(move || { - runtime.spawn(ScopeId::ROOT, async move { - let mut pointer_updates = dioxus::document::eval( - "window.addEventListener('pointerdown', (e) => { - dioxus.send(['down', [e.pointerId, e.pageX, e.pageY]]); - }); - window.addEventListener('pointermove', (e) => { - dioxus.send(['move', [e.pointerId, e.pageX, e.pageY]]); - }); - window.addEventListener('pointerup', (e) => { - dioxus.send(['up', [e.pointerId, e.pageX, e.pageY]]); - });", - ); - - while let Ok((event_type, (pointer_id, x, y))) = - pointer_updates.recv::<(String, (i32, f64, f64))>().await - { - let position = ClientPoint::new(x, y); - - match event_type.as_str() { - "down" => { - // Add a new pointer - POINTERS.write().push(Pointer { - id: pointer_id, - position, - last_position: None, - }); - } - "move" => { - // Update the position of an existing pointer - if let Some(pointer) = - POINTERS.write().iter_mut().find(|p| p.id == pointer_id) - { - pointer.last_position = Some(pointer.position); - pointer.position = position; - } - } - "up" => { - // Remove the pointer - POINTERS.write().retain(|p| p.id != pointer_id); - } - _ => {} - } + let Some(window) = web_sys::window() else { + return; + }; + + let down_listener = EventListener::new(&window, "pointerdown", |event| { + let event = event.dyn_ref::().unwrap(); + POINTERS.write().push(Pointer { + id: event.pointer_id(), + position: ClientPoint::new(event.page_x() as f64, event.page_y() as f64), + last_position: None, + }); + }); + + let move_listener = EventListener::new(&window, "pointermove", |event| { + let event = event.dyn_ref::().unwrap(); + let pointer_id = event.pointer_id(); + let position = ClientPoint::new(event.page_x() as f64, event.page_y() as f64); + if let Some(pointer) = POINTERS.write().iter_mut().find(|p| p.id == pointer_id) { + pointer.last_position = Some(pointer.position); + pointer.position = position; } }); + + let up_listener = EventListener::new(&window, "pointerup", |event| { + let event = event.dyn_ref::().unwrap(); + let pointer_id = event.pointer_id(); + POINTERS.write().retain(|p| p.id != pointer_id); + }); + + // Keep the listeners alive for the lifetime of the app + std::mem::forget(down_listener); + std::mem::forget(move_listener); + std::mem::forget(up_listener); }); Vec::new()