Commit graph

715 commits

Author SHA1 Message Date
Jonathan Kelley
88af3e7eff
Hotreloading of for/if/body, formatted strings, literals, component props, nested rsx, light CLI rewrite, cli TUI (#2258)
Hotreload the contents of for loops, if chains, component bodies, props, attributes, and any literals discovered in rsx!
Add a TUI renderer to the CLI.
Improve the CLI build system to be async and parallel.
Refactor RSX to allow partial expansion of expressions.
Merge autofmt implementations for consistency.
Merge the representation of elements and components under the hood.
Add a diagnostics system for rsx for improved error messages.
Drop interprocess and move to websockets for communication between the CLI and the server.
Assign IDs to nodes and attributes in a stable way to be used in non compiler contexts.
Add hotreloading to any body of component/for loop/if chain/etc.

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
Co-authored-by: Liam Mitchell <liamkarlmitchell@gmail.com>
2024-07-17 19:11:18 -07:00
Evan Almloff
176e67e5b7
switch to a Document trait and introduce Script/Head/Style/Meta components (#2635)
* switch to a Document trait and introduce Script/Head/Style/Meta components

* Fix desktop title

* Insert special elements into the head during the inital SSR render

* Make all head component attributes optional

* hydrate head elements

* improve the server streaming head warning

* Document fullstack head hydration approach

* deduplicate head elements by href

* move Link into head::Link

* document head components

* add meta and title examples

* Fix a few doc examples

* fix formatting

* Add title to playwright tests

* serde is optional on web, but it is enabled by hydrate

* remove leftover console log
2024-07-17 20:54:03 -05:00
Jonathan Kelley
2e8af5fc62
fix clippy on zoom example 2024-07-10 12:50:57 -07:00
Jonathan Kelley
2c20d3dc5e
Remove deprecated macros: inline_props, format_args_f!, render! (#2574)
* remove deprecated macros

* Rename derive_typed_builder
2024-07-02 21:46:11 -07:00
Jonathan Kelley
b30810e486
cut out a number of changes from the hr PR (#2580) 2024-07-02 17:09:57 -07:00
Evan Almloff
022e4ad203
Suspense boundaries/out of order streaming/anyhow like error handling (#2365)
* create static site generation helpers in the router crate

* work on integrating static site generation into fullstack

* move ssg into a separate crate

* integrate ssg with the launch builder

* simplify ssg example

* fix static_routes for child routes

* move CLI hot reloading websocket code into dioxus-hot-reload

* fix some unused imports

* use the same hot reloading websocket code for fullstack

* fix fullstack hot reloading

* move cli hot reloading logic into the hot reload crate

* ssg example working with dx serve

* add more examples

* fix clippy

* switch to a result for Element

* fix formatting

* fix hot reload doctest imports

* fix axum imports

* add show method to error context

* implement retaining nodes during suspense

* fix unterminated if statements

* communicate between tasks and suspense boundaries

* make suspense placeholders easier to use

* implement IntoDynNode and IntoVNode for more wrappers

* fix clippy examples

* fix rsx tests

* add streaming html utilities to the ssr package

* unify hydration and non-hydration ssr cache

* fix router with Result Element

* don't run server doc tests

* Fix hot reload websocket doc examples

* simple apps working with fullstack streaming

* fix preloading wasm

* Report errors encountered while streaming

* remove async from incremental renderer

* document new VirtualDom suspense methods

* make streaming work with incremental rendering

* fix static site generation

* document suspense structs

* create closure type; allow async event handlers in props; allow shorthand event handlers

* test forwarding event handlers with the shorthand syntax

* fix clippy

* fix imports in spawn async doctest

* fix empty rsx

* fix async result event handlers

* fix mounting router in multiple places

* Fix task dead cancel race condition

* simplify diffing before adding suspense

* fix binary size increase

* fix attribute diffing

* more diffing fixes

* create minimal fullstack feature

* smaller fullstack bundles

* allow mounting nodes that are already created and creating nodes without mounting them

* fix hot reload feature

* fix replacing components

* don't reclaim virtual nodes

* client side suspense working!

* fix CLI

* slightly smaller fullstack builds

* fix multiple suspended scopes

* fix merge errors

* yield back to tokio every few polls to fix suspending on many tasks at once

* remove logs

* document suspense boundary and update suspense example

* fix ssg

* make streaming optional

* fix some router and core tests

* fix suspense example

* fix serialization with out of order server futures

* add incremental streaming hackernews demo

* fix hackernews demo

* fix root hackernews redirect

* fix formatting

* add tests for suspense cases

* slightly smaller binaries

* slightly smaller

* improve error handling docs

* fix errors example link

* fix doc tests

* remove log file

* fix ssr cache type inference

* remove index.html

* fix ssg render template

* fix assigning ids on elements with dynamic attributes

* add desktop feature to the workspace examples

* remove router static generation example; ssg lives in the dioxus-static-generation package

* add a test for effects during suspense

* only run effects on mounted nodes

* fix multiple suspense roots

* fix node iterator

* fix closures without arguments

* fix dioxus-core readme doctest

* remove suspense logs

* fix scope stack

* fix clippy

* remove unused suspense boundary from hackernews

* assert that launch never returns for better compiler errors

* fix static generation launch function

* fix web renderer

* pass context providers into server functions

* add an example for FromContext

* clean up DioxusRouterExt

* fix server function context

* fix fullstack desktop example

* forward CLI serve settings to fullstack

* re-export serve config at the root of fullstack

* forward env directly instead of using a guard

* just set the port in the CLI for fullstack playwright tests

* fix fullstack dioxus-cli-config feature

* fix launch server merge conflicts

* fix fullstack launch context

* Merge branch 'main' into suspense-2.0

* fix fullstack html data

* remove drop virtual dom feature

* add a comment about only_write_templates binary size workaround

* remove explicit dependencies from use_server_future

* make ErrorContext and SuspenseContext more similar

* Tweak: small tweaks to tomls to make diff smaller

* only rerun components under suspense after the initial placeholders are sent to the client

* add module docs for suspense

* keep track of when suspense boundaries are resolved

* start implementing JS out of order streaming

* fix core tests

* implement the server side of suspense with js

* fix streaming ssr with nested suspense

* move streaming ssr code into fullstack

* revert minification changes

* serialize server future data as the html streams

* start loading scripts wasm immediately instead of defering the script

* very basic nested suspense example working with minimal html updates

* clean up some suspense/error docs

* fix hydrating nested pending server futures

* sort resolved boundaries by height

* Fix disconnecting clients while streaming

* fix static generation crate

* don't insert extra divs when hydrating streamed chunks

* wait to swap in the elements until they are hydrated

* remove inline streaming script

* hackernews partially working

* fix spa mode

* banish the open shadow dom

* fix removing placeholder

* set up streaming playwright test

* run web playwright tests on 9999 to avoid port conflicts with other local servers

* remove suspense nodes if the suspense boundary is replaced before the suspense resolves on the server

* ignore hydration of removed suspense boundaries

* use path based indexing to fix hydrating suspense after parent suspense with child is removed

* re-export dioxus error

* remove resolved suspense divs if the suspense boundary has been removed

* Fix client side initialized server futures

* ignore comment nodes while traversing nodes in core to avoid lists getting swapped out with suspense

* Pass initial hydration data to the client

* hide pre nodes

* don't panic if reclaiming an element fails

* fix scope stack when polling tasks

* improve deserialization out of length message

* Ok(VNode::placeholder()) -> VNode::empty()

* fix typo in rsx usage

* restore testing changes from suspense example

* clean up some logs and comments

* fix playwright tests

* clean up more changes in core

* clean up core tests

* remove anymap dependency

* clean up changes to hooks

* clean up changes in the router, rsx, and web

* revert changes to axum-hello-world

* fix use_server_future

* fix clippy in dioxus-core

* check that the next or previous node exist before checking if we should ignore them

* fix formatting

* fix suspense playwright test

* remove unused suspense code

* add more suspense playwright tests

* add more docs for error boundaries

* fix suspense core tests

* fix ErrorBoundary example

* remove a bunch of debug logging in js

* fix router failure_external_navigation

* use absolute paths in the interpreter build.rs

* strip '\r' while hashing ts files

* add a wrapper with a default error boundary and suspense boundary

* restore hot reloading

* ignore non-ts files when hashing

* sort ts files before hashing them

* fix rsx tests

* fix fullstack doc tests

* fix core tests

* fix axum auth example

* update suspense hydration diagram

* longer playwright build limit

* tiny fixes - spelling, formatting

* update diagram link

* remove comment and template nodes for suspense placeholders

* remove comment nodes as we hydrate text

* simplify hackernews example

* clean up hydrating text nodes

* switch to a separate environment variable for the base path for smaller binaries

* clean up file system html trait

* fix form data

* move streaming code into fullstack

* implement serialize and deserialize for CapturedError

* remove waits in the nested suspense playwright spec

* force sequential fullstack builds for CI

* longer nested suspense delay for CI

* fix --force-sequential flag

* wait to launch server until client build is done

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
2024-07-01 20:50:36 -07:00
Evan Almloff
c094bf3ec3 fix header docs in router_resource 2024-06-19 09:06:42 -07:00
Evan Almloff
77b08f2330 fix router resource docs 2024-06-19 08:54:39 -07:00
Chris Rogus
7ee3dc41fc
nonreactive examples for hooks were not compilable as written (#2337)
* nonreactive examples for hooks were not compilable as written

* add example demonstrating the correct usage of use_resource w router

* switch to readonlysignal in the router resource example

* fix readonlysignal name

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
2024-06-18 18:39:45 -05:00
Evan Almloff
d795995e20
Create closure type; allow async event handlers in props; allow short hand event handlers (#2437)
* create closure type; allow async event handlers in props; allow shorthand event handlers

* test forwarding event handlers with the shorthand syntax

* fix clippy

* fix imports in spawn async doctest
2024-06-10 18:47:07 -07:00
Sam Tay
054351139f
Update openid example (#2474)
* Update openid example

* Trim unnecessary deps

* Update serve instructions

* Remove unnecessary version in patch directive

* Remove outdated workspace instructions

* use storage signals instead of global signals with manual synchronization

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
2024-06-06 18:05:25 -07:00
Evan Almloff
b3cd4fac10
set up example scaping for docs.rs (#2450) 2024-05-28 13:05:55 -07:00
Evan Almloff
afc1c7f31a
enable the web renderer in the PWA example 2024-05-28 14:06:27 -05:00
Evan Almloff
e2002d6ea4 fix clippy 2024-05-20 13:01:04 -05:00
Evan Almloff
472031d1f5
Fix link to file_upload example 2024-05-02 05:16:16 -05:00
Evan Almloff
08da9a1253
Implement hash fragments in the router (#2320)
* implement hash fragments in the router

* clean up query and search example

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
2024-04-25 14:30:25 -04:00
Evan Almloff
72ef58b95e
Create use_muda_event_handler hook (#2367)
* create use_muda_event_handler hook

* fix use_muda_event_handler re-export
2024-04-25 13:32:34 -04:00
alongdate
a5b4ceed39
chore: fix some typos in comments (#2340)
Signed-off-by: alongdate <alongyear@outlook.com>
2024-04-19 08:29:22 -05:00
Evan Almloff
5ce91e1bfc
Fix flakey windows tests (#2332) 2024-04-17 15:08:38 -07:00
Christos KK Loverdos
ffe02b43c5
fix: typo (#2202) 2024-03-31 10:24:24 -05:00
Evan Almloff
36f67bd5e2 update 0.4 doc links to 0.5 2024-03-27 20:42:07 -05:00
Evan Almloff
86d1dba699
Check type of launch config (#2125)
* Check type of launch config

* fix cargo check

* compile when using an explicit platform with other platforms enabled

* fix formatting

* fix overlapping TryIntoConfig implementations

* fix desktop headless tests

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
2024-03-27 12:08:05 -07:00
Miles Murgaw
3cbe6ff96e
Fix Outdated README.md (#2147)
* fix: outdated readme

* Fix missing readme

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
2024-03-26 19:17:02 -07:00
Jonathan Kelley
44e997f7df
Fix eventhandler optional (#2119) 2024-03-20 09:04:37 -07:00
Jonathan Kelley
4bb807a3ce
Reduce churn in window behavior 2024-03-18 22:38:33 -07:00
Evan Almloff
d442dac168
Add a menu bar option to the desktop config (#2107)
* add an option to set a custom menu in the desktop config

* Fix rename issue

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
2024-03-18 22:36:47 -07:00
Jonathan Kelley
2dc6cecf2e
Fix #2043: use formvalue instead of String for forms (#2103)
Fix #2043: use formvalue instead of String for forms
2024-03-18 18:21:08 -07:00
Jonathan Kelley
9c64fc4769
Fix #1938, allow explicit props 2024-03-18 15:34:46 -07:00
Jonathan Kelley
f9f902732b
Fix: update wry, tao, to fix android issues 2024-03-15 20:12:13 -07:00
Jonathan Kelley
fe2c17f792
Make Clippy happy 2024-03-15 12:20:16 -07:00
Evan Almloff
2e7b8cb178 unwind panics into error boundaries 2024-03-13 18:55:57 -05:00
studystill
3a21ac5710
remove repetitive words (#2046)
Signed-off-by: studystill <chenghuiyue@outlook.com>
2024-03-11 09:49:26 -05:00
Robin Tretter
8eda67ecb2
added hot-reload as config option with default to true (#2024) 2024-03-08 14:54:03 -06:00
Evan Almloff
60a84956d1 restore lifetime checking for signals 2024-03-08 10:32:57 -06:00
Jonathan Kelley
295c29db5d
Merge pull request #2005 from ealmloff/fix-suspense
Only poll suspended futures, lazy memos
2024-03-07 23:43:52 -08:00
Jonathan Kelley
bb5ecd779f
clean up some examples, ensuring stuff works 2024-03-06 19:50:07 -08:00
Jonathan Kelley
81f38a0bc5
cfg out globalhotkey 2024-03-06 16:42:45 -08:00
Jonathan Kelley
f7f416ee3a
Fix hydration 2024-03-06 12:19:59 -08:00
Evan Almloff
da4d9c70e8 fix memo chain example 2024-03-06 11:42:31 -06:00
Evan Almloff
492f0329bf remove flume, implement lazier memos 2024-03-06 11:38:28 -06:00
Jonathan Kelley
95d7012c8d
fix hashing system, bump wasm-bindgen 2024-03-06 02:00:24 -08:00
Jonathan Kelley
4b2e426958
clippy, and don't hash invisible files for ts generation 2024-03-05 22:38:38 -08:00
Jonathan Kelley
78d16536a7
wip: native file handles when dropping 🎉 2024-03-05 13:57:28 -08:00
Jonathan Kelley
403e8e2f49
Clean up file uploads in desktop/liveview, remove minify 2024-03-05 13:00:27 -08:00
Jonathan Kelley
56a365742c
clean up native js more 2024-03-05 12:08:33 -08:00
Jonathan Kelley
16b38e339d
Merge branch 'main' into jk/fix-form-inputs 2024-03-04 17:46:38 -08:00
Jonathan Kelley
199173a409
fix navigating when files are dropped 2024-03-01 23:37:46 -08:00
andrey
c9f04ac3d0 remove things that werent meant to be in last commit 2024-02-28 11:45:08 +08:00
andrey
70136b22ea Fix error in examples/future.rs comments, use_futures inline docs comments, also added clarification that Signal<T>.read() and Singal<T>() are the same thing 2024-02-28 11:42:04 +08:00
Jonathan Kelley
53cafefdef
wip: add tests and slightly refactor interpreter code 2024-02-23 17:38:04 -08:00