/**
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
*
* Do not edit this file as changes may cause incorrect behavior and will be lost
* once the code is regenerated.
*
* @generated by codegen project: GeneratePropsJavaDelegate.js
*/

package com.facebook.react.viewmanagers;

import android.view.View;
import androidx.annotation.Nullable;
import com.facebook.react.bridge.ColorPropConverter;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.uimanager.BaseViewManager;
import com.facebook.react.uimanager.BaseViewManagerDelegate;
import com.facebook.react.uimanager.LayoutShadowNode;

@SuppressWarnings("deprecation")
public class ScanbotDocumentScannerViewManagerDelegate<T extends View, U extends BaseViewManager<T, ? extends LayoutShadowNode> & ScanbotDocumentScannerViewManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
  public ScanbotDocumentScannerViewManagerDelegate(U viewManager) {
    super(viewManager);
  }
  @Override
  public void setProperty(T view, String propName, @Nullable Object value) {
    switch (propName) {
      case "flashEnabled":
        mViewManager.setFlashEnabled(view, value == null ? false : (boolean) value);
        break;
      case "hardwareButtonsEnabled":
        mViewManager.setHardwareButtonsEnabled(view, value == null ? true : (boolean) value);
        break;
      case "detectDocumentAfterSnap":
        mViewManager.setDetectDocumentAfterSnap(view, value == null ? true : (boolean) value);
        break;
      case "acceptedAngleScore":
        mViewManager.setAcceptedAngleScore(view, value == null ? 75f : ((Double) value).doubleValue());
        break;
      case "acceptedSizeScore":
        mViewManager.setAcceptedSizeScore(view, value == null ? 80f : ((Double) value).doubleValue());
        break;
      case "acceptedBrightnessThreshold":
        mViewManager.setAcceptedBrightnessThreshold(view, value == null ? 0f : ((Double) value).doubleValue());
        break;
      case "acceptedAspectRatioScore":
        mViewManager.setAcceptedAspectRatioScore(view, value == null ? 85f : ((Double) value).doubleValue());
        break;
      case "requiredAspectRatios":
        mViewManager.setRequiredAspectRatios(view, (ReadableArray) value);
        break;
      case "ignoreOrientationMismatch":
        mViewManager.setIgnoreOrientationMismatch(view, value == null ? false : (boolean) value);
        break;
      case "partiallyVisibleDocumentConfiguration":
        mViewManager.setPartiallyVisibleDocumentConfiguration(view, (ReadableMap) value);
        break;
      case "autoSnappingEnabled":
        mViewManager.setAutoSnappingEnabled(view, value == null ? true : (boolean) value);
        break;
      case "autoSnappingSensitivity":
        mViewManager.setAutoSnappingSensitivity(view, value == null ? 0.66f : ((Double) value).doubleValue());
        break;
      case "autoSnappingDelay":
        mViewManager.setAutoSnappingDelay(view, value == null ? 1f : ((Double) value).doubleValue());
        break;
      case "cameraModule":
        mViewManager.setCameraModule(view, value == null ? "BACK" : (String) value);
        break;
      case "cameraPreviewMode":
        mViewManager.setCameraPreviewMode(view, value == null ? "FILL_IN" : (String) value);
        break;
      case "photoQualityPrioritization":
        mViewManager.setPhotoQualityPrioritization(view, value == null ? "BALANCED" : (String) value);
        break;
      case "touchToFocusEnabled":
        mViewManager.setTouchToFocusEnabled(view, value == null ? true : (boolean) value);
        break;
      case "finderEnabled":
        mViewManager.setFinderEnabled(view, value == null ? false : (boolean) value);
        break;
      case "finderLineColor":
        mViewManager.setFinderLineColor(view, ColorPropConverter.getColor(value, view.getContext()));
        break;
      case "finderLineWidth":
        mViewManager.setFinderLineWidth(view, value == null ? 2f : ((Double) value).doubleValue());
        break;
      case "finderOverlayColor":
        mViewManager.setFinderOverlayColor(view, ColorPropConverter.getColor(value, view.getContext()));
        break;
      case "finderCornerRadius":
        mViewManager.setFinderCornerRadius(view, value == null ? 10f : ((Double) value).doubleValue());
        break;
      case "finderMinimumPadding":
        mViewManager.setFinderMinimumPadding(view, value == null ? 20f : ((Double) value).doubleValue());
        break;
      case "finderAspectRatio":
        mViewManager.setFinderAspectRatio(view, (ReadableMap) value);
        break;
      case "polygonEnabled":
        mViewManager.setPolygonEnabled(view, value == null ? true : (boolean) value);
        break;
      case "polygonBackgroundColor":
        mViewManager.setPolygonBackgroundColor(view, ColorPropConverter.getColor(value, view.getContext()));
        break;
      case "polygonBackgroundColorOK":
        mViewManager.setPolygonBackgroundColorOK(view, ColorPropConverter.getColor(value, view.getContext()));
        break;
      case "polygonColor":
        mViewManager.setPolygonColor(view, ColorPropConverter.getColor(value, view.getContext()));
        break;
      case "polygonColorOK":
        mViewManager.setPolygonColorOK(view, ColorPropConverter.getColor(value, view.getContext()));
        break;
      case "polygonLineWidth":
        mViewManager.setPolygonLineWidth(view, value == null ? 3f : ((Double) value).doubleValue());
        break;
      case "polygonCornerRadius":
        mViewManager.setPolygonCornerRadius(view, value == null ? 8f : ((Double) value).doubleValue());
        break;
      case "polygonAutoSnapProgressColor":
        mViewManager.setPolygonAutoSnapProgressColor(view, ColorPropConverter.getColor(value, view.getContext()));
        break;
      case "polygonAutoSnapProgressLineWidth":
        mViewManager.setPolygonAutoSnapProgressLineWidth(view, value == null ? 5f : ((Double) value).doubleValue());
        break;
      case "polygonAutoSnapProgressEnabled":
        mViewManager.setPolygonAutoSnapProgressEnabled(view, value == null ? true : (boolean) value);
        break;
      default:
        super.setProperty(view, propName, value);
    }
  }

  @Override
  public void receiveCommand(T view, String commandName, @Nullable ReadableArray args) {
    switch (commandName) {
      case "freezeCamera":
        mViewManager.freezeCamera(view);
        break;
      case "unfreezeCamera":
        mViewManager.unfreezeCamera(view);
        break;
      case "snapDocument":
        mViewManager.snapDocument(view, args.getBoolean(0));
        break;
    }
  }
}
