react-native-reanimated 3.0.0-rc.9 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/Common/cpp/AnimatedSensor/AnimatedSensorModule.cpp +30 -12
  2. package/Common/cpp/AnimatedSensor/AnimatedSensorModule.h +2 -0
  3. package/Common/cpp/Fabric/FabricUtils.cpp +3 -107
  4. package/Common/cpp/Fabric/FabricUtils.h +3 -24
  5. package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +54 -37
  6. package/Common/cpp/LayoutAnimations/LayoutAnimationType.h +8 -0
  7. package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.cpp +81 -26
  8. package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.h +20 -3
  9. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +105 -109
  10. package/Common/cpp/NativeModules/NativeReanimatedModule.h +19 -12
  11. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +15 -7
  12. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +6 -2
  13. package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.cpp +20 -1
  14. package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.h +9 -0
  15. package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.cpp +5 -1
  16. package/Common/cpp/Registries/EventHandlerRegistry.cpp +8 -34
  17. package/Common/cpp/Registries/EventHandlerRegistry.h +7 -13
  18. package/Common/cpp/SharedItems/Shareables.cpp +9 -63
  19. package/Common/cpp/SharedItems/Shareables.h +77 -72
  20. package/Common/cpp/Tools/CollectionUtils.h +14 -0
  21. package/Common/cpp/Tools/JsiUtils.cpp +26 -0
  22. package/Common/cpp/Tools/JsiUtils.h +176 -0
  23. package/Common/cpp/Tools/PlatformDepMethodsHolder.h +5 -5
  24. package/Common/cpp/Tools/ReanimatedVersion.cpp +17 -0
  25. package/Common/cpp/Tools/ReanimatedVersion.h +11 -0
  26. package/Common/cpp/Tools/RuntimeDecorator.cpp +49 -230
  27. package/Common/cpp/Tools/RuntimeDecorator.h +0 -2
  28. package/Common/cpp/Tools/WorkletEventHandler.cpp +3 -2
  29. package/Common/cpp/Tools/WorkletEventHandler.h +14 -6
  30. package/README.md +1 -1
  31. package/RNReanimated.podspec +2 -1
  32. package/android/CMakeLists.txt +188 -181
  33. package/android/build.gradle +362 -311
  34. package/android/proguard-rules.pro +2 -0
  35. package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +63 -295
  36. package/android/src/main/cpp/LayoutAnimations.cpp +35 -5
  37. package/android/src/main/cpp/LayoutAnimations.h +23 -6
  38. package/android/src/main/cpp/NativeProxy.cpp +143 -98
  39. package/android/src/main/cpp/NativeProxy.h +22 -28
  40. package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +5 -4
  41. package/android/src/main/java/com/swmansion/reanimated/Utils.java +7 -1
  42. package/android/src/main/java/com/swmansion/reanimated/keyboardObserver/ReanimatedKeyboardEventListener.java +10 -3
  43. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +218 -35
  44. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +43 -17
  45. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/NativeMethodsHolder.java +6 -2
  46. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedElement.java +19 -0
  47. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedTransitionManager.java +610 -0
  48. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/Snapshot.java +93 -23
  49. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/AnimationFrameCallback.java +19 -0
  50. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/EventHandler.java +35 -0
  51. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/KeyboardEventDataUpdater.java +16 -0
  52. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +206 -0
  53. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/SensorSetter.java +17 -0
  54. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +9 -3
  55. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorContainer.java +3 -4
  56. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorListener.java +31 -7
  57. package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +90 -307
  58. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/70/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +16 -0
  59. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +63 -0
  60. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +271 -0
  61. package/android/src/reactNativeVersionPatch/nativeHierarchyManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +76 -20
  62. package/ios/LayoutReanimation/REAAnimationsManager.h +28 -4
  63. package/ios/LayoutReanimation/REAAnimationsManager.m +216 -61
  64. package/ios/LayoutReanimation/REAFrame.h +10 -0
  65. package/ios/LayoutReanimation/REAFrame.m +15 -0
  66. package/ios/LayoutReanimation/REAScreensHelper.h +19 -0
  67. package/ios/LayoutReanimation/REAScreensHelper.m +106 -0
  68. package/ios/LayoutReanimation/REASharedElement.h +15 -0
  69. package/ios/LayoutReanimation/REASharedElement.m +16 -0
  70. package/ios/LayoutReanimation/REASharedTransitionManager.h +17 -0
  71. package/ios/LayoutReanimation/REASharedTransitionManager.m +632 -0
  72. package/ios/LayoutReanimation/REASnapshot.h +1 -0
  73. package/ios/LayoutReanimation/REASnapshot.m +96 -11
  74. package/ios/LayoutReanimation/REAUIManager.mm +64 -17
  75. package/ios/REAModule.mm +2 -7
  76. package/ios/REANodesManager.mm +1 -21
  77. package/ios/keyboardObserver/REAKeyboardEventObserver.m +72 -36
  78. package/ios/native/NativeProxy.mm +75 -114
  79. package/ios/native/REAInitializer.mm +2 -7
  80. package/ios/native/REAJSIUtils.h +60 -2
  81. package/ios/sensor/ReanimatedSensor.h +6 -2
  82. package/ios/sensor/ReanimatedSensor.m +43 -7
  83. package/ios/sensor/ReanimatedSensorContainer.h +4 -1
  84. package/ios/sensor/ReanimatedSensorContainer.m +8 -2
  85. package/lib/commonjs/createAnimatedComponent.js +244 -28
  86. package/lib/commonjs/createAnimatedComponent.js.map +1 -1
  87. package/lib/commonjs/reanimated2/Colors.js +43 -22
  88. package/lib/commonjs/reanimated2/Colors.js.map +1 -1
  89. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +16 -33
  90. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  91. package/lib/commonjs/reanimated2/animation/styleAnimation.js +5 -1
  92. package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
  93. package/lib/commonjs/reanimated2/animation/util.js +17 -15
  94. package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
  95. package/lib/commonjs/reanimated2/commonTypes.js +33 -1
  96. package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
  97. package/lib/commonjs/reanimated2/core.js +33 -14
  98. package/lib/commonjs/reanimated2/core.js.map +1 -1
  99. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
  100. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  101. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  102. package/lib/commonjs/reanimated2/hook/index.js +0 -6
  103. package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
  104. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +5 -2
  105. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  106. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +13 -1
  107. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  108. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +1 -1
  109. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
  110. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +91 -15
  111. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  112. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +43 -40
  113. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  114. package/lib/commonjs/reanimated2/hook/useDerivedValue.js +13 -1
  115. package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
  116. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +2 -2
  117. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  118. package/lib/commonjs/reanimated2/hook/utils.js +18 -65
  119. package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
  120. package/lib/commonjs/reanimated2/index.js +13 -0
  121. package/lib/commonjs/reanimated2/index.js.map +1 -1
  122. package/lib/commonjs/reanimated2/initializers.js +71 -32
  123. package/lib/commonjs/reanimated2/initializers.js.map +1 -1
  124. package/lib/commonjs/reanimated2/interpolateColor.js +96 -19
  125. package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
  126. package/lib/commonjs/reanimated2/jestUtils.js +1 -1
  127. package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
  128. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +103 -13
  129. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  130. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +22 -0
  131. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
  132. package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js +2 -0
  133. package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js.map +1 -0
  134. package/lib/commonjs/reanimated2/js-reanimated/commonTypes.js.map +1 -1
  135. package/lib/commonjs/reanimated2/js-reanimated/global.js +0 -2
  136. package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
  137. package/lib/commonjs/reanimated2/js-reanimated/index.js +0 -1
  138. package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
  139. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +11 -0
  140. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  141. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +8 -0
  142. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  143. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +22 -9
  144. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  145. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -23
  146. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  147. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -14
  148. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  149. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -14
  150. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  151. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -15
  152. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  153. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -23
  154. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  155. package/lib/commonjs/reanimated2/layoutReanimation/index.js +13 -0
  156. package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
  157. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +94 -0
  158. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
  159. package/lib/commonjs/reanimated2/mappers.js +18 -6
  160. package/lib/commonjs/reanimated2/mappers.js.map +1 -1
  161. package/lib/commonjs/reanimated2/mock.js +20 -1
  162. package/lib/commonjs/reanimated2/mock.js.map +1 -1
  163. package/lib/commonjs/reanimated2/mutables.js +4 -2
  164. package/lib/commonjs/reanimated2/mutables.js.map +1 -1
  165. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +42 -0
  166. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +1 -0
  167. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +15 -0
  168. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
  169. package/lib/commonjs/reanimated2/pluginUtils.js +11 -0
  170. package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -0
  171. package/lib/commonjs/reanimated2/shareables.js +36 -15
  172. package/lib/commonjs/reanimated2/shareables.js.map +1 -1
  173. package/lib/commonjs/reanimated2/threads.js +114 -7
  174. package/lib/commonjs/reanimated2/threads.js.map +1 -1
  175. package/lib/commonjs/reanimated2/utils.js +7 -0
  176. package/lib/commonjs/reanimated2/utils.js.map +1 -1
  177. package/lib/commonjs/reanimated2/valueSetter.js +1 -3
  178. package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
  179. package/lib/module/createAnimatedComponent.js +241 -29
  180. package/lib/module/createAnimatedComponent.js.map +1 -1
  181. package/lib/module/reanimated2/Colors.js +35 -19
  182. package/lib/module/reanimated2/Colors.js.map +1 -1
  183. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +16 -32
  184. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  185. package/lib/module/reanimated2/animation/styleAnimation.js +5 -1
  186. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  187. package/lib/module/reanimated2/animation/util.js +17 -16
  188. package/lib/module/reanimated2/animation/util.js.map +1 -1
  189. package/lib/module/reanimated2/commonTypes.js +29 -0
  190. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  191. package/lib/module/reanimated2/core.js +32 -7
  192. package/lib/module/reanimated2/core.js.map +1 -1
  193. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
  194. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  195. package/lib/module/reanimated2/globals.d.js.map +1 -1
  196. package/lib/module/reanimated2/hook/index.js +1 -1
  197. package/lib/module/reanimated2/hook/index.js.map +1 -1
  198. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +5 -2
  199. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  200. package/lib/module/reanimated2/hook/useAnimatedReaction.js +12 -1
  201. package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  202. package/lib/module/reanimated2/hook/useAnimatedRef.js +2 -2
  203. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  204. package/lib/module/reanimated2/hook/useAnimatedSensor.js +90 -13
  205. package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  206. package/lib/module/reanimated2/hook/useAnimatedStyle.js +46 -43
  207. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  208. package/lib/module/reanimated2/hook/useDerivedValue.js +12 -1
  209. package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
  210. package/lib/module/reanimated2/hook/useScrollViewOffset.js +2 -2
  211. package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  212. package/lib/module/reanimated2/hook/utils.js +17 -60
  213. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  214. package/lib/module/reanimated2/index.js +1 -0
  215. package/lib/module/reanimated2/index.js.map +1 -1
  216. package/lib/module/reanimated2/initializers.js +72 -33
  217. package/lib/module/reanimated2/initializers.js.map +1 -1
  218. package/lib/module/reanimated2/interpolateColor.js +96 -19
  219. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  220. package/lib/module/reanimated2/jestUtils.js +1 -1
  221. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  222. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +103 -13
  223. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  224. package/lib/module/reanimated2/js-reanimated/Mapper.js +21 -0
  225. package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
  226. package/lib/module/reanimated2/js-reanimated/WebSensor.js +2 -0
  227. package/lib/module/reanimated2/js-reanimated/WebSensor.js.map +1 -0
  228. package/lib/module/reanimated2/js-reanimated/commonTypes.js.map +1 -1
  229. package/lib/module/reanimated2/js-reanimated/global.js +0 -2
  230. package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
  231. package/lib/module/reanimated2/js-reanimated/index.js +0 -1
  232. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  233. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +9 -1
  234. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  235. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js +1 -0
  236. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  237. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +20 -8
  238. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  239. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -21
  240. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  241. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -12
  242. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  243. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -12
  244. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  245. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -13
  246. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  247. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -21
  248. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  249. package/lib/module/reanimated2/layoutReanimation/index.js +1 -0
  250. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  251. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +82 -0
  252. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
  253. package/lib/module/reanimated2/mappers.js +16 -6
  254. package/lib/module/reanimated2/mappers.js.map +1 -1
  255. package/lib/module/reanimated2/mock.js +20 -1
  256. package/lib/module/reanimated2/mock.js.map +1 -1
  257. package/lib/module/reanimated2/mutables.js +4 -2
  258. package/lib/module/reanimated2/mutables.js.map +1 -1
  259. package/lib/module/reanimated2/platform-specific/checkVersion.js +35 -0
  260. package/lib/module/reanimated2/platform-specific/checkVersion.js.map +1 -0
  261. package/lib/module/reanimated2/platform-specific/checkVersion.web.js +8 -0
  262. package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
  263. package/lib/module/reanimated2/pluginUtils.js +4 -0
  264. package/lib/module/reanimated2/pluginUtils.js.map +1 -0
  265. package/lib/module/reanimated2/shareables.js +36 -12
  266. package/lib/module/reanimated2/shareables.js.map +1 -1
  267. package/lib/module/reanimated2/threads.js +105 -7
  268. package/lib/module/reanimated2/threads.js.map +1 -1
  269. package/lib/module/reanimated2/utils.js +5 -0
  270. package/lib/module/reanimated2/utils.js.map +1 -1
  271. package/lib/module/reanimated2/valueSetter.js +1 -2
  272. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  273. package/mock.js +1 -211
  274. package/package.json +10 -10
  275. package/{plugin.js → plugin/index.js} +128 -249
  276. package/react-native-reanimated.d.ts +55 -417
  277. package/scripts/reanimated_utils.rb +15 -2
  278. package/src/createAnimatedComponent.tsx +247 -28
  279. package/src/reanimated2/Colors.ts +38 -11
  280. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +52 -39
  281. package/src/reanimated2/animation/styleAnimation.ts +8 -1
  282. package/src/reanimated2/animation/util.ts +29 -16
  283. package/src/reanimated2/commonTypes.ts +28 -1
  284. package/src/reanimated2/core.ts +42 -9
  285. package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +2 -2
  286. package/src/reanimated2/globals.d.ts +12 -15
  287. package/src/reanimated2/hook/index.ts +1 -1
  288. package/src/reanimated2/hook/useAnimatedKeyboard.ts +10 -4
  289. package/src/reanimated2/hook/useAnimatedReaction.ts +12 -5
  290. package/src/reanimated2/hook/useAnimatedRef.ts +1 -4
  291. package/src/reanimated2/hook/useAnimatedSensor.ts +90 -11
  292. package/src/reanimated2/hook/useAnimatedStyle.ts +44 -36
  293. package/src/reanimated2/hook/useDerivedValue.ts +8 -1
  294. package/src/reanimated2/hook/useScrollViewOffset.ts +2 -2
  295. package/src/reanimated2/hook/utils.ts +15 -61
  296. package/src/reanimated2/index.ts +1 -0
  297. package/src/reanimated2/initializers.ts +76 -35
  298. package/src/reanimated2/interpolateColor.ts +104 -20
  299. package/src/reanimated2/jestUtils.ts +1 -1
  300. package/src/reanimated2/js-reanimated/JSReanimated.ts +98 -15
  301. package/src/reanimated2/js-reanimated/Mapper.ts +32 -0
  302. package/src/reanimated2/js-reanimated/WebSensor.ts +34 -0
  303. package/src/reanimated2/js-reanimated/commonTypes.ts +0 -1
  304. package/src/reanimated2/js-reanimated/global.ts +0 -1
  305. package/src/reanimated2/js-reanimated/index.ts +0 -1
  306. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +13 -1
  307. package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +1 -0
  308. package/src/reanimated2/layoutReanimation/animationsManager.ts +20 -9
  309. package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +16 -19
  310. package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +14 -11
  311. package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +21 -11
  312. package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +32 -11
  313. package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +36 -19
  314. package/src/reanimated2/layoutReanimation/index.ts +1 -0
  315. package/src/reanimated2/layoutReanimation/sharedTransitions/index.ts +87 -0
  316. package/src/reanimated2/mappers.ts +17 -6
  317. package/src/reanimated2/mock.ts +25 -2
  318. package/src/reanimated2/mutables.ts +2 -0
  319. package/src/reanimated2/platform-specific/checkVersion.ts +39 -0
  320. package/src/reanimated2/platform-specific/checkVersion.web.ts +6 -0
  321. package/src/reanimated2/pluginUtils.ts +8 -0
  322. package/src/reanimated2/shareables.ts +45 -16
  323. package/src/reanimated2/threads.ts +103 -4
  324. package/src/reanimated2/utils.ts +6 -0
  325. package/src/reanimated2/valueSetter.ts +1 -2
  326. package/lib/commonjs/reanimated2/time.js +0 -55
  327. package/lib/commonjs/reanimated2/time.js.map +0 -1
  328. package/lib/module/reanimated2/time.js +0 -37
  329. package/lib/module/reanimated2/time.js.map +0 -1
  330. package/src/reanimated2/time.ts +0 -30
  331. /package/android/src/{main/java → reactNativeVersionPatch/ReanimatedUIManager/70}/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +0 -0
@@ -0,0 +1,2 @@
1
+ -keep class com.swmansion.reanimated.** { *; }
2
+ -keep class com.facebook.react.turbomodule.** { *; }
@@ -1,328 +1,96 @@
1
1
  package com.swmansion.reanimated;
2
2
 
3
- import android.os.SystemClock;
4
3
  import android.util.Log;
5
- import androidx.annotation.Nullable;
4
+
6
5
  import com.facebook.jni.HybridData;
7
6
  import com.facebook.proguard.annotations.DoNotStrip;
8
- import com.facebook.react.ReactApplication;
9
- import com.facebook.react.bridge.NativeModule;
10
- import com.facebook.react.bridge.queue.MessageQueueThread;
11
7
  import com.facebook.react.bridge.ReactApplicationContext;
12
- import com.facebook.react.bridge.ReadableMap;
13
- import com.facebook.react.bridge.ReadableNativeArray;
14
- import com.facebook.react.bridge.WritableArray;
15
- import com.facebook.react.bridge.WritableMap;
16
- import com.facebook.react.devsupport.interfaces.DevSupportManager;
8
+ import com.facebook.react.bridge.queue.MessageQueueThread;
17
9
  import com.facebook.react.fabric.FabricUIManager;
18
10
  import com.facebook.react.turbomodule.core.CallInvokerHolderImpl;
19
11
  import com.facebook.react.uimanager.UIManagerHelper;
20
- import com.facebook.react.uimanager.UIManagerModule;
21
12
  import com.facebook.react.uimanager.common.UIManagerType;
22
- import com.facebook.react.uimanager.events.RCTEventEmitter;
23
- import com.facebook.soloader.SoLoader;
24
- import com.swmansion.common.GestureHandlerStateManager;
25
- import com.swmansion.reanimated.keyboardObserver.ReanimatedKeyboardEventListener;
26
13
  import com.swmansion.reanimated.layoutReanimation.AnimationsManager;
27
14
  import com.swmansion.reanimated.layoutReanimation.LayoutAnimations;
28
15
  import com.swmansion.reanimated.layoutReanimation.NativeMethodsHolder;
29
- import com.swmansion.reanimated.sensor.ReanimatedSensorContainer;
30
- import com.swmansion.reanimated.sensor.ReanimatedSensorType;
16
+ import com.swmansion.reanimated.nativeProxy.NativeProxyCommon;
17
+
31
18
  import java.lang.ref.WeakReference;
32
- import java.util.ArrayList;
33
19
  import java.util.HashMap;
34
- import java.util.HashSet;
35
- import java.util.Map;
36
- import java.util.Set;
37
-
38
- public class NativeProxy {
39
-
40
- static {
41
- SoLoader.loadLibrary("reanimated");
42
- }
43
-
44
- @DoNotStrip
45
- public static class AnimationFrameCallback implements NodesManager.OnAnimationFrame {
46
-
47
- @DoNotStrip private final HybridData mHybridData;
48
20
 
21
+ public class NativeProxy extends NativeProxyCommon {
49
22
  @DoNotStrip
50
- private AnimationFrameCallback(HybridData hybridData) {
51
- mHybridData = hybridData;
23
+ @SuppressWarnings("unused")
24
+ private final HybridData mHybridData;
25
+
26
+ public NativeProxy(ReactApplicationContext context) {
27
+ super(context);
28
+
29
+ CallInvokerHolderImpl holder =
30
+ (CallInvokerHolderImpl) context.getCatalystInstance().getJSCallInvokerHolder();
31
+
32
+ FabricUIManager fabricUIManager =
33
+ (FabricUIManager) UIManagerHelper.getUIManager(context, UIManagerType.FABRIC);
34
+
35
+ LayoutAnimations LayoutAnimations = new LayoutAnimations(context);
36
+
37
+ mHybridData =
38
+ initHybrid(
39
+ context.getJavaScriptContextHolder().get(),
40
+ holder,
41
+ mScheduler,
42
+ LayoutAnimations,
43
+ fabricUIManager);
44
+ prepareLayoutAnimations(LayoutAnimations);
45
+ ReanimatedMessageQueueThread messageQueueThread = new ReanimatedMessageQueueThread();
46
+ installJSIBindings(messageQueueThread, fabricUIManager);
52
47
  }
53
48
 
54
- @Override
55
- public native void onAnimationFrame(double timestampMs);
56
- }
57
-
58
- @DoNotStrip
59
- public static class EventHandler implements RCTEventEmitter {
49
+ private native HybridData initHybrid(
50
+ long jsContext,
51
+ CallInvokerHolderImpl jsCallInvokerHolder,
52
+ Scheduler scheduler,
53
+ LayoutAnimations LayoutAnimations,
54
+ FabricUIManager fabricUIManager);
60
55
 
61
- @DoNotStrip private final HybridData mHybridData;
62
- private UIManagerModule.CustomEventNamesResolver mCustomEventNamesResolver;
63
-
64
- @DoNotStrip
65
- private EventHandler(HybridData hybridData) {
66
- mHybridData = hybridData;
67
- }
56
+ private native void installJSIBindings(
57
+ MessageQueueThread messageQueueThread,
58
+ FabricUIManager fabricUIManager);
68
59
 
69
- @Override
70
- public void receiveEvent(int targetTag, String eventName, @Nullable WritableMap event) {
71
- String resolvedEventName = mCustomEventNamesResolver.resolveCustomEventName(eventName);
72
- receiveEvent(targetTag + resolvedEventName, event);
73
- }
60
+ public native boolean isAnyHandlerWaitingForEvent(String eventName);
74
61
 
75
- public native void receiveEvent(String eventKey, @Nullable WritableMap event);
62
+ public native void performOperations();
76
63
 
77
64
  @Override
78
- public void receiveTouches(
79
- String eventName, WritableArray touches, WritableArray changedIndices) {
80
- // not interested in processing touch events this way, we process raw events only
81
- }
82
- }
83
-
84
- @DoNotStrip
85
- public static class SensorSetter {
86
-
87
- @DoNotStrip private final HybridData mHybridData;
88
-
89
- @DoNotStrip
90
- private SensorSetter(HybridData hybridData) {
91
- mHybridData = hybridData;
92
- }
93
-
94
- public native void sensorSetter(float[] value);
95
- }
96
-
97
- @DoNotStrip
98
- public static class KeyboardEventDataUpdater {
99
- @DoNotStrip private final HybridData mHybridData;
100
-
101
- @DoNotStrip
102
- private KeyboardEventDataUpdater(HybridData hybridData) {
103
- mHybridData = hybridData;
104
- }
105
-
106
- public native void keyboardEventDataUpdater(int keyboardState, int height);
107
- }
108
-
109
- @DoNotStrip
110
- @SuppressWarnings("unused")
111
- private final HybridData mHybridData;
112
-
113
- private NodesManager mNodesManager;
114
- private final WeakReference<ReactApplicationContext> mContext;
115
- private Scheduler mScheduler = null;
116
- private ReanimatedSensorContainer reanimatedSensorContainer;
117
- private final GestureHandlerStateManager gestureHandlerStateManager;
118
- private ReanimatedKeyboardEventListener reanimatedKeyboardEventListener;
119
- private Long firstUptime = SystemClock.uptimeMillis();
120
- private boolean slowAnimationsEnabled = false;
121
-
122
- public NativeProxy(ReactApplicationContext context) {
123
- CallInvokerHolderImpl holder =
124
- (CallInvokerHolderImpl) context.getCatalystInstance().getJSCallInvokerHolder();
125
- LayoutAnimations LayoutAnimations = new LayoutAnimations(context);
126
- mScheduler = new Scheduler(context);
127
- FabricUIManager fabricUIManager =
128
- (FabricUIManager) UIManagerHelper.getUIManager(context, UIManagerType.FABRIC);
129
-
130
- mHybridData =
131
- initHybrid(
132
- context.getJavaScriptContextHolder().get(),
133
- holder,
134
- mScheduler,
135
- LayoutAnimations,
136
- fabricUIManager);
137
- mContext = new WeakReference<>(context);
138
- prepare(LayoutAnimations);
139
- reanimatedSensorContainer = new ReanimatedSensorContainer(mContext);
140
- reanimatedKeyboardEventListener = new ReanimatedKeyboardEventListener(mContext);
141
- addDevMenuOption();
142
-
143
- GestureHandlerStateManager tempHandlerStateManager;
144
- try {
145
- Class<NativeModule> gestureHandlerModuleClass =
146
- (Class<NativeModule>)
147
- Class.forName("com.swmansion.gesturehandler.react.RNGestureHandlerModule");
148
- tempHandlerStateManager =
149
- (GestureHandlerStateManager) context.getNativeModule(gestureHandlerModuleClass);
150
- } catch (ClassCastException | ClassNotFoundException e) {
151
- tempHandlerStateManager = null;
65
+ protected HybridData getHybridData() {
66
+ return mHybridData;
152
67
  }
153
- gestureHandlerStateManager = tempHandlerStateManager;
154
- }
155
68
 
156
- private native HybridData initHybrid(
157
- long jsContext,
158
- CallInvokerHolderImpl jsCallInvokerHolder,
159
- Scheduler scheduler,
160
- LayoutAnimations LayoutAnimations,
161
- FabricUIManager fabricUIManager);
69
+ public static NativeMethodsHolder createNativeMethodsHolder(LayoutAnimations layoutAnimations) {
70
+ return new NativeMethodsHolder() {
71
+ @Override
72
+ public void startAnimation(int tag, int type, HashMap<String, Object> values) {}
162
73
 
163
- private native void installJSIBindings(
164
- MessageQueueThread messageQueueThread,
165
- FabricUIManager fabricUIManager);
166
-
167
- public native boolean isAnyHandlerWaitingForEvent(String eventName);
168
-
169
- public native void performOperations();
170
-
171
- public Scheduler getScheduler() {
172
- return mScheduler;
173
- }
174
-
175
- private void toggleSlowAnimations() {
176
- slowAnimationsEnabled = !slowAnimationsEnabled;
177
- if (slowAnimationsEnabled) {
178
- firstUptime = SystemClock.uptimeMillis();
179
- }
180
- }
181
-
182
- private void addDevMenuOption() {
183
- // In Expo, `ApplicationContext` is not an instance of `ReactApplication`
184
- if (mContext.get().getApplicationContext() instanceof ReactApplication) {
185
- final DevSupportManager devSupportManager =
186
- ((ReactApplication) mContext.get().getApplicationContext())
187
- .getReactNativeHost()
188
- .getReactInstanceManager()
189
- .getDevSupportManager();
190
-
191
- devSupportManager.addCustomDevOption(
192
- "Toggle slow animations (Reanimated)", this::toggleSlowAnimations);
193
- }
194
- }
195
-
196
- @DoNotStrip
197
- private void requestRender(AnimationFrameCallback callback) {
198
- mNodesManager.postOnAnimation(callback);
199
- }
200
-
201
- @DoNotStrip
202
- private void updateProps(int viewTag, Map<String, Object> props) {
203
- mNodesManager.updateProps(viewTag, props);
204
- }
205
-
206
- @DoNotStrip
207
- private void synchronouslyUpdateUIProps(int viewTag, ReadableMap uiProps) {
208
- mNodesManager.synchronouslyUpdateUIProps(viewTag, uiProps);
209
- }
210
-
211
- @DoNotStrip
212
- private String obtainProp(int viewTag, String propName) {
213
- return mNodesManager.obtainProp(viewTag, propName);
214
- }
215
-
216
- @DoNotStrip
217
- private void scrollTo(int viewTag, double x, double y, boolean animated) {
218
- mNodesManager.scrollTo(viewTag, x, y, animated);
219
- }
220
-
221
- @DoNotStrip
222
- private void setGestureState(int handlerTag, int newState) {
223
- if (gestureHandlerStateManager != null) {
224
- gestureHandlerStateManager.setGestureHandlerState(handlerTag, newState);
225
- }
226
- }
227
-
228
- @DoNotStrip
229
- private long getCurrentTime() {
230
- if (slowAnimationsEnabled) {
231
- final long ANIMATIONS_DRAG_FACTOR = 10;
232
- return this.firstUptime + (SystemClock.uptimeMillis() - this.firstUptime) / ANIMATIONS_DRAG_FACTOR;
233
- } else {
234
- return SystemClock.uptimeMillis();
235
- }
236
- }
237
-
238
- @DoNotStrip
239
- private float[] measure(int viewTag) {
240
- return mNodesManager.measure(viewTag);
241
- }
242
-
243
- @DoNotStrip
244
- private void configureProps(ReadableNativeArray uiProps, ReadableNativeArray nativeProps) {
245
- Set<String> uiPropsSet = convertProps(uiProps);
246
- Set<String> nativePropsSet = convertProps(nativeProps);
247
- mNodesManager.configureProps(uiPropsSet, nativePropsSet);
248
- }
249
-
250
- private Set<String> convertProps(ReadableNativeArray props) {
251
- Set<String> propsSet = new HashSet<>();
252
- ArrayList<Object> propsList = props.toArrayList();
253
- for (int i = 0; i < propsList.size(); i++) {
254
- propsSet.add((String) propsList.get(i));
255
- }
256
- return propsSet;
257
- }
258
-
259
- @DoNotStrip
260
- private void registerEventHandler(EventHandler handler) {
261
- handler.mCustomEventNamesResolver = mNodesManager.getEventNameResolver();
262
- mNodesManager.registerEventHandler(handler);
263
- }
264
-
265
- @DoNotStrip
266
- private int registerSensor(int sensorType, int interval, SensorSetter setter) {
267
- return reanimatedSensorContainer.registerSensor(
268
- ReanimatedSensorType.getInstanceById(sensorType), interval, setter);
269
- }
270
-
271
- @DoNotStrip
272
- private void unregisterSensor(int sensorId) {
273
- reanimatedSensorContainer.unregisterSensor(sensorId);
274
- }
275
-
276
- @DoNotStrip
277
- private int subscribeForKeyboardEvents(KeyboardEventDataUpdater keyboardEventDataUpdater) {
278
- return reanimatedKeyboardEventListener.subscribeForKeyboardEvents(keyboardEventDataUpdater);
279
- }
280
-
281
- @DoNotStrip
282
- private void unsubscribeFromKeyboardEvents(int listenerId) {
283
- reanimatedKeyboardEventListener.unsubscribeFromKeyboardEvents(listenerId);
284
- }
285
-
286
- public void onCatalystInstanceDestroy() {
287
- mScheduler.deactivate();
288
- mHybridData.resetNative();
289
- }
290
-
291
- public void prepare(LayoutAnimations LayoutAnimations) {
292
- if (Utils.isChromeDebugger) {
293
- Log.w("[REANIMATED]", "You can not use LayoutAnimation with enabled Chrome Debugger");
294
- return;
295
- }
296
- mNodesManager = mContext.get().getNativeModule(ReanimatedModule.class).getNodesManager();
297
- FabricUIManager fabricUIManager =
298
- (FabricUIManager) UIManagerHelper.getUIManager(mContext.get(), UIManagerType.FABRIC);
299
- ReanimatedMessageQueueThread messageQueueThread = new ReanimatedMessageQueueThread();
300
- installJSIBindings(messageQueueThread, fabricUIManager);
301
- AnimationsManager animationsManager =
302
- mContext
303
- .get()
304
- .getNativeModule(ReanimatedModule.class)
305
- .getNodesManager()
306
- .getAnimationsManager();
74
+ @Override
75
+ public boolean isLayoutAnimationEnabled() {
76
+ return false;
77
+ }
307
78
 
308
- WeakReference<LayoutAnimations> weakLayoutAnimations = new WeakReference<>(LayoutAnimations);
309
- animationsManager.setNativeMethods(
310
- new NativeMethodsHolder() {
311
- @Override
312
- public void startAnimation(int tag, String type, HashMap<String, Float> values) {}
79
+ @Override
80
+ public int findPrecedingViewTagForTransition(int tag) {
81
+ return -1;
82
+ }
313
83
 
314
- @Override
315
- public boolean isLayoutAnimationEnabled() {
84
+ @Override
85
+ public boolean hasAnimation(int tag, int type) {
316
86
  return false;
317
- }
87
+ }
318
88
 
319
- @Override
320
- public boolean hasAnimation(int tag, String type) {
321
- return false;
322
- }
89
+ @Override
90
+ public void clearAnimationConfig(int tag) {}
323
91
 
324
- @Override
325
- public void clearAnimationConfig(int tag) {}
326
- });
327
- }
92
+ @Override
93
+ public void cancelAnimation(int tag, int type, boolean cancelled, boolean removeView) {}
94
+ };
95
+ }
328
96
  }
@@ -20,19 +20,20 @@ void LayoutAnimations::setAnimationStartingBlock(
20
20
 
21
21
  void LayoutAnimations::startAnimationForTag(
22
22
  int tag,
23
- alias_ref<JString> type,
23
+ int type,
24
24
  alias_ref<JMap<jstring, jstring>> values) {
25
25
  this->animationStartingBlock_(tag, type, values);
26
26
  }
27
27
 
28
28
  void LayoutAnimations::progressLayoutAnimation(
29
29
  int tag,
30
- const jni::local_ref<JNIHelper::PropsMap> &updates) {
30
+ const jni::local_ref<JNIHelper::PropsMap> &updates,
31
+ bool isSharedTransition) {
31
32
  static const auto method =
32
33
  javaPart_->getClass()
33
- ->getMethod<void(int, JMap<JString, JObject>::javaobject)>(
34
+ ->getMethod<void(int, JMap<JString, JObject>::javaobject, bool)>(
34
35
  "progressLayoutAnimation");
35
- method(javaPart_.get(), tag, updates.get());
36
+ method(javaPart_.get(), tag, updates.get(), isSharedTransition);
36
37
  }
37
38
 
38
39
  void LayoutAnimations::endLayoutAnimation(
@@ -50,7 +51,7 @@ void LayoutAnimations::setHasAnimationBlock(
50
51
  this->hasAnimationBlock_ = hasAnimationBlock;
51
52
  }
52
53
 
53
- bool LayoutAnimations::hasAnimationForTag(int tag, std::string type) {
54
+ bool LayoutAnimations::hasAnimationForTag(int tag, int type) {
54
55
  return hasAnimationBlock_(tag, type);
55
56
  }
56
57
 
@@ -63,10 +64,34 @@ void LayoutAnimations::clearAnimationConfigForTag(int tag) {
63
64
  clearAnimationConfigBlock_(tag);
64
65
  }
65
66
 
67
+ void LayoutAnimations::setCancelAnimationForTag(
68
+ CancelAnimationBlock cancelAnimationBlock) {
69
+ this->cancelAnimationBlock_ = cancelAnimationBlock;
70
+ }
71
+
72
+ void LayoutAnimations::cancelAnimationForTag(
73
+ int tag,
74
+ int type,
75
+ jboolean cancelled,
76
+ jboolean removeView) {
77
+ this->cancelAnimationBlock_(tag, type, cancelled, removeView);
78
+ }
79
+
66
80
  bool LayoutAnimations::isLayoutAnimationEnabled() {
67
81
  return FeaturesConfig::isLayoutAnimationEnabled();
68
82
  }
69
83
 
84
+ void LayoutAnimations::setFindPrecedingViewTagForTransition(
85
+ FindPrecedingViewTagForTransitionBlock
86
+ findPrecedingViewTagForTransitionBlock) {
87
+ findPrecedingViewTagForTransitionBlock_ =
88
+ findPrecedingViewTagForTransitionBlock;
89
+ }
90
+
91
+ int LayoutAnimations::findPrecedingViewTagForTransition(int tag) {
92
+ return findPrecedingViewTagForTransitionBlock_(tag);
93
+ }
94
+
70
95
  void LayoutAnimations::registerNatives() {
71
96
  registerHybrid({
72
97
  makeNativeMethod("initHybrid", LayoutAnimations::initHybrid),
@@ -77,9 +102,14 @@ void LayoutAnimations::registerNatives() {
77
102
  makeNativeMethod(
78
103
  "clearAnimationConfigForTag",
79
104
  LayoutAnimations::clearAnimationConfigForTag),
105
+ makeNativeMethod(
106
+ "cancelAnimationForTag", LayoutAnimations::cancelAnimationForTag),
80
107
  makeNativeMethod(
81
108
  "isLayoutAnimationEnabled",
82
109
  LayoutAnimations::isLayoutAnimationEnabled),
110
+ makeNativeMethod(
111
+ "findPrecedingViewTagForTransition",
112
+ LayoutAnimations::findPrecedingViewTagForTransition),
83
113
  });
84
114
  }
85
115
  }; // namespace reanimated
@@ -12,10 +12,13 @@ using namespace facebook::jni;
12
12
  using namespace facebook;
13
13
 
14
14
  class LayoutAnimations : public jni::HybridClass<LayoutAnimations> {
15
- using AnimationStartingBlock = std::function<
16
- void(int, alias_ref<JString>, alias_ref<JMap<jstring, jstring>>)>;
17
- using HasAnimationBlock = std::function<bool(int, const std::string &)>;
15
+ using AnimationStartingBlock =
16
+ std::function<void(int, int, alias_ref<JMap<jstring, jstring>>)>;
17
+ using HasAnimationBlock = std::function<bool(int, int)>;
18
18
  using ClearAnimationConfigBlock = std::function<void(int)>;
19
+ using CancelAnimationBlock =
20
+ std::function<void(int, int, jboolean, jboolean)>;
21
+ using FindPrecedingViewTagForTransitionBlock = std::function<int(int)>;
19
22
 
20
23
  public:
21
24
  static auto constexpr kJavaDescriptor =
@@ -26,21 +29,32 @@ class LayoutAnimations : public jni::HybridClass<LayoutAnimations> {
26
29
 
27
30
  void startAnimationForTag(
28
31
  int tag,
29
- alias_ref<JString> type,
32
+ int type,
30
33
  alias_ref<JMap<jstring, jstring>> values);
31
- bool hasAnimationForTag(int tag, std::string type);
34
+ bool hasAnimationForTag(int tag, int type);
32
35
  bool isLayoutAnimationEnabled();
33
36
 
34
37
  void setAnimationStartingBlock(AnimationStartingBlock animationStartingBlock);
35
38
  void setHasAnimationBlock(HasAnimationBlock hasAnimationBlock);
36
39
  void setClearAnimationConfigBlock(
37
40
  ClearAnimationConfigBlock clearAnimationConfigBlock);
41
+ void setCancelAnimationForTag(CancelAnimationBlock cancelAnimationBlock);
42
+ void setFindPrecedingViewTagForTransition(
43
+ FindPrecedingViewTagForTransitionBlock
44
+ findPrecedingViewTagForTransitionBlock);
38
45
 
39
46
  void progressLayoutAnimation(
40
47
  int tag,
41
- const jni::local_ref<JNIHelper::PropsMap> &updates);
48
+ const jni::local_ref<JNIHelper::PropsMap> &updates,
49
+ bool isSharedTransition);
42
50
  void endLayoutAnimation(int tag, bool cancelled, bool removeView);
43
51
  void clearAnimationConfigForTag(int tag);
52
+ void cancelAnimationForTag(
53
+ int tag,
54
+ int type,
55
+ jboolean cancelled,
56
+ jboolean removeView);
57
+ int findPrecedingViewTagForTransition(int tag);
44
58
 
45
59
  private:
46
60
  friend HybridBase;
@@ -48,6 +62,9 @@ class LayoutAnimations : public jni::HybridClass<LayoutAnimations> {
48
62
  AnimationStartingBlock animationStartingBlock_;
49
63
  HasAnimationBlock hasAnimationBlock_;
50
64
  ClearAnimationConfigBlock clearAnimationConfigBlock_;
65
+ CancelAnimationBlock cancelAnimationBlock_;
66
+ FindPrecedingViewTagForTransitionBlock
67
+ findPrecedingViewTagForTransitionBlock_;
51
68
 
52
69
  explicit LayoutAnimations(
53
70
  jni::alias_ref<LayoutAnimations::jhybridobject> jThis);