Demonthos
928b5358b2
allow arbitrary attribute value in owned attribute value ( #574 )
2022-10-02 14:13:06 -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
Demonthos
b32fd2d2cd
fix scroll data ( #569 )
2022-09-30 10:48:52 -07:00
Evan Almloff
c0b9b54d9b
allow custom string literals to be captured for hot reloading
2022-07-01 10:51: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
Evan Almloff
ab533864db
Merge remote-tracking branch 'upstream/master' into fix_hot_reloading_svg_attributes
2022-06-30 07:18:08 -05:00
Evan Almloff
e444d3d4bc
fix svg attributes
2022-06-30 07:17:59 -05:00
Evan Almloff
74fc28e5d1
add tests for diffing listeners
2022-06-29 10:09:37 -05:00
Evan Almloff
bf548d4a0e
set id before creating listener
2022-06-29 09:48:16 -05:00
Evan Almloff
58a495351a
check that an node is an element before removing listeners
2022-06-29 09:09:47 -05:00
Evan Almloff
cf2f504d77
fix unnessisary mut
2022-06-28 12:48:38 -05:00
Evan Almloff
f1f9f0df1a
pass clippy
2022-06-28 12:37:19 -05:00
Evan Almloff
7730401288
fix escape sequences in ifmt
2022-06-28 12:19:07 -05:00
Evan Almloff
8c3c75cab6
update tests
2022-06-28 10:02:50 -05:00
Evan Almloff
884723831b
fix path seperator
2022-06-28 09:48:19 -05:00
Evan Almloff
706b6c957b
change hot_reload to hot-reload in dev-dependancies
2022-06-26 07:26:03 -05:00
Evan Almloff
041f474329
Merge remote-tracking branch 'upstream/master' into clean_up_rsx_imports
2022-06-26 07:22:55 -05:00
Evan Almloff
9a963bba0a
update router test imports
2022-06-25 11:17:26 -05:00
Evan Almloff
02756f6f92
fix key parsing
2022-06-25 10:14:36 -05:00
Evan Almloff
6c20d74797
finish cleanup
2022-06-25 08:48:03 -05: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
c52a9334cb
fix tui tests
2022-06-24 14:05:19 -05: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
Evan Almloff
dd335cda59
use line!, col!, and row! instead of panic location
2022-06-20 15:44:10 -05:00
Evan Almloff
21206390f8
more formatting
2022-06-17 15:33:28 -05:00
Evan Almloff
f7b2869082
fix formatting
2022-06-17 15:15:02 -05:00
Evan Almloff
ffc9bf763a
pass clippy
2022-06-17 13:50:41 -05:00
Evan Almloff
0f2ff34a30
add tests for the interperter
2022-06-17 09:50:25 -05:00
Evan Almloff
9be8cc503f
restore router
2022-06-16 21:08:48 -05:00
Evan Almloff
79ddab2720
restore dev-dependancies
2022-06-16 21:07:18 -05:00
Evan Almloff
9e7e5b0859
Merge remote-tracking branch 'upstream/master' into jk/rsx-refactor
2022-06-16 09:17:36 -05:00
Evan Almloff
75e13749ea
set multiple rsx calls at once to prevent duplicated errors
2022-06-16 09:11:56 -05:00
Evan Almloff
b761bdb767
include element/attribute in errors
2022-06-15 14:20:36 -05:00
Evan Almloff
d9ee305575
offset column numbers
2022-06-15 13:36:18 -05:00
Evan Almloff
8670f05968
Merge branch 'tui_mouse_events_fix' into tui_focus
2022-06-15 08:31:04 -05:00
Evan Almloff
8e6b56c636
remove outdated comment
2022-06-14 20:57:43 -05:00
Evan Almloff
41e905144c
add warning when hot_reload is used in release builds
2022-06-14 10:32:49 -05:00
Evan Almloff
d422a23c94
add a chapter in the refrence
2022-06-14 09:55:46 -05:00
Evan Almloff
3dc68ffd76
add tests
2022-06-13 19:55:57 -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
Evan Almloff
586983291a
log parse errors
2022-06-13 17:02:43 -05:00
Evan Almloff
f132a08f7d
fix merge
2022-06-13 16:50:22 -05:00
Evan Almloff
9e4a069f42
Merge branch 'jk/rsx-refactor' of https://github.com/demonthos/dioxus into jk/rsx-refactor
2022-06-13 16:48:52 -05:00
Evan Almloff
c614506734
report error on unknown attribute
2022-06-13 16:48:15 -05:00
Evan Almloff
71d31556e5
Merge https://github.com/DioxusLabs/dioxus into jk/rsx-refactor
2022-06-10 18:16:05 -05:00
Evan Almloff
29b3503da8
fmt
2022-06-10 17:49:04 -05:00
Evan Almloff
69ecc9caaf
update tui tests
2022-06-10 17:47:43 -05:00
Evan Almloff
44686e217f
remove empty match
2022-06-10 17:33:19 -05:00
Evan Almloff
dcfe60c164
use taffy instead of stretch2
2022-06-10 17:23:30 -05:00
Evan Almloff
2f9393c650
remove example
2022-06-09 11:54:54 -05:00
Evan Almloff
38de26d0e4
remove attributes correctly
2022-06-09 10:31:11 -05:00
Evan Almloff
fe5c698c09
add DirtyAll to SchedulerMsg
2022-06-09 10:01:09 -05:00
Evan Almloff
d4dda577d6
remove extra print
2022-06-09 09:36:48 -05:00
Evan Almloff
017d269ca8
fix websocket error reporting
2022-06-09 09:36:28 -05:00
Evan Almloff
b480579169
derive clone and debug for SetRsxMessage
2022-06-08 12:33:55 -05:00
Evan Almloff
e7cf382784
create websocket for hot reloading
2022-06-06 13:30:32 -05:00
Evan Almloff
07199c8a64
clean up imports
2022-06-06 13:29:56 -05:00
Evan Almloff
c7a332efaa
remove mutex from RsxContext
2022-06-06 13:29:32 -05:00
Evan Almloff
0e97af989a
capture varibles in keys
2022-06-06 13:02:15 -05:00
Evan Almloff
7b629ef0f5
cleanup imports
2022-06-05 09:24:08 -05:00
Evan Almloff
3cd4175e2e
remove braces from captured variables
2022-06-05 08:39:50 -05:00
Evan Almloff
2a6d9ed075
handle rsx!{cx, ...}
2022-06-05 07:38:05 -05:00
Evan Almloff
586e29d815
force rerender after rsx is updated
2022-06-04 15:31:40 -05:00
Evan Almloff
031640c9a4
document RSX_CONTEXT
2022-06-04 14:59:24 -05:00
Evan Almloff
8c6fceb0c7
finish desktop implementation
2022-06-04 14:26:37 -05:00
Evan Almloff
bb62254b6b
remove refrence to __line_num
2022-06-04 12:26:46 -05:00
Evan Almloff
2bcaa2e43e
refactor interperting macro into function and don't rely on cx being in scope
2022-06-04 12:20:56 -05:00
Evan Almloff
0079f7d18b
WIP: expose pipe for desktop
2022-06-02 13:33:08 -05:00
Evan Almloff
3b2ac82e8d
fix spelling of interpreter
2022-05-31 12:18:22 -05:00
Evan Almloff
b921dc4eec
call error handler when error occurs
2022-05-31 12:06:53 -05:00
Evan Almloff
51b87dafcc
derive serde for Errors and Location, and add error handler
2022-05-31 12:03:04 -05:00
Evan Almloff
c94cf9c8e2
return an error when a expression could not be found
2022-05-31 08:29:30 -05:00
Evan Almloff
94448ea4aa
handle formatting options
2022-05-30 18:32:57 -05:00
Evan Almloff
2183ecf3fb
better error handling
2022-05-29 08:04:08 -05:00
Evan Almloff
29be00e9f5
add license
2022-05-28 14:32:49 -05:00
Evan Almloff
eb270ef062
update component on submitting
2022-05-28 12:52:49 -05:00
Evan Almloff
195dd22206
don't compile dioxus-router unless the router feature is enabled
2022-05-28 12:11:47 -05:00
Evan Almloff
c1072aa95a
handle positional_args
2022-05-28 12:11:22 -05:00
Evan Almloff
06390b9be5
allow rsx to be used outside of a proc_macro context
2022-05-28 12:10:32 -05:00
Evan Almloff
4b1ea5879d
Merge https://github.com/DioxusLabs/dioxus into jk/rsx-refactor
2022-05-27 18:26:31 -05:00
Evan Almloff
04807a1ef7
update with AttributeValue
2022-05-27 18:18:40 -05:00
Evan Almloff
f9713b2fe9
Merge remote-tracking branch 'origin/master' into jk/rsx-refactor
2022-05-27 17:56:50 -05:00
Evan Almloff
cbac6b5326
remove key from example
2022-05-27 17:54:45 -05:00
Evan Almloff
13125fef4e
restore dev dependancies
2022-05-27 17:54:36 -05:00
Evan Almloff
cef2f52058
handle keys
2022-05-27 16:49:32 -05:00
Evan Almloff
94169083f5
use __varibles
2022-05-27 13:09:29 -05:00
Evan Almloff
7acc6a553f
update example to showcase hot reloading
2022-05-27 13:04:27 -05:00
Evan Almloff
3c7db0631b
handle iterators and nested rsx calls
2022-05-27 12:21:12 -05:00
Evan Almloff
f703347936
remove key
2022-05-27 11:16:34 -05:00
Evan Almloff
6b03a60fee
handle listeners
2022-05-27 10:50:33 -05:00
Evan Almloff
a0c7e4d78a
add component support
2022-05-27 09:47:44 -05:00
Evan Almloff
07da854455
compare parsed expressions instead of strings
2022-05-26 19:21:53 -05:00
Evan Almloff
5b0a60c294
handle expressions in attributes
2022-05-26 19:16:51 -05:00
Evan Almloff
62cca95905
update interperter to use CapuredContext
2022-05-26 17:02:36 -05:00