web: add tablet rendering, listen to window resize events.

This commit is contained in:
2023-12-02 10:56:14 -08:00
parent 4c2526c70b
commit 714b057fdb
5 changed files with 61 additions and 19 deletions

View File

@@ -19,6 +19,7 @@ use crate::{
mod desktop;
mod legacy;
mod mobile;
mod tablet;
fn set_title(title: &str) {
seed::document().set_title(&format!("lb: {}", title));
@@ -395,26 +396,28 @@ fn view_footer(render_time_ms: u128) -> Node<Msg> {
// `view` describes what to display.
pub fn view(model: &Model) -> Node<Msg> {
info!("refreshing {:?}", model.refreshing_state);
let is_mobile = seed::window()
.match_media("(max-width: 768px)")
.expect("failed media query")
.map(|mql| mql.matches())
.unwrap_or(false);
let start = Instant::now();
info!("refreshing {:?}", model.refreshing_state);
let win = seed::window();
let w = win
.inner_width()
.expect("window width")
.as_f64()
.expect("window width f64");
let h = win
.inner_height()
.expect("window height")
.as_f64()
.expect("window height f64");
info!("win: {w}x{h}");
info!("view called");
div![
if is_mobile {
C!["mobile"]
} else {
C!["desktop"]
match w {
w if w < 800. => div![C!["mobile"], mobile::view(model)],
w if w < 1024. => div![C!["tablet"], tablet::view(model)],
_ => div![C!["desktop"], desktop::view(model)],
},
if is_mobile {
mobile::view(model)
} else {
desktop::view(model)
},
view_footer(start.elapsed().as_millis())
view_footer(start.elapsed().as_millis()),
]
}