// Generated from WebIDL - DO NOT EDIT
// Source: @webref/idl/fullscreen

///|
/// FullscreenNavigationUI enum
pub(all) enum FullscreenNavigationUI {
  Auto
  Show
  Hide
} derive(Eq, Show)

///|
/// Convert to string value
pub fn FullscreenNavigationUI::to_string(
  self : FullscreenNavigationUI,
) -> String {
  match self {
    FullscreenNavigationUI::Auto => "auto"
    FullscreenNavigationUI::Show => "show"
    FullscreenNavigationUI::Hide => "hide"
  }
}

///|
/// Parse from string value
pub fn FullscreenNavigationUI::from_string(
  s : String,
) -> FullscreenNavigationUI? {
  match s {
    "auto" => Some(FullscreenNavigationUI::Auto)
    "show" => Some(FullscreenNavigationUI::Show)
    "hide" => Some(FullscreenNavigationUI::Hide)
    _ => None
  }
}

///|
/// FullscreenOptions dictionary
pub(all) struct FullscreenOptions {
  navigationUI : FullscreenNavigationUI?
  screen : ScreenDetailed?
}

///|
/// Create a new FullscreenOptions with default values
pub fn FullscreenOptions::default() -> FullscreenOptions {
  FullscreenOptions::{ navigationUI: None, screen: None }
}

///|
extern "js" fn FullscreenOptions::to_js_ffi(
  self : FullscreenOptions,
) -> JsValue =
  #| (self) => ({
  #|   navigationUI: ((() => { const v = self.navigationUI; if (v === undefined) return undefined; return ['auto', 'show', 'hide'][v]; })()),
  #|   screen: ((() => { const v = self.screen; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
  #| })

///|
/// Convert to JsValue
pub fn FullscreenOptions::to_js(self : FullscreenOptions) -> JsValue {
  FullscreenOptions::to_js_ffi(self)
}

///|
extern "js" fn FullscreenOptions::from_js_ffi(
  value : JsValue,
) -> FullscreenOptions =
  #| (v) => ({
  #|   navigationUI: (v.navigationUI === undefined ? undefined : ['auto', 'show', 'hide'].indexOf(v.navigationUI)),
  #|   screen: (v.screen === undefined ? { $tag: 0 } : { $tag: 1, _0: v.screen })
  #| })

///|
/// Convert from JsValue
pub fn FullscreenOptions::from_js(value : JsValue) -> FullscreenOptions {
  FullscreenOptions::from_js_ffi(value)
}