Commit Graph
52 Commits
Author SHA1 Message Date
Tristan F.andJonathan Kelley 9167cd9dec fix most typos, add crate-ci/typos to CI (#2653)
* fix most typos, add crate-ci/typos to CI

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
2024-07-23 17:49:33 -07:00
88af3e7eff Hotreloading of for/if/body, formatted strings, literals, component props, nested rsx, light CLI rewrite, cli TUI (#2258)
Hotreload the contents of for loops, if chains, component bodies, props, attributes, and any literals discovered in rsx!
Add a TUI renderer to the CLI.
Improve the CLI build system to be async and parallel.
Refactor RSX to allow partial expansion of expressions.
Merge autofmt implementations for consistency.
Merge the representation of elements and components under the hood.
Add a diagnostics system for rsx for improved error messages.
Drop interprocess and move to websockets for communication between the CLI and the server.
Assign IDs to nodes and attributes in a stable way to be used in non compiler contexts.
Add hotreloading to any body of component/for loop/if chain/etc.

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
Co-authored-by: Liam Mitchell <liamkarlmitchell@gmail.com>
2024-07-17 19:11:18 -07:00
Evan Almloff ecdc93232e Expand component definition before errors to fix component autocomplete from other modules (#2609) 2024-07-08 11:21:20 -07:00
Evan AlmloffandJonathan Kelley 2523581cf4 Autocomplete rsx (#2421)
* autocomplete rsx

* hide the completions module

* fix autocomplete for identifiers that start with a raw identifier

* add field completion hints for props

* remove extra import

* Revert "add field completion hints for props"

This reverts commit 194899c73783e0f9b5d601d53365746d838f2048.

* fix autocomplete inside raw expressions

* fix autofmt

* feat: just use regular ifmt if it's compatible

reuses the tokens for ifmt so RA provides its HIR lowering on simple formatted strings

* fix merging ifmt strings

* add a better error message for components called like functions

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
2024-05-22 07:24:50 -05:00
Evan Almloff af524d979b Fix empty for loop, if statements and children (#2275)
* fix empty for loop, if statements and children

* fix clippy
2024-04-08 19:23:55 -07:00
Jonathan Kelley be99e29e5f Fixes to autofmt, make it more aggressive (#2230)
* fix: fmt unterminated if, be more aggressive with line splits

* Fix: Handle long exprs in for/if statements
2024-04-03 15:27:36 -07:00
Jonathan Kelley eb79e61642 Add a ton of comments to rsx/hotreload, add snapshot testing, refactor a bit to simplify the crate (#2130)
Merge dynamic context and dynamic mapping, clean up the rsx hotreload logic, and add location data to the Rsx objects
2024-03-24 13:31:26 -07:00
Evan Almloff 58f7efafea Make EventHandler copy (#2112)
* implement Copy for EventHandler
* implement from closure for event handler and remove special on prefix
* fix props implementation of EventHandler
2024-03-19 19:48:53 -07:00
Jonathan Kelley ae352f8958 Feat: reject invalid keys 2024-03-07 16:03:00 -08:00
Evan Almloff 50e3216d8b convert T into signals automatically 2024-01-29 13:36:39 -06:00
Evan Almloff af1749d7be re export renderers in dioxus 2024-01-15 19:14:11 -06:00
Jonathan Kelley 3f15612c8e Fix remaining issues to get desktop running 2024-01-11 17:30:50 -08:00
Jonathan Kelley 2ae3241cc0 Merge branch 'master' into jk/breaking-merged 2024-01-11 16:04:36 -08:00
Jonathan Kelley 1527b81e02 Components participate in event handlers 2024-01-11 12:11:27 -08:00
Jonathan Kelley aff5259654 Allow children shorthand in components 2024-01-10 23:52:38 -08:00
Jonathan Kelley 8a77d2560e fix tests around children elements 2024-01-10 23:42:36 -08:00
Jonathan Kelley b8061d6d14 Make clippy happy 2024-01-10 23:26:26 -08:00
Jonathan Kelley fa9d92f956 Fix tests for autofmt 2024-01-10 22:41:40 -08:00
Evan Almloff c9bd5a4e6e look out for a simple to optimize format case 2024-01-07 17:02:49 -06:00
Evan Almloff ce902e4586 fix creating EventHandler in a component 2024-01-07 09:18:45 -06:00
Evan Almloff 4013341b6c hello world example working 2024-01-05 18:01:05 -06:00
Evan Almloff dc446b5e5b fix extending an element 2023-09-19 16:38:27 -05:00
Evan Almloff 05fb8c1e91 Merge branch 'master' into router-typesafe 2023-07-07 18:31:48 -07:00
Evan Almloff 8f67d0aafd make creating rsx nodes from macros possible 2023-06-29 12:52:27 -07:00
Evan Almloff c04ce2901e fix the span the error reports under 2023-03-21 07:59:25 -05:00
Evan Almloff 3655e7c89e throw an error instead of accepting attributes without commas 2023-03-21 07:55:36 -05:00
Evan Almloff 3f1d525734 make trailing commas in components optional 2023-03-11 18:27:50 -06:00
Jonathan Kelley 1940855e39 feat: implement comments in zero children nodes 2023-01-10 17:47:58 -08:00
Evan Almloff 555b192436 Merge branch 'upstream' into fix-hot-reloading 2022-12-23 18:06:47 -06:00
Evan Almloff e5a5850354 merge master 2022-12-20 20:48:28 -06:00
Jonathan Kelley d3be971f4e chore: rollback to option instead of anyhow 2022-12-19 18:06:13 -08:00
Evan Almloff 2131e5658b add hot reloading context trait 2022-12-10 14:09:59 -06:00
Jonathan Kelley 5673017def chore: clean up the repo some 2022-12-06 17:50:25 -08:00
Jonathan Kelley 3b166c9edd wip: clean up some things 2022-11-30 23:54:30 -05:00
Jonathan Kelley 9c4abcbea0 wip: more tests! 2022-11-22 21:32:26 -08:00
Jonathan Kelley e09b6bf813 chore: tweak generic arguments and iterators in rsx 2022-11-15 20:58:56 -08:00
Jonathan Kelley 584504feb7 feat: keys 2022-11-03 01:24:20 -07:00
Jonathan Kelley c6a6c3d0f8 feat: components pass thru children 2022-11-02 17:29:18 -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 4a8a7dd5f4 allow the last attribute in a component to contain formatting (#504) 2022-07-27 13:52:09 -07:00
Jonathan Kelley fa756ba245 feat: manual props 2022-06-28 17:16:26 -04:00
Evan Almloff 9e7e5b0859 Merge remote-tracking branch 'upstream/master' into jk/rsx-refactor 2022-06-16 09:17:36 -05:00
Evan Almloff 94448ea4aa handle formatting options 2022-05-30 18:32:57 -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 a0c7e4d78a add component support 2022-05-27 09:47:44 -05:00
Jonathan Kelley f9d9f85924 feat: format components properly 2022-04-24 13:12:20 -04:00
Jonathan Kelley 794f43ffee concept: move rsx out to its own crate 2022-04-24 02:35:52 -04:00
Ilya Maximov b8573bc4dd refactor: remove the rsx folder
it doesn't seem to be published anywhere or used at all
2022-03-19 20:35:53 +01:00