react-native-reanimated 2.3.0-beta.3 → 2.4.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 (247) hide show
  1. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +9 -0
  2. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +13 -0
  3. package/Common/cpp/Tools/FeaturesConfig.cpp +5 -0
  4. package/Common/cpp/Tools/RuntimeDecorator.cpp +38 -2
  5. package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +3 -0
  6. package/Common/cpp/headers/NativeModules/NativeReanimatedModuleSpec.h +5 -0
  7. package/Common/cpp/headers/Tools/FeaturesConfig.h +19 -0
  8. package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +2 -0
  9. package/Common/cpp/headers/Tools/RuntimeDecorator.h +8 -7
  10. package/README.md +1 -1
  11. package/RNReanimated.podspec +20 -3
  12. package/android/build.gradle +31 -5
  13. package/android/expo/linking.gradle +46 -0
  14. package/android/expo/src/main/java/com/swmansion/reanimated/EXReanimatedAdapter.java +12 -0
  15. package/android/expo/src/main/java/expo/modules/adapters/reanimated/EXReanimatedPackage.java +26 -0
  16. package/android/react-native-reanimated-63-hermes.aar +0 -0
  17. package/android/react-native-reanimated-63-jsc.aar +0 -0
  18. package/android/react-native-reanimated-64-hermes.aar +0 -0
  19. package/android/react-native-reanimated-64-jsc.aar +0 -0
  20. package/android/react-native-reanimated-65-hermes.aar +0 -0
  21. package/android/react-native-reanimated-65-jsc.aar +0 -0
  22. package/android/react-native-reanimated-66-hermes.aar +0 -0
  23. package/android/react-native-reanimated-66-jsc.aar +0 -0
  24. package/android/react-native-reanimated-67-hermes.aar +0 -0
  25. package/android/react-native-reanimated-67-jsc.aar +0 -0
  26. package/expo-module.config.json +3 -0
  27. package/ios/LayoutReanimation/REAAnimationsManager.h +1 -1
  28. package/ios/LayoutReanimation/REAAnimationsManager.m +68 -19
  29. package/ios/LayoutReanimation/REAUIManager.mm +63 -18
  30. package/ios/Nodes/REAPropsNode.m +1 -1
  31. package/ios/REAEventDispatcher.m +1 -1
  32. package/ios/REAModule.h +0 -2
  33. package/ios/REAModule.m +0 -3
  34. package/ios/REANodesManager.m +1 -0
  35. package/ios/RNGestureHandlerStateManager.h +5 -0
  36. package/ios/native/NativeMethods.h +5 -0
  37. package/ios/native/NativeMethods.mm +8 -1
  38. package/ios/native/NativeProxy.h +1 -0
  39. package/ios/native/NativeProxy.mm +19 -3
  40. package/ios/native/REAInitializer.mm +7 -3
  41. package/lib/src/Animated.js +31 -0
  42. package/lib/{ConfigHelper.js → src/ConfigHelper.js} +0 -0
  43. package/lib/{ReanimatedEventEmitter.js → src/ReanimatedEventEmitter.js} +0 -0
  44. package/lib/{ReanimatedModule.js → src/ReanimatedModule.js} +0 -0
  45. package/lib/{ReanimatedModule.macos.js → src/ReanimatedModule.macos.js} +0 -0
  46. package/lib/{ReanimatedModule.native.js → src/ReanimatedModule.native.js} +0 -0
  47. package/lib/{ReanimatedModule.windows.js → src/ReanimatedModule.windows.js} +0 -0
  48. package/lib/{ReanimatedModuleCompat.js → src/ReanimatedModuleCompat.js} +0 -0
  49. package/lib/{__mocks__ → src/__mocks__}/ReanimatedEventEmitter.js +0 -0
  50. package/lib/{__mocks__ → src/__mocks__}/ReanimatedModule.native.js +0 -0
  51. package/lib/{createAnimatedComponent.js → src/createAnimatedComponent.js} +55 -37
  52. package/lib/src/index.js +31 -0
  53. package/lib/{reanimated1 → src/reanimated1}/Easing.js +0 -0
  54. package/lib/{reanimated1 → src/reanimated1}/SpringConfig.js +0 -0
  55. package/lib/{reanimated1 → src/reanimated1}/Transitioning.js +0 -0
  56. package/lib/{reanimated1 → src/reanimated1}/animations/Animation.js +0 -0
  57. package/lib/{reanimated1 → src/reanimated1}/animations/SpringUtils.js +0 -0
  58. package/lib/{reanimated1 → src/reanimated1}/animations/backwardCompatibleAnimWrapper.js +0 -0
  59. package/lib/{reanimated1 → src/reanimated1}/animations/decay.js +0 -0
  60. package/lib/{reanimated1 → src/reanimated1}/animations/spring.js +0 -0
  61. package/lib/{reanimated1 → src/reanimated1}/animations/timing.js +0 -0
  62. package/lib/{reanimated1 → src/reanimated1}/base.js +0 -0
  63. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedAlways.js +0 -0
  64. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedBezier.js +0 -0
  65. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedBlock.js +0 -0
  66. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedCall.js +0 -0
  67. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedCallFunc.js +0 -0
  68. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedClock.js +0 -0
  69. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedClockTest.js +0 -0
  70. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedCode.js +0 -0
  71. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedConcat.js +0 -0
  72. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedCond.js +0 -0
  73. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedDebug.js +0 -0
  74. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedEvent.js +0 -0
  75. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedFunction.js +0 -0
  76. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedNode.js +0 -0
  77. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedOperator.js +0 -0
  78. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedParam.js +0 -0
  79. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedProps.js +0 -0
  80. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedSet.js +0 -0
  81. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedStartClock.js +0 -0
  82. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedStopClock.js +0 -0
  83. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedStyle.js +0 -0
  84. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedTransform.js +0 -0
  85. package/lib/{reanimated1 → src/reanimated1}/core/AnimatedValue.js +0 -0
  86. package/lib/{reanimated1 → src/reanimated1}/core/Core.test.js +1 -1
  87. package/lib/{reanimated1 → src/reanimated1}/core/InternalAnimatedValue.js +0 -0
  88. package/lib/{reanimated1 → src/reanimated1}/core/__mocks__/AnimatedProps.js +0 -0
  89. package/lib/{reanimated1 → src/reanimated1}/core/createEventObjectProxyPolyfill.js +0 -0
  90. package/lib/{reanimated1 → src/reanimated1}/derived/__mocks__/evaluateOnce.js +0 -0
  91. package/lib/{reanimated1 → src/reanimated1}/derived/acc.js +0 -0
  92. package/lib/{reanimated1 → src/reanimated1}/derived/color.js +0 -0
  93. package/lib/{reanimated1 → src/reanimated1}/derived/diff.js +0 -0
  94. package/lib/{reanimated1 → src/reanimated1}/derived/diffClamp.js +0 -0
  95. package/lib/{reanimated1 → src/reanimated1}/derived/evaluateOnce.js +0 -0
  96. package/lib/{reanimated1 → src/reanimated1}/derived/index.js +0 -0
  97. package/lib/{reanimated1 → src/reanimated1}/derived/interpolate.js +0 -0
  98. package/lib/{reanimated1 → src/reanimated1}/derived/interpolateColors.js +0 -0
  99. package/lib/{reanimated1 → src/reanimated1}/derived/onChange.js +0 -0
  100. package/lib/{reanimated1 → src/reanimated1}/derived/useCode.js +0 -0
  101. package/lib/{reanimated1 → src/reanimated1}/index.js +0 -0
  102. package/lib/{reanimated1 → src/reanimated1}/operators.js +0 -0
  103. package/lib/{reanimated1 → src/reanimated1}/useValue.js +0 -0
  104. package/lib/{reanimated1 → src/reanimated1}/val.js +0 -0
  105. package/lib/{reanimated2 → src/reanimated2}/Bezier.js +0 -0
  106. package/lib/{reanimated2 → src/reanimated2}/Colors.js +1 -97
  107. package/lib/{reanimated2 → src/reanimated2}/Easing.js +5 -0
  108. package/lib/src/reanimated2/NativeMethods.js +42 -0
  109. package/lib/{reanimated2 → src/reanimated2}/NativeReanimated/NativeReanimated.js +3 -0
  110. package/lib/{reanimated2 → src/reanimated2}/NativeReanimated/index.js +2 -2
  111. package/lib/{reanimated2 → src/reanimated2}/PlatformChecker.js +0 -0
  112. package/lib/{reanimated2 → src/reanimated2}/PropAdapters.js +0 -0
  113. package/lib/{reanimated2 → src/reanimated2}/UpdateProps.js +1 -1
  114. package/lib/{reanimated2 → src/reanimated2}/ViewDescriptorsSet.js +4 -2
  115. package/lib/{reanimated2 → src/reanimated2}/WorkletEventHandler.js +0 -0
  116. package/lib/{reanimated2 → src/reanimated2}/__mocks__/MutableValue.js +0 -0
  117. package/lib/{reanimated2 → src/reanimated2}/__mocks__/NativeReanimated.js +0 -0
  118. package/lib/{reanimated2 → src/reanimated2}/__mocks__/NativeReanimated.native.js +0 -0
  119. package/lib/{reanimated2 → src/reanimated2}/animation/commonTypes.js +0 -0
  120. package/lib/{reanimated2 → src/reanimated2}/animation/decay.js +0 -0
  121. package/lib/{reanimated2 → src/reanimated2}/animation/delay.js +0 -0
  122. package/lib/{reanimated2 → src/reanimated2}/animation/index.js +0 -0
  123. package/lib/{reanimated2 → src/reanimated2}/animation/repeat.js +0 -0
  124. package/lib/{reanimated2 → src/reanimated2}/animation/sequence.js +0 -0
  125. package/lib/{reanimated2 → src/reanimated2}/animation/spring.js +0 -0
  126. package/lib/{reanimated2 → src/reanimated2}/animation/styleAnimation.js +5 -0
  127. package/lib/{reanimated2 → src/reanimated2}/animation/timing.js +0 -0
  128. package/lib/{reanimated2 → src/reanimated2}/animation/util.js +0 -0
  129. package/lib/{reanimated2 → src/reanimated2}/commonTypes.js +0 -0
  130. package/lib/src/reanimated2/component/FlatList.js +30 -0
  131. package/lib/src/reanimated2/component/WrappedComponents.js +9 -0
  132. package/lib/src/reanimated2/component/index.js +4 -0
  133. package/lib/{reanimated2 → src/reanimated2}/core.js +27 -3
  134. package/lib/{reanimated2 → src/reanimated2}/globals.d.ts +5 -0
  135. package/lib/{reanimated2 → src/reanimated2}/hook/Hooks.js +0 -0
  136. package/lib/{reanimated2 → src/reanimated2}/hook/commonTypes.js +0 -0
  137. package/lib/{reanimated2 → src/reanimated2}/hook/index.js +0 -0
  138. package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedGestureHandler.js +1 -2
  139. package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedReaction.js +0 -0
  140. package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedRef.js +0 -0
  141. package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedScrollHandler.js +0 -0
  142. package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedStyle.js +31 -14
  143. package/lib/{reanimated2 → src/reanimated2}/hook/useDerivedValue.js +0 -0
  144. package/lib/{reanimated2 → src/reanimated2}/hook/useSharedValue.js +0 -0
  145. package/lib/{reanimated2 → src/reanimated2}/hook/utils.js +14 -11
  146. package/lib/{reanimated2 → src/reanimated2}/index.js +2 -0
  147. package/lib/src/reanimated2/interpolateColor.js +98 -0
  148. package/lib/{reanimated2 → src/reanimated2}/interpolation.js +0 -0
  149. package/lib/{reanimated2 → src/reanimated2}/jestUtils.js +0 -0
  150. package/lib/{reanimated2 → src/reanimated2}/js-reanimated/JSReanimated.js +4 -1
  151. package/lib/{reanimated2 → src/reanimated2}/js-reanimated/Mapper.js +4 -1
  152. package/lib/{reanimated2 → src/reanimated2}/js-reanimated/MapperRegistry.js +0 -0
  153. package/lib/{reanimated2 → src/reanimated2}/js-reanimated/MutableValue.js +0 -0
  154. package/lib/{reanimated2/layoutReanimation/animationBuilder → src/reanimated2/js-reanimated}/commonTypes.js +0 -0
  155. package/lib/{reanimated2 → src/reanimated2}/js-reanimated/index.js +3 -0
  156. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/LayoutAnimationRepository.js +14 -5
  157. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +0 -0
  158. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +0 -0
  159. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/animationBuilder/Keyframe.js +0 -0
  160. package/lib/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +1 -0
  161. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/animationBuilder/index.js +0 -0
  162. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Bounce.js +0 -0
  163. package/lib/src/reanimated2/layoutReanimation/defaultAnimations/Default.js +36 -0
  164. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Fade.js +0 -0
  165. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Flip.js +8 -8
  166. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Lightspeed.js +0 -0
  167. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Pinwheel.js +0 -0
  168. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Roll.js +0 -0
  169. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Rotate.js +16 -16
  170. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Slide.js +16 -16
  171. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Stretch.js +0 -0
  172. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Zoom.js +4 -4
  173. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/index.js +0 -0
  174. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/CurvedTransition.js +20 -8
  175. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/EntryExitTransition.js +3 -3
  176. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/FadingTransition.js +8 -8
  177. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/JumpingTransition.js +10 -10
  178. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/LinearTransition.js +8 -8
  179. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/SequencedTransition.js +8 -8
  180. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/index.js +0 -0
  181. package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/index.js +0 -0
  182. package/lib/{reanimated2 → src/reanimated2}/mock.js +0 -0
  183. package/lib/{reanimated2 → src/reanimated2}/platform-specific/RNRenderer.js +0 -0
  184. package/lib/{reanimated2 → src/reanimated2}/platform-specific/RNRenderer.web.js +0 -0
  185. package/lib/{reanimated2 → src/reanimated2}/utils.js +0 -0
  186. package/lib/{setAndForwardRef.js → src/setAndForwardRef.js} +0 -0
  187. package/mock.js +2 -1
  188. package/package.json +7 -4
  189. package/plugin.js +11 -3
  190. package/react-native-reanimated.d.ts +94 -23
  191. package/src/Animated.js +11 -5
  192. package/src/createAnimatedComponent.tsx +86 -43
  193. package/src/reanimated1/core/Core.test.js +1 -1
  194. package/src/reanimated2/Colors.ts +6 -150
  195. package/src/reanimated2/Easing.ts +11 -0
  196. package/src/reanimated2/NativeMethods.ts +31 -6
  197. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +5 -0
  198. package/src/reanimated2/NativeReanimated/index.ts +2 -2
  199. package/src/reanimated2/UpdateProps.ts +1 -1
  200. package/src/reanimated2/ViewDescriptorsSet.ts +6 -2
  201. package/src/reanimated2/animation/commonTypes.ts +44 -40
  202. package/src/reanimated2/animation/decay.ts +1 -1
  203. package/src/reanimated2/animation/delay.ts +2 -16
  204. package/src/reanimated2/animation/index.ts +7 -8
  205. package/src/reanimated2/animation/repeat.ts +2 -12
  206. package/src/reanimated2/animation/sequence.ts +3 -10
  207. package/src/reanimated2/animation/spring.ts +1 -1
  208. package/src/reanimated2/animation/styleAnimation.ts +10 -18
  209. package/src/reanimated2/animation/timing.ts +1 -1
  210. package/src/reanimated2/animation/util.ts +12 -9
  211. package/src/reanimated2/commonTypes.ts +48 -1
  212. package/src/reanimated2/component/FlatList.tsx +44 -0
  213. package/src/reanimated2/component/WrappedComponents.ts +11 -0
  214. package/src/reanimated2/component/index.ts +9 -0
  215. package/src/reanimated2/core.ts +39 -6
  216. package/src/reanimated2/globals.d.ts +5 -0
  217. package/src/reanimated2/hook/commonTypes.ts +5 -0
  218. package/src/reanimated2/hook/useAnimatedGestureHandler.ts +1 -2
  219. package/src/reanimated2/hook/useAnimatedRef.ts +1 -5
  220. package/src/reanimated2/hook/useAnimatedStyle.ts +35 -16
  221. package/src/reanimated2/hook/utils.ts +18 -17
  222. package/src/reanimated2/index.ts +2 -0
  223. package/src/reanimated2/interpolateColor.ts +178 -0
  224. package/src/reanimated2/js-reanimated/JSReanimated.ts +9 -4
  225. package/src/reanimated2/js-reanimated/Mapper.ts +4 -2
  226. package/src/reanimated2/js-reanimated/MapperRegistry.ts +1 -1
  227. package/src/reanimated2/js-reanimated/commonTypes.ts +51 -0
  228. package/src/reanimated2/js-reanimated/index.ts +5 -0
  229. package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.ts +18 -5
  230. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +39 -20
  231. package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +5 -1
  232. package/src/reanimated2/layoutReanimation/defaultAnimations/Default.ts +21 -15
  233. package/src/reanimated2/layoutReanimation/defaultAnimations/Flip.ts +29 -24
  234. package/src/reanimated2/layoutReanimation/defaultAnimations/Rotate.ts +61 -34
  235. package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +49 -34
  236. package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +17 -12
  237. package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +20 -8
  238. package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +15 -11
  239. package/src/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.ts +8 -8
  240. package/src/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.ts +20 -14
  241. package/src/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.ts +14 -8
  242. package/src/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.ts +24 -12
  243. package/src/reanimated2/utils.ts +1 -1
  244. package/lib/Animated.js +0 -25
  245. package/lib/index.js +0 -25
  246. package/lib/reanimated2/NativeMethods.js +0 -25
  247. package/lib/reanimated2/layoutReanimation/defaultAnimations/Default.js +0 -36
@@ -24,16 +24,28 @@ export class CurvedTransition extends BaseAnimationBuilder {
24
24
  'worklet';
25
25
  return {
26
26
  initialValues: {
27
- originX: values.boriginX,
28
- originY: values.boriginY,
29
- width: values.bwidth,
30
- height: values.bheight,
27
+ originX: values.currentOriginX,
28
+ originY: values.currentOriginY,
29
+ width: values.currentWidth,
30
+ height: values.currentHeight,
31
31
  },
32
32
  animations: {
33
- originX: delayFunction(delay, withTiming(values.originX, { duration, easing: easing.easingX })),
34
- originY: delayFunction(delay, withTiming(values.originY, { duration, easing: easing.easingY })),
35
- width: delayFunction(delay, withTiming(values.width, { duration, easing: easing.easingWidth })),
36
- height: delayFunction(delay, withTiming(values.height, { duration, easing: easing.easingHeight })),
33
+ originX: delayFunction(delay, withTiming(values.targetOriginX, {
34
+ duration,
35
+ easing: easing.easingX,
36
+ })),
37
+ originY: delayFunction(delay, withTiming(values.targetOriginY, {
38
+ duration,
39
+ easing: easing.easingY,
40
+ })),
41
+ width: delayFunction(delay, withTiming(values.targetWidth, {
42
+ duration,
43
+ easing: easing.easingWidth,
44
+ })),
45
+ height: delayFunction(delay, withTiming(values.targetHeight, {
46
+ duration,
47
+ easing: easing.easingHeight,
48
+ })),
37
49
  },
38
50
  callback: callback,
39
51
  };
@@ -60,7 +60,7 @@ export class EntryExitTransition extends BaseAnimationBuilder {
60
60
  (_a = animations.transform) === null || _a === void 0 ? void 0 : _a.push({
61
61
  [transformProp]: delayFunction(delay + exitingDuration, withSequence(withTiming(enteringValues.initialValues.transform
62
62
  ? enteringValues.initialValues.transform[index][transformProp]
63
- : 0, { duration: 0 }), value[transformProp])),
63
+ : 0, { duration: exitingDuration }), value[transformProp])),
64
64
  });
65
65
  }
66
66
  });
@@ -96,8 +96,8 @@ export class EntryExitTransition extends BaseAnimationBuilder {
96
96
  return value;
97
97
  }));
98
98
  return {
99
- initialValues: Object.assign(Object.assign({}, exitingValues.initialValues), { originX: values.boriginX, originY: values.boriginY, width: values.bwidth, height: values.bheight, transform: mergedTransform }),
100
- animations: Object.assign({ originX: delayFunction(delay + exitingDuration, withTiming(values.originX, { duration: 0 })), originY: delayFunction(delay + exitingDuration, withTiming(values.originY, { duration: 0 })), width: delayFunction(delay + exitingDuration, withTiming(values.width, { duration: 0 })), height: delayFunction(delay + exitingDuration, withTiming(values.height, { duration: 0 })) }, animations),
99
+ initialValues: Object.assign(Object.assign({}, exitingValues.initialValues), { originX: values.currentOriginX, originY: values.currentOriginY, width: values.currentWidth, height: values.currentHeight, transform: mergedTransform }),
100
+ animations: Object.assign({ originX: delayFunction(delay + exitingDuration, withTiming(values.targetOriginX, { duration: exitingDuration })), originY: delayFunction(delay + exitingDuration, withTiming(values.targetOriginY, { duration: exitingDuration })), width: delayFunction(delay + exitingDuration, withTiming(values.targetWidth, { duration: exitingDuration })), height: delayFunction(delay + exitingDuration, withTiming(values.targetHeight, { duration: exitingDuration })) }, animations),
101
101
  callback: callback,
102
102
  };
103
103
  };
@@ -14,17 +14,17 @@ export class FadingTransition extends BaseAnimationBuilder {
14
14
  return {
15
15
  initialValues: {
16
16
  opacity: 1,
17
- originX: values.boriginX,
18
- originY: values.boriginY,
19
- width: values.bwidth,
20
- height: values.bheight,
17
+ originX: values.currentOriginX,
18
+ originY: values.currentOriginY,
19
+ width: values.currentWidth,
20
+ height: values.currentHeight,
21
21
  },
22
22
  animations: {
23
23
  opacity: delayFunction(delay, withSequence(withTiming(0, { duration: duration }), withTiming(1, { duration: duration }))),
24
- originX: delayFunction(delay + duration, withTiming(values.originX, { duration: 50 })),
25
- originY: delayFunction(delay + duration, withTiming(values.originY, { duration: 50 })),
26
- width: delayFunction(delay + duration, withTiming(values.width, { duration: 50 })),
27
- height: delayFunction(delay + duration, withTiming(values.height, { duration: 50 })),
24
+ originX: delayFunction(delay + duration, withTiming(values.targetOriginX, { duration: 50 })),
25
+ originY: delayFunction(delay + duration, withTiming(values.targetOriginY, { duration: 50 })),
26
+ width: delayFunction(delay + duration, withTiming(values.targetWidth, { duration: 50 })),
27
+ height: delayFunction(delay + duration, withTiming(values.targetHeight, { duration: 50 })),
28
28
  },
29
29
  callback: callback,
30
30
  };
@@ -13,22 +13,22 @@ export class JumpingTransition extends BaseAnimationBuilder {
13
13
  const config = { duration: duration * 2 };
14
14
  return (values) => {
15
15
  'worklet';
16
- const d = Math.max(Math.abs(values.originX - values.boriginX), Math.abs(values.originY - values.boriginY));
16
+ const d = Math.max(Math.abs(values.targetOriginX - values.currentOriginX), Math.abs(values.targetOriginY - values.currentOriginY));
17
17
  return {
18
18
  initialValues: {
19
- originX: values.boriginX,
20
- originY: values.boriginY,
21
- width: values.bwidth,
22
- height: values.bheight,
19
+ originX: values.currentOriginX,
20
+ originY: values.currentOriginY,
21
+ width: values.currentWidth,
22
+ height: values.currentHeight,
23
23
  },
24
24
  animations: {
25
- originX: delayFunction(delay, withTiming(values.originX, config)),
26
- originY: delayFunction(delay, withSequence(withTiming(Math.min(values.originY, values.boriginY) - d, {
25
+ originX: delayFunction(delay, withTiming(values.targetOriginX, config)),
26
+ originY: delayFunction(delay, withSequence(withTiming(Math.min(values.targetOriginY, values.currentOriginY) - d, {
27
27
  duration,
28
28
  easing: Easing.out(Easing.exp),
29
- }), withTiming(values.originY, Object.assign(Object.assign({}, config), { duration, easing: Easing.bounce })))),
30
- width: delayFunction(delay, withTiming(values.width, config)),
31
- height: delayFunction(delay, withTiming(values.height, config)),
29
+ }), withTiming(values.targetOriginY, Object.assign(Object.assign({}, config), { duration, easing: Easing.bounce })))),
30
+ width: delayFunction(delay, withTiming(values.targetWidth, config)),
31
+ height: delayFunction(delay, withTiming(values.targetHeight, config)),
32
32
  },
33
33
  callback: callback,
34
34
  };
@@ -11,16 +11,16 @@ export class LinearTransition extends ComplexAnimationBuilder {
11
11
  'worklet';
12
12
  return {
13
13
  initialValues: {
14
- originX: values.boriginX,
15
- originY: values.boriginY,
16
- width: values.bwidth,
17
- height: values.bheight,
14
+ originX: values.currentOriginX,
15
+ originY: values.currentOriginY,
16
+ width: values.currentWidth,
17
+ height: values.currentHeight,
18
18
  },
19
19
  animations: {
20
- originX: delayFunction(delay, animation(values.originX, config)),
21
- originY: delayFunction(delay, animation(values.originY, config)),
22
- width: delayFunction(delay, animation(values.width, config)),
23
- height: delayFunction(delay, animation(values.height, config)),
20
+ originX: delayFunction(delay, animation(values.targetOriginX, config)),
21
+ originY: delayFunction(delay, animation(values.targetOriginY, config)),
22
+ width: delayFunction(delay, animation(values.targetWidth, config)),
23
+ height: delayFunction(delay, animation(values.targetHeight, config)),
24
24
  },
25
25
  callback: callback,
26
26
  };
@@ -16,16 +16,16 @@ export class SequencedTransition extends BaseAnimationBuilder {
16
16
  'worklet';
17
17
  return {
18
18
  initialValues: {
19
- originX: values.boriginX,
20
- originY: values.boriginY,
21
- width: values.bwidth,
22
- height: values.bheight,
19
+ originX: values.currentOriginX,
20
+ originY: values.currentOriginY,
21
+ width: values.currentWidth,
22
+ height: values.currentHeight,
23
23
  },
24
24
  animations: {
25
- originX: delayFunction(delay, withSequence(withTiming(reverse ? values.boriginX : values.originX, config), withTiming(values.originX, config))),
26
- originY: delayFunction(delay, withSequence(withTiming(reverse ? values.originY : values.boriginY, config), withTiming(values.originY, config))),
27
- width: delayFunction(delay, withSequence(withTiming(reverse ? values.bwidth : values.width, config), withTiming(values.width, config))),
28
- height: delayFunction(delay, withSequence(withTiming(reverse ? values.height : values.bheight, config), withTiming(values.height, config))),
25
+ originX: delayFunction(delay, withSequence(withTiming(reverse ? values.currentOriginX : values.targetOriginX, config), withTiming(values.targetOriginX, config))),
26
+ originY: delayFunction(delay, withSequence(withTiming(reverse ? values.targetOriginY : values.currentOriginY, config), withTiming(values.targetOriginY, config))),
27
+ width: delayFunction(delay, withSequence(withTiming(reverse ? values.currentWidth : values.targetWidth, config), withTiming(values.targetWidth, config))),
28
+ height: delayFunction(delay, withSequence(withTiming(reverse ? values.targetHeight : values.currentHeight, config), withTiming(values.targetHeight, config))),
29
29
  },
30
30
  callback: callback,
31
31
  };
File without changes
File without changes
package/mock.js CHANGED
@@ -86,7 +86,7 @@ function createTransitioningComponent(Component) {
86
86
  }
87
87
 
88
88
  render() {
89
- return <Component {...this.props} />;
89
+ return React.createElement(Component, this.props);
90
90
  }
91
91
  };
92
92
  }
@@ -209,6 +209,7 @@ const Reanimated = {
209
209
  },
210
210
  diff: NOOP,
211
211
  diffClamp: NOOP,
212
+ interpolate: NOOP,
212
213
  interpolateNode: NOOP,
213
214
  interpolateColors: NOOP,
214
215
  max: (a, b) => Math.max(getValue(a), getValue(b)),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-reanimated",
3
- "version": "2.3.0-beta.3",
3
+ "version": "2.4.0",
4
4
  "description": "More powerful alternative to Animated library for React Native.",
5
5
  "scripts": {
6
6
  "start": "node node_modules/react-native/local-cli/cli.js start",
@@ -24,7 +24,8 @@
24
24
  "type:generate:tsc": "yarn tsc",
25
25
  "type:generate:remove.ts": "find ./lib -type f -name \"*.ts\" -and -not -name \"*.d.ts\" -delete",
26
26
  "type:generate:remove.tsx": "find ./lib -type f -name \"*.tsx\" -and -not -name \"*.d.ts\" -delete",
27
- "prepare": "husky install"
27
+ "prepare": "husky install",
28
+ "circular_dependency_check": "yarn madge --extensions js,ts,tsx --circular ./src"
28
29
  },
29
30
  "main": "lib/Animated.js",
30
31
  "module": "lib/Animated",
@@ -48,6 +49,7 @@
48
49
  "react-native-reanimated.d.ts",
49
50
  "mock.js",
50
51
  "plugin.js",
52
+ "expo-module.config.json",
51
53
  "!__snapshots__",
52
54
  "!*.test.js",
53
55
  "!*.test.js.map"
@@ -113,9 +115,10 @@
113
115
  "husky": "^7.0.0",
114
116
  "jest": "^26.6.3",
115
117
  "lint-staged": "^11.2.0",
118
+ "madge": "^5.0.1",
116
119
  "prettier": "^2.2.1",
117
120
  "react": "17.0.2",
118
- "react-native": "0.66.0",
121
+ "react-native": "0.67.2",
119
122
  "react-native-codegen": "^0.0.7",
120
123
  "react-native-gesture-handler": "^1.6.1",
121
124
  "react-test-renderer": "17.0.2",
@@ -124,7 +127,7 @@
124
127
  },
125
128
  "lint-staged": {
126
129
  "*.(js|ts|tsx)": [
127
- "eslint --ext '.js,.ts,.tsx' src/ --ignore-pattern src/reanimated1 --ignore-pattern react-native-reanimated.d.ts",
130
+ "eslint --ext '.js,.ts,.tsx' src/ --ignore-pattern src/reanimated1 --ignore-pattern react-native-reanimated.d.ts --ignore-pattern docs",
128
131
  "prettier --write"
129
132
  ],
130
133
  "**/*.{h,cpp}": "yarn lint:cpp",
package/plugin.js CHANGED
@@ -69,6 +69,7 @@ const globals = new Set([
69
69
  'global',
70
70
  '_measure',
71
71
  '_scrollTo',
72
+ '_setGestureState',
72
73
  '_getCurrentTime',
73
74
  '_eventTimestamp',
74
75
  '_frameTimestamp',
@@ -145,16 +146,23 @@ const gestureHandlerGestureObjects = new Set([
145
146
  'LongPress',
146
147
  'ForceTouch',
147
148
  'Native',
149
+ 'Manual',
148
150
  'Race',
149
151
  'Simultaneous',
150
152
  'Exclusive',
151
153
  ]);
152
154
 
153
- const gestureHandlerCallbackMethods = new Set([
154
- 'onBegan',
155
+ const gestureHandlerBuilderMethods = new Set([
156
+ 'onBegin',
155
157
  'onStart',
156
158
  'onEnd',
159
+ 'onFinalize',
157
160
  'onUpdate',
161
+ 'onChange',
162
+ 'onTouchesDown',
163
+ 'onTouchesMove',
164
+ 'onTouchesUp',
165
+ 'onTouchesCancelled',
158
166
  ]);
159
167
 
160
168
  class ClosureGenerator {
@@ -652,7 +660,7 @@ function isGestureObjectEventCallbackMethod(t, node) {
652
660
  return (
653
661
  t.isMemberExpression(node) &&
654
662
  t.isIdentifier(node.property) &&
655
- gestureHandlerCallbackMethods.has(node.property.name) &&
663
+ gestureHandlerBuilderMethods.has(node.property.name) &&
656
664
  containsGestureObject(t, node.object)
657
665
  );
658
666
  }
@@ -16,6 +16,7 @@ declare module 'react-native-reanimated' {
16
16
  TextProps,
17
17
  ImageProps,
18
18
  ScrollViewProps,
19
+ FlatListProps,
19
20
  StyleProp,
20
21
  RegisteredStyle,
21
22
  ViewStyle,
@@ -26,6 +27,7 @@ declare module 'react-native-reanimated' {
26
27
  Text as ReactNativeText,
27
28
  Image as ReactNativeImage,
28
29
  ScrollView as ReactNativeScrollView,
30
+ FlatList as ReactNativeFlatList,
29
31
  NativeScrollEvent,
30
32
  NativeSyntheticEvent,
31
33
  ColorValue,
@@ -246,16 +248,31 @@ declare module 'react-native-reanimated' {
246
248
  export class View extends Component<AnimateProps<ViewProps>> {
247
249
  getNode(): ReactNativeView;
248
250
  }
251
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
252
+ export interface View extends ReactNativeView {}
249
253
  export class Text extends Component<AnimateProps<TextProps>> {
250
254
  getNode(): ReactNativeText;
251
255
  }
256
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
257
+ export interface Text extends ReactNativeText {}
252
258
  export class Image extends Component<AnimateProps<ImageProps>> {
253
259
  getNode(): ReactNativeImage;
254
260
  }
261
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
262
+ export interface Image extends ReactNativeImage {}
255
263
  export class ScrollView extends Component<AnimateProps<ScrollViewProps>> {
256
264
  getNode(): ReactNativeScrollView;
257
265
  }
266
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
267
+ export interface ScrollView extends ReactNativeScrollView {}
268
+
258
269
  export class Code extends Component<CodeProps> {}
270
+ export class FlatList<T> extends Component<AnimateProps<FlatListProps<T>>> {
271
+ itemLayoutAnimation: ILayoutAnimationBuilder;
272
+ getNode(): ReactNativeFlatList;
273
+ }
274
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
275
+ export interface FlatList<T> extends ReactNativeView<T> {}
259
276
 
260
277
  type Options<P> = {
261
278
  setNativeProps: (ref: any, props: P) => void;
@@ -451,34 +468,45 @@ declare module 'react-native-reanimated' {
451
468
  animations: AnimateStyle;
452
469
  };
453
470
 
454
- export type EntryExitAnimationsValues = {
455
- originX: number;
456
- originY: number;
457
- width: number;
458
- height: number;
459
- globalOriginX: number;
460
- globalOriginY: number;
461
- };
462
- export type EntryExitAnimationFunction = (
463
- targetValues: EntryExitAnimationsValues
464
- ) => LayoutAnimation;
471
+ export interface EntryAnimationsValues {
472
+ targetOriginX: number;
473
+ targetOriginY: number;
474
+ targetWidth: number;
475
+ targetHeight: number;
476
+ targetGlobalOriginX: number;
477
+ targetGlobalOriginY: number;
478
+ }
479
+
480
+ export interface ExitAnimationsValues {
481
+ currentOriginX: number;
482
+ currentOriginY: number;
483
+ currentWidth: number;
484
+ currentHeight: number;
485
+ currentGlobalOriginX: number;
486
+ currentGlobalOriginY: number;
487
+ }
488
+
489
+ export type EntryExitAnimationFunction =
490
+ | ((targetValues: EntryAnimationsValues) => LayoutAnimation)
491
+ | ((targetValues: ExitAnimationsValues) => LayoutAnimation);
465
492
 
466
493
  export type LayoutAnimationsValues = {
467
- originX: number;
468
- originY: number;
469
- width: number;
470
- height: number;
471
- globalOriginX: number;
472
- globalOriginY: number;
473
- boriginX: number;
474
- boriginY: number;
475
- bwidth: number;
476
- bheight: number;
477
- bglobalOriginX: number;
478
- bglobalOriginY: number;
494
+ currentOriginX: number;
495
+ currentOriginY: number;
496
+ currentWidth: number;
497
+ currentHeight: number;
498
+ currentGlobalOriginX: number;
499
+ currentGlobalOriginY: number;
500
+ targetOriginX: number;
501
+ targetOriginY: number;
502
+ targetWidth: number;
503
+ targetHeight: number;
504
+ targetGlobalOriginX: number;
505
+ targetGlobalOriginY: number;
479
506
  windowWidth: number;
480
507
  windowHeight: number;
481
508
  };
509
+
482
510
  export type LayoutAnimationFunction = (
483
511
  targetValues: LayoutAnimationsValues
484
512
  ) => LayoutAnimation;
@@ -594,6 +622,42 @@ declare module 'react-native-reanimated' {
594
622
  colorSpace?: 'RGB' | 'HSV'
595
623
  ): string | number;
596
624
 
625
+ export enum ColorSpace {
626
+ RGB = 0,
627
+ HSV = 1,
628
+ }
629
+
630
+ export interface InterpolateRGB {
631
+ r: number[];
632
+ g: number[];
633
+ b: number[];
634
+ a: number[];
635
+ }
636
+
637
+ export interface InterpolateHSV {
638
+ h: number[];
639
+ s: number[];
640
+ v: number[];
641
+ }
642
+
643
+ export interface InterpolateConfig {
644
+ inputRange: readonly number[];
645
+ outputRange: readonly (string | number)[];
646
+ colorSpace: ColorSpace;
647
+ cache: SharedValue<InterpolateRGB | InterpolateHSV | null>;
648
+ }
649
+
650
+ export function useInterpolateConfig(
651
+ inputRange: readonly number[],
652
+ outputRange: readonly (string | number)[],
653
+ colorSpace?: ColorSpace
654
+ ): SharedValue<InterpolateConfig>;
655
+
656
+ export function interpolateSharableColor(
657
+ value: number,
658
+ interpolateConfig: SharedValue<InterpolateConfig>
659
+ ): string | number;
660
+
597
661
  export function makeMutable<T>(initialValue: T): SharedValue<T>;
598
662
 
599
663
  type DependencyList = ReadonlyArray<any>;
@@ -965,6 +1029,12 @@ declare module 'react-native-reanimated' {
965
1029
  y1: number,
966
1030
  x2: number,
967
1031
  y2: number
1032
+ ): { factory: () => Animated.EasingFunction };
1033
+ bezierFn(
1034
+ x1: number,
1035
+ y1: number,
1036
+ x2: number,
1037
+ y2: number
968
1038
  ): Animated.EasingFunction;
969
1039
  in(easing: Animated.EasingFunction): Animated.EasingFunction;
970
1040
  out(easing: Animated.EasingFunction): Animated.EasingFunction;
@@ -1071,4 +1141,5 @@ declare module 'react-native-reanimated' {
1071
1141
  export const SpringUtils: typeof Animated.SpringUtils;
1072
1142
  export const useValue: typeof Animated.useValue;
1073
1143
  export const ReverseAnimation: typeof Animated.ReverseAnimation;
1144
+ export function enableLayoutAnimations(flag: boolean): void;
1074
1145
  }
package/src/Animated.js CHANGED
@@ -1,17 +1,15 @@
1
- import { Image, ScrollView, Text, View } from 'react-native';
1
+ import { LogBox } from 'react-native';
2
2
  import createAnimatedComponent from './createAnimatedComponent';
3
3
  import {
4
4
  addWhitelistedNativeProps,
5
5
  addWhitelistedUIProps,
6
6
  } from './ConfigHelper';
7
7
  import * as reanimated1 from './reanimated1';
8
+ import ReanimatedComponents from './reanimated2/component';
8
9
 
9
10
  const Animated = {
10
11
  // components
11
- View: createAnimatedComponent(View),
12
- Text: createAnimatedComponent(Text),
13
- Image: createAnimatedComponent(Image),
14
- ScrollView: createAnimatedComponent(ScrollView),
12
+ ...ReanimatedComponents,
15
13
  createAnimatedComponent,
16
14
  // configuration
17
15
  addWhitelistedNativeProps,
@@ -23,3 +21,11 @@ const Animated = {
23
21
  export * from './reanimated2';
24
22
  export * from './reanimated1';
25
23
  export default Animated;
24
+
25
+ // I think we can ignore this message as long as Gesture Handler doesn't
26
+ // try to load the Reanimated module. I figured it should be here instead of
27
+ // RNGH because this prevents the message from being displayed for all
28
+ // versions of RNGH.
29
+ LogBox.ignoreLogs([
30
+ 'RCTBridge required dispatch_sync to load RNGestureHandlerModule. This may lead to deadlocks',
31
+ ]);