@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,308 @@
1
+ #include <reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h>
2
+
3
+ #include <reanimated/CSS/interpolation/filters/FilterOperation.h>
4
+ #include <reanimated/CSS/interpolation/transforms/TransformOperation.h>
5
+
6
+ namespace reanimated::css {
7
+
8
+ // OperationsStyleInterpolator implementation
9
+
10
+ OperationsStyleInterpolator::OperationsStyleInterpolator(
11
+ const PropertyPath &propertyPath,
12
+ const std::shared_ptr<StyleOperationInterpolators> &interpolators,
13
+ const std::shared_ptr<ViewStylesRepository> &viewStylesRepository,
14
+ const folly::dynamic &defaultStyleValueDynamic)
15
+ : PropertyInterpolator(propertyPath, viewStylesRepository),
16
+ interpolators_(interpolators),
17
+ defaultStyleValueDynamic_(defaultStyleValueDynamic) {}
18
+
19
+ folly::dynamic OperationsStyleInterpolator::getStyleValue(const std::shared_ptr<const ShadowNode> &shadowNode) const {
20
+ return viewStylesRepository_->getStyleProp(shadowNode->getTag(), propertyPath_);
21
+ }
22
+
23
+ folly::dynamic OperationsStyleInterpolator::getResetStyle(const std::shared_ptr<const ShadowNode> &shadowNode) const {
24
+ auto styleValue = getStyleValue(shadowNode);
25
+
26
+ if (!styleValue.isArray()) {
27
+ return defaultStyleValueDynamic_;
28
+ }
29
+
30
+ return styleValue;
31
+ }
32
+
33
+ folly::dynamic OperationsStyleInterpolator::getFirstKeyframeValue() const {
34
+ const auto &fromOperations = keyframes_.front()->fromOperations;
35
+ return fromOperations.has_value() ? convertOperationsToDynamic(fromOperations.value()) : defaultStyleValueDynamic_;
36
+ }
37
+
38
+ folly::dynamic OperationsStyleInterpolator::getLastKeyframeValue() const {
39
+ const auto &toOperations = keyframes_.back()->toOperations;
40
+ return toOperations.has_value() ? convertOperationsToDynamic(toOperations.value()) : defaultStyleValueDynamic_;
41
+ }
42
+
43
+ bool OperationsStyleInterpolator::equalsReversingAdjustedStartValue(const folly::dynamic &propertyValue) const {
44
+ const auto propertyOperations = parseStyleOperations(propertyValue);
45
+
46
+ if (!reversingAdjustedStartValue_.has_value()) {
47
+ return !propertyOperations.has_value();
48
+ } else if (!propertyOperations.has_value()) {
49
+ return false;
50
+ }
51
+
52
+ const auto &reversingAdjustedOperationsValue = reversingAdjustedStartValue_.value();
53
+ const auto &propertyOperationsValue = propertyOperations.value();
54
+
55
+ if (reversingAdjustedOperationsValue.size() != propertyOperationsValue.size()) {
56
+ return false;
57
+ }
58
+
59
+ for (size_t i = 0; i < reversingAdjustedOperationsValue.size(); ++i) {
60
+ if (*reversingAdjustedOperationsValue[i] != *propertyOperationsValue[i]) {
61
+ return false;
62
+ }
63
+ }
64
+
65
+ return true;
66
+ }
67
+
68
+ folly::dynamic OperationsStyleInterpolator::interpolate(
69
+ const std::shared_ptr<const ShadowNode> &shadowNode,
70
+ const std::shared_ptr<KeyframeProgressProvider> &progressProvider,
71
+ const double fallbackInterpolateThreshold) const {
72
+ const auto currentIndex = getIndexOfCurrentKeyframe(progressProvider);
73
+
74
+ // Get or create the current keyframe
75
+ auto keyframe = keyframes_[currentIndex];
76
+ if (!keyframe->fromOperations.has_value() || !keyframe->toOperations.has_value()) {
77
+ // If the value is nullopt, we would have to read it from the view style
78
+ // and build the keyframe again
79
+ const auto fallbackValue = getFallbackValue(shadowNode);
80
+ keyframe = createStyleOperationsKeyframe(
81
+ keyframe->fromOffset,
82
+ keyframe->toOffset,
83
+ keyframe->fromOperations.value_or(fallbackValue),
84
+ keyframe->toOperations.value_or(fallbackValue));
85
+ }
86
+
87
+ double progress = progressProvider->getKeyframeProgress(keyframe->fromOffset, keyframe->toOffset);
88
+
89
+ if (keyframe->isDiscrete) {
90
+ const auto &operations =
91
+ progress < fallbackInterpolateThreshold ? keyframe->fromOperations.value() : keyframe->toOperations.value();
92
+ return convertOperationsToDynamic(operations);
93
+ }
94
+
95
+ // Interpolate the current keyframe
96
+ return interpolateOperations(
97
+ shadowNode,
98
+ progress,
99
+ keyframe->fromOperations.value(),
100
+ keyframe->toOperations.value(),
101
+ fallbackInterpolateThreshold);
102
+ }
103
+
104
+ void OperationsStyleInterpolator::updateKeyframes(jsi::Runtime &rt, const jsi::Value &keyframes) {
105
+ // Step 1: Parse keyframes
106
+ const auto parsedKeyframes = parseJSIKeyframes(rt, keyframes);
107
+
108
+ // Step 2: Convert keyframes to StyleOperations
109
+ std::vector<std::pair<double, std::optional<StyleOperations>>> operations;
110
+ operations.reserve(parsedKeyframes.size());
111
+ for (const auto &[offset, value] : parsedKeyframes) {
112
+ operations.emplace_back(offset, parseStyleOperations(rt, value));
113
+ }
114
+
115
+ // Step 3: Prepare keyframe interpolation pairs (convert keyframe values in
116
+ // both keyframes to the same type)
117
+ // There will be one less keyframe than the number of keyframes in the jsi
118
+ // array as we create interpolation pairs
119
+ const auto keyframesCount = operations.size() - 1;
120
+ keyframes_.clear();
121
+ keyframes_.reserve(keyframesCount);
122
+
123
+ for (size_t i = 0; i < keyframesCount; ++i) {
124
+ keyframes_.push_back(createStyleOperationsKeyframe(
125
+ operations[i].first, operations[i + 1].first, operations[i].second, operations[i + 1].second));
126
+ }
127
+ }
128
+
129
+ void OperationsStyleInterpolator::updateKeyframesFromStyleChange(
130
+ const folly::dynamic &oldStyleValue,
131
+ const folly::dynamic &newStyleValue,
132
+ const folly::dynamic &lastUpdateValue) {
133
+ if (oldStyleValue.isNull()) {
134
+ reversingAdjustedStartValue_ = std::nullopt;
135
+ } else {
136
+ reversingAdjustedStartValue_ = parseStyleOperations(oldStyleValue);
137
+ }
138
+
139
+ const auto &prevStyleValue = lastUpdateValue.isNull() ? oldStyleValue : lastUpdateValue;
140
+
141
+ keyframes_.clear();
142
+ keyframes_.reserve(1);
143
+ keyframes_.emplace_back(createStyleOperationsKeyframe(
144
+ 0,
145
+ 1,
146
+ parseStyleOperations(prevStyleValue).value_or(StyleOperations{}),
147
+ parseStyleOperations(newStyleValue).value_or(StyleOperations{})));
148
+ }
149
+
150
+ std::optional<StyleOperations> OperationsStyleInterpolator::parseStyleOperations(
151
+ jsi::Runtime &rt,
152
+ const jsi::Value &values) const {
153
+ if (values.isUndefined()) {
154
+ return std::nullopt;
155
+ }
156
+
157
+ const auto operationsArray = values.asObject(rt).asArray(rt);
158
+ const auto operationsCount = operationsArray.size(rt);
159
+
160
+ StyleOperations styleOperations;
161
+ styleOperations.reserve(operationsCount);
162
+
163
+ for (size_t i = 0; i < operationsCount; ++i) {
164
+ styleOperations.emplace_back(createStyleOperation(rt, operationsArray.getValueAtIndex(rt, i)));
165
+ }
166
+
167
+ return styleOperations;
168
+ }
169
+
170
+ std::optional<StyleOperations> OperationsStyleInterpolator::parseStyleOperations(const folly::dynamic &values) const {
171
+ if (values.empty()) {
172
+ return std::nullopt;
173
+ }
174
+
175
+ const auto &operationsArray = values;
176
+ const auto operationsCount = operationsArray.size();
177
+
178
+ StyleOperations styleOperations;
179
+ styleOperations.reserve(operationsCount);
180
+
181
+ for (size_t i = 0; i < operationsCount; ++i) {
182
+ styleOperations.emplace_back(createStyleOperation(operationsArray[i]));
183
+ }
184
+
185
+ return styleOperations;
186
+ }
187
+
188
+ std::shared_ptr<StyleOperationsKeyframe> OperationsStyleInterpolator::createStyleOperationsKeyframe(
189
+ const double fromOffset,
190
+ const double toOffset,
191
+ const std::optional<StyleOperations> &fromOperationsOptional,
192
+ const std::optional<StyleOperations> &toOperationsOptional) const {
193
+ bool isDiscrete = false;
194
+
195
+ if (fromOperationsOptional.has_value() && toOperationsOptional.has_value()) {
196
+ // Try to create a compatible interpolation pair
197
+ const auto interpolationPair =
198
+ createInterpolationPair(fromOperationsOptional.value(), toOperationsOptional.value());
199
+
200
+ if (interpolationPair.has_value()) {
201
+ const auto [fromOperations, toOperations] = interpolationPair.value();
202
+ return std::make_shared<StyleOperationsKeyframe>(
203
+ StyleOperationsKeyframe{fromOffset, toOffset, fromOperations, toOperations, false});
204
+ }
205
+
206
+ // If the operations are not compatible, we need to set the keyframe to discrete
207
+ isDiscrete = true;
208
+ }
209
+
210
+ return std::make_shared<StyleOperationsKeyframe>(
211
+ StyleOperationsKeyframe{fromOffset, toOffset, fromOperationsOptional, toOperationsOptional, isDiscrete});
212
+ }
213
+
214
+ size_t OperationsStyleInterpolator::getIndexOfCurrentKeyframe(
215
+ const std::shared_ptr<KeyframeProgressProvider> &progressProvider) const {
216
+ const auto progress = progressProvider->getGlobalProgress();
217
+
218
+ const auto it = std::lower_bound(
219
+ keyframes_.begin(),
220
+ keyframes_.end(),
221
+ progress,
222
+ [](const std::shared_ptr<StyleOperationsKeyframe> &keyframe, double progress) {
223
+ return keyframe->toOffset < progress;
224
+ });
225
+
226
+ // If we're at the end, return the last valid keyframe index
227
+ if (it == keyframes_.end()) {
228
+ return keyframes_.size() - 1;
229
+ }
230
+
231
+ return std::distance(keyframes_.begin(), it);
232
+ }
233
+
234
+ StyleOperations OperationsStyleInterpolator::getFallbackValue(
235
+ const std::shared_ptr<const ShadowNode> &shadowNode) const {
236
+ const auto &styleValue = getStyleValue(shadowNode);
237
+ return parseStyleOperations(styleValue).value_or(StyleOperations{});
238
+ }
239
+
240
+ folly::dynamic OperationsStyleInterpolator::interpolateOperations(
241
+ const std::shared_ptr<const ShadowNode> &shadowNode,
242
+ const double keyframeProgress,
243
+ const StyleOperations &fromOperations,
244
+ const StyleOperations &toOperations,
245
+ const double fallbackInterpolateThreshold) const {
246
+ auto result = folly::dynamic::array();
247
+ result.reserve(fromOperations.size());
248
+
249
+ const auto updateContext = createUpdateContext(shadowNode, fallbackInterpolateThreshold);
250
+
251
+ for (size_t i = 0; i < fromOperations.size(); ++i) {
252
+ const auto &fromOperation = fromOperations[i];
253
+ const auto &toOperation = toOperations[i];
254
+
255
+ // fromOperation and toOperation have the same type
256
+ const auto &interpolator = interpolators_->at(fromOperation->type);
257
+ const auto interpolationResult =
258
+ interpolator->interpolate(keyframeProgress, fromOperation, toOperation, updateContext);
259
+ result.push_back(interpolationResult->toDynamic());
260
+ }
261
+
262
+ return result;
263
+ }
264
+
265
+ folly::dynamic OperationsStyleInterpolator::convertOperationsToDynamic(const StyleOperations &operations) {
266
+ auto result = folly::dynamic::array();
267
+ result.reserve(operations.size());
268
+
269
+ for (const auto &operation : operations) {
270
+ result.push_back(operation->toDynamic());
271
+ }
272
+
273
+ return result;
274
+ }
275
+
276
+ StyleOperationsInterpolationContext OperationsStyleInterpolator::createUpdateContext(
277
+ const std::shared_ptr<const ShadowNode> &shadowNode,
278
+ const double fallbackInterpolateThreshold) const {
279
+ return StyleOperationsInterpolationContext{
280
+ shadowNode, viewStylesRepository_, interpolators_, fallbackInterpolateThreshold};
281
+ }
282
+
283
+ // OperationsStyleInterpolatorBase implementation
284
+
285
+ template <typename TOperation>
286
+ std::shared_ptr<StyleOperation> OperationsStyleInterpolatorBase<TOperation>::createStyleOperation(
287
+ jsi::Runtime &rt,
288
+ const jsi::Value &value) const {
289
+ return TOperation::fromJSIValue(rt, value);
290
+ }
291
+
292
+ template <typename TOperation>
293
+ std::shared_ptr<StyleOperation> OperationsStyleInterpolatorBase<TOperation>::createStyleOperation(
294
+ const folly::dynamic &value) const {
295
+ return std::static_pointer_cast<StyleOperation>(TOperation::fromDynamic(value));
296
+ }
297
+
298
+ template <typename TOperation>
299
+ std::shared_ptr<TOperation> OperationsStyleInterpolatorBase<TOperation>::getDefaultOperationOfType(
300
+ const size_t type) const {
301
+ return std::static_pointer_cast<TOperation>(interpolators_->at(type)->getDefaultOperation());
302
+ }
303
+
304
+ // Explicit template instantiation
305
+ template class OperationsStyleInterpolatorBase<FilterOperation>;
306
+ template class OperationsStyleInterpolatorBase<TransformOperation>;
307
+
308
+ } // namespace reanimated::css
@@ -0,0 +1,100 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/interpolation/PropertyInterpolator.h>
4
+ #include <reanimated/CSS/interpolation/operations/StyleOperation.h>
5
+ #include <reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h>
6
+
7
+ #include <memory>
8
+ #include <optional>
9
+ #include <unordered_map>
10
+ #include <utility>
11
+ #include <vector>
12
+
13
+ namespace reanimated::css {
14
+
15
+ struct StyleOperationsKeyframe {
16
+ const double fromOffset;
17
+ const double toOffset;
18
+ // If the value is nullopt, we would have to read it from the view style
19
+ // (in all other cases, both vectors will have the same number of elements of
20
+ // corresponding types - elements from the same index will form interpolation
21
+ // pairs)
22
+ const std::optional<StyleOperations> fromOperations;
23
+ const std::optional<StyleOperations> toOperations;
24
+ // Keyframe is discrete when the fromOperations and toOperations aren't compatible
25
+ const bool isDiscrete;
26
+ };
27
+
28
+ class OperationsStyleInterpolator : public PropertyInterpolator {
29
+ public:
30
+ OperationsStyleInterpolator(
31
+ const PropertyPath &propertyPath,
32
+ const std::shared_ptr<StyleOperationInterpolators> &interpolators,
33
+ const std::shared_ptr<ViewStylesRepository> &viewStylesRepository,
34
+ const folly::dynamic &defaultStyleValueDynamic);
35
+
36
+ folly::dynamic getStyleValue(const std::shared_ptr<const ShadowNode> &shadowNode) const override;
37
+ folly::dynamic getResetStyle(const std::shared_ptr<const ShadowNode> &shadowNode) const override;
38
+ folly::dynamic getFirstKeyframeValue() const override;
39
+ folly::dynamic getLastKeyframeValue() const override;
40
+ bool equalsReversingAdjustedStartValue(const folly::dynamic &propertyValue) const override;
41
+
42
+ folly::dynamic interpolate(
43
+ const std::shared_ptr<const ShadowNode> &shadowNode,
44
+ const std::shared_ptr<KeyframeProgressProvider> &progressProvider,
45
+ const double fallbackInterpolateThreshold) const override;
46
+
47
+ void updateKeyframes(jsi::Runtime &rt, const jsi::Value &keyframes) override;
48
+ void updateKeyframesFromStyleChange(
49
+ const folly::dynamic &oldStyleValue,
50
+ const folly::dynamic &newStyleValue,
51
+ const folly::dynamic &lastUpdateValue) override;
52
+
53
+ protected:
54
+ const std::shared_ptr<StyleOperationInterpolators> interpolators_;
55
+
56
+ virtual std::shared_ptr<StyleOperation> createStyleOperation(jsi::Runtime &rt, const jsi::Value &value) const = 0;
57
+ virtual std::shared_ptr<StyleOperation> createStyleOperation(const folly::dynamic &value) const = 0;
58
+ virtual std::optional<std::pair<StyleOperations, StyleOperations>> createInterpolationPair(
59
+ const StyleOperations &fromOperations,
60
+ const StyleOperations &toOperations) const = 0;
61
+
62
+ private:
63
+ const folly::dynamic defaultStyleValueDynamic_;
64
+
65
+ std::vector<std::shared_ptr<StyleOperationsKeyframe>> keyframes_;
66
+ std::optional<StyleOperations> reversingAdjustedStartValue_;
67
+
68
+ std::optional<StyleOperations> parseStyleOperations(jsi::Runtime &rt, const jsi::Value &values) const;
69
+ std::optional<StyleOperations> parseStyleOperations(const folly::dynamic &values) const;
70
+ std::shared_ptr<StyleOperationsKeyframe> createStyleOperationsKeyframe(
71
+ double fromOffset,
72
+ double toOffset,
73
+ const std::optional<StyleOperations> &fromOperationsOptional,
74
+ const std::optional<StyleOperations> &toOperationsOptional) const;
75
+ size_t getIndexOfCurrentKeyframe(const std::shared_ptr<KeyframeProgressProvider> &progressProvider) const;
76
+ StyleOperations getFallbackValue(const std::shared_ptr<const ShadowNode> &shadowNode) const;
77
+ folly::dynamic interpolateOperations(
78
+ const std::shared_ptr<const ShadowNode> &shadowNode,
79
+ double keyframeProgress,
80
+ const StyleOperations &fromOperations,
81
+ const StyleOperations &toOperations,
82
+ double fallbackInterpolateThreshold) const;
83
+ static folly::dynamic convertOperationsToDynamic(const StyleOperations &operations);
84
+ StyleOperationsInterpolationContext createUpdateContext(
85
+ const std::shared_ptr<const ShadowNode> &shadowNode,
86
+ double fallbackInterpolateThreshold) const;
87
+ };
88
+
89
+ template <typename TOperation>
90
+ class OperationsStyleInterpolatorBase : public OperationsStyleInterpolator {
91
+ public:
92
+ using OperationsStyleInterpolator::OperationsStyleInterpolator;
93
+
94
+ protected:
95
+ std::shared_ptr<StyleOperation> createStyleOperation(jsi::Runtime &rt, const jsi::Value &value) const override;
96
+ std::shared_ptr<StyleOperation> createStyleOperation(const folly::dynamic &value) const override;
97
+ std::shared_ptr<TOperation> getDefaultOperationOfType(size_t type) const;
98
+ };
99
+
100
+ } // namespace reanimated::css
@@ -0,0 +1,19 @@
1
+ #include <reanimated/CSS/interpolation/operations/StyleOperation.h>
2
+
3
+ namespace reanimated::css {
4
+
5
+ StyleOperation::StyleOperation(uint8_t type) : type(type) {}
6
+
7
+ bool StyleOperation::operator==(const StyleOperation &other) const {
8
+ return type == other.type && areValuesEqual(other);
9
+ }
10
+
11
+ folly::dynamic StyleOperation::toDynamic() const {
12
+ return folly::dynamic::object(getOperationName(), valueToDynamic());
13
+ }
14
+
15
+ bool StyleOperation::shouldResolve() const {
16
+ return false;
17
+ }
18
+
19
+ } // namespace reanimated::css
@@ -0,0 +1,94 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/common/values/CSSValue.h>
4
+
5
+ #include <folly/dynamic.h>
6
+ #include <jsi/jsi.h>
7
+ #include <memory>
8
+ #include <string>
9
+ #include <type_traits>
10
+ #include <vector>
11
+
12
+ namespace reanimated::css {
13
+
14
+ using namespace facebook;
15
+
16
+ //template <typename TOperation>
17
+ //concept ResolvableOp = requires(TOperation operation) {
18
+ // { operation.value } -> std::convertible_to<typename std::remove_reference_t<decltype(operation.value)>>;
19
+ // requires Resolvable<std::remove_reference_t<decltype(operation.value)>>;
20
+ //}; // NOLINT(readability/braces)
21
+
22
+ //template<typename TOperation>
23
+ //struct IsResolvableOpHelper {
24
+ //private:
25
+ // template<typename T>
26
+ // static auto test(int) -> decltype(
27
+ // std::declval<T>().value,
28
+ // std::declval<typename std::remove_reference_t<decltype(std::declval<T>().value)>>(),
29
+ // std::declval<Resolvable<typename std::remove_reference_t<decltype(std::declval<T>().value)>>>(),
30
+ // std::true_type{}
31
+ // );
32
+ //
33
+ // template<typename T>
34
+ // static std::false_type test(...);
35
+ //
36
+ //public:
37
+ // using type = decltype(test<TOperation>(0));
38
+ //};
39
+ //
40
+ //template<typename TOperation>
41
+ //constexpr bool ResolvableOp = IsResolvableOpHelper<TOperation>::type::value;
42
+
43
+
44
+ template <typename T>
45
+ using value_type_t = decltype(std::declval<T>().value);
46
+
47
+ template <typename T>
48
+ using remove_ref_value_type_t = std::remove_reference_t<value_type_t<T>>;
49
+
50
+ template <typename T, typename = void>
51
+ struct has_value_member : std::false_type {};
52
+
53
+ template <typename T>
54
+ struct has_value_member<T, std::void_t<decltype(std::declval<T>().value)>> : std::true_type {};
55
+
56
+ template <typename T, typename = void>
57
+ struct is_resolvable_op_impl : std::false_type {};
58
+
59
+ template <typename T>
60
+ struct is_resolvable_op_impl<
61
+ T,
62
+ std::enable_if_t<
63
+ has_value_member<T>::value &&
64
+ std::is_convertible<value_type_t<T>, remove_ref_value_type_t<T>>::value &&
65
+ Resolvable<remove_ref_value_type_t<T>>>> : std::true_type {};
66
+
67
+
68
+ template <typename TOperation>
69
+ struct is_resolvable_op : reanimated::css::is_resolvable_op_impl<TOperation> {};
70
+
71
+ template <typename TOperation>
72
+ constexpr bool ResolvableOp = is_resolvable_op<TOperation>::value;
73
+
74
+ //is_resolvable_op_v
75
+ struct StyleOperation {
76
+ uint8_t type;
77
+
78
+ explicit StyleOperation(uint8_t type);
79
+ virtual ~StyleOperation() = default;
80
+
81
+ bool operator==(const StyleOperation &other) const;
82
+ folly::dynamic toDynamic() const;
83
+
84
+ virtual std::string getOperationName() const = 0;
85
+ virtual bool shouldResolve() const;
86
+
87
+ protected:
88
+ virtual folly::dynamic valueToDynamic() const = 0;
89
+ virtual bool areValuesEqual(const StyleOperation &other) const = 0;
90
+ };
91
+
92
+ using StyleOperations = std::vector<std::shared_ptr<StyleOperation>>;
93
+
94
+ } // namespace reanimated::css
@@ -0,0 +1,18 @@
1
+ #include <reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h>
2
+
3
+ namespace reanimated::css {
4
+
5
+ StyleOperationInterpolator::StyleOperationInterpolator(const std::shared_ptr<StyleOperation> &defaultOperation)
6
+ : defaultOperation_(defaultOperation) {}
7
+
8
+ std::shared_ptr<StyleOperation> StyleOperationInterpolator::getDefaultOperation() const {
9
+ return defaultOperation_;
10
+ }
11
+
12
+ std::shared_ptr<StyleOperation> StyleOperationInterpolator::resolveOperation(
13
+ const std::shared_ptr<StyleOperation> &operation,
14
+ const StyleOperationsInterpolationContext &context) const {
15
+ return operation;
16
+ }
17
+
18
+ } // namespace reanimated::css
@@ -0,0 +1,43 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/interpolation/configs.h>
4
+ #include <reanimated/CSS/interpolation/operations/StyleOperation.h>
5
+ #include <reanimated/CSS/misc/ViewStylesRepository.h>
6
+
7
+ #include <memory>
8
+ #include <unordered_map>
9
+
10
+ namespace reanimated::css {
11
+
12
+ class StyleOperationInterpolator {
13
+ public:
14
+ using Interpolators = std::unordered_map<size_t, std::shared_ptr<StyleOperationInterpolator>>;
15
+
16
+ struct UpdateContext {
17
+ const std::shared_ptr<const ShadowNode> &node;
18
+ const std::shared_ptr<ViewStylesRepository> &viewStylesRepository;
19
+ const std::shared_ptr<Interpolators> &interpolators;
20
+ const double fallbackInterpolateThreshold;
21
+ };
22
+
23
+ explicit StyleOperationInterpolator(const std::shared_ptr<StyleOperation> &defaultOperation);
24
+ virtual ~StyleOperationInterpolator() = default;
25
+
26
+ std::shared_ptr<StyleOperation> getDefaultOperation() const;
27
+ virtual std::unique_ptr<StyleOperation> interpolate(
28
+ double progress,
29
+ const std::shared_ptr<StyleOperation> &from,
30
+ const std::shared_ptr<StyleOperation> &to,
31
+ const UpdateContext &context) const = 0;
32
+ virtual std::shared_ptr<StyleOperation> resolveOperation(
33
+ const std::shared_ptr<StyleOperation> &operation,
34
+ const UpdateContext &context) const;
35
+
36
+ private:
37
+ const std::shared_ptr<StyleOperation> defaultOperation_;
38
+ };
39
+
40
+ using StyleOperationInterpolators = StyleOperationInterpolator::Interpolators;
41
+ using StyleOperationsInterpolationContext = StyleOperationInterpolator::UpdateContext;
42
+
43
+ } // namespace reanimated::css
@@ -0,0 +1,26 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/InterpolatorRegistry.h>
4
+ #include <reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h>
5
+
6
+ #include <memory>
7
+ #include <string>
8
+
9
+ namespace reanimated::css {
10
+
11
+ // We can just re-use the logic from the RecordPropertiesInterpolator class as
12
+ // interpolating multiple properties from the view style during animation is the
13
+ // same as interpolating record properties
14
+ class AnimationStyleInterpolator : public RecordPropertiesInterpolator {
15
+ public:
16
+ explicit AnimationStyleInterpolator(
17
+ jsi::Runtime &rt,
18
+ const jsi::Value &keyframes,
19
+ const std::string &componentName,
20
+ const std::shared_ptr<ViewStylesRepository> &viewStylesRepository)
21
+ : RecordPropertiesInterpolator(getComponentInterpolators(componentName), {}, viewStylesRepository) {
22
+ updateKeyframes(rt, keyframes);
23
+ }
24
+ };
25
+
26
+ } // namespace reanimated::css