react-native-reanimated 3.0.0-rc.8 → 3.0.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 (339) hide show
  1. package/Common/cpp/AnimatedSensor/AnimatedSensorModule.cpp +30 -12
  2. package/Common/cpp/AnimatedSensor/AnimatedSensorModule.h +2 -0
  3. package/Common/cpp/Fabric/FabricUtils.cpp +3 -107
  4. package/Common/cpp/Fabric/FabricUtils.h +3 -24
  5. package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +54 -37
  6. package/Common/cpp/LayoutAnimations/LayoutAnimationType.h +8 -0
  7. package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.cpp +81 -26
  8. package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.h +20 -3
  9. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +122 -121
  10. package/Common/cpp/NativeModules/NativeReanimatedModule.h +21 -14
  11. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +15 -7
  12. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +8 -4
  13. package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.cpp +50 -1
  14. package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.h +10 -1
  15. package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.cpp +5 -1
  16. package/Common/cpp/Registries/EventHandlerRegistry.cpp +8 -34
  17. package/Common/cpp/Registries/EventHandlerRegistry.h +7 -13
  18. package/Common/cpp/SharedItems/Shareables.cpp +11 -63
  19. package/Common/cpp/SharedItems/Shareables.h +113 -93
  20. package/Common/cpp/Tools/CollectionUtils.h +14 -0
  21. package/Common/cpp/Tools/JsiUtils.cpp +26 -0
  22. package/Common/cpp/Tools/JsiUtils.h +176 -0
  23. package/Common/cpp/Tools/PlatformDepMethodsHolder.h +5 -5
  24. package/Common/cpp/Tools/ReanimatedVersion.cpp +17 -0
  25. package/Common/cpp/Tools/ReanimatedVersion.h +11 -0
  26. package/Common/cpp/Tools/RuntimeDecorator.cpp +67 -247
  27. package/Common/cpp/Tools/RuntimeDecorator.h +2 -3
  28. package/Common/cpp/Tools/WorkletEventHandler.cpp +3 -2
  29. package/Common/cpp/Tools/WorkletEventHandler.h +14 -6
  30. package/RNReanimated.podspec +2 -1
  31. package/android/CMakeLists.txt +188 -181
  32. package/android/build.gradle +362 -311
  33. package/android/proguard-rules.pro +2 -0
  34. package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +63 -295
  35. package/android/src/main/cpp/LayoutAnimations.cpp +35 -5
  36. package/android/src/main/cpp/LayoutAnimations.h +23 -6
  37. package/android/src/main/cpp/NativeProxy.cpp +143 -98
  38. package/android/src/main/cpp/NativeProxy.h +22 -28
  39. package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +5 -4
  40. package/android/src/main/java/com/swmansion/reanimated/Utils.java +7 -1
  41. package/android/src/main/java/com/swmansion/reanimated/keyboardObserver/ReanimatedKeyboardEventListener.java +10 -3
  42. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +218 -35
  43. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +43 -17
  44. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/NativeMethodsHolder.java +6 -2
  45. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedElement.java +19 -0
  46. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedTransitionManager.java +610 -0
  47. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/Snapshot.java +93 -23
  48. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/AnimationFrameCallback.java +19 -0
  49. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/EventHandler.java +35 -0
  50. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/KeyboardEventDataUpdater.java +16 -0
  51. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +206 -0
  52. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/SensorSetter.java +17 -0
  53. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +9 -3
  54. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorContainer.java +3 -4
  55. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorListener.java +31 -7
  56. package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +90 -307
  57. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/70/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +16 -0
  58. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +63 -0
  59. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +271 -0
  60. package/android/src/reactNativeVersionPatch/nativeHierarchyManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +76 -20
  61. package/ios/LayoutReanimation/REAAnimationsManager.h +31 -5
  62. package/ios/LayoutReanimation/REAAnimationsManager.m +265 -77
  63. package/ios/LayoutReanimation/REAFrame.h +10 -0
  64. package/ios/LayoutReanimation/REAFrame.m +15 -0
  65. package/ios/LayoutReanimation/REAScreensHelper.h +19 -0
  66. package/ios/LayoutReanimation/REAScreensHelper.m +106 -0
  67. package/ios/LayoutReanimation/REASharedElement.h +15 -0
  68. package/ios/LayoutReanimation/REASharedElement.m +16 -0
  69. package/ios/LayoutReanimation/REASharedTransitionManager.h +17 -0
  70. package/ios/LayoutReanimation/REASharedTransitionManager.m +632 -0
  71. package/ios/LayoutReanimation/REASnapshot.h +1 -0
  72. package/ios/LayoutReanimation/REASnapshot.m +96 -11
  73. package/ios/LayoutReanimation/REAUIManager.mm +67 -60
  74. package/ios/REAModule.mm +2 -7
  75. package/ios/REANodesManager.mm +1 -21
  76. package/ios/keyboardObserver/REAKeyboardEventObserver.m +72 -36
  77. package/ios/native/NativeProxy.mm +75 -114
  78. package/ios/native/REAInitializer.mm +2 -7
  79. package/ios/native/REAJSIUtils.h +60 -2
  80. package/ios/sensor/ReanimatedSensor.h +6 -2
  81. package/ios/sensor/ReanimatedSensor.m +43 -7
  82. package/ios/sensor/ReanimatedSensorContainer.h +4 -1
  83. package/ios/sensor/ReanimatedSensorContainer.m +8 -2
  84. package/lib/commonjs/createAnimatedComponent.js +232 -28
  85. package/lib/commonjs/createAnimatedComponent.js.map +1 -1
  86. package/lib/commonjs/reanimated2/Colors.js +43 -22
  87. package/lib/commonjs/reanimated2/Colors.js.map +1 -1
  88. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +18 -35
  89. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  90. package/lib/commonjs/reanimated2/animation/styleAnimation.js +5 -1
  91. package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
  92. package/lib/commonjs/reanimated2/animation/util.js +17 -15
  93. package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
  94. package/lib/commonjs/reanimated2/commonTypes.js +33 -1
  95. package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
  96. package/lib/commonjs/reanimated2/component/FlatList.js +19 -3
  97. package/lib/commonjs/reanimated2/component/FlatList.js.map +1 -1
  98. package/lib/commonjs/reanimated2/core.js +34 -83
  99. package/lib/commonjs/reanimated2/core.js.map +1 -1
  100. package/lib/commonjs/reanimated2/errors.js +66 -0
  101. package/lib/commonjs/reanimated2/errors.js.map +1 -0
  102. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
  103. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  104. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  105. package/lib/commonjs/reanimated2/hook/index.js +0 -6
  106. package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
  107. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +5 -2
  108. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  109. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +13 -1
  110. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  111. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +1 -1
  112. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
  113. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +89 -16
  114. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  115. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +43 -50
  116. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  117. package/lib/commonjs/reanimated2/hook/useDerivedValue.js +13 -1
  118. package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
  119. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +2 -2
  120. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  121. package/lib/commonjs/reanimated2/hook/utils.js +18 -65
  122. package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
  123. package/lib/commonjs/reanimated2/index.js +13 -0
  124. package/lib/commonjs/reanimated2/index.js.map +1 -1
  125. package/lib/commonjs/reanimated2/initializers.js +196 -0
  126. package/lib/commonjs/reanimated2/initializers.js.map +1 -0
  127. package/lib/commonjs/reanimated2/interpolateColor.js +96 -19
  128. package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
  129. package/lib/commonjs/reanimated2/jestUtils.js +1 -1
  130. package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
  131. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +101 -16
  132. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  133. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +22 -0
  134. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
  135. package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js +2 -0
  136. package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js.map +1 -0
  137. package/lib/commonjs/reanimated2/js-reanimated/commonTypes.js.map +1 -1
  138. package/lib/commonjs/reanimated2/js-reanimated/global.js +4 -9
  139. package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
  140. package/lib/commonjs/reanimated2/js-reanimated/index.js +0 -1
  141. package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
  142. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +11 -0
  143. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  144. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +8 -0
  145. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  146. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +16 -12
  147. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  148. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -23
  149. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  150. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -14
  151. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  152. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -14
  153. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  154. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -15
  155. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  156. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -23
  157. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  158. package/lib/commonjs/reanimated2/layoutReanimation/index.js +13 -0
  159. package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
  160. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +94 -0
  161. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
  162. package/lib/commonjs/reanimated2/mappers.js +18 -6
  163. package/lib/commonjs/reanimated2/mappers.js.map +1 -1
  164. package/lib/commonjs/reanimated2/mock.js +45 -0
  165. package/lib/commonjs/reanimated2/mock.js.map +1 -1
  166. package/lib/commonjs/reanimated2/mutables.js +4 -2
  167. package/lib/commonjs/reanimated2/mutables.js.map +1 -1
  168. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +42 -0
  169. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +1 -0
  170. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +15 -0
  171. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
  172. package/lib/commonjs/reanimated2/pluginUtils.js +11 -0
  173. package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -0
  174. package/lib/commonjs/reanimated2/shareables.js +38 -11
  175. package/lib/commonjs/reanimated2/shareables.js.map +1 -1
  176. package/lib/commonjs/reanimated2/threads.js +114 -4
  177. package/lib/commonjs/reanimated2/threads.js.map +1 -1
  178. package/lib/commonjs/reanimated2/utils.js +7 -0
  179. package/lib/commonjs/reanimated2/utils.js.map +1 -1
  180. package/lib/commonjs/reanimated2/valueSetter.js +1 -3
  181. package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
  182. package/lib/module/createAnimatedComponent.js +229 -29
  183. package/lib/module/createAnimatedComponent.js.map +1 -1
  184. package/lib/module/reanimated2/Colors.js +35 -19
  185. package/lib/module/reanimated2/Colors.js.map +1 -1
  186. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +18 -34
  187. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  188. package/lib/module/reanimated2/animation/styleAnimation.js +5 -1
  189. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  190. package/lib/module/reanimated2/animation/util.js +17 -16
  191. package/lib/module/reanimated2/animation/util.js.map +1 -1
  192. package/lib/module/reanimated2/commonTypes.js +29 -0
  193. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  194. package/lib/module/reanimated2/component/FlatList.js +18 -4
  195. package/lib/module/reanimated2/component/FlatList.js.map +1 -1
  196. package/lib/module/reanimated2/core.js +30 -76
  197. package/lib/module/reanimated2/core.js.map +1 -1
  198. package/lib/module/reanimated2/errors.js +58 -0
  199. package/lib/module/reanimated2/errors.js.map +1 -0
  200. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
  201. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  202. package/lib/module/reanimated2/globals.d.js.map +1 -1
  203. package/lib/module/reanimated2/hook/index.js +1 -1
  204. package/lib/module/reanimated2/hook/index.js.map +1 -1
  205. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +5 -2
  206. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  207. package/lib/module/reanimated2/hook/useAnimatedReaction.js +12 -1
  208. package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  209. package/lib/module/reanimated2/hook/useAnimatedRef.js +2 -2
  210. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  211. package/lib/module/reanimated2/hook/useAnimatedSensor.js +88 -13
  212. package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  213. package/lib/module/reanimated2/hook/useAnimatedStyle.js +45 -52
  214. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  215. package/lib/module/reanimated2/hook/useDerivedValue.js +12 -1
  216. package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
  217. package/lib/module/reanimated2/hook/useScrollViewOffset.js +2 -2
  218. package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  219. package/lib/module/reanimated2/hook/utils.js +17 -60
  220. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  221. package/lib/module/reanimated2/index.js +1 -0
  222. package/lib/module/reanimated2/index.js.map +1 -1
  223. package/lib/module/reanimated2/initializers.js +182 -0
  224. package/lib/module/reanimated2/initializers.js.map +1 -0
  225. package/lib/module/reanimated2/interpolateColor.js +96 -19
  226. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  227. package/lib/module/reanimated2/jestUtils.js +1 -1
  228. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  229. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +101 -16
  230. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  231. package/lib/module/reanimated2/js-reanimated/Mapper.js +21 -0
  232. package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
  233. package/lib/module/reanimated2/js-reanimated/WebSensor.js +2 -0
  234. package/lib/module/reanimated2/js-reanimated/WebSensor.js.map +1 -0
  235. package/lib/module/reanimated2/js-reanimated/commonTypes.js.map +1 -1
  236. package/lib/module/reanimated2/js-reanimated/global.js +4 -9
  237. package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
  238. package/lib/module/reanimated2/js-reanimated/index.js +0 -1
  239. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  240. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +9 -1
  241. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  242. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js +1 -0
  243. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  244. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +15 -10
  245. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  246. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -21
  247. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  248. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -12
  249. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  250. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -12
  251. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  252. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -13
  253. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  254. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -21
  255. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  256. package/lib/module/reanimated2/layoutReanimation/index.js +1 -0
  257. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  258. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +82 -0
  259. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
  260. package/lib/module/reanimated2/mappers.js +16 -6
  261. package/lib/module/reanimated2/mappers.js.map +1 -1
  262. package/lib/module/reanimated2/mock.js +45 -0
  263. package/lib/module/reanimated2/mock.js.map +1 -1
  264. package/lib/module/reanimated2/mutables.js +4 -2
  265. package/lib/module/reanimated2/mutables.js.map +1 -1
  266. package/lib/module/reanimated2/platform-specific/checkVersion.js +35 -0
  267. package/lib/module/reanimated2/platform-specific/checkVersion.js.map +1 -0
  268. package/lib/module/reanimated2/platform-specific/checkVersion.web.js +8 -0
  269. package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
  270. package/lib/module/reanimated2/pluginUtils.js +4 -0
  271. package/lib/module/reanimated2/pluginUtils.js.map +1 -0
  272. package/lib/module/reanimated2/shareables.js +38 -9
  273. package/lib/module/reanimated2/shareables.js.map +1 -1
  274. package/lib/module/reanimated2/threads.js +105 -4
  275. package/lib/module/reanimated2/threads.js.map +1 -1
  276. package/lib/module/reanimated2/utils.js +5 -0
  277. package/lib/module/reanimated2/utils.js.map +1 -1
  278. package/lib/module/reanimated2/valueSetter.js +1 -2
  279. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  280. package/package.json +9 -8
  281. package/{plugin.js → plugin/index.js} +173 -228
  282. package/react-native-reanimated.d.ts +57 -10
  283. package/scripts/reanimated_utils.rb +15 -2
  284. package/src/createAnimatedComponent.tsx +238 -28
  285. package/src/reanimated2/Colors.ts +38 -11
  286. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +63 -41
  287. package/src/reanimated2/animation/styleAnimation.ts +8 -1
  288. package/src/reanimated2/animation/util.ts +29 -16
  289. package/src/reanimated2/commonTypes.ts +28 -1
  290. package/src/reanimated2/component/FlatList.tsx +30 -5
  291. package/src/reanimated2/core.ts +45 -75
  292. package/src/reanimated2/errors.ts +57 -0
  293. package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +2 -2
  294. package/src/reanimated2/globals.d.ts +34 -18
  295. package/src/reanimated2/hook/index.ts +1 -1
  296. package/src/reanimated2/hook/useAnimatedKeyboard.ts +10 -4
  297. package/src/reanimated2/hook/useAnimatedReaction.ts +12 -5
  298. package/src/reanimated2/hook/useAnimatedRef.ts +1 -4
  299. package/src/reanimated2/hook/useAnimatedSensor.ts +88 -11
  300. package/src/reanimated2/hook/useAnimatedStyle.ts +43 -45
  301. package/src/reanimated2/hook/useDerivedValue.ts +8 -1
  302. package/src/reanimated2/hook/useScrollViewOffset.ts +2 -2
  303. package/src/reanimated2/hook/utils.ts +15 -61
  304. package/src/reanimated2/index.ts +1 -0
  305. package/src/reanimated2/initializers.ts +184 -0
  306. package/src/reanimated2/interpolateColor.ts +104 -20
  307. package/src/reanimated2/jestUtils.ts +1 -1
  308. package/src/reanimated2/js-reanimated/JSReanimated.ts +105 -18
  309. package/src/reanimated2/js-reanimated/Mapper.ts +32 -0
  310. package/src/reanimated2/js-reanimated/WebSensor.ts +34 -0
  311. package/src/reanimated2/js-reanimated/commonTypes.ts +0 -1
  312. package/src/reanimated2/js-reanimated/global.ts +4 -8
  313. package/src/reanimated2/js-reanimated/index.ts +0 -1
  314. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +13 -1
  315. package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +1 -0
  316. package/src/reanimated2/layoutReanimation/animationsManager.ts +17 -12
  317. package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +16 -19
  318. package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +14 -11
  319. package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +21 -11
  320. package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +32 -11
  321. package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +36 -19
  322. package/src/reanimated2/layoutReanimation/index.ts +1 -0
  323. package/src/reanimated2/layoutReanimation/sharedTransitions/index.ts +87 -0
  324. package/src/reanimated2/mappers.ts +17 -6
  325. package/src/reanimated2/mock.ts +128 -0
  326. package/src/reanimated2/mutables.ts +2 -0
  327. package/src/reanimated2/platform-specific/checkVersion.ts +39 -0
  328. package/src/reanimated2/platform-specific/checkVersion.web.ts +6 -0
  329. package/src/reanimated2/pluginUtils.ts +8 -0
  330. package/src/reanimated2/shareables.ts +47 -11
  331. package/src/reanimated2/threads.ts +103 -1
  332. package/src/reanimated2/utils.ts +6 -0
  333. package/src/reanimated2/valueSetter.ts +1 -2
  334. package/lib/commonjs/reanimated2/time.js +0 -55
  335. package/lib/commonjs/reanimated2/time.js.map +0 -1
  336. package/lib/module/reanimated2/time.js +0 -37
  337. package/lib/module/reanimated2/time.js.map +0 -1
  338. package/src/reanimated2/time.ts +0 -30
  339. /package/android/src/{main/java → reactNativeVersionPatch/ReanimatedUIManager/70}/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","makeRemote","makeShareable","isConfigured","NUMBER","PERCENTAGE","call","args","join","jsCachedMatchers","uiCachedMatchers","getMatchers","cachedMatchers","_WORKLET","rgb","undefined","RegExp","rgba","hsl","hsla","hex3","hex4","hex6","hex8","hue2rgb","p","q","t","hslToRgb","h","s","l","r","g","b","Math","round","parse255","str","int","Number","parseInt","parse360","parseFloat","parse1","num","parsePercentage","names","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","normalizeColor","color","matchers","match","exec","opacity","c","rgbaColor","alpha","OS","RGBtoHSV","arguments","length","max","min","d","v","HSVtoRGB","i","f","floor","hsvToColor","processColorInitially","normalizedColor","isColor","value","processColor","convertToHSVA","processedColor","a","toRGBA","HSVA"],"sources":["Colors.ts"],"sourcesContent":["/* global _WORKLET */\n/**\n * Copied from:\n * react-native/Libraries/StyleSheet/normalizeColor.js\n * react-native/Libraries/StyleSheet/processColor.js\n * https://github.com/wcandillon/react-native-redash/blob/master/src/Colors.ts\n */\n\n/* eslint no-bitwise: 0 */\nimport { Platform } from 'react-native';\nimport { makeRemote, makeShareable, isConfigured } from './core';\n\ninterface RGB {\n r: number;\n g: number;\n b: number;\n}\n\ninterface HSV {\n h: number;\n s: number;\n v: number;\n}\n\n// var INTEGER = '[-+]?\\\\d+';\nconst NUMBER = '[-+]?(?:\\\\d+(?:\\\\.\\\\d*)?|\\\\.\\\\d+)';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...args: unknown[]): string {\n 'worklet';\n return '\\\\(\\\\s*(' + args.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\n// matchers use RegExp objects which needs to be created separately on JS and on\n// the UI thread. We keep separate cache of Regexes for UI and JS using the below\n// objects, then pick the right cache in getMatchers() method.\nconst jsCachedMatchers: Matchers = {};\nconst uiCachedMatchers: Matchers = !isConfigured() ? {} : makeRemote({});\ntype Matchers = {\n rgb?: RegExp;\n rgba?: RegExp;\n hsl?: RegExp;\n hsla?: RegExp;\n hex3?: RegExp;\n hex4?: RegExp;\n hex5?: RegExp;\n hex6?: RegExp;\n hex8?: RegExp;\n};\nfunction getMatchers(): Matchers {\n 'worklet';\n const cachedMatchers: Matchers = _WORKLET\n ? uiCachedMatchers\n : jsCachedMatchers;\n if (cachedMatchers.rgb === undefined) {\n cachedMatchers.rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\n cachedMatchers.rgba = new RegExp(\n 'rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)\n );\n cachedMatchers.hsl = new RegExp(\n 'hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)\n );\n cachedMatchers.hsla = new RegExp(\n 'hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)\n );\n cachedMatchers.hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\n cachedMatchers.hex4 =\n /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\n cachedMatchers.hex6 = /^#([0-9a-fA-F]{6})$/;\n cachedMatchers.hex8 = /^#([0-9a-fA-F]{8})$/;\n }\n return cachedMatchers;\n}\n// cachedMatchers is lazy loaded and it is frozen when worklet is being created,\n// it is possible to call getMatchers() when the object is frozen, then cachedMatchers\n// has no assigned regexes\ngetMatchers();\n\nfunction hue2rgb(p: number, q: number, t: number): number {\n 'worklet';\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n\nfunction hslToRgb(h: number, s: number, l: number): number {\n 'worklet';\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n\n return (\n (Math.round(r * 255) << 24) |\n (Math.round(g * 255) << 16) |\n (Math.round(b * 255) << 8)\n );\n}\n\nfunction parse255(str: string): number {\n 'worklet';\n const int = Number.parseInt(str, 10);\n if (int < 0) {\n return 0;\n }\n if (int > 255) {\n return 255;\n }\n return int;\n}\n\nfunction parse360(str: string): number {\n 'worklet';\n const int = Number.parseFloat(str);\n return (((int % 360) + 360) % 360) / 360;\n}\n\nfunction parse1(str: string): number {\n 'worklet';\n const num = Number.parseFloat(str);\n if (num < 0) {\n return 0;\n }\n if (num > 1) {\n return 255;\n }\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str: string): number {\n 'worklet';\n // parseFloat conveniently ignores the final %\n const int = Number.parseFloat(str);\n if (int < 0) {\n return 0;\n }\n if (int > 100) {\n return 1;\n }\n return int / 100;\n}\n\nconst names: any = !isConfigured()\n ? null\n : makeShareable({\n transparent: 0x00000000,\n\n // http://www.w3.org/TR/css3-color/#svg-color\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff,\n });\n\nfunction normalizeColor(color: unknown): number | null {\n 'worklet';\n\n if (typeof color === 'number') {\n if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n return color;\n }\n return null;\n }\n\n if (typeof color !== 'string') {\n return null;\n }\n\n const matchers = getMatchers();\n\n let match: RegExpExecArray | null | undefined;\n\n // Ordered based on occurrences on Facebook codebase\n if ((match = matchers?.hex6?.exec(color))) {\n return Number.parseInt(match[1] + 'ff', 16) >>> 0;\n }\n\n if (names[color] !== undefined) {\n return names[color];\n }\n\n if ((match = matchers?.rgb?.exec(color))) {\n return (\n // b\n ((parse255(match[1]) << 24) | // r\n (parse255(match[2]) << 16) | // g\n (parse255(match[3]) << 8) |\n 0x000000ff) >>> // a\n 0\n );\n }\n\n if ((match = matchers?.rgba?.exec(color))) {\n return (\n // b\n ((parse255(match[1]) << 24) | // r\n (parse255(match[2]) << 16) | // g\n (parse255(match[3]) << 8) |\n parse1(match[4])) >>> // a\n 0\n );\n }\n\n if ((match = matchers?.hex3?.exec(color))) {\n return (\n Number.parseInt(\n match[1] +\n match[1] + // r\n match[2] +\n match[2] + // g\n match[3] +\n match[3] + // b\n 'ff', // a\n 16\n ) >>> 0\n );\n }\n\n // https://drafts.csswg.org/css-color-4/#hex-notation\n if ((match = matchers?.hex8?.exec(color))) {\n return Number.parseInt(match[1], 16) >>> 0;\n }\n\n if ((match = matchers?.hex4?.exec(color))) {\n return (\n Number.parseInt(\n match[1] +\n match[1] + // r\n match[2] +\n match[2] + // g\n match[3] +\n match[3] + // b\n match[4] +\n match[4], // a\n 16\n ) >>> 0\n );\n }\n\n if ((match = matchers?.hsl?.exec(color))) {\n return (\n (hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) |\n 0x000000ff) >>> // a\n 0\n );\n }\n\n if ((match = matchers?.hsla?.exec(color))) {\n return (\n (hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) |\n parse1(match[4])) >>> // a\n 0\n );\n }\n\n return null;\n}\n\nexport const opacity = (c: number): number => {\n 'worklet';\n return ((c >> 24) & 255) / 255;\n};\n\nexport const red = (c: number): number => {\n 'worklet';\n return (c >> 16) & 255;\n};\n\nexport const green = (c: number): number => {\n 'worklet';\n return (c >> 8) & 255;\n};\n\nexport const blue = (c: number): number => {\n 'worklet';\n return c & 255;\n};\n\nexport const rgbaColor = (\n r: number,\n g: number,\n b: number,\n alpha = 1\n): number | string => {\n 'worklet';\n if (Platform.OS === 'web' || !_WORKLET) {\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n\n const c =\n Math.round(alpha * 255) * (1 << 24) +\n Math.round(r) * (1 << 16) +\n Math.round(g) * (1 << 8) +\n Math.round(b);\n if (Platform.OS === 'android') {\n // on Android color is represented as signed 32 bit int\n return c < (1 << 31) >>> 0 ? c : c - 4294967296; // 4294967296 == Math.pow(2, 32);\n }\n return c;\n};\n\n/* accepts parameters\n * r Object = {r:x, g:y, b:z}\n * OR\n * r, g, b\n * 0 <= r, g, b <= 255\n * returns 0 <= h, s, v <= 1\n */\nexport function RGBtoHSV(rgb: RGB): HSV;\nexport function RGBtoHSV(r: number, g: number, b: number): HSV;\nexport function RGBtoHSV(r: any, g?: any, b?: any): HSV {\n 'worklet';\n /* eslint-disable */\n if (arguments.length === 1) {\n g = r.g;\n b = r.b;\n r = r.r;\n }\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n const v = max / 255;\n\n let h;\n\n switch (max) {\n default:\n /* fallthrough */\n case min:\n h = 0;\n break;\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n }\n\n return {\n h: h,\n s: s,\n v: v,\n };\n /* eslint-enable */\n}\n\n/* accepts parameters\n * h Object = {h:x, s:y, v:z}\n * OR\n * h, s, v\n * 0 <= h, s, v <= 1\n * returns 0 <= r, g, b <= 255\n */\nfunction HSVtoRGB(hsv: HSV): RGB;\nfunction HSVtoRGB(h: number, s: number, v: number): RGB;\nfunction HSVtoRGB(h: any, s?: any, v?: any) {\n 'worklet';\n /* eslint-disable */\n var r, g, b, i, f, p, q, t;\n if (arguments.length === 1) {\n s = h.s;\n v = h.v;\n h = h.h;\n }\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n (r = v), (g = t), (b = p);\n break;\n case 1:\n (r = q), (g = v), (b = p);\n break;\n case 2:\n (r = p), (g = v), (b = t);\n break;\n case 3:\n (r = p), (g = q), (b = v);\n break;\n case 4:\n (r = t), (g = p), (b = v);\n break;\n case 5:\n (r = v), (g = p), (b = q);\n break;\n }\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255),\n };\n /* eslint-enable */\n}\n\nexport const hsvToColor = (\n h: number,\n s: number,\n v: number\n): number | string => {\n 'worklet';\n const { r, g, b } = HSVtoRGB(h, s, v);\n return rgbaColor(r, g, b);\n};\n\nexport function processColorInitially(\n color: unknown\n): number | null | undefined {\n 'worklet';\n if (color === null || color === undefined || typeof color === 'number') {\n return color;\n }\n\n let normalizedColor = normalizeColor(color);\n\n if (normalizedColor === null || normalizedColor === undefined) {\n return undefined;\n }\n\n if (typeof normalizedColor !== 'number') {\n return null;\n }\n\n normalizedColor = ((normalizedColor << 24) | (normalizedColor >>> 8)) >>> 0; // argb\n return normalizedColor;\n}\n\nexport function isColor(value: unknown): boolean {\n 'worklet';\n if (typeof value !== 'string') {\n return false;\n }\n return processColorInitially(value) != null;\n}\n\nexport function processColor(color: unknown): number | null | undefined {\n 'worklet';\n let normalizedColor = processColorInitially(color);\n if (normalizedColor === null || normalizedColor === undefined) {\n return undefined;\n }\n\n if (typeof normalizedColor !== 'number') {\n return null;\n }\n\n if (Platform.OS === 'android') {\n // Android use 32 bit *signed* integer to represent the color\n // We utilize the fact that bitwise operations in JS also operates on\n // signed 32 bit integers, so that we can use those to convert from\n // *unsigned* to *signed* 32bit int that way.\n normalizedColor = normalizedColor | 0x0;\n }\n\n return normalizedColor;\n}\n\nexport type ParsedColorArray = [number, number, number, number];\n\nexport function convertToHSVA(color: unknown): ParsedColorArray {\n 'worklet';\n const processedColor = processColorInitially(color)!; // argb;\n const a = (processedColor >>> 24) / 255;\n const r = (processedColor << 8) >>> 24;\n const g = (processedColor << 16) >>> 24;\n const b = (processedColor << 24) >>> 24;\n const { h, s, v } = RGBtoHSV(r, g, b);\n return [h, s, v, a];\n}\n\nexport function toRGBA(HSVA: ParsedColorArray): string {\n 'worklet';\n const { r, g, b } = HSVtoRGB(HSVA[0], HSVA[1], HSVA[2]);\n return `rgba(${r}, ${g}, ${b}, ${HSVA[3]})`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","makeRemote","makeShareable","isConfigured","NUMBER","PERCENTAGE","call","args","join","jsCachedMatchers","uiCachedMatchers","getMatchers","cachedMatchers","_WORKLET","rgb","undefined","RegExp","rgba","hsl","hsla","hex3","hex4","hex6","hex8","hue2rgb","p","q","t","hslToRgb","h","s","l","r","g","b","Math","round","parse255","str","int","Number","parseInt","parse360","parseFloat","parse1","num","parsePercentage","names","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","normalizeColor","color","matchers","match","exec","opacity","c","rgbaColor","alpha","OS","RGBtoHSV","arguments","length","max","min","d","v","HSVtoRGB","i","f","floor","hsvToColor","a","processColorInitially","normalizedColor","isColor","value","processColor","convertToRGBA","processedColor","rgbaArrayToRGBAColor","RGBA","toLinearSpace","gamma","res","push","pow","toGammaSpace"],"sources":["Colors.ts"],"sourcesContent":["/* global _WORKLET */\n/**\n * Copied from:\n * react-native/Libraries/StyleSheet/normalizeColor.js\n * react-native/Libraries/StyleSheet/processColor.js\n * https://github.com/wcandillon/react-native-redash/blob/master/src/Colors.ts\n */\n\n/* eslint no-bitwise: 0 */\nimport { Platform } from 'react-native';\nimport { makeRemote, makeShareable, isConfigured } from './core';\n\ninterface RGB {\n r: number;\n g: number;\n b: number;\n}\n\ninterface HSV {\n h: number;\n s: number;\n v: number;\n}\n\n// var INTEGER = '[-+]?\\\\d+';\nconst NUMBER = '[-+]?(?:\\\\d+(?:\\\\.\\\\d*)?|\\\\.\\\\d+)';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...args: unknown[]): string {\n 'worklet';\n return '\\\\(\\\\s*(' + args.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\n// matchers use RegExp objects which needs to be created separately on JS and on\n// the UI thread. We keep separate cache of Regexes for UI and JS using the below\n// objects, then pick the right cache in getMatchers() method.\nconst jsCachedMatchers: Matchers = {};\nconst uiCachedMatchers: Matchers = !isConfigured() ? {} : makeRemote({});\ntype Matchers = {\n rgb?: RegExp;\n rgba?: RegExp;\n hsl?: RegExp;\n hsla?: RegExp;\n hex3?: RegExp;\n hex4?: RegExp;\n hex5?: RegExp;\n hex6?: RegExp;\n hex8?: RegExp;\n};\nfunction getMatchers(): Matchers {\n 'worklet';\n const cachedMatchers: Matchers = _WORKLET\n ? uiCachedMatchers\n : jsCachedMatchers;\n if (cachedMatchers.rgb === undefined) {\n cachedMatchers.rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\n cachedMatchers.rgba = new RegExp(\n 'rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)\n );\n cachedMatchers.hsl = new RegExp(\n 'hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)\n );\n cachedMatchers.hsla = new RegExp(\n 'hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)\n );\n cachedMatchers.hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\n cachedMatchers.hex4 =\n /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\n cachedMatchers.hex6 = /^#([0-9a-fA-F]{6})$/;\n cachedMatchers.hex8 = /^#([0-9a-fA-F]{8})$/;\n }\n return cachedMatchers;\n}\n// cachedMatchers is lazy loaded and it is frozen when worklet is being created,\n// it is possible to call getMatchers() when the object is frozen, then cachedMatchers\n// has no assigned regexes\ngetMatchers();\n\nfunction hue2rgb(p: number, q: number, t: number): number {\n 'worklet';\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n\nfunction hslToRgb(h: number, s: number, l: number): number {\n 'worklet';\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n\n return (\n (Math.round(r * 255) << 24) |\n (Math.round(g * 255) << 16) |\n (Math.round(b * 255) << 8)\n );\n}\n\nfunction parse255(str: string): number {\n 'worklet';\n const int = Number.parseInt(str, 10);\n if (int < 0) {\n return 0;\n }\n if (int > 255) {\n return 255;\n }\n return int;\n}\n\nfunction parse360(str: string): number {\n 'worklet';\n const int = Number.parseFloat(str);\n return (((int % 360) + 360) % 360) / 360;\n}\n\nfunction parse1(str: string): number {\n 'worklet';\n const num = Number.parseFloat(str);\n if (num < 0) {\n return 0;\n }\n if (num > 1) {\n return 255;\n }\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str: string): number {\n 'worklet';\n // parseFloat conveniently ignores the final %\n const int = Number.parseFloat(str);\n if (int < 0) {\n return 0;\n }\n if (int > 100) {\n return 1;\n }\n return int / 100;\n}\n\nconst names: any = !isConfigured()\n ? null\n : makeShareable({\n transparent: 0x00000000,\n\n // http://www.w3.org/TR/css3-color/#svg-color\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff,\n });\n\nfunction normalizeColor(color: unknown): number | null {\n 'worklet';\n\n if (typeof color === 'number') {\n if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n return color;\n }\n return null;\n }\n\n if (typeof color !== 'string') {\n return null;\n }\n\n const matchers = getMatchers();\n\n let match: RegExpExecArray | null | undefined;\n\n // Ordered based on occurrences on Facebook codebase\n if ((match = matchers?.hex6?.exec(color))) {\n return Number.parseInt(match[1] + 'ff', 16) >>> 0;\n }\n\n if (names[color] !== undefined) {\n return names[color];\n }\n\n if ((match = matchers?.rgb?.exec(color))) {\n return (\n // b\n ((parse255(match[1]) << 24) | // r\n (parse255(match[2]) << 16) | // g\n (parse255(match[3]) << 8) |\n 0x000000ff) >>> // a\n 0\n );\n }\n\n if ((match = matchers?.rgba?.exec(color))) {\n return (\n // b\n ((parse255(match[1]) << 24) | // r\n (parse255(match[2]) << 16) | // g\n (parse255(match[3]) << 8) |\n parse1(match[4])) >>> // a\n 0\n );\n }\n\n if ((match = matchers?.hex3?.exec(color))) {\n return (\n Number.parseInt(\n match[1] +\n match[1] + // r\n match[2] +\n match[2] + // g\n match[3] +\n match[3] + // b\n 'ff', // a\n 16\n ) >>> 0\n );\n }\n\n // https://drafts.csswg.org/css-color-4/#hex-notation\n if ((match = matchers?.hex8?.exec(color))) {\n return Number.parseInt(match[1], 16) >>> 0;\n }\n\n if ((match = matchers?.hex4?.exec(color))) {\n return (\n Number.parseInt(\n match[1] +\n match[1] + // r\n match[2] +\n match[2] + // g\n match[3] +\n match[3] + // b\n match[4] +\n match[4], // a\n 16\n ) >>> 0\n );\n }\n\n if ((match = matchers?.hsl?.exec(color))) {\n return (\n (hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) |\n 0x000000ff) >>> // a\n 0\n );\n }\n\n if ((match = matchers?.hsla?.exec(color))) {\n return (\n (hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) |\n parse1(match[4])) >>> // a\n 0\n );\n }\n\n return null;\n}\n\nexport const opacity = (c: number): number => {\n 'worklet';\n return ((c >> 24) & 255) / 255;\n};\n\nexport const red = (c: number): number => {\n 'worklet';\n return (c >> 16) & 255;\n};\n\nexport const green = (c: number): number => {\n 'worklet';\n return (c >> 8) & 255;\n};\n\nexport const blue = (c: number): number => {\n 'worklet';\n return c & 255;\n};\n\nexport const rgbaColor = (\n r: number,\n g: number,\n b: number,\n alpha = 1\n): number | string => {\n 'worklet';\n if (Platform.OS === 'web' || !_WORKLET) {\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n\n const c =\n Math.round(alpha * 255) * (1 << 24) +\n Math.round(r) * (1 << 16) +\n Math.round(g) * (1 << 8) +\n Math.round(b);\n if (Platform.OS === 'android') {\n // on Android color is represented as signed 32 bit int\n return c < (1 << 31) >>> 0 ? c : c - 4294967296; // 4294967296 == Math.pow(2, 32);\n }\n return c;\n};\n\n/* accepts parameters\n * r Object = {r:x, g:y, b:z}\n * OR\n * r, g, b\n * 0 <= r, g, b <= 255\n * returns 0 <= h, s, v <= 1\n */\nexport function RGBtoHSV(rgb: RGB): HSV;\nexport function RGBtoHSV(r: number, g: number, b: number): HSV;\nexport function RGBtoHSV(r: any, g?: any, b?: any): HSV {\n 'worklet';\n /* eslint-disable */\n if (arguments.length === 1) {\n g = r.g;\n b = r.b;\n r = r.r;\n }\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n const v = max / 255;\n\n let h;\n\n switch (max) {\n default:\n /* fallthrough */\n case min:\n h = 0;\n break;\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n }\n\n return {\n h: h,\n s: s,\n v: v,\n };\n /* eslint-enable */\n}\n\n/* accepts parameters\n * h Object = {h:x, s:y, v:z}\n * OR\n * h, s, v\n * 0 <= h, s, v <= 1\n * returns 0 <= r, g, b <= 255\n */\nfunction HSVtoRGB(hsv: HSV): RGB;\nfunction HSVtoRGB(h: number, s: number, v: number): RGB;\nfunction HSVtoRGB(h: any, s?: any, v?: any) {\n 'worklet';\n /* eslint-disable */\n var r, g, b, i, f, p, q, t;\n if (arguments.length === 1) {\n s = h.s;\n v = h.v;\n h = h.h;\n }\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n (r = v), (g = t), (b = p);\n break;\n case 1:\n (r = q), (g = v), (b = p);\n break;\n case 2:\n (r = p), (g = v), (b = t);\n break;\n case 3:\n (r = p), (g = q), (b = v);\n break;\n case 4:\n (r = t), (g = p), (b = v);\n break;\n case 5:\n (r = v), (g = p), (b = q);\n break;\n }\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255),\n };\n /* eslint-enable */\n}\n\nexport const hsvToColor = (\n h: number,\n s: number,\n v: number,\n a: number\n): number | string => {\n 'worklet';\n const { r, g, b } = HSVtoRGB(h, s, v);\n return rgbaColor(r, g, b, a);\n};\n\nexport function processColorInitially(\n color: unknown\n): number | null | undefined {\n 'worklet';\n if (color === null || color === undefined || typeof color === 'number') {\n return color;\n }\n\n let normalizedColor = normalizeColor(color);\n\n if (normalizedColor === null || normalizedColor === undefined) {\n return undefined;\n }\n\n if (typeof normalizedColor !== 'number') {\n return null;\n }\n\n normalizedColor = ((normalizedColor << 24) | (normalizedColor >>> 8)) >>> 0; // argb\n return normalizedColor;\n}\n\nexport function isColor(value: unknown): boolean {\n 'worklet';\n if (typeof value !== 'string') {\n return false;\n }\n return processColorInitially(value) != null;\n}\n\nexport function processColor(color: unknown): number | null | undefined {\n 'worklet';\n let normalizedColor = processColorInitially(color);\n if (normalizedColor === null || normalizedColor === undefined) {\n return undefined;\n }\n\n if (typeof normalizedColor !== 'number') {\n return null;\n }\n\n if (Platform.OS === 'android') {\n // Android use 32 bit *signed* integer to represent the color\n // We utilize the fact that bitwise operations in JS also operates on\n // signed 32 bit integers, so that we can use those to convert from\n // *unsigned* to *signed* 32bit int that way.\n normalizedColor = normalizedColor | 0x0;\n }\n\n return normalizedColor;\n}\n\nexport type ParsedColorArray = [number, number, number, number];\n\nexport function convertToRGBA(color: unknown): ParsedColorArray {\n 'worklet';\n const processedColor = processColorInitially(color)!; // argb;\n const a = (processedColor >>> 24) / 255;\n const r = ((processedColor << 8) >>> 24) / 255;\n const g = ((processedColor << 16) >>> 24) / 255;\n const b = ((processedColor << 24) >>> 24) / 255;\n return [r, g, b, a];\n}\n\nexport function rgbaArrayToRGBAColor(RGBA: ParsedColorArray): string {\n 'worklet';\n return `rgba(${Math.round(RGBA[0] * 255)}, ${Math.round(\n RGBA[1] * 255\n )}, ${Math.round(RGBA[2] * 255)}, ${RGBA[3]})`;\n}\n\nexport function toLinearSpace(\n RGBA: ParsedColorArray,\n gamma = 2.2\n): ParsedColorArray {\n 'worklet';\n const res = [];\n for (let i = 0; i < 3; ++i) {\n res.push(Math.pow(RGBA[i], gamma));\n }\n res.push(RGBA[3]);\n return res as ParsedColorArray;\n}\n\nexport function toGammaSpace(\n RGBA: ParsedColorArray,\n gamma = 2.2\n): ParsedColorArray {\n 'worklet';\n const res = [];\n for (let i = 0; i < 3; ++i) {\n res.push(Math.pow(RGBA[i], 1 / gamma));\n }\n res.push(RGBA[3]);\n return res as ParsedColorArray;\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
3
  import { NativeModules } from 'react-native';
4
- import { version as jsVersion } from '../../../package.json';
4
+ import { checkVersion } from '../platform-specific/checkVersion';
5
5
  export class NativeReanimated {
6
6
  constructor() {
7
7
  let native = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
@@ -21,40 +21,24 @@ export class NativeReanimated {
21
21
  this.native = native;
22
22
 
23
23
  if (native) {
24
- this.checkVersion();
25
- }
26
- }
27
-
28
- checkVersion() {
29
- const cppVersion = global._REANIMATED_VERSION_CPP;
30
-
31
- const ok = (() => {
32
- if (jsVersion.match(/^\d+\.\d+\.\d+$/) && cppVersion.match(/^\d+\.\d+\.\d+$/)) {
33
- // x.y.z, compare only major and minor, skip patch
34
- const [jsMajor, jsMinor] = jsVersion.split('.');
35
- const [cppMajor, cppMinor] = cppVersion.split('.');
36
- return jsMajor === cppMajor && jsMinor === cppMinor;
37
- } else {
38
- // alpha, beta or rc, compare everything
39
- return jsVersion === cppVersion;
24
+ if (this.InnerNativeModule === undefined) {
25
+ console.error(`[Reanimated] The native part of Reanimated doesn't seem to be initialized. This could be caused by\n\
26
+ - not rebuilding the app after installing or upgrading Reanimated\n\
27
+ - trying to run Reanimated on an unsupported platform\n\
28
+ - running in a brownfield app without manually initializing the native library`);
29
+ return;
40
30
  }
41
- })();
42
31
 
43
- if (!ok) {
44
- console.error(`[Reanimated] Mismatch between JavaScript part and native part of Reanimated (${jsVersion} vs. ${cppVersion}). Did you forget to re-build the app after upgrading react-native-reanimated? If you use Expo Go, you must downgrade to ${cppVersion} which is bundled into Expo SDK.`); // TODO: detect Expo managed workflow
32
+ checkVersion();
45
33
  }
46
34
  }
47
35
 
48
- getTimestamp() {
49
- throw new Error('stub implementation, used on the web only');
50
- }
51
-
52
- installCoreFunctions(valueUnpacker) {
53
- return this.InnerNativeModule.installCoreFunctions(valueUnpacker);
36
+ installCoreFunctions(callGuard, valueUnpacker) {
37
+ return this.InnerNativeModule.installCoreFunctions(callGuard, valueUnpacker);
54
38
  }
55
39
 
56
- makeShareableClone(value) {
57
- return this.InnerNativeModule.makeShareableClone(value);
40
+ makeShareableClone(value, shouldPersistRemote) {
41
+ return this.InnerNativeModule.makeShareableClone(value, shouldPersistRemote);
58
42
  }
59
43
 
60
44
  makeSynchronizedDataHolder(valueRef) {
@@ -73,8 +57,8 @@ export class NativeReanimated {
73
57
  return this.InnerNativeModule.scheduleOnUI(shareable);
74
58
  }
75
59
 
76
- registerSensor(sensorType, interval, handler) {
77
- return this.InnerNativeModule.registerSensor(sensorType, interval, handler);
60
+ registerSensor(sensorType, interval, iosReferenceFrame, handler) {
61
+ return this.InnerNativeModule.registerSensor(sensorType, interval, iosReferenceFrame, handler);
78
62
  }
79
63
 
80
64
  unregisterSensor(sensorId) {
@@ -93,8 +77,8 @@ export class NativeReanimated {
93
77
  return this.InnerNativeModule.getViewProp(viewTag, propName, callback);
94
78
  }
95
79
 
96
- configureLayoutAnimation(viewTag, type, config) {
97
- this.InnerNativeModule.configureLayoutAnimation(viewTag, type, config);
80
+ configureLayoutAnimation(viewTag, type, sharedTransitionTag, config) {
81
+ this.InnerNativeModule.configureLayoutAnimation(viewTag, type, sharedTransitionTag, config);
98
82
  }
99
83
 
100
84
  enableLayoutAnimations(flag) {
@@ -105,8 +89,8 @@ export class NativeReanimated {
105
89
  this.InnerNativeModule.configureProps(uiProps, nativeProps);
106
90
  }
107
91
 
108
- subscribeForKeyboardEvents(handler) {
109
- return this.InnerNativeModule.subscribeForKeyboardEvents(handler);
92
+ subscribeForKeyboardEvents(handler, isStatusBarTranslucent) {
93
+ return this.InnerNativeModule.subscribeForKeyboardEvents(handler, isStatusBarTranslucent);
110
94
  }
111
95
 
112
96
  unsubscribeFromKeyboardEvents(listenerId) {
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","version","jsVersion","NativeReanimated","constructor","native","global","__reanimatedModuleProxy","undefined","ReanimatedModule","installTurboModule","InnerNativeModule","checkVersion","cppVersion","_REANIMATED_VERSION_CPP","ok","match","jsMajor","jsMinor","split","cppMajor","cppMinor","console","error","getTimestamp","Error","installCoreFunctions","valueUnpacker","makeShareableClone","value","makeSynchronizedDataHolder","valueRef","getDataSynchronously","ref","updateDataSynchronously","scheduleOnUI","shareable","registerSensor","sensorType","interval","handler","unregisterSensor","sensorId","registerEventHandler","eventHash","eventHandler","unregisterEventHandler","id","getViewProp","viewTag","propName","callback","configureLayoutAnimation","type","config","enableLayoutAnimations","flag","configureProps","uiProps","nativeProps","subscribeForKeyboardEvents","unsubscribeFromKeyboardEvents","listenerId"],"sources":["NativeReanimated.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\nimport { ShareableRef, ShareableSyncDataHolderRef } from '../commonTypes';\nimport { LayoutAnimationFunction } from '../layoutReanimation';\nimport { version as jsVersion } from '../../../package.json';\n\nexport class NativeReanimated {\n native: boolean;\n private InnerNativeModule: any;\n\n constructor(native = true) {\n if (global.__reanimatedModuleProxy === undefined && native) {\n const { ReanimatedModule } = NativeModules;\n ReanimatedModule?.installTurboModule();\n }\n this.InnerNativeModule = global.__reanimatedModuleProxy;\n this.native = native;\n if (native) {\n this.checkVersion();\n }\n }\n\n checkVersion(): void {\n const cppVersion = global._REANIMATED_VERSION_CPP;\n const ok = (() => {\n if (\n jsVersion.match(/^\\d+\\.\\d+\\.\\d+$/) &&\n cppVersion.match(/^\\d+\\.\\d+\\.\\d+$/)\n ) {\n // x.y.z, compare only major and minor, skip patch\n const [jsMajor, jsMinor] = jsVersion.split('.');\n const [cppMajor, cppMinor] = cppVersion.split('.');\n return jsMajor === cppMajor && jsMinor === cppMinor;\n } else {\n // alpha, beta or rc, compare everything\n return jsVersion === cppVersion;\n }\n })();\n if (!ok) {\n console.error(\n `[Reanimated] Mismatch between JavaScript part and native part of Reanimated (${jsVersion} vs. ${cppVersion}). Did you forget to re-build the app after upgrading react-native-reanimated? If you use Expo Go, you must downgrade to ${cppVersion} which is bundled into Expo SDK.`\n );\n // TODO: detect Expo managed workflow\n }\n }\n\n getTimestamp(): number {\n throw new Error('stub implementation, used on the web only');\n }\n\n installCoreFunctions(valueUnpacker: <T>(value: T) => T): void {\n return this.InnerNativeModule.installCoreFunctions(valueUnpacker);\n }\n\n makeShareableClone<T>(value: T): ShareableRef<T> {\n return this.InnerNativeModule.makeShareableClone(value);\n }\n\n makeSynchronizedDataHolder<T>(\n valueRef: ShareableRef<T>\n ): ShareableSyncDataHolderRef<T> {\n return this.InnerNativeModule.makeSynchronizedDataHolder(valueRef);\n }\n\n getDataSynchronously<T>(ref: ShareableSyncDataHolderRef<T>): T {\n return this.InnerNativeModule.getDataSynchronously(ref);\n }\n\n updateDataSynchronously<T>(\n ref: ShareableSyncDataHolderRef<T>,\n value: T\n ): void {\n this.InnerNativeModule.updateDataSynchronously(ref, value);\n }\n\n scheduleOnUI<T>(shareable: ShareableRef<T>) {\n return this.InnerNativeModule.scheduleOnUI(shareable);\n }\n\n registerSensor<T>(\n sensorType: number,\n interval: number,\n handler: ShareableRef<T>\n ) {\n return this.InnerNativeModule.registerSensor(sensorType, interval, handler);\n }\n\n unregisterSensor(sensorId: number) {\n return this.InnerNativeModule.unregisterSensor(sensorId);\n }\n\n registerEventHandler<T>(\n eventHash: string,\n eventHandler: ShareableRef<T>\n ): string {\n return this.InnerNativeModule.registerEventHandler(eventHash, eventHandler);\n }\n\n unregisterEventHandler(id: string): void {\n return this.InnerNativeModule.unregisterEventHandler(id);\n }\n\n getViewProp<T>(\n viewTag: string,\n propName: string,\n callback?: (result: T) => void\n ): Promise<T> {\n return this.InnerNativeModule.getViewProp(viewTag, propName, callback);\n }\n\n configureLayoutAnimation(\n viewTag: number,\n type: string,\n config: ShareableRef<Keyframe | LayoutAnimationFunction>\n ) {\n this.InnerNativeModule.configureLayoutAnimation(viewTag, type, config);\n }\n\n enableLayoutAnimations(flag: boolean): void {\n this.InnerNativeModule.enableLayoutAnimations(flag);\n }\n\n configureProps(uiProps: string[], nativeProps: string[]): void {\n this.InnerNativeModule.configureProps(uiProps, nativeProps);\n }\n\n subscribeForKeyboardEvents(handler: ShareableRef<number>): number {\n return this.InnerNativeModule.subscribeForKeyboardEvents(handler);\n }\n\n unsubscribeFromKeyboardEvents(listenerId: number): void {\n this.InnerNativeModule.unsubscribeFromKeyboardEvents(listenerId);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["NativeModules","checkVersion","NativeReanimated","constructor","native","global","__reanimatedModuleProxy","undefined","ReanimatedModule","installTurboModule","InnerNativeModule","console","error","installCoreFunctions","callGuard","valueUnpacker","makeShareableClone","value","shouldPersistRemote","makeSynchronizedDataHolder","valueRef","getDataSynchronously","ref","updateDataSynchronously","scheduleOnUI","shareable","registerSensor","sensorType","interval","iosReferenceFrame","handler","unregisterSensor","sensorId","registerEventHandler","eventHash","eventHandler","unregisterEventHandler","id","getViewProp","viewTag","propName","callback","configureLayoutAnimation","type","sharedTransitionTag","config","enableLayoutAnimations","flag","configureProps","uiProps","nativeProps","subscribeForKeyboardEvents","isStatusBarTranslucent","unsubscribeFromKeyboardEvents","listenerId"],"sources":["NativeReanimated.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\nimport {\n ShareableRef,\n ShareableSyncDataHolderRef,\n Value3D,\n ValueRotation,\n} from '../commonTypes';\nimport {\n LayoutAnimationFunction,\n LayoutAnimationType,\n} from '../layoutReanimation';\nimport { checkVersion } from '../platform-specific/checkVersion';\n\nexport class NativeReanimated {\n native: boolean;\n private InnerNativeModule: any;\n\n constructor(native = true) {\n if (global.__reanimatedModuleProxy === undefined && native) {\n const { ReanimatedModule } = NativeModules;\n ReanimatedModule?.installTurboModule();\n }\n this.InnerNativeModule = global.__reanimatedModuleProxy;\n this.native = native;\n if (native) {\n if (this.InnerNativeModule === undefined) {\n console.error(\n `[Reanimated] The native part of Reanimated doesn't seem to be initialized. This could be caused by\\n\\\n - not rebuilding the app after installing or upgrading Reanimated\\n\\\n - trying to run Reanimated on an unsupported platform\\n\\\n - running in a brownfield app without manually initializing the native library`\n );\n return;\n }\n checkVersion();\n }\n }\n\n installCoreFunctions(\n callGuard: <T extends Array<any>, U>(\n fn: (...args: T) => U,\n ...args: T\n ) => void,\n valueUnpacker: <T>(value: T) => T\n ): void {\n return this.InnerNativeModule.installCoreFunctions(\n callGuard,\n valueUnpacker\n );\n }\n\n makeShareableClone<T>(\n value: T,\n shouldPersistRemote: boolean\n ): ShareableRef<T> {\n return this.InnerNativeModule.makeShareableClone(\n value,\n shouldPersistRemote\n );\n }\n\n makeSynchronizedDataHolder<T>(\n valueRef: ShareableRef<T>\n ): ShareableSyncDataHolderRef<T> {\n return this.InnerNativeModule.makeSynchronizedDataHolder(valueRef);\n }\n\n getDataSynchronously<T>(ref: ShareableSyncDataHolderRef<T>): T {\n return this.InnerNativeModule.getDataSynchronously(ref);\n }\n\n updateDataSynchronously<T>(\n ref: ShareableSyncDataHolderRef<T>,\n value: T\n ): void {\n this.InnerNativeModule.updateDataSynchronously(ref, value);\n }\n\n scheduleOnUI<T>(shareable: ShareableRef<T>) {\n return this.InnerNativeModule.scheduleOnUI(shareable);\n }\n\n registerSensor<T>(\n sensorType: number,\n interval: number,\n iosReferenceFrame: number,\n handler: ShareableRef<T> | ((data: Value3D | ValueRotation) => void)\n ) {\n return this.InnerNativeModule.registerSensor(\n sensorType,\n interval,\n iosReferenceFrame,\n handler\n );\n }\n\n unregisterSensor(sensorId: number) {\n return this.InnerNativeModule.unregisterSensor(sensorId);\n }\n\n registerEventHandler<T>(\n eventHash: string,\n eventHandler: ShareableRef<T>\n ): string {\n return this.InnerNativeModule.registerEventHandler(eventHash, eventHandler);\n }\n\n unregisterEventHandler(id: string): void {\n return this.InnerNativeModule.unregisterEventHandler(id);\n }\n\n getViewProp<T>(\n viewTag: string,\n propName: string,\n callback?: (result: T) => void\n ): Promise<T> {\n return this.InnerNativeModule.getViewProp(viewTag, propName, callback);\n }\n\n configureLayoutAnimation(\n viewTag: number,\n type: LayoutAnimationType,\n sharedTransitionTag: string,\n config: ShareableRef<Keyframe | LayoutAnimationFunction>\n ) {\n this.InnerNativeModule.configureLayoutAnimation(\n viewTag,\n type,\n sharedTransitionTag,\n config\n );\n }\n\n enableLayoutAnimations(flag: boolean): void {\n this.InnerNativeModule.enableLayoutAnimations(flag);\n }\n\n configureProps(uiProps: string[], nativeProps: string[]): void {\n this.InnerNativeModule.configureProps(uiProps, nativeProps);\n }\n\n subscribeForKeyboardEvents(\n handler: ShareableRef<number>,\n isStatusBarTranslucent: boolean\n ): number {\n return this.InnerNativeModule.subscribeForKeyboardEvents(\n handler,\n isStatusBarTranslucent\n );\n }\n\n unsubscribeFromKeyboardEvents(listenerId: number): void {\n this.InnerNativeModule.unsubscribeFromKeyboardEvents(listenerId);\n }\n}\n"],"mappings":"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"}
@@ -29,7 +29,7 @@ export function setPath(obj, path, value) {
29
29
  // creates entry if there isn't one
30
30
  currObj = currObj;
31
31
 
32
- if (!currObj[keys[i]]) {
32
+ if (!(keys[i] in currObj)) {
33
33
  // if next key is a number create an array
34
34
  if (typeof keys[i + 1] === 'number') {
35
35
  currObj[keys[i]] = [];
@@ -135,6 +135,10 @@ export function withStyleAnimation(styleAnimations) {
135
135
  prevVal = prevAnimation.current;
136
136
  }
137
137
 
138
+ if (prevVal === undefined) {
139
+ console.warn(`Initial values for animation are missing for property ${currentEntry.path.join('.')}`);
140
+ }
141
+
138
142
  setPath(animation.current, currentEntry.path, prevVal);
139
143
  let currentAnimation;
140
144
 
@@ -1 +1 @@
1
- {"version":3,"names":["defineAnimation","withTiming","ColorProperties","processColor","resolvePath","obj","path","keys","Array","isArray","reduce","acc","current","undefined","setPath","value","currObj","i","length","withStyleAnimation","styleAnimations","onFrame","animation","now","stillGoing","entriesToCheck","currentEntry","pop","index","push","concat","key","Object","currentStyleAnimation","finished","callback","includes","onStart","previousAnimation","prevAnimation","prevVal","currentAnimation","duration","animationsToCheck","element","values","isHigherOrder"],"sources":["styleAnimation.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport {\n Timestamp,\n AnimatableValue,\n AnimationObject,\n Animation,\n AnimatedStyle,\n NestedObject,\n NestedObjectValues,\n} from '../commonTypes';\nimport { StyleLayoutAnimation } from './commonTypes';\nimport { withTiming } from './timing';\nimport { ColorProperties } from '../UpdateProps';\nimport { processColor } from '../Colors';\n\n// resolves path to value for nested objects\n// if path cannot be resolved returns undefined\nexport function resolvePath<T>(\n obj: NestedObject<T>,\n path: AnimatableValue[] | AnimatableValue\n): NestedObjectValues<T> | undefined {\n 'worklet';\n const keys: AnimatableValue[] = Array.isArray(path) ? path : [path];\n return keys.reduce<NestedObjectValues<T> | undefined>((acc, current) => {\n if (Array.isArray(acc) && typeof current === 'number') {\n return acc[current];\n } else if (typeof acc === 'object' && (current as number | string) in acc) {\n return (acc as { [key: string]: NestedObjectValues<T> })[\n current as number | string\n ];\n }\n return undefined;\n }, obj);\n}\n\n// set value at given path\ntype Path = Array<string | number> | string | number;\nexport function setPath<T>(\n obj: NestedObject<T>,\n path: Path,\n value: NestedObjectValues<T>\n): void {\n 'worklet';\n const keys: Path = Array.isArray(path) ? path : [path];\n let currObj: NestedObjectValues<T> = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n // creates entry if there isn't one\n currObj = currObj as { [key: string]: NestedObjectValues<T> };\n if (!currObj[keys[i]]) {\n // if next key is a number create an array\n if (typeof keys[i + 1] === 'number') {\n currObj[keys[i]] = [];\n } else {\n currObj[keys[i]] = {};\n }\n }\n currObj = currObj[keys[i]];\n }\n\n (currObj as { [key: string]: NestedObjectValues<T> })[keys[keys.length - 1]] =\n value;\n}\n\ninterface NestedObjectEntry<T> {\n value: NestedObjectValues<T>;\n path: (string | number)[];\n}\n\nexport function withStyleAnimation(\n styleAnimations: AnimatedStyle\n): StyleLayoutAnimation {\n 'worklet';\n return defineAnimation<StyleLayoutAnimation>({}, () => {\n 'worklet';\n\n const onFrame = (\n animation: StyleLayoutAnimation,\n now: Timestamp\n ): boolean => {\n let stillGoing = false;\n const entriesToCheck: NestedObjectEntry<AnimationObject>[] = [\n { value: animation.styleAnimations, path: [] },\n ];\n while (entriesToCheck.length > 0) {\n const currentEntry: NestedObjectEntry<AnimationObject> =\n entriesToCheck.pop() as NestedObjectEntry<AnimationObject>;\n if (Array.isArray(currentEntry.value)) {\n for (let index = 0; index < currentEntry.value.length; index++) {\n entriesToCheck.push({\n value: currentEntry.value[index],\n path: currentEntry.path.concat(index),\n });\n }\n } else if (\n typeof currentEntry.value === 'object' &&\n currentEntry.value.onFrame === undefined\n ) {\n // nested object\n for (const key of Object.keys(currentEntry.value)) {\n entriesToCheck.push({\n value: currentEntry.value[key],\n path: currentEntry.path.concat(key),\n });\n }\n } else {\n const currentStyleAnimation: AnimationObject =\n currentEntry.value as AnimationObject;\n if (currentStyleAnimation.finished) {\n continue;\n }\n const finished = currentStyleAnimation.onFrame(\n currentStyleAnimation,\n now\n );\n if (finished) {\n currentStyleAnimation.finished = true;\n if (currentStyleAnimation.callback) {\n currentStyleAnimation.callback(true);\n }\n } else {\n stillGoing = true;\n }\n\n if (ColorProperties.includes(currentEntry.path[0] as string)) {\n currentStyleAnimation.current = processColor(\n currentStyleAnimation.current\n ) as number;\n }\n\n setPath(\n animation.current,\n currentEntry.path,\n currentStyleAnimation.current\n );\n }\n }\n return !stillGoing;\n };\n\n const onStart = (\n animation: StyleLayoutAnimation,\n value: AnimatedStyle,\n now: Timestamp,\n previousAnimation: StyleLayoutAnimation\n ): void => {\n const entriesToCheck: NestedObjectEntry<\n AnimationObject | AnimatableValue\n >[] = [{ value: styleAnimations, path: [] }];\n while (entriesToCheck.length > 0) {\n const currentEntry: NestedObjectEntry<\n AnimationObject | AnimatableValue\n > = entriesToCheck.pop() as NestedObjectEntry<\n AnimationObject | AnimatableValue\n >;\n if (Array.isArray(currentEntry.value)) {\n for (let index = 0; index < currentEntry.value.length; index++) {\n entriesToCheck.push({\n value: currentEntry.value[index],\n path: currentEntry.path.concat(index),\n });\n }\n } else if (\n typeof currentEntry.value === 'object' &&\n currentEntry.value.onStart === undefined\n ) {\n for (const key of Object.keys(currentEntry.value)) {\n entriesToCheck.push({\n value: currentEntry.value[key],\n path: currentEntry.path.concat(key),\n });\n }\n } else {\n const prevAnimation = resolvePath(\n previousAnimation?.styleAnimations,\n currentEntry.path\n );\n let prevVal = resolvePath(value, currentEntry.path);\n if (prevAnimation && !prevVal) {\n prevVal = prevAnimation.current;\n }\n setPath(animation.current, currentEntry.path, prevVal);\n let currentAnimation: AnimationObject;\n if (\n typeof currentEntry.value !== 'object' ||\n !currentEntry.value.onStart\n ) {\n currentAnimation = withTiming(\n currentEntry.value as AnimatableValue,\n { duration: 0 }\n );\n setPath(\n animation.styleAnimations,\n currentEntry.path,\n currentAnimation\n );\n } else {\n currentAnimation = currentEntry.value as Animation<AnimationObject>;\n }\n currentAnimation.onStart(\n currentAnimation,\n prevVal,\n now,\n prevAnimation\n );\n }\n }\n };\n\n const callback = (finished: boolean): void => {\n if (!finished) {\n const animationsToCheck: NestedObjectValues<AnimationObject>[] = [\n styleAnimations,\n ];\n while (animationsToCheck.length > 0) {\n const currentAnimation: NestedObjectValues<AnimationObject> =\n animationsToCheck.pop() as NestedObjectValues<AnimationObject>;\n if (Array.isArray(currentAnimation)) {\n for (const element of currentAnimation) {\n animationsToCheck.push(element);\n }\n } else if (\n typeof currentAnimation === 'object' &&\n currentAnimation.onStart === undefined\n ) {\n for (const value of Object.values(currentAnimation)) {\n animationsToCheck.push(value);\n }\n } else {\n const currentStyleAnimation: AnimationObject =\n currentAnimation as AnimationObject;\n if (\n !currentStyleAnimation.finished &&\n currentStyleAnimation.callback\n ) {\n currentStyleAnimation.callback(false);\n }\n }\n }\n }\n };\n\n return {\n isHigherOrder: true,\n onFrame,\n onStart,\n current: {},\n styleAnimations,\n callback,\n } as StyleLayoutAnimation;\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["defineAnimation","withTiming","ColorProperties","processColor","resolvePath","obj","path","keys","Array","isArray","reduce","acc","current","undefined","setPath","value","currObj","i","length","withStyleAnimation","styleAnimations","onFrame","animation","now","stillGoing","entriesToCheck","currentEntry","pop","index","push","concat","key","Object","currentStyleAnimation","finished","callback","includes","onStart","previousAnimation","prevAnimation","prevVal","console","warn","join","currentAnimation","duration","animationsToCheck","element","values","isHigherOrder"],"sources":["styleAnimation.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport {\n Timestamp,\n AnimatableValue,\n AnimationObject,\n Animation,\n AnimatedStyle,\n NestedObject,\n NestedObjectValues,\n} from '../commonTypes';\nimport { StyleLayoutAnimation } from './commonTypes';\nimport { withTiming } from './timing';\nimport { ColorProperties } from '../UpdateProps';\nimport { processColor } from '../Colors';\n\n// resolves path to value for nested objects\n// if path cannot be resolved returns undefined\nexport function resolvePath<T>(\n obj: NestedObject<T>,\n path: AnimatableValue[] | AnimatableValue\n): NestedObjectValues<T> | undefined {\n 'worklet';\n const keys: AnimatableValue[] = Array.isArray(path) ? path : [path];\n return keys.reduce<NestedObjectValues<T> | undefined>((acc, current) => {\n if (Array.isArray(acc) && typeof current === 'number') {\n return acc[current];\n } else if (typeof acc === 'object' && (current as number | string) in acc) {\n return (acc as { [key: string]: NestedObjectValues<T> })[\n current as number | string\n ];\n }\n return undefined;\n }, obj);\n}\n\n// set value at given path\ntype Path = Array<string | number> | string | number;\nexport function setPath<T>(\n obj: NestedObject<T>,\n path: Path,\n value: NestedObjectValues<T>\n): void {\n 'worklet';\n const keys: Path = Array.isArray(path) ? path : [path];\n let currObj: NestedObjectValues<T> = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n // creates entry if there isn't one\n currObj = currObj as { [key: string]: NestedObjectValues<T> };\n if (!(keys[i] in currObj)) {\n // if next key is a number create an array\n if (typeof keys[i + 1] === 'number') {\n currObj[keys[i]] = [];\n } else {\n currObj[keys[i]] = {};\n }\n }\n currObj = currObj[keys[i]];\n }\n\n (currObj as { [key: string]: NestedObjectValues<T> })[keys[keys.length - 1]] =\n value;\n}\n\ninterface NestedObjectEntry<T> {\n value: NestedObjectValues<T>;\n path: (string | number)[];\n}\n\nexport function withStyleAnimation(\n styleAnimations: AnimatedStyle\n): StyleLayoutAnimation {\n 'worklet';\n return defineAnimation<StyleLayoutAnimation>({}, () => {\n 'worklet';\n\n const onFrame = (\n animation: StyleLayoutAnimation,\n now: Timestamp\n ): boolean => {\n let stillGoing = false;\n const entriesToCheck: NestedObjectEntry<AnimationObject>[] = [\n { value: animation.styleAnimations, path: [] },\n ];\n while (entriesToCheck.length > 0) {\n const currentEntry: NestedObjectEntry<AnimationObject> =\n entriesToCheck.pop() as NestedObjectEntry<AnimationObject>;\n if (Array.isArray(currentEntry.value)) {\n for (let index = 0; index < currentEntry.value.length; index++) {\n entriesToCheck.push({\n value: currentEntry.value[index],\n path: currentEntry.path.concat(index),\n });\n }\n } else if (\n typeof currentEntry.value === 'object' &&\n currentEntry.value.onFrame === undefined\n ) {\n // nested object\n for (const key of Object.keys(currentEntry.value)) {\n entriesToCheck.push({\n value: currentEntry.value[key],\n path: currentEntry.path.concat(key),\n });\n }\n } else {\n const currentStyleAnimation: AnimationObject =\n currentEntry.value as AnimationObject;\n if (currentStyleAnimation.finished) {\n continue;\n }\n const finished = currentStyleAnimation.onFrame(\n currentStyleAnimation,\n now\n );\n if (finished) {\n currentStyleAnimation.finished = true;\n if (currentStyleAnimation.callback) {\n currentStyleAnimation.callback(true);\n }\n } else {\n stillGoing = true;\n }\n\n if (ColorProperties.includes(currentEntry.path[0] as string)) {\n currentStyleAnimation.current = processColor(\n currentStyleAnimation.current\n ) as number;\n }\n\n setPath(\n animation.current,\n currentEntry.path,\n currentStyleAnimation.current\n );\n }\n }\n return !stillGoing;\n };\n\n const onStart = (\n animation: StyleLayoutAnimation,\n value: AnimatedStyle,\n now: Timestamp,\n previousAnimation: StyleLayoutAnimation\n ): void => {\n const entriesToCheck: NestedObjectEntry<\n AnimationObject | AnimatableValue\n >[] = [{ value: styleAnimations, path: [] }];\n while (entriesToCheck.length > 0) {\n const currentEntry: NestedObjectEntry<\n AnimationObject | AnimatableValue\n > = entriesToCheck.pop() as NestedObjectEntry<\n AnimationObject | AnimatableValue\n >;\n if (Array.isArray(currentEntry.value)) {\n for (let index = 0; index < currentEntry.value.length; index++) {\n entriesToCheck.push({\n value: currentEntry.value[index],\n path: currentEntry.path.concat(index),\n });\n }\n } else if (\n typeof currentEntry.value === 'object' &&\n currentEntry.value.onStart === undefined\n ) {\n for (const key of Object.keys(currentEntry.value)) {\n entriesToCheck.push({\n value: currentEntry.value[key],\n path: currentEntry.path.concat(key),\n });\n }\n } else {\n const prevAnimation = resolvePath(\n previousAnimation?.styleAnimations,\n currentEntry.path\n );\n let prevVal = resolvePath(value, currentEntry.path);\n if (prevAnimation && !prevVal) {\n prevVal = prevAnimation.current;\n }\n if (prevVal === undefined) {\n console.warn(\n `Initial values for animation are missing for property ${currentEntry.path.join(\n '.'\n )}`\n );\n }\n setPath(animation.current, currentEntry.path, prevVal);\n let currentAnimation: AnimationObject;\n if (\n typeof currentEntry.value !== 'object' ||\n !currentEntry.value.onStart\n ) {\n currentAnimation = withTiming(\n currentEntry.value as AnimatableValue,\n { duration: 0 }\n );\n setPath(\n animation.styleAnimations,\n currentEntry.path,\n currentAnimation\n );\n } else {\n currentAnimation = currentEntry.value as Animation<AnimationObject>;\n }\n currentAnimation.onStart(\n currentAnimation,\n prevVal,\n now,\n prevAnimation\n );\n }\n }\n };\n\n const callback = (finished: boolean): void => {\n if (!finished) {\n const animationsToCheck: NestedObjectValues<AnimationObject>[] = [\n styleAnimations,\n ];\n while (animationsToCheck.length > 0) {\n const currentAnimation: NestedObjectValues<AnimationObject> =\n animationsToCheck.pop() as NestedObjectValues<AnimationObject>;\n if (Array.isArray(currentAnimation)) {\n for (const element of currentAnimation) {\n animationsToCheck.push(element);\n }\n } else if (\n typeof currentAnimation === 'object' &&\n currentAnimation.onStart === undefined\n ) {\n for (const value of Object.values(currentAnimation)) {\n animationsToCheck.push(value);\n }\n } else {\n const currentStyleAnimation: AnimationObject =\n currentAnimation as AnimationObject;\n if (\n !currentStyleAnimation.finished &&\n currentStyleAnimation.callback\n ) {\n currentStyleAnimation.callback(false);\n }\n }\n }\n }\n };\n\n return {\n isHigherOrder: true,\n onFrame,\n onStart,\n current: {},\n styleAnimations,\n callback,\n } as StyleLayoutAnimation;\n });\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /* global _WORKLET */
2
- import { convertToHSVA, isColor, toRGBA } from '../Colors';
2
+ import { isColor, convertToRGBA, rgbaArrayToRGBAColor, toGammaSpace, toLinearSpace } from '../Colors';
3
3
  import NativeReanimatedModule from '../NativeReanimated';
4
4
  let IN_STYLE_UPDATER = false;
5
5
  export function initialUpdaterRun(updater) {
@@ -91,44 +91,44 @@ function decorateAnimation(animation) {
91
91
  return res;
92
92
  };
93
93
 
94
- const tab = ['H', 'S', 'V', 'A'];
94
+ const tab = ['R', 'G', 'B', 'A'];
95
95
 
96
96
  const colorOnStart = (animation, value, timestamp, previousAnimation) => {
97
- let HSVAValue;
98
- let HSVACurrent;
99
- let HSVAToValue;
97
+ let RGBAValue;
98
+ let RGBACurrent;
99
+ let RGBAToValue;
100
100
  const res = [];
101
101
 
102
102
  if (isColor(value)) {
103
- HSVACurrent = convertToHSVA(animation.current);
104
- HSVAValue = convertToHSVA(value);
103
+ RGBACurrent = toLinearSpace(convertToRGBA(animation.current));
104
+ RGBAValue = toLinearSpace(convertToRGBA(value));
105
105
 
106
106
  if (animation.toValue) {
107
- HSVAToValue = convertToHSVA(animation.toValue);
107
+ RGBAToValue = toLinearSpace(convertToRGBA(animation.toValue));
108
108
  }
109
109
  }
110
110
 
111
111
  tab.forEach((i, index) => {
112
112
  animation[i] = Object.assign({}, animationCopy);
113
- animation[i].current = HSVACurrent[index];
114
- animation[i].toValue = HSVAToValue ? HSVAToValue[index] : undefined;
115
- animation[i].onStart(animation[i], HSVAValue[index], timestamp, previousAnimation ? previousAnimation[i] : undefined);
113
+ animation[i].current = RGBACurrent[index];
114
+ animation[i].toValue = RGBAToValue ? RGBAToValue[index] : undefined;
115
+ animation[i].onStart(animation[i], RGBAValue[index], timestamp, previousAnimation ? previousAnimation[i] : undefined);
116
116
  res.push(animation[i].current);
117
117
  });
118
- animation.current = toRGBA(res);
118
+ animation.current = rgbaArrayToRGBAColor(toGammaSpace(res));
119
119
  };
120
120
 
121
121
  const colorOnFrame = (animation, timestamp) => {
122
- const HSVACurrent = convertToHSVA(animation.current);
122
+ const RGBACurrent = toLinearSpace(convertToRGBA(animation.current));
123
123
  const res = [];
124
124
  let finished = true;
125
125
  tab.forEach((i, index) => {
126
- animation[i].current = HSVACurrent[index]; // @ts-ignore: disable-next-line
126
+ animation[i].current = RGBACurrent[index]; // @ts-ignore: disable-next-line
127
127
 
128
128
  finished &= animation[i].onFrame(animation[i], timestamp);
129
129
  res.push(animation[i].current);
130
130
  });
131
- animation.current = toRGBA(res);
131
+ animation.current = rgbaArrayToRGBAColor(toGammaSpace(res));
132
132
  return finished;
133
133
  };
134
134
 
@@ -171,6 +171,7 @@ function decorateAnimation(animation) {
171
171
  };
172
172
  }
173
173
 
174
+ const IS_NATIVE = NativeReanimatedModule.native;
174
175
  export function defineAnimation(starting, factory) {
175
176
  'worklet';
176
177
 
@@ -186,7 +187,7 @@ export function defineAnimation(starting, factory) {
186
187
  return animation;
187
188
  };
188
189
 
189
- if (_WORKLET || !NativeReanimatedModule.native) {
190
+ if (_WORKLET || !IS_NATIVE) {
190
191
  return create();
191
192
  } // @ts-ignore: eslint-disable-line
192
193
 
@@ -1 +1 @@
1
- {"version":3,"names":["convertToHSVA","isColor","toRGBA","NativeReanimatedModule","IN_STYLE_UPDATER","initialUpdaterRun","updater","result","recognizePrefixSuffix","value","match","Error","prefix","suffix","number","strippedValue","parseFloat","decorateAnimation","animation","isHigherOrder","baseOnStart","onStart","baseOnFrame","onFrame","animationCopy","Object","assign","callback","prefNumberSuffOnStart","timestamp","previousAnimation","__prefix","__suffix","strippedCurrent","strippedToValue","toValue","current","startValue","paPrefix","paSuffix","paStrippedValue","prefNumberSuffOnFrame","res","tab","colorOnStart","HSVAValue","HSVACurrent","HSVAToValue","forEach","i","index","undefined","push","colorOnFrame","finished","arrayOnStart","v","arrayOnFrame","Array","isArray","defineAnimation","starting","factory","create","_WORKLET","native","cancelAnimation","sharedValue","withStartValue"],"sources":["util.ts"],"sourcesContent":["import {\n HigherOrderAnimation,\n NextAnimation,\n DelayAnimation,\n RepeatAnimation,\n SequenceAnimation,\n StyleLayoutAnimation,\n} from './commonTypes';\n/* global _WORKLET */\nimport { ParsedColorArray, convertToHSVA, isColor, toRGBA } from '../Colors';\n\nimport {\n AnimatedStyle,\n SharedValue,\n AnimatableValue,\n Animation,\n AnimationObject,\n Timestamp,\n} from '../commonTypes';\nimport NativeReanimatedModule from '../NativeReanimated';\n\nlet IN_STYLE_UPDATER = false;\n\nexport type UserUpdater = () => AnimatedStyle;\n\nexport function initialUpdaterRun<T>(updater: () => T): T {\n IN_STYLE_UPDATER = true;\n const result = updater();\n IN_STYLE_UPDATER = false;\n return result;\n}\n\ninterface RecognizedPrefixSuffix {\n prefix?: string;\n suffix?: string;\n strippedValue: number;\n}\n\nfunction recognizePrefixSuffix(value: string | number): RecognizedPrefixSuffix {\n 'worklet';\n if (typeof value === 'string') {\n const match = value.match(\n /([A-Za-z]*)(-?\\d*\\.?\\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/\n );\n if (!match) {\n throw Error(\n \"Couldn't parse animation value. Check if there isn't any typo.\"\n );\n }\n const prefix = match[1];\n const suffix = match[4];\n // number with scientific notation\n const number = match[2] + (match[3] ?? '');\n return { prefix, suffix, strippedValue: parseFloat(number) };\n } else {\n return { strippedValue: value };\n }\n}\n\nfunction decorateAnimation<T extends AnimationObject | StyleLayoutAnimation>(\n animation: T\n): void {\n 'worklet';\n if ((animation as HigherOrderAnimation).isHigherOrder) {\n return;\n }\n\n const baseOnStart = (animation as Animation<AnimationObject>).onStart;\n const baseOnFrame = (animation as Animation<AnimationObject>).onFrame;\n const animationCopy = Object.assign({}, animation);\n delete animationCopy.callback;\n\n const prefNumberSuffOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: number,\n previousAnimation: Animation<AnimationObject>\n ) => {\n // recognize prefix, suffix, and updates stripped value on animation start\n const { prefix, suffix, strippedValue } = recognizePrefixSuffix(value);\n animation.__prefix = prefix;\n animation.__suffix = suffix;\n animation.strippedCurrent = strippedValue;\n const { strippedValue: strippedToValue } = recognizePrefixSuffix(\n animation.toValue as string | number\n );\n animation.current = strippedValue;\n animation.startValue = strippedValue;\n animation.toValue = strippedToValue;\n if (previousAnimation && previousAnimation !== animation) {\n const {\n prefix: paPrefix,\n suffix: paSuffix,\n strippedValue: paStrippedValue,\n } = recognizePrefixSuffix(previousAnimation.current as string | number);\n previousAnimation.current = paStrippedValue;\n previousAnimation.__prefix = paPrefix;\n previousAnimation.__suffix = paSuffix;\n }\n\n baseOnStart(animation, strippedValue, timestamp, previousAnimation);\n\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n\n if (previousAnimation && previousAnimation !== animation) {\n previousAnimation.current =\n (previousAnimation.__prefix ?? '') +\n previousAnimation.current +\n (previousAnimation.__suffix ?? '');\n }\n };\n const prefNumberSuffOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: number\n ) => {\n animation.current = animation.strippedCurrent;\n const res = baseOnFrame(animation, timestamp);\n animation.strippedCurrent = animation.current;\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n return res;\n };\n\n const tab = ['H', 'S', 'V', 'A'];\n const colorOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n let HSVAValue: ParsedColorArray;\n let HSVACurrent: ParsedColorArray;\n let HSVAToValue: ParsedColorArray;\n const res: Array<number> = [];\n if (isColor(value)) {\n HSVACurrent = convertToHSVA(animation.current);\n HSVAValue = convertToHSVA(value);\n if (animation.toValue) {\n HSVAToValue = convertToHSVA(animation.toValue);\n }\n }\n tab.forEach((i, index) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = HSVACurrent[index];\n animation[i].toValue = HSVAToValue ? HSVAToValue[index] : undefined;\n animation[i].onStart(\n animation[i],\n HSVAValue[index],\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n res.push(animation[i].current);\n });\n\n animation.current = toRGBA(res as ParsedColorArray);\n };\n\n const colorOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n const HSVACurrent = convertToHSVA(animation.current);\n const res: Array<number> = [];\n let finished = true;\n tab.forEach((i, index) => {\n animation[i].current = HSVACurrent[index];\n // @ts-ignore: disable-next-line\n finished &= animation[i].onFrame(animation[i], timestamp);\n res.push(animation[i].current);\n });\n\n animation.current = toRGBA(res as ParsedColorArray);\n return finished;\n };\n\n const arrayOnStart = (\n animation: Animation<AnimationObject>,\n value: Array<number>,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n value.forEach((v, i) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = v;\n animation[i].toValue = (animation.toValue as Array<number>)[i];\n animation[i].onStart(\n animation[i],\n v,\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n });\n\n animation.current = value;\n };\n\n const arrayOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n (animation.current as Array<number>).forEach((v, i) => {\n // @ts-ignore: disable-next-line\n finished &= animation[i].onFrame(animation[i], timestamp);\n (animation.current as Array<number>)[i] = animation[i].current;\n });\n\n return finished;\n };\n\n animation.onStart = (\n animation: Animation<AnimationObject>,\n value: number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ) => {\n if (isColor(value)) {\n colorOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = colorOnFrame;\n return;\n } else if (Array.isArray(value)) {\n arrayOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = arrayOnFrame;\n return;\n } else if (typeof value === 'string') {\n prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = prefNumberSuffOnFrame;\n return;\n }\n baseOnStart(animation, value, timestamp, previousAnimation);\n };\n}\n\ntype AnimationToDecoration<T extends AnimationObject | StyleLayoutAnimation> =\n T extends StyleLayoutAnimation\n ? Record<string, unknown>\n : T extends DelayAnimation\n ? NextAnimation<DelayAnimation>\n : T extends RepeatAnimation\n ? NextAnimation<RepeatAnimation>\n : T extends SequenceAnimation\n ? NextAnimation<SequenceAnimation>\n : AnimatableValue | T;\n\nexport function defineAnimation<\n T extends AnimationObject | StyleLayoutAnimation\n>(starting: AnimationToDecoration<T>, factory: () => T): T {\n 'worklet';\n if (IN_STYLE_UPDATER) {\n return starting as T;\n }\n const create = () => {\n 'worklet';\n const animation = factory();\n decorateAnimation<T>(animation);\n return animation;\n };\n\n if (_WORKLET || !NativeReanimatedModule.native) {\n return create();\n }\n // @ts-ignore: eslint-disable-line\n return create;\n}\n\nexport function cancelAnimation<T>(sharedValue: SharedValue<T>): void {\n 'worklet';\n // setting the current value cancels the animation if one is currently running\n sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign\n}\n\n// TODO it should work only if there was no animation before.\nexport function withStartValue(\n startValue: AnimatableValue,\n animation: NextAnimation<AnimationObject>\n): Animation<AnimationObject> {\n 'worklet';\n return defineAnimation(startValue, () => {\n 'worklet';\n if (!_WORKLET && typeof animation === 'function') {\n animation = animation();\n }\n (animation as Animation<AnimationObject>).current = startValue;\n return animation as Animation<AnimationObject>;\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["isColor","convertToRGBA","rgbaArrayToRGBAColor","toGammaSpace","toLinearSpace","NativeReanimatedModule","IN_STYLE_UPDATER","initialUpdaterRun","updater","result","recognizePrefixSuffix","value","match","Error","prefix","suffix","number","strippedValue","parseFloat","decorateAnimation","animation","isHigherOrder","baseOnStart","onStart","baseOnFrame","onFrame","animationCopy","Object","assign","callback","prefNumberSuffOnStart","timestamp","previousAnimation","__prefix","__suffix","strippedCurrent","strippedToValue","toValue","current","startValue","paPrefix","paSuffix","paStrippedValue","prefNumberSuffOnFrame","res","tab","colorOnStart","RGBAValue","RGBACurrent","RGBAToValue","forEach","i","index","undefined","push","colorOnFrame","finished","arrayOnStart","v","arrayOnFrame","Array","isArray","IS_NATIVE","native","defineAnimation","starting","factory","create","_WORKLET","cancelAnimation","sharedValue","withStartValue"],"sources":["util.ts"],"sourcesContent":["import {\n HigherOrderAnimation,\n NextAnimation,\n DelayAnimation,\n RepeatAnimation,\n SequenceAnimation,\n StyleLayoutAnimation,\n} from './commonTypes';\n/* global _WORKLET */\nimport {\n ParsedColorArray,\n isColor,\n convertToRGBA,\n rgbaArrayToRGBAColor,\n toGammaSpace,\n toLinearSpace,\n} from '../Colors';\n\nimport {\n AnimatedStyle,\n SharedValue,\n AnimatableValue,\n Animation,\n AnimationObject,\n Timestamp,\n} from '../commonTypes';\nimport NativeReanimatedModule from '../NativeReanimated';\n\nlet IN_STYLE_UPDATER = false;\n\nexport type UserUpdater = () => AnimatedStyle;\n\nexport function initialUpdaterRun<T>(updater: () => T): T {\n IN_STYLE_UPDATER = true;\n const result = updater();\n IN_STYLE_UPDATER = false;\n return result;\n}\n\ninterface RecognizedPrefixSuffix {\n prefix?: string;\n suffix?: string;\n strippedValue: number;\n}\n\nfunction recognizePrefixSuffix(value: string | number): RecognizedPrefixSuffix {\n 'worklet';\n if (typeof value === 'string') {\n const match = value.match(\n /([A-Za-z]*)(-?\\d*\\.?\\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/\n );\n if (!match) {\n throw Error(\n \"Couldn't parse animation value. Check if there isn't any typo.\"\n );\n }\n const prefix = match[1];\n const suffix = match[4];\n // number with scientific notation\n const number = match[2] + (match[3] ?? '');\n return { prefix, suffix, strippedValue: parseFloat(number) };\n } else {\n return { strippedValue: value };\n }\n}\n\nfunction decorateAnimation<T extends AnimationObject | StyleLayoutAnimation>(\n animation: T\n): void {\n 'worklet';\n if ((animation as HigherOrderAnimation).isHigherOrder) {\n return;\n }\n\n const baseOnStart = (animation as Animation<AnimationObject>).onStart;\n const baseOnFrame = (animation as Animation<AnimationObject>).onFrame;\n const animationCopy = Object.assign({}, animation);\n delete animationCopy.callback;\n\n const prefNumberSuffOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: number,\n previousAnimation: Animation<AnimationObject>\n ) => {\n // recognize prefix, suffix, and updates stripped value on animation start\n const { prefix, suffix, strippedValue } = recognizePrefixSuffix(value);\n animation.__prefix = prefix;\n animation.__suffix = suffix;\n animation.strippedCurrent = strippedValue;\n const { strippedValue: strippedToValue } = recognizePrefixSuffix(\n animation.toValue as string | number\n );\n animation.current = strippedValue;\n animation.startValue = strippedValue;\n animation.toValue = strippedToValue;\n if (previousAnimation && previousAnimation !== animation) {\n const {\n prefix: paPrefix,\n suffix: paSuffix,\n strippedValue: paStrippedValue,\n } = recognizePrefixSuffix(previousAnimation.current as string | number);\n previousAnimation.current = paStrippedValue;\n previousAnimation.__prefix = paPrefix;\n previousAnimation.__suffix = paSuffix;\n }\n\n baseOnStart(animation, strippedValue, timestamp, previousAnimation);\n\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n\n if (previousAnimation && previousAnimation !== animation) {\n previousAnimation.current =\n (previousAnimation.__prefix ?? '') +\n previousAnimation.current +\n (previousAnimation.__suffix ?? '');\n }\n };\n const prefNumberSuffOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: number\n ) => {\n animation.current = animation.strippedCurrent;\n const res = baseOnFrame(animation, timestamp);\n animation.strippedCurrent = animation.current;\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n return res;\n };\n\n const tab = ['R', 'G', 'B', 'A'];\n const colorOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n let RGBAValue: ParsedColorArray;\n let RGBACurrent: ParsedColorArray;\n let RGBAToValue: ParsedColorArray;\n const res: Array<number> = [];\n if (isColor(value)) {\n RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n RGBAValue = toLinearSpace(convertToRGBA(value));\n if (animation.toValue) {\n RGBAToValue = toLinearSpace(convertToRGBA(animation.toValue));\n }\n }\n tab.forEach((i, index) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = RGBACurrent[index];\n animation[i].toValue = RGBAToValue ? RGBAToValue[index] : undefined;\n animation[i].onStart(\n animation[i],\n RGBAValue[index],\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n };\n\n const colorOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n const RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n const res: Array<number> = [];\n let finished = true;\n tab.forEach((i, index) => {\n animation[i].current = RGBACurrent[index];\n // @ts-ignore: disable-next-line\n finished &= animation[i].onFrame(animation[i], timestamp);\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n return finished;\n };\n\n const arrayOnStart = (\n animation: Animation<AnimationObject>,\n value: Array<number>,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n value.forEach((v, i) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = v;\n animation[i].toValue = (animation.toValue as Array<number>)[i];\n animation[i].onStart(\n animation[i],\n v,\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n });\n\n animation.current = value;\n };\n\n const arrayOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n (animation.current as Array<number>).forEach((v, i) => {\n // @ts-ignore: disable-next-line\n finished &= animation[i].onFrame(animation[i], timestamp);\n (animation.current as Array<number>)[i] = animation[i].current;\n });\n\n return finished;\n };\n\n animation.onStart = (\n animation: Animation<AnimationObject>,\n value: number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ) => {\n if (isColor(value)) {\n colorOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = colorOnFrame;\n return;\n } else if (Array.isArray(value)) {\n arrayOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = arrayOnFrame;\n return;\n } else if (typeof value === 'string') {\n prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = prefNumberSuffOnFrame;\n return;\n }\n baseOnStart(animation, value, timestamp, previousAnimation);\n };\n}\n\ntype AnimationToDecoration<T extends AnimationObject | StyleLayoutAnimation> =\n T extends StyleLayoutAnimation\n ? Record<string, unknown>\n : T extends DelayAnimation\n ? NextAnimation<DelayAnimation>\n : T extends RepeatAnimation\n ? NextAnimation<RepeatAnimation>\n : T extends SequenceAnimation\n ? NextAnimation<SequenceAnimation>\n : AnimatableValue | T;\n\nconst IS_NATIVE = NativeReanimatedModule.native;\n\nexport function defineAnimation<\n T extends AnimationObject | StyleLayoutAnimation\n>(starting: AnimationToDecoration<T>, factory: () => T): T {\n 'worklet';\n if (IN_STYLE_UPDATER) {\n return starting as T;\n }\n const create = () => {\n 'worklet';\n const animation = factory();\n decorateAnimation<T>(animation);\n return animation;\n };\n\n if (_WORKLET || !IS_NATIVE) {\n return create();\n }\n // @ts-ignore: eslint-disable-line\n return create;\n}\n\nexport function cancelAnimation<T>(sharedValue: SharedValue<T>): void {\n 'worklet';\n // setting the current value cancels the animation if one is currently running\n sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign\n}\n\n// TODO it should work only if there was no animation before.\nexport function withStartValue(\n startValue: AnimatableValue,\n animation: NextAnimation<AnimationObject>\n): Animation<AnimationObject> {\n 'worklet';\n return defineAnimation(startValue, () => {\n 'worklet';\n if (!_WORKLET && typeof animation === 'function') {\n animation = animation();\n }\n (animation as Animation<AnimationObject>).current = startValue;\n return animation as Animation<AnimationObject>;\n });\n}\n"],"mappings":"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"}