@react-native-ohos/react-native-reanimated 3.18.1-rc.6 → 4.0.0-rc.1

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 (275) hide show
  1. package/compatibility.json +161 -0
  2. package/harmony/reanimated/BuildProfile.ets +1 -1
  3. package/harmony/reanimated/build-profile.json5 +8 -1
  4. package/harmony/reanimated/oh-package.json5 +3 -2
  5. package/harmony/reanimated/src/main/cpp/CMakeLists.txt +31 -40
  6. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +11 -16
  7. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +3 -4
  8. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -0
  9. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -0
  10. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -0
  11. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -0
  12. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -0
  13. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -0
  14. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -0
  15. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -0
  16. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -0
  17. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -0
  18. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -0
  19. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -0
  20. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -0
  21. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -0
  22. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -0
  23. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -0
  24. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -0
  25. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +93 -0
  26. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -0
  27. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -0
  28. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -0
  29. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -0
  30. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -0
  31. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -0
  32. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +44 -0
  33. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -0
  34. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -0
  35. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -0
  36. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -0
  37. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -0
  38. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -0
  39. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -0
  40. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -0
  41. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -0
  42. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -0
  43. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -0
  44. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -0
  45. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -0
  46. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -0
  47. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -0
  48. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -0
  49. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -0
  50. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -0
  51. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -0
  52. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -0
  53. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -0
  54. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -0
  55. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -0
  56. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -0
  57. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -0
  58. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -0
  59. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -0
  60. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -0
  61. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -0
  62. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -0
  63. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -0
  64. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -0
  65. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -0
  66. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -0
  67. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -0
  68. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -0
  69. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -0
  70. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -0
  71. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -0
  72. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -0
  73. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -0
  74. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -0
  75. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -0
  76. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -0
  77. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -0
  78. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -0
  79. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -0
  80. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -0
  81. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -0
  82. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -0
  83. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -0
  84. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -0
  85. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -0
  86. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -0
  87. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -0
  88. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -0
  89. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -0
  90. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -0
  91. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -0
  92. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -0
  93. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -0
  94. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -0
  95. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -0
  96. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -0
  97. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -0
  98. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -0
  99. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -0
  100. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -0
  101. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -0
  102. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -0
  103. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -0
  104. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -0
  105. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -0
  106. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -0
  107. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -0
  108. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -0
  109. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -0
  110. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -0
  111. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -0
  112. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -0
  113. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -0
  114. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -0
  115. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -0
  116. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -0
  117. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -0
  118. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -0
  119. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -0
  120. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -0
  121. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -0
  122. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -0
  123. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -0
  124. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -0
  125. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -0
  126. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -0
  127. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -0
  128. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -0
  129. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -0
  130. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -0
  131. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -0
  132. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -0
  133. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -0
  134. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -0
  135. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -0
  136. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -0
  137. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -0
  138. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -0
  139. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -0
  140. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -0
  141. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -0
  142. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -0
  143. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -0
  144. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -0
  145. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -0
  146. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -0
  147. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +110 -0
  148. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -0
  149. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -0
  150. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -0
  151. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -0
  152. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -0
  153. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -0
  154. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -0
  155. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -0
  156. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -0
  157. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +51 -39
  158. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +13 -15
  159. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +0 -3
  160. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +22 -53
  161. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +12 -8
  162. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +46 -37
  163. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +3 -10
  164. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -0
  165. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -0
  166. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -0
  167. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -0
  168. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -0
  169. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -0
  170. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +4 -2
  171. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +62 -157
  172. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +38 -46
  173. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -0
  174. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -0
  175. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -0
  176. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -0
  177. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/{LayoutAnimationsProxy.cpp → LayoutAnimationsProxy_Legacy.cpp} +303 -276
  178. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -0
  179. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +5 -65
  180. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +52 -82
  181. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -0
  182. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -0
  183. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -0
  184. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -0
  185. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -0
  186. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +957 -552
  187. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +87 -111
  188. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +115 -163
  189. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +38 -54
  190. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +34 -36
  191. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +8 -0
  192. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +46 -58
  193. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +5 -9
  194. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -0
  195. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -0
  196. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +26 -57
  197. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +12 -33
  198. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -0
  199. package/harmony/reanimated/src/main/cpp/Common/cpp/{worklets → reanimated}/Tools/ReanimatedVersion.h +3 -4
  200. package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +60 -85
  201. package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +1 -0
  202. package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +0 -3
  203. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +266 -0
  204. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -0
  205. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +36 -0
  206. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -0
  207. package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +3 -3
  208. package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +12 -1
  209. package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +1 -4
  210. package/harmony/reanimated.har +0 -0
  211. package/package.json +36 -18
  212. package/scripts/deploy.js +191 -0
  213. package/scripts/set-reanimated-version.js +37 -0
  214. package/scripts/update-version.js +119 -0
  215. package/scripts/validate-react-native-version.js +46 -0
  216. package/scripts/validate-worklets-build.js +17 -0
  217. package/scripts/validate-worklets-version.js +79 -0
  218. package/scripts/worklets-version.json +4 -0
  219. package/LICENSE +0 -21
  220. package/README.OpenSource +0 -11
  221. package/README.md +0 -10
  222. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
  223. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
  224. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
  225. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
  226. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
  227. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
  228. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
  229. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
  230. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
  231. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
  232. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
  233. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
  234. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
  235. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
  236. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
  237. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
  238. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
  239. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
  240. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
  241. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
  242. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
  243. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
  244. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
  245. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
  246. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
  247. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
  248. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
  249. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
  250. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
  251. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
  252. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
  253. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
  254. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
  255. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
  256. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
  257. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
  258. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
  259. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
  260. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
  261. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
  262. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
  263. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
  264. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -155
  265. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
  266. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
  267. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -182
  268. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
  269. package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
  270. package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
  271. package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
  272. package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
  273. package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
  274. package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
  275. package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
@@ -0,0 +1,45 @@
1
+ #include <reanimated/CSS/registries/CSSKeyframesRegistry.h>
2
+
3
+ #include <memory>
4
+ #include <string>
5
+ #include <utility>
6
+
7
+ namespace reanimated::css {
8
+
9
+ CSSKeyframesRegistry::CSSKeyframesRegistry(const std::shared_ptr<ViewStylesRepository> &viewStylesRepository)
10
+ : viewStylesRepository_(viewStylesRepository) {}
11
+
12
+ const CSSKeyframesConfig &CSSKeyframesRegistry::get(
13
+ const std::string &animationName,
14
+ const std::string &componentName) {
15
+ const auto &registryIt = registry_.find(animationName);
16
+ if (registryIt == registry_.end()) {
17
+ throw std::runtime_error("[Reanimated] No keyframes with name `" + animationName + "` were registered");
18
+ }
19
+
20
+ const auto &keyframesByComponentName = registryIt->second;
21
+ const auto &keyframesByComponentNameIt = keyframesByComponentName.find(componentName);
22
+ if (keyframesByComponentNameIt == keyframesByComponentName.end()) {
23
+ throw std::runtime_error(
24
+ "[Reanimated] No keyframes with name `" + animationName + "` were registered for component `" + componentName +
25
+ "`");
26
+ }
27
+
28
+ return keyframesByComponentNameIt->second;
29
+ }
30
+
31
+ void CSSKeyframesRegistry::set(
32
+ const std::string &animationName,
33
+ const std::string &componentName,
34
+ CSSKeyframesConfig &&config) {
35
+ registry_[animationName][componentName] = std::move(config);
36
+ }
37
+
38
+ void CSSKeyframesRegistry::remove(const std::string &animationName, const std::string &componentName) {
39
+ registry_[animationName].erase(componentName);
40
+ if (registry_[animationName].empty()) {
41
+ registry_.erase(animationName);
42
+ }
43
+ }
44
+
45
+ } // namespace reanimated::css
@@ -0,0 +1,29 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/configs/CSSKeyframesConfig.h>
4
+ #include <reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h>
5
+ #include <reanimated/CSS/misc/ViewStylesRepository.h>
6
+
7
+ #include <memory>
8
+ #include <string>
9
+ #include <unordered_map>
10
+ #include <utility>
11
+
12
+ namespace reanimated::css {
13
+
14
+ class CSSKeyframesRegistry {
15
+ public:
16
+ explicit CSSKeyframesRegistry(const std::shared_ptr<ViewStylesRepository> &viewStylesRepository);
17
+
18
+ const CSSKeyframesConfig &get(const std::string &animationName, const std::string &componentName);
19
+ void set(const std::string &animationName, const std::string &componentName, CSSKeyframesConfig &&config);
20
+ void remove(const std::string &animationName, const std::string &componentName);
21
+
22
+ private:
23
+ using ConfigsByComponentName = std::unordered_map<std::string, CSSKeyframesConfig>;
24
+
25
+ std::unordered_map<std::string, ConfigsByComponentName> registry_;
26
+ const std::shared_ptr<ViewStylesRepository> viewStylesRepository_;
27
+ };
28
+
29
+ } // namespace reanimated::css
@@ -0,0 +1,167 @@
1
+ #include <reanimated/CSS/registries/CSSTransitionsRegistry.h>
2
+
3
+ #include <memory>
4
+ #include <utility>
5
+
6
+ namespace reanimated::css {
7
+
8
+ CSSTransitionsRegistry::CSSTransitionsRegistry(
9
+ const std::shared_ptr<StaticPropsRegistry> &staticPropsRegistry,
10
+ const GetAnimationTimestampFunction &getCurrentTimestamp)
11
+ : getCurrentTimestamp_(getCurrentTimestamp), staticPropsRegistry_(staticPropsRegistry) {}
12
+
13
+ bool CSSTransitionsRegistry::isEmpty() const {
14
+ // The registry is empty if has no registered animations and no updates
15
+ // stored in the updates registry
16
+ return UpdatesRegistry::isEmpty() && registry_.empty();
17
+ }
18
+
19
+ bool CSSTransitionsRegistry::hasUpdates() const {
20
+ return !runningTransitionTags_.empty() || !delayedTransitionsManager_.empty();
21
+ }
22
+
23
+ void CSSTransitionsRegistry::add(const std::shared_ptr<CSSTransition> &transition) {
24
+ const auto &shadowNode = transition->getShadowNode();
25
+ const auto viewTag = shadowNode->getTag();
26
+
27
+ registry_.insert({viewTag, transition});
28
+ PropsObserver observer = createPropsObserver(viewTag);
29
+ staticPropsRegistry_->setObserver(viewTag, std::move(observer));
30
+ }
31
+
32
+ void CSSTransitionsRegistry::remove(const Tag viewTag) {
33
+ removeFromUpdatesRegistry(viewTag);
34
+ staticPropsRegistry_->removeObserver(viewTag);
35
+ delayedTransitionsManager_.remove(viewTag);
36
+ runningTransitionTags_.erase(viewTag);
37
+ registry_.erase(viewTag);
38
+ }
39
+
40
+ void CSSTransitionsRegistry::updateSettings(const Tag viewTag, const PartialCSSTransitionConfig &config) {
41
+ const auto &transition = registry_[viewTag];
42
+ transition->updateSettings(config);
43
+
44
+ // Replace style overrides with the new ones if transition properties were
45
+ // updated (we want to keep overrides only for transitioned properties)
46
+ if (config.properties.has_value()) {
47
+ updateInUpdatesRegistry(transition, transition->getCurrentInterpolationStyle());
48
+ }
49
+ }
50
+
51
+ void CSSTransitionsRegistry::update(const double timestamp) {
52
+ // Activate all delayed transitions that should start now
53
+ activateDelayedTransitions(timestamp);
54
+
55
+ // Iterate over active transitions and update them
56
+ for (auto it = runningTransitionTags_.begin(); it != runningTransitionTags_.end();) {
57
+ const auto &viewTag = *it;
58
+ const auto &transition = registry_[viewTag];
59
+
60
+ const folly::dynamic &updates = transition->update(timestamp);
61
+ if (!updates.empty()) {
62
+ addUpdatesToBatch(transition->getShadowNode(), updates);
63
+ }
64
+
65
+ // We remove transition from running and schedule it when animation of one
66
+ // of properties has finished and the other one is still delayed
67
+ const auto &minDelay = transition->getMinDelay(timestamp);
68
+ if (minDelay > 0) {
69
+ delayedTransitionsManager_.add(timestamp + transition->getMinDelay(timestamp), viewTag);
70
+ }
71
+
72
+ if (transition->getState() != TransitionProgressState::Running) {
73
+ it = runningTransitionTags_.erase(it);
74
+ } else {
75
+ ++it;
76
+ }
77
+ }
78
+ }
79
+
80
+ void CSSTransitionsRegistry::activateDelayedTransitions(const double timestamp) {
81
+ while (!delayedTransitionsManager_.empty() && delayedTransitionsManager_.top().timestamp <= timestamp) {
82
+ const auto [_, viewTag] = delayedTransitionsManager_.pop();
83
+
84
+ // Add only these transitions which weren't removed in the meantime
85
+ if (registry_.find(viewTag) != registry_.end()) {
86
+ runningTransitionTags_.insert(viewTag);
87
+ }
88
+ }
89
+ }
90
+
91
+ void CSSTransitionsRegistry::scheduleOrActivateTransition(const std::shared_ptr<CSSTransition> &transition) {
92
+ const auto viewTag = transition->getViewTag();
93
+ const auto currentTimestamp = getCurrentTimestamp_();
94
+ const auto minDelay = transition->getMinDelay(currentTimestamp);
95
+
96
+ // Remove transition from delayed (if it is already added to delayed
97
+ // transitions)
98
+ delayedTransitionsManager_.remove(viewTag);
99
+
100
+ if (minDelay > 0) {
101
+ delayedTransitionsManager_.add(currentTimestamp + minDelay, viewTag);
102
+ } else {
103
+ runningTransitionTags_.insert(viewTag);
104
+ }
105
+ }
106
+
107
+ PropsObserver CSSTransitionsRegistry::createPropsObserver(const Tag viewTag) {
108
+ return [weakThis = weak_from_this(), viewTag](const folly::dynamic &oldProps, const folly::dynamic &newProps) {
109
+ auto strongThis = weakThis.lock();
110
+ if (!strongThis) {
111
+ return;
112
+ }
113
+
114
+ const auto &transition = strongThis->registry_[viewTag];
115
+ const auto allowedProperties = transition->getAllowedProperties(oldProps, newProps);
116
+
117
+ const auto changedProps = getChangedProps(oldProps, newProps, allowedProperties);
118
+
119
+ if (changedProps.changedPropertyNames.empty()) {
120
+ return;
121
+ }
122
+
123
+ {
124
+ std::lock_guard<std::mutex> lock{strongThis->mutex_};
125
+
126
+ const auto &shadowNode = transition->getShadowNode();
127
+ const auto &lastUpdates = strongThis->getUpdatesFromRegistry(shadowNode->getTag());
128
+ const auto &transitionStartStyle = transition->run(changedProps, lastUpdates, strongThis->getCurrentTimestamp_());
129
+ strongThis->updateInUpdatesRegistry(transition, transitionStartStyle);
130
+ strongThis->scheduleOrActivateTransition(transition);
131
+ }
132
+ };
133
+ }
134
+
135
+ void CSSTransitionsRegistry::updateInUpdatesRegistry(
136
+ const std::shared_ptr<CSSTransition> &transition,
137
+ const folly::dynamic &updates) {
138
+ const auto &shadowNode = transition->getShadowNode();
139
+ const auto &lastUpdates = getUpdatesFromRegistry(shadowNode->getTag());
140
+ const auto &transitionProperties = transition->getProperties();
141
+
142
+ folly::dynamic filteredUpdates = folly::dynamic::object;
143
+
144
+ if (!transitionProperties.has_value()) {
145
+ // If transitionProperty is set to 'all' (optional has no value), we have
146
+ // to keep the result of the previous transition updated with the new
147
+ // transition starting values
148
+ if (!lastUpdates.empty()) {
149
+ filteredUpdates = lastUpdates;
150
+ }
151
+ } else if (!lastUpdates.empty()) {
152
+ // Otherwise, we keep only allowed properties from the last updates
153
+ // and update the object with the new transition starting values
154
+ for (const auto &prop : transitionProperties.value()) {
155
+ if (lastUpdates.count(prop)) {
156
+ filteredUpdates[prop] = lastUpdates[prop];
157
+ }
158
+ }
159
+ }
160
+
161
+ // updated object contains only allowed properties so we don't need
162
+ // to do additional filtering here
163
+ filteredUpdates.update(updates);
164
+ setInUpdatesRegistry(shadowNode, filteredUpdates);
165
+ }
166
+
167
+ } // namespace reanimated::css
@@ -0,0 +1,51 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/core/CSSTransition.h>
4
+ #include <reanimated/CSS/registries/StaticPropsRegistry.h>
5
+ #include <reanimated/CSS/utils/DelayedItemsManager.h>
6
+ #include <reanimated/CSS/utils/props.h>
7
+ #include <reanimated/Fabric/updates/UpdatesRegistry.h>
8
+ #include <reanimated/Tools/PlatformDepMethodsHolder.h>
9
+
10
+ #include <memory>
11
+ #include <set>
12
+ #include <unordered_map>
13
+ #include <unordered_set>
14
+ #include <utility>
15
+ #include <vector>
16
+
17
+ namespace reanimated::css {
18
+
19
+ class CSSTransitionsRegistry : public UpdatesRegistry, public std::enable_shared_from_this<CSSTransitionsRegistry> {
20
+ public:
21
+ CSSTransitionsRegistry(
22
+ const std::shared_ptr<StaticPropsRegistry> &staticPropsRegistry,
23
+ const GetAnimationTimestampFunction &getCurrentTimestamp);
24
+
25
+ bool isEmpty() const override;
26
+ bool hasUpdates() const;
27
+
28
+ void add(const std::shared_ptr<CSSTransition> &transition);
29
+ void updateSettings(Tag viewTag, const PartialCSSTransitionConfig &config);
30
+ void remove(Tag viewTag) override;
31
+
32
+ void update(double timestamp);
33
+
34
+ private:
35
+ using Registry = std::unordered_map<Tag, std::shared_ptr<CSSTransition>>;
36
+
37
+ const GetAnimationTimestampFunction &getCurrentTimestamp_;
38
+ const std::shared_ptr<StaticPropsRegistry> staticPropsRegistry_;
39
+
40
+ Registry registry_;
41
+
42
+ std::unordered_set<Tag> runningTransitionTags_;
43
+ DelayedItemsManager<Tag> delayedTransitionsManager_;
44
+
45
+ void activateDelayedTransitions(double timestamp);
46
+ void scheduleOrActivateTransition(const std::shared_ptr<CSSTransition> &transition);
47
+ PropsObserver createPropsObserver(Tag viewTag);
48
+ void updateInUpdatesRegistry(const std::shared_ptr<CSSTransition> &transition, const folly::dynamic &updates);
49
+ };
50
+
51
+ } // namespace reanimated::css
@@ -0,0 +1,61 @@
1
+ #include <reanimated/CSS/registries/StaticPropsRegistry.h>
2
+
3
+ #include <utility>
4
+
5
+ namespace reanimated::css {
6
+
7
+ void StaticPropsRegistry::set(jsi::Runtime &rt, const Tag viewTag, const jsi::Value &props) {
8
+ if (props.isNull() || props.isUndefined()) {
9
+ remove(viewTag);
10
+ } else {
11
+ const auto newProps = dynamicFromValue(rt, props);
12
+ if (has(viewTag)) {
13
+ notifyObservers(viewTag, get(viewTag), newProps);
14
+ }
15
+ registry_[viewTag] = newProps;
16
+ }
17
+ }
18
+
19
+ folly::dynamic StaticPropsRegistry::get(const Tag viewTag) const {
20
+ auto it = registry_.find(viewTag);
21
+ if (it == registry_.end()) {
22
+ return nullptr;
23
+ }
24
+ return it->second;
25
+ }
26
+
27
+ bool StaticPropsRegistry::has(const Tag viewTag) const {
28
+ return registry_.find(viewTag) != registry_.end();
29
+ }
30
+
31
+ void StaticPropsRegistry::remove(const Tag viewTag) {
32
+ registry_.erase(viewTag);
33
+ }
34
+
35
+ bool StaticPropsRegistry::isEmpty() const {
36
+ return registry_.empty() && observers_.empty();
37
+ }
38
+
39
+ bool StaticPropsRegistry::hasObservers(const Tag viewTag) const {
40
+ return observers_.find(viewTag) != observers_.end();
41
+ }
42
+
43
+ void StaticPropsRegistry::setObserver(const Tag viewTag, PropsObserver observer) {
44
+ observers_[viewTag] = std::move(observer);
45
+ }
46
+
47
+ void StaticPropsRegistry::removeObserver(const Tag viewTag) {
48
+ observers_.erase(viewTag);
49
+ }
50
+
51
+ void StaticPropsRegistry::notifyObservers(
52
+ const Tag viewTag,
53
+ const folly::dynamic &oldProps,
54
+ const folly::dynamic &newProps) {
55
+ auto observerIt = observers_.find(viewTag);
56
+ if (observerIt != observers_.end()) {
57
+ observerIt->second(oldProps, newProps);
58
+ }
59
+ }
60
+
61
+ } // namespace reanimated::css
@@ -0,0 +1,33 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/ShadowNode.h>
4
+
5
+ #include <unordered_map>
6
+
7
+ namespace reanimated::css {
8
+
9
+ using namespace facebook;
10
+ using namespace react;
11
+
12
+ using PropsObserver = std::function<void(const folly::dynamic &oldProps, const folly::dynamic &newProps)>;
13
+
14
+ class StaticPropsRegistry {
15
+ public:
16
+ void set(jsi::Runtime &rt, Tag viewTag, const jsi::Value &props);
17
+ folly::dynamic get(Tag viewTag) const;
18
+ bool has(Tag viewTag) const;
19
+ void remove(Tag viewTag);
20
+ bool isEmpty() const;
21
+
22
+ bool hasObservers(Tag viewTag) const;
23
+ void setObserver(Tag viewTag, PropsObserver observer);
24
+ void removeObserver(Tag viewTag);
25
+
26
+ private:
27
+ std::unordered_map<Tag, folly::dynamic> registry_;
28
+ std::unordered_map<Tag, PropsObserver> observers_;
29
+
30
+ void notifyObservers(Tag viewTag, const folly::dynamic &oldProps, const folly::dynamic &newProps);
31
+ };
32
+
33
+ } // namespace reanimated::css
@@ -0,0 +1,80 @@
1
+ #include <reanimated/CSS/svg/values/SVGBrush.h>
2
+
3
+ #include <string>
4
+
5
+ namespace reanimated::css {
6
+
7
+ SVGBrush::SVGBrush(jsi::Runtime &rt, const jsi::Value &value)
8
+ : CSSColorBase<SVGBrushType, SVGBrush>(SVGBrushType::Transparent) {
9
+ if (value.isBool()) {
10
+ *this = SVGBrush(value.getBool());
11
+ } else if (value.isNumber()) {
12
+ *this = SVGBrush(static_cast<int64_t>(value.getNumber()));
13
+ } else if (value.asString(rt).utf8(rt) == "currentColor") {
14
+ colorType = SVGBrushType::CurrentColor;
15
+ }
16
+ }
17
+
18
+ SVGBrush::SVGBrush(const folly::dynamic &value) : CSSColorBase<SVGBrushType, SVGBrush>(SVGBrushType::Transparent) {
19
+ if (value.isBool()) {
20
+ *this = SVGBrush(value.getBool());
21
+ } else if (value.isNumber()) {
22
+ *this = SVGBrush(value.asInt());
23
+ } else if (value.asString() == "currentColor") {
24
+ colorType = SVGBrushType::CurrentColor;
25
+ }
26
+ }
27
+
28
+ bool SVGBrush::canConstruct(jsi::Runtime &rt, const jsi::Value &jsiValue) {
29
+ return jsiValue.isNumber() || jsiValue.isBool() ||
30
+ (jsiValue.isString() && jsiValue.getString(rt).utf8(rt) == "currentColor");
31
+ }
32
+
33
+ bool SVGBrush::canConstruct(const folly::dynamic &value) {
34
+ return value.isNumber() || value.isBool() || value.asString() == "currentColor";
35
+ }
36
+
37
+ folly::dynamic SVGBrush::toDynamic() const {
38
+ switch (colorType) {
39
+ case SVGBrushType::Rgba:
40
+ return (channels[3] << 24) | (channels[0] << 16) | (channels[1] << 8) | channels[2];
41
+ case SVGBrushType::CurrentColor:
42
+ return nullptr; // currentColor is represented as nullptr in SVG
43
+ default:
44
+ return 0; // Transparent
45
+ }
46
+ }
47
+
48
+ std::string SVGBrush::toString() const {
49
+ switch (colorType) {
50
+ case SVGBrushType::Rgba:
51
+ return "rgba(" + std::to_string(channels[0]) + "," + std::to_string(channels[1]) + "," +
52
+ std::to_string(channels[2]) + "," + std::to_string(channels[3]) + ")";
53
+ case SVGBrushType::CurrentColor:
54
+ return "currentColor";
55
+ default:
56
+ return "transparent";
57
+ }
58
+ }
59
+
60
+ SVGBrush SVGBrush::interpolate(double progress, const SVGBrush &to) const {
61
+ if (!isInterpolatable()) {
62
+ return progress < 0.5 ? *this : to;
63
+ }
64
+ return CSSColorBase<SVGBrushType, SVGBrush>::interpolate(progress, to);
65
+ }
66
+
67
+ bool SVGBrush::isInterpolatable() const {
68
+ return colorType == SVGBrushType::Rgba || colorType == SVGBrushType::Transparent;
69
+ }
70
+
71
+ #ifndef NDEBUG
72
+
73
+ std::ostream &operator<<(std::ostream &os, const SVGBrush &colorValue) {
74
+ os << "SVGBrush(" << colorValue.toString() << ")";
75
+ return os;
76
+ }
77
+
78
+ #endif // NDEBUG
79
+
80
+ } // namespace reanimated::css
@@ -0,0 +1,39 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/common/values/CSSColor.h>
4
+
5
+ #include <string>
6
+
7
+ namespace reanimated::css {
8
+
9
+ enum class SVGBrushType : std::uint8_t {
10
+ Rgba,
11
+ Transparent,
12
+ CurrentColor,
13
+ };
14
+
15
+ struct SVGBrush : public CSSColorBase<SVGBrushType, SVGBrush> {
16
+ using CSSColorBase<SVGBrushType, SVGBrush>::CSSColorBase;
17
+ using CSSColorBase<SVGBrushType, SVGBrush>::operator==;
18
+
19
+ explicit SVGBrush(jsi::Runtime &rt, const jsi::Value &jsiValue);
20
+ explicit SVGBrush(const folly::dynamic &value);
21
+
22
+ static bool canConstruct(jsi::Runtime &rt, const jsi::Value &jsiValue);
23
+ static bool canConstruct(const folly::dynamic &value);
24
+
25
+ folly::dynamic toDynamic() const override;
26
+ std::string toString() const override;
27
+
28
+ SVGBrush interpolate(double progress, const SVGBrush &to) const override;
29
+ bool isInterpolatable() const;
30
+
31
+ #ifndef NDEBUG
32
+ friend std::ostream &operator<<(std::ostream &os, const SVGBrush &colorValue);
33
+ #endif // NDEBUG
34
+
35
+ private:
36
+ static bool isValidColorString(const std::string &value);
37
+ };
38
+
39
+ } // namespace reanimated::css
@@ -0,0 +1,93 @@
1
+ #include <reanimated/CSS/svg/values/SVGLength.h>
2
+
3
+ #include <string>
4
+
5
+ namespace reanimated::css {
6
+
7
+ SVGLength::SVGLength() : value(0), isPercentage(false) {}
8
+
9
+ SVGLength::SVGLength(const double value) : value(value), isPercentage(false) {}
10
+
11
+ SVGLength::SVGLength(const double value, const bool isPercentage) : value(value), isPercentage(isPercentage) {}
12
+
13
+ SVGLength::SVGLength(const char *value) {
14
+ if (!canConstruct(value)) {
15
+ throw std::invalid_argument("[Reanimated] SVGLength: Invalid value: " + std::string(value));
16
+ }
17
+
18
+ std::string str = value;
19
+ str.pop_back();
20
+ this->value = std::stod(str) / 100;
21
+ this->isPercentage = true;
22
+ }
23
+
24
+ SVGLength::SVGLength(jsi::Runtime &rt, const jsi::Value &jsiValue) {
25
+ if (jsiValue.isNumber()) {
26
+ this->value = jsiValue.asNumber();
27
+ this->isPercentage = false;
28
+ } else {
29
+ *this = SVGLength(jsiValue.asString(rt).utf8(rt));
30
+ }
31
+ }
32
+
33
+ SVGLength::SVGLength(const folly::dynamic &value) {
34
+ if (value.isNumber()) {
35
+ this->value = value.getDouble();
36
+ this->isPercentage = false;
37
+ } else {
38
+ *this = SVGLength(value.asString().c_str());
39
+ }
40
+ }
41
+
42
+ bool SVGLength::canConstruct(const std::string &value) {
43
+ return !value.empty() && value.back() == '%';
44
+ }
45
+
46
+ bool SVGLength::canConstruct(const char *value) {
47
+ return canConstruct(std::string(value));
48
+ }
49
+
50
+ bool SVGLength::canConstruct(jsi::Runtime &rt, const jsi::Value &jsiValue) {
51
+ return jsiValue.isNumber() || (jsiValue.isString() && canConstruct(jsiValue.getString(rt).utf8(rt)));
52
+ }
53
+
54
+ bool SVGLength::canConstruct(const folly::dynamic &value) {
55
+ return value.isNumber() || (value.isString() && canConstruct(value.getString()));
56
+ }
57
+
58
+ folly::dynamic SVGLength::toDynamic() const {
59
+ if (isPercentage) {
60
+ return std::to_string(value * 100) + "%";
61
+ }
62
+ return value;
63
+ }
64
+
65
+ std::string SVGLength::toString() const {
66
+ return std::to_string(value * (isPercentage ? 100 : 1)) + "%";
67
+ }
68
+
69
+ SVGLength SVGLength::interpolate(const double progress, const SVGLength &to) const {
70
+ // We can interpolate SVG length values only if both values are percentages or
71
+ // both are numbers. In other cases, we interpolate them as keywords.
72
+ if ((isPercentage == to.isPercentage) || (isPercentage && to.value == 0) || (to.isPercentage && value == 0)) {
73
+ return SVGLength(value + (to.value - value) * progress, isPercentage || to.isPercentage);
74
+ }
75
+
76
+ // Otherwise, we interpolate values as discrete values
77
+ return progress < 0.5 ? *this : to;
78
+ }
79
+
80
+ bool SVGLength::operator==(const SVGLength &other) const {
81
+ return value == other.value && isPercentage == other.isPercentage;
82
+ }
83
+
84
+ #ifndef NDEBUG
85
+
86
+ std::ostream &operator<<(std::ostream &os, const SVGLength &value) {
87
+ os << "SVGLength(" << value.toString() << ")";
88
+ return os;
89
+ }
90
+
91
+ #endif // NDEBUG
92
+
93
+ } // namespace reanimated::css
@@ -0,0 +1,36 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/common/values/CSSValue.h>
4
+
5
+ #include <string>
6
+
7
+ namespace reanimated::css {
8
+
9
+ struct SVGLength : public CSSSimpleValue<SVGLength> {
10
+ double value;
11
+ bool isPercentage;
12
+
13
+ SVGLength();
14
+ explicit SVGLength(double value);
15
+ explicit SVGLength(double value, bool isPercentage);
16
+ explicit SVGLength(const char *value);
17
+ explicit SVGLength(jsi::Runtime &rt, const jsi::Value &jsiValue);
18
+ explicit SVGLength(const folly::dynamic &value);
19
+
20
+ static bool canConstruct(const std::string &value);
21
+ static bool canConstruct(const char *value);
22
+ static bool canConstruct(jsi::Runtime &rt, const jsi::Value &jsiValue);
23
+ static bool canConstruct(const folly::dynamic &value);
24
+
25
+ folly::dynamic toDynamic() const override;
26
+ std::string toString() const override;
27
+ SVGLength interpolate(double progress, const SVGLength &to) const override;
28
+
29
+ bool operator==(const SVGLength &other) const;
30
+
31
+ #ifndef NDEBUG
32
+ friend std::ostream &operator<<(std::ostream &os, const SVGLength &dimension);
33
+ #endif // NDEBUG
34
+ };
35
+
36
+ } // namespace reanimated::css