@react-native-ohos/react-native-reanimated 4.0.0-rc.1 → 4.0.2-beta.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 (235) hide show
  1. package/compatibility.json +161 -161
  2. package/harmony/reanimated/BuildProfile.ets +16 -16
  3. package/harmony/reanimated/build-profile.json5 +18 -18
  4. package/harmony/reanimated/hvigorfile.ts +4 -4
  5. package/harmony/reanimated/index.ets +4 -4
  6. package/harmony/reanimated/oh-package-lock.json5 +39 -0
  7. package/harmony/reanimated/oh-package.json5 +12 -12
  8. package/harmony/reanimated/src/main/cpp/CMakeLists.txt +65 -62
  9. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +81 -81
  10. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +46 -46
  11. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -390
  12. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -16
  13. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -30
  14. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -46
  15. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -23
  16. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -53
  17. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -21
  18. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -166
  19. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -71
  20. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -368
  21. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -53
  22. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -594
  23. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -67
  24. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -52
  25. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -26
  26. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -156
  27. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -76
  28. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +94 -93
  29. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -33
  30. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -48
  31. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -31
  32. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -135
  33. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -61
  34. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -100
  35. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +45 -44
  36. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -81
  37. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -53
  38. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -122
  39. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -38
  40. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -82
  41. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -63
  42. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -118
  43. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -174
  44. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -111
  45. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -196
  46. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -66
  47. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -134
  48. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -44
  49. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -174
  50. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -49
  51. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -45
  52. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -26
  53. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -90
  54. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -43
  55. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -17
  56. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -13
  57. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -127
  58. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -51
  59. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -145
  60. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -47
  61. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -69
  62. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -22
  63. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -66
  64. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -15
  65. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -28
  66. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -15
  67. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -13
  68. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -12
  69. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -157
  70. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -189
  71. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -76
  72. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -66
  73. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -20
  74. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -136
  75. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -40
  76. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -38
  77. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -24
  78. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -58
  79. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -24
  80. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -14
  81. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -14
  82. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -14
  83. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -17
  84. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -14
  85. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -14
  86. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -14
  87. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -14
  88. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -14
  89. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -14
  90. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -95
  91. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -36
  92. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -41
  93. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -32
  94. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -99
  95. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -37
  96. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -308
  97. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -100
  98. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -19
  99. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -94
  100. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -18
  101. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -43
  102. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -26
  103. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -103
  104. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -42
  105. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -224
  106. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -52
  107. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -218
  108. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -89
  109. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -149
  110. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -33
  111. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -208
  112. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -56
  113. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -42
  114. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -20
  115. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -41
  116. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -39
  117. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -28
  118. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -25
  119. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -14
  120. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -20
  121. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -39
  122. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -25
  123. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -47
  124. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -43
  125. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -70
  126. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -40
  127. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -146
  128. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -71
  129. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -155
  130. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -53
  131. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -170
  132. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -67
  133. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -12
  134. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -41
  135. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -31
  136. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -193
  137. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -77
  138. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -340
  139. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -80
  140. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -45
  141. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -29
  142. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -167
  143. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -51
  144. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -61
  145. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -33
  146. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -80
  147. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -39
  148. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -93
  149. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -36
  150. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +111 -110
  151. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -33
  152. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -75
  153. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -45
  154. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -12
  155. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -10
  156. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -36
  157. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -23
  158. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -149
  159. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -32
  160. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +113 -113
  161. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +49 -49
  162. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +46 -46
  163. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +56 -56
  164. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +37 -37
  165. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +104 -104
  166. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +22 -22
  167. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -72
  168. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -25
  169. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -160
  170. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -71
  171. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -161
  172. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -65
  173. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +11 -11
  174. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +137 -137
  175. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +82 -82
  176. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -79
  177. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -81
  178. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -864
  179. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -214
  180. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.cpp +897 -897
  181. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -220
  182. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +31 -31
  183. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +146 -146
  184. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -456
  185. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -102
  186. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -544
  187. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -119
  188. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -39
  189. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +1380 -1376
  190. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +230 -228
  191. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +183 -183
  192. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +93 -93
  193. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +54 -54
  194. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +28 -28
  195. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +58 -58
  196. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +31 -31
  197. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -18
  198. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -44
  199. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +67 -67
  200. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +114 -114
  201. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -46
  202. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.h +18 -18
  203. package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +233 -230
  204. package/harmony/reanimated/src/main/cpp/ReanimatedModule.h +23 -23
  205. package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +56 -56
  206. package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.h +30 -30
  207. package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +44 -44
  208. package/harmony/reanimated/src/main/cpp/ReanimatedPackage.h +16 -16
  209. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +265 -265
  210. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -36
  211. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +35 -35
  212. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -23
  213. package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.cpp +23 -23
  214. package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +19 -19
  215. package/harmony/reanimated/src/main/cpp/TransformParser.h +93 -93
  216. package/harmony/reanimated/src/main/ets/AnimationManager.ts +60 -60
  217. package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +51 -51
  218. package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +25 -25
  219. package/harmony/reanimated/src/main/module.json5 +12 -12
  220. package/harmony/reanimated/src/main/resources/base/element/color.json +7 -7
  221. package/harmony/reanimated/src/main/resources/base/element/string.json +15 -15
  222. package/harmony/reanimated/src/main/resources/base/profile/main_pages.json +5 -5
  223. package/harmony/reanimated/src/main/resources/en_US/element/string.json +15 -15
  224. package/harmony/reanimated/src/main/resources/zh_CN/element/string.json +15 -15
  225. package/harmony/reanimated/ts.ts +6 -6
  226. package/harmony/reanimated.har +0 -0
  227. package/package.json +70 -68
  228. package/scripts/deploy.js +191 -191
  229. package/scripts/set-reanimated-version.js +37 -37
  230. package/scripts/update-version.js +119 -119
  231. package/scripts/validate-react-native-version.js +46 -46
  232. package/scripts/validate-worklets-build.js +17 -17
  233. package/scripts/validate-worklets-version.js +84 -79
  234. package/scripts/worklets-version.json +4 -4
  235. package/src/index.ts +9 -9
@@ -1,308 +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
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