Commit graph

318 commits

Author SHA1 Message Date
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
b6dc2a2230
Deduplicate reactive scope updates/Reset subscriptions on reruns/fix use memo double update (#2506)
* deduplicate effect updates

* only subscribe to signals read in the current run of reactive scopes

* subscribe to memo reads after recomputing the value
2024-06-18 18:49:25 -07:00
Evan Almloff
3a4860add4
Document props and component macro (#2522)
* document prop attributes

* document children props

* fix children doc test
2024-06-18 16:06:54 -07:00
Evan Almloff
c0246c26e0
accept impl display instead of From<String> (#2501) 2024-06-10 18:47:48 -07: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
Evan Almloff
5024139e01
Detect components called as functions (#2461)
* detect components called as functions
* use the existing component name information instead of a thread local
2024-06-07 13:55:10 -07:00
Evan Almloff
0127501dbf
Improve inline docs (#2460)
Improve inline docs

* improve incorrect event handler return error message

* Improve event handler docs

* document the eval functions

* document spawn and common spawn errors

* fix event handler docs

* add notes about how you use attributes and elements in rsx

* add doc aliases for attributes and events we rename

* add some more aliases for common search terms

* don't doc ignore any public examples in core

* don't ignore public doc examples in ssr

* don't ignore examples in the dioxus package readme

* add a warning when you launch without a renderer enabled

* fix some outdated element docs

* add a bunch of examples to resource

* add notes about desktop events

* add more docs for use_resource

* add on_unimplemented hint to Dependency

* fix some unresolved links

* add examples to each of the router traits

* add not implemented errors for router traits

* add an example to the routable trait

* expand rsx macro docs

* improve memo docs

* update the dioxus readme

* mention dioxus crate features in the docs

* fix a bunch of doc tests

* fix html doc tests

* fix router doc tests

* fix dioxus signals doc tests

* fix dioxus ssr doc tests

* fix use_future example in the hooks cheat sheet

* add a javascript alias for eval

* fix hook explanation values

* remove unused embed-doc-image dependency
2024-06-06 18:15:17 -07:00
airblast
0eb16f27d4
chore: Remove unused dependency (#2466)
Removes the constcat dependeny from core-macro.
2024-05-31 07:06:55 -05:00
Evan Almloff
b3cd4fac10
set up example scaping for docs.rs (#2450) 2024-05-28 13:05:55 -07:00
Gino Valente
160cde7b48
Make use of #[doc] field attributes in Props derive macro (#2456)
* Support passing docs along to prop fields

* Pass along entire doc attribute
2024-05-28 11:33:51 -07:00
Evan Almloff
2523581cf4
Autocomplete rsx (#2421)
* autocomplete rsx

* hide the completions module

* fix autocomplete for identifiers that start with a raw identifier

* add field completion hints for props

* remove extra import

* Revert "add field completion hints for props"

This reverts commit 194899c737.

* fix autocomplete inside raw expressions

* fix autofmt

* feat: just use regular ifmt if it's compatible

reuses the tokens for ifmt so RA provides its HIR lowering on simple formatted strings

* fix merging ifmt strings

* add a better error message for components called like functions

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
2024-05-22 07:24:50 -05:00
Evan Almloff
47c87568e1
Fix event handler memory leak (#2298)
* fix event handler memory leak and double drops

* Prevent double dropping generational boxes

* recycle instead of dropping
2024-04-26 00:47:22 -04:00
Matt Hunzinger
96b9baafff
Fix event handler drops (#2288)
* Try to fix event handler drops

* fix Option<EventHandler> parsing logic

* only move over props if both event handlers are some

* fix owner forwarding with props(extends)

* fix clippy

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
2024-04-10 11:23:45 -05:00
Evan Almloff
36f67bd5e2 update 0.4 doc links to 0.5 2024-03-27 20:42:07 -05:00
Jonathan Kelley
a1c03a461d
Basic docs cleanups 2024-03-27 17:06:10 -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
Evan Almloff
b19a546c0a
Don't move over event handler fields when diffing props (#2129)
* don't move over event handler fields when diffing props

* Expand values_memoize_in_place test to cover the new bug case
2024-03-22 15:18:38 -07:00
Evan Almloff
0662033c84
Fix early drop of eventhandlers (#2126)
* fix early drop of eventhandlers

* add a test for stale props that are memorized in place

* fix clippy
2024-03-22 14:37:02 -07:00
Evan Almloff
a5714e342c
fix bounds on owner props (#2122) 2024-03-20 16:37:08 -07:00
Evan Almloff
58f7efafea
Make EventHandler copy (#2112)
* implement Copy for EventHandler
* implement from closure for event handler and remove special on prefix
* fix props implementation of EventHandler
2024-03-19 19:48:53 -07:00
Jonathan Kelley
9c64fc4769
Fix #1938, allow explicit props 2024-03-18 15:34:46 -07:00
Jonathan Kelley
ad7a350d2e
fix hotreloading issues in the CLI 2024-03-12 13:39:42 -07:00
Evan Almloff
d575b3e4e4 fix the visibility of the read only signal helper struct 2024-03-11 14:46:51 -05:00
Jonathan Kelley
32595ce161
Fix clippy on box references 2024-03-09 01:54:25 -08:00
Jonathan Kelley
494f7e727d
Heavily document component macro 2024-03-09 01:31:40 -08:00
Jonathan Kelley
052fd774cf
Chore #2028: radically clean up core-macro 2024-03-09 01:09:20 -08:00
Jonathan Kelley
dd109f20d2
fix #1979: generated Owned impl for the props builder was using the wrong generics. (#2027)
This commit fixes the owned impl to use the original generics rather than the build generics.
2024-03-08 16:49:56 -06:00
Jonathan Kelley
7461a14cb4
fix 2020: return None if the root nodes are empty in rsx (#2026) 2024-03-08 15:57:46 -06:00
marc2332
97478bcb13
fix unrelated to dioxus-router 2024-02-26 21:50:16 +01:00
Jonathan Kelley
8f07d881a6
Switch todo!() to unreachable!/unimplemented! where it matters 2024-01-31 16:26:20 -08:00
Evan Almloff
1f88103dca only implement T -> Readonlysignal 2024-01-29 15:57:23 -06:00
Evan Almloff
50e3216d8b convert T into signals automatically 2024-01-29 13:36:39 -06:00
Evan Almloff
52ea3465e6 import the SuperInto trait in core macro 2024-01-24 16:43:18 -06:00
Evan Almloff
c3555a7ec0 fix Option<String> in props 2024-01-24 16:40:14 -06:00
Evan Almloff
e65c5f0eb3 depreciate the render macro 2024-01-16 13:18:46 -06:00
Evan Almloff
90d0164b9e fix formatted strings in components 2024-01-16 12:47:23 -06:00
Jonathan Kelley
98bd78de43
Fix issue with mutability in component macro 2024-01-15 23:57:10 -08:00
Evan Almloff
af1749d7be re export renderers in dioxus 2024-01-15 19:14:11 -06:00
Evan Almloff
36e9eb1160 partially restore spreading attributes 2024-01-14 15:21:19 -06:00
Jonathan Kelley
1dde044697
remove cx.render 2024-01-13 21:12:21 -08:00
Jonathan Kelley
fae0b08e61
Fix the router and stub out a number of crates to get compiling 2024-01-13 20:51:37 -08:00
Jonathan Kelley
3f15612c8e
Fix remaining issues to get desktop running 2024-01-11 17:30:50 -08:00
Jonathan Kelley
2ae3241cc0
Merge branch 'master' into jk/breaking-merged 2024-01-11 16:04:36 -08:00
Evan Almloff
8d783490a0 fix the component macro when the function takes a single argument 2024-01-11 12:01:40 -06:00
Evan Almloff
404c864246 make the root component take no arguments 2024-01-11 10:48:04 -06:00
Jonathan Kelley
47805461d0
Dump skip(0) 2024-01-10 16:39:40 -08:00
Jonathan Kelley
2a7f3a4164
Fix: quick tweak to allow #[component] macro working 2024-01-10 16:38:07 -08:00
Evan Almloff
c59926cb1f remove IS_STATIC 2024-01-07 09:19:40 -06:00
Evan Almloff
58c01253e5 make EventHandler clone 2024-01-07 09:17:26 -06:00
Evan Almloff
5d842bad2b add the visit feature to syn in core-macro 2024-01-06 08:59:57 -06:00