diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index f792d51a8567..8a27e3e4f470 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -173,6 +173,7 @@ val preparePrefab by "../ReactCommon/react/renderer/components/image/", "react/renderer/components/image/", ), + Pair("../ReactCommon/react/renderer/components/image/React/", "React/"), // rrc_view Pair( "../ReactCommon/react/renderer/components/view/", diff --git a/packages/react-native/ReactCommon/React-FabricImage.podspec b/packages/react-native/ReactCommon/React-FabricImage.podspec index 3e2f70039ef3..a82ef901c4c9 100644 --- a/packages/react-native/ReactCommon/React-FabricImage.podspec +++ b/packages/react-native/ReactCommon/React-FabricImage.podspec @@ -43,13 +43,19 @@ Pod::Spec.new do |s| s.platforms = min_supported_versions s.source = source s.source_files = podspec_sources("react/renderer/components/image/**/*.{m,mm,cpp,h}", "react/renderer/components/image/**/*.h") - s.exclude_files = "react/renderer/components/image/tests" + s.exclude_files = ["react/renderer/components/image/tests", "react/renderer/components/image/React"] s.header_dir = "react/renderer/components/image" s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES", "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(), "HEADER_SEARCH_PATHS" => header_search_path.join(" ") } + s.subspec "imageUmbrella" do |ss| + ss.source_files = "react/renderer/components/image/React/*.h" + ss.header_dir = "" + ss.header_mappings_dir = "react/renderer/components/image" + end + resolve_use_frameworks(s, header_mappings_dir: './', module_name: "React_FabricImage") s.dependency "React-jsiexecutor", version diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/components/image/CMakeLists.txt index 6544b818d138..a3342c18ce37 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/renderer/components/image/CMakeLists.txt @@ -12,6 +12,7 @@ file(GLOB rrc_image_SRC CONFIGURE_DEPENDS *.cpp) add_library(rrc_image OBJECT ${rrc_image_SRC}) target_include_directories(rrc_image PUBLIC ${REACT_COMMON_DIR}) +target_include_directories(rrc_image INTERFACE ${REACT_COMMON_DIR}/react/renderer/components/image) target_link_libraries(rrc_image glog diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h index 5df65b321d50..da793a387562 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageEventEmitter.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageEventEmitter.h index 78c947798b40..cbd7eb781869 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageEventEmitter.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageEventEmitter.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include 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 474eff3677e8..9da186430d42 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h index 6ba7e313c945..61bcaba18a47 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageState.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageState.h index f4facfa38da9..d49393e65d9e 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageState.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageState.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/React/Image.h b/packages/react-native/ReactCommon/react/renderer/components/image/React/Image.h new file mode 100644 index 000000000000..e9a836963788 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/components/image/React/Image.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +// ============================================================================= +// Umbrella header for the `react/renderer/components/image` module - public +// entry point. +// +// #include +// +// Re-exports the module's public interface headers. React Native's own code +// should keep using the fine-grained `` +// includes; only outside consumers use this umbrella. +// ============================================================================= + +// Marks that the following headers are pulled in through the umbrella, so their +// shared guard () accepts them. The marker +// is saved and restored rather than defined and undefined: the scope ends at +// this block, so later *direct* includes in the same TU are still caught, and +// it nests inside an enclosing umbrella rather than disarming it. +#pragma push_macro("RN_UMBRELLA_CONTEXT") +#undef RN_UMBRELLA_CONTEXT +#define RN_UMBRELLA_CONTEXT 1 + +#include +#include +#include +#include +#include +#include + +#undef RN_UMBRELLA_CONTEXT +#pragma pop_macro("RN_UMBRELLA_CONTEXT") diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h index 6f3b290e2170..5d38e469e3f2 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include diff --git a/packages/react-native/scripts/ios-prebuild/headers-config.js b/packages/react-native/scripts/ios-prebuild/headers-config.js index ea01832d3122..f61e1de8bbef 100644 --- a/packages/react-native/scripts/ios-prebuild/headers-config.js +++ b/packages/react-native/scripts/ios-prebuild/headers-config.js @@ -455,6 +455,22 @@ const PodspecExceptions /*: {[key: string]: PodSpecConfiguration} */ = { }, ], }, + 'ReactCommon/React-FabricImage.podspec': { + name: 'React-FabricImage', + headerPatterns: ['react/renderer/components/image/**/*.h'], + excludePatterns: [ + 'react/renderer/components/image/tests', + 'react/renderer/components/image/React', + ], + headerDir: 'react/renderer/components/image', + subSpecs: [ + { + name: 'imageUmbrella', + headerPatterns: ['react/renderer/components/image/React/*.h'], + headerDir: 'React', + }, + ], + }, 'ReactCommon/React-Mapbuffer.podspec': { name: 'React-Mapbuffer', headerPatterns: ['react/renderer/mapbuffer/**/*.h'],