use wasm_bindgen::{prelude::Closure, JsCast};
use crate::frontend::util::web_idl::get_element_by_id;
mod render;
pub use render::render;
use super::lock_view;
pub fn setup() {
render::setup();
}
pub fn init() {
let func: Box<dyn FnMut(web_sys::Event)> = Box::new(|_| {
wasm_bindgen_futures::spawn_local(on_resize());
});
let closure = Closure::wrap(func);
let callback = closure.as_ref().dyn_ref().unwrap();
let resize_observer = web_sys::ResizeObserver::new(callback)
.expect("Canvas resize observer should be constructable");
closure.forget();
let main_area = get_element_by_id("main_area");
resize_observer.observe(&main_area);
setup();
}
async fn on_resize() {
setup();
render(lock_view().as_mut());
}