react-native-reanimated 3.0.2 → 3.2.0-nightly-20230516-474ca875c

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 (472) hide show
  1. package/Common/cpp/Fabric/FabricUtils.h +1 -1
  2. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +38 -27
  3. package/Common/cpp/SharedItems/Shareables.h +22 -0
  4. package/Common/cpp/Tools/PlatformDepMethodsHolder.h +2 -0
  5. package/Common/cpp/Tools/RuntimeDecorator.cpp +4 -1
  6. package/Common/cpp/Tools/RuntimeDecorator.h +2 -1
  7. package/Common/cpp/Tools/SingleInstanceChecker.h +14 -2
  8. package/RNReanimated.podspec +5 -2
  9. package/android/CMakeLists.txt +4 -0
  10. package/android/build.gradle +75 -50
  11. package/android/src/main/cpp/NativeProxy.cpp +316 -337
  12. package/android/src/main/cpp/NativeProxy.h +53 -11
  13. package/android/src/main/java/com/swmansion/reanimated/NativeMethodsHelper.java +7 -12
  14. package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +11 -8
  15. package/android/src/main/java/com/swmansion/reanimated/keyboardObserver/ReanimatedKeyboardEventListener.java +1 -1
  16. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +3 -3
  17. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +21 -14
  18. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorListener.java +3 -1
  19. package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +0 -3
  20. package/ios/Fabric/REAInitializerRCTFabricSurface.mm +1 -0
  21. package/ios/LayoutReanimation/REAAnimationsManager.m +2 -1
  22. package/ios/REANodesManager.h +1 -0
  23. package/ios/REANodesManager.mm +92 -20
  24. package/ios/keyboardObserver/REAKeyboardEventObserver.m +51 -130
  25. package/ios/native/NativeMethods.mm +1 -1
  26. package/ios/native/NativeProxy.mm +4 -1
  27. package/ios/native/REAIOSErrorHandler.mm +1 -1
  28. package/ios/native/REAIOSLogger.mm +1 -1
  29. package/ios/native/REAIOSScheduler.mm +1 -1
  30. package/ios/native/REAInitializer.mm +1 -1
  31. package/ios/native/REAMessageThread.mm +2 -2
  32. package/lib/commonjs/Animated.js +0 -8
  33. package/lib/commonjs/Animated.js.map +1 -1
  34. package/lib/commonjs/ConfigHelper.js +8 -19
  35. package/lib/commonjs/ConfigHelper.js.map +1 -1
  36. package/lib/commonjs/createAnimatedComponent.js +20 -158
  37. package/lib/commonjs/createAnimatedComponent.js.map +1 -1
  38. package/lib/commonjs/index.js +0 -9
  39. package/lib/commonjs/index.js.map +1 -1
  40. package/lib/commonjs/index.web.js +0 -7
  41. package/lib/commonjs/index.web.js.map +1 -1
  42. package/lib/commonjs/reanimated2/Bezier.js +14 -34
  43. package/lib/commonjs/reanimated2/Bezier.js.map +1 -1
  44. package/lib/commonjs/reanimated2/Colors.js +60 -132
  45. package/lib/commonjs/reanimated2/Colors.js.map +1 -1
  46. package/lib/commonjs/reanimated2/Easing.js +81 -34
  47. package/lib/commonjs/reanimated2/Easing.js.map +1 -1
  48. package/lib/commonjs/reanimated2/NativeMethods.js +8 -20
  49. package/lib/commonjs/reanimated2/NativeMethods.js.map +1 -1
  50. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +6 -33
  51. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  52. package/lib/commonjs/reanimated2/NativeReanimated/index.js +0 -7
  53. package/lib/commonjs/reanimated2/NativeReanimated/index.js.map +1 -1
  54. package/lib/commonjs/reanimated2/PlatformChecker.js +0 -6
  55. package/lib/commonjs/reanimated2/PlatformChecker.js.map +1 -1
  56. package/lib/commonjs/reanimated2/PropAdapters.js +10 -12
  57. package/lib/commonjs/reanimated2/PropAdapters.js.map +1 -1
  58. package/lib/commonjs/reanimated2/Sensor.js +69 -0
  59. package/lib/commonjs/reanimated2/Sensor.js.map +1 -0
  60. package/lib/commonjs/reanimated2/SensorContainer.js +53 -0
  61. package/lib/commonjs/reanimated2/SensorContainer.js.map +1 -0
  62. package/lib/commonjs/reanimated2/UpdateProps.js +3 -12
  63. package/lib/commonjs/reanimated2/UpdateProps.js.map +1 -1
  64. package/lib/commonjs/reanimated2/ViewDescriptorsSet.js +0 -10
  65. package/lib/commonjs/reanimated2/ViewDescriptorsSet.js.map +1 -1
  66. package/lib/commonjs/reanimated2/WorkletEventHandler.js +5 -22
  67. package/lib/commonjs/reanimated2/WorkletEventHandler.js.map +1 -1
  68. package/lib/commonjs/reanimated2/animation/decay.js +7 -18
  69. package/lib/commonjs/reanimated2/animation/decay.js.map +1 -1
  70. package/lib/commonjs/reanimated2/animation/delay.js +0 -11
  71. package/lib/commonjs/reanimated2/animation/delay.js.map +1 -1
  72. package/lib/commonjs/reanimated2/animation/index.js +0 -8
  73. package/lib/commonjs/reanimated2/animation/index.js.map +1 -1
  74. package/lib/commonjs/reanimated2/animation/repeat.js +6 -22
  75. package/lib/commonjs/reanimated2/animation/repeat.js.map +1 -1
  76. package/lib/commonjs/reanimated2/animation/sequence.js +3 -20
  77. package/lib/commonjs/reanimated2/animation/sequence.js.map +1 -1
  78. package/lib/commonjs/reanimated2/animation/spring.js +11 -23
  79. package/lib/commonjs/reanimated2/animation/spring.js.map +1 -1
  80. package/lib/commonjs/reanimated2/animation/styleAnimation.js +3 -35
  81. package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
  82. package/lib/commonjs/reanimated2/animation/timing.js +0 -11
  83. package/lib/commonjs/reanimated2/animation/timing.js.map +1 -1
  84. package/lib/commonjs/reanimated2/animation/util.js +36 -41
  85. package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
  86. package/lib/commonjs/reanimated2/commonTypes.js +16 -23
  87. package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
  88. package/lib/commonjs/reanimated2/component/FlatList.js +0 -16
  89. package/lib/commonjs/reanimated2/component/FlatList.js.map +1 -1
  90. package/lib/commonjs/reanimated2/component/Image.js +0 -4
  91. package/lib/commonjs/reanimated2/component/Image.js.map +1 -1
  92. package/lib/commonjs/reanimated2/component/ScrollView.js +0 -4
  93. package/lib/commonjs/reanimated2/component/ScrollView.js.map +1 -1
  94. package/lib/commonjs/reanimated2/component/Text.js +0 -4
  95. package/lib/commonjs/reanimated2/component/Text.js.map +1 -1
  96. package/lib/commonjs/reanimated2/component/View.js +0 -4
  97. package/lib/commonjs/reanimated2/component/View.js.map +1 -1
  98. package/lib/commonjs/reanimated2/core.js +25 -52
  99. package/lib/commonjs/reanimated2/core.js.map +1 -1
  100. package/lib/commonjs/reanimated2/errors.js +3 -14
  101. package/lib/commonjs/reanimated2/errors.js.map +1 -1
  102. package/lib/commonjs/reanimated2/fabricUtils.js +3 -5
  103. package/lib/commonjs/reanimated2/fabricUtils.js.map +1 -1
  104. package/lib/commonjs/reanimated2/fabricUtils.web.js +1 -3
  105. package/lib/commonjs/reanimated2/fabricUtils.web.js.map +1 -1
  106. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -12
  107. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  108. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -17
  109. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  110. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  111. package/lib/commonjs/reanimated2/hook/Hooks.js +0 -5
  112. package/lib/commonjs/reanimated2/hook/Hooks.js.map +1 -1
  113. package/lib/commonjs/reanimated2/hook/commonTypes.js.map +1 -1
  114. package/lib/commonjs/reanimated2/hook/index.js +0 -12
  115. package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
  116. package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js +4 -17
  117. package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  118. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +2 -9
  119. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  120. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +1 -11
  121. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  122. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +1 -13
  123. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
  124. package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js +2 -9
  125. package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  126. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +20 -55
  127. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  128. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +13 -71
  129. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  130. package/lib/commonjs/reanimated2/hook/useDerivedValue.js +4 -13
  131. package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
  132. package/lib/commonjs/reanimated2/hook/useFrameCallback.js +0 -5
  133. package/lib/commonjs/reanimated2/hook/useFrameCallback.js.map +1 -1
  134. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +0 -7
  135. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  136. package/lib/commonjs/reanimated2/hook/useSharedValue.js +2 -7
  137. package/lib/commonjs/reanimated2/hook/useSharedValue.js.map +1 -1
  138. package/lib/commonjs/reanimated2/hook/utils.js +8 -39
  139. package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
  140. package/lib/commonjs/reanimated2/index.js +0 -26
  141. package/lib/commonjs/reanimated2/index.js.map +1 -1
  142. package/lib/commonjs/reanimated2/initializers.js +21 -43
  143. package/lib/commonjs/reanimated2/initializers.js.map +1 -1
  144. package/lib/commonjs/reanimated2/interpolateColor.js +6 -43
  145. package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
  146. package/lib/commonjs/reanimated2/interpolation.js +14 -29
  147. package/lib/commonjs/reanimated2/interpolation.js.map +1 -1
  148. package/lib/commonjs/reanimated2/jestUtils.js +15 -48
  149. package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
  150. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +15 -39
  151. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  152. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +9 -28
  153. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
  154. package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js +7 -37
  155. package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
  156. package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js +5 -18
  157. package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js.map +1 -1
  158. package/lib/commonjs/reanimated2/js-reanimated/global.js +2 -9
  159. package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
  160. package/lib/commonjs/reanimated2/js-reanimated/index.js +3 -14
  161. package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
  162. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -26
  163. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  164. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -49
  165. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  166. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -43
  167. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  168. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +4 -5
  169. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  170. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +0 -4
  171. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  172. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +4 -23
  173. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  174. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -74
  175. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  176. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -53
  177. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  178. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -63
  179. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  180. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -26
  181. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  182. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -13
  183. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  184. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -23
  185. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  186. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -43
  187. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  188. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -43
  189. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  190. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -23
  191. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  192. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -83
  193. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  194. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js +0 -20
  195. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  196. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -22
  197. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  198. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -29
  199. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  200. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -9
  201. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  202. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -11
  203. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  204. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -8
  205. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  206. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -12
  207. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  208. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js +0 -12
  209. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  210. package/lib/commonjs/reanimated2/layoutReanimation/index.js +0 -9
  211. package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
  212. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -17
  213. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  214. package/lib/commonjs/reanimated2/mappers.js +29 -32
  215. package/lib/commonjs/reanimated2/mappers.js.map +1 -1
  216. package/lib/commonjs/reanimated2/mock.js +5 -15
  217. package/lib/commonjs/reanimated2/mock.js.map +1 -1
  218. package/lib/commonjs/reanimated2/mutables.js +2 -28
  219. package/lib/commonjs/reanimated2/mutables.js.map +1 -1
  220. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js +0 -2
  221. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  222. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  223. package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js +30 -0
  224. package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
  225. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +0 -2
  226. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
  227. package/lib/commonjs/reanimated2/platform-specific/jsVersion.js +14 -0
  228. package/lib/commonjs/reanimated2/platform-specific/jsVersion.js.map +1 -0
  229. package/lib/commonjs/reanimated2/pluginUtils.js +0 -1
  230. package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -1
  231. package/lib/commonjs/reanimated2/shareables.js +86 -53
  232. package/lib/commonjs/reanimated2/shareables.js.map +1 -1
  233. package/lib/commonjs/reanimated2/threads.js +42 -46
  234. package/lib/commonjs/reanimated2/threads.js.map +1 -1
  235. package/lib/commonjs/reanimated2/utils.js +0 -5
  236. package/lib/commonjs/reanimated2/utils.js.map +1 -1
  237. package/lib/commonjs/reanimated2/valueSetter.js +6 -21
  238. package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
  239. package/lib/commonjs/setAndForwardRef.js +3 -3
  240. package/lib/commonjs/setAndForwardRef.js.map +1 -1
  241. package/lib/module/Animated.js.map +1 -1
  242. package/lib/module/ConfigHelper.js +9 -15
  243. package/lib/module/ConfigHelper.js.map +1 -1
  244. package/lib/module/createAnimatedComponent.js +20 -139
  245. package/lib/module/createAnimatedComponent.js.map +1 -1
  246. package/lib/module/index.js +0 -2
  247. package/lib/module/index.js.map +1 -1
  248. package/lib/module/index.web.js.map +1 -1
  249. package/lib/module/reanimated2/Bezier.js +14 -33
  250. package/lib/module/reanimated2/Bezier.js.map +1 -1
  251. package/lib/module/reanimated2/Colors.js +59 -109
  252. package/lib/module/reanimated2/Colors.js.map +1 -1
  253. package/lib/module/reanimated2/Easing.js +37 -33
  254. package/lib/module/reanimated2/Easing.js.map +1 -1
  255. package/lib/module/reanimated2/NativeMethods.js +8 -15
  256. package/lib/module/reanimated2/NativeMethods.js.map +1 -1
  257. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +6 -29
  258. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  259. package/lib/module/reanimated2/NativeReanimated/index.js +0 -2
  260. package/lib/module/reanimated2/NativeReanimated/index.js.map +1 -1
  261. package/lib/module/reanimated2/PlatformChecker.js.map +1 -1
  262. package/lib/module/reanimated2/PropAdapters.js +12 -10
  263. package/lib/module/reanimated2/PropAdapters.js.map +1 -1
  264. package/lib/module/reanimated2/Sensor.js +61 -0
  265. package/lib/module/reanimated2/Sensor.js.map +1 -0
  266. package/lib/module/reanimated2/SensorContainer.js +45 -0
  267. package/lib/module/reanimated2/SensorContainer.js.map +1 -0
  268. package/lib/module/reanimated2/UpdateProps.js +3 -5
  269. package/lib/module/reanimated2/UpdateProps.js.map +1 -1
  270. package/lib/module/reanimated2/ViewDescriptorsSet.js +0 -6
  271. package/lib/module/reanimated2/ViewDescriptorsSet.js.map +1 -1
  272. package/lib/module/reanimated2/WorkletEventHandler.js +5 -18
  273. package/lib/module/reanimated2/WorkletEventHandler.js.map +1 -1
  274. package/lib/module/reanimated2/animation/decay.js +7 -15
  275. package/lib/module/reanimated2/animation/decay.js.map +1 -1
  276. package/lib/module/reanimated2/animation/delay.js +0 -9
  277. package/lib/module/reanimated2/animation/delay.js.map +1 -1
  278. package/lib/module/reanimated2/animation/index.js.map +1 -1
  279. package/lib/module/reanimated2/animation/repeat.js +6 -20
  280. package/lib/module/reanimated2/animation/repeat.js.map +1 -1
  281. package/lib/module/reanimated2/animation/sequence.js +3 -18
  282. package/lib/module/reanimated2/animation/sequence.js.map +1 -1
  283. package/lib/module/reanimated2/animation/spring.js +11 -21
  284. package/lib/module/reanimated2/animation/spring.js.map +1 -1
  285. package/lib/module/reanimated2/animation/styleAnimation.js +7 -31
  286. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  287. package/lib/module/reanimated2/animation/timing.js +0 -8
  288. package/lib/module/reanimated2/animation/timing.js.map +1 -1
  289. package/lib/module/reanimated2/animation/util.js +35 -33
  290. package/lib/module/reanimated2/animation/util.js.map +1 -1
  291. package/lib/module/reanimated2/commonTypes.js +12 -19
  292. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  293. package/lib/module/reanimated2/component/FlatList.js +0 -4
  294. package/lib/module/reanimated2/component/FlatList.js.map +1 -1
  295. package/lib/module/reanimated2/component/Image.js.map +1 -1
  296. package/lib/module/reanimated2/component/ScrollView.js.map +1 -1
  297. package/lib/module/reanimated2/component/Text.js.map +1 -1
  298. package/lib/module/reanimated2/component/View.js.map +1 -1
  299. package/lib/module/reanimated2/core.js +23 -26
  300. package/lib/module/reanimated2/core.js.map +1 -1
  301. package/lib/module/reanimated2/errors.js +3 -13
  302. package/lib/module/reanimated2/errors.js.map +1 -1
  303. package/lib/module/reanimated2/fabricUtils.js +3 -3
  304. package/lib/module/reanimated2/fabricUtils.js.map +1 -1
  305. package/lib/module/reanimated2/fabricUtils.web.js +1 -1
  306. package/lib/module/reanimated2/fabricUtils.web.js.map +1 -1
  307. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -8
  308. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  309. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -15
  310. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  311. package/lib/module/reanimated2/globals.d.js.map +1 -1
  312. package/lib/module/reanimated2/hook/Hooks.js +3 -2
  313. package/lib/module/reanimated2/hook/Hooks.js.map +1 -1
  314. package/lib/module/reanimated2/hook/commonTypes.js.map +1 -1
  315. package/lib/module/reanimated2/hook/index.js.map +1 -1
  316. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js +3 -14
  317. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  318. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +2 -5
  319. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  320. package/lib/module/reanimated2/hook/useAnimatedReaction.js +1 -7
  321. package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  322. package/lib/module/reanimated2/hook/useAnimatedRef.js +1 -7
  323. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  324. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js +2 -7
  325. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  326. package/lib/module/reanimated2/hook/useAnimatedSensor.js +22 -52
  327. package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  328. package/lib/module/reanimated2/hook/useAnimatedStyle.js +13 -59
  329. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  330. package/lib/module/reanimated2/hook/useDerivedValue.js +4 -8
  331. package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
  332. package/lib/module/reanimated2/hook/useFrameCallback.js.map +1 -1
  333. package/lib/module/reanimated2/hook/useScrollViewOffset.js +0 -1
  334. package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  335. package/lib/module/reanimated2/hook/useSharedValue.js +2 -3
  336. package/lib/module/reanimated2/hook/useSharedValue.js.map +1 -1
  337. package/lib/module/reanimated2/hook/utils.js +8 -21
  338. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  339. package/lib/module/reanimated2/index.js.map +1 -1
  340. package/lib/module/reanimated2/initializers.js +23 -37
  341. package/lib/module/reanimated2/initializers.js.map +1 -1
  342. package/lib/module/reanimated2/interpolateColor.js +5 -34
  343. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  344. package/lib/module/reanimated2/interpolation.js +13 -28
  345. package/lib/module/reanimated2/interpolation.js.map +1 -1
  346. package/lib/module/reanimated2/jestUtils.js +15 -39
  347. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  348. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +15 -35
  349. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  350. package/lib/module/reanimated2/js-reanimated/Mapper.js +9 -23
  351. package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
  352. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js +7 -35
  353. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
  354. package/lib/module/reanimated2/js-reanimated/MutableValue.js +5 -16
  355. package/lib/module/reanimated2/js-reanimated/MutableValue.js.map +1 -1
  356. package/lib/module/reanimated2/js-reanimated/global.js +2 -6
  357. package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
  358. package/lib/module/reanimated2/js-reanimated/index.js +3 -9
  359. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  360. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -23
  361. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  362. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -45
  363. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  364. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -39
  365. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  366. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +3 -3
  367. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  368. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  369. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +4 -19
  370. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  371. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -52
  372. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  373. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -32
  374. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  375. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -38
  376. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  377. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -16
  378. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  379. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -8
  380. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  381. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -14
  382. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  383. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -26
  384. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  385. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -26
  386. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  387. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -14
  388. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  389. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -50
  390. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  391. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  392. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -17
  393. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  394. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -23
  395. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  396. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -5
  397. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  398. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -6
  399. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  400. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -5
  401. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  402. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -8
  403. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  404. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  405. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  406. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -13
  407. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  408. package/lib/module/reanimated2/mappers.js +29 -25
  409. package/lib/module/reanimated2/mappers.js.map +1 -1
  410. package/lib/module/reanimated2/mock.js +5 -15
  411. package/lib/module/reanimated2/mock.js.map +1 -1
  412. package/lib/module/reanimated2/mutables.js +2 -19
  413. package/lib/module/reanimated2/mutables.js.map +1 -1
  414. package/lib/module/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  415. package/lib/module/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  416. package/lib/module/reanimated2/platform-specific/checkCppVersion.js +23 -0
  417. package/lib/module/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
  418. package/lib/module/reanimated2/platform-specific/checkVersion.web.js +0 -1
  419. package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
  420. package/lib/module/reanimated2/platform-specific/jsVersion.js +7 -0
  421. package/lib/module/reanimated2/platform-specific/jsVersion.js.map +1 -0
  422. package/lib/module/reanimated2/pluginUtils.js.map +1 -1
  423. package/lib/module/reanimated2/shareables.js +90 -48
  424. package/lib/module/reanimated2/shareables.js.map +1 -1
  425. package/lib/module/reanimated2/threads.js +39 -33
  426. package/lib/module/reanimated2/threads.js.map +1 -1
  427. package/lib/module/reanimated2/utils.js +0 -3
  428. package/lib/module/reanimated2/utils.js.map +1 -1
  429. package/lib/module/reanimated2/valueSetter.js +6 -19
  430. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  431. package/lib/module/setAndForwardRef.js +3 -2
  432. package/lib/module/setAndForwardRef.js.map +1 -1
  433. package/package.json +51 -43
  434. package/plugin/build/plugin.js +713 -0
  435. package/plugin/build/plugin.js.map +7 -0
  436. package/plugin/index.js +1 -807
  437. package/react-native-reanimated.d.ts +7 -1
  438. package/scripts/reanimated_utils.rb +2 -2
  439. package/src/createAnimatedComponent.tsx +2 -3
  440. package/src/reanimated2/Easing.ts +19 -0
  441. package/src/reanimated2/NativeMethods.ts +9 -4
  442. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +3 -4
  443. package/src/reanimated2/Sensor.ts +81 -0
  444. package/src/reanimated2/SensorContainer.ts +71 -0
  445. package/src/reanimated2/UpdateProps.ts +2 -2
  446. package/src/reanimated2/animation/decay.ts +7 -1
  447. package/src/reanimated2/animation/styleAnimation.ts +5 -1
  448. package/src/reanimated2/animation/util.ts +44 -0
  449. package/src/reanimated2/commonTypes.ts +18 -1
  450. package/src/reanimated2/core.ts +31 -12
  451. package/src/reanimated2/errors.ts +1 -0
  452. package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +12 -4
  453. package/src/reanimated2/globals.d.ts +73 -112
  454. package/src/reanimated2/hook/commonTypes.ts +1 -1
  455. package/src/reanimated2/hook/useAnimatedReaction.ts +2 -2
  456. package/src/reanimated2/hook/useAnimatedRef.ts +11 -3
  457. package/src/reanimated2/hook/useAnimatedSensor.ts +31 -67
  458. package/src/reanimated2/initializers.ts +11 -8
  459. package/src/reanimated2/jestUtils.ts +13 -8
  460. package/src/reanimated2/js-reanimated/JSReanimated.ts +5 -1
  461. package/src/reanimated2/js-reanimated/index.ts +1 -1
  462. package/src/reanimated2/mappers.ts +29 -4
  463. package/src/reanimated2/mock.ts +1 -0
  464. package/src/reanimated2/platform-specific/checkCppVersion.ts +28 -0
  465. package/src/reanimated2/platform-specific/jsVersion.ts +6 -0
  466. package/src/reanimated2/shareables.ts +99 -12
  467. package/src/reanimated2/threads.ts +36 -17
  468. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +0 -42
  469. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +0 -1
  470. package/lib/module/reanimated2/platform-specific/checkVersion.js +0 -35
  471. package/lib/module/reanimated2/platform-specific/checkVersion.js.map +0 -1
  472. package/src/reanimated2/platform-specific/checkVersion.ts +0 -39
@@ -36,7 +36,7 @@ struct UIManagerPublic {
36
36
  struct BindingPublic : public jni::HybridClass<Binding>,
37
37
  public SchedulerDelegate,
38
38
  public LayoutAnimationStatusDelegate {
39
- butter::shared_mutex installMutex_;
39
+ std::shared_mutex installMutex_;
40
40
  std::shared_ptr<FabricMountingManager> mountingManager_;
41
41
  std::shared_ptr<facebook::react::Scheduler> scheduler_;
42
42
  };
@@ -1,6 +1,7 @@
1
1
  #include "NativeReanimatedModule.h"
2
2
 
3
3
  #ifdef RCT_NEW_ARCH_ENABLED
4
+ #include <react/renderer/core/TraitCast.h>
4
5
  #include <react/renderer/uimanager/UIManagerBinding.h>
5
6
  #include <react/renderer/uimanager/primitives.h>
6
7
  #endif
@@ -156,7 +157,8 @@ NativeReanimatedModule::NativeReanimatedModule(
156
157
  platformDepMethodsHolder.getCurrentTime,
157
158
  platformDepMethodsHolder.setGestureStateFunction,
158
159
  platformDepMethodsHolder.progressLayoutAnimation,
159
- platformDepMethodsHolder.endLayoutAnimation);
160
+ platformDepMethodsHolder.endLayoutAnimation,
161
+ platformDepMethodsHolder.maybeFlushUIUpdatesQueueFunction);
160
162
  onRenderCallback = [this](double timestampMs) {
161
163
  this->renderRequested = false;
162
164
  this->onRender(timestampMs);
@@ -254,8 +256,14 @@ jsi::Value NativeReanimatedModule::makeShareableClone(
254
256
  } else if (!object.getProperty(rt, "__init").isUndefined()) {
255
257
  shareable = std::make_shared<ShareableHandle>(runtimeHelper, rt, object);
256
258
  } else if (object.isFunction(rt)) {
257
- shareable = std::make_shared<ShareableRemoteFunction>(
258
- runtimeHelper, rt, object.asFunction(rt));
259
+ auto function = object.asFunction(rt);
260
+ if (function.isHostFunction(rt)) {
261
+ shareable =
262
+ std::make_shared<ShareableHostFunction>(rt, std::move(function));
263
+ } else {
264
+ shareable = std::make_shared<ShareableRemoteFunction>(
265
+ runtimeHelper, rt, std::move(function));
266
+ }
259
267
  } else if (object.isArray(rt)) {
260
268
  if (shouldRetainRemote.isBool() && shouldRetainRemote.getBool()) {
261
269
  shareable = std::make_shared<RetainingShareable<ShareableArray>>(
@@ -547,37 +555,40 @@ void NativeReanimatedModule::performOperations() {
547
555
  shadowTreeRegistry.visit(surfaceId_, [&](ShadowTree const &shadowTree) {
548
556
  auto lock = newestShadowNodesRegistry_->createLock();
549
557
 
550
- shadowTree.commit([&](RootShadowNode const &oldRootShadowNode) {
551
- auto rootNode = oldRootShadowNode.ShadowNode::clone(ShadowNodeFragment{});
558
+ shadowTree.commit(
559
+ [&](RootShadowNode const &oldRootShadowNode) {
560
+ auto rootNode =
561
+ oldRootShadowNode.ShadowNode::clone(ShadowNodeFragment{});
552
562
 
553
- ShadowTreeCloner shadowTreeCloner{
554
- newestShadowNodesRegistry_, uiManager_, surfaceId_};
563
+ ShadowTreeCloner shadowTreeCloner{
564
+ newestShadowNodesRegistry_, uiManager_, surfaceId_};
555
565
 
556
- for (const auto &pair : copiedOperationsQueue) {
557
- const ShadowNodeFamily &family = pair.first->getFamily();
558
- react_native_assert(family.getSurfaceId() == surfaceId_);
566
+ for (const auto &pair : copiedOperationsQueue) {
567
+ const ShadowNodeFamily &family = pair.first->getFamily();
568
+ react_native_assert(family.getSurfaceId() == surfaceId_);
559
569
 
560
- auto newRootNode = shadowTreeCloner.cloneWithNewProps(
561
- rootNode, family, RawProps(rt, *pair.second));
570
+ auto newRootNode = shadowTreeCloner.cloneWithNewProps(
571
+ rootNode, family, RawProps(rt, *pair.second));
562
572
 
563
- if (newRootNode == nullptr) {
564
- // this happens when React removed the component but Reanimated
565
- // still tries to animate it, let's skip update for this specific
566
- // component
567
- continue;
568
- }
569
- rootNode = newRootNode;
570
- }
573
+ if (newRootNode == nullptr) {
574
+ // this happens when React removed the component but Reanimated
575
+ // still tries to animate it, let's skip update for this specific
576
+ // component
577
+ continue;
578
+ }
579
+ rootNode = newRootNode;
580
+ }
571
581
 
572
- // remove ShadowNodes and its ancestors from NewestShadowNodesRegistry
573
- for (auto tag : copiedTagsToRemove) {
574
- newestShadowNodesRegistry_->remove(tag);
575
- }
582
+ // remove ShadowNodes and its ancestors from NewestShadowNodesRegistry
583
+ for (auto tag : copiedTagsToRemove) {
584
+ newestShadowNodesRegistry_->remove(tag);
585
+ }
576
586
 
577
- shadowTreeCloner.updateYogaChildren();
587
+ shadowTreeCloner.updateYogaChildren();
578
588
 
579
- return std::static_pointer_cast<RootShadowNode>(rootNode);
580
- });
589
+ return std::static_pointer_cast<RootShadowNode>(rootNode);
590
+ },
591
+ {/* default commit options */});
581
592
  });
582
593
  }
583
594
 
@@ -116,6 +116,7 @@ class Shareable {
116
116
  HandleType,
117
117
  SynchronizedDataHolder,
118
118
  HostObjectType,
119
+ HostFunctionType,
119
120
  };
120
121
 
121
122
  explicit Shareable(ValueType valueType) : valueType_(valueType) {}
@@ -273,6 +274,27 @@ class ShareableHostObject : public Shareable {
273
274
  std::shared_ptr<jsi::HostObject> hostObject_;
274
275
  };
275
276
 
277
+ class ShareableHostFunction : public Shareable {
278
+ public:
279
+ ShareableHostFunction(jsi::Runtime &rt, jsi::Function function)
280
+ : Shareable(HostFunctionType),
281
+ hostFunction_(
282
+ (assert(function.isHostFunction(rt)),
283
+ function.getHostFunction(rt))),
284
+ name_(function.getProperty(rt, "name").asString(rt).utf8(rt)),
285
+ paramCount_(function.getProperty(rt, "length").asNumber()) {}
286
+
287
+ jsi::Value toJSValue(jsi::Runtime &rt) override {
288
+ return jsi::Function::createFromHostFunction(
289
+ rt, jsi::PropNameID::forUtf8(rt, name_), paramCount_, hostFunction_);
290
+ }
291
+
292
+ protected:
293
+ jsi::HostFunctionType hostFunction_;
294
+ std::string name_;
295
+ unsigned int paramCount_;
296
+ };
297
+
276
298
  class ShareableWorklet : public ShareableObject {
277
299
  private:
278
300
  std::shared_ptr<JSRuntimeHelper> runtimeHelper_;
@@ -68,6 +68,7 @@ using ConfigurePropsFunction = std::function<void(
68
68
  using KeyboardEventSubscribeFunction =
69
69
  std::function<int(std::function<void(int, int)>, bool)>;
70
70
  using KeyboardEventUnsubscribeFunction = std::function<void(int)>;
71
+ using MaybeFlushUIUpdatesQueueFunction = std::function<void()>;
71
72
 
72
73
  struct PlatformDepMethodsHolder {
73
74
  RequestRender requestRender;
@@ -87,6 +88,7 @@ struct PlatformDepMethodsHolder {
87
88
  SetGestureStateFunction setGestureStateFunction;
88
89
  KeyboardEventSubscribeFunction subscribeForKeyboardEvents;
89
90
  KeyboardEventUnsubscribeFunction unsubscribeFromKeyboardEvents;
91
+ MaybeFlushUIUpdatesQueueFunction maybeFlushUIUpdatesQueueFunction;
90
92
  };
91
93
 
92
94
  } // namespace reanimated
@@ -91,7 +91,8 @@ void RuntimeDecorator::decorateUIRuntime(
91
91
  const TimeProviderFunction getCurrentTime,
92
92
  const SetGestureStateFunction setGestureState,
93
93
  const ProgressLayoutAnimationFunction progressLayoutAnimationFunction,
94
- const EndLayoutAnimationFunction endLayoutAnimationFunction) {
94
+ const EndLayoutAnimationFunction endLayoutAnimationFunction,
95
+ const MaybeFlushUIUpdatesQueueFunction maybeFlushUIUpdatesQueueFunction) {
95
96
  RuntimeDecorator::decorateRuntime(rt, "UI");
96
97
  rt.global().setProperty(rt, "_UI", jsi::Value(true));
97
98
 
@@ -146,6 +147,8 @@ void RuntimeDecorator::decorateUIRuntime(
146
147
  rt, "_notifyAboutEnd", endLayoutAnimationFunction);
147
148
 
148
149
  jsi_utils::installJsiFunction(rt, "_setGestureState", setGestureState);
150
+ jsi_utils::installJsiFunction(
151
+ rt, "_maybeFlushUIUpdatesQueue", maybeFlushUIUpdatesQueueFunction);
149
152
  }
150
153
 
151
154
  } // namespace reanimated
@@ -52,7 +52,8 @@ class RuntimeDecorator {
52
52
  const TimeProviderFunction getCurrentTime,
53
53
  const SetGestureStateFunction setGestureState,
54
54
  const ProgressLayoutAnimationFunction progressLayoutAnimationFunction,
55
- const EndLayoutAnimationFunction endLayoutAnimationFunction);
55
+ const EndLayoutAnimationFunction endLayoutAnimationFunction,
56
+ const MaybeFlushUIUpdatesQueueFunction maybeFlushUIUpdatesQueueFunction);
56
57
 
57
58
  /**
58
59
  Returns true if the given Runtime is the Reanimated UI-Thread Runtime.
@@ -7,6 +7,10 @@
7
7
  #include <iostream>
8
8
  #include <string>
9
9
 
10
+ #ifdef ANDROID
11
+ #include <android/log.h>
12
+ #endif
13
+
10
14
  namespace reanimated {
11
15
 
12
16
  // This is a class that counts how many instances of a different class there
@@ -22,8 +26,16 @@ class SingleInstanceChecker {
22
26
  private:
23
27
  void assertWithMessage(bool condition, std::string message) {
24
28
  if (!condition) {
25
- std::cerr << message << std::endl;
26
- assert(condition);
29
+ #ifdef ANDROID
30
+ __android_log_print(
31
+ ANDROID_LOG_WARN, "Reanimated", "%s", message.c_str());
32
+ #else
33
+ std::cerr << "[Reanimated] " << message << std::endl;
34
+ #endif
35
+
36
+ #ifdef IS_REANIMATED_EXAMPLE_APP
37
+ assert(false);
38
+ #endif
27
39
  }
28
40
  }
29
41
 
@@ -13,6 +13,7 @@ folly_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comm
13
13
  folly_compiler_flags = folly_flags + ' ' + '-Wno-comma -Wno-shorten-64-to-32'
14
14
  boost_compiler_flags = '-Wno-documentation'
15
15
  fabric_flags = fabric_enabled ? '-DRCT_NEW_ARCH_ENABLED' : ''
16
+ example_flag = config[:is_reanimated_example_app] ? '-DIS_REANIMATED_EXAMPLE_APP' : ''
16
17
  version_flag = '-DREANIMATED_VERSION=' + reanimated_package_json["version"]
17
18
 
18
19
  Pod::Spec.new do |s|
@@ -48,7 +49,7 @@ Pod::Spec.new do |s|
48
49
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags + ' -DHERMES_ENABLE_DEBUGGER'
49
50
  s.xcconfig = {
50
51
  "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/glog\" \"$(PODS_ROOT)/#{folly_prefix}Folly\" \"$(PODS_ROOT)/Headers/Public/React-hermes\" \"$(PODS_ROOT)/Headers/Public/hermes-engine\" \"$(PODS_ROOT)/#{config[:react_native_common_dir]}\"",
51
- "OTHER_CFLAGS" => "$(inherited)" + " " + folly_flags + " " + fabric_flags + " " + version_flag
52
+ "OTHER_CFLAGS" => "$(inherited)" + " " + folly_flags + " " + fabric_flags + " " + example_flag + " " + version_flag
52
53
  }
53
54
 
54
55
  s.requires_arc = true
@@ -65,7 +66,9 @@ Pod::Spec.new do |s|
65
66
  s.dependency "RCTTypeSafety"
66
67
  s.dependency "ReactCommon/turbomodule/core"
67
68
  s.dependency 'FBLazyVector'
68
- s.dependency 'FBReactNativeSpec'
69
+ if config[:react_native_minor_version] <= 71
70
+ s.dependency 'FBReactNativeSpec'
71
+ end
69
72
  s.dependency 'React-Core'
70
73
  s.dependency 'React-CoreModules'
71
74
  s.dependency 'React-Core/DevSupport'
@@ -22,6 +22,10 @@ if(${IS_NEW_ARCHITECTURE_ENABLED})
22
22
  string(APPEND CMAKE_CXX_FLAGS " -DRCT_NEW_ARCH_ENABLED")
23
23
  endif()
24
24
 
25
+ if(${IS_REANIMATED_EXAMPLE_APP})
26
+ string(APPEND CMAKE_CXX_FLAGS " -DIS_REANIMATED_EXAMPLE_APP")
27
+ endif()
28
+
25
29
  if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
26
30
  string(APPEND CMAKE_CXX_FLAGS " -DDEBUG")
27
31
  endif()
@@ -2,6 +2,9 @@ import com.android.Version
2
2
  import org.apache.tools.ant.filters.ReplaceTokens
3
3
  import org.apache.tools.ant.taskdefs.condition.Os
4
4
  import groovy.json.JsonSlurper
5
+
6
+ import javax.inject.Inject
7
+ import java.nio.file.Files
5
8
  import java.nio.file.Paths
6
9
 
7
10
  /**
@@ -72,9 +75,12 @@ def resolveClientSideBuild() {
72
75
  return true
73
76
  }
74
77
 
78
+ def isReanimatedExampleApp() {
79
+ return safeAppExtGet("isReanimatedExampleApp", false)
80
+ }
81
+
75
82
  def isDeveloperMode() {
76
- // developer mode, to run Example app
77
- return safeAppExtGet("isReanimatedExampleApp", false) || System.getenv("REANIMATED_PACKAGE_BUILD") == "1"
83
+ return isReanimatedExampleApp() || System.getenv("REANIMATED_PACKAGE_BUILD") == "1"
78
84
  }
79
85
 
80
86
  def isNewArchitectureEnabled() {
@@ -138,41 +144,6 @@ def shouldAssertNoMultipleInstances() {
138
144
  }
139
145
  }
140
146
 
141
- def findReanimatedInstancesForPath(String path) {
142
- return fileTree(path) {
143
- include "**/react-native-reanimated/package.json"
144
- exclude "**/.yarn/**"
145
- exclude {{ file, attr -> attr.isSymbolicLink() }}
146
- }.files
147
- }
148
-
149
- def checkNoMultipleInstances() {
150
- // Assert there are no multiple installations of Reanimated
151
- Set<File> files
152
- if (projectDir.path.contains(rootDir.parent)) {
153
- // standard app
154
- files = findReanimatedInstancesForPath(rootDir.parent + "/node_modules")
155
- } else {
156
- // monorepo
157
- files = findReanimatedInstancesForPath(rootDir.parent + "/node_modules")
158
- files.addAll(
159
- findReanimatedInstancesForPath(file(projectDir.parent).parent)
160
- )
161
- }
162
- if (files.size() > 1) {
163
- String parsedLocation = files.stream().map({
164
- File file -> "- " + file.toString().replace("/package.json", "")
165
- }).collect().join("\n")
166
- String exceptionMessage = "\n[react-native-reanimated] Multiple versions of Reanimated " +
167
- "were detected. Only one instance of react-native-reanimated can be installed in a " +
168
- "project. You need to resolve the conflict manually. Check out the documentation: " +
169
- "https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/" +
170
- "troubleshooting#multiple-versions-of-reanimated-were-detected \n\nConflict " +
171
- "between: \n" + parsedLocation + "\n";
172
- throw new GradleException(exceptionMessage)
173
- }
174
- }
175
-
176
147
  def getReanimatedVersion() {
177
148
  def inputFile = file(projectDir.path + '/../package.json')
178
149
  def json = new JsonSlurper().parseText(inputFile.text)
@@ -431,6 +402,10 @@ apply plugin: "de.undercouch.download"
431
402
 
432
403
  android {
433
404
  compileSdkVersion safeExtGet("compileSdkVersion", 30)
405
+ def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION
406
+ if (agpVersion.tokenize('.')[0].toInteger() >= 7) {
407
+ namespace "com.swmansion.reanimated"
408
+ }
434
409
  if (REACT_NATIVE_MINOR_VERSION >= 71) {
435
410
  buildFeatures {
436
411
  prefab true
@@ -453,6 +428,7 @@ android {
453
428
  "-DJS_RUNTIME_DIR=${jsRuntimeDir}",
454
429
  "-DCLIENT_SIDE_BUILD=${CLIENT_SIDE_BUILD}",
455
430
  "-DIS_NEW_ARCHITECTURE_ENABLED=${isNewArchitectureEnabled()}",
431
+ "-DIS_REANIMATED_EXAMPLE_APP=${isReanimatedExampleApp()}",
456
432
  "-DPLAYGROUND_APP_NAME=${getPlaygroundAppName()}",
457
433
  "-DREANIMATED_PACKAGE_BUILD=${REANIMATED_PACKAGE_BUILD}",
458
434
  "-DREANIMATED_VERSION=${REANIMATED_VERSION}"
@@ -576,15 +552,64 @@ android {
576
552
  }
577
553
  }
578
554
 
579
- def assertNoMultipleInstances = task assertNoMultipleInstancesTask {
580
- onlyIf { shouldAssertNoMultipleInstances() && CLIENT_SIDE_BUILD }
581
- doFirst {
582
- checkNoMultipleInstances()
555
+ abstract class NoMultipleInstancesAssertionTask extends DefaultTask {
556
+ @Inject abstract ObjectFactory getObjectFactory()
557
+
558
+ @Input abstract Property<File> getProjectDirFile()
559
+ @Input abstract Property<File> getRootDirFile()
560
+ @Input abstract Property<Boolean> getShouldCheck()
561
+
562
+ def findReanimatedInstancesForPath(String path) {
563
+ return objectFactory.fileTree().from(path)
564
+ .include("**/react-native-reanimated/package.json")
565
+ .exclude("**/.yarn/**")
566
+ .exclude({ Files.isSymbolicLink(it.getFile().toPath()) })
567
+ .findAll()
583
568
  }
569
+
570
+ @TaskAction
571
+ def check() {
572
+ if (shouldCheck.get()) {
573
+ // Assert there are no multiple installations of Reanimated
574
+ Set<File> files
575
+
576
+ if (projectDirFile.get().parent.contains(rootDirFile.get().parent)) {
577
+ // standard app
578
+ files = findReanimatedInstancesForPath(rootDirFile.get().parent + "/node_modules")
579
+ } else {
580
+ // monorepo
581
+ files = findReanimatedInstancesForPath(rootDirFile.get().parent + "/node_modules")
582
+ files.addAll(
583
+ findReanimatedInstancesForPath(projectDirFile.get().parentFile.parent)
584
+ )
585
+ }
586
+
587
+ if (files.size() > 1) {
588
+ String parsedLocation = files.stream().map({
589
+ File file -> "- " + file.toString().replace("/package.json", "")
590
+ }).collect().join("\n")
591
+ String exceptionMessage = "\n[react-native-reanimated] Multiple versions of Reanimated " +
592
+ "were detected. Only one instance of react-native-reanimated can be installed in a " +
593
+ "project. You need to resolve the conflict manually. Check out the documentation: " +
594
+ "https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/" +
595
+ "troubleshooting#multiple-versions-of-reanimated-were-detected \n\nConflict " +
596
+ "between: \n" + parsedLocation + "\n"
597
+ throw new GradleException(exceptionMessage)
598
+ }
599
+ }
600
+ }
601
+ }
602
+
603
+ tasks.register('assertNoMultipleInstances', NoMultipleInstancesAssertionTask) {
604
+ shouldCheck = shouldAssertNoMultipleInstances()
605
+ rootDirFile = rootDir
606
+ projectDirFile = projectDir
584
607
  }
585
608
 
609
+ def NEW_ARCH_ENABLED = isNewArchitectureEnabled()
610
+
586
611
  def assertNoReanimated2WithNewArchitecture = task assertNoReanimated2WithNewArchitectureTask {
587
- onlyIf { isNewArchitectureEnabled() && REANIMATED_MAJOR_VERSION == 2 }
612
+ onlyIf { NEW_ARCH_ENABLED && REANIMATED_MAJOR_VERSION == 2 }
588
613
  doFirst {
589
614
  throw new GradleException(
590
615
  "\n[react-native-reanimated] Reanimated 2.x does not support Fabric. " +
@@ -595,11 +620,11 @@ def assertNoReanimated2WithNewArchitecture = task assertNoReanimated2WithNewArch
595
620
  }
596
621
 
597
622
  def assertLatestReactNativeWithNewArchitecture = task assertLatestReactNativeWithNewArchitectureTask {
598
- onlyIf { isNewArchitectureEnabled() && REANIMATED_MAJOR_VERSION == 3 && REACT_NATIVE_MINOR_VERSION < 71 }
623
+ onlyIf { NEW_ARCH_ENABLED && REANIMATED_MAJOR_VERSION == 3 && REACT_NATIVE_MINOR_VERSION < 72 }
599
624
  doFirst {
600
625
  throw new GradleException(
601
626
  "\n[react-native-reanimated] Reanimated " + REANIMATED_VERSION + " supports the New Architecture " +
602
- "only on the latest minor release of React Native. Please upgrade to React Native 0.71.0+ " +
627
+ "only on the latest minor release of React Native. Please upgrade to React Native 0.72.0+ " +
603
628
  "or downgrade to an older version of Reanimated v3."
604
629
  )
605
630
  }
@@ -1066,14 +1091,14 @@ afterEvaluate {
1066
1091
  nativeBuildDependsOn(prepareThirdPartyNdkHeaders)
1067
1092
  nativeBuildDependsOn(extractAARHeaders)
1068
1093
  nativeBuildDependsOn(extractSOFiles)
1069
-
1070
- tasks.forEach({ task ->
1071
- if (task.name.contains("JniLibFolders")) {
1072
- task.dependsOn(packageNdkLibs)
1073
- }
1074
- })
1075
1094
  }
1076
1095
 
1096
+ tasks.forEach({ task ->
1097
+ if (task.name.contains("JniLibFolders")) {
1098
+ task.dependsOn(packageNdkLibs)
1099
+ }
1100
+ })
1101
+
1077
1102
  if (JS_RUNTIME == "hermes") {
1078
1103
  if (REACT_NATIVE_MINOR_VERSION < 71) {
1079
1104
  extractAARHeaders.dependsOn(prepareHermes)