Commit Graph
100 Commits
Author SHA1 Message Date
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