react-native-reanimated 3.0.2 → 3.1.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 (473) 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 +18 -10
  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/nativeProxy/NativeProxyCommon.java +21 -14
  16. package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +0 -3
  17. package/ios/Fabric/REAInitializerRCTFabricSurface.mm +1 -0
  18. package/ios/REANodesManager.h +1 -0
  19. package/ios/REANodesManager.mm +30 -4
  20. package/ios/keyboardObserver/REAKeyboardEventObserver.m +51 -130
  21. package/ios/native/NativeMethods.mm +1 -1
  22. package/ios/native/NativeProxy.mm +4 -1
  23. package/ios/native/REAIOSErrorHandler.mm +1 -1
  24. package/ios/native/REAIOSLogger.mm +1 -1
  25. package/ios/native/REAIOSScheduler.mm +1 -1
  26. package/ios/native/REAInitializer.mm +1 -1
  27. package/ios/native/REAMessageThread.mm +2 -2
  28. package/lib/commonjs/Animated.js +0 -8
  29. package/lib/commonjs/Animated.js.map +1 -1
  30. package/lib/commonjs/ConfigHelper.js +8 -19
  31. package/lib/commonjs/ConfigHelper.js.map +1 -1
  32. package/lib/commonjs/createAnimatedComponent.js +20 -158
  33. package/lib/commonjs/createAnimatedComponent.js.map +1 -1
  34. package/lib/commonjs/index.js +0 -9
  35. package/lib/commonjs/index.js.map +1 -1
  36. package/lib/commonjs/index.web.js +0 -7
  37. package/lib/commonjs/index.web.js.map +1 -1
  38. package/lib/commonjs/reanimated2/Bezier.js +14 -34
  39. package/lib/commonjs/reanimated2/Bezier.js.map +1 -1
  40. package/lib/commonjs/reanimated2/Colors.js +60 -132
  41. package/lib/commonjs/reanimated2/Colors.js.map +1 -1
  42. package/lib/commonjs/reanimated2/Easing.js +81 -34
  43. package/lib/commonjs/reanimated2/Easing.js.map +1 -1
  44. package/lib/commonjs/reanimated2/NativeMethods.js +8 -20
  45. package/lib/commonjs/reanimated2/NativeMethods.js.map +1 -1
  46. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +5 -31
  47. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  48. package/lib/commonjs/reanimated2/NativeReanimated/index.js +0 -7
  49. package/lib/commonjs/reanimated2/NativeReanimated/index.js.map +1 -1
  50. package/lib/commonjs/reanimated2/PlatformChecker.js +0 -6
  51. package/lib/commonjs/reanimated2/PlatformChecker.js.map +1 -1
  52. package/lib/commonjs/reanimated2/PropAdapters.js +10 -12
  53. package/lib/commonjs/reanimated2/PropAdapters.js.map +1 -1
  54. package/lib/commonjs/reanimated2/UpdateProps.js +3 -12
  55. package/lib/commonjs/reanimated2/UpdateProps.js.map +1 -1
  56. package/lib/commonjs/reanimated2/ViewDescriptorsSet.js +0 -10
  57. package/lib/commonjs/reanimated2/ViewDescriptorsSet.js.map +1 -1
  58. package/lib/commonjs/reanimated2/WorkletEventHandler.js +5 -22
  59. package/lib/commonjs/reanimated2/WorkletEventHandler.js.map +1 -1
  60. package/lib/commonjs/reanimated2/animation/decay.js +7 -18
  61. package/lib/commonjs/reanimated2/animation/decay.js.map +1 -1
  62. package/lib/commonjs/reanimated2/animation/delay.js +0 -11
  63. package/lib/commonjs/reanimated2/animation/delay.js.map +1 -1
  64. package/lib/commonjs/reanimated2/animation/index.js +0 -8
  65. package/lib/commonjs/reanimated2/animation/index.js.map +1 -1
  66. package/lib/commonjs/reanimated2/animation/repeat.js +6 -22
  67. package/lib/commonjs/reanimated2/animation/repeat.js.map +1 -1
  68. package/lib/commonjs/reanimated2/animation/sequence.js +3 -20
  69. package/lib/commonjs/reanimated2/animation/sequence.js.map +1 -1
  70. package/lib/commonjs/reanimated2/animation/spring.js +11 -23
  71. package/lib/commonjs/reanimated2/animation/spring.js.map +1 -1
  72. package/lib/commonjs/reanimated2/animation/styleAnimation.js +3 -35
  73. package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
  74. package/lib/commonjs/reanimated2/animation/timing.js +0 -11
  75. package/lib/commonjs/reanimated2/animation/timing.js.map +1 -1
  76. package/lib/commonjs/reanimated2/animation/util.js +11 -41
  77. package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
  78. package/lib/commonjs/reanimated2/commonTypes.js +16 -23
  79. package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
  80. package/lib/commonjs/reanimated2/component/FlatList.js +0 -16
  81. package/lib/commonjs/reanimated2/component/FlatList.js.map +1 -1
  82. package/lib/commonjs/reanimated2/component/Image.js +0 -4
  83. package/lib/commonjs/reanimated2/component/Image.js.map +1 -1
  84. package/lib/commonjs/reanimated2/component/ScrollView.js +0 -4
  85. package/lib/commonjs/reanimated2/component/ScrollView.js.map +1 -1
  86. package/lib/commonjs/reanimated2/component/Text.js +0 -4
  87. package/lib/commonjs/reanimated2/component/Text.js.map +1 -1
  88. package/lib/commonjs/reanimated2/component/View.js +0 -4
  89. package/lib/commonjs/reanimated2/component/View.js.map +1 -1
  90. package/lib/commonjs/reanimated2/core.js +6 -48
  91. package/lib/commonjs/reanimated2/core.js.map +1 -1
  92. package/lib/commonjs/reanimated2/errors.js +3 -14
  93. package/lib/commonjs/reanimated2/errors.js.map +1 -1
  94. package/lib/commonjs/reanimated2/fabricUtils.js +3 -5
  95. package/lib/commonjs/reanimated2/fabricUtils.js.map +1 -1
  96. package/lib/commonjs/reanimated2/fabricUtils.web.js +1 -3
  97. package/lib/commonjs/reanimated2/fabricUtils.web.js.map +1 -1
  98. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -12
  99. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  100. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -17
  101. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  102. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  103. package/lib/commonjs/reanimated2/hook/Hooks.js +0 -5
  104. package/lib/commonjs/reanimated2/hook/Hooks.js.map +1 -1
  105. package/lib/commonjs/reanimated2/hook/commonTypes.js.map +1 -1
  106. package/lib/commonjs/reanimated2/hook/index.js +0 -12
  107. package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
  108. package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js +4 -17
  109. package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  110. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +2 -9
  111. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  112. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +1 -11
  113. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  114. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +0 -12
  115. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
  116. package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js +2 -9
  117. package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  118. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +8 -23
  119. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  120. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +13 -71
  121. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  122. package/lib/commonjs/reanimated2/hook/useDerivedValue.js +4 -13
  123. package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
  124. package/lib/commonjs/reanimated2/hook/useFrameCallback.js +0 -5
  125. package/lib/commonjs/reanimated2/hook/useFrameCallback.js.map +1 -1
  126. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +0 -7
  127. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  128. package/lib/commonjs/reanimated2/hook/useSharedValue.js +2 -7
  129. package/lib/commonjs/reanimated2/hook/useSharedValue.js.map +1 -1
  130. package/lib/commonjs/reanimated2/hook/utils.js +8 -39
  131. package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
  132. package/lib/commonjs/reanimated2/index.js +0 -26
  133. package/lib/commonjs/reanimated2/index.js.map +1 -1
  134. package/lib/commonjs/reanimated2/initializers.js +21 -43
  135. package/lib/commonjs/reanimated2/initializers.js.map +1 -1
  136. package/lib/commonjs/reanimated2/interpolateColor.js +6 -43
  137. package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
  138. package/lib/commonjs/reanimated2/interpolation.js +14 -29
  139. package/lib/commonjs/reanimated2/interpolation.js.map +1 -1
  140. package/lib/commonjs/reanimated2/jestUtils.js +11 -44
  141. package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
  142. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +15 -39
  143. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  144. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +9 -28
  145. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
  146. package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js +7 -37
  147. package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
  148. package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js +5 -18
  149. package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js.map +1 -1
  150. package/lib/commonjs/reanimated2/js-reanimated/global.js +2 -9
  151. package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
  152. package/lib/commonjs/reanimated2/js-reanimated/index.js +3 -14
  153. package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
  154. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -26
  155. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  156. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -49
  157. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  158. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -43
  159. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  160. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +4 -5
  161. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  162. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +0 -4
  163. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  164. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +4 -23
  165. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  166. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -74
  167. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  168. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -53
  169. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  170. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -63
  171. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  172. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -26
  173. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  174. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -13
  175. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  176. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -23
  177. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  178. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -43
  179. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  180. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -43
  181. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  182. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -23
  183. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  184. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -83
  185. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  186. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js +0 -20
  187. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  188. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -22
  189. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  190. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -29
  191. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  192. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -9
  193. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  194. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -11
  195. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  196. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -8
  197. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  198. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -12
  199. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  200. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js +0 -12
  201. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  202. package/lib/commonjs/reanimated2/layoutReanimation/index.js +0 -9
  203. package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
  204. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -17
  205. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  206. package/lib/commonjs/reanimated2/mappers.js +26 -32
  207. package/lib/commonjs/reanimated2/mappers.js.map +1 -1
  208. package/lib/commonjs/reanimated2/mock.js +5 -15
  209. package/lib/commonjs/reanimated2/mock.js.map +1 -1
  210. package/lib/commonjs/reanimated2/mutables.js +2 -28
  211. package/lib/commonjs/reanimated2/mutables.js.map +1 -1
  212. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js +0 -2
  213. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  214. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  215. package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js +31 -0
  216. package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
  217. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +0 -2
  218. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
  219. package/lib/commonjs/reanimated2/platform-specific/jsVersion.js +14 -0
  220. package/lib/commonjs/reanimated2/platform-specific/jsVersion.js.map +1 -0
  221. package/lib/commonjs/reanimated2/pluginUtils.js +0 -1
  222. package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -1
  223. package/lib/commonjs/reanimated2/shareables.js +92 -49
  224. package/lib/commonjs/reanimated2/shareables.js.map +1 -1
  225. package/lib/commonjs/reanimated2/threads.js +42 -46
  226. package/lib/commonjs/reanimated2/threads.js.map +1 -1
  227. package/lib/commonjs/reanimated2/utils.js +0 -5
  228. package/lib/commonjs/reanimated2/utils.js.map +1 -1
  229. package/lib/commonjs/reanimated2/valueSetter.js +6 -21
  230. package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
  231. package/lib/commonjs/setAndForwardRef.js +3 -3
  232. package/lib/commonjs/setAndForwardRef.js.map +1 -1
  233. package/lib/module/Animated.js.map +1 -1
  234. package/lib/module/ConfigHelper.js +9 -15
  235. package/lib/module/ConfigHelper.js.map +1 -1
  236. package/lib/module/createAnimatedComponent.js +20 -139
  237. package/lib/module/createAnimatedComponent.js.map +1 -1
  238. package/lib/module/index.js +0 -2
  239. package/lib/module/index.js.map +1 -1
  240. package/lib/module/index.web.js.map +1 -1
  241. package/lib/module/reanimated2/Bezier.js +14 -33
  242. package/lib/module/reanimated2/Bezier.js.map +1 -1
  243. package/lib/module/reanimated2/Colors.js +59 -109
  244. package/lib/module/reanimated2/Colors.js.map +1 -1
  245. package/lib/module/reanimated2/Easing.js +37 -33
  246. package/lib/module/reanimated2/Easing.js.map +1 -1
  247. package/lib/module/reanimated2/NativeMethods.js +8 -15
  248. package/lib/module/reanimated2/NativeMethods.js.map +1 -1
  249. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +5 -27
  250. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  251. package/lib/module/reanimated2/NativeReanimated/index.js +0 -2
  252. package/lib/module/reanimated2/NativeReanimated/index.js.map +1 -1
  253. package/lib/module/reanimated2/PlatformChecker.js.map +1 -1
  254. package/lib/module/reanimated2/PropAdapters.js +12 -10
  255. package/lib/module/reanimated2/PropAdapters.js.map +1 -1
  256. package/lib/module/reanimated2/UpdateProps.js +3 -5
  257. package/lib/module/reanimated2/UpdateProps.js.map +1 -1
  258. package/lib/module/reanimated2/ViewDescriptorsSet.js +0 -6
  259. package/lib/module/reanimated2/ViewDescriptorsSet.js.map +1 -1
  260. package/lib/module/reanimated2/WorkletEventHandler.js +5 -18
  261. package/lib/module/reanimated2/WorkletEventHandler.js.map +1 -1
  262. package/lib/module/reanimated2/animation/decay.js +7 -15
  263. package/lib/module/reanimated2/animation/decay.js.map +1 -1
  264. package/lib/module/reanimated2/animation/delay.js +0 -9
  265. package/lib/module/reanimated2/animation/delay.js.map +1 -1
  266. package/lib/module/reanimated2/animation/index.js.map +1 -1
  267. package/lib/module/reanimated2/animation/repeat.js +6 -20
  268. package/lib/module/reanimated2/animation/repeat.js.map +1 -1
  269. package/lib/module/reanimated2/animation/sequence.js +3 -18
  270. package/lib/module/reanimated2/animation/sequence.js.map +1 -1
  271. package/lib/module/reanimated2/animation/spring.js +11 -21
  272. package/lib/module/reanimated2/animation/spring.js.map +1 -1
  273. package/lib/module/reanimated2/animation/styleAnimation.js +7 -31
  274. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  275. package/lib/module/reanimated2/animation/timing.js +0 -8
  276. package/lib/module/reanimated2/animation/timing.js.map +1 -1
  277. package/lib/module/reanimated2/animation/util.js +10 -33
  278. package/lib/module/reanimated2/animation/util.js.map +1 -1
  279. package/lib/module/reanimated2/commonTypes.js +12 -19
  280. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  281. package/lib/module/reanimated2/component/FlatList.js +0 -4
  282. package/lib/module/reanimated2/component/FlatList.js.map +1 -1
  283. package/lib/module/reanimated2/component/Image.js.map +1 -1
  284. package/lib/module/reanimated2/component/ScrollView.js.map +1 -1
  285. package/lib/module/reanimated2/component/Text.js.map +1 -1
  286. package/lib/module/reanimated2/component/View.js.map +1 -1
  287. package/lib/module/reanimated2/core.js +6 -22
  288. package/lib/module/reanimated2/core.js.map +1 -1
  289. package/lib/module/reanimated2/errors.js +3 -13
  290. package/lib/module/reanimated2/errors.js.map +1 -1
  291. package/lib/module/reanimated2/fabricUtils.js +3 -3
  292. package/lib/module/reanimated2/fabricUtils.js.map +1 -1
  293. package/lib/module/reanimated2/fabricUtils.web.js +1 -1
  294. package/lib/module/reanimated2/fabricUtils.web.js.map +1 -1
  295. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -8
  296. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  297. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -15
  298. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  299. package/lib/module/reanimated2/globals.d.js.map +1 -1
  300. package/lib/module/reanimated2/hook/Hooks.js +3 -2
  301. package/lib/module/reanimated2/hook/Hooks.js.map +1 -1
  302. package/lib/module/reanimated2/hook/commonTypes.js.map +1 -1
  303. package/lib/module/reanimated2/hook/index.js.map +1 -1
  304. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js +3 -14
  305. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  306. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +2 -5
  307. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  308. package/lib/module/reanimated2/hook/useAnimatedReaction.js +1 -7
  309. package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  310. package/lib/module/reanimated2/hook/useAnimatedRef.js +0 -6
  311. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  312. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js +2 -7
  313. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  314. package/lib/module/reanimated2/hook/useAnimatedSensor.js +9 -20
  315. package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  316. package/lib/module/reanimated2/hook/useAnimatedStyle.js +13 -59
  317. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  318. package/lib/module/reanimated2/hook/useDerivedValue.js +4 -8
  319. package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
  320. package/lib/module/reanimated2/hook/useFrameCallback.js.map +1 -1
  321. package/lib/module/reanimated2/hook/useScrollViewOffset.js +0 -1
  322. package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  323. package/lib/module/reanimated2/hook/useSharedValue.js +2 -3
  324. package/lib/module/reanimated2/hook/useSharedValue.js.map +1 -1
  325. package/lib/module/reanimated2/hook/utils.js +8 -21
  326. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  327. package/lib/module/reanimated2/index.js.map +1 -1
  328. package/lib/module/reanimated2/initializers.js +23 -37
  329. package/lib/module/reanimated2/initializers.js.map +1 -1
  330. package/lib/module/reanimated2/interpolateColor.js +5 -34
  331. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  332. package/lib/module/reanimated2/interpolation.js +13 -28
  333. package/lib/module/reanimated2/interpolation.js.map +1 -1
  334. package/lib/module/reanimated2/jestUtils.js +11 -35
  335. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  336. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +15 -35
  337. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  338. package/lib/module/reanimated2/js-reanimated/Mapper.js +9 -23
  339. package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
  340. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js +7 -35
  341. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
  342. package/lib/module/reanimated2/js-reanimated/MutableValue.js +5 -16
  343. package/lib/module/reanimated2/js-reanimated/MutableValue.js.map +1 -1
  344. package/lib/module/reanimated2/js-reanimated/global.js +2 -6
  345. package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
  346. package/lib/module/reanimated2/js-reanimated/index.js +3 -9
  347. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  348. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -23
  349. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  350. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -45
  351. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  352. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -39
  353. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  354. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +3 -3
  355. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  356. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  357. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +4 -19
  358. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  359. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -52
  360. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  361. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -32
  362. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  363. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -38
  364. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  365. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -16
  366. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  367. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -8
  368. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  369. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -14
  370. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  371. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -26
  372. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  373. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -26
  374. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  375. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -14
  376. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  377. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -50
  378. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  379. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  380. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -17
  381. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  382. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -23
  383. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  384. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -5
  385. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  386. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -6
  387. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  388. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -5
  389. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  390. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -8
  391. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  392. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  393. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  394. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -13
  395. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  396. package/lib/module/reanimated2/mappers.js +26 -25
  397. package/lib/module/reanimated2/mappers.js.map +1 -1
  398. package/lib/module/reanimated2/mock.js +5 -15
  399. package/lib/module/reanimated2/mock.js.map +1 -1
  400. package/lib/module/reanimated2/mutables.js +2 -19
  401. package/lib/module/reanimated2/mutables.js.map +1 -1
  402. package/lib/module/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  403. package/lib/module/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  404. package/lib/module/reanimated2/platform-specific/checkCppVersion.js +24 -0
  405. package/lib/module/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
  406. package/lib/module/reanimated2/platform-specific/checkVersion.web.js +0 -1
  407. package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
  408. package/lib/module/reanimated2/platform-specific/jsVersion.js +7 -0
  409. package/lib/module/reanimated2/platform-specific/jsVersion.js.map +1 -0
  410. package/lib/module/reanimated2/pluginUtils.js.map +1 -1
  411. package/lib/module/reanimated2/shareables.js +96 -44
  412. package/lib/module/reanimated2/shareables.js.map +1 -1
  413. package/lib/module/reanimated2/threads.js +39 -33
  414. package/lib/module/reanimated2/threads.js.map +1 -1
  415. package/lib/module/reanimated2/utils.js +0 -3
  416. package/lib/module/reanimated2/utils.js.map +1 -1
  417. package/lib/module/reanimated2/valueSetter.js +6 -19
  418. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  419. package/lib/module/setAndForwardRef.js +3 -2
  420. package/lib/module/setAndForwardRef.js.map +1 -1
  421. package/package.json +46 -40
  422. package/plugin/.eslintrc.js +7 -0
  423. package/plugin/README.md +241 -0
  424. package/plugin/build/plugin.js +714 -0
  425. package/plugin/build/plugin.js.map +7 -0
  426. package/plugin/index.js +1 -807
  427. package/plugin/package.json +23 -0
  428. package/plugin/src/buildWorkletString.ts +213 -0
  429. package/plugin/src/commonObjects.ts +60 -0
  430. package/plugin/src/injectVersion.ts +37 -0
  431. package/plugin/src/makeWorklet.ts +375 -0
  432. package/plugin/src/plugin.ts +49 -0
  433. package/plugin/src/processForCalleesWorklets.ts +106 -0
  434. package/plugin/src/processIfGestureHandlerEventCallbackFunctionNode.ts +156 -0
  435. package/plugin/src/processIfWorkletFunction.ts +55 -0
  436. package/plugin/src/processIfWorkletNode.ts +44 -0
  437. package/plugin/src/processInlineStylesWarning.ts +129 -0
  438. package/plugin/src/processWorkletObjectMethod.ts +31 -0
  439. package/plugin/src/types.ts +15 -0
  440. package/plugin/src/utils.ts +6 -0
  441. package/plugin/tsconfig.json +15 -0
  442. package/plugin/yarn.lock +2193 -0
  443. package/react-native-reanimated.d.ts +1 -0
  444. package/scripts/reanimated_utils.rb +2 -2
  445. package/src/createAnimatedComponent.tsx +2 -3
  446. package/src/reanimated2/Easing.ts +19 -0
  447. package/src/reanimated2/NativeMethods.ts +9 -4
  448. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +2 -2
  449. package/src/reanimated2/UpdateProps.ts +2 -2
  450. package/src/reanimated2/animation/decay.ts +7 -1
  451. package/src/reanimated2/animation/styleAnimation.ts +5 -1
  452. package/src/reanimated2/core.ts +4 -4
  453. package/src/reanimated2/errors.ts +1 -0
  454. package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +12 -4
  455. package/src/reanimated2/globals.d.ts +71 -112
  456. package/src/reanimated2/hook/commonTypes.ts +1 -1
  457. package/src/reanimated2/hook/useAnimatedReaction.ts +2 -2
  458. package/src/reanimated2/hook/useAnimatedSensor.ts +2 -2
  459. package/src/reanimated2/initializers.ts +11 -8
  460. package/src/reanimated2/jestUtils.ts +0 -1
  461. package/src/reanimated2/js-reanimated/JSReanimated.ts +5 -1
  462. package/src/reanimated2/js-reanimated/index.ts +1 -1
  463. package/src/reanimated2/mappers.ts +26 -4
  464. package/src/reanimated2/mock.ts +1 -0
  465. package/src/reanimated2/platform-specific/checkCppVersion.ts +29 -0
  466. package/src/reanimated2/platform-specific/jsVersion.ts +6 -0
  467. package/src/reanimated2/shareables.ts +107 -8
  468. package/src/reanimated2/threads.ts +36 -17
  469. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +0 -42
  470. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +0 -1
  471. package/lib/module/reanimated2/platform-specific/checkVersion.js +0 -35
  472. package/lib/module/reanimated2/platform-specific/checkVersion.js.map +0 -1
  473. package/src/reanimated2/platform-specific/checkVersion.ts +0 -39
@@ -847,6 +847,7 @@ declare module 'react-native-reanimated' {
847
847
  x2: number,
848
848
  y2: number
849
849
  ): Animated.EasingFunction;
850
+ steps(n?: number, roundToNextStep?: boolean): Animated.EasingFunction;
850
851
  in(easing: Animated.EasingFunction): Animated.EasingFunction;
851
852
  out(easing: Animated.EasingFunction): Animated.EasingFunction;
852
853
  inOut(easing: Animated.EasingFunction): Animated.EasingFunction;
@@ -85,7 +85,7 @@ def assert_latest_react_native_with_new_architecture(config, reanimated_package_
85
85
  reanimated_major_version = reanimated_version.split('.')[0].to_i
86
86
  react_native_minor_version = config[:react_native_minor_version]
87
87
  fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
88
- if fabric_enabled && reanimated_major_version == 3 && react_native_minor_version < 71
89
- raise "[react-native-reanimated] Reanimated " + reanimated_version + " supports the New Architecture only on the latest minor release of React Native. Please upgrade to React Native 0.71.0+ or downgrade to an older version of Reanimated v3"
88
+ if fabric_enabled && reanimated_major_version == 3 && react_native_minor_version < 72
89
+ raise "[react-native-reanimated] Reanimated " + reanimated_version + " supports the New Architecture only on the latest minor release of React Native. Please upgrade to React Native 0.72.0+ or downgrade to an older version of Reanimated v3"
90
90
  end
91
91
  end
@@ -246,8 +246,7 @@ export default function createAnimatedComponent(
246
246
  invariant(
247
247
  typeof Component !== 'function' ||
248
248
  (Component.prototype && Component.prototype.isReactComponent),
249
- '`createAnimatedComponent` does not support stateless functional components; ' +
250
- 'use a class component instead.'
249
+ `Looks like you're passing a function component \`${Component.name}\` to \`createAnimatedComponent\` function which supports only class components. Please wrap your function component with \`React.forwardRef()\` or use a class component instead.`
251
250
  );
252
251
 
253
252
  class AnimatedComponent extends React.Component<
@@ -337,7 +336,7 @@ export default function createAnimatedComponent(
337
336
  const viewTag = this._viewTag;
338
337
  runOnUI(() => {
339
338
  'worklet';
340
- _removeShadowNodeFromRegistry(viewTag);
339
+ _removeShadowNodeFromRegistry!(viewTag);
341
340
  })();
342
341
  }
343
342
  }
@@ -264,6 +264,24 @@ function inOut(easing: EasingFn): EasingFn {
264
264
  };
265
265
  }
266
266
 
267
+ /**
268
+ * The `steps` easing function jumps between discrete values at regular intervals,
269
+ * creating a stepped animation effect. The `n` parameter determines the number of
270
+ * steps in the animation, and the `roundToNextStep` parameter determines whether the animation
271
+ * should start at the beginning or end of each step.
272
+ */
273
+ function steps(n = 10, roundToNextStep = true): EasingFn {
274
+ 'worklet';
275
+ return (t) => {
276
+ 'worklet';
277
+ const value = Math.min(Math.max(t, 0), 1) * n;
278
+ if (roundToNextStep) {
279
+ return Math.ceil(value) / n;
280
+ }
281
+ return Math.floor(value) / n;
282
+ };
283
+ }
284
+
267
285
  const EasingObject = {
268
286
  linear,
269
287
  ease,
@@ -278,6 +296,7 @@ const EasingObject = {
278
296
  bounce,
279
297
  bezier,
280
298
  bezierFn,
299
+ steps,
281
300
  in: in_,
282
301
  out,
283
302
  inOut,
@@ -1,7 +1,7 @@
1
1
  /* global _WORKLET _measure _scrollTo _dispatchCommand _setGestureState */
2
2
  import { Component } from 'react';
3
3
  import { findNodeHandle } from 'react-native';
4
- import { MeasuredDimensions } from './commonTypes';
4
+ import { MeasuredDimensions, ShadowNodeWrapper } from './commonTypes';
5
5
  import { RefObjectFunction } from './hook/commonTypes';
6
6
  import { isChromeDebugger, isWeb, shouldBeUseWeb } from './PlatformChecker';
7
7
 
@@ -89,8 +89,11 @@ export function dispatchCommand(
89
89
  if (!_WORKLET || !isNative) {
90
90
  return;
91
91
  }
92
- const shadowNodeWrapper = animatedRef();
93
- _dispatchCommand(shadowNodeWrapper, commandName, args);
92
+
93
+ // dispatchCommand works only on Fabric where animatedRef returns
94
+ // an object (ShadowNodeWrapper) and not a number
95
+ const shadowNodeWrapper = animatedRef() as ShadowNodeWrapper;
96
+ _dispatchCommand!(shadowNodeWrapper, commandName, args);
94
97
  }
95
98
 
96
99
  export let scrollTo: (
@@ -133,7 +136,9 @@ if (isWeb()) {
133
136
  if (!_WORKLET) {
134
137
  return;
135
138
  }
136
- const viewTag = animatedRef();
139
+
140
+ // Calling animatedRef on Paper returns a number (nativeTag)
141
+ const viewTag = animatedRef() as number;
137
142
  _scrollTo(viewTag, x, y, animated);
138
143
  };
139
144
  } else {
@@ -9,7 +9,7 @@ import {
9
9
  LayoutAnimationFunction,
10
10
  LayoutAnimationType,
11
11
  } from '../layoutReanimation';
12
- import { checkVersion } from '../platform-specific/checkVersion';
12
+ import { checkCppVersion } from '../platform-specific/checkCppVersion';
13
13
 
14
14
  export class NativeReanimated {
15
15
  native: boolean;
@@ -32,7 +32,7 @@ export class NativeReanimated {
32
32
  );
33
33
  return;
34
34
  }
35
- checkVersion();
35
+ checkCppVersion();
36
36
  }
37
37
  }
38
38
 
@@ -58,7 +58,7 @@ if (shouldBeUseWeb()) {
58
58
  }
59
59
 
60
60
  viewDescriptors.value.forEach((viewDescriptor) => {
61
- _updatePropsFabric(viewDescriptor.shadowNodeWrapper, updates);
61
+ _updatePropsFabric!(viewDescriptor.shadowNodeWrapper, updates);
62
62
  });
63
63
  };
64
64
  } else {
@@ -75,7 +75,7 @@ if (shouldBeUseWeb()) {
75
75
  }
76
76
  }
77
77
  viewDescriptors.value.forEach((viewDescriptor) => {
78
- _updatePropsPaper(
78
+ _updatePropsPaper!(
79
79
  viewDescriptor.tag,
80
80
  viewDescriptor.name || 'RCTView',
81
81
  updates
@@ -48,7 +48,7 @@ export function withDecay(
48
48
  'worklet';
49
49
  const config: DefaultDecayConfig = {
50
50
  deceleration: 0.998,
51
- velocityFactor: Platform.OS !== 'web' ? 1 : 1000,
51
+ velocityFactor: 1,
52
52
  velocity: 0,
53
53
  rubberBandFactor: 0.6,
54
54
  };
@@ -62,6 +62,12 @@ export function withDecay(
62
62
  const VELOCITY_EPS = Platform.OS !== 'web' ? 1 : 1 / 20;
63
63
  const SLOPE_FACTOR = 0.1;
64
64
 
65
+ // @piaskowyk: Velocity is expressed in pixels per second
66
+ // but pixels on Web are handled differently than on native
67
+ if (Platform.OS === 'web') {
68
+ config.velocity *= 1000;
69
+ }
70
+
65
71
  let decay: (animation: InnerDecayAnimation, now: number) => boolean;
66
72
 
67
73
  if (config.rubberBandEffect) {
@@ -24,7 +24,11 @@ export function resolvePath<T>(
24
24
  return keys.reduce<NestedObjectValues<T> | undefined>((acc, current) => {
25
25
  if (Array.isArray(acc) && typeof current === 'number') {
26
26
  return acc[current];
27
- } else if (typeof acc === 'object' && (current as number | string) in acc) {
27
+ } else if (
28
+ acc !== null &&
29
+ typeof acc === 'object' &&
30
+ (current as number | string) in acc
31
+ ) {
28
32
  return (acc as { [key: string]: NestedObjectValues<T> })[
29
33
  current as number | string
30
34
  ];
@@ -117,7 +117,7 @@ export function registerEventHandler<T>(
117
117
  eventHash: string,
118
118
  eventHandler: (event: T) => void
119
119
  ): string {
120
- function handleAndFlushImmediates(eventTimestamp: number, event: T) {
120
+ function handleAndFlushAnimationFrame(eventTimestamp: number, event: T) {
121
121
  'worklet';
122
122
  global.__frameTimestamp = eventTimestamp;
123
123
  eventHandler(event);
@@ -126,7 +126,7 @@ export function registerEventHandler<T>(
126
126
  }
127
127
  return NativeReanimatedModule.registerEventHandler(
128
128
  eventHash,
129
- makeShareableCloneRecursive(handleAndFlushImmediates)
129
+ makeShareableCloneRecursive(handleAndFlushAnimationFrame)
130
130
  );
131
131
  }
132
132
 
@@ -140,7 +140,7 @@ export function subscribeForKeyboardEvents(
140
140
  ): number {
141
141
  // TODO: this should really go with the same code path as other events, that is
142
142
  // via registerEventHandler. For now we are copying the code from there.
143
- function handleAndFlushImmediates(state: number, height: number) {
143
+ function handleAndFlushAnimationFrame(state: number, height: number) {
144
144
  'worklet';
145
145
  const now = performance.now();
146
146
  global.__frameTimestamp = now;
@@ -149,7 +149,7 @@ export function subscribeForKeyboardEvents(
149
149
  global.__frameTimestamp = undefined;
150
150
  }
151
151
  return NativeReanimatedModule.subscribeForKeyboardEvents(
152
- makeShareableCloneRecursive(handleAndFlushImmediates),
152
+ makeShareableCloneRecursive(handleAndFlushAnimationFrame),
153
153
  options.isStatusBarTranslucentAndroid ?? false
154
154
  );
155
155
  }
@@ -53,5 +53,6 @@ export function reportFatalErrorOnJS({
53
53
  error.name = 'ReanimatedError';
54
54
  // @ts-ignore React Native's ErrorUtils implementation extends the Error type with jsEngine field
55
55
  error.jsEngine = 'reanimated';
56
+ // @ts-ignore the reportFatalError method is an internal method of ErrorUtils not exposed in the type definitions
56
57
  global.ErrorUtils.reportFatalError(error);
57
58
  }
@@ -15,7 +15,8 @@ export interface FrameCallbackRegistryUI {
15
15
  frameCallbackRegistry: Map<number, CallbackDetails>;
16
16
  activeFrameCallbacks: Set<number>;
17
17
  previousFrameTimestamp: number | null;
18
- runCallbacks: () => void;
18
+ runCallbacks: (callId: number) => void;
19
+ nextCallId: number;
19
20
  registerFrameCallback: (
20
21
  callback: (frameInfo: FrameInfo) => void,
21
22
  callbackId: number
@@ -31,9 +32,13 @@ export const prepareUIRegistry = runOnUIImmediately(() => {
31
32
  frameCallbackRegistry: new Map<number, CallbackDetails>(),
32
33
  activeFrameCallbacks: new Set<number>(),
33
34
  previousFrameTimestamp: null,
35
+ nextCallId: 0,
34
36
 
35
- runCallbacks() {
37
+ runCallbacks(callId) {
36
38
  const loop = (timestamp: number) => {
39
+ if (callId !== this.nextCallId) {
40
+ return;
41
+ }
37
42
  if (this.previousFrameTimestamp === null) {
38
43
  this.previousFrameTimestamp = timestamp;
39
44
  }
@@ -75,7 +80,7 @@ export const prepareUIRegistry = runOnUIImmediately(() => {
75
80
  // runCallback() should only be called after registering a callback,
76
81
  // so if there is only one active callback, then it means that there were
77
82
  // zero previously and the loop isn't running yet.
78
- if (this.activeFrameCallbacks.size === 1) {
83
+ if (this.activeFrameCallbacks.size === 1 && callId === this.nextCallId) {
79
84
  requestAnimationFrame(loop);
80
85
  }
81
86
  },
@@ -101,12 +106,15 @@ export const prepareUIRegistry = runOnUIImmediately(() => {
101
106
  }
102
107
  if (state) {
103
108
  this.activeFrameCallbacks.add(callbackId);
104
- this.runCallbacks();
109
+ this.runCallbacks(this.nextCallId);
105
110
  } else {
106
111
  const callback = this.frameCallbackRegistry.get(callbackId)!;
107
112
  callback.startTime = null;
108
113
 
109
114
  this.activeFrameCallbacks.delete(callbackId);
115
+ if (this.activeFrameCallbacks.size === 0) {
116
+ this.nextCallId += 1;
117
+ }
110
118
  }
111
119
  },
112
120
  };
@@ -1,3 +1,4 @@
1
+ /* eslint-disable no-var */
1
2
  import type {
2
3
  AnimatedStyle,
3
4
  StyleProps,
@@ -5,139 +6,97 @@ import type {
5
6
  MapperRegistry,
6
7
  ShareableRef,
7
8
  ShareableSyncDataHolderRef,
9
+ ShadowNodeWrapper,
8
10
  } from './commonTypes';
9
11
  import type { FrameCallbackRegistryUI } from './frameCallback/FrameCallbackRegistryUI';
10
- import type { ShadowNodeWrapper } from './hook/commonTypes';
11
- import { LayoutAnimationStartFunction } from './layoutReanimation';
12
12
  import type { NativeReanimated } from './NativeReanimated/NativeReanimated';
13
+ import type {
14
+ LayoutAnimationFunction,
15
+ LayoutAnimationType,
16
+ LayoutAnimationsValues,
17
+ } from './layoutReanimation/animationBuilder';
13
18
 
14
19
  declare global {
15
- const _WORKLET: boolean;
16
- const _IS_FABRIC: boolean;
17
- const _REANIMATED_VERSION_CPP: string;
18
- const __reanimatedModuleProxy: NativeReanimated;
19
- const evalWithSourceMap: (
20
- js: string,
21
- sourceURL: string,
22
- sourceMap: string
23
- ) => any;
24
- const evalWithSourceUrl: (js: string, sourceURL: string) => any;
25
- const _log: (s: string) => void;
26
- const _getCurrentTime: () => number;
27
- const _notifyAboutProgress: (
20
+ var _WORKLET: boolean | undefined;
21
+ var _IS_FABRIC: boolean | undefined;
22
+ var _REANIMATED_VERSION_CPP: string | undefined;
23
+ var _REANIMATED_VERSION_BABEL_PLUGIN: string | undefined;
24
+ var __reanimatedModuleProxy: NativeReanimated | undefined;
25
+ var evalWithSourceMap:
26
+ | ((
27
+ js: string,
28
+ sourceURL: string,
29
+ sourceMap: string
30
+ // eslint-ignore-next-line @typescript-eslint/no-explicit-any
31
+ ) => any)
32
+ | undefined;
33
+ // eslint-ignore-next-line @typescript-eslint/no-explicit-any
34
+ var evalWithSourceUrl: ((js: string, sourceURL: string) => any) | undefined;
35
+ var _log: (s: string) => void;
36
+ var _notifyAboutProgress: (
28
37
  tag: number,
29
38
  value: number,
30
39
  isSharedTransition: boolean
31
40
  ) => void;
32
- const _notifyAboutEnd: (
41
+ var _notifyAboutEnd: (
33
42
  tag: number,
34
43
  finished: boolean,
35
44
  removeView: boolean
36
45
  ) => void;
37
- const _setGestureState: (handlerTag: number, newState: number) => void;
38
- const _makeShareableClone: (value: any) => any;
39
- const _updateDataSynchronously: (
46
+ var _setGestureState: (handlerTag: number, newState: number) => void;
47
+ // eslint-ignore-next-line @typescript-eslint/no-explicit-any
48
+ var _makeShareableClone: (value: any) => any;
49
+ var _updateDataSynchronously: (
40
50
  dataHolder: ShareableSyncDataHolderRef,
41
51
  data: ShareableRef
42
52
  ) => void;
43
- const _scheduleOnJS: (fun: ShareableRef, args?: ShareableRef) => void;
44
- const _updatePropsPaper: (
45
- tag: number,
46
- name: string,
47
- updates: StyleProps | AnimatedStyle
48
- ) => void;
49
- const _updatePropsFabric: (
50
- shadowNodeWrapper: ShadowNodeWrapper,
51
- props: StyleProps | AnimatedStyle
52
- ) => void;
53
- const _removeShadowNodeFromRegistry: (viewTag: number) => void;
54
- const _measure: (viewTag: number) => MeasuredDimensions;
55
- const _scrollTo: (
53
+ var _scheduleOnJS: (fun: ShareableRef, args?: ShareableRef) => void;
54
+ var _updatePropsPaper:
55
+ | ((tag: number, name: string, updates: StyleProps | AnimatedStyle) => void)
56
+ | undefined;
57
+ var _updatePropsFabric:
58
+ | ((
59
+ shadowNodeWrapper: ShadowNodeWrapper,
60
+ props: StyleProps | AnimatedStyle
61
+ ) => void)
62
+ | undefined;
63
+ var _removeShadowNodeFromRegistry: ((viewTag: number) => void) | undefined;
64
+ var _measure: (viewTag: number | ShadowNodeWrapper) => MeasuredDimensions;
65
+ var _scrollTo: (
56
66
  viewTag: number,
57
67
  x: number,
58
68
  y: number,
59
69
  animated: boolean
60
70
  ) => void;
61
- const _dispatchCommand: (
62
- shadowNodeWrapper: ShadowNodeWrapper,
63
- commandName: string,
64
- args: Array<unknown>
65
- ) => void;
66
- const performance: { now: () => number };
67
- const ReanimatedDataMock: {
68
- now: () => number;
69
- };
70
- const ErrorUtils: {
71
- reportFatalError: (error: Error) => void;
72
- };
73
- const _frameCallbackRegistry: FrameCallbackRegistryUI;
74
- const requestAnimationFrame: (callback: (time: number) => void) => number;
75
- const setImmediate: (callback: (time: number) => void) => number;
76
- const console: Console;
77
-
78
- namespace NodeJS {
79
- interface Global {
80
- _WORKLET: boolean;
81
- _IS_FABRIC: boolean;
82
- _REANIMATED_VERSION_CPP: string;
83
- __reanimatedModuleProxy: NativeReanimated;
84
- __frameTimestamp?: number;
85
- evalWithSourceMap: (
86
- js: string,
87
- sourceURL: string,
88
- sourceMap: string
89
- ) => any;
90
- evalWithSourceUrl: (js: string, sourceURL: string) => any;
91
- _log: (s: string) => void;
92
- _getCurrentTime: () => number;
93
- _setGestureState: (handlerTag: number, newState: number) => void;
94
- _makeShareableClone: (value: any) => any;
95
- _updateDataSynchronously: (
96
- ShareableSyncDataHolderRef,
97
- ShareableRef
98
- ) => void;
99
- _scheduleOnJS: (fun: ShareableRef, args?: ShareableRef) => void;
100
- _updatePropsPaper: (
101
- tag: number,
102
- name: string,
103
- updates: StyleProps | AnimatedStyle
104
- ) => void;
105
- _updatePropsFabric: (
106
- shadowNodeWrapper: ShadowNodeWrapper,
107
- props: StyleProps | AnimatedStyle
108
- ) => void;
109
- _removeShadowNodeFromRegistry: (viewTag: number) => void;
110
- _measure: (viewTag: number) => MeasuredDimensions;
111
- _scrollTo: (
112
- viewTag: number,
113
- x: number,
114
- y: number,
115
- animated: boolean
116
- ) => void;
117
- _dispatchCommand: (
118
- shadowNodeWrapper: ShadowNodeWrapper,
71
+ var _dispatchCommand:
72
+ | ((
73
+ nodeRef: ShadowNodeWrapper,
119
74
  commandName: string,
120
75
  args: Array<unknown>
121
- ) => void;
122
- performance: { now: () => number };
123
- LayoutAnimationsManager: {
124
- start: LayoutAnimationStartFunction;
125
- };
126
- ReanimatedDataMock: {
127
- now: () => number;
128
- };
129
- ErrorUtils: {
130
- reportFatalError: (error: Error) => void;
131
- };
132
- _frameCallbackRegistry: FrameCallbackRegistryUI;
133
- __workletsCache?: Map<string, (...args: any[]) => any>;
134
- __handleCache?: WeakMap<any, any>;
135
- __mapperRegistry?: MapperRegistry;
136
- __flushImmediates: () => void;
137
- __flushAnimationFrame: (frameTimestamp: number) => void;
138
- requestAnimationFrame: (callback: (time: number) => void) => number;
139
- setImmediate: (callback: (time: number) => void) => number;
140
- console: Console;
141
- }
142
- }
76
+ ) => void)
77
+ | undefined;
78
+ var performance: { now: () => number };
79
+ var __ErrorUtils: {
80
+ reportFatalError: (error: Error) => void;
81
+ };
82
+ var _frameCallbackRegistry: FrameCallbackRegistryUI;
83
+ var requestAnimationFrame: (callback: (time: number) => void) => number;
84
+ var console: Console;
85
+ var __frameTimestamp: number | undefined;
86
+ var __flushAnimationFrame: (timestamp: number) => void;
87
+ // eslint-ignore-next-line @typescript-eslint/no-explicit-any
88
+ var __workletsCache: Map<string, any>;
89
+ // eslint-ignore-next-line @typescript-eslint/no-explicit-any
90
+ var __handleCache: WeakMap<object, any>;
91
+ var __callMicrotasks: () => void;
92
+ var __mapperRegistry: MapperRegistry;
93
+ var _maybeFlushUIUpdatesQueue: () => void;
94
+ var LayoutAnimationsManager: {
95
+ start(
96
+ tag: number,
97
+ type: LayoutAnimationType,
98
+ yogaValues: LayoutAnimationsValues,
99
+ config: LayoutAnimationFunction
100
+ );
101
+ };
143
102
  }
@@ -15,5 +15,5 @@ export interface Descriptor {
15
15
 
16
16
  export interface RefObjectFunction<T> {
17
17
  current: T | null;
18
- (component?: T): number;
18
+ (component?: T): number | ShadowNodeWrapper;
19
19
  }
@@ -32,8 +32,8 @@ export function useAnimatedReaction<T>(
32
32
 
33
33
  if (dependencies === undefined) {
34
34
  dependencies = [
35
- Object.values(prepare._closure ?? {}),
36
- Object.values(react._closure ?? {}),
35
+ ...Object.values(prepare._closure ?? {}),
36
+ ...Object.values(react._closure ?? {}),
37
37
  prepare.__workletHash,
38
38
  react.__workletHash,
39
39
  ];
@@ -7,7 +7,7 @@ import {
7
7
  ValueRotation,
8
8
  IOSReferenceFrame,
9
9
  } from '../commonTypes';
10
- import { flushImmediates } from '../threads';
10
+ import { callMicrotasks } from '../threads';
11
11
 
12
12
  export type SensorConfig = {
13
13
  interval: number | 'auto';
@@ -145,7 +145,7 @@ export function useAnimatedSensor(
145
145
  }
146
146
  }
147
147
  sensorData.value = data;
148
- flushImmediates();
148
+ callMicrotasks();
149
149
  }
150
150
  );
151
151
 
@@ -3,8 +3,8 @@ import NativeReanimatedModule from './NativeReanimated';
3
3
  import { isJest } from './PlatformChecker';
4
4
  import {
5
5
  runOnJS,
6
- setupSetImmediate,
7
- flushImmediates,
6
+ setupMicrotasks,
7
+ callMicrotasks,
8
8
  runOnUIImmediately,
9
9
  } from './threads';
10
10
 
@@ -17,8 +17,8 @@ function callGuardDEV<T extends Array<any>, U>(
17
17
  try {
18
18
  fn(...args);
19
19
  } catch (e) {
20
- if (global.ErrorUtils) {
21
- global.ErrorUtils.reportFatalError(e as Error);
20
+ if (global.__ErrorUtils) {
21
+ global.__ErrorUtils.reportFatalError(e as Error);
22
22
  } else {
23
23
  throw e;
24
24
  }
@@ -106,7 +106,7 @@ function setupRequestAnimationFrame() {
106
106
  const currentCallbacks = animationFrameCallbacks;
107
107
  animationFrameCallbacks = [];
108
108
  currentCallbacks.forEach((f) => f(frameTimestamp));
109
- flushImmediates();
109
+ callMicrotasks();
110
110
  };
111
111
 
112
112
  global.requestAnimationFrame = (
@@ -153,11 +153,13 @@ export function initializeUIRuntime() {
153
153
  };
154
154
  }
155
155
 
156
- const capturableConsole = console;
156
+ // We really have to create a copy of console here. Function runOnJS we use on elements inside
157
+ // this object makes it not configurable
158
+ const capturableConsole = { ...console };
157
159
  runOnUIImmediately(() => {
158
160
  'worklet';
159
161
  // setup error handler
160
- global.ErrorUtils = {
162
+ global.__ErrorUtils = {
161
163
  reportFatalError: (error: Error) => {
162
164
  runOnJS(reportFatalErrorOnJS)({
163
165
  message: error.message,
@@ -169,6 +171,7 @@ export function initializeUIRuntime() {
169
171
  // setup console
170
172
  // @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version
171
173
  global.console = {
174
+ assert: runOnJS(capturableConsole.assert),
172
175
  debug: runOnJS(capturableConsole.debug),
173
176
  log: runOnJS(capturableConsole.log),
174
177
  warn: runOnJS(capturableConsole.warn),
@@ -177,7 +180,7 @@ export function initializeUIRuntime() {
177
180
  };
178
181
 
179
182
  if (!IS_JEST) {
180
- setupSetImmediate();
183
+ setupMicrotasks();
181
184
  setupRequestAnimationFrame();
182
185
  }
183
186
  })();
@@ -190,7 +190,6 @@ export const setUpTests = (userConfig = {}) => {
190
190
  }
191
191
  }
192
192
 
193
- require('setimmediate');
194
193
  frameTime = Math.round(1000 / config.fps);
195
194
 
196
195
  config = {
@@ -48,10 +48,14 @@ export default class JSReanimated extends NativeReanimated {
48
48
 
49
49
  enableLayoutAnimations() {
50
50
  console.warn(
51
- '[Reanimated] enableLayoutAnimations is not available for WEB yet'
51
+ '[Reanimated] Layout Animations are not supported on web yet.'
52
52
  );
53
53
  }
54
54
 
55
+ configureLayoutAnimation() {
56
+ // no-op
57
+ }
58
+
55
59
  registerSensor(
56
60
  sensorType: SensorType,
57
61
  interval: number,
@@ -4,7 +4,7 @@ import { AnimatedStyle, StyleProps } from '../commonTypes';
4
4
  const reanimatedJS = new JSReanimated();
5
5
 
6
6
  global._makeShareableClone = (c) => c;
7
- global._scheduleOnJS = setImmediate;
7
+ global._scheduleOnJS = queueMicrotask;
8
8
 
9
9
  interface JSReanimatedComponent {
10
10
  previousStyle: StyleProps;