package com.reactnativenavigation.views.managers;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.ViewGroupManager;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.reactnativenavigation.views.sharedElementTransition.SharedElementTransition;
public class SharedElementTransitionManager extends ViewGroupManager<SharedElementTransition> {
@Override
public String getName() {
return "SharedElementTransition";
}
@Override
protected SharedElementTransition createViewInstance(ThemedReactContext reactContext) {
return new SharedElementTransition(reactContext);
}
@ReactProp(name = "sharedElementId")
public void setSharedElementId(SharedElementTransition elementTransition, String key) {
elementTransition.registerSharedElementTransition(key);
}
@ReactProp(name = "duration")
public void setDuration(SharedElementTransition view, int duration) {
view.paramsParser.setDuration(duration);
}
@ReactProp(name = "hideDuration")
public void setHideDuration(SharedElementTransition view, int duration) {
view.paramsParser.setHideDuration(duration);
}
@ReactProp(name = "showDuration")
public void setShowDuration(SharedElementTransition view, int duration) {
view.paramsParser.setShowDuration(duration);
}
@ReactProp(name = "showInterpolation")
public void setShowInterpolation(SharedElementTransition view, ReadableMap interpolation) {
view.paramsParser.setShowInterpolation(interpolation);
}
@ReactProp(name = "hideInterpolation")
public void setHideInterpolation(SharedElementTransition view, ReadableMap interpolation) {
view.paramsParser.setHideInterpolation(interpolation);
}
@ReactProp(name = "animateClipBounds")
public void setAnimateClipBounds(SharedElementTransition view, boolean animateClipBounds) {
view.paramsParser.animateClipBounds = animateClipBounds;
}
@Override
protected void onAfterUpdateTransaction(SharedElementTransition view) {
view.showTransitionParams = view.paramsParser.parseShowTransitionParams();
view.hideTransitionParams = view.paramsParser.parseHideTransitionParams();
}
@Override
public boolean needsCustomLayoutForChildren() {
return true;
}
}