// Do not edit. This file is generated.
// MoonBit type: ShadowRootInit
// Specifications: dom.idl
///|
/// [ShadowRootInit](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRootInit)
#external
pub type ShadowRootInit
///|
pub impl TJsValue for ShadowRootInit with to_js(self : ShadowRootInit) -> JsValue = "%identity"
///|
pub impl FromJsAny for ShadowRootInit with from_js_any(value : JsAny) -> ShadowRootInit = "%identity"
///|
pub fn ShadowRootInit::new(
mode : ShadowRootMode,
delegates_focus? : Bool,
slot_assignment? : SlotAssignmentMode,
clonable? : Bool,
serializable? : Bool,
custom_element_registry? : &TCustomElementRegistry,
) -> ShadowRootInit {
shadow_root_init_ffi(
TJsValue::to_js(mode),
opt_to_js(delegates_focus),
opt_to_js(slot_assignment),
opt_to_js(clonable),
opt_to_js(serializable),
opt_to_js(custom_element_registry),
)
}
///|
pub fn ShadowRootInit::empty() -> ShadowRootInit {
shadow_root_init_empty_ffi()
}
///|
pub fn ShadowRootInit::mode(self : ShadowRootInit) -> ShadowRootMode {
shadow_root_init_get_mode_ffi(TJsValue::to_js(self))
}
///|
pub fn ShadowRootInit::delegates_focus(self : ShadowRootInit) -> Bool? {
shadow_root_init_get_delegates_focus_ffi(TJsValue::to_js(self)).to_option_prim()
}
///|
pub fn ShadowRootInit::slot_assignment(
self : ShadowRootInit,
) -> SlotAssignmentMode? {
shadow_root_init_get_slot_assignment_ffi(TJsValue::to_js(self)).to_option()
}
///|
pub fn ShadowRootInit::clonable(self : ShadowRootInit) -> Bool? {
shadow_root_init_get_clonable_ffi(TJsValue::to_js(self)).to_option_prim()
}
///|
pub fn ShadowRootInit::serializable(self : ShadowRootInit) -> Bool? {
shadow_root_init_get_serializable_ffi(TJsValue::to_js(self)).to_option_prim()
}
///|
pub fn ShadowRootInit::custom_element_registry(
self : ShadowRootInit,
) -> CustomElementRegistry? {
shadow_root_init_get_custom_element_registry_ffi(TJsValue::to_js(self)).to_option()
}
///|
#cfg(target="js")
extern "js" fn shadow_root_init_ffi(
mode : JsValue,
delegates_focus : JsValue,
slot_assignment : JsValue,
clonable : JsValue,
serializable : JsValue,
custom_element_registry : JsValue,
) -> ShadowRootInit =
#|(mode, delegatesFocus, slotAssignment, clonable, serializable, customElementRegistry) => {
#| const obj = {};
#| if (mode !== undefined) obj.mode = mode;
#| if (delegatesFocus !== undefined) obj.delegatesFocus = delegatesFocus;
#| if (slotAssignment !== undefined) obj.slotAssignment = slotAssignment;
#| if (clonable !== undefined) obj.clonable = clonable;
#| if (serializable !== undefined) obj.serializable = serializable;
#| if (customElementRegistry !== undefined) obj.customElementRegistry = customElementRegistry;
#| return obj;
#|}
///|
#cfg(target="js")
extern "js" fn shadow_root_init_empty_ffi() -> ShadowRootInit = "() => {}"
///|
#cfg(target="js")
extern "js" fn shadow_root_init_get_mode_ffi_js(obj : JsValue) -> JsValue = "(obj) => obj.mode"
///|
#cfg(target="js")
fn shadow_root_init_get_mode_ffi(obj : JsValue) -> ShadowRootMode {
ShadowRootMode::from_unchecked(
shadow_root_init_get_mode_ffi_js(obj).unsafe_cast(),
)
}
///|
#cfg(target="js")
extern "js" fn shadow_root_init_get_delegates_focus_ffi(
obj : JsValue,
) -> JsValue = "(obj) => obj.delegatesFocus"
///|
#cfg(target="js")
extern "js" fn shadow_root_init_get_slot_assignment_ffi(
obj : JsValue,
) -> JsValue = "(obj) => obj.slotAssignment"
///|
#cfg(target="js")
extern "js" fn shadow_root_init_get_clonable_ffi(obj : JsValue) -> JsValue = "(obj) => obj.clonable"
///|
#cfg(target="js")
extern "js" fn shadow_root_init_get_serializable_ffi(obj : JsValue) -> JsValue = "(obj) => obj.serializable"
///|
#cfg(target="js")
extern "js" fn shadow_root_init_get_custom_element_registry_ffi(
obj : JsValue,
) -> JsValue = "(obj) => obj.customElementRegistry"
///|
#cfg(target="wasm-gc")
fn shadow_root_init_ffi(
mode : JsValue,
delegates_focus : JsValue,
slot_assignment : JsValue,
clonable : JsValue,
serializable : JsValue,
custom_element_registry : JsValue,
) -> ShadowRootInit = "webapi_ShadowRootInit" "new"
///|
#cfg(target="wasm-gc")
fn shadow_root_init_empty_ffi() -> ShadowRootInit = "webapi_Dictionary" "empty"
///|
#cfg(target="wasm-gc")
fn shadow_root_init_get_mode_ffi_wasm(obj : JsValue) -> JsValue = "webapi_ShadowRootInit" "get_mode"
///|
#cfg(target="wasm-gc")
fn shadow_root_init_get_mode_ffi(obj : JsValue) -> ShadowRootMode {
ShadowRootMode::from_unchecked(
jsvalue_to_string(shadow_root_init_get_mode_ffi_wasm(obj)),
)
}
///|
#cfg(target="wasm-gc")
fn shadow_root_init_get_delegates_focus_ffi(obj : JsValue) -> JsValue = "webapi_ShadowRootInit" "get_delegatesFocus"
///|
#cfg(target="wasm-gc")
fn shadow_root_init_get_slot_assignment_ffi(obj : JsValue) -> JsValue = "webapi_ShadowRootInit" "get_slotAssignment"
///|
#cfg(target="wasm-gc")
fn shadow_root_init_get_clonable_ffi(obj : JsValue) -> JsValue = "webapi_ShadowRootInit" "get_clonable"
///|
#cfg(target="wasm-gc")
fn shadow_root_init_get_serializable_ffi(obj : JsValue) -> JsValue = "webapi_ShadowRootInit" "get_serializable"
///|
#cfg(target="wasm-gc")
fn shadow_root_init_get_custom_element_registry_ffi(obj : JsValue) -> JsValue = "webapi_ShadowRootInit" "get_customElementRegistry"