terrazzo-terminal 0.2.8

A simple web-based terminal emulator built on Terrazzo.
use wasm_bindgen::JsValue;
use wasm_bindgen::prelude::Closure;
use wasm_bindgen::prelude::wasm_bindgen;
use web_sys::Element;

#[wasm_bindgen(module = "/src/terminal/javascript.js")]
extern "C" {
    #[derive(Clone)]
    pub type TerminalJs;

    #[wasm_bindgen(constructor)]
    pub fn new() -> TerminalJs;

    #[wasm_bindgen(method)]
    pub fn open(this: &TerminalJs, terminal_node: &Element);

    #[wasm_bindgen(method)]
    pub fn fit(this: &TerminalJs);

    #[wasm_bindgen(method)]
    pub fn focus(this: &TerminalJs);

    #[wasm_bindgen(method)]
    pub fn rows(this: &TerminalJs) -> JsValue;

    #[wasm_bindgen(method)]
    pub fn cols(this: &TerminalJs) -> JsValue;

    #[wasm_bindgen(method, js_name = "onData")]
    pub fn on_data(this: &TerminalJs, callback: &Closure<dyn FnMut(JsValue)>);

    #[wasm_bindgen(method, js_name = "onResize")]
    pub fn on_resize(this: &TerminalJs, callback: &Closure<dyn FnMut(JsValue)>);

    #[wasm_bindgen(method, js_name = "onTitleChange")]
    pub fn on_title_change(this: &TerminalJs, callback: &Closure<dyn FnMut(JsValue)>);

    #[wasm_bindgen(method)]
    pub async fn send(this: &TerminalJs, data: JsValue);

    #[wasm_bindgen(method)]
    pub fn dispose(this: &TerminalJs);
}