react-native 0.66.0-rc.4 → 0.67.0-rc.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 (447) 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/react/BUCK +0 -1
  122. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +7 -0
  123. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +7 -0
  124. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +63 -26
  125. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +46 -1
  126. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +31 -0
  127. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +17 -1
  128. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +2 -0
  129. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +13 -2
  130. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -0
  131. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
  132. package/ReactAndroid/src/main/java/com/facebook/react/bridge/RuntimeScheduler.java +21 -0
  133. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +2 -2
  134. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegate.java +40 -0
  135. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegateFactory.java +24 -0
  136. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +0 -6
  137. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +16 -0
  138. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -0
  139. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +5 -2
  140. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +102 -0
  141. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +35 -11
  142. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +5 -72
  143. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +12 -0
  144. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.java +92 -0
  145. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java +27 -42
  146. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +14 -0
  147. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +5 -4
  148. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +3 -7
  149. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +41 -2
  150. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +8 -3
  151. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +43 -9
  152. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +2 -1
  153. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.cpp +69 -0
  154. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.h +40 -0
  155. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +2 -6
  156. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +84 -32
  157. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +4 -2
  158. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.cpp +20 -2
  159. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.h +2 -1
  160. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +9 -1
  161. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +19 -4
  162. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +6 -2
  163. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +2 -1
  164. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.java +10 -1
  165. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BUCK +0 -6
  166. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +4 -1
  167. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.java +9 -8
  168. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java +7 -19
  169. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
  170. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
  171. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +2 -2
  172. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
  173. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
  174. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
  175. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  176. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +8 -8
  177. package/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java +1 -1
  178. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/BUCK +0 -6
  179. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -1
  180. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -5
  181. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +0 -12
  182. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +1 -1
  183. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +75 -10
  184. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +19 -22
  185. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +42 -0
  186. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +7 -1
  187. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +2 -2
  188. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +7 -0
  189. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +2 -1
  190. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +17 -9
  191. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +43 -8
  192. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java +15 -16
  193. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +108 -19
  194. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +0 -6
  195. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +79 -4
  196. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +5 -0
  197. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +94 -3
  198. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +21 -1
  199. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +5 -0
  200. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -4
  201. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +16 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +9 -1
  203. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +20 -1
  204. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +25 -6
  205. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +25 -5
  206. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +8 -8
  209. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +19 -0
  210. package/ReactAndroid/src/main/jni/react/jni/Android.mk +3 -2
  211. package/ReactAndroid/src/main/jni/react/jni/BUCK +4 -5
  212. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +49 -7
  213. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +15 -2
  214. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
  215. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +25 -0
  216. package/{ReactCommon/react/renderer/core/Constants.cpp → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +6 -8
  217. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -0
  218. package/ReactAndroid/src/main/jni/react/perftests/BUCK +0 -4
  219. package/ReactAndroid/src/main/third-party/android/androidx/BUCK +6 -6
  220. package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +43 -0
  221. package/ReactAndroid/src/test/java/com/facebook/react/modules/clipboard/ClipboardModuleTest.java +3 -1
  222. package/ReactCommon/React-Fabric.podspec +9 -1
  223. package/ReactCommon/better/BUCK +0 -6
  224. package/ReactCommon/callinvoker/BUCK +2 -8
  225. package/ReactCommon/cxxreact/BUCK +1 -16
  226. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  227. package/ReactCommon/hermes/inspector/tools/msggen/package.json +7 -4
  228. package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +13 -10
  229. package/ReactCommon/jsi/BUCK +0 -9
  230. package/ReactCommon/jsinspector/BUCK +0 -5
  231. package/ReactCommon/logger/BUCK +0 -5
  232. package/ReactCommon/react/config/BUCK +0 -6
  233. package/ReactCommon/react/debug/BUCK +0 -6
  234. package/ReactCommon/react/nativemodule/core/BUCK +0 -5
  235. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +14 -31
  236. package/ReactCommon/react/nativemodule/samples/BUCK +0 -7
  237. package/ReactCommon/react/renderer/animations/BUCK +1 -4
  238. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
  239. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -26
  240. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
  241. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +912 -1147
  242. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +80 -245
  243. package/ReactCommon/react/renderer/animations/conversions.h +212 -0
  244. package/ReactCommon/react/renderer/animations/primitives.h +104 -0
  245. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +3 -3
  246. package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
  247. package/ReactCommon/react/renderer/animations/utils.h +80 -0
  248. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
  249. package/ReactCommon/react/renderer/attributedstring/BUCK +0 -6
  250. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +7 -3
  251. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
  252. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +1 -1
  253. package/ReactCommon/react/renderer/attributedstring/conversions.h +58 -3
  254. package/ReactCommon/react/renderer/attributedstring/primitives.h +18 -1
  255. package/ReactCommon/react/renderer/componentregistry/BUCK +0 -6
  256. package/ReactCommon/react/renderer/componentregistry/native/BUCK +0 -6
  257. package/ReactCommon/react/renderer/components/image/BUCK +0 -6
  258. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +0 -2
  259. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +0 -6
  260. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +0 -4
  261. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +0 -6
  262. package/ReactCommon/react/renderer/components/modal/BUCK +0 -6
  263. package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +0 -5
  264. package/ReactCommon/react/renderer/components/progressbar/BUCK +0 -6
  265. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -3
  266. package/ReactCommon/react/renderer/components/root/BUCK +0 -6
  267. package/ReactCommon/react/renderer/components/safeareaview/BUCK +0 -6
  268. package/ReactCommon/react/renderer/components/scrollview/BUCK +0 -6
  269. package/ReactCommon/react/renderer/components/slider/BUCK +0 -6
  270. package/ReactCommon/react/renderer/components/slider/SliderComponentDescriptor.h +0 -3
  271. package/ReactCommon/react/renderer/components/switch/BUCK +0 -6
  272. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -3
  273. package/ReactCommon/react/renderer/components/text/BUCK +0 -6
  274. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +1 -20
  275. package/ReactCommon/react/renderer/components/textinput/BUCK +0 -6
  276. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +0 -3
  277. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +2 -0
  278. package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +0 -6
  279. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h +0 -3
  280. package/ReactCommon/react/renderer/components/unimplementedview/BUCK +0 -6
  281. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +0 -4
  282. package/ReactCommon/react/renderer/components/view/Android.mk +1 -1
  283. package/ReactCommon/react/renderer/components/view/BUCK +0 -6
  284. package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
  285. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -23
  286. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +2 -3
  287. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +3 -3
  288. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
  289. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +4 -0
  290. package/ReactCommon/react/renderer/core/BUCK +2 -6
  291. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +14 -9
  292. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +1 -10
  293. package/ReactCommon/react/renderer/core/EventEmitter.cpp +9 -4
  294. package/ReactCommon/react/renderer/core/EventEmitter.h +2 -1
  295. package/ReactCommon/react/renderer/core/Props.h +1 -0
  296. package/ReactCommon/react/renderer/core/PropsParserContext.h +3 -2
  297. package/ReactCommon/react/renderer/core/RawEvent.h +7 -5
  298. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
  299. package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
  300. package/ReactCommon/react/renderer/core/ShadowNode.cpp +7 -10
  301. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
  302. package/ReactCommon/react/renderer/debug/BUCK +0 -6
  303. package/ReactCommon/react/renderer/element/BUCK +0 -6
  304. package/ReactCommon/react/renderer/graphics/Android.mk +1 -1
  305. package/ReactCommon/react/renderer/graphics/BUCK +0 -6
  306. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +0 -1
  307. package/ReactCommon/react/renderer/graphics/Transform.cpp +1 -1
  308. package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
  309. package/ReactCommon/react/renderer/imagemanager/BUCK +0 -6
  310. package/ReactCommon/react/renderer/leakchecker/BUCK +0 -6
  311. package/ReactCommon/react/renderer/mapbuffer/BUCK +0 -6
  312. package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
  313. package/ReactCommon/react/renderer/mounting/BUCK +0 -6
  314. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
  315. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
  316. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
  317. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
  318. package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -7
  319. package/ReactCommon/react/renderer/runtimescheduler/ErrorUtils.h +36 -0
  320. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +28 -20
  321. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +4 -2
  322. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +4 -3
  323. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +4 -2
  324. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +32 -0
  325. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +36 -0
  326. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
  327. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -3
  328. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +4 -2
  329. package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -2
  330. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
  331. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +26 -1
  332. package/ReactCommon/react/renderer/runtimescheduler/tests/StubErrorUtils.h +72 -0
  333. package/ReactCommon/react/renderer/scheduler/BUCK +0 -6
  334. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +1 -4
  335. package/ReactCommon/react/renderer/scheduler/Scheduler.h +1 -1
  336. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +4 -4
  337. package/ReactCommon/react/renderer/telemetry/BUCK +0 -6
  338. package/ReactCommon/react/renderer/templateprocessor/BUCK +0 -6
  339. package/ReactCommon/react/renderer/textlayoutmanager/BUCK +0 -6
  340. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
  341. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +19 -0
  342. package/ReactCommon/react/renderer/timeline/BUCK +6 -12
  343. package/ReactCommon/react/renderer/uimanager/BUCK +0 -6
  344. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
  345. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -2
  346. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +1 -1
  347. package/ReactCommon/react/test_utils/BUCK +3 -6
  348. package/ReactCommon/react/{renderer/core/Constants.h → test_utils/MockSurfaceHandler.h} +9 -7
  349. package/ReactCommon/react/utils/BUCK +0 -6
  350. package/ReactCommon/react/utils/ContextContainer.h +0 -27
  351. package/ReactCommon/reactperflogger/BUCK +0 -4
  352. package/ReactCommon/runtimeexecutor/BUCK +0 -6
  353. package/ReactCommon/yoga/BUCK +1 -5
  354. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.aar → 0.67.0-rc.1/react-native-0.67.0-rc.1.aar} +0 -0
  355. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.md5 +1 -0
  356. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha1 +1 -0
  357. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha256 +1 -0
  358. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha512 +1 -0
  359. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.module → 0.67.0-rc.1/react-native-0.67.0-rc.1.module} +16 -17
  360. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.md5 +1 -0
  361. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha1 +1 -0
  362. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha256 +1 -0
  363. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha512 +1 -0
  364. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.pom → 0.67.0-rc.1/react-native-0.67.0-rc.1.pom} +2 -2
  365. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.md5 +1 -0
  366. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha1 +1 -0
  367. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha256 +1 -0
  368. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha512 +1 -0
  369. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  370. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  371. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  372. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  373. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  374. package/flow/global.js +45 -0
  375. package/index.js +15 -10
  376. package/jest/mockModal.js +31 -0
  377. package/jest/setup.js +5 -3
  378. package/package.json +8 -9
  379. package/react.gradle +53 -18
  380. package/scripts/find-node.sh +13 -0
  381. package/scripts/generate-specs-cli.js +18 -0
  382. package/scripts/ios-configure-glog.sh +4 -0
  383. package/scripts/react-native-xcode.sh +7 -7
  384. package/scripts/react_native_pods.rb +202 -70
  385. package/template/Gemfile +6 -0
  386. package/template/Gemfile.lock +100 -0
  387. package/template/_bundle/config +2 -0
  388. package/template/_flowconfig +1 -1
  389. package/template/_ruby-version +1 -0
  390. package/template/android/app/build.gradle +1 -1
  391. package/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
  392. package/template/android/app/src/main/res/values/styles.xml +1 -0
  393. package/template/android/build.gradle +7 -3
  394. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  395. package/template/android/gradle.properties +1 -1
  396. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -2
  397. package/template/ios/Podfile +0 -1
  398. package/template/package.json +1 -1
  399. package/third-party-podspecs/RCT-Folly.podspec +1 -1
  400. package/third-party-podspecs/glog.podspec +0 -1
  401. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
  402. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  403. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  404. package/Libraries/Components/StaticContainer.react.js +0 -51
  405. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -25
  406. package/Libraries/Interaction/InteractionMixin.js +0 -54
  407. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  408. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
  409. package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
  410. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
  411. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
  412. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -153
  413. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +0 -15
  414. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
  415. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +0 -20
  416. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +0 -39
  417. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +0 -34
  418. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +0 -35
  419. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +0 -15
  420. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +0 -46
  421. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +0 -40
  422. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerDelegate.java +0 -57
  423. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerInterface.java +0 -23
  424. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/BUCK +0 -19
  425. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerDelegate.java +0 -62
  426. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerInterface.java +0 -25
  427. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerDelegate.java +0 -33
  428. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerInterface.java +0 -17
  429. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerDelegate.java +0 -51
  430. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerInterface.java +0 -21
  431. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerDelegate.java +0 -63
  432. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerInterface.java +0 -24
  433. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.md5 +0 -1
  434. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha1 +0 -1
  435. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha256 +0 -1
  436. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha512 +0 -1
  437. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.md5 +0 -1
  438. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha1 +0 -1
  439. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha256 +0 -1
  440. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha512 +0 -1
  441. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.md5 +0 -1
  442. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha1 +0 -1
  443. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha256 +0 -1
  444. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha512 +0 -1
  445. package/scripts/generate-specs.sh +0 -99
  446. package/template/_editorconfig +0 -3
  447. package/template/_gitattributes +0 -3
@@ -17,7 +17,9 @@ import androidx.annotation.Nullable;
17
17
  import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
18
18
  import com.facebook.react.bridge.UiThreadUtil;
19
19
  import com.facebook.react.touch.ReactHitSlopView;
20
+ import java.util.ArrayList;
20
21
  import java.util.EnumSet;
22
+ import java.util.List;
21
23
 
22
24
  /**
23
25
  * Class responsible for identifying which react view should handle a given {@link MotionEvent}. It
@@ -81,7 +83,7 @@ public class TouchTargetHelper {
81
83
  // Store eventCoords in array so that they are modified to be relative to the targetView found.
82
84
  viewCoords[0] = eventX;
83
85
  viewCoords[1] = eventY;
84
- View nativeTargetView = findTouchTargetViewWithPointerEvents(viewCoords, viewGroup);
86
+ View nativeTargetView = findTouchTargetViewWithPointerEvents(viewCoords, viewGroup, null);
85
87
  if (nativeTargetView != null) {
86
88
  View reactTargetView = findClosestReactAncestor(nativeTargetView);
87
89
  if (reactTargetView != null) {
@@ -94,6 +96,39 @@ public class TouchTargetHelper {
94
96
  return targetTag;
95
97
  }
96
98
 
99
+ /**
100
+ * Find touch event target view within the provided container given the coordinates provided via
101
+ * {@link MotionEvent}.
102
+ *
103
+ * @param eventX the X screen coordinate of the touch location
104
+ * @param eventY the Y screen coordinate of the touch location
105
+ * @param viewGroup the container view to traverse
106
+ * @param viewCoords an out parameter that will return the X,Y value in the target view
107
+ * @return If a target was found, returns a path through the view tree of all react tags that are
108
+ * a container for the touch target, ordered from target to root (last element)
109
+ */
110
+ public static List<Integer> findTargetPathAndCoordinatesForTouch(
111
+ float eventX, float eventY, ViewGroup viewGroup, float[] viewCoords) {
112
+ UiThreadUtil.assertOnUiThread();
113
+
114
+ // Store eventCoords in array so that they are modified to be relative to the targetView found.
115
+ viewCoords[0] = eventX;
116
+ viewCoords[1] = eventY;
117
+
118
+ List<Integer> pathAccumulator = new ArrayList<>();
119
+ View targetView = findTouchTargetViewWithPointerEvents(viewCoords, viewGroup, pathAccumulator);
120
+
121
+ if (targetView != null) {
122
+ View reactTargetView = findClosestReactAncestor(targetView);
123
+ int targetTag = getTouchTargetForView(reactTargetView, viewCoords[0], viewCoords[1]);
124
+ if (targetTag != pathAccumulator.get(0)) {
125
+ pathAccumulator.add(0, targetTag);
126
+ }
127
+ }
128
+
129
+ return pathAccumulator;
130
+ }
131
+
97
132
  private static View findClosestReactAncestor(View view) {
98
133
  while (view != null && view.getId() <= 0) {
99
134
  view = (View) view.getParent();
@@ -121,7 +156,10 @@ public class TouchTargetHelper {
121
156
  * relative to the targetView found.
122
157
  */
123
158
  private static View findTouchTargetView(
124
- float[] eventCoords, View view, EnumSet<TouchTargetReturnType> allowReturnTouchTargetTypes) {
159
+ float[] eventCoords,
160
+ View view,
161
+ EnumSet<TouchTargetReturnType> allowReturnTouchTargetTypes,
162
+ List<Integer> pathAccumulator) {
125
163
  // We prefer returning a child, so we check for a child that can handle the touch first
126
164
  if (allowReturnTouchTargetTypes.contains(TouchTargetReturnType.CHILD)
127
165
  && view instanceof ViewGroup) {
@@ -143,8 +181,7 @@ public class TouchTargetHelper {
143
181
  float restoreY = eventCoords[1];
144
182
  eventCoords[0] = childPoint.x;
145
183
  eventCoords[1] = childPoint.y;
146
- View targetView = findTouchTargetViewWithPointerEvents(eventCoords, child);
147
-
184
+ View targetView = findTouchTargetViewWithPointerEvents(eventCoords, child, pathAccumulator);
148
185
  if (targetView != null) {
149
186
  // We don't allow touches on views that are outside the bounds of an `overflow: hidden`
150
187
  // View
@@ -158,6 +195,9 @@ public class TouchTargetHelper {
158
195
  }
159
196
  if (inOverflowBounds) {
160
197
  return targetView;
198
+ } else if (pathAccumulator != null) {
199
+ // Not a hit, reset the path found so far
200
+ pathAccumulator.clear();
161
201
  }
162
202
  }
163
203
  eventCoords[0] = restoreX;
@@ -224,7 +264,7 @@ public class TouchTargetHelper {
224
264
  * its descendants are the touch target.
225
265
  */
226
266
  private static @Nullable View findTouchTargetViewWithPointerEvents(
227
- float eventCoords[], View view) {
267
+ float eventCoords[], View view, @Nullable List<Integer> pathAccumulator) {
228
268
  PointerEvents pointerEvents =
229
269
  view instanceof ReactPointerEventsView
230
270
  ? ((ReactPointerEventsView) view).getPointerEvents()
@@ -247,13 +287,23 @@ public class TouchTargetHelper {
247
287
 
248
288
  } else if (pointerEvents == PointerEvents.BOX_ONLY) {
249
289
  // This view may be the target, its children don't matter
250
- return findTouchTargetView(eventCoords, view, EnumSet.of(TouchTargetReturnType.SELF));
290
+ View targetView =
291
+ findTouchTargetView(
292
+ eventCoords, view, EnumSet.of(TouchTargetReturnType.SELF), pathAccumulator);
293
+ if (targetView != null && pathAccumulator != null) {
294
+ pathAccumulator.add(view.getId());
295
+ }
296
+ return targetView;
251
297
 
252
298
  } else if (pointerEvents == PointerEvents.BOX_NONE) {
253
299
  // This view can't be the target, but its children might.
254
300
  View targetView =
255
- findTouchTargetView(eventCoords, view, EnumSet.of(TouchTargetReturnType.CHILD));
301
+ findTouchTargetView(
302
+ eventCoords, view, EnumSet.of(TouchTargetReturnType.CHILD), pathAccumulator);
256
303
  if (targetView != null) {
304
+ if (pathAccumulator != null) {
305
+ pathAccumulator.add(view.getId());
306
+ }
257
307
  return targetView;
258
308
  }
259
309
 
@@ -266,8 +316,11 @@ public class TouchTargetHelper {
266
316
  if (view instanceof ReactCompoundView
267
317
  && isTouchPointInView(eventCoords[0], eventCoords[1], view)) {
268
318
  int reactTag = ((ReactCompoundView) view).reactTagForTouch(eventCoords[0], eventCoords[1]);
319
+ // make sure we exclude the View itself because of the PointerEvents.BOX_NONE
269
320
  if (reactTag != view.getId()) {
270
- // make sure we exclude the View itself because of the PointerEvents.BOX_NONE
321
+ if (pathAccumulator != null) {
322
+ pathAccumulator.add(view.getId());
323
+ }
271
324
  return view;
272
325
  }
273
326
  }
@@ -279,10 +332,22 @@ public class TouchTargetHelper {
279
332
  if (view instanceof ReactCompoundViewGroup
280
333
  && isTouchPointInView(eventCoords[0], eventCoords[1], view)
281
334
  && ((ReactCompoundViewGroup) view).interceptsTouchEvent(eventCoords[0], eventCoords[1])) {
335
+ if (pathAccumulator != null) {
336
+ pathAccumulator.add(view.getId());
337
+ }
282
338
  return view;
283
339
  }
284
- return findTouchTargetView(
285
- eventCoords, view, EnumSet.of(TouchTargetReturnType.SELF, TouchTargetReturnType.CHILD));
340
+
341
+ View result =
342
+ findTouchTargetView(
343
+ eventCoords,
344
+ view,
345
+ EnumSet.of(TouchTargetReturnType.SELF, TouchTargetReturnType.CHILD),
346
+ pathAccumulator);
347
+ if (result != null && pathAccumulator != null) {
348
+ pathAccumulator.add(view.getId());
349
+ }
350
+ return result;
286
351
 
287
352
  } else {
288
353
  throw new JSApplicationIllegalArgumentException(
@@ -40,15 +40,6 @@ public abstract class Event<T extends Event> {
40
40
  private long mTimestampMs;
41
41
  private int mUniqueID = sUniqueID++;
42
42
 
43
- // Android native Event times use 'uptimeMillis', and historically we've used `uptimeMillis`
44
- // throughout this Event class as the coalescing key for events, and for other purposes.
45
- // To get an accurate(ish) absolute UNIX time for the event, we store the initial clock time here.
46
- // uptimeMillis can then be added to this to get an accurate UNIX time.
47
- // However, we still default to uptimeMillis: you must explicitly request UNIX time if you want
48
- // that; see `getUnixTimestampMs`.
49
- public static final long sInitialClockTimeUnixOffset =
50
- SystemClock.currentTimeMillis() - SystemClock.uptimeMillis();
51
-
52
43
  protected Event() {}
53
44
 
54
45
  @Deprecated
@@ -65,8 +56,16 @@ public abstract class Event<T extends Event> {
65
56
  init(-1, viewTag);
66
57
  }
67
58
 
68
- /** This method needs to be called before event is sent to event dispatcher. */
69
59
  protected void init(int surfaceId, int viewTag) {
60
+ init(surfaceId, viewTag, SystemClock.uptimeMillis());
61
+ }
62
+
63
+ /**
64
+ * This method needs to be called before event is sent to event dispatcher. Event timestamps can
65
+ * optionally be dated/backdated to a custom time: for example, touch events should be dated with
66
+ * the system event time.
67
+ */
68
+ protected void init(int surfaceId, int viewTag, long timestampMs) {
70
69
  mSurfaceId = surfaceId;
71
70
  mViewTag = viewTag;
72
71
 
@@ -82,9 +81,7 @@ public abstract class Event<T extends Event> {
82
81
  // At some point it would be great to pass the SurfaceContext here instead.
83
82
  mUIManagerType = (surfaceId == -1 ? UIManagerType.DEFAULT : UIManagerType.FABRIC);
84
83
 
85
- // This is a *relative* time. See `getUnixTimestampMs`.
86
- mTimestampMs = SystemClock.uptimeMillis();
87
-
84
+ mTimestampMs = timestampMs;
88
85
  mInitialized = true;
89
86
  }
90
87
 
@@ -106,11 +103,6 @@ public abstract class Event<T extends Event> {
106
103
  return mTimestampMs;
107
104
  }
108
105
 
109
- /** @return the time at which the event happened as a UNIX timestamp, in milliseconds. */
110
- public final long getUnixTimestampMs() {
111
- return sInitialClockTimeUnixOffset + mTimestampMs;
112
- }
113
-
114
106
  /** @return false if this Event can *never* be coalesced */
115
107
  public boolean canCoalesce() {
116
108
  return true;
@@ -174,7 +166,7 @@ public abstract class Event<T extends Event> {
174
166
  WritableMap eventData = getEventData();
175
167
  if (eventData == null) {
176
168
  throw new IllegalViewOperationException(
177
- "Event: you must return a valid, non-null value from `getEventData`, or override `dispatch` and `disatchModern`. Event: "
169
+ "Event: you must return a valid, non-null value from `getEventData`, or override `dispatch` and `dispatchModern`. Event: "
178
170
  + getEventName());
179
171
  }
180
172
  rctEventEmitter.receiveEvent(getViewTag(), getEventName(), eventData);
@@ -190,18 +182,22 @@ public abstract class Event<T extends Event> {
190
182
  return null;
191
183
  }
192
184
 
185
+ @EventCategoryDef
186
+ protected int getEventCategory() {
187
+ return EventCategoryDef.UNSPECIFIED;
188
+ }
189
+
193
190
  /**
194
191
  * Dispatch this event to JS using a V2 EventEmitter. If surfaceId is not -1 and `getEventData` is
195
192
  * non-null, this will use the RCTModernEventEmitter API. Otherwise, it falls back to the
196
193
  * old-style dispatch function. For Event classes that need to do something different, this method
197
194
  * can always be overridden entirely, but it is not recommended.
198
195
  */
199
- @Deprecated
200
196
  public void dispatchModern(RCTModernEventEmitter rctEventEmitter) {
201
197
  if (getSurfaceId() != -1) {
202
198
  WritableMap eventData = getEventData();
203
199
  if (eventData != null) {
204
- rctEventEmitter.receiveEvent(getSurfaceId(), getViewTag(), getEventName(), getEventData());
200
+ rctEventEmitter.receiveEvent(getSurfaceId(), getViewTag(), getEventName(), eventData);
205
201
  return;
206
202
  }
207
203
  }
@@ -224,7 +220,8 @@ public abstract class Event<T extends Event> {
224
220
  getEventName(),
225
221
  canCoalesce(),
226
222
  getCoalescingKey(),
227
- getEventData());
223
+ eventData,
224
+ getEventCategory());
228
225
  return;
229
226
  }
230
227
  }
@@ -0,0 +1,42 @@
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
+ package com.facebook.react.uimanager.events;
9
+
10
+ import static com.facebook.react.uimanager.events.EventCategoryDef.CONTINUOUS;
11
+ import static com.facebook.react.uimanager.events.EventCategoryDef.CONTINUOUS_END;
12
+ import static com.facebook.react.uimanager.events.EventCategoryDef.CONTINUOUS_START;
13
+ import static com.facebook.react.uimanager.events.EventCategoryDef.DISCRETE;
14
+ import static com.facebook.react.uimanager.events.EventCategoryDef.UNSPECIFIED;
15
+
16
+ import androidx.annotation.IntDef;
17
+
18
+ /**
19
+ * Java specific declaration of the `RawEvent::Category` enum. Keep in sync with
20
+ * `renderer/core/RawEvent.h`.
21
+ */
22
+ @IntDef(value = {CONTINUOUS_START, CONTINUOUS_END, UNSPECIFIED, DISCRETE, CONTINUOUS})
23
+ public @interface EventCategoryDef {
24
+ /** Start of a continuous event. To be used with touchStart. */
25
+ int CONTINUOUS_START = 0;
26
+
27
+ /** End of a continuous event. To be used with touchEnd. */
28
+ int CONTINUOUS_END = 1;
29
+
30
+ /**
31
+ * Priority for this event will be determined from other events in the queue. If it is triggered
32
+ * by continuous event, its priority will be default. If it is not triggered by continuous event,
33
+ * its priority will be discrete.
34
+ */
35
+ int UNSPECIFIED = 2;
36
+
37
+ /** Forces discrete type for the event. Regardless if continuous event is ongoing. */
38
+ int DISCRETE = 3;
39
+
40
+ /** Forces continuous type for the event. Regardless if continuous event isn't ongoing. */
41
+ int CONTINUOUS = 4;
42
+ }
@@ -13,6 +13,7 @@ import com.facebook.react.bridge.LifecycleEventListener;
13
13
  import com.facebook.react.bridge.ReactApplicationContext;
14
14
  import com.facebook.react.bridge.UiThreadUtil;
15
15
  import com.facebook.react.common.MapBuilder;
16
+ import com.facebook.react.config.ReactFeatureFlags;
16
17
  import com.facebook.react.modules.core.ChoreographerCompat;
17
18
  import com.facebook.react.modules.core.ReactChoreographer;
18
19
  import com.facebook.react.uimanager.common.UIManagerType;
@@ -366,7 +367,12 @@ public class EventDispatcherImpl implements EventDispatcher, LifecycleEventListe
366
367
  }
367
368
  Systrace.endAsyncFlow(
368
369
  Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, event.getEventName(), event.getUniqueID());
369
- event.dispatchModern(mReactEventEmitter);
370
+
371
+ if (ReactFeatureFlags.useDispatchUniqueForCoalescableEvents) {
372
+ event.dispatchModernV2(mReactEventEmitter);
373
+ } else {
374
+ event.dispatchModern(mReactEventEmitter);
375
+ }
370
376
  event.dispose();
371
377
  }
372
378
  clearEventsToDispatch();
@@ -52,7 +52,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
52
52
  */
53
53
  public class LockFreeEventDispatcherImpl implements EventDispatcher, LifecycleEventListener {
54
54
 
55
- private final boolean DEBUG_MODE = true && ReactBuildConfig.DEBUG;
55
+ private final boolean DEBUG_MODE = ReactBuildConfig.DEBUG;
56
56
  private final String TAG = LockFreeEventDispatcherImpl.class.getSimpleName();
57
57
 
58
58
  private final ReactApplicationContext mReactContext;
@@ -77,7 +77,7 @@ public class LockFreeEventDispatcherImpl implements EventDispatcher, LifecycleEv
77
77
  Assertions.assertNotNull(mReactEventEmitter);
78
78
 
79
79
  if (DEBUG_MODE) {
80
- FLog.d(TAG, "dispatchEvent: " + event.toString());
80
+ FLog.v(TAG, "dispatchEvent: " + event.toString());
81
81
  }
82
82
 
83
83
  for (EventDispatcherListener listener : mListeners) {
@@ -27,5 +27,12 @@ public interface RCTEventEmitter extends JavaScriptModule {
27
27
  @Deprecated
28
28
  void receiveEvent(int targetTag, String eventName, @Nullable WritableMap event);
29
29
 
30
+ /**
31
+ * Receive and process touches
32
+ *
33
+ * @param eventName JS event name
34
+ * @param touches active pointers data
35
+ * @param changedIndices indices of changed pointers
36
+ */
30
37
  void receiveTouches(String eventName, WritableArray touches, WritableArray changedIndices);
31
38
  }
@@ -28,5 +28,6 @@ public interface RCTModernEventEmitter extends RCTEventEmitter {
28
28
  String eventName,
29
29
  boolean canCoalesceEvent,
30
30
  int customCoalesceKey,
31
- @Nullable WritableMap event);
31
+ @Nullable WritableMap event,
32
+ @EventCategoryDef int category);
32
33
  }
@@ -61,15 +61,10 @@ public class ReactEventEmitter implements RCTModernEventEmitter {
61
61
 
62
62
  @Override
63
63
  public void receiveEvent(
64
- int surfaceId,
65
- int targetTag,
66
- String eventName,
67
- boolean canCoalesceEvent,
68
- int customCoalesceKey,
69
- @Nullable WritableMap event) {
64
+ int surfaceId, int targetTag, String eventName, @Nullable WritableMap event) {
70
65
  // The two additional params here, `canCoalesceEvent` and `customCoalesceKey`, have no
71
66
  // meaning outside of Fabric.
72
- receiveEvent(surfaceId, targetTag, eventName, event);
67
+ receiveEvent(surfaceId, targetTag, eventName, false, 0, event, EventCategoryDef.UNSPECIFIED);
73
68
  }
74
69
 
75
70
  @Override
@@ -120,10 +115,23 @@ public class ReactEventEmitter implements RCTModernEventEmitter {
120
115
 
121
116
  @Override
122
117
  public void receiveEvent(
123
- int surfaceId, int targetReactTag, String eventName, @Nullable WritableMap event) {
118
+ int surfaceId,
119
+ int targetReactTag,
120
+ String eventName,
121
+ boolean canCoalesceEvent,
122
+ int customCoalesceKey,
123
+ @Nullable WritableMap event,
124
+ @EventCategoryDef int category) {
124
125
  @UIManagerType int uiManagerType = ViewUtil.getUIManagerType(targetReactTag);
125
126
  if (uiManagerType == UIManagerType.FABRIC && mFabricEventEmitter != null) {
126
- mFabricEventEmitter.receiveEvent(surfaceId, targetReactTag, eventName, event);
127
+ mFabricEventEmitter.receiveEvent(
128
+ surfaceId,
129
+ targetReactTag,
130
+ eventName,
131
+ canCoalesceEvent,
132
+ customCoalesceKey,
133
+ event,
134
+ category);
127
135
  } else if (uiManagerType == UIManagerType.DEFAULT && getEventEmitter(targetReactTag) != null) {
128
136
  mRCTEventEmitter.receiveEvent(targetReactTag, eventName, event);
129
137
  } else {
@@ -13,6 +13,7 @@ import androidx.core.util.Pools;
13
13
  import com.facebook.infer.annotation.Assertions;
14
14
  import com.facebook.react.bridge.ReactSoftExceptionLogger;
15
15
  import com.facebook.react.bridge.SoftAssertions;
16
+ import com.facebook.react.config.ReactFeatureFlags;
16
17
 
17
18
  /**
18
19
  * An event representing the start, end or movement of a touch. Corresponds to a single {@link
@@ -96,7 +97,7 @@ public class TouchEvent extends Event<TouchEvent> {
96
97
  float viewX,
97
98
  float viewY,
98
99
  TouchEventCoalescingKeyHelper touchEventCoalescingKeyHelper) {
99
- super.init(surfaceId, viewTag);
100
+ super.init(surfaceId, viewTag, motionEventToCopy.getEventTime());
100
101
 
101
102
  SoftAssertions.assertCondition(
102
103
  gestureStartTime != UNSET, "Gesture start time must be initialized");
@@ -188,17 +189,47 @@ public class TouchEvent extends Event<TouchEvent> {
188
189
  "Cannot dispatch a TouchEvent that has no MotionEvent; the TouchEvent has been recycled"));
189
190
  return;
190
191
  }
191
- TouchesHelper.sendTouchEvent(
192
- rctEventEmitter,
193
- Assertions.assertNotNull(mTouchEventType),
194
- getSurfaceId(),
195
- getViewTag(),
196
- this);
192
+
193
+ TouchesHelper.sendTouchEvent(rctEventEmitter, this);
197
194
  }
198
195
 
199
196
  @Override
200
197
  public void dispatchModern(RCTModernEventEmitter rctEventEmitter) {
201
- dispatch(rctEventEmitter);
198
+ if (ReactFeatureFlags.useUpdatedTouchPreprocessing) {
199
+ TouchesHelper.sendTouchEventModern(rctEventEmitter, this, /* useDispatchV2 */ false);
200
+ } else {
201
+ dispatch(rctEventEmitter);
202
+ }
203
+ }
204
+
205
+ @Override
206
+ public void dispatchModernV2(RCTModernEventEmitter rctEventEmitter) {
207
+ if (ReactFeatureFlags.useUpdatedTouchPreprocessing) {
208
+ TouchesHelper.sendTouchEventModern(rctEventEmitter, this, /* useDispatchV2 */ true);
209
+ } else {
210
+ dispatch(rctEventEmitter);
211
+ }
212
+ }
213
+
214
+ @Override
215
+ protected int getEventCategory() {
216
+ TouchEventType type = mTouchEventType;
217
+ if (type == null) {
218
+ return EventCategoryDef.UNSPECIFIED;
219
+ }
220
+
221
+ switch (type) {
222
+ case START:
223
+ return EventCategoryDef.CONTINUOUS_START;
224
+ case END:
225
+ case CANCEL:
226
+ return EventCategoryDef.CONTINUOUS_END;
227
+ case MOVE:
228
+ return EventCategoryDef.CONTINUOUS;
229
+ }
230
+
231
+ // Something something smart compiler...
232
+ return super.getEventCategory();
202
233
  }
203
234
 
204
235
  public MotionEvent getMotionEvent() {
@@ -210,6 +241,10 @@ public class TouchEvent extends Event<TouchEvent> {
210
241
  return mMotionEvent != null;
211
242
  }
212
243
 
244
+ public TouchEventType getTouchEventType() {
245
+ return Assertions.assertNotNull(mTouchEventType);
246
+ }
247
+
213
248
  public float getViewX() {
214
249
  return mViewX;
215
250
  }
@@ -9,23 +9,22 @@ package com.facebook.react.uimanager.events;
9
9
 
10
10
  /** Touch event types that JS module RCTEventEmitter can understand */
11
11
  public enum TouchEventType {
12
- START,
13
- END,
14
- MOVE,
15
- CANCEL;
12
+ START("topTouchStart"),
13
+ END("topTouchEnd"),
14
+ MOVE("topTouchMove"),
15
+ CANCEL("topTouchCancel");
16
+
17
+ private final String mJsName;
18
+
19
+ TouchEventType(String jsName) {
20
+ mJsName = jsName;
21
+ }
22
+
23
+ public String getJsName() {
24
+ return mJsName;
25
+ }
16
26
 
17
27
  public static String getJSEventName(TouchEventType type) {
18
- switch (type) {
19
- case START:
20
- return "topTouchStart";
21
- case END:
22
- return "topTouchEnd";
23
- case MOVE:
24
- return "topTouchMove";
25
- case CANCEL:
26
- return "topTouchCancel";
27
- default:
28
- throw new IllegalArgumentException("Unexpected type " + type);
29
- }
28
+ return type.getJsName();
30
29
  }
31
30
  }