Skip to content

Commit d162ffe

Browse files
Merge pull request #189 from MartinKavik/feat/scalable-application-support
scalable application support
2 parents 6d3beca + f86e52b commit d162ffe

File tree

41 files changed

+620
-356
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+620
-356
lines changed

Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Makefile.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ command = "wasm-pack"
132132
args = ["test", "--firefox", "--", "--lib", "${@}"]
133133

134134
[tasks.test_one_h]
135-
description = "Run a single test in headless Firefox. Ex 'cargo make test_one my_test'"
135+
description = "Run a single test in headless Firefox. Ex 'cargo make test_one_h my_test'"
136136
clear = true
137137
workspace = false
138138
install_crate = { crate_name = "wasm-pack", binary = "wasm-pack", test_arg = "-V" }

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ enum Msg {
122122
}
123123

124124
/// How we update the model
125-
fn update(msg: Msg, model: &mut Model, _orders: &mut Orders<Msg>) {
125+
fn update(msg: Msg, model: &mut Model, _orders: &mut impl Orders<Msg>) {
126126
match msg {
127127
Msg::Increment => model.count += 1,
128128
Msg::Decrement => model.count -= 1,
@@ -182,7 +182,7 @@ fn view(model: &Model) -> impl View<Msg> {
182182

183183
#[wasm_bindgen(start)]
184184
pub fn render() {
185-
seed::App::build(Model::default(), update, view)
185+
seed::App::build(|_,_| Model::default(), update, view)
186186
.finish()
187187
.run();
188188
}

examples/animation_frame/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,4 @@ crate-type = ["cdylib"]
1010
[dependencies]
1111
seed = {path = "../../"}
1212
wasm-bindgen = "0.2.45"
13-
serde = "^1.0.92"
1413
rand = {version = "0.6.5", features = ["wasm-bindgen"]}

examples/animation_frame/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
<section id="app"></section>
2323
<script type="module">
2424
// https://rustwasm.github.io/docs/wasm-bindgen/examples/without-a-bundler.html
25-
import init from './pkg/package.js';
26-
init('./pkg/package_bg.wasm');
25+
import init from '/pkg/package.js';
26+
init('/pkg/package_bg.wasm');
2727
</script>
2828
</body>
2929
</html>

examples/animation_frame/src/lib.rs

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
extern crate seed;
33
use rand::prelude::*;
44
use seed::prelude::*;
5-
use serde::{Deserialize, Serialize};
65

76
// Model
87

@@ -56,30 +55,25 @@ struct Model {
5655

5756
// Update
5857

59-
#[derive(Clone, Copy, Serialize, Deserialize)]
58+
#[derive(Clone, Copy)]
6059
enum Msg {
61-
Init,
6260
SetViewportWidth,
6361
NextAnimationStep,
6462
OnAnimationFrame(RequestAnimationFrameTime),
6563
}
6664

67-
fn update(msg: Msg, model: &mut Model, orders: &mut Orders<Msg>) {
65+
fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders<Msg>) {
6866
match msg {
69-
Msg::Init => {
70-
orders
71-
.send_msg(Msg::SetViewportWidth)
72-
.send_msg(Msg::NextAnimationStep)
73-
.skip();
74-
}
7567
Msg::SetViewportWidth => {
7668
model.viewport_width = f64::from(seed::body().client_width());
7769
orders.skip();
7870
}
7971
Msg::NextAnimationStep => {
80-
let cb = Closure::wrap(Box::new(|time| {
81-
seed::update(Msg::OnAnimationFrame(time));
82-
}) as Box<FnMut(RequestAnimationFrameTime)>);
72+
let (app, msg_mapper) = (orders.clone_app(), orders.msg_mapper());
73+
74+
let cb = Closure::new(move |time| {
75+
app.update(msg_mapper(Msg::OnAnimationFrame(time)));
76+
});
8377

8478
model.request_animation_frame_handle = Some(request_animation_frame(cb));
8579
orders.skip();
@@ -175,18 +169,19 @@ fn view_wheel(wheel_x: f64, car: &Car) -> Node<Msg> {
175169
}]
176170
}
177171

172+
// Init
173+
174+
fn init(_: Url, orders: &mut impl Orders<Msg>) -> Model {
175+
orders
176+
.send_msg(Msg::SetViewportWidth)
177+
.send_msg(Msg::NextAnimationStep);
178+
Model::default()
179+
}
180+
178181
#[wasm_bindgen(start)]
179182
pub fn render() {
180-
let app = seed::App::build(Model::default(), update, view)
181-
.window_events(|_| {
182-
vec![
183-
// we want to use `seed::update(...)`
184-
trigger_update_handler(),
185-
simple_ev(Ev::Resize, Msg::SetViewportWidth),
186-
]
187-
})
183+
seed::App::build(init, update, view)
184+
.window_events(|_| vec![simple_ev(Ev::Resize, Msg::SetViewportWidth)])
188185
.finish()
189186
.run();
190-
191-
app.update(Msg::Init);
192187
}

examples/counter/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
<section id="app"></section>
2323
<script type="module">
2424
// https://rustwasm.github.io/docs/wasm-bindgen/examples/without-a-bundler.html
25-
import init from './pkg/package.js';
26-
init('./pkg/package_bg.wasm');
25+
import init from '/pkg/package.js';
26+
init('/pkg/package_bg.wasm');
2727
</script>
2828
</body>
2929
</html>

examples/counter/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ enum Msg {
3434
}
3535

3636
/// The sole source of updating the model
37-
fn update(msg: Msg, model: &mut Model, _: &mut Orders<Msg>) {
37+
fn update(msg: Msg, model: &mut Model, _: &mut impl Orders<Msg>) {
3838
match msg {
3939
Msg::Increment => model.count += 1,
4040
Msg::Decrement => model.count -= 1,
@@ -105,7 +105,7 @@ fn view(model: &Model) -> impl View<Msg> {
105105

106106
#[wasm_bindgen(start)]
107107
pub fn render() {
108-
seed::App::build(Model::default(), update, view)
108+
seed::App::build(|_, _| Model::default(), update, view)
109109
.finish()
110110
.run();
111111
}

examples/mathjax/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
<section id="app"></section>
3030
<script type="module">
3131
// https://rustwasm.github.io/docs/wasm-bindgen/examples/without-a-bundler.html
32-
import init from './pkg/package.js';
33-
init('./pkg/package_bg.wasm');
32+
import init from '/pkg/package.js';
33+
init('/pkg/package_bg.wasm');
3434
</script>
3535
</body>
3636
</html>

examples/mathjax/src/lib.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,13 @@ e^{-\mathbf{A}} = \mathbf{B} + [\mathbf{A}, \mathbf{B}]"
182182
]
183183
}
184184

185+
// Init
186+
187+
fn init(_: Url, _: &mut impl Orders<Msg>) -> Model {
188+
Model::default()
189+
}
190+
185191
#[wasm_bindgen(start)]
186192
pub fn render() {
187-
seed::App::build(Model::default(), |_, _, _| (), view)
188-
.finish()
189-
.run();
193+
seed::App::build(init, |_, _, _| (), view).finish().run();
190194
}

0 commit comments

Comments
 (0)