@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,390 +1,390 @@
1
- #include <reanimated/CSS/InterpolatorRegistry.h>
2
- #include <reanimated/Tools/FeatureFlags.h>
3
-
4
- #include <reanimated/CSS/common/values/CSSAngle.h>
5
- #include <reanimated/CSS/common/values/CSSBoolean.h>
6
- #include <reanimated/CSS/common/values/CSSColor.h>
7
- #include <reanimated/CSS/common/values/CSSDiscreteArray.h>
8
- #include <reanimated/CSS/common/values/CSSKeyword.h>
9
- #include <reanimated/CSS/common/values/CSSLength.h>
10
- #include <reanimated/CSS/common/values/CSSNumber.h>
11
- #include <reanimated/CSS/common/values/CSSValue.h>
12
-
13
- #include <reanimated/CSS/common/transforms/TransformMatrix2D.h>
14
- #include <reanimated/CSS/common/values/complex/CSSBoxShadow.h>
15
-
16
- #include <reanimated/CSS/svg/values/SVGBrush.h>
17
- #include <reanimated/CSS/svg/values/SVGLength.h>
18
- #include <reanimated/CSS/svg/values/SVGStrokeDashArray.h>
19
-
20
- #include <reanimated/CSS/interpolation/InterpolatorFactory.h>
21
-
22
- #include <reanimated/CSS/interpolation/transforms/operations/matrix.h>
23
- #include <reanimated/CSS/interpolation/transforms/operations/perspective.h>
24
- #include <reanimated/CSS/interpolation/transforms/operations/rotate.h>
25
- #include <reanimated/CSS/interpolation/transforms/operations/scale.h>
26
- #include <reanimated/CSS/interpolation/transforms/operations/skew.h>
27
- #include <reanimated/CSS/interpolation/transforms/operations/translate.h>
28
-
29
- #include <reanimated/CSS/interpolation/filters/operations/blur.h>
30
- #include <reanimated/CSS/interpolation/filters/operations/brightness.h>
31
- #include <reanimated/CSS/interpolation/filters/operations/contrast.h>
32
- #include <reanimated/CSS/interpolation/filters/operations/dropShadow.h>
33
- #include <reanimated/CSS/interpolation/filters/operations/grayscale.h>
34
- #include <reanimated/CSS/interpolation/filters/operations/hueRotate.h>
35
- #include <reanimated/CSS/interpolation/filters/operations/invert.h>
36
- #include <reanimated/CSS/interpolation/filters/operations/opacity.h>
37
- #include <reanimated/CSS/interpolation/filters/operations/saturate.h>
38
- #include <reanimated/CSS/interpolation/filters/operations/sepia.h>
39
-
40
- #include <limits>
41
- #include <string>
42
- #include <vector>
43
-
44
- namespace reanimated::css {
45
-
46
- namespace {
47
-
48
- // Private implementation details
49
- const std::array<uint8_t, 4> BLACK = {0, 0, 0, 255};
50
- const std::array<uint8_t, 4> TRANSPARENT = {0, 0, 0, 0};
51
-
52
- InterpolatorFactoriesRecord mergeInterpolators(const std::vector<InterpolatorFactoriesRecord> &maps) {
53
- InterpolatorFactoriesRecord result;
54
- for (const auto &map : maps) {
55
- result.insert(map.begin(), map.end());
56
- }
57
- return result;
58
- }
59
-
60
- // ==========================
61
- // React Native Interpolators
62
- // ==========================
63
-
64
- const InterpolatorFactoriesRecord FLEX_INTERPOLATORS = {
65
- {"alignContent", value<CSSKeyword>("flex-start")},
66
- {"alignItems", value<CSSKeyword>("stretch")},
67
- {"alignSelf", value<CSSKeyword>("auto")},
68
- {"aspectRatio", value<CSSDouble, CSSKeyword>("auto")},
69
- {"borderBottomWidth", value<CSSDouble>(0)},
70
- {"borderEndWidth", value<CSSDouble>(0)},
71
- {"borderLeftWidth", value<CSSDouble>(0)},
72
- {"borderRightWidth", value<CSSDouble>(0)},
73
- {"borderStartWidth", value<CSSDouble>(0)},
74
- {"borderTopWidth", value<CSSDouble>(0)},
75
- {"borderWidth", value<CSSDouble>(0)},
76
- {"bottom", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
77
- {"boxSizing", value<CSSKeyword>("border-box")},
78
- {"display", value<CSSDisplay>("flex")},
79
- {"end", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
80
- {"flex", value<CSSDouble>(0)},
81
- {"flexBasis", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
82
- {"flexDirection", value<CSSKeyword>("column")},
83
- {"rowGap", value<CSSLength>(0, {RelativeTo::Self, "height"})},
84
- {"columnGap", value<CSSLength>(0, {RelativeTo::Self, "width"})},
85
- {"flexGrow", value<CSSDouble>(0)},
86
- {"flexShrink", value<CSSDouble>(0)},
87
- {"flexWrap", value<CSSKeyword>("no-wrap")},
88
- {"height", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
89
- {"justifyContent", value<CSSKeyword>("flex-start")},
90
- {"left", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
91
- {"margin", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
92
- {"marginBottom", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
93
- {"marginEnd", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
94
- {"marginHorizontal", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
95
- {"marginLeft", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
96
- {"marginRight", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
97
- {"marginStart", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
98
- {"marginTop", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
99
- {"marginVertical", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
100
- {"maxHeight", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
101
- {"maxWidth", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
102
- {"minHeight", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
103
- {"minWidth", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
104
- {"overflow", value<CSSKeyword>("visible")},
105
- {"padding", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
106
- {"paddingBottom", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
107
- {"paddingEnd", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
108
- {"paddingHorizontal", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
109
- {"paddingLeft", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
110
- {"paddingRight", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
111
- {"paddingStart", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
112
- {"paddingTop", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
113
- {"paddingVertical", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
114
- {"position", value<CSSKeyword>("relative")},
115
- {"right", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
116
- {"start", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
117
- {"top", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
118
- {"width", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
119
- {"zIndex", value<CSSInteger>(0)},
120
- {"direction", value<CSSKeyword>("inherit")}};
121
-
122
- const InterpolatorFactoriesRecord SHADOW_INTERPOLATORS_IOS = {
123
- {"shadowColor", value<CSSColor>(BLACK)},
124
- {"shadowOffset", record({{"width", value<CSSDouble>(0)}, {"height", value<CSSDouble>(0)}})},
125
- {"shadowRadius", value<CSSDouble>(0)},
126
- {"shadowOpacity", value<CSSDouble>(1)}};
127
-
128
- const InterpolatorFactoriesRecord TRANSFORMS_INTERPOLATORS = {
129
- {"transformOrigin",
130
- array(
131
- {value<CSSLength>("50%", {RelativeTo::Self, "width"}),
132
- value<CSSLength>("50%", {RelativeTo::Self, "height"}),
133
- value<CSSDouble>(0)})},
134
- {"transform",
135
- transforms(
136
- {{"perspective", transformOp<PerspectiveOperation>(std::numeric_limits<double>::infinity())},
137
- {"rotate", transformOp<RotateOperation>("0deg")},
138
- {"rotateX", transformOp<RotateXOperation>("0deg")},
139
- {"rotateY", transformOp<RotateYOperation>("0deg")},
140
- {"rotateZ", transformOp<RotateZOperation>("0deg")},
141
- {"scale", transformOp<ScaleOperation>(1)},
142
- {"scaleX", transformOp<ScaleXOperation>(1)},
143
- {"scaleY", transformOp<ScaleYOperation>(1)},
144
- {"translateX", transformOp<TranslateXOperation>(0, {RelativeTo::Self, "width"})},
145
- {"translateY", transformOp<TranslateYOperation>(0, {RelativeTo::Self, "height"})},
146
- {"skewX", transformOp<SkewXOperation>("0deg")},
147
- {"skewY", transformOp<SkewYOperation>("0deg")},
148
- {"matrix", transformOp<MatrixOperation>(TransformMatrix2D())}})},
149
- };
150
-
151
- const InterpolatorFactoriesRecord FILTER_INTERPOLATORS = {
152
- {"filter",
153
- filters(
154
- {{"blur", filterOp<BlurOperation>(0)},
155
- {"brightness", filterOp<BrightnessOperation>(1)},
156
- {"contrast", filterOp<ContrastOperation>(1)},
157
- {"dropShadow", filterOp<DropShadowOperation>(CSSDropShadow())},
158
- {"grayscale", filterOp<GrayscaleOperation>(0)},
159
- {"hueRotate", filterOp<HueRotateOperation>(0)},
160
- {"invert", filterOp<InvertOperation>(0)},
161
- {"opacity", filterOp<OpacityOperation>(1)},
162
- {"saturate", filterOp<SaturateOperation>(1)},
163
- {"sepia", filterOp<SepiaOperation>(0)}})}};
164
-
165
- const InterpolatorFactoriesRecord VIEW_INTERPOLATORS = mergeInterpolators(
166
- {FLEX_INTERPOLATORS,
167
- SHADOW_INTERPOLATORS_IOS,
168
- TRANSFORMS_INTERPOLATORS,
169
- FILTER_INTERPOLATORS,
170
- InterpolatorFactoriesRecord{
171
- {"backfaceVisibility", value<CSSKeyword>("visible")},
172
- {"backgroundColor", value<CSSColor>(TRANSPARENT)},
173
- {"borderBlockColor", value<CSSColor>(BLACK)},
174
- {"borderBlockEndColor", value<CSSColor>(BLACK)},
175
- {"borderBlockStartColor", value<CSSColor>(BLACK)},
176
- {"borderBottomColor", value<CSSColor>(BLACK)},
177
- {"borderBottomEndRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
178
- {"borderBottomLeftRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
179
- {"borderBottomRightRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
180
- {"borderBottomStartRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
181
- {"borderColor", value<CSSColor>(BLACK)},
182
- {"borderCurve", value<CSSKeyword>("circular")},
183
- {"borderEndColor", value<CSSColor>(BLACK)},
184
- {"borderEndEndRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
185
- {"borderEndStartRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
186
- {"borderLeftColor", value<CSSColor>(BLACK)},
187
- {"borderRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
188
- {"borderRightColor", value<CSSColor>(BLACK)},
189
- {"borderStartColor", value<CSSColor>(BLACK)},
190
- {"borderStartEndRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
191
- {"borderStartStartRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
192
- {"borderStyle", value<CSSKeyword>("solid")},
193
- {"borderTopColor", value<CSSColor>(BLACK)},
194
- {"borderTopEndRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
195
- {"borderTopLeftRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
196
- {"borderTopRightRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
197
- {"borderTopStartRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
198
- {"outlineColor", value<CSSColor>(BLACK)},
199
- {"outlineOffset", value<CSSDouble>(0)},
200
- {"outlineStyle", value<CSSKeyword>("solid")},
201
- {"outlineWidth", value<CSSDouble>(0)},
202
- {"opacity", value<CSSDouble>(1)},
203
- {"elevation", value<CSSDouble>(0)},
204
- {"pointerEvents", value<CSSKeyword>("auto")},
205
- {"isolation", value<CSSKeyword>("auto")},
206
- {"cursor", value<CSSKeyword>("auto")},
207
- {"boxShadow", array({value<CSSBoxShadow>(CSSBoxShadow())})},
208
- {"mixBlendMode", value<CSSKeyword>("normal")}}});
209
-
210
- const InterpolatorFactoriesRecord TEXT_INTERPOLATORS_IOS = {
211
- {"fontVariant", value<CSSDiscreteArray<CSSKeyword>>(std::vector<CSSKeyword>{})},
212
- {"textDecorationColor", value<CSSColor>(BLACK)},
213
- {"textDecorationStyle", value<CSSKeyword>("solid")},
214
- {"writingDirection", value<CSSKeyword>("auto")},
215
- };
216
-
217
- const InterpolatorFactoriesRecord TEXT_INTERPOLATORS_ANDROID = {
218
- {"textAlignVertical", value<CSSKeyword>("auto")},
219
- {"verticalAlign", value<CSSKeyword>("auto")},
220
- {"includeFontPadding", value<CSSBoolean>(false)},
221
- };
222
-
223
- const InterpolatorFactoriesRecord TEXT_INTERPOLATORS = mergeInterpolators(
224
- {VIEW_INTERPOLATORS,
225
- TEXT_INTERPOLATORS_IOS,
226
- TEXT_INTERPOLATORS_ANDROID,
227
- InterpolatorFactoriesRecord{
228
- {"color", value<CSSColor>(BLACK)},
229
- {"fontFamily", value<CSSKeyword>("inherit")},
230
- {"fontSize", value<CSSDouble>(14)},
231
- {"fontStyle", value<CSSKeyword>("normal")},
232
- {"fontWeight", value<CSSKeyword>("normal")},
233
- {"letterSpacing", value<CSSDouble>(0)},
234
- {"lineHeight", value<CSSDouble>(14)}, // TODO - should inherit from fontSize
235
- {"textAlign", value<CSSKeyword>("auto")},
236
- {"textDecorationLine", value<CSSKeyword>("none")},
237
- {"textShadowColor", value<CSSColor>(BLACK)},
238
- {"textShadowOffset", record({{"width", value<CSSDouble>(0)}, {"height", value<CSSDouble>(0)}})},
239
- {"textShadowRadius", value<CSSDouble>(0)},
240
- {"textTransform", value<CSSKeyword>("none")},
241
- {"userSelect", value<CSSKeyword>("auto")},
242
- }});
243
-
244
- const InterpolatorFactoriesRecord IMAGE_INTERPOLATORS = mergeInterpolators(
245
- {VIEW_INTERPOLATORS,
246
- InterpolatorFactoriesRecord{
247
- {"resizeMode", value<CSSKeyword>("cover")},
248
- {"overlayColor", value<CSSColor>(BLACK)},
249
- {"tintColor", value<CSSColor>(BLACK)},
250
- }});
251
-
252
- // =================
253
- // SVG INTERPOLATORS
254
- // =================
255
-
256
- const InterpolatorFactoriesRecord SVG_COLOR_INTERPOLATORS = {
257
- {"color", value<SVGBrush>(BLACK)},
258
- };
259
-
260
- const InterpolatorFactoriesRecord SVG_FILL_INTERPOLATORS = {
261
- {"fill", value<SVGBrush>(BLACK)},
262
- {"fillOpacity", value<CSSDouble>(1)},
263
- {"fillRule", value<CSSInteger>(0)},
264
- };
265
-
266
- const InterpolatorFactoriesRecord SVG_STROKE_INTERPOLATORS = {
267
- {"stroke", value<SVGBrush>(BLACK)},
268
- {"strokeWidth", value<SVGLength>(1)},
269
- {"strokeOpacity", value<CSSDouble>(1)},
270
- {"strokeDasharray", value<SVGStrokeDashArray, CSSKeyword>(SVGStrokeDashArray())},
271
- {"strokeDashoffset", value<SVGLength>(0)},
272
- {"strokeLinecap", value<CSSInteger>(0)},
273
- {"strokeLinejoin", value<CSSInteger>(0)},
274
- {"strokeMiterlimit", value<CSSDouble>(4)},
275
- {"vectorEffect", value<CSSInteger>(0)},
276
- };
277
-
278
- const InterpolatorFactoriesRecord SVG_CLIP_INTERPOLATORS = {
279
- {"clipRule", value<CSSKeyword>("nonzero")},
280
- {"clipPath", value<CSSKeyword>("none")},
281
- };
282
-
283
- const InterpolatorFactoriesRecord SVG_TRANSFORM_INTERPOLATORS = {
284
- {"translateX", value<SVGLength>(0)},
285
- {"translateY", value<SVGLength>(0)},
286
- {"originX", value<SVGLength>(0)},
287
- {"originY", value<SVGLength>(0)},
288
- {"scaleX", value<CSSDouble>(1)},
289
- {"scaleY", value<CSSDouble>(1)},
290
- {"skewX", value<CSSAngle>(0)},
291
- {"skewY", value<CSSAngle>(0)},
292
- {"rotation", value<CSSAngle>(0)},
293
- };
294
-
295
- const InterpolatorFactoriesRecord SVG_COMMON_INTERPOLATORS = mergeInterpolators({
296
- SVG_COLOR_INTERPOLATORS,
297
- SVG_FILL_INTERPOLATORS,
298
- SVG_STROKE_INTERPOLATORS,
299
- InterpolatorFactoriesRecord{{"opacity", value<CSSDouble>(1)}},
300
- });
301
-
302
- const InterpolatorFactoriesRecord SVG_CIRCLE_INTERPOLATORS = mergeInterpolators(
303
- {SVG_COMMON_INTERPOLATORS,
304
- InterpolatorFactoriesRecord{
305
- {"cx", value<SVGLength, CSSKeyword>(0)},
306
- {"cy", value<SVGLength, CSSKeyword>(0)},
307
- {"r", value<SVGLength, CSSKeyword>(0)},
308
- }});
309
-
310
- const InterpolatorFactoriesRecord SVG_ELLIPSE_INTERPOLATORS = mergeInterpolators(
311
- {SVG_COMMON_INTERPOLATORS,
312
- InterpolatorFactoriesRecord{
313
- {"cx", value<SVGLength, CSSKeyword>(0)},
314
- {"cy", value<SVGLength, CSSKeyword>(0)},
315
- {"rx", value<SVGLength, CSSKeyword>(0)},
316
- {"ry", value<SVGLength, CSSKeyword>(0)},
317
- }});
318
-
319
- const InterpolatorFactoriesRecord SVG_LINE_INTERPOLATORS = mergeInterpolators(
320
- {SVG_COMMON_INTERPOLATORS,
321
- InterpolatorFactoriesRecord{
322
- {"x1", value<SVGLength, CSSKeyword>(0)},
323
- {"y1", value<SVGLength, CSSKeyword>(0)},
324
- {"x2", value<SVGLength, CSSKeyword>(0)},
325
- {"y2", value<SVGLength, CSSKeyword>(0)},
326
- }});
327
-
328
- const InterpolatorFactoriesRecord SVG_RECT_INTERPOLATORS = mergeInterpolators(
329
- {SVG_COMMON_INTERPOLATORS,
330
- InterpolatorFactoriesRecord{
331
- {"x", value<SVGLength, CSSKeyword>(0)},
332
- {"y", value<SVGLength, CSSKeyword>(0)},
333
- {"width", value<SVGLength, CSSKeyword>(0)},
334
- {"height", value<SVGLength, CSSKeyword>(0)},
335
- {"rx", value<SVGLength, CSSKeyword>(0)},
336
- {"ry", value<SVGLength, CSSKeyword>(0)},
337
- }});
338
-
339
- const InterpolatorFactoriesRecord SVG_PATH_INTERPOLATORS = mergeInterpolators(
340
- {SVG_COMMON_INTERPOLATORS,
341
- InterpolatorFactoriesRecord{
342
- // TODO - add more properties
343
- }});
344
-
345
- // ==================
346
- // COMPONENT REGISTRY
347
- // ==================
348
-
349
- ComponentInterpolatorsMap initializeRegistry() {
350
- ComponentInterpolatorsMap registry = {
351
- // React Native Components
352
- {"View", VIEW_INTERPOLATORS},
353
- {"Paragraph", TEXT_INTERPOLATORS},
354
- {"Image", IMAGE_INTERPOLATORS},
355
- };
356
-
357
- if (StaticFeatureFlags::getFlag("EXPERIMENTAL_CSS_ANIMATIONS_FOR_SVG_COMPONENTS")) {
358
- // SVG Components
359
- registry["RNSVGCircle"] = SVG_CIRCLE_INTERPOLATORS;
360
- registry["RNSVGEllipse"] = SVG_ELLIPSE_INTERPOLATORS;
361
- registry["RNSVGLine"] = SVG_LINE_INTERPOLATORS;
362
- registry["RNSVGPath"] = SVG_PATH_INTERPOLATORS;
363
- registry["RNSVGRect"] = SVG_RECT_INTERPOLATORS;
364
- }
365
-
366
- return registry;
367
- }
368
-
369
- ComponentInterpolatorsMap registry = initializeRegistry();
370
-
371
- } // namespace
372
-
373
- const InterpolatorFactoriesRecord &getComponentInterpolators(const std::string &componentName) {
374
- if (auto it = registry.find(componentName); it != registry.end()) {
375
- return it->second;
376
- }
377
-
378
- // Use View interpolators as a fallback for unknown components
379
- // (e.g. we get the ScrollView component name for the ScrollView component
380
- // but it should be styled in the same way as a View)
381
- return VIEW_INTERPOLATORS;
382
- }
383
-
384
- void registerComponentInterpolators(
385
- const std::string &componentName,
386
- const InterpolatorFactoriesRecord &interpolators) {
387
- registry[componentName] = interpolators;
388
- }
389
-
390
- } // namespace reanimated::css
1
+ #include <reanimated/CSS/InterpolatorRegistry.h>
2
+ #include <reanimated/Tools/FeatureFlags.h>
3
+
4
+ #include <reanimated/CSS/common/values/CSSAngle.h>
5
+ #include <reanimated/CSS/common/values/CSSBoolean.h>
6
+ #include <reanimated/CSS/common/values/CSSColor.h>
7
+ #include <reanimated/CSS/common/values/CSSDiscreteArray.h>
8
+ #include <reanimated/CSS/common/values/CSSKeyword.h>
9
+ #include <reanimated/CSS/common/values/CSSLength.h>
10
+ #include <reanimated/CSS/common/values/CSSNumber.h>
11
+ #include <reanimated/CSS/common/values/CSSValue.h>
12
+
13
+ #include <reanimated/CSS/common/transforms/TransformMatrix2D.h>
14
+ #include <reanimated/CSS/common/values/complex/CSSBoxShadow.h>
15
+
16
+ #include <reanimated/CSS/svg/values/SVGBrush.h>
17
+ #include <reanimated/CSS/svg/values/SVGLength.h>
18
+ #include <reanimated/CSS/svg/values/SVGStrokeDashArray.h>
19
+
20
+ #include <reanimated/CSS/interpolation/InterpolatorFactory.h>
21
+
22
+ #include <reanimated/CSS/interpolation/transforms/operations/matrix.h>
23
+ #include <reanimated/CSS/interpolation/transforms/operations/perspective.h>
24
+ #include <reanimated/CSS/interpolation/transforms/operations/rotate.h>
25
+ #include <reanimated/CSS/interpolation/transforms/operations/scale.h>
26
+ #include <reanimated/CSS/interpolation/transforms/operations/skew.h>
27
+ #include <reanimated/CSS/interpolation/transforms/operations/translate.h>
28
+
29
+ #include <reanimated/CSS/interpolation/filters/operations/blur.h>
30
+ #include <reanimated/CSS/interpolation/filters/operations/brightness.h>
31
+ #include <reanimated/CSS/interpolation/filters/operations/contrast.h>
32
+ #include <reanimated/CSS/interpolation/filters/operations/dropShadow.h>
33
+ #include <reanimated/CSS/interpolation/filters/operations/grayscale.h>
34
+ #include <reanimated/CSS/interpolation/filters/operations/hueRotate.h>
35
+ #include <reanimated/CSS/interpolation/filters/operations/invert.h>
36
+ #include <reanimated/CSS/interpolation/filters/operations/opacity.h>
37
+ #include <reanimated/CSS/interpolation/filters/operations/saturate.h>
38
+ #include <reanimated/CSS/interpolation/filters/operations/sepia.h>
39
+
40
+ #include <limits>
41
+ #include <string>
42
+ #include <vector>
43
+
44
+ namespace reanimated::css {
45
+
46
+ namespace {
47
+
48
+ // Private implementation details
49
+ const std::array<uint8_t, 4> BLACK = {0, 0, 0, 255};
50
+ const std::array<uint8_t, 4> TRANSPARENT = {0, 0, 0, 0};
51
+
52
+ InterpolatorFactoriesRecord mergeInterpolators(const std::vector<InterpolatorFactoriesRecord> &maps) {
53
+ InterpolatorFactoriesRecord result;
54
+ for (const auto &map : maps) {
55
+ result.insert(map.begin(), map.end());
56
+ }
57
+ return result;
58
+ }
59
+
60
+ // ==========================
61
+ // React Native Interpolators
62
+ // ==========================
63
+
64
+ const InterpolatorFactoriesRecord FLEX_INTERPOLATORS = {
65
+ {"alignContent", value<CSSKeyword>("flex-start")},
66
+ {"alignItems", value<CSSKeyword>("stretch")},
67
+ {"alignSelf", value<CSSKeyword>("auto")},
68
+ {"aspectRatio", value<CSSDouble, CSSKeyword>("auto")},
69
+ {"borderBottomWidth", value<CSSDouble>(0)},
70
+ {"borderEndWidth", value<CSSDouble>(0)},
71
+ {"borderLeftWidth", value<CSSDouble>(0)},
72
+ {"borderRightWidth", value<CSSDouble>(0)},
73
+ {"borderStartWidth", value<CSSDouble>(0)},
74
+ {"borderTopWidth", value<CSSDouble>(0)},
75
+ {"borderWidth", value<CSSDouble>(0)},
76
+ {"bottom", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
77
+ {"boxSizing", value<CSSKeyword>("border-box")},
78
+ {"display", value<CSSDisplay>("flex")},
79
+ {"end", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
80
+ {"flex", value<CSSDouble>(0)},
81
+ {"flexBasis", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
82
+ {"flexDirection", value<CSSKeyword>("column")},
83
+ {"rowGap", value<CSSLength>(0, {RelativeTo::Self, "height"})},
84
+ {"columnGap", value<CSSLength>(0, {RelativeTo::Self, "width"})},
85
+ {"flexGrow", value<CSSDouble>(0)},
86
+ {"flexShrink", value<CSSDouble>(0)},
87
+ {"flexWrap", value<CSSKeyword>("no-wrap")},
88
+ {"height", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
89
+ {"justifyContent", value<CSSKeyword>("flex-start")},
90
+ {"left", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
91
+ {"margin", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
92
+ {"marginBottom", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
93
+ {"marginEnd", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
94
+ {"marginHorizontal", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
95
+ {"marginLeft", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
96
+ {"marginRight", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
97
+ {"marginStart", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
98
+ {"marginTop", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
99
+ {"marginVertical", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
100
+ {"maxHeight", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
101
+ {"maxWidth", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
102
+ {"minHeight", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
103
+ {"minWidth", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
104
+ {"overflow", value<CSSKeyword>("visible")},
105
+ {"padding", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
106
+ {"paddingBottom", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
107
+ {"paddingEnd", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
108
+ {"paddingHorizontal", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
109
+ {"paddingLeft", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
110
+ {"paddingRight", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
111
+ {"paddingStart", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
112
+ {"paddingTop", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
113
+ {"paddingVertical", value<CSSLength, CSSKeyword>(0, {RelativeTo::Parent, "width"})},
114
+ {"position", value<CSSKeyword>("relative")},
115
+ {"right", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
116
+ {"start", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
117
+ {"top", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "height"})},
118
+ {"width", value<CSSLength, CSSKeyword>("auto", {RelativeTo::Parent, "width"})},
119
+ {"zIndex", value<CSSInteger>(0)},
120
+ {"direction", value<CSSKeyword>("inherit")}};
121
+
122
+ const InterpolatorFactoriesRecord SHADOW_INTERPOLATORS_IOS = {
123
+ {"shadowColor", value<CSSColor>(BLACK)},
124
+ {"shadowOffset", record({{"width", value<CSSDouble>(0)}, {"height", value<CSSDouble>(0)}})},
125
+ {"shadowRadius", value<CSSDouble>(0)},
126
+ {"shadowOpacity", value<CSSDouble>(1)}};
127
+
128
+ const InterpolatorFactoriesRecord TRANSFORMS_INTERPOLATORS = {
129
+ {"transformOrigin",
130
+ array(
131
+ {value<CSSLength>("50%", {RelativeTo::Self, "width"}),
132
+ value<CSSLength>("50%", {RelativeTo::Self, "height"}),
133
+ value<CSSDouble>(0)})},
134
+ {"transform",
135
+ transforms(
136
+ {{"perspective", transformOp<PerspectiveOperation>(std::numeric_limits<double>::infinity())},
137
+ {"rotate", transformOp<RotateOperation>("0deg")},
138
+ {"rotateX", transformOp<RotateXOperation>("0deg")},
139
+ {"rotateY", transformOp<RotateYOperation>("0deg")},
140
+ {"rotateZ", transformOp<RotateZOperation>("0deg")},
141
+ {"scale", transformOp<ScaleOperation>(1)},
142
+ {"scaleX", transformOp<ScaleXOperation>(1)},
143
+ {"scaleY", transformOp<ScaleYOperation>(1)},
144
+ {"translateX", transformOp<TranslateXOperation>(0, {RelativeTo::Self, "width"})},
145
+ {"translateY", transformOp<TranslateYOperation>(0, {RelativeTo::Self, "height"})},
146
+ {"skewX", transformOp<SkewXOperation>("0deg")},
147
+ {"skewY", transformOp<SkewYOperation>("0deg")},
148
+ {"matrix", transformOp<MatrixOperation>(TransformMatrix2D())}})},
149
+ };
150
+
151
+ const InterpolatorFactoriesRecord FILTER_INTERPOLATORS = {
152
+ {"filter",
153
+ filters(
154
+ {{"blur", filterOp<BlurOperation>(0)},
155
+ {"brightness", filterOp<BrightnessOperation>(1)},
156
+ {"contrast", filterOp<ContrastOperation>(1)},
157
+ {"dropShadow", filterOp<DropShadowOperation>(CSSDropShadow())},
158
+ {"grayscale", filterOp<GrayscaleOperation>(0)},
159
+ {"hueRotate", filterOp<HueRotateOperation>(0)},
160
+ {"invert", filterOp<InvertOperation>(0)},
161
+ {"opacity", filterOp<OpacityOperation>(1)},
162
+ {"saturate", filterOp<SaturateOperation>(1)},
163
+ {"sepia", filterOp<SepiaOperation>(0)}})}};
164
+
165
+ const InterpolatorFactoriesRecord VIEW_INTERPOLATORS = mergeInterpolators(
166
+ {FLEX_INTERPOLATORS,
167
+ SHADOW_INTERPOLATORS_IOS,
168
+ TRANSFORMS_INTERPOLATORS,
169
+ FILTER_INTERPOLATORS,
170
+ InterpolatorFactoriesRecord{
171
+ {"backfaceVisibility", value<CSSKeyword>("visible")},
172
+ {"backgroundColor", value<CSSColor>(TRANSPARENT)},
173
+ {"borderBlockColor", value<CSSColor>(BLACK)},
174
+ {"borderBlockEndColor", value<CSSColor>(BLACK)},
175
+ {"borderBlockStartColor", value<CSSColor>(BLACK)},
176
+ {"borderBottomColor", value<CSSColor>(BLACK)},
177
+ {"borderBottomEndRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
178
+ {"borderBottomLeftRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
179
+ {"borderBottomRightRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
180
+ {"borderBottomStartRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
181
+ {"borderColor", value<CSSColor>(BLACK)},
182
+ {"borderCurve", value<CSSKeyword>("circular")},
183
+ {"borderEndColor", value<CSSColor>(BLACK)},
184
+ {"borderEndEndRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
185
+ {"borderEndStartRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
186
+ {"borderLeftColor", value<CSSColor>(BLACK)},
187
+ {"borderRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
188
+ {"borderRightColor", value<CSSColor>(BLACK)},
189
+ {"borderStartColor", value<CSSColor>(BLACK)},
190
+ {"borderStartEndRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
191
+ {"borderStartStartRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
192
+ {"borderStyle", value<CSSKeyword>("solid")},
193
+ {"borderTopColor", value<CSSColor>(BLACK)},
194
+ {"borderTopEndRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
195
+ {"borderTopLeftRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
196
+ {"borderTopRightRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
197
+ {"borderTopStartRadius", value<CSSLength>(0, {RelativeTo::Self, "width"})},
198
+ {"outlineColor", value<CSSColor>(BLACK)},
199
+ {"outlineOffset", value<CSSDouble>(0)},
200
+ {"outlineStyle", value<CSSKeyword>("solid")},
201
+ {"outlineWidth", value<CSSDouble>(0)},
202
+ {"opacity", value<CSSDouble>(1)},
203
+ {"elevation", value<CSSDouble>(0)},
204
+ {"pointerEvents", value<CSSKeyword>("auto")},
205
+ {"isolation", value<CSSKeyword>("auto")},
206
+ {"cursor", value<CSSKeyword>("auto")},
207
+ {"boxShadow", array({value<CSSBoxShadow>(CSSBoxShadow())})},
208
+ {"mixBlendMode", value<CSSKeyword>("normal")}}});
209
+
210
+ const InterpolatorFactoriesRecord TEXT_INTERPOLATORS_IOS = {
211
+ {"fontVariant", value<CSSDiscreteArray<CSSKeyword>>(std::vector<CSSKeyword>{})},
212
+ {"textDecorationColor", value<CSSColor>(BLACK)},
213
+ {"textDecorationStyle", value<CSSKeyword>("solid")},
214
+ {"writingDirection", value<CSSKeyword>("auto")},
215
+ };
216
+
217
+ const InterpolatorFactoriesRecord TEXT_INTERPOLATORS_ANDROID = {
218
+ {"textAlignVertical", value<CSSKeyword>("auto")},
219
+ {"verticalAlign", value<CSSKeyword>("auto")},
220
+ {"includeFontPadding", value<CSSBoolean>(false)},
221
+ };
222
+
223
+ const InterpolatorFactoriesRecord TEXT_INTERPOLATORS = mergeInterpolators(
224
+ {VIEW_INTERPOLATORS,
225
+ TEXT_INTERPOLATORS_IOS,
226
+ TEXT_INTERPOLATORS_ANDROID,
227
+ InterpolatorFactoriesRecord{
228
+ {"color", value<CSSColor>(BLACK)},
229
+ {"fontFamily", value<CSSKeyword>("inherit")},
230
+ {"fontSize", value<CSSDouble>(14)},
231
+ {"fontStyle", value<CSSKeyword>("normal")},
232
+ {"fontWeight", value<CSSKeyword>("normal")},
233
+ {"letterSpacing", value<CSSDouble>(0)},
234
+ {"lineHeight", value<CSSDouble>(14)}, // TODO - should inherit from fontSize
235
+ {"textAlign", value<CSSKeyword>("auto")},
236
+ {"textDecorationLine", value<CSSKeyword>("none")},
237
+ {"textShadowColor", value<CSSColor>(BLACK)},
238
+ {"textShadowOffset", record({{"width", value<CSSDouble>(0)}, {"height", value<CSSDouble>(0)}})},
239
+ {"textShadowRadius", value<CSSDouble>(0)},
240
+ {"textTransform", value<CSSKeyword>("none")},
241
+ {"userSelect", value<CSSKeyword>("auto")},
242
+ }});
243
+
244
+ const InterpolatorFactoriesRecord IMAGE_INTERPOLATORS = mergeInterpolators(
245
+ {VIEW_INTERPOLATORS,
246
+ InterpolatorFactoriesRecord{
247
+ {"resizeMode", value<CSSKeyword>("cover")},
248
+ {"overlayColor", value<CSSColor>(BLACK)},
249
+ {"tintColor", value<CSSColor>(BLACK)},
250
+ }});
251
+
252
+ // =================
253
+ // SVG INTERPOLATORS
254
+ // =================
255
+
256
+ const InterpolatorFactoriesRecord SVG_COLOR_INTERPOLATORS = {
257
+ {"color", value<SVGBrush>(BLACK)},
258
+ };
259
+
260
+ const InterpolatorFactoriesRecord SVG_FILL_INTERPOLATORS = {
261
+ {"fill", value<SVGBrush>(BLACK)},
262
+ {"fillOpacity", value<CSSDouble>(1)},
263
+ {"fillRule", value<CSSInteger>(0)},
264
+ };
265
+
266
+ const InterpolatorFactoriesRecord SVG_STROKE_INTERPOLATORS = {
267
+ {"stroke", value<SVGBrush>(BLACK)},
268
+ {"strokeWidth", value<SVGLength>(1)},
269
+ {"strokeOpacity", value<CSSDouble>(1)},
270
+ {"strokeDasharray", value<SVGStrokeDashArray, CSSKeyword>(SVGStrokeDashArray())},
271
+ {"strokeDashoffset", value<SVGLength>(0)},
272
+ {"strokeLinecap", value<CSSInteger>(0)},
273
+ {"strokeLinejoin", value<CSSInteger>(0)},
274
+ {"strokeMiterlimit", value<CSSDouble>(4)},
275
+ {"vectorEffect", value<CSSInteger>(0)},
276
+ };
277
+
278
+ const InterpolatorFactoriesRecord SVG_CLIP_INTERPOLATORS = {
279
+ {"clipRule", value<CSSKeyword>("nonzero")},
280
+ {"clipPath", value<CSSKeyword>("none")},
281
+ };
282
+
283
+ const InterpolatorFactoriesRecord SVG_TRANSFORM_INTERPOLATORS = {
284
+ {"translateX", value<SVGLength>(0)},
285
+ {"translateY", value<SVGLength>(0)},
286
+ {"originX", value<SVGLength>(0)},
287
+ {"originY", value<SVGLength>(0)},
288
+ {"scaleX", value<CSSDouble>(1)},
289
+ {"scaleY", value<CSSDouble>(1)},
290
+ {"skewX", value<CSSAngle>(0)},
291
+ {"skewY", value<CSSAngle>(0)},
292
+ {"rotation", value<CSSAngle>(0)},
293
+ };
294
+
295
+ const InterpolatorFactoriesRecord SVG_COMMON_INTERPOLATORS = mergeInterpolators({
296
+ SVG_COLOR_INTERPOLATORS,
297
+ SVG_FILL_INTERPOLATORS,
298
+ SVG_STROKE_INTERPOLATORS,
299
+ InterpolatorFactoriesRecord{{"opacity", value<CSSDouble>(1)}},
300
+ });
301
+
302
+ const InterpolatorFactoriesRecord SVG_CIRCLE_INTERPOLATORS = mergeInterpolators(
303
+ {SVG_COMMON_INTERPOLATORS,
304
+ InterpolatorFactoriesRecord{
305
+ {"cx", value<SVGLength, CSSKeyword>(0)},
306
+ {"cy", value<SVGLength, CSSKeyword>(0)},
307
+ {"r", value<SVGLength, CSSKeyword>(0)},
308
+ }});
309
+
310
+ const InterpolatorFactoriesRecord SVG_ELLIPSE_INTERPOLATORS = mergeInterpolators(
311
+ {SVG_COMMON_INTERPOLATORS,
312
+ InterpolatorFactoriesRecord{
313
+ {"cx", value<SVGLength, CSSKeyword>(0)},
314
+ {"cy", value<SVGLength, CSSKeyword>(0)},
315
+ {"rx", value<SVGLength, CSSKeyword>(0)},
316
+ {"ry", value<SVGLength, CSSKeyword>(0)},
317
+ }});
318
+
319
+ const InterpolatorFactoriesRecord SVG_LINE_INTERPOLATORS = mergeInterpolators(
320
+ {SVG_COMMON_INTERPOLATORS,
321
+ InterpolatorFactoriesRecord{
322
+ {"x1", value<SVGLength, CSSKeyword>(0)},
323
+ {"y1", value<SVGLength, CSSKeyword>(0)},
324
+ {"x2", value<SVGLength, CSSKeyword>(0)},
325
+ {"y2", value<SVGLength, CSSKeyword>(0)},
326
+ }});
327
+
328
+ const InterpolatorFactoriesRecord SVG_RECT_INTERPOLATORS = mergeInterpolators(
329
+ {SVG_COMMON_INTERPOLATORS,
330
+ InterpolatorFactoriesRecord{
331
+ {"x", value<SVGLength, CSSKeyword>(0)},
332
+ {"y", value<SVGLength, CSSKeyword>(0)},
333
+ {"width", value<SVGLength, CSSKeyword>(0)},
334
+ {"height", value<SVGLength, CSSKeyword>(0)},
335
+ {"rx", value<SVGLength, CSSKeyword>(0)},
336
+ {"ry", value<SVGLength, CSSKeyword>(0)},
337
+ }});
338
+
339
+ const InterpolatorFactoriesRecord SVG_PATH_INTERPOLATORS = mergeInterpolators(
340
+ {SVG_COMMON_INTERPOLATORS,
341
+ InterpolatorFactoriesRecord{
342
+ // TODO - add more properties
343
+ }});
344
+
345
+ // ==================
346
+ // COMPONENT REGISTRY
347
+ // ==================
348
+
349
+ ComponentInterpolatorsMap initializeRegistry() {
350
+ ComponentInterpolatorsMap registry = {
351
+ // React Native Components
352
+ {"View", VIEW_INTERPOLATORS},
353
+ {"Paragraph", TEXT_INTERPOLATORS},
354
+ {"Image", IMAGE_INTERPOLATORS},
355
+ };
356
+
357
+ if (StaticFeatureFlags::getFlag("EXPERIMENTAL_CSS_ANIMATIONS_FOR_SVG_COMPONENTS")) {
358
+ // SVG Components
359
+ registry["RNSVGCircle"] = SVG_CIRCLE_INTERPOLATORS;
360
+ registry["RNSVGEllipse"] = SVG_ELLIPSE_INTERPOLATORS;
361
+ registry["RNSVGLine"] = SVG_LINE_INTERPOLATORS;
362
+ registry["RNSVGPath"] = SVG_PATH_INTERPOLATORS;
363
+ registry["RNSVGRect"] = SVG_RECT_INTERPOLATORS;
364
+ }
365
+
366
+ return registry;
367
+ }
368
+
369
+ ComponentInterpolatorsMap registry = initializeRegistry();
370
+
371
+ } // namespace
372
+
373
+ const InterpolatorFactoriesRecord &getComponentInterpolators(const std::string &componentName) {
374
+ if (auto it = registry.find(componentName); it != registry.end()) {
375
+ return it->second;
376
+ }
377
+
378
+ // Use View interpolators as a fallback for unknown components
379
+ // (e.g. we get the ScrollView component name for the ScrollView component
380
+ // but it should be styled in the same way as a View)
381
+ return VIEW_INTERPOLATORS;
382
+ }
383
+
384
+ void registerComponentInterpolators(
385
+ const std::string &componentName,
386
+ const InterpolatorFactoriesRecord &interpolators) {
387
+ registry[componentName] = interpolators;
388
+ }
389
+
390
+ } // namespace reanimated::css