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
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.initializeUIRuntime = initializeUIRuntime;
7
-
8
7
  var _errors = require("./errors");
9
-
10
8
  var _NativeReanimated = _interopRequireDefault(require("./NativeReanimated"));
11
-
12
9
  var _PlatformChecker = require("./PlatformChecker");
13
-
14
10
  var _threads = require("./threads");
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  // callGuard is only used with debug builds
19
13
  function callGuardDEV(fn) {
20
14
  'worklet';
@@ -22,38 +16,31 @@ function callGuardDEV(fn) {
22
16
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
23
17
  args[_key - 1] = arguments[_key];
24
18
  }
25
-
26
19
  try {
27
20
  fn(...args);
28
21
  } catch (e) {
29
- if (global.ErrorUtils) {
30
- global.ErrorUtils.reportFatalError(e);
22
+ if (global.__ErrorUtils) {
23
+ global.__ErrorUtils.reportFatalError(e);
31
24
  } else {
32
25
  throw e;
33
26
  }
34
27
  }
35
28
  }
36
-
37
29
  function valueUnpacker(objectToUnpack, category) {
38
30
  'worklet';
39
31
 
40
32
  let workletsCache = global.__workletsCache;
41
33
  let handleCache = global.__handleCache;
42
-
43
34
  if (workletsCache === undefined) {
44
35
  // init
45
36
  workletsCache = global.__workletsCache = new Map();
46
37
  handleCache = global.__handleCache = new WeakMap();
47
38
  }
48
-
49
39
  const workletHash = objectToUnpack.__workletHash;
50
-
51
40
  if (workletHash !== undefined) {
52
41
  let workletFun = workletsCache.get(workletHash);
53
-
54
42
  if (workletFun === undefined) {
55
43
  const initData = objectToUnpack.__initData;
56
-
57
44
  if (global.evalWithSourceMap) {
58
45
  // if the runtime (hermes only for now) supports loading source maps
59
46
  // we want to use the proper filename for the location as it guarantees
@@ -71,21 +58,17 @@ function valueUnpacker(objectToUnpack, category) {
71
58
  // eslint-disable-next-line no-eval
72
59
  workletFun = eval('(' + initData.code + '\n)');
73
60
  }
74
-
75
61
  workletsCache.set(workletHash, workletFun);
76
62
  }
77
-
78
63
  const functionInstance = workletFun.bind(objectToUnpack);
79
64
  objectToUnpack._recur = functionInstance;
80
65
  return functionInstance;
81
66
  } else if (objectToUnpack.__init) {
82
67
  let value = handleCache.get(objectToUnpack);
83
-
84
68
  if (value === undefined) {
85
69
  value = objectToUnpack.__init();
86
70
  handleCache.set(objectToUnpack, value);
87
71
  }
88
-
89
72
  return value;
90
73
  } else if (category === 'RemoteFunction') {
91
74
  const fun = () => {
@@ -95,32 +78,28 @@ Possible solutions are:
95
78
  a) If you want to synchronously execute this method, mark it as a worklet
96
79
  b) If you want to execute this function on the JS thread, wrap it using \`runOnJS\``);
97
80
  };
98
-
99
81
  fun.__remoteFunction = objectToUnpack;
100
82
  return fun;
101
83
  } else {
102
84
  throw new Error('data type not recognized by unpack method');
103
85
  }
104
86
  }
105
-
106
87
  function setupRequestAnimationFrame() {
107
- 'worklet'; // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden
108
- // so we avoid doing requestAnimationFrame batching in Jest environment.
88
+ 'worklet';
109
89
 
90
+ // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden
91
+ // so we avoid doing requestAnimationFrame batching in Jest environment.
110
92
  const nativeRequestAnimationFrame = global.requestAnimationFrame;
111
93
  let animationFrameCallbacks = [];
112
94
  let lastNativeAnimationFrameTimestamp = -1;
113
-
114
95
  global.__flushAnimationFrame = frameTimestamp => {
115
96
  const currentCallbacks = animationFrameCallbacks;
116
97
  animationFrameCallbacks = [];
117
98
  currentCallbacks.forEach(f => f(frameTimestamp));
118
- (0, _threads.flushImmediates)();
99
+ (0, _threads.callMicrotasks)();
119
100
  };
120
-
121
101
  global.requestAnimationFrame = callback => {
122
102
  animationFrameCallbacks.push(callback);
123
-
124
103
  if (animationFrameCallbacks.length === 1) {
125
104
  // We schedule native requestAnimationFrame only when the first callback
126
105
  // is added and then use it to execute all the enqueued callbacks. Once
@@ -130,29 +109,22 @@ function setupRequestAnimationFrame() {
130
109
  // Make sure we only execute the callbacks once for a given frame
131
110
  return;
132
111
  }
133
-
134
112
  lastNativeAnimationFrameTimestamp = timestamp;
135
113
  global.__frameTimestamp = timestamp;
136
-
137
114
  global.__flushAnimationFrame(timestamp);
138
-
139
115
  global.__frameTimestamp = undefined;
140
116
  });
141
- } // Reanimated currently does not support cancelling callbacks requested with
117
+ }
118
+ // Reanimated currently does not support cancelling callbacks requested with
142
119
  // requestAnimationFrame. We return -1 as identifier which isn't in line
143
120
  // with the spec but it should give users better clue in case they actually
144
121
  // attempt to store the value returned from rAF and use it for cancelling.
145
-
146
-
147
122
  return -1;
148
123
  };
149
124
  }
150
-
151
125
  function initializeUIRuntime() {
152
126
  _NativeReanimated.default.installCoreFunctions(callGuardDEV, valueUnpacker);
153
-
154
127
  const IS_JEST = (0, _PlatformChecker.isJest)();
155
-
156
128
  if (IS_JEST) {
157
129
  // requestAnimationFrame react-native jest's setup is incorrect as it polyfills
158
130
  // the method directly using setTimeout, therefore the callback doesn't get the
@@ -165,30 +137,36 @@ function initializeUIRuntime() {
165
137
  };
166
138
  }
167
139
 
168
- const capturableConsole = console;
140
+ // We really have to create a copy of console here. Function runOnJS we use on elements inside
141
+ // this object makes it not configurable
142
+ const capturableConsole = {
143
+ ...console
144
+ };
169
145
  (0, _threads.runOnUIImmediately)(() => {
170
- 'worklet'; // setup error handler
146
+ 'worklet';
171
147
 
172
- global.ErrorUtils = {
148
+ // setup error handler
149
+ global.__ErrorUtils = {
173
150
  reportFatalError: error => {
174
151
  (0, _threads.runOnJS)(_errors.reportFatalErrorOnJS)({
175
152
  message: error.message,
176
153
  stack: error.stack
177
154
  });
178
155
  }
179
- }; // setup console
180
- // @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version
156
+ };
181
157
 
158
+ // setup console
159
+ // @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version
182
160
  global.console = {
161
+ assert: (0, _threads.runOnJS)(capturableConsole.assert),
183
162
  debug: (0, _threads.runOnJS)(capturableConsole.debug),
184
163
  log: (0, _threads.runOnJS)(capturableConsole.log),
185
164
  warn: (0, _threads.runOnJS)(capturableConsole.warn),
186
165
  error: (0, _threads.runOnJS)(capturableConsole.error),
187
166
  info: (0, _threads.runOnJS)(capturableConsole.info)
188
167
  };
189
-
190
168
  if (!IS_JEST) {
191
- (0, _threads.setupSetImmediate)();
169
+ (0, _threads.setupMicrotasks)();
192
170
  setupRequestAnimationFrame();
193
171
  }
194
172
  })();
@@ -1 +1 @@
1
- {"version":3,"names":["callGuardDEV","fn","args","e","global","ErrorUtils","reportFatalError","valueUnpacker","objectToUnpack","category","workletsCache","__workletsCache","handleCache","__handleCache","undefined","Map","WeakMap","workletHash","__workletHash","workletFun","get","initData","__initData","evalWithSourceMap","code","location","sourceMap","evalWithSourceUrl","eval","set","functionInstance","bind","_recur","__init","value","fun","Error","__remoteFunction","setupRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","animationFrameCallbacks","lastNativeAnimationFrameTimestamp","__flushAnimationFrame","frameTimestamp","currentCallbacks","forEach","f","flushImmediates","callback","push","length","timestamp","__frameTimestamp","initializeUIRuntime","NativeReanimatedModule","installCoreFunctions","IS_JEST","isJest","setTimeout","performance","now","capturableConsole","console","runOnUIImmediately","error","runOnJS","reportFatalErrorOnJS","message","stack","debug","log","warn","info","setupSetImmediate"],"sources":["initializers.ts"],"sourcesContent":["import { reportFatalErrorOnJS } from './errors';\nimport NativeReanimatedModule from './NativeReanimated';\nimport { isJest } from './PlatformChecker';\nimport {\n runOnJS,\n setupSetImmediate,\n flushImmediates,\n runOnUIImmediately,\n} from './threads';\n\n// callGuard is only used with debug builds\nfunction callGuardDEV<T extends Array<any>, U>(\n fn: (...args: T) => U,\n ...args: T\n): void {\n 'worklet';\n try {\n fn(...args);\n } catch (e) {\n if (global.ErrorUtils) {\n global.ErrorUtils.reportFatalError(e as Error);\n } else {\n throw e;\n }\n }\n}\n\nfunction valueUnpacker(objectToUnpack: any, category?: string): any {\n 'worklet';\n let workletsCache = global.__workletsCache;\n let handleCache = global.__handleCache;\n if (workletsCache === undefined) {\n // init\n workletsCache = global.__workletsCache = new Map();\n handleCache = global.__handleCache = new WeakMap();\n }\n const workletHash = objectToUnpack.__workletHash;\n if (workletHash !== undefined) {\n let workletFun = workletsCache.get(workletHash);\n if (workletFun === undefined) {\n const initData = objectToUnpack.__initData;\n if (global.evalWithSourceMap) {\n // if the runtime (hermes only for now) supports loading source maps\n // we want to use the proper filename for the location as it guarantees\n // that debugger understands and loads the source code of the file where\n // the worklet is defined.\n workletFun = global.evalWithSourceMap(\n '(' + initData.code + '\\n)',\n initData.location,\n initData.sourceMap\n ) as (...args: any[]) => any;\n } else if (global.evalWithSourceUrl) {\n // if the runtime doesn't support loading source maps, in dev mode we\n // can pass source url when evaluating the worklet. Now, instead of using\n // the actual file location we use worklet hash, as it the allows us to\n // properly symbolicate traces (see errors.ts for details)\n workletFun = global.evalWithSourceUrl(\n '(' + initData.code + '\\n)',\n `worklet_${workletHash}`\n ) as (...args: any[]) => any;\n } else {\n // in release we use the regular eval to save on JSI calls\n // eslint-disable-next-line no-eval\n workletFun = eval('(' + initData.code + '\\n)') as (\n ...args: any[]\n ) => any;\n }\n workletsCache.set(workletHash, workletFun);\n }\n const functionInstance = workletFun.bind(objectToUnpack);\n objectToUnpack._recur = functionInstance;\n return functionInstance;\n } else if (objectToUnpack.__init) {\n let value = handleCache!.get(objectToUnpack);\n if (value === undefined) {\n value = objectToUnpack.__init();\n handleCache!.set(objectToUnpack, value);\n }\n return value;\n } else if (category === 'RemoteFunction') {\n const fun = () => {\n throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.\n\nPossible solutions are:\n a) If you want to synchronously execute this method, mark it as a worklet\n b) If you want to execute this function on the JS thread, wrap it using \\`runOnJS\\``);\n };\n fun.__remoteFunction = objectToUnpack;\n return fun;\n } else {\n throw new Error('data type not recognized by unpack method');\n }\n}\n\nfunction setupRequestAnimationFrame() {\n 'worklet';\n\n // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden\n // so we avoid doing requestAnimationFrame batching in Jest environment.\n const nativeRequestAnimationFrame = global.requestAnimationFrame;\n\n let animationFrameCallbacks: Array<(timestamp: number) => void> = [];\n let lastNativeAnimationFrameTimestamp = -1;\n\n global.__flushAnimationFrame = (frameTimestamp: number) => {\n const currentCallbacks = animationFrameCallbacks;\n animationFrameCallbacks = [];\n currentCallbacks.forEach((f) => f(frameTimestamp));\n flushImmediates();\n };\n\n global.requestAnimationFrame = (\n callback: (timestamp: number) => void\n ): number => {\n animationFrameCallbacks.push(callback);\n if (animationFrameCallbacks.length === 1) {\n // We schedule native requestAnimationFrame only when the first callback\n // is added and then use it to execute all the enqueued callbacks. Once\n // the callbacks are run, we clear the array.\n nativeRequestAnimationFrame((timestamp) => {\n if (lastNativeAnimationFrameTimestamp >= timestamp) {\n // Make sure we only execute the callbacks once for a given frame\n return;\n }\n lastNativeAnimationFrameTimestamp = timestamp;\n global.__frameTimestamp = timestamp;\n global.__flushAnimationFrame(timestamp);\n global.__frameTimestamp = undefined;\n });\n }\n // Reanimated currently does not support cancelling callbacks requested with\n // requestAnimationFrame. We return -1 as identifier which isn't in line\n // with the spec but it should give users better clue in case they actually\n // attempt to store the value returned from rAF and use it for cancelling.\n return -1;\n };\n}\n\nexport function initializeUIRuntime() {\n NativeReanimatedModule.installCoreFunctions(callGuardDEV, valueUnpacker);\n\n const IS_JEST = isJest();\n\n if (IS_JEST) {\n // requestAnimationFrame react-native jest's setup is incorrect as it polyfills\n // the method directly using setTimeout, therefore the callback doesn't get the\n // expected timestamp as the only argument: https://github.com/facebook/react-native/blob/main/jest/setup.js#L28\n // We override this setup here to make sure that callbacks get the proper timestamps\n // when executed. For non-jest environments we define requestAnimationFrame in setupRequestAnimationFrame\n // @ts-ignore TypeScript uses Node definition for rAF, setTimeout, etc which returns a Timeout object rather than a number\n global.requestAnimationFrame = (callback: (timestamp: number) => void) => {\n return setTimeout(() => callback(performance.now()), 0);\n };\n }\n\n const capturableConsole = console;\n runOnUIImmediately(() => {\n 'worklet';\n // setup error handler\n global.ErrorUtils = {\n reportFatalError: (error: Error) => {\n runOnJS(reportFatalErrorOnJS)({\n message: error.message,\n stack: error.stack,\n });\n },\n };\n\n // setup console\n // @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version\n global.console = {\n debug: runOnJS(capturableConsole.debug),\n log: runOnJS(capturableConsole.log),\n warn: runOnJS(capturableConsole.warn),\n error: runOnJS(capturableConsole.error),\n info: runOnJS(capturableConsole.info),\n };\n\n if (!IS_JEST) {\n setupSetImmediate();\n setupRequestAnimationFrame();\n }\n })();\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_errors","require","_NativeReanimated","_interopRequireDefault","_PlatformChecker","_threads","obj","__esModule","default","callGuardDEV","fn","_len","arguments","length","args","Array","_key","e","global","__ErrorUtils","reportFatalError","valueUnpacker","objectToUnpack","category","workletsCache","__workletsCache","handleCache","__handleCache","undefined","Map","WeakMap","workletHash","__workletHash","workletFun","get","initData","__initData","evalWithSourceMap","code","location","sourceMap","evalWithSourceUrl","eval","set","functionInstance","bind","_recur","__init","value","fun","Error","__remoteFunction","setupRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","animationFrameCallbacks","lastNativeAnimationFrameTimestamp","__flushAnimationFrame","frameTimestamp","currentCallbacks","forEach","f","callMicrotasks","callback","push","timestamp","__frameTimestamp","initializeUIRuntime","NativeReanimatedModule","installCoreFunctions","IS_JEST","isJest","setTimeout","performance","now","capturableConsole","console","runOnUIImmediately","error","runOnJS","reportFatalErrorOnJS","message","stack","assert","debug","log","warn","info","setupMicrotasks"],"sources":["initializers.ts"],"sourcesContent":["import { reportFatalErrorOnJS } from './errors';\nimport NativeReanimatedModule from './NativeReanimated';\nimport { isJest } from './PlatformChecker';\nimport {\n runOnJS,\n setupMicrotasks,\n callMicrotasks,\n runOnUIImmediately,\n} from './threads';\n\n// callGuard is only used with debug builds\nfunction callGuardDEV<T extends Array<any>, U>(\n fn: (...args: T) => U,\n ...args: T\n): void {\n 'worklet';\n try {\n fn(...args);\n } catch (e) {\n if (global.__ErrorUtils) {\n global.__ErrorUtils.reportFatalError(e as Error);\n } else {\n throw e;\n }\n }\n}\n\nfunction valueUnpacker(objectToUnpack: any, category?: string): any {\n 'worklet';\n let workletsCache = global.__workletsCache;\n let handleCache = global.__handleCache;\n if (workletsCache === undefined) {\n // init\n workletsCache = global.__workletsCache = new Map();\n handleCache = global.__handleCache = new WeakMap();\n }\n const workletHash = objectToUnpack.__workletHash;\n if (workletHash !== undefined) {\n let workletFun = workletsCache.get(workletHash);\n if (workletFun === undefined) {\n const initData = objectToUnpack.__initData;\n if (global.evalWithSourceMap) {\n // if the runtime (hermes only for now) supports loading source maps\n // we want to use the proper filename for the location as it guarantees\n // that debugger understands and loads the source code of the file where\n // the worklet is defined.\n workletFun = global.evalWithSourceMap(\n '(' + initData.code + '\\n)',\n initData.location,\n initData.sourceMap\n ) as (...args: any[]) => any;\n } else if (global.evalWithSourceUrl) {\n // if the runtime doesn't support loading source maps, in dev mode we\n // can pass source url when evaluating the worklet. Now, instead of using\n // the actual file location we use worklet hash, as it the allows us to\n // properly symbolicate traces (see errors.ts for details)\n workletFun = global.evalWithSourceUrl(\n '(' + initData.code + '\\n)',\n `worklet_${workletHash}`\n ) as (...args: any[]) => any;\n } else {\n // in release we use the regular eval to save on JSI calls\n // eslint-disable-next-line no-eval\n workletFun = eval('(' + initData.code + '\\n)') as (\n ...args: any[]\n ) => any;\n }\n workletsCache.set(workletHash, workletFun);\n }\n const functionInstance = workletFun.bind(objectToUnpack);\n objectToUnpack._recur = functionInstance;\n return functionInstance;\n } else if (objectToUnpack.__init) {\n let value = handleCache!.get(objectToUnpack);\n if (value === undefined) {\n value = objectToUnpack.__init();\n handleCache!.set(objectToUnpack, value);\n }\n return value;\n } else if (category === 'RemoteFunction') {\n const fun = () => {\n throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.\n\nPossible solutions are:\n a) If you want to synchronously execute this method, mark it as a worklet\n b) If you want to execute this function on the JS thread, wrap it using \\`runOnJS\\``);\n };\n fun.__remoteFunction = objectToUnpack;\n return fun;\n } else {\n throw new Error('data type not recognized by unpack method');\n }\n}\n\nfunction setupRequestAnimationFrame() {\n 'worklet';\n\n // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden\n // so we avoid doing requestAnimationFrame batching in Jest environment.\n const nativeRequestAnimationFrame = global.requestAnimationFrame;\n\n let animationFrameCallbacks: Array<(timestamp: number) => void> = [];\n let lastNativeAnimationFrameTimestamp = -1;\n\n global.__flushAnimationFrame = (frameTimestamp: number) => {\n const currentCallbacks = animationFrameCallbacks;\n animationFrameCallbacks = [];\n currentCallbacks.forEach((f) => f(frameTimestamp));\n callMicrotasks();\n };\n\n global.requestAnimationFrame = (\n callback: (timestamp: number) => void\n ): number => {\n animationFrameCallbacks.push(callback);\n if (animationFrameCallbacks.length === 1) {\n // We schedule native requestAnimationFrame only when the first callback\n // is added and then use it to execute all the enqueued callbacks. Once\n // the callbacks are run, we clear the array.\n nativeRequestAnimationFrame((timestamp) => {\n if (lastNativeAnimationFrameTimestamp >= timestamp) {\n // Make sure we only execute the callbacks once for a given frame\n return;\n }\n lastNativeAnimationFrameTimestamp = timestamp;\n global.__frameTimestamp = timestamp;\n global.__flushAnimationFrame(timestamp);\n global.__frameTimestamp = undefined;\n });\n }\n // Reanimated currently does not support cancelling callbacks requested with\n // requestAnimationFrame. We return -1 as identifier which isn't in line\n // with the spec but it should give users better clue in case they actually\n // attempt to store the value returned from rAF and use it for cancelling.\n return -1;\n };\n}\n\nexport function initializeUIRuntime() {\n NativeReanimatedModule.installCoreFunctions(callGuardDEV, valueUnpacker);\n\n const IS_JEST = isJest();\n\n if (IS_JEST) {\n // requestAnimationFrame react-native jest's setup is incorrect as it polyfills\n // the method directly using setTimeout, therefore the callback doesn't get the\n // expected timestamp as the only argument: https://github.com/facebook/react-native/blob/main/jest/setup.js#L28\n // We override this setup here to make sure that callbacks get the proper timestamps\n // when executed. For non-jest environments we define requestAnimationFrame in setupRequestAnimationFrame\n // @ts-ignore TypeScript uses Node definition for rAF, setTimeout, etc which returns a Timeout object rather than a number\n global.requestAnimationFrame = (callback: (timestamp: number) => void) => {\n return setTimeout(() => callback(performance.now()), 0);\n };\n }\n\n // We really have to create a copy of console here. Function runOnJS we use on elements inside\n // this object makes it not configurable\n const capturableConsole = { ...console };\n runOnUIImmediately(() => {\n 'worklet';\n // setup error handler\n global.__ErrorUtils = {\n reportFatalError: (error: Error) => {\n runOnJS(reportFatalErrorOnJS)({\n message: error.message,\n stack: error.stack,\n });\n },\n };\n\n // setup console\n // @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version\n global.console = {\n assert: runOnJS(capturableConsole.assert),\n debug: runOnJS(capturableConsole.debug),\n log: runOnJS(capturableConsole.log),\n warn: runOnJS(capturableConsole.warn),\n error: runOnJS(capturableConsole.error),\n info: runOnJS(capturableConsole.info),\n };\n\n if (!IS_JEST) {\n setupMicrotasks();\n setupRequestAnimationFrame();\n }\n })();\n}\n"],"mappings":"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"}
@@ -5,22 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.interpolateSharableColor = exports.interpolateColor = exports.Extrapolate = exports.ColorSpace = void 0;
7
7
  exports.useInterpolateConfig = useInterpolateConfig;
8
-
9
8
  var _Colors = require("./Colors");
10
-
11
9
  var _core = require("./core");
12
-
13
10
  var _interpolation = require("./interpolation");
14
-
15
11
  var _useSharedValue = require("./hook/useSharedValue");
16
-
17
12
  const Extrapolate = {
18
13
  EXTEND: 'extend',
19
14
  CLAMP: 'clamp',
20
15
  IDENTITY: 'identity'
21
16
  };
22
17
  exports.Extrapolate = Extrapolate;
23
-
24
18
  const interpolateColorsHSV = (value, inputRange, colors, options) => {
25
19
  'worklet';
26
20
 
@@ -28,7 +22,6 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
28
22
  const {
29
23
  useCorrectedHSVInterpolation = true
30
24
  } = options;
31
-
32
25
  if (useCorrectedHSVInterpolation) {
33
26
  // if the difference between hues in a range is > 180 deg
34
27
  // then move the hue at the right end of the range +/- 360 deg
@@ -37,10 +30,8 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
37
30
  const correctedInputRange = [inputRange[0]];
38
31
  const originalH = colors.h;
39
32
  const correctedH = [originalH[0]];
40
-
41
33
  for (let i = 1; i < originalH.length; ++i) {
42
34
  const d = originalH[i] - originalH[i - 1];
43
-
44
35
  if (originalH[i] > originalH[i - 1] && d > 0.5) {
45
36
  correctedInputRange.push(inputRange[i]);
46
37
  correctedInputRange.push(inputRange[i] + 0.00001);
@@ -56,30 +47,25 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
56
47
  correctedH.push(originalH[i]);
57
48
  }
58
49
  }
59
-
60
50
  h = ((0, _interpolation.interpolate)(value, correctedInputRange, correctedH, Extrapolate.CLAMP) + 1) % 1;
61
51
  } else {
62
52
  h = (0, _interpolation.interpolate)(value, inputRange, colors.h, Extrapolate.CLAMP);
63
53
  }
64
-
65
54
  const s = (0, _interpolation.interpolate)(value, inputRange, colors.s, Extrapolate.CLAMP);
66
55
  const v = (0, _interpolation.interpolate)(value, inputRange, colors.v, Extrapolate.CLAMP);
67
56
  const a = (0, _interpolation.interpolate)(value, inputRange, colors.a, Extrapolate.CLAMP);
68
57
  return (0, _Colors.hsvToColor)(h, s, v, a);
69
58
  };
70
-
71
59
  const toLinearSpace = (x, gamma) => {
72
60
  'worklet';
73
61
 
74
62
  return x.map(v => Math.pow(v / 255, gamma));
75
63
  };
76
-
77
64
  const toGammaSpace = (x, gamma) => {
78
65
  'worklet';
79
66
 
80
67
  return Math.round(Math.pow(x, 1 / gamma) * 255);
81
68
  };
82
-
83
69
  const interpolateColorsRGB = (value, inputRange, colors, options) => {
84
70
  'worklet';
85
71
 
@@ -91,25 +77,20 @@ const interpolateColorsRGB = (value, inputRange, colors, options) => {
91
77
  g: outputG,
92
78
  b: outputB
93
79
  } = colors;
94
-
95
80
  if (gamma !== 1) {
96
81
  outputR = toLinearSpace(outputR, gamma);
97
82
  outputG = toLinearSpace(outputG, gamma);
98
83
  outputB = toLinearSpace(outputB, gamma);
99
84
  }
100
-
101
85
  const r = (0, _interpolation.interpolate)(value, inputRange, outputR, Extrapolate.CLAMP);
102
86
  const g = (0, _interpolation.interpolate)(value, inputRange, outputG, Extrapolate.CLAMP);
103
87
  const b = (0, _interpolation.interpolate)(value, inputRange, outputB, Extrapolate.CLAMP);
104
88
  const a = (0, _interpolation.interpolate)(value, inputRange, colors.a, Extrapolate.CLAMP);
105
-
106
89
  if (gamma === 1) {
107
90
  return (0, _Colors.rgbaColor)(r, g, b, a);
108
91
  }
109
-
110
92
  return (0, _Colors.rgbaColor)(toGammaSpace(r, gamma), toGammaSpace(g, gamma), toGammaSpace(b, gamma), a);
111
93
  };
112
-
113
94
  const getInterpolateRGB = colors => {
114
95
  'worklet';
115
96
 
@@ -117,11 +98,10 @@ const getInterpolateRGB = colors => {
117
98
  const g = [];
118
99
  const b = [];
119
100
  const a = [];
120
-
121
101
  for (let i = 0; i < colors.length; ++i) {
122
102
  const color = colors[i];
123
- const processedColor = (0, _Colors.processColor)(color); // explicit check in case if processedColor is 0
124
-
103
+ const processedColor = (0, _Colors.processColor)(color);
104
+ // explicit check in case if processedColor is 0
125
105
  if (processedColor !== null && processedColor !== undefined) {
126
106
  r.push((0, _Colors.red)(processedColor));
127
107
  g.push((0, _Colors.green)(processedColor));
@@ -129,7 +109,6 @@ const getInterpolateRGB = colors => {
129
109
  a.push((0, _Colors.opacity)(processedColor));
130
110
  }
131
111
  }
132
-
133
112
  return {
134
113
  r,
135
114
  g,
@@ -137,7 +116,6 @@ const getInterpolateRGB = colors => {
137
116
  a
138
117
  };
139
118
  };
140
-
141
119
  const getInterpolateHSV = colors => {
142
120
  'worklet';
143
121
 
@@ -145,11 +123,9 @@ const getInterpolateHSV = colors => {
145
123
  const s = [];
146
124
  const v = [];
147
125
  const a = [];
148
-
149
126
  for (let i = 0; i < colors.length; ++i) {
150
127
  const color = colors[i];
151
128
  const processedColor = (0, _Colors.processColor)(color);
152
-
153
129
  if (typeof processedColor === 'number') {
154
130
  const processedHSVColor = (0, _Colors.RGBtoHSV)((0, _Colors.red)(processedColor), (0, _Colors.green)(processedColor), (0, _Colors.blue)(processedColor));
155
131
  h.push(processedHSVColor.h);
@@ -158,7 +134,6 @@ const getInterpolateHSV = colors => {
158
134
  a.push((0, _Colors.opacity)(processedColor));
159
135
  }
160
136
  }
161
-
162
137
  return {
163
138
  h,
164
139
  s,
@@ -166,31 +141,25 @@ const getInterpolateHSV = colors => {
166
141
  a
167
142
  };
168
143
  };
169
-
170
144
  const interpolateColor = function (value, inputRange, outputRange) {
171
145
  'worklet';
172
146
 
173
147
  let colorSpace = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'RGB';
174
148
  let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
175
-
176
149
  if (colorSpace === 'HSV') {
177
150
  return interpolateColorsHSV(value, inputRange, getInterpolateHSV(outputRange), options);
178
151
  } else if (colorSpace === 'RGB') {
179
152
  return interpolateColorsRGB(value, inputRange, getInterpolateRGB(outputRange), options);
180
153
  }
181
-
182
154
  throw new Error(`Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`);
183
155
  };
184
-
185
156
  exports.interpolateColor = interpolateColor;
186
- let ColorSpace;
187
- exports.ColorSpace = ColorSpace;
188
-
189
- (function (ColorSpace) {
157
+ let ColorSpace = /*#__PURE__*/function (ColorSpace) {
190
158
  ColorSpace[ColorSpace["RGB"] = 0] = "RGB";
191
159
  ColorSpace[ColorSpace["HSV"] = 1] = "HSV";
192
- })(ColorSpace || (exports.ColorSpace = ColorSpace = {}));
193
-
160
+ return ColorSpace;
161
+ }({});
162
+ exports.ColorSpace = ColorSpace;
194
163
  function useInterpolateConfig(inputRange, outputRange) {
195
164
  let colorSpace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ColorSpace.RGB;
196
165
  let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
@@ -202,30 +171,24 @@ function useInterpolateConfig(inputRange, outputRange) {
202
171
  options
203
172
  });
204
173
  }
205
-
206
174
  const interpolateSharableColor = (value, interpolateConfig) => {
207
175
  'worklet';
208
176
 
209
177
  let colors = interpolateConfig.value.cache.value;
210
-
211
178
  if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {
212
179
  if (!colors) {
213
180
  colors = getInterpolateRGB(interpolateConfig.value.outputRange);
214
181
  interpolateConfig.value.cache.value = colors;
215
182
  }
216
-
217
183
  return interpolateColorsRGB(value, interpolateConfig.value.inputRange, colors, interpolateConfig.value.options);
218
184
  } else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {
219
185
  if (!colors) {
220
186
  colors = getInterpolateHSV(interpolateConfig.value.outputRange);
221
187
  interpolateConfig.value.cache.value = colors;
222
188
  }
223
-
224
189
  return interpolateColorsHSV(value, interpolateConfig.value.inputRange, colors, interpolateConfig.value.options);
225
190
  }
226
-
227
191
  throw new Error(`Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`);
228
192
  };
229
-
230
193
  exports.interpolateSharableColor = interpolateSharableColor;
231
194
  //# sourceMappingURL=interpolateColor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Extrapolate","EXTEND","CLAMP","IDENTITY","interpolateColorsHSV","value","inputRange","colors","options","h","useCorrectedHSVInterpolation","correctedInputRange","originalH","correctedH","i","length","d","push","interpolate","s","v","a","hsvToColor","toLinearSpace","x","gamma","map","Math","pow","toGammaSpace","round","interpolateColorsRGB","r","outputR","g","outputG","b","outputB","rgbaColor","getInterpolateRGB","color","processedColor","processColor","undefined","red","green","blue","opacity","getInterpolateHSV","processedHSVColor","RGBtoHSV","interpolateColor","outputRange","colorSpace","Error","ColorSpace","useInterpolateConfig","RGB","useSharedValue","cache","makeMutable","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":["_Colors","require","_core","_interpolation","_useSharedValue","Extrapolate","EXTEND","CLAMP","IDENTITY","exports","interpolateColorsHSV","value","inputRange","colors","options","h","useCorrectedHSVInterpolation","correctedInputRange","originalH","correctedH","i","length","d","push","interpolate","s","v","a","hsvToColor","toLinearSpace","x","gamma","map","Math","pow","toGammaSpace","round","interpolateColorsRGB","r","outputR","g","outputG","b","outputB","rgbaColor","getInterpolateRGB","color","processedColor","processColor","undefined","red","green","blue","opacity","getInterpolateHSV","processedHSVColor","RGBtoHSV","interpolateColor","outputRange","colorSpace","arguments","Error","ColorSpace","useInterpolateConfig","RGB","useSharedValue","cache","makeMutable","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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"}