All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
51 lines
1.2 KiB
Rust
51 lines
1.2 KiB
Rust
use std::{cell::RefCell, rc::Rc};
|
|
|
|
use ratzilla::{
|
|
backend::canvas::CanvasBackendOptions,
|
|
event::KeyCode,
|
|
ratatui::{
|
|
widgets::{Block, Borders},
|
|
Terminal,
|
|
},
|
|
web_sys, CanvasBackend, WebRenderer,
|
|
};
|
|
use wasm_bindgen::prelude::*;
|
|
|
|
mod utils;
|
|
|
|
use crate::app::App;
|
|
|
|
#[wasm_bindgen]
|
|
extern "C" {
|
|
fn alert(s: &str);
|
|
}
|
|
|
|
#[wasm_bindgen]
|
|
pub fn run(grid_id: &str) {
|
|
console_error_panic_hook::set_once();
|
|
|
|
let backend = CanvasBackend::new_with_options(
|
|
CanvasBackendOptions::new()
|
|
.grid_id(grid_id)
|
|
.font(String::from("16px Fira Code")),
|
|
)
|
|
.unwrap();
|
|
let terminal = Terminal::new(backend).unwrap();
|
|
|
|
let app = Rc::new(RefCell::new(App::new()));
|
|
|
|
terminal.on_key_event({
|
|
let app = Rc::clone(&app);
|
|
move |event| match event.code {
|
|
KeyCode::Left => app.borrow_mut().prev_tab(),
|
|
KeyCode::Right => app.borrow_mut().next_tab(),
|
|
KeyCode::Char(c) => app.borrow_mut().add_char_to_number_guess(c),
|
|
_ => {}
|
|
}
|
|
});
|
|
|
|
terminal.draw_web({
|
|
let app = Rc::clone(&app);
|
|
move |frame| app.borrow_mut().draw(frame)
|
|
})
|
|
}
|