diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.kt index 6fe4df70e90e..f38b351807d9 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageManager.kt @@ -254,7 +254,7 @@ public constructor( view.setProgressiveRenderingEnabled(enabled) } - @ReactProp(name = "fadeDuration") + @ReactProp(name = "fadeDuration", defaultInt = -1) public fun setFadeDuration(view: ReactImageView, durationMs: Int) { view.setFadeDuration(durationMs) } diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp index 8c2b59bbd6ad..49117e4a95f3 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.cpp @@ -246,11 +246,15 @@ folly::dynamic ImageProps::getDiffProps(const Props* prevProps) const { } if (fadeDuration != oldProps->fadeDuration) { - result["fadeDuration"] = fadeDuration; + result["fadeDuration"] = + fadeDuration.has_value() ? folly::dynamic(*fadeDuration) : nullptr; } if (progressiveRenderingEnabled != oldProps->progressiveRenderingEnabled) { - result["progressiveRenderingEnabled"] = progressiveRenderingEnabled; + result["progressiveRenderingEnabled"] = + progressiveRenderingEnabled.has_value() + ? folly::dynamic(*progressiveRenderingEnabled) + : nullptr; } return result; diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h index e8a9be18cd6a..5968bab23b9e 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h @@ -42,8 +42,8 @@ class ImageProps final : public ViewProps { Float resizeMultiplier{1.f}; bool shouldNotifyLoadEvents{}; SharedColor overlayColor{}; - Float fadeDuration{300.f}; - bool progressiveRenderingEnabled{}; + std::optional fadeDuration{}; + std::optional progressiveRenderingEnabled{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp b/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp index caea0e5fe5fe..5433e903eead 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp @@ -62,8 +62,8 @@ void ImageShadowNode::updateStateIfNeeded() { imageProps.shouldNotifyLoadEvents, imageProps.overlayColor, imageProps.tintColor, - imageProps.fadeDuration, - imageProps.progressiveRenderingEnabled, + imageProps.fadeDuration.value_or(300.f), + imageProps.progressiveRenderingEnabled.value_or(false), imageProps.loadingIndicatorSource, imageProps.internal_analyticTag, Size{ diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api index 777213ff609a..18d90c6ae6e2 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api @@ -2573,17 +2573,17 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::Float blurRadius; - public facebook::react::Float fadeDuration; public facebook::react::Float resizeMultiplier; public facebook::react::ImageResizeMode resizeMode; public facebook::react::ImageSource defaultSource; public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional progressiveRenderingEnabled; + public std::optional fadeDuration; public std::optional tintColor; public std::string resizeMethod; public virtual facebook::react::ComponentName getDiffPropsImplementationTarget() const override; diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index 030f65f3918b..725e2dd5bbbe 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -2555,17 +2555,17 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::Float blurRadius; - public facebook::react::Float fadeDuration; public facebook::react::Float resizeMultiplier; public facebook::react::ImageResizeMode resizeMode; public facebook::react::ImageSource defaultSource; public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional progressiveRenderingEnabled; + public std::optional fadeDuration; public std::optional tintColor; public std::string resizeMethod; public virtual facebook::react::ComponentName getDiffPropsImplementationTarget() const override; diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api index 0717d9252c85..d5edc675441a 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api @@ -2570,17 +2570,17 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::Float blurRadius; - public facebook::react::Float fadeDuration; public facebook::react::Float resizeMultiplier; public facebook::react::ImageResizeMode resizeMode; public facebook::react::ImageSource defaultSource; public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional progressiveRenderingEnabled; + public std::optional fadeDuration; public std::optional tintColor; public std::string resizeMethod; public virtual facebook::react::ComponentName getDiffPropsImplementationTarget() const override; diff --git a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api index dd76eb05a126..6d095f79baa8 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api @@ -4954,17 +4954,17 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::Float blurRadius; - public facebook::react::Float fadeDuration; public facebook::react::Float resizeMultiplier; public facebook::react::ImageResizeMode resizeMode; public facebook::react::ImageSource defaultSource; public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional progressiveRenderingEnabled; + public std::optional fadeDuration; public std::optional tintColor; public std::string resizeMethod; public void setProp(const facebook::react::PropsParserContext& context, facebook::react::RawPropsPropNameHash hash, const char* propName, const facebook::react::RawValue& value); diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index c85b1a3fed92..25a37df5fa48 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -4929,17 +4929,17 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::Float blurRadius; - public facebook::react::Float fadeDuration; public facebook::react::Float resizeMultiplier; public facebook::react::ImageResizeMode resizeMode; public facebook::react::ImageSource defaultSource; public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional progressiveRenderingEnabled; + public std::optional fadeDuration; public std::optional tintColor; public std::string resizeMethod; public void setProp(const facebook::react::PropsParserContext& context, facebook::react::RawPropsPropNameHash hash, const char* propName, const facebook::react::RawValue& value); diff --git a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api index ae19725e5501..413cb4de732c 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api @@ -4951,17 +4951,17 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::Float blurRadius; - public facebook::react::Float fadeDuration; public facebook::react::Float resizeMultiplier; public facebook::react::ImageResizeMode resizeMode; public facebook::react::ImageSource defaultSource; public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional progressiveRenderingEnabled; + public std::optional fadeDuration; public std::optional tintColor; public std::string resizeMethod; public void setProp(const facebook::react::PropsParserContext& context, facebook::react::RawPropsPropNameHash hash, const char* propName, const facebook::react::RawValue& value); diff --git a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api index 25492550cc4f..b079a52e0eed 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api @@ -1708,11 +1708,9 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public Float blurRadius; - public Float fadeDuration; public Float resizeMultiplier; public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::ImageResizeMode resizeMode; @@ -1720,6 +1718,8 @@ class facebook::react::ImageProps : public facebook::react::HostPlatformViewProp public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional fadeDuration; + public std::optional progressiveRenderingEnabled; public std::optional tintColor; public std::string resizeMethod; public void setProp(const facebook::react::PropsParserContext& context, facebook::react::RawPropsPropNameHash hash, const char* propName, const facebook::react::RawValue& value); diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index 3c2a34f00aad..1ae1d6f3795f 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -1691,11 +1691,9 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public Float blurRadius; - public Float fadeDuration; public Float resizeMultiplier; public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::ImageResizeMode resizeMode; @@ -1703,6 +1701,8 @@ class facebook::react::ImageProps : public facebook::react::HostPlatformViewProp public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional fadeDuration; + public std::optional progressiveRenderingEnabled; public std::optional tintColor; public std::string resizeMethod; public void setProp(const facebook::react::PropsParserContext& context, facebook::react::RawPropsPropNameHash hash, const char* propName, const facebook::react::RawValue& value); diff --git a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api index f2736afc7b4f..7fe953588d09 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api @@ -1705,11 +1705,9 @@ class facebook::react::ImageManager { class facebook::react::ImageProps : public facebook::react::HostPlatformViewProps { public Float blurRadius; - public Float fadeDuration; public Float resizeMultiplier; public ImageProps() = default; public ImageProps(const facebook::react::PropsParserContext& context, const facebook::react::ImageProps& sourceProps, const facebook::react::RawProps& rawProps); - public bool progressiveRenderingEnabled; public bool shouldNotifyLoadEvents; public facebook::react::EdgeInsets capInsets; public facebook::react::ImageResizeMode resizeMode; @@ -1717,6 +1715,8 @@ class facebook::react::ImageProps : public facebook::react::HostPlatformViewProp public facebook::react::ImageSource loadingIndicatorSource; public facebook::react::ImageSources sources; public facebook::react::SharedColor overlayColor; + public std::optional fadeDuration; + public std::optional progressiveRenderingEnabled; public std::optional tintColor; public std::string resizeMethod; public void setProp(const facebook::react::PropsParserContext& context, facebook::react::RawPropsPropNameHash hash, const char* propName, const facebook::react::RawValue& value);