Commit graph

137 commits

Author SHA1 Message Date
Jonathan Kelley
4e330bc1ec chore: fix rsx printer 2022-12-19 16:20:02 -08:00
Jonathan Kelley
182f11d0f3 chore: update with master 2022-12-19 16:17:59 -08:00
Jonathan Kelley
09b38574db Merge branch 'master' into jk/autofmt-fixues 2022-12-19 12:19:51 -08:00
David Craven
99dafdb8ee
Build failure on master. (#627)
* Build failure on master.

* Fix ci failure.

* Fix test.

* Ignore broken tests.

* Fix doctests.
2022-11-22 09:56:15 -08:00
Jon Kelley
fb2f3e68ff
fix: random commit (#586) 2022-10-08 23:07:20 -07:00
Jonathan Kelley
03bc63dacc wip: wire up bodynodes in more places 2022-10-05 01:13:14 -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
Jonathan Kelley
181a51a63b wip: add whitespace parsing to rsx 2022-09-30 10:51:53 -07:00
Jonathan Kelley
5313fc0cc6 fix: trailing commas with key 2022-09-28 17:06:11 -07:00
Jonathan Kelley
a37458b9fa chore: fixes to autoformat to prevent double rendering of expr line 2022-09-28 16:47:10 -07:00
Jon Kelley
67dc6e6017
feat: implement type magic to allow strings, format args, and other types directly in rsx (#550)
* feat: implement type magic

* chore: undo example

* fix: let tests pass

* chore: add generic to allow any nesting of iterators

* Chore: remove comments

* chore: update rsx usage

* chore: use cleaner version of generic IntoVnode

* chore: don't derive default for lfietimed thing

* chore: remove latent comment

* fix: accept a third parameter
2022-09-12 22:49:04 -07: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
Jonathan Kelley
3d47cb48fa fix: autofmt on single line rsx calls 2022-07-07 02:06:50 -04:00
Jonathan Kelley
251aafa5fd fix: fmting 2022-07-05 18:42:00 -04:00
Jonathan Kelley
575f92d2d4 chore: update readme and tests for autofmt 2022-07-05 18:23:30 -04:00
Jonathan Kelley
76581e7400 fix: disappearing manual props 2022-07-05 18:03:04 -04:00
Jonathan Kelley
19e6e43358 fix: only apply comments if relevant 2022-07-05 17:59:33 -04:00
Jonathan Kelley
fa9ebe17cc feat: fix autoformatting around one liners 2022-07-05 17:49:16 -04:00
Jonathan Kelley
64d669e934 chore: add todo list to autofmt crate 2022-07-05 13:31:26 -04:00
Jonathan Kelley
2634755620 fix: handle comments around attributes better 2022-07-05 02:06:54 -04:00
Jonathan Kelley
4471ccba49 fix: even better comment handling 2022-07-05 01:53:08 -04:00
Jonathan Kelley
47f3cc2529 fix: correct comment handling for first line 2022-07-05 00:30:09 -04:00
Jonathan Kelley
150d824561 feat: more advanced comment handling 2022-07-05 00:22:06 -04:00
Jon Kelley
3a30b36f68
fix: some edge cases around autoformatting (#485)
* wip: remove comment support from autofmt

* fix: some edge cases around autoformatting

* fix: revert readme

* fix: failing test
2022-07-04 21:11:03 -04:00
Jonathan Kelley
2884d72b08 chore: make clippy happy 2022-07-02 23:45:32 -04:00
Jonathan Kelley
28a0c67275 polish: clean up the examples and move autofmt sample into dedicated file 2022-06-30 15:19:58 -04:00
Jonathan Kelley
0aec375371 wip: clean up formatting package 2022-06-28 17:33:11 -04:00
Jonathan Kelley
bd936d3af2 feat: more cleanup 2022-06-28 17:29:10 -04:00
Jonathan Kelley
fa756ba245 feat: manual props 2022-06-28 17:16:26 -04:00
Jonathan Kelley
5bab835843 fix: allow keys 2022-06-28 15:35:46 -04:00
Jonathan Kelley
1e4af430a8 wip: eliminate warnings 2022-06-28 15:15:09 -04:00
Jonathan Kelley
a825cdcf58 feat: simple support for comments 2022-06-28 15:01:51 -04:00
Jonathan Kelley
d70b436157 wip: more cleanup, more tests 2022-06-27 16:24:36 -04:00
Jonathan Kelley
a2a194ca40 wip: use stateful buffer 2022-06-27 13:36:41 -04:00
Jonathan Kelley
79b475798d wip: make element printer more comprehensive 2022-06-25 02:22:26 -04:00
Jonathan Kelley
398cbc6534 wip: rely on git version of prettyplease, refactor autofmt 2022-06-25 00:55:52 -04:00
Jonathan Kelley
5b9e34aadd feat: add fork of prettyplease for autoformatting 2022-06-24 14:22:08 -04:00