@office-iss/react-native-win32 0.0.0-canary.298 → 0.0.0-canary.299

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 (220) hide show
  1. package/.flowconfig +5 -3
  2. package/CHANGELOG.json +28 -1
  3. package/CHANGELOG.md +16 -6
  4. package/IntegrationTests/IntegrationTestsApp.js +1 -0
  5. package/IntegrationTests/LoggingTestModule.js +16 -20
  6. package/IntegrationTests/TimersTest.js +1 -0
  7. package/IntegrationTests/WebSocketTest.js +1 -0
  8. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
  9. package/Libraries/Alert/Alert.js +2 -2
  10. package/Libraries/Alert/NativeAlertManager.js +1 -0
  11. package/Libraries/Alert/RCTAlertManager.android.js +19 -13
  12. package/Libraries/Alert/RCTAlertManager.ios.js +9 -11
  13. package/Libraries/Alert/RCTAlertManager.js +1 -3
  14. package/Libraries/Alert/RCTAlertManager.js.flow +4 -6
  15. package/Libraries/Animated/AnimatedEvent.js +4 -3
  16. package/Libraries/Animated/AnimatedExports.js.flow +5 -0
  17. package/Libraries/Animated/AnimatedImplementation.js +44 -44
  18. package/Libraries/Animated/AnimatedMock.js +2 -2
  19. package/Libraries/Animated/NativeAnimatedModule.js +1 -0
  20. package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
  21. package/Libraries/Animated/animations/Animation.js +6 -1
  22. package/Libraries/Animated/components/AnimatedScrollView.js +6 -5
  23. package/Libraries/Animated/components/AnimatedText.js +2 -5
  24. package/Libraries/Animated/components/AnimatedView.js +2 -1
  25. package/Libraries/Animated/createAnimatedComponent.js +2 -4
  26. package/Libraries/Animated/nodes/AnimatedProps.js +2 -7
  27. package/Libraries/AppState/NativeAppState.js +1 -0
  28. package/Libraries/Blob/NativeBlobModule.js +1 -0
  29. package/Libraries/Blob/NativeFileReaderModule.js +1 -0
  30. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +1 -2
  31. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfoWin32.js +1 -2
  32. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +1 -2
  33. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +1 -2
  34. package/Libraries/Components/Button.js +7 -4
  35. package/Libraries/Components/Button.win32.js +7 -4
  36. package/Libraries/Components/Clipboard/NativeClipboard.js +1 -2
  37. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +1 -2
  38. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +1 -2
  39. package/Libraries/Components/Pressable/Pressable.js +8 -2
  40. package/Libraries/Components/Pressable/Pressable.win32.js +8 -8
  41. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +1 -2
  42. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +1 -2
  43. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +1 -0
  44. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -2
  45. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +9 -0
  46. package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -2
  47. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +3 -2
  48. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +1 -2
  49. package/Libraries/Components/ScrollView/ScrollView.d.ts +10 -1
  50. package/Libraries/Components/ScrollView/ScrollView.js +3 -1
  51. package/Libraries/Components/Sound/NativeSoundManager.js +1 -2
  52. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +1 -2
  53. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +1 -2
  54. package/Libraries/Components/StatusBar/StatusBar.d.ts +4 -0
  55. package/Libraries/Components/StatusBar/StatusBar.js +5 -0
  56. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +1 -2
  57. package/Libraries/Components/Switch/Switch.js +2 -1
  58. package/Libraries/Components/Switch/SwitchNativeComponent.js +1 -2
  59. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +8 -7
  60. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +1 -2
  61. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  62. package/Libraries/Components/TextInput/TextInput.js +2 -4
  63. package/Libraries/Components/TextInput/TextInput.win32.js +28 -3
  64. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +1 -2
  65. package/Libraries/Components/Touchable/Touchable.js +7 -3
  66. package/Libraries/Components/Touchable/Touchable.win32.js +7 -3
  67. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -1
  68. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +3 -2
  69. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +3 -2
  70. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +1 -0
  71. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -2
  72. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +1 -2
  73. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -15
  74. package/Libraries/Components/View/View.js +17 -18
  75. package/Libraries/Components/View/View.win32.js +16 -2
  76. package/Libraries/Components/View/ViewAccessibility.js +0 -7
  77. package/Libraries/Components/View/ViewAccessibility.win32.js +0 -7
  78. package/Libraries/Components/View/ViewPropTypes.d.ts +4 -0
  79. package/Libraries/Components/View/ViewPropTypes.js +8 -0
  80. package/Libraries/Components/View/ViewPropTypes.win32.js +8 -0
  81. package/Libraries/Core/ExceptionsManager.js +28 -15
  82. package/Libraries/Core/NativeExceptionsManager.js +1 -0
  83. package/Libraries/Core/ReactNativeVersion.js +1 -1
  84. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +1 -0
  85. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  86. package/Libraries/Core/checkNativeVersion.js +1 -0
  87. package/Libraries/Core/setUpReactDevTools.js +21 -4
  88. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +1 -0
  89. package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
  90. package/Libraries/Image/Image.android.js +3 -3
  91. package/Libraries/Image/ImageSource.d.ts +5 -0
  92. package/Libraries/Image/ImageViewNativeComponent.js +3 -3
  93. package/Libraries/Image/NativeImageEditor.js +1 -0
  94. package/Libraries/Image/NativeImageLoaderAndroid.js +1 -0
  95. package/Libraries/Image/NativeImageLoaderIOS.js +1 -0
  96. package/Libraries/Image/NativeImageLoaderWin32.js +1 -0
  97. package/Libraries/Image/NativeImageStoreAndroid.js +1 -0
  98. package/Libraries/Image/NativeImageStoreIOS.js +1 -0
  99. package/Libraries/Image/RelativeImageStub.js +1 -1
  100. package/Libraries/Image/TextInlineImageNativeComponent.js +3 -3
  101. package/Libraries/Interaction/InteractionManager.js +6 -1
  102. package/Libraries/Interaction/NativeFrameRateLogger.js +1 -0
  103. package/Libraries/Interaction/TaskQueue.js +14 -0
  104. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -8
  105. package/Libraries/Linking/NativeIntentAndroid.js +1 -0
  106. package/Libraries/Linking/NativeLinkingManager.js +1 -0
  107. package/Libraries/Lists/FlatList.js +5 -6
  108. package/Libraries/Lists/SectionList.js +4 -4
  109. package/Libraries/Lists/VirtualizedList.js +3 -2
  110. package/Libraries/LogBox/Data/LogBoxData.js +7 -4
  111. package/Libraries/LogBox/LogBox.js +72 -101
  112. package/Libraries/Modal/Modal.d.ts +8 -2
  113. package/Libraries/Modal/Modal.js +19 -2
  114. package/Libraries/Modal/NativeModalManager.js +1 -0
  115. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +1 -0
  116. package/Libraries/NativeComponent/BaseViewConfig.android.js +6 -15
  117. package/Libraries/NativeComponent/BaseViewConfig.ios.js +6 -15
  118. package/Libraries/NativeComponent/BaseViewConfig.win32.js +6 -15
  119. package/Libraries/NativeModules/specs/NativeDevMenu.js +1 -0
  120. package/Libraries/NativeModules/specs/NativeDevSettings.js +1 -0
  121. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +1 -0
  122. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +1 -0
  123. package/Libraries/NativeModules/specs/NativeLogBox.js +1 -0
  124. package/Libraries/NativeModules/specs/NativeRedBox.js +1 -0
  125. package/Libraries/NativeModules/specs/NativeSourceCode.js +1 -0
  126. package/Libraries/Network/NativeNetworkingAndroid.js +1 -0
  127. package/Libraries/Network/NativeNetworkingIOS.js +1 -0
  128. package/Libraries/Network/XMLHttpRequest.js +2 -0
  129. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  130. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -2
  131. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
  132. package/Libraries/ReactNative/AppRegistry.flow.js +2 -2
  133. package/Libraries/ReactNative/AppRegistryImpl.js +0 -10
  134. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  135. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +1 -0
  136. package/Libraries/ReactNative/NativeI18nManager.js +1 -0
  137. package/Libraries/ReactNative/NativeUIManager.js +1 -0
  138. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +80 -61
  139. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -1
  140. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +2 -2
  141. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -1
  142. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -1
  143. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -1
  144. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -12
  145. package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +3 -12
  146. package/Libraries/Settings/NativeSettingsManager.js +1 -0
  147. package/Libraries/Share/NativeShareModule.js +1 -0
  148. package/Libraries/StyleSheet/StyleSheet.js +1 -0
  149. package/Libraries/StyleSheet/processAspectRatio.js +2 -0
  150. package/Libraries/Text/Text.js +4 -6
  151. package/Libraries/Text/TextAncestor.js +3 -10
  152. package/Libraries/Text/TextAncestorContext.js +23 -0
  153. package/Libraries/Text/TextProps.js +2 -2
  154. package/Libraries/Text/TextProps.win32.js +2 -2
  155. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +1 -0
  156. package/Libraries/Types/CodegenTypesNamespace.js +1 -0
  157. package/Libraries/Utilities/HMRClient.js +12 -2
  158. package/Libraries/Utilities/NativeAppearance.js +1 -0
  159. package/Libraries/Utilities/NativeDevLoadingView.js +1 -0
  160. package/Libraries/Utilities/NativeDeviceInfo.js +1 -2
  161. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +1 -0
  162. package/Libraries/Utilities/NativePlatformConstantsIOS.js +1 -0
  163. package/Libraries/Utilities/NativePlatformConstantsWin.js +1 -0
  164. package/Libraries/Utilities/Platform.android.js +1 -4
  165. package/Libraries/Utilities/Platform.ios.js +1 -4
  166. package/Libraries/Utilities/Platform.js.flow +2 -2
  167. package/Libraries/Utilities/Platform.win32.js +1 -4
  168. package/Libraries/Utilities/PlatformTypes.js +1 -1
  169. package/Libraries/Utilities/codegenNativeCommands.js +4 -2
  170. package/Libraries/Utilities/codegenNativeComponent.js +3 -3
  171. package/Libraries/Utilities/createPerformanceLogger.js +32 -0
  172. package/Libraries/Vibration/NativeVibration.js +1 -0
  173. package/Libraries/WebSocket/NativeWebSocketModule.js +1 -0
  174. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  175. package/index.js +21 -0
  176. package/index.win32.js +12 -1
  177. package/jest/setup.js +1 -0
  178. package/overrides.json +25 -25
  179. package/package.json +11 -11
  180. package/src/private/animated/createAnimatedPropsHook.js +4 -1
  181. package/src/private/animated/createAnimatedPropsMemoHook.js +2 -2
  182. package/src/private/components/virtualview/VirtualView.js +145 -0
  183. package/src/private/components/virtualview/VirtualViewNativeComponent.js +90 -0
  184. package/src/private/featureflags/ReactNativeFeatureFlags.js +43 -23
  185. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -5
  186. package/src/private/setup/setUpPerformanceObserver.js +7 -0
  187. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +7 -4
  188. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +3 -3
  189. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +3 -3
  190. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +3 -3
  191. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +10 -7
  192. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +5 -4
  193. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +7 -4
  194. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +9 -6
  195. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +9 -6
  196. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +14 -5
  197. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +8 -5
  198. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +5 -5
  199. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +3 -3
  200. package/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +1 -0
  201. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +9 -6
  202. package/src/private/styles/composeStyles.js +5 -12
  203. package/src/private/webapis/errors/DOMException.js +1 -1
  204. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +4 -2
  205. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +12 -7
  206. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +13 -0
  207. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -1
  208. package/src/private/webapis/performance/Performance.js +164 -61
  209. package/src/private/webapis/performance/PerformanceEntry.js +20 -16
  210. package/src/private/webapis/performance/PerformanceObserver.js +31 -27
  211. package/src/private/webapis/performance/ResourceTiming.js +108 -0
  212. package/src/private/webapis/performance/UserTiming.js +60 -8
  213. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +47 -32
  214. package/src/private/webapis/performance/specs/NativePerformance.js +13 -1
  215. package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +4 -0
  216. package/Libraries/BugReporting/BugReporting.js +0 -140
  217. package/Libraries/BugReporting/NativeBugReporting.js +0 -13
  218. package/Libraries/BugReporting/dumpReactTree.js +0 -151
  219. package/Libraries/BugReporting/getReactData.js +0 -187
  220. package/src/private/specs_DEPRECATED/modules/NativeBugReporting.js +0 -20
@@ -13,7 +13,6 @@ import type {ExtendedExceptionData} from './Data/parseLogBoxLog';
13
13
 
14
14
  import Platform from '../Utilities/Platform';
15
15
  import RCTLog from '../Utilities/RCTLog';
16
- import {hasComponentStack} from './Data/parseLogBoxLog';
17
16
  import * as React from 'react';
18
17
 
19
18
  export type {LogData, ExtendedExceptionData, IgnorePattern};
@@ -28,6 +27,7 @@ interface ILogBox {
28
27
  ignoreAllLogs(value?: boolean): void;
29
28
  clearAllLogs(): void;
30
29
  addLog(log: LogData): void;
30
+ addConsoleLog(level: 'warn' | 'error', ...args: Array<mixed>): void;
31
31
  addException(error: ExtendedExceptionData): void;
32
32
  }
33
33
 
@@ -36,11 +36,12 @@ interface ILogBox {
36
36
  */
37
37
  if (__DEV__) {
38
38
  const LogBoxData = require('./Data/LogBoxData');
39
- const {parseLogBoxLog, parseInterpolation} = require('./Data/parseLogBoxLog');
39
+ const {
40
+ parseLogBoxLog,
41
+ parseComponentStack,
42
+ } = require('./Data/parseLogBoxLog');
40
43
 
41
- let originalConsoleError;
42
44
  let originalConsoleWarn;
43
- let consoleErrorImpl;
44
45
  let consoleWarnImpl: (...args: Array<mixed>) => void;
45
46
 
46
47
  let isLogBoxInstalled: boolean = false;
@@ -70,22 +71,20 @@ if (__DEV__) {
70
71
  // IMPORTANT: we only overwrite `console.error` and `console.warn` once.
71
72
  // When we uninstall we keep the same reference and only change its
72
73
  // internal implementation
73
- const isFirstInstall = originalConsoleError == null;
74
+ const isFirstInstall = originalConsoleWarn == null;
74
75
  if (isFirstInstall) {
75
- originalConsoleError = console.error.bind(console);
76
+ // We only patch warning for legacy reasons.
77
+ // This will be removed in the future, once warnings
78
+ // are fully moved to fusebox. Error handling is done
79
+ // via the ExceptionManager.
76
80
  originalConsoleWarn = console.warn.bind(console);
77
81
 
78
- // $FlowExpectedError[cannot-write]
79
- console.error = (...args) => {
80
- consoleErrorImpl(...args);
81
- };
82
82
  // $FlowExpectedError[cannot-write]
83
83
  console.warn = (...args) => {
84
84
  consoleWarnImpl(...args);
85
85
  };
86
86
  }
87
87
 
88
- consoleErrorImpl = registerError;
89
88
  consoleWarnImpl = registerWarning;
90
89
 
91
90
  if (Platform.isTesting) {
@@ -108,7 +107,6 @@ if (__DEV__) {
108
107
  // decorated again after installing LogBox. E.g.:
109
108
  // Before uninstalling: original > LogBox > OtherErrorHandler
110
109
  // After uninstalling: original > LogBox (noop) > OtherErrorHandler
111
- consoleErrorImpl = originalConsoleError;
112
110
  consoleWarnImpl = originalConsoleWarn;
113
111
  },
114
112
 
@@ -142,6 +140,64 @@ if (__DEV__) {
142
140
  }
143
141
  },
144
142
 
143
+ addConsoleLog(level: 'warn' | 'error', ...args: Array<mixed>) {
144
+ if (isLogBoxInstalled) {
145
+ let filteredLevel: 'warn' | 'error' | 'fatal' = level;
146
+ try {
147
+ let format = args[0];
148
+ if (typeof format === 'string') {
149
+ const filterResult =
150
+ require('../LogBox/Data/LogBoxData').checkWarningFilter(
151
+ // For legacy reasons, we strip the warning prefix from the message.
152
+ // Can remove this once we remove the warning module altogether.
153
+ format.replace(/^Warning: /, ''),
154
+ );
155
+ if (filterResult.monitorEvent !== 'warning_unhandled') {
156
+ if (filterResult.suppressCompletely) {
157
+ return;
158
+ }
159
+
160
+ if (filterResult.suppressDialog_LEGACY === true) {
161
+ filteredLevel = 'warn';
162
+ } else if (filterResult.forceDialogImmediately === true) {
163
+ filteredLevel = 'fatal'; // Do not downgrade. These are real bugs with same severity as throws.
164
+ }
165
+ args[0] = filterResult.finalFormat;
166
+ }
167
+ }
168
+
169
+ const result = parseLogBoxLog(args);
170
+ const category = result.category;
171
+ const message = result.message;
172
+ let componentStackType = result.componentStackType;
173
+ let componentStack = result.componentStack;
174
+ if (
175
+ (!componentStack || componentStack.length === 0) &&
176
+ // $FlowExpectedError[prop-missing]
177
+ React.captureOwnerStack
178
+ ) {
179
+ const ownerStack = React.captureOwnerStack();
180
+ if (ownerStack != null && ownerStack.length > 0) {
181
+ const parsedComponentStack = parseComponentStack(ownerStack);
182
+ componentStack = parsedComponentStack.stack;
183
+ componentStackType = parsedComponentStack.type;
184
+ }
185
+ }
186
+ if (!LogBoxData.isMessageIgnored(message.content)) {
187
+ LogBoxData.addLog({
188
+ level: filteredLevel,
189
+ category,
190
+ message,
191
+ componentStack,
192
+ componentStackType,
193
+ });
194
+ }
195
+ } catch (err) {
196
+ LogBoxData.reportLogBoxError(err);
197
+ }
198
+ }
199
+ },
200
+
145
201
  addException,
146
202
  };
147
203
 
@@ -157,14 +213,9 @@ if (__DEV__) {
157
213
  return typeof args[0] === 'string' && args[0].startsWith('(ADVICE)');
158
214
  };
159
215
 
160
- const isWarningModuleWarning = (...args: Array<mixed>) => {
161
- return typeof args[0] === 'string' && args[0].startsWith('Warning: ');
162
- };
163
-
164
216
  const registerWarning = (...args: Array<mixed>): void => {
165
217
  // Let warnings within LogBox itself fall through.
166
218
  if (LogBoxData.isLogBoxErrorMessage(String(args[0]))) {
167
- originalConsoleError(...args);
168
219
  return;
169
220
  } else {
170
221
  // Be sure to pass LogBox warnings through.
@@ -190,90 +241,6 @@ if (__DEV__) {
190
241
  LogBoxData.reportLogBoxError(err);
191
242
  }
192
243
  };
193
-
194
- /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's
195
- * LTI update could not be added via codemod */
196
- const registerError = (...args): void => {
197
- // Let errors within LogBox itself fall through.
198
- if (LogBoxData.isLogBoxErrorMessage(args[0])) {
199
- originalConsoleError(...args);
200
- return;
201
- }
202
-
203
- try {
204
- let stack;
205
- // $FlowFixMe[prop-missing] Not added to flow types yet.
206
- if (!hasComponentStack(args) && React.captureOwnerStack != null) {
207
- stack = React.captureOwnerStack();
208
- if (!hasComponentStack(args)) {
209
- if (stack != null && stack !== '') {
210
- args[0] = args[0] += '%s';
211
- args.push(stack);
212
- }
213
- }
214
- }
215
- if (!isWarningModuleWarning(...args) && !hasComponentStack(args)) {
216
- // Only show LogBox for the 'warning' module, or React errors with
217
- // component stacks, otherwise pass the error through.
218
- //
219
- // By passing through, this will get picked up by the React console override,
220
- // potentially adding the component stack. React then passes it back to the
221
- // React Native ExceptionsManager, which reports it to LogBox as an error.
222
- //
223
- // Ideally, we refactor all RN error handling so that LogBox patching
224
- // errors is not necessary, and they are reported the same as a framework.
225
- // The blocker to this is that the ExceptionManager console.error override
226
- // strigifys all of the args before passing it through to LogBox, which
227
- // would lose all of the interpolation information.
228
- //
229
- // The 'warning' module needs to be handled here because React internally calls
230
- // `console.error('Warning: ')` with the component stack already included.
231
- originalConsoleError(...args);
232
- return;
233
- }
234
-
235
- const format = args[0].replace('Warning: ', '');
236
- const filterResult = LogBoxData.checkWarningFilter(format);
237
- let level = 'error';
238
- if (filterResult.monitorEvent !== 'warning_unhandled') {
239
- if (filterResult.suppressCompletely) {
240
- return;
241
- }
242
-
243
- if (filterResult.suppressDialog_LEGACY === true) {
244
- level = 'warn';
245
- } else if (filterResult.forceDialogImmediately === true) {
246
- level = 'fatal'; // Do not downgrade. These are real bugs with same severity as throws.
247
- }
248
- }
249
-
250
- // Unfortunately, we need to add the Warning: prefix back for downstream dependencies.
251
- // Downstream, we check for this prefix to know that LogBox already handled it, so
252
- // it doesn't get reported back to LogBox. It's an absolute mess.
253
- args[0] = `Warning: ${filterResult.finalFormat}`;
254
- const {category, message, componentStack, componentStackType} =
255
- parseLogBoxLog(args);
256
-
257
- // Interpolate the message so they are formatted for adb and other CLIs.
258
- // This is different than the message.content above because it includes component stacks.
259
- const interpolated = parseInterpolation(args);
260
- originalConsoleError(interpolated.message.content);
261
-
262
- if (!LogBoxData.isMessageIgnored(message.content)) {
263
- LogBoxData.addLog({
264
- /* $FlowFixMe[incompatible-call] Natural Inference rollout. See
265
- * https://fburl.com/workplace/6291gfvu */
266
- level,
267
- category,
268
- message,
269
- componentStack,
270
- componentStackType,
271
- });
272
- }
273
- } catch (err) {
274
- LogBoxData.reportLogBoxError(err);
275
- }
276
- };
277
244
  } else {
278
245
  LogBox = {
279
246
  install(): void {
@@ -304,6 +271,10 @@ if (__DEV__) {
304
271
  // Do nothing.
305
272
  },
306
273
 
274
+ addConsoleLog(level: 'warn' | 'error', ...args: Array<mixed>): void {
275
+ // Do nothing.
276
+ },
277
+
307
278
  addException(error: ExtendedExceptionData): void {
308
279
  // Do nothing.
309
280
  },
@@ -35,9 +35,9 @@ export interface ModalBaseProps {
35
35
  */
36
36
  visible?: boolean | undefined;
37
37
  /**
38
- * The `onRequestClose` callback is called when the user taps the hardware back button on Android or the menu button on Apple TV.
38
+ * The `onRequestClose` callback is called when the user taps the hardware back button on Android, dismisses the sheet using a gesture on iOS (when `allowSwipeDismissal` is set to true) or the menu button on Apple TV.
39
39
  *
40
- * This is required on Apple TV and Android.
40
+ * This is required on iOS and Android.
41
41
  */
42
42
  onRequestClose?: ((event: NativeSyntheticEvent<any>) => void) | undefined;
43
43
  /**
@@ -89,6 +89,12 @@ export interface ModalPropsIOS {
89
89
  onOrientationChange?:
90
90
  | ((event: NativeSyntheticEvent<any>) => void)
91
91
  | undefined;
92
+
93
+ /**
94
+ * Controls whether the modal can be dismissed by swiping down on iOS.
95
+ * This requires you to implement the `onRequestClose` prop to handle the dismissal.
96
+ */
97
+ allowSwipeDismissal?: boolean | undefined;
92
98
  }
93
99
 
94
100
  export interface ModalPropsAndroid {
@@ -86,9 +86,9 @@ export type ModalBaseProps = {
86
86
  */
87
87
  visible?: ?boolean,
88
88
  /**
89
- * The `onRequestClose` callback is called when the user taps the hardware back button on Android or the menu button on Apple TV.
89
+ * The `onRequestClose` callback is called when the user taps the hardware back button on Android, dismisses the sheet using a gesture on iOS (when `allowSwipeDismissal` is set to true) or the menu button on Apple TV.
90
90
  *
91
- * This is required on Apple TV and Android.
91
+ * This is required on iOS and Android.
92
92
  */
93
93
  // onRequestClose?: (event: NativeSyntheticEvent<any>) => void;
94
94
  onRequestClose?: ?DirectEventHandler<null>,
@@ -147,6 +147,12 @@ export type ModalPropsIOS = {
147
147
  // | ((event: NativeSyntheticEvent<any>) => void)
148
148
  // | undefined;
149
149
  onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,
150
+
151
+ /**
152
+ * Controls whether the modal can be dismissed by swiping down on iOS.
153
+ * This requires you to implement the `onRequestClose` prop to handle the dismissal.
154
+ */
155
+ allowSwipeDismissal?: ?boolean,
150
156
  };
151
157
 
152
158
  export type ModalPropsAndroid = {
@@ -192,6 +198,16 @@ function confirmProps(props: ModalProps) {
192
198
  'Modal with translucent navigation bar and without translucent status bar is not supported.',
193
199
  );
194
200
  }
201
+
202
+ if (
203
+ Platform.OS === 'ios' &&
204
+ props.allowSwipeDismissal === true &&
205
+ !props.onRequestClose
206
+ ) {
207
+ console.warn(
208
+ 'Modal requires the onRequestClose prop when used with `allowSwipeDismissal`. This is necessary to prevent state corruption.',
209
+ );
210
+ }
195
211
  }
196
212
  }
197
213
 
@@ -327,6 +343,7 @@ class Modal extends React.Component<ModalProps, ModalState> {
327
343
  onStartShouldSetResponder={this._shouldSetResponder}
328
344
  supportedOrientations={this.props.supportedOrientations}
329
345
  onOrientationChange={this.props.onOrientationChange}
346
+ allowSwipeDismissal={this.props.allowSwipeDismissal}
330
347
  testID={this.props.testID}>
331
348
  <VirtualizedListContextResetter>
332
349
  <ScrollView.Context.Provider value={null}>
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/modules/NativeModalManager';
12
12
  import NativeModalManager from '../../src/private/specs_DEPRECATED/modules/NativeModalManager';
13
+
13
14
  export default NativeModalManager;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent';
12
12
  import RCTModalHostViewNativeComponent from '../../src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent';
13
+
13
14
  export default RCTModalHostViewNativeComponent;
@@ -11,7 +11,6 @@
11
11
  import type {PartialViewConfigWithoutName} from './PlatformBaseViewConfig';
12
12
 
13
13
  import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
14
- import NativeReactNativeFeatureFlags from '../../src/private/featureflags/specs/NativeReactNativeFeatureFlags';
15
14
  import ReactNativeStyleAttributes from '../Components/View/ReactNativeStyleAttributes';
16
15
  import {DynamicallyInjectedByGestureHandler} from './ViewConfigIgnore';
17
16
 
@@ -183,20 +182,12 @@ const validAttributesForNonEventProps = {
183
182
  experimental_backgroundImage: {
184
183
  process: require('../StyleSheet/processBackgroundImage').default,
185
184
  },
186
- boxShadow:
187
- NativeReactNativeFeatureFlags != null &&
188
- ReactNativeFeatureFlags.enableNativeCSSParsing()
189
- ? (true as const)
190
- : {
191
- process: require('../StyleSheet/processBoxShadow').default,
192
- },
193
- filter:
194
- NativeReactNativeFeatureFlags != null &&
195
- ReactNativeFeatureFlags.enableNativeCSSParsing()
196
- ? (true as const)
197
- : {
198
- process: require('../StyleSheet/processFilter').default,
199
- },
185
+ boxShadow: ReactNativeFeatureFlags.enableNativeCSSParsing()
186
+ ? (true as const)
187
+ : {process: require('../StyleSheet/processBoxShadow').default},
188
+ filter: ReactNativeFeatureFlags.enableNativeCSSParsing()
189
+ ? (true as const)
190
+ : {process: require('../StyleSheet/processFilter').default},
200
191
  mixBlendMode: true,
201
192
  isolation: true,
202
193
  opacity: true,
@@ -11,7 +11,6 @@
11
11
  import type {PartialViewConfigWithoutName} from './PlatformBaseViewConfig';
12
12
 
13
13
  import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
14
- import NativeReactNativeFeatureFlags from '../../src/private/featureflags/specs/NativeReactNativeFeatureFlags';
15
14
  import ReactNativeStyleAttributes from '../Components/View/ReactNativeStyleAttributes';
16
15
  import {
17
16
  ConditionallyIgnoredEventHandlers,
@@ -229,20 +228,12 @@ const validAttributesForNonEventProps = {
229
228
  hitSlop: {diff: require('../Utilities/differ/insetsDiffer').default},
230
229
  collapsable: true,
231
230
  collapsableChildren: true,
232
- filter:
233
- NativeReactNativeFeatureFlags != null &&
234
- ReactNativeFeatureFlags.enableNativeCSSParsing()
235
- ? (true as const)
236
- : {
237
- process: require('../StyleSheet/processFilter').default,
238
- },
239
- boxShadow:
240
- NativeReactNativeFeatureFlags != null &&
241
- ReactNativeFeatureFlags.enableNativeCSSParsing()
242
- ? (true as const)
243
- : {
244
- process: require('../StyleSheet/processBoxShadow').default,
245
- },
231
+ filter: ReactNativeFeatureFlags.enableNativeCSSParsing()
232
+ ? (true as const)
233
+ : {process: require('../StyleSheet/processFilter').default},
234
+ boxShadow: ReactNativeFeatureFlags.enableNativeCSSParsing()
235
+ ? (true as const)
236
+ : {process: require('../StyleSheet/processBoxShadow').default},
246
237
  mixBlendMode: true,
247
238
  isolation: true,
248
239
 
@@ -11,7 +11,6 @@
11
11
  import type {PartialViewConfigWithoutName} from './PlatformBaseViewConfig';
12
12
 
13
13
  import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
14
- import NativeReactNativeFeatureFlags from '../../src/private/featureflags/specs/NativeReactNativeFeatureFlags';
15
14
  import ReactNativeStyleAttributes from '../Components/View/ReactNativeStyleAttributes';
16
15
  import {
17
16
  ConditionallyIgnoredEventHandlers,
@@ -225,20 +224,12 @@ const validAttributesForNonEventProps = {
225
224
  hitSlop: {diff: require('../Utilities/differ/insetsDiffer').default},
226
225
  collapsable: true,
227
226
  collapsableChildren: true,
228
- experimental_filter:
229
- NativeReactNativeFeatureFlags != null &&
230
- ReactNativeFeatureFlags.enableNativeCSSParsing()
231
- ? (true as const)
232
- : {
233
- process: require('../StyleSheet/processFilter').default,
234
- },
235
- boxShadow:
236
- NativeReactNativeFeatureFlags != null &&
237
- ReactNativeFeatureFlags.enableNativeCSSParsing()
238
- ? (true as const)
239
- : {
240
- process: require('../StyleSheet/processBoxShadow').default,
241
- },
227
+ experimental_filter: ReactNativeFeatureFlags.enableNativeCSSParsing()
228
+ ? (true as const)
229
+ : {process: require('../StyleSheet/processFilter').default},
230
+ boxShadow: ReactNativeFeatureFlags.enableNativeCSSParsing()
231
+ ? (true as const)
232
+ : {process: require('../StyleSheet/processBoxShadow').default},
242
233
  mixBlendMode: true,
243
234
  isolation: true,
244
235
 
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../../src/private/devsupport/devmenu/specs/NativeDevMenu';
12
12
  import NativeDevMenu from '../../../src/private/devsupport/devmenu/specs/NativeDevMenu';
13
+
13
14
  export default NativeDevMenu;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../../src/private/specs_DEPRECATED/modules/NativeDevSettings';
12
12
  import NativeDevSettings from '../../../src/private/specs_DEPRECATED/modules/NativeDevSettings';
13
+
13
14
  export default NativeDevSettings;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../../src/private/specs_DEPRECATED/modules/NativeDeviceEventManager';
12
12
  import NativeDeviceEventManager from '../../../src/private/specs_DEPRECATED/modules/NativeDeviceEventManager';
13
+
13
14
  export default NativeDeviceEventManager;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../../src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid';
12
12
  import NativeDialogManagerAndroid from '../../../src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid';
13
+
13
14
  export default NativeDialogManagerAndroid;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../../src/private/specs_DEPRECATED/modules/NativeLogBox';
12
12
  import NativeLogBox from '../../../src/private/specs_DEPRECATED/modules/NativeLogBox';
13
+
13
14
  export default NativeLogBox;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../../src/private/specs_DEPRECATED/modules/NativeRedBox';
12
12
  import NativeRedBox from '../../../src/private/specs_DEPRECATED/modules/NativeRedBox';
13
+
13
14
  export default NativeRedBox;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../../src/private/specs_DEPRECATED/modules/NativeSourceCode';
12
12
  import NativeSourceCode from '../../../src/private/specs_DEPRECATED/modules/NativeSourceCode';
13
+
13
14
  export default NativeSourceCode;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid';
12
12
  import NativeNetworkingAndroid from '../../src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid';
13
+
13
14
  export default NativeNetworkingAndroid;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/modules/NativeNetworkingIOS';
12
12
  import NativeNetworkingIOS from '../../src/private/specs_DEPRECATED/modules/NativeNetworkingIOS';
13
+
13
14
  export default NativeNetworkingIOS;
@@ -646,6 +646,8 @@ class XMLHttpRequest extends EventTarget {
646
646
  this.withCredentials,
647
647
  );
648
648
  };
649
+ /* $FlowFixMe[constant-condition] Error discovered during Constant
650
+ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */
649
651
  if (DEBUG_NETWORK_SEND_DELAY) {
650
652
  setTimeout(doSend, DEBUG_NETWORK_SEND_DELAY);
651
653
  } else {
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/modules/NativePermissionsAndroid';
12
12
  import NativePermissionsAndroid from '../../src/private/specs_DEPRECATED/modules/NativePermissionsAndroid';
13
+
13
14
  export default NativePermissionsAndroid;
@@ -130,7 +130,7 @@ const PERMISSIONS = Object.freeze({
130
130
  *
131
131
  * See https://reactnative.dev/docs/permissionsandroid
132
132
  */
133
- class PermissionsAndroid {
133
+ class PermissionsAndroidImpl {
134
134
  PERMISSIONS: PermissionsType = PERMISSIONS;
135
135
  RESULTS: $ReadOnly<{
136
136
  DENIED: 'denied',
@@ -297,5 +297,6 @@ class PermissionsAndroid {
297
297
  }
298
298
  }
299
299
 
300
- const PermissionsAndroidInstance: PermissionsAndroid = new PermissionsAndroid();
300
+ const PermissionsAndroidInstance: PermissionsAndroidImpl =
301
+ new PermissionsAndroidImpl();
301
302
  export default PermissionsAndroidInstance;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS';
12
12
  import NativePushNotificationManagerIOS from '../../src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS';
13
+
13
14
  export default NativePushNotificationManagerIOS;
@@ -13,8 +13,8 @@ import type {RootTag} from '../Types/RootTagTypes';
13
13
  import type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';
14
14
  import type {DisplayModeType} from './DisplayMode';
15
15
 
16
- type Task = (taskData: any) => Promise<void>;
17
- export type TaskProvider = () => Task;
16
+ type HeadlessTask = (taskData: any) => Promise<void>;
17
+ export type TaskProvider = () => HeadlessTask;
18
18
 
19
19
  export type ComponentProvider = () => React.ComponentType<any>;
20
20
  export type ComponentProviderInstrumentationHook = (
@@ -22,7 +22,6 @@ import type {
22
22
  WrapperComponentProvider,
23
23
  } from './AppRegistry.flow';
24
24
 
25
- import BugReporting from '../BugReporting/BugReporting';
26
25
  import createPerformanceLogger from '../Utilities/createPerformanceLogger';
27
26
  import SceneTracker from '../Utilities/SceneTracker';
28
27
  import {coerceDisplayMode} from './DisplayMode';
@@ -36,7 +35,6 @@ type TaskCanceller = () => void;
36
35
  type TaskCancelProvider = () => TaskCanceller;
37
36
 
38
37
  const runnables: Runnables = {};
39
- let runCount = 1;
40
38
  const sections: Runnables = {};
41
39
  const taskProviders: Map<string, TaskProvider> = new Map();
42
40
  const taskCancelProviders: Map<string, TaskCancelProvider> = new Map();
@@ -167,10 +165,6 @@ export function runApplication(
167
165
  const logParams = __DEV__ ? ` with ${JSON.stringify(appParameters)}` : '';
168
166
  const msg = `Running "${appKey}"${logParams}`;
169
167
  console.log(msg);
170
- BugReporting.addSource(
171
- 'AppRegistry.runApplication' + runCount++,
172
- () => msg,
173
- );
174
168
  }
175
169
  invariant(
176
170
  runnables[appKey],
@@ -199,10 +193,6 @@ export function setSurfaceProps(
199
193
  '" with ' +
200
194
  JSON.stringify(appParameters);
201
195
  console.log(msg);
202
- BugReporting.addSource(
203
- 'AppRegistry.setSurfaceProps' + runCount++,
204
- () => msg,
205
- );
206
196
  }
207
197
  invariant(
208
198
  runnables[appKey],
@@ -31,7 +31,7 @@ const getUIManagerConstants: ?() => {[viewManagerName: string]: Object} =
31
31
 
32
32
  const getUIManagerConstantsCached = (function () {
33
33
  let wasCalledOnce = false;
34
- let result = {};
34
+ let result: {[viewManagerName: string]: Object} = {};
35
35
  return (): {[viewManagerName: string]: Object} => {
36
36
  if (!wasCalledOnce) {
37
37
  result = nullthrows(getUIManagerConstants)();
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport';
12
12
  import NativeHeadlessJsTaskSupport from '../../src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport';
13
+
13
14
  export default NativeHeadlessJsTaskSupport;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/modules/NativeI18nManager';
12
12
  import NativeI18nManager from '../../src/private/specs_DEPRECATED/modules/NativeI18nManager';
13
+
13
14
  export default NativeI18nManager;
@@ -10,4 +10,5 @@
10
10
 
11
11
  export * from '../../src/private/specs_DEPRECATED/modules/NativeUIManager';
12
12
  import NativeUIManager from '../../src/private/specs_DEPRECATED/modules/NativeUIManager';
13
+
13
14
  export default NativeUIManager;