react-native-fast-image 9.0.2 → 9.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,10 +23,12 @@ import com.facebook.react.uimanager.SimpleViewManager;
23
23
  import com.facebook.react.bridge.ReactContext;
24
24
  import com.facebook.react.uimanager.ThemedReactContext;
25
25
  import com.facebook.react.uimanager.PixelUtil;
26
+ import com.facebook.react.uimanager.PointerEvents;
26
27
  import com.facebook.react.uimanager.annotations.ReactProp;
27
28
  import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper;
28
29
 
29
30
  import java.util.List;
31
+ import java.util.Locale;
30
32
  import java.util.Map;
31
33
  import java.util.WeakHashMap;
32
34
 
@@ -82,6 +84,16 @@ class FastImageViewManager extends SimpleViewManager<FastImageViewWithUrl> imple
82
84
  .getResourceDrawable(view.getContext(), source));
83
85
  }
84
86
 
87
+ // React Native's View manager handles pointerEvents; a SimpleViewManager
88
+ // doesn't. Parsed here: PointerEvents.parsePointerEvents isn't in every
89
+ // supported React Native version.
90
+ @ReactProp(name = "pointerEvents")
91
+ public void setPointerEvents(FastImageViewWithUrl view, @Nullable String pointerEvents) {
92
+ view.setPointerEvents(pointerEvents == null
93
+ ? PointerEvents.AUTO
94
+ : PointerEvents.valueOf(pointerEvents.toUpperCase(Locale.US).replace('-', '_')));
95
+ }
96
+
85
97
  @ReactProp(name = "tintColor", customType = "Color")
86
98
  public void setTintColor(FastImageViewWithUrl view, @Nullable Integer color) {
87
99
  if (color == null) {
@@ -43,6 +43,8 @@ import com.facebook.react.bridge.ReadableArray;
43
43
  import com.facebook.react.bridge.ReadableMap;
44
44
  import com.facebook.react.bridge.WritableMap;
45
45
  import com.facebook.react.bridge.WritableNativeMap;
46
+ import com.facebook.react.uimanager.PointerEvents;
47
+ import com.facebook.react.uimanager.ReactPointerEventsView;
46
48
 
47
49
  import java.util.ArrayList;
48
50
  import java.util.Collections;
@@ -51,7 +53,7 @@ import java.util.Map;
51
53
 
52
54
  import javax.annotation.Nonnull;
53
55
 
54
- class FastImageViewWithUrl extends AppCompatImageView {
56
+ class FastImageViewWithUrl extends AppCompatImageView implements ReactPointerEventsView {
55
57
  private boolean mNeedsReload = false;
56
58
  private ReadableMap mSource = null;
57
59
  private Drawable mDefaultSource = null;
@@ -66,6 +68,20 @@ class FastImageViewWithUrl extends AppCompatImageView {
66
68
  this.requestManager = requestManager;
67
69
  }
68
70
 
71
+ // FastImage sends "none" when it has pointerEvents="box-none" (the image
72
+ // is part of the box, which doesn't take touches). React Native's touch
73
+ // handling only reads pointerEvents from a ReactPointerEventsView.
74
+ private PointerEvents mPointerEvents = PointerEvents.AUTO;
75
+
76
+ @Override
77
+ public PointerEvents getPointerEvents() {
78
+ return mPointerEvents;
79
+ }
80
+
81
+ void setPointerEvents(PointerEvents pointerEvents) {
82
+ mPointerEvents = pointerEvents;
83
+ }
84
+
69
85
  public void setSource(@Nullable ReadableMap source) {
70
86
  mNeedsReload = true;
71
87
  mPropSource = source;
package/dist/index.cjs.js CHANGED
@@ -111,13 +111,31 @@ function withoutCache(source) {
111
111
  const { cache: _cache, ...rest } = source || {};
112
112
  return rest;
113
113
  }
114
- function FastImageBase({ source, defaultSource, tintColor, onLoadStart, onProgress, onLoad, onError, onLoadEnd, style, fallback, children, resizeMode = "cover", loop, transition, forwardedRef, onLayout, pointerEvents, ...viewProps }) {
114
+ function FastImageBase({ source, defaultSource, tintColor, onLoadStart, onProgress, onLoad, onError, onLoadEnd, style, fallback, children, resizeMode = "cover", loop, transition, forwardedRef, onLayout, pointerEvents, hitSlop, onStartShouldSetResponder, onStartShouldSetResponderCapture, onMoveShouldSetResponder, onMoveShouldSetResponderCapture, onResponderGrant, onResponderReject, onResponderStart, onResponderMove, onResponderEnd, onResponderRelease, onResponderTerminationRequest, onResponderTerminate, onTouchStart, onTouchMove, onTouchEnd, onTouchCancel, onTouchEndCapture, ...viewProps }) {
115
115
  const { onClick, ...props } = viewProps;
116
116
  const fallbackResult = (0, react.useRef)(void 0);
117
117
  const wrapperProps = {
118
118
  onLayout,
119
119
  onClick,
120
- pointerEvents
120
+ pointerEvents,
121
+ hitSlop,
122
+ onStartShouldSetResponder,
123
+ onStartShouldSetResponderCapture,
124
+ onMoveShouldSetResponder,
125
+ onMoveShouldSetResponderCapture,
126
+ onResponderGrant,
127
+ onResponderReject,
128
+ onResponderStart,
129
+ onResponderMove,
130
+ onResponderEnd,
131
+ onResponderRelease,
132
+ onResponderTerminationRequest,
133
+ onResponderTerminate,
134
+ onTouchStart,
135
+ onTouchMove,
136
+ onTouchEnd,
137
+ onTouchCancel,
138
+ onTouchEndCapture
121
139
  };
122
140
  const imageProps = {
123
141
  ...props,
package/dist/index.js CHANGED
@@ -84,13 +84,31 @@ function withoutCache(source) {
84
84
  const { cache: _cache, ...rest } = source || {};
85
85
  return rest;
86
86
  }
87
- function FastImageBase({ source, defaultSource, tintColor, onLoadStart, onProgress, onLoad, onError, onLoadEnd, style, fallback, children, resizeMode = "cover", loop, transition, forwardedRef, onLayout, pointerEvents, ...viewProps }) {
87
+ function FastImageBase({ source, defaultSource, tintColor, onLoadStart, onProgress, onLoad, onError, onLoadEnd, style, fallback, children, resizeMode = "cover", loop, transition, forwardedRef, onLayout, pointerEvents, hitSlop, onStartShouldSetResponder, onStartShouldSetResponderCapture, onMoveShouldSetResponder, onMoveShouldSetResponderCapture, onResponderGrant, onResponderReject, onResponderStart, onResponderMove, onResponderEnd, onResponderRelease, onResponderTerminationRequest, onResponderTerminate, onTouchStart, onTouchMove, onTouchEnd, onTouchCancel, onTouchEndCapture, ...viewProps }) {
88
88
  const { onClick, ...props } = viewProps;
89
89
  const fallbackResult = useRef(void 0);
90
90
  const wrapperProps = {
91
91
  onLayout,
92
92
  onClick,
93
- pointerEvents
93
+ pointerEvents,
94
+ hitSlop,
95
+ onStartShouldSetResponder,
96
+ onStartShouldSetResponderCapture,
97
+ onMoveShouldSetResponder,
98
+ onMoveShouldSetResponderCapture,
99
+ onResponderGrant,
100
+ onResponderReject,
101
+ onResponderStart,
102
+ onResponderMove,
103
+ onResponderEnd,
104
+ onResponderRelease,
105
+ onResponderTerminationRequest,
106
+ onResponderTerminate,
107
+ onTouchStart,
108
+ onTouchMove,
109
+ onTouchEnd,
110
+ onTouchCancel,
111
+ onTouchEndCapture
94
112
  };
95
113
  const imageProps = {
96
114
  ...props,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-fast-image",
3
- "version": "9.0.2",
3
+ "version": "9.0.3",
4
4
  "description": "FastImage, performant React Native image component.",
5
5
  "keywords": [
6
6
  "cache",