@office-iss/react-native-win32 0.72.7 → 0.73.0-preview.1

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 (272) hide show
  1. package/.flowconfig +15 -4
  2. package/CHANGELOG.json +523 -94
  3. package/CHANGELOG.md +209 -52
  4. package/IntegrationTests/PromiseTest.js +1 -0
  5. package/IntegrationTests/websocket_integration_test_server.js +1 -1
  6. package/Libraries/Animated/Animated.js +1 -1
  7. package/Libraries/Animated/AnimatedImplementation.js +1 -1
  8. package/Libraries/Animated/NativeAnimatedHelper.js +14 -10
  9. package/Libraries/Animated/NativeAnimatedHelper.win32.js +16 -12
  10. package/Libraries/Animated/NativeAnimatedModule.js +6 -2
  11. package/Libraries/Animated/NativeAnimatedTurboModule.js +7 -4
  12. package/Libraries/Animated/animations/Animation.js +57 -3
  13. package/Libraries/Animated/animations/DecayAnimation.js +9 -0
  14. package/Libraries/Animated/animations/SpringAnimation.js +8 -0
  15. package/Libraries/Animated/animations/TimingAnimation.js +8 -0
  16. package/Libraries/Animated/components/AnimatedFlatList.js +2 -1
  17. package/Libraries/Animated/components/AnimatedScrollView.js +2 -0
  18. package/Libraries/Animated/components/AnimatedSectionList.js +2 -1
  19. package/Libraries/Animated/createAnimatedComponent.js +1 -0
  20. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  21. package/Libraries/Animated/nodes/AnimatedObject.js +146 -0
  22. package/Libraries/Animated/nodes/AnimatedProps.js +19 -7
  23. package/Libraries/Animated/nodes/AnimatedStyle.js +29 -55
  24. package/Libraries/Animated/nodes/AnimatedValueXY.js +3 -17
  25. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
  26. package/Libraries/Animated/useAnimatedProps.js +9 -10
  27. package/Libraries/AppState/AppState.d.ts +1 -1
  28. package/Libraries/AppState/NativeAppState.js +8 -4
  29. package/Libraries/BatchedBridge/MessageQueue.js +45 -36
  30. package/Libraries/Blob/Blob.js +6 -2
  31. package/Libraries/Blob/BlobManager.js +9 -10
  32. package/Libraries/Blob/BlobRegistry.js +14 -9
  33. package/Libraries/Blob/File.js +1 -1
  34. package/Libraries/Blob/FileReader.js +1 -2
  35. package/Libraries/Components/Button/ButtonWin32.Props.d.ts +1 -1
  36. package/Libraries/Components/Button/ButtonWin32.Props.js.map +1 -1
  37. package/Libraries/Components/Button/ButtonWin32.d.ts +1 -1
  38. package/Libraries/Components/Button/ButtonWin32.js +1 -4
  39. package/Libraries/Components/Button/ButtonWin32.js.map +1 -1
  40. package/Libraries/Components/Clipboard/Clipboard.d.ts +4 -4
  41. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +3 -1
  42. package/Libraries/Components/EnterString.win32.d.ts +1 -1
  43. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +26 -6
  44. package/Libraries/Components/Pressable/Pressable.js +3 -2
  45. package/Libraries/Components/Pressable/Pressable.win32.js +4 -3
  46. package/Libraries/Components/Pressable/useAndroidRippleForView.js +1 -1
  47. package/Libraries/Components/SafeAreaView/SafeAreaView.js +7 -7
  48. package/Libraries/Components/SafeAreaView/SafeAreaView.win32.js +7 -8
  49. package/Libraries/Components/ScrollView/ScrollView.js +3 -1
  50. package/Libraries/Components/ScrollView/ScrollView.win32.js +3 -1
  51. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +39 -46
  52. package/Libraries/Components/Switch/Switch.js +1 -0
  53. package/Libraries/Components/Text/TextWin32.d.ts +1 -1
  54. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +1 -0
  55. package/Libraries/Components/TextInput/TextInput.d.ts +49 -7
  56. package/Libraries/Components/TextInput/TextInput.flow.js +43 -10
  57. package/Libraries/Components/TextInput/TextInput.js +62 -10
  58. package/Libraries/Components/TextInput/TextInput.win32.js +953 -206
  59. package/Libraries/Components/TextInput/Win32TextInputNativeComponent.js +23 -0
  60. package/Libraries/Components/ToastAndroid/{ToastAndroid.ios.js → ToastAndroid.js} +9 -1
  61. package/Libraries/Components/ToastAndroid/ToastAndroid.win32.js +9 -1
  62. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js +2 -2
  63. package/Libraries/Components/Touchable/Tests/TouchableWin32Test.js.map +1 -1
  64. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  65. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  66. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  67. package/Libraries/Components/Touchable/TouchableOpacity.js +4 -1
  68. package/Libraries/Components/Touchable/TouchableWin32.d.ts +1 -1
  69. package/Libraries/Components/Touchable/TouchableWin32.js.map +1 -1
  70. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -0
  71. package/Libraries/Components/TraceUpdateOverlay/TraceUpdateOverlay.js +16 -6
  72. package/Libraries/Components/View/ReactNativeStyleAttributes.js +9 -0
  73. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  74. package/Libraries/Components/View/ReactNativeViewAttributes.win32.js +1 -0
  75. package/Libraries/Components/View/View.js +46 -32
  76. package/Libraries/Components/View/View.win32.js +37 -6
  77. package/Libraries/Components/View/ViewAccessibility.d.ts +8 -2
  78. package/Libraries/Components/View/ViewNativeComponent.js +1 -0
  79. package/Libraries/Components/View/ViewPropTypes.js +18 -3
  80. package/Libraries/Components/View/ViewPropTypes.win32.js +30 -4
  81. package/Libraries/Components/View/ViewWin32.js +3 -2
  82. package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
  83. package/Libraries/Core/Devtools/symbolicateStackTrace.js +2 -1
  84. package/Libraries/Core/ExceptionsManager.js +16 -7
  85. package/Libraries/Core/ExtendedError.js +12 -0
  86. package/Libraries/Core/ReactNativeVersion.js +3 -3
  87. package/Libraries/Core/ReactNativeVersionCheck.js +0 -2
  88. package/Libraries/Core/ReactNativeVersionCheck.win32.js +0 -2
  89. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +20 -0
  90. package/Libraries/Core/setUpDeveloperTools.js +5 -1
  91. package/Libraries/Core/setUpIntersectionObserver.js +16 -0
  92. package/Libraries/{Components/ProgressBarAndroid/ProgressBarAndroid.ios.js → Core/setUpMutationObserver.js} +6 -2
  93. package/Libraries/Core/setUpPerformance.js +6 -13
  94. package/Libraries/Core/setUpPerformanceObserver.js +16 -0
  95. package/Libraries/Core/setUpRegeneratorRuntime.js +4 -2
  96. package/Libraries/DOM/Nodes/ReactNativeElement.js +135 -18
  97. package/Libraries/DOM/Nodes/ReadOnlyCharacterData.js +72 -0
  98. package/Libraries/DOM/Nodes/ReadOnlyElement.js +209 -21
  99. package/Libraries/DOM/Nodes/ReadOnlyNode.js +206 -17
  100. package/Libraries/DOM/Nodes/ReadOnlyText.js +30 -0
  101. package/Libraries/DOM/Nodes/Utilities/Traversal.js +54 -0
  102. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +0 -6
  103. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +15 -4
  104. package/Libraries/Image/Image.android.js +8 -2
  105. package/Libraries/Image/Image.d.ts +1 -1
  106. package/Libraries/Image/Image.ios.js +4 -1
  107. package/Libraries/Image/Image.win32.js +6 -3
  108. package/Libraries/Image/ImageBackground.js +3 -0
  109. package/Libraries/Image/resolveAssetSource.win32.js +1 -1
  110. package/Libraries/Inspector/DevtoolsOverlay.js +6 -3
  111. package/Libraries/Inspector/NetworkOverlay.js +2 -2
  112. package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -5
  113. package/Libraries/Interaction/PanResponder.js +1 -4
  114. package/Libraries/IntersectionObserver/IntersectionObserver.js +252 -0
  115. package/Libraries/IntersectionObserver/IntersectionObserverEntry.js +140 -0
  116. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +221 -0
  117. package/Libraries/IntersectionObserver/NativeIntersectionObserver.js +41 -0
  118. package/Libraries/IntersectionObserver/__mocks__/NativeIntersectionObserver.js +162 -0
  119. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
  120. package/Libraries/Lists/FlatList.d.ts +2 -1
  121. package/Libraries/Lists/FlatList.js +15 -5
  122. package/Libraries/Lists/SectionList.js +4 -0
  123. package/Libraries/LogBox/Data/LogBoxLog.js +4 -1
  124. package/Libraries/LogBox/Data/LogBoxSymbolication.js +5 -2
  125. package/Libraries/LogBox/Data/parseLogBoxLog.js +57 -20
  126. package/Libraries/LogBox/UI/AnsiHighlight.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +24 -31
  128. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  129. package/Libraries/LogBox/UI/LogBoxMessage.js +4 -7
  130. package/Libraries/MutationObserver/MutationObserver.js +184 -0
  131. package/Libraries/MutationObserver/MutationObserverManager.js +218 -0
  132. package/Libraries/MutationObserver/MutationRecord.js +82 -0
  133. package/Libraries/MutationObserver/NativeMutationObserver.js +58 -0
  134. package/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +327 -0
  135. package/Libraries/NativeComponent/BaseViewConfig.android.js +18 -3
  136. package/Libraries/NativeComponent/BaseViewConfig.ios.js +33 -0
  137. package/Libraries/NativeComponent/BaseViewConfig.win32.js +33 -0
  138. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -5
  139. package/Libraries/NativeModules/specs/NativeSourceCode.js +6 -6
  140. package/Libraries/Network/RCTNetworking.android.js +2 -1
  141. package/Libraries/Network/XMLHttpRequest.js +1 -1
  142. package/Libraries/NewAppScreen/components/DebugInstructions.js +4 -4
  143. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +9 -2
  144. package/Libraries/Performance/QuickPerformanceLogger.js +1 -1
  145. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +1 -0
  146. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +1 -0
  147. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +3 -1
  148. package/Libraries/Pressability/Pressability.js +28 -3
  149. package/Libraries/Pressability/Pressability.win32.js +30 -5
  150. package/Libraries/ReactNative/AppContainer.js +2 -3
  151. package/Libraries/ReactNative/AppRegistry.d.ts +0 -5
  152. package/Libraries/ReactNative/AppRegistry.js +66 -53
  153. package/Libraries/ReactNative/BridgelessUIManager.js +38 -9
  154. package/Libraries/ReactNative/FabricUIManager.js +143 -34
  155. package/Libraries/ReactNative/I18nManager.js +5 -11
  156. package/Libraries/ReactNative/NativeI18nManager.js +7 -5
  157. package/Libraries/ReactNative/PaperUIManager.win32.js +2 -2
  158. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +151 -0
  159. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +81 -0
  160. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
  161. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +32 -0
  162. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +19 -3
  163. package/Libraries/ReactNative/UIManager.js +8 -0
  164. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +648 -0
  165. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +38 -2
  166. package/Libraries/Renderer/implementations/ReactFabric-dev.js +27 -27
  167. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
  168. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
  169. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27 -27
  170. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3 -3
  171. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3 -3
  172. package/Libraries/Renderer/shims/ReactFabric.js +5 -6
  173. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -3
  174. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  175. package/Libraries/Renderer/shims/ReactNativeTypes.js +35 -17
  176. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -3
  177. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -3
  178. package/Libraries/Settings/{Settings.android.js → Settings.js} +4 -4
  179. package/Libraries/Share/Share.d.ts +3 -9
  180. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +9 -4
  181. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +28 -13
  182. package/Libraries/StyleSheet/PlatformColorValueTypes.win32.js +14 -4
  183. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +1 -1
  184. package/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  185. package/Libraries/StyleSheet/StyleSheet.d.ts +10 -1
  186. package/Libraries/StyleSheet/StyleSheet.js +3 -0
  187. package/Libraries/StyleSheet/StyleSheet.win32.js +3 -0
  188. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +31 -17
  189. package/Libraries/StyleSheet/StyleSheetTypes.js +90 -6
  190. package/Libraries/StyleSheet/flattenStyle.js +4 -0
  191. package/Libraries/StyleSheet/private/_TransformStyle.js +16 -2
  192. package/Libraries/StyleSheet/processColor.js +1 -2
  193. package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
  194. package/Libraries/StyleSheet/splitLayoutProps.js +1 -0
  195. package/Libraries/Text/Text.d.ts +5 -5
  196. package/Libraries/Text/Text.js +17 -10
  197. package/Libraries/Text/Text.win32.js +354 -0
  198. package/Libraries/Text/TextProps.win32.js +281 -0
  199. package/Libraries/TurboModule/TurboModuleRegistry.js +47 -7
  200. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +6 -0
  201. package/Libraries/Types/CoreEventTypes.d.ts +5 -2
  202. package/Libraries/Utilities/GlobalPerformanceLogger.js +2 -12
  203. package/Libraries/Utilities/NativeDeviceInfo.js +8 -9
  204. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +23 -18
  205. package/Libraries/Utilities/NativePlatformConstantsIOS.js +16 -13
  206. package/Libraries/Utilities/NativePlatformConstantsWin.js +13 -10
  207. package/Libraries/Utilities/PerformanceLoggerContext.js +1 -1
  208. package/Libraries/Utilities/Platform.android.js +12 -8
  209. package/Libraries/Utilities/Platform.d.ts +1 -0
  210. package/Libraries/Utilities/Platform.flow.js +84 -0
  211. package/Libraries/Utilities/Platform.flow.win32.js +111 -0
  212. package/Libraries/Utilities/Platform.ios.js +12 -8
  213. package/Libraries/Utilities/Platform.win32.js +12 -8
  214. package/Libraries/Utilities/PolyfillFunctions.js +1 -1
  215. package/Libraries/Utilities/ReactNativeTestTools.js +1 -2
  216. package/Libraries/Utilities/SceneTracker.js +1 -1
  217. package/Libraries/Utilities/createPerformanceLogger.js +63 -32
  218. package/Libraries/Utilities/useColorScheme.js +7 -8
  219. package/Libraries/WebPerformance/MemoryInfo.js +1 -1
  220. package/Libraries/WebPerformance/NativePerformance.js +3 -8
  221. package/Libraries/WebPerformance/NativePerformanceObserver.js +4 -0
  222. package/Libraries/WebPerformance/Performance.js +42 -15
  223. package/Libraries/WebPerformance/PerformanceEntry.js +14 -6
  224. package/Libraries/WebPerformance/PerformanceEventTiming.js +18 -1
  225. package/Libraries/WebPerformance/ReactNativeStartupTiming.js +40 -14
  226. package/Libraries/WebPerformance/__mocks__/NativePerformance.js +4 -2
  227. package/Libraries/WebPerformance/__mocks__/NativePerformanceObserver.js +21 -3
  228. package/Libraries/promiseRejectionTrackingOptions.js +1 -3
  229. package/Libraries/vendor/emitter/EventEmitter.js +17 -17
  230. package/flow/global.js +1 -3
  231. package/flow/jest.js +5 -1
  232. package/{Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js → jest/ReactNativeInternalFeatureFlagsMock.js} +2 -1
  233. package/jest/__tests__/setup-test.js +18 -0
  234. package/jest/mockModal.js +6 -4
  235. package/jest/setup.js +61 -30
  236. package/jest.config.js +1 -1
  237. package/just-task.js +1 -0
  238. package/overrides.json +51 -46
  239. package/package.json +35 -33
  240. package/src/Libraries/Components/Button/ButtonWin32.Props.ts +1 -1
  241. package/src/Libraries/Components/Button/ButtonWin32.tsx +0 -2
  242. package/src/Libraries/Components/Touchable/Tests/TouchableWin32Test.tsx +2 -2
  243. package/src/Libraries/Components/Touchable/TouchableWin32.tsx +1 -1
  244. package/src/Libraries/Components/View/ViewAccessibility.d.ts +8 -2
  245. package/src/Libraries/StyleSheet/PlatformColorValueTypesWin32.d.ts +1 -1
  246. package/types/experimental.d.ts +44 -0
  247. package/types/index.d.ts +2 -1
  248. package/types/modules/Devtools.d.ts +1 -0
  249. package/types/modules/globals.d.ts +16 -1
  250. package/IntegrationTests/BUCK +0 -32
  251. package/IntegrationTests/PropertiesUpdateTest.js +0 -29
  252. package/IntegrationTests/RCTRootViewIntegrationTestApp.js +0 -86
  253. package/IntegrationTests/ReactContentSizeUpdateTest.js +0 -89
  254. package/IntegrationTests/SizeFlexibilityUpdateTest.js +0 -106
  255. package/Libraries/Components/TextInput/TextInput.Types.win32.d.ts +0 -51
  256. package/Libraries/Components/TextInput/TextInput.Types.win32.js +0 -3
  257. package/Libraries/Components/TextInput/TextInput.Types.win32.js.map +0 -1
  258. package/Libraries/Utilities/AcessibilityMapping.js +0 -154
  259. package/Libraries/Utilities/AcessibilityMapping.win32.js +0 -156
  260. package/Libraries/Utilities/NativeDevSplitBundleLoader.js +0 -19
  261. package/Libraries/Utilities/useColorScheme.win32.js +0 -26
  262. package/flow/use-sync-external-store.js +0 -20
  263. package/flow-typed/npm/base64-js_v1.x.x.js +0 -12
  264. package/flow-typed/npm/glob_v7.x.x.js +0 -79
  265. package/flow-typed/npm/pretty-format_v26.x.x.js +0 -49
  266. package/flow-typed/npm/promise_v8.x.x.js +0 -30
  267. package/flow-typed/npm/react-dom_v17.x.x.js +0 -139
  268. package/flow-typed/npm/react-test-renderer_v16.x.x.js +0 -79
  269. package/flow-typed/npm/stacktrace-parser_v0.1.x.js +0 -17
  270. package/flow-typed/npm/yargs_v17.x.x.js +0 -341
  271. package/src/Libraries/Components/TextInput/TextInput.Types.win32.ts +0 -68
  272. /package/Libraries/{Renderer/public → ReactNative/ReactFabricPublicInstance}/ReactFabricPublicInstanceUtils.js +0 -0
@@ -65,6 +65,8 @@ const PERMISSIONS = Object.freeze({
65
65
  READ_MEDIA_IMAGES: 'android.permission.READ_MEDIA_IMAGES',
66
66
  READ_MEDIA_VIDEO: 'android.permission.READ_MEDIA_VIDEO',
67
67
  READ_MEDIA_AUDIO: 'android.permission.READ_MEDIA_AUDIO',
68
+ READ_MEDIA_VISUAL_USER_SELECTED:
69
+ 'android.permission.READ_MEDIA_VISUAL_USER_SELECTED',
68
70
  WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',
69
71
  BLUETOOTH_CONNECT: 'android.permission.BLUETOOTH_CONNECT',
70
72
  BLUETOOTH_SCAN: 'android.permission.BLUETOOTH_SCAN',
@@ -115,6 +117,7 @@ class PermissionsAndroid {
115
117
  READ_MEDIA_IMAGES: string,
116
118
  READ_MEDIA_VIDEO: string,
117
119
  READ_MEDIA_AUDIO: string,
120
+ READ_MEDIA_VISUAL_USER_SELECTED: string,
118
121
  READ_PHONE_NUMBERS: string,
119
122
  READ_PHONE_STATE: string,
120
123
  READ_SMS: string,
@@ -287,7 +290,6 @@ class PermissionsAndroid {
287
290
  NativePermissionsAndroid,
288
291
  'PermissionsAndroid is not installed correctly.',
289
292
  );
290
-
291
293
  return NativePermissionsAndroid.requestMultiplePermissions(permissions);
292
294
  }
293
295
  }
@@ -131,9 +131,17 @@ export type PressabilityConfig = $ReadOnly<{|
131
131
  */
132
132
  onPressOut?: ?(event: PressEvent) => mixed,
133
133
 
134
+ /**
135
+ * Whether to prevent any other native components from becoming responder
136
+ * while this pressable is responder.
137
+ */
138
+ blockNativeResponder?: ?boolean,
139
+
134
140
  /**
135
141
  * Returns whether a long press gesture should cancel the press gesture.
136
142
  * Defaults to true.
143
+ *
144
+ * @deprecated
137
145
  */
138
146
  onLongPressShouldCancelPress_DEPRECATED?: ?() => boolean,
139
147
 
@@ -142,6 +150,8 @@ export type PressabilityConfig = $ReadOnly<{|
142
150
  *
143
151
  * Returns whether to yield to a lock termination request (e.g. if a native
144
152
  * scroll gesture attempts to steal the responder lock).
153
+ *
154
+ * @deprecated
145
155
  */
146
156
  onResponderTerminationRequest_DEPRECATED?: ?() => boolean,
147
157
 
@@ -163,7 +173,7 @@ export type EventHandlers = $ReadOnly<{|
163
173
  onMouseLeave?: (event: MouseEvent) => void,
164
174
  onPointerEnter?: (event: PointerEvent) => void,
165
175
  onPointerLeave?: (event: PointerEvent) => void,
166
- onResponderGrant: (event: PressEvent) => void,
176
+ onResponderGrant: (event: PressEvent) => void | boolean,
167
177
  onResponderMove: (event: PressEvent) => void,
168
178
  onResponderRelease: (event: PressEvent) => void,
169
179
  onResponderTerminate: (event: PressEvent) => void,
@@ -295,7 +305,7 @@ let longPressDeactivationDistance = DEFAULT_LONG_PRESS_DEACTIVATION_DISTANCE;
295
305
  *
296
306
  * - When a press has activated (e.g. highlight an element)
297
307
  * - When a press has deactivated (e.g. un-highlight an element)
298
- * - When a press sould trigger an action, meaning it activated and deactivated
308
+ * - When a press should trigger an action, meaning it activated and deactivated
299
309
  * while within the geometry of the element without the lock being stolen.
300
310
  *
301
311
  * A high quality interaction isn't as simple as you might think. There should
@@ -464,7 +474,7 @@ export default class Pressability {
464
474
  return !disabled;
465
475
  },
466
476
 
467
- onResponderGrant: (event: PressEvent): void => {
477
+ onResponderGrant: (event: PressEvent): void | boolean => {
468
478
  event.persist();
469
479
 
470
480
  this._cancelPressOutDelayTimeout();
@@ -490,6 +500,8 @@ export default class Pressability {
490
500
  this._longPressDelayTimeout = setTimeout(() => {
491
501
  this._handleLongPress(event);
492
502
  }, delayLongPress + delayPressIn);
503
+
504
+ return this._config.blockNativeResponder === true;
493
505
  },
494
506
 
495
507
  onResponderMove: (event: PressEvent): void => {
@@ -547,6 +559,19 @@ export default class Pressability {
547
559
  },
548
560
 
549
561
  onClick: (event: PressEvent): void => {
562
+ // If event has `pointerType`, it was emitted from a PointerEvent and
563
+ // we should ignore it to avoid triggering `onPress` twice.
564
+ if (event?.nativeEvent?.hasOwnProperty?.('pointerType')) {
565
+ return;
566
+ }
567
+
568
+ // for non-pointer click events (e.g. accessibility clicks), we should only dispatch when we're the "real" target
569
+ // in particular, we shouldn't respond to clicks from nested pressables
570
+ if (event?.currentTarget !== event?.target) {
571
+ event?.stopPropagation();
572
+ return;
573
+ }
574
+
550
575
  const {onPress, disabled} = this._config;
551
576
  if (onPress != null && disabled !== true) {
552
577
  onPress(event);
@@ -52,7 +52,7 @@ export type PressabilityConfig = $ReadOnly<{|
52
52
  pressRectOffset?: ?RectOrSize,
53
53
 
54
54
  /**
55
- * Whether to disable the systemm sound when `onPress` fires on Android.
55
+ * Whether to disable the system sound when `onPress` fires on Android.
56
56
  **/
57
57
  android_disableSound?: ?boolean,
58
58
 
@@ -123,7 +123,7 @@ export type PressabilityConfig = $ReadOnly<{|
123
123
  onLongPress?: ?(event: PressEvent) => mixed,
124
124
 
125
125
  /**
126
- * Called when a press gestute has been triggered.
126
+ * Called when a press gesture has been triggered.
127
127
  */
128
128
  onPress?: ?(event: PressEvent) => mixed,
129
129
 
@@ -142,9 +142,17 @@ export type PressabilityConfig = $ReadOnly<{|
142
142
  */
143
143
  onPressOut?: ?(event: PressEvent) => mixed,
144
144
 
145
+ /**
146
+ * Whether to prevent any other native components from becoming responder
147
+ * while this pressable is responder.
148
+ */
149
+ blockNativeResponder?: ?boolean,
150
+
145
151
  /**
146
152
  * Returns whether a long press gesture should cancel the press gesture.
147
153
  * Defaults to true.
154
+ *
155
+ * @deprecated
148
156
  */
149
157
  onLongPressShouldCancelPress_DEPRECATED?: ?() => boolean,
150
158
 
@@ -153,6 +161,8 @@ export type PressabilityConfig = $ReadOnly<{|
153
161
  *
154
162
  * Returns whether to yield to a lock termination request (e.g. if a native
155
163
  * scroll gesture attempts to steal the responder lock).
164
+ *
165
+ * @deprecated
156
166
  */
157
167
  onResponderTerminationRequest_DEPRECATED?: ?() => boolean,
158
168
 
@@ -190,7 +200,7 @@ export type EventHandlers = $ReadOnly<{|
190
200
  onMouseLeave?: (event: MouseEvent) => void,
191
201
  onPointerEnter?: (event: PointerEvent) => void,
192
202
  onPointerLeave?: (event: PointerEvent) => void,
193
- onResponderGrant: (event: PressEvent) => void,
203
+ onResponderGrant: (event: PressEvent) => void | boolean,
194
204
  onResponderMove: (event: PressEvent) => void,
195
205
  onResponderRelease: (event: PressEvent) => void,
196
206
  onResponderTerminate: (event: PressEvent) => void,
@@ -326,7 +336,7 @@ let longPressDeactivationDistance = DEFAULT_LONG_PRESS_DEACTIVATION_DISTANCE;
326
336
  *
327
337
  * - When a press has activated (e.g. highlight an element)
328
338
  * - When a press has deactivated (e.g. un-highlight an element)
329
- * - When a press sould trigger an action, meaning it activated and deactivated
339
+ * - When a press should trigger an action, meaning it activated and deactivated
330
340
  * while within the geometry of the element without the lock being stolen.
331
341
  *
332
342
  * A high quality interaction isn't as simple as you might think. There should
@@ -497,7 +507,7 @@ export default class Pressability {
497
507
  return !disabled;
498
508
  },
499
509
 
500
- onResponderGrant: (event: PressEvent): void => {
510
+ onResponderGrant: (event: PressEvent): void | boolean => {
501
511
  event.persist();
502
512
 
503
513
  this._cancelPressOutDelayTimeout();
@@ -523,6 +533,8 @@ export default class Pressability {
523
533
  this._longPressDelayTimeout = setTimeout(() => {
524
534
  this._handleLongPress(event);
525
535
  }, delayLongPress + delayPressIn);
536
+
537
+ return this._config.blockNativeResponder === true;
526
538
  },
527
539
 
528
540
  onResponderMove: (event: PressEvent): void => {
@@ -580,6 +592,19 @@ export default class Pressability {
580
592
  },
581
593
 
582
594
  onClick: (event: PressEvent): void => {
595
+ // If event has `pointerType`, it was emitted from a PointerEvent and
596
+ // we should ignore it to avoid triggering `onPress` twice.
597
+ if (event?.nativeEvent?.hasOwnProperty?.('pointerType')) {
598
+ return;
599
+ }
600
+
601
+ // for non-pointer click events (e.g. accessibility clicks), we should only dispatch when we're the "real" target
602
+ // in particular, we shouldn't respond to clicks from nested pressables
603
+ if (event?.currentTarget !== event?.target) {
604
+ event?.stopPropagation();
605
+ return;
606
+ }
607
+
583
608
  const {onPress, disabled} = this._config;
584
609
  if (onPress != null && disabled !== true) {
585
610
  onPress(event);
@@ -36,7 +36,6 @@ type State = {|
36
36
  devtoolsOverlay: ?React.Node,
37
37
  traceUpdateOverlay: ?React.Node,
38
38
  mainKey: number,
39
- hasError: boolean,
40
39
  |};
41
40
 
42
41
  class AppContainer extends React.Component<Props, State> {
@@ -45,7 +44,6 @@ class AppContainer extends React.Component<Props, State> {
45
44
  devtoolsOverlay: null,
46
45
  traceUpdateOverlay: null,
47
46
  mainKey: 1,
48
- hasError: false,
49
47
  };
50
48
  _mainRef: ?React.ElementRef<typeof View>;
51
49
  _subscription: ?EventSubscription = null;
@@ -151,10 +149,11 @@ class AppContainer extends React.Component<Props, State> {
151
149
  </Wrapper>
152
150
  );
153
151
  }
152
+
154
153
  return (
155
154
  <RootTagContext.Provider value={createRootTag(this.props.rootTag)}>
156
155
  <View style={styles.appContainer} pointerEvents="box-none">
157
- {!this.state.hasError && innerView}
156
+ {innerView}
158
157
  {this.state.traceUpdateOverlay}
159
158
  {this.state.devtoolsOverlay}
160
159
  {this.state.inspector}
@@ -85,11 +85,6 @@ export namespace AppRegistry {
85
85
  displayMode?: number,
86
86
  ): void;
87
87
 
88
- export function registerHeadlessTask(
89
- appKey: string,
90
- task: TaskProvider,
91
- ): void;
92
-
93
88
  export function getRunnable(appKey: string): Runnable | undefined;
94
89
 
95
90
  export function getRegistry(): {sections: string[]; runnables: Runnable[]};
@@ -10,6 +10,7 @@
10
10
 
11
11
  import type {RootTag} from '../Types/RootTagTypes';
12
12
  import type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';
13
+ import type {DisplayModeType} from './DisplayMode';
13
14
 
14
15
  import BatchedBridge from '../BatchedBridge/BatchedBridge';
15
16
  import BugReporting from '../BugReporting/BugReporting';
@@ -30,29 +31,34 @@ type TaskCancelProvider = () => TaskCanceller;
30
31
 
31
32
  export type ComponentProvider = () => React$ComponentType<any>;
32
33
  export type ComponentProviderInstrumentationHook = (
33
- component: ComponentProvider,
34
+ component_: ComponentProvider,
34
35
  scopedPerformanceLogger: IPerformanceLogger,
35
36
  ) => React$ComponentType<any>;
36
37
  export type AppConfig = {
37
38
  appKey: string,
38
39
  component?: ComponentProvider,
39
- run?: Function,
40
+ run?: Runnable,
40
41
  section?: boolean,
41
42
  ...
42
43
  };
43
- export type Runnable = {
44
- component?: ComponentProvider,
45
- run: Function,
46
- ...
44
+ type AppParameters = {
45
+ initialProps: $ReadOnly<{[string]: mixed, ...}>,
46
+ rootTag: RootTag,
47
+ fabric?: boolean,
48
+ concurrentRoot?: boolean,
47
49
  };
48
- export type Runnables = {[appKey: string]: Runnable, ...};
50
+ export type Runnable = (
51
+ appParameters: AppParameters,
52
+ displayMode: DisplayModeType,
53
+ ) => void;
54
+ export type Runnables = {[appKey: string]: Runnable};
49
55
  export type Registry = {
50
- sections: Array<string>,
56
+ sections: $ReadOnlyArray<string>,
51
57
  runnables: Runnables,
52
58
  ...
53
59
  };
54
60
  export type WrapperComponentProvider = (
55
- appParameters: any,
61
+ appParameters: Object,
56
62
  ) => React$ComponentType<any>;
57
63
 
58
64
  const runnables: Runnables = {};
@@ -110,30 +116,28 @@ const AppRegistry = {
110
116
  componentProvider: ComponentProvider,
111
117
  section?: boolean,
112
118
  ): string {
113
- let scopedPerformanceLogger = createPerformanceLogger();
114
- runnables[appKey] = {
115
- componentProvider,
116
- run: (appParameters, displayMode) => {
117
- const concurrentRootEnabled =
118
- appParameters.initialProps?.concurrentRoot ||
119
- appParameters.concurrentRoot;
120
- renderApplication(
121
- componentProviderInstrumentationHook(
122
- componentProvider,
123
- scopedPerformanceLogger,
124
- ),
125
- appParameters.initialProps,
126
- appParameters.rootTag,
127
- wrapperComponentProvider && wrapperComponentProvider(appParameters),
128
- appParameters.fabric,
129
- showArchitectureIndicator,
119
+ const scopedPerformanceLogger = createPerformanceLogger();
120
+ runnables[appKey] = (appParameters, displayMode) => {
121
+ const concurrentRootEnabled = Boolean(
122
+ appParameters.initialProps?.concurrentRoot ||
123
+ appParameters.concurrentRoot,
124
+ );
125
+ renderApplication(
126
+ componentProviderInstrumentationHook(
127
+ componentProvider,
130
128
  scopedPerformanceLogger,
131
- appKey === 'LogBox',
132
- appKey,
133
- coerceDisplayMode(displayMode),
134
- concurrentRootEnabled,
135
- );
136
- },
129
+ ),
130
+ appParameters.initialProps,
131
+ appParameters.rootTag,
132
+ wrapperComponentProvider && wrapperComponentProvider(appParameters),
133
+ appParameters.fabric,
134
+ showArchitectureIndicator,
135
+ scopedPerformanceLogger,
136
+ appKey === 'LogBox', // is logbox
137
+ appKey,
138
+ displayMode,
139
+ concurrentRootEnabled,
140
+ );
137
141
  };
138
142
  if (section) {
139
143
  sections[appKey] = runnables[appKey];
@@ -141,8 +145,8 @@ const AppRegistry = {
141
145
  return appKey;
142
146
  },
143
147
 
144
- registerRunnable(appKey: string, run: Function): string {
145
- runnables[appKey] = {run};
148
+ registerRunnable(appKey: string, run: Runnable): string {
149
+ runnables[appKey] = run;
146
150
  return appKey;
147
151
  },
148
152
 
@@ -150,11 +154,11 @@ const AppRegistry = {
150
154
  AppRegistry.registerComponent(appKey, component, true);
151
155
  },
152
156
 
153
- getAppKeys(): Array<string> {
157
+ getAppKeys(): $ReadOnlyArray<string> {
154
158
  return Object.keys(runnables);
155
159
  },
156
160
 
157
- getSectionKeys(): Array<string> {
161
+ getSectionKeys(): $ReadOnlyArray<string> {
158
162
  return Object.keys(sections);
159
163
  },
160
164
 
@@ -188,7 +192,7 @@ const AppRegistry = {
188
192
  */
189
193
  runApplication(
190
194
  appKey: string,
191
- appParameters: any,
195
+ appParameters: AppParameters,
192
196
  displayMode?: number,
193
197
  ): void {
194
198
  if (appKey !== 'LogBox') {
@@ -203,7 +207,7 @@ const AppRegistry = {
203
207
  );
204
208
  }
205
209
  invariant(
206
- runnables[appKey] && runnables[appKey].run,
210
+ runnables[appKey],
207
211
  `"${appKey}" has not been registered. This can happen if:\n` +
208
212
  '* Metro (the local dev server) is run from the wrong folder. ' +
209
213
  'Check if Metro is running, stop it and restart it in the current project.\n' +
@@ -211,7 +215,7 @@ const AppRegistry = {
211
215
  );
212
216
 
213
217
  SceneTracker.setActiveScene({name: appKey});
214
- runnables[appKey].run(appParameters, displayMode);
218
+ runnables[appKey](appParameters, coerceDisplayMode(displayMode));
215
219
  },
216
220
 
217
221
  /**
@@ -219,7 +223,7 @@ const AppRegistry = {
219
223
  */
220
224
  setSurfaceProps(
221
225
  appKey: string,
222
- appParameters: any,
226
+ appParameters: Object,
223
227
  displayMode?: number,
224
228
  ): void {
225
229
  if (appKey !== 'LogBox') {
@@ -235,14 +239,14 @@ const AppRegistry = {
235
239
  );
236
240
  }
237
241
  invariant(
238
- runnables[appKey] && runnables[appKey].run,
242
+ runnables[appKey],
239
243
  `"${appKey}" has not been registered. This can happen if:\n` +
240
244
  '* Metro (the local dev server) is run from the wrong folder. ' +
241
245
  'Check if Metro is running, stop it and restart it in the current project.\n' +
242
246
  "* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.",
243
247
  );
244
248
 
245
- runnables[appKey].run(appParameters, displayMode);
249
+ runnables[appKey](appParameters, coerceDisplayMode(displayMode));
246
250
  },
247
251
 
248
252
  /**
@@ -338,18 +342,27 @@ const AppRegistry = {
338
342
  },
339
343
  };
340
344
 
341
- if (!(global.RN$Bridgeless === true)) {
342
- BatchedBridge.registerCallableModule('AppRegistry', AppRegistry);
345
+ // Register LogBox as a default surface
346
+ AppRegistry.registerComponent('LogBox', () => {
347
+ if (__DEV__ && typeof jest === 'undefined') {
348
+ return require('../LogBox/LogBoxInspectorContainer').default;
349
+ } else {
350
+ return function NoOp() {
351
+ return null;
352
+ };
353
+ }
354
+ });
343
355
 
344
- AppRegistry.registerComponent('LogBox', () => {
345
- if (__DEV__) {
346
- return require('../LogBox/LogBoxInspectorContainer').default;
347
- } else {
348
- return function NoOp() {
349
- return null;
350
- };
351
- }
352
- });
356
+ global.RN$AppRegistry = AppRegistry;
357
+
358
+ // Backwards compat with SurfaceRegistry, remove me later
359
+ global.RN$SurfaceRegistry = {
360
+ renderSurface: AppRegistry.runApplication,
361
+ setSurfaceProps: AppRegistry.setSurfaceProps,
362
+ };
363
+
364
+ if (global.RN$Bridgeless !== true) {
365
+ BatchedBridge.registerCallableModule('AppRegistry', AppRegistry);
353
366
  }
354
367
 
355
368
  module.exports = AppRegistry;
@@ -14,26 +14,47 @@ import type {RootTag} from '../Types/RootTagTypes';
14
14
 
15
15
  import {unstable_hasComponent} from '../NativeComponent/NativeComponentRegistryUnstable';
16
16
 
17
+ let cachedConstants = null;
18
+
17
19
  const errorMessageForMethod = (methodName: string): string =>
18
20
  "[ReactNative Architecture][JS] '" +
19
21
  methodName +
20
22
  "' is not available in the new React Native architecture.";
21
23
 
22
- module.exports = {
24
+ function nativeViewConfigsInBridgelessModeEnabled(): boolean {
25
+ return global.RN$LegacyInterop_UIManager_getConstants !== undefined;
26
+ }
27
+
28
+ function getCachedConstants(): Object {
29
+ if (!cachedConstants) {
30
+ cachedConstants = global.RN$LegacyInterop_UIManager_getConstants();
31
+ }
32
+ return cachedConstants;
33
+ }
34
+
35
+ const UIManagerJS: {[string]: $FlowFixMe} = {
23
36
  getViewManagerConfig: (viewManagerName: string): mixed => {
24
- console.error(
25
- errorMessageForMethod('getViewManagerConfig') +
26
- 'Use hasViewManagerConfig instead. viewManagerName: ' +
27
- viewManagerName,
28
- );
29
- return null;
37
+ if (nativeViewConfigsInBridgelessModeEnabled()) {
38
+ return getCachedConstants()[viewManagerName];
39
+ } else {
40
+ console.error(
41
+ errorMessageForMethod('getViewManagerConfig') +
42
+ 'Use hasViewManagerConfig instead. viewManagerName: ' +
43
+ viewManagerName,
44
+ );
45
+ return null;
46
+ }
30
47
  },
31
48
  hasViewManagerConfig: (viewManagerName: string): boolean => {
32
49
  return unstable_hasComponent(viewManagerName);
33
50
  },
34
51
  getConstants: (): Object => {
35
- console.error(errorMessageForMethod('getConstants'));
36
- return {};
52
+ if (nativeViewConfigsInBridgelessModeEnabled()) {
53
+ return getCachedConstants();
54
+ } else {
55
+ console.error(errorMessageForMethod('getConstants'));
56
+ return null;
57
+ }
37
58
  },
38
59
  getConstantsForViewManager: (viewManagerName: string): Object => {
39
60
  console.error(errorMessageForMethod('getConstantsForViewManager'));
@@ -160,3 +181,11 @@ module.exports = {
160
181
  dismissPopupMenu: (): void =>
161
182
  console.error(errorMessageForMethod('dismissPopupMenu')),
162
183
  };
184
+
185
+ if (nativeViewConfigsInBridgelessModeEnabled()) {
186
+ Object.keys(getCachedConstants()).forEach(viewConfigName => {
187
+ UIManagerJS[viewConfigName] = getCachedConstants()[viewConfigName];
188
+ });
189
+ }
190
+
191
+ module.exports = UIManagerJS;