@react-native-ohos/react-native-reanimated 3.18.2-rc.2 → 4.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/compatibility.json +161 -0
  2. package/harmony/reanimated/BuildProfile.ets +16 -16
  3. package/harmony/reanimated/build-profile.json5 +18 -11
  4. package/harmony/reanimated/oh-package.json5 +12 -11
  5. package/harmony/reanimated/src/main/cpp/CMakeLists.txt +31 -40
  6. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +81 -86
  7. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +46 -47
  8. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -0
  9. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -0
  10. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -0
  11. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -0
  12. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -0
  13. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -0
  14. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -0
  15. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -0
  16. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -0
  17. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -0
  18. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -0
  19. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -0
  20. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -0
  21. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -0
  22. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -0
  23. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -0
  24. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -0
  25. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +93 -0
  26. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -0
  27. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -0
  28. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -0
  29. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -0
  30. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -0
  31. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -0
  32. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +44 -0
  33. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -0
  34. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -0
  35. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -0
  36. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -0
  37. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -0
  38. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -0
  39. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -0
  40. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -0
  41. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -0
  42. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -0
  43. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -0
  44. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -0
  45. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -0
  46. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -0
  47. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -0
  48. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -0
  49. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -0
  50. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -0
  51. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -0
  52. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -0
  53. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -0
  54. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -0
  55. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -0
  56. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -0
  57. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -0
  58. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -0
  59. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -0
  60. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -0
  61. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -0
  62. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -0
  63. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -0
  64. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -0
  65. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -0
  66. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -0
  67. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -0
  68. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -0
  69. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -0
  70. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -0
  71. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -0
  72. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -0
  73. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -0
  74. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -0
  75. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -0
  76. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -0
  77. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -0
  78. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -0
  79. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -0
  80. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -0
  81. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -0
  82. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -0
  83. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -0
  84. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -0
  85. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -0
  86. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -0
  87. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -0
  88. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -0
  89. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -0
  90. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -0
  91. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -0
  92. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -0
  93. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -0
  94. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -0
  95. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -0
  96. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -0
  97. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -0
  98. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -0
  99. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -0
  100. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -0
  101. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -0
  102. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -0
  103. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -0
  104. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -0
  105. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -0
  106. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -0
  107. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -0
  108. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -0
  109. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -0
  110. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -0
  111. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -0
  112. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -0
  113. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -0
  114. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -0
  115. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -0
  116. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -0
  117. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -0
  118. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -0
  119. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -0
  120. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -0
  121. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -0
  122. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -0
  123. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -0
  124. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -0
  125. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -0
  126. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -0
  127. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -0
  128. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -0
  129. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -0
  130. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -0
  131. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -0
  132. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -0
  133. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -0
  134. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -0
  135. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -0
  136. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -0
  137. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -0
  138. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -0
  139. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -0
  140. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -0
  141. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -0
  142. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -0
  143. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -0
  144. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -0
  145. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -0
  146. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -0
  147. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +110 -0
  148. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -0
  149. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -0
  150. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -0
  151. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -0
  152. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -0
  153. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -0
  154. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -0
  155. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -0
  156. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -0
  157. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +113 -101
  158. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +49 -51
  159. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +46 -49
  160. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +56 -96
  161. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +37 -33
  162. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +104 -95
  163. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +22 -29
  164. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -0
  165. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -0
  166. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -0
  167. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -0
  168. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -0
  169. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -0
  170. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +11 -9
  171. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +137 -232
  172. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +82 -90
  173. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -0
  174. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -0
  175. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -0
  176. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -0
  177. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/{LayoutAnimationsProxy.cpp → LayoutAnimationsProxy_Legacy.cpp} +897 -870
  178. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -0
  179. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +31 -91
  180. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +146 -176
  181. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -0
  182. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -0
  183. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -0
  184. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -0
  185. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -0
  186. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +1376 -971
  187. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +228 -252
  188. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +183 -231
  189. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +93 -109
  190. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +54 -56
  191. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +28 -20
  192. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +58 -70
  193. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +31 -35
  194. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -0
  195. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -0
  196. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +67 -98
  197. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +114 -135
  198. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -0
  199. package/harmony/reanimated/src/main/cpp/Common/cpp/{worklets → reanimated}/Tools/ReanimatedVersion.h +18 -19
  200. package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +60 -85
  201. package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +1 -0
  202. package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +0 -3
  203. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +266 -0
  204. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -0
  205. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +36 -0
  206. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -0
  207. package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +3 -3
  208. package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +5 -1
  209. package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +1 -4
  210. package/harmony/reanimated/src/main/module.json5 +12 -12
  211. package/harmony/reanimated/src/main/resources/base/element/color.json +7 -7
  212. package/harmony/reanimated/src/main/resources/base/element/string.json +15 -15
  213. package/harmony/reanimated/src/main/resources/base/profile/main_pages.json +5 -5
  214. package/harmony/reanimated/src/main/resources/en_US/element/string.json +15 -15
  215. package/harmony/reanimated/src/main/resources/zh_CN/element/string.json +15 -15
  216. package/harmony/reanimated/ts.ts +6 -6
  217. package/harmony/reanimated.har +0 -0
  218. package/package.json +68 -50
  219. package/scripts/deploy.js +191 -0
  220. package/scripts/set-reanimated-version.js +37 -0
  221. package/scripts/update-version.js +119 -0
  222. package/scripts/validate-react-native-version.js +46 -0
  223. package/scripts/validate-worklets-build.js +17 -0
  224. package/scripts/validate-worklets-version.js +79 -0
  225. package/scripts/worklets-version.json +4 -0
  226. package/LICENSE +0 -21
  227. package/README.OpenSource +0 -11
  228. package/README.md +0 -10
  229. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
  230. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
  231. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
  232. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
  233. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
  234. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
  235. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
  236. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
  237. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
  238. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
  239. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
  240. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
  241. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
  242. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
  243. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
  244. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
  245. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
  246. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
  247. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
  248. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
  249. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
  250. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
  251. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
  252. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
  253. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
  254. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
  255. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
  256. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
  257. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
  258. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
  259. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
  260. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
  261. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
  262. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
  263. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
  264. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
  265. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
  266. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
  267. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
  268. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
  269. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
  270. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
  271. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -173
  272. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
  273. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
  274. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -189
  275. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
  276. package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
  277. package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
  278. package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
  279. package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
  280. package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
  281. package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
  282. package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
@@ -0,0 +1,118 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/misc/ViewStylesRepository.h>
4
+
5
+ #include <memory>
6
+ #include <string>
7
+ #include <type_traits>
8
+
9
+ namespace reanimated::css {
10
+
11
+ using namespace facebook;
12
+
13
+ enum class RelativeTo : std::uint8_t {
14
+ Parent,
15
+ Self,
16
+ };
17
+
18
+ struct ValueInterpolationContext {
19
+ const std::shared_ptr<const ShadowNode> &node;
20
+ const double fallbackInterpolateThreshold;
21
+ };
22
+
23
+ struct ResolvableValueInterpolationContext {
24
+ const std::shared_ptr<const ShadowNode> &node;
25
+ const double fallbackInterpolateThreshold;
26
+ const std::shared_ptr<ViewStylesRepository> &viewStylesRepository;
27
+ const std::string &relativeProperty;
28
+ const RelativeTo relativeTo;
29
+ };
30
+
31
+ struct CSSValue {
32
+ // This field should be overridden in discrete value types
33
+ static constexpr bool is_discrete_value = false;
34
+
35
+ virtual ~CSSValue() = default;
36
+
37
+ virtual folly::dynamic toDynamic() const = 0;
38
+ virtual std::string toString() const = 0;
39
+ };
40
+
41
+ // Base for leaf values that can be interpolated without resolution
42
+ template <typename TDerived>
43
+ struct CSSSimpleValue : public CSSValue {
44
+ static constexpr bool is_resolvable_value = false;
45
+
46
+ virtual TDerived interpolate(double progress, const TDerived &to) const = 0;
47
+ virtual bool canInterpolateTo(const TDerived &to) const {
48
+ return true;
49
+ }
50
+ };
51
+
52
+ // Base for leaf values that need resolution before interpolation
53
+ template <typename TDerived, typename TResolved = TDerived>
54
+ struct CSSResolvableValue : public CSSValue {
55
+ static constexpr bool is_resolvable_value = true;
56
+
57
+ virtual TDerived interpolate(double progress, const TDerived &to, const ResolvableValueInterpolationContext &context)
58
+ const = 0;
59
+ virtual std::optional<TResolved> resolve(const ResolvableValueInterpolationContext &context) const = 0;
60
+ virtual bool canInterpolateTo(const TDerived &to) const {
61
+ return true;
62
+ }
63
+ };
64
+
65
+ // Checks if a type is a resolvable value that needs resolution before
66
+ // interpolation
67
+ //template <typename TCSSValue>
68
+ //concept Resolvable = requires {
69
+ // { TCSSValue::is_resolvable_value } -> std::convertible_to<bool>;
70
+ // requires TCSSValue::is_resolvable_value == true;
71
+ //};
72
+ //TODO
73
+ namespace detail {
74
+ template <typename T>
75
+ auto test_resolvable(int) -> std::enable_if_t<
76
+ std::is_convertible_v<decltype(T::is_resolvable_value), bool> &&
77
+ T::is_resolvable_value == true,
78
+ std::true_type
79
+ >;
80
+ template <typename>
81
+ auto test_resolvable(...) -> std::false_type;
82
+ }
83
+
84
+ template <typename TCSSValue>
85
+ constexpr bool Resolvable = decltype(detail::test_resolvable<TCSSValue>(0))::value;
86
+
87
+
88
+
89
+ // Checks if a type is a discrete value
90
+ //template <typename TCSSValue>
91
+ //concept Discrete = requires {
92
+ // { TCSSValue::is_discrete_value } -> std::convertible_to<bool>;
93
+ // requires TCSSValue::is_discrete_value == true;
94
+ //};
95
+ //TODO
96
+ namespace detail {
97
+ template <typename T>
98
+ auto test_discrete(int) -> std::enable_if_t<
99
+ std::is_convertible_v<decltype(T::is_discrete_value), bool> &&
100
+ T::is_discrete_value == true,
101
+ std::true_type
102
+ >;
103
+ template <typename>
104
+ auto test_discrete(...) -> std::false_type;
105
+ }
106
+
107
+ template <typename TCSSValue>
108
+ constexpr bool Discrete = decltype(detail::test_discrete<TCSSValue>(0))::value;
109
+
110
+
111
+ // Check if a type is derived from CSSValue
112
+ //template <typename TCSSValue>
113
+ //concept CSSValueDerived = std::is_base_of_v<CSSValue, TCSSValue>;
114
+ //TODO
115
+ template<typename TCSSValue>
116
+ constexpr bool CSSValueDerived = std::is_base_of_v<CSSValue, TCSSValue>;
117
+
118
+ } // namespace reanimated::css
@@ -0,0 +1,174 @@
1
+ #include <reanimated/CSS/common/values/CSSAngle.h>
2
+ #include <reanimated/CSS/common/values/CSSBoolean.h>
3
+ #include <reanimated/CSS/common/values/CSSColor.h>
4
+ #include <reanimated/CSS/common/values/CSSDiscreteArray.h>
5
+ #include <reanimated/CSS/common/values/CSSKeyword.h>
6
+ #include <reanimated/CSS/common/values/CSSLength.h>
7
+ #include <reanimated/CSS/common/values/CSSNumber.h>
8
+ #include <reanimated/CSS/common/values/CSSValueVariant.h>
9
+ #include <reanimated/CSS/common/values/complex/CSSBoxShadow.h>
10
+ #include <reanimated/CSS/svg/values/SVGBrush.h>
11
+ #include <reanimated/CSS/svg/values/SVGLength.h>
12
+ #include <reanimated/CSS/svg/values/SVGStrokeDashArray.h>
13
+
14
+ #include <worklets/Tools/JSISerializer.h>
15
+
16
+ #include <string>
17
+ #include <utility>
18
+ #include <vector>
19
+
20
+ namespace reanimated::css {
21
+
22
+ template <typename... AllowedTypes>
23
+ CSSValueVariant<AllowedTypes...>::CSSValueVariant(std::variant<AllowedTypes...> &&storage)
24
+ : storage_(std::move(storage)) {}
25
+
26
+ template <typename... AllowedTypes>
27
+ CSSValueVariant<AllowedTypes...>::CSSValueVariant(jsi::Runtime &rt, const jsi::Value &jsiValue) {
28
+ auto tryOne = [&]<typename TCSSValue>() -> bool {
29
+ // We have to check in a runtime if the type can be constructed from the
30
+ // provided jsi::Value. The first match will be used to construct the
31
+ // CSS value.
32
+ if (!TCSSValue::canConstruct(rt, jsiValue)) {
33
+ return false;
34
+ }
35
+ storage_ = TCSSValue(rt, jsiValue);
36
+ return true;
37
+ };
38
+
39
+ // Try constructing with each allowed type until one succeeds
40
+ if (!(tryOne.template operator()<AllowedTypes>() || ...)) {
41
+ throw std::runtime_error(
42
+ "[Reanimated] No compatible type found for construction from: " + worklets::stringifyJSIValue(rt, jsiValue));
43
+ }
44
+ }
45
+
46
+ template <typename... AllowedTypes>
47
+ CSSValueVariant<AllowedTypes...>::CSSValueVariant(const folly::dynamic &value) {
48
+ auto tryOne = [&]<typename TCSSValue>() -> bool {
49
+ // We have to check in a runtime if the type can be constructed from the
50
+ // provided folly::dynamic. The first match will be used to construct the
51
+ // CSS value.
52
+ if (!TCSSValue::canConstruct(value)) {
53
+ return false;
54
+ }
55
+ storage_ = TCSSValue(value);
56
+ return true;
57
+ };
58
+
59
+ // Try constructing with each allowed type until one succeeds
60
+ if (!(tryOne.template operator()<AllowedTypes>() || ...)) {
61
+ throw std::runtime_error("[Reanimated] No compatible type found for construction from: " + folly::toJson(value));
62
+ }
63
+ }
64
+
65
+ template <typename... AllowedTypes>
66
+ bool CSSValueVariant<AllowedTypes...>::operator==(const CSSValueVariant &other) const {
67
+ if (storage_.index() != other.storage_.index()) {
68
+ return false;
69
+ }
70
+
71
+ return std::visit(
72
+ [](const auto &lhs, const auto &rhs) {
73
+ REA_IF_SAME_TYPE(lhs, rhs) {
74
+ return lhs == rhs;
75
+ }
76
+ return false;
77
+ },
78
+ storage_,
79
+ other.storage_);
80
+ }
81
+
82
+ template <typename... AllowedTypes>
83
+ bool CSSValueVariant<AllowedTypes...>::operator==(const CSSValue &other) const {
84
+ if (auto *o = dynamic_cast<const CSSValueVariant *>(&other)) {
85
+ return *this == *o;
86
+ }
87
+ return false;
88
+ }
89
+
90
+ template <typename... AllowedTypes>
91
+ folly::dynamic CSSValueVariant<AllowedTypes...>::toDynamic() const {
92
+ return std::visit([](const auto &v) { return v.toDynamic(); }, storage_);
93
+ }
94
+
95
+ template <typename... AllowedTypes>
96
+ std::string CSSValueVariant<AllowedTypes...>::toString() const {
97
+ return std::visit([](const auto &v) { return v.toString(); }, storage_);
98
+ }
99
+
100
+ template <typename... AllowedTypes>
101
+ CSSValueVariant<AllowedTypes...> CSSValueVariant<AllowedTypes...>::interpolate(
102
+ const double progress,
103
+ const CSSValueVariant &to,
104
+ const ValueInterpolationContext &context) const {
105
+ if (storage_.index() != to.storage_.index()) {
106
+ return fallbackInterpolate(progress, to, context.fallbackInterpolateThreshold);
107
+ }
108
+
109
+ return std::visit(
110
+ [&](const auto &fromValue, const auto &toValue) -> CSSValueVariant {
111
+ REA_IF_SAME_TYPE(fromValue, toValue) {
112
+ if constexpr (Resolvable<L>) {
113
+ throw std::runtime_error("[Reanimated] Resolvable value cannot be interpolated as non-resolvable");
114
+ } else if (fromValue.canInterpolateTo(toValue)) {
115
+ return CSSValueVariant(fromValue.interpolate(progress, toValue));
116
+ }
117
+ }
118
+ return fallbackInterpolate(progress, to, context.fallbackInterpolateThreshold);
119
+ },
120
+ storage_,
121
+ to.storage_);
122
+ }
123
+
124
+ template <typename... AllowedTypes>
125
+ CSSValueVariant<AllowedTypes...> CSSValueVariant<AllowedTypes...>::interpolate(
126
+ const double progress,
127
+ const CSSValueVariant &to,
128
+ const ResolvableValueInterpolationContext &context) const {
129
+ if (storage_.index() != to.storage_.index()) {
130
+ return fallbackInterpolate(progress, to, context.fallbackInterpolateThreshold);
131
+ }
132
+
133
+ return std::visit(
134
+ [&](const auto &fromValue, const auto &toValue) -> CSSValueVariant {
135
+ REA_IF_SAME_TYPE(fromValue, toValue) {
136
+ if constexpr (!Resolvable<L>) {
137
+ throw std::runtime_error("[Reanimated] Non-resolvable value cannot be interpolated as resolvable");
138
+ } else if (fromValue.canInterpolateTo(toValue)) {
139
+ return CSSValueVariant(fromValue.interpolate(progress, toValue, context));
140
+ }
141
+ }
142
+ return fallbackInterpolate(progress, to, context.fallbackInterpolateThreshold);
143
+ },
144
+ storage_,
145
+ to.storage_);
146
+ }
147
+
148
+ template <typename... AllowedTypes>
149
+ CSSValueVariant<AllowedTypes...> CSSValueVariant<AllowedTypes...>::fallbackInterpolate(
150
+ const double progress,
151
+ const CSSValueVariant &to,
152
+ const double fallbackInterpolateThreshold) const {
153
+ return (progress < fallbackInterpolateThreshold) ? *this : to;
154
+ }
155
+
156
+ template class CSSValueVariant<CSSLength>;
157
+ template class CSSValueVariant<CSSLength, CSSKeyword>;
158
+ template class CSSValueVariant<CSSDouble>;
159
+ template class CSSValueVariant<CSSDouble, CSSKeyword>;
160
+ template class CSSValueVariant<CSSInteger>;
161
+ template class CSSValueVariant<CSSKeyword>;
162
+ template class CSSValueVariant<CSSAngle>;
163
+ template class CSSValueVariant<CSSBoolean>;
164
+ template class CSSValueVariant<CSSColor>;
165
+ template class CSSValueVariant<CSSDisplay>;
166
+ template class CSSValueVariant<CSSBoxShadow>;
167
+ template class CSSValueVariant<CSSDiscreteArray<CSSKeyword>>;
168
+
169
+ template class CSSValueVariant<SVGLength>;
170
+ template class CSSValueVariant<SVGLength, CSSKeyword>;
171
+ template class CSSValueVariant<SVGStrokeDashArray, CSSKeyword>;
172
+ template class CSSValueVariant<SVGBrush>;
173
+
174
+ } // namespace reanimated::css
@@ -0,0 +1,111 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/common/values/CSSValue.h>
4
+
5
+ #include <folly/json.h>
6
+
7
+ #include <stdexcept>
8
+ #include <string>
9
+ #include <type_traits>
10
+ #include <utility>
11
+ #include <variant>
12
+
13
+ namespace reanimated::css {
14
+
15
+ /**
16
+ * Macro to check if two lambda parameters have the same reference-removed type.
17
+ *
18
+ * Usage:
19
+ * REA_IF_SAME_TYPE(lhs, rhs) {
20
+ * // same-type block
21
+ * } else {
22
+ * // mismatch block
23
+ * }
24
+ */
25
+ #define REA_IF_SAME_TYPE(lhs, rhs) \
26
+ using L = std::remove_reference_t<decltype(lhs)>; \
27
+ using R = std::remove_reference_t<decltype(rhs)>; \
28
+ if constexpr (std::is_same_v<L, R>) // NOLINT(readability/braces)
29
+
30
+ // Checks whether a type has canConstruct(...) for a generic value
31
+ template <typename TCSSValue, typename TValue>
32
+ concept ValueConstructibleCSSValue = requires(TValue &&value) {
33
+ { TCSSValue::canConstruct(std::forward<TValue>(value)) } -> std::same_as<bool>;
34
+ }; // NOLINT(readability/braces)
35
+
36
+ // Checks whether a type can be constructed from a jsi::Value
37
+ template <typename TCSSValue>
38
+ concept JSIConstructibleCSSValue = requires(jsi::Runtime &rt, const jsi::Value &value) {
39
+ { TCSSValue::canConstruct(rt, value) } -> std::same_as<bool>;
40
+ { TCSSValue(rt, value) } -> std::same_as<TCSSValue>;
41
+ }; // NOLINT(readability/braces)
42
+
43
+ // Checks whether a type can be constructed from a folly::dynamic
44
+ template <typename TCSSValue>
45
+ concept DynamicConstructibleCSSValue = requires(const folly::dynamic &value) {
46
+ { TCSSValue::canConstruct(value) } -> std::same_as<bool>;
47
+ { TCSSValue(value) } -> std::same_as<TCSSValue>;
48
+ }; // NOLINT(readability/braces)
49
+
50
+ /**
51
+ * CSSValueVariant
52
+ *
53
+ * A std::variant-based container for multiple CSSValue-derived types.
54
+ */
55
+ template <typename... AllowedTypes>
56
+ class CSSValueVariant final : public CSSValue {
57
+ static_assert(
58
+ (JSIConstructibleCSSValue<AllowedTypes> && ...),
59
+ "CSSValueVariant accepts only types that can be constructed from a jsi::Value");
60
+ static_assert(
61
+ (DynamicConstructibleCSSValue<AllowedTypes> && ...),
62
+ "CSSValueVariant accepts only types that can be constructed from a folly::dynamic");
63
+
64
+ public:
65
+ CSSValueVariant() = default;
66
+
67
+ /**
68
+ * Construct from std::variant storage directly
69
+ */
70
+ explicit CSSValueVariant(std::variant<AllowedTypes...> &&storage);
71
+
72
+ /**
73
+ * Construct from jsi::Value if it matches any AllowedType's constructor
74
+ * (chooses the first one that matches)
75
+ */
76
+ explicit CSSValueVariant(jsi::Runtime &rt, const jsi::Value &jsiValue);
77
+
78
+ /**
79
+ * Construct from folly::dynamic if it matches any AllowedType's constructor
80
+ * (chooses the first one that matches)
81
+ */
82
+ explicit CSSValueVariant(const folly::dynamic &value);
83
+
84
+ bool operator==(const CSSValueVariant &other) const;
85
+ bool operator==(const CSSValue &other) const;
86
+
87
+ folly::dynamic toDynamic() const override;
88
+ std::string toString() const override;
89
+
90
+ /**
91
+ * Interpolate (non-resolvable)
92
+ */
93
+ CSSValueVariant
94
+ interpolate(const double progress, const CSSValueVariant &to, const ValueInterpolationContext &context) const;
95
+
96
+ /**
97
+ * Interpolate (resolvable)
98
+ */
99
+ CSSValueVariant interpolate(
100
+ const double progress,
101
+ const CSSValueVariant &to,
102
+ const ResolvableValueInterpolationContext &context) const;
103
+
104
+ private:
105
+ std::variant<AllowedTypes...> storage_;
106
+
107
+ CSSValueVariant
108
+ fallbackInterpolate(const double progress, const CSSValueVariant &to, double fallbackInterpolateThreshold) const;
109
+ };
110
+
111
+ } // namespace reanimated::css
@@ -0,0 +1,196 @@
1
+ #include <reanimated/CSS/common/values/complex/CSSBoxShadow.h>
2
+
3
+ #include <string>
4
+ #include <utility>
5
+ #include <vector>
6
+
7
+ namespace reanimated::css {
8
+
9
+ CSSBoxShadow::CSSBoxShadow(
10
+ CSSDouble offsetX,
11
+ CSSDouble offsetY,
12
+ #ifdef ANDROID
13
+ CSSShadowRadiusAndroid blurRadius,
14
+ #else
15
+ CSSDouble blurRadius,
16
+ #endif
17
+ CSSDouble spreadDistance,
18
+ CSSColor color,
19
+ std::optional<CSSBoolean> inset)
20
+ : offsetX(std::move(offsetX)),
21
+ offsetY(std::move(offsetY)),
22
+ blurRadius(std::move(blurRadius)),
23
+ spreadDistance(std::move(spreadDistance)),
24
+ color(std::move(color)),
25
+ inset(std::move(inset)) {
26
+ }
27
+
28
+ CSSBoxShadow::CSSBoxShadow(jsi::Runtime &rt, const jsi::Value &jsiValue) {
29
+ const auto &obj = jsiValue.asObject(rt);
30
+
31
+ // Only assign fields that exist in the object and keep default values for
32
+ // others
33
+ if (obj.hasProperty(rt, "offsetX")) {
34
+ offsetX = CSSDouble(rt, obj.getProperty(rt, "offsetX"));
35
+ }
36
+ if (obj.hasProperty(rt, "offsetY")) {
37
+ offsetY = CSSDouble(rt, obj.getProperty(rt, "offsetY"));
38
+ }
39
+ if (obj.hasProperty(rt, "blurRadius")) {
40
+ #ifdef ANDROID
41
+ blurRadius = CSSShadowRadiusAndroid(rt, obj.getProperty(rt, "blurRadius"));
42
+ #else
43
+ blurRadius = CSSDouble(rt, obj.getProperty(rt, "blurRadius"));
44
+ #endif
45
+ }
46
+ if (obj.hasProperty(rt, "spreadDistance")) {
47
+ spreadDistance = CSSDouble(rt, obj.getProperty(rt, "spreadDistance"));
48
+ }
49
+ if (obj.hasProperty(rt, "color")) {
50
+ color = CSSColor(rt, obj.getProperty(rt, "color"));
51
+ }
52
+ // Every non-default (not empty) shadow must have an inset
53
+ inset = CSSBoolean(rt, obj.hasProperty(rt, "inset") ? obj.getProperty(rt, "inset") : false);
54
+ }
55
+
56
+ CSSBoxShadow::CSSBoxShadow(const folly::dynamic &value) {
57
+ // Only assign fields that exist in the object and keep default values for
58
+ // others
59
+ if (value.count("offsetX") > 0) {
60
+ offsetX = CSSDouble(value["offsetX"]);
61
+ }
62
+ if (value.count("offsetY") > 0) {
63
+ offsetY = CSSDouble(value["offsetY"]);
64
+ }
65
+ if (value.count("blurRadius") > 0) {
66
+ #ifdef ANDROID
67
+ blurRadius = CSSShadowRadiusAndroid(value["blurRadius"]);
68
+ #else
69
+ blurRadius = CSSDouble(value["blurRadius"]);
70
+ #endif
71
+ }
72
+ if (value.count("spreadDistance") > 0) {
73
+ spreadDistance = CSSDouble(value["spreadDistance"]);
74
+ }
75
+ if (value.count("color") > 0) {
76
+ color = CSSColor(value["color"]);
77
+ }
78
+ // Every non-default (not empty) shadow must have an inset
79
+ inset = CSSBoolean(value.count("inset") > 0 ? value["inset"] : false);
80
+ }
81
+
82
+ bool CSSBoxShadow::canConstruct(const folly::dynamic &value) {
83
+ if (!value.isObject()) {
84
+ return false;
85
+ }
86
+
87
+ for (const auto &validator : fieldValidators) {
88
+ if (value.count(validator.fieldName) > 0 && !validator.validateDynamic(value[validator.fieldName])) {
89
+ return false;
90
+ }
91
+ }
92
+
93
+ return true;
94
+ }
95
+
96
+ bool CSSBoxShadow::canConstruct(jsi::Runtime &rt, const jsi::Value &jsiValue) {
97
+ if (!jsiValue.isObject()) {
98
+ return false;
99
+ }
100
+
101
+ const auto &obj = jsiValue.asObject(rt);
102
+
103
+ for (const auto &validator : fieldValidators) {
104
+ const auto &fieldName = validator.fieldName.c_str();
105
+ if (obj.hasProperty(rt, fieldName) && !validator.validateJSI(rt, obj.getProperty(rt, fieldName))) {
106
+ return false;
107
+ }
108
+ }
109
+
110
+ return true;
111
+ }
112
+
113
+ folly::dynamic CSSBoxShadow::toDynamic() const {
114
+ folly::dynamic obj = folly::dynamic::object();
115
+
116
+ obj["offsetX"] = offsetX.toDynamic();
117
+ obj["offsetY"] = offsetY.toDynamic();
118
+ obj["blurRadius"] = blurRadius.toDynamic();
119
+ obj["spreadDistance"] = spreadDistance.toDynamic();
120
+ obj["color"] = color.toDynamic();
121
+ if (inset.has_value()) {
122
+ obj["inset"] = inset->toDynamic();
123
+ }
124
+
125
+ return obj;
126
+ }
127
+
128
+ std::string CSSBoxShadow::toString() const {
129
+ return (inset.has_value() && inset.value().value ? "inset " : "") + offsetX.toString() + " " + offsetY.toString() +
130
+ " " + blurRadius.toString() + " " + spreadDistance.toString() + " " + color.toString();
131
+ }
132
+
133
+ CSSBoxShadow CSSBoxShadow::interpolate(double progress, const CSSBoxShadow &to) const {
134
+ const auto &fromInset = inset.value_or(to.inset.value_or(CSSBoolean(false)));
135
+ const auto &toInset = to.inset.value_or(inset.value_or(CSSBoolean(false)));
136
+
137
+ return CSSBoxShadow(
138
+ offsetX.interpolate(progress, to.offsetX),
139
+ offsetY.interpolate(progress, to.offsetY),
140
+ blurRadius.interpolate(progress, to.blurRadius),
141
+ spreadDistance.interpolate(progress, to.spreadDistance),
142
+ color.interpolate(progress, to.color),
143
+ fromInset.interpolate(progress, toInset));
144
+ }
145
+
146
+ bool CSSBoxShadow::canInterpolateTo(const CSSBoxShadow &to) const {
147
+ return !inset.has_value() || !to.inset.has_value() || inset.value() == to.inset.value();
148
+ }
149
+
150
+ bool CSSBoxShadow::operator==(const CSSBoxShadow &other) const {
151
+ return offsetX == other.offsetX && offsetY == other.offsetY && blurRadius == other.blurRadius &&
152
+ spreadDistance == other.spreadDistance && color == other.color && inset == other.inset;
153
+ }
154
+
155
+ #ifndef NDEBUG
156
+
157
+ std::ostream &operator<<(std::ostream &os, const CSSBoxShadow &shadowValue) {
158
+ os << "CSSBoxShadow(" << shadowValue.toString() << ")";
159
+ return os;
160
+ }
161
+
162
+ #endif // NDEBUG
163
+
164
+ const std::vector<FieldValidator> CSSBoxShadow::fieldValidators = {
165
+ {"offsetX",
166
+ [](const folly::dynamic &val) { return CSSDouble::canConstruct(val); },
167
+ [](jsi::Runtime &rt, const jsi::Value &val) {
168
+ return CSSDouble::canConstruct(rt, val);
169
+ }},
170
+ {"offsetY",
171
+ [](const folly::dynamic &val) { return CSSDouble::canConstruct(val); },
172
+ [](jsi::Runtime &rt, const jsi::Value &val) {
173
+ return CSSDouble::canConstruct(rt, val);
174
+ }},
175
+ {"blurRadius",
176
+ [](const folly::dynamic &val) { return CSSDouble::canConstruct(val); },
177
+ [](jsi::Runtime &rt, const jsi::Value &val) {
178
+ return CSSDouble::canConstruct(rt, val);
179
+ }},
180
+ {"spreadDistance",
181
+ [](const folly::dynamic &val) { return CSSDouble::canConstruct(val); },
182
+ [](jsi::Runtime &rt, const jsi::Value &val) {
183
+ return CSSDouble::canConstruct(rt, val);
184
+ }},
185
+ {"color",
186
+ [](const folly::dynamic &val) { return CSSColor::canConstruct(val); },
187
+ [](jsi::Runtime &rt, const jsi::Value &val) {
188
+ return CSSColor::canConstruct(rt, val);
189
+ }},
190
+ {"inset",
191
+ [](const folly::dynamic &val) { return CSSBoolean::canConstruct(val); },
192
+ [](jsi::Runtime &rt, const jsi::Value &val) {
193
+ return CSSBoolean::canConstruct(rt, val);
194
+ }}};
195
+
196
+ } // namespace reanimated::css
@@ -0,0 +1,66 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/common/definitions.h>
4
+ #include <reanimated/CSS/common/values/CSSBoolean.h>
5
+ #include <reanimated/CSS/common/values/CSSColor.h>
6
+ #include <reanimated/CSS/common/values/CSSNumber.h>
7
+
8
+ #include <folly/json.h>
9
+ #include <functional>
10
+ #include <optional>
11
+ #include <string>
12
+ #include <vector>
13
+
14
+ namespace reanimated::css {
15
+
16
+ struct CSSBoxShadow : public CSSSimpleValue<CSSBoxShadow> {
17
+ CSSDouble offsetX;
18
+ CSSDouble offsetY;
19
+ #ifdef ANDROID
20
+ // For some reason Android crashes when blurRadius is smaller
21
+ // than 1, so we use a custom value type that will never be
22
+ // smaller than 1
23
+ CSSShadowRadiusAndroid blurRadius;
24
+ #else
25
+ CSSDouble blurRadius;
26
+ #endif
27
+ CSSDouble spreadDistance;
28
+ CSSColor color;
29
+ // inset has no default value - it must be the same as in the other
30
+ // keyframe if it's not set
31
+ std::optional<CSSBoolean> inset;
32
+
33
+ CSSBoxShadow() = default;
34
+ explicit CSSBoxShadow(
35
+ CSSDouble offsetX,
36
+ CSSDouble offsetY,
37
+ #ifdef ANDROID
38
+ CSSShadowRadiusAndroid blurRadius,
39
+ #else
40
+ CSSDouble blurRadius,
41
+ #endif
42
+ CSSDouble spreadDistance,
43
+ CSSColor color,
44
+ std::optional<CSSBoolean> inset);
45
+ explicit CSSBoxShadow(jsi::Runtime &rt, const jsi::Value &jsiValue);
46
+ explicit CSSBoxShadow(const folly::dynamic &value);
47
+
48
+ static bool canConstruct(jsi::Runtime &rt, const jsi::Value &jsiValue);
49
+ static bool canConstruct(const folly::dynamic &value);
50
+
51
+ folly::dynamic toDynamic() const override;
52
+ std::string toString() const override;
53
+ CSSBoxShadow interpolate(double progress, const CSSBoxShadow &to) const override;
54
+ bool canInterpolateTo(const CSSBoxShadow &to) const override;
55
+
56
+ bool operator==(const CSSBoxShadow &other) const;
57
+
58
+ #ifndef NDEBUG
59
+ friend std::ostream &operator<<(std::ostream &os, const CSSBoxShadow &shadowValue);
60
+ #endif // NDEBUG
61
+
62
+ private:
63
+ static const std::vector<FieldValidator> fieldValidators;
64
+ };
65
+
66
+ } // namespace reanimated::css