Commit graph

271 commits

Author SHA1 Message Date
Jonathan Kelley
1b14b309e9 chore: clean up desktop 2022-12-06 16:37:28 -08:00
Evan Almloff
6102902387 work on optimizing web implementation 2022-12-06 14:24:35 -06:00
Jonathan Kelley
b182a6ee75 chore: clean up interpreter and bindings 2022-12-05 16:47:04 -08:00
Jonathan Kelley
7b1cdb7d85 feat: get desktop working with new template strategy 2022-12-05 16:08:41 -08:00
Jonathan Kelley
a61daf220d feat: context api overhaul 2022-12-02 16:24:49 -08:00
Jonathan Kelley
11a45c8ef0 chore: continue to clean things up 2022-12-01 01:08:49 -05:00
Jonathan Kelley
85657d3906 feat: rip out mutations for templates 2022-12-01 00:46:15 -05:00
Jonathan Kelley
3b166c9edd wip: clean up some things 2022-11-30 23:54:30 -05:00
Jonathan Kelley
ba26b1001a chore: clean up web impl 2022-11-30 17:44:00 -05:00
Jonathan Kelley
18d6b1ad6f feat: get web working properly 2022-11-30 17:21:10 -05:00
Demonthos
f21c8423eb
optimizations for wasm size (#582)
* optimize for size

* fix tests

* revert log feature

* make backtrace not optional

* remove dev feature from web dev-deps
2022-11-16 22:22:13 -08:00
Demonthos
3b7b503333
Refactor Mutations and simplify Templates (#578)
* update mutations to be path based rather than renderer integrated
2022-10-18 14:42:45 -07:00
saicu
e8c48d46cf
replace fxhash crate with rustc-hash (#588) 2022-10-12 18:27:26 -07:00
Demonthos
daeffd4149
pass clippy (#575) 2022-10-02 14:12:24 -07:00
Demonthos
047ed1e553
Subtree memorization / reactive templates (#488)
This commit adds subtree memoization to Dioxus.

Subtree memoization is basically a compile-time step that drastically 
reduces the amount of work the diffing engine needs to do at runtime by
extracting non-changing nodes out into a static "template." Templates 
are then understood by the various renderers in the ecosystem as a 
faster way of rendering the same items. 

For example, in the web, templates are simply a set of DOM Nodes created 
once and then cloned later. This is the same pattern frameworks like Lithtml
and SolidJS use to achieve near-perfect performance. 

Subtree memoization adds an additional level of complexity to Dioxus. The RSX
macro needs to be much smarter to identify changing/nonchanging nodes and
generate a mapping between the Template and its runtime counterparts.

This commit represents a working starter point for this work, adding support 
for templates for the web, desktop, liveview, ssr, and native-core renderers.
In the future we will try to shrink code generation, generally improve 
performance, and simplify our implementation.
2022-09-30 12:03:06 -07:00
Jon Kelley
28fba42e7e
feat: add an unhygenic render macro (#556)
* feat: add an unhygenic render macro

* chore: use render instead of rsx!(cx,
2022-09-25 01:05:16 -07:00
Jon Kelley
540e785d8b
Less clumsy configuration for desktop and mobile (#553)
* chore: dont use prebuilt builder pattern for configuring desktop

* chore: use regular config pattern for web

* Chore: update docs too

* chore: clean up some warnings
2022-09-13 16:22:27 -07:00
Reinis Mazeiks
d734dc5b46
Remove argument from use_hook closure (#496)
Also; update docs for said function
2022-07-11 15:50:56 -04:00
Jon Kelley
d9546d9504
Renderers are now packages, not features. (#387)
* feat: use synchronous router design

* feat: function to get router out of dom

* chore: restructure workspace to use renderers as packages, not features
2022-07-09 15:15:20 -04:00
Demonthos
3a5d1a2ff8
fix web imports and extract hot reload handlers into seperate files (#484) 2022-07-04 13:18:11 -05:00
Evan Almloff
f0655a11ad panic on errors in hot-reload if no error handler socket is connected 2022-07-01 09:01:15 -05:00
Reinis Mazeiks
0777437243 Merge branch 'master' of https://github.com/DioxusLabs/dioxus into rusty-events
 Conflicts:
	packages/tui/tests/events.rs
2022-06-29 02:18:57 +03:00
Reinis Mazeiks
f3fcec2bdf Merge branch 'master' of https://github.com/DioxusLabs/dioxus into rusty-events
 Conflicts:
	packages/html/src/events.rs
	packages/tui/src/hooks.rs
2022-06-28 21:09:20 +03:00
Evan Almloff
041f474329 Merge remote-tracking branch 'upstream/master' into clean_up_rsx_imports 2022-06-26 07:22:55 -05:00
YuKun Liu
0af69f83f2 Rename hot_reload to hot-reload 2022-06-26 14:23:19 +08:00
Evan Almloff
ef4ece42b3 Merge remote-tracking branch 'upstream/master' into clean_up_rsx_imports 2022-06-25 08:27:32 -05:00
Evan Almloff
fbf8e13b8d clean up imports 2022-06-25 08:27:10 -05:00
Evan Almloff
11d9a7d013 Merge remote-tracking branch 'upstream/master' into fix_nonbubbling_web_events 2022-06-22 13:59:10 -05:00
Evan Almloff
61b4bb2f19 handle bubbling events 2022-06-22 13:57:05 -05:00
Evan Almloff
75e13749ea set multiple rsx calls at once to prevent duplicated errors 2022-06-16 09:11:56 -05:00
Demonthos
df4ea20bb8 create serde compatible parse error 2022-06-15 12:58:08 -05:00
Evan Almloff
586983291a log parse errors 2022-06-13 17:02:43 -05:00
Evan Almloff
71d31556e5 Merge https://github.com/DioxusLabs/dioxus into jk/rsx-refactor 2022-06-10 18:16:05 -05:00
Jon Kelley
ea4eb218ab
Merge pull request #422 from rMazeiks/fix-web-missing-event-types
Fix web missing event types
2022-06-10 11:44:38 -04:00
Evan Almloff
017d269ca8 fix websocket error reporting 2022-06-09 09:36:28 -05:00
Evan Almloff
e7cf382784 create websocket for hot reloading 2022-06-06 13:30:32 -05:00
Reinis Mazeiks
f792ed7a17 Update virtual_event_from_websys_event based on make_synthetic_event in the desktop crate 2022-05-23 10:12:12 +03:00
Reinis Mazeiks
60e74b2ec0 Add missing event types to web (copied from desktop)
Related: #416
2022-05-23 10:12:11 +03:00
Evan Almloff
db1866090a fix broken doc links 2022-05-22 20:44:32 -05:00
Reinis Mazeiks
45980f9a1e Update examples to avoid deprecated API 2022-05-12 15:00:43 +03:00
Jonathan Kelley
356f37e9ee feat: arbitrary attributes 2022-05-05 16:50:33 -04:00
Jon Kelley
c4a19f71af
Merge branch 'master' into master 2022-04-23 23:08:58 -04:00
Jon Kelley
56ea9e42fa
Merge pull request #318 from overlisted/eval-stuff
Eval stuff
2022-04-04 13:01:35 -04:00
Jonathan Kelley
dfc69c0905 fix: compile fail for web 2022-04-04 12:29:00 -04:00
Jon Kelley
6c72ed5dd3
Merge pull request #333 from naturalethic/fix-incorrect-form-element-pointer
Fix form value collecting from form element instead of input element
2022-03-28 11:04:37 -04:00
Joshua Kifer
213f54c4d8 Convert all logs to trace 2022-03-27 09:23:44 -06:00
Joshua Kifer
2acacdd5a4 Fix form value collecting from form element instead of input element 2022-03-26 19:42:05 -06:00
Ilya Maximov
d31edfa7d7
rustfmt when the 2022-03-21 22:02:04 +01:00
Ilya Maximov
ee22881e08
Merge branch 'master' into eval-stuff 2022-03-21 22:00:17 +01:00
Ilya Maximov
6e8fdc1e4d
make the closure dyn 2022-03-21 21:57:29 +01:00
Jon Kelley
5c6ff70dd4
Merge pull request #316 from DioxusLabs/jk/fix-hydration
fix: setnode method for rehydration code
2022-03-20 20:11:55 -04:00
Joshua Kifer
ab4e37fbf2 Capture correct radio button value in a form input event 2022-03-19 12:24:29 -06:00
Ilya Maximov
b4a5fe9845
use ToString 2022-03-19 02:57:39 +01:00
Ilya Maximov
5cbf2698fd
add use_eval()to desktop and web 2022-03-17 23:47:11 +01:00
Jonathan Kelley
f26f704b6b fix: setnode method for rehydration code 2022-03-17 10:51:23 -04:00
Jonathan Kelley
77631bff1f Merge branch 'master' into jk/documet-everything 2022-02-26 17:33:06 -05:00
Shuanghui Yan
4eeb3da8c9 fix: add ns param for removeAttribute 2022-02-22 23:14:11 +08:00
Jonathan Kelley
b2a4d387c7 docs: document all of desktop crate 2022-02-20 23:52:36 -05:00
Jonathan Kelley
e43a8a9b6a feat: remove old async channel for new channel in ric raf web code 2022-02-15 11:03:13 -05:00
Aster
8d42191d7a Add From trait to convert web_sys Events to html Data 2022-02-12 20:57:13 +08:00
t1m0t
eb39f360e3 fix some uncaught error during runtime test 2022-02-11 17:59:59 +01:00
Jonathan Kelley
4f46089fce feat: use serde-wasm-bindgen crate for speedup 2022-02-07 10:17:16 -05:00
Jonathan Kelley
169f1dac11 Merge branch 'master' into jk/form-ma 2022-02-04 18:10:26 -05:00
Jonathan Kelley
d758dc6065 feat: form works in web 2022-02-04 02:13:35 -05:00
Jonathan Kelley
ca0d7dc268 fix: remove code generation 2022-02-04 01:56:54 -05:00
Jonathan Kelley
add21d5f9d feat: update bindings and interpreter with new tsc code 2022-02-03 12:52:05 -05:00
Jonathan Kelley
8f9d15db4a feat: enable form elements in web 2022-02-02 02:00:53 -05:00
Jonathan Kelley
c4556d050e Merge branch 'master' into jk/form-ma 2022-02-02 01:50:43 -05:00
Jonathan Kelley
84959a7826 feat: it works everywhere 2022-02-02 01:08:59 -05:00
Jonathan Kelley
86bac80040 fmt: make bindings obey formatting 2022-02-01 15:57:07 -05:00
Jonathan Kelley
71656adc89 publish: generate our bindings.rs file from an inlinejs snippet 2022-02-01 15:54:32 -05:00
Jonathan Kelley
527434b9f9 feat: make the interpreter as its own crate 2022-02-01 15:44:08 -05:00
Jonathan Kelley
7c06b3a9a2 Merge branch 'master' into jk/form-ma 2022-02-01 15:24:19 -05:00
Jonathan Kelley
8badf90a03 fix: dioxus web prevents default on in nested targets
this commit fixes an issue where we used the event target to
prevent default even if the target element wasn't an event
handler.
2022-01-31 15:53:06 -05:00
Jonathan Kelley
189ddd8c51 fix: move bindings into package 2022-01-29 10:39:21 -05:00
Jonathan Kelley
ae676d9d81 fix: webconfig should take &mut self 2022-01-24 20:25:32 -05:00
Jonathan Kelley
a239d2ba6a docs: fix web doc example and use &mut for builders everywhere 2022-01-24 20:24:50 -05:00
Jonathan Kelley
1406c9020b feat: add panic hook by default 2022-01-24 02:57:56 -05:00
Jonathan Kelley
f66d17ca84 wip: pass form data between web and desktop 2022-01-22 14:53:59 -05:00
Jonathan Kelley
95e93ed0bc feat: remove dioxus id on non-event elements 2022-01-21 15:06:57 -05:00
Jonathan Kelley
824defa2db Merge branch 'master' into jk/unify 2022-01-21 00:16:45 -05:00
Jonathan Kelley
c1a5d4e11f fix: ssr + hydration event listeners 2022-01-20 04:01:38 -05:00
Jonathan Kelley
05331ddd80 feat: wire up both desktop and web 2022-01-13 22:51:01 -05:00
Jonathan Kelley
10db6ad65b wip: web now links against the js interprter code 2022-01-12 08:57:42 -05:00
Sven Assmann
007d06d602 feat(events:focus): add missing onfocusin event 2022-01-10 18:08:29 +01:00
Sven Assmann
9849f68f25 feat(example:todomvc): add editing support
- 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
2022-01-10 14:46:23 +01:00
YuKun Liu
92561612c7 fix: format code 2022-01-09 02:25:11 +08:00
YuKun Liu
8f4aa84f1a feat: bool attr white list 2022-01-09 02:02:23 +08:00
Jonathan Kelley
21232285d9 fix: add exclusion list 2022-01-08 02:14:05 -05:00
Jonathan Kelley
8d685f40b7 feat: handle bool attrs properly 2022-01-08 02:09:02 -05:00
Jonathan Kelley
bbb6ee10de feat: make hydration more robust 2022-01-07 00:33:09 -05:00
Jonathan Kelley
e2a6454527 chore: switch to log tracing 2022-01-05 16:36:42 -05:00
Jonathan Kelley
cb2782b4bb wip: memoize dom in the prescence of identical components 2022-01-05 00:27:22 -05:00
Jonathan Kelley
4ea5c990d7 publish: new versions of everything 2022-01-03 19:44:04 -05:00
Jonathan Kelley
3de776c42a docs: fix the reference code 2022-01-03 13:26:15 -05:00
Jonathan Kelley
7abb3cc79c publish: dioxus web 2022-01-03 02:15:39 -05:00
Jonathan Kelley
75fa7b4aa6 fix: make tests pass 2022-01-03 01:12:39 -05:00
Jonathan Kelley
420a30e5d4 feat: overhaul examples and clean things up 2022-01-03 00:42:17 -05:00
Jonathan Kelley
3dc0e59876 fix: readme and examples syntax 2021-12-28 23:48:25 -05:00
Jonathan Kelley
a4f280d163 feat: more API updates 2021-12-28 23:20:01 -05:00