From 8669a5eb0e154a861ab4b9f67df1e859401ee783 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 20 Apr 2023 08:55:35 -0500 Subject: [PATCH 1/7] remove unused shipyard-heigharchy --- packages/native-core/Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/native-core/Cargo.toml b/packages/native-core/Cargo.toml index 9ea6d4c9f..c9be2f27d 100644 --- a/packages/native-core/Cargo.toml +++ b/packages/native-core/Cargo.toml @@ -29,7 +29,6 @@ lightningcss = "1.0.0-alpha.39" rayon = "1.6.1" shipyard = { version = "0.6.2", features = ["proc", "std"], default-features = false } -shipyard_hierarchy = "0.6.0" [dev-dependencies] rand = "0.8.5" From 80a8310297d092b0f85ffc351429cadf3ad04ab9 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 20 Apr 2023 15:08:56 -0500 Subject: [PATCH 2/7] switch debug logs to trace in the router and web crates --- packages/router/src/components/route.rs | 6 +++--- packages/web/src/lib.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/router/src/components/route.rs b/packages/router/src/components/route.rs index cf665d2e1..7bfc48993 100644 --- a/packages/router/src/components/route.rs +++ b/packages/router/src/components/route.rs @@ -45,13 +45,13 @@ pub fn Route<'a>(cx: Scope<'a, RouteProps<'a>>) -> Element { router_root.register_total_route(route_context.total_route, cx.scope_id()); }); - log::debug!("Checking Route: {:?}", cx.props.to); + log::trace!("Checking Route: {:?}", cx.props.to); if router_root.should_render(cx.scope_id()) { - log::debug!("Route should render: {:?}", cx.scope_id()); + log::trace!("Route should render: {:?}", cx.scope_id()); cx.render(rsx!(&cx.props.children)) } else { - log::debug!("Route should *not* render: {:?}", cx.scope_id()); + log::trace!("Route should *not* render: {:?}", cx.scope_id()); cx.render(rsx!(())) } } diff --git a/packages/web/src/lib.rs b/packages/web/src/lib.rs index e208b0591..b9a806c5a 100644 --- a/packages/web/src/lib.rs +++ b/packages/web/src/lib.rs @@ -225,7 +225,7 @@ pub async fn run_with_props(root: fn(Scope) -> Element, root_prop websys_dom.mount(); loop { - log::debug!("waiting for work"); + log::trace!("waiting for work"); // if virtualdom has nothing, wait for it to have something before requesting idle time // if there is work then this future resolves immediately. From b4af761038479e4fc200dc1fafe00488e9036e2b Mon Sep 17 00:00:00 2001 From: Icekey Date: Sat, 22 Apr 2023 18:09:41 +0200 Subject: [PATCH 3/7] fix rng in svg dice example (#970) fixed the rng range so that a 6 can be rolled --- examples/svg.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/svg.rs b/examples/svg.rs index 829a559ad..329cbe6ae 100644 --- a/examples/svg.rs +++ b/examples/svg.rs @@ -26,7 +26,7 @@ fn app(cx: Scope) -> Element { onclick: move |_| { use rand::Rng; let mut rng = rand::thread_rng(); - val.set(rng.gen_range(1..6)); + val.set(rng.gen_range(1..=6)); } } } From 425d8c64ddcbacf7fe80975159be6ad24aa14729 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Sun, 23 Apr 2023 11:54:40 -0500 Subject: [PATCH 4/7] use the generic parameter in the generic component example --- examples/generic_component.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/examples/generic_component.rs b/examples/generic_component.rs index 9757b1032..3d6171a9b 100644 --- a/examples/generic_component.rs +++ b/examples/generic_component.rs @@ -1,3 +1,5 @@ +use std::fmt::Display; + use dioxus::prelude::*; fn main() { @@ -5,9 +7,20 @@ fn main() { } fn app(cx: Scope) -> Element { - cx.render(rsx! { generic_child::{} }) + cx.render(rsx! { generic_child { + data: 0i32 + } }) } -fn generic_child(cx: Scope) -> Element { - cx.render(rsx! { div {} }) +#[derive(PartialEq, Props)] +struct GenericChildProps { + data: T, +} + +fn generic_child(cx: Scope>) -> Element { + let data = &cx.props.data; + + cx.render(rsx! { div { + "{data}" + } }) } From 459d8d69a7c35f3c9d3dc3df8171b2daf14fe422 Mon Sep 17 00:00:00 2001 From: Antonio Curavalea Date: Mon, 24 Apr 2023 02:26:23 +0300 Subject: [PATCH 5/7] examples: add PWA w/ Dioxus CLI template (#977) * examples: add PWA w/ Dioxus CLI template * ci: properly set workspace and dependencies --- Cargo.toml | 1 + examples/PWA-example/Cargo.toml | 17 ++ examples/PWA-example/Dioxus.toml | 42 +++++ examples/PWA-example/LICENSE | 21 +++ examples/PWA-example/README.md | 44 +++++ examples/PWA-example/index.html | 30 ++++ examples/PWA-example/public/favicon.ico | Bin 0 -> 23104 bytes examples/PWA-example/public/logo_192.png | Bin 0 -> 11198 bytes examples/PWA-example/public/logo_512.png | Bin 0 -> 48151 bytes examples/PWA-example/public/manifest.json | 34 ++++ examples/PWA-example/public/sw.js | 198 ++++++++++++++++++++++ examples/PWA-example/src/main.rs | 20 +++ 12 files changed, 407 insertions(+) create mode 100644 examples/PWA-example/Cargo.toml create mode 100644 examples/PWA-example/Dioxus.toml create mode 100644 examples/PWA-example/LICENSE create mode 100644 examples/PWA-example/README.md create mode 100644 examples/PWA-example/index.html create mode 100644 examples/PWA-example/public/favicon.ico create mode 100644 examples/PWA-example/public/logo_192.png create mode 100644 examples/PWA-example/public/logo_512.png create mode 100644 examples/PWA-example/public/manifest.json create mode 100644 examples/PWA-example/public/sw.js create mode 100644 examples/PWA-example/src/main.rs diff --git a/Cargo.toml b/Cargo.toml index 7b6a08a39..377ff37b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ members = [ "packages/signals", "packages/hot-reload", "docs/guide", + "examples/PWA-example", ] # This is a "virtual package" diff --git a/examples/PWA-example/Cargo.toml b/examples/PWA-example/Cargo.toml new file mode 100644 index 000000000..f11d80713 --- /dev/null +++ b/examples/PWA-example/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "dioxus-pwa-example" +version = "0.1.0" +authors = ["Antonio Curavalea "] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +dioxus = { path = "../../packages/dioxus", version = "^0.3.0"} +dioxus-web = { path = "../../packages/web", version = "^0.3.0"} + +log = "0.4.6" + +# WebAssembly Debug +wasm-logger = "0.2.0" +console_error_panic_hook = "0.1.7" diff --git a/examples/PWA-example/Dioxus.toml b/examples/PWA-example/Dioxus.toml new file mode 100644 index 000000000..e3a472520 --- /dev/null +++ b/examples/PWA-example/Dioxus.toml @@ -0,0 +1,42 @@ +[application] + +# App (Project) Name +name = "dioxus-pwa-example" + +# Dioxus App Default Platform +# desktop, web, mobile, ssr +default_platform = "web" + +# `build` & `serve` dist path +out_dir = "dist" + +# resource (public) file folder +asset_dir = "public" + +[web.app] + +# HTML title tag content +title = "dioxus | ⛺" + +[web.watcher] + +# when watcher trigger, regenerate the `index.html` +reload_html = true + +# which files or dirs will be watcher monitoring +watch_path = ["src", "public"] + +# include `assets` in web platform +[web.resource] + +# CSS style file +style = [] + +# Javascript code file +script = [] + +[web.resource.dev] + +# Javascript code file +# serve: [dev-server] only +script = [] diff --git a/examples/PWA-example/LICENSE b/examples/PWA-example/LICENSE new file mode 100644 index 000000000..bcdd828e9 --- /dev/null +++ b/examples/PWA-example/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Dioxus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/PWA-example/README.md b/examples/PWA-example/README.md new file mode 100644 index 000000000..dfd986302 --- /dev/null +++ b/examples/PWA-example/README.md @@ -0,0 +1,44 @@ +# Dioxus PWA example + +This is a basic example of a progressive web app (PWA) using Dioxus and Dioxus CLI. +Currently PWA functionality requires the use of a service worker and manifest file, so this isn't 100% Rust yet. + +It is also very much usable as a template for your projects, if you're aiming to create a PWA. + +## Try the example + +Make sure you have Dioxus CLI installed (if you're unsure, run `cargo install dioxus-cli`). + +You can run `dioxus serve` in this directory to start the web server locally, or run +`dioxus build --release` to build the project so you can deploy it on a separate web-server. + +## Project Structure +``` +├── Cargo.toml +├── Dioxus.toml +├── index.html // Custom HTML is needed for this, to load the SW and manifest. +├── LICENSE +├── public +│ ├── favicon.ico +│ ├── logo_192.png +│ ├── logo_512.png +│ ├── manifest.json // The manifest file - edit this as you need to. +│ └── sw.js // The service worker - you must edit this for actual projects. +├── README.md +└── src + └── main.rs +``` + +## Resources + +If you're just getting started with PWAs, here are some useful resources: + +* [PWABuilder docs](https://docs.pwabuilder.com/#/) +* [MDN article on PWAs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) + +For service worker scripting (in JavaScript): + +* [Service worker guide from PWABuilder](https://docs.pwabuilder.com/#/home/sw-intro) +* [Service worker examples, also from PWABuilder](https://github.com/pwa-builder/pwabuilder-serviceworkers) + +If you want to stay as close to 100% Rust as possible, you can try using [wasi-worker](https://github.com/dunnock/wasi-worker) to replace the JS service worker file. The JSON manifest will still be required though. \ No newline at end of file diff --git a/examples/PWA-example/index.html b/examples/PWA-example/index.html new file mode 100644 index 000000000..44bfa59cc --- /dev/null +++ b/examples/PWA-example/index.html @@ -0,0 +1,30 @@ + + + + {app_title} + + + + + + {style_include} + + +
+ + {script_include} + + \ No newline at end of file diff --git a/examples/PWA-example/public/favicon.ico b/examples/PWA-example/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b11015bdbacdb3b99e03555edb85d78467b37c7d GIT binary patch literal 23104 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 W+`s-{ME)24jHW23DqAIO8vH-~t)grI literal 0 HcmV?d00001 diff --git a/examples/PWA-example/public/logo_192.png b/examples/PWA-example/public/logo_192.png new file mode 100644 index 0000000000000000000000000000000000000000..112eb5ee49ca4e69d742a99269d1ae08a970dd7a GIT binary patch literal 11198 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 literal 0 HcmV?d00001 diff --git a/examples/PWA-example/public/logo_512.png b/examples/PWA-example/public/logo_512.png new file mode 100644 index 0000000000000000000000000000000000000000..43129772a892a5ca82dfdc8bb4d9027cc830ddf5 GIT binary patch literal 48151 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 Unavailable', { + status: 503, + statusText: 'Service Unavailable', + headers: new Headers({ + 'Content-Type': 'text/html' + }) + }); + } + }) + ); +}); + +/* The activate event fires after a service worker has been successfully installed. + It is most useful when phasing out an older version of a service worker, as at + this point you know that the new worker was installed correctly. In this example, + we delete old caches that don't match the version in the worker we just finished + installing. +*/ +self.addEventListener("activate", function (event) { + /* Just like with the install event, event.waitUntil blocks activate on a promise. + Activation will fail unless the promise is fulfilled. + */ + //console.log('WORKER: activate event in progress.'); + + event.waitUntil( + caches + /* This method returns a promise which will resolve to an array of available + cache keys. + */ + .keys() + .then(function (keys) { + // We return a promise that settles when all outdated caches are deleted. + return Promise.all( + keys + .filter(function (key) { + // Filter by keys that don't start with the latest version prefix. + return !key.startsWith(version); + }) + .map(function (key) { + /* Return a promise that's fulfilled + when each outdated cache is deleted. + */ + return caches.delete(key); + }) + ); + }) + .then(function () { + //console.log('WORKER: activate completed.'); + }) + ); +}); diff --git a/examples/PWA-example/src/main.rs b/examples/PWA-example/src/main.rs new file mode 100644 index 000000000..4c09a9bc5 --- /dev/null +++ b/examples/PWA-example/src/main.rs @@ -0,0 +1,20 @@ +use dioxus::prelude::*; + +fn main() { + // init debug tool for WebAssembly + wasm_logger::init(wasm_logger::Config::default()); + console_error_panic_hook::set_once(); + + dioxus_web::launch(app); +} + +fn app(cx: Scope) -> Element { + cx.render(rsx! ( + div { + style: "text-align: center;", + h1 { "🌗 Dioxus 🚀" } + h3 { "Frontend that scales." } + p { "Dioxus is a portable, performant, and ergonomic framework for building cross-platform user interfaces in Rust." } + } + )) +} From 7be8ec3467c497985d0b334536dcea61685f635c Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 24 Apr 2023 16:07:50 -0500 Subject: [PATCH 6/7] Fix html to rsx conversions --- packages/autofmt/src/element.rs | 13 +++--- packages/rsx-rosetta/Cargo.toml | 3 ++ packages/rsx-rosetta/tests/simple.rs | 68 ++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 packages/rsx-rosetta/tests/simple.rs diff --git a/packages/autofmt/src/element.rs b/packages/autofmt/src/element.rs index 6d2cdc830..5bb7d42fc 100644 --- a/packages/autofmt/src/element.rs +++ b/packages/autofmt/src/element.rs @@ -276,13 +276,12 @@ impl Writer<'_> { let start = location.start(); let line_start = start.line - 1; - let this_line = self.src[line_start]; - - let beginning = if this_line.len() > start.column { - this_line[..start.column].trim() - } else { - "" - }; + let beginning = self + .src + .get(line_start) + .filter(|this_line| this_line.len() > start.column) + .map(|this_line| this_line[..start.column].trim()) + .unwrap_or_default(); beginning.is_empty() } diff --git a/packages/rsx-rosetta/Cargo.toml b/packages/rsx-rosetta/Cargo.toml index d160d2bf9..e6bc45225 100644 --- a/packages/rsx-rosetta/Cargo.toml +++ b/packages/rsx-rosetta/Cargo.toml @@ -25,3 +25,6 @@ convert_case = "0.5.0" # default = ["html"] # eventually more output options + +[dev-dependencies] +pretty_assertions = "1.2.1" \ No newline at end of file diff --git a/packages/rsx-rosetta/tests/simple.rs b/packages/rsx-rosetta/tests/simple.rs new file mode 100644 index 000000000..b8fd095e1 --- /dev/null +++ b/packages/rsx-rosetta/tests/simple.rs @@ -0,0 +1,68 @@ +use html_parser::Dom; + +#[test] +fn simple_elements() { + let html = r#" +
+
hello world!
+
hello world!
+
hello world!
+
hello world!
+
hello world!
+
hello world!
+ hello world! +
+ "# + .trim(); + + let dom = Dom::parse(html).unwrap(); + + let body = rsx_rosetta::rsx_from_html(&dom); + + let out = dioxus_autofmt::write_block_out(body).unwrap(); + + let expected = r#" + div { + div { class: "asd", "hello world!" } + div { id: "asd", "hello world!" } + div { id: "asd", "hello world!" } + div { r#for: "asd", "hello world!" } + div { r#async: "asd", "hello world!" } + div { large_thing: "asd", "hello world!" } + ai_is_awesome { "hello world!" } + }"#; + pretty_assertions::assert_eq!(&out, &expected); +} + +#[test] +fn deeply_nested() { + let html = r#" +
+
+
+
+
+
+
+
+
+
+ "# + .trim(); + + let dom = Dom::parse(html).unwrap(); + + let body = rsx_rosetta::rsx_from_html(&dom); + + let out = dioxus_autofmt::write_block_out(body).unwrap(); + + let expected = r#" + div { + div { class: "asd", + div { class: "asd", + div { class: "asd", div { class: "asd" } } + } + } + }"#; + pretty_assertions::assert_eq!(&out, &expected); +} From 8af3522a2e3f5094aedc9714521a1cd848530d9c Mon Sep 17 00:00:00 2001 From: Will Hopkins Date: Mon, 24 Apr 2023 14:13:54 -0700 Subject: [PATCH 7/7] fix: change crossterm poll timeout to 10ms from 1s (#983) Problem: Key events were delayed signifantly in TUI widgets. Solution: Decrease crossterm event poll timeout from 1000ms to 10ms. Fixes #978 --- packages/rink/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/rink/src/lib.rs b/packages/rink/src/lib.rs index 9fceb6b48..7f15aa751 100644 --- a/packages/rink/src/lib.rs +++ b/packages/rink/src/lib.rs @@ -98,7 +98,8 @@ pub fn render( let event_tx_clone = event_tx.clone(); if !cfg.headless { std::thread::spawn(move || { - let tick_rate = Duration::from_millis(1000); + // Timeout after 10ms when waiting for events + let tick_rate = Duration::from_millis(10); loop { if crossterm::event::poll(tick_rate).unwrap() { let evt = crossterm::event::read().unwrap();