@office-iss/react-native-win32 0.68.0 → 0.69.0-preview.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.
Files changed (183) hide show
  1. package/.eslintrc.js +1 -0
  2. package/.flowconfig +1 -3
  3. package/CHANGELOG.json +386 -32
  4. package/CHANGELOG.md +166 -19
  5. package/IntegrationTests/BUCK +4 -1
  6. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +7 -0
  7. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  8. package/Libraries/Alert/Alert.win32.js +1 -1
  9. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  10. package/Libraries/Animated/NativeAnimatedHelper.js +55 -9
  11. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  12. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  13. package/Libraries/Animated/animations/TimingAnimation.js +6 -11
  14. package/Libraries/Animated/createAnimatedComponent.js +2 -2
  15. package/Libraries/Animated/nodes/AnimatedColor.js +95 -29
  16. package/Libraries/Animated/nodes/AnimatedInterpolation.js +19 -22
  17. package/Libraries/Animated/nodes/AnimatedNode.js +2 -2
  18. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  19. package/Libraries/AppState/AppState.js +1 -1
  20. package/Libraries/Blob/URL.js +7 -1
  21. package/Libraries/Components/Button.js +3 -0
  22. package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +5 -0
  23. package/Libraries/Components/Pressable/Pressable.js +3 -3
  24. package/Libraries/Components/Pressable/Pressable.win32.js +3 -3
  25. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +47 -38
  26. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +15 -7
  27. package/Libraries/Components/ScrollView/ScrollView.js +1 -1
  28. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -3
  29. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -1
  30. package/Libraries/Components/Slider/Slider.js +0 -2
  31. package/Libraries/Components/Slider/SliderNativeComponent.js +0 -1
  32. package/Libraries/Components/StatusBar/StatusBar.js +6 -1
  33. package/Libraries/Components/Switch/Switch.js +11 -1
  34. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +114 -109
  35. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +17 -9
  36. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +13 -5
  37. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
  38. package/Libraries/Components/TextInput/TextInput.js +1 -8
  39. package/Libraries/Components/TextInput/TextInputState.js +10 -2
  40. package/Libraries/Components/TextInput/TextInputState.win32.js +10 -2
  41. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  42. package/Libraries/Components/Touchable/TouchableBounce.js +1 -0
  43. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -0
  44. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -0
  45. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -1
  46. package/Libraries/Components/Touchable/TouchableWin32.Props.d.ts +3 -1
  47. package/Libraries/Components/Touchable/TouchableWin32.Props.js.map +1 -1
  48. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -0
  49. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  50. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
  51. package/Libraries/Components/View/View.win32.js +33 -1
  52. package/Libraries/Components/View/ViewNativeComponent.js +68 -8
  53. package/Libraries/Components/View/ViewPropTypes.js +36 -4
  54. package/Libraries/Components/View/ViewPropTypes.win32.js +36 -4
  55. package/Libraries/Components/View/ViewWin32.Props.d.ts +1 -1
  56. package/Libraries/Components/View/ViewWin32.Props.js.map +1 -1
  57. package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
  58. package/Libraries/Core/ExceptionsManager.js +1 -1
  59. package/Libraries/Core/RawEventEmitter.js +38 -0
  60. package/Libraries/Core/ReactNativeVersion.js +2 -2
  61. package/Libraries/Core/polyfillPromise.js +32 -0
  62. package/Libraries/Core/setUpReactDevTools.js +3 -2
  63. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  64. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
  65. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -3
  66. package/Libraries/Events/CustomEvent.js +32 -0
  67. package/Libraries/Events/EventPolyfill.js +239 -0
  68. package/Libraries/Image/Image.android.js +0 -6
  69. package/Libraries/Image/Image.ios.js +0 -6
  70. package/Libraries/Image/Image.win32.js +2 -8
  71. package/Libraries/Image/ImageViewNativeComponent.js +18 -3
  72. package/Libraries/Image/TextInlineImageNativeComponent.js +23 -15
  73. package/Libraries/Image/resolveAssetSource.win32.js +1 -1
  74. package/Libraries/Inspector/Inspector.js +2 -4
  75. package/Libraries/Inspector/Inspector.win32.js +7 -9
  76. package/Libraries/Interaction/BridgeSpyStallHandler.js +4 -3
  77. package/Libraries/Interaction/InteractionManager.js +1 -12
  78. package/Libraries/Interaction/TaskQueue.js +5 -4
  79. package/Libraries/LayoutAnimation/LayoutAnimation.js +13 -0
  80. package/Libraries/Linking/Linking.js +1 -1
  81. package/Libraries/Lists/FlatList.js +27 -6
  82. package/Libraries/Lists/VirtualizedList.js +71 -55
  83. package/Libraries/Lists/VirtualizedListContext.js +7 -3
  84. package/Libraries/Lists/VirtualizedSectionList.js +2 -2
  85. package/Libraries/Lists/__tests__/{FillRateHelper-test.windows.js → FillRateHelper-test.js} +2 -2
  86. package/Libraries/Lists/__tests__/{FlatList-test.windows.js → FlatList-test.js} +2 -2
  87. package/Libraries/Lists/__tests__/{SectionList-test.windows.js → SectionList-test.js} +14 -14
  88. package/Libraries/Lists/__tests__/{VirtualizeUtils-test.windows.js → VirtualizeUtils-test.js} +3 -3
  89. package/Libraries/Lists/__tests__/{VirtualizedList-test.windows.js → VirtualizedList-test.js} +92 -43
  90. package/Libraries/Lists/__tests__/{VirtualizedSectionList-test.windows.js → VirtualizedSectionList-test.js} +16 -14
  91. package/Libraries/LogBox/Data/LogBoxData.js +2 -2
  92. package/Libraries/LogBox/Data/LogBoxLog.js +1 -1
  93. package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
  94. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  95. package/Libraries/LogBox/LogBox.js +2 -21
  96. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -0
  97. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +2 -1
  98. package/Libraries/NativeComponent/BaseViewConfig.android.js +295 -0
  99. package/Libraries/NativeComponent/BaseViewConfig.ios.js +333 -0
  100. package/Libraries/NativeComponent/BaseViewConfig.win32.js +334 -0
  101. package/Libraries/NativeComponent/NativeComponentRegistry.js +0 -2
  102. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +24 -0
  103. package/Libraries/NativeComponent/StaticViewConfigValidator.js +7 -42
  104. package/Libraries/NativeComponent/ViewConfig.js +4 -4
  105. package/Libraries/NativeComponent/ViewConfigIgnore.js +54 -0
  106. package/Libraries/Network/FormData.js +7 -1
  107. package/Libraries/Network/RCTNetworking.win32.js +1 -1
  108. package/Libraries/Pressability/Pressability.js +115 -46
  109. package/Libraries/Pressability/Pressability.win32.js +174 -69
  110. package/Libraries/Pressability/PressabilityDebug.js +5 -9
  111. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  112. package/Libraries/ReactNative/AppContainer.js +1 -1
  113. package/Libraries/ReactNative/{DummyUIManager.js → BridgelessUIManager.js} +62 -40
  114. package/Libraries/ReactNative/PaperUIManager.win32.js +5 -5
  115. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +39 -0
  116. package/Libraries/ReactNative/UIManager.js +2 -3
  117. package/Libraries/ReactNative/renderApplication.js +4 -0
  118. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -0
  119. package/Libraries/Renderer/implementations/ReactFabric-dev.js +5908 -4906
  120. package/Libraries/Renderer/implementations/ReactFabric-prod.js +2100 -1918
  121. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2567 -2352
  122. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5610 -4844
  123. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1710 -1556
  124. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1830 -1639
  125. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -1
  126. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -1
  127. package/Libraries/StyleSheet/EdgeInsetsPropType.js +4 -1
  128. package/Libraries/StyleSheet/StyleSheetTypes.js +59 -66
  129. package/Libraries/StyleSheet/normalizeColor.js +1 -1
  130. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
  131. package/Libraries/StyleSheet/private/_TransformStyle.js +53 -0
  132. package/Libraries/Text/Text.js +13 -7
  133. package/Libraries/Text/TextNativeComponent.js +2 -0
  134. package/Libraries/Text/TextNativeComponent.win32.js +2 -0
  135. package/Libraries/Text/TextProps.js +10 -0
  136. package/Libraries/Types/CoreEventTypes.js +13 -1
  137. package/Libraries/Types/CoreEventTypes.win32.js +26 -1
  138. package/Libraries/Utilities/Appearance.js +0 -8
  139. package/Libraries/Utilities/HMRClient.js +1 -1
  140. package/Libraries/Utilities/ReactNativeTestTools.js +1 -0
  141. package/Libraries/Utilities/codegenNativeComponent.js +16 -6
  142. package/Libraries/Utilities/stringifySafe.js +4 -1
  143. package/Libraries/Utilities/useColorScheme.js +9 -15
  144. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +3 -3
  145. package/Libraries/WebSocket/WebSocket.js +1 -1
  146. package/Libraries/vendor/emitter/_EmitterSubscription.js +1 -1
  147. package/Libraries/vendor/emitter/_EventEmitter.js +1 -1
  148. package/Libraries/vendor/emitter/_EventSubscription.js +1 -1
  149. package/flow/{use-subscription.js → use-sync-external-store.js} +4 -4
  150. package/index.js +30 -25
  151. package/index.win32.js +30 -25
  152. package/jest/preprocessor.js +24 -107
  153. package/jest/preprocessor_DO_NOT_USE.js +122 -0
  154. package/metro.config.js +3 -47
  155. package/overrides.json +39 -46
  156. package/package.json +32 -29
  157. package/rntypes/index.d.ts +19 -7
  158. package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +1 -1
  159. package/src/Libraries/Components/Touchable/TouchableWin32.Props.tsx +3 -1
  160. package/src/Libraries/Components/View/ViewWin32.Props.ts +1 -0
  161. package/src/Libraries/Lists/__tests__/__snapshots__/FlatList-test.js.snap +427 -0
  162. package/src/Libraries/Lists/__tests__/__snapshots__/SectionList-test.js.snap +391 -0
  163. package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizeUtils-test.js.snap +3 -0
  164. package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap +4565 -0
  165. package/src/Libraries/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap +1153 -0
  166. package/src/rntypes/index.d.ts +19 -7
  167. package/typings-index.js +5 -1
  168. package/typings-index.js.map +1 -1
  169. package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -44
  170. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -45
  171. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
  172. package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.js +0 -45
  173. package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -360
  174. package/Libraries/Components/View/ReactNativeViewViewConfig.win32.js +0 -401
  175. package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -83
  176. package/Libraries/ReactNative/UIManagerInjection.js +0 -15
  177. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -24527
  178. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -8309
  179. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -8961
  180. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -24948
  181. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -8400
  182. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -9049
  183. package/flow/Promise.js +0 -47
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @format
8
+ * @flow strict-local
9
+ */
10
+
11
+ // https://dom.spec.whatwg.org/#dictdef-eventinit
12
+ type Event$Init = {
13
+ bubbles?: boolean,
14
+ cancelable?: boolean,
15
+ composed?: boolean,
16
+ /** Non-standard. See `composed` instead. */
17
+ scoped?: boolean,
18
+ ...
19
+ };
20
+
21
+ /**
22
+ * This is a copy of the Event interface defined in Flow:
23
+ * https://github.com/facebook/flow/blob/741104e69c43057ebd32804dd6bcc1b5e97548ea/lib/dom.js
24
+ * which is itself a faithful interface of the W3 spec:
25
+ * https://dom.spec.whatwg.org/#interface-event
26
+ *
27
+ * Since Flow assumes that Event is provided and is on the global object,
28
+ * we must provide an implementation of Event for CustomEvent (and future
29
+ * alignment of React Native's event system with the W3 spec).
30
+ */
31
+ interface IEvent {
32
+ constructor(type: string, eventInitDict?: Event$Init): void;
33
+ /**
34
+ * Returns the type of event, e.g. "click", "hashchange", or "submit".
35
+ */
36
+ +type: string;
37
+ /**
38
+ * Returns the object to which event is dispatched (its target).
39
+ */
40
+ +target: EventTarget; // TODO: nullable
41
+ /** @deprecated */
42
+ +srcElement: Element; // TODO: nullable
43
+ /**
44
+ * Returns the object whose event listener's callback is currently being invoked.
45
+ */
46
+ +currentTarget: EventTarget; // TODO: nullable
47
+ /**
48
+ * Returns the invocation target objects of event's path (objects on which
49
+ * listeners will be invoked), except for any nodes in shadow trees of which
50
+ * the shadow root's mode is "closed" that are not reachable from event's
51
+ * currentTarget.
52
+ */
53
+ composedPath(): Array<EventTarget>;
54
+
55
+ +NONE: number;
56
+ +AT_TARGET: number;
57
+ +BUBBLING_PHASE: number;
58
+ +CAPTURING_PHASE: number;
59
+ /**
60
+ * Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET,
61
+ * and BUBBLING_PHASE.
62
+ */
63
+ +eventPhase: number;
64
+
65
+ /**
66
+ * When dispatched in a tree, invoking this method prevents event from reaching
67
+ * any objects other than the current object.
68
+ */
69
+ stopPropagation(): void;
70
+ /**
71
+ * Invoking this method prevents event from reaching any registered event
72
+ * listeners after the current one finishes running and, when dispatched in a
73
+ * tree, also prevents event from reaching any other objects.
74
+ */
75
+ stopImmediatePropagation(): void;
76
+
77
+ /**
78
+ * Returns true or false depending on how event was initialized. True if
79
+ * event goes through its target's ancestors in reverse tree order, and
80
+ * false otherwise.
81
+ */
82
+ +bubbles: boolean;
83
+ /**
84
+ * Returns true or false depending on how event was initialized. Its
85
+ * return value does not always carry meaning, but true can indicate
86
+ * that part of the operation during which event was dispatched, can
87
+ * be canceled by invoking the preventDefault() method.
88
+ */
89
+ +cancelable: boolean;
90
+ // returnValue: boolean; // legacy, and some subclasses still define it as a string!
91
+ /**
92
+ * If invoked when the cancelable attribute value is true, and while
93
+ * executing a listener for the event with passive set to false, signals to
94
+ * the operation that caused event to be dispatched that it needs to be
95
+ * canceled.
96
+ */
97
+ preventDefault(): void;
98
+ /**
99
+ * Returns true if preventDefault() was invoked successfully to indicate
100
+ * cancelation, and false otherwise.
101
+ */
102
+ +defaultPrevented: boolean;
103
+ /**
104
+ * Returns true or false depending on how event was initialized. True if
105
+ * event invokes listeners past a ShadowRoot node that is the root of its
106
+ * target, and false otherwise.
107
+ */
108
+ +composed: boolean;
109
+
110
+ /**
111
+ * Returns true if event was dispatched by the user agent, and false otherwise.
112
+ */
113
+ +isTrusted: boolean;
114
+ /**
115
+ * Returns the event's timestamp as the number of milliseconds measured relative
116
+ * to the time origin.
117
+ */
118
+ +timeStamp: number;
119
+
120
+ /** Non-standard. See Event.prototype.composedPath */
121
+ +deepPath?: () => EventTarget[];
122
+ /** Non-standard. See Event.prototype.composed */
123
+ +scoped: boolean;
124
+
125
+ /**
126
+ * @deprecated
127
+ */
128
+ initEvent(type: string, bubbles: boolean, cancelable: boolean): void;
129
+ }
130
+
131
+ class EventPolyfill implements IEvent {
132
+ type: string;
133
+ bubbles: boolean;
134
+ cancelable: boolean;
135
+ composed: boolean;
136
+ // Non-standard. See `composed` instead.
137
+ scoped: boolean;
138
+ isTrusted: boolean;
139
+ defaultPrevented: boolean;
140
+ timeStamp: number;
141
+
142
+ // https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
143
+ NONE: number;
144
+ AT_TARGET: number;
145
+ BUBBLING_PHASE: number;
146
+ CAPTURING_PHASE: number;
147
+
148
+ eventPhase: number;
149
+
150
+ currentTarget: EventTarget; // TODO: nullable
151
+ target: EventTarget; // TODO: nullable
152
+ /** @deprecated */
153
+ srcElement: Element; // TODO: nullable
154
+
155
+ // React Native-specific: proxy data to a SyntheticEvent when
156
+ // certain methods are called.
157
+ // SyntheticEvent will also have a reference to this instance -
158
+ // it is circular - and both classes use this reference to keep
159
+ // data with the other in sync.
160
+ _syntheticEvent: mixed;
161
+
162
+ constructor(type: string, eventInitDict?: Event$Init): void {
163
+ this.type = type;
164
+ this.bubbles = !!(eventInitDict?.bubbles || false);
165
+ this.cancelable = !!(eventInitDict?.cancelable || false);
166
+ this.composed = !!(eventInitDict?.composed || false);
167
+ this.scoped = !!(eventInitDict?.scoped || false);
168
+
169
+ // TODO: somehow guarantee that only "private" instantiations of Event
170
+ // can set this to true
171
+ this.isTrusted = false;
172
+
173
+ // TODO: in the future we'll want to make sure this has the same
174
+ // time-basis as events originating from native
175
+ this.timeStamp = Date.now();
176
+
177
+ this.defaultPrevented = false;
178
+
179
+ // https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase
180
+ this.NONE = 0;
181
+ this.AT_TARGET = 1;
182
+ this.BUBBLING_PHASE = 2;
183
+ this.CAPTURING_PHASE = 3;
184
+ this.eventPhase = this.NONE;
185
+
186
+ // $FlowFixMe
187
+ this.currentTarget = null;
188
+ // $FlowFixMe
189
+ this.target = null;
190
+ // $FlowFixMe
191
+ this.srcElement = null;
192
+ }
193
+
194
+ composedPath(): Array<EventTarget> {
195
+ throw new Error('TODO: not yet implemented');
196
+ }
197
+
198
+ preventDefault(): void {
199
+ this.defaultPrevented = true;
200
+
201
+ if (this._syntheticEvent != null) {
202
+ // $FlowFixMe
203
+ this._syntheticEvent.preventDefault();
204
+ }
205
+ }
206
+
207
+ initEvent(type: string, bubbles: boolean, cancelable: boolean): void {
208
+ throw new Error(
209
+ 'TODO: not yet implemented. This method is also deprecated.',
210
+ );
211
+ }
212
+
213
+ stopImmediatePropagation(): void {
214
+ throw new Error('TODO: not yet implemented');
215
+ }
216
+
217
+ stopPropagation(): void {
218
+ if (this._syntheticEvent != null) {
219
+ // $FlowFixMe
220
+ this._syntheticEvent.stopPropagation();
221
+ }
222
+ }
223
+
224
+ setSyntheticEvent(value: mixed): void {
225
+ this._syntheticEvent = value;
226
+ }
227
+ }
228
+
229
+ // Assertion magic for polyfill follows.
230
+ declare var checkEvent: Event;
231
+
232
+ /*::
233
+ // This can be a strict mode error at runtime so put it in a Flow comment.
234
+ (checkEvent: IEvent);
235
+ */
236
+
237
+ global.Event = EventPolyfill;
238
+
239
+ export default EventPolyfill;
@@ -306,12 +306,6 @@ Image.queryCache = queryCache;
306
306
  * comment and run Flow. */
307
307
  Image.resolveAssetSource = resolveAssetSource;
308
308
 
309
- /**
310
- * Switch to `deprecated-react-native-prop-types` for compatibility with future
311
- * releases. This is deprecated and will be removed in the future.
312
- */
313
- Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
314
-
315
309
  const styles = StyleSheet.create({
316
310
  base: {
317
311
  overflow: 'hidden',
@@ -232,12 +232,6 @@ Image.queryCache = queryCache;
232
232
  * delete this comment and run Flow. */
233
233
  Image.resolveAssetSource = resolveAssetSource;
234
234
 
235
- /**
236
- * Switch to `deprecated-react-native-prop-types` for compatibility with future
237
- * releases. This is deprecated and will be removed in the future.
238
- */
239
- Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
240
-
241
235
  const styles = StyleSheet.create({
242
236
  base: {
243
237
  overflow: 'hidden',
@@ -164,7 +164,7 @@ let Image = (props: ImagePropsType, forwardedRef) => {
164
164
  return (
165
165
  // [Win32
166
166
  <TextAncestor.Consumer>
167
- {(hasTextAncestor) => {
167
+ {hasTextAncestor => {
168
168
  invariant(
169
169
  !hasTextAncestor,
170
170
  'Nesting of <Image> within <Text> is not currently supported.',
@@ -173,7 +173,7 @@ let Image = (props: ImagePropsType, forwardedRef) => {
173
173
 
174
174
  return (
175
175
  <ImageAnalyticsTagContext.Consumer>
176
- {(analyticTag) => {
176
+ {analyticTag => {
177
177
  return (
178
178
  <ImageViewNativeComponent
179
179
  {...props}
@@ -267,12 +267,6 @@ Image.queryCache = queryCache;
267
267
  * delete this comment and run Flow. */
268
268
  Image.resolveAssetSource = resolveAssetSource;
269
269
 
270
- /**
271
- * Switch to `deprecated-react-native-prop-types` for compatibility with future
272
- * releases. This is deprecated and will be removed in the future.
273
- */
274
- Image.propTypes = require('deprecated-react-native-prop-types').ImagePropTypes;
275
-
276
270
  const styles = StyleSheet.create({
277
271
  base: {
278
272
  overflow: 'hidden',
@@ -12,7 +12,11 @@ import type {ResolvedAssetSource} from './AssetSourceResolver';
12
12
  import type {ImageProps} from './ImageProps';
13
13
  import type {ViewProps} from '../Components/View/ViewPropTypes';
14
14
  import * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry';
15
- import type {HostComponent} from '../Renderer/shims/ReactNativeTypes';
15
+ import {ConditionallyIgnoredEventHandlers} from '../NativeComponent/ViewConfigIgnore';
16
+ import type {
17
+ HostComponent,
18
+ PartialViewConfig,
19
+ } from '../Renderer/shims/ReactNativeTypes';
16
20
  import type {
17
21
  ColorValue,
18
22
  DangerouslyImpreciseStyle,
@@ -37,7 +41,7 @@ type Props = $ReadOnly<{
37
41
  loadingIndicatorSrc?: ?string,
38
42
  }>;
39
43
 
40
- const ImageViewViewConfig =
44
+ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
41
45
  Platform.OS === 'android'
42
46
  ? {
43
47
  uiViewClassName: 'RCTImageView',
@@ -125,10 +129,21 @@ const ImageViewViewConfig =
125
129
  tintColor: {
126
130
  process: require('../StyleSheet/processColor'),
127
131
  },
132
+ ...ConditionallyIgnoredEventHandlers({
133
+ onLoadStart: true,
134
+ onLoad: true,
135
+ onLoadEnd: true,
136
+ onProgress: true,
137
+ onError: true,
138
+ onPartialLoad: true,
139
+ }),
128
140
  },
129
141
  };
130
142
 
131
143
  const ImageViewNativeComponent: HostComponent<Props> =
132
- NativeComponentRegistry.get<Props>('RCTImageView', () => ImageViewViewConfig);
144
+ NativeComponentRegistry.get<Props>(
145
+ 'RCTImageView',
146
+ () => __INTERNAL_VIEW_CONFIG,
147
+ );
133
148
 
134
149
  export default ImageViewNativeComponent;
@@ -10,7 +10,10 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import type {HostComponent} from '../Renderer/shims/ReactNativeTypes';
13
+ import type {
14
+ HostComponent,
15
+ PartialViewConfig,
16
+ } from '../Renderer/shims/ReactNativeTypes';
14
17
  import type {ViewProps} from '../Components/View/ViewPropTypes';
15
18
  import type {ImageResizeMode} from './ImageResizeMode';
16
19
  import * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry';
@@ -24,19 +27,24 @@ type NativeProps = $ReadOnly<{
24
27
  headers?: ?{[string]: string},
25
28
  }>;
26
29
 
27
- const TextInlineImage: HostComponent<NativeProps> =
28
- NativeComponentRegistry.get<NativeProps>('RCTTextInlineImage', () => ({
29
- uiViewClassName: 'RCTTextInlineImage',
30
- bubblingEventTypes: {},
31
- directEventTypes: {},
32
- validAttributes: {
33
- resizeMode: true,
34
- src: true,
35
- tintColor: {
36
- process: require('../StyleSheet/processColor'),
37
- },
38
- headers: true,
30
+ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
31
+ uiViewClassName: 'RCTTextInlineImage',
32
+ bubblingEventTypes: {},
33
+ directEventTypes: {},
34
+ validAttributes: {
35
+ resizeMode: true,
36
+ src: true,
37
+ tintColor: {
38
+ process: require('../StyleSheet/processColor'),
39
39
  },
40
- }));
40
+ headers: true,
41
+ },
42
+ };
43
+
44
+ const TextInlineImage: HostComponent<NativeProps> =
45
+ NativeComponentRegistry.get<NativeProps>(
46
+ 'RCTTextInlineImage',
47
+ () => __INTERNAL_VIEW_CONFIG,
48
+ );
41
49
 
42
- module.exports = TextInlineImage;
50
+ export default TextInlineImage;
@@ -111,7 +111,7 @@ class AssetResolverLateScaleResolution {
111
111
 
112
112
  // We should leave the resource scale out of the URI, and do that lookup on the native side.
113
113
  // That way we can handle dynamic dpi changes and multimon scenarios better
114
- resolveAssetSource.setCustomSourceTransformer((resolver) => {
114
+ resolveAssetSource.setCustomSourceTransformer(resolver => {
115
115
  const lsrResolver = new AssetResolverLateScaleResolution(resolver);
116
116
  return lsrResolver.defaultAsset();
117
117
  });
@@ -19,6 +19,7 @@ const React = require('react');
19
19
  const ReactNative = require('../Renderer/shims/ReactNative');
20
20
  const StyleSheet = require('../StyleSheet/StyleSheet');
21
21
  const View = require('../Components/View/View');
22
+ const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
22
23
 
23
24
  const invariant = require('invariant');
24
25
 
@@ -47,10 +48,7 @@ const renderers = findRenderers();
47
48
  // Required for React DevTools to view/edit React Native styles in Flipper.
48
49
  // Flipper doesn't inject these values when initializing DevTools.
49
50
  hook.resolveRNStyle = require('../StyleSheet/flattenStyle');
50
- const viewConfig = require('../Components/View/ReactNativeViewViewConfig');
51
- hook.nativeStyleEditorValidAttributes = Object.keys(
52
- viewConfig.validAttributes.style,
53
- );
51
+ hook.nativeStyleEditorValidAttributes = Object.keys(ReactNativeStyleAttributes);
54
52
 
55
53
  function findRenderers(): $ReadOnlyArray<ReactRenderer> {
56
54
  const allRenderers = Array.from(hook.renderers.values());
@@ -19,6 +19,7 @@ const React = require('react');
19
19
  const ReactNative = require('../Renderer/shims/ReactNative');
20
20
  const StyleSheet = require('../StyleSheet/StyleSheet');
21
21
  const View = require('../Components/View/View');
22
+ const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
22
23
 
23
24
  const invariant = require('invariant');
24
25
 
@@ -49,10 +50,7 @@ const renderers = findRenderers();
49
50
  // Required for React DevTools to view/edit React Native styles in Flipper.
50
51
  // Flipper doesn't inject these values when initializing DevTools.
51
52
  hook.resolveRNStyle = require('../StyleSheet/flattenStyle');
52
- const viewConfig = require('../Components/View/ReactNativeViewViewConfig');
53
- hook.nativeStyleEditorValidAttributes = Object.keys(
54
- viewConfig.validAttributes.style,
55
- );
53
+ hook.nativeStyleEditorValidAttributes = Object.keys(ReactNativeStyleAttributes);
56
54
 
57
55
  function findRenderers(): $ReadOnlyArray<ReactRenderer> {
58
56
  const allRenderers = Array.from(hook.renderers.values());
@@ -77,7 +75,7 @@ function getInspectorDataForViewAtPoint(
77
75
  inspectedView,
78
76
  locationX,
79
77
  locationY,
80
- (viewData) => {
78
+ viewData => {
81
79
  // Only return with non-empty view data since only one renderer will have this view.
82
80
  if (viewData && viewData.hierarchy.length > 0) {
83
81
  callback(viewData);
@@ -137,7 +135,7 @@ class Inspector extends React.Component<
137
135
 
138
136
  componentWillUnmount() {
139
137
  if (this._subs) {
140
- this._subs.map((fn) => fn());
138
+ this._subs.map(fn => fn());
141
139
  }
142
140
  hook.off('react-devtools', this._attachToDevtools);
143
141
  this._setTouchedViewData = null;
@@ -222,7 +220,7 @@ class Inspector extends React.Component<
222
220
  }
223
221
 
224
222
  onTouchPoint(locationX: number, locationY: number) {
225
- this._setTouchedViewData = (viewData) => {
223
+ this._setTouchedViewData = viewData => {
226
224
  const {
227
225
  hierarchy,
228
226
  props,
@@ -263,7 +261,7 @@ class Inspector extends React.Component<
263
261
  this.state.inspectedView,
264
262
  locationX,
265
263
  locationY,
266
- (viewData) => {
264
+ viewData => {
267
265
  if (this._setTouchedViewData != null) {
268
266
  this._setTouchedViewData(viewData);
269
267
  this._setTouchedViewData = null;
@@ -290,7 +288,7 @@ class Inspector extends React.Component<
290
288
 
291
289
  setTouchTargeting(val: boolean) {
292
290
  PressabilityDebug.setEnabled(val);
293
- this.props.onRequestRerenderApp((inspectedView) => {
291
+ this.props.onRequestRerenderApp(inspectedView => {
294
292
  this.setState({inspectedView});
295
293
  });
296
294
  }
@@ -10,14 +10,15 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {SpyData} from '../BatchedBridge/MessageQueue';
13
14
  const JSEventLoopWatchdog = require('./JSEventLoopWatchdog');
14
- const MessageQueue = require('../BatchedBridge/MessageQueue');
15
15
 
16
+ const MessageQueue = require('../BatchedBridge/MessageQueue');
16
17
  const infoLog = require('../Utilities/infoLog');
17
18
 
18
19
  const BridgeSpyStallHandler = {
19
20
  register: function () {
20
- let spyBuffer = [];
21
+ let spyBuffer: Array<SpyData> = [];
21
22
  MessageQueue.spy(data => {
22
23
  spyBuffer.push(data);
23
24
  });
@@ -27,7 +28,7 @@ const BridgeSpyStallHandler = {
27
28
  infoLog(
28
29
  spyBuffer.length + ' bridge messages during stall: ',
29
30
  spyBuffer.map(info => {
30
- let args = '<args>';
31
+ let args: string | Array<?string> = '<args>';
31
32
  try {
32
33
  args = JSON.stringify(info.args);
33
34
  } catch (e1) {
@@ -91,7 +91,6 @@ const InteractionManager = {
91
91
  onFulfill?: ?(void) => ?(Promise<U> | U),
92
92
  onReject?: ?(error: mixed) => ?(Promise<U> | U),
93
93
  ) => Promise<U>,
94
- done: () => void,
95
94
  cancel: () => void,
96
95
  ...
97
96
  } {
@@ -110,16 +109,6 @@ const InteractionManager = {
110
109
  return {
111
110
  // $FlowFixMe[method-unbinding] added when improving typing for this parameters
112
111
  then: promise.then.bind(promise),
113
- done: (...args) => {
114
- // $FlowFixMe[method-unbinding] added when improving typing for this parameters
115
- if (promise.done) {
116
- return promise.done(...args);
117
- } else {
118
- console.warn(
119
- 'Tried to call done when not supported by current Promise implementation.',
120
- );
121
- }
122
- },
123
112
  cancel: function () {
124
113
  _taskQueue.cancelTasks(tasks);
125
114
  },
@@ -165,7 +154,7 @@ const _interactionSet = new Set();
165
154
  const _addInteractionSet = new Set();
166
155
  const _deleteInteractionSet = new Set();
167
156
  const _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate});
168
- let _nextUpdateHandle = 0;
157
+ let _nextUpdateHandle: $FlowFixMe | TimeoutID = 0;
169
158
  let _inc = 0;
170
159
  let _deadline = -1;
171
160
 
@@ -171,10 +171,11 @@ class TaskQueue {
171
171
  this.hasTasksToProcess() && this._onMoreTasks();
172
172
  })
173
173
  .catch(ex => {
174
- ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`;
175
- throw ex;
176
- })
177
- .done();
174
+ setTimeout(() => {
175
+ ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`;
176
+ throw ex;
177
+ }, 0);
178
+ });
178
179
  }
179
180
  }
180
181
 
@@ -19,6 +19,7 @@ import type {
19
19
  } from '../Renderer/shims/ReactNativeTypes';
20
20
 
21
21
  import Platform from '../Utilities/Platform';
22
+ import ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags';
22
23
 
23
24
  // Reexport type
24
25
  export type LayoutAnimationConfig = LayoutAnimationConfig_;
@@ -26,6 +27,13 @@ export type LayoutAnimationConfig = LayoutAnimationConfig_;
26
27
  type OnAnimationDidEndCallback = () => void;
27
28
  type OnAnimationDidFailCallback = () => void;
28
29
 
30
+ let isLayoutAnimationEnabled: boolean =
31
+ ReactNativeFeatureFlags.isLayoutAnimationEnabled();
32
+
33
+ function setEnabled(value: boolean) {
34
+ isLayoutAnimationEnabled = isLayoutAnimationEnabled;
35
+ }
36
+
29
37
  /**
30
38
  * Configures the next commit to be animated.
31
39
  *
@@ -43,6 +51,10 @@ function configureNext(
43
51
  return;
44
52
  }
45
53
 
54
+ if (!isLayoutAnimationEnabled) {
55
+ return;
56
+ }
57
+
46
58
  // Since LayoutAnimations may possibly be disabled for now on iOS (Fabric),
47
59
  // or Android (non-Fabric) we race a setTimeout with animation completion,
48
60
  // in case onComplete is never called
@@ -181,6 +193,7 @@ const LayoutAnimation = {
181
193
  spring: (configureNext.bind(null, Presets.spring): (
182
194
  onAnimationDidEnd?: OnAnimationDidEndCallback,
183
195
  ) => void),
196
+ setEnabled,
184
197
  };
185
198
 
186
199
  module.exports = LayoutAnimation;
@@ -8,7 +8,7 @@
8
8
  * @flow strict-local
9
9
  */
10
10
 
11
- import {type EventSubscription} from '../vendor/emitter/EventEmitter';
11
+ import type {EventSubscription} from '../vendor/emitter/EventEmitter';
12
12
  import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';
13
13
  import InteractionManager from '../Interaction/InteractionManager';
14
14
  import Platform from '../Utilities/Platform';