Skip to content

Commit 12c21ba

Browse files
coadofacebook-github-bot
authored andcommitted
Make LayoutConformance component headers for-frameworks
Summary: Move `LayoutConformanceComponentDescriptor.h`, `LayoutConformanceProps.h` and `LayoutConformanceShadowNode.h` from the public tier of the C++ stable API to the for-frameworks tier, and remove them from the `<React/View.h>` umbrella. These headers implement the experimental `LayoutConformance` core component. Native component authors do not use them, but a platform that registers React Native's core components does: `YogaLayoutableShadowNode::resolveErrata` checks for `LayoutConformanceShadowNode` with a `dynamic_cast` to choose the Yoga errata, so a platform has to register React Native's own descriptor for the component to have any effect. That makes them framework-author API rather than private headers. The `LayoutConformance` enum and its conversions stay public in `primitives.h` and `conversions.h`. Changelog: [Internal] Reviewed By: cipolleschi Differential Revision: D123895702
1 parent 1af1186 commit 12c21ba

14 files changed

Lines changed: 9 additions & 112 deletions

‎packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ react_native_android_selector(platform_DIR
2323
${CMAKE_CURRENT_SOURCE_DIR}/platform/android/
2424
${CMAKE_CURRENT_SOURCE_DIR}/platform/cxx/)
2525
target_include_directories(rrc_view PUBLIC ${REACT_COMMON_DIR} ${platform_DIR})
26-
target_include_directories(rrc_view INTERFACE ${REACT_COMMON_DIR}/react/renderer/components/view)
26+
target_include_directories(rrc_view PUBLIC ${REACT_COMMON_DIR}/react/renderer/components/view)
2727

2828
target_link_libraries(rrc_view
2929
folly_runtime

‎packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
#pragma once
99

10-
#include <react/cxxstableapi/UmbrellaGuard.h>
10+
#include <react/cxxstableapi/FrameworksGuard.h>
1111

12+
#include <React/RendererCore.h>
1213
#include <react/renderer/components/view/LayoutConformanceShadowNode.h>
13-
#include <react/renderer/core/ConcreteComponentDescriptor.h>
1414

1515
namespace facebook::react {
1616

‎packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77

88
#pragma once
99

10-
#include <react/cxxstableapi/UmbrellaGuard.h>
10+
#include <react/cxxstableapi/FrameworksGuard.h>
1111

12-
#include <react/renderer/components/view/YogaStylableProps.h>
13-
#include <react/renderer/components/view/conversions.h>
14-
#include <react/renderer/core/propsConversions.h>
12+
#include <React/RendererCore.h>
13+
#include <React/View.h>
1514

1615
namespace facebook::react {
1716

‎packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77

88
#pragma once
99

10-
#include <react/cxxstableapi/UmbrellaGuard.h>
10+
#include <react/cxxstableapi/FrameworksGuard.h>
1111

12-
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
12+
#include <React/View.h>
1313
#include <react/renderer/components/view/LayoutConformanceProps.h>
14-
#include <react/renderer/components/view/YogaLayoutableShadowNode.h>
1514

1615
namespace facebook::react {
1716

‎packages/react-native/ReactCommon/react/renderer/components/view/React/View.h‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@
4141
#include <react/renderer/components/view/HostPlatformViewEventEmitter.h>
4242
#include <react/renderer/components/view/HostPlatformViewProps.h>
4343
#include <react/renderer/components/view/HostPlatformViewTraitsInitializer.h>
44-
#include <react/renderer/components/view/LayoutConformanceComponentDescriptor.h>
45-
#include <react/renderer/components/view/LayoutConformanceProps.h>
46-
#include <react/renderer/components/view/LayoutConformanceShadowNode.h>
4744
#include <react/renderer/components/view/PointerEvent.h>
4845
#include <react/renderer/components/view/Touch.h>
4946
#include <react/renderer/components/view/TouchEvent.h>
@@ -55,6 +52,7 @@
5552
#include <react/renderer/components/view/YogaLayoutableShadowNode.h>
5653
#include <react/renderer/components/view/YogaStylableProps.h>
5754
#include <react/renderer/components/view/accessibilityPropsConversions.h>
55+
#include <react/renderer/components/view/conversions.h>
5856
#include <react/renderer/components/view/primitives.h>
5957

6058
#undef RN_UMBRELLA_CONTEXT

‎scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast {
376376
const char facebook::react::ViewComponentName[];
377377
const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG;
378378
constexpr auto facebook::react::rncore_ModuleProvider;
379-
constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[];
380379
constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion;
381380
constexpr facebook::react::Tag facebook::react::kNoTag;
382381
constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE;
@@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
424423
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
425424
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
426425
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
427-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
428426
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
429427
using facebook::react::NativeMethodCallFunc = std::function<void()>;
430428
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
@@ -1724,9 +1722,6 @@ struct facebook::react::JavaTurboModule::InitParams {
17241722
public std::string moduleName;
17251723
}
17261724

1727-
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
1728-
}
1729-
17301725
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
17311726
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
17321727
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -3375,12 +3370,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java
33753370
public static constexpr auto kJavaDescriptor;
33763371
}
33773372

3378-
struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps {
3379-
public LayoutConformanceProps() = default;
3380-
public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps);
3381-
public facebook::react::LayoutConformance mode;
3382-
}
3383-
33843373
struct facebook::react::LayoutConstraints {
33853374
public facebook::react::LayoutDirection layoutDirection;
33863375
public facebook::react::Size clamp(const facebook::react::Size& size) const;

‎scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast {
376376
const char facebook::react::ViewComponentName[];
377377
const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG;
378378
constexpr auto facebook::react::rncore_ModuleProvider;
379-
constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[];
380379
constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion;
381380
constexpr facebook::react::Tag facebook::react::kNoTag;
382381
constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE;
@@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
424423
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
425424
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
426425
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
427-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
428426
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
429427
using facebook::react::NativeMethodCallFunc = std::function<void()>;
430428
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
@@ -1723,9 +1721,6 @@ struct facebook::react::JavaTurboModule::InitParams {
17231721
public std::string moduleName;
17241722
}
17251723

1726-
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
1727-
}
1728-
17291724
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
17301725
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
17311726
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -3368,12 +3363,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java
33683363
public static constexpr auto kJavaDescriptor;
33693364
}
33703365

3371-
struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps {
3372-
public LayoutConformanceProps() = default;
3373-
public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps);
3374-
public facebook::react::LayoutConformance mode;
3375-
}
3376-
33773366
struct facebook::react::LayoutConstraints {
33783367
public facebook::react::LayoutDirection layoutDirection;
33793368
public facebook::react::Size clamp(const facebook::react::Size& size) const;

‎scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast {
376376
const char facebook::react::ViewComponentName[];
377377
const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG;
378378
constexpr auto facebook::react::rncore_ModuleProvider;
379-
constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[];
380379
constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion;
381380
constexpr facebook::react::Tag facebook::react::kNoTag;
382381
constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE;
@@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
424423
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
425424
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
426425
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
427-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
428426
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
429427
using facebook::react::NativeMethodCallFunc = std::function<void()>;
430428
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
@@ -1723,9 +1721,6 @@ struct facebook::react::JavaTurboModule::InitParams {
17231721
public std::string moduleName;
17241722
}
17251723

1726-
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
1727-
}
1728-
17291724
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
17301725
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
17311726
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -3368,12 +3363,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java
33683363
public static constexpr auto kJavaDescriptor;
33693364
}
33703365

3371-
struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps {
3372-
public LayoutConformanceProps() = default;
3373-
public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps);
3374-
public facebook::react::LayoutConformance mode;
3375-
}
3376-
33773366
struct facebook::react::LayoutConstraints {
33783367
public facebook::react::LayoutDirection layoutDirection;
33793368
public facebook::react::Size clamp(const facebook::react::Size& size) const;

‎scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3163,7 +3163,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast {
31633163

31643164
const char facebook::react::ViewComponentName[];
31653165
const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG;
3166-
constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[];
31673166
constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion;
31683167
constexpr facebook::react::Tag facebook::react::kNoTag;
31693168
constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE;
@@ -3210,7 +3209,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
32103209
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
32113210
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
32123211
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
3213-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
32143212
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
32153213
using facebook::react::NativeMethodCallFunc = std::function<void()>;
32163214
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
@@ -4018,9 +4016,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer {
40184016
public ~JSBigString() override = default;
40194017
}
40204018

4021-
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
4022-
}
4023-
40244019
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
40254020
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
40264021
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -5459,12 +5454,6 @@ struct facebook::react::ImageURLLoaderAttribution {
54595454
public std::string queryRootName;
54605455
}
54615456

5462-
struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps {
5463-
public LayoutConformanceProps() = default;
5464-
public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps);
5465-
public facebook::react::LayoutConformance mode;
5466-
}
5467-
54685457
struct facebook::react::LayoutConstraints {
54695458
public facebook::react::LayoutDirection layoutDirection;
54705459
public facebook::react::Size clamp(const facebook::react::Size& size) const;

‎scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3155,7 +3155,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast {
31553155

31563156
const char facebook::react::ViewComponentName[];
31573157
const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG;
3158-
constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[];
31593158
constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion;
31603159
constexpr facebook::react::Tag facebook::react::kNoTag;
31613160
constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE;
@@ -3202,7 +3201,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
32023201
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
32033202
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
32043203
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
3205-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
32063204
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
32073205
using facebook::react::NativeMethodCallFunc = std::function<void()>;
32083206
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
@@ -4009,9 +4007,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer {
40094007
public ~JSBigString() override = default;
40104008
}
40114009

4012-
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
4013-
}
4014-
40154010
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
40164011
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
40174012
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -5444,12 +5439,6 @@ struct facebook::react::ImageURLLoaderAttribution {
54445439
public std::string queryRootName;
54455440
}
54465441

5447-
struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps {
5448-
public LayoutConformanceProps() = default;
5449-
public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps);
5450-
public facebook::react::LayoutConformance mode;
5451-
}
5452-
54535442
struct facebook::react::LayoutConstraints {
54545443
public facebook::react::LayoutDirection layoutDirection;
54555444
public facebook::react::Size clamp(const facebook::react::Size& size) const;

0 commit comments

Comments
 (0)