Commit Graph
100 Commits
Author SHA1 Message Date
Evan Almloff 21ca1599eb more bugfixes 2022-12-22 15:09:58 -06:00
Evan Almloff 776c5e8839 fix hot reloading with global and svg attibutes 2022-12-22 13:52:41 -06:00
Evan Almloff 04a923f83e fix changing the order of dynamic nodes 2022-12-22 11:36:38 -06:00
Evan Almloff db7a1ec0b0 fix lints 2022-12-21 13:04:57 -06:00
Evan Almloff 4c1fe1d9bb allow changing the number of root nodes 2022-12-21 12:50:48 -06:00
Evan Almloff e5a5850354 merge master 2022-12-20 20:48:28 -06:00
Evan Almloff 67921cacc3 post merge fixes 2022-12-19 21:20:46 -06:00
Evan Almloff 493ee1cb3f Merge branch 'upstream' into fix-hot-reloading 2022-12-19 21:17:22 -06:00
Evan Almloff 4364a4b511 handle updating templates better 2022-12-19 19:28:44 -06:00
Evan Almloff 96ce704f8e fix serialization 2022-12-19 11:48:28 -06:00
Evan Almloff fbc89a7088 make 'static lifetime explicit 2022-12-19 09:37:15 -06:00
Evan Almloff 2419a2ae9d WIP diffing templates 2022-12-10 21:18:44 -06:00
Evan Almloff 6b19229b53 use interning to leak less memory 2022-12-10 16:21:31 -06:00
Evan Almloff 3e7dbe868a unwrap instead of using unreachable 2022-12-10 15:05:41 -06:00
Evan Almloff 134a45b89d fix fmt escape sequences in static attribute/text nodes 2022-12-10 14:58:13 -06:00
Evan Almloff 2131e5658b add hot reloading context trait 2022-12-10 14:09:59 -06:00
Evan Almloff f16e3be2c2 Merge branch 'fix-hot-reloading' of https://github.com/demonthos/dioxus into fix-hot-reloading 2022-12-10 12:29:17 -06:00
Evan Almloff da64b0c2a8 WIP parising 2022-12-10 12:29:15 -06:00
Evan Almloff f7717d8eb2 bump sledgehammer version 2022-12-10 08:29:54 -06:00
Evan Almloff a9b7da1890 remove some unused files 2022-12-09 12:00:37 -06:00
Evan Almloff bf47f64852 Merge branch 'upstream' into return-from-js 2022-12-08 11:25:15 -06:00
Evan Almloff 35bebbf0cb wrap the web eval result in a compatability layer 2022-12-08 10:57:09 -06:00
Evan Almloff e863ef29b8 allow returning values from use_eval 2022-12-08 10:44:56 -06:00
Evan Almloff 7ef180409d use sledgehammer-bindgen 0.1.2 2022-12-08 07:41:04 -06:00
Evan Almloff 129a67cdc6 fix mouse interaction with widgets 2022-12-08 06:40:00 -06:00
Evan Almloff 15701d1c87 make clippy happy 2022-12-07 23:05:00 -06:00
Evan Almloff bbd49bb37c cleanup code and examples 2022-12-07 23:01:13 -06:00
Evan Almloff 029255c7ac widgets 2022-12-07 20:28:01 -06:00
Evan Almloff 99a4a9d45b Merge branch 'upstream' into optimize-templates-v3 2022-12-07 18:29:02 -06:00
Evan Almloff 56b027ef33 fix more lints 2022-12-07 17:24:50 -06:00
Evan Almloff cbaf36251f cargo fix 2022-12-07 17:24:11 -06:00
Evan Almloff b79ad4f50e Merge remote-tracking branch 'upstream/master' into optimize-templates-v3 2022-12-07 17:20:31 -06:00
Evan Almloff 5c6c235df0 cleanup code 2022-12-07 15:48:25 -06:00
Evan Almloff 84416cbe6a check if templates are ptr eq before doing full equality check 2022-12-07 10:11:27 -06:00
Evan Almloff 08da53303d optimizations aroud preallocating 2022-12-07 08:44:54 -06:00
Evan Almloff d64d92e4b4 disable rif raf 2022-12-07 07:24:51 -06:00
Demonthos 67a6fa9eb8 Implement new mutations with native core (#630)
* work on seperating tree struture from realdom

* intial update to new mutations

* handle height

* update to taffy 0.2

* add as_varient functions to OwnedAttributeValue

* make get node parent mut optionally return a parent

* work on upward pass

* add more code for parrellel passes

* make resolve passes public

* more work on parallel passes

* fix deadlock and add more tests

* move height into the tree instead of the realdom

* make passes exicute in parallel instead of executing invidual passes in parellel

* fix some warnings

* add up dependant test

* clean up examples

* work on intigrating state with passes

* update to new mutations

* work on implementing macro

* make the macro compile

* more progress on macro

* mark cloned nodes as dirty

* update persistant_iterator utility

* fix mask generation

* update tui with new mutations

* more progress updating tui

* some basic tui examples working

* don't push template nodes onto the stack

* update hover example

* update benchmark

* update more examples

* fix root node layout

* ignore out of bounds renders

* update color picker example

* update all events example

* update remaining examples

* update tests

* tests passing

* move persistant iterator test

* update examples

* fix gaps in layout

* fix formatting

* fix memory leak
2022-12-06 15:38:04 -08:00
Evan Almloff 1081e4b772 Merge branch 'implement-new-mutations-with-native-core' into mutation-store 2022-12-06 14:24:40 -06:00
Evan Almloff 6102902387 work on optimizing web implementation 2022-12-06 14:24:35 -06:00
Evan Almloff 77381ceadd fix memory leak 2022-12-06 09:54:44 -06:00
Evan Almloff 4b1c6125d4 fix formatting 2022-12-06 09:16:40 -06:00
Evan Almloff 4be64cb9f0 fix gaps in layout 2022-12-06 09:08:25 -06:00
Evan Almloff 6ee4f7df4f update examples 2022-12-06 08:33:51 -06:00
Evan Almloff 40b15f834b move persistant iterator test 2022-12-06 08:31:06 -06:00
Evan Almloff 32e93dee65 tests passing 2022-12-06 08:27:32 -06:00
Evan Almloff ad33f2ce96 update tests 2022-12-05 21:36:24 -06:00
Evan Almloff 317aed7343 update remaining examples 2022-12-05 20:45:08 -06:00
Evan Almloff b1db7a6400 update all events example 2022-12-05 20:43:11 -06:00
Evan Almloff f10d47b53d update color picker example 2022-12-05 20:37:55 -06:00
Evan Almloff 57ef56511c ignore out of bounds renders 2022-12-05 20:30:05 -06:00
Evan Almloff a823b45af9 fix root node layout 2022-12-05 20:18:10 -06:00
Evan Almloff e6a11f50dd update more examples 2022-12-05 14:20:45 -06:00
Evan Almloff 094012b07d update benchmark 2022-12-05 14:04:13 -06:00
Evan Almloff 9a37da6393 update hover example 2022-12-05 13:53:43 -06:00
Evan Almloff 24cb503c09 don't push template nodes onto the stack 2022-12-05 13:49:55 -06:00
Evan Almloff 1587056a4b some basic tui examples working 2022-12-05 13:30:13 -06:00
Evan Almloff 11b37ee141 more progress updating tui 2022-12-05 09:44:43 -06:00
Evan Almloff 8c07b4059f update tui with new mutations 2022-12-04 20:39:54 -06:00
Evan Almloff f21d099ae4 fix mask generation 2022-12-04 19:48:16 -06:00
Evan Almloff 72184e65ef update persistant_iterator utility 2022-12-04 19:43:05 -06:00
Evan Almloff d2047ed744 mark cloned nodes as dirty 2022-12-03 22:40:09 -06:00
Evan Almloff 0e17199e7a more progress on macro 2022-12-03 22:26:37 -06:00
Evan Almloff 29a61b1855 make the macro compile 2022-12-03 19:35:37 -06:00
Evan Almloff 53094a7bbd work on implementing macro 2022-12-03 18:28:32 -06:00
Evan Almloff 0d780fee61 update to new mutations 2022-12-03 18:28:25 -06:00
Evan Almloff 80674e4566 Merge branch 'jk/templates-v3' into implement-new-mutations-with-native-core 2022-12-03 13:21:44 -06:00
Evan Almloff d78af904e6 work on intigrating state with passes 2022-11-26 15:25:02 -06:00
Evan Almloff 4812b5124a clean up examples 2022-11-26 12:18:23 -06:00
Evan Almloff 42888f0cbc add up dependant test 2022-11-26 12:13:37 -06:00
Evan Almloff bb3be32b19 fix some warnings 2022-11-26 11:51:52 -06:00
Evan Almloff 51f643c5dc make passes exicute in parallel instead of executing invidual passes in parellel 2022-11-26 11:50:54 -06:00
Evan Almloff 8af59d6969 move height into the tree instead of the realdom 2022-11-25 22:22:56 -06:00
Evan Almloff 7d3ac26fce fix deadlock and add more tests 2022-11-25 15:04:00 -06:00
Evan Almloff 9e47468c3a more work on parallel passes 2022-11-25 13:38:01 -06:00
Evan Almloff 26d4e48480 make resolve passes public 2022-11-25 11:45:47 -06:00
Evan Almloff c7eeeef68e add more code for parrellel passes 2022-11-25 11:44:46 -06:00
Evan Almloff e08a2186a6 make get node parent mut optionally return a parent 2022-11-24 22:16:27 -06:00
Evan Almloff 21edea62be add as_varient functions to OwnedAttributeValue 2022-11-24 17:43:55 -06:00
Evan Almloff 5f4b08496c update to taffy 0.2 2022-11-24 17:41:12 -06:00
Evan Almloff f9059c3f30 handle height 2022-11-24 17:41:07 -06:00
Evan Almloff dcad2fe8a2 intial update to new mutations 2022-11-24 15:05:15 -06:00
Evan Almloff 078b8ba833 work on seperating tree struture from realdom 2022-11-24 10:56:44 -06:00
Demonthos f21c8423eb optimizations for wasm size (#582)
* optimize for size

* fix tests

* revert log feature

* make backtrace not optional

* remove dev feature from web dev-deps
2022-11-16 22:22:13 -08:00
Demonthos f89cd20455 fix tui example links (#607) 2022-10-28 18:06:39 -07:00
Demonthos 3b7b503333 Refactor Mutations and simplify Templates (#578)
* update mutations to be path based rather than renderer integrated
2022-10-18 14:42:45 -07:00
Demonthos 020c4bf0f8 fix bug with dynamic nodes after fragments (#591) 2022-10-15 11:00:56 -07:00
Demonthos ab10d327ac Fix attribute value in macro (#577)
* create into AttributeValue trait to allow arbitraty attribute values

* allow attributevalue in non-template macro
2022-10-12 20:43:37 -07:00
Demonthos 23c48cf795 render optimizations (#585) 2022-10-08 23:24:41 -07:00
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