react-native-reanimated 2.3.0-alpha.3 → 2.3.0-beta.4

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 (264) hide show
  1. package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.cpp +15 -8
  2. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +176 -154
  3. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +49 -33
  4. package/Common/cpp/Registries/EventHandlerRegistry.cpp +14 -7
  5. package/Common/cpp/Registries/MapperRegistry.cpp +24 -20
  6. package/Common/cpp/Registries/WorkletsCache.cpp +19 -9
  7. package/Common/cpp/SharedItems/FrozenObject.cpp +17 -8
  8. package/Common/cpp/SharedItems/MutableValue.cpp +38 -25
  9. package/Common/cpp/SharedItems/MutableValueSetterProxy.cpp +11 -7
  10. package/Common/cpp/SharedItems/RemoteObject.cpp +9 -5
  11. package/Common/cpp/SharedItems/ShareableValue.cpp +211 -160
  12. package/Common/cpp/Tools/FeaturesConfig.cpp +5 -0
  13. package/Common/cpp/Tools/JSIStoreValueUser.cpp +25 -6
  14. package/Common/cpp/Tools/Mapper.cpp +30 -30
  15. package/Common/cpp/Tools/RuntimeDecorator.cpp +124 -86
  16. package/Common/cpp/Tools/Scheduler.cpp +6 -5
  17. package/Common/cpp/Tools/WorkletEventHandler.cpp +4 -2
  18. package/Common/cpp/headers/LayoutAnimations/LayoutAnimationsProxy.h +12 -11
  19. package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +50 -31
  20. package/Common/cpp/headers/NativeModules/NativeReanimatedModuleSpec.h +34 -16
  21. package/Common/cpp/headers/Registries/EventHandlerRegistry.h +15 -8
  22. package/Common/cpp/headers/Registries/MapperRegistry.h +5 -4
  23. package/Common/cpp/headers/Registries/WorkletsCache.h +9 -7
  24. package/Common/cpp/headers/SharedItems/FrozenObject.h +19 -11
  25. package/Common/cpp/headers/SharedItems/HostFunctionHandler.h +8 -4
  26. package/Common/cpp/headers/SharedItems/MutableValue.h +23 -12
  27. package/Common/cpp/headers/SharedItems/MutableValueSetterProxy.h +12 -7
  28. package/Common/cpp/headers/SharedItems/RemoteObject.h +19 -8
  29. package/Common/cpp/headers/SharedItems/RuntimeManager.h +26 -25
  30. package/Common/cpp/headers/SharedItems/ShareableValue.h +32 -27
  31. package/Common/cpp/headers/SharedItems/SharedParent.h +10 -7
  32. package/Common/cpp/headers/SharedItems/ValueWrapper.h +95 -72
  33. package/Common/cpp/headers/SpecTools/ErrorHandler.h +18 -19
  34. package/Common/cpp/headers/Tools/FeaturesConfig.h +19 -0
  35. package/Common/cpp/headers/Tools/JSIStoreValueUser.h +13 -16
  36. package/Common/cpp/headers/Tools/Mapper.h +19 -16
  37. package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +17 -7
  38. package/Common/cpp/headers/Tools/ReanimatedHiddenHeaders.h +7 -11
  39. package/Common/cpp/headers/Tools/RuntimeDecorator.h +36 -27
  40. package/Common/cpp/headers/Tools/Scheduler.h +30 -35
  41. package/Common/cpp/headers/Tools/WorkletEventHandler.h +11 -8
  42. package/Common/cpp/hidden_headers/Logger.h +14 -14
  43. package/Common/cpp/hidden_headers/LoggerInterface.h +8 -9
  44. package/Common/cpp/hidden_headers/SpeedChecker.h +7 -8
  45. package/README.md +1 -1
  46. package/RNReanimated.podspec +24 -6
  47. package/android/build.gradle +38 -29
  48. package/android/react-native-reanimated-63-hermes.aar +0 -0
  49. package/android/react-native-reanimated-63-jsc.aar +0 -0
  50. package/android/react-native-reanimated-64-hermes.aar +0 -0
  51. package/android/react-native-reanimated-64-jsc.aar +0 -0
  52. package/android/react-native-reanimated-65-hermes.aar +0 -0
  53. package/android/react-native-reanimated-65-jsc.aar +0 -0
  54. package/android/react-native-reanimated-66-hermes.aar +0 -0
  55. package/android/react-native-reanimated-66-jsc.aar +0 -0
  56. package/android/react-native-reanimated-67-hermes.aar +0 -0
  57. package/android/react-native-reanimated-67-jsc.aar +0 -0
  58. package/ios/LayoutReanimation/REAAnimationsManager.h +10 -8
  59. package/ios/LayoutReanimation/REAAnimationsManager.m +91 -87
  60. package/ios/LayoutReanimation/REASnapshot.h +2 -2
  61. package/ios/LayoutReanimation/REASnapshot.m +8 -7
  62. package/ios/LayoutReanimation/REAUIManager.h +4 -4
  63. package/ios/LayoutReanimation/REAUIManager.mm +116 -70
  64. package/ios/Nodes/REAAlwaysNode.m +14 -15
  65. package/ios/Nodes/REABezierNode.m +8 -7
  66. package/ios/Nodes/REABlockNode.m +1 -1
  67. package/ios/Nodes/REACallFuncNode.h +0 -1
  68. package/ios/Nodes/REACallFuncNode.m +10 -8
  69. package/ios/Nodes/REAClockNodes.m +22 -20
  70. package/ios/Nodes/REAConcatNode.h +0 -1
  71. package/ios/Nodes/REAConcatNode.m +2 -2
  72. package/ios/Nodes/REACondNode.m +7 -5
  73. package/ios/Nodes/READebugNode.m +5 -4
  74. package/ios/Nodes/REAEventNode.m +1 -1
  75. package/ios/Nodes/REAFunctionNode.h +0 -1
  76. package/ios/Nodes/REAFunctionNode.m +2 -2
  77. package/ios/Nodes/REAJSCallNode.m +4 -5
  78. package/ios/Nodes/REANode.h +3 -4
  79. package/ios/Nodes/REANode.m +9 -11
  80. package/ios/Nodes/REAOperatorNode.m +68 -67
  81. package/ios/Nodes/REAParamNode.h +1 -3
  82. package/ios/Nodes/REAParamNode.m +15 -17
  83. package/ios/Nodes/REAPropsNode.h +1 -3
  84. package/ios/Nodes/REAPropsNode.m +19 -22
  85. package/ios/Nodes/REASetNode.h +0 -1
  86. package/ios/Nodes/REASetNode.m +7 -5
  87. package/ios/Nodes/REAStyleNode.h +0 -1
  88. package/ios/Nodes/REAStyleNode.m +2 -4
  89. package/ios/Nodes/REATransformNode.h +0 -1
  90. package/ios/Nodes/REATransformNode.m +3 -5
  91. package/ios/Nodes/REAValueNode.m +5 -7
  92. package/ios/REAEventDispatcher.m +4 -4
  93. package/ios/REAModule.h +0 -2
  94. package/ios/REAModule.m +29 -38
  95. package/ios/REANodesManager.h +11 -19
  96. package/ios/REANodesManager.m +106 -130
  97. package/ios/REAUtils.h +5 -3
  98. package/ios/RNGestureHandlerStateManager.h +5 -0
  99. package/ios/Transitioning/RCTConvert+REATransition.m +45 -29
  100. package/ios/Transitioning/REAAllTransitions.h +2 -2
  101. package/ios/Transitioning/REAAllTransitions.m +14 -25
  102. package/ios/Transitioning/REATransition.h +8 -7
  103. package/ios/Transitioning/REATransition.m +19 -16
  104. package/ios/Transitioning/REATransitionAnimation.h +1 -1
  105. package/ios/Transitioning/REATransitionAnimation.m +2 -3
  106. package/ios/Transitioning/REATransitionManager.m +3 -3
  107. package/ios/native/NativeMethods.h +20 -5
  108. package/ios/native/NativeMethods.mm +14 -6
  109. package/ios/native/NativeProxy.h +4 -2
  110. package/ios/native/NativeProxy.mm +84 -63
  111. package/ios/native/REAIOSErrorHandler.h +13 -10
  112. package/ios/native/REAIOSErrorHandler.mm +19 -15
  113. package/ios/native/REAIOSLogger.h +8 -8
  114. package/ios/native/REAIOSLogger.mm +10 -6
  115. package/ios/native/REAIOSScheduler.h +5 -5
  116. package/ios/native/REAIOSScheduler.mm +17 -10
  117. package/ios/native/REAInitializer.h +5 -7
  118. package/ios/native/REAInitializer.mm +43 -31
  119. package/ios/native/UIResponder+Reanimated.mm +2 -2
  120. package/lib/Animated.js +9 -1
  121. package/lib/ConfigHelper.js +121 -138
  122. package/lib/ReanimatedEventEmitter.js +0 -1
  123. package/lib/ReanimatedModule.js +0 -1
  124. package/lib/ReanimatedModule.macos.js +0 -1
  125. package/lib/ReanimatedModule.native.js +5 -6
  126. package/lib/ReanimatedModule.windows.js +0 -1
  127. package/lib/ReanimatedModuleCompat.js +64 -35
  128. package/lib/createAnimatedComponent.js +468 -487
  129. package/lib/index.js +9 -1
  130. package/lib/reanimated2/NativeMethods.js +7 -12
  131. package/lib/reanimated2/NativeReanimated/NativeReanimated.js +37 -0
  132. package/lib/reanimated2/NativeReanimated/index.js +15 -0
  133. package/lib/reanimated2/PropAdapters.js +0 -1
  134. package/lib/reanimated2/UpdateProps.js +6 -7
  135. package/lib/reanimated2/ViewDescriptorsSet.js +4 -4
  136. package/lib/reanimated2/WorkletEventHandler.js +15 -13
  137. package/lib/reanimated2/animation/delay.js +8 -2
  138. package/lib/reanimated2/animation/spring.js +2 -0
  139. package/lib/reanimated2/animation/styleAnimation.js +7 -3
  140. package/lib/reanimated2/animation/util.js +25 -2
  141. package/lib/reanimated2/core.js +41 -17
  142. package/lib/reanimated2/globals.d.ts +21 -1
  143. package/lib/reanimated2/hook/useAnimatedRef.js +1 -1
  144. package/lib/reanimated2/hook/useAnimatedStyle.js +3 -3
  145. package/lib/reanimated2/index.js +1 -0
  146. package/lib/reanimated2/interpolation.js +95 -87
  147. package/lib/reanimated2/js-reanimated/JSReanimated.js +13 -10
  148. package/lib/reanimated2/js-reanimated/Mapper.js +4 -3
  149. package/lib/reanimated2/js-reanimated/MapperRegistry.js +3 -6
  150. package/lib/reanimated2/js-reanimated/MutableValue.js +0 -2
  151. package/lib/reanimated2/js-reanimated/index.js +10 -8
  152. package/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.js +33 -2
  153. package/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +27 -124
  154. package/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +125 -0
  155. package/lib/reanimated2/layoutReanimation/animationBuilder/index.js +1 -2
  156. package/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +115 -45
  157. package/lib/reanimated2/layoutReanimation/defaultAnimations/Default.js +7 -2
  158. package/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.js +21 -21
  159. package/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.js +25 -25
  160. package/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +19 -17
  161. package/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +5 -5
  162. package/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.js +9 -9
  163. package/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +17 -17
  164. package/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.js +19 -19
  165. package/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +9 -9
  166. package/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +33 -33
  167. package/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +78 -0
  168. package/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +128 -0
  169. package/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +37 -0
  170. package/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +41 -0
  171. package/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +34 -0
  172. package/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +46 -0
  173. package/lib/reanimated2/layoutReanimation/defaultTransitions/index.js +6 -0
  174. package/lib/reanimated2/layoutReanimation/index.js +1 -0
  175. package/lib/reanimated2/mock.js +3 -1
  176. package/lib/reanimated2/utils.js +9 -0
  177. package/lib/setAndForwardRef.js +14 -48
  178. package/libSo/fbjni/jni/arm64-v8a/libfbjni.so +0 -0
  179. package/libSo/fbjni/jni/armeabi-v7a/libfbjni.so +0 -0
  180. package/libSo/fbjni/jni/x86/libfbjni.so +0 -0
  181. package/libSo/fbjni/jni/x86_64/libfbjni.so +0 -0
  182. package/mock.js +1 -1
  183. package/package.json +28 -17
  184. package/plugin.js +220 -39
  185. package/react-native-reanimated.d.ts +542 -547
  186. package/src/Animated.js +9 -1
  187. package/src/{ConfigHelper.js → ConfigHelper.ts} +15 -7
  188. package/src/{ReanimatedEventEmitter.js → ReanimatedEventEmitter.ts} +0 -0
  189. package/src/{ReanimatedModule.js → ReanimatedModule.macos.ts} +0 -0
  190. package/src/{ReanimatedModule.native.js → ReanimatedModule.native.ts} +0 -0
  191. package/src/{ReanimatedModule.macos.js → ReanimatedModule.ts} +0 -0
  192. package/src/{ReanimatedModule.windows.js → ReanimatedModule.windows.ts} +0 -0
  193. package/src/ReanimatedModuleCompat.ts +51 -0
  194. package/src/{createAnimatedComponent.js → createAnimatedComponent.tsx} +285 -126
  195. package/src/reanimated2/NativeMethods.ts +34 -13
  196. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +72 -0
  197. package/src/reanimated2/NativeReanimated/index.ts +18 -0
  198. package/src/reanimated2/PropAdapters.ts +0 -1
  199. package/src/reanimated2/UpdateProps.ts +31 -15
  200. package/src/reanimated2/ViewDescriptorsSet.ts +15 -12
  201. package/src/reanimated2/WorkletEventHandler.ts +41 -23
  202. package/src/reanimated2/animation/commonTypes.ts +4 -4
  203. package/src/reanimated2/animation/decay.ts +2 -2
  204. package/src/reanimated2/animation/delay.ts +11 -5
  205. package/src/reanimated2/animation/index.ts +7 -7
  206. package/src/reanimated2/animation/repeat.ts +4 -4
  207. package/src/reanimated2/animation/sequence.ts +2 -2
  208. package/src/reanimated2/animation/spring.ts +6 -5
  209. package/src/reanimated2/animation/styleAnimation.ts +27 -15
  210. package/src/reanimated2/animation/timing.ts +5 -5
  211. package/src/reanimated2/animation/util.ts +47 -8
  212. package/src/reanimated2/commonTypes.ts +3 -0
  213. package/src/reanimated2/core.ts +80 -34
  214. package/src/reanimated2/globals.d.ts +21 -1
  215. package/src/reanimated2/hook/useAnimatedGestureHandler.ts +1 -1
  216. package/src/reanimated2/hook/useAnimatedRef.ts +13 -15
  217. package/src/reanimated2/hook/useAnimatedScrollHandler.ts +3 -3
  218. package/src/reanimated2/hook/useAnimatedStyle.ts +7 -7
  219. package/src/reanimated2/hook/utils.ts +4 -3
  220. package/src/reanimated2/index.ts +1 -0
  221. package/src/reanimated2/interpolation.ts +170 -103
  222. package/src/reanimated2/js-reanimated/JSReanimated.ts +37 -23
  223. package/src/reanimated2/js-reanimated/Mapper.ts +22 -9
  224. package/src/reanimated2/js-reanimated/MapperRegistry.ts +22 -19
  225. package/src/reanimated2/js-reanimated/MutableValue.ts +11 -11
  226. package/src/reanimated2/js-reanimated/index.ts +31 -14
  227. package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.ts +75 -0
  228. package/src/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.ts +29 -159
  229. package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +169 -0
  230. package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +2 -2
  231. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +3 -9
  232. package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +1 -5
  233. package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +162 -82
  234. package/src/reanimated2/layoutReanimation/defaultAnimations/Default.ts +7 -2
  235. package/src/reanimated2/layoutReanimation/defaultAnimations/Fade.ts +32 -32
  236. package/src/reanimated2/layoutReanimation/defaultAnimations/Flip.ts +38 -38
  237. package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +34 -32
  238. package/src/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.ts +8 -8
  239. package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +14 -14
  240. package/src/reanimated2/layoutReanimation/defaultAnimations/Rotate.ts +26 -26
  241. package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +28 -28
  242. package/src/reanimated2/layoutReanimation/defaultAnimations/Stretch.ts +14 -14
  243. package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +50 -50
  244. package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +104 -0
  245. package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +213 -0
  246. package/src/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.ts +60 -0
  247. package/src/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.ts +58 -0
  248. package/src/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.ts +41 -0
  249. package/src/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.ts +78 -0
  250. package/src/reanimated2/layoutReanimation/defaultTransitions/index.ts +6 -0
  251. package/src/reanimated2/layoutReanimation/index.ts +1 -0
  252. package/src/reanimated2/mock.ts +3 -1
  253. package/src/reanimated2/utils.ts +21 -0
  254. package/src/{setAndForwardRef.js → setAndForwardRef.ts} +12 -2
  255. package/android/react-native-reanimated-62-hermes.aar +0 -0
  256. package/android/react-native-reanimated-62-jsc.aar +0 -0
  257. package/lib/reanimated2/NativeReanimated.js +0 -48
  258. package/lib/reanimated2/layoutReanimation/animationBuilder/BaseBounceAnimationBuilder.js +0 -55
  259. package/lib/reanimated2/layoutReanimation/animationBuilder/LayoutAnimationBuilder.js +0 -165
  260. package/src/ReanimatedModuleCompat.js +0 -37
  261. package/src/reanimated2/NativeReanimated.ts +0 -70
  262. package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.tsx +0 -41
  263. package/src/reanimated2/layoutReanimation/animationBuilder/BaseBounceAnimationBuilder.ts +0 -82
  264. package/src/reanimated2/layoutReanimation/animationBuilder/LayoutAnimationBuilder.ts +0 -217
@@ -3,7 +3,8 @@
3
3
 
4
4
  namespace reanimated {
5
5
 
6
- void EventHandlerRegistry::registerEventHandler(std::shared_ptr<WorkletEventHandler> eventHandler) {
6
+ void EventHandlerRegistry::registerEventHandler(
7
+ std::shared_ptr<WorkletEventHandler> eventHandler) {
7
8
  const std::lock_guard<std::mutex> lock(instanceMutex);
8
9
  eventMappings[eventHandler->eventName][eventHandler->id] = eventHandler;
9
10
  eventHandlers[eventHandler->id] = eventHandler;
@@ -21,7 +22,10 @@ void EventHandlerRegistry::unregisterEventHandler(unsigned long id) {
21
22
  }
22
23
  }
23
24
 
24
- void EventHandlerRegistry::processEvent(jsi::Runtime &rt, std::string eventName, std::string eventPayload) {
25
+ void EventHandlerRegistry::processEvent(
26
+ jsi::Runtime &rt,
27
+ std::string eventName,
28
+ std::string eventPayload) {
25
29
  std::vector<std::shared_ptr<WorkletEventHandler>> handlersForEvent;
26
30
  {
27
31
  const std::lock_guard<std::mutex> lock(instanceMutex);
@@ -38,15 +42,18 @@ void EventHandlerRegistry::processEvent(jsi::Runtime &rt, std::string eventName,
38
42
  std::string delimimter = "NativeMap:";
39
43
  auto positionToSplit = eventPayload.find(delimimter) + delimimter.size();
40
44
  auto lastBracketCharactedPosition = eventPayload.size() - positionToSplit - 1;
41
- auto eventJSON = eventPayload.substr(positionToSplit, lastBracketCharactedPosition);
45
+ auto eventJSON =
46
+ eventPayload.substr(positionToSplit, lastBracketCharactedPosition);
42
47
 
43
48
  if (eventJSON.compare(std::string("null")) == 0) {
44
49
  return;
45
50
  }
46
51
 
47
- auto eventObject = jsi::Value::createFromJsonUtf8(rt, (uint8_t*)(&eventJSON[0]), eventJSON.size());
52
+ auto eventObject = jsi::Value::createFromJsonUtf8(
53
+ rt, reinterpret_cast<uint8_t *>(&eventJSON[0]), eventJSON.size());
48
54
 
49
- eventObject.asObject(rt).setProperty(rt, "eventName", jsi::String::createFromUtf8(rt, eventName));
55
+ eventObject.asObject(rt).setProperty(
56
+ rt, "eventName", jsi::String::createFromUtf8(rt, eventName));
50
57
  for (auto handler : handlersForEvent) {
51
58
  handler->process(rt, eventObject);
52
59
  }
@@ -55,7 +62,7 @@ void EventHandlerRegistry::processEvent(jsi::Runtime &rt, std::string eventName,
55
62
  bool EventHandlerRegistry::isAnyHandlerWaitingForEvent(std::string eventName) {
56
63
  const std::lock_guard<std::mutex> lock(instanceMutex);
57
64
  auto it = eventMappings.find(eventName);
58
- return (it != eventMappings.end()) and (!(it->second).empty());
65
+ return (it != eventMappings.end()) && (!(it->second).empty());
59
66
  }
60
67
 
61
- }
68
+ } // namespace reanimated
@@ -1,8 +1,8 @@
1
1
  #include "MapperRegistry.h"
2
- #include "Mapper.h"
3
- #include <map>
4
2
  #include <array>
3
+ #include <map>
5
4
  #include <set>
5
+ #include "Mapper.h"
6
6
 
7
7
  namespace reanimated {
8
8
 
@@ -21,7 +21,7 @@ void MapperRegistry::execute(jsi::Runtime &rt) {
21
21
  updateOrder();
22
22
  updatedSinceLastExecute = false;
23
23
  }
24
- for (auto & mapper : sortedMappers) {
24
+ for (auto &mapper : sortedMappers) {
25
25
  if (mapper->dirty) {
26
26
  mapper->execute(rt);
27
27
  }
@@ -39,16 +39,18 @@ void MapperRegistry::updateOrder() { // Topological sorting
39
39
  std::shared_ptr<Mapper> mapper;
40
40
  std::shared_ptr<MutableValue> mutableValue;
41
41
 
42
- NodeID(std::shared_ptr<Mapper> mapper) {
42
+ explicit NodeID(std::shared_ptr<Mapper> mapper) {
43
43
  if (mapper == nullptr) {
44
- throw std::runtime_error("Graph couldn't be sorted (Mapper cannot be nullptr)");
44
+ throw std::runtime_error(
45
+ "Graph couldn't be sorted (Mapper cannot be nullptr)");
45
46
  }
46
47
  this->mapper = mapper;
47
48
  }
48
49
 
49
- NodeID(std::shared_ptr<MutableValue> mutableValue) {
50
+ explicit NodeID(std::shared_ptr<MutableValue> mutableValue) {
50
51
  if (mutableValue == nullptr) {
51
- throw std::runtime_error("Graph couldn't be sorted (Mutable cannot be nullptr)");
52
+ throw std::runtime_error(
53
+ "Graph couldn't be sorted (Mutable cannot be nullptr)");
52
54
  }
53
55
  this->mutableValue = mutableValue;
54
56
  }
@@ -57,8 +59,7 @@ void MapperRegistry::updateOrder() { // Topological sorting
57
59
  return mutableValue != nullptr;
58
60
  }
59
61
 
60
- bool operator<(const NodeID& other) const
61
- {
62
+ bool operator<(const NodeID &other) const {
62
63
  if (isMutable() != other.isMutable())
63
64
  return isMutable() < other.isMutable();
64
65
 
@@ -72,29 +73,31 @@ void MapperRegistry::updateOrder() { // Topological sorting
72
73
 
73
74
  std::map<NodeID, int> deg;
74
75
 
75
- std::map<std::shared_ptr<MutableValue>, std::vector<std::shared_ptr<Mapper>>> mappersThatUseSharedValue;
76
+ std::map<std::shared_ptr<MutableValue>, std::vector<std::shared_ptr<Mapper>>>
77
+ mappersThatUseSharedValue;
76
78
 
77
79
  std::set<std::pair<int, NodeID>> nodes;
78
80
 
79
- std::function<void(NodeID)> update = [&] (NodeID id) {
81
+ std::function<void(NodeID)> update = [&](NodeID id) {
80
82
  auto entry = std::make_pair(deg[id], id);
81
- if (nodes.find(entry) == nodes.end()) return;
83
+ if (nodes.find(entry) == nodes.end())
84
+ return;
82
85
  nodes.erase(entry);
83
86
  entry.first--;
84
87
  deg[id]--;
85
88
  nodes.insert(entry);
86
89
  };
87
90
 
88
- for (auto & entry : mappers) {
91
+ for (auto &entry : mappers) {
89
92
  auto id = NodeID(entry.second);
90
- auto & mapper = entry.second;
93
+ auto &mapper = entry.second;
91
94
  deg[id] = mapper->inputs.size();
92
95
  nodes.insert(std::make_pair(deg[id], id));
93
96
 
94
97
  for (auto sharedValue : mapper->inputs) {
95
98
  auto sharedValueID = NodeID(sharedValue);
96
99
  mappersThatUseSharedValue[sharedValue].push_back(mapper);
97
- if (deg.count(sharedValue) == 0) {
100
+ if (deg.count(sharedValueID) == 0) {
98
101
  deg[sharedValueID] = 0;
99
102
  }
100
103
  }
@@ -104,14 +107,14 @@ void MapperRegistry::updateOrder() { // Topological sorting
104
107
  }
105
108
  }
106
109
 
107
- for (auto & entry : deg) {
110
+ for (auto &entry : deg) {
108
111
  auto id = entry.first;
109
112
  if (id.isMutable()) {
110
113
  nodes.insert(std::make_pair(entry.second, id));
111
114
  }
112
115
  }
113
116
 
114
- while (nodes.size() > 0 and nodes.begin()->first == 0) {
117
+ while (nodes.size() > 0 && nodes.begin()->first == 0) {
115
118
  auto entry = *nodes.begin();
116
119
  nodes.erase(entry);
117
120
 
@@ -120,7 +123,7 @@ void MapperRegistry::updateOrder() { // Topological sorting
120
123
 
121
124
  if (id.isMutable()) {
122
125
  for (auto id : mappersThatUseSharedValue[id.mutableValue]) {
123
- toUpdate.push_back(id);
126
+ toUpdate.push_back(NodeID(id));
124
127
  }
125
128
  } else {
126
129
  for (auto sharedValue : id.mapper->outputs) {
@@ -130,7 +133,8 @@ void MapperRegistry::updateOrder() { // Topological sorting
130
133
  sortedMappers.push_back(id.mapper);
131
134
  }
132
135
 
133
- for (auto & id : toUpdate) update(id);
136
+ for (auto &id : toUpdate)
137
+ update(id);
134
138
  }
135
139
 
136
140
  if (nodes.size() > 0) {
@@ -138,4 +142,4 @@ void MapperRegistry::updateOrder() { // Topological sorting
138
142
  }
139
143
  }
140
144
 
141
- }
145
+ } // namespace reanimated
@@ -1,28 +1,38 @@
1
1
  #include "WorkletsCache.h"
2
- #include "ShareableValue.h"
3
2
  #include "FrozenObject.h"
3
+ #include "ShareableValue.h"
4
4
 
5
5
  using namespace facebook;
6
6
 
7
- namespace reanimated
8
- {
7
+ namespace reanimated {
9
8
 
10
9
  jsi::Value eval(jsi::Runtime &rt, const char *code) {
11
10
  return rt.global().getPropertyAsFunction(rt, "eval").call(rt, code);
12
11
  }
13
12
 
14
- jsi::Function function(jsi::Runtime &rt, const std::string& code) {
13
+ jsi::Function function(jsi::Runtime &rt, const std::string &code) {
15
14
  return eval(rt, ("(" + code + ")").c_str()).getObject(rt).getFunction(rt);
16
15
  }
17
16
 
18
- std::shared_ptr<jsi::Function> WorkletsCache::getFunction(jsi::Runtime &rt, std::shared_ptr<FrozenObject> frozenObj) {
19
- long long workletHash = ValueWrapper::asNumber(frozenObj->map["__workletHash"]->valueContainer);
17
+ std::shared_ptr<jsi::Function> WorkletsCache::getFunction(
18
+ jsi::Runtime &rt,
19
+ std::shared_ptr<FrozenObject> frozenObj) {
20
+ long long workletHash =
21
+ ValueWrapper::asNumber(frozenObj->map["__workletHash"]->valueContainer);
20
22
  if (worklets.count(workletHash) == 0) {
21
- auto codeBuffer = std::make_shared<const jsi::StringBuffer>("(" + ValueWrapper::asString(frozenObj->map["asString"]->valueContainer) + ")");
22
- auto func = rt.evaluateJavaScript(codeBuffer, ValueWrapper::asString(frozenObj->map["__location"]->valueContainer)).asObject(rt).asFunction(rt);
23
+ auto codeBuffer = std::make_shared<const jsi::StringBuffer>(
24
+ "(" +
25
+ ValueWrapper::asString(frozenObj->map["asString"]->valueContainer) +
26
+ ")");
27
+ auto func = rt.evaluateJavaScript(
28
+ codeBuffer,
29
+ ValueWrapper::asString(
30
+ frozenObj->map["__location"]->valueContainer))
31
+ .asObject(rt)
32
+ .asFunction(rt);
23
33
  worklets[workletHash] = std::make_shared<jsi::Function>(std::move(func));
24
34
  }
25
35
  return worklets[workletHash];
26
36
  }
27
37
 
28
- }
38
+ } // namespace reanimated
@@ -1,26 +1,35 @@
1
1
  #include "FrozenObject.h"
2
- #include "SharedParent.h"
3
- #include "ShareableValue.h"
4
2
  #include "RuntimeManager.h"
3
+ #include "ShareableValue.h"
4
+ #include "SharedParent.h"
5
5
 
6
6
  namespace reanimated {
7
7
 
8
- FrozenObject::FrozenObject(jsi::Runtime &rt, const jsi::Object &object, RuntimeManager *runtimeManager) {
8
+ FrozenObject::FrozenObject(
9
+ jsi::Runtime &rt,
10
+ const jsi::Object &object,
11
+ RuntimeManager *runtimeManager) {
9
12
  auto propertyNames = object.getPropertyNames(rt);
10
- for (size_t i = 0, count = propertyNames.size(rt); i < count; i++) {
13
+ const size_t count = propertyNames.size(rt);
14
+ namesOrder.reserve(count);
15
+ for (size_t i = 0; i < count; i++) {
11
16
  auto propertyName = propertyNames.getValueAtIndex(rt, i).asString(rt);
17
+ namesOrder.push_back(propertyName.utf8(rt));
12
18
  std::string nameStr = propertyName.utf8(rt);
13
- map[nameStr] = ShareableValue::adapt(rt, object.getProperty(rt, propertyName), runtimeManager);
19
+ map[nameStr] = ShareableValue::adapt(
20
+ rt, object.getProperty(rt, propertyName), runtimeManager);
14
21
  this->containsHostFunction |= map[nameStr]->containsHostFunction;
15
22
  }
16
23
  }
17
24
 
18
25
  jsi::Object FrozenObject::shallowClone(jsi::Runtime &rt) {
19
26
  jsi::Object object(rt);
20
- for (auto prop : map) {
21
- object.setProperty(rt, jsi::String::createFromUtf8(rt, prop.first), prop.second->getValue(rt));
27
+ for (auto propName : namesOrder) {
28
+ auto value = map[propName];
29
+ object.setProperty(
30
+ rt, jsi::String::createFromUtf8(rt, propName), value->getValue(rt));
22
31
  }
23
32
  return object;
24
33
  }
25
34
 
26
- }
35
+ } // namespace reanimated
@@ -1,8 +1,8 @@
1
1
  #include "MutableValue.h"
2
- #include "SharedParent.h"
3
- #include "ShareableValue.h"
4
- #include "RuntimeManager.h"
5
2
  #include "RuntimeDecorator.h"
3
+ #include "RuntimeManager.h"
4
+ #include "ShareableValue.h"
5
+ #include "SharedParent.h"
6
6
 
7
7
  namespace reanimated {
8
8
 
@@ -11,7 +11,7 @@ void MutableValue::setValue(jsi::Runtime &rt, const jsi::Value &newValue) {
11
11
  value = ShareableValue::adapt(rt, newValue, runtimeManager);
12
12
 
13
13
  std::shared_ptr<MutableValue> thiz = shared_from_this();
14
- auto notifyListeners = [thiz] () {
14
+ auto notifyListeners = [thiz]() {
15
15
  for (auto listener : thiz->listeners) {
16
16
  listener.second();
17
17
  }
@@ -19,9 +19,8 @@ void MutableValue::setValue(jsi::Runtime &rt, const jsi::Value &newValue) {
19
19
  if (RuntimeDecorator::isUIRuntime(rt)) {
20
20
  notifyListeners();
21
21
  } else {
22
- runtimeManager->scheduler->scheduleOnUI([notifyListeners] {
23
- notifyListeners();
24
- });
22
+ runtimeManager->scheduler->scheduleOnUI(
23
+ [notifyListeners] { notifyListeners(); });
25
24
  }
26
25
  }
27
26
 
@@ -30,20 +29,26 @@ jsi::Value MutableValue::getValue(jsi::Runtime &rt) {
30
29
  return value->getValue(rt);
31
30
  }
32
31
 
33
- void MutableValue::set(jsi::Runtime &rt, const jsi::PropNameID &name, const jsi::Value &newValue) {
32
+ void MutableValue::set(
33
+ jsi::Runtime &rt,
34
+ const jsi::PropNameID &name,
35
+ const jsi::Value &newValue) {
34
36
  auto propName = name.utf8(rt);
35
37
  if (!runtimeManager->valueSetter) {
36
- throw jsi::JSError(rt, "Value-Setter is not yet configured! Make sure the core-functions are installed.");
38
+ throw jsi::JSError(
39
+ rt,
40
+ "Value-Setter is not yet configured! Make sure the core-functions are installed.");
37
41
  }
38
42
 
39
43
  if (RuntimeDecorator::isUIRuntime(rt)) {
40
44
  // UI thread
41
45
  if (propName == "value") {
42
- auto setterProxy = jsi::Object::createFromHostObject(rt, std::make_shared<MutableValueSetterProxy>(shared_from_this()));
46
+ auto setterProxy = jsi::Object::createFromHostObject(
47
+ rt, std::make_shared<MutableValueSetterProxy>(shared_from_this()));
43
48
  runtimeManager->valueSetter->getValue(rt)
44
- .asObject(rt)
45
- .asFunction(rt)
46
- .callWithThis(rt, setterProxy, newValue);
49
+ .asObject(rt)
50
+ .asFunction(rt)
51
+ .callWithThis(rt, setterProxy, newValue);
47
52
  } else if (propName == "_animation") {
48
53
  // TODO: assert to allow animation to be set from UI only
49
54
  if (animation.expired()) {
@@ -51,7 +56,8 @@ void MutableValue::set(jsi::Runtime &rt, const jsi::PropNameID &name, const jsi:
51
56
  }
52
57
  *animation.lock() = jsi::Value(rt, newValue);
53
58
  } else if (propName == "_value") {
54
- auto setter = std::make_shared<MutableValueSetterProxy>(shared_from_this());
59
+ auto setter =
60
+ std::make_shared<MutableValueSetterProxy>(shared_from_this());
55
61
  setter->set(rt, jsi::PropNameID::forAscii(rt, "_value"), newValue);
56
62
  }
57
63
  } else {
@@ -60,12 +66,13 @@ void MutableValue::set(jsi::Runtime &rt, const jsi::PropNameID &name, const jsi:
60
66
  auto shareable = ShareableValue::adapt(rt, newValue, runtimeManager);
61
67
  runtimeManager->scheduler->scheduleOnUI([this, shareable] {
62
68
  jsi::Runtime &rt = *this->runtimeManager->runtime.get();
63
- auto setterProxy = jsi::Object::createFromHostObject(rt, std::make_shared<MutableValueSetterProxy>(shared_from_this()));
69
+ auto setterProxy = jsi::Object::createFromHostObject(
70
+ rt, std::make_shared<MutableValueSetterProxy>(shared_from_this()));
64
71
  jsi::Value newValue = shareable->getValue(rt);
65
72
  runtimeManager->valueSetter->getValue(rt)
66
- .asObject(rt)
67
- .asFunction(rt)
68
- .callWithThis(rt, setterProxy, newValue);
73
+ .asObject(rt)
74
+ .asFunction(rt)
75
+ .callWithThis(rt, setterProxy, newValue);
69
76
  });
70
77
  }
71
78
  }
@@ -100,11 +107,18 @@ std::vector<jsi::PropNameID> MutableValue::getPropertyNames(jsi::Runtime &rt) {
100
107
  return result;
101
108
  }
102
109
 
103
- MutableValue::MutableValue(jsi::Runtime &rt, const jsi::Value &initial, RuntimeManager *runtimeManager, std::shared_ptr<Scheduler> s):
104
- StoreUser(s, *runtimeManager), runtimeManager(runtimeManager), value(ShareableValue::adapt(rt, initial, runtimeManager)) {
105
- }
106
-
107
- unsigned long int MutableValue::addListener(unsigned long id, std::function<void ()> listener) {
110
+ MutableValue::MutableValue(
111
+ jsi::Runtime &rt,
112
+ const jsi::Value &initial,
113
+ RuntimeManager *runtimeManager,
114
+ std::shared_ptr<Scheduler> s)
115
+ : StoreUser(s, *runtimeManager),
116
+ runtimeManager(runtimeManager),
117
+ value(ShareableValue::adapt(rt, initial, runtimeManager)) {}
118
+
119
+ unsigned long int MutableValue::addListener(
120
+ unsigned long id,
121
+ std::function<void()> listener) {
108
122
  listeners[id] = listener;
109
123
  return id;
110
124
  }
@@ -115,5 +129,4 @@ void MutableValue::removeListener(unsigned long listenerId) {
115
129
  }
116
130
  }
117
131
 
118
-
119
- }
132
+ } // namespace reanimated
@@ -1,13 +1,16 @@
1
1
  #include "MutableValueSetterProxy.h"
2
- #include "SharedParent.h"
3
- #include "MutableValue.h"
4
2
  #include <jsi/jsi.h>
3
+ #include "MutableValue.h"
4
+ #include "SharedParent.h"
5
5
 
6
6
  using namespace facebook;
7
7
 
8
8
  namespace reanimated {
9
9
 
10
- void MutableValueSetterProxy::set(jsi::Runtime &rt, const jsi::PropNameID &name, const jsi::Value &newValue) {
10
+ void MutableValueSetterProxy::set(
11
+ jsi::Runtime &rt,
12
+ const jsi::PropNameID &name,
13
+ const jsi::Value &newValue) {
11
14
  auto propName = name.utf8(rt);
12
15
  if (propName == "_value") {
13
16
  mutableValue->setValue(rt, newValue);
@@ -18,11 +21,13 @@ void MutableValueSetterProxy::set(jsi::Runtime &rt, const jsi::PropNameID &name,
18
21
  }
19
22
  *mutableValue->animation.lock() = jsi::Value(rt, newValue);
20
23
  } else if (propName == "value") {
21
- // you call `this.value` inside of value setter, we should throw
24
+ // you call `this.value` inside of value setter, we should throw
22
25
  }
23
26
  }
24
27
 
25
- jsi::Value MutableValueSetterProxy::get(jsi::Runtime &rt, const jsi::PropNameID &name) {
28
+ jsi::Value MutableValueSetterProxy::get(
29
+ jsi::Runtime &rt,
30
+ const jsi::PropNameID &name) {
26
31
  auto propName = name.utf8(rt);
27
32
 
28
33
  if (propName == "value") {
@@ -39,5 +44,4 @@ jsi::Value MutableValueSetterProxy::get(jsi::Runtime &rt, const jsi::PropNameID
39
44
  return jsi::Value::undefined();
40
45
  }
41
46
 
42
- }
43
-
47
+ } // namespace reanimated
@@ -1,7 +1,7 @@
1
1
  #include "RemoteObject.h"
2
- #include "SharedParent.h"
3
- #include "RuntimeDecorator.h"
4
2
  #include <jsi/jsi.h>
3
+ #include "RuntimeDecorator.h"
4
+ #include "SharedParent.h"
5
5
 
6
6
  using namespace facebook;
7
7
 
@@ -22,7 +22,10 @@ jsi::Value RemoteObject::get(jsi::Runtime &rt, const jsi::PropNameID &name) {
22
22
  return jsi::Value::undefined();
23
23
  }
24
24
 
25
- void RemoteObject::set(jsi::Runtime &rt, const jsi::PropNameID &name, const jsi::Value &value) {
25
+ void RemoteObject::set(
26
+ jsi::Runtime &rt,
27
+ const jsi::PropNameID &name,
28
+ const jsi::Value &value) {
26
29
  if (RuntimeDecorator::isWorkletRuntime(rt)) {
27
30
  backing.lock()->getObject(rt).setProperty(rt, name, value);
28
31
  }
@@ -33,9 +36,10 @@ std::vector<jsi::PropNameID> RemoteObject::getPropertyNames(jsi::Runtime &rt) {
33
36
  std::vector<jsi::PropNameID> res;
34
37
  auto propertyNames = backing.lock()->getObject(rt).getPropertyNames(rt);
35
38
  for (size_t i = 0, size = propertyNames.size(rt); i < size; i++) {
36
- res.push_back(jsi::PropNameID::forString(rt, propertyNames.getValueAtIndex(rt, i).asString(rt)));
39
+ res.push_back(jsi::PropNameID::forString(
40
+ rt, propertyNames.getValueAtIndex(rt, i).asString(rt)));
37
41
  }
38
42
  return res;
39
43
  }
40
44
 
41
- }
45
+ } // namespace reanimated