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

///|
pub(all) enum ScrollLogicalPosition {
  Start
  Center
  End
  Nearest
} derive(Eq)

///|
pub impl Show for ScrollLogicalPosition with output(
  self : ScrollLogicalPosition,
  logger : &Logger,
) -> Unit {
  match self {
    ScrollLogicalPosition::Start => logger.write_string("Start")
    ScrollLogicalPosition::Center => logger.write_string("Center")
    ScrollLogicalPosition::End => logger.write_string("End")
    ScrollLogicalPosition::Nearest => logger.write_string("Nearest")
  }
}

///|
pub impl TJsValue for ScrollLogicalPosition with to_js(
  self : ScrollLogicalPosition,
) -> JsValue {
  match self {
    ScrollLogicalPosition::Start => TJsValue::to_js("start")
    ScrollLogicalPosition::Center => TJsValue::to_js("center")
    ScrollLogicalPosition::End => TJsValue::to_js("end")
    ScrollLogicalPosition::Nearest => TJsValue::to_js("nearest")
  }
}

///|
pub fn ScrollLogicalPosition::from(value : String) -> ScrollLogicalPosition? {
  match value {
    "start" => Some(ScrollLogicalPosition::Start)
    "center" => Some(ScrollLogicalPosition::Center)
    "end" => Some(ScrollLogicalPosition::End)
    "nearest" => Some(ScrollLogicalPosition::Nearest)
    _ => None
  }
}

///|
fn ScrollLogicalPosition::from_unchecked(
  value : String,
) -> ScrollLogicalPosition {
  match value {
    "start" => ScrollLogicalPosition::Start
    "center" => ScrollLogicalPosition::Center
    "end" => ScrollLogicalPosition::End
    "nearest" => ScrollLogicalPosition::Nearest
    _ => ScrollLogicalPosition::Start
  }
}

///|
pub fn ScrollLogicalPosition::value(self : ScrollLogicalPosition) -> String {
  match self {
    ScrollLogicalPosition::Start => "start"
    ScrollLogicalPosition::Center => "center"
    ScrollLogicalPosition::End => "end"
    ScrollLogicalPosition::Nearest => "nearest"
  }
}

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