package im.shimo.react.responderview;

import android.support.annotation.Nullable;

import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.ViewGroupManager;
import com.facebook.react.uimanager.annotations.ReactProp;

import java.util.Map;
import com.facebook.react.views.view.ReactViewManager;
import com.facebook.react.views.view.ReactViewGroup;


public class RNResponderViewManager extends ReactViewManager {

    public static final String REACT_CLASS = "RNResponderView";

    @Override
    public String getName() {
        return REACT_CLASS;
    }

    @ReactProp(name = "startShouldSetResponderCondition")
    public void setStartShouldSetResponderCondition(RNResponderView view, @Nullable ReadableMap condition) {
        view.setStartShouldSetResponderCondition(condition);
    }

    @ReactProp(name = "moveShouldSetResponderCondition")
    public void setMoveShouldSetResponderCondition(RNResponderView view, @Nullable ReadableMap condition) {
        view.setMoveShouldSetResponderCondition(condition);
    }

    @ReactProp(name = "startShouldSetResponderCaptureCondition")
    public void setStartShouldSetResponderCaptureCondition(RNResponderView view, @Nullable ReadableMap condition) {
        view.setStartShouldSetResponderCaptureCondition(condition);
    }

    @ReactProp(name = "moveShouldSetResponderCaptureCondition")
    public void setMoveShouldSetResponderCaptureCondition(RNResponderView view, @Nullable ReadableMap condition) {
        view.setMoveShouldSetResponderCaptureCondition(condition);
    }


    @Override
    public RNResponderView createViewInstance(ThemedReactContext reactContext) {
        return new RNResponderView(reactContext);
    }

    @Override
    @Nullable
    public Map getExportedCustomDirectEventTypeConstants() {
        MapBuilder.Builder builder = MapBuilder.builder();
        for (EventType event : EventType.values()) {
            builder.put(event.toString(), MapBuilder.of("registrationName", event.toString()));
        }
        return builder.build();
    }
}
