dioxus/packages/interpreter
Evan Almloff cab573eefd
Synchronous prevent default (#2792)
* add prevent default methods to the event

* sync prevent default almost working

* sync prevent default working

* Move event handling into the runtime

* update core tests

* restore desktop file dialog

* implement prevent default on web

* add a hint about the new prevent default method

* fix web prevent default

* Fix CTRL+click on links

* fix values memorize in place test

* Fix a few more tests

* Add a playwright test for sync prevent default

* Fix core doc tests

* create a deprecated VirtualDom::handle_event

* fix macos imports in desktop

* Fix onmounted event

* Fix liveview support

* switch to RefCell for metadata

* Remove println

* remove prevent default attribute

* remove web specific link behavior

* Fix liveview links

* more liveview fixes for link

* Fix merge conflicts

* Fix clippy

* use the new prevent default in the file upload example
2024-08-13 11:57:54 -07:00
..
src Synchronous prevent default (#2792) 2024-08-13 11:57:54 -07:00
tests extend interpreter base class with platform methods 2024-02-27 12:31:11 -08:00
.gitignore extend interpreter base class with platform methods 2024-02-27 12:31:11 -08:00
build.rs Hotreloading of for/if/body, formatted strings, literals, component props, nested rsx, light CLI rewrite, cli TUI (#2258) 2024-07-17 19:11:18 -07:00
Cargo.toml fix most typos, add crate-ci/typos to CI (#2653) 2024-07-23 17:49:33 -07:00
NOTES.md extend interpreter base class with platform methods 2024-02-27 12:31:11 -08:00
README.md Fix Links & Add Link Checker (#2769) 2024-08-02 10:46:18 -07:00
tsconfig.json Refactor and fix eval channels (#2302) 2024-04-26 11:55:48 -04:00

dioxus-interpreter-js

Crates.io MIT licensed Build Status Discord chat

Website | Guides | API Docs | Chat

Overview

dioxus-interpreter-js provides the high-performance JavaScript glue that interprets the stream of edits produced by the Dioxus VirtualDom and converts them into mutations on the actual web DOM.

This crate features bindings for the web and sledgehammer for increased performance.

Architecture

We use TypeScript to write the bindings and a very simple build.rs along with bun to convert them to javascript, minify them, and glue them into the rest of the project.

Not every snippet of JS will be used, so we split out the snippets from the core interpreter.

In theory, we could use Rust in the browser to do everything these bindings are doing. In reality, we want to stick with JS to skip the need for a WASM build step when running the LiveView and WebView renderers. We also want to use JS to prevent diverging behavior of things like canceling events, uploading files, and collecting form inputs. These details are tough to ensure 1:1 compatibility when implementing them in two languages.

If you want to contribute to the bindings, you'll need to have the typescript compiler installed on your machine as well as bun:

https://bun.sh/docs/installation

Contributing

  • Report issues on our issue tracker.
  • Join the discord and ask questions!

License

This project is licensed under the MIT license.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Dioxus by you shall be licensed as MIT without any additional terms or conditions.