///
/// TargetStabilizationMode.swift
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

/**
 * Represents the JS union `TargetStabilizationMode`, backed by a C++ enum.
 */
public typealias TargetStabilizationMode = margelo.nitro.camera.TargetStabilizationMode

public extension TargetStabilizationMode {
  /**
   * Get a TargetStabilizationMode for the given String value, or
   * return `nil` if the given value was invalid/unknown.
   */
  init?(fromString string: String) {
    switch string {
      case "off":
        self = .off
      case "auto":
        self = .auto
      case "standard":
        self = .standard
      case "cinematic":
        self = .cinematic
      case "cinematic-extended":
        self = .cinematicExtended
      case "preview-optimized":
        self = .previewOptimized
      case "cinematic-extended-enhanced":
        self = .cinematicExtendedEnhanced
      case "low-latency":
        self = .lowLatency
      default:
        return nil
    }
  }

  /**
   * Get the String value this TargetStabilizationMode represents.
   */
  var stringValue: String {
    switch self {
      case .off:
        return "off"
      case .auto:
        return "auto"
      case .standard:
        return "standard"
      case .cinematic:
        return "cinematic"
      case .cinematicExtended:
        return "cinematic-extended"
      case .previewOptimized:
        return "preview-optimized"
      case .cinematicExtendedEnhanced:
        return "cinematic-extended-enhanced"
      case .lowLatency:
        return "low-latency"
    }
  }
}
