workflow_terminal/terminal/
bindings.rs1use std::fmt::Debug;
6use std::fmt::Formatter;
7use wasm_bindgen::prelude::wasm_bindgen;
8use wasm_bindgen::JsValue;
9use web_sys::Element;
10
11#[wasm_bindgen]
12extern "C" {
13
14 #[wasm_bindgen(js_namespace=["window", "FitAddon"], js_name="FitAddon")]
15 pub type FitAddon;
16
17 #[wasm_bindgen(
18 constructor,
19 js_class = "window.FitAddon.FitAddon",
20 js_name = "FitAddon"
21 )]
22 pub fn new() -> FitAddon;
23
24 #[wasm_bindgen(method, js_name = "proposeDimensions")]
25 pub fn propose_dimensions(this: &FitAddon);
26
27 #[wasm_bindgen(method, js_name = "fit")]
28 pub fn fit(this: &FitAddon);
29}
30
31#[wasm_bindgen]
32extern "C" {
33
34 #[wasm_bindgen(js_namespace=["window","WebLinksAddon"], js_name="WebLinksAddon")]
35 pub type WebLinksAddon;
36
37 #[wasm_bindgen(
38 constructor,
39 js_class = "window.WebLinksAddon.WebLinksAddon",
40 js_name = "WebLinksAddon"
41 )]
42 pub fn new(callback: JsValue) -> WebLinksAddon;
43}
44
45#[wasm_bindgen]
46extern "C" {
47 #[wasm_bindgen(extends = js_sys::Object)]
48 pub type XtermCoreImpl;
49 #[wasm_bindgen(method, js_name = "_setTheme")]
50 pub fn set_theme(this: &XtermCoreImpl, them: js_sys::Object);
51
52 #[wasm_bindgen(extends = js_sys::Object)]
53 pub type XtermEvent;
54
55 #[wasm_bindgen(method, getter, js_name = "domEvent")]
56 pub fn get_dom_event(this: &XtermEvent) -> web_sys::KeyboardEvent;
57 #[wasm_bindgen(method, getter, js_name = "key")]
58 pub fn get_key(this: &XtermEvent) -> String;
59
60 #[wasm_bindgen(js_namespace=window, js_name="Terminal")]
61 pub type XtermImpl;
62
63 #[wasm_bindgen(constructor, js_class = "Terminal")]
64 pub fn new(opt: js_sys::Object) -> XtermImpl;
65
66 #[wasm_bindgen(method)]
67 pub fn focus(this: &XtermImpl);
68
69 #[wasm_bindgen(method, getter)]
70 pub fn number(this: &XtermImpl) -> u32;
71
72 #[wasm_bindgen(method, getter, js_name = "_core")]
73 pub fn core(this: &XtermImpl) -> XtermCoreImpl;
74
75 #[wasm_bindgen(method)]
76 pub fn open(this: &XtermImpl, el: &Element);
77
78 #[wasm_bindgen(method, js_name = "setOption")]
79 pub fn set_option(this: &XtermImpl, name: &str, option: JsValue);
80
81 #[wasm_bindgen(method, js_name = "getOption")]
82 pub fn get_option(this: &XtermImpl, name: &str) -> JsValue;
83
84 #[wasm_bindgen(method)]
85 pub fn refresh(this: &XtermImpl, start: u32, stop: u32);
86
87 #[wasm_bindgen(method, getter, js_name = "rows")]
88 pub fn rows(this: &XtermImpl) -> u32;
89
90 #[wasm_bindgen(method, getter, js_name = "cols")]
91 pub fn cols(this: &XtermImpl) -> u32;
92
93 #[wasm_bindgen(method, js_name = "onKey")]
94 pub fn on_key(this: &XtermImpl, f: &js_sys::Function);
95
96 #[wasm_bindgen(method, js_name = "write")]
97 fn _write(this: &XtermImpl, text: String);
98
99 #[wasm_bindgen(method, js_name = "loadAddon")]
103 pub fn load_addon(this: &XtermImpl, addon: JsValue);
104
105 #[wasm_bindgen(method, getter, js_name = "element")]
106 pub fn get_element(this: &XtermImpl) -> Element;
107
108 #[wasm_bindgen(method, js_name = "getSelection")]
109 pub fn get_selection(this: &XtermImpl) -> String;
110
111 #[wasm_bindgen(method, js_name = "registerLinkMatcher")]
112 pub fn register_link_matcher(
113 this: &XtermImpl,
114 regexp: &js_sys::RegExp,
115 callback: &js_sys::Function,
116 );
117
118 }
127
128impl Debug for XtermImpl {
129 fn fmt(&self, f: &mut Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
130 write!(f, "Workflow Xterm")?;
131 Ok(())
132 }
133}
134
135impl XtermImpl {
136 pub fn write<T: ToString>(&self, text: T) {
137 self._write(text.to_string());
138 }
139
140 pub fn set_theme(&self, theme: js_sys::Object) {
141 self.set_option("theme", theme.into());
142 }
144}
145
146#[wasm_bindgen]
147extern "C" {
148 #[wasm_bindgen (extends = :: js_sys :: Object , js_name = ResizeObserver , typescript_type = "ResizeObserver")]
149 #[derive(Debug, Clone, PartialEq, Eq)]
150 pub type ResizeObserver;
151 #[wasm_bindgen(catch, constructor, js_class = "ResizeObserver")]
152 pub fn new(callback: &::js_sys::Function) -> std::result::Result<ResizeObserver, JsValue>;
153 #[wasm_bindgen (method , structural , js_class = "ResizeObserver" , js_name = disconnect)]
154 pub fn disconnect(this: &ResizeObserver);
155 #[wasm_bindgen (method , structural , js_class = "ResizeObserver" , js_name = observe)]
156 pub fn observe(this: &ResizeObserver, target: &Element);
157 pub fn unobserve(this: &ResizeObserver, target: &Element);
165}
166
167