A minimal FFI layer for DOM operations, designed for use with Respo.mbt
A minimal FFI layer for DOM operations, designed for use with Respo.mbt
moon add tiye/dom-ffi"import": [{ "path": "tiye/dom-ffi", "alias": "dom_ffi" }]#external
pub(all) type CSSStyleDeclarationfn CSSStyleDeclaration::set_property(self : CSSStyleDeclaration, name : String, value : String) -> Unit#external
pub type DataTransfer#external
pub(all) type Documentpub(all) struct DomRect {
x : Float
y : Float
width : Float
height : Float
top : Float
right : Float
bottom : Float
left : Float
}#external
pub type DragEvent#external
pub(all) type Element#external
pub(all) type HtmlInputElement#external
pub(all) type HtmlTextAreaElementfn HtmlTextAreaElement::set_onkeydown(self : HtmlTextAreaElement, f : (KeyboardEvent) -> Unit?) -> Unitfn HtmlTextAreaElement::set_onkeypress(self : HtmlTextAreaElement, f : (KeyboardEvent) -> Unit?) -> Unitfn HtmlTextAreaElement::set_onkeyup(self : HtmlTextAreaElement, f : (KeyboardEvent) -> Unit?) -> Unit#external
pub type InputEvent#external
pub type JsFnObscure#external
pub type JsObjectObscurefn JsObjectObscure::call_method_args(self : JsObjectObscure, method_ : String, args : Array[JsObscure]) -> JsObscure#external
pub type JsObscure#external
pub(all) type JsPromiselet promise = JsPromise::reject(v_to_js_obscure("error"))
let _handled = promise.catch_(fn(_error) { v_to_js_obscure("handled") })let _promise = JsPromise::new(fn(resolve, reject) {
// Async operation logic here
resolve(v_to_js_obscure("success"))
})let _rejected_promise = JsPromise::reject(v_to_js_obscure("Error occurred"))
let _ = _rejected_promise.catch_(fn(_error) { v_to_js_obscure("handled reject") })let resolved_promise = JsPromise::resolve(v_to_js_obscure("success"))
inspect(resolved_promise, content="[object Promise]")let promise = JsPromise::resolve(v_to_js_obscure("initial"))
let chained = promise.then(fn(value) { v_to_js_obscure("processed") })#external
pub type KeyboardEventfn KeyboardEvent::new_with_init_dict(type_ : String, event_init_dict : KeyboardEventInit) -> KeyboardEvent#external
pub type KeyboardEventInit#external
pub(all) type LocalStoragelet storage = window().local_storage()
storage.set_item("username", "alice")
let result = storage.get_item("username")
inspect(result, content="Some(\"alice\")")
let missing = storage.get_item("nonexistent")
inspect(missing, content="None")#external
pub(all) type Locationlet loc = window().location()
loc.assign("https://example.com/new-page")
inspect((), content="()")let loc = window().location()
let hash = loc.hash()
inspect(hash, content="#section1")let loc = window().location()
let host = loc.host()
inspect(host, content="example.com:8080")let loc = window().location()
let hostname = loc.hostname()
inspect(hostname, content="example.com")let loc = window().location()
let url = loc.href()
inspect(url, content="https://example.com/path?query=value#hash")let loc = window().location()
let origin = loc.origin()
inspect(origin, content="https://example.com:8080")let loc = window().location()
let path = loc.pathname()
inspect(path, content="/path/to/page")let loc = window().location()
let port = loc.port()
inspect(port, content="8080")let loc = window().location()
let protocol = loc.protocol()
inspect(protocol, content="https:")let loc = window().location()
let search = loc.search()
inspect(search, content="?name=john&age=25")let loc = window().location()
loc.set_href("https://example.com/new-page")#external
pub type MouseEvent#external
pub(all) type Navigator#external
pub(all) type Node#external
pub(all) type Performanceimpl Show for Performancelet perf = window().performance()
let start_time = perf.now()
// ... some operation ...
let end_time = perf.now()
let duration = end_time - start_time
inspect(start_time, content="1234.567890")type URLSearchParamsimpl Show for URLSearchParamslet params = new_url_search_params("name=john")
params.append("name", "jane")
params.append("age", "25")
inspect(params.to_string(), content="name=john&name=jane&age=25")let params = new_url_search_params("name=john&age=25&name=jane")
params.delete("name")
inspect(params.to_string(), content="age=25")let params = new_url_search_params("name=john&age=25&name=jane")
let name = params.get("name")
inspect(name, content="john")
let missing = params.get("email")
inspect(missing, content="")let params = new_url_search_params("name=john&age=25&name=jane")
let names = params.get_all("name")
inspect(names, content="[\"john\", \"jane\"]")
let ages = params.get_all("age")
inspect(ages, content="[\"25\"]")let params = new_url_search_params("name=john&age=25")
let has_name = params.has("name")
inspect(has_name, content="true")
let has_email = params.has("email")
inspect(has_email, content="false")let params = new_url_search_params("name=john&age=25")
params.set("name", "alice")
params.set("email", "alice@example.com")
inspect(params.to_string(), content="name=alice&age=25&email=alice%40example.com")let params = new_url_search_params("name=john&age=25")
let query_string = params.to_string()
inspect(query_string, content="name=john&age=25")#external
pub(all) type Windowlet _loc = window().location()let perf = window().performance()
inspect(perf, content="[object Performance]")fn Window::remove_event_listener_with_callback(self : Window, type_ : String, f : JsFnObscure) -> Unitfn cancel_animation_frame(id : Int) -> Unitfn clear_interval(id : Int) -> Unitfn clear_timeout(id : Int) -> Unitfn error_log(msg : String) -> Uniterror_log("An error occurred!")
error_log("Failed to load resource")fn inject_style(id : String, css : String) -> Unitfn log(msg : String) -> Unitlog("Hello, world!")
log("Debug information: value = 42")let params = new_url_search_params("name=john&age=25")
inspect(params, content="name=john&age=25")
let params2 = new_url_search_params("?foo=bar&baz=qux")
inspect(params2, content="foo=bar&baz=qux")fn remove_style(id : String) -> Unitfn request_animation_frame(f : (Float) -> Unit) -> Intfn set_interval(f : () -> Unit, ms : UInt) -> Intfn set_timeout(f : () -> Unit, ms : UInt) -> Intfn warn_log(msg : String) -> Unitwarn_log("This is a warning message")
warn_log("Deprecated function used")Install
Download zipA minimal FFI layer for DOM operations, designed for use with Respo.mbt