// Do not edit. This file is generated.
// MoonBit type: URLPatternComponentResult
// Specifications: urlpattern.idl

///|
/// [URLPatternComponentResult](https://developer.mozilla.org/en-US/docs/Web/API/URLPatternComponentResult)
#external
pub type URLPatternComponentResult

///|
pub impl TJsValue for URLPatternComponentResult with to_js(
  self : URLPatternComponentResult,
) -> JsValue = "%identity"

///|
pub impl FromJsAny for URLPatternComponentResult with from_js_any(value : JsAny) -> URLPatternComponentResult = "%identity"

///|
pub fn URLPatternComponentResult::new(
  input? : String,
  groups? : JsValue,
) -> URLPatternComponentResult {
  url_pattern_component_result_ffi(opt_to_js(input), opt_to_js(groups))
}

///|
pub fn URLPatternComponentResult::empty() -> URLPatternComponentResult {
  url_pattern_component_result_empty_ffi()
}

///|
pub fn URLPatternComponentResult::input(
  self : URLPatternComponentResult,
) -> String? {
  url_pattern_component_result_get_input_ffi(TJsValue::to_js(self)).to_option_prim()
}

///|
pub fn URLPatternComponentResult::groups(
  self : URLPatternComponentResult,
) -> JsValue? {
  url_pattern_component_result_get_groups_ffi(TJsValue::to_js(self)).to_option()
}

///|
#cfg(target="js")
extern "js" fn url_pattern_component_result_ffi(
  input : JsValue,
  groups : JsValue,
) -> URLPatternComponentResult =
  #|(input, groups) => {
  #|  const obj = {};
  #|  if (input !== undefined) obj.input = input;
  #|  if (groups !== undefined) obj.groups = groups;
  #|  return obj;
  #|}

///|
#cfg(target="js")
extern "js" fn url_pattern_component_result_empty_ffi() -> URLPatternComponentResult = "() => {}"

///|
#cfg(target="js")
extern "js" fn url_pattern_component_result_get_input_ffi(
  obj : JsValue,
) -> JsValue = "(obj) => obj.input"

///|
#cfg(target="js")
extern "js" fn url_pattern_component_result_get_groups_ffi(
  obj : JsValue,
) -> JsValue = "(obj) => obj.groups"

///|
#cfg(target="wasm-gc")
fn url_pattern_component_result_ffi(
  input : JsValue,
  groups : JsValue,
) -> URLPatternComponentResult = "webapi_URLPatternComponentResult" "new"

///|
#cfg(target="wasm-gc")
fn url_pattern_component_result_empty_ffi() -> URLPatternComponentResult = "webapi_Dictionary" "empty"

///|
#cfg(target="wasm-gc")
fn url_pattern_component_result_get_input_ffi(obj : JsValue) -> JsValue = "webapi_URLPatternComponentResult" "get_input"

///|
#cfg(target="wasm-gc")
fn url_pattern_component_result_get_groups_ffi(obj : JsValue) -> JsValue = "webapi_URLPatternComponentResult" "get_groups"