react-native 0.69.1 → 0.70.0-rc.0

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 (955) hide show
  1. package/CHANGELOG.md +243 -0
  2. package/Libraries/Alert/Alert.js +18 -4
  3. package/Libraries/Alert/NativeAlertManager.js +1 -0
  4. package/Libraries/Animated/Animated.js +2 -2
  5. package/Libraries/Animated/AnimatedEvent.js +7 -4
  6. package/Libraries/Animated/AnimatedImplementation.js +17 -3
  7. package/Libraries/Animated/AnimatedMock.js +7 -2
  8. package/Libraries/Animated/NativeAnimatedHelper.js +220 -95
  9. package/Libraries/Animated/NativeAnimatedModule.js +3 -0
  10. package/Libraries/Animated/NativeAnimatedTurboModule.js +3 -0
  11. package/Libraries/Animated/animations/SpringAnimation.js +3 -3
  12. package/Libraries/Animated/animations/TimingAnimation.js +3 -3
  13. package/Libraries/Animated/createAnimatedComponent.js +8 -1
  14. package/Libraries/Animated/nodes/AnimatedAddition.js +3 -1
  15. package/Libraries/Animated/nodes/AnimatedColor.js +50 -29
  16. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +3 -1
  17. package/Libraries/Animated/nodes/AnimatedDivision.js +3 -1
  18. package/Libraries/Animated/nodes/AnimatedInterpolation.js +22 -21
  19. package/Libraries/Animated/nodes/AnimatedModulo.js +3 -1
  20. package/Libraries/Animated/nodes/AnimatedMultiplication.js +3 -2
  21. package/Libraries/Animated/nodes/AnimatedProps.js +20 -12
  22. package/Libraries/Animated/nodes/AnimatedStyle.js +19 -16
  23. package/Libraries/Animated/nodes/AnimatedSubtraction.js +3 -1
  24. package/Libraries/Animated/nodes/AnimatedTransform.js +5 -5
  25. package/Libraries/Animated/nodes/AnimatedValue.js +14 -5
  26. package/Libraries/Animated/nodes/AnimatedValueXY.js +28 -1
  27. package/Libraries/Animated/useAnimatedProps.js +1 -0
  28. package/Libraries/AppState/AppState.js +0 -32
  29. package/Libraries/BatchedBridge/MessageQueue.js +21 -15
  30. package/Libraries/BatchedBridge/NativeModules.js +3 -4
  31. package/Libraries/Blob/FileReader.js +0 -6
  32. package/Libraries/Blob/RCTFileReaderModule.mm +31 -27
  33. package/Libraries/Blob/React-RCTBlob.podspec +1 -1
  34. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +0 -20
  35. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -0
  36. package/Libraries/Components/Keyboard/Keyboard.js +0 -11
  37. package/Libraries/Components/Pressable/Pressable.js +2 -0
  38. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +1 -3
  39. package/Libraries/Components/SafeAreaView/SafeAreaView.js +3 -30
  40. package/Libraries/Components/ScrollView/ScrollView.js +13 -11
  41. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +5 -3
  42. package/Libraries/Components/StatusBar/StatusBar.js +10 -7
  43. package/Libraries/Components/TextInput/InputAccessoryView.js +14 -13
  44. package/Libraries/Components/TextInput/TextInput.js +12 -2
  45. package/Libraries/Components/Touchable/PooledClass.js +16 -4
  46. package/Libraries/Components/Touchable/Touchable.js +50 -1
  47. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -2
  48. package/Libraries/Components/View/ReactNativeStyleAttributes.js +0 -7
  49. package/Libraries/Components/View/ViewPropTypes.js +3 -8
  50. package/Libraries/Core/ExceptionsManager.js +2 -0
  51. package/Libraries/Core/ReactNativeVersion.js +3 -3
  52. package/Libraries/Core/Timers/JSTimers.js +2 -2
  53. package/Libraries/Core/polyfillPromise.js +0 -32
  54. package/Libraries/Core/setUpBatchedBridge.js +5 -1
  55. package/Libraries/Core/setUpPerformance.js +1 -1
  56. package/Libraries/EventEmitter/NativeEventEmitter.js +0 -13
  57. package/Libraries/Image/AssetSourceResolver.js +2 -2
  58. package/Libraries/Image/Image.android.js +5 -3
  59. package/Libraries/Image/Image.ios.js +6 -3
  60. package/Libraries/Image/ImageSource.js +7 -5
  61. package/Libraries/Image/RCTDisplayWeakRefreshable.h +1 -0
  62. package/Libraries/Image/RCTImageLoader.mm +13 -0
  63. package/Libraries/Image/RCTImageView.mm +1 -1
  64. package/Libraries/Image/React-RCTImage.podspec +1 -1
  65. package/Libraries/Inspector/ElementBox.js +2 -2
  66. package/Libraries/Inspector/NetworkOverlay.js +13 -8
  67. package/Libraries/Interaction/PanResponder.js +16 -14
  68. package/Libraries/Linking/Linking.js +0 -11
  69. package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
  70. package/Libraries/Lists/FlatList.js +3 -2
  71. package/Libraries/Lists/SectionList.js +2 -0
  72. package/Libraries/Lists/ViewabilityHelper.js +7 -3
  73. package/Libraries/Lists/VirtualizeUtils.js +33 -20
  74. package/Libraries/Lists/VirtualizedList.js +93 -47
  75. package/Libraries/Lists/VirtualizedListContext.js +1 -0
  76. package/Libraries/Lists/VirtualizedSectionList.js +14 -9
  77. package/Libraries/LogBox/Data/LogBoxData.js +1 -1
  78. package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
  79. package/Libraries/LogBox/LogBox.js +3 -1
  80. package/Libraries/LogBox/UI/AnsiHighlight.js +2 -0
  81. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +3 -0
  82. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +0 -3
  83. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +8 -3
  84. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +5 -0
  85. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +5 -0
  86. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
  87. package/Libraries/NativeComponent/BaseViewConfig.android.js +9 -18
  88. package/Libraries/NativeComponent/BaseViewConfig.ios.js +26 -12
  89. package/Libraries/Network/RCTNetworking.mm +34 -28
  90. package/Libraries/Network/React-RCTNetwork.podspec +1 -1
  91. package/Libraries/Network/XMLHttpRequest.js +9 -11
  92. package/Libraries/Performance/PureComponentDebug.js +1 -0
  93. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +9 -1
  94. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +16 -0
  95. package/Libraries/Pressability/Pressability.js +26 -16
  96. package/Libraries/Promise.js +0 -1
  97. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
  98. package/Libraries/ReactNative/AppRegistry.js +16 -13
  99. package/Libraries/ReactNative/BridgelessUIManager.js +2 -0
  100. package/Libraries/ReactNative/PaperUIManager.js +9 -9
  101. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +12 -0
  102. package/Libraries/ReactNative/ReactNativeRuntimeDiagnostics.js +68 -0
  103. package/Libraries/ReactNative/getNativeComponentAttributes.js +6 -7
  104. package/Libraries/ReactNative/renderApplication.js +1 -1
  105. package/Libraries/Renderer/README.md +22 -0
  106. package/Libraries/Renderer/REVISION +1 -1
  107. package/Libraries/Renderer/implementations/ReactFabric-dev.js +4443 -3615
  108. package/Libraries/Renderer/implementations/ReactFabric-prod.js +1496 -1170
  109. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +1694 -1356
  110. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +4439 -3588
  111. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1583 -1249
  112. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1719 -1372
  113. package/Libraries/Settings/React-RCTSettings.podspec +1 -1
  114. package/Libraries/Storage/AsyncStorage.js +7 -1
  115. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +8 -0
  116. package/Libraries/StyleSheet/flattenStyle.js +1 -1
  117. package/Libraries/StyleSheet/processTransform.js +2 -0
  118. package/Libraries/StyleSheet/splitLayoutProps.js +2 -0
  119. package/Libraries/Text/Text.js +15 -7
  120. package/Libraries/Types/CoreEventTypes.js +137 -11
  121. package/Libraries/Utilities/Dimensions.js +0 -13
  122. package/Libraries/Utilities/HMRClient.js +3 -3
  123. package/Libraries/Utilities/Platform.ios.js +0 -7
  124. package/Libraries/Utilities/ReactNativeTestTools.js +3 -1
  125. package/Libraries/Utilities/codegenNativeCommands.js +11 -2
  126. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -0
  127. package/Libraries/Utilities/stringifySafe.js +3 -1
  128. package/Libraries/Utilities/truncate.js +1 -1
  129. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +2 -2
  130. package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
  131. package/Libraries/Vibration/Vibration.js +1 -1
  132. package/Libraries/WebSocket/WebSocket.js +1 -0
  133. package/Libraries/vendor/emitter/EventEmitter.js +105 -12
  134. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +73 -117
  135. package/README.md +1 -1
  136. package/React/Base/RCTAssert.h +12 -6
  137. package/React/Base/RCTAssert.m +46 -31
  138. package/React/Base/RCTConstants.h +3 -3
  139. package/React/Base/RCTConstants.m +6 -6
  140. package/React/Base/RCTDefines.h +2 -2
  141. package/React/Base/RCTEventDispatcherProtocol.h +5 -0
  142. package/React/Base/RCTMultipartStreamReader.m +1 -0
  143. package/React/Base/RCTUtils.h +2 -0
  144. package/React/Base/RCTUtils.m +5 -0
  145. package/React/Base/RCTVersion.m +3 -3
  146. package/React/Base/Surface/RCTSurface.mm +1 -1
  147. package/React/CoreModules/RCTAlertManager.mm +23 -0
  148. package/React/CoreModules/RCTAppState.mm +2 -2
  149. package/React/CoreModules/RCTDeviceInfo.mm +28 -11
  150. package/React/CoreModules/RCTEventDispatcher.mm +6 -1
  151. package/React/CoreModules/RCTExceptionsManager.h +1 -1
  152. package/React/CoreModules/RCTExceptionsManager.mm +1 -1
  153. package/React/CoreModules/RCTLogBox.mm +2 -2
  154. package/React/CoreModules/RCTLogBoxView.mm +1 -1
  155. package/React/CoreModules/React-CoreModules.podspec +1 -1
  156. package/React/CxxBridge/RCTJSIExecutorRuntimeInstaller.mm +1 -3
  157. package/React/CxxUtils/RCTFollyConvert.mm +11 -4
  158. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +1 -1
  159. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +0 -8
  160. package/React/Fabric/Mounting/ComponentViews/SafeAreaView/RCTSafeAreaViewComponentView.mm +1 -10
  161. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.mm +1 -1
  162. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +1 -1
  163. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +1 -1
  164. package/React/Fabric/Mounting/RCTComponentViewFactory.mm +10 -1
  165. package/React/Fabric/Mounting/RCTComponentViewProtocol.h +1 -1
  166. package/React/Fabric/Mounting/RCTMountingManager.h +1 -1
  167. package/React/Fabric/Mounting/RCTMountingManager.mm +10 -5
  168. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.h +1 -1
  169. package/React/Fabric/Mounting/UIView+ComponentViewProtocol.mm +1 -1
  170. package/React/Fabric/RCTSurfacePresenter.mm +3 -6
  171. package/React/Fabric/RCTSurfaceTouchHandler.mm +248 -33
  172. package/React/Modules/RCTEventEmitter.h +2 -0
  173. package/React/Modules/RCTEventEmitter.m +15 -0
  174. package/React/Modules/RCTUIManager.m +1 -1
  175. package/React/React-RCTFabric.podspec +1 -1
  176. package/React/Views/RCTDatePickerManager.m +4 -0
  177. package/React/Views/RCTMaskedViewManager.m +4 -0
  178. package/React/Views/RCTProgressViewManager.m +4 -0
  179. package/React/Views/RCTSegmentedControlManager.m +4 -0
  180. package/React/Views/RCTView.h +5 -3
  181. package/React/Views/RCTViewManager.m +5 -3
  182. package/React/Views/RCTWrapperViewController.m +9 -10
  183. package/React/Views/SafeAreaView/RCTSafeAreaView.h +0 -2
  184. package/React/Views/SafeAreaView/RCTSafeAreaView.m +2 -70
  185. package/React/Views/SafeAreaView/RCTSafeAreaViewManager.m +0 -2
  186. package/React/third-party.xcconfig +1 -1
  187. package/React-Core.podspec +2 -2
  188. package/ReactAndroid/.npmignore +3 -0
  189. package/ReactAndroid/README.md +3 -2
  190. package/ReactAndroid/build.gradle +21 -17
  191. package/ReactAndroid/cmake-utils/Android-prebuilt.cmake +231 -0
  192. package/ReactAndroid/cmake-utils/ReactNative-application.cmake +56 -0
  193. package/ReactAndroid/gradle.properties +19 -9
  194. package/ReactAndroid/hermes-engine/build.gradle +0 -1
  195. package/ReactAndroid/src/main/java/com/facebook/BUCK +1 -0
  196. package/ReactAndroid/src/main/java/com/facebook/debug/debugoverlay/model/BUCK +1 -0
  197. package/ReactAndroid/src/main/java/com/facebook/debug/holder/BUCK +1 -0
  198. package/ReactAndroid/src/main/java/com/facebook/debug/tags/BUCK +1 -0
  199. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/BUCK +2 -0
  200. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/BUCK +2 -0
  201. package/ReactAndroid/src/main/java/com/facebook/hermes/unicode/BUCK +1 -0
  202. package/ReactAndroid/src/main/java/com/facebook/perftest/BUCK +1 -0
  203. package/ReactAndroid/src/main/java/com/facebook/proguard/annotations/BUCK +1 -0
  204. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +1 -0
  205. package/ReactAndroid/src/main/java/com/facebook/react/CompositeReactPackage.java +4 -3
  206. package/ReactAndroid/src/main/java/com/facebook/react/CompositeReactPackageTurboModuleManagerDelegate.java +67 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +2 -2
  208. package/ReactAndroid/src/main/java/com/facebook/react/JSInterpreter.java +18 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java +1 -3
  210. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +14 -16
  211. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +55 -36
  212. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +11 -0
  213. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +2 -2
  214. package/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.java +2 -3
  215. package/ReactAndroid/src/main/java/com/facebook/react/animated/BUCK +1 -0
  216. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +246 -11
  217. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +70 -28
  218. package/ReactAndroid/src/main/java/com/facebook/react/bridge/AssertionException.java +2 -2
  219. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK +2 -0
  220. package/ReactAndroid/src/main/java/com/facebook/react/bridge/BackgroundExecutor.java +19 -2
  221. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +8 -8
  222. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ColorPropConverter.java +28 -21
  223. package/ReactAndroid/src/main/java/com/facebook/react/bridge/{DefaultNativeModuleCallExceptionHandler.java → DefaultJSExceptionHandler.java} +1 -1
  224. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedAsyncTask.java +3 -4
  225. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedResultAsyncTask.java +3 -4
  226. package/ReactAndroid/src/main/java/com/facebook/react/bridge/GuardedRunnable.java +3 -4
  227. package/ReactAndroid/src/main/java/com/facebook/react/bridge/{NativeModuleCallExceptionHandler.java → JSExceptionHandler.java} +5 -5
  228. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleSpec.java +2 -9
  229. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +1 -3
  230. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +14 -14
  231. package/ReactAndroid/src/main/java/com/facebook/react/bridge/SoftAssertions.java +3 -3
  232. package/ReactAndroid/src/main/java/com/facebook/react/bridge/UiThreadUtil.java +17 -4
  233. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +1 -0
  234. package/ReactAndroid/src/main/java/com/facebook/react/common/network/BUCK +1 -0
  235. package/ReactAndroid/src/main/java/com/facebook/react/config/BUCK +1 -0
  236. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +44 -18
  237. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +2 -0
  238. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +4 -4
  239. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +4 -4
  240. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +2 -2
  241. package/ReactAndroid/src/main/java/com/facebook/react/fabric/BUCK +2 -0
  242. package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.java +85 -0
  243. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java +0 -1
  244. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +1 -1
  245. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +105 -32
  246. package/ReactAndroid/src/main/java/com/facebook/react/fabric/GuardedFrameCallback.java +3 -3
  247. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +32 -25
  248. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +4 -7
  249. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/FabricMountItem.cpp +7 -0
  250. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/FabricMountItem.h +7 -1
  251. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/FabricMountingManager.cpp +37 -17
  252. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/JBackgroundExecutor.cpp +9 -14
  253. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/JBackgroundExecutor.h +1 -8
  254. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/viewPropConversions.h +13 -0
  255. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/LayoutMetricsConversions.java +1 -1
  256. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +10 -8
  257. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +11 -0
  258. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +449 -2
  259. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/DispatchStringCommandMountItem.java +1 -1
  260. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +12 -12
  261. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +1 -1
  262. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +1 -0
  263. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/BUCK +1 -0
  264. package/ReactAndroid/src/main/java/com/facebook/react/module/annotations/BUCK +1 -0
  265. package/ReactAndroid/src/main/java/com/facebook/react/module/model/BUCK +1 -0
  266. package/ReactAndroid/src/main/java/com/facebook/react/module/processing/BUCK +0 -2
  267. package/ReactAndroid/src/main/java/com/facebook/react/module/processing/ReactModuleSpecProcessor.java +4 -5
  268. package/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/BUCK +1 -0
  269. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/BUCK +1 -0
  270. package/ReactAndroid/src/main/java/com/facebook/react/modules/appregistry/BUCK +1 -0
  271. package/ReactAndroid/src/main/java/com/facebook/react/modules/appstate/BUCK +1 -0
  272. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +1 -0
  273. package/ReactAndroid/src/main/java/com/facebook/react/modules/bundleloader/BUCK +1 -0
  274. package/ReactAndroid/src/main/java/com/facebook/react/modules/camera/BUCK +1 -0
  275. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +1 -0
  276. package/ReactAndroid/src/main/java/com/facebook/react/modules/common/BUCK +1 -0
  277. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/BUCK +1 -0
  278. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/BUCK +2 -0
  279. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/BUCK +1 -0
  280. package/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +1 -0
  281. package/ReactAndroid/src/main/java/com/facebook/react/modules/fabric/BUCK +1 -0
  282. package/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK +1 -0
  283. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/BUCK +1 -0
  284. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/BUCK +1 -0
  285. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/BUCK +1 -0
  286. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +1 -0
  287. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +2 -1
  288. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.java +14 -0
  289. package/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/BUCK +1 -0
  290. package/ReactAndroid/src/main/java/com/facebook/react/modules/share/BUCK +1 -0
  291. package/ReactAndroid/src/main/java/com/facebook/react/modules/sound/BUCK +1 -0
  292. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/BUCK +1 -0
  293. package/ReactAndroid/src/main/java/com/facebook/react/modules/storage/BUCK +1 -0
  294. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/BUCK +2 -0
  295. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +3 -3
  296. package/ReactAndroid/src/main/java/com/facebook/react/modules/toast/BUCK +1 -0
  297. package/ReactAndroid/src/main/java/com/facebook/react/modules/vibration/BUCK +1 -0
  298. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/BUCK +1 -0
  299. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/BUCK +1 -0
  300. package/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java +1 -1
  301. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/BUCK +1 -0
  302. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +1 -0
  303. package/ReactAndroid/src/main/java/com/facebook/react/surface/BUCK +1 -0
  304. package/ReactAndroid/src/main/java/com/facebook/react/touch/BUCK +1 -0
  305. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/BUCK +2 -0
  306. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/interfaces/BUCK +1 -0
  307. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +2 -0
  308. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/CMakeLists.txt +2 -1
  309. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.cpp +59 -0
  310. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.h +49 -0
  311. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/OnLoad.cpp +3 -0
  312. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +18 -6
  313. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h +3 -3
  314. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +3 -0
  315. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +116 -9
  316. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerAdapter.java +8 -0
  317. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.java +6 -0
  318. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerInterface.java +4 -0
  319. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/GuardedFrameCallback.java +2 -2
  320. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +239 -79
  321. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +20 -0
  322. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +1 -1
  323. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +42 -12
  324. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +2 -0
  325. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.java +0 -3
  326. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstantsHelper.java +2 -1
  327. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java +109 -3
  328. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java +51 -1
  329. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerResolver.java +2 -2
  330. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java +2 -0
  331. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/annotations/BUCK +1 -0
  332. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/BUCK +1 -0
  333. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +11 -2
  334. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.java +79 -23
  335. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEventHelper.java +101 -4
  336. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +1 -1
  337. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/util/BUCK +1 -0
  338. package/ReactAndroid/src/main/java/com/facebook/react/util/BUCK +1 -0
  339. package/ReactAndroid/src/main/java/com/facebook/react/views/common/BUCK +1 -0
  340. package/ReactAndroid/src/main/java/com/facebook/react/views/drawer/BUCK +1 -0
  341. package/ReactAndroid/src/main/java/com/facebook/react/views/image/BUCK +2 -0
  342. package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/BUCK +2 -0
  343. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/BUCK +1 -0
  344. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostManager.java +1 -1
  345. package/ReactAndroid/src/main/java/com/facebook/react/views/progressbar/BUCK +1 -0
  346. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/BUCK +1 -0
  347. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +16 -20
  348. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +12 -5
  349. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +30 -0
  350. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewAccessibilityDelegate.java +154 -0
  351. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +4 -1
  352. package/ReactAndroid/src/main/java/com/facebook/react/views/slider/BUCK +1 -0
  353. package/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/BUCK +1 -0
  354. package/ReactAndroid/src/main/java/com/facebook/react/views/switchview/BUCK +1 -0
  355. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java +10 -0
  356. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +18 -17
  357. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +87 -9
  358. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +27 -6
  359. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +17 -10
  360. package/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/BUCK +1 -0
  361. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/BUCK +1 -0
  362. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +11 -5
  363. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +37 -49
  364. package/ReactAndroid/src/main/java/com/facebook/react/views/unimplementedview/BUCK +1 -0
  365. package/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK +1 -0
  366. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt +12 -0
  367. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +20 -5
  368. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java +6 -0
  369. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +66 -11
  370. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +17 -0
  371. package/ReactAndroid/src/main/java/com/facebook/systrace/BUCK +1 -0
  372. package/ReactAndroid/src/main/jni/CMakeLists.txt +6 -2
  373. package/ReactAndroid/src/main/jni/react/jni/BUCK +0 -1
  374. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +0 -3
  375. package/ReactAndroid/src/main/jni/react/jni/JMessageQueueThread.cpp +5 -7
  376. package/ReactAndroid/src/main/libraries/fbcore/src/main/java/com/facebook/common/logging/BUCK +1 -0
  377. package/ReactAndroid/src/main/libraries/fresco/fresco-react-native/BUCK +7 -6
  378. package/ReactAndroid/src/main/libraries/soloader/java/com/facebook/soloader/BUCK +4 -4
  379. package/ReactAndroid/src/main/res/views/uimanager/values/ids.xml +10 -1
  380. package/ReactCommon/React-Fabric.podspec +1 -1
  381. package/ReactCommon/React-bridging.podspec +1 -1
  382. package/ReactCommon/ReactCommon.podspec +1 -1
  383. package/ReactCommon/butter/BUCK +1 -1
  384. package/ReactCommon/callinvoker/React-callinvoker.podspec +1 -1
  385. package/ReactCommon/cxxreact/BUCK +3 -4
  386. package/ReactCommon/cxxreact/JSBigString.h +2 -2
  387. package/ReactCommon/cxxreact/JSExecutor.h +2 -1
  388. package/ReactCommon/cxxreact/NativeToJsBridge.cpp +2 -2
  389. package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -1
  390. package/ReactCommon/cxxreact/ReactNativeVersion.h +3 -3
  391. package/ReactCommon/cxxreact/tests/BUCK +6 -48
  392. package/ReactCommon/cxxreact/tests/jsarg_helpers.cpp +3 -4
  393. package/ReactCommon/cxxreact/tests/jsbigstring.cpp +0 -43
  394. package/{ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/IdleWaiter.java → ReactCommon/cxxreact/tests/main.cpp} +6 -5
  395. package/ReactCommon/cxxreact/tests/methodcall.cpp +1 -2
  396. package/ReactCommon/hermes/React-hermes.podspec +1 -1
  397. package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +1 -1
  398. package/ReactCommon/hermes/inspector/BUCK +2 -1
  399. package/ReactCommon/hermes/inspector/RuntimeAdapter.h +1 -1
  400. package/ReactCommon/hermes/inspector/chrome/ConnectionDemux.cpp +1 -1
  401. package/ReactCommon/hermes/inspector/chrome/ConnectionDemux.h +1 -1
  402. package/ReactCommon/hermes/inspector/chrome/Registration.cpp +1 -1
  403. package/ReactCommon/hermes/inspector/chrome/Registration.h +1 -1
  404. package/ReactCommon/hermes/inspector/tools/msggen/src/HeaderWriter.js +1 -1
  405. package/ReactCommon/hermes/inspector/tools/msggen/src/index.js +2 -2
  406. package/ReactCommon/jsi/JSCRuntime.cpp +12 -0
  407. package/ReactCommon/jsi/React-jsi.podspec +1 -1
  408. package/ReactCommon/jsi/jsi/decorator.h +6 -0
  409. package/ReactCommon/jsi/jsi/jsi-inl.h +8 -2
  410. package/ReactCommon/jsi/jsi/jsi.cpp +26 -8
  411. package/ReactCommon/jsi/jsi/jsi.h +50 -0
  412. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -1
  413. package/ReactCommon/jsinspector/BUCK +2 -1
  414. package/ReactCommon/libraries/fbcore/src/test/java/com/facebook/powermock/BUCK +2 -0
  415. package/ReactCommon/logger/React-logger.podspec +1 -1
  416. package/ReactCommon/react/bridging/BUCK +1 -1
  417. package/ReactCommon/react/bridging/Class.h +21 -0
  418. package/ReactCommon/react/bridging/Convert.h +9 -0
  419. package/ReactCommon/react/bridging/tests/BridgingTest.h +1 -1
  420. package/ReactCommon/react/config/BUCK +1 -1
  421. package/ReactCommon/react/debug/BUCK +1 -1
  422. package/ReactCommon/react/nativemodule/core/BUCK +3 -3
  423. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +35 -18
  424. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +4 -2
  425. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp +23 -4
  426. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +37 -19
  427. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +46 -61
  428. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +11 -12
  429. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +91 -145
  430. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.h +5 -22
  431. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +4 -2
  432. package/ReactCommon/react/nativemodule/samples/BUCK +1 -0
  433. package/ReactCommon/react/nativemodule/samples/platform/android/CMakeLists.txt +19 -0
  434. package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.cpp +39 -12
  435. package/ReactCommon/react/nativemodule/samples/platform/android/ReactCommon/SampleTurboModuleSpec.h +1 -1
  436. package/ReactCommon/react/renderer/animations/BUCK +1 -1
  437. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +19 -0
  438. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +3 -4
  439. package/ReactCommon/react/renderer/attributedstring/BUCK +1 -1
  440. package/ReactCommon/react/renderer/componentregistry/BUCK +1 -1
  441. package/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +1 -1
  442. package/ReactCommon/react/renderer/componentregistry/native/BUCK +1 -1
  443. package/ReactCommon/react/renderer/components/image/BUCK +1 -1
  444. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +1 -1
  445. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +0 -3
  446. package/ReactCommon/react/renderer/components/modal/BUCK +1 -1
  447. package/ReactCommon/react/renderer/components/progressbar/BUCK +1 -1
  448. package/ReactCommon/react/renderer/components/root/BUCK +1 -1
  449. package/ReactCommon/react/renderer/components/scrollview/BUCK +1 -1
  450. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +321 -198
  451. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +6 -0
  452. package/ReactCommon/react/renderer/components/slider/BUCK +1 -1
  453. package/ReactCommon/react/renderer/components/switch/BUCK +1 -1
  454. package/ReactCommon/react/renderer/components/text/BUCK +1 -1
  455. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +132 -18
  456. package/ReactCommon/react/renderer/components/text/BaseTextProps.h +8 -0
  457. package/ReactCommon/react/renderer/components/text/ParagraphProps.cpp +19 -0
  458. package/ReactCommon/react/renderer/components/text/ParagraphProps.h +6 -0
  459. package/ReactCommon/react/renderer/components/text/TextProps.cpp +9 -0
  460. package/ReactCommon/react/renderer/components/text/TextProps.h +6 -0
  461. package/ReactCommon/react/renderer/components/textinput/BUCK +1 -1
  462. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +9 -0
  463. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +6 -0
  464. package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +1 -1
  465. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.cpp +9 -0
  466. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputProps.h +6 -0
  467. package/ReactCommon/react/renderer/components/unimplementedview/BUCK +1 -1
  468. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +208 -115
  469. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -1
  470. package/ReactCommon/react/renderer/components/view/BUCK +1 -1
  471. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +11 -2
  472. package/ReactCommon/react/renderer/components/view/PointerEvent.h +46 -6
  473. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +41 -8
  474. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +5 -3
  475. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +318 -157
  476. package/ReactCommon/react/renderer/components/view/ViewProps.h +6 -0
  477. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +3 -3
  478. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +1 -2
  479. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +98 -1
  480. package/ReactCommon/react/renderer/components/view/YogaStylableProps.h +6 -0
  481. package/ReactCommon/react/renderer/components/view/conversions.h +5 -2
  482. package/ReactCommon/react/renderer/components/view/primitives.h +7 -0
  483. package/ReactCommon/react/renderer/components/view/propsConversions.h +37 -1
  484. package/ReactCommon/react/renderer/core/BUCK +1 -1
  485. package/ReactCommon/react/renderer/core/ComponentDescriptor.h +5 -5
  486. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +22 -8
  487. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +4 -3
  488. package/ReactCommon/react/renderer/core/Props.cpp +24 -7
  489. package/ReactCommon/react/renderer/core/Props.h +19 -4
  490. package/ReactCommon/react/renderer/core/PropsMacros.h +94 -0
  491. package/ReactCommon/react/renderer/core/RawProps.cpp +7 -0
  492. package/ReactCommon/react/renderer/core/RawProps.h +9 -0
  493. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +63 -0
  494. package/ReactCommon/react/renderer/core/RawPropsParser.h +9 -0
  495. package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +2 -0
  496. package/ReactCommon/react/renderer/core/RawValue.h +2 -0
  497. package/ReactCommon/react/renderer/core/ShadowNode.cpp +8 -8
  498. package/ReactCommon/react/renderer/core/ShadowNode.h +12 -21
  499. package/ReactCommon/react/renderer/core/propsConversions.h +29 -0
  500. package/ReactCommon/react/renderer/core/tests/ComponentDescriptorTest.cpp +9 -9
  501. package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +4 -4
  502. package/ReactCommon/react/renderer/debug/BUCK +1 -1
  503. package/ReactCommon/react/renderer/graphics/BUCK +1 -1
  504. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -1
  505. package/ReactCommon/react/renderer/graphics/RectangleEdges.h +5 -0
  506. package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +11 -23
  507. package/ReactCommon/react/renderer/imagemanager/BUCK +12 -28
  508. package/ReactCommon/react/renderer/mapbuffer/BUCK +1 -1
  509. package/ReactCommon/react/renderer/mounting/BUCK +1 -1
  510. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +35 -5
  511. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +2 -2
  512. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +32 -4
  513. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +35 -3
  514. package/ReactCommon/react/renderer/mounting/StubView.h +1 -1
  515. package/ReactCommon/react/renderer/mounting/StubViewTree.cpp +5 -0
  516. package/ReactCommon/react/renderer/mounting/tests/MountingTest.cpp +129 -119
  517. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +4 -4
  518. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +7 -17
  519. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +0 -10
  520. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +18 -3
  521. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +1 -20
  522. package/ReactCommon/react/renderer/scheduler/BUCK +1 -1
  523. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +2 -2
  524. package/ReactCommon/react/renderer/telemetry/BUCK +1 -1
  525. package/ReactCommon/react/renderer/templateprocessor/BUCK +1 -1
  526. package/ReactCommon/react/renderer/templateprocessor/UITemplateProcessor.cpp +6 -6
  527. package/ReactCommon/react/renderer/templateprocessor/UITemplateProcessor.h +1 -1
  528. package/ReactCommon/react/renderer/textlayoutmanager/BUCK +1 -1
  529. package/ReactCommon/react/renderer/timeline/BUCK +1 -1
  530. package/ReactCommon/react/renderer/uimanager/BUCK +1 -1
  531. package/ReactCommon/react/renderer/uimanager/LayoutAnimationStatusDelegate.h +2 -0
  532. package/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp +66 -24
  533. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +4 -4
  534. package/ReactCommon/react/renderer/uimanager/UIManager.h +2 -2
  535. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -2
  536. package/ReactCommon/react/renderer/uimanager/primitives.h +7 -7
  537. package/ReactCommon/react/test_utils/shadowTreeGeneration.h +1 -1
  538. package/ReactCommon/react/utils/BUCK +1 -1
  539. package/ReactCommon/reactperflogger/BUCK +2 -2
  540. package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
  541. package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +1 -1
  542. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-debug-sources.jar → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug-sources.jar} +0 -0
  543. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-debug-sources.jar.md5 → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug-sources.jar.md5} +0 -0
  544. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-debug-sources.jar.sha1 → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug-sources.jar.sha1} +0 -0
  545. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-debug-sources.jar.sha256 → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug-sources.jar.sha256} +0 -0
  546. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-debug-sources.jar.sha512 → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug-sources.jar.sha512} +0 -0
  547. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug.aar +0 -0
  548. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug.aar.md5 +1 -0
  549. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug.aar.sha1 +1 -0
  550. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug.aar.sha256 +1 -0
  551. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-debug.aar.sha512 +1 -0
  552. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-release-sources.jar → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release-sources.jar} +0 -0
  553. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-release-sources.jar.md5 → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release-sources.jar.md5} +0 -0
  554. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-release-sources.jar.sha1 → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release-sources.jar.sha1} +0 -0
  555. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-release-sources.jar.sha256 → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release-sources.jar.sha256} +0 -0
  556. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1-release-sources.jar.sha512 → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release-sources.jar.sha512} +0 -0
  557. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release.aar +0 -0
  558. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release.aar.md5 +1 -0
  559. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release.aar.sha1 +1 -0
  560. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release.aar.sha256 +1 -0
  561. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0-release.aar.sha512 +1 -0
  562. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1.module → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0.module} +34 -76
  563. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0.module.md5 +1 -0
  564. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0.module.sha1 +1 -0
  565. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0.module.sha256 +1 -0
  566. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0.module.sha512 +1 -0
  567. package/android/com/facebook/react/hermes-engine/{0.69.1/hermes-engine-0.69.1.pom → 0.70.0-rc.0/hermes-engine-0.70.0-rc.0.pom} +1 -1
  568. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0.pom.md5 +1 -0
  569. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0.pom.sha1 +1 -0
  570. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0.pom.sha256 +1 -0
  571. package/android/com/facebook/react/hermes-engine/0.70.0-rc.0/hermes-engine-0.70.0-rc.0.pom.sha512 +1 -0
  572. package/android/com/facebook/react/hermes-engine/maven-metadata.xml +4 -4
  573. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.md5 +1 -1
  574. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha1 +1 -1
  575. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha256 +1 -1
  576. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha512 +1 -1
  577. package/android/com/facebook/react/react-native/{0.69.1/react-native-0.69.1-debug-sources.jar → 0.70.0-rc.0/react-native-0.70.0-rc.0-debug-sources.jar} +0 -0
  578. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-debug-sources.jar.md5 +1 -0
  579. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-debug-sources.jar.sha1 +1 -0
  580. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-debug-sources.jar.sha256 +1 -0
  581. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-debug-sources.jar.sha512 +1 -0
  582. package/android/com/facebook/react/react-native/{0.69.1/react-native-0.69.1-debug.aar → 0.70.0-rc.0/react-native-0.70.0-rc.0-debug.aar} +0 -0
  583. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-debug.aar.md5 +1 -0
  584. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-debug.aar.sha1 +1 -0
  585. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-debug.aar.sha256 +1 -0
  586. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-debug.aar.sha512 +1 -0
  587. package/android/com/facebook/react/react-native/{0.69.1/react-native-0.69.1-release-sources.jar → 0.70.0-rc.0/react-native-0.70.0-rc.0-release-sources.jar} +0 -0
  588. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-release-sources.jar.md5 +1 -0
  589. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-release-sources.jar.sha1 +1 -0
  590. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-release-sources.jar.sha256 +1 -0
  591. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-release-sources.jar.sha512 +1 -0
  592. package/android/com/facebook/react/react-native/{0.69.1/react-native-0.69.1-release.aar → 0.70.0-rc.0/react-native-0.70.0-rc.0-release.aar} +0 -0
  593. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-release.aar.md5 +1 -0
  594. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-release.aar.sha1 +1 -0
  595. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-release.aar.sha256 +1 -0
  596. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0-release.aar.sha512 +1 -0
  597. package/android/com/facebook/react/react-native/{0.69.1/react-native-0.69.1.module → 0.70.0-rc.0/react-native-0.70.0-rc.0.module} +156 -198
  598. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0.module.md5 +1 -0
  599. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0.module.sha1 +1 -0
  600. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0.module.sha256 +1 -0
  601. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0.module.sha512 +1 -0
  602. package/android/com/facebook/react/react-native/{0.69.1/react-native-0.69.1.pom → 0.70.0-rc.0/react-native-0.70.0-rc.0.pom} +29 -29
  603. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0.pom.md5 +1 -0
  604. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0.pom.sha1 +1 -0
  605. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0.pom.sha256 +1 -0
  606. package/android/com/facebook/react/react-native/0.70.0-rc.0/react-native-0.70.0-rc.0.pom.sha512 +1 -0
  607. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  608. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  609. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  610. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  611. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  612. package/flow/JSITimerInternalType.js +30 -0
  613. package/jest/assetFileTransformer.js +3 -2
  614. package/jest/setup.js +4 -0
  615. package/package.json +24 -21
  616. package/scripts/cocoapods/codegen.rb +67 -0
  617. package/scripts/cocoapods/fabric.rb +19 -0
  618. package/scripts/cocoapods/flipper.rb +118 -0
  619. package/scripts/cocoapods/helpers.rb +20 -0
  620. package/scripts/cocoapods/hermes.rb +20 -0
  621. package/scripts/cocoapods/local_podspec_patch.rb +51 -0
  622. package/scripts/cocoapods/new_architecture.rb +59 -0
  623. package/scripts/cocoapods/utils.rb +142 -0
  624. package/scripts/codegen/codegen-utils.js +37 -0
  625. package/scripts/codegen/generate-artifacts-executor.js +481 -0
  626. package/scripts/codegen/generate-specs-cli-executor.js +127 -0
  627. package/scripts/generate-artifacts.js +11 -257
  628. package/scripts/generate-specs-cli.js +3 -88
  629. package/scripts/hermes/hermes-utils.js +22 -13
  630. package/scripts/ios-configure-glog.sh +3 -2
  631. package/scripts/launchPackager.command +4 -0
  632. package/scripts/react-native-xcode.sh +9 -16
  633. package/scripts/react_native_pods.rb +55 -305
  634. package/scripts/react_native_pods_utils/script_phases.sh +4 -4
  635. package/sdks/.hermesversion +1 -1
  636. package/sdks/hermes-engine/hermes-engine.podspec +5 -2
  637. package/sdks/hermes-engine/utils/build-apple-framework.sh +5 -0
  638. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  639. package/sdks/hermesc/osx-bin/hermesc +0 -0
  640. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  641. package/template/App.js +6 -1
  642. package/template/_flowconfig +1 -1
  643. package/template/_node-version +1 -0
  644. package/template/android/app/build.gradle +5 -1
  645. package/template/android/app/src/main/jni/Android.mk +16 -11
  646. package/template/android/app/src/main/jni/MainApplicationModuleProvider.cpp +9 -1
  647. package/template/android/app/src/main/jni/MainApplicationModuleProvider.h +1 -1
  648. package/template/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +4 -4
  649. package/template/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +4 -4
  650. package/template/android/app/src/main/jni/MainComponentsRegistry.cpp +4 -0
  651. package/template/android/build.gradle +1 -1
  652. package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  653. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  654. package/template/ios/Podfile +15 -9
  655. package/template/package.json +4 -4
  656. package/third-party-podspecs/RCT-Folly.podspec +2 -2
  657. package/Libraries/vendor/emitter/EventSubscription.js +0 -19
  658. package/Libraries/vendor/emitter/_EmitterSubscription.js +0 -62
  659. package/Libraries/vendor/emitter/_EventEmitter.js +0 -184
  660. package/Libraries/vendor/emitter/_EventSubscription.js +0 -45
  661. package/Libraries/vendor/emitter/_EventSubscriptionVendor.js +0 -108
  662. package/ReactAndroid/src/androidTest/AndroidManifest.xml +0 -20
  663. package/ReactAndroid/src/androidTest/assets/BUCK +0 -7
  664. package/ReactAndroid/src/androidTest/buck-runner/AndroidManifest.xml +0 -28
  665. package/ReactAndroid/src/androidTest/buck-runner/BUCK +0 -24
  666. package/ReactAndroid/src/androidTest/java/com/facebook/react/bridge/ArgumentsTest.java +0 -93
  667. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/AbstractScrollViewTestCase.java +0 -108
  668. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/AssertModule.java +0 -53
  669. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +0 -46
  670. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/FabricUIManagerFactory.java +0 -19
  671. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/FakeAsyncLocalStorage.java +0 -56
  672. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/FakeWebSocketModule.java +0 -44
  673. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/InstanceSpecForTestPackage.java +0 -38
  674. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/IntRecordingModule.java +0 -54
  675. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/JSIntegrationTestChecker.java +0 -55
  676. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/MultipleFailureException.java +0 -46
  677. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppInstrumentationTestCase.java +0 -152
  678. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java +0 -378
  679. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstanceSpecForTest.java +0 -127
  680. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactInstrumentationTest.java +0 -125
  681. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactIntegrationTestCase.java +0 -209
  682. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactSettingsForTests.java +0 -59
  683. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestAppShell.java +0 -38
  684. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestApplicationImpl.java +0 -22
  685. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestFactory.java +0 -27
  686. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactTestHelper.java +0 -217
  687. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ScreenshotingFrameLayout.java +0 -77
  688. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/SingleTouchGestureGenerator.java +0 -150
  689. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/StringRecordingModule.java +0 -42
  690. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/BUCK +0 -16
  691. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/ReactBridgeIdleSignaler.java +0 -65
  692. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/idledetection/ReactIdleDetectionUtil.java +0 -121
  693. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/network/BUCK +0 -25
  694. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/network/NetworkRecordingModuleMock.java +0 -147
  695. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/rule/BUCK +0 -43
  696. package/ReactAndroid/src/androidTest/java/com/facebook/react/testing/rule/ReactNativeTestRule.java +0 -184
  697. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/AnimatedTransformTest.java +0 -49
  698. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -43
  699. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystMeasureLayoutTest.java +0 -138
  700. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystMultitouchHandlingTestCase.java +0 -681
  701. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystNativeJSToJavaParametersTestCase.java +0 -837
  702. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystNativeJavaToJSArgumentsTestCase.java +0 -385
  703. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystNativeJavaToJSReturnValuesTestCase.java +0 -162
  704. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystSubviewsClippingTestCase.java +0 -301
  705. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystTouchBubblingTestCase.java +0 -155
  706. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/CatalystUIManagerTestCase.java +0 -256
  707. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ImageErrorTestCase.java +0 -47
  708. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ImageOverlayColorTestCase.java +0 -25
  709. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/InitialPropsTestCase.java +0 -120
  710. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/JSLocaleTest.java +0 -102
  711. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/JSResponderTestCase.java +0 -62
  712. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/LayoutEventsTestCase.java +0 -37
  713. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/NativeIdTestCase.java +0 -89
  714. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ProgressBarTestCase.java +0 -123
  715. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactHorizontalScrollViewTestCase.java +0 -125
  716. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactScrollViewTestCase.java +0 -127
  717. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactSwipeRefreshLayoutTestCase.java +0 -97
  718. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ShareTestCase.java +0 -92
  719. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/TestIdTestCase.java +0 -46
  720. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/TextInputTestCase.java +0 -327
  721. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ViewRenderingTestCase.java +0 -154
  722. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/BUCK +0 -33
  723. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/ReactInstanceManagerTest.java +0 -96
  724. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/ReactRootViewTest.java +0 -203
  725. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/core/WritableNativeMapTest.java +0 -130
  726. package/ReactAndroid/src/androidTest/js/AnimatedTransformTestModule.js +0 -85
  727. package/ReactAndroid/src/androidTest/js/Asserts.js +0 -38
  728. package/ReactAndroid/src/androidTest/js/BUCK +0 -29
  729. package/ReactAndroid/src/androidTest/js/CatalystRootViewTestModule.js +0 -62
  730. package/ReactAndroid/src/androidTest/js/ImageErrorTestApp.js +0 -56
  731. package/ReactAndroid/src/androidTest/js/ImageOverlayColorTestApp.js +0 -29
  732. package/ReactAndroid/src/androidTest/js/InitialPropsTestApp.js +0 -25
  733. package/ReactAndroid/src/androidTest/js/JSResponderTestApp.js +0 -66
  734. package/ReactAndroid/src/androidTest/js/LayoutEventsTestApp.js +0 -89
  735. package/ReactAndroid/src/androidTest/js/MeasureLayoutTestModule.js +0 -214
  736. package/ReactAndroid/src/androidTest/js/MultitouchHandlingTestAppModule.js +0 -78
  737. package/ReactAndroid/src/androidTest/js/NativeIdTestModule.js +0 -76
  738. package/ReactAndroid/src/androidTest/js/ProgressBarTestModule.js +0 -59
  739. package/ReactAndroid/src/androidTest/js/ScrollViewTestModule.js +0 -183
  740. package/ReactAndroid/src/androidTest/js/ShareTestModule.js +0 -36
  741. package/ReactAndroid/src/androidTest/js/SubviewsClippingTestModule.js +0 -369
  742. package/ReactAndroid/src/androidTest/js/SwipeRefreshLayoutTestModule.js +0 -101
  743. package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -113
  744. package/ReactAndroid/src/androidTest/js/TestIdTestModule.js +0 -86
  745. package/ReactAndroid/src/androidTest/js/TestJSLocaleModule.js +0 -28
  746. package/ReactAndroid/src/androidTest/js/TestJSToJavaParametersModule.js +0 -125
  747. package/ReactAndroid/src/androidTest/js/TestJavaToJSArgumentsModule.js +0 -114
  748. package/ReactAndroid/src/androidTest/js/TestJavaToJSReturnValuesModule.js +0 -39
  749. package/ReactAndroid/src/androidTest/js/TextInputTestModule.js +0 -185
  750. package/ReactAndroid/src/androidTest/js/TouchBubblingTestAppModule.js +0 -84
  751. package/ReactAndroid/src/androidTest/js/UIManagerTestModule.js +0 -268
  752. package/ReactAndroid/src/androidTest/js/ViewRenderingTestModule.js +0 -109
  753. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/Android.mk +0 -31
  754. package/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/Android.mk +0 -55
  755. package/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/NativeRunnable.java +0 -25
  756. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/Android.mk +0 -49
  757. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +0 -105
  758. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/Android.mk +0 -27
  759. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/Android.mk +0 -27
  760. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/Android.mk +0 -32
  761. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/Android.mk +0 -63
  762. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/Android.mk +0 -45
  763. package/ReactAndroid/src/main/jni/Application.mk +0 -34
  764. package/ReactAndroid/src/main/jni/first-party/fb/Android.mk +0 -30
  765. package/ReactAndroid/src/main/jni/first-party/fbgloginit/Android.mk +0 -23
  766. package/ReactAndroid/src/main/jni/first-party/yogajni/Android.mk +0 -27
  767. package/ReactAndroid/src/main/jni/react/jni/Android.mk +0 -176
  768. package/ReactAndroid/src/main/jni/react/jni/JNativeRunnable.h +0 -52
  769. package/ReactAndroid/src/main/jni/third-party/boost/Android.mk +0 -15
  770. package/ReactAndroid/src/main/jni/third-party/double-conversion/Android.mk +0 -22
  771. package/ReactAndroid/src/main/jni/third-party/fmt/Android.mk +0 -15
  772. package/ReactAndroid/src/main/jni/third-party/folly/Android.mk +0 -128
  773. package/ReactAndroid/src/main/jni/third-party/glog/Android.mk +0 -32
  774. package/ReactAndroid/src/main/jni/third-party/jsc/Android.mk +0 -6
  775. package/ReactAndroid/src/main/jni/third-party/libevent/Android.mk +0 -36
  776. package/ReactAndroid/src/test/java/com/facebook/common/logging/BUCK +0 -17
  777. package/ReactAndroid/src/test/java/com/facebook/common/logging/FakeLoggingDelegate.java +0 -138
  778. package/ReactAndroid/src/test/java/com/facebook/react/BUCK +0 -28
  779. package/ReactAndroid/src/test/java/com/facebook/react/CompositeReactPackageTest.java +0 -156
  780. package/ReactAndroid/src/test/java/com/facebook/react/ReactActivityDelegateTest.kt +0 -62
  781. package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +0 -255
  782. package/ReactAndroid/src/test/java/com/facebook/react/animated/BUCK +0 -22
  783. package/ReactAndroid/src/test/java/com/facebook/react/animated/NativeAnimatedInterpolationTest.java +0 -123
  784. package/ReactAndroid/src/test/java/com/facebook/react/animated/NativeAnimatedNodeTraversalTest.java +0 -1294
  785. package/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK +0 -44
  786. package/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java +0 -103
  787. package/ReactAndroid/src/test/java/com/facebook/react/bridge/FallbackJSBundleLoaderTest.java +0 -176
  788. package/ReactAndroid/src/test/java/com/facebook/react/bridge/InstanceHandleHelper.java +0 -19
  789. package/ReactAndroid/src/test/java/com/facebook/react/bridge/JavaOnlyArrayTest.java +0 -37
  790. package/ReactAndroid/src/test/java/com/facebook/react/bridge/JavaScriptModuleRegistryTest.java +0 -35
  791. package/ReactAndroid/src/test/java/com/facebook/react/bridge/ReactTestHelper.java +0 -59
  792. package/ReactAndroid/src/test/java/com/facebook/react/devsupport/BUCK +0 -23
  793. package/ReactAndroid/src/test/java/com/facebook/react/devsupport/JSDebuggerWebSocketClientTest.java +0 -139
  794. package/ReactAndroid/src/test/java/com/facebook/react/devsupport/MultipartStreamReaderTest.java +0 -151
  795. package/ReactAndroid/src/test/java/com/facebook/react/devsupport/StackTraceHelperTest.java +0 -65
  796. package/ReactAndroid/src/test/java/com/facebook/react/fabric/events/BUCK +0 -16
  797. package/ReactAndroid/src/test/java/com/facebook/react/fabric/events/TouchEventDispatchTest.java +0 -616
  798. package/ReactAndroid/src/test/java/com/facebook/react/modules/BUCK +0 -45
  799. package/ReactAndroid/src/test/java/com/facebook/react/modules/blob/BlobModuleTest.java +0 -156
  800. package/ReactAndroid/src/test/java/com/facebook/react/modules/camera/ImageStoreManagerTest.java +0 -81
  801. package/ReactAndroid/src/test/java/com/facebook/react/modules/clipboard/ClipboardModuleTest.java +0 -57
  802. package/ReactAndroid/src/test/java/com/facebook/react/modules/deviceinfo/DeviceInfoModuleTest.java +0 -168
  803. package/ReactAndroid/src/test/java/com/facebook/react/modules/dialog/DialogModuleTest.java +0 -165
  804. package/ReactAndroid/src/test/java/com/facebook/react/modules/network/HeaderUtilTest.java +0 -73
  805. package/ReactAndroid/src/test/java/com/facebook/react/modules/network/NetworkingModuleTest.java +0 -647
  806. package/ReactAndroid/src/test/java/com/facebook/react/modules/network/ProgressiveStringDecoderTest.java +0 -138
  807. package/ReactAndroid/src/test/java/com/facebook/react/modules/network/ReactCookieJarContainerTest.java +0 -71
  808. package/ReactAndroid/src/test/java/com/facebook/react/modules/share/ShareModuleTest.java +0 -230
  809. package/ReactAndroid/src/test/java/com/facebook/react/modules/storage/AsyncStorageModuleTest.java +0 -345
  810. package/ReactAndroid/src/test/java/com/facebook/react/modules/timing/TimingModuleTest.java +0 -306
  811. package/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/BUCK +0 -18
  812. package/ReactAndroid/src/test/java/com/facebook/react/packagerconnection/JSPackagerClientTest.java +0 -144
  813. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/BUCK +0 -40
  814. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/BaseViewManagerTest.java +0 -79
  815. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/LayoutPropertyApplicatorTest.java +0 -470
  816. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/MatrixMathHelperTest.java +0 -173
  817. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactPropAnnotationSetterSpecTest.java +0 -125
  818. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactPropAnnotationSetterTest.java +0 -499
  819. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactPropConstantsTest.java +0 -163
  820. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactPropForShadowNodeSetterTest.java +0 -160
  821. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/ReactPropForShadowNodeSpecTest.java +0 -122
  822. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/SimpleViewPropertyTest.java +0 -116
  823. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/UIManagerModuleConstantsTest.java +0 -173
  824. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/UIManagerModuleTest.java +0 -721
  825. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/layoutanimation/BUCK +0 -16
  826. package/ReactAndroid/src/test/java/com/facebook/react/uimanager/layoutanimation/InterpolatorTypeTest.java +0 -49
  827. package/ReactAndroid/src/test/java/com/facebook/react/util/BUCK +0 -17
  828. package/ReactAndroid/src/test/java/com/facebook/react/util/JSStackTraceTest.java +0 -96
  829. package/ReactAndroid/src/test/java/com/facebook/react/views/BUCK +0 -41
  830. package/ReactAndroid/src/test/java/com/facebook/react/views/image/ImageResizeModeTest.java +0 -42
  831. package/ReactAndroid/src/test/java/com/facebook/react/views/image/ReactImagePropertyTest.java +0 -143
  832. package/ReactAndroid/src/test/java/com/facebook/react/views/slider/ReactSliderPropertyTest.java +0 -100
  833. package/ReactAndroid/src/test/java/com/facebook/react/views/text/CustomLineHeightSpanTest.java +0 -113
  834. package/ReactAndroid/src/test/java/com/facebook/react/views/text/ReactTextTest.java +0 -516
  835. package/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java +0 -400
  836. package/ReactAndroid/src/test/java/com/facebook/react/views/textinput/TextInputTest.java +0 -174
  837. package/ReactAndroid/src/test/java/com/facebook/react/views/view/ColorUtilTest.java +0 -56
  838. package/ReactAndroid/src/test/java/org/mockito/configuration/BUCK +0 -13
  839. package/ReactAndroid/src/test/java/org/mockito/configuration/MockitoConfiguration.java +0 -24
  840. package/ReactAndroid/src/test/resources/BUCK +0 -18
  841. package/ReactAndroid/src/test/resources/robolectric.properties +0 -2
  842. package/ReactCommon/butter/Android.mk +0 -27
  843. package/ReactCommon/callinvoker/Android.mk +0 -25
  844. package/ReactCommon/cxxreact/Android.mk +0 -51
  845. package/ReactCommon/hermes/executor/Android.mk +0 -41
  846. package/ReactCommon/hermes/inspector/Android.mk +0 -36
  847. package/ReactCommon/jsi/Android.mk +0 -41
  848. package/ReactCommon/jsiexecutor/Android.mk +0 -23
  849. package/ReactCommon/jsinspector/Android.mk +0 -20
  850. package/ReactCommon/logger/Android.mk +0 -24
  851. package/ReactCommon/microprofiler/.clang-tidy +0 -5
  852. package/ReactCommon/microprofiler/BUCK +0 -30
  853. package/ReactCommon/microprofiler/MicroProfiler.cpp +0 -252
  854. package/ReactCommon/microprofiler/MicroProfiler.h +0 -89
  855. package/ReactCommon/react/bridging/Android.mk +0 -27
  856. package/ReactCommon/react/config/Android.mk +0 -26
  857. package/ReactCommon/react/debug/Android.mk +0 -30
  858. package/ReactCommon/react/nativemodule/core/Android.mk +0 -40
  859. package/ReactCommon/react/nativemodule/samples/platform/android/Android.mk +0 -23
  860. package/ReactCommon/react/renderer/animations/Android.mk +0 -58
  861. package/ReactCommon/react/renderer/attributedstring/Android.mk +0 -53
  862. package/ReactCommon/react/renderer/componentregistry/Android.mk +0 -42
  863. package/ReactCommon/react/renderer/componentregistry/native/Android.mk +0 -37
  864. package/ReactCommon/react/renderer/components/image/Android.mk +0 -51
  865. package/ReactCommon/react/renderer/components/modal/Android.mk +0 -55
  866. package/ReactCommon/react/renderer/components/progressbar/Android.mk +0 -53
  867. package/ReactCommon/react/renderer/components/root/Android.mk +0 -46
  868. package/ReactCommon/react/renderer/components/scrollview/Android.mk +0 -49
  869. package/ReactCommon/react/renderer/components/slider/Android.mk +0 -59
  870. package/ReactCommon/react/renderer/components/switch/Android.mk +0 -53
  871. package/ReactCommon/react/renderer/components/text/Android.mk +0 -59
  872. package/ReactCommon/react/renderer/components/textinput/Android.mk +0 -67
  873. package/ReactCommon/react/renderer/components/unimplementedview/Android.mk +0 -47
  874. package/ReactCommon/react/renderer/components/view/Android.mk +0 -47
  875. package/ReactCommon/react/renderer/core/Android.mk +0 -41
  876. package/ReactCommon/react/renderer/debug/Android.mk +0 -28
  877. package/ReactCommon/react/renderer/graphics/Android.mk +0 -39
  878. package/ReactCommon/react/renderer/imagemanager/Android.mk +0 -44
  879. package/ReactCommon/react/renderer/leakchecker/Android.mk +0 -33
  880. package/ReactCommon/react/renderer/mapbuffer/Android.mk +0 -34
  881. package/ReactCommon/react/renderer/mounting/Android.mk +0 -55
  882. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +0 -34
  883. package/ReactCommon/react/renderer/scheduler/Android.mk +0 -62
  884. package/ReactCommon/react/renderer/telemetry/Android.mk +0 -43
  885. package/ReactCommon/react/renderer/templateprocessor/Android.mk +0 -46
  886. package/ReactCommon/react/renderer/textlayoutmanager/Android.mk +0 -63
  887. package/ReactCommon/react/renderer/uimanager/Android.mk +0 -58
  888. package/ReactCommon/react/utils/Android.mk +0 -33
  889. package/ReactCommon/reactperflogger/Android.mk +0 -26
  890. package/ReactCommon/runtimeexecutor/Android.mk +0 -19
  891. package/ReactCommon/yoga/Android.mk +0 -21
  892. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug-javadoc.jar +0 -0
  893. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug-javadoc.jar.md5 +0 -1
  894. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug-javadoc.jar.sha1 +0 -1
  895. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug-javadoc.jar.sha256 +0 -1
  896. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug-javadoc.jar.sha512 +0 -1
  897. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug.aar +0 -0
  898. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug.aar.md5 +0 -1
  899. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug.aar.sha1 +0 -1
  900. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug.aar.sha256 +0 -1
  901. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-debug.aar.sha512 +0 -1
  902. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release-javadoc.jar +0 -0
  903. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release-javadoc.jar.md5 +0 -1
  904. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release-javadoc.jar.sha1 +0 -1
  905. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release-javadoc.jar.sha256 +0 -1
  906. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release-javadoc.jar.sha512 +0 -1
  907. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release.aar +0 -0
  908. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release.aar.md5 +0 -1
  909. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release.aar.sha1 +0 -1
  910. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release.aar.sha256 +0 -1
  911. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1-release.aar.sha512 +0 -1
  912. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1.module.md5 +0 -1
  913. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1.module.sha1 +0 -1
  914. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1.module.sha256 +0 -1
  915. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1.module.sha512 +0 -1
  916. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1.pom.md5 +0 -1
  917. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1.pom.sha1 +0 -1
  918. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1.pom.sha256 +0 -1
  919. package/android/com/facebook/react/hermes-engine/0.69.1/hermes-engine-0.69.1.pom.sha512 +0 -1
  920. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-javadoc.jar +0 -0
  921. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-javadoc.jar.md5 +0 -1
  922. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-javadoc.jar.sha1 +0 -1
  923. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-javadoc.jar.sha256 +0 -1
  924. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-javadoc.jar.sha512 +0 -1
  925. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-sources.jar.md5 +0 -1
  926. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-sources.jar.sha1 +0 -1
  927. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-sources.jar.sha256 +0 -1
  928. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug-sources.jar.sha512 +0 -1
  929. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug.aar.md5 +0 -1
  930. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug.aar.sha1 +0 -1
  931. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug.aar.sha256 +0 -1
  932. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-debug.aar.sha512 +0 -1
  933. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-javadoc.jar +0 -0
  934. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-javadoc.jar.md5 +0 -1
  935. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-javadoc.jar.sha1 +0 -1
  936. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-javadoc.jar.sha256 +0 -1
  937. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-javadoc.jar.sha512 +0 -1
  938. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-sources.jar.md5 +0 -1
  939. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-sources.jar.sha1 +0 -1
  940. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-sources.jar.sha256 +0 -1
  941. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release-sources.jar.sha512 +0 -1
  942. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release.aar.md5 +0 -1
  943. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release.aar.sha1 +0 -1
  944. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release.aar.sha256 +0 -1
  945. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1-release.aar.sha512 +0 -1
  946. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1.module.md5 +0 -1
  947. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1.module.sha1 +0 -1
  948. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1.module.sha256 +0 -1
  949. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1.module.sha512 +0 -1
  950. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1.pom.md5 +0 -1
  951. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1.pom.sha1 +0 -1
  952. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1.pom.sha256 +0 -1
  953. package/android/com/facebook/react/react-native/0.69.1/react-native-0.69.1.pom.sha512 +0 -1
  954. package/jest/preprocessor.js +0 -40
  955. package/jest/preprocessor_DO_NOT_USE.js +0 -122
@@ -1,1294 +0,0 @@
1
- /*
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- package com.facebook.react.animated;
9
-
10
- import static org.assertj.core.api.Assertions.assertThat;
11
- import static org.mockito.Matchers.any;
12
- import static org.mockito.Matchers.anyInt;
13
- import static org.mockito.Matchers.eq;
14
- import static org.mockito.Mockito.atMost;
15
- import static org.mockito.Mockito.mock;
16
- import static org.mockito.Mockito.reset;
17
- import static org.mockito.Mockito.times;
18
- import static org.mockito.Mockito.verify;
19
- import static org.mockito.Mockito.verifyNoMoreInteractions;
20
-
21
- import com.facebook.react.bridge.Arguments;
22
- import com.facebook.react.bridge.Callback;
23
- import com.facebook.react.bridge.CatalystInstance;
24
- import com.facebook.react.bridge.JSIModuleType;
25
- import com.facebook.react.bridge.JavaOnlyArray;
26
- import com.facebook.react.bridge.JavaOnlyMap;
27
- import com.facebook.react.bridge.ReactApplicationContext;
28
- import com.facebook.react.bridge.ReadableMap;
29
- import com.facebook.react.common.MapBuilder;
30
- import com.facebook.react.uimanager.UIManagerModule;
31
- import com.facebook.react.uimanager.events.Event;
32
- import com.facebook.react.uimanager.events.EventDispatcher;
33
- import com.facebook.react.uimanager.events.RCTEventEmitter;
34
- import java.util.Map;
35
- import org.junit.Before;
36
- import org.junit.Rule;
37
- import org.junit.Test;
38
- import org.junit.runner.RunWith;
39
- import org.mockito.ArgumentCaptor;
40
- import org.mockito.invocation.InvocationOnMock;
41
- import org.mockito.stubbing.Answer;
42
- import org.powermock.api.mockito.PowerMockito;
43
- import org.powermock.core.classloader.annotations.PowerMockIgnore;
44
- import org.powermock.core.classloader.annotations.PrepareForTest;
45
- import org.powermock.modules.junit4.rule.PowerMockRule;
46
- import org.robolectric.RobolectricTestRunner;
47
-
48
- /** Tests the animated nodes graph traversal algorithm from {@link NativeAnimatedNodesManager}. */
49
- @PrepareForTest({Arguments.class})
50
- @RunWith(RobolectricTestRunner.class)
51
- @PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "androidx.*", "android.*"})
52
- public class NativeAnimatedNodeTraversalTest {
53
-
54
- private static long FRAME_LEN_NANOS = 1000000000L / 60L;
55
- private static long INITIAL_FRAME_TIME_NANOS = 14599233201256L; /* random */
56
-
57
- @Rule public PowerMockRule rule = new PowerMockRule();
58
-
59
- private long mFrameTimeNanos;
60
- private ReactApplicationContext mReactApplicationContextMock;
61
- private CatalystInstance mCatalystInstanceMock;
62
- private UIManagerModule mUIManagerMock;
63
- private EventDispatcher mEventDispatcherMock;
64
- private NativeAnimatedNodesManager mNativeAnimatedNodesManager;
65
-
66
- private long nextFrameTime() {
67
- return mFrameTimeNanos += FRAME_LEN_NANOS;
68
- }
69
-
70
- @Before
71
- public void setUp() {
72
- PowerMockito.mockStatic(Arguments.class);
73
- PowerMockito.when(Arguments.createArray())
74
- .thenAnswer(
75
- new Answer<Object>() {
76
- @Override
77
- public Object answer(InvocationOnMock invocation) throws Throwable {
78
- return new JavaOnlyArray();
79
- }
80
- });
81
- PowerMockito.when(Arguments.createMap())
82
- .thenAnswer(
83
- new Answer<Object>() {
84
- @Override
85
- public Object answer(InvocationOnMock invocation) throws Throwable {
86
- return new JavaOnlyMap();
87
- }
88
- });
89
-
90
- mFrameTimeNanos = INITIAL_FRAME_TIME_NANOS;
91
-
92
- mReactApplicationContextMock = mock(ReactApplicationContext.class);
93
- PowerMockito.when(mReactApplicationContextMock.hasActiveReactInstance())
94
- .thenAnswer(
95
- new Answer<Boolean>() {
96
- @Override
97
- public Boolean answer(InvocationOnMock invocationOnMock) throws Throwable {
98
- return true;
99
- }
100
- });
101
- PowerMockito.when(mReactApplicationContextMock.hasCatalystInstance())
102
- .thenAnswer(
103
- new Answer<Boolean>() {
104
- @Override
105
- public Boolean answer(InvocationOnMock invocationOnMock) throws Throwable {
106
- return true;
107
- }
108
- });
109
- PowerMockito.when(mReactApplicationContextMock.getCatalystInstance())
110
- .thenAnswer(
111
- new Answer<CatalystInstance>() {
112
- @Override
113
- public CatalystInstance answer(InvocationOnMock invocationOnMock) throws Throwable {
114
- return mCatalystInstanceMock;
115
- }
116
- });
117
- PowerMockito.when(mReactApplicationContextMock.getNativeModule(any(Class.class)))
118
- .thenAnswer(
119
- new Answer<UIManagerModule>() {
120
- @Override
121
- public UIManagerModule answer(InvocationOnMock invocationOnMock) throws Throwable {
122
- return mUIManagerMock;
123
- }
124
- });
125
-
126
- mCatalystInstanceMock = mock(CatalystInstance.class);
127
- PowerMockito.when(mCatalystInstanceMock.getJSIModule(any(JSIModuleType.class)))
128
- .thenAnswer(
129
- new Answer<UIManagerModule>() {
130
- @Override
131
- public UIManagerModule answer(InvocationOnMock invocationOnMock) throws Throwable {
132
- return mUIManagerMock;
133
- }
134
- });
135
- PowerMockito.when(mCatalystInstanceMock.getNativeModule(any(Class.class)))
136
- .thenAnswer(
137
- new Answer<UIManagerModule>() {
138
- @Override
139
- public UIManagerModule answer(InvocationOnMock invocationOnMock) throws Throwable {
140
- return mUIManagerMock;
141
- }
142
- });
143
-
144
- mUIManagerMock = mock(UIManagerModule.class);
145
- mEventDispatcherMock = mock(EventDispatcher.class);
146
- PowerMockito.when(mUIManagerMock.getEventDispatcher())
147
- .thenAnswer(
148
- new Answer<EventDispatcher>() {
149
- @Override
150
- public EventDispatcher answer(InvocationOnMock invocation) throws Throwable {
151
- return mEventDispatcherMock;
152
- }
153
- });
154
- PowerMockito.when(mUIManagerMock.getConstants())
155
- .thenAnswer(
156
- new Answer<Object>() {
157
- @Override
158
- public Object answer(InvocationOnMock invocation) throws Throwable {
159
- return MapBuilder.of("customDirectEventTypes", MapBuilder.newHashMap());
160
- }
161
- });
162
- PowerMockito.when(mUIManagerMock.getDirectEventNamesResolver())
163
- .thenAnswer(
164
- new Answer<UIManagerModule.CustomEventNamesResolver>() {
165
- @Override
166
- public UIManagerModule.CustomEventNamesResolver answer(InvocationOnMock invocation)
167
- throws Throwable {
168
- return new UIManagerModule.CustomEventNamesResolver() {
169
- @Override
170
- public String resolveCustomEventName(String eventName) {
171
- Map<String, Map> directEventTypes =
172
- (Map<String, Map>)
173
- mUIManagerMock.getConstants().get("customDirectEventTypes");
174
- if (directEventTypes != null) {
175
- Map<String, String> customEventType =
176
- (Map<String, String>) directEventTypes.get(eventName);
177
- if (customEventType != null) {
178
- return customEventType.get("registrationName");
179
- }
180
- }
181
- return eventName;
182
- }
183
- };
184
- }
185
- });
186
- PowerMockito.when(mUIManagerMock.resolveCustomDirectEventName(any(String.class)))
187
- .thenAnswer(
188
- new Answer<String>() {
189
- @Override
190
- public String answer(InvocationOnMock invocation) throws Throwable {
191
- String arg = invocation.getArguments()[0].toString();
192
- return "on" + arg.substring(3);
193
- }
194
- });
195
- mNativeAnimatedNodesManager = new NativeAnimatedNodesManager(mReactApplicationContextMock);
196
- }
197
-
198
- /**
199
- * Generates a simple animated nodes graph and attaches the props node to a given {@param viewTag}
200
- * Parameter {@param opacity} is used as a initial value for the "opacity" attribute.
201
- *
202
- * <p>Nodes are connected as follows (nodes IDs in parens): ValueNode(1) -> StyleNode(2) ->
203
- * PropNode(3)
204
- */
205
- private void createSimpleAnimatedViewWithOpacity(int viewTag, double opacity) {
206
- mNativeAnimatedNodesManager.createAnimatedNode(
207
- 1, JavaOnlyMap.of("type", "value", "value", opacity, "offset", 0d));
208
- mNativeAnimatedNodesManager.createAnimatedNode(
209
- 2, JavaOnlyMap.of("type", "style", "style", JavaOnlyMap.of("opacity", 1)));
210
- mNativeAnimatedNodesManager.createAnimatedNode(
211
- 3, JavaOnlyMap.of("type", "props", "props", JavaOnlyMap.of("style", 2)));
212
- mNativeAnimatedNodesManager.connectAnimatedNodes(1, 2);
213
- mNativeAnimatedNodesManager.connectAnimatedNodes(2, 3);
214
- mNativeAnimatedNodesManager.connectAnimatedNodeToView(3, viewTag);
215
- }
216
-
217
- @Test
218
- public void testFramesAnimation() {
219
- createSimpleAnimatedViewWithOpacity(1000, 0d);
220
-
221
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
222
- Callback animationCallback = mock(Callback.class);
223
- mNativeAnimatedNodesManager.startAnimatingNode(
224
- 1, 1, JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d), animationCallback);
225
-
226
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
227
-
228
- for (int i = 0; i < frames.size(); i++) {
229
- reset(mUIManagerMock);
230
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
231
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
232
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(frames.getDouble(i));
233
- }
234
-
235
- reset(mUIManagerMock);
236
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
237
- verifyNoMoreInteractions(mUIManagerMock);
238
- }
239
-
240
- @Test
241
- public void testFramesAnimationLoopsFiveTimes() {
242
- createSimpleAnimatedViewWithOpacity(1000, 0d);
243
-
244
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
245
- Callback animationCallback = mock(Callback.class);
246
- mNativeAnimatedNodesManager.startAnimatingNode(
247
- 1,
248
- 1,
249
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d, "iterations", 5),
250
- animationCallback);
251
-
252
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
253
-
254
- for (int iteration = 0; iteration < 5; iteration++) {
255
- for (int i = 0; i < frames.size(); i++) {
256
- reset(mUIManagerMock);
257
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
258
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
259
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(frames.getDouble(i));
260
- }
261
- }
262
-
263
- reset(mUIManagerMock);
264
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
265
- verifyNoMoreInteractions(mUIManagerMock);
266
- }
267
-
268
- @Test
269
- public void testNodeValueListenerIfNotListening() {
270
- int nodeId = 1;
271
-
272
- createSimpleAnimatedViewWithOpacity(1000, 0d);
273
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
274
-
275
- Callback animationCallback = mock(Callback.class);
276
- AnimatedNodeValueListener valueListener = mock(AnimatedNodeValueListener.class);
277
-
278
- mNativeAnimatedNodesManager.startListeningToAnimatedNodeValue(nodeId, valueListener);
279
- mNativeAnimatedNodesManager.startAnimatingNode(
280
- 1,
281
- nodeId,
282
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d),
283
- animationCallback);
284
-
285
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
286
- verify(valueListener).onValueUpdate(eq(0d));
287
-
288
- mNativeAnimatedNodesManager.stopListeningToAnimatedNodeValue(nodeId);
289
-
290
- reset(valueListener);
291
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
292
- verifyNoMoreInteractions(valueListener);
293
- }
294
-
295
- @Test
296
- public void testNodeValueListenerIfListening() {
297
- int nodeId = 1;
298
-
299
- createSimpleAnimatedViewWithOpacity(1000, 0d);
300
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
301
-
302
- Callback animationCallback = mock(Callback.class);
303
- AnimatedNodeValueListener valueListener = mock(AnimatedNodeValueListener.class);
304
-
305
- mNativeAnimatedNodesManager.startListeningToAnimatedNodeValue(nodeId, valueListener);
306
- mNativeAnimatedNodesManager.startAnimatingNode(
307
- 1,
308
- nodeId,
309
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d),
310
- animationCallback);
311
-
312
- for (int i = 0; i < frames.size(); i++) {
313
- reset(valueListener);
314
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
315
- verify(valueListener).onValueUpdate(eq(frames.getDouble(i)));
316
- }
317
-
318
- reset(valueListener);
319
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
320
- verifyNoMoreInteractions(valueListener);
321
- }
322
-
323
- public void performSpringAnimationTestWithConfig(
324
- JavaOnlyMap config, boolean testForCriticallyDamped) {
325
- createSimpleAnimatedViewWithOpacity(1000, 0d);
326
-
327
- Callback animationCallback = mock(Callback.class);
328
- mNativeAnimatedNodesManager.startAnimatingNode(1, 1, config, animationCallback);
329
-
330
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
331
-
332
- reset(mUIManagerMock);
333
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
334
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
335
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(0);
336
-
337
- double previousValue = 0d;
338
- boolean wasGreaterThanOne = false;
339
- /* run 3 secs of animation */
340
- for (int i = 0; i < 3 * 60; i++) {
341
- reset(mUIManagerMock);
342
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
343
- verify(mUIManagerMock, atMost(1))
344
- .synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
345
- double currentValue = stylesCaptor.getValue().getDouble("opacity");
346
- if (currentValue > 1d) {
347
- wasGreaterThanOne = true;
348
- }
349
- // verify that animation step is relatively small
350
- assertThat(Math.abs(currentValue - previousValue)).isLessThan(0.12d);
351
- previousValue = currentValue;
352
- }
353
- // verify that we've reach the final value at the end of animation
354
- assertThat(previousValue).isEqualTo(1d);
355
- // verify that value has reached some maximum value that is greater than the final value
356
- // (bounce)
357
- if (testForCriticallyDamped) {
358
- assertThat(!wasGreaterThanOne);
359
- } else {
360
- assertThat(wasGreaterThanOne);
361
- }
362
- reset(mUIManagerMock);
363
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
364
- verifyNoMoreInteractions(mUIManagerMock);
365
- }
366
-
367
- @Test
368
- public void testUnderdampedSpringAnimation() {
369
- performSpringAnimationTestWithConfig(
370
- JavaOnlyMap.of(
371
- "type",
372
- "spring",
373
- "stiffness",
374
- 230.2d,
375
- "damping",
376
- 22d,
377
- "mass",
378
- 1d,
379
- "initialVelocity",
380
- 0d,
381
- "toValue",
382
- 1d,
383
- "restSpeedThreshold",
384
- 0.001d,
385
- "restDisplacementThreshold",
386
- 0.001d,
387
- "overshootClamping",
388
- false),
389
- false);
390
- }
391
-
392
- @Test
393
- public void testCriticallyDampedSpringAnimation() {
394
- performSpringAnimationTestWithConfig(
395
- JavaOnlyMap.of(
396
- "type",
397
- "spring",
398
- "stiffness",
399
- 1000d,
400
- "damping",
401
- 500d,
402
- "mass",
403
- 3.0d,
404
- "initialVelocity",
405
- 0d,
406
- "toValue",
407
- 1d,
408
- "restSpeedThreshold",
409
- 0.001d,
410
- "restDisplacementThreshold",
411
- 0.001d,
412
- "overshootClamping",
413
- false),
414
- true);
415
- }
416
-
417
- @Test
418
- public void testSpringAnimationLoopsFiveTimes() {
419
- createSimpleAnimatedViewWithOpacity(1000, 0d);
420
-
421
- Callback animationCallback = mock(Callback.class);
422
- mNativeAnimatedNodesManager.startAnimatingNode(
423
- 1,
424
- 1,
425
- JavaOnlyMap.of(
426
- "type",
427
- "spring",
428
- "stiffness",
429
- 230.2d,
430
- "damping",
431
- 22d,
432
- "mass",
433
- 1d,
434
- "initialVelocity",
435
- 0d,
436
- "toValue",
437
- 1d,
438
- "restSpeedThreshold",
439
- 0.001d,
440
- "restDisplacementThreshold",
441
- 0.001d,
442
- "overshootClamping",
443
- false,
444
- "iterations",
445
- 5),
446
- animationCallback);
447
-
448
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
449
-
450
- reset(mUIManagerMock);
451
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
452
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
453
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(0);
454
-
455
- double previousValue = 0d;
456
- boolean wasGreaterThanOne = false;
457
- boolean didComeToRest = false;
458
- int numberOfResets = 0;
459
- /* run 3 secs of animation, five times */
460
- for (int i = 0; i < 3 * 60 * 5; i++) {
461
- reset(mUIManagerMock);
462
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
463
- verify(mUIManagerMock, atMost(1))
464
- .synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
465
- double currentValue = stylesCaptor.getValue().getDouble("opacity");
466
- if (currentValue > 1d) {
467
- wasGreaterThanOne = true;
468
- }
469
- // Test to see if it reset after coming to rest
470
- if (didComeToRest
471
- && currentValue == 0d
472
- && Math.abs(Math.abs(currentValue - previousValue) - 1d) < 0.001d) {
473
- numberOfResets++;
474
- }
475
-
476
- // verify that an animation step is relatively small, unless it has come to rest and reset
477
- if (!didComeToRest) assertThat(Math.abs(currentValue - previousValue)).isLessThan(0.12d);
478
-
479
- // record that the animation did come to rest when it rests on toValue
480
- didComeToRest =
481
- Math.abs(currentValue - 1d) < 0.001d && Math.abs(currentValue - previousValue) < 0.001d;
482
- previousValue = currentValue;
483
- }
484
- // verify that we've reach the final value at the end of animation
485
- assertThat(previousValue).isEqualTo(1d);
486
- // verify that value has reached some maximum value that is greater than the final value
487
- // (bounce)
488
- assertThat(wasGreaterThanOne);
489
- // verify that value reset 4 times after finishing a full animation
490
- assertThat(numberOfResets).isEqualTo(4);
491
- reset(mUIManagerMock);
492
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
493
- verifyNoMoreInteractions(mUIManagerMock);
494
- }
495
-
496
- @Test
497
- public void testDecayAnimation() {
498
- createSimpleAnimatedViewWithOpacity(1000, 0d);
499
-
500
- Callback animationCallback = mock(Callback.class);
501
- mNativeAnimatedNodesManager.startAnimatingNode(
502
- 1,
503
- 1,
504
- JavaOnlyMap.of("type", "decay", "velocity", 0.5d, "deceleration", 0.998d),
505
- animationCallback);
506
-
507
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
508
-
509
- reset(mUIManagerMock);
510
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
511
- verify(mUIManagerMock, atMost(1))
512
- .synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
513
- double previousValue = stylesCaptor.getValue().getDouble("opacity");
514
- double previousDiff = Double.POSITIVE_INFINITY;
515
- /* run 3 secs of animation */
516
- for (int i = 0; i < 3 * 60; i++) {
517
- reset(mUIManagerMock);
518
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
519
- verify(mUIManagerMock, atMost(1))
520
- .synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
521
- double currentValue = stylesCaptor.getValue().getDouble("opacity");
522
- double currentDiff = currentValue - previousValue;
523
- // verify monotonicity
524
- // greater *or equal* because the animation stops during these 3 seconds
525
- assertThat(currentValue).as("on frame " + i).isGreaterThanOrEqualTo(previousValue);
526
- // verify decay
527
- if (i > 3) {
528
- // i > 3 because that's how long it takes to settle previousDiff
529
- if (i % 3 != 0) {
530
- // i % 3 != 0 because every 3 frames we go a tiny
531
- // bit faster, because frame length is 16.(6)ms
532
- assertThat(currentDiff).as("on frame " + i).isLessThanOrEqualTo(previousDiff);
533
- } else {
534
- assertThat(currentDiff).as("on frame " + i).isGreaterThanOrEqualTo(previousDiff);
535
- }
536
- }
537
- previousValue = currentValue;
538
- previousDiff = currentDiff;
539
- }
540
- // should be done in 3s
541
- reset(mUIManagerMock);
542
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
543
- verifyNoMoreInteractions(mUIManagerMock);
544
- }
545
-
546
- @Test
547
- public void testDecayAnimationLoopsFiveTimes() {
548
- createSimpleAnimatedViewWithOpacity(1000, 0d);
549
-
550
- Callback animationCallback = mock(Callback.class);
551
- mNativeAnimatedNodesManager.startAnimatingNode(
552
- 1,
553
- 1,
554
- JavaOnlyMap.of("type", "decay", "velocity", 0.5d, "deceleration", 0.998d, "iterations", 5),
555
- animationCallback);
556
-
557
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
558
-
559
- reset(mUIManagerMock);
560
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
561
- verify(mUIManagerMock, atMost(1))
562
- .synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
563
- double previousValue = stylesCaptor.getValue().getDouble("opacity");
564
- double previousDiff = Double.POSITIVE_INFINITY;
565
- double initialValue = stylesCaptor.getValue().getDouble("opacity");
566
- boolean didComeToRest = false;
567
- int numberOfResets = 0;
568
- /* run 3 secs of animation, five times */
569
- for (int i = 0; i < 3 * 60 * 5; i++) {
570
- reset(mUIManagerMock);
571
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
572
- verify(mUIManagerMock, atMost(1))
573
- .synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
574
- double currentValue = stylesCaptor.getValue().getDouble("opacity");
575
- double currentDiff = currentValue - previousValue;
576
- // Test to see if it reset after coming to rest (i.e. dropped back to )
577
- if (didComeToRest && currentValue == initialValue) {
578
- numberOfResets++;
579
- }
580
-
581
- // verify monotonicity, unless it has come to rest and reset
582
- // greater *or equal* because the animation stops during these 3 seconds
583
- if (!didComeToRest)
584
- assertThat(currentValue).as("on frame " + i).isGreaterThanOrEqualTo(previousValue);
585
-
586
- // Test if animation has come to rest using the 0.1 threshold from DecayAnimation.java
587
- didComeToRest = Math.abs(currentDiff) < 0.1d;
588
- previousValue = currentValue;
589
- previousDiff = currentDiff;
590
- }
591
-
592
- // verify that value reset (looped) 4 times after finishing a full animation
593
- assertThat(numberOfResets).isEqualTo(4);
594
- reset(mUIManagerMock);
595
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
596
- verifyNoMoreInteractions(mUIManagerMock);
597
- }
598
-
599
- @Test
600
- public void testAnimationCallbackFinish() {
601
- createSimpleAnimatedViewWithOpacity(1000, 0d);
602
-
603
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 1d);
604
- Callback animationCallback = mock(Callback.class);
605
- mNativeAnimatedNodesManager.startAnimatingNode(
606
- 1, 1, JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d), animationCallback);
607
-
608
- ArgumentCaptor<ReadableMap> callbackResponseCaptor = ArgumentCaptor.forClass(ReadableMap.class);
609
-
610
- reset(animationCallback);
611
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
612
- verifyNoMoreInteractions(animationCallback);
613
-
614
- reset(animationCallback);
615
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
616
- verify(animationCallback).invoke(callbackResponseCaptor.capture());
617
-
618
- assertThat(callbackResponseCaptor.getValue().hasKey("finished")).isTrue();
619
- assertThat(callbackResponseCaptor.getValue().getBoolean("finished")).isTrue();
620
-
621
- reset(animationCallback);
622
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
623
- verifyNoMoreInteractions(animationCallback);
624
- }
625
-
626
- /**
627
- * Creates a following graph of nodes: Value(1, firstValue) ----> Add(3) ---> Style(4) --->
628
- * Props(5) ---> View(viewTag) | Value(2, secondValue) --+
629
- *
630
- * <p>Add(3) node maps to a "translateX" attribute of the Style(4) node.
631
- */
632
- private void createAnimatedGraphWithAdditionNode(
633
- int viewTag, double firstValue, double secondValue) {
634
- mNativeAnimatedNodesManager.createAnimatedNode(
635
- 1, JavaOnlyMap.of("type", "value", "value", firstValue, "offset", 0d));
636
- mNativeAnimatedNodesManager.createAnimatedNode(
637
- 2, JavaOnlyMap.of("type", "value", "value", secondValue, "offset", 0d));
638
-
639
- mNativeAnimatedNodesManager.createAnimatedNode(
640
- 3, JavaOnlyMap.of("type", "addition", "input", JavaOnlyArray.of(1, 2)));
641
-
642
- mNativeAnimatedNodesManager.createAnimatedNode(
643
- 4, JavaOnlyMap.of("type", "style", "style", JavaOnlyMap.of("translateX", 3)));
644
- mNativeAnimatedNodesManager.createAnimatedNode(
645
- 5, JavaOnlyMap.of("type", "props", "props", JavaOnlyMap.of("style", 4)));
646
- mNativeAnimatedNodesManager.connectAnimatedNodes(1, 3);
647
- mNativeAnimatedNodesManager.connectAnimatedNodes(2, 3);
648
- mNativeAnimatedNodesManager.connectAnimatedNodes(3, 4);
649
- mNativeAnimatedNodesManager.connectAnimatedNodes(4, 5);
650
- mNativeAnimatedNodesManager.connectAnimatedNodeToView(5, viewTag);
651
- }
652
-
653
- @Test
654
- public void testAdditionNode() {
655
- createAnimatedGraphWithAdditionNode(50, 100d, 1000d);
656
-
657
- Callback animationCallback = mock(Callback.class);
658
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 1d);
659
- mNativeAnimatedNodesManager.startAnimatingNode(
660
- 1,
661
- 1,
662
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 101d),
663
- animationCallback);
664
-
665
- mNativeAnimatedNodesManager.startAnimatingNode(
666
- 2,
667
- 2,
668
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1010d),
669
- animationCallback);
670
-
671
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
672
-
673
- reset(mUIManagerMock);
674
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
675
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
676
- assertThat(stylesCaptor.getValue().getDouble("translateX")).isEqualTo(1100d);
677
-
678
- reset(mUIManagerMock);
679
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
680
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
681
- assertThat(stylesCaptor.getValue().getDouble("translateX")).isEqualTo(1111d);
682
-
683
- reset(mUIManagerMock);
684
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
685
- verifyNoMoreInteractions(mUIManagerMock);
686
- }
687
-
688
- /**
689
- * Verifies that {@link NativeAnimatedNodesManager#runUpdates} updates the view correctly in case
690
- * when one of the addition input nodes has started animating while the other one has not.
691
- *
692
- * <p>We expect that the output of the addition node will take the starting value of the second
693
- * input node even though the node hasn't been connected to an active animation driver.
694
- */
695
- @Test
696
- public void testViewReceiveUpdatesIfOneOfAnimationHasntStarted() {
697
- createAnimatedGraphWithAdditionNode(50, 100d, 1000d);
698
-
699
- // Start animating only the first addition input node
700
- Callback animationCallback = mock(Callback.class);
701
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 1d);
702
- mNativeAnimatedNodesManager.startAnimatingNode(
703
- 1,
704
- 1,
705
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 101d),
706
- animationCallback);
707
-
708
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
709
-
710
- reset(mUIManagerMock);
711
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
712
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
713
- assertThat(stylesCaptor.getValue().getDouble("translateX")).isEqualTo(1100d);
714
-
715
- reset(mUIManagerMock);
716
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
717
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
718
- assertThat(stylesCaptor.getValue().getDouble("translateX")).isEqualTo(1101d);
719
-
720
- reset(mUIManagerMock);
721
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
722
- verifyNoMoreInteractions(mUIManagerMock);
723
- }
724
-
725
- /**
726
- * Verifies that {@link NativeAnimatedNodesManager#runUpdates} updates the view correctly in case
727
- * when one of the addition input nodes animation finishes before the other.
728
- *
729
- * <p>We expect that the output of the addition node after one of the animation has finished will
730
- * take the last value of the animated node and the view will receive updates up until the second
731
- * animation is over.
732
- */
733
- @Test
734
- public void testViewReceiveUpdatesWhenOneOfAnimationHasFinished() {
735
- createAnimatedGraphWithAdditionNode(50, 100d, 1000d);
736
-
737
- Callback animationCallback = mock(Callback.class);
738
-
739
- // Start animating for the first addition input node, will have 2 frames only
740
- JavaOnlyArray firstFrames = JavaOnlyArray.of(0d, 1d);
741
- mNativeAnimatedNodesManager.startAnimatingNode(
742
- 1,
743
- 1,
744
- JavaOnlyMap.of("type", "frames", "frames", firstFrames, "toValue", 200d),
745
- animationCallback);
746
-
747
- // Start animating for the first addition input node, will have 6 frames
748
- JavaOnlyArray secondFrames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
749
- mNativeAnimatedNodesManager.startAnimatingNode(
750
- 2,
751
- 2,
752
- JavaOnlyMap.of("type", "frames", "frames", secondFrames, "toValue", 1010d),
753
- animationCallback);
754
-
755
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
756
-
757
- reset(mUIManagerMock);
758
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
759
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
760
- assertThat(stylesCaptor.getValue().getDouble("translateX")).isEqualTo(1100d);
761
-
762
- for (int i = 1; i < secondFrames.size(); i++) {
763
- reset(mUIManagerMock);
764
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
765
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
766
- assertThat(stylesCaptor.getValue().getDouble("translateX"))
767
- .isEqualTo(1200d + secondFrames.getDouble(i) * 10d);
768
- }
769
-
770
- reset(mUIManagerMock);
771
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
772
- verifyNoMoreInteractions(mUIManagerMock);
773
- }
774
-
775
- @Test
776
- public void testMultiplicationNode() {
777
- mNativeAnimatedNodesManager.createAnimatedNode(
778
- 1, JavaOnlyMap.of("type", "value", "value", 1d, "offset", 0d));
779
- mNativeAnimatedNodesManager.createAnimatedNode(
780
- 2, JavaOnlyMap.of("type", "value", "value", 5d, "offset", 0d));
781
-
782
- mNativeAnimatedNodesManager.createAnimatedNode(
783
- 3, JavaOnlyMap.of("type", "multiplication", "input", JavaOnlyArray.of(1, 2)));
784
-
785
- mNativeAnimatedNodesManager.createAnimatedNode(
786
- 4, JavaOnlyMap.of("type", "style", "style", JavaOnlyMap.of("translateX", 3)));
787
- mNativeAnimatedNodesManager.createAnimatedNode(
788
- 5, JavaOnlyMap.of("type", "props", "props", JavaOnlyMap.of("style", 4)));
789
- mNativeAnimatedNodesManager.connectAnimatedNodes(1, 3);
790
- mNativeAnimatedNodesManager.connectAnimatedNodes(2, 3);
791
- mNativeAnimatedNodesManager.connectAnimatedNodes(3, 4);
792
- mNativeAnimatedNodesManager.connectAnimatedNodes(4, 5);
793
- mNativeAnimatedNodesManager.connectAnimatedNodeToView(5, 50);
794
-
795
- Callback animationCallback = mock(Callback.class);
796
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 1d);
797
- mNativeAnimatedNodesManager.startAnimatingNode(
798
- 1, 1, JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 2d), animationCallback);
799
-
800
- mNativeAnimatedNodesManager.startAnimatingNode(
801
- 2,
802
- 2,
803
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 10d),
804
- animationCallback);
805
-
806
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
807
-
808
- reset(mUIManagerMock);
809
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
810
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
811
- assertThat(stylesCaptor.getValue().getDouble("translateX")).isEqualTo(5d);
812
-
813
- reset(mUIManagerMock);
814
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
815
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
816
- assertThat(stylesCaptor.getValue().getDouble("translateX")).isEqualTo(20d);
817
-
818
- reset(mUIManagerMock);
819
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
820
- verifyNoMoreInteractions(mUIManagerMock);
821
- }
822
-
823
- /**
824
- * This test verifies that when {@link NativeAnimatedModule#stopAnimation} is called the animation
825
- * will no longer be updating the nodes it has been previously attached to and that the animation
826
- * callback will be triggered with {@code {finished: false}}
827
- */
828
- @Test
829
- public void testHandleStoppingAnimation() {
830
- createSimpleAnimatedViewWithOpacity(1000, 0d);
831
-
832
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1.0d);
833
- Callback animationCallback = mock(Callback.class);
834
- mNativeAnimatedNodesManager.startAnimatingNode(
835
- 404,
836
- 1,
837
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d),
838
- animationCallback);
839
-
840
- ArgumentCaptor<ReadableMap> callbackResponseCaptor = ArgumentCaptor.forClass(ReadableMap.class);
841
-
842
- reset(animationCallback);
843
- reset(mUIManagerMock);
844
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
845
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
846
- verify(mUIManagerMock, times(2))
847
- .synchronouslyUpdateViewOnUIThread(anyInt(), any(ReadableMap.class));
848
- verifyNoMoreInteractions(animationCallback);
849
-
850
- reset(animationCallback);
851
- reset(mUIManagerMock);
852
- mNativeAnimatedNodesManager.stopAnimation(404);
853
- verify(animationCallback).invoke(callbackResponseCaptor.capture());
854
- verifyNoMoreInteractions(animationCallback);
855
- verifyNoMoreInteractions(mUIManagerMock);
856
-
857
- assertThat(callbackResponseCaptor.getValue().hasKey("finished")).isTrue();
858
- assertThat(callbackResponseCaptor.getValue().getBoolean("finished")).isFalse();
859
-
860
- reset(animationCallback);
861
- reset(mUIManagerMock);
862
- // Run "update" loop a few more times -> we expect no further updates nor callback calls to be
863
- // triggered
864
- for (int i = 0; i < 5; i++) {
865
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
866
- }
867
-
868
- verifyNoMoreInteractions(mUIManagerMock);
869
- verifyNoMoreInteractions(animationCallback);
870
- }
871
-
872
- @Test
873
- public void testGetValue() {
874
- int tag = 1;
875
- mNativeAnimatedNodesManager.createAnimatedNode(
876
- tag, JavaOnlyMap.of("type", "value", "value", 1d, "offset", 0d));
877
-
878
- Callback saveValueCallbackMock = mock(Callback.class);
879
-
880
- mNativeAnimatedNodesManager.getValue(tag, saveValueCallbackMock);
881
-
882
- verify(saveValueCallbackMock, times(1)).invoke(1d);
883
- }
884
-
885
- @Test
886
- public void testInterpolationNode() {
887
- mNativeAnimatedNodesManager.createAnimatedNode(
888
- 1, JavaOnlyMap.of("type", "value", "value", 10d, "offset", 0d));
889
-
890
- mNativeAnimatedNodesManager.createAnimatedNode(
891
- 2,
892
- JavaOnlyMap.of(
893
- "type",
894
- "interpolation",
895
- "inputRange",
896
- JavaOnlyArray.of(10d, 20d),
897
- "outputRange",
898
- JavaOnlyArray.of(0d, 1d),
899
- "extrapolateLeft",
900
- "extend",
901
- "extrapolateRight",
902
- "extend"));
903
-
904
- mNativeAnimatedNodesManager.createAnimatedNode(
905
- 3, JavaOnlyMap.of("type", "style", "style", JavaOnlyMap.of("opacity", 2)));
906
- mNativeAnimatedNodesManager.createAnimatedNode(
907
- 4, JavaOnlyMap.of("type", "props", "props", JavaOnlyMap.of("style", 3)));
908
- mNativeAnimatedNodesManager.connectAnimatedNodes(1, 2);
909
- mNativeAnimatedNodesManager.connectAnimatedNodes(2, 3);
910
- mNativeAnimatedNodesManager.connectAnimatedNodes(3, 4);
911
- mNativeAnimatedNodesManager.connectAnimatedNodeToView(4, 50);
912
-
913
- Callback animationCallback = mock(Callback.class);
914
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
915
- mNativeAnimatedNodesManager.startAnimatingNode(
916
- 1,
917
- 1,
918
- JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 20d),
919
- animationCallback);
920
-
921
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
922
-
923
- for (int i = 0; i < frames.size(); i++) {
924
- reset(mUIManagerMock);
925
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
926
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
927
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(frames.getDouble(i));
928
- }
929
-
930
- reset(mUIManagerMock);
931
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
932
- verifyNoMoreInteractions(mUIManagerMock);
933
- }
934
-
935
- private Event createScrollEvent(final int tag, final double value) {
936
- return new Event(tag) {
937
- @Override
938
- public String getEventName() {
939
- return "topScroll";
940
- }
941
-
942
- @Override
943
- public void dispatch(RCTEventEmitter rctEventEmitter) {
944
- rctEventEmitter.receiveEvent(
945
- tag, "topScroll", JavaOnlyMap.of("contentOffset", JavaOnlyMap.of("y", value)));
946
- }
947
- };
948
- }
949
-
950
- @Test
951
- public void testNativeAnimatedEventDoUpdate() {
952
- int viewTag = 1000;
953
-
954
- createSimpleAnimatedViewWithOpacity(viewTag, 0d);
955
-
956
- mNativeAnimatedNodesManager.addAnimatedEventToView(
957
- viewTag,
958
- "onScroll",
959
- JavaOnlyMap.of(
960
- "animatedValueTag", 1, "nativeEventPath", JavaOnlyArray.of("contentOffset", "y")));
961
-
962
- mNativeAnimatedNodesManager.onEventDispatch(createScrollEvent(viewTag, 10));
963
-
964
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
965
-
966
- reset(mUIManagerMock);
967
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
968
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
969
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(10);
970
- }
971
-
972
- @Test
973
- public void testNativeAnimatedEventDoNotUpdate() {
974
- int viewTag = 1000;
975
-
976
- createSimpleAnimatedViewWithOpacity(viewTag, 0d);
977
-
978
- mNativeAnimatedNodesManager.addAnimatedEventToView(
979
- viewTag,
980
- "otherEvent",
981
- JavaOnlyMap.of(
982
- "animatedValueTag", 1, "nativeEventPath", JavaOnlyArray.of("contentOffset", "y")));
983
-
984
- mNativeAnimatedNodesManager.addAnimatedEventToView(
985
- 999,
986
- "topScroll",
987
- JavaOnlyMap.of(
988
- "animatedValueTag", 1, "nativeEventPath", JavaOnlyArray.of("contentOffset", "y")));
989
-
990
- mNativeAnimatedNodesManager.onEventDispatch(createScrollEvent(viewTag, 10));
991
-
992
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
993
-
994
- reset(mUIManagerMock);
995
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
996
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
997
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(0);
998
- }
999
-
1000
- @Test
1001
- public void testNativeAnimatedEventCustomMapping() {
1002
- int viewTag = 1000;
1003
-
1004
- PowerMockito.when(mUIManagerMock.getConstants())
1005
- .thenAnswer(
1006
- new Answer<Object>() {
1007
- @Override
1008
- public Object answer(InvocationOnMock invocation) throws Throwable {
1009
- return MapBuilder.of(
1010
- "customDirectEventTypes",
1011
- MapBuilder.of("onScroll", MapBuilder.of("registrationName", "onScroll")));
1012
- }
1013
- });
1014
- mNativeAnimatedNodesManager = new NativeAnimatedNodesManager(mReactApplicationContextMock);
1015
-
1016
- createSimpleAnimatedViewWithOpacity(viewTag, 0d);
1017
-
1018
- mNativeAnimatedNodesManager.addAnimatedEventToView(
1019
- viewTag,
1020
- "onScroll",
1021
- JavaOnlyMap.of(
1022
- "animatedValueTag", 1, "nativeEventPath", JavaOnlyArray.of("contentOffset", "y")));
1023
-
1024
- mNativeAnimatedNodesManager.onEventDispatch(createScrollEvent(viewTag, 10));
1025
-
1026
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
1027
-
1028
- reset(mUIManagerMock);
1029
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1030
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
1031
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(10);
1032
- }
1033
-
1034
- @Test
1035
- public void testRestoreDefaultProps() {
1036
- int viewTag = 1001; // restoreDefaultProps not called in Fabric, make sure it's a non-Fabric tag
1037
- int propsNodeTag = 3;
1038
- mNativeAnimatedNodesManager.createAnimatedNode(
1039
- 1, JavaOnlyMap.of("type", "value", "value", 1d, "offset", 0d));
1040
- mNativeAnimatedNodesManager.createAnimatedNode(
1041
- 2, JavaOnlyMap.of("type", "style", "style", JavaOnlyMap.of("opacity", 1)));
1042
- mNativeAnimatedNodesManager.createAnimatedNode(
1043
- propsNodeTag, JavaOnlyMap.of("type", "props", "props", JavaOnlyMap.of("style", 2)));
1044
- mNativeAnimatedNodesManager.connectAnimatedNodes(1, 2);
1045
- mNativeAnimatedNodesManager.connectAnimatedNodes(2, propsNodeTag);
1046
- mNativeAnimatedNodesManager.connectAnimatedNodeToView(propsNodeTag, viewTag);
1047
-
1048
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.5d, 1d);
1049
- Callback animationCallback = mock(Callback.class);
1050
- mNativeAnimatedNodesManager.startAnimatingNode(
1051
- 1, 1, JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 0d), animationCallback);
1052
-
1053
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
1054
-
1055
- for (int i = 0; i < frames.size(); i++) {
1056
- reset(mUIManagerMock);
1057
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1058
- }
1059
-
1060
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
1061
- assertThat(stylesCaptor.getValue().getDouble("opacity")).isEqualTo(0);
1062
-
1063
- reset(mUIManagerMock);
1064
- mNativeAnimatedNodesManager.restoreDefaultValues(propsNodeTag);
1065
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
1066
- assertThat(stylesCaptor.getValue().isNull("opacity"));
1067
- }
1068
-
1069
- /**
1070
- * Creates a following graph of nodes: Value(3, initialValue) ----> Style(4) ---> Props(5) --->
1071
- * View(viewTag)
1072
- *
1073
- * <p>Value(3) is set to track Value(1) via Tracking(2) node with the provided animation config
1074
- */
1075
- private void createAnimatedGraphWithTrackingNode(
1076
- int viewTag, double initialValue, JavaOnlyMap animationConfig) {
1077
- mNativeAnimatedNodesManager.createAnimatedNode(
1078
- 1, JavaOnlyMap.of("type", "value", "value", initialValue, "offset", 0d));
1079
- mNativeAnimatedNodesManager.createAnimatedNode(
1080
- 3, JavaOnlyMap.of("type", "value", "value", initialValue, "offset", 0d));
1081
-
1082
- mNativeAnimatedNodesManager.createAnimatedNode(
1083
- 2,
1084
- JavaOnlyMap.of(
1085
- "type",
1086
- "tracking",
1087
- "animationId",
1088
- 70,
1089
- "value",
1090
- 3,
1091
- "toValue",
1092
- 1,
1093
- "animationConfig",
1094
- animationConfig));
1095
-
1096
- mNativeAnimatedNodesManager.createAnimatedNode(
1097
- 4, JavaOnlyMap.of("type", "style", "style", JavaOnlyMap.of("translateX", 3)));
1098
- mNativeAnimatedNodesManager.createAnimatedNode(
1099
- 5, JavaOnlyMap.of("type", "props", "props", JavaOnlyMap.of("style", 4)));
1100
- mNativeAnimatedNodesManager.connectAnimatedNodes(1, 2);
1101
- mNativeAnimatedNodesManager.connectAnimatedNodes(3, 4);
1102
- mNativeAnimatedNodesManager.connectAnimatedNodes(4, 5);
1103
- mNativeAnimatedNodesManager.connectAnimatedNodeToView(5, viewTag);
1104
- }
1105
-
1106
- /**
1107
- * In this test we verify that when value is being tracked we can update destination value in the
1108
- * middle of ongoing animation and the animation will update and animate to the new spot. This is
1109
- * tested using simple 5 frame backed timing animation.
1110
- */
1111
- @Test
1112
- public void testTracking() {
1113
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.25d, 0.5d, 0.75d, 1d);
1114
- JavaOnlyMap animationConfig = JavaOnlyMap.of("type", "frames", "frames", frames);
1115
-
1116
- createAnimatedGraphWithTrackingNode(1000, 0d, animationConfig);
1117
-
1118
- ArgumentCaptor<ReadableMap> stylesCaptor = ArgumentCaptor.forClass(ReadableMap.class);
1119
-
1120
- reset(mUIManagerMock);
1121
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1122
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
1123
- assertThat(stylesCaptor.getValue().getDouble("translateX")).isEqualTo(0d);
1124
-
1125
- // update "toValue" to 100, we expect tracking animation to animate now from 0 to 100 in 5 steps
1126
- mNativeAnimatedNodesManager.setAnimatedNodeValue(1, 100d);
1127
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime()); // kick off the animation
1128
-
1129
- for (int i = 0; i < frames.size(); i++) {
1130
- reset(mUIManagerMock);
1131
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1132
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
1133
- assertThat(stylesCaptor.getValue().getDouble("translateX"))
1134
- .isEqualTo(frames.getDouble(i) * 100d);
1135
- }
1136
-
1137
- // update "toValue" to 0 but run only two frames from the animation,
1138
- // we expect tracking animation to animate now from 100 to 75
1139
- mNativeAnimatedNodesManager.setAnimatedNodeValue(1, 0d);
1140
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime()); // kick off the animation
1141
-
1142
- for (int i = 0; i < 2; i++) {
1143
- reset(mUIManagerMock);
1144
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1145
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
1146
- assertThat(stylesCaptor.getValue().getDouble("translateX"))
1147
- .isEqualTo(100d * (1d - frames.getDouble(i)));
1148
- }
1149
-
1150
- // at this point we expect tracking value to be at 75
1151
- assertThat(((ValueAnimatedNode) mNativeAnimatedNodesManager.getNodeById(3)).getValue())
1152
- .isEqualTo(75d);
1153
-
1154
- // we update "toValue" again to 100 and expect the animation to restart from the current place
1155
- mNativeAnimatedNodesManager.setAnimatedNodeValue(1, 100d);
1156
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime()); // kick off the animation
1157
-
1158
- for (int i = 0; i < frames.size(); i++) {
1159
- reset(mUIManagerMock);
1160
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1161
- verify(mUIManagerMock).synchronouslyUpdateViewOnUIThread(eq(1000), stylesCaptor.capture());
1162
- assertThat(stylesCaptor.getValue().getDouble("translateX"))
1163
- .isEqualTo(50d + 50d * frames.getDouble(i));
1164
- }
1165
- }
1166
-
1167
- /**
1168
- * In this test we verify that when tracking is set up for a given animated node and when the
1169
- * animation settles it will not be registered as an active animation and therefore will not
1170
- * consume resources on running the animation that has already completed. Then we verify that when
1171
- * the value updates the animation will resume as expected and the complete again when reaches the
1172
- * end.
1173
- */
1174
- @Test
1175
- public void testTrackingPausesWhenEndValueIsReached() {
1176
- JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.5d, 1d);
1177
- JavaOnlyMap animationConfig = JavaOnlyMap.of("type", "frames", "frames", frames);
1178
-
1179
- createAnimatedGraphWithTrackingNode(1000, 0d, animationConfig);
1180
- mNativeAnimatedNodesManager.setAnimatedNodeValue(1, 100d);
1181
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime()); // make sure animation starts
1182
-
1183
- reset(mUIManagerMock);
1184
- for (int i = 0; i < frames.size(); i++) {
1185
- assertThat(mNativeAnimatedNodesManager.hasActiveAnimations()).isTrue();
1186
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1187
- }
1188
- verify(mUIManagerMock, times(frames.size()))
1189
- .synchronouslyUpdateViewOnUIThread(eq(1000), any(ReadableMap.class));
1190
-
1191
- // the animation has completed, we expect no updates to be done
1192
- reset(mUIManagerMock);
1193
- assertThat(mNativeAnimatedNodesManager.hasActiveAnimations()).isFalse();
1194
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1195
- verifyNoMoreInteractions(mUIManagerMock);
1196
-
1197
- // we update end value and expect the animation to restart
1198
- mNativeAnimatedNodesManager.setAnimatedNodeValue(1, 200d);
1199
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime()); // make sure animation starts
1200
-
1201
- reset(mUIManagerMock);
1202
- for (int i = 0; i < frames.size(); i++) {
1203
- assertThat(mNativeAnimatedNodesManager.hasActiveAnimations()).isTrue();
1204
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1205
- }
1206
- verify(mUIManagerMock, times(frames.size()))
1207
- .synchronouslyUpdateViewOnUIThread(eq(1000), any(ReadableMap.class));
1208
-
1209
- // the animation has completed, we expect no updates to be done
1210
- reset(mUIManagerMock);
1211
- assertThat(mNativeAnimatedNodesManager.hasActiveAnimations()).isFalse();
1212
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1213
- verifyNoMoreInteractions(mUIManagerMock);
1214
- }
1215
-
1216
- /**
1217
- * In this test we verify that when tracking is configured to use spring animation and when the
1218
- * destination value updates the current speed of the animated value will be taken into account
1219
- * while updating the spring animation and it will smoothly transition to the new end value.
1220
- */
1221
- @Test
1222
- public void testSpringTrackingRetainsSpeed() {
1223
- // this spring config corresponds to tension 20 and friction 0.5 which makes the spring settle
1224
- // very slowly
1225
- JavaOnlyMap springConfig =
1226
- JavaOnlyMap.of(
1227
- "type",
1228
- "spring",
1229
- "restSpeedThreshold",
1230
- 0.001,
1231
- "mass",
1232
- 1d,
1233
- "restDisplacementThreshold",
1234
- 0.001,
1235
- "initialVelocity",
1236
- 0.5d,
1237
- "damping",
1238
- 2.5,
1239
- "stiffness",
1240
- 157.8,
1241
- "overshootClamping",
1242
- false);
1243
-
1244
- createAnimatedGraphWithTrackingNode(1000, 0d, springConfig);
1245
-
1246
- // update "toValue" to 1, we expect tracking animation to animate now from 0 to 1
1247
- mNativeAnimatedNodesManager.setAnimatedNodeValue(1, 1d);
1248
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1249
-
1250
- // we run several steps of animation until the value starts bouncing, has negative speed and
1251
- // passes the final point (that is 1) while going backwards
1252
- boolean isBoucingBack = false;
1253
- double previousValue =
1254
- ((ValueAnimatedNode) mNativeAnimatedNodesManager.getNodeById(3)).getValue();
1255
- for (int maxFrames = 500; maxFrames > 0; maxFrames--) {
1256
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1257
- double currentValue =
1258
- ((ValueAnimatedNode) mNativeAnimatedNodesManager.getNodeById(3)).getValue();
1259
- if (previousValue >= 1d && currentValue < 1d) {
1260
- isBoucingBack = true;
1261
- break;
1262
- }
1263
- previousValue = currentValue;
1264
- }
1265
- assertThat(isBoucingBack).isTrue();
1266
-
1267
- // we now update "toValue" to 1.5 but since the value have negative speed and has also pretty
1268
- // low friction we expect it to keep going in the opposite direction for a few more frames
1269
- mNativeAnimatedNodesManager.setAnimatedNodeValue(1, 1.5d);
1270
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1271
- int bounceBackInitialFrames = 0;
1272
- boolean hasTurnedForward = false;
1273
-
1274
- // we run 8 seconds of animation
1275
- for (int i = 0; i < 8 * 60; i++) {
1276
- mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
1277
- double currentValue =
1278
- ((ValueAnimatedNode) mNativeAnimatedNodesManager.getNodeById(3)).getValue();
1279
- if (!hasTurnedForward) {
1280
- if (currentValue <= previousValue) {
1281
- bounceBackInitialFrames++;
1282
- } else {
1283
- hasTurnedForward = true;
1284
- }
1285
- }
1286
- previousValue = currentValue;
1287
- }
1288
- assertThat(hasTurnedForward).isEqualTo(true);
1289
- assertThat(bounceBackInitialFrames).isGreaterThan(3);
1290
-
1291
- // we verify that the value settled at 2
1292
- assertThat(previousValue).isEqualTo(1.5d);
1293
- }
1294
- }