@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,340 +1,340 @@
1
- #include <reanimated/CSS/registries/CSSAnimationsRegistry.h>
2
-
3
- #include <memory>
4
- #include <string>
5
- #include <unordered_map>
6
- #include <utility>
7
- #include <vector>
8
-
9
- namespace reanimated::css {
10
-
11
- bool CSSAnimationsRegistry::isEmpty() const {
12
- // The registry is empty if has no registered animations and no updates
13
- // stored in the updates registry
14
- return UpdatesRegistry::isEmpty() && registry_.empty();
15
- }
16
-
17
- bool CSSAnimationsRegistry::hasUpdates() const {
18
- return !runningAnimationIndicesMap_.empty() || !delayedAnimationsManager_.empty() || !animationsToRevertMap_.empty();
19
- }
20
-
21
- void CSSAnimationsRegistry::apply(
22
- jsi::Runtime &rt,
23
- const std::shared_ptr<const ShadowNode> &shadowNode,
24
- const std::optional<std::vector<std::string>> &animationNames,
25
- const CSSAnimationsMap &newAnimations,
26
- const CSSAnimationSettingsUpdatesMap &settingsUpdates,
27
- double timestamp) {
28
- auto animationsVector = buildAnimationsVector(rt, shadowNode, animationNames, newAnimations);
29
-
30
- const auto viewTag = shadowNode->getTag();
31
- if (animationsVector.empty()) {
32
- remove(viewTag);
33
- return;
34
- }
35
-
36
- runningAnimationIndicesMap_[viewTag].clear();
37
-
38
- std::vector<size_t> updatedIndices;
39
- for (const auto &[index, _] : newAnimations) {
40
- updatedIndices.push_back(index);
41
- }
42
- for (const auto &[index, _] : settingsUpdates) {
43
- updatedIndices.push_back(index);
44
- }
45
-
46
- updateAnimationSettings(animationsVector, settingsUpdates, timestamp);
47
- for (size_t i = 0; i < animationsVector.size(); ++i) {
48
- scheduleOrActivateAnimation(i, animationsVector[i], timestamp);
49
- }
50
-
51
- auto animationToIndexMap = buildAnimationToIndexMap(animationsVector);
52
- registry_.erase(viewTag);
53
- registry_.emplace(viewTag, RegistryEntry{std::move(animationsVector), std::move(animationToIndexMap)});
54
-
55
- updateViewAnimations(viewTag, updatedIndices, timestamp, false);
56
- applyViewAnimationsStyle(viewTag, timestamp);
57
- }
58
-
59
- void CSSAnimationsRegistry::remove(const Tag viewTag) {
60
- removeViewAnimations(viewTag);
61
- removeFromUpdatesRegistry(viewTag);
62
- registry_.erase(viewTag);
63
- }
64
-
65
- void CSSAnimationsRegistry::update(const double timestamp) {
66
- // Activate all delayed animations that should start now
67
- activateDelayedAnimations(timestamp);
68
- // Update styles in the registry for views which animations were reverted
69
- handleAnimationsToRevert(timestamp);
70
-
71
- // Iterate over active animations and update them
72
- for (auto it = runningAnimationIndicesMap_.begin(); it != runningAnimationIndicesMap_.end();) {
73
- const auto viewTag = it->first;
74
- const std::vector<size_t> animationIndices = {it->second.begin(), it->second.end()};
75
- updateViewAnimations(viewTag, animationIndices, timestamp, true);
76
-
77
- if (runningAnimationIndicesMap_[viewTag].empty()) {
78
- it = runningAnimationIndicesMap_.erase(it);
79
- } else {
80
- ++it;
81
- }
82
- }
83
- }
84
-
85
- CSSAnimationsVector CSSAnimationsRegistry::buildAnimationsVector(
86
- jsi::Runtime &rt,
87
- const std::shared_ptr<const ShadowNode> &shadowNode,
88
- const std::optional<std::vector<std::string>> &animationNames,
89
- const std::optional<CSSAnimationsMap> &newAnimations) const {
90
- const auto registryIt = registry_.find(shadowNode->getTag());
91
-
92
- // If animationNames has no value, that means no animations were added,
93
- // removed or reordered, so we can return the current animations vector from
94
- // the registry
95
- if (!animationNames.has_value()) {
96
- if (registryIt != registry_.end()) {
97
- return registryIt->second.animationsVector;
98
- }
99
- }
100
-
101
- CSSAnimationsVector animationsVector;
102
- const auto &animationNamesVector = animationNames.value();
103
- const auto animationNamesSize = animationNamesVector.size();
104
- animationsVector.reserve(animationNamesSize);
105
-
106
- std::unordered_map<std::string, CSSAnimationsVector> oldAnimationsMap;
107
- CSSAnimationsMap emptyAnimationsMap;
108
- const auto &newAnimationsMap = newAnimations.value_or(emptyAnimationsMap);
109
-
110
- if (registryIt != registry_.end()) {
111
- const auto &oldAnimations = registryIt->second.animationsVector;
112
-
113
- // Fill the map while maintaining reverse order (for quick pop from the end)
114
- for (auto it = oldAnimations.rbegin(); it != oldAnimations.rend(); ++it) {
115
- oldAnimationsMap[(*it)->getName()].emplace_back(*it);
116
- }
117
- }
118
-
119
- for (size_t i = 0; i < animationNamesSize; ++i) {
120
- const auto &newAnimationIt = newAnimationsMap.find(i);
121
- if (newAnimationIt != newAnimationsMap.end()) {
122
- animationsVector.emplace_back(newAnimationIt->second);
123
- continue;
124
- }
125
-
126
- const auto &name = animationNamesVector[i];
127
- const auto &oldAnimationIt = oldAnimationsMap.find(name);
128
-
129
- if (oldAnimationIt == oldAnimationsMap.end()) {
130
- throw std::runtime_error(
131
- "[Reanimated] There is no animation with name " + name + " available to use at index " + std::to_string(i));
132
- }
133
-
134
- animationsVector.emplace_back(oldAnimationIt->second.back());
135
- oldAnimationIt->second.pop_back();
136
-
137
- if (oldAnimationIt->second.empty()) {
138
- oldAnimationsMap.erase(oldAnimationIt);
139
- }
140
- }
141
-
142
- return animationsVector;
143
- }
144
-
145
- CSSAnimationsRegistry::AnimationToIndexMap CSSAnimationsRegistry::buildAnimationToIndexMap(
146
- const CSSAnimationsVector &animationsVector) const {
147
- AnimationToIndexMap animationToIndexMap;
148
-
149
- for (size_t i = 0; i < animationsVector.size(); ++i) {
150
- animationToIndexMap[animationsVector[i]] = i;
151
- }
152
-
153
- return animationToIndexMap;
154
- }
155
-
156
- void CSSAnimationsRegistry::updateAnimationSettings(
157
- const CSSAnimationsVector &animationsVector,
158
- const CSSAnimationSettingsUpdatesMap &settingsUpdates,
159
- const double timestamp) {
160
- for (size_t i = 0; i < animationsVector.size(); ++i) {
161
- const auto &animation = animationsVector[i];
162
- const auto it = settingsUpdates.find(i);
163
- if (it != settingsUpdates.end()) {
164
- animation->updateSettings(it->second, timestamp);
165
- }
166
- }
167
- }
168
-
169
- void CSSAnimationsRegistry::updateViewAnimations(
170
- const Tag viewTag,
171
- const std::vector<size_t> &animationIndices,
172
- const double timestamp,
173
- const bool addToBatch) {
174
- folly::dynamic result = folly::dynamic::object;
175
- std::shared_ptr<const ShadowNode> shadowNode = nullptr;
176
- bool hasUpdates = false;
177
-
178
- for (const auto animationIndex : animationIndices) {
179
- const auto &animation = registry_[viewTag].animationsVector[animationIndex];
180
- if (!shadowNode) {
181
- shadowNode = animation->getShadowNode();
182
- }
183
- if (animation->getState(timestamp) == AnimationProgressState::Pending) {
184
- animation->run(timestamp);
185
- }
186
-
187
- bool updatesAddedToBatch = false;
188
- const auto updates = animation->update(timestamp);
189
- const auto newState = animation->getState(timestamp);
190
-
191
- if (newState == AnimationProgressState::Finished) {
192
- // Revert changes applied during animation if there is no forwards fill
193
- // mode
194
- if (addToBatch && !animation->hasForwardsFillMode()) {
195
- // We also have to manually commit style values
196
- // reverting the changes applied by the animation.
197
- hasUpdates = addStyleUpdates(result, animation->getResetStyle(), false) || hasUpdates;
198
- updatesAddedToBatch = true;
199
- // We want to remove style changes applied by the animation that is
200
- // finished and has no forwards fill mode. We cannot simply remove
201
- // properties from the style in the registry as it may be overridden
202
- // by the next animation. Instead, we are creating the new style
203
- // object without reverted (finished without forwards fill mode)
204
- // animations.
205
- animationsToRevertMap_[viewTag].insert(animationIndex);
206
- }
207
- }
208
-
209
- if (addToBatch && !updatesAddedToBatch) {
210
- hasUpdates = addStyleUpdates(result, updates, true) || hasUpdates;
211
- }
212
- if (newState != AnimationProgressState::Running) {
213
- runningAnimationIndicesMap_[viewTag].erase(animationIndex);
214
- }
215
- }
216
-
217
- if (hasUpdates) {
218
- addUpdatesToBatch(shadowNode, result);
219
- }
220
- }
221
-
222
- void CSSAnimationsRegistry::scheduleOrActivateAnimation(
223
- const size_t animationIndex,
224
- const std::shared_ptr<CSSAnimation> &animation,
225
- const double timestamp) {
226
- // Remove the animation from delayed (if it is already added to
227
- // delayed animations)
228
- delayedAnimationsManager_.remove(animation);
229
-
230
- const auto startTimestamp = animation->getStartTimestamp(timestamp);
231
-
232
- if (startTimestamp > timestamp) {
233
- // If the animation is delayed, schedule it for activation
234
- // (Only if it isn't paused)
235
- if (animation->getState(timestamp) != AnimationProgressState::Paused) {
236
- delayedAnimationsManager_.add(startTimestamp, animation);
237
- }
238
- } else {
239
- const auto viewTag = animation->getShadowNode()->getTag();
240
- runningAnimationIndicesMap_[viewTag].insert(animationIndex);
241
- }
242
- }
243
-
244
- void CSSAnimationsRegistry::removeViewAnimations(const Tag viewTag) {
245
- const auto it = registry_.find(viewTag);
246
- if (it == registry_.end()) {
247
- return;
248
- }
249
-
250
- for (const auto &animation : it->second.animationsVector) {
251
- delayedAnimationsManager_.remove(animation);
252
- }
253
- runningAnimationIndicesMap_.erase(viewTag);
254
- }
255
-
256
- void CSSAnimationsRegistry::applyViewAnimationsStyle(const Tag viewTag, const double timestamp) {
257
- const auto it = registry_.find(viewTag);
258
- // Remove the style from the registry if there are no animations for the view
259
- if (it == registry_.end() || it->second.animationsVector.empty()) {
260
- removeFromUpdatesRegistry(viewTag);
261
- return;
262
- }
263
-
264
- folly::dynamic updatedStyle = folly::dynamic::object;
265
- std::shared_ptr<const ShadowNode> shadowNode = nullptr;
266
-
267
- for (const auto &animation : it->second.animationsVector) {
268
- const auto startTimestamp = animation->getStartTimestamp(timestamp);
269
-
270
- folly::dynamic style;
271
- const auto &currentState = animation->getState(timestamp);
272
- if (startTimestamp > timestamp && animation->hasBackwardsFillMode()) {
273
- style = animation->getBackwardsFillStyle();
274
- } else if (
275
- currentState == AnimationProgressState::Running ||
276
- // Animation is paused after start (was running before)
277
- (currentState == AnimationProgressState::Paused && timestamp >= animation->getStartTimestamp(timestamp)) ||
278
- // Animation is finished and has fill forwards fill mode
279
- (currentState == AnimationProgressState::Finished && animation->hasForwardsFillMode())) {
280
- style = animation->getCurrentInterpolationStyle();
281
- }
282
-
283
- if (!shadowNode) {
284
- shadowNode = animation->getShadowNode();
285
- }
286
- if (style.isObject()) {
287
- updatedStyle.update(style);
288
- }
289
- }
290
-
291
- setInUpdatesRegistry(shadowNode, updatedStyle);
292
- }
293
-
294
- void CSSAnimationsRegistry::activateDelayedAnimations(const double timestamp) {
295
- while (!delayedAnimationsManager_.empty() && delayedAnimationsManager_.top().timestamp <= timestamp) {
296
- const auto [_, animation] = delayedAnimationsManager_.pop();
297
- const auto viewTag = animation->getShadowNode()->getTag();
298
-
299
- // Add only these animations which weren't removed in the meantime
300
- if (registry_.find(viewTag) == registry_.end()) {
301
- continue;
302
- }
303
-
304
- const auto &animationToIndexMap = registry_[viewTag].animationToIndexMap;
305
- if (animationToIndexMap.find(animation) == animationToIndexMap.end()) {
306
- continue;
307
- }
308
-
309
- const auto animationIndex = animationToIndexMap.at(animation);
310
- runningAnimationIndicesMap_[viewTag].insert(animationIndex);
311
- }
312
- }
313
-
314
- void CSSAnimationsRegistry::handleAnimationsToRevert(const double timestamp) {
315
- for (const auto &[viewTag, _] : animationsToRevertMap_) {
316
- applyViewAnimationsStyle(viewTag, timestamp);
317
- }
318
- animationsToRevertMap_.clear();
319
- }
320
-
321
- bool CSSAnimationsRegistry::addStyleUpdates(
322
- folly::dynamic &target,
323
- const folly::dynamic &updates,
324
- bool shouldOverride) {
325
- if (!updates.isObject()) {
326
- return false;
327
- }
328
-
329
- bool hasUpdates = false;
330
- for (const auto &[propertyName, propertyValue] : updates.items()) {
331
- if (shouldOverride || !target.count(propertyName) || target[propertyName].isNull()) {
332
- target[propertyName] = propertyValue;
333
- hasUpdates = true;
334
- }
335
- }
336
-
337
- return hasUpdates;
338
- }
339
-
340
- } // namespace reanimated::css
1
+ #include <reanimated/CSS/registries/CSSAnimationsRegistry.h>
2
+
3
+ #include <memory>
4
+ #include <string>
5
+ #include <unordered_map>
6
+ #include <utility>
7
+ #include <vector>
8
+
9
+ namespace reanimated::css {
10
+
11
+ bool CSSAnimationsRegistry::isEmpty() const {
12
+ // The registry is empty if has no registered animations and no updates
13
+ // stored in the updates registry
14
+ return UpdatesRegistry::isEmpty() && registry_.empty();
15
+ }
16
+
17
+ bool CSSAnimationsRegistry::hasUpdates() const {
18
+ return !runningAnimationIndicesMap_.empty() || !delayedAnimationsManager_.empty() || !animationsToRevertMap_.empty();
19
+ }
20
+
21
+ void CSSAnimationsRegistry::apply(
22
+ jsi::Runtime &rt,
23
+ const std::shared_ptr<const ShadowNode> &shadowNode,
24
+ const std::optional<std::vector<std::string>> &animationNames,
25
+ const CSSAnimationsMap &newAnimations,
26
+ const CSSAnimationSettingsUpdatesMap &settingsUpdates,
27
+ double timestamp) {
28
+ auto animationsVector = buildAnimationsVector(rt, shadowNode, animationNames, newAnimations);
29
+
30
+ const auto viewTag = shadowNode->getTag();
31
+ if (animationsVector.empty()) {
32
+ remove(viewTag);
33
+ return;
34
+ }
35
+
36
+ runningAnimationIndicesMap_[viewTag].clear();
37
+
38
+ std::vector<size_t> updatedIndices;
39
+ for (const auto &[index, _] : newAnimations) {
40
+ updatedIndices.push_back(index);
41
+ }
42
+ for (const auto &[index, _] : settingsUpdates) {
43
+ updatedIndices.push_back(index);
44
+ }
45
+
46
+ updateAnimationSettings(animationsVector, settingsUpdates, timestamp);
47
+ for (size_t i = 0; i < animationsVector.size(); ++i) {
48
+ scheduleOrActivateAnimation(i, animationsVector[i], timestamp);
49
+ }
50
+
51
+ auto animationToIndexMap = buildAnimationToIndexMap(animationsVector);
52
+ registry_.erase(viewTag);
53
+ registry_.emplace(viewTag, RegistryEntry{std::move(animationsVector), std::move(animationToIndexMap)});
54
+
55
+ updateViewAnimations(viewTag, updatedIndices, timestamp, false);
56
+ applyViewAnimationsStyle(viewTag, timestamp);
57
+ }
58
+
59
+ void CSSAnimationsRegistry::remove(const Tag viewTag) {
60
+ removeViewAnimations(viewTag);
61
+ removeFromUpdatesRegistry(viewTag);
62
+ registry_.erase(viewTag);
63
+ }
64
+
65
+ void CSSAnimationsRegistry::update(const double timestamp) {
66
+ // Activate all delayed animations that should start now
67
+ activateDelayedAnimations(timestamp);
68
+ // Update styles in the registry for views which animations were reverted
69
+ handleAnimationsToRevert(timestamp);
70
+
71
+ // Iterate over active animations and update them
72
+ for (auto it = runningAnimationIndicesMap_.begin(); it != runningAnimationIndicesMap_.end();) {
73
+ const auto viewTag = it->first;
74
+ const std::vector<size_t> animationIndices = {it->second.begin(), it->second.end()};
75
+ updateViewAnimations(viewTag, animationIndices, timestamp, true);
76
+
77
+ if (runningAnimationIndicesMap_[viewTag].empty()) {
78
+ it = runningAnimationIndicesMap_.erase(it);
79
+ } else {
80
+ ++it;
81
+ }
82
+ }
83
+ }
84
+
85
+ CSSAnimationsVector CSSAnimationsRegistry::buildAnimationsVector(
86
+ jsi::Runtime &rt,
87
+ const std::shared_ptr<const ShadowNode> &shadowNode,
88
+ const std::optional<std::vector<std::string>> &animationNames,
89
+ const std::optional<CSSAnimationsMap> &newAnimations) const {
90
+ const auto registryIt = registry_.find(shadowNode->getTag());
91
+
92
+ // If animationNames has no value, that means no animations were added,
93
+ // removed or reordered, so we can return the current animations vector from
94
+ // the registry
95
+ if (!animationNames.has_value()) {
96
+ if (registryIt != registry_.end()) {
97
+ return registryIt->second.animationsVector;
98
+ }
99
+ }
100
+
101
+ CSSAnimationsVector animationsVector;
102
+ const auto &animationNamesVector = animationNames.value();
103
+ const auto animationNamesSize = animationNamesVector.size();
104
+ animationsVector.reserve(animationNamesSize);
105
+
106
+ std::unordered_map<std::string, CSSAnimationsVector> oldAnimationsMap;
107
+ CSSAnimationsMap emptyAnimationsMap;
108
+ const auto &newAnimationsMap = newAnimations.value_or(emptyAnimationsMap);
109
+
110
+ if (registryIt != registry_.end()) {
111
+ const auto &oldAnimations = registryIt->second.animationsVector;
112
+
113
+ // Fill the map while maintaining reverse order (for quick pop from the end)
114
+ for (auto it = oldAnimations.rbegin(); it != oldAnimations.rend(); ++it) {
115
+ oldAnimationsMap[(*it)->getName()].emplace_back(*it);
116
+ }
117
+ }
118
+
119
+ for (size_t i = 0; i < animationNamesSize; ++i) {
120
+ const auto &newAnimationIt = newAnimationsMap.find(i);
121
+ if (newAnimationIt != newAnimationsMap.end()) {
122
+ animationsVector.emplace_back(newAnimationIt->second);
123
+ continue;
124
+ }
125
+
126
+ const auto &name = animationNamesVector[i];
127
+ const auto &oldAnimationIt = oldAnimationsMap.find(name);
128
+
129
+ if (oldAnimationIt == oldAnimationsMap.end()) {
130
+ throw std::runtime_error(
131
+ "[Reanimated] There is no animation with name " + name + " available to use at index " + std::to_string(i));
132
+ }
133
+
134
+ animationsVector.emplace_back(oldAnimationIt->second.back());
135
+ oldAnimationIt->second.pop_back();
136
+
137
+ if (oldAnimationIt->second.empty()) {
138
+ oldAnimationsMap.erase(oldAnimationIt);
139
+ }
140
+ }
141
+
142
+ return animationsVector;
143
+ }
144
+
145
+ CSSAnimationsRegistry::AnimationToIndexMap CSSAnimationsRegistry::buildAnimationToIndexMap(
146
+ const CSSAnimationsVector &animationsVector) const {
147
+ AnimationToIndexMap animationToIndexMap;
148
+
149
+ for (size_t i = 0; i < animationsVector.size(); ++i) {
150
+ animationToIndexMap[animationsVector[i]] = i;
151
+ }
152
+
153
+ return animationToIndexMap;
154
+ }
155
+
156
+ void CSSAnimationsRegistry::updateAnimationSettings(
157
+ const CSSAnimationsVector &animationsVector,
158
+ const CSSAnimationSettingsUpdatesMap &settingsUpdates,
159
+ const double timestamp) {
160
+ for (size_t i = 0; i < animationsVector.size(); ++i) {
161
+ const auto &animation = animationsVector[i];
162
+ const auto it = settingsUpdates.find(i);
163
+ if (it != settingsUpdates.end()) {
164
+ animation->updateSettings(it->second, timestamp);
165
+ }
166
+ }
167
+ }
168
+
169
+ void CSSAnimationsRegistry::updateViewAnimations(
170
+ const Tag viewTag,
171
+ const std::vector<size_t> &animationIndices,
172
+ const double timestamp,
173
+ const bool addToBatch) {
174
+ folly::dynamic result = folly::dynamic::object;
175
+ std::shared_ptr<const ShadowNode> shadowNode = nullptr;
176
+ bool hasUpdates = false;
177
+
178
+ for (const auto animationIndex : animationIndices) {
179
+ const auto &animation = registry_[viewTag].animationsVector[animationIndex];
180
+ if (!shadowNode) {
181
+ shadowNode = animation->getShadowNode();
182
+ }
183
+ if (animation->getState(timestamp) == AnimationProgressState::Pending) {
184
+ animation->run(timestamp);
185
+ }
186
+
187
+ bool updatesAddedToBatch = false;
188
+ const auto updates = animation->update(timestamp);
189
+ const auto newState = animation->getState(timestamp);
190
+
191
+ if (newState == AnimationProgressState::Finished) {
192
+ // Revert changes applied during animation if there is no forwards fill
193
+ // mode
194
+ if (addToBatch && !animation->hasForwardsFillMode()) {
195
+ // We also have to manually commit style values
196
+ // reverting the changes applied by the animation.
197
+ hasUpdates = addStyleUpdates(result, animation->getResetStyle(), false) || hasUpdates;
198
+ updatesAddedToBatch = true;
199
+ // We want to remove style changes applied by the animation that is
200
+ // finished and has no forwards fill mode. We cannot simply remove
201
+ // properties from the style in the registry as it may be overridden
202
+ // by the next animation. Instead, we are creating the new style
203
+ // object without reverted (finished without forwards fill mode)
204
+ // animations.
205
+ animationsToRevertMap_[viewTag].insert(animationIndex);
206
+ }
207
+ }
208
+
209
+ if (addToBatch && !updatesAddedToBatch) {
210
+ hasUpdates = addStyleUpdates(result, updates, true) || hasUpdates;
211
+ }
212
+ if (newState != AnimationProgressState::Running) {
213
+ runningAnimationIndicesMap_[viewTag].erase(animationIndex);
214
+ }
215
+ }
216
+
217
+ if (hasUpdates) {
218
+ addUpdatesToBatch(shadowNode, result);
219
+ }
220
+ }
221
+
222
+ void CSSAnimationsRegistry::scheduleOrActivateAnimation(
223
+ const size_t animationIndex,
224
+ const std::shared_ptr<CSSAnimation> &animation,
225
+ const double timestamp) {
226
+ // Remove the animation from delayed (if it is already added to
227
+ // delayed animations)
228
+ delayedAnimationsManager_.remove(animation);
229
+
230
+ const auto startTimestamp = animation->getStartTimestamp(timestamp);
231
+
232
+ if (startTimestamp > timestamp) {
233
+ // If the animation is delayed, schedule it for activation
234
+ // (Only if it isn't paused)
235
+ if (animation->getState(timestamp) != AnimationProgressState::Paused) {
236
+ delayedAnimationsManager_.add(startTimestamp, animation);
237
+ }
238
+ } else {
239
+ const auto viewTag = animation->getShadowNode()->getTag();
240
+ runningAnimationIndicesMap_[viewTag].insert(animationIndex);
241
+ }
242
+ }
243
+
244
+ void CSSAnimationsRegistry::removeViewAnimations(const Tag viewTag) {
245
+ const auto it = registry_.find(viewTag);
246
+ if (it == registry_.end()) {
247
+ return;
248
+ }
249
+
250
+ for (const auto &animation : it->second.animationsVector) {
251
+ delayedAnimationsManager_.remove(animation);
252
+ }
253
+ runningAnimationIndicesMap_.erase(viewTag);
254
+ }
255
+
256
+ void CSSAnimationsRegistry::applyViewAnimationsStyle(const Tag viewTag, const double timestamp) {
257
+ const auto it = registry_.find(viewTag);
258
+ // Remove the style from the registry if there are no animations for the view
259
+ if (it == registry_.end() || it->second.animationsVector.empty()) {
260
+ removeFromUpdatesRegistry(viewTag);
261
+ return;
262
+ }
263
+
264
+ folly::dynamic updatedStyle = folly::dynamic::object;
265
+ std::shared_ptr<const ShadowNode> shadowNode = nullptr;
266
+
267
+ for (const auto &animation : it->second.animationsVector) {
268
+ const auto startTimestamp = animation->getStartTimestamp(timestamp);
269
+
270
+ folly::dynamic style;
271
+ const auto &currentState = animation->getState(timestamp);
272
+ if (startTimestamp > timestamp && animation->hasBackwardsFillMode()) {
273
+ style = animation->getBackwardsFillStyle();
274
+ } else if (
275
+ currentState == AnimationProgressState::Running ||
276
+ // Animation is paused after start (was running before)
277
+ (currentState == AnimationProgressState::Paused && timestamp >= animation->getStartTimestamp(timestamp)) ||
278
+ // Animation is finished and has fill forwards fill mode
279
+ (currentState == AnimationProgressState::Finished && animation->hasForwardsFillMode())) {
280
+ style = animation->getCurrentInterpolationStyle();
281
+ }
282
+
283
+ if (!shadowNode) {
284
+ shadowNode = animation->getShadowNode();
285
+ }
286
+ if (style.isObject()) {
287
+ updatedStyle.update(style);
288
+ }
289
+ }
290
+
291
+ setInUpdatesRegistry(shadowNode, updatedStyle);
292
+ }
293
+
294
+ void CSSAnimationsRegistry::activateDelayedAnimations(const double timestamp) {
295
+ while (!delayedAnimationsManager_.empty() && delayedAnimationsManager_.top().timestamp <= timestamp) {
296
+ const auto [_, animation] = delayedAnimationsManager_.pop();
297
+ const auto viewTag = animation->getShadowNode()->getTag();
298
+
299
+ // Add only these animations which weren't removed in the meantime
300
+ if (registry_.find(viewTag) == registry_.end()) {
301
+ continue;
302
+ }
303
+
304
+ const auto &animationToIndexMap = registry_[viewTag].animationToIndexMap;
305
+ if (animationToIndexMap.find(animation) == animationToIndexMap.end()) {
306
+ continue;
307
+ }
308
+
309
+ const auto animationIndex = animationToIndexMap.at(animation);
310
+ runningAnimationIndicesMap_[viewTag].insert(animationIndex);
311
+ }
312
+ }
313
+
314
+ void CSSAnimationsRegistry::handleAnimationsToRevert(const double timestamp) {
315
+ for (const auto &[viewTag, _] : animationsToRevertMap_) {
316
+ applyViewAnimationsStyle(viewTag, timestamp);
317
+ }
318
+ animationsToRevertMap_.clear();
319
+ }
320
+
321
+ bool CSSAnimationsRegistry::addStyleUpdates(
322
+ folly::dynamic &target,
323
+ const folly::dynamic &updates,
324
+ bool shouldOverride) {
325
+ if (!updates.isObject()) {
326
+ return false;
327
+ }
328
+
329
+ bool hasUpdates = false;
330
+ for (const auto &[propertyName, propertyValue] : updates.items()) {
331
+ if (shouldOverride || !target.count(propertyName) || target[propertyName].isNull()) {
332
+ target[propertyName] = propertyValue;
333
+ hasUpdates = true;
334
+ }
335
+ }
336
+
337
+ return hasUpdates;
338
+ }
339
+
340
+ } // namespace reanimated::css