// Do not edit. This file is generated.
// MoonBit type: TreeWalker
// Specifications: dom.idl
///|
/// [TreeWalker](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker)
#external
pub type TreeWalker
///|
pub impl TJsValue for TreeWalker with to_js(self : TreeWalker) -> JsValue = "%identity"
///|
pub impl FromJsAny for TreeWalker with from_js_any(value : JsAny) -> TreeWalker = "%identity"
///|
/// Unchecked downcast — no runtime type check is performed.
/// Prefer `try_into()` for checked downcasts.
#deprecated("Use unsafe_into or try_into instead")
pub fn[T : TTreeWalker] TreeWalker::into(self : TreeWalker) -> T = "%identity"
///|
/// Unchecked downcast — no runtime type check is performed.
/// WARNING: If the underlying JS value is not of type T, this will silently
/// produce a value with incorrect type, leading to undefined behavior.
pub fn[T : TTreeWalker] TreeWalker::unsafe_into(self : TreeWalker) -> T = "%identity"
///|
pub impl HasConstructor for TreeWalker with constructor_name() {
"TreeWalker"
}
///|
/// Checked downcast — returns None if the JS value is not an instance of T.
pub fn[T : TTreeWalker + HasConstructor] TreeWalker::try_into(
self : TreeWalker,
) -> T? {
if js_instanceof(TJsValue::to_js(self), T::constructor_name()) {
Some(self.unsafe_into())
} else {
None
}
}
///|
pub impl TTreeWalker for TreeWalker
///|
/// [TreeWalker](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker) interface.
pub trait TTreeWalker: TJsValue {
root(self : Self) -> Node = _
what_to_show(self : Self) -> UInt = _
filter(self : Self) -> NodeFilter = _
current_node(self : Self) -> Node = _
set_current_node(self : Self, current_node : &TNode) -> Unit = _
parent_node_opt(self : Self) -> Node? = _
first_child_opt(self : Self) -> Node? = _
last_child_opt(self : Self) -> Node? = _
previous_sibling_opt(self : Self) -> Node? = _
next_sibling_opt(self : Self) -> Node? = _
previous_node_opt(self : Self) -> Node? = _
next_node_opt(self : Self) -> Node? = _
parent_node(self : Self) -> Node = _
first_child(self : Self) -> Node = _
last_child(self : Self) -> Node = _
previous_sibling(self : Self) -> Node = _
next_sibling(self : Self) -> Node = _
previous_node(self : Self) -> Node = _
next_node(self : Self) -> Node = _
}
///|
/// [TreeWalker.root](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/root)
impl TTreeWalker with root(self : Self) -> Node {
tree_walker_root_ffi(TJsValue::to_js(self))
}
///|
/// [TreeWalker.whatToShow](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/whatToShow)
impl TTreeWalker with what_to_show(self : Self) -> UInt {
tree_walker_what_to_show_ffi(TJsValue::to_js(self))
}
///|
/// [TreeWalker.filter](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/filter)
impl TTreeWalker with filter(self : Self) -> NodeFilter {
tree_walker_filter_ffi(TJsValue::to_js(self))
}
///|
/// [TreeWalker.currentNode](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/currentNode)
impl TTreeWalker with current_node(self : Self) -> Node {
tree_walker_current_node_ffi(TJsValue::to_js(self))
}
///|
/// [TreeWalker.currentNode](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/currentNode)
impl TTreeWalker with set_current_node(self : Self, current_node : &TNode) -> Unit {
tree_walker_set_current_node_ffi(
TJsValue::to_js(self),
TJsValue::to_js(current_node),
)
}
///|
/// [TreeWalker.parentNode](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/parentNode)
impl TTreeWalker with parent_node_opt(self : Self) -> Node? {
tree_walker_parent_node_ffi(TJsValue::to_js(self)).to_option()
}
///|
/// [TreeWalker.firstChild](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/firstChild)
impl TTreeWalker with first_child_opt(self : Self) -> Node? {
tree_walker_first_child_ffi(TJsValue::to_js(self)).to_option()
}
///|
/// [TreeWalker.lastChild](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/lastChild)
impl TTreeWalker with last_child_opt(self : Self) -> Node? {
tree_walker_last_child_ffi(TJsValue::to_js(self)).to_option()
}
///|
/// [TreeWalker.previousSibling](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/previousSibling)
impl TTreeWalker with previous_sibling_opt(self : Self) -> Node? {
tree_walker_previous_sibling_ffi(TJsValue::to_js(self)).to_option()
}
///|
/// [TreeWalker.nextSibling](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/nextSibling)
impl TTreeWalker with next_sibling_opt(self : Self) -> Node? {
tree_walker_next_sibling_ffi(TJsValue::to_js(self)).to_option()
}
///|
/// [TreeWalker.previousNode](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/previousNode)
impl TTreeWalker with previous_node_opt(self : Self) -> Node? {
tree_walker_previous_node_ffi(TJsValue::to_js(self)).to_option()
}
///|
/// [TreeWalker.nextNode](https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker/nextNode)
impl TTreeWalker with next_node_opt(self : Self) -> Node? {
tree_walker_next_node_ffi(TJsValue::to_js(self)).to_option()
}
///|
impl TTreeWalker with parent_node(self : Self) -> Node {
self.parent_node_opt().unwrap()
}
///|
impl TTreeWalker with first_child(self : Self) -> Node {
self.first_child_opt().unwrap()
}
///|
impl TTreeWalker with last_child(self : Self) -> Node {
self.last_child_opt().unwrap()
}
///|
impl TTreeWalker with previous_sibling(self : Self) -> Node {
self.previous_sibling_opt().unwrap()
}
///|
impl TTreeWalker with next_sibling(self : Self) -> Node {
self.next_sibling_opt().unwrap()
}
///|
impl TTreeWalker with previous_node(self : Self) -> Node {
self.previous_node_opt().unwrap()
}
///|
impl TTreeWalker with next_node(self : Self) -> Node {
self.next_node_opt().unwrap()
}
///|
#cfg(target="js")
extern "js" fn tree_walker_root_ffi_js(obj : JsValue) -> JsValue = "(obj) => obj.root"
///|
#cfg(target="js")
fn tree_walker_root_ffi(obj : JsValue) -> Node {
tree_walker_root_ffi_js(obj).unsafe_cast()
}
///|
#cfg(target="js")
extern "js" fn tree_walker_what_to_show_ffi_js(obj : JsValue) -> JsValue = "(obj) => obj.whatToShow"
///|
#cfg(target="js")
fn tree_walker_what_to_show_ffi(obj : JsValue) -> UInt {
tree_walker_what_to_show_ffi_js(obj).unsafe_cast()
}
///|
#cfg(target="js")
extern "js" fn tree_walker_filter_ffi_js(obj : JsValue) -> JsValue = "(obj) => obj.filter"
///|
#cfg(target="js")
fn tree_walker_filter_ffi(obj : JsValue) -> NodeFilter {
tree_walker_filter_ffi_js(obj).unsafe_cast()
}
///|
#cfg(target="js")
extern "js" fn tree_walker_current_node_ffi_js(obj : JsValue) -> JsValue = "(obj) => obj.currentNode"
///|
#cfg(target="js")
fn tree_walker_current_node_ffi(obj : JsValue) -> Node {
tree_walker_current_node_ffi_js(obj).unsafe_cast()
}
///|
#cfg(target="js")
extern "js" fn tree_walker_set_current_node_ffi(
obj : JsValue,
current_node : JsValue,
) -> Unit = "(obj, currentNode) => { obj.currentNode = currentNode; }"
///|
#cfg(target="js")
extern "js" fn tree_walker_parent_node_ffi(obj : JsValue) -> JsValue = "(obj) => obj.parentNode()"
///|
#cfg(target="js")
extern "js" fn tree_walker_first_child_ffi(obj : JsValue) -> JsValue = "(obj) => obj.firstChild()"
///|
#cfg(target="js")
extern "js" fn tree_walker_last_child_ffi(obj : JsValue) -> JsValue = "(obj) => obj.lastChild()"
///|
#cfg(target="js")
extern "js" fn tree_walker_previous_sibling_ffi(obj : JsValue) -> JsValue = "(obj) => obj.previousSibling()"
///|
#cfg(target="js")
extern "js" fn tree_walker_next_sibling_ffi(obj : JsValue) -> JsValue = "(obj) => obj.nextSibling()"
///|
#cfg(target="js")
extern "js" fn tree_walker_previous_node_ffi(obj : JsValue) -> JsValue = "(obj) => obj.previousNode()"
///|
#cfg(target="js")
extern "js" fn tree_walker_next_node_ffi(obj : JsValue) -> JsValue = "(obj) => obj.nextNode()"
///|
#cfg(target="wasm-gc")
fn tree_walker_root_ffi(obj : JsValue) -> Node = "webapi_TreeWalker" "get_root"
///|
#cfg(target="wasm-gc")
fn tree_walker_what_to_show_ffi(obj : JsValue) -> UInt = "webapi_TreeWalker" "get_whatToShow"
///|
#cfg(target="wasm-gc")
fn tree_walker_filter_ffi_wasm(obj : JsValue) -> JsValue = "webapi_TreeWalker" "get_filter"
///|
#cfg(target="wasm-gc")
fn tree_walker_filter_ffi(obj : JsValue) -> NodeFilter {
tree_walker_filter_ffi_wasm(obj).unsafe_cast()
}
///|
#cfg(target="wasm-gc")
fn tree_walker_current_node_ffi(obj : JsValue) -> Node = "webapi_TreeWalker" "get_currentNode"
///|
#cfg(target="wasm-gc")
fn tree_walker_set_current_node_ffi(
obj : JsValue,
current_node : JsValue,
) -> Unit = "webapi_TreeWalker" "set_currentNode"
///|
#cfg(target="wasm-gc")
fn tree_walker_parent_node_ffi(obj : JsValue) -> JsValue = "webapi_TreeWalker" "parentNode"
///|
#cfg(target="wasm-gc")
fn tree_walker_first_child_ffi(obj : JsValue) -> JsValue = "webapi_TreeWalker" "firstChild"
///|
#cfg(target="wasm-gc")
fn tree_walker_last_child_ffi(obj : JsValue) -> JsValue = "webapi_TreeWalker" "lastChild"
///|
#cfg(target="wasm-gc")
fn tree_walker_previous_sibling_ffi(obj : JsValue) -> JsValue = "webapi_TreeWalker" "previousSibling"
///|
#cfg(target="wasm-gc")
fn tree_walker_next_sibling_ffi(obj : JsValue) -> JsValue = "webapi_TreeWalker" "nextSibling"
///|
#cfg(target="wasm-gc")
fn tree_walker_previous_node_ffi(obj : JsValue) -> JsValue = "webapi_TreeWalker" "previousNode"
///|
#cfg(target="wasm-gc")
fn tree_walker_next_node_ffi(obj : JsValue) -> JsValue = "webapi_TreeWalker" "nextNode"