overhaul dioxus fullstack using a new implementation of server_fn
This PR is a complete rewrite of dioxus fullstack designed to improve compatibility with axum and to fix a number of compilation errors based on feature flag unification plumbing through macros.
* Rename dioxus-blitz to dioxus-native
* Add CSS import support (#139)
* Remove data dependencie from NetProvider + global provider.
* Feat CSS import
* Move net handler code out of util
* Fixing test...
* Use the better suited OnceLock instead of LazyLock
* Removing static and move resource callback back out of the document.
Signed-off-by: koko <kokos.kekse@gmail.com>
* Make things work
Signed-off-by: koko <kokos.kekse@gmail.com>
* Fix the servo example
Signed-off-by: koko <kokos.kekse@gmail.com>
* Replace servo image with a more compact version
Signed-off-by: koko <kokos.kekse@gmail.com>
* revert: 8467b271
Signed-off-by: koko <kokos.kekse@gmail.com>
---------
Signed-off-by: koko <kokos.kekse@gmail.com>
* Create readme app
* WPT: reuse FontContext to avoid reloading system fonts
Takes runtime for css-flexbox from 12s -> 8s
* Move Devtools to traits crate
* Suppress unused variable warning
* Implement net for DioxusDocument
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Eliminate BlitzWindowEvent type
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Make net crate use document id instead of window id
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Rename and document net traits
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Split `dioxus-native` crate into `dioxus-native` and `blitz-shell` crates (#163)
* Rename waker module to event
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Create seperate DioxusNativeApplication
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Rename dioxus-native crate to blitz-shell
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Split blitz-shell out of dioxus-native crate
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Remove need for dioxus-native to depend directly on stylo
---------
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Unnest dioxus-native modules
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Split MutationWriter into it's own module
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Split HtmlDocument into it's own crate
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Rename dom field of Window to doc
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Support prefers-color-scheme (dark mode)
* Remove use of the `todo` macro in event handling and add a comment about it being a todo (#168)
Using the `todo` macro causes a panic when this event is encountered. Noop is preferable in this case as it does not crash the application. This is especially annoying on platforms where `Ime::Enabled` event is sent upon application start even when the user is using a keyboard layout that does not need an IME support. There was added a "TODO" comment that informs about this feature being missing. Most IDEs and code editors have support/plugins/extensions to work with this type of comments and this type of comment is already used widely across the codebase. As such, the information about this feature not being implemented is not lost.
* Upgrade to dioxus 0.6-rc.0
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Fix text input in dioxus-native
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Make dioxus-native depend dioxus-core and dioxus-html rather than dioxus
* Remove "full" feature from tokio
* Move Viewport to blitz_traits
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Make tokio optional in dioxus-native and blitz-shell
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Make SVG support optional
* Abstract renderer behind a trait
blitz-shell no longer depends on blitz-renderer-vello
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Split HTML launch functions out in `blitz` crate
* feat: Add mousedown and mouseup event (#172)
* feat: Add mousedown and mouseup event
* feat: Triggering :active pseudo-class
* fix: Triggering :active pseudo-class
* Rename RendererEvent to DomEvent
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Rename Document to BaseDocument. DocumentLike to Document
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Move event and document abstractions to blitz-traits
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Rename BlitzEvent to BlitzShellEvent
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Restyle when style attribute is mutated
* feat: Support text box mouse selection (#182)
* Rename raw_dom_data to data
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Rename dioxus-native to native
* Add to workspace
* simplify launch module, integrate native
* Fix it up again
* Update cargo lock
* FIx: propagate accessibility feature fla
* implement asset resolver
* add native to feature match in cli
* Implement document and history for native
* use no-op eval
* clippy
* typos
* typo
* Convert logs to trace
* Bump blitz to alpha releases
* unset image data
* fix style integration with blitz
* fix a few lints
* wire up ids
* implement a few more events
* add more helpful todo note
* bump ci to allow edition 2024, use newer nightly
* make clippy happy
* also update matrix tests to rust 2024
* Add autofocus
Co-authored-by: otgerrogla 2356820+otgerrogla@users.noreply.github.com
* Wait for the suspense boundary above the router to resolve before sending the first streaming chunk (#3891)
* Change the suspense streaming context after suspense is resolved in the router
* Wait for the suspense context before streaming the first chunk in ssr
* forward more response parts
* warn
* extract the hydration format into a crate
* Fix hydration when no data is sent
* forward web and server features
* Fix suspense that starts on the client
* fix use_server_future on the client
* Add documentation for fullstack hooks and protocol
* downgrade rust edition
* fix clippy
* fix tests
* fix clippy
* Fix pure web compile
* undo changes to the fullstack router example
* fix formatting
* hoist a bunch of deps
---------
Signed-off-by: koko <kokos.kekse@gmail.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Co-authored-by: Nico Burns <nico@nicoburns.com>
Co-authored-by: koko <72217393+kokoISnoTarget@users.noreply.github.com>
Co-authored-by: David Husička <25853767+DavidHusicka@users.noreply.github.com>
Co-authored-by: luoxiaozero <48741584+luoxiaozero@users.noreply.github.com>
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
* Add the `onvisible` event using the IntersectionObserver
* Add a visible example
This example is based on https://codepen.io/ryanfinni/pen/VwZeGxN
* Remove web-sys CustomEvent feature for html package
* update js bindings and hash
* Use dioxus doc instead of lorem ipsum
* Fix clippy warning
* Add get_target method to the event data
* Make `get_time` return an Instant instead of a f64
* fix merge conflicts, compilinga
* remove target
* small nits
* serialzie as time_ms
* fix timing, works on desktop
* remove latent nits, fix hash
* box size clippy
* fix browserlist cargo.lock
---------
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* hoist example projects, remove oidc
* move over example projects from the separate repo
* Update ecommerce site to the latest version of dioxus
* update wifi scanner to 0.5
* drop the chatbot example; might be restored in a separate PR
---------
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
* use head elements and new manganis syntax in examples
* only enable desktop workspace example scraping during a dioxus release
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
- implement "onfocusout" handler
- set autofocus
- handle enter, escape and tab on a todo item
- make the `<pre>` element between todo list items of margin 0 to be unnoticable
This commit adds a new type - the DomEdit - for serializing the changes made by the diffing machine. The architecture of how DomEdits fit into the cooperative scheduling is still TBD but it will allow us to build change lists without applying them immediately. This is more performant and allows us to only render parts of the page at a time.
This commit also adds more infrastructure around webview. Dioxus can now run on the web, generate static pages, run in the desktop, and run on mobile, with a large part of thanks to webview.