react-native-reanimated 2.16.0 → 2.17.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 (287) hide show
  1. package/android/.gradle/7.5.1/checksums/checksums.lock +0 -0
  2. package/android/.gradle/7.5.1/checksums/md5-checksums.bin +0 -0
  3. package/android/.gradle/7.5.1/checksums/sha1-checksums.bin +0 -0
  4. package/android/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock +0 -0
  5. package/android/.gradle/7.5.1/dependencies-accessors/gc.properties +0 -0
  6. package/android/.gradle/7.5.1/executionHistory/executionHistory.bin +0 -0
  7. package/android/.gradle/7.5.1/executionHistory/executionHistory.lock +0 -0
  8. package/android/.gradle/7.5.1/fileChanges/last-build.bin +0 -0
  9. package/android/.gradle/7.5.1/fileHashes/fileHashes.bin +0 -0
  10. package/android/.gradle/7.5.1/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/7.5.1/fileHashes/resourceHashesCache.bin +0 -0
  12. package/android/.gradle/7.5.1/gc.properties +0 -0
  13. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  14. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  15. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  16. package/android/.gradle/file-system.probe +0 -0
  17. package/android/.gradle/vcs-1/gc.properties +0 -0
  18. package/android/react-native-reanimated-67-hermes.aar +0 -0
  19. package/android/react-native-reanimated-67-jsc.aar +0 -0
  20. package/android/react-native-reanimated-68-hermes.aar +0 -0
  21. package/android/react-native-reanimated-68-jsc.aar +0 -0
  22. package/android/react-native-reanimated-69-hermes.aar +0 -0
  23. package/android/react-native-reanimated-69-jsc.aar +0 -0
  24. package/android/react-native-reanimated-70-hermes.aar +0 -0
  25. package/android/react-native-reanimated-70-jsc.aar +0 -0
  26. package/android/react-native-reanimated-71-hermes.aar +0 -0
  27. package/android/react-native-reanimated-71-jsc.aar +0 -0
  28. package/lib/Animated.js +9 -0
  29. package/lib/ConfigHelper.js +145 -0
  30. package/lib/ReanimatedEventEmitter.js +3 -0
  31. package/lib/ReanimatedModule.js +2 -0
  32. package/lib/ReanimatedModule.macos.js +2 -0
  33. package/lib/ReanimatedModule.native.js +12 -0
  34. package/lib/ReanimatedModule.windows.js +2 -0
  35. package/lib/ReanimatedModuleCompat.js +66 -0
  36. package/lib/__mocks__/ReanimatedEventEmitter.js +8 -0
  37. package/lib/__mocks__/ReanimatedModule.native.js +11 -0
  38. package/lib/createAnimatedComponent.js +518 -0
  39. package/lib/index.js +14 -0
  40. package/lib/index.web.js +6 -0
  41. package/lib/reanimated1/Easing.js +231 -0
  42. package/lib/reanimated1/SpringConfig.js +79 -0
  43. package/lib/reanimated1/Transitioning.js +158 -0
  44. package/lib/reanimated1/animations/Animation.js +32 -0
  45. package/lib/reanimated1/animations/SpringUtils.js +199 -0
  46. package/lib/reanimated1/animations/backwardCompatibleAnimWrapper.js +117 -0
  47. package/lib/reanimated1/animations/decay.js +54 -0
  48. package/lib/reanimated1/animations/spring.js +198 -0
  49. package/lib/reanimated1/animations/timing.js +74 -0
  50. package/lib/reanimated1/base.js +13 -0
  51. package/lib/reanimated1/core/AnimatedAlways.js +33 -0
  52. package/lib/reanimated1/core/AnimatedBezier.js +150 -0
  53. package/lib/reanimated1/core/AnimatedBlock.js +52 -0
  54. package/lib/reanimated1/core/AnimatedCall.js +55 -0
  55. package/lib/reanimated1/core/AnimatedCallFunc.js +72 -0
  56. package/lib/reanimated1/core/AnimatedClock.js +90 -0
  57. package/lib/reanimated1/core/AnimatedClockTest.js +22 -0
  58. package/lib/reanimated1/core/AnimatedCode.js +32 -0
  59. package/lib/reanimated1/core/AnimatedConcat.js +32 -0
  60. package/lib/reanimated1/core/AnimatedCond.js +57 -0
  61. package/lib/reanimated1/core/AnimatedDebug.js +62 -0
  62. package/lib/reanimated1/core/AnimatedEvent.js +126 -0
  63. package/lib/reanimated1/core/AnimatedFunction.js +55 -0
  64. package/lib/reanimated1/core/AnimatedNode.js +223 -0
  65. package/lib/reanimated1/core/AnimatedOperator.js +103 -0
  66. package/lib/reanimated1/core/AnimatedParam.js +88 -0
  67. package/lib/reanimated1/core/AnimatedProps.js +108 -0
  68. package/lib/reanimated1/core/AnimatedSet.js +38 -0
  69. package/lib/reanimated1/core/AnimatedStartClock.js +30 -0
  70. package/lib/reanimated1/core/AnimatedStopClock.js +30 -0
  71. package/lib/reanimated1/core/AnimatedStyle.js +78 -0
  72. package/lib/reanimated1/core/AnimatedTransform.js +78 -0
  73. package/lib/reanimated1/core/AnimatedValue.js +38 -0
  74. package/lib/reanimated1/core/InternalAnimatedValue.js +87 -0
  75. package/lib/reanimated1/core/__mocks__/AnimatedProps.js +86 -0
  76. package/lib/reanimated1/core/createEventObjectProxyPolyfill.js +44 -0
  77. package/lib/reanimated1/derived/__mocks__/evaluateOnce.js +14 -0
  78. package/lib/reanimated1/derived/acc.js +11 -0
  79. package/lib/reanimated1/derived/color.js +47 -0
  80. package/lib/reanimated1/derived/diff.js +16 -0
  81. package/lib/reanimated1/derived/diffClamp.js +11 -0
  82. package/lib/reanimated1/derived/evaluateOnce.js +35 -0
  83. package/lib/reanimated1/derived/index.js +8 -0
  84. package/lib/reanimated1/derived/interpolate.js +152 -0
  85. package/lib/reanimated1/derived/interpolateColors.js +62 -0
  86. package/lib/reanimated1/derived/onChange.js +14 -0
  87. package/lib/reanimated1/derived/useCode.js +41 -0
  88. package/lib/reanimated1/index.js +53 -0
  89. package/lib/reanimated1/operators.js +35 -0
  90. package/lib/reanimated1/useValue.js +10 -0
  91. package/lib/reanimated1/val.js +3 -0
  92. package/lib/reanimated2/Bezier.js +126 -0
  93. package/lib/reanimated2/Colors.js +538 -0
  94. package/lib/reanimated2/Easing.js +248 -0
  95. package/lib/reanimated2/NativeMethods.js +94 -0
  96. package/lib/reanimated2/NativeReanimated/NativeReanimated.js +60 -0
  97. package/lib/reanimated2/NativeReanimated/index.js +11 -0
  98. package/lib/reanimated2/PlatformChecker.js +16 -0
  99. package/lib/reanimated2/PropAdapters.js +55 -0
  100. package/lib/reanimated2/UpdateProps.js +55 -0
  101. package/lib/reanimated2/ViewDescriptorsSet.js +75 -0
  102. package/lib/reanimated2/WorkletEventHandler.js +37 -0
  103. package/lib/reanimated2/__mocks__/MutableValue.js +13 -0
  104. package/lib/reanimated2/__mocks__/NativeReanimated.js +20 -0
  105. package/lib/reanimated2/animation/commonTypes.js +1 -0
  106. package/lib/reanimated2/animation/decay.js +71 -0
  107. package/lib/reanimated2/animation/delay.js +64 -0
  108. package/lib/reanimated2/animation/index.js +8 -0
  109. package/lib/reanimated2/animation/repeat.js +69 -0
  110. package/lib/reanimated2/animation/sequence.js +69 -0
  111. package/lib/reanimated2/animation/spring.js +103 -0
  112. package/lib/reanimated2/animation/styleAnimation.js +174 -0
  113. package/lib/reanimated2/animation/timing.js +64 -0
  114. package/lib/reanimated2/animation/util.js +183 -0
  115. package/lib/reanimated2/commonTypes.js +8 -0
  116. package/lib/reanimated2/component/FlatList.js +30 -0
  117. package/lib/reanimated2/component/Image.js +4 -0
  118. package/lib/reanimated2/component/ScrollView.js +4 -0
  119. package/lib/reanimated2/component/Text.js +4 -0
  120. package/lib/reanimated2/component/View.js +4 -0
  121. package/lib/reanimated2/core.js +269 -0
  122. package/lib/reanimated2/frameCallback/FrameCallbackRegistryJS.js +32 -0
  123. package/lib/reanimated2/frameCallback/FrameCallbackRegistryUI.js +76 -0
  124. package/lib/reanimated2/globals.d.ts +91 -0
  125. package/lib/reanimated2/hook/Hooks.js +9 -0
  126. package/lib/reanimated2/hook/commonTypes.js +1 -0
  127. package/lib/reanimated2/hook/index.js +12 -0
  128. package/lib/reanimated2/hook/useAnimatedGestureHandler.js +49 -0
  129. package/lib/reanimated2/hook/useAnimatedKeyboard.js +31 -0
  130. package/lib/reanimated2/hook/useAnimatedReaction.js +44 -0
  131. package/lib/reanimated2/hook/useAnimatedRef.js +25 -0
  132. package/lib/reanimated2/hook/useAnimatedScrollHandler.js +41 -0
  133. package/lib/reanimated2/hook/useAnimatedSensor.js +66 -0
  134. package/lib/reanimated2/hook/useAnimatedStyle.js +402 -0
  135. package/lib/reanimated2/hook/useDerivedValue.js +43 -0
  136. package/lib/reanimated2/hook/useFrameCallback.js +23 -0
  137. package/lib/reanimated2/hook/useScrollViewOffset.js +27 -0
  138. package/lib/reanimated2/hook/useSharedValue.js +17 -0
  139. package/lib/reanimated2/hook/utils.js +165 -0
  140. package/lib/reanimated2/index.js +12 -0
  141. package/lib/reanimated2/interpolateColor.js +157 -0
  142. package/lib/reanimated2/interpolation.js +127 -0
  143. package/lib/reanimated2/jestUtils.js +175 -0
  144. package/lib/reanimated2/js-reanimated/JSReanimated.js +106 -0
  145. package/lib/reanimated2/js-reanimated/Mapper.js +43 -0
  146. package/lib/reanimated2/js-reanimated/MapperRegistry.js +101 -0
  147. package/lib/reanimated2/js-reanimated/MutableValue.js +29 -0
  148. package/lib/reanimated2/js-reanimated/commonTypes.js +1 -0
  149. package/lib/reanimated2/js-reanimated/global.js +36 -0
  150. package/lib/reanimated2/js-reanimated/index.js +35 -0
  151. package/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.js +67 -0
  152. package/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +69 -0
  153. package/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +133 -0
  154. package/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +194 -0
  155. package/lib/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +1 -0
  156. package/lib/reanimated2/layoutReanimation/animationBuilder/index.js +3 -0
  157. package/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +374 -0
  158. package/lib/reanimated2/layoutReanimation/defaultAnimations/Default.js +36 -0
  159. package/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.js +275 -0
  160. package/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.js +385 -0
  161. package/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +136 -0
  162. package/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +81 -0
  163. package/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.js +120 -0
  164. package/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +273 -0
  165. package/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.js +201 -0
  166. package/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +101 -0
  167. package/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +457 -0
  168. package/lib/reanimated2/layoutReanimation/defaultAnimations/index.js +10 -0
  169. package/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +90 -0
  170. package/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +132 -0
  171. package/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +37 -0
  172. package/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +41 -0
  173. package/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +34 -0
  174. package/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +46 -0
  175. package/lib/reanimated2/layoutReanimation/defaultTransitions/index.js +6 -0
  176. package/lib/reanimated2/layoutReanimation/index.js +4 -0
  177. package/lib/reanimated2/mock.js +75 -0
  178. package/lib/reanimated2/platform-specific/RNRenderer.js +3 -0
  179. package/lib/reanimated2/platform-specific/RNRenderer.web.js +3 -0
  180. package/lib/reanimated2/platform-specific/checkVersion.js +28 -0
  181. package/lib/reanimated2/platform-specific/checkVersion.web.js +6 -0
  182. package/lib/reanimated2/utils.js +16 -0
  183. package/lib/setAndForwardRef.js +19 -0
  184. package/lib/types/lib/Animated.d.ts +8 -0
  185. package/lib/types/lib/ConfigHelper.d.ts +12 -0
  186. package/lib/types/lib/ReanimatedEventEmitter.d.ts +3 -0
  187. package/lib/types/lib/ReanimatedModule.d.ts +2 -0
  188. package/lib/types/lib/ReanimatedModule.macos.d.ts +2 -0
  189. package/lib/types/lib/ReanimatedModule.native.d.ts +2 -0
  190. package/lib/types/lib/ReanimatedModule.windows.d.ts +2 -0
  191. package/lib/types/lib/ReanimatedModuleCompat.d.ts +14 -0
  192. package/lib/types/lib/createAnimatedComponent.d.ts +33 -0
  193. package/lib/types/lib/index.d.ts +4 -0
  194. package/lib/types/lib/index.web.d.ts +4 -0
  195. package/lib/types/lib/reanimated2/Bezier.d.ts +6 -0
  196. package/lib/types/lib/reanimated2/Colors.d.ts +33 -0
  197. package/lib/types/lib/reanimated2/Easing.d.ts +172 -0
  198. package/lib/types/lib/reanimated2/NativeMethods.d.ts +7 -0
  199. package/lib/types/lib/reanimated2/NativeReanimated/NativeReanimated.d.ts +22 -0
  200. package/lib/types/lib/reanimated2/NativeReanimated/index.d.ts +3 -0
  201. package/lib/types/lib/reanimated2/PlatformChecker.d.ts +5 -0
  202. package/lib/types/lib/reanimated2/PropAdapters.d.ts +4 -0
  203. package/lib/types/lib/reanimated2/UpdateProps.d.ts +9 -0
  204. package/lib/types/lib/reanimated2/ViewDescriptorsSet.d.ts +20 -0
  205. package/lib/types/lib/reanimated2/WorkletEventHandler.d.ts +13 -0
  206. package/lib/types/lib/reanimated2/__mocks__/MutableValue.d.ts +5 -0
  207. package/lib/types/lib/reanimated2/__mocks__/NativeReanimated.d.ts +13 -0
  208. package/lib/types/lib/reanimated2/animation/commonTypes.d.ts +27 -0
  209. package/lib/types/lib/reanimated2/animation/decay.d.ts +19 -0
  210. package/lib/types/lib/reanimated2/animation/delay.d.ts +7 -0
  211. package/lib/types/lib/reanimated2/animation/index.d.ts +9 -0
  212. package/lib/types/lib/reanimated2/animation/repeat.d.ts +12 -0
  213. package/lib/types/lib/reanimated2/animation/sequence.d.ts +7 -0
  214. package/lib/types/lib/reanimated2/animation/spring.d.ts +22 -0
  215. package/lib/types/lib/reanimated2/animation/styleAnimation.d.ts +7 -0
  216. package/lib/types/lib/reanimated2/animation/timing.d.ts +21 -0
  217. package/lib/types/lib/reanimated2/animation/util.d.ts +9 -0
  218. package/lib/types/lib/reanimated2/commonTypes.d.ts +99 -0
  219. package/lib/types/lib/reanimated2/component/FlatList.d.ts +9 -0
  220. package/lib/types/lib/reanimated2/component/Image.d.ts +3 -0
  221. package/lib/types/lib/reanimated2/component/ScrollView.d.ts +3 -0
  222. package/lib/types/lib/reanimated2/component/Text.d.ts +3 -0
  223. package/lib/types/lib/reanimated2/component/View.d.ts +3 -0
  224. package/lib/types/lib/reanimated2/core.d.ts +24 -0
  225. package/lib/types/lib/reanimated2/frameCallback/FrameCallbackRegistryJS.d.ts +8 -0
  226. package/lib/types/lib/reanimated2/frameCallback/FrameCallbackRegistryUI.d.ts +20 -0
  227. package/lib/types/lib/reanimated2/hook/Hooks.d.ts +5 -0
  228. package/lib/types/lib/reanimated2/hook/commonTypes.d.ts +14 -0
  229. package/lib/types/lib/reanimated2/hook/index.d.ts +14 -0
  230. package/lib/types/lib/reanimated2/hook/useAnimatedGestureHandler.d.ts +35 -0
  231. package/lib/types/lib/reanimated2/hook/useAnimatedKeyboard.d.ts +2 -0
  232. package/lib/types/lib/reanimated2/hook/useAnimatedReaction.d.ts +12 -0
  233. package/lib/types/lib/reanimated2/hook/useAnimatedRef.d.ts +3 -0
  234. package/lib/types/lib/reanimated2/hook/useAnimatedScrollHandler.d.ts +20 -0
  235. package/lib/types/lib/reanimated2/hook/useAnimatedSensor.d.ts +18 -0
  236. package/lib/types/lib/reanimated2/hook/useAnimatedStyle.d.ts +11 -0
  237. package/lib/types/lib/reanimated2/hook/useDerivedValue.d.ts +4 -0
  238. package/lib/types/lib/reanimated2/hook/useFrameCallback.d.ts +7 -0
  239. package/lib/types/lib/reanimated2/hook/useScrollViewOffset.d.ts +4 -0
  240. package/lib/types/lib/reanimated2/hook/useSharedValue.d.ts +2 -0
  241. package/lib/types/lib/reanimated2/hook/utils.d.ts +28 -0
  242. package/lib/types/lib/reanimated2/index.d.ts +12 -0
  243. package/lib/types/lib/reanimated2/interpolateColor.d.ts +32 -0
  244. package/lib/types/lib/reanimated2/interpolation.d.ts +14 -0
  245. package/lib/types/lib/reanimated2/jestUtils.d.ts +12 -0
  246. package/lib/types/lib/reanimated2/js-reanimated/JSReanimated.d.ts +32 -0
  247. package/lib/types/lib/reanimated2/js-reanimated/Mapper.d.ts +14 -0
  248. package/lib/types/lib/reanimated2/js-reanimated/MapperRegistry.d.ts +14 -0
  249. package/lib/types/lib/reanimated2/js-reanimated/MutableValue.d.ts +14 -0
  250. package/lib/types/lib/reanimated2/js-reanimated/commonTypes.d.ts +44 -0
  251. package/lib/types/lib/reanimated2/js-reanimated/global.d.ts +2 -0
  252. package/lib/types/lib/reanimated2/js-reanimated/index.d.ts +15 -0
  253. package/lib/types/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.d.ts +1 -0
  254. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.d.ts +22 -0
  255. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.d.ts +38 -0
  256. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.d.ts +25 -0
  257. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/commonTypes.d.ts +81 -0
  258. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/index.d.ts +4 -0
  259. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.d.ts +62 -0
  260. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Default.d.ts +4 -0
  261. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.d.ts +42 -0
  262. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.d.ts +50 -0
  263. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.d.ts +18 -0
  264. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.d.ts +10 -0
  265. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.d.ts +18 -0
  266. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.d.ts +34 -0
  267. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.d.ts +34 -0
  268. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.d.ts +18 -0
  269. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.d.ts +66 -0
  270. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/index.d.ts +10 -0
  271. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.d.ts +19 -0
  272. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.d.ts +13 -0
  273. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.d.ts +6 -0
  274. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.d.ts +6 -0
  275. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.d.ts +7 -0
  276. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.d.ts +9 -0
  277. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/index.d.ts +6 -0
  278. package/lib/types/lib/reanimated2/layoutReanimation/index.d.ts +4 -0
  279. package/lib/types/lib/reanimated2/mock.d.ts +61 -0
  280. package/lib/types/lib/reanimated2/platform-specific/RNRenderer.d.ts +1 -0
  281. package/lib/types/lib/reanimated2/platform-specific/RNRenderer.web.d.ts +0 -0
  282. package/lib/types/lib/reanimated2/platform-specific/checkVersion.d.ts +4 -0
  283. package/lib/types/lib/reanimated2/platform-specific/checkVersion.web.d.ts +5 -0
  284. package/lib/types/lib/reanimated2/utils.d.ts +11 -0
  285. package/lib/types/lib/setAndForwardRef.d.ts +40 -0
  286. package/package.json +1 -1
  287. package/src/reanimated1/core/Core.test.js +0 -30
@@ -0,0 +1,231 @@
1
+ import {
2
+ cond,
3
+ lessThan,
4
+ multiply,
5
+ pow,
6
+ cos,
7
+ sqrt,
8
+ sub,
9
+ add,
10
+ divide,
11
+ } from './base';
12
+ import AnimatedBezier from './core/AnimatedBezier';
13
+
14
+ /**
15
+ * The `Easing` module implements common easing functions. This module is used
16
+ * by [Animate.timing()](docs/animate.html#timing) to convey physically
17
+ * believable motion in animations.
18
+ *
19
+ * You can find a visualization of some common easing functions at
20
+ * http://easings.net/
21
+ *
22
+ * ### Predefined animations
23
+ *
24
+ * The `Easing` module provides several predefined animations through the
25
+ * following methods:
26
+ *
27
+ * - [`back`](docs/easing.html#back) provides a simple animation where the
28
+ * object goes slightly back before moving forward
29
+ * - [`bounce`](docs/easing.html#bounce) provides a bouncing animation
30
+ * - [`ease`](docs/easing.html#ease) provides a simple inertial animation
31
+ * - [`elastic`](docs/easing.html#elastic) provides a simple spring interaction
32
+ *
33
+ * ### Standard functions
34
+ *
35
+ * Three standard easing functions are provided:
36
+ *
37
+ * - [`linear`](docs/easing.html#linear)
38
+ * - [`quad`](docs/easing.html#quad)
39
+ * - [`cubic`](docs/easing.html#cubic)
40
+ *
41
+ * The [`poly`](docs/easing.html#poly) function can be used to implement
42
+ * quartic, quintic, and other higher power functions.
43
+ *
44
+ * ### Additional functions
45
+ *
46
+ * Additional mathematical functions are provided by the following methods:
47
+ *
48
+ * - [`bezier`](docs/easing.html#bezier) provides a cubic bezier curve
49
+ * - [`circle`](docs/easing.html#circle) provides a circular function
50
+ * - [`sin`](docs/easing.html#sin) provides a sinusoidal function
51
+ * - [`exp`](docs/easing.html#exp) provides an exponential function
52
+ *
53
+ * The following helpers are used to modify other easing functions.
54
+ *
55
+ * - [`in`](docs/easing.html#in) runs an easing function forwards
56
+ * - [`inOut`](docs/easing.html#inout) makes any easing function symmetrical
57
+ * - [`out`](docs/easing.html#out) runs an easing function backwards
58
+ */
59
+ export default class Easing {
60
+ /**
61
+ * A linear function, `f(t) = t`. Position correlates to elapsed time one to
62
+ * one.
63
+ *
64
+ * http://cubic-bezier.com/#0,0,1,1
65
+ */
66
+ static linear(t) {
67
+ return t;
68
+ }
69
+
70
+ /**
71
+ * A simple inertial interaction, similar to an object slowly accelerating to
72
+ * speed.
73
+ *
74
+ * http://cubic-bezier.com/#.42,0,1,1
75
+ */
76
+ static ease(t) {
77
+ return new AnimatedBezier(t, 0.42, 0, 1, 1);
78
+ }
79
+
80
+ /**
81
+ * A quadratic function, `f(t) = t * t`. Position equals the square of elapsed
82
+ * time.
83
+ *
84
+ * http://easings.net/#easeInQuad
85
+ */
86
+ static quad(t) {
87
+ return multiply(t, t);
88
+ }
89
+
90
+ /**
91
+ * A cubic function, `f(t) = t * t * t`. Position equals the cube of elapsed
92
+ * time.
93
+ *
94
+ * http://easings.net/#easeInCubic
95
+ */
96
+ static cubic(t) {
97
+ return multiply(t, t, t);
98
+ }
99
+
100
+ /**
101
+ * A power function. Position is equal to the Nth power of elapsed time.
102
+ *
103
+ * n = 4: http://easings.net/#easeInQuart
104
+ * n = 5: http://easings.net/#easeInQuint
105
+ */
106
+ static poly(n) {
107
+ return (t) => pow(t, n);
108
+ }
109
+
110
+ /**
111
+ * A sinusoidal function.
112
+ *
113
+ * http://easings.net/#easeInSine
114
+ */
115
+ static sin(t) {
116
+ return sub(1, cos(multiply(t, Math.PI, 0.5)));
117
+ }
118
+
119
+ /**
120
+ * A circular function.
121
+ *
122
+ * http://easings.net/#easeInCirc
123
+ */
124
+ static circle(t) {
125
+ return sub(1, sqrt(sub(1, multiply(t, t))));
126
+ }
127
+
128
+ /**
129
+ * An exponential function.
130
+ *
131
+ * http://easings.net/#easeInExpo
132
+ */
133
+ static exp(t) {
134
+ return pow(2, multiply(10, sub(t, 1)));
135
+ }
136
+
137
+ /**
138
+ * A simple elastic interaction, similar to a spring oscillating back and
139
+ * forth.
140
+ *
141
+ * Default bounciness is 1, which overshoots a little bit once. 0 bounciness
142
+ * doesn't overshoot at all, and bounciness of N > 1 will overshoot about N
143
+ * times.
144
+ *
145
+ * http://easings.net/#easeInElastic
146
+ */
147
+ static elastic(bounciness = 1) {
148
+ const p = bounciness * Math.PI;
149
+ return (t) =>
150
+ sub(
151
+ 1,
152
+ multiply(pow(cos(multiply(t, Math.PI, 0.5)), 3), cos(multiply(t, p)))
153
+ );
154
+ }
155
+
156
+ /**
157
+ * Use with `Animated.parallel()` to create a simple effect where the object
158
+ * animates back slightly as the animation starts.
159
+ *
160
+ * Wolfram Plot:
161
+ *
162
+ * - http://tiny.cc/back_default (s = 1.70158, default)
163
+ */
164
+ static back(s) {
165
+ if (s === undefined) {
166
+ s = 1.70158;
167
+ }
168
+ return (t) => multiply(t, t, sub(multiply(add(s, 1), t), s));
169
+ }
170
+
171
+ /**
172
+ * Provides a simple bouncing effect.
173
+ *
174
+ * http://easings.net/#easeInBounce
175
+ */
176
+ static bounce(t) {
177
+ const sq = (v) => multiply(7.5625, v, v);
178
+ return cond(
179
+ lessThan(t, 1 / 2.75),
180
+ sq(t),
181
+ cond(
182
+ lessThan(t, 2 / 2.75),
183
+ add(0.75, sq(sub(t, 1.5 / 2.75))),
184
+ cond(
185
+ lessThan(t, 2.5 / 2.76),
186
+ add(0.9375, sq(sub(t, 2.25 / 2.75))),
187
+ add(0.984375, sq(sub(t, 2.625 / 2.75)))
188
+ )
189
+ )
190
+ );
191
+ }
192
+
193
+ /**
194
+ * Provides a cubic bezier curve, equivalent to CSS Transitions'
195
+ * `transition-timing-function`.
196
+ *
197
+ * A useful tool to visualize cubic bezier curves can be found at
198
+ * http://cubic-bezier.com/
199
+ */
200
+ static bezier(x1, y1, x2, y2) {
201
+ return (t) => new AnimatedBezier(t, x1, y1, x2, y2);
202
+ }
203
+
204
+ /**
205
+ * Runs an easing function forwards.
206
+ */
207
+ static in(easing) {
208
+ return easing;
209
+ }
210
+
211
+ /**
212
+ * Runs an easing function backwards.
213
+ */
214
+ static out(easing) {
215
+ return (t) => sub(1, easing(sub(1, t)));
216
+ }
217
+
218
+ /**
219
+ * Makes any easing function symmetrical. The easing function will run
220
+ * forwards for half of the duration, then backwards for the rest of the
221
+ * duration.
222
+ */
223
+ static inOut(easing) {
224
+ return (t) =>
225
+ cond(
226
+ lessThan(t, 0.5),
227
+ divide(easing(multiply(t, 2)), 2),
228
+ sub(1, divide(easing(multiply(sub(1, t), 2)), 2))
229
+ );
230
+ }
231
+ }
@@ -0,0 +1,79 @@
1
+ function stiffnessFromOrigamiValue(oValue) {
2
+ return (oValue - 30) * 3.62 + 194;
3
+ }
4
+
5
+ function dampingFromOrigamiValue(oValue) {
6
+ return (oValue - 8) * 3 + 25;
7
+ }
8
+
9
+ function fromOrigamiTensionAndFriction(tension, friction) {
10
+ return {
11
+ stiffness: stiffnessFromOrigamiValue(tension),
12
+ damping: dampingFromOrigamiValue(friction),
13
+ };
14
+ }
15
+
16
+ function fromBouncinessAndSpeed(bounciness, speed) {
17
+ function normalize(value, startValue, endValue) {
18
+ return (value - startValue) / (endValue - startValue);
19
+ }
20
+
21
+ function projectNormal(n, start, end) {
22
+ return start + n * (end - start);
23
+ }
24
+
25
+ function linearInterpolation(t, start, end) {
26
+ return t * end + (1 - t) * start;
27
+ }
28
+
29
+ function quadraticOutInterpolation(t, start, end) {
30
+ return linearInterpolation(2 * t - t * t, start, end);
31
+ }
32
+
33
+ function b3Friction1(x) {
34
+ return 0.0007 * Math.pow(x, 3) - 0.031 * Math.pow(x, 2) + 0.64 * x + 1.28;
35
+ }
36
+
37
+ function b3Friction2(x) {
38
+ return 0.000044 * Math.pow(x, 3) - 0.006 * Math.pow(x, 2) + 0.36 * x + 2;
39
+ }
40
+
41
+ function b3Friction3(x) {
42
+ return (
43
+ 0.00000045 * Math.pow(x, 3) -
44
+ 0.000332 * Math.pow(x, 2) +
45
+ 0.1078 * x +
46
+ 5.84
47
+ );
48
+ }
49
+
50
+ function b3Nobounce(tension) {
51
+ if (tension <= 18) {
52
+ return b3Friction1(tension);
53
+ } else if (tension > 18 && tension <= 44) {
54
+ return b3Friction2(tension);
55
+ } else {
56
+ return b3Friction3(tension);
57
+ }
58
+ }
59
+
60
+ var b = normalize(bounciness / 1.7, 0, 20);
61
+ b = projectNormal(b, 0, 0.8);
62
+ var s = normalize(speed / 1.7, 0, 20);
63
+ var bouncyTension = projectNormal(s, 0.5, 200);
64
+ var bouncyFriction = quadraticOutInterpolation(
65
+ b,
66
+ b3Nobounce(bouncyTension),
67
+ 0.01
68
+ );
69
+
70
+ return {
71
+ stiffness: stiffnessFromOrigamiValue(bouncyTension),
72
+ damping: dampingFromOrigamiValue(bouncyFriction),
73
+ };
74
+ }
75
+
76
+ module.exports = {
77
+ fromOrigamiTensionAndFriction,
78
+ fromBouncinessAndSpeed,
79
+ };
@@ -0,0 +1,158 @@
1
+ import React from 'react';
2
+ import { View, findNodeHandle } from 'react-native';
3
+ import ReanimatedModule from '../ReanimatedModule';
4
+
5
+ const TransitioningContext = React.createContext();
6
+
7
+ function configFromProps(type, props) {
8
+ const config = { type };
9
+ if ('durationMs' in props) {
10
+ config.durationMs = props.durationMs;
11
+ }
12
+ if ('interpolation' in props) {
13
+ config.interpolation = props.interpolation;
14
+ }
15
+ if ('type' in props) {
16
+ config.animation = props.type;
17
+ }
18
+ if ('delayMs' in props) {
19
+ config.delayMs = props.delayMs;
20
+ }
21
+ if ('propagation' in props) {
22
+ config.propagation = props.propagation;
23
+ }
24
+ return config;
25
+ }
26
+
27
+ /**
28
+ * The below wrapper is used to support legacy context API with Context.Consumer
29
+ * render prop. We need it as we want to access `context` from within
30
+ * `componentDidMount` callback. If we decided to drop support for older
31
+ * react native we could rewrite it using hooks or `static contextType` API.
32
+ */
33
+ function wrapTransitioningContext(Comp) {
34
+ return (props) => {
35
+ return (
36
+ <TransitioningContext.Consumer>
37
+ {(context) => <Comp context={context} {...props} />}
38
+ </TransitioningContext.Consumer>
39
+ );
40
+ };
41
+ }
42
+
43
+ class In extends React.Component {
44
+ componentDidMount() {
45
+ this.props.context.push(configFromProps('in', this.props));
46
+ }
47
+
48
+ render() {
49
+ return this.props.children || null;
50
+ }
51
+ }
52
+
53
+ class Change extends React.Component {
54
+ componentDidMount() {
55
+ this.props.context.push(configFromProps('change', this.props));
56
+ }
57
+
58
+ render() {
59
+ return this.props.children || null;
60
+ }
61
+ }
62
+
63
+ class Out extends React.Component {
64
+ componentDidMount() {
65
+ this.props.context.push(configFromProps('out', this.props));
66
+ }
67
+
68
+ render() {
69
+ return this.props.children || null;
70
+ }
71
+ }
72
+
73
+ class Together extends React.Component {
74
+ transitions = [];
75
+ componentDidMount() {
76
+ const config = configFromProps('group', this.props);
77
+ config.transitions = this.transitions;
78
+ this.props.context.push(config);
79
+ }
80
+
81
+ render() {
82
+ return (
83
+ <TransitioningContext.Provider value={this.transitions}>
84
+ {this.props.children}
85
+ </TransitioningContext.Provider>
86
+ );
87
+ }
88
+ }
89
+
90
+ class Sequence extends React.Component {
91
+ transitions = [];
92
+ componentDidMount() {
93
+ const config = configFromProps('group', this.props);
94
+ config.sequence = true;
95
+ config.transitions = this.transitions;
96
+ this.props.context.push(config);
97
+ }
98
+
99
+ render() {
100
+ return (
101
+ <TransitioningContext.Provider value={this.transitions}>
102
+ {this.props.children}
103
+ </TransitioningContext.Provider>
104
+ );
105
+ }
106
+ }
107
+
108
+ function createTransitioningComponent(Component) {
109
+ class Wrapped extends React.Component {
110
+ propTypes = Component.propTypes;
111
+ transitions = [];
112
+ viewRef = React.createRef();
113
+
114
+ componentDidMount() {
115
+ if (this.props.animateMount) {
116
+ this.animateNextTransition();
117
+ }
118
+ }
119
+
120
+ setNativeProps(props) {
121
+ this.viewRef.current.setNativeProps(props);
122
+ }
123
+
124
+ animateNextTransition() {
125
+ const viewTag = findNodeHandle(this.viewRef.current);
126
+ ReanimatedModule.animateNextTransition(viewTag, {
127
+ transitions: this.transitions,
128
+ });
129
+ }
130
+
131
+ render() {
132
+ const { transition, ...rest } = this.props;
133
+ return (
134
+ <React.Fragment>
135
+ <TransitioningContext.Provider value={this.transitions}>
136
+ {transition}
137
+ </TransitioningContext.Provider>
138
+ <Component {...rest} ref={this.viewRef} collapsable={false} />
139
+ </React.Fragment>
140
+ );
141
+ }
142
+ }
143
+ return Wrapped;
144
+ }
145
+
146
+ const Transitioning = {
147
+ View: createTransitioningComponent(View),
148
+ };
149
+
150
+ const Transition = {
151
+ Sequence: wrapTransitioningContext(Sequence),
152
+ Together: wrapTransitioningContext(Together),
153
+ In: wrapTransitioningContext(In),
154
+ Out: wrapTransitioningContext(Out),
155
+ Change: wrapTransitioningContext(Change),
156
+ };
157
+
158
+ export { Transitioning, Transition, createTransitioningComponent };
@@ -0,0 +1,32 @@
1
+ import AnimatedValue from '../core/InternalAnimatedValue';
2
+
3
+ class Animation {
4
+ static springDefaultState() {
5
+ return {
6
+ position: new AnimatedValue(0),
7
+ finished: new AnimatedValue(0),
8
+ velocity: new AnimatedValue(0),
9
+ time: new AnimatedValue(0),
10
+ };
11
+ }
12
+
13
+ static decayDefaultState() {
14
+ return {
15
+ position: new AnimatedValue(0),
16
+ finished: new AnimatedValue(0),
17
+ velocity: new AnimatedValue(0),
18
+ time: new AnimatedValue(0),
19
+ };
20
+ }
21
+
22
+ static timingDefaultState() {
23
+ return {
24
+ position: new AnimatedValue(0),
25
+ finished: new AnimatedValue(0),
26
+ time: new AnimatedValue(0),
27
+ frameTime: new AnimatedValue(0),
28
+ };
29
+ }
30
+ }
31
+
32
+ export default Animation;
@@ -0,0 +1,199 @@
1
+ import {
2
+ cond,
3
+ sub,
4
+ divide,
5
+ multiply,
6
+ add,
7
+ pow,
8
+ lessOrEq,
9
+ and,
10
+ greaterThan,
11
+ } from './../base';
12
+ import AnimatedValue from './../core/InternalAnimatedValue';
13
+
14
+ function stiffnessFromOrigamiValue(oValue) {
15
+ return (oValue - 30) * 3.62 + 194;
16
+ }
17
+
18
+ function dampingFromOrigamiValue(oValue) {
19
+ return (oValue - 8) * 3 + 25;
20
+ }
21
+
22
+ function stiffnessFromOrigamiNode(oValue) {
23
+ return add(multiply(sub(oValue, 30), 3.62), 194);
24
+ }
25
+
26
+ function dampingFromOrigamiNode(oValue) {
27
+ return add(multiply(sub(oValue, 8), 3), 25);
28
+ }
29
+
30
+ function makeConfigFromOrigamiTensionAndFriction(prevConfig) {
31
+ const { tension, friction, ...rest } = prevConfig;
32
+ return {
33
+ ...rest,
34
+ stiffness:
35
+ typeof tension === 'number'
36
+ ? stiffnessFromOrigamiValue(tension)
37
+ : stiffnessFromOrigamiNode(tension),
38
+ damping:
39
+ typeof friction === 'number'
40
+ ? dampingFromOrigamiValue(friction)
41
+ : dampingFromOrigamiNode(friction),
42
+ };
43
+ }
44
+
45
+ function makeConfigFromBouncinessAndSpeed(prevConfig) {
46
+ const { bounciness, speed, ...rest } = prevConfig;
47
+ if (typeof bounciness === 'number' && typeof speed === 'number') {
48
+ return fromBouncinessAndSpeedNumbers(bounciness, speed, rest);
49
+ }
50
+ return fromBouncinessAndSpeedNodes(bounciness, speed, rest);
51
+ }
52
+
53
+ function fromBouncinessAndSpeedNodes(bounciness, speed, rest) {
54
+ function normalize(value, startValue, endValue) {
55
+ return divide(sub(value, startValue), sub(endValue, startValue));
56
+ }
57
+
58
+ function projectNormal(n, start, end) {
59
+ return add(start, multiply(n, sub(end, start)));
60
+ }
61
+
62
+ function linearInterpolation(t, start, end) {
63
+ return add(multiply(t, end), multiply(sub(1, t), start));
64
+ }
65
+
66
+ function quadraticOutInterpolation(t, start, end) {
67
+ return linearInterpolation(sub(multiply(2, t), multiply(t, t)), start, end);
68
+ }
69
+
70
+ function b3Friction1(x) {
71
+ return add(
72
+ sub(multiply(0.0007, pow(x, 3)), multiply(0.031, pow(x, 2))),
73
+ multiply(0.64, x),
74
+ 1.28
75
+ );
76
+ }
77
+
78
+ function b3Friction2(x) {
79
+ return add(
80
+ sub(multiply(0.000044, pow(x, 3)), multiply(0.006, pow(x, 2))),
81
+ multiply(0.36, x),
82
+ 2
83
+ );
84
+ }
85
+
86
+ function b3Friction3(x) {
87
+ return add(
88
+ sub(multiply(0.00000045, pow(x, 3)), multiply(0.000332, pow(x, 2))),
89
+ multiply(0.1078, x),
90
+ 5.84
91
+ );
92
+ }
93
+
94
+ function b3Nobounce(tension) {
95
+ return cond(
96
+ lessOrEq(tension, 18),
97
+ b3Friction1(tension),
98
+ cond(
99
+ and(greaterThan(tension, 18), lessOrEq(tension, 44)),
100
+ b3Friction2(tension),
101
+ b3Friction3(tension)
102
+ )
103
+ );
104
+ }
105
+
106
+ let b = normalize(divide(bounciness, 1.7), 0, 20);
107
+ b = projectNormal(b, 0, 0.8);
108
+ const s = normalize(divide(speed, 1.7), 0, 20);
109
+ const bouncyTension = projectNormal(s, 0.5, 200);
110
+ const bouncyFriction = quadraticOutInterpolation(
111
+ b,
112
+ b3Nobounce(bouncyTension),
113
+ 0.01
114
+ );
115
+ return {
116
+ ...rest,
117
+ stiffness: stiffnessFromOrigamiNode(bouncyTension),
118
+ damping: dampingFromOrigamiNode(bouncyFriction),
119
+ };
120
+ }
121
+
122
+ function fromBouncinessAndSpeedNumbers(bounciness, speed, rest) {
123
+ function normalize(value, startValue, endValue) {
124
+ return (value - startValue) / (endValue - startValue);
125
+ }
126
+
127
+ function projectNormal(n, start, end) {
128
+ return start + n * (end - start);
129
+ }
130
+
131
+ function linearInterpolation(t, start, end) {
132
+ return t * end + (1 - t) * start;
133
+ }
134
+
135
+ function quadraticOutInterpolation(t, start, end) {
136
+ return linearInterpolation(2 * t - t * t, start, end);
137
+ }
138
+
139
+ function b3Friction1(x) {
140
+ return 0.0007 * Math.pow(x, 3) - 0.031 * Math.pow(x, 2) + 0.64 * x + 1.28;
141
+ }
142
+
143
+ function b3Friction2(x) {
144
+ return 0.000044 * Math.pow(x, 3) - 0.006 * Math.pow(x, 2) + 0.36 * x + 2;
145
+ }
146
+
147
+ function b3Friction3(x) {
148
+ return (
149
+ 0.00000045 * Math.pow(x, 3) -
150
+ 0.000332 * Math.pow(x, 2) +
151
+ 0.1078 * x +
152
+ 5.84
153
+ );
154
+ }
155
+
156
+ function b3Nobounce(tension) {
157
+ if (tension <= 18) {
158
+ return b3Friction1(tension);
159
+ } else if (tension > 18 && tension <= 44) {
160
+ return b3Friction2(tension);
161
+ } else {
162
+ return b3Friction3(tension);
163
+ }
164
+ }
165
+
166
+ let b = normalize(bounciness / 1.7, 0, 20);
167
+ b = projectNormal(b, 0, 0.8);
168
+ const s = normalize(speed / 1.7, 0, 20);
169
+ const bouncyTension = projectNormal(s, 0.5, 200);
170
+ const bouncyFriction = quadraticOutInterpolation(
171
+ b,
172
+ b3Nobounce(bouncyTension),
173
+ 0.01
174
+ );
175
+
176
+ return {
177
+ ...rest,
178
+ stiffness: stiffnessFromOrigamiValue(bouncyTension),
179
+ damping: dampingFromOrigamiValue(bouncyFriction),
180
+ };
181
+ }
182
+
183
+ function makeDefaultConfig() {
184
+ return {
185
+ stiffness: new AnimatedValue(100),
186
+ mass: new AnimatedValue(1),
187
+ damping: new AnimatedValue(10),
188
+ overshootClamping: false,
189
+ restSpeedThreshold: 0.001,
190
+ restDisplacementThreshold: 0.001,
191
+ toValue: new AnimatedValue(0),
192
+ };
193
+ }
194
+
195
+ export default {
196
+ makeDefaultConfig,
197
+ makeConfigFromBouncinessAndSpeed,
198
+ makeConfigFromOrigamiTensionAndFriction,
199
+ };