495 Commits

Author SHA1 Message Date
Cecile Tonglet
7ddf26752f
Introduce immutable string, array and map (#2563) 2022-06-24 16:58:20 +01:00
Kaede Hoshikawa
6b89e21034
Migrate to once_cell (#2750)
* Replace lazy_static with once_cell.

* Migrate to clap v3, so 1 less lazy_static.

* Convert with `.into()`.
2022-06-24 19:32:00 +05:00
Muhammad Hamza
54de041981
Nightly features (#2743)
* Nightly features

* Tests

* Fix tests

* Don't invent new syntax

* Do not impl Fn for UseReducerHandle

* Simplify UseForceUpdateHandle

* Manually specify clippy features

* Revert "Simplify UseForceUpdateHandle"

This reverts commit 761dbb0f8bb7c280054d55dcc724f08604ee4ece.

* `UseForceUpdateHandle`

* fmt
2022-06-24 19:21:02 +05:00
WorldSEnder
cda74c464b
Fix generic props structs (#2746)
* fixup of generic props structs

* fix build errors from msrv 1.57 on time crate

* build wasm-bindgen-cli with cargo +stable
2022-06-23 11:21:52 +02:00
dependabot[bot]
015412e6ff
Update fake requirement from =2.4.1 to 2.5.0 (#2739)
* Update fake requirement from =2.4.1 to =2.5.0

Updates the requirements on [fake](https://github.com/cksac/fake-rs) to permit the latest version.
- [Release notes](https://github.com/cksac/fake-rs/releases)
- [Commits](https://github.com/cksac/fake-rs/commits)

---
updated-dependencies:
- dependency-name: fake
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Don't pin version

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>
2022-06-19 22:01:40 +05:00
dependabot[bot]
f27bea9a37
Update lipsum requirement from =0.8.0 to 0.8.2 (#2726)
* Update lipsum requirement from =0.8.0 to =0.8.2

Updates the requirements on [lipsum](https://github.com/mgeisler/lipsum) to permit the latest version.
- [Release notes](https://github.com/mgeisler/lipsum/releases)
- [Commits](https://github.com/mgeisler/lipsum/compare/0.8.0...0.8.2)

---
updated-dependencies:
- dependency-name: lipsum
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Don't pin versions

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>
2022-06-19 19:11:43 +05:00
sephiron99
0bdbd95328
Fix dangling urls (#2728) 2022-06-19 17:23:33 +05:00
Udasi Tharani
f73f68bdc5
Better NodeRefs Example (#2727)
* redesign node refs example with form validation

* use char for single character string

* update readme

* fix placeholder type
2022-06-12 15:11:13 +02:00
WorldSEnder
e19615693e
fix: examples depending on lipsum for rust 1.56 (#2717) 2022-06-04 21:22:58 +09:00
WorldSEnder
e68060afa7
Span hygene and editor UX (#2702)
* add span for closing tag to macro expansion

* decouple name resolution from locations

* commit to new macro errors
2022-05-25 13:01:10 +02:00
WorldSEnder
b90c99af0c
Partially undo #2673, different approach for the DerefMut impl of VList (#2692)
* partially undo #2673

VList again has a DerefMut implementation
the internal fully_keyed state now has an "indeterminate" variant
instead of being a bool, this recomputes it during reconciliation

* add Copy impl to FullyKeyedState
2022-05-24 23:05:37 +02:00
Kaede Hoshikawa
b29b4535b7
use_prepared_state & use_transitive_state (#2650)
* Some initial implementation.

* Read prepared state during hydration.

* Decode each state with bincode.

* Feature gate prepared state.

* Update documentation.

* Switch from base64 to String.

* cargo +nightly fmt.

* Fix test.

* Add some tests.

* Minor adjustments.

* Remove unused marker.

* Update example.

* Add use_transitive_state.

* Remove unused dead code notation.

* Opt for better code size.

* Add tests for use_transitive_state.

* Fix cargo fmt.

* Fix rustdoc.

* Asynchronously decode data during hydration.

* Fix feature flags.

* Fix docs.

* Feature flags on ssr_router.

* Adjust workflow to reflect feature flags.

* Fix features.

* Restore wasm-bindgen-futures to be wasm32 only.

* Revert wasm-bindgen-futures.

* Second attempt to remove wasm-bindgen-futures.

* Remove spaces as well.

* Address reviews.

* Better diagnostic message.

* Update diagnostic messages.
2022-05-24 13:35:16 +09:00
passeride
0fa83e7dd1
Example Boids now resets sliders when defaults are set on component (#2686)
* Sliders now update when value is set
2022-05-18 08:06:39 +02:00
WorldSEnder
d7b43bbc26
Change access to VList children to a wrapper (#2673)
this should avoid having to manually call recheck_fully_keyed

* add mutable accessor to children
* fix workflow
* fix markdown example
* remove recheck_fully_keyed
2022-05-11 12:37:39 +02:00
Muhammad Hamza
3760c5f8b5
use axum (#2669) 2022-05-08 18:53:35 +05:00
WorldSEnder
1d579a8bf4
Rework a bunch of cfg(feature) flags to be more principled (#2666)
* rework a bunch of feature flags to be more principled

* fixup of Collectable

* silence clippy

* unfix Mountable trait

leads to bundle size increase, so stick to the optimized version

* use required-features for function_router

* use --all-features in various places

* disable tokio dependency on wasm tests again

* add some #[inline] annotations

* merge one more feature annotations

* fixup: remove a line connected to trace_hydration
2022-05-07 21:17:47 +05:00
Kaede Hoshikawa
00b94d0051
Make Switch to accept a closure as render function directly (#2659)
* RenderFn can be be directly Fn() now.

* Switch switch to function component.

* Make Link a function component.

* Remove non-exhaustive.

* Add migration guide.

* Update Website Docs.

* Fix CI.

* Pushing to Navigator no longer requires an owned instance.

* Fix CI.

* Fix code size.

* Further optimisation.
2022-05-06 09:56:49 +09:00
Muhammad Hamza
31594245ef
Update examples and their builds in CI (#2652)
- Remove agents example
- Agents example is replaced by web_worker_fib as they both serve the same purpose now that trunk 0.15 has been released
- Clean up CI setup and ensure that examples are deployed in publish-examples.yml as they're built in size-cmp.yml
2022-05-03 16:08:05 +05:00
Kaede Hoshikawa
2576372e26
Delay Hydration second render until all assistive nodes have been removed (#2629)
* Separate hydration and render queue.

* Revert "Fix issue with node refs and hydration (#2597)"

This reverts commit 469cc341c340bd0093d9233847f523b66a18fd90.

* Priority Render.

* Add some tests.

* Add more tests.

* Add test result after click.

* Fix test comment.

* Fix test timing.

* Restore test.

* Once AtomicBool, now a Cell.

* Prefer use_future.

* Revealing of Suspense always happen after the component has re-rendered itself.

* Shifting should register correct next_sibling.

* Revert to HashMap.

* cargo +nightly fmt.

* Fix comment.

* Optimise Code size?

* Add comment if assertion fails.

* Revert "Merge branch 'hydration-4' into fc-prepared-state"

This reverts commit 427b087d4db6b2e497ad618273655bd18ba9bd01, reversing
changes made to 109fcfaa127aefc5fa3c697e254fe2c049292be2.

* Revert "Revert "Merge branch 'hydration-4' into fc-prepared-state""

This reverts commit f1e408958d94cb13813ce75aa6f0aad06c9fa3e8.

* Redo #2957.
2022-04-25 07:35:55 +09:00
dependabot[bot]
1a9ae3cc86
Update uuid requirement from 0.8.2 to 1.0.0 (#2633)
Updates the requirements on [uuid](https://github.com/uuid-rs/uuid) to permit the latest version.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/0.8.2...1.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-22 16:47:55 +05:00
Muhammad Hamza
c28a71e78e
Use nightly for Rustfmt (#2630)
* add rustfmt.toml, use nightly in CI, update contributing docs

* run `cargo +nightly fmt`
2022-04-21 23:21:15 +05:00
WorldSEnder
cd5b8a520c
Improve grammar and paragraph structure in documentation (#2620)
* Read through the docs and correct spelling and grammar

* Run prettier

* Apply review suggestions

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>

* adjust translation messages

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>
2022-04-20 16:41:42 +05:00
Muhammad Hamza
59e2f82766
Improve js_callback example (#2611)
* improve js_callback example

it now loads two modules:
1. imp.js
2. unimp.js

imp.js is loaded at page load whereas unimp.js is loaded when requested. A fallback is displayed during loading using Suspense

* Hash is not hardcoded anymore

* pre_build hook to build the post build hook binary

* fmt

* add .gitignore for trunk_post_build executable

* move js imports to bindings module, upadte README
2022-04-19 01:42:46 +05:00
dependabot[bot]
d2c3685521
Update gloo requirement from 0.6 to 0.7 (#2613)
Updates the requirements on [gloo](https://github.com/rustwasm/gloo) to permit the latest version.
- [Release notes](https://github.com/rustwasm/gloo/releases)
- [Commits](https://github.com/rustwasm/gloo/compare/0.6.0...0.7.0)

---
updated-dependencies:
- dependency-name: gloo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-15 12:16:04 +02:00
zahash
73771562c2
simple counter application with functional components (#2603)
* simple counter application with functional components

* clean up some comments

* use the word 'function' instead of 'functional'

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>

* add the counter functional example package to workspace root cargo toml

* add data-trunk link tag in index html

* include counter functional into the examples readme file

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>
2022-04-12 15:54:15 +05:00
WorldSEnder
daf6ec0152
Reduce size of examples (#2601)
* Reduce size of examples with this one weird trick

* oops, fixup function_router
2022-04-11 17:02:59 +05:00
WorldSEnder
e2405298c6
update zxcvbn to 2.2.1 (#2568)
* update zxcvbn to 2.2.1

* fix clippy issues

* Upgrade to wasm_bindgen 0.2.80

* resolve TODO, linked pr now merged
2022-04-08 13:03:45 +05:00
Kaede Hoshikawa
e46ae55cab
SSR Hydration (#2552)
* Bring changes to this branch.

* Add feature hydration.

* Hydrate text.

* Hydrate tag.

* Hydrate node.

* Hydrate List.

* Hydrate Suspense.

* Hydrate component.

* Renderer::hydrate.

* Add example and tests.

* Fix comp_id.

* Move some code away from generics.

* Fix everything.

* trybuild?

* Collectable!

* Phantom component.

* Migrate docs as well.

* Update example.

* Fix docs and improve debug message.

* Minor fixing.

* Add hydration to feature soundness check.

* Fix name in debug.

* Remove Shift.

* Remove comment.

* Adjust readme.

* Update website/docs/advanced-topics/server-side-rendering.md

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>

* Update packages/yew/src/dom_bundle/bnode.rs

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>

* Update packages/yew/src/dom_bundle/bnode.rs

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>

* Once via structopt, now direct clap.

* Fix docs and empty fragment.

* Remove struct component warning.

* Move function router into a separate binary.

* Optimise Code Logic.

* Fix condition.

* Fix rendering behaviour.

* Fix comment.

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>
2022-04-03 08:00:16 +09:00
WorldSEnder
ee6a67e3ea
Scoped event handlers (#2510)
* implement event handling with multiple subtree roots
* add listeners to all subtree roots
* move host element to Registry
* add BSubtree argument
* surface level internal API for BSubtree
* cache invalidation & document limitations
* Update portal documentation
* Add test case for hierarchical event bubbling
* add shadow dom test case
* add button to portals/shadow dom example
* change ShadowRootMode in example to open

BSubtree controls the element where listeners are registered.
 we have create_root and create_ssr

Async event dispatching is surprisingly complicated.
Make sure to see #2510 for details, comments and discussion

takes care of catching original events in shadow doms
2022-03-25 17:09:15 +01:00
Julius Lungys
b9bd18f3f4
add struct component context consumpion doc (#2533)
* add structs example

* Update website/docs/concepts/contexts.mdx

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>
2022-03-20 11:49:29 +02:00
Kaede Hoshikawa
8bc2212716
#[cfg(feature = "render")] and yew::Renderer (#2498)
* Bring changes to this branch.

* Bring changes to this branch.

* Add feature render and renderer.

* Bring changes to this branch.

* Migrate examples to Renderer.

* Satisfy no any render.

* Satisfy ssr.

* Satisfy feature render.

* Lint feature soundness.

* Suppress tests.

* Fix pr-flow, update docs.

* Add a notice.

* Adjust visibility.

* Correctly feature gate tests.

* make test scope available under feature render.

* Fix CI.

* Fix CI.

* Restore tests module to its original place as well.

* Make bundles crate private.

* Make most bundle APIs private.

* Adjust docs.

* Adjust debug implementation.

* Replace start_app with Renderer.

* Adjust documentation.

* Remove unused lint.

* Remove start_app from docs.

* DomBundle -> ReconcileTarget.

* Adjust documentation.

* Once render, now csr.

* Fix docs as well.
2022-03-20 00:48:47 +09:00
dependabot[bot]
3ad454011d
Update gloo requirement from 0.4 to 0.6 (#2522)
Updates the requirements on [gloo](https://github.com/rustwasm/gloo) to permit the latest version.
- [Release notes](https://github.com/rustwasm/gloo/releases)
- [Commits](https://github.com/rustwasm/gloo/commits/0.6.1)

---
updated-dependencies:
- dependency-name: gloo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-19 16:46:15 +02:00
WorldSEnder
8d16e883aa
workaround upstream issue for password_strength (#2527) 2022-03-18 15:00:19 +01:00
WorldSEnder
dd5d5b5ccc
pause simulation, instead of resetting (#2502) 2022-03-18 15:30:04 +02:00
Kaede Hoshikawa
839a7965ad
Function Router Example (#2494)
* Move example from #2453.

* Add implementation note.

* Update Implementation Note.
2022-03-07 18:38:22 +05:00
Julius Lungys
427ac22e09
bump rust dependecies (#2501) 2022-03-06 14:23:36 +01:00
dependabot[bot]
92c4ce434f
Update strum requirement from 0.23 to 0.24 (#2471)
Updates the requirements on [strum](https://github.com/Peternator7/strum) to permit the latest version.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-06 15:02:16 +02:00
Julius Lungys
221b4dfa51
fix clippy (#2492) 2022-03-05 20:53:19 +01:00
Kenjiro Nakayama
f9763db70c
docs: Add backquote for the description of suspense (#2468) 2022-02-22 22:50:32 +01:00
Kaede Hoshikawa
485a1b8c4a
Function Components & Hooks V2 (#2401)
* Make a use_hook hook with the new Hook trait.

* Implement Lifetime.

* Rewrites function signature.

* Only apply lifetime if there're other lifetimes.

* Cleanup signature rewrite logic.

* Rewrite hook body.

* Port some built-in hooks.

* Finish porting all built-in hooks.

* Port tests.

* Fix tests.

* Migrate to macro-based hooks.

* Fix HookContext, add tests on non-possible locations.

* Fix stderr for trybuild.

* Add 1 more test case.

* Adjust doc location.

* Pretty print hook signature.

* Fix Items & std::ops::Fn*.

* Add use_memo.

* Optimise Implementation of hooks.

* Use Box to capture function value only.

* Detect whether needs boxing.

* Add args if boxing not needed.

* Enforce hook number.

* Deduplicate use_effect.

* Optimise Implementation.

* Update documentation.

* Fix website test. Strip BoxedHook implementation from it.

* Allow doc string.

* Workaround doc tests.

* Optimise codebase & documentation.

* Fix website test.

* Reduce implementation complexity.

* Destructor is no more.

* Documentation and macros.

* Reduce heap allocation and hook complexity.

* Remove Queue as well.

* Prefer Generics.

* Fix typo.

* Remove more allocations.

* Add comments.

* Remove outdated comment.

* Bare Function Pointer for better code size.
2022-01-28 11:51:37 +02:00
Julius Lungys
e1b51218ec
Add implementation types to examples table (#2361)
* Add implemntation types to examples table

* duplicate word
2022-01-19 13:59:58 +05:00
Muhammad Hamza
f05ba4152c
Update to edition 2021 (#2354)
* cargo fix --edition

* change edition="2018" to edition="2021" in Cargo.toml
2022-01-12 16:22:00 +02:00
Kaede Hoshikawa
d8c2550fc7
Server-side Rendering (without hydration) (#2335)
* Basic render to html implementation.

* Remove HtmlWriter.

* Escape html content.

* Add non-suspense tests.

* Add Suspense tests.

* Gated "ssr" feature.

* Add example.

* Fix tests.

* Fix docs.

* Fix heading size.

* Remove the unused YewRenderer.

* Remove extra comment.

* unify naming.

* Update docs.

* Update docs.

* Update docs.

* Isolate spawn_local.

* Add doc flags.

* Add ssr feature to docs.

* Move ServerRenderer into their own file.

* Fix docs.

* Update features and docs.

* Fix example.

* Adjust comment position.

* Fix effects being wrongly called when a component is suspended.

* Fix clippy.

* Uuid & no double boxing.

Co-authored-by: Muhammad Hamza <muhammadhamza1311@gmail.com>
2022-01-12 18:43:09 +05:00
Howard.Zuo
fff1ffaab8
Example of function memory game (#2255)
* example of function memory game

* refactor: remove unnecessary manual PartialEq implementation

* refactor: remove unnecessary license note

* refactor: update implementation and doc with suggestions

* refactor: fix format and lint issues
2022-01-12 18:40:38 +05:00
dependabot[bot]
3677930fc4
Update gloo requirement from 0.4 to 0.6 (#2337)
* Update gloo requirement from 0.4 to 0.6

Updates the requirements on [gloo](https://github.com/rustwasm/gloo) to permit the latest version.
- [Release notes](https://github.com/rustwasm/gloo/releases)
- [Commits](https://github.com/rustwasm/gloo/commits)

---
updated-dependencies:
- dependency-name: gloo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix ci

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: voidpumpkin <32368314+voidpumpkin@users.noreply.github.com>
2022-01-10 23:17:13 +02:00
Allan
b3f8ca1920
Replace Model with App or MyComponent (#2336)
`Model` is ambiguous and not a user-friendly name.
Some of the newer docs are already referring to the root component as
`App`.

This PR follows this naming scheme:
 - `App` for a root component
 - `MyComponent` for an arbitrary component

This naming is inspired by the React docs.

i18n references were not changed. They need a larger rewrite which will
go in a separate PR.
2022-01-07 20:50:21 +05:00
Muhammad Hamza
3ca7c0f90a
Move yew-agent to gloo (#2326)
* move agent to gloo

* rename: agent -> worker

* make it compile

* use gloo-worker from crates.io & fmt
2022-01-05 19:40:27 +05:00
Kaede Hoshikawa
ac3af0a9bc
Suspense Support (#2212)
* Make Html a Result.

* Fix tests.

* Implement Suspense.

* Schedule render when suspension is resumed.

* Shift children into a detached node.

* styled example.

* Update wording a little bit.

* Move hint to hint.

* Add some tests.

* Fix clippy.

* Add docs.

* Add to sidebar.

* Fix syntax highlight.

* Component -> BaseComponent.

* Html -> VNode, HtmlResult = RenderResult<Html>.

* Suspendible Function Component.

* Add a method to create suspension from futures.

* Revert extra changes.

* Fix tests.

* Update documentation.

* Switch to custom trait to make test reliable.

* Fix file permission.

* Fix docs.

* Remove log.

* Fix file permission.

* Fix component name error.

* Make Suspension a future.
2022-01-05 18:16:34 +05:00
Shrey Sudhir
eb23b327d9
Fix examples README.md (#2324)
* Fix examples README.md

* fix formatting

* Update examples/README.md

Co-authored-by: Simon <simon@siku2.io>

Co-authored-by: Simon <simon@siku2.io>
2022-01-03 02:28:32 +01:00
Kaede Hoshikawa
6f6519dab4
Implement PrivateAgent (#2318)
* Implement PrivateAgent, Separate Threaded into PublicAgent & PrivateAgent.

* Add migration docs.

* Update docs.
2022-01-01 19:45:11 +01:00