/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.react.uimanager;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Annotation which is used to mark native UI properties that are exposed to
* JS. {@link ViewManager#getNativeProps} traverses the fields of its
* subclasses and extracts the {@code UIProp} annotation data to generate the
* {@code NativeProps} map. Example:
*
* {@code
* @UIProp(UIProp.Type.BOOLEAN) public static final String PROP_FOO = "foo";
* @UIProp(UIProp.Type.STRING) public static final String PROP_BAR = "bar";
* }
*
* TODO(krzysztof): Kill this class once @ReactProp refactoring is done
*/
@Target(ElementType.FIELD)
@Retention(RUNTIME)
public @interface UIProp {
Type value();
public static enum Type {
BOOLEAN("boolean"),
NUMBER("number"),
STRING("String"),
MAP("Map"),
ARRAY("Array"),
COLOR("Color");
private final String mType;
Type(String type) {
mType = type;
}
@Override
public String toString() {
return mType;
}
}
}