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
Demonthos
4a5ae758ee
Allow Multiple dependencies for states in the RealDom (native core) ( #412 )
...
* WIP multable deps
* WIP: refactor and genralize state macro
* add traversable trait
* update tui to use elementid to index dom
2022-07-07 00:50:22 -04:00
Reinis Mazeiks
a9f286c52b
Fix bug in TUI key repeat handling
2022-06-29 07:44:19 +03:00
Reinis Mazeiks
bfcfe2ca5f
Remove use of deprecated functions
2022-06-28 23:10:44 +03:00
Reinis Mazeiks
6932924f57
Comment on crossterm key event conversion
2022-06-28 21:17:46 +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
2d45e1dc8d
add bubbling data to events after merge
2022-06-22 14:24:03 -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
Jonathan Kelley
8be66bd34d
fix: apply some clippy lints and rename the liveview methods to not intersect
2022-06-20 02:24:39 -04:00
Evan Almloff
8670f05968
Merge branch 'tui_mouse_events_fix' into tui_focus
2022-06-15 08:31:04 -05:00
Evan Almloff
1d699b0b6e
fix absolute position for mouse events
2022-06-13 19:42:03 -05:00
Evan Almloff
5d323cae78
Merge remote-tracking branch 'upstream/master' into tui_focus
2022-06-13 17:55:18 -05:00
Evan Almloff
ce385965a7
Merge branch 'master' into tui_focus
2022-06-13 17:37:40 -05:00
Jon Kelley
d9e14db434
Merge pull request #417 from Demonthos/master
...
handle backtab for tui
2022-06-13 11:13:00 -04:00
Evan Almloff
29b3503da8
fmt
2022-06-10 17:49:04 -05:00
Demonthos
c1112cfd3a
Merge branch 'master' into stretch2_relative_layout
2022-06-10 17:41:51 -05:00
Evan Almloff
dcfe60c164
use taffy instead of stretch2
2022-06-10 17:23:30 -05:00
Evan Almloff
d6eaf8778f
handle backtab
2022-05-21 18:08:52 -05:00
Evan Almloff
bdbe452b33
fix merge
2022-05-12 20:52:06 -05:00
Evan Almloff
6ccbe662d2
Merge https://github.com/DioxusLabs/dioxus into tui_focus
2022-05-12 20:34:21 -05:00
Reinis Mazeiks
aaf9d4665f
Update interpreter and example
2022-05-12 14:36:52 +03:00
Reinis Mazeiks
ed34e339fc
Tui: construct keyboard data with new api
2022-05-12 14:10:25 +03:00
Reinis Mazeiks
d7e4fcda80
Implement idiomatic accessors for WheelData
2022-05-12 10:55:04 +03:00
Reinis Mazeiks
765baf6e48
Rename module input
to avoid naming conflict with element of the same name
...
Not sure if this was supposed to be allowed, but it was causing https://github.com/rust-lang/rust/issues/96934
2022-05-11 13:47:58 +03:00
demonthos
bd105c9bc6
Merge remote-tracking branch 'origin/master' into tui_focus
2022-05-07 14:08:10 -05:00
Reinis Mazeiks
b7447503ea
Merge branch 'master' of https://github.com/DioxusLabs/dioxus into rusty-mousedata
...
Conflicts:
packages/tui/src/hooks.rs
2022-05-07 17:56:03 +03:00
Evan Almloff
6f260e8a4a
move released into mouse condition
2022-05-07 09:16:21 -05:00
Evan Almloff
83209e5e03
check mouse state before iterating through elements
2022-05-07 09:10:17 -05:00
Evan Almloff
3cba79d835
add focus in and focus out events
2022-05-07 08:39:55 -05:00
Reinis Mazeiks
df59d5148e
TUI mouse press&release: Replace usage of deprecated fields with accessors
2022-05-07 16:30:21 +03:00
Reinis Mazeiks
81d3c990bf
Simplify mouse button tracking
...
delete the shitcodes
2022-05-07 16:11:48 +03:00
Reinis Mazeiks
285a6d080b
Add coordinates to tui_hover example
2022-05-07 15:32:19 +03:00
Reinis Mazeiks
cf26f41972
Merge branch 'master' of https://github.com/DioxusLabs/dioxus into rusty-mousedata
...
Conflicts:
packages/tui/src/hooks.rs
2022-05-07 10:50:52 +03:00
Reinis Mazeiks
9c6cd42ca2
TUI: use constructor instead of deprecated fields
2022-05-07 10:49:49 +03:00
Demonthos
a3abe3965a
Merge branch 'master' into tui_focus
2022-05-06 21:19:13 -05:00
Jonathan Kelley
9c9928d226
fix: tui values
2022-05-06 20:48:57 -04:00
Evan Almloff
ac95ab5222
switch released pressed
2022-05-06 19:35:55 -05:00
Evan Almloff
e3757f97ed
only trigger onmousemove if the position has changed
2022-05-06 17:01:50 -05:00
Reinis Mazeiks
6a5a3f47cc
Remove allow(deprecated)
to bring back the warnings
2022-05-07 00:59:12 +03:00
Reinis Mazeiks
0dbd3e370e
Rusty MouseData API
2022-05-06 23:54:07 +03:00
Evan Almloff
5c52396482
Merge remote-tracking branch 'upstream/master' into tui_focus
2022-05-05 12:46:25 -05:00
Evan Almloff
39a65f86b1
Merge remote-tracking branch 'upstream/master' into pr/Demonthos/390
2022-05-05 12:34:18 -05:00
Evan Almloff
07c1964ebf
fix focus event
2022-05-05 07:17:33 -05:00
Evan Almloff
a87edd1a76
add focus event
2022-05-05 07:08:51 -05:00
Evan Almloff
5d5e7f55fd
pass clippy
2022-05-04 14:37:30 -05:00
Evan Almloff
a4eb4dc8df
add offset mouse data to tui
2022-05-04 13:58:48 -05:00
Reinis Mazeiks
d84d414170
Add offset coordinates to mouse events on TUI and desktop.
2022-05-04 16:42:14 +03:00
Evan Almloff
9ed722ae45
change focus when an element is clicked
2022-05-03 17:19:16 -05:00
Evan Almloff
23376fef8e
move focus into event system
2022-05-03 16:44:53 -05:00