// Do not edit. This file is generated.
// MoonBit type: ScrollBehavior
// Specifications: cssom-view.idl

///|
pub(all) enum ScrollBehavior {
  Auto
  Instant
  Smooth
} derive(Eq)

///|
pub impl Show for ScrollBehavior with output(
  self : ScrollBehavior,
  logger : &Logger,
) -> Unit {
  match self {
    ScrollBehavior::Auto => logger.write_string("Auto")
    ScrollBehavior::Instant => logger.write_string("Instant")
    ScrollBehavior::Smooth => logger.write_string("Smooth")
  }
}

///|
pub impl TJsValue for ScrollBehavior with to_js(self : ScrollBehavior) -> JsValue {
  match self {
    ScrollBehavior::Auto => TJsValue::to_js("auto")
    ScrollBehavior::Instant => TJsValue::to_js("instant")
    ScrollBehavior::Smooth => TJsValue::to_js("smooth")
  }
}

///|
pub fn ScrollBehavior::from(value : String) -> ScrollBehavior? {
  match value {
    "auto" => Some(ScrollBehavior::Auto)
    "instant" => Some(ScrollBehavior::Instant)
    "smooth" => Some(ScrollBehavior::Smooth)
    _ => None
  }
}

///|
fn ScrollBehavior::from_unchecked(value : String) -> ScrollBehavior {
  match value {
    "auto" => ScrollBehavior::Auto
    "instant" => ScrollBehavior::Instant
    "smooth" => ScrollBehavior::Smooth
    _ => ScrollBehavior::Auto
  }
}

///|
pub fn ScrollBehavior::value(self : ScrollBehavior) -> String {
  match self {
    ScrollBehavior::Auto => "auto"
    ScrollBehavior::Instant => "instant"
    ScrollBehavior::Smooth => "smooth"
  }
}

///|
pub impl FromJsAny for ScrollBehavior with from_js_any(value : JsAny) -> ScrollBehavior {
  ScrollBehavior::from_unchecked(value)
}