react-native 0.66.0 → 0.67.0-rc.2

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 (448) hide show
  1. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +14 -1
  2. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -0
  3. package/Libraries/Animated/AnimatedEvent.js +23 -4
  4. package/Libraries/Animated/NativeAnimatedHelper.js +2 -2
  5. package/Libraries/Animated/components/AnimatedImage.js +3 -3
  6. package/Libraries/Animated/components/AnimatedScrollView.js +3 -3
  7. package/Libraries/Animated/components/AnimatedText.js +3 -3
  8. package/Libraries/Animated/components/AnimatedView.js +1 -3
  9. package/Libraries/Animated/createAnimatedComponent.js +3 -34
  10. package/Libraries/Components/Button.js +3 -0
  11. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +3 -6
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -7
  13. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +1 -0
  14. package/Libraries/Components/ScrollView/ScrollView.js +17 -16
  15. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +268 -252
  16. package/Libraries/Components/View/View.js +1 -1
  17. package/Libraries/Components/View/ViewAccessibility.js +1 -1
  18. package/Libraries/Core/ExceptionsManager.js +45 -80
  19. package/Libraries/Core/ExtendedError.js +0 -1
  20. package/Libraries/Core/ReactNativeVersion.js +2 -2
  21. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  22. package/Libraries/Core/setUpGlobals.js +2 -4
  23. package/Libraries/Core/setUpTimers.js +2 -2
  24. package/Libraries/Image/Image.ios.js +6 -0
  25. package/Libraries/Image/ImageBackground.js +10 -8
  26. package/Libraries/Image/ImageProps.js +28 -0
  27. package/Libraries/Image/RCTImageView.mm +4 -0
  28. package/Libraries/LogBox/Data/LogBoxData.js +18 -19
  29. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  30. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  31. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  32. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  33. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  34. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -3
  35. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +6 -3
  36. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +1 -2
  37. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -1
  38. package/Libraries/NewAppScreen/components/logo.png +0 -0
  39. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +2 -1
  40. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +2 -0
  41. package/Libraries/Pressability/Pressability.js +13 -13
  42. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  43. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +0 -1
  44. package/Libraries/ReactNative/AppRegistry.js +4 -2
  45. package/Libraries/Renderer/REVISION +1 -1
  46. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +1569 -875
  47. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +529 -319
  48. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +570 -362
  49. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +1592 -891
  50. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +521 -311
  51. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +562 -354
  52. package/Libraries/Share/Share.js +1 -1
  53. package/Libraries/StyleSheet/normalizeColor.js +2 -2
  54. package/Libraries/Text/TextInput/Multiline/RCTUITextView.m +4 -2
  55. package/Libraries/Text/TextInput/RCTBaseTextInputView.m +2 -12
  56. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
  57. package/Libraries/Text/TextProps.js +1 -7
  58. package/Libraries/TurboModule/TurboModuleRegistry.js +1 -1
  59. package/Libraries/Utilities/HMRClient.js +1 -1
  60. package/README.md +1 -1
  61. package/React/Base/RCTBridge+Private.h +8 -0
  62. package/React/Base/RCTBridge.h +4 -0
  63. package/React/Base/RCTBridge.m +19 -7
  64. package/React/Base/RCTBridgeModule.h +2 -11
  65. package/React/Base/RCTBundleURLProvider.h +1 -1
  66. package/React/Base/RCTBundleURLProvider.mm +5 -3
  67. package/React/Base/RCTConstants.h +0 -6
  68. package/React/Base/RCTConstants.m +0 -15
  69. package/React/Base/RCTConvert.h +1 -1
  70. package/React/Base/RCTDefines.h +12 -3
  71. package/React/Base/RCTEventDispatcherProtocol.h +2 -0
  72. package/React/Base/RCTJSThread.h +29 -0
  73. package/React/Base/RCTJSThread.m +19 -0
  74. package/React/Base/RCTRootView.h +15 -0
  75. package/React/Base/RCTRootView.m +15 -0
  76. package/React/Base/RCTTouchHandler.m +1 -9
  77. package/React/Base/RCTUtils.h +3 -0
  78. package/React/Base/RCTUtils.m +14 -7
  79. package/React/Base/RCTVersion.m +2 -2
  80. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +11 -0
  81. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +35 -1
  82. package/React/CoreModules/RCTAccessibilityManager+Internal.h +24 -0
  83. package/React/CoreModules/RCTAccessibilityManager.mm +18 -3
  84. package/React/CoreModules/RCTActionSheetManager.mm +14 -5
  85. package/React/CoreModules/RCTAppearance.mm +3 -1
  86. package/React/CoreModules/RCTDevLoadingView.mm +5 -10
  87. package/React/CoreModules/RCTDevSettings.mm +6 -6
  88. package/React/CoreModules/RCTDevSplitBundleLoader.mm +1 -1
  89. package/React/CoreModules/RCTDeviceInfo.mm +4 -4
  90. package/React/CoreModules/RCTEventDispatcher.mm +5 -0
  91. package/React/CoreModules/RCTExceptionsManager.mm +11 -24
  92. package/React/CoreModules/RCTPerfMonitor.mm +9 -4
  93. package/React/CoreModules/RCTRedBox.mm +1 -5
  94. package/React/CxxBridge/RCTCxxBridge.mm +18 -1
  95. package/React/DevSupport/RCTPackagerConnection.h +3 -0
  96. package/React/DevSupport/RCTPackagerConnection.mm +9 -5
  97. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +11 -3
  98. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +0 -3
  99. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +16 -0
  100. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
  101. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +3 -5
  102. package/React/Fabric/Mounting/RCTMountingManager.mm +15 -1
  103. package/React/Fabric/RCTScheduler.mm +12 -5
  104. package/React/Fabric/RCTSurfacePresenter.mm +0 -4
  105. package/React/Fabric/RCTSurfaceTouchHandler.mm +6 -20
  106. package/React/Fabric/Surface/RCTFabricSurface.mm +1 -3
  107. package/React/React-RCTFabric.podspec +0 -1
  108. package/React/Views/RCTFont.mm +54 -38
  109. package/React/Views/RCTView.m +1 -6
  110. package/React/Views/RCTViewManager.m +3 -2
  111. package/React/Views/SafeAreaView/RCTSafeAreaView.m +1 -5
  112. package/React/Views/ScrollView/RCTScrollView.m +5 -15
  113. package/React/Views/ScrollView/RCTScrollViewManager.m +0 -7
  114. package/React/Views/UIView+React.m +2 -11
  115. package/React-Core.podspec +0 -1
  116. package/ReactAndroid/build.gradle +11 -5
  117. package/ReactAndroid/gradle.properties +1 -1
  118. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -1
  119. package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -7
  120. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/BUCK +2 -1
  121. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/HermesExecutor.java +14 -8
  122. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +0 -1
  123. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +7 -0
  124. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +7 -0
  125. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +63 -26
  126. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +50 -2
  127. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +31 -0
  128. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +17 -1
  129. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +2 -0
  130. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +13 -2
  131. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -0
  132. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
  133. package/ReactAndroid/src/main/java/com/facebook/react/bridge/RuntimeScheduler.java +21 -0
  134. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +2 -2
  135. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegate.java +40 -0
  136. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegateFactory.java +24 -0
  137. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +0 -6
  138. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +16 -0
  139. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -0
  140. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +5 -2
  141. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +102 -0
  142. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +35 -11
  143. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +5 -72
  144. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +12 -0
  145. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.java +92 -0
  146. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java +27 -42
  147. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +14 -0
  148. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +5 -4
  149. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +3 -7
  150. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +41 -2
  151. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +8 -3
  152. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +43 -9
  153. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +2 -1
  154. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.cpp +69 -0
  155. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.h +40 -0
  156. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +2 -6
  157. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +84 -32
  158. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +4 -2
  159. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.cpp +20 -2
  160. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.h +2 -1
  161. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +9 -1
  162. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +19 -4
  163. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +6 -2
  164. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +2 -1
  165. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/JSCExecutor.java +6 -1
  166. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.java +10 -1
  167. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BUCK +0 -6
  168. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +4 -1
  169. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.java +9 -8
  170. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java +7 -19
  171. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
  172. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
  173. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +2 -2
  174. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
  175. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
  176. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
  177. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  178. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +8 -8
  179. package/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java +1 -1
  180. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/BUCK +0 -6
  181. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -1
  182. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -5
  183. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +0 -12
  184. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +1 -1
  185. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +75 -10
  186. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +19 -22
  187. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +42 -0
  188. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +7 -1
  189. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +2 -2
  190. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +7 -0
  191. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +2 -1
  192. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +17 -9
  193. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +43 -8
  194. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java +15 -16
  195. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +108 -19
  196. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +0 -6
  197. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +79 -4
  198. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +5 -0
  199. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +94 -3
  200. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +21 -1
  201. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +5 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -4
  203. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +16 -0
  204. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +9 -1
  205. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +20 -1
  206. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +25 -6
  207. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +25 -5
  208. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
  210. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +8 -8
  211. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +19 -0
  212. package/ReactAndroid/src/main/jni/react/jni/Android.mk +3 -2
  213. package/ReactAndroid/src/main/jni/react/jni/BUCK +4 -5
  214. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +49 -7
  215. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +15 -2
  216. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
  217. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +25 -0
  218. package/{ReactCommon/react/renderer/core/Constants.cpp → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +6 -8
  219. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -0
  220. package/ReactAndroid/src/main/jni/react/perftests/BUCK +0 -4
  221. package/ReactAndroid/src/main/third-party/android/androidx/BUCK +6 -6
  222. package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +43 -0
  223. package/ReactAndroid/src/test/java/com/facebook/react/modules/clipboard/ClipboardModuleTest.java +3 -1
  224. package/ReactCommon/React-Fabric.podspec +9 -1
  225. package/ReactCommon/better/BUCK +0 -6
  226. package/ReactCommon/callinvoker/BUCK +2 -8
  227. package/ReactCommon/cxxreact/BUCK +1 -16
  228. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  229. package/ReactCommon/hermes/inspector/tools/msggen/package.json +7 -4
  230. package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +13 -10
  231. package/ReactCommon/jsi/BUCK +0 -9
  232. package/ReactCommon/jsinspector/BUCK +0 -5
  233. package/ReactCommon/logger/BUCK +0 -5
  234. package/ReactCommon/react/config/BUCK +0 -6
  235. package/ReactCommon/react/debug/BUCK +0 -6
  236. package/ReactCommon/react/nativemodule/core/BUCK +0 -5
  237. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +14 -31
  238. package/ReactCommon/react/nativemodule/samples/BUCK +0 -7
  239. package/ReactCommon/react/renderer/animations/BUCK +1 -4
  240. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
  241. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -26
  242. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
  243. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +912 -1147
  244. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +80 -245
  245. package/ReactCommon/react/renderer/animations/conversions.h +212 -0
  246. package/ReactCommon/react/renderer/animations/primitives.h +104 -0
  247. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +3 -3
  248. package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
  249. package/ReactCommon/react/renderer/animations/utils.h +80 -0
  250. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
  251. package/ReactCommon/react/renderer/attributedstring/BUCK +0 -6
  252. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +7 -3
  253. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
  254. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +1 -1
  255. package/ReactCommon/react/renderer/attributedstring/conversions.h +58 -3
  256. package/ReactCommon/react/renderer/attributedstring/primitives.h +18 -1
  257. package/ReactCommon/react/renderer/componentregistry/BUCK +0 -6
  258. package/ReactCommon/react/renderer/componentregistry/native/BUCK +0 -6
  259. package/ReactCommon/react/renderer/components/image/BUCK +0 -6
  260. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +0 -2
  261. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +0 -6
  262. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +0 -4
  263. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +0 -6
  264. package/ReactCommon/react/renderer/components/modal/BUCK +0 -6
  265. package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +0 -5
  266. package/ReactCommon/react/renderer/components/progressbar/BUCK +0 -6
  267. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -3
  268. package/ReactCommon/react/renderer/components/root/BUCK +0 -6
  269. package/ReactCommon/react/renderer/components/safeareaview/BUCK +0 -6
  270. package/ReactCommon/react/renderer/components/scrollview/BUCK +0 -6
  271. package/ReactCommon/react/renderer/components/slider/BUCK +0 -6
  272. package/ReactCommon/react/renderer/components/slider/SliderComponentDescriptor.h +0 -3
  273. package/ReactCommon/react/renderer/components/switch/BUCK +0 -6
  274. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -3
  275. package/ReactCommon/react/renderer/components/text/BUCK +0 -6
  276. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +1 -20
  277. package/ReactCommon/react/renderer/components/textinput/BUCK +0 -6
  278. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +0 -3
  279. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +2 -0
  280. package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +0 -6
  281. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h +0 -3
  282. package/ReactCommon/react/renderer/components/unimplementedview/BUCK +0 -6
  283. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +0 -4
  284. package/ReactCommon/react/renderer/components/view/Android.mk +1 -1
  285. package/ReactCommon/react/renderer/components/view/BUCK +0 -6
  286. package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
  287. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -23
  288. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +2 -3
  289. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +3 -3
  290. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
  291. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +4 -0
  292. package/ReactCommon/react/renderer/core/BUCK +2 -6
  293. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +14 -9
  294. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +1 -10
  295. package/ReactCommon/react/renderer/core/EventEmitter.cpp +9 -4
  296. package/ReactCommon/react/renderer/core/EventEmitter.h +2 -1
  297. package/ReactCommon/react/renderer/core/Props.h +1 -0
  298. package/ReactCommon/react/renderer/core/PropsParserContext.h +3 -2
  299. package/ReactCommon/react/renderer/core/RawEvent.h +7 -5
  300. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
  301. package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
  302. package/ReactCommon/react/renderer/core/ShadowNode.cpp +7 -10
  303. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
  304. package/ReactCommon/react/renderer/debug/BUCK +0 -6
  305. package/ReactCommon/react/renderer/element/BUCK +0 -6
  306. package/ReactCommon/react/renderer/graphics/Android.mk +1 -1
  307. package/ReactCommon/react/renderer/graphics/BUCK +0 -6
  308. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +0 -1
  309. package/ReactCommon/react/renderer/graphics/Transform.cpp +1 -1
  310. package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
  311. package/ReactCommon/react/renderer/imagemanager/BUCK +0 -6
  312. package/ReactCommon/react/renderer/leakchecker/BUCK +0 -6
  313. package/ReactCommon/react/renderer/mapbuffer/BUCK +0 -6
  314. package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
  315. package/ReactCommon/react/renderer/mounting/BUCK +0 -6
  316. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
  317. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
  318. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
  319. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
  320. package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -7
  321. package/ReactCommon/react/renderer/runtimescheduler/ErrorUtils.h +36 -0
  322. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +28 -20
  323. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +4 -2
  324. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +4 -3
  325. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +4 -2
  326. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +32 -0
  327. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +36 -0
  328. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
  329. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -3
  330. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +4 -2
  331. package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -2
  332. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
  333. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +26 -1
  334. package/ReactCommon/react/renderer/runtimescheduler/tests/StubErrorUtils.h +72 -0
  335. package/ReactCommon/react/renderer/scheduler/BUCK +0 -6
  336. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +1 -4
  337. package/ReactCommon/react/renderer/scheduler/Scheduler.h +1 -1
  338. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +4 -4
  339. package/ReactCommon/react/renderer/telemetry/BUCK +0 -6
  340. package/ReactCommon/react/renderer/templateprocessor/BUCK +0 -6
  341. package/ReactCommon/react/renderer/textlayoutmanager/BUCK +0 -6
  342. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
  343. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +19 -0
  344. package/ReactCommon/react/renderer/timeline/BUCK +6 -12
  345. package/ReactCommon/react/renderer/uimanager/BUCK +0 -6
  346. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
  347. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -2
  348. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +1 -1
  349. package/ReactCommon/react/test_utils/BUCK +3 -6
  350. package/ReactCommon/react/{renderer/core/Constants.h → test_utils/MockSurfaceHandler.h} +9 -7
  351. package/ReactCommon/react/utils/BUCK +0 -6
  352. package/ReactCommon/react/utils/ContextContainer.h +0 -27
  353. package/ReactCommon/reactperflogger/BUCK +0 -4
  354. package/ReactCommon/runtimeexecutor/BUCK +0 -6
  355. package/ReactCommon/yoga/BUCK +1 -5
  356. package/android/com/facebook/react/react-native/{0.66.0/react-native-0.66.0.aar → 0.67.0-rc.2/react-native-0.67.0-rc.2.aar} +0 -0
  357. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.aar.md5 +1 -0
  358. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.aar.sha1 +1 -0
  359. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.aar.sha256 +1 -0
  360. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.aar.sha512 +1 -0
  361. package/android/com/facebook/react/react-native/{0.66.0/react-native-0.66.0.module → 0.67.0-rc.2/react-native-0.67.0-rc.2.module} +16 -17
  362. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.module.md5 +1 -0
  363. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.module.sha1 +1 -0
  364. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.module.sha256 +1 -0
  365. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.module.sha512 +1 -0
  366. package/android/com/facebook/react/react-native/{0.66.0/react-native-0.66.0.pom → 0.67.0-rc.2/react-native-0.67.0-rc.2.pom} +2 -2
  367. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.pom.md5 +1 -0
  368. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.pom.sha1 +1 -0
  369. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.pom.sha256 +1 -0
  370. package/android/com/facebook/react/react-native/0.67.0-rc.2/react-native-0.67.0-rc.2.pom.sha512 +1 -0
  371. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  372. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  373. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  374. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  375. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  376. package/flow/global.js +45 -0
  377. package/index.js +15 -10
  378. package/jest/mockModal.js +31 -0
  379. package/jest/setup.js +5 -3
  380. package/package.json +8 -9
  381. package/react.gradle +53 -18
  382. package/scripts/find-node.sh +13 -0
  383. package/scripts/generate-specs-cli.js +18 -0
  384. package/scripts/ios-configure-glog.sh +4 -0
  385. package/scripts/react-native-xcode.sh +7 -7
  386. package/scripts/react_native_pods.rb +200 -57
  387. package/template/Gemfile +6 -0
  388. package/template/Gemfile.lock +100 -0
  389. package/template/_bundle/config +2 -0
  390. package/template/_flowconfig +1 -1
  391. package/template/_ruby-version +1 -0
  392. package/template/android/app/build.gradle +1 -1
  393. package/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
  394. package/template/android/app/src/main/res/values/styles.xml +1 -0
  395. package/template/android/build.gradle +7 -3
  396. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  397. package/template/android/gradle.properties +1 -1
  398. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -2
  399. package/template/package.json +1 -1
  400. package/third-party-podspecs/RCT-Folly.podspec +1 -1
  401. package/third-party-podspecs/glog.podspec +0 -1
  402. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
  403. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  404. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  405. package/Libraries/Components/StaticContainer.react.js +0 -51
  406. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -25
  407. package/Libraries/Interaction/InteractionMixin.js +0 -54
  408. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  409. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
  410. package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
  411. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
  412. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
  413. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -153
  414. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +0 -15
  415. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
  416. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +0 -20
  417. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +0 -39
  418. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +0 -34
  419. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +0 -35
  420. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +0 -15
  421. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +0 -46
  422. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +0 -40
  423. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerDelegate.java +0 -57
  424. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerInterface.java +0 -23
  425. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/BUCK +0 -19
  426. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerDelegate.java +0 -62
  427. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerInterface.java +0 -25
  428. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerDelegate.java +0 -33
  429. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerInterface.java +0 -17
  430. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerDelegate.java +0 -51
  431. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerInterface.java +0 -21
  432. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerDelegate.java +0 -63
  433. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerInterface.java +0 -24
  434. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.aar.md5 +0 -1
  435. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.aar.sha1 +0 -1
  436. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.aar.sha256 +0 -1
  437. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.aar.sha512 +0 -1
  438. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.module.md5 +0 -1
  439. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.module.sha1 +0 -1
  440. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.module.sha256 +0 -1
  441. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.module.sha512 +0 -1
  442. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.pom.md5 +0 -1
  443. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.pom.sha1 +0 -1
  444. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.pom.sha256 +0 -1
  445. package/android/com/facebook/react/react-native/0.66.0/react-native-0.66.0.pom.sha512 +0 -1
  446. package/scripts/generate-specs.sh +0 -99
  447. package/template/_editorconfig +0 -3
  448. package/template/_gitattributes +0 -3
@@ -7,16 +7,13 @@
7
7
 
8
8
  package com.facebook.react.devsupport;
9
9
 
10
- import android.app.Activity;
11
- import android.view.View;
12
- import android.view.ViewGroup;
13
10
  import androidx.annotation.Nullable;
14
11
  import com.facebook.fbreact.specs.NativeLogBoxSpec;
15
12
  import com.facebook.react.bridge.ReactApplicationContext;
16
13
  import com.facebook.react.bridge.UiThreadUtil;
14
+ import com.facebook.react.common.SurfaceDelegate;
17
15
  import com.facebook.react.devsupport.interfaces.DevSupportManager;
18
16
  import com.facebook.react.module.annotations.ReactModule;
19
- import com.facebook.react.util.RNLog;
20
17
 
21
18
  @ReactModule(name = LogBoxModule.NAME)
22
19
  public class LogBoxModule extends NativeLogBoxSpec {
@@ -24,24 +21,30 @@ public class LogBoxModule extends NativeLogBoxSpec {
24
21
  public static final String NAME = "LogBox";
25
22
 
26
23
  private final DevSupportManager mDevSupportManager;
27
- private @Nullable View mReactRootView;
28
- private @Nullable LogBoxDialog mLogBoxDialog;
24
+ private final SurfaceDelegate mSurfaceDelegate;
29
25
 
26
+ /**
27
+ * LogBoxModule can be rendered in different surface. By default, it will use LogBoxDialog to wrap
28
+ * the content of logs. In other platform (for example VR), a surfaceDelegate can be provided so
29
+ * that the content can be wrapped in custom surface.
30
+ */
30
31
  public LogBoxModule(ReactApplicationContext reactContext, DevSupportManager devSupportManager) {
31
32
  super(reactContext);
32
33
 
33
34
  mDevSupportManager = devSupportManager;
34
35
 
36
+ @Nullable SurfaceDelegate surfaceDelegate = devSupportManager.createSurfaceDelegate(NAME);
37
+ if (surfaceDelegate != null) {
38
+ mSurfaceDelegate = surfaceDelegate;
39
+ } else {
40
+ mSurfaceDelegate = new LogBoxDialogSurfaceDelegate(devSupportManager);
41
+ }
42
+
35
43
  UiThreadUtil.runOnUiThread(
36
44
  new Runnable() {
37
45
  @Override
38
46
  public void run() {
39
- if (mReactRootView == null && mDevSupportManager != null) {
40
- mReactRootView = mDevSupportManager.createRootView("LogBox");
41
- if (mReactRootView == null) {
42
- RNLog.e("Unable to launch logbox because react was unable to create the root view");
43
- }
44
- }
47
+ mSurfaceDelegate.createContentView("LogBox");
45
48
  }
46
49
  });
47
50
  }
@@ -53,26 +56,17 @@ public class LogBoxModule extends NativeLogBoxSpec {
53
56
 
54
57
  @Override
55
58
  public void show() {
56
- if (mReactRootView != null) {
57
- UiThreadUtil.runOnUiThread(
58
- new Runnable() {
59
- @Override
60
- public void run() {
61
- if (mLogBoxDialog == null && mReactRootView != null) {
62
- Activity context = getCurrentActivity();
63
- if (context == null || context.isFinishing()) {
64
- RNLog.e(
65
- "Unable to launch logbox because react activity "
66
- + "is not available, here is the error that logbox would've displayed: ");
67
- return;
68
- }
69
- mLogBoxDialog = new LogBoxDialog(context, mReactRootView);
70
- mLogBoxDialog.setCancelable(false);
71
- mLogBoxDialog.show();
72
- }
73
- }
74
- });
59
+ if (!mSurfaceDelegate.isContentViewReady()) {
60
+ return;
75
61
  }
62
+
63
+ UiThreadUtil.runOnUiThread(
64
+ new Runnable() {
65
+ @Override
66
+ public void run() {
67
+ mSurfaceDelegate.show();
68
+ }
69
+ });
76
70
  }
77
71
 
78
72
  @Override
@@ -81,13 +75,7 @@ public class LogBoxModule extends NativeLogBoxSpec {
81
75
  new Runnable() {
82
76
  @Override
83
77
  public void run() {
84
- if (mLogBoxDialog != null) {
85
- if (mReactRootView != null && mReactRootView.getParent() != null) {
86
- ((ViewGroup) mReactRootView.getParent()).removeView(mReactRootView);
87
- }
88
- mLogBoxDialog.dismiss();
89
- mLogBoxDialog = null;
90
- }
78
+ mSurfaceDelegate.hide();
91
79
  }
92
80
  });
93
81
  }
@@ -98,10 +86,7 @@ public class LogBoxModule extends NativeLogBoxSpec {
98
86
  new Runnable() {
99
87
  @Override
100
88
  public void run() {
101
- if (mReactRootView != null) {
102
- mDevSupportManager.destroyRootView(mReactRootView);
103
- mReactRootView = null;
104
- }
89
+ mSurfaceDelegate.destroyContentView();
105
90
  }
106
91
  });
107
92
  }
@@ -7,11 +7,13 @@
7
7
 
8
8
  package com.facebook.react.devsupport.interfaces;
9
9
 
10
+ import android.app.Activity;
10
11
  import android.view.View;
11
12
  import androidx.annotation.Nullable;
12
13
  import com.facebook.react.bridge.NativeModuleCallExceptionHandler;
13
14
  import com.facebook.react.bridge.ReactContext;
14
15
  import com.facebook.react.bridge.ReadableArray;
16
+ import com.facebook.react.common.SurfaceDelegate;
15
17
  import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
16
18
  import java.io.File;
17
19
 
@@ -107,4 +109,16 @@ public interface DevSupportManager extends NativeModuleCallExceptionHandler {
107
109
  }
108
110
 
109
111
  void setPackagerLocationCustomizer(PackagerLocationCustomizer packagerLocationCustomizer);
112
+
113
+ @Nullable
114
+ Activity getCurrentActivity();
115
+
116
+ /**
117
+ * Create the surface delegate that the provided module should use to interact with
118
+ *
119
+ * @param moduleName the module name that helps decide which surface it should interact with
120
+ * @return a {@link SurfaceDelegate} instance
121
+ */
122
+ @Nullable
123
+ SurfaceDelegate createSurfaceDelegate(String moduleName);
110
124
  }
@@ -9,12 +9,13 @@ package com.facebook.react.fabric;
9
9
 
10
10
  import android.annotation.SuppressLint;
11
11
  import androidx.annotation.NonNull;
12
+ import androidx.annotation.Nullable;
12
13
  import com.facebook.jni.HybridData;
13
14
  import com.facebook.proguard.annotations.DoNotStrip;
14
15
  import com.facebook.react.bridge.NativeMap;
15
16
  import com.facebook.react.bridge.ReadableNativeMap;
16
17
  import com.facebook.react.bridge.RuntimeExecutor;
17
- import com.facebook.react.bridge.queue.MessageQueueThread;
18
+ import com.facebook.react.bridge.RuntimeScheduler;
18
19
  import com.facebook.react.fabric.events.EventBeatManager;
19
20
  import com.facebook.react.fabric.events.EventEmitterWrapper;
20
21
  import com.facebook.react.uimanager.PixelUtil;
@@ -37,9 +38,9 @@ public class Binding {
37
38
 
38
39
  private native void installFabricUIManager(
39
40
  RuntimeExecutor runtimeExecutor,
41
+ RuntimeScheduler runtimeScheduler,
40
42
  Object uiManager,
41
43
  EventBeatManager eventBeatManager,
42
- MessageQueueThread jsMessageQueueThread,
43
44
  ComponentFactory componentsRegistry,
44
45
  Object reactNativeConfig);
45
46
 
@@ -83,17 +84,17 @@ public class Binding {
83
84
 
84
85
  public void register(
85
86
  @NonNull RuntimeExecutor runtimeExecutor,
87
+ @Nullable RuntimeScheduler runtimeScheduler,
86
88
  @NonNull FabricUIManager fabricUIManager,
87
89
  @NonNull EventBeatManager eventBeatManager,
88
- @NonNull MessageQueueThread jsMessageQueueThread,
89
90
  @NonNull ComponentFactory componentFactory,
90
91
  @NonNull ReactNativeConfig reactNativeConfig) {
91
92
  fabricUIManager.setBinding(this);
92
93
  installFabricUIManager(
93
94
  runtimeExecutor,
95
+ runtimeScheduler,
94
96
  fabricUIManager,
95
97
  eventBeatManager,
96
- jsMessageQueueThread,
97
98
  componentFactory,
98
99
  reactNativeConfig);
99
100
 
@@ -11,7 +11,6 @@ import androidx.annotation.NonNull;
11
11
  import com.facebook.react.bridge.JSIModuleProvider;
12
12
  import com.facebook.react.bridge.ReactApplicationContext;
13
13
  import com.facebook.react.bridge.UIManager;
14
- import com.facebook.react.bridge.queue.MessageQueueThread;
15
14
  import com.facebook.react.common.mapbuffer.ReadableMapBufferSoLoader;
16
15
  import com.facebook.react.config.ReactFeatureFlags;
17
16
  import com.facebook.react.fabric.events.EventBeatManager;
@@ -41,23 +40,20 @@ public class FabricJSIModuleProvider implements JSIModuleProvider<UIManager> {
41
40
  Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "FabricJSIModuleProvider.get");
42
41
  final EventBeatManager eventBeatManager = new EventBeatManager(mReactApplicationContext);
43
42
  final FabricUIManager uiManager = createUIManager(eventBeatManager);
43
+
44
44
  Systrace.beginSection(
45
45
  Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "FabricJSIModuleProvider.registerBinding");
46
46
  final Binding binding = new Binding();
47
+
47
48
  if (ReactFeatureFlags.enableEagerInitializeMapBufferSoFile) {
48
49
  ReadableMapBufferSoLoader.staticInit();
49
50
  }
50
- MessageQueueThread jsMessageQueueThread =
51
- mReactApplicationContext
52
- .getCatalystInstance()
53
- .getReactQueueConfiguration()
54
- .getJSQueueThread();
55
51
 
56
52
  binding.register(
57
53
  mReactApplicationContext.getCatalystInstance().getRuntimeExecutor(),
54
+ mReactApplicationContext.getCatalystInstance().getRuntimeScheduler(),
58
55
  uiManager,
59
56
  eventBeatManager,
60
- jsMessageQueueThread,
61
57
  mComponentFactory,
62
58
  mConfig);
63
59
 
@@ -77,6 +77,7 @@ import com.facebook.react.uimanager.ThemedReactContext;
77
77
  import com.facebook.react.uimanager.UIManagerHelper;
78
78
  import com.facebook.react.uimanager.ViewManagerPropertyUpdater;
79
79
  import com.facebook.react.uimanager.ViewManagerRegistry;
80
+ import com.facebook.react.uimanager.events.EventCategoryDef;
80
81
  import com.facebook.react.uimanager.events.EventDispatcher;
81
82
  import com.facebook.react.uimanager.events.EventDispatcherImpl;
82
83
  import com.facebook.react.uimanager.events.LockFreeEventDispatcherImpl;
@@ -627,6 +628,15 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
627
628
  public int getSurfaceId() {
628
629
  return View.NO_ID;
629
630
  }
631
+
632
+ @Override
633
+ public String toString() {
634
+ String propsString =
635
+ IS_DEVELOPMENT_ENVIRONMENT
636
+ ? (props != null ? props.toHashMap().toString() : "<null>")
637
+ : "<hidden>";
638
+ return String.format("SYNC UPDATE PROPS [%d]: %s", reactTag, propsString);
639
+ }
630
640
  };
631
641
 
632
642
  // If the reactTag exists, we assume that it might at the end of the next
@@ -829,6 +839,23 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
829
839
  receiveEvent(surfaceId, reactTag, eventName, false, 0, params);
830
840
  }
831
841
 
842
+ public void receiveEvent(
843
+ int surfaceId,
844
+ int reactTag,
845
+ String eventName,
846
+ boolean canCoalesceEvent,
847
+ int customCoalesceKey,
848
+ @Nullable WritableMap params) {
849
+ receiveEvent(
850
+ surfaceId,
851
+ reactTag,
852
+ eventName,
853
+ canCoalesceEvent,
854
+ customCoalesceKey,
855
+ params,
856
+ EventCategoryDef.UNSPECIFIED);
857
+ }
858
+
832
859
  /**
833
860
  * receiveEvent API that emits an event to C++. If `canCoalesceEvent` is true, that signals that
834
861
  * C++ may coalesce the event optionally. Otherwise, coalescing can happen in Java before
@@ -842,6 +869,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
842
869
  * @param canCoalesceEvent
843
870
  * @param customCoalesceKey
844
871
  * @param params
872
+ * @param eventCategory
845
873
  */
846
874
  public void receiveEvent(
847
875
  int surfaceId,
@@ -849,7 +877,8 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
849
877
  String eventName,
850
878
  boolean canCoalesceEvent,
851
879
  int customCoalesceKey,
852
- @Nullable WritableMap params) {
880
+ @Nullable WritableMap params,
881
+ @EventCategoryDef int eventCategory) {
853
882
  if (ReactBuildConfig.DEBUG && surfaceId == View.NO_ID) {
854
883
  FLog.d(TAG, "Emitted event without surfaceId: [%d] %s", reactTag, eventName);
855
884
  }
@@ -870,7 +899,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
870
899
  if (canCoalesceEvent) {
871
900
  eventEmitter.invokeUnique(eventName, params, customCoalesceKey);
872
901
  } else {
873
- eventEmitter.invoke(eventName, params);
902
+ eventEmitter.invoke(eventName, params, eventCategory);
874
903
  }
875
904
  }
876
905
 
@@ -996,6 +1025,11 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
996
1025
  public int getSurfaceId() {
997
1026
  return surfaceId;
998
1027
  }
1028
+
1029
+ @Override
1030
+ public String toString() {
1031
+ return String.format("SET_JS_RESPONDER [%d] [surface:%d]", reactTag, surfaceId);
1032
+ }
999
1033
  });
1000
1034
  }
1001
1035
 
@@ -1015,6 +1049,11 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
1015
1049
  public int getSurfaceId() {
1016
1050
  return View.NO_ID;
1017
1051
  }
1052
+
1053
+ @Override
1054
+ public String toString() {
1055
+ return "CLEAR_JS_RESPONDER";
1056
+ }
1018
1057
  });
1019
1058
  }
1020
1059
 
@@ -16,6 +16,7 @@ import com.facebook.react.bridge.NativeMap;
16
16
  import com.facebook.react.bridge.WritableMap;
17
17
  import com.facebook.react.bridge.WritableNativeMap;
18
18
  import com.facebook.react.fabric.FabricSoLoader;
19
+ import com.facebook.react.uimanager.events.EventCategoryDef;
19
20
 
20
21
  /**
21
22
  * This class holds reference to the C++ EventEmitter object. Instances of this class are created on
@@ -36,7 +37,8 @@ public class EventEmitterWrapper {
36
37
  mHybridData = initHybrid();
37
38
  }
38
39
 
39
- private native void invokeEvent(@NonNull String eventName, @NonNull NativeMap params);
40
+ private native void invokeEvent(
41
+ @NonNull String eventName, @NonNull NativeMap params, @EventCategoryDef int category);
40
42
 
41
43
  private native void invokeUniqueEvent(
42
44
  @NonNull String eventName, @NonNull NativeMap params, int customCoalesceKey);
@@ -47,12 +49,15 @@ public class EventEmitterWrapper {
47
49
  * @param eventName {@link String} name of the event to execute.
48
50
  * @param params {@link WritableMap} payload of the event
49
51
  */
50
- public synchronized void invoke(@NonNull String eventName, @Nullable WritableMap params) {
52
+ public synchronized void invoke(
53
+ @NonNull String eventName,
54
+ @Nullable WritableMap params,
55
+ @EventCategoryDef int eventCategory) {
51
56
  if (!isValid()) {
52
57
  return;
53
58
  }
54
59
  NativeMap payload = params == null ? new WritableNativeMap() : (NativeMap) params;
55
- invokeEvent(eventName, payload);
60
+ invokeEvent(eventName, payload, eventCategory);
56
61
  }
57
62
 
58
63
  /**
@@ -10,8 +10,6 @@ package com.facebook.react.fabric.events;
10
10
  import static com.facebook.react.uimanager.events.TouchesHelper.CHANGED_TOUCHES_KEY;
11
11
  import static com.facebook.react.uimanager.events.TouchesHelper.TARGET_KEY;
12
12
  import static com.facebook.react.uimanager.events.TouchesHelper.TARGET_SURFACE_KEY;
13
- import static com.facebook.react.uimanager.events.TouchesHelper.TOP_TOUCH_CANCEL_KEY;
14
- import static com.facebook.react.uimanager.events.TouchesHelper.TOP_TOUCH_END_KEY;
15
13
  import static com.facebook.react.uimanager.events.TouchesHelper.TOUCHES_KEY;
16
14
 
17
15
  import android.util.Pair;
@@ -24,7 +22,9 @@ import com.facebook.react.bridge.WritableMap;
24
22
  import com.facebook.react.bridge.WritableNativeArray;
25
23
  import com.facebook.react.bridge.WritableNativeMap;
26
24
  import com.facebook.react.fabric.FabricUIManager;
25
+ import com.facebook.react.uimanager.events.EventCategoryDef;
27
26
  import com.facebook.react.uimanager.events.RCTModernEventEmitter;
27
+ import com.facebook.react.uimanager.events.TouchEventType;
28
28
  import com.facebook.systrace.Systrace;
29
29
  import java.util.HashSet;
30
30
  import java.util.Set;
@@ -47,7 +47,7 @@ public class FabricEventEmitter implements RCTModernEventEmitter {
47
47
  @Override
48
48
  public void receiveEvent(
49
49
  int surfaceId, int reactTag, String eventName, @Nullable WritableMap params) {
50
- receiveEvent(surfaceId, reactTag, eventName, false, 0, params);
50
+ receiveEvent(surfaceId, reactTag, eventName, false, 0, params, EventCategoryDef.UNSPECIFIED);
51
51
  }
52
52
 
53
53
  @Override
@@ -57,29 +57,46 @@ public class FabricEventEmitter implements RCTModernEventEmitter {
57
57
  String eventName,
58
58
  boolean canCoalesceEvent,
59
59
  int customCoalesceKey,
60
- @Nullable WritableMap params) {
60
+ @Nullable WritableMap params,
61
+ @EventCategoryDef int category) {
61
62
  Systrace.beginSection(
62
63
  Systrace.TRACE_TAG_REACT_JAVA_BRIDGE,
63
64
  "FabricEventEmitter.receiveEvent('" + eventName + "')");
64
65
  mUIManager.receiveEvent(
65
- surfaceId, reactTag, eventName, canCoalesceEvent, customCoalesceKey, params);
66
+ surfaceId, reactTag, eventName, canCoalesceEvent, customCoalesceKey, params, category);
66
67
  Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
67
68
  }
68
69
 
70
+ /**
71
+ * Processes touches in a JS compatible way and send it to Fabric core
72
+ *
73
+ * @param eventName the event name (see {@link TouchEventType})
74
+ * @param touches all the touch data extracted from MotionEvent
75
+ * @param changedIndices the indices of the pointers that changed (MOVE/CANCEL includes all
76
+ * touches, START/END only the one that was added/removed)
77
+ */
69
78
  @Override
70
79
  public void receiveTouches(
71
- @NonNull String eventTopLevelType,
80
+ @NonNull String eventName,
72
81
  @NonNull WritableArray touches,
73
82
  @NonNull WritableArray changedIndices) {
83
+ Systrace.beginSection(
84
+ Systrace.TRACE_TAG_REACT_JAVA_BRIDGE,
85
+ "FabricEventEmitter.receiveTouches('" + eventName + "')");
86
+
87
+ boolean isFinalEvent =
88
+ TouchEventType.END.getJsName().equalsIgnoreCase(eventName)
89
+ || TouchEventType.CANCEL.getJsName().equalsIgnoreCase(eventName);
90
+
74
91
  Pair<WritableArray, WritableArray> result =
75
- TOP_TOUCH_END_KEY.equalsIgnoreCase(eventTopLevelType)
76
- || TOP_TOUCH_CANCEL_KEY.equalsIgnoreCase(eventTopLevelType)
92
+ isFinalEvent
77
93
  ? removeTouchesAtIndices(touches, changedIndices)
78
94
  : touchSubsequence(touches, changedIndices);
79
95
 
80
96
  WritableArray changedTouches = result.first;
81
97
  touches = result.second;
82
98
 
99
+ int eventCategory = getTouchCategory(eventName);
83
100
  for (int jj = 0; jj < changedTouches.size(); jj++) {
84
101
  WritableMap touch = getWritableMap(changedTouches.getMap(jj));
85
102
  // Touch objects can fulfill the role of `DOM` `Event` objects if we set
@@ -97,8 +114,10 @@ public class FabricEventEmitter implements RCTModernEventEmitter {
97
114
  rootNodeID = targetReactTag;
98
115
  }
99
116
 
100
- receiveEvent(targetSurfaceId, rootNodeID, eventTopLevelType, false, 0, touch);
117
+ receiveEvent(targetSurfaceId, rootNodeID, eventName, false, 0, touch, eventCategory);
101
118
  }
119
+
120
+ Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
102
121
  }
103
122
 
104
123
  /** TODO T31905686 optimize this to avoid copying arrays */
@@ -174,4 +193,19 @@ public class FabricEventEmitter implements RCTModernEventEmitter {
174
193
  map.merge(readableMap);
175
194
  return map;
176
195
  }
196
+
197
+ @EventCategoryDef
198
+ private static int getTouchCategory(String touchEventType) {
199
+ int category = EventCategoryDef.UNSPECIFIED;
200
+ if (TouchEventType.MOVE.getJsName().equals(touchEventType)) {
201
+ category = EventCategoryDef.CONTINUOUS;
202
+ } else if (TouchEventType.START.getJsName().equals(touchEventType)) {
203
+ category = EventCategoryDef.CONTINUOUS_START;
204
+ } else if (TouchEventType.END.getJsName().equals(touchEventType)
205
+ || TouchEventType.CANCEL.getJsName().equals(touchEventType)) {
206
+ category = EventCategoryDef.CONTINUOUS_END;
207
+ }
208
+
209
+ return category;
210
+ }
177
211
  }
@@ -11,7 +11,7 @@ LOCAL_MODULE := fabricjni
11
11
 
12
12
  LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
13
13
 
14
- LOCAL_SHARED_LIBRARIES := libjsi libreactconfig librrc_slider librrc_progressbar librrc_switch librrc_modal libyoga libglog libfb libfbjni libglog_init libfolly_json libfolly_futures libreact_render_mounting libreactnativeutilsjni libreact_utils libreact_render_debug libreact_render_graphics libreact_render_core react_render_componentregistry librrc_view librrc_unimplementedview librrc_root librrc_scrollview libbetter libreact_render_attributedstring libreact_render_uimanager libreact_render_templateprocessor libreact_render_scheduler libreact_render_animations libreact_render_imagemanager libreact_render_textlayoutmanager libreact_codegen_rncore rrc_text librrc_image librrc_textinput libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry
14
+ LOCAL_SHARED_LIBRARIES := libjsi libreactconfig librrc_slider librrc_progressbar librrc_switch librrc_modal libyoga libglog libfb libfbjni libglog_init libfolly_json libfolly_futures libreact_render_mounting libreactnativeutilsjni libreact_utils libreact_render_debug libreact_render_graphics libreact_render_core react_render_componentregistry librrc_view librrc_unimplementedview librrc_root librrc_scrollview libbetter libreact_render_attributedstring libreact_render_uimanager libreact_render_templateprocessor libreact_render_scheduler libreact_render_animations libreact_render_imagemanager libreact_render_textlayoutmanager libreact_codegen_rncore rrc_text librrc_image librrc_textinput libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry libreact_render_runtimescheduler
15
15
 
16
16
  LOCAL_STATIC_LIBRARIES :=
17
17
 
@@ -56,6 +56,7 @@ $(call import-module,react/renderer/graphics)
56
56
  $(call import-module,react/renderer/imagemanager)
57
57
  $(call import-module,react/renderer/mapbuffer)
58
58
  $(call import-module,react/renderer/mounting)
59
+ $(call import-module,react/renderer/runtimescheduler)
59
60
  $(call import-module,react/renderer/scheduler)
60
61
  $(call import-module,react/renderer/templateprocessor)
61
62
  $(call import-module,react/renderer/textlayoutmanager)
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Copyright (c) Facebook, Inc. and its 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
+
8
+ #include <jsi/jsi.h>
9
+ #include <react/renderer/core/EventBeat.h>
10
+ #include <react/renderer/uimanager/primitives.h>
11
+
12
+ #include "AsyncEventBeatV2.h"
13
+
14
+ namespace facebook::react {
15
+
16
+ AsyncEventBeatV2::AsyncEventBeatV2(
17
+ EventBeat::SharedOwnerBox const &ownerBox,
18
+ EventBeatManager *eventBeatManager,
19
+ RuntimeExecutor runtimeExecutor,
20
+ jni::global_ref<jobject> javaUIManager)
21
+ : EventBeat(ownerBox),
22
+ eventBeatManager_(eventBeatManager),
23
+ runtimeExecutor_(runtimeExecutor),
24
+ javaUIManager_(javaUIManager) {
25
+ eventBeatManager->addObserver(*this);
26
+ }
27
+
28
+ AsyncEventBeatV2::~AsyncEventBeatV2() {
29
+ eventBeatManager_->removeObserver(*this);
30
+ }
31
+
32
+ void AsyncEventBeatV2::tick() const {
33
+ if (!isRequested_ || isBeatCallbackScheduled_) {
34
+ return;
35
+ }
36
+
37
+ isRequested_ = false;
38
+ isBeatCallbackScheduled_ = true;
39
+
40
+ runtimeExecutor_([this, ownerBox = ownerBox_](jsi::Runtime &runtime) {
41
+ isBeatCallbackScheduled_ = false;
42
+ auto owner = ownerBox->owner.lock();
43
+ if (!owner) {
44
+ return;
45
+ }
46
+
47
+ if (beatCallback_) {
48
+ beatCallback_(runtime);
49
+ }
50
+ });
51
+ }
52
+
53
+ void AsyncEventBeatV2::induce() const {
54
+ tick();
55
+ }
56
+
57
+ void AsyncEventBeatV2::request() const {
58
+ bool alreadyRequested = isRequested_;
59
+ EventBeat::request();
60
+ if (!alreadyRequested) {
61
+ // Notifies java side that an event will be dispatched (e.g. LayoutEvent)
62
+ static auto onRequestEventBeat =
63
+ jni::findClassStatic("com/facebook/react/fabric/FabricUIManager")
64
+ ->getMethod<void()>("onRequestEventBeat");
65
+ onRequestEventBeat(javaUIManager_);
66
+ }
67
+ }
68
+
69
+ } // namespace facebook::react
@@ -0,0 +1,40 @@
1
+ /*
2
+ * Copyright (c) Facebook, Inc. and its 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
+
8
+ #pragma once
9
+
10
+ #include <react/renderer/core/EventBeat.h>
11
+
12
+ #include "EventBeatManager.h"
13
+
14
+ namespace facebook::react {
15
+
16
+ class AsyncEventBeatV2 final : public EventBeat,
17
+ public EventBeatManagerObserver {
18
+ public:
19
+ AsyncEventBeatV2(
20
+ EventBeat::SharedOwnerBox const &ownerBox,
21
+ EventBeatManager *eventBeatManager,
22
+ RuntimeExecutor runtimeExecutor,
23
+ jni::global_ref<jobject> javaUIManager);
24
+
25
+ ~AsyncEventBeatV2() override;
26
+
27
+ void tick() const override;
28
+
29
+ void induce() const override;
30
+
31
+ void request() const override;
32
+
33
+ private:
34
+ EventBeatManager *eventBeatManager_;
35
+ RuntimeExecutor runtimeExecutor_;
36
+ jni::global_ref<jobject> javaUIManager_;
37
+ mutable std::atomic<bool> isBeatCallbackScheduled_{false};
38
+ };
39
+
40
+ } // namespace facebook::react
@@ -11,12 +11,8 @@ rn_xplat_cxx_library(
11
11
  ],
12
12
  prefix = "react/fabric",
13
13
  ),
14
- compiler_flags = [
15
- "-fexceptions",
16
- "-frtti",
17
- "-std=c++17",
18
- "-Wall",
19
- ],
14
+ compiler_flags_enable_exceptions = True,
15
+ compiler_flags_enable_rtti = True, # dynamic_cast used within Binding.cpp
20
16
  fbandroid_allow_jni_merging = True,
21
17
  labels = ["supermodule:xplat/default/public.react_native.infra"],
22
18
  platforms = ANDROID,