react-native-reanimated 3.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/Common/cpp/Fabric/FabricUtils.h +1 -1
  2. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +38 -27
  3. package/Common/cpp/SharedItems/Shareables.h +22 -0
  4. package/Common/cpp/Tools/PlatformDepMethodsHolder.h +2 -0
  5. package/Common/cpp/Tools/RuntimeDecorator.cpp +4 -1
  6. package/Common/cpp/Tools/RuntimeDecorator.h +2 -1
  7. package/Common/cpp/Tools/SingleInstanceChecker.h +14 -2
  8. package/RNReanimated.podspec +5 -2
  9. package/android/CMakeLists.txt +4 -0
  10. package/android/build.gradle +18 -10
  11. package/android/src/main/cpp/NativeProxy.cpp +316 -337
  12. package/android/src/main/cpp/NativeProxy.h +53 -11
  13. package/android/src/main/java/com/swmansion/reanimated/NativeMethodsHelper.java +7 -12
  14. package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +11 -8
  15. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +21 -14
  16. package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +0 -3
  17. package/ios/Fabric/REAInitializerRCTFabricSurface.mm +1 -0
  18. package/ios/REANodesManager.h +1 -0
  19. package/ios/REANodesManager.mm +30 -4
  20. package/ios/keyboardObserver/REAKeyboardEventObserver.m +51 -130
  21. package/ios/native/NativeMethods.mm +1 -1
  22. package/ios/native/NativeProxy.mm +4 -1
  23. package/ios/native/REAIOSErrorHandler.mm +1 -1
  24. package/ios/native/REAIOSLogger.mm +1 -1
  25. package/ios/native/REAIOSScheduler.mm +1 -1
  26. package/ios/native/REAInitializer.mm +1 -1
  27. package/ios/native/REAMessageThread.mm +2 -2
  28. package/lib/commonjs/Animated.js +0 -8
  29. package/lib/commonjs/Animated.js.map +1 -1
  30. package/lib/commonjs/ConfigHelper.js +8 -19
  31. package/lib/commonjs/ConfigHelper.js.map +1 -1
  32. package/lib/commonjs/createAnimatedComponent.js +20 -158
  33. package/lib/commonjs/createAnimatedComponent.js.map +1 -1
  34. package/lib/commonjs/index.js +0 -9
  35. package/lib/commonjs/index.js.map +1 -1
  36. package/lib/commonjs/index.web.js +0 -7
  37. package/lib/commonjs/index.web.js.map +1 -1
  38. package/lib/commonjs/reanimated2/Bezier.js +14 -34
  39. package/lib/commonjs/reanimated2/Bezier.js.map +1 -1
  40. package/lib/commonjs/reanimated2/Colors.js +60 -132
  41. package/lib/commonjs/reanimated2/Colors.js.map +1 -1
  42. package/lib/commonjs/reanimated2/Easing.js +81 -34
  43. package/lib/commonjs/reanimated2/Easing.js.map +1 -1
  44. package/lib/commonjs/reanimated2/NativeMethods.js +8 -20
  45. package/lib/commonjs/reanimated2/NativeMethods.js.map +1 -1
  46. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +5 -31
  47. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  48. package/lib/commonjs/reanimated2/NativeReanimated/index.js +0 -7
  49. package/lib/commonjs/reanimated2/NativeReanimated/index.js.map +1 -1
  50. package/lib/commonjs/reanimated2/PlatformChecker.js +0 -6
  51. package/lib/commonjs/reanimated2/PlatformChecker.js.map +1 -1
  52. package/lib/commonjs/reanimated2/PropAdapters.js +10 -12
  53. package/lib/commonjs/reanimated2/PropAdapters.js.map +1 -1
  54. package/lib/commonjs/reanimated2/UpdateProps.js +3 -12
  55. package/lib/commonjs/reanimated2/UpdateProps.js.map +1 -1
  56. package/lib/commonjs/reanimated2/ViewDescriptorsSet.js +0 -10
  57. package/lib/commonjs/reanimated2/ViewDescriptorsSet.js.map +1 -1
  58. package/lib/commonjs/reanimated2/WorkletEventHandler.js +5 -22
  59. package/lib/commonjs/reanimated2/WorkletEventHandler.js.map +1 -1
  60. package/lib/commonjs/reanimated2/animation/decay.js +7 -18
  61. package/lib/commonjs/reanimated2/animation/decay.js.map +1 -1
  62. package/lib/commonjs/reanimated2/animation/delay.js +0 -11
  63. package/lib/commonjs/reanimated2/animation/delay.js.map +1 -1
  64. package/lib/commonjs/reanimated2/animation/index.js +0 -8
  65. package/lib/commonjs/reanimated2/animation/index.js.map +1 -1
  66. package/lib/commonjs/reanimated2/animation/repeat.js +6 -22
  67. package/lib/commonjs/reanimated2/animation/repeat.js.map +1 -1
  68. package/lib/commonjs/reanimated2/animation/sequence.js +3 -20
  69. package/lib/commonjs/reanimated2/animation/sequence.js.map +1 -1
  70. package/lib/commonjs/reanimated2/animation/spring.js +11 -23
  71. package/lib/commonjs/reanimated2/animation/spring.js.map +1 -1
  72. package/lib/commonjs/reanimated2/animation/styleAnimation.js +3 -35
  73. package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
  74. package/lib/commonjs/reanimated2/animation/timing.js +0 -11
  75. package/lib/commonjs/reanimated2/animation/timing.js.map +1 -1
  76. package/lib/commonjs/reanimated2/animation/util.js +11 -41
  77. package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
  78. package/lib/commonjs/reanimated2/commonTypes.js +16 -23
  79. package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
  80. package/lib/commonjs/reanimated2/component/FlatList.js +0 -16
  81. package/lib/commonjs/reanimated2/component/FlatList.js.map +1 -1
  82. package/lib/commonjs/reanimated2/component/Image.js +0 -4
  83. package/lib/commonjs/reanimated2/component/Image.js.map +1 -1
  84. package/lib/commonjs/reanimated2/component/ScrollView.js +0 -4
  85. package/lib/commonjs/reanimated2/component/ScrollView.js.map +1 -1
  86. package/lib/commonjs/reanimated2/component/Text.js +0 -4
  87. package/lib/commonjs/reanimated2/component/Text.js.map +1 -1
  88. package/lib/commonjs/reanimated2/component/View.js +0 -4
  89. package/lib/commonjs/reanimated2/component/View.js.map +1 -1
  90. package/lib/commonjs/reanimated2/core.js +6 -48
  91. package/lib/commonjs/reanimated2/core.js.map +1 -1
  92. package/lib/commonjs/reanimated2/errors.js +3 -14
  93. package/lib/commonjs/reanimated2/errors.js.map +1 -1
  94. package/lib/commonjs/reanimated2/fabricUtils.js +3 -5
  95. package/lib/commonjs/reanimated2/fabricUtils.js.map +1 -1
  96. package/lib/commonjs/reanimated2/fabricUtils.web.js +1 -3
  97. package/lib/commonjs/reanimated2/fabricUtils.web.js.map +1 -1
  98. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -12
  99. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  100. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -17
  101. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  102. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  103. package/lib/commonjs/reanimated2/hook/Hooks.js +0 -5
  104. package/lib/commonjs/reanimated2/hook/Hooks.js.map +1 -1
  105. package/lib/commonjs/reanimated2/hook/commonTypes.js.map +1 -1
  106. package/lib/commonjs/reanimated2/hook/index.js +0 -12
  107. package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
  108. package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js +4 -17
  109. package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  110. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +2 -9
  111. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  112. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +1 -11
  113. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  114. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +0 -12
  115. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
  116. package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js +2 -9
  117. package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  118. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +8 -23
  119. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  120. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +13 -71
  121. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  122. package/lib/commonjs/reanimated2/hook/useDerivedValue.js +4 -13
  123. package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
  124. package/lib/commonjs/reanimated2/hook/useFrameCallback.js +0 -5
  125. package/lib/commonjs/reanimated2/hook/useFrameCallback.js.map +1 -1
  126. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +0 -7
  127. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  128. package/lib/commonjs/reanimated2/hook/useSharedValue.js +2 -7
  129. package/lib/commonjs/reanimated2/hook/useSharedValue.js.map +1 -1
  130. package/lib/commonjs/reanimated2/hook/utils.js +8 -39
  131. package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
  132. package/lib/commonjs/reanimated2/index.js +0 -26
  133. package/lib/commonjs/reanimated2/index.js.map +1 -1
  134. package/lib/commonjs/reanimated2/initializers.js +21 -43
  135. package/lib/commonjs/reanimated2/initializers.js.map +1 -1
  136. package/lib/commonjs/reanimated2/interpolateColor.js +6 -43
  137. package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
  138. package/lib/commonjs/reanimated2/interpolation.js +14 -29
  139. package/lib/commonjs/reanimated2/interpolation.js.map +1 -1
  140. package/lib/commonjs/reanimated2/jestUtils.js +11 -44
  141. package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
  142. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +15 -39
  143. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  144. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +9 -28
  145. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
  146. package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js +7 -37
  147. package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
  148. package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js +5 -18
  149. package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js.map +1 -1
  150. package/lib/commonjs/reanimated2/js-reanimated/global.js +2 -9
  151. package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
  152. package/lib/commonjs/reanimated2/js-reanimated/index.js +3 -14
  153. package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
  154. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -26
  155. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  156. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -49
  157. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  158. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -43
  159. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  160. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +4 -5
  161. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  162. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +0 -4
  163. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  164. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +4 -23
  165. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  166. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -74
  167. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  168. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -53
  169. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  170. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -63
  171. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  172. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -26
  173. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  174. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -13
  175. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  176. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -23
  177. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  178. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -43
  179. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  180. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -43
  181. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  182. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -23
  183. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  184. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -83
  185. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  186. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js +0 -20
  187. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  188. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -22
  189. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  190. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -29
  191. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  192. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -9
  193. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  194. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -11
  195. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  196. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -8
  197. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  198. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -12
  199. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  200. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js +0 -12
  201. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  202. package/lib/commonjs/reanimated2/layoutReanimation/index.js +0 -9
  203. package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
  204. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -17
  205. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  206. package/lib/commonjs/reanimated2/mappers.js +26 -32
  207. package/lib/commonjs/reanimated2/mappers.js.map +1 -1
  208. package/lib/commonjs/reanimated2/mock.js +5 -15
  209. package/lib/commonjs/reanimated2/mock.js.map +1 -1
  210. package/lib/commonjs/reanimated2/mutables.js +2 -28
  211. package/lib/commonjs/reanimated2/mutables.js.map +1 -1
  212. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js +0 -2
  213. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  214. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  215. package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js +31 -0
  216. package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
  217. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +0 -2
  218. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
  219. package/lib/commonjs/reanimated2/platform-specific/jsVersion.js +14 -0
  220. package/lib/commonjs/reanimated2/platform-specific/jsVersion.js.map +1 -0
  221. package/lib/commonjs/reanimated2/pluginUtils.js +0 -1
  222. package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -1
  223. package/lib/commonjs/reanimated2/shareables.js +92 -49
  224. package/lib/commonjs/reanimated2/shareables.js.map +1 -1
  225. package/lib/commonjs/reanimated2/threads.js +42 -46
  226. package/lib/commonjs/reanimated2/threads.js.map +1 -1
  227. package/lib/commonjs/reanimated2/utils.js +0 -5
  228. package/lib/commonjs/reanimated2/utils.js.map +1 -1
  229. package/lib/commonjs/reanimated2/valueSetter.js +6 -21
  230. package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
  231. package/lib/commonjs/setAndForwardRef.js +3 -3
  232. package/lib/commonjs/setAndForwardRef.js.map +1 -1
  233. package/lib/module/Animated.js.map +1 -1
  234. package/lib/module/ConfigHelper.js +9 -15
  235. package/lib/module/ConfigHelper.js.map +1 -1
  236. package/lib/module/createAnimatedComponent.js +20 -139
  237. package/lib/module/createAnimatedComponent.js.map +1 -1
  238. package/lib/module/index.js +0 -2
  239. package/lib/module/index.js.map +1 -1
  240. package/lib/module/index.web.js.map +1 -1
  241. package/lib/module/reanimated2/Bezier.js +14 -33
  242. package/lib/module/reanimated2/Bezier.js.map +1 -1
  243. package/lib/module/reanimated2/Colors.js +59 -109
  244. package/lib/module/reanimated2/Colors.js.map +1 -1
  245. package/lib/module/reanimated2/Easing.js +37 -33
  246. package/lib/module/reanimated2/Easing.js.map +1 -1
  247. package/lib/module/reanimated2/NativeMethods.js +8 -15
  248. package/lib/module/reanimated2/NativeMethods.js.map +1 -1
  249. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +5 -27
  250. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  251. package/lib/module/reanimated2/NativeReanimated/index.js +0 -2
  252. package/lib/module/reanimated2/NativeReanimated/index.js.map +1 -1
  253. package/lib/module/reanimated2/PlatformChecker.js.map +1 -1
  254. package/lib/module/reanimated2/PropAdapters.js +12 -10
  255. package/lib/module/reanimated2/PropAdapters.js.map +1 -1
  256. package/lib/module/reanimated2/UpdateProps.js +3 -5
  257. package/lib/module/reanimated2/UpdateProps.js.map +1 -1
  258. package/lib/module/reanimated2/ViewDescriptorsSet.js +0 -6
  259. package/lib/module/reanimated2/ViewDescriptorsSet.js.map +1 -1
  260. package/lib/module/reanimated2/WorkletEventHandler.js +5 -18
  261. package/lib/module/reanimated2/WorkletEventHandler.js.map +1 -1
  262. package/lib/module/reanimated2/animation/decay.js +7 -15
  263. package/lib/module/reanimated2/animation/decay.js.map +1 -1
  264. package/lib/module/reanimated2/animation/delay.js +0 -9
  265. package/lib/module/reanimated2/animation/delay.js.map +1 -1
  266. package/lib/module/reanimated2/animation/index.js.map +1 -1
  267. package/lib/module/reanimated2/animation/repeat.js +6 -20
  268. package/lib/module/reanimated2/animation/repeat.js.map +1 -1
  269. package/lib/module/reanimated2/animation/sequence.js +3 -18
  270. package/lib/module/reanimated2/animation/sequence.js.map +1 -1
  271. package/lib/module/reanimated2/animation/spring.js +11 -21
  272. package/lib/module/reanimated2/animation/spring.js.map +1 -1
  273. package/lib/module/reanimated2/animation/styleAnimation.js +7 -31
  274. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  275. package/lib/module/reanimated2/animation/timing.js +0 -8
  276. package/lib/module/reanimated2/animation/timing.js.map +1 -1
  277. package/lib/module/reanimated2/animation/util.js +10 -33
  278. package/lib/module/reanimated2/animation/util.js.map +1 -1
  279. package/lib/module/reanimated2/commonTypes.js +12 -19
  280. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  281. package/lib/module/reanimated2/component/FlatList.js +0 -4
  282. package/lib/module/reanimated2/component/FlatList.js.map +1 -1
  283. package/lib/module/reanimated2/component/Image.js.map +1 -1
  284. package/lib/module/reanimated2/component/ScrollView.js.map +1 -1
  285. package/lib/module/reanimated2/component/Text.js.map +1 -1
  286. package/lib/module/reanimated2/component/View.js.map +1 -1
  287. package/lib/module/reanimated2/core.js +6 -22
  288. package/lib/module/reanimated2/core.js.map +1 -1
  289. package/lib/module/reanimated2/errors.js +3 -13
  290. package/lib/module/reanimated2/errors.js.map +1 -1
  291. package/lib/module/reanimated2/fabricUtils.js +3 -3
  292. package/lib/module/reanimated2/fabricUtils.js.map +1 -1
  293. package/lib/module/reanimated2/fabricUtils.web.js +1 -1
  294. package/lib/module/reanimated2/fabricUtils.web.js.map +1 -1
  295. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -8
  296. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  297. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -15
  298. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  299. package/lib/module/reanimated2/globals.d.js.map +1 -1
  300. package/lib/module/reanimated2/hook/Hooks.js +3 -2
  301. package/lib/module/reanimated2/hook/Hooks.js.map +1 -1
  302. package/lib/module/reanimated2/hook/commonTypes.js.map +1 -1
  303. package/lib/module/reanimated2/hook/index.js.map +1 -1
  304. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js +3 -14
  305. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  306. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +2 -5
  307. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  308. package/lib/module/reanimated2/hook/useAnimatedReaction.js +1 -7
  309. package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  310. package/lib/module/reanimated2/hook/useAnimatedRef.js +0 -6
  311. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  312. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js +2 -7
  313. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  314. package/lib/module/reanimated2/hook/useAnimatedSensor.js +9 -20
  315. package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  316. package/lib/module/reanimated2/hook/useAnimatedStyle.js +13 -59
  317. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  318. package/lib/module/reanimated2/hook/useDerivedValue.js +4 -8
  319. package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
  320. package/lib/module/reanimated2/hook/useFrameCallback.js.map +1 -1
  321. package/lib/module/reanimated2/hook/useScrollViewOffset.js +0 -1
  322. package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  323. package/lib/module/reanimated2/hook/useSharedValue.js +2 -3
  324. package/lib/module/reanimated2/hook/useSharedValue.js.map +1 -1
  325. package/lib/module/reanimated2/hook/utils.js +8 -21
  326. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  327. package/lib/module/reanimated2/index.js.map +1 -1
  328. package/lib/module/reanimated2/initializers.js +23 -37
  329. package/lib/module/reanimated2/initializers.js.map +1 -1
  330. package/lib/module/reanimated2/interpolateColor.js +5 -34
  331. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  332. package/lib/module/reanimated2/interpolation.js +13 -28
  333. package/lib/module/reanimated2/interpolation.js.map +1 -1
  334. package/lib/module/reanimated2/jestUtils.js +11 -35
  335. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  336. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +15 -35
  337. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  338. package/lib/module/reanimated2/js-reanimated/Mapper.js +9 -23
  339. package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
  340. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js +7 -35
  341. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
  342. package/lib/module/reanimated2/js-reanimated/MutableValue.js +5 -16
  343. package/lib/module/reanimated2/js-reanimated/MutableValue.js.map +1 -1
  344. package/lib/module/reanimated2/js-reanimated/global.js +2 -6
  345. package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
  346. package/lib/module/reanimated2/js-reanimated/index.js +3 -9
  347. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  348. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -23
  349. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  350. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -45
  351. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  352. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -39
  353. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  354. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +3 -3
  355. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  356. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  357. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +4 -19
  358. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  359. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -52
  360. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  361. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -32
  362. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  363. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -38
  364. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  365. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -16
  366. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  367. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -8
  368. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  369. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -14
  370. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  371. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -26
  372. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  373. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -26
  374. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  375. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -14
  376. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  377. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -50
  378. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  379. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  380. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -17
  381. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  382. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -23
  383. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  384. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -5
  385. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  386. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -6
  387. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  388. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -5
  389. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  390. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -8
  391. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  392. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  393. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  394. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -13
  395. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  396. package/lib/module/reanimated2/mappers.js +26 -25
  397. package/lib/module/reanimated2/mappers.js.map +1 -1
  398. package/lib/module/reanimated2/mock.js +5 -15
  399. package/lib/module/reanimated2/mock.js.map +1 -1
  400. package/lib/module/reanimated2/mutables.js +2 -19
  401. package/lib/module/reanimated2/mutables.js.map +1 -1
  402. package/lib/module/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  403. package/lib/module/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  404. package/lib/module/reanimated2/platform-specific/checkCppVersion.js +24 -0
  405. package/lib/module/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
  406. package/lib/module/reanimated2/platform-specific/checkVersion.web.js +0 -1
  407. package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
  408. package/lib/module/reanimated2/platform-specific/jsVersion.js +7 -0
  409. package/lib/module/reanimated2/platform-specific/jsVersion.js.map +1 -0
  410. package/lib/module/reanimated2/pluginUtils.js.map +1 -1
  411. package/lib/module/reanimated2/shareables.js +96 -44
  412. package/lib/module/reanimated2/shareables.js.map +1 -1
  413. package/lib/module/reanimated2/threads.js +39 -33
  414. package/lib/module/reanimated2/threads.js.map +1 -1
  415. package/lib/module/reanimated2/utils.js +0 -3
  416. package/lib/module/reanimated2/utils.js.map +1 -1
  417. package/lib/module/reanimated2/valueSetter.js +6 -19
  418. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  419. package/lib/module/setAndForwardRef.js +3 -2
  420. package/lib/module/setAndForwardRef.js.map +1 -1
  421. package/package.json +46 -40
  422. package/plugin/.eslintrc.js +7 -0
  423. package/plugin/README.md +241 -0
  424. package/plugin/build/plugin.js +714 -0
  425. package/plugin/build/plugin.js.map +7 -0
  426. package/plugin/index.js +1 -807
  427. package/plugin/package.json +23 -0
  428. package/plugin/src/buildWorkletString.ts +213 -0
  429. package/plugin/src/commonObjects.ts +60 -0
  430. package/plugin/src/injectVersion.ts +37 -0
  431. package/plugin/src/makeWorklet.ts +375 -0
  432. package/plugin/src/plugin.ts +49 -0
  433. package/plugin/src/processForCalleesWorklets.ts +106 -0
  434. package/plugin/src/processIfGestureHandlerEventCallbackFunctionNode.ts +156 -0
  435. package/plugin/src/processIfWorkletFunction.ts +55 -0
  436. package/plugin/src/processIfWorkletNode.ts +44 -0
  437. package/plugin/src/processInlineStylesWarning.ts +129 -0
  438. package/plugin/src/processWorkletObjectMethod.ts +31 -0
  439. package/plugin/src/types.ts +15 -0
  440. package/plugin/src/utils.ts +6 -0
  441. package/plugin/tsconfig.json +15 -0
  442. package/plugin/yarn.lock +2193 -0
  443. package/react-native-reanimated.d.ts +1 -0
  444. package/scripts/reanimated_utils.rb +2 -2
  445. package/src/createAnimatedComponent.tsx +2 -3
  446. package/src/reanimated2/Easing.ts +19 -0
  447. package/src/reanimated2/NativeMethods.ts +9 -4
  448. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +2 -2
  449. package/src/reanimated2/UpdateProps.ts +2 -2
  450. package/src/reanimated2/animation/decay.ts +7 -1
  451. package/src/reanimated2/animation/styleAnimation.ts +5 -1
  452. package/src/reanimated2/core.ts +4 -4
  453. package/src/reanimated2/errors.ts +1 -0
  454. package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +12 -4
  455. package/src/reanimated2/globals.d.ts +71 -112
  456. package/src/reanimated2/hook/commonTypes.ts +1 -1
  457. package/src/reanimated2/hook/useAnimatedReaction.ts +2 -2
  458. package/src/reanimated2/hook/useAnimatedSensor.ts +2 -2
  459. package/src/reanimated2/initializers.ts +11 -8
  460. package/src/reanimated2/jestUtils.ts +0 -1
  461. package/src/reanimated2/js-reanimated/JSReanimated.ts +5 -1
  462. package/src/reanimated2/js-reanimated/index.ts +1 -1
  463. package/src/reanimated2/mappers.ts +26 -4
  464. package/src/reanimated2/mock.ts +1 -0
  465. package/src/reanimated2/platform-specific/checkCppVersion.ts +29 -0
  466. package/src/reanimated2/platform-specific/jsVersion.ts +6 -0
  467. package/src/reanimated2/shareables.ts +107 -8
  468. package/src/reanimated2/threads.ts +36 -17
  469. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +0 -42
  470. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +0 -1
  471. package/lib/module/reanimated2/platform-specific/checkVersion.js +0 -35
  472. package/lib/module/reanimated2/platform-specific/checkVersion.js.map +0 -1
  473. package/src/reanimated2/platform-specific/checkVersion.ts +0 -39
@@ -7,7 +7,6 @@ export const Extrapolate = {
7
7
  CLAMP: 'clamp',
8
8
  IDENTITY: 'identity'
9
9
  };
10
-
11
10
  const interpolateColorsHSV = (value, inputRange, colors, options) => {
12
11
  'worklet';
13
12
 
@@ -15,7 +14,6 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
15
14
  const {
16
15
  useCorrectedHSVInterpolation = true
17
16
  } = options;
18
-
19
17
  if (useCorrectedHSVInterpolation) {
20
18
  // if the difference between hues in a range is > 180 deg
21
19
  // then move the hue at the right end of the range +/- 360 deg
@@ -24,10 +22,8 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
24
22
  const correctedInputRange = [inputRange[0]];
25
23
  const originalH = colors.h;
26
24
  const correctedH = [originalH[0]];
27
-
28
25
  for (let i = 1; i < originalH.length; ++i) {
29
26
  const d = originalH[i] - originalH[i - 1];
30
-
31
27
  if (originalH[i] > originalH[i - 1] && d > 0.5) {
32
28
  correctedInputRange.push(inputRange[i]);
33
29
  correctedInputRange.push(inputRange[i] + 0.00001);
@@ -43,30 +39,25 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
43
39
  correctedH.push(originalH[i]);
44
40
  }
45
41
  }
46
-
47
42
  h = (interpolate(value, correctedInputRange, correctedH, Extrapolate.CLAMP) + 1) % 1;
48
43
  } else {
49
44
  h = interpolate(value, inputRange, colors.h, Extrapolate.CLAMP);
50
45
  }
51
-
52
46
  const s = interpolate(value, inputRange, colors.s, Extrapolate.CLAMP);
53
47
  const v = interpolate(value, inputRange, colors.v, Extrapolate.CLAMP);
54
48
  const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);
55
49
  return hsvToColor(h, s, v, a);
56
50
  };
57
-
58
51
  const toLinearSpace = (x, gamma) => {
59
52
  'worklet';
60
53
 
61
54
  return x.map(v => Math.pow(v / 255, gamma));
62
55
  };
63
-
64
56
  const toGammaSpace = (x, gamma) => {
65
57
  'worklet';
66
58
 
67
59
  return Math.round(Math.pow(x, 1 / gamma) * 255);
68
60
  };
69
-
70
61
  const interpolateColorsRGB = (value, inputRange, colors, options) => {
71
62
  'worklet';
72
63
 
@@ -78,25 +69,20 @@ const interpolateColorsRGB = (value, inputRange, colors, options) => {
78
69
  g: outputG,
79
70
  b: outputB
80
71
  } = colors;
81
-
82
72
  if (gamma !== 1) {
83
73
  outputR = toLinearSpace(outputR, gamma);
84
74
  outputG = toLinearSpace(outputG, gamma);
85
75
  outputB = toLinearSpace(outputB, gamma);
86
76
  }
87
-
88
77
  const r = interpolate(value, inputRange, outputR, Extrapolate.CLAMP);
89
78
  const g = interpolate(value, inputRange, outputG, Extrapolate.CLAMP);
90
79
  const b = interpolate(value, inputRange, outputB, Extrapolate.CLAMP);
91
80
  const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);
92
-
93
81
  if (gamma === 1) {
94
82
  return rgbaColor(r, g, b, a);
95
83
  }
96
-
97
84
  return rgbaColor(toGammaSpace(r, gamma), toGammaSpace(g, gamma), toGammaSpace(b, gamma), a);
98
85
  };
99
-
100
86
  const getInterpolateRGB = colors => {
101
87
  'worklet';
102
88
 
@@ -104,11 +90,10 @@ const getInterpolateRGB = colors => {
104
90
  const g = [];
105
91
  const b = [];
106
92
  const a = [];
107
-
108
93
  for (let i = 0; i < colors.length; ++i) {
109
94
  const color = colors[i];
110
- const processedColor = processColor(color); // explicit check in case if processedColor is 0
111
-
95
+ const processedColor = processColor(color);
96
+ // explicit check in case if processedColor is 0
112
97
  if (processedColor !== null && processedColor !== undefined) {
113
98
  r.push(red(processedColor));
114
99
  g.push(green(processedColor));
@@ -116,7 +101,6 @@ const getInterpolateRGB = colors => {
116
101
  a.push(opacity(processedColor));
117
102
  }
118
103
  }
119
-
120
104
  return {
121
105
  r,
122
106
  g,
@@ -124,7 +108,6 @@ const getInterpolateRGB = colors => {
124
108
  a
125
109
  };
126
110
  };
127
-
128
111
  const getInterpolateHSV = colors => {
129
112
  'worklet';
130
113
 
@@ -132,11 +115,9 @@ const getInterpolateHSV = colors => {
132
115
  const s = [];
133
116
  const v = [];
134
117
  const a = [];
135
-
136
118
  for (let i = 0; i < colors.length; ++i) {
137
119
  const color = colors[i];
138
120
  const processedColor = processColor(color);
139
-
140
121
  if (typeof processedColor === 'number') {
141
122
  const processedHSVColor = RGBtoHSV(red(processedColor), green(processedColor), blue(processedColor));
142
123
  h.push(processedHSVColor.h);
@@ -145,7 +126,6 @@ const getInterpolateHSV = colors => {
145
126
  a.push(opacity(processedColor));
146
127
  }
147
128
  }
148
-
149
129
  return {
150
130
  h,
151
131
  s,
@@ -153,28 +133,23 @@ const getInterpolateHSV = colors => {
153
133
  a
154
134
  };
155
135
  };
156
-
157
136
  export const interpolateColor = function (value, inputRange, outputRange) {
158
137
  'worklet';
159
138
 
160
139
  let colorSpace = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'RGB';
161
140
  let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
162
-
163
141
  if (colorSpace === 'HSV') {
164
142
  return interpolateColorsHSV(value, inputRange, getInterpolateHSV(outputRange), options);
165
143
  } else if (colorSpace === 'RGB') {
166
144
  return interpolateColorsRGB(value, inputRange, getInterpolateRGB(outputRange), options);
167
145
  }
168
-
169
146
  throw new Error(`Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`);
170
147
  };
171
- export let ColorSpace;
172
-
173
- (function (ColorSpace) {
148
+ export let ColorSpace = /*#__PURE__*/function (ColorSpace) {
174
149
  ColorSpace[ColorSpace["RGB"] = 0] = "RGB";
175
150
  ColorSpace[ColorSpace["HSV"] = 1] = "HSV";
176
- })(ColorSpace || (ColorSpace = {}));
177
-
151
+ return ColorSpace;
152
+ }({});
178
153
  export function useInterpolateConfig(inputRange, outputRange) {
179
154
  let colorSpace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ColorSpace.RGB;
180
155
  let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
@@ -190,23 +165,19 @@ export const interpolateSharableColor = (value, interpolateConfig) => {
190
165
  'worklet';
191
166
 
192
167
  let colors = interpolateConfig.value.cache.value;
193
-
194
168
  if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {
195
169
  if (!colors) {
196
170
  colors = getInterpolateRGB(interpolateConfig.value.outputRange);
197
171
  interpolateConfig.value.cache.value = colors;
198
172
  }
199
-
200
173
  return interpolateColorsRGB(value, interpolateConfig.value.inputRange, colors, interpolateConfig.value.options);
201
174
  } else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {
202
175
  if (!colors) {
203
176
  colors = getInterpolateHSV(interpolateConfig.value.outputRange);
204
177
  interpolateConfig.value.cache.value = colors;
205
178
  }
206
-
207
179
  return interpolateColorsHSV(value, interpolateConfig.value.inputRange, colors, interpolateConfig.value.options);
208
180
  }
209
-
210
181
  throw new Error(`Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`);
211
182
  };
212
183
  //# sourceMappingURL=interpolateColor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["hsvToColor","RGBtoHSV","rgbaColor","processColor","red","green","blue","opacity","makeMutable","interpolate","useSharedValue","Extrapolate","EXTEND","CLAMP","IDENTITY","interpolateColorsHSV","value","inputRange","colors","options","h","useCorrectedHSVInterpolation","correctedInputRange","originalH","correctedH","i","length","d","push","s","v","a","toLinearSpace","x","gamma","map","Math","pow","toGammaSpace","round","interpolateColorsRGB","r","outputR","g","outputG","b","outputB","getInterpolateRGB","color","processedColor","undefined","getInterpolateHSV","processedHSVColor","interpolateColor","outputRange","colorSpace","Error","ColorSpace","useInterpolateConfig","RGB","cache","interpolateSharableColor","interpolateConfig","HSV"],"sources":["interpolateColor.ts"],"sourcesContent":["import {\n hsvToColor,\n RGBtoHSV,\n rgbaColor,\n processColor,\n red,\n green,\n blue,\n opacity,\n} from './Colors';\nimport { makeMutable } from './core';\nimport { interpolate } from './interpolation';\nimport { SharedValue } from './commonTypes';\nimport { useSharedValue } from './hook/useSharedValue';\n\nexport const Extrapolate = {\n EXTEND: 'extend',\n CLAMP: 'clamp',\n IDENTITY: 'identity',\n};\n\nexport type InterpolationOptions = {\n gamma?: number;\n useCorrectedHSVInterpolation?: boolean;\n};\n\nconst interpolateColorsHSV = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateHSV,\n options: InterpolationOptions\n) => {\n 'worklet';\n let h = 0;\n const { useCorrectedHSVInterpolation = true } = options;\n if (useCorrectedHSVInterpolation) {\n // if the difference between hues in a range is > 180 deg\n // then move the hue at the right end of the range +/- 360 deg\n // and add the next point in the original place + 0.00001 with original hue\n // to not break the next range\n const correctedInputRange = [inputRange[0]];\n const originalH = colors.h;\n const correctedH = [originalH[0]];\n\n for (let i = 1; i < originalH.length; ++i) {\n const d = originalH[i] - originalH[i - 1];\n if (originalH[i] > originalH[i - 1] && d > 0.5) {\n correctedInputRange.push(inputRange[i]);\n correctedInputRange.push(inputRange[i] + 0.00001);\n correctedH.push(originalH[i] - 1);\n correctedH.push(originalH[i]);\n } else if (originalH[i] < originalH[i - 1] && d < -0.5) {\n correctedInputRange.push(inputRange[i]);\n correctedInputRange.push(inputRange[i] + 0.00001);\n correctedH.push(originalH[i] + 1);\n correctedH.push(originalH[i]);\n } else {\n correctedInputRange.push(inputRange[i]);\n correctedH.push(originalH[i]);\n }\n }\n h =\n (interpolate(value, correctedInputRange, correctedH, Extrapolate.CLAMP) +\n 1) %\n 1;\n } else {\n h = interpolate(value, inputRange, colors.h, Extrapolate.CLAMP);\n }\n const s = interpolate(value, inputRange, colors.s, Extrapolate.CLAMP);\n const v = interpolate(value, inputRange, colors.v, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n return hsvToColor(h, s, v, a);\n};\n\nconst toLinearSpace = (x: number[], gamma: number): number[] => {\n 'worklet';\n return x.map((v) => Math.pow(v / 255, gamma));\n};\n\nconst toGammaSpace = (x: number, gamma: number): number => {\n 'worklet';\n return Math.round(Math.pow(x, 1 / gamma) * 255);\n};\n\nconst interpolateColorsRGB = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateRGB,\n options: InterpolationOptions\n) => {\n 'worklet';\n const { gamma = 2.2 } = options;\n let { r: outputR, g: outputG, b: outputB } = colors;\n if (gamma !== 1) {\n outputR = toLinearSpace(outputR, gamma);\n outputG = toLinearSpace(outputG, gamma);\n outputB = toLinearSpace(outputB, gamma);\n }\n const r = interpolate(value, inputRange, outputR, Extrapolate.CLAMP);\n const g = interpolate(value, inputRange, outputG, Extrapolate.CLAMP);\n const b = interpolate(value, inputRange, outputB, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n if (gamma === 1) {\n return rgbaColor(r, g, b, a);\n }\n return rgbaColor(\n toGammaSpace(r, gamma),\n toGammaSpace(g, gamma),\n toGammaSpace(b, gamma),\n a\n );\n};\n\ninterface InterpolateRGB {\n r: number[];\n g: number[];\n b: number[];\n a: number[];\n}\n\nconst getInterpolateRGB = (\n colors: readonly (string | number)[]\n): InterpolateRGB => {\n 'worklet';\n\n const r = [];\n const g = [];\n const b = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color);\n // explicit check in case if processedColor is 0\n if (processedColor !== null && processedColor !== undefined) {\n r.push(red(processedColor));\n g.push(green(processedColor));\n b.push(blue(processedColor));\n a.push(opacity(processedColor));\n }\n }\n return { r, g, b, a };\n};\n\ninterface InterpolateHSV {\n h: number[];\n s: number[];\n v: number[];\n a: number[];\n}\n\nconst getInterpolateHSV = (\n colors: readonly (string | number)[]\n): InterpolateHSV => {\n 'worklet';\n const h = [];\n const s = [];\n const v = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color) as any;\n if (typeof processedColor === 'number') {\n const processedHSVColor = RGBtoHSV(\n red(processedColor),\n green(processedColor),\n blue(processedColor)\n );\n\n h.push(processedHSVColor.h);\n s.push(processedHSVColor.s);\n v.push(processedHSVColor.v);\n a.push(opacity(processedColor));\n }\n }\n return { h, s, v, a };\n};\n\nexport const interpolateColor = (\n value: number,\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace: 'RGB' | 'HSV' = 'RGB',\n options: InterpolationOptions = {}\n): string | number => {\n 'worklet';\n if (colorSpace === 'HSV') {\n return interpolateColorsHSV(\n value,\n inputRange,\n getInterpolateHSV(outputRange),\n options\n );\n } else if (colorSpace === 'RGB') {\n return interpolateColorsRGB(\n value,\n inputRange,\n getInterpolateRGB(outputRange),\n options\n );\n }\n throw new Error(\n `Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n\nexport enum ColorSpace {\n RGB = 0,\n HSV = 1,\n}\n\nexport interface InterpolateConfig {\n inputRange: readonly number[];\n outputRange: readonly (string | number)[];\n colorSpace: ColorSpace;\n cache: SharedValue<InterpolateRGB | InterpolateHSV | null>;\n options: InterpolationOptions;\n}\n\nexport function useInterpolateConfig(\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace = ColorSpace.RGB,\n options: InterpolationOptions = {}\n): SharedValue<InterpolateConfig> {\n return useSharedValue<InterpolateConfig>({\n inputRange,\n outputRange,\n colorSpace,\n cache: makeMutable<InterpolateRGB | InterpolateHSV | null>(null),\n options,\n });\n}\n\nexport const interpolateSharableColor = (\n value: number,\n interpolateConfig: SharedValue<InterpolateConfig>\n): string | number => {\n 'worklet';\n let colors = interpolateConfig.value.cache.value;\n if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {\n if (!colors) {\n colors = getInterpolateRGB(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsRGB(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateRGB,\n interpolateConfig.value.options\n );\n } else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {\n if (!colors) {\n colors = getInterpolateHSV(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsHSV(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateHSV,\n interpolateConfig.value.options\n );\n }\n throw new Error(\n `Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["hsvToColor","RGBtoHSV","rgbaColor","processColor","red","green","blue","opacity","makeMutable","interpolate","useSharedValue","Extrapolate","EXTEND","CLAMP","IDENTITY","interpolateColorsHSV","value","inputRange","colors","options","h","useCorrectedHSVInterpolation","correctedInputRange","originalH","correctedH","i","length","d","push","s","v","a","toLinearSpace","x","gamma","map","Math","pow","toGammaSpace","round","interpolateColorsRGB","r","outputR","g","outputG","b","outputB","getInterpolateRGB","color","processedColor","undefined","getInterpolateHSV","processedHSVColor","interpolateColor","outputRange","colorSpace","arguments","Error","ColorSpace","useInterpolateConfig","RGB","cache","interpolateSharableColor","interpolateConfig","HSV"],"sources":["interpolateColor.ts"],"sourcesContent":["import {\n hsvToColor,\n RGBtoHSV,\n rgbaColor,\n processColor,\n red,\n green,\n blue,\n opacity,\n} from './Colors';\nimport { makeMutable } from './core';\nimport { interpolate } from './interpolation';\nimport { SharedValue } from './commonTypes';\nimport { useSharedValue } from './hook/useSharedValue';\n\nexport const Extrapolate = {\n EXTEND: 'extend',\n CLAMP: 'clamp',\n IDENTITY: 'identity',\n};\n\nexport type InterpolationOptions = {\n gamma?: number;\n useCorrectedHSVInterpolation?: boolean;\n};\n\nconst interpolateColorsHSV = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateHSV,\n options: InterpolationOptions\n) => {\n 'worklet';\n let h = 0;\n const { useCorrectedHSVInterpolation = true } = options;\n if (useCorrectedHSVInterpolation) {\n // if the difference between hues in a range is > 180 deg\n // then move the hue at the right end of the range +/- 360 deg\n // and add the next point in the original place + 0.00001 with original hue\n // to not break the next range\n const correctedInputRange = [inputRange[0]];\n const originalH = colors.h;\n const correctedH = [originalH[0]];\n\n for (let i = 1; i < originalH.length; ++i) {\n const d = originalH[i] - originalH[i - 1];\n if (originalH[i] > originalH[i - 1] && d > 0.5) {\n correctedInputRange.push(inputRange[i]);\n correctedInputRange.push(inputRange[i] + 0.00001);\n correctedH.push(originalH[i] - 1);\n correctedH.push(originalH[i]);\n } else if (originalH[i] < originalH[i - 1] && d < -0.5) {\n correctedInputRange.push(inputRange[i]);\n correctedInputRange.push(inputRange[i] + 0.00001);\n correctedH.push(originalH[i] + 1);\n correctedH.push(originalH[i]);\n } else {\n correctedInputRange.push(inputRange[i]);\n correctedH.push(originalH[i]);\n }\n }\n h =\n (interpolate(value, correctedInputRange, correctedH, Extrapolate.CLAMP) +\n 1) %\n 1;\n } else {\n h = interpolate(value, inputRange, colors.h, Extrapolate.CLAMP);\n }\n const s = interpolate(value, inputRange, colors.s, Extrapolate.CLAMP);\n const v = interpolate(value, inputRange, colors.v, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n return hsvToColor(h, s, v, a);\n};\n\nconst toLinearSpace = (x: number[], gamma: number): number[] => {\n 'worklet';\n return x.map((v) => Math.pow(v / 255, gamma));\n};\n\nconst toGammaSpace = (x: number, gamma: number): number => {\n 'worklet';\n return Math.round(Math.pow(x, 1 / gamma) * 255);\n};\n\nconst interpolateColorsRGB = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateRGB,\n options: InterpolationOptions\n) => {\n 'worklet';\n const { gamma = 2.2 } = options;\n let { r: outputR, g: outputG, b: outputB } = colors;\n if (gamma !== 1) {\n outputR = toLinearSpace(outputR, gamma);\n outputG = toLinearSpace(outputG, gamma);\n outputB = toLinearSpace(outputB, gamma);\n }\n const r = interpolate(value, inputRange, outputR, Extrapolate.CLAMP);\n const g = interpolate(value, inputRange, outputG, Extrapolate.CLAMP);\n const b = interpolate(value, inputRange, outputB, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n if (gamma === 1) {\n return rgbaColor(r, g, b, a);\n }\n return rgbaColor(\n toGammaSpace(r, gamma),\n toGammaSpace(g, gamma),\n toGammaSpace(b, gamma),\n a\n );\n};\n\ninterface InterpolateRGB {\n r: number[];\n g: number[];\n b: number[];\n a: number[];\n}\n\nconst getInterpolateRGB = (\n colors: readonly (string | number)[]\n): InterpolateRGB => {\n 'worklet';\n\n const r = [];\n const g = [];\n const b = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color);\n // explicit check in case if processedColor is 0\n if (processedColor !== null && processedColor !== undefined) {\n r.push(red(processedColor));\n g.push(green(processedColor));\n b.push(blue(processedColor));\n a.push(opacity(processedColor));\n }\n }\n return { r, g, b, a };\n};\n\ninterface InterpolateHSV {\n h: number[];\n s: number[];\n v: number[];\n a: number[];\n}\n\nconst getInterpolateHSV = (\n colors: readonly (string | number)[]\n): InterpolateHSV => {\n 'worklet';\n const h = [];\n const s = [];\n const v = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color) as any;\n if (typeof processedColor === 'number') {\n const processedHSVColor = RGBtoHSV(\n red(processedColor),\n green(processedColor),\n blue(processedColor)\n );\n\n h.push(processedHSVColor.h);\n s.push(processedHSVColor.s);\n v.push(processedHSVColor.v);\n a.push(opacity(processedColor));\n }\n }\n return { h, s, v, a };\n};\n\nexport const interpolateColor = (\n value: number,\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace: 'RGB' | 'HSV' = 'RGB',\n options: InterpolationOptions = {}\n): string | number => {\n 'worklet';\n if (colorSpace === 'HSV') {\n return interpolateColorsHSV(\n value,\n inputRange,\n getInterpolateHSV(outputRange),\n options\n );\n } else if (colorSpace === 'RGB') {\n return interpolateColorsRGB(\n value,\n inputRange,\n getInterpolateRGB(outputRange),\n options\n );\n }\n throw new Error(\n `Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n\nexport enum ColorSpace {\n RGB = 0,\n HSV = 1,\n}\n\nexport interface InterpolateConfig {\n inputRange: readonly number[];\n outputRange: readonly (string | number)[];\n colorSpace: ColorSpace;\n cache: SharedValue<InterpolateRGB | InterpolateHSV | null>;\n options: InterpolationOptions;\n}\n\nexport function useInterpolateConfig(\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace = ColorSpace.RGB,\n options: InterpolationOptions = {}\n): SharedValue<InterpolateConfig> {\n return useSharedValue<InterpolateConfig>({\n inputRange,\n outputRange,\n colorSpace,\n cache: makeMutable<InterpolateRGB | InterpolateHSV | null>(null),\n options,\n });\n}\n\nexport const interpolateSharableColor = (\n value: number,\n interpolateConfig: SharedValue<InterpolateConfig>\n): string | number => {\n 'worklet';\n let colors = interpolateConfig.value.cache.value;\n if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {\n if (!colors) {\n colors = getInterpolateRGB(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsRGB(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateRGB,\n interpolateConfig.value.options\n );\n } else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {\n if (!colors) {\n colors = getInterpolateHSV(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsHSV(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateHSV,\n interpolateConfig.value.options\n );\n }\n throw new Error(\n `Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n"],"mappings":"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"}
@@ -1,63 +1,55 @@
1
- export let Extrapolation;
2
-
3
- (function (Extrapolation) {
1
+ export let Extrapolation = /*#__PURE__*/function (Extrapolation) {
4
2
  Extrapolation["IDENTITY"] = "identity";
5
3
  Extrapolation["CLAMP"] = "clamp";
6
4
  Extrapolation["EXTEND"] = "extend";
7
- })(Extrapolation || (Extrapolation = {}));
8
-
5
+ return Extrapolation;
6
+ }({});
9
7
  function getVal(type, coef, val, leftEdgeOutput, rightEdgeOutput, x) {
10
8
  'worklet';
11
9
 
12
10
  switch (type) {
13
11
  case Extrapolation.IDENTITY:
14
12
  return x;
15
-
16
13
  case Extrapolation.CLAMP:
17
14
  if (coef * val < coef * leftEdgeOutput) {
18
15
  return leftEdgeOutput;
19
16
  }
20
-
21
17
  return rightEdgeOutput;
22
-
23
18
  case Extrapolation.EXTEND:
24
19
  default:
25
20
  return val;
26
21
  }
27
22
  }
28
-
29
23
  function isExtrapolate(value) {
30
24
  'worklet';
31
25
 
32
26
  return value === Extrapolation.EXTEND || value === Extrapolation.CLAMP || value === Extrapolation.IDENTITY;
33
- } // validates extrapolations type
34
- // if type is correct, converts it to ExtrapolationConfig
35
-
27
+ }
36
28
 
29
+ // validates extrapolations type
30
+ // if type is correct, converts it to ExtrapolationConfig
37
31
  function validateType(type) {
38
- 'worklet'; // initialize extrapolationConfig with default extrapolation
32
+ 'worklet';
39
33
 
34
+ // initialize extrapolationConfig with default extrapolation
40
35
  const extrapolationConfig = {
41
36
  extrapolateLeft: Extrapolation.EXTEND,
42
37
  extrapolateRight: Extrapolation.EXTEND
43
38
  };
44
-
45
39
  if (!type) {
46
40
  return extrapolationConfig;
47
41
  }
48
-
49
42
  if (typeof type === 'string') {
50
43
  if (!isExtrapolate(type)) {
51
44
  throw new Error(`Reanimated: not supported value for "interpolate" \nSupported values: ["extend", "clamp", "identity", Extrapolatation.CLAMP, Extrapolatation.EXTEND, Extrapolatation.IDENTITY]\n Valid example:
52
45
  interpolate(value, [inputRange], [outputRange], "clamp")`);
53
46
  }
54
-
55
47
  extrapolationConfig.extrapolateLeft = type;
56
48
  extrapolationConfig.extrapolateRight = type;
57
49
  return extrapolationConfig;
58
- } // otherwise type is extrapolation config object
59
-
50
+ }
60
51
 
52
+ // otherwise type is extrapolation config object
61
53
  if (type.extrapolateLeft && !isExtrapolate(type.extrapolateLeft) || type.extrapolateRight && !isExtrapolate(type.extrapolateRight)) {
62
54
  throw new Error(`Reanimated: not supported value for "interpolate" \nSupported values: ["extend", "clamp", "identity", Extrapolatation.CLAMP, Extrapolatation.EXTEND, Extrapolatation.IDENTITY]\n Valid example:
63
55
  interpolate(value, [inputRange], [outputRange], {
@@ -65,11 +57,9 @@ function validateType(type) {
65
57
  extrapolateRight: Extrapolation.IDENTITY
66
58
  }})`);
67
59
  }
68
-
69
60
  Object.assign(extrapolationConfig, type);
70
61
  return extrapolationConfig;
71
62
  }
72
-
73
63
  function internalInterpolate(x, narrowedInput, extrapolationConfig) {
74
64
  'worklet';
75
65
 
@@ -83,25 +73,22 @@ function internalInterpolate(x, narrowedInput, extrapolationConfig) {
83
73
  const progress = (x - leftEdgeInput) / (rightEdgeInput - leftEdgeInput);
84
74
  const val = leftEdgeOutput + progress * (rightEdgeOutput - leftEdgeOutput);
85
75
  const coef = rightEdgeOutput >= leftEdgeOutput ? 1 : -1;
86
-
87
76
  if (coef * val < coef * leftEdgeOutput) {
88
77
  return getVal(extrapolationConfig.extrapolateLeft, coef, val, leftEdgeOutput, rightEdgeOutput, x);
89
78
  } else if (coef * val > coef * rightEdgeOutput) {
90
79
  return getVal(extrapolationConfig.extrapolateRight, coef, val, leftEdgeOutput, rightEdgeOutput, x);
91
80
  }
92
-
93
81
  return val;
94
- } // TODO: support default values in worklets:
95
- // e.g. function interpolate(x, input, output, type = Extrapolatation.CLAMP)
96
-
82
+ }
97
83
 
84
+ // TODO: support default values in worklets:
85
+ // e.g. function interpolate(x, input, output, type = Extrapolatation.CLAMP)
98
86
  export function interpolate(x, input, output, type) {
99
87
  'worklet';
100
88
 
101
89
  if (input.length < 2 || output.length < 2) {
102
90
  throw Error('Interpolation input and output should contain at least two values.');
103
91
  }
104
-
105
92
  const extrapolationConfig = validateType(type);
106
93
  const length = input.length;
107
94
  const narrowedInput = {
@@ -110,7 +97,6 @@ export function interpolate(x, input, output, type) {
110
97
  leftEdgeOutput: output[0],
111
98
  rightEdgeOutput: output[1]
112
99
  };
113
-
114
100
  if (length > 2) {
115
101
  if (x > input[length - 1]) {
116
102
  narrowedInput.leftEdgeInput = input[length - 2];
@@ -129,7 +115,6 @@ export function interpolate(x, input, output, type) {
129
115
  }
130
116
  }
131
117
  }
132
-
133
118
  return internalInterpolate(x, narrowedInput, extrapolationConfig);
134
119
  }
135
120
  //# sourceMappingURL=interpolation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Extrapolation","getVal","type","coef","val","leftEdgeOutput","rightEdgeOutput","x","IDENTITY","CLAMP","EXTEND","isExtrapolate","value","validateType","extrapolationConfig","extrapolateLeft","extrapolateRight","Error","Object","assign","internalInterpolate","narrowedInput","leftEdgeInput","rightEdgeInput","progress","interpolate","input","output","length","i"],"sources":["interpolation.ts"],"sourcesContent":["export enum Extrapolation {\n IDENTITY = 'identity',\n CLAMP = 'clamp',\n EXTEND = 'extend',\n}\n\ninterface InterpolationNarrowedInput {\n leftEdgeInput: number;\n rightEdgeInput: number;\n leftEdgeOutput: number;\n rightEdgeOutput: number;\n}\n\nexport interface ExtrapolationConfig {\n extrapolateLeft?: Extrapolation | string;\n extrapolateRight?: Extrapolation | string;\n}\n\ninterface RequiredExtrapolationConfig {\n extrapolateLeft: Extrapolation;\n extrapolateRight: Extrapolation;\n}\n\nexport type ExtrapolationType =\n | ExtrapolationConfig\n | Extrapolation\n | string\n | undefined;\n\nfunction getVal(\n type: Extrapolation,\n coef: number,\n val: number,\n leftEdgeOutput: number,\n rightEdgeOutput: number,\n x: number\n): number {\n 'worklet';\n\n switch (type) {\n case Extrapolation.IDENTITY:\n return x;\n case Extrapolation.CLAMP:\n if (coef * val < coef * leftEdgeOutput) {\n return leftEdgeOutput;\n }\n return rightEdgeOutput;\n case Extrapolation.EXTEND:\n default:\n return val;\n }\n}\n\nfunction isExtrapolate(value: string): value is Extrapolation {\n 'worklet';\n\n return (\n value === Extrapolation.EXTEND ||\n value === Extrapolation.CLAMP ||\n value === Extrapolation.IDENTITY\n );\n}\n\n// validates extrapolations type\n// if type is correct, converts it to ExtrapolationConfig\nfunction validateType(type: ExtrapolationType): RequiredExtrapolationConfig {\n 'worklet';\n // initialize extrapolationConfig with default extrapolation\n const extrapolationConfig: RequiredExtrapolationConfig = {\n extrapolateLeft: Extrapolation.EXTEND,\n extrapolateRight: Extrapolation.EXTEND,\n };\n\n if (!type) {\n return extrapolationConfig;\n }\n\n if (typeof type === 'string') {\n if (!isExtrapolate(type)) {\n throw new Error(\n `Reanimated: not supported value for \"interpolate\" \\nSupported values: [\"extend\", \"clamp\", \"identity\", Extrapolatation.CLAMP, Extrapolatation.EXTEND, Extrapolatation.IDENTITY]\\n Valid example:\n interpolate(value, [inputRange], [outputRange], \"clamp\")`\n );\n }\n extrapolationConfig.extrapolateLeft = type;\n extrapolationConfig.extrapolateRight = type;\n return extrapolationConfig;\n }\n\n // otherwise type is extrapolation config object\n if (\n (type.extrapolateLeft && !isExtrapolate(type.extrapolateLeft)) ||\n (type.extrapolateRight && !isExtrapolate(type.extrapolateRight))\n ) {\n throw new Error(\n `Reanimated: not supported value for \"interpolate\" \\nSupported values: [\"extend\", \"clamp\", \"identity\", Extrapolatation.CLAMP, Extrapolatation.EXTEND, Extrapolatation.IDENTITY]\\n Valid example:\n interpolate(value, [inputRange], [outputRange], {\n extrapolateLeft: Extrapolation.CLAMP,\n extrapolateRight: Extrapolation.IDENTITY\n }})`\n );\n }\n\n Object.assign(extrapolationConfig, type);\n return extrapolationConfig;\n}\n\nfunction internalInterpolate(\n x: number,\n narrowedInput: InterpolationNarrowedInput,\n extrapolationConfig: RequiredExtrapolationConfig\n) {\n 'worklet';\n const { leftEdgeInput, rightEdgeInput, leftEdgeOutput, rightEdgeOutput } =\n narrowedInput;\n if (rightEdgeInput - leftEdgeInput === 0) return leftEdgeOutput;\n const progress = (x - leftEdgeInput) / (rightEdgeInput - leftEdgeInput);\n const val = leftEdgeOutput + progress * (rightEdgeOutput - leftEdgeOutput);\n const coef = rightEdgeOutput >= leftEdgeOutput ? 1 : -1;\n\n if (coef * val < coef * leftEdgeOutput) {\n return getVal(\n extrapolationConfig.extrapolateLeft,\n coef,\n val,\n leftEdgeOutput,\n rightEdgeOutput,\n x\n );\n } else if (coef * val > coef * rightEdgeOutput) {\n return getVal(\n extrapolationConfig.extrapolateRight,\n coef,\n val,\n leftEdgeOutput,\n rightEdgeOutput,\n x\n );\n }\n\n return val;\n}\n\n// TODO: support default values in worklets:\n// e.g. function interpolate(x, input, output, type = Extrapolatation.CLAMP)\nexport function interpolate(\n x: number,\n input: readonly number[],\n output: readonly number[],\n type?: ExtrapolationType\n): number {\n 'worklet';\n if (input.length < 2 || output.length < 2) {\n throw Error(\n 'Interpolation input and output should contain at least two values.'\n );\n }\n\n const extrapolationConfig = validateType(type);\n const length = input.length;\n const narrowedInput: InterpolationNarrowedInput = {\n leftEdgeInput: input[0],\n rightEdgeInput: input[1],\n leftEdgeOutput: output[0],\n rightEdgeOutput: output[1],\n };\n if (length > 2) {\n if (x > input[length - 1]) {\n narrowedInput.leftEdgeInput = input[length - 2];\n narrowedInput.rightEdgeInput = input[length - 1];\n narrowedInput.leftEdgeOutput = output[length - 2];\n narrowedInput.rightEdgeOutput = output[length - 1];\n } else {\n for (let i = 1; i < length; ++i) {\n if (x <= input[i]) {\n narrowedInput.leftEdgeInput = input[i - 1];\n narrowedInput.rightEdgeInput = input[i];\n narrowedInput.leftEdgeOutput = output[i - 1];\n narrowedInput.rightEdgeOutput = output[i];\n break;\n }\n }\n }\n }\n\n return internalInterpolate(x, narrowedInput, extrapolationConfig);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Extrapolation","getVal","type","coef","val","leftEdgeOutput","rightEdgeOutput","x","IDENTITY","CLAMP","EXTEND","isExtrapolate","value","validateType","extrapolationConfig","extrapolateLeft","extrapolateRight","Error","Object","assign","internalInterpolate","narrowedInput","leftEdgeInput","rightEdgeInput","progress","interpolate","input","output","length","i"],"sources":["interpolation.ts"],"sourcesContent":["export enum Extrapolation {\n IDENTITY = 'identity',\n CLAMP = 'clamp',\n EXTEND = 'extend',\n}\n\ninterface InterpolationNarrowedInput {\n leftEdgeInput: number;\n rightEdgeInput: number;\n leftEdgeOutput: number;\n rightEdgeOutput: number;\n}\n\nexport interface ExtrapolationConfig {\n extrapolateLeft?: Extrapolation | string;\n extrapolateRight?: Extrapolation | string;\n}\n\ninterface RequiredExtrapolationConfig {\n extrapolateLeft: Extrapolation;\n extrapolateRight: Extrapolation;\n}\n\nexport type ExtrapolationType =\n | ExtrapolationConfig\n | Extrapolation\n | string\n | undefined;\n\nfunction getVal(\n type: Extrapolation,\n coef: number,\n val: number,\n leftEdgeOutput: number,\n rightEdgeOutput: number,\n x: number\n): number {\n 'worklet';\n\n switch (type) {\n case Extrapolation.IDENTITY:\n return x;\n case Extrapolation.CLAMP:\n if (coef * val < coef * leftEdgeOutput) {\n return leftEdgeOutput;\n }\n return rightEdgeOutput;\n case Extrapolation.EXTEND:\n default:\n return val;\n }\n}\n\nfunction isExtrapolate(value: string): value is Extrapolation {\n 'worklet';\n\n return (\n value === Extrapolation.EXTEND ||\n value === Extrapolation.CLAMP ||\n value === Extrapolation.IDENTITY\n );\n}\n\n// validates extrapolations type\n// if type is correct, converts it to ExtrapolationConfig\nfunction validateType(type: ExtrapolationType): RequiredExtrapolationConfig {\n 'worklet';\n // initialize extrapolationConfig with default extrapolation\n const extrapolationConfig: RequiredExtrapolationConfig = {\n extrapolateLeft: Extrapolation.EXTEND,\n extrapolateRight: Extrapolation.EXTEND,\n };\n\n if (!type) {\n return extrapolationConfig;\n }\n\n if (typeof type === 'string') {\n if (!isExtrapolate(type)) {\n throw new Error(\n `Reanimated: not supported value for \"interpolate\" \\nSupported values: [\"extend\", \"clamp\", \"identity\", Extrapolatation.CLAMP, Extrapolatation.EXTEND, Extrapolatation.IDENTITY]\\n Valid example:\n interpolate(value, [inputRange], [outputRange], \"clamp\")`\n );\n }\n extrapolationConfig.extrapolateLeft = type;\n extrapolationConfig.extrapolateRight = type;\n return extrapolationConfig;\n }\n\n // otherwise type is extrapolation config object\n if (\n (type.extrapolateLeft && !isExtrapolate(type.extrapolateLeft)) ||\n (type.extrapolateRight && !isExtrapolate(type.extrapolateRight))\n ) {\n throw new Error(\n `Reanimated: not supported value for \"interpolate\" \\nSupported values: [\"extend\", \"clamp\", \"identity\", Extrapolatation.CLAMP, Extrapolatation.EXTEND, Extrapolatation.IDENTITY]\\n Valid example:\n interpolate(value, [inputRange], [outputRange], {\n extrapolateLeft: Extrapolation.CLAMP,\n extrapolateRight: Extrapolation.IDENTITY\n }})`\n );\n }\n\n Object.assign(extrapolationConfig, type);\n return extrapolationConfig;\n}\n\nfunction internalInterpolate(\n x: number,\n narrowedInput: InterpolationNarrowedInput,\n extrapolationConfig: RequiredExtrapolationConfig\n) {\n 'worklet';\n const { leftEdgeInput, rightEdgeInput, leftEdgeOutput, rightEdgeOutput } =\n narrowedInput;\n if (rightEdgeInput - leftEdgeInput === 0) return leftEdgeOutput;\n const progress = (x - leftEdgeInput) / (rightEdgeInput - leftEdgeInput);\n const val = leftEdgeOutput + progress * (rightEdgeOutput - leftEdgeOutput);\n const coef = rightEdgeOutput >= leftEdgeOutput ? 1 : -1;\n\n if (coef * val < coef * leftEdgeOutput) {\n return getVal(\n extrapolationConfig.extrapolateLeft,\n coef,\n val,\n leftEdgeOutput,\n rightEdgeOutput,\n x\n );\n } else if (coef * val > coef * rightEdgeOutput) {\n return getVal(\n extrapolationConfig.extrapolateRight,\n coef,\n val,\n leftEdgeOutput,\n rightEdgeOutput,\n x\n );\n }\n\n return val;\n}\n\n// TODO: support default values in worklets:\n// e.g. function interpolate(x, input, output, type = Extrapolatation.CLAMP)\nexport function interpolate(\n x: number,\n input: readonly number[],\n output: readonly number[],\n type?: ExtrapolationType\n): number {\n 'worklet';\n if (input.length < 2 || output.length < 2) {\n throw Error(\n 'Interpolation input and output should contain at least two values.'\n );\n }\n\n const extrapolationConfig = validateType(type);\n const length = input.length;\n const narrowedInput: InterpolationNarrowedInput = {\n leftEdgeInput: input[0],\n rightEdgeInput: input[1],\n leftEdgeOutput: output[0],\n rightEdgeOutput: output[1],\n };\n if (length > 2) {\n if (x > input[length - 1]) {\n narrowedInput.leftEdgeInput = input[length - 2];\n narrowedInput.rightEdgeInput = input[length - 1];\n narrowedInput.leftEdgeOutput = output[length - 2];\n narrowedInput.rightEdgeOutput = output[length - 1];\n } else {\n for (let i = 1; i < length; ++i) {\n if (x <= input[i]) {\n narrowedInput.leftEdgeInput = input[i - 1];\n narrowedInput.rightEdgeInput = input[i];\n narrowedInput.leftEdgeOutput = output[i - 1];\n narrowedInput.rightEdgeOutput = output[i];\n break;\n }\n }\n }\n }\n\n return internalInterpolate(x, narrowedInput, extrapolationConfig);\n}\n"],"mappings":"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"}
@@ -1,29 +1,28 @@
1
1
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
2
  // @ts-nocheck
3
+
3
4
  let config = {
4
5
  fps: 60
5
6
  };
6
-
7
7
  const isAnimatedStyle = style => {
8
8
  return !!style.animatedStyle;
9
9
  };
10
-
11
10
  const getAnimatedStyleFromObject = style => {
12
11
  return style.animatedStyle.current.value;
13
12
  };
14
-
15
13
  const getCurrentStyle = received => {
16
14
  const styleObject = received.props.style;
17
15
  let currentStyle = {};
18
-
19
16
  if (Array.isArray(styleObject)) {
20
17
  received.props.style.forEach(style => {
21
18
  if (isAnimatedStyle(style)) {
22
- currentStyle = { ...currentStyle,
19
+ currentStyle = {
20
+ ...currentStyle,
23
21
  ...getAnimatedStyleFromObject(style)
24
22
  };
25
23
  } else {
26
- currentStyle = { ...currentStyle,
24
+ currentStyle = {
25
+ ...currentStyle,
27
26
  ...style
28
27
  };
29
28
  }
@@ -32,19 +31,17 @@ const getCurrentStyle = received => {
32
31
  if (isAnimatedStyle(styleObject)) {
33
32
  currentStyle = getAnimatedStyleFromObject(styleObject);
34
33
  } else {
35
- currentStyle = { ...styleObject,
34
+ currentStyle = {
35
+ ...styleObject,
36
36
  ...received.props.animatedStyle.value
37
37
  };
38
38
  }
39
39
  }
40
-
41
40
  return currentStyle;
42
41
  };
43
-
44
42
  const checkEqual = (currentStyle, expectStyle) => {
45
43
  if (Array.isArray(expectStyle)) {
46
44
  if (expectStyle.length !== currentStyle.length) return false;
47
-
48
45
  for (let i = 0; i < currentStyle.length; i++) {
49
46
  if (!checkEqual(currentStyle[i], expectStyle[i])) {
50
47
  return false;
@@ -59,14 +56,11 @@ const checkEqual = (currentStyle, expectStyle) => {
59
56
  } else {
60
57
  return currentStyle === expectStyle;
61
58
  }
62
-
63
59
  return true;
64
60
  };
65
-
66
61
  const findStyleDiff = (current, expect, requireAllMatch) => {
67
62
  const diffs = [];
68
63
  let isEqual = true;
69
-
70
64
  for (const property in expect) {
71
65
  if (!checkEqual(current[property], expect[property])) {
72
66
  isEqual = false;
@@ -77,10 +71,8 @@ const findStyleDiff = (current, expect, requireAllMatch) => {
77
71
  });
78
72
  }
79
73
  }
80
-
81
74
  if (requireAllMatch && Object.keys(current).length !== Object.keys(expect).length) {
82
75
  isEqual = false;
83
-
84
76
  for (const property in current) {
85
77
  if (expect[property] === undefined) {
86
78
  diffs.push({
@@ -91,13 +83,11 @@ const findStyleDiff = (current, expect, requireAllMatch) => {
91
83
  }
92
84
  }
93
85
  }
94
-
95
86
  return {
96
87
  isEqual,
97
88
  diffs
98
89
  };
99
90
  };
100
-
101
91
  const compareStyle = (received, expectedStyle, config) => {
102
92
  if (!received.props.style) {
103
93
  return {
@@ -105,7 +95,6 @@ const compareStyle = (received, expectedStyle, config) => {
105
95
  pass: false
106
96
  };
107
97
  }
108
-
109
98
  const {
110
99
  exact
111
100
  } = config;
@@ -114,14 +103,12 @@ const compareStyle = (received, expectedStyle, config) => {
114
103
  isEqual,
115
104
  diffs
116
105
  } = findStyleDiff(currentStyle, expectedStyle, exact);
117
-
118
106
  if (isEqual) {
119
107
  return {
120
108
  message: () => 'ok',
121
109
  pass: true
122
110
  };
123
111
  }
124
-
125
112
  const currentStyleStr = JSON.stringify(currentStyle);
126
113
  const expectedStyleStr = JSON.stringify(expectedStyle);
127
114
  const differences = diffs.map(diff => `- '${diff.property}' should be ${JSON.stringify(diff.expect)}, but is ${JSON.stringify(diff.current)}`).join('\n');
@@ -130,18 +117,14 @@ const compareStyle = (received, expectedStyle, config) => {
130
117
  pass: false
131
118
  };
132
119
  };
133
-
134
120
  let frameTime = 1000 / config.fps;
135
-
136
121
  const beforeTest = () => {
137
122
  jest.useFakeTimers();
138
123
  };
139
-
140
124
  const afterTest = () => {
141
125
  jest.runOnlyPendingTimers();
142
126
  jest.useRealTimers();
143
127
  };
144
-
145
128
  export const withReanimatedTimer = animationTest => {
146
129
  console.warn('This method is deprecated, you should define your own before and after test hooks to enable jest.useFakeTimers(). Check out the documentation for details on testing');
147
130
  beforeTest();
@@ -162,30 +145,24 @@ export const advanceAnimationByFrame = count => {
162
145
  export const setUpTests = function () {
163
146
  let userConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
164
147
  let expect = global.expect;
165
-
166
148
  if (expect === undefined) {
167
149
  const expectModule = require('expect');
168
-
169
- expect = expectModule; // Starting from Jest 28, "expect" package uses named exports instead of default export.
150
+ expect = expectModule;
151
+ // Starting from Jest 28, "expect" package uses named exports instead of default export.
170
152
  // So, requiring "expect" package doesn't give direct access to "expect" function anymore.
171
153
  // It gives access to the module object instead.
172
154
  // We use this info to detect if the project uses Jest 28 or higher.
173
-
174
155
  if (typeof expect === 'object') {
175
156
  const jestGlobals = require('@jest/globals');
176
-
177
157
  expect = jestGlobals.expect;
178
158
  }
179
-
180
159
  if (expect === undefined || expect.extend === undefined) {
181
160
  expect = expectModule.default;
182
161
  }
183
162
  }
184
-
185
- require('setimmediate');
186
-
187
163
  frameTime = Math.round(1000 / config.fps);
188
- config = { ...config,
164
+ config = {
165
+ ...config,
189
166
  ...userConfig
190
167
  };
191
168
  expect.extend({
@@ -193,7 +170,6 @@ export const setUpTests = function () {
193
170
  let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
194
171
  return compareStyle(received, expectedStyle, config);
195
172
  }
196
-
197
173
  });
198
174
  };
199
175
  export const getAnimatedStyle = received => {