-
Notifications
You must be signed in to change notification settings - Fork 24.3k
/
UIProp.java
55 lines (47 loc) · 1.42 KB
/
UIProp.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/**
* 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;
}
}
}