// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'webview_interface.dart';

// **************************************************************************
// ExchangeableEnumGenerator
// **************************************************************************

///Class that represents the interfaces that a WebView can support.
class WebViewInterface {
  final String _value;
  final String? _nativeValue;
  const WebViewInterface._internal(this._value, this._nativeValue);
  // ignore: unused_element
  factory WebViewInterface._internalMultiPlatform(
    String value,
    Function nativeValue,
  ) => WebViewInterface._internal(value, nativeValue());
  static const ICoreWebView2 = WebViewInterface._internal(
    'ICoreWebView2',
    'ICoreWebView2',
  );
  static const ICoreWebView2CompositionController = WebViewInterface._internal(
    'ICoreWebView2CompositionController',
    'ICoreWebView2CompositionController',
  );
  static const ICoreWebView2CompositionController2 = WebViewInterface._internal(
    'ICoreWebView2CompositionController2',
    'ICoreWebView2CompositionController2',
  );
  static const ICoreWebView2CompositionController3 = WebViewInterface._internal(
    'ICoreWebView2CompositionController3',
    'ICoreWebView2CompositionController3',
  );
  static const ICoreWebView2CompositionController4 = WebViewInterface._internal(
    'ICoreWebView2CompositionController4',
    'ICoreWebView2CompositionController4',
  );
  static const ICoreWebView2Controller = WebViewInterface._internal(
    'ICoreWebView2Controller',
    'ICoreWebView2Controller',
  );
  static const ICoreWebView2Controller2 = WebViewInterface._internal(
    'ICoreWebView2Controller2',
    'ICoreWebView2Controller2',
  );
  static const ICoreWebView2Controller3 = WebViewInterface._internal(
    'ICoreWebView2Controller3',
    'ICoreWebView2Controller3',
  );
  static const ICoreWebView2Controller4 = WebViewInterface._internal(
    'ICoreWebView2Controller4',
    'ICoreWebView2Controller4',
  );
  static const ICoreWebView2Environment = WebViewInterface._internal(
    'ICoreWebView2Environment',
    'ICoreWebView2Environment',
  );
  static const ICoreWebView2Environment10 = WebViewInterface._internal(
    'ICoreWebView2Environment10',
    'ICoreWebView2Environment10',
  );
  static const ICoreWebView2Environment11 = WebViewInterface._internal(
    'ICoreWebView2Environment11',
    'ICoreWebView2Environment11',
  );
  static const ICoreWebView2Environment12 = WebViewInterface._internal(
    'ICoreWebView2Environment12',
    'ICoreWebView2Environment12',
  );
  static const ICoreWebView2Environment13 = WebViewInterface._internal(
    'ICoreWebView2Environment13',
    'ICoreWebView2Environment13',
  );
  static const ICoreWebView2Environment14 = WebViewInterface._internal(
    'ICoreWebView2Environment14',
    'ICoreWebView2Environment14',
  );
  static const ICoreWebView2Environment15 = WebViewInterface._internal(
    'ICoreWebView2Environment15',
    'ICoreWebView2Environment15',
  );
  static const ICoreWebView2Environment2 = WebViewInterface._internal(
    'ICoreWebView2Environment2',
    'ICoreWebView2Environment2',
  );
  static const ICoreWebView2Environment3 = WebViewInterface._internal(
    'ICoreWebView2Environment3',
    'ICoreWebView2Environment3',
  );
  static const ICoreWebView2Environment4 = WebViewInterface._internal(
    'ICoreWebView2Environment4',
    'ICoreWebView2Environment4',
  );
  static const ICoreWebView2Environment5 = WebViewInterface._internal(
    'ICoreWebView2Environment5',
    'ICoreWebView2Environment5',
  );
  static const ICoreWebView2Environment6 = WebViewInterface._internal(
    'ICoreWebView2Environment6',
    'ICoreWebView2Environment6',
  );
  static const ICoreWebView2Environment7 = WebViewInterface._internal(
    'ICoreWebView2Environment7',
    'ICoreWebView2Environment7',
  );
  static const ICoreWebView2Environment8 = WebViewInterface._internal(
    'ICoreWebView2Environment8',
    'ICoreWebView2Environment8',
  );
  static const ICoreWebView2Environment9 = WebViewInterface._internal(
    'ICoreWebView2Environment9',
    'ICoreWebView2Environment9',
  );
  static const ICoreWebView2Settings = WebViewInterface._internal(
    'ICoreWebView2Settings',
    'ICoreWebView2Settings',
  );
  static const ICoreWebView2Settings2 = WebViewInterface._internal(
    'ICoreWebView2Settings2',
    'ICoreWebView2Settings2',
  );
  static const ICoreWebView2Settings3 = WebViewInterface._internal(
    'ICoreWebView2Settings3',
    'ICoreWebView2Settings3',
  );
  static const ICoreWebView2Settings4 = WebViewInterface._internal(
    'ICoreWebView2Settings4',
    'ICoreWebView2Settings4',
  );
  static const ICoreWebView2Settings5 = WebViewInterface._internal(
    'ICoreWebView2Settings5',
    'ICoreWebView2Settings5',
  );
  static const ICoreWebView2Settings6 = WebViewInterface._internal(
    'ICoreWebView2Settings6',
    'ICoreWebView2Settings6',
  );
  static const ICoreWebView2Settings7 = WebViewInterface._internal(
    'ICoreWebView2Settings7',
    'ICoreWebView2Settings7',
  );
  static const ICoreWebView2Settings8 = WebViewInterface._internal(
    'ICoreWebView2Settings8',
    'ICoreWebView2Settings8',
  );
  static const ICoreWebView2Settings9 = WebViewInterface._internal(
    'ICoreWebView2Settings9',
    'ICoreWebView2Settings9',
  );
  static const ICoreWebView2_10 = WebViewInterface._internal(
    'ICoreWebView2_10',
    'ICoreWebView2_10',
  );
  static const ICoreWebView2_11 = WebViewInterface._internal(
    'ICoreWebView2_11',
    'ICoreWebView2_11',
  );
  static const ICoreWebView2_12 = WebViewInterface._internal(
    'ICoreWebView2_12',
    'ICoreWebView2_12',
  );
  static const ICoreWebView2_13 = WebViewInterface._internal(
    'ICoreWebView2_13',
    'ICoreWebView2_13',
  );
  static const ICoreWebView2_14 = WebViewInterface._internal(
    'ICoreWebView2_14',
    'ICoreWebView2_14',
  );
  static const ICoreWebView2_15 = WebViewInterface._internal(
    'ICoreWebView2_15',
    'ICoreWebView2_15',
  );
  static const ICoreWebView2_16 = WebViewInterface._internal(
    'ICoreWebView2_16',
    'ICoreWebView2_16',
  );
  static const ICoreWebView2_17 = WebViewInterface._internal(
    'ICoreWebView2_17',
    'ICoreWebView2_17',
  );
  static const ICoreWebView2_18 = WebViewInterface._internal(
    'ICoreWebView2_18',
    'ICoreWebView2_18',
  );
  static const ICoreWebView2_19 = WebViewInterface._internal(
    'ICoreWebView2_19',
    'ICoreWebView2_19',
  );
  static const ICoreWebView2_2 = WebViewInterface._internal(
    'ICoreWebView2_2',
    'ICoreWebView2_2',
  );
  static const ICoreWebView2_20 = WebViewInterface._internal(
    'ICoreWebView2_20',
    'ICoreWebView2_20',
  );
  static const ICoreWebView2_21 = WebViewInterface._internal(
    'ICoreWebView2_21',
    'ICoreWebView2_21',
  );
  static const ICoreWebView2_22 = WebViewInterface._internal(
    'ICoreWebView2_22',
    'ICoreWebView2_22',
  );
  static const ICoreWebView2_23 = WebViewInterface._internal(
    'ICoreWebView2_23',
    'ICoreWebView2_23',
  );
  static const ICoreWebView2_24 = WebViewInterface._internal(
    'ICoreWebView2_24',
    'ICoreWebView2_24',
  );
  static const ICoreWebView2_25 = WebViewInterface._internal(
    'ICoreWebView2_25',
    'ICoreWebView2_25',
  );
  static const ICoreWebView2_26 = WebViewInterface._internal(
    'ICoreWebView2_26',
    'ICoreWebView2_26',
  );
  static const ICoreWebView2_27 = WebViewInterface._internal(
    'ICoreWebView2_27',
    'ICoreWebView2_27',
  );
  static const ICoreWebView2_28 = WebViewInterface._internal(
    'ICoreWebView2_28',
    'ICoreWebView2_28',
  );
  static const ICoreWebView2_3 = WebViewInterface._internal(
    'ICoreWebView2_3',
    'ICoreWebView2_3',
  );
  static const ICoreWebView2_4 = WebViewInterface._internal(
    'ICoreWebView2_4',
    'ICoreWebView2_4',
  );
  static const ICoreWebView2_5 = WebViewInterface._internal(
    'ICoreWebView2_5',
    'ICoreWebView2_5',
  );
  static const ICoreWebView2_6 = WebViewInterface._internal(
    'ICoreWebView2_6',
    'ICoreWebView2_6',
  );
  static const ICoreWebView2_7 = WebViewInterface._internal(
    'ICoreWebView2_7',
    'ICoreWebView2_7',
  );
  static const ICoreWebView2_8 = WebViewInterface._internal(
    'ICoreWebView2_8',
    'ICoreWebView2_8',
  );
  static const ICoreWebView2_9 = WebViewInterface._internal(
    'ICoreWebView2_9',
    'ICoreWebView2_9',
  );

  ///Set of all values of [WebViewInterface].
  static final Set<WebViewInterface> values = [
    WebViewInterface.ICoreWebView2,
    WebViewInterface.ICoreWebView2CompositionController,
    WebViewInterface.ICoreWebView2CompositionController2,
    WebViewInterface.ICoreWebView2CompositionController3,
    WebViewInterface.ICoreWebView2CompositionController4,
    WebViewInterface.ICoreWebView2Controller,
    WebViewInterface.ICoreWebView2Controller2,
    WebViewInterface.ICoreWebView2Controller3,
    WebViewInterface.ICoreWebView2Controller4,
    WebViewInterface.ICoreWebView2Environment,
    WebViewInterface.ICoreWebView2Environment10,
    WebViewInterface.ICoreWebView2Environment11,
    WebViewInterface.ICoreWebView2Environment12,
    WebViewInterface.ICoreWebView2Environment13,
    WebViewInterface.ICoreWebView2Environment14,
    WebViewInterface.ICoreWebView2Environment15,
    WebViewInterface.ICoreWebView2Environment2,
    WebViewInterface.ICoreWebView2Environment3,
    WebViewInterface.ICoreWebView2Environment4,
    WebViewInterface.ICoreWebView2Environment5,
    WebViewInterface.ICoreWebView2Environment6,
    WebViewInterface.ICoreWebView2Environment7,
    WebViewInterface.ICoreWebView2Environment8,
    WebViewInterface.ICoreWebView2Environment9,
    WebViewInterface.ICoreWebView2Settings,
    WebViewInterface.ICoreWebView2Settings2,
    WebViewInterface.ICoreWebView2Settings3,
    WebViewInterface.ICoreWebView2Settings4,
    WebViewInterface.ICoreWebView2Settings5,
    WebViewInterface.ICoreWebView2Settings6,
    WebViewInterface.ICoreWebView2Settings7,
    WebViewInterface.ICoreWebView2Settings8,
    WebViewInterface.ICoreWebView2Settings9,
    WebViewInterface.ICoreWebView2_10,
    WebViewInterface.ICoreWebView2_11,
    WebViewInterface.ICoreWebView2_12,
    WebViewInterface.ICoreWebView2_13,
    WebViewInterface.ICoreWebView2_14,
    WebViewInterface.ICoreWebView2_15,
    WebViewInterface.ICoreWebView2_16,
    WebViewInterface.ICoreWebView2_17,
    WebViewInterface.ICoreWebView2_18,
    WebViewInterface.ICoreWebView2_19,
    WebViewInterface.ICoreWebView2_2,
    WebViewInterface.ICoreWebView2_20,
    WebViewInterface.ICoreWebView2_21,
    WebViewInterface.ICoreWebView2_22,
    WebViewInterface.ICoreWebView2_23,
    WebViewInterface.ICoreWebView2_24,
    WebViewInterface.ICoreWebView2_25,
    WebViewInterface.ICoreWebView2_26,
    WebViewInterface.ICoreWebView2_27,
    WebViewInterface.ICoreWebView2_28,
    WebViewInterface.ICoreWebView2_3,
    WebViewInterface.ICoreWebView2_4,
    WebViewInterface.ICoreWebView2_5,
    WebViewInterface.ICoreWebView2_6,
    WebViewInterface.ICoreWebView2_7,
    WebViewInterface.ICoreWebView2_8,
    WebViewInterface.ICoreWebView2_9,
  ].toSet();

  ///Gets a possible [WebViewInterface] instance from [String] value.
  static WebViewInterface? fromValue(String? value) {
    if (value != null) {
      try {
        return WebViewInterface.values.firstWhere(
          (element) => element.toValue() == value,
        );
      } catch (e) {
        return null;
      }
    }
    return null;
  }

  ///Gets a possible [WebViewInterface] instance from a native value.
  static WebViewInterface? fromNativeValue(String? value) {
    if (value != null) {
      try {
        return WebViewInterface.values.firstWhere(
          (element) => element.toNativeValue() == value,
        );
      } catch (e) {
        return null;
      }
    }
    return null;
  }

  /// Gets a possible [WebViewInterface] instance value with name [name].
  ///
  /// Goes through [WebViewInterface.values] looking for a value with
  /// name [name], as reported by [WebViewInterface.name].
  /// Returns the first value with the given name, otherwise `null`.
  static WebViewInterface? byName(String? name) {
    if (name != null) {
      try {
        return WebViewInterface.values.firstWhere(
          (element) => element.name() == name,
        );
      } catch (e) {
        return null;
      }
    }
    return null;
  }

  /// Creates a map from the names of [WebViewInterface] values to the values.
  ///
  /// The collection that this method is called on is expected to have
  /// values with distinct names, like the `values` list of an enum class.
  /// Only one value for each name can occur in the created map,
  /// so if two or more values have the same name (either being the
  /// same value, or being values of different enum type), at most one of
  /// them will be represented in the returned map.
  static Map<String, WebViewInterface> asNameMap() =>
      <String, WebViewInterface>{
        for (final value in WebViewInterface.values) value.name(): value,
      };

  ///Gets [String] value.
  String toValue() => _value;

  ///Gets [String] native value if supported by the current platform, otherwise `null`.
  String? toNativeValue() => _nativeValue;

  ///Gets the name of the value.
  String name() {
    switch (_value) {
      case 'ICoreWebView2':
        return 'ICoreWebView2';
      case 'ICoreWebView2CompositionController':
        return 'ICoreWebView2CompositionController';
      case 'ICoreWebView2CompositionController2':
        return 'ICoreWebView2CompositionController2';
      case 'ICoreWebView2CompositionController3':
        return 'ICoreWebView2CompositionController3';
      case 'ICoreWebView2CompositionController4':
        return 'ICoreWebView2CompositionController4';
      case 'ICoreWebView2Controller':
        return 'ICoreWebView2Controller';
      case 'ICoreWebView2Controller2':
        return 'ICoreWebView2Controller2';
      case 'ICoreWebView2Controller3':
        return 'ICoreWebView2Controller3';
      case 'ICoreWebView2Controller4':
        return 'ICoreWebView2Controller4';
      case 'ICoreWebView2Environment':
        return 'ICoreWebView2Environment';
      case 'ICoreWebView2Environment10':
        return 'ICoreWebView2Environment10';
      case 'ICoreWebView2Environment11':
        return 'ICoreWebView2Environment11';
      case 'ICoreWebView2Environment12':
        return 'ICoreWebView2Environment12';
      case 'ICoreWebView2Environment13':
        return 'ICoreWebView2Environment13';
      case 'ICoreWebView2Environment14':
        return 'ICoreWebView2Environment14';
      case 'ICoreWebView2Environment15':
        return 'ICoreWebView2Environment15';
      case 'ICoreWebView2Environment2':
        return 'ICoreWebView2Environment2';
      case 'ICoreWebView2Environment3':
        return 'ICoreWebView2Environment3';
      case 'ICoreWebView2Environment4':
        return 'ICoreWebView2Environment4';
      case 'ICoreWebView2Environment5':
        return 'ICoreWebView2Environment5';
      case 'ICoreWebView2Environment6':
        return 'ICoreWebView2Environment6';
      case 'ICoreWebView2Environment7':
        return 'ICoreWebView2Environment7';
      case 'ICoreWebView2Environment8':
        return 'ICoreWebView2Environment8';
      case 'ICoreWebView2Environment9':
        return 'ICoreWebView2Environment9';
      case 'ICoreWebView2Settings':
        return 'ICoreWebView2Settings';
      case 'ICoreWebView2Settings2':
        return 'ICoreWebView2Settings2';
      case 'ICoreWebView2Settings3':
        return 'ICoreWebView2Settings3';
      case 'ICoreWebView2Settings4':
        return 'ICoreWebView2Settings4';
      case 'ICoreWebView2Settings5':
        return 'ICoreWebView2Settings5';
      case 'ICoreWebView2Settings6':
        return 'ICoreWebView2Settings6';
      case 'ICoreWebView2Settings7':
        return 'ICoreWebView2Settings7';
      case 'ICoreWebView2Settings8':
        return 'ICoreWebView2Settings8';
      case 'ICoreWebView2Settings9':
        return 'ICoreWebView2Settings9';
      case 'ICoreWebView2_10':
        return 'ICoreWebView2_10';
      case 'ICoreWebView2_11':
        return 'ICoreWebView2_11';
      case 'ICoreWebView2_12':
        return 'ICoreWebView2_12';
      case 'ICoreWebView2_13':
        return 'ICoreWebView2_13';
      case 'ICoreWebView2_14':
        return 'ICoreWebView2_14';
      case 'ICoreWebView2_15':
        return 'ICoreWebView2_15';
      case 'ICoreWebView2_16':
        return 'ICoreWebView2_16';
      case 'ICoreWebView2_17':
        return 'ICoreWebView2_17';
      case 'ICoreWebView2_18':
        return 'ICoreWebView2_18';
      case 'ICoreWebView2_19':
        return 'ICoreWebView2_19';
      case 'ICoreWebView2_2':
        return 'ICoreWebView2_2';
      case 'ICoreWebView2_20':
        return 'ICoreWebView2_20';
      case 'ICoreWebView2_21':
        return 'ICoreWebView2_21';
      case 'ICoreWebView2_22':
        return 'ICoreWebView2_22';
      case 'ICoreWebView2_23':
        return 'ICoreWebView2_23';
      case 'ICoreWebView2_24':
        return 'ICoreWebView2_24';
      case 'ICoreWebView2_25':
        return 'ICoreWebView2_25';
      case 'ICoreWebView2_26':
        return 'ICoreWebView2_26';
      case 'ICoreWebView2_27':
        return 'ICoreWebView2_27';
      case 'ICoreWebView2_28':
        return 'ICoreWebView2_28';
      case 'ICoreWebView2_3':
        return 'ICoreWebView2_3';
      case 'ICoreWebView2_4':
        return 'ICoreWebView2_4';
      case 'ICoreWebView2_5':
        return 'ICoreWebView2_5';
      case 'ICoreWebView2_6':
        return 'ICoreWebView2_6';
      case 'ICoreWebView2_7':
        return 'ICoreWebView2_7';
      case 'ICoreWebView2_8':
        return 'ICoreWebView2_8';
      case 'ICoreWebView2_9':
        return 'ICoreWebView2_9';
    }
    return _value.toString();
  }

  @override
  int get hashCode => _value.hashCode;

  @override
  bool operator ==(value) => value == _value;

  ///Checks if the value is supported by the [defaultTargetPlatform].
  bool isSupported() {
    return _nativeValue != null;
  }

  @override
  String toString() {
    return _value;
  }
}
