├── .cargo └── config.toml ├── .firebaserc ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── documentation.md ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml └── workflows │ ├── auto-approve-maintainer-pr.yml │ ├── benchmark-core.yml │ ├── benchmark-ssr.yml │ ├── benchmark.yml │ ├── build-api-docs.yml │ ├── build-website.yml │ ├── clippy.yml │ ├── fmt.yml │ ├── inspect-next-changelogs.yml │ ├── main-checks.yml │ ├── post-benchmark-core.yml │ ├── post-benchmark-ssr.yml │ ├── post-benchmark.yml │ ├── post-size-cmp.yml │ ├── publish-api-docs.yml │ ├── publish-examples.yml │ ├── publish-website.yml │ ├── publish.yml │ ├── size-cmp.yml │ └── test-website.yml ├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── Makefile.toml ├── README.md ├── SECURITY.md ├── api-docs ├── .gitignore ├── before-content.html └── styles.css ├── ci ├── collect_sizes.py ├── dictionary.txt ├── feature-soundness-release.sh ├── feature-soundness.sh ├── install-wasm-bindgen-cli.sh ├── make_benchmark_ssr_cmt.py ├── make_example_size_cmt.py └── spellcheck.sh ├── examples ├── .gitignore ├── README.md ├── async_clock │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── main.rs │ │ └── services.rs ├── boids │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── boid.rs │ │ ├── main.rs │ │ ├── math.rs │ │ ├── settings.rs │ │ ├── simulation.rs │ │ └── slider.rs ├── communication_child_to_parent │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── child.rs │ │ ├── main.rs │ │ └── parent.rs ├── communication_grandchild_with_grandparent │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── child.rs │ │ ├── grandparent.rs │ │ ├── main.rs │ │ └── parent.rs ├── communication_grandparent_to_grandchild │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── child.rs │ │ ├── grandparent.rs │ │ ├── main.rs │ │ └── parent.rs ├── communication_parent_to_child │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── child.rs │ │ ├── main.rs │ │ └── parent.rs ├── contexts │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ ├── main.rs │ │ ├── msg_ctx.rs │ │ ├── producer.rs │ │ ├── struct_component_producer.rs │ │ ├── struct_component_subscriber.rs │ │ └── subscriber.rs ├── counter │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ └── main.rs ├── counter_functional │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ └── main.rs ├── dyn_create_destroy_apps │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── counter.rs │ │ └── main.rs ├── file_upload │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── src │ │ └── main.rs │ └── styles.css ├── function_memory_game │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── public │ │ ├── 8-ball.png │ │ ├── back.png │ │ ├── baked-potato.png │ │ ├── dinosaur.png │ │ ├── favicon.ico │ │ ├── kronos.png │ │ ├── rocket.png │ │ ├── skinny-unicorn.png │ │ ├── that-guy.png │ │ └── zeppelin.png │ ├── scss │ │ ├── chess_board.scss │ │ ├── chess_board_card.scss │ │ ├── game_progress.scss │ │ ├── game_status_board.scss │ │ ├── index.scss │ │ ├── score_board.scss │ │ └── score_board_best_score.scss │ └── src │ │ ├── components.rs │ │ ├── components │ │ ├── app.rs │ │ ├── chessboard.rs │ │ ├── chessboard_card.rs │ │ ├── game_status_board.rs │ │ ├── score_board.rs │ │ ├── score_board_best_score.rs │ │ ├── score_board_logo.rs │ │ └── score_board_progress.rs │ │ ├── constant.rs │ │ ├── helper.rs │ │ ├── main.rs │ │ └── state.rs ├── function_router │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── data │ │ ├── keywords.txt │ │ ├── syllables.txt │ │ └── yew.txt │ ├── index.html │ ├── index.scss │ └── src │ │ ├── app.rs │ │ ├── bin │ │ └── function_router.rs │ │ ├── components │ │ ├── author_card.rs │ │ ├── mod.rs │ │ ├── nav.rs │ │ ├── pagination.rs │ │ ├── post_card.rs │ │ └── progress_delay.rs │ │ ├── content.rs │ │ ├── generator.rs │ │ ├── lib.rs │ │ └── pages │ │ ├── author.rs │ │ ├── author_list.rs │ │ ├── home.rs │ │ ├── mod.rs │ │ ├── page_not_found.rs │ │ ├── post.rs │ │ └── post_list.rs ├── function_todomvc │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ ├── components.rs │ │ ├── components │ │ ├── entry.rs │ │ ├── filter.rs │ │ ├── header_input.rs │ │ └── info_footer.rs │ │ ├── hooks.rs │ │ ├── hooks │ │ └── use_bool_toggle.rs │ │ ├── main.rs │ │ └── state.rs ├── futures │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ ├── main.rs │ │ └── markdown.rs ├── game_of_life │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── assets │ │ └── favicon.ico │ ├── index.html │ ├── src │ │ ├── cell.rs │ │ └── main.rs │ └── styles.css ├── immutable │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── array.rs │ │ ├── main.rs │ │ ├── map.rs │ │ └── string.rs ├── inner_html │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ ├── document.html │ │ └── main.rs ├── js_callback │ ├── .gitignore │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── js │ │ ├── imp.js │ │ └── unimp.js │ ├── src │ │ ├── bindings.rs │ │ └── main.rs │ └── trunk_post_build.rs ├── keyed_list │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── src │ │ ├── main.rs │ │ ├── person.rs │ │ └── random.rs │ └── styles.css ├── mount_point │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ └── main.rs ├── nested_list │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── src │ │ ├── app.rs │ │ ├── header.rs │ │ ├── item.rs │ │ ├── list.rs │ │ └── main.rs │ └── styles.scss ├── node_refs │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── src │ │ ├── input.rs │ │ └── main.rs │ └── styles.css ├── password_strength │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── app.rs │ │ ├── main.rs │ │ ├── password.rs │ │ └── text_input.rs ├── portals │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ └── main.rs ├── router │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── data │ │ ├── keywords.txt │ │ ├── syllables.txt │ │ └── yew.txt │ ├── index.html │ ├── index.scss │ └── src │ │ ├── components │ │ ├── author_card.rs │ │ ├── mod.rs │ │ ├── pagination.rs │ │ ├── post_card.rs │ │ └── progress_delay.rs │ │ ├── content.rs │ │ ├── generator.rs │ │ ├── main.rs │ │ └── pages │ │ ├── author.rs │ │ ├── author_list.rs │ │ ├── home.rs │ │ ├── mod.rs │ │ ├── page_not_found.rs │ │ ├── post.rs │ │ └── post_list.rs ├── simple_ssr │ ├── Cargo.toml │ ├── README.md │ ├── index.html │ └── src │ │ ├── bin │ │ ├── simple_ssr_hydrate.rs │ │ └── simple_ssr_server.rs │ │ └── lib.rs ├── ssr_router │ ├── Cargo.toml │ ├── README.md │ ├── index.html │ └── src │ │ ├── bin │ │ ├── ssr_router_hydrate.rs │ │ └── ssr_router_server.rs │ │ └── lib.rs ├── suspense │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ ├── main.rs │ │ ├── struct_consumer.rs │ │ └── use_sleep.rs ├── timer │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ └── main.rs ├── timer_functional │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ ├── index.scss │ └── src │ │ └── main.rs ├── todomvc │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ ├── main.rs │ │ └── state.rs ├── two_apps │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ └── main.rs ├── wasi_ssr_module │ ├── Cargo.toml │ ├── README.md │ └── src │ │ ├── main.rs │ │ └── router.rs ├── web_worker_fib │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ ├── agent.rs │ │ ├── bin │ │ ├── app.rs │ │ └── worker.rs │ │ └── lib.rs ├── web_worker_prime │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ │ ├── agent.rs │ │ ├── bin │ │ ├── app.rs │ │ └── worker.rs │ │ └── lib.rs └── webgl │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── index.html │ └── src │ ├── basic.frag │ ├── basic.vert │ └── main.rs ├── firebase.json ├── packages ├── yew-agent-macro │ ├── Cargo.toml │ └── src │ │ ├── agent_fn.rs │ │ ├── lib.rs │ │ ├── oneshot.rs │ │ └── reactor.rs ├── yew-agent │ ├── Cargo.toml │ ├── README.md │ └── src │ │ ├── codec.rs │ │ ├── lib.rs │ │ ├── oneshot │ │ ├── bridge.rs │ │ ├── hooks.rs │ │ ├── mod.rs │ │ ├── provider.rs │ │ ├── registrar.rs │ │ ├── spawner.rs │ │ ├── traits.rs │ │ └── worker.rs │ │ ├── reach.rs │ │ ├── reactor │ │ ├── bridge.rs │ │ ├── hooks.rs │ │ ├── messages.rs │ │ ├── mod.rs │ │ ├── provider.rs │ │ ├── registrar.rs │ │ ├── scope.rs │ │ ├── spawner.rs │ │ ├── traits.rs │ │ └── worker.rs │ │ ├── scope_ext.rs │ │ ├── traits.rs │ │ ├── utils.rs │ │ └── worker │ │ ├── bridge.rs │ │ ├── handler_id.rs │ │ ├── hooks.rs │ │ ├── lifecycle.rs │ │ ├── messages.rs │ │ ├── mod.rs │ │ ├── native_worker.rs │ │ ├── provider.rs │ │ ├── registrar.rs │ │ ├── scope.rs │ │ ├── spawner.rs │ │ └── traits.rs ├── yew-macro │ ├── Cargo.toml │ ├── Makefile.toml │ ├── release.toml │ ├── src │ │ ├── classes │ │ │ └── mod.rs │ │ ├── derive_props │ │ │ ├── builder.rs │ │ │ ├── field.rs │ │ │ ├── generics.rs │ │ │ ├── mod.rs │ │ │ └── wrapper.rs │ │ ├── function_component.rs │ │ ├── hook │ │ │ ├── body.rs │ │ │ ├── lifetime.rs │ │ │ ├── mod.rs │ │ │ └── signature.rs │ │ ├── html_tree │ │ │ ├── html_block.rs │ │ │ ├── html_component.rs │ │ │ ├── html_dashed_name.rs │ │ │ ├── html_element.rs │ │ │ ├── html_if.rs │ │ │ ├── html_iterable.rs │ │ │ ├── html_list.rs │ │ │ ├── html_node.rs │ │ │ ├── lint │ │ │ │ └── mod.rs │ │ │ ├── mod.rs │ │ │ └── tag.rs │ │ ├── lib.rs │ │ ├── props │ │ │ ├── component.rs │ │ │ ├── element.rs │ │ │ ├── mod.rs │ │ │ ├── prop.rs │ │ │ └── prop_macro.rs │ │ ├── stringify.rs │ │ ├── use_prepared_state.rs │ │ └── use_transitive_state.rs │ └── tests │ │ ├── classes_macro │ │ ├── classes-fail.rs │ │ ├── classes-fail.stderr │ │ └── classes-pass.rs │ │ ├── classes_macro_test.rs │ │ ├── derive_props │ │ ├── fail.rs │ │ ├── fail.stderr │ │ └── pass.rs │ │ ├── derive_props_test.rs │ │ ├── function_attr_test.rs │ │ ├── function_component_attr │ │ ├── applied-to-non-fn-fail.rs │ │ ├── applied-to-non-fn-fail.stderr │ │ ├── async-fail.rs │ │ ├── async-fail.stderr │ │ ├── bad-name-fail.rs │ │ ├── bad-name-fail.stderr │ │ ├── bad-props-param-fail.rs │ │ ├── bad-props-param-fail.stderr │ │ ├── bad-return-type-fail.rs │ │ ├── bad-return-type-fail.stderr │ │ ├── const-fail.rs │ │ ├── const-fail.stderr │ │ ├── extern-fail.rs │ │ ├── extern-fail.stderr │ │ ├── generic-lifetime-fail.rs │ │ ├── generic-lifetime-fail.stderr │ │ ├── generic-pass.rs │ │ ├── generic-props-fail.rs │ │ ├── generic-props-fail.stderr │ │ ├── hook_location-fail.rs │ │ ├── hook_location-fail.stderr │ │ ├── hook_location-pass.rs │ │ ├── lifetime-props-param-fail.rs │ │ ├── lifetime-props-param-fail.stderr │ │ ├── multiple-param-fail.rs │ │ ├── multiple-param-fail.stderr │ │ ├── mut-ref-props-param-fail.rs │ │ ├── mut-ref-props-param-fail.stderr │ │ ├── no-name-default-pass.rs │ │ ├── with-defaulted-type-param-pass.rs │ │ ├── with-props-pass.rs │ │ ├── with-receiver-fail.rs │ │ ├── with-receiver-fail.stderr │ │ └── without-props-pass.rs │ │ ├── hook_attr │ │ ├── hook-call-generics-pass.rs │ │ ├── hook-const-generic-pass.rs │ │ ├── hook-dynamic-dispatch-pass.rs │ │ ├── hook-impl-trait-pass.rs │ │ ├── hook-lifetime-pass.rs │ │ ├── hook-return-impl-trait-pass.rs │ │ ├── hook-return-ref-pass.rs │ │ ├── hook-trait-item-pass.rs │ │ ├── hook_location-fail.rs │ │ ├── hook_location-fail.stderr │ │ ├── hook_location-pass.rs │ │ ├── hook_macro-fail.rs │ │ ├── hook_macro-fail.stderr │ │ └── hook_macro-pass.rs │ │ ├── hook_attr_test.rs │ │ ├── hook_macro │ │ ├── use_prepared_state-fail.rs │ │ ├── use_prepared_state-fail.stderr │ │ ├── use_transitive_state-fail.rs │ │ └── use_transitive_state-fail.stderr │ │ ├── hook_macro_test.rs │ │ ├── html_lints │ │ ├── fail.rs │ │ └── fail.stderr │ │ ├── html_lints_test.rs │ │ ├── html_macro │ │ ├── as-return-value-pass.rs │ │ ├── block-fail.rs │ │ ├── block-fail.stderr │ │ ├── block-pass.rs │ │ ├── component-any-children-pass.rs │ │ ├── component-fail.rs │ │ ├── component-fail.stderr │ │ ├── component-pass.rs │ │ ├── component-unimplemented-fail.rs │ │ ├── component-unimplemented-fail.stderr │ │ ├── dyn-element-pass.rs │ │ ├── element-fail.rs │ │ ├── element-fail.stderr │ │ ├── generic-component-fail.rs │ │ ├── generic-component-fail.stderr │ │ ├── generic-component-pass.rs │ │ ├── html-component-fail.stderr │ │ ├── html-element-pass.rs │ │ ├── html-if-fail.rs │ │ ├── html-if-fail.stderr │ │ ├── html-if-pass.rs │ │ ├── html-node-pass.rs │ │ ├── iterable-fail.rs │ │ ├── iterable-fail.stderr │ │ ├── iterable-pass.rs │ │ ├── list-fail.rs │ │ ├── list-fail.stderr │ │ ├── list-pass.rs │ │ ├── node-fail.rs │ │ ├── node-fail.stderr │ │ ├── node-pass.rs │ │ └── svg-pass.rs │ │ ├── html_macro_test.rs │ │ ├── props_macro │ │ ├── props-fail.rs │ │ ├── props-fail.stderr │ │ ├── props-pass.rs │ │ ├── resolve-prop-fail.rs │ │ ├── resolve-prop-fail.stderr │ │ └── resolve-prop-pass.rs │ │ └── props_macro_test.rs ├── yew-router-macro │ ├── Cargo.toml │ ├── Makefile.toml │ ├── release.toml │ ├── src │ │ ├── lib.rs │ │ └── routable_derive.rs │ └── tests │ │ ├── routable_derive │ │ ├── bad-ats-fail.rs │ │ ├── bad-ats-fail.stderr │ │ ├── invalid-not-found-fail.rs │ │ ├── invalid-not-found-fail.stderr │ │ ├── relative-path-fail.rs │ │ ├── relative-path-fail.stderr │ │ ├── route-with-hash-fail.rs │ │ ├── route-with-hash-fail.stderr │ │ ├── struct-fail.rs │ │ ├── struct-fail.stderr │ │ ├── unnamed-fields-fail.rs │ │ ├── unnamed-fields-fail.stderr │ │ └── valid-pass.rs │ │ └── routable_derive_test.rs ├── yew-router │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ ├── src │ │ ├── components │ │ │ ├── link.rs │ │ │ ├── mod.rs │ │ │ └── redirect.rs │ │ ├── hooks.rs │ │ ├── lib.rs │ │ ├── macro_helpers.rs │ │ ├── navigator.rs │ │ ├── routable.rs │ │ ├── router.rs │ │ ├── scope_ext.rs │ │ ├── switch.rs │ │ └── utils.rs │ └── tests │ │ ├── basename.rs │ │ ├── browser_router.rs │ │ ├── hash_router.rs │ │ ├── link.rs │ │ ├── router_unit_tests.rs │ │ ├── url_encoded_routes.rs │ │ └── utils.rs └── yew │ ├── Cargo.toml │ ├── Makefile.toml │ ├── src │ ├── app_handle.rs │ ├── callback.rs │ ├── context.rs │ ├── dom_bundle │ │ ├── bcomp.rs │ │ ├── blist.rs │ │ ├── bnode.rs │ │ ├── bportal.rs │ │ ├── braw.rs │ │ ├── bsuspense.rs │ │ ├── btag │ │ │ ├── attributes.rs │ │ │ ├── listeners.rs │ │ │ └── mod.rs │ │ ├── btext.rs │ │ ├── fragment.rs │ │ ├── mod.rs │ │ ├── position.rs │ │ ├── subtree_root.rs │ │ ├── traits.rs │ │ └── utils.rs │ ├── functional │ │ ├── hooks │ │ │ ├── mod.rs │ │ │ ├── use_callback.rs │ │ │ ├── use_context.rs │ │ │ ├── use_effect.rs │ │ │ ├── use_force_update.rs │ │ │ ├── use_memo.rs │ │ │ ├── use_prepared_state │ │ │ │ ├── feat_hydration.rs │ │ │ │ ├── feat_hydration_ssr.rs │ │ │ │ ├── feat_none.rs │ │ │ │ ├── feat_ssr.rs │ │ │ │ └── mod.rs │ │ │ ├── use_reducer.rs │ │ │ ├── use_ref.rs │ │ │ ├── use_state.rs │ │ │ └── use_transitive_state │ │ │ │ ├── feat_hydration.rs │ │ │ │ ├── feat_hydration_ssr.rs │ │ │ │ ├── feat_none.rs │ │ │ │ ├── feat_ssr.rs │ │ │ │ └── mod.rs │ │ └── mod.rs │ ├── html │ │ ├── classes.rs │ │ ├── component │ │ │ ├── children.rs │ │ │ ├── lifecycle.rs │ │ │ ├── marker.rs │ │ │ ├── mod.rs │ │ │ ├── properties.rs │ │ │ └── scope.rs │ │ ├── conversion │ │ │ ├── into_prop_value.rs │ │ │ └── mod.rs │ │ ├── error.rs │ │ ├── listener │ │ │ ├── events.rs │ │ │ └── mod.rs │ │ └── mod.rs │ ├── lib.rs │ ├── platform.rs │ ├── renderer.rs │ ├── scheduler.rs │ ├── sealed.rs │ ├── server_renderer.rs │ ├── suspense │ │ ├── component.rs │ │ ├── hooks.rs │ │ ├── mod.rs │ │ └── suspension.rs │ ├── tests │ │ ├── layout_tests.rs │ │ └── mod.rs │ ├── utils │ │ └── mod.rs │ └── virtual_dom │ │ ├── key.rs │ │ ├── listeners.rs │ │ ├── mod.rs │ │ ├── vcomp.rs │ │ ├── vlist.rs │ │ ├── vnode.rs │ │ ├── vportal.rs │ │ ├── vraw.rs │ │ ├── vsuspense.rs │ │ ├── vtag.rs │ │ └── vtext.rs │ └── tests │ ├── common │ └── mod.rs │ ├── hydration.rs │ ├── layout.rs │ ├── mod.rs │ ├── raw_html.rs │ ├── suspense.rs │ ├── use_callback.rs │ ├── use_context.rs │ ├── use_effect.rs │ ├── use_memo.rs │ ├── use_prepared_state.rs │ ├── use_reducer.rs │ ├── use_ref.rs │ ├── use_state.rs │ └── use_transitive_state.rs ├── release.toml ├── rustfmt.toml ├── tools ├── benchmark-core │ ├── Cargo.toml │ └── benches │ │ └── vnode.rs ├── benchmark-hooks │ ├── .gitignore │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ ├── index.html │ ├── package-lock.json │ ├── package.json │ └── src │ │ └── lib.rs ├── benchmark-ssr │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── benchmark-struct │ ├── .gitignore │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ ├── index.html │ ├── package-lock.json │ ├── package.json │ └── src │ │ └── lib.rs ├── build-examples │ ├── Cargo.toml │ └── src │ │ ├── bin │ │ └── update-wasm-opt.rs │ │ ├── lib.rs │ │ └── main.rs ├── changelog │ ├── Cargo.toml │ ├── Makefile.toml │ ├── src │ │ ├── cli.rs │ │ ├── create_log_line.rs │ │ ├── create_log_lines.rs │ │ ├── get_latest_version.rs │ │ ├── github_fetch.rs │ │ ├── github_issue_labels_fetcher.rs │ │ ├── github_user_fetcher.rs │ │ ├── lib.rs │ │ ├── log_line.rs │ │ ├── main.rs │ │ ├── mod.rs │ │ ├── new_version_level.rs │ │ ├── stdout_tag_description_changelog.rs │ │ ├── write_changelog_file.rs │ │ ├── write_log_lines.rs │ │ ├── write_version_changelog.rs │ │ └── yew_package.rs │ └── tests │ │ ├── generate_yew_changelog_file.rs │ │ ├── test_base.md │ │ └── test_expected.md ├── process-benchmark-results │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src │ │ └── main.rs └── website-test │ ├── Cargo.toml │ ├── Makefile.toml │ ├── build.rs │ └── src │ ├── lib.rs │ └── tutorial.rs └── website ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── README.md ├── babel.config.js ├── blog ├── 2022-01-20-hello-yew.md ├── 2022-11-24-release-0-20.md ├── 2023-09-23-release-0-21.md ├── 2024-10-14-release-0-22.md └── authors.yml ├── check-translations.js ├── community ├── awesome.md └── external-libs.mdx ├── docs ├── advanced-topics │ ├── children.mdx │ ├── how-it-works.mdx │ ├── immutable.mdx │ ├── optimizations.mdx │ ├── portals.mdx │ ├── server-side-rendering.mdx │ └── struct-components │ │ ├── callbacks.mdx │ │ ├── hoc.mdx │ │ ├── introduction.mdx │ │ ├── lifecycle.mdx │ │ ├── properties.mdx │ │ ├── refs.mdx │ │ └── scope.mdx ├── concepts │ ├── agents.mdx │ ├── basic-web-technologies │ │ ├── css.mdx │ │ ├── html.mdx │ │ ├── js.mdx │ │ ├── wasm-bindgen.mdx │ │ └── web-sys.mdx │ ├── contexts.mdx │ ├── function-components │ │ ├── callbacks.mdx │ │ ├── children.mdx │ │ ├── communication.mdx │ │ ├── generics.mdx │ │ ├── hooks │ │ │ ├── custom-hooks.mdx │ │ │ └── introduction.mdx │ │ ├── introduction.mdx │ │ ├── node-refs.mdx │ │ ├── properties.mdx │ │ ├── pure-components.mdx │ │ └── state.mdx │ ├── html │ │ ├── classes.mdx │ │ ├── components.mdx │ │ ├── conditional-rendering.mdx │ │ ├── elements.mdx │ │ ├── events.mdx │ │ ├── fragments.mdx │ │ ├── introduction.mdx │ │ ├── lists.mdx │ │ └── literals-and-expressions.mdx │ ├── router.mdx │ └── suspense.mdx ├── getting-started │ ├── build-a-sample-app.mdx │ ├── editor-setup.mdx │ ├── examples.mdx │ └── introduction.mdx ├── migration-guides │ ├── yew-agent │ │ ├── from-0_0_0-to-0_1_0.mdx │ │ └── from-0_1_0-to-0_2_0.mdx │ ├── yew-router │ │ ├── from-0_15_0-to-0_16_0.mdx │ │ └── from-0_16_0-to-0_17_0.mdx │ └── yew │ │ ├── from-0_18_0-to-0_19_0.mdx │ │ ├── from-0_19_0-to-0_20_0.mdx │ │ └── from-0_20_0-to-0_21_0.mdx ├── more │ ├── css.mdx │ ├── debugging.mdx │ ├── deployment.mdx │ ├── roadmap.mdx │ └── testing.mdx └── tutorial │ └── index.mdx ├── docusaurus.config.js ├── i18n ├── ja │ ├── code.json │ ├── docusaurus-plugin-content-blog │ │ └── options.json │ ├── docusaurus-plugin-content-docs-community │ │ └── current.json │ ├── docusaurus-plugin-content-docs-router │ │ └── current.json │ ├── docusaurus-plugin-content-docs │ │ ├── current.json │ │ ├── current │ │ │ ├── advanced-topics │ │ │ │ ├── children.mdx │ │ │ │ ├── how-it-works.mdx │ │ │ │ ├── immutable.mdx │ │ │ │ ├── optimizations.mdx │ │ │ │ ├── portals.mdx │ │ │ │ ├── server-side-rendering.mdx │ │ │ │ └── struct-components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── hoc.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lifecycle.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ ├── refs.mdx │ │ │ │ │ └── scope.mdx │ │ │ ├── concepts │ │ │ │ ├── agents.mdx │ │ │ │ ├── basic-web-technologies │ │ │ │ │ ├── css.mdx │ │ │ │ │ ├── html.mdx │ │ │ │ │ ├── js.mdx │ │ │ │ │ ├── wasm-bindgen.mdx │ │ │ │ │ └── web-sys.mdx │ │ │ │ ├── contexts.mdx │ │ │ │ ├── function-components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── children.mdx │ │ │ │ │ ├── communication.mdx │ │ │ │ │ ├── generics.mdx │ │ │ │ │ ├── hooks │ │ │ │ │ │ ├── custom-hooks.mdx │ │ │ │ │ │ └── introduction.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── node-refs.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ ├── pure-components.mdx │ │ │ │ │ └── state.mdx │ │ │ │ ├── html │ │ │ │ │ ├── classes.mdx │ │ │ │ │ ├── components.mdx │ │ │ │ │ ├── conditional-rendering.mdx │ │ │ │ │ ├── elements.mdx │ │ │ │ │ ├── events.mdx │ │ │ │ │ ├── fragments.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lists.mdx │ │ │ │ │ └── literals-and-expressions.mdx │ │ │ │ ├── router.mdx │ │ │ │ └── suspense.mdx │ │ │ ├── getting-started │ │ │ │ ├── build-a-sample-app.mdx │ │ │ │ ├── editor-setup.mdx │ │ │ │ ├── examples.mdx │ │ │ │ └── introduction.mdx │ │ │ ├── more │ │ │ │ ├── css.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── deployment.mdx │ │ │ │ ├── roadmap.mdx │ │ │ │ └── testing.mdx │ │ │ └── tutorial │ │ │ │ └── index.mdx │ │ ├── version-0.18.0.json │ │ ├── version-0.18.0 │ │ │ ├── advanced-topics │ │ │ │ ├── how-it-works.mdx │ │ │ │ └── optimizations.mdx │ │ │ ├── concepts │ │ │ │ ├── agents.mdx │ │ │ │ ├── components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ └── refs.mdx │ │ │ │ ├── html │ │ │ │ │ ├── components.mdx │ │ │ │ │ ├── elements.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lists.mdx │ │ │ │ │ └── literals-and-expressions.mdx │ │ │ │ ├── router.mdx │ │ │ │ └── services │ │ │ │ │ └── introduction.mdx │ │ │ ├── getting-started │ │ │ │ ├── build-a-sample-app.mdx │ │ │ │ ├── choose-web-library.mdx │ │ │ │ ├── examples.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── project-setup │ │ │ │ │ ├── using-cargo-web.mdx │ │ │ │ │ └── using-wasm-pack.mdx │ │ │ │ └── starter-templates.mdx │ │ │ └── more │ │ │ │ ├── css.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── external-libs.mdx │ │ │ │ ├── roadmap.mdx │ │ │ │ └── testing.mdx │ │ ├── version-0.19.0.json │ │ ├── version-0.20.json │ │ ├── version-0.20 │ │ │ ├── advanced-topics │ │ │ │ ├── how-it-works.mdx │ │ │ │ ├── optimizations.mdx │ │ │ │ └── struct-components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── lifecycle.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ └── refs.mdx │ │ │ ├── concepts │ │ │ │ ├── agents.mdx │ │ │ │ ├── html │ │ │ │ │ ├── components.mdx │ │ │ │ │ ├── elements.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lists.mdx │ │ │ │ │ └── literals-and-expressions.mdx │ │ │ │ └── router.mdx │ │ │ ├── getting-started │ │ │ │ ├── build-a-sample-app.mdx │ │ │ │ └── examples.mdx │ │ │ └── more │ │ │ │ ├── css.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── roadmap.mdx │ │ │ │ └── testing.mdx │ │ ├── version-0.21.json │ │ ├── version-0.21 │ │ │ ├── advanced-topics │ │ │ │ ├── how-it-works.mdx │ │ │ │ ├── optimizations.mdx │ │ │ │ └── struct-components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── lifecycle.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ └── refs.mdx │ │ │ ├── concepts │ │ │ │ ├── agents.mdx │ │ │ │ ├── html │ │ │ │ │ ├── components.mdx │ │ │ │ │ ├── elements.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lists.mdx │ │ │ │ │ └── literals-and-expressions.mdx │ │ │ │ └── router.mdx │ │ │ ├── getting-started │ │ │ │ ├── build-a-sample-app.mdx │ │ │ │ └── examples.mdx │ │ │ └── more │ │ │ │ ├── css.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── roadmap.mdx │ │ │ │ └── testing.mdx │ │ ├── version-0.22.json │ │ └── version-0.22 │ │ │ ├── advanced-topics │ │ │ ├── children.mdx │ │ │ ├── how-it-works.mdx │ │ │ ├── immutable.mdx │ │ │ ├── optimizations.mdx │ │ │ ├── portals.mdx │ │ │ ├── server-side-rendering.mdx │ │ │ └── struct-components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── hoc.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lifecycle.mdx │ │ │ │ ├── properties.mdx │ │ │ │ ├── refs.mdx │ │ │ │ └── scope.mdx │ │ │ ├── concepts │ │ │ ├── agents.mdx │ │ │ ├── basic-web-technologies │ │ │ │ ├── css.mdx │ │ │ │ ├── html.mdx │ │ │ │ ├── js.mdx │ │ │ │ ├── wasm-bindgen.mdx │ │ │ │ └── web-sys.mdx │ │ │ ├── contexts.mdx │ │ │ ├── function-components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── children.mdx │ │ │ │ ├── communication.mdx │ │ │ │ ├── generics.mdx │ │ │ │ ├── hooks │ │ │ │ │ ├── custom-hooks.mdx │ │ │ │ │ └── introduction.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── node-refs.mdx │ │ │ │ ├── properties.mdx │ │ │ │ ├── pure-components.mdx │ │ │ │ └── state.mdx │ │ │ ├── html │ │ │ │ ├── classes.mdx │ │ │ │ ├── components.mdx │ │ │ │ ├── conditional-rendering.mdx │ │ │ │ ├── elements.mdx │ │ │ │ ├── events.mdx │ │ │ │ ├── fragments.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lists.mdx │ │ │ │ └── literals-and-expressions.mdx │ │ │ ├── router.mdx │ │ │ └── suspense.mdx │ │ │ ├── getting-started │ │ │ ├── build-a-sample-app.mdx │ │ │ ├── editor-setup.mdx │ │ │ ├── examples.mdx │ │ │ └── introduction.mdx │ │ │ ├── more │ │ │ ├── css.mdx │ │ │ ├── debugging.mdx │ │ │ ├── deployment.mdx │ │ │ ├── roadmap.mdx │ │ │ └── testing.mdx │ │ │ └── tutorial │ │ │ └── index.mdx │ ├── docusaurus-plugin-content-pages │ │ └── index.mdx │ └── docusaurus-theme-classic │ │ ├── footer.json │ │ └── navbar.json ├── zh-Hans │ ├── code.json │ ├── docusaurus-plugin-content-blog │ │ └── options.json │ ├── docusaurus-plugin-content-docs-community │ │ └── current.json │ ├── docusaurus-plugin-content-docs-router │ │ └── current.json │ ├── docusaurus-plugin-content-docs │ │ ├── current.json │ │ ├── current │ │ │ ├── advanced-topics │ │ │ │ ├── children.mdx │ │ │ │ ├── how-it-works.mdx │ │ │ │ ├── immutable.mdx │ │ │ │ ├── optimizations.mdx │ │ │ │ ├── portals.mdx │ │ │ │ ├── server-side-rendering.mdx │ │ │ │ └── struct-components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── hoc.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lifecycle.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ ├── refs.mdx │ │ │ │ │ └── scope.mdx │ │ │ ├── concepts │ │ │ │ ├── agents.mdx │ │ │ │ ├── basic-web-technologies │ │ │ │ │ ├── css.mdx │ │ │ │ │ ├── html.mdx │ │ │ │ │ ├── js.mdx │ │ │ │ │ ├── wasm-bindgen.mdx │ │ │ │ │ └── web-sys.mdx │ │ │ │ ├── contexts.mdx │ │ │ │ ├── function-components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── children.mdx │ │ │ │ │ ├── communication.mdx │ │ │ │ │ ├── generics.mdx │ │ │ │ │ ├── hooks │ │ │ │ │ │ ├── custom-hooks.mdx │ │ │ │ │ │ └── introduction.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── node-refs.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ ├── pure-components.mdx │ │ │ │ │ └── state.mdx │ │ │ │ ├── html │ │ │ │ │ ├── classes.mdx │ │ │ │ │ ├── components.mdx │ │ │ │ │ ├── conditional-rendering.mdx │ │ │ │ │ ├── elements.mdx │ │ │ │ │ ├── events.mdx │ │ │ │ │ ├── fragments.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lists.mdx │ │ │ │ │ └── literals-and-expressions.mdx │ │ │ │ ├── router.mdx │ │ │ │ └── suspense.mdx │ │ │ ├── getting-started │ │ │ │ ├── build-a-sample-app.mdx │ │ │ │ ├── editor-setup.mdx │ │ │ │ ├── examples.mdx │ │ │ │ └── introduction.mdx │ │ │ ├── more │ │ │ │ ├── css.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── deployment.mdx │ │ │ │ ├── roadmap.mdx │ │ │ │ └── testing.mdx │ │ │ └── tutorial │ │ │ │ └── index.mdx │ │ ├── version-0.18.0.json │ │ ├── version-0.18.0 │ │ │ ├── advanced-topics │ │ │ │ ├── how-it-works.mdx │ │ │ │ └── optimizations.mdx │ │ │ ├── concepts │ │ │ │ ├── agents.mdx │ │ │ │ ├── components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── children.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ └── refs.mdx │ │ │ │ ├── html │ │ │ │ │ ├── components.mdx │ │ │ │ │ ├── elements.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lists.mdx │ │ │ │ │ └── literals-and-expressions.mdx │ │ │ │ ├── router.mdx │ │ │ │ └── services │ │ │ │ │ ├── format.mdx │ │ │ │ │ └── introduction.mdx │ │ │ ├── getting-started │ │ │ │ ├── build-a-sample-app.mdx │ │ │ │ ├── choose-web-library.mdx │ │ │ │ ├── examples.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── project-setup │ │ │ │ │ ├── using-cargo-web.mdx │ │ │ │ │ ├── using-trunk.mdx │ │ │ │ │ └── using-wasm-pack.mdx │ │ │ │ └── starter-templates.mdx │ │ │ └── more │ │ │ │ ├── css.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── external-libs.mdx │ │ │ │ ├── roadmap.mdx │ │ │ │ └── testing.mdx │ │ ├── version-0.19.0.json │ │ ├── version-0.19.0 │ │ │ └── concepts │ │ │ │ └── function-components │ │ │ │ └── attribute.mdx │ │ ├── version-0.20.json │ │ ├── version-0.20 │ │ │ ├── advanced-topics │ │ │ │ ├── how-it-works.mdx │ │ │ │ ├── optimizations.mdx │ │ │ │ └── struct-components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── lifecycle.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ └── refs.mdx │ │ │ ├── concepts │ │ │ │ ├── agents.mdx │ │ │ │ ├── function-components │ │ │ │ │ ├── hooks │ │ │ │ │ │ └── custom-hooks.mdx │ │ │ │ │ └── introduction.mdx │ │ │ │ ├── html │ │ │ │ │ ├── components.mdx │ │ │ │ │ ├── elements.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lists.mdx │ │ │ │ │ └── literals-and-expressions.mdx │ │ │ │ └── router.mdx │ │ │ ├── getting-started │ │ │ │ ├── build-a-sample-app.mdx │ │ │ │ └── examples.mdx │ │ │ └── more │ │ │ │ ├── css.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── roadmap.mdx │ │ │ │ └── testing.mdx │ │ ├── version-0.21.json │ │ ├── version-0.21 │ │ │ ├── advanced-topics │ │ │ │ ├── how-it-works.mdx │ │ │ │ ├── optimizations.mdx │ │ │ │ └── struct-components │ │ │ │ │ ├── callbacks.mdx │ │ │ │ │ ├── lifecycle.mdx │ │ │ │ │ ├── properties.mdx │ │ │ │ │ └── refs.mdx │ │ │ ├── concepts │ │ │ │ ├── agents.mdx │ │ │ │ ├── function-components │ │ │ │ │ ├── hooks │ │ │ │ │ │ └── custom-hooks.mdx │ │ │ │ │ └── introduction.mdx │ │ │ │ ├── html │ │ │ │ │ ├── components.mdx │ │ │ │ │ ├── elements.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── lists.mdx │ │ │ │ │ └── literals-and-expressions.mdx │ │ │ │ └── router.mdx │ │ │ ├── getting-started │ │ │ │ ├── build-a-sample-app.mdx │ │ │ │ └── examples.mdx │ │ │ └── more │ │ │ │ ├── css.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── roadmap.mdx │ │ │ │ └── testing.mdx │ │ ├── version-0.22.json │ │ └── version-0.22 │ │ │ ├── advanced-topics │ │ │ ├── children.mdx │ │ │ ├── how-it-works.mdx │ │ │ ├── immutable.mdx │ │ │ ├── optimizations.mdx │ │ │ ├── portals.mdx │ │ │ ├── server-side-rendering.mdx │ │ │ └── struct-components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── hoc.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lifecycle.mdx │ │ │ │ ├── properties.mdx │ │ │ │ ├── refs.mdx │ │ │ │ └── scope.mdx │ │ │ ├── concepts │ │ │ ├── agents.mdx │ │ │ ├── basic-web-technologies │ │ │ │ ├── css.mdx │ │ │ │ ├── html.mdx │ │ │ │ ├── js.mdx │ │ │ │ ├── wasm-bindgen.mdx │ │ │ │ └── web-sys.mdx │ │ │ ├── contexts.mdx │ │ │ ├── function-components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── children.mdx │ │ │ │ ├── communication.mdx │ │ │ │ ├── generics.mdx │ │ │ │ ├── hooks │ │ │ │ │ ├── custom-hooks.mdx │ │ │ │ │ └── introduction.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── node-refs.mdx │ │ │ │ ├── properties.mdx │ │ │ │ ├── pure-components.mdx │ │ │ │ └── state.mdx │ │ │ ├── html │ │ │ │ ├── classes.mdx │ │ │ │ ├── components.mdx │ │ │ │ ├── conditional-rendering.mdx │ │ │ │ ├── elements.mdx │ │ │ │ ├── events.mdx │ │ │ │ ├── fragments.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lists.mdx │ │ │ │ └── literals-and-expressions.mdx │ │ │ ├── router.mdx │ │ │ └── suspense.mdx │ │ │ ├── getting-started │ │ │ ├── build-a-sample-app.mdx │ │ │ ├── editor-setup.mdx │ │ │ ├── examples.mdx │ │ │ └── introduction.mdx │ │ │ ├── more │ │ │ ├── css.mdx │ │ │ ├── debugging.mdx │ │ │ ├── deployment.mdx │ │ │ ├── roadmap.mdx │ │ │ └── testing.mdx │ │ │ └── tutorial │ │ │ └── index.mdx │ ├── docusaurus-plugin-content-pages │ │ └── index.mdx │ └── docusaurus-theme-classic │ │ ├── footer.json │ │ └── navbar.json └── zh-Hant │ ├── code.json │ ├── docusaurus-plugin-content-blog │ └── options.json │ ├── docusaurus-plugin-content-docs-community │ └── current.json │ ├── docusaurus-plugin-content-docs-router │ └── current.json │ ├── docusaurus-plugin-content-docs │ ├── current.json │ ├── current │ │ ├── advanced-topics │ │ │ ├── children.mdx │ │ │ ├── how-it-works.mdx │ │ │ ├── immutable.mdx │ │ │ ├── optimizations.mdx │ │ │ ├── portals.mdx │ │ │ ├── server-side-rendering.mdx │ │ │ └── struct-components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── hoc.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lifecycle.mdx │ │ │ │ ├── properties.mdx │ │ │ │ ├── refs.mdx │ │ │ │ └── scope.mdx │ │ ├── concepts │ │ │ ├── agents.mdx │ │ │ ├── basic-web-technologies │ │ │ │ ├── css.mdx │ │ │ │ ├── html.mdx │ │ │ │ ├── js.mdx │ │ │ │ ├── wasm-bindgen.mdx │ │ │ │ └── web-sys.mdx │ │ │ ├── contexts.mdx │ │ │ ├── function-components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── children.mdx │ │ │ │ ├── communication.mdx │ │ │ │ ├── generics.mdx │ │ │ │ ├── hooks │ │ │ │ │ ├── custom-hooks.mdx │ │ │ │ │ └── introduction.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── node-refs.mdx │ │ │ │ ├── properties.mdx │ │ │ │ ├── pure-components.mdx │ │ │ │ └── state.mdx │ │ │ ├── html │ │ │ │ ├── classes.mdx │ │ │ │ ├── components.mdx │ │ │ │ ├── conditional-rendering.mdx │ │ │ │ ├── elements.mdx │ │ │ │ ├── events.mdx │ │ │ │ ├── fragments.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lists.mdx │ │ │ │ └── literals-and-expressions.mdx │ │ │ ├── router.mdx │ │ │ └── suspense.mdx │ │ ├── getting-started │ │ │ ├── build-a-sample-app.mdx │ │ │ ├── editor-setup.mdx │ │ │ ├── examples.mdx │ │ │ └── introduction.mdx │ │ ├── more │ │ │ ├── css.mdx │ │ │ ├── debugging.mdx │ │ │ ├── deployment.mdx │ │ │ ├── roadmap.mdx │ │ │ └── testing.mdx │ │ └── tutorial │ │ │ └── index.mdx │ ├── version-0.18.0.json │ ├── version-0.18.0 │ │ ├── advanced-topics │ │ │ ├── how-it-works.mdx │ │ │ └── optimizations.mdx │ │ ├── concepts │ │ │ ├── agents.mdx │ │ │ ├── components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── properties.mdx │ │ │ │ └── refs.mdx │ │ │ ├── html │ │ │ │ ├── components.mdx │ │ │ │ ├── elements.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lists.mdx │ │ │ │ └── literals-and-expressions.mdx │ │ │ ├── router.mdx │ │ │ └── services │ │ │ │ ├── format.mdx │ │ │ │ └── introduction.mdx │ │ ├── getting-started │ │ │ ├── build-a-sample-app.mdx │ │ │ ├── choose-web-library.mdx │ │ │ ├── examples.mdx │ │ │ ├── introduction.mdx │ │ │ ├── project-setup │ │ │ │ ├── using-cargo-web.mdx │ │ │ │ └── using-wasm-pack.mdx │ │ │ └── starter-templates.mdx │ │ └── more │ │ │ ├── css.mdx │ │ │ ├── debugging.mdx │ │ │ ├── external-libs.mdx │ │ │ ├── roadmap.mdx │ │ │ └── testing.mdx │ ├── version-0.19.0.json │ ├── version-0.20.json │ ├── version-0.20 │ │ ├── advanced-topics │ │ │ ├── how-it-works.mdx │ │ │ ├── optimizations.mdx │ │ │ └── struct-components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── lifecycle.mdx │ │ │ │ ├── properties.mdx │ │ │ │ └── refs.mdx │ │ ├── concepts │ │ │ ├── agents.mdx │ │ │ ├── html │ │ │ │ ├── components.mdx │ │ │ │ ├── elements.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lists.mdx │ │ │ │ └── literals-and-expressions.mdx │ │ │ └── router.mdx │ │ ├── getting-started │ │ │ ├── build-a-sample-app.mdx │ │ │ └── examples.mdx │ │ └── more │ │ │ ├── css.mdx │ │ │ ├── debugging.mdx │ │ │ ├── roadmap.mdx │ │ │ └── testing.mdx │ ├── version-0.21.json │ ├── version-0.21 │ │ ├── advanced-topics │ │ │ ├── how-it-works.mdx │ │ │ ├── optimizations.mdx │ │ │ └── struct-components │ │ │ │ ├── callbacks.mdx │ │ │ │ ├── lifecycle.mdx │ │ │ │ ├── properties.mdx │ │ │ │ └── refs.mdx │ │ ├── concepts │ │ │ ├── agents.mdx │ │ │ ├── html │ │ │ │ ├── components.mdx │ │ │ │ ├── elements.mdx │ │ │ │ ├── introduction.mdx │ │ │ │ ├── lists.mdx │ │ │ │ └── literals-and-expressions.mdx │ │ │ └── router.mdx │ │ ├── getting-started │ │ │ ├── build-a-sample-app.mdx │ │ │ └── examples.mdx │ │ └── more │ │ │ ├── css.mdx │ │ │ ├── debugging.mdx │ │ │ ├── roadmap.mdx │ │ │ └── testing.mdx │ ├── version-0.22.json │ └── version-0.22 │ │ ├── advanced-topics │ │ ├── children.mdx │ │ ├── how-it-works.mdx │ │ ├── immutable.mdx │ │ ├── optimizations.mdx │ │ ├── portals.mdx │ │ ├── server-side-rendering.mdx │ │ └── struct-components │ │ │ ├── callbacks.mdx │ │ │ ├── hoc.mdx │ │ │ ├── introduction.mdx │ │ │ ├── lifecycle.mdx │ │ │ ├── properties.mdx │ │ │ ├── refs.mdx │ │ │ └── scope.mdx │ │ ├── concepts │ │ ├── agents.mdx │ │ ├── basic-web-technologies │ │ │ ├── css.mdx │ │ │ ├── html.mdx │ │ │ ├── js.mdx │ │ │ ├── wasm-bindgen.mdx │ │ │ └── web-sys.mdx │ │ ├── contexts.mdx │ │ ├── function-components │ │ │ ├── callbacks.mdx │ │ │ ├── children.mdx │ │ │ ├── communication.mdx │ │ │ ├── generics.mdx │ │ │ ├── hooks │ │ │ │ ├── custom-hooks.mdx │ │ │ │ └── introduction.mdx │ │ │ ├── introduction.mdx │ │ │ ├── node-refs.mdx │ │ │ ├── properties.mdx │ │ │ ├── pure-components.mdx │ │ │ └── state.mdx │ │ ├── html │ │ │ ├── classes.mdx │ │ │ ├── components.mdx │ │ │ ├── conditional-rendering.mdx │ │ │ ├── elements.mdx │ │ │ ├── events.mdx │ │ │ ├── fragments.mdx │ │ │ ├── introduction.mdx │ │ │ ├── lists.mdx │ │ │ └── literals-and-expressions.mdx │ │ ├── router.mdx │ │ └── suspense.mdx │ │ ├── getting-started │ │ ├── build-a-sample-app.mdx │ │ ├── editor-setup.mdx │ │ ├── examples.mdx │ │ └── introduction.mdx │ │ ├── more │ │ ├── css.mdx │ │ ├── debugging.mdx │ │ ├── deployment.mdx │ │ ├── roadmap.mdx │ │ └── testing.mdx │ │ └── tutorial │ │ └── index.mdx │ ├── docusaurus-plugin-content-pages │ └── index.mdx │ └── docusaurus-theme-classic │ ├── footer.json │ └── navbar.json ├── mdx-jetbrains.jpg ├── package-lock.json ├── package.json ├── sidebars ├── community.js └── docs.js ├── src ├── constants.js ├── css │ └── custom.css ├── pages │ ├── index.module.scss │ └── index.tsx └── theme │ └── NavbarItem │ └── DefaultNavbarItem.tsx ├── static ├── .nojekyll ├── img │ ├── agent-lifecycle-dark.svg │ ├── agent-lifecycle-light.svg │ ├── logo.png │ ├── logo.svg │ ├── nested-router-dark.svg │ ├── nested-router-light.svg │ ├── router-deserialization-failure-behavior.gif │ └── tutorial_application_screenshot.png └── tutorial │ └── data.json ├── tsconfig.json ├── versioned_docs ├── version-0.18.0 │ ├── advanced-topics │ │ ├── how-it-works.mdx │ │ └── optimizations.mdx │ ├── concepts │ │ ├── agents.mdx │ │ ├── components │ │ │ ├── callbacks.mdx │ │ │ ├── children.mdx │ │ │ ├── introduction.mdx │ │ │ ├── properties.mdx │ │ │ └── refs.mdx │ │ ├── html │ │ │ ├── classes.mdx │ │ │ ├── components.mdx │ │ │ ├── elements.mdx │ │ │ ├── events.mdx │ │ │ ├── introduction.mdx │ │ │ ├── lists.mdx │ │ │ └── literals-and-expressions.mdx │ │ ├── router.mdx │ │ ├── services │ │ │ ├── fetch.mdx │ │ │ ├── format.mdx │ │ │ └── introduction.mdx │ │ └── wasm-bindgen │ │ │ ├── wasm-bindgen.mdx │ │ │ └── web-sys.mdx │ ├── getting-started │ │ ├── build-a-sample-app.mdx │ │ ├── choose-web-library.mdx │ │ ├── examples.mdx │ │ ├── introduction.mdx │ │ ├── project-setup │ │ │ ├── using-cargo-web.mdx │ │ │ ├── using-trunk.mdx │ │ │ └── using-wasm-pack.mdx │ │ └── starter-templates.mdx │ └── more │ │ ├── css.mdx │ │ ├── debugging.mdx │ │ ├── external-libs.mdx │ │ ├── roadmap.mdx │ │ └── testing.mdx ├── version-0.19.0 │ ├── advanced-topics │ │ ├── how-it-works.mdx │ │ ├── optimizations.mdx │ │ └── portals.mdx │ ├── concepts │ │ ├── agents.mdx │ │ ├── components │ │ │ ├── callbacks.mdx │ │ │ ├── children.mdx │ │ │ ├── introduction.mdx │ │ │ ├── properties.mdx │ │ │ ├── refs.mdx │ │ │ └── scope.mdx │ │ ├── contexts.mdx │ │ ├── function-components │ │ │ ├── attribute.mdx │ │ │ ├── custom-hooks.mdx │ │ │ ├── introduction.mdx │ │ │ └── pre-defined-hooks.mdx │ │ ├── html │ │ │ ├── classes.mdx │ │ │ ├── components.mdx │ │ │ ├── elements.mdx │ │ │ ├── events.mdx │ │ │ ├── fragments.mdx │ │ │ ├── introduction.mdx │ │ │ ├── lists.mdx │ │ │ └── literals-and-expressions.mdx │ │ ├── router.mdx │ │ └── wasm-bindgen │ │ │ ├── introduction.mdx │ │ │ └── web-sys.mdx │ ├── getting-started │ │ ├── build-a-sample-app.mdx │ │ ├── examples.mdx │ │ ├── introduction.mdx │ │ ├── project-setup │ │ │ ├── using-trunk.mdx │ │ │ └── using-wasm-pack.mdx │ │ └── starter-templates.mdx │ ├── migration-guides │ │ ├── yew-agent │ │ │ └── from-0_0_0-to-0_1_0.mdx │ │ ├── yew-router │ │ │ └── from-0_15_0-to-0_16_0.mdx │ │ └── yew │ │ │ └── from-0_18_0-to-0_19_0.mdx │ ├── more │ │ ├── css.mdx │ │ ├── debugging.mdx │ │ ├── development-tips.mdx │ │ ├── external-libs.mdx │ │ ├── roadmap.mdx │ │ ├── testing.mdx │ │ └── wasm-build-tools.mdx │ └── tutorial │ │ └── index.mdx ├── version-0.20 │ ├── advanced-topics │ │ ├── children.mdx │ │ ├── how-it-works.mdx │ │ ├── immutable.mdx │ │ ├── optimizations.mdx │ │ ├── portals.mdx │ │ ├── server-side-rendering.md │ │ └── struct-components │ │ │ ├── callbacks.mdx │ │ │ ├── hoc.mdx │ │ │ ├── introduction.mdx │ │ │ ├── lifecycle.mdx │ │ │ ├── properties.mdx │ │ │ ├── refs.mdx │ │ │ └── scope.mdx │ ├── concepts │ │ ├── agents.mdx │ │ ├── basic-web-technologies │ │ │ ├── css.mdx │ │ │ ├── html.mdx │ │ │ ├── js.mdx │ │ │ ├── wasm-bindgen.mdx │ │ │ └── web-sys.mdx │ │ ├── contexts.mdx │ │ ├── function-components │ │ │ ├── callbacks.mdx │ │ │ ├── children.mdx │ │ │ ├── communication.mdx │ │ │ ├── generics.mdx │ │ │ ├── hooks │ │ │ │ ├── custom-hooks.mdx │ │ │ │ └── introduction.mdx │ │ │ ├── introduction.mdx │ │ │ ├── node-refs.mdx │ │ │ ├── properties.mdx │ │ │ ├── pure-components.mdx │ │ │ └── state.mdx │ │ ├── html │ │ │ ├── classes.mdx │ │ │ ├── components.mdx │ │ │ ├── conditional-rendering.mdx │ │ │ ├── elements.mdx │ │ │ ├── events.mdx │ │ │ ├── fragments.mdx │ │ │ ├── introduction.mdx │ │ │ ├── lists.mdx │ │ │ └── literals-and-expressions.mdx │ │ ├── router.mdx │ │ └── suspense.mdx │ ├── getting-started │ │ ├── build-a-sample-app.mdx │ │ ├── editor-setup.mdx │ │ ├── examples.mdx │ │ └── introduction.mdx │ ├── migration-guides │ │ ├── yew-agent │ │ │ ├── from-0_0_0-to-0_1_0.mdx │ │ │ └── from-0_1_0-to-0_2_0.mdx │ │ ├── yew-router │ │ │ ├── from-0_15_0-to-0_16_0.mdx │ │ │ └── from-0_16_0-to-0_17_0.mdx │ │ └── yew │ │ │ ├── from-0_18_0-to-0_19_0.mdx │ │ │ └── from-0_19_0-to-0_20_0.mdx │ ├── more │ │ ├── css.mdx │ │ ├── debugging.mdx │ │ ├── deployment.mdx │ │ ├── roadmap.mdx │ │ └── testing.mdx │ └── tutorial │ │ └── index.mdx ├── version-0.21 │ ├── advanced-topics │ │ ├── children.mdx │ │ ├── how-it-works.mdx │ │ ├── immutable.mdx │ │ ├── optimizations.mdx │ │ ├── portals.mdx │ │ ├── server-side-rendering.md │ │ └── struct-components │ │ │ ├── callbacks.mdx │ │ │ ├── hoc.mdx │ │ │ ├── introduction.mdx │ │ │ ├── lifecycle.mdx │ │ │ ├── properties.mdx │ │ │ ├── refs.mdx │ │ │ └── scope.mdx │ ├── concepts │ │ ├── agents.mdx │ │ ├── basic-web-technologies │ │ │ ├── css.mdx │ │ │ ├── html.mdx │ │ │ ├── js.mdx │ │ │ ├── wasm-bindgen.mdx │ │ │ └── web-sys.mdx │ │ ├── contexts.mdx │ │ ├── function-components │ │ │ ├── callbacks.mdx │ │ │ ├── children.mdx │ │ │ ├── communication.mdx │ │ │ ├── generics.mdx │ │ │ ├── hooks │ │ │ │ ├── custom-hooks.mdx │ │ │ │ └── introduction.mdx │ │ │ ├── introduction.mdx │ │ │ ├── node-refs.mdx │ │ │ ├── properties.mdx │ │ │ ├── pure-components.mdx │ │ │ └── state.mdx │ │ ├── html │ │ │ ├── classes.mdx │ │ │ ├── components.mdx │ │ │ ├── conditional-rendering.mdx │ │ │ ├── elements.mdx │ │ │ ├── events.mdx │ │ │ ├── fragments.mdx │ │ │ ├── introduction.mdx │ │ │ ├── lists.mdx │ │ │ └── literals-and-expressions.mdx │ │ ├── router.mdx │ │ └── suspense.mdx │ ├── getting-started │ │ ├── build-a-sample-app.mdx │ │ ├── editor-setup.mdx │ │ ├── examples.mdx │ │ └── introduction.mdx │ ├── migration-guides │ │ ├── yew-agent │ │ │ ├── from-0_0_0-to-0_1_0.mdx │ │ │ └── from-0_1_0-to-0_2_0.mdx │ │ ├── yew-router │ │ │ ├── from-0_15_0-to-0_16_0.mdx │ │ │ └── from-0_16_0-to-0_17_0.mdx │ │ └── yew │ │ │ ├── from-0_18_0-to-0_19_0.mdx │ │ │ ├── from-0_19_0-to-0_20_0.mdx │ │ │ ├── from-0_20_0-to-0_21_0.mdx │ │ │ └── from-0_20_0-to-next.mdx │ ├── more │ │ ├── css.mdx │ │ ├── debugging.mdx │ │ ├── deployment.mdx │ │ ├── roadmap.mdx │ │ └── testing.mdx │ └── tutorial │ │ └── index.mdx └── version-0.22 │ ├── advanced-topics │ ├── children.mdx │ ├── how-it-works.mdx │ ├── immutable.mdx │ ├── optimizations.mdx │ ├── portals.mdx │ ├── server-side-rendering.mdx │ └── struct-components │ │ ├── callbacks.mdx │ │ ├── hoc.mdx │ │ ├── introduction.mdx │ │ ├── lifecycle.mdx │ │ ├── properties.mdx │ │ ├── refs.mdx │ │ └── scope.mdx │ ├── concepts │ ├── agents.mdx │ ├── basic-web-technologies │ │ ├── css.mdx │ │ ├── html.mdx │ │ ├── js.mdx │ │ ├── wasm-bindgen.mdx │ │ └── web-sys.mdx │ ├── contexts.mdx │ ├── function-components │ │ ├── callbacks.mdx │ │ ├── children.mdx │ │ ├── communication.mdx │ │ ├── generics.mdx │ │ ├── hooks │ │ │ ├── custom-hooks.mdx │ │ │ └── introduction.mdx │ │ ├── introduction.mdx │ │ ├── node-refs.mdx │ │ ├── properties.mdx │ │ ├── pure-components.mdx │ │ └── state.mdx │ ├── html │ │ ├── classes.mdx │ │ ├── components.mdx │ │ ├── conditional-rendering.mdx │ │ ├── elements.mdx │ │ ├── events.mdx │ │ ├── fragments.mdx │ │ ├── introduction.mdx │ │ ├── lists.mdx │ │ └── literals-and-expressions.mdx │ ├── router.mdx │ └── suspense.mdx │ ├── getting-started │ ├── build-a-sample-app.mdx │ ├── editor-setup.mdx │ ├── examples.mdx │ └── introduction.mdx │ ├── migration-guides │ ├── yew-agent │ │ ├── from-0_0_0-to-0_1_0.mdx │ │ └── from-0_1_0-to-0_2_0.mdx │ ├── yew-router │ │ ├── from-0_15_0-to-0_16_0.mdx │ │ └── from-0_16_0-to-0_17_0.mdx │ └── yew │ │ ├── from-0_18_0-to-0_19_0.mdx │ │ ├── from-0_19_0-to-0_20_0.mdx │ │ └── from-0_20_0-to-0_21_0.mdx │ ├── more │ ├── css.mdx │ ├── debugging.mdx │ ├── deployment.mdx │ ├── roadmap.mdx │ └── testing.mdx │ └── tutorial │ └── index.mdx ├── versioned_sidebars ├── version-0.18.0-sidebars.json ├── version-0.19.0-sidebars.json ├── version-0.20-sidebars.json ├── version-0.21-sidebars.json └── version-0.22-sidebars.json ├── versions.json └── write-translations.js /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [target.'cfg(all(target_arch = "wasm32", not(target_os = "wasi")))'] 2 | runner = 'wasm-bindgen-test-runner' 3 | 4 | [target.'cfg(all(target_arch = "wasm32", target_os = "wasi"))'] 5 | runner = 'wasmtime -W unknown-imports-trap=y' 6 | 7 | # This section needs to be last. 8 | # GitHub Actions modifies this section. 9 | [unstable] 10 | doctest-xcompile = true 11 | -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "yew-rs" 4 | }, 5 | "targets": { 6 | "yew-rs": { 7 | "hosting": { 8 | "website": [ 9 | "yew-rs" 10 | ], 11 | "examples": [ 12 | "yew-rs-examples" 13 | ], 14 | "api": [ 15 | "yew-rs-api" 16 | ] 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.mdx linguist-detectable=false 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: yew 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Ask question 4 | url: https://discord.gg/VQck8X4 5 | about: Looking for a quick answer? Ask the community! 6 | - name: Feature proposal 7 | url: https://github.com/yewstack/yew/discussions/categories/ideas 8 | about: Start a discussion for a feature you would like to see 9 | - name: Issue with the Playground? 10 | url: https://github.com/yewstack/yew-playground/issues/new 11 | about: Open an issue on the yew-playground repository 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | #### Description 2 | 3 | 4 | 5 | Fixes #0000 6 | 7 | #### Checklist 8 | 9 | 10 | 11 | - [ ] I have reviewed my own code 12 | - [ ] I have added tests 13 | 14 | 15 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "cargo" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | day: "friday" 8 | open-pull-requests-limit: 2 9 | groups: 10 | cargo-deps: 11 | patterns: 12 | - "*" 13 | 14 | - package-ecosystem: "npm" 15 | directory: "/website" 16 | schedule: 17 | interval: "monthly" 18 | target-branch: "master" 19 | groups: 20 | website-deps: 21 | patterns: 22 | - "*" 23 | 24 | - package-ecosystem: "github-actions" 25 | directory: "/" 26 | schedule: 27 | interval: "monthly" 28 | target-branch: "master" 29 | -------------------------------------------------------------------------------- /.github/workflows/fmt.yml: -------------------------------------------------------------------------------- 1 | name: cargo fmt 2 | on: 3 | pull_request: 4 | paths: 5 | - "**/*.rs" 6 | push: 7 | branches: [master] 8 | paths: 9 | - "**/*.rs" 10 | 11 | jobs: 12 | format: 13 | name: cargo fmt 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | 18 | - name: Setup toolchain 19 | uses: dtolnay/rust-toolchain@master 20 | with: 21 | toolchain: nightly 22 | components: rustfmt 23 | 24 | - name: Run fmt 25 | run: cargo +nightly fmt --all -- --check --unstable-features 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | dist/ 3 | 4 | # backup files generated by rustfmt 5 | **/*.rs.bk 6 | 7 | # editor config files and directories 8 | *.iml 9 | /.idea/ 10 | /.vscode/ 11 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "packages/*", 4 | "tools/*", 5 | "examples/*", 6 | ] 7 | default-members = [ 8 | "packages/*", 9 | ] 10 | resolver = "2" 11 | 12 | [profile.release] 13 | lto = true 14 | codegen-units = 1 15 | panic = "abort" 16 | opt-level = "z" 17 | 18 | [profile.bench] 19 | lto = true 20 | codegen-units = 1 21 | opt-level = 3 22 | 23 | [workspace.lints.rust] 24 | unexpected_cfgs = { level = "warn", check-cfg = [ 25 | "cfg(documenting)", 26 | "cfg(verbose_tests)", 27 | "cfg(yew_lints)", 28 | "cfg(nightly_yew)", 29 | "cfg(wasm_bindgen_unstable_test_coverage)" 30 | ]} 31 | -------------------------------------------------------------------------------- /api-docs/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /api-docs/before-content.html: -------------------------------------------------------------------------------- 1 |
3 | The whole contents of this page is stored as a constant HTML string in the 4 | Rust source code. The code queries the DOM, creates a new element, and applies 5 | this snippet of HTML to the element's innerHTML. 6 |
7 | 14 | -------------------------------------------------------------------------------- /examples/inner_html/src/main.rs: -------------------------------------------------------------------------------- 1 | use yew::{Component, Context, Html}; 2 | 3 | const HTML: &str = include_str!("document.html"); 4 | 5 | pub struct App; 6 | 7 | impl Component for App { 8 | type Message = (); 9 | type Properties = (); 10 | 11 | fn create(_ctx: &Context